From 43a2261a6868a0c6c47a7c96f29a9205733585ab Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Tue, 14 Apr 2026 19:29:40 -0400 Subject: [PATCH 001/257] fix(docs-next): extract legacy fragment header into template metadata Legacy fragments each start with a page-header div (d-flex ai-start jc-space-between) containing the description paragraph and action badges (Svelte, Figma). This div was built for the old docs template, which expected it as part of the fragment. The new template provides its own header, causing the description (and action links) to appear inside the content area rather than in the header. Add extractLegacyHeader() which: - Finds the opening header div and locates its matching closing tag via a depth-counting walk (handles nested divs robustly) - Extracts description text from the .docs-copy

- Extracts Svelte and Figma action URLs from the badge hrefs - Returns the fragment HTML with the header div removed The extracted values are returned as metadata so the new template renders description and action buttons consistently with MD-sourced pages. Co-Authored-By: Claude Sonnet 4.6 --- .../[[section]]/[subsection]/+page.server.ts | 68 ++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts index 45d4bd9ae4..f8b3731b24 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts @@ -10,6 +10,65 @@ const turndownService = new TurndownService({ const mdFiles = import.meta.glob("$docs/**/*.md"); +type LegacyMetadata = { + description?: string; + svelte?: string; + figma?: string; +}; + +/** + * Extracts description and action links from the legacy fragment's page-header + * div (`d-flex ai-start jc-space-between`) and returns both the extracted + * metadata and the fragment HTML with that header div removed. + * + * Legacy fragments were built against the old docs template which rendered its + * own page header. The new template provides the header, so the fragment's + * header section would otherwise duplicate the description and action buttons. + */ +function extractLegacyHeader(html: string): LegacyMetadata & { strippedHtml: string } { + const HEADER_OPEN = '

'; + const headerStart = html.indexOf(HEADER_OPEN); + if (headerStart === -1) return { strippedHtml: html }; + + // Find the matching closing
by tracking nesting depth. + let depth = 0; + let i = headerStart; + let headerEnd = -1; + + while (i < html.length) { + if (html.slice(i, i + 4) === "") { + depth--; + if (depth === 0) { + headerEnd = i + 6; + break; + } + } + i++; + } + + if (headerEnd === -1) return { strippedHtml: html }; + + const headerHtml = html.slice(headerStart, headerEnd); + + const descMatch = headerHtml.match(/]*docs-copy[^>]*>([\s\S]*?)<\/p>/); + const description = descMatch ? descMatch[1].trim() : undefined; + + const svelteMatch = headerHtml.match(/href="([^"]*svelte\.stackoverflow\.design[^"]*)"/i); + const svelte = svelteMatch ? svelteMatch[1] : undefined; + + const figmaMatch = headerHtml.match(/href="([^"]*figma\.com[^"]*)"/i); + const figma = figmaMatch ? figmaMatch[1] : undefined; + + return { + description, + svelte, + figma, + strippedHtml: html.slice(0, headerStart) + html.slice(headerEnd), + }; +} + export const load: PageServerLoad = async (event) => { // SECURITY: Check auth first - don't load any content if unauthorized const parent = await event.parent(); @@ -45,14 +104,17 @@ export const load: PageServerLoad = async (event) => { if (parent.active?.legacy) { const response = await event.fetch(`/legacy/fragments/${parent.active.legacy}/fragment.html`); if (response.ok) { - const html = (await response.text()) + const rawHtml = (await response.text()) .replace(/="\/assets\//g, '="/legacy/assets/'); + const { description, svelte, figma, strippedHtml } = extractLegacyHeader(rawHtml); return { source: "legacy" as const, filename: null, - metadata: null, + metadata: (description || svelte || figma) + ? { description, svelte, figma } + : null, markdown: null, - html, + html: strippedHtml, }; } } From eb0e1edfd30ccd6c4d8be5187d9fdc15886c0ba6 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 11:29:46 -0400 Subject: [PATCH 002/257] fix(docs-next): match legacy badges by text label, not URL domain The Figma badge on some pages (e.g. color-fundamentals) is hosted on svelte.stackoverflow.design (/figma/colors) rather than figma.com. URL-domain matching would incorrectly classify those links as Svelte. Replace domain-based regexes with per-badge ... matching: iterate each badge element and identify it by the text label that follows the SVG icon (Svelte or Figma), not by the URL. Co-Authored-By: Claude Sonnet 4.6 --- .../[[section]]/[subsection]/+page.server.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts index f8b3731b24..ea3bc32b84 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts @@ -55,11 +55,17 @@ function extractLegacyHeader(html: string): LegacyMetadata & { strippedHtml: str const descMatch = headerHtml.match(/]*docs-copy[^>]*>([\s\S]*?)<\/p>/); const description = descMatch ? descMatch[1].trim() : undefined; - const svelteMatch = headerHtml.match(/href="([^"]*svelte\.stackoverflow\.design[^"]*)"/i); - const svelte = svelteMatch ? svelteMatch[1] : undefined; - - const figmaMatch = headerHtml.match(/href="([^"]*figma\.com[^"]*)"/i); - const figma = figmaMatch ? figmaMatch[1] : undefined; + // Match each badge element individually to extract href and label. + // URL-domain matching is unreliable (some Figma links are on svelte.stackoverflow.design). + let svelte: string | undefined; + let figma: string | undefined; + const badgeRe = /]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>/gi; + let badgeMatch; + while ((badgeMatch = badgeRe.exec(headerHtml)) !== null) { + const [, url, content] = badgeMatch; + if (/<\/svg>\s*Svelte/i.test(content)) svelte = url; + else if (/<\/svg>\s*Figma/i.test(content)) figma = url; + } return { description, From 6237de4da3825cddc30ce8eabc24ea22afde5083 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 11:43:40 -0400 Subject: [PATCH 003/257] fix(docs-next): only extract proper figma.com URLs for Figma buttons 8 legacy fragments have Figma badges linking to svelte.stackoverflow.design/figma/* aliases instead of actual figma.com URLs (e.g. color-fundamentals, typography, buttons). Filter extraction to only accept figma.com URLs for the Figma button. Those 8 pages will show no Figma button until correct figma.com URLs are added to their fragments or to structure.yaml. Co-Authored-By: Claude Sonnet 4.6 --- .../[category]/[[section]]/[subsection]/+page.server.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts index ea3bc32b84..299376ec0f 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts @@ -64,7 +64,9 @@ function extractLegacyHeader(html: string): LegacyMetadata & { strippedHtml: str while ((badgeMatch = badgeRe.exec(headerHtml)) !== null) { const [, url, content] = badgeMatch; if (/<\/svg>\s*Svelte/i.test(content)) svelte = url; - else if (/<\/svg>\s*Figma/i.test(content)) figma = url; + // Only accept proper figma.com URLs; legacy fragments have some badges + // using svelte.stackoverflow.design/figma/* aliases instead. + else if (/<\/svg>\s*Figma/i.test(content) && url.includes("figma.com")) figma = url; } return { From 061b188e2af4cb5279a00a1a67dc3efd88fe943c Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 11:55:59 -0400 Subject: [PATCH 004/257] fix(docs-next): fix duplicate descriptions and Figma URLs in legacy pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: the stacks-docs page.html Eleventy template was rendering the page description twice — once inside the header flex div and once as a standalone paragraph below it. When fragments were (re)built, both occurrences appeared in the HTML, causing two descriptions to show. Changes: - stacks-docs: remove the duplicate standalone description paragraph from page.html (the description inside the flex div is sufficient; the new template extracts it as metadata and renders it in the header) - stacks-docs-next: add a belt-and-suspenders strip in extractLegacyHeader to also remove any standalone description paragraph left over in already-built fragments - stacks-docs: replace 7 wrong Figma badge URLs that pointed to svelte.stackoverflow.design/figma/* aliases with correct figma.com project links (color-fundamentals, icons, typography, spots, buttons, tags, editor) - stacks-docs: remove figma: field from box-shadow (no Figma link intended) Co-Authored-By: Claude Sonnet 4.6 --- .../[[section]]/[subsection]/+page.server.ts | 19 +++++++++++++------ .../stacks-docs/_includes/layouts/page.html | 4 ---- .../stacks-docs/product/base/box-shadow.html | 1 - .../product/components/buttons.html | 2 +- .../product/components/editor.html | 2 +- .../stacks-docs/product/components/tags.html | 2 +- .../foundation/color-fundamentals.html | 2 +- .../stacks-docs/product/foundation/icons.html | 2 +- .../stacks-docs/product/foundation/spots.html | 2 +- .../product/foundation/typography.html | 2 +- 10 files changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts index 299376ec0f..0d9fae5e1f 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.server.ts @@ -69,12 +69,19 @@ function extractLegacyHeader(html: string): LegacyMetadata & { strippedHtml: str else if (/<\/svg>\s*Figma/i.test(content) && url.includes("figma.com")) figma = url; } - return { - description, - svelte, - figma, - strippedHtml: html.slice(0, headerStart) + html.slice(headerEnd), - }; + let strippedHtml = html.slice(0, headerStart) + html.slice(headerEnd); + + // Some fragments built from the old template rendered the description twice: + // once inside the header div and once as a standalone paragraph immediately + // after it. Strip that second occurrence if present. + if (description) { + strippedHtml = strippedHtml.replace( + `

${description}

`, + "" + ); + } + + return { description, svelte, figma, strippedHtml }; } export const load: PageServerLoad = async (event) => { diff --git a/packages/stacks-docs/_includes/layouts/page.html b/packages/stacks-docs/_includes/layouts/page.html index feb07a35c8..d8acc61a1e 100644 --- a/packages/stacks-docs/_includes/layouts/page.html +++ b/packages/stacks-docs/_includes/layouts/page.html @@ -88,10 +88,6 @@ {% endif %} - {% if description %} -

{{ description }}

- {% endif %} -
{{ content }}
/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(ft.source+"\\s*$"),/^$/,!1]],gt=[["table",function(e,t,n,r){if(t+2>n)return!1;let i=t+1;if(e.sCount[i]=4)return!1;let s=e.bMarks[i]+e.tShift[i];if(s>=e.eMarks[i])return!1;const o=e.src.charCodeAt(s++);if(124!==o&&45!==o&&58!==o)return!1;if(s>=e.eMarks[i])return!1;const a=e.src.charCodeAt(s++);if(124!==a&&45!==a&&58!==a&&!Ee(a))return!1;if(45===o&&Ee(a))return!1;for(;s=4)return!1;c=lt(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==h.length)return!1;if(r)return!0;const d=e.parentType;e.parentType="table";const p=e.md.block.ruler.getRules("blockquote"),f=[t,0];e.push("table_open","table",1).map=f,e.push("thead_open","thead",1).map=[t,t+1],e.push("tr_open","tr",1).map=[t,t+1];for(let t=0;t=4)break;if(c=lt(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),g+=u-c.length,g>65536)break;i===t+2&&(e.push("tbody_open","tbody",1).map=m=[t+2,0]),e.push("tr_open","tr",1).map=[i,i+1];for(let t=0;t=4))break;r++,i=r}e.line=i;const s=e.push("code_block","code",0);return s.content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",s.map=[t,e.line],!0}],["fence",function(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(i+3>s)return!1;const o=e.src.charCodeAt(i);if(126!==o&&96!==o)return!1;let a=i;i=e.skipChars(i,o);let l=i-a;if(l<3)return!1;const c=e.src.slice(a,i),h=e.src.slice(i,s);if(96===o&&h.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;let u=t,d=!1;for(;!(u++,u>=n||(i=a=e.bMarks[u]+e.tShift[u],s=e.eMarks[u],i=4||(i=e.skipChars(i,o),i-a=4)return!1;if(62!==e.src.charCodeAt(i))return!1;if(r)return!0;const a=[],l=[],c=[],h=[],u=e.md.block.ruler.getRules("blockquote"),d=e.parentType;e.parentType="blockquote";let p,f=!1;for(p=t;p=s)break;if(62===e.src.charCodeAt(i++)&&!t){let t,n,r=e.sCount[p]+1;32===e.src.charCodeAt(i)?(i++,r++,n=!1,t=!0):9===e.src.charCodeAt(i)?(t=!0,(e.bsCount[p]+r)%4==3?(i++,r++,n=!1):n=!0):t=!1;let o=r;for(a.push(e.bMarks[p]),e.bMarks[p]=i;i=s,l.push(e.bsCount[p]),e.bsCount[p]=e.sCount[p]+1+(t?1:0),c.push(e.sCount[p]),e.sCount[p]=o-r,h.push(e.tShift[p]),e.tShift[p]=i-e.bMarks[p];continue}if(f)break;let r=!1;for(let t=0,i=u.length;t";const b=[t,0];g.map=b,e.md.block.tokenize(e,t,p),e.push("blockquote_close","blockquote",-1).markup=">",e.lineMax=o,e.parentType=d,b[1]=e.line;for(let n=0;n=4)return!1;let s=e.bMarks[t]+e.tShift[t];const o=e.src.charCodeAt(s++);if(42!==o&&45!==o&&95!==o)return!1;let a=1;for(;s=4)return!1;if(e.listIndent>=0&&e.sCount[l]-e.listIndent>=4&&e.sCount[l]=e.blkIndent&&(p=!0),(d=ht(e,l))>=0){if(h=!0,o=e.bMarks[l]+e.tShift[l],u=Number(e.src.slice(o,d-1)),p&&1!==u)return!1}else{if(!((d=ct(e,l))>=0))return!1;h=!1}if(p&&e.skipSpaces(d)>=e.eMarks[l])return!1;if(r)return!0;const f=e.src.charCodeAt(d-1),m=e.tokens.length;h?(a=e.push("ordered_list_open","ol",1),1!==u&&(a.attrs=[["start",u]])):a=e.push("bullet_list_open","ul",1);const g=[l,0];a.map=g,a.markup=String.fromCharCode(f);let b=!1;const y=e.md.block.ruler.getRules("list"),k=e.parentType;for(e.parentType="list";l=i?1:r-t,p>4&&(p=1);const m=t+p;a=e.push("list_item_open","li",1),a.markup=String.fromCharCode(f);const g=[l,0];a.map=g,h&&(a.info=e.src.slice(o,d-1));const k=e.tight,v=e.tShift[l],w=e.sCount[l],x=e.listIndent;if(e.listIndent=e.blkIndent,e.blkIndent=m,e.tight=!0,e.tShift[l]=u-e.bMarks[l],e.sCount[l]=r,u>=i&&e.isEmpty(l+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,l,n,!0),e.tight&&!b||(c=!1),b=e.line-l>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=x,e.tShift[l]=v,e.sCount[l]=w,e.tight=k,a=e.push("list_item_close","li",-1),a.markup=String.fromCharCode(f),l=e.line,g[1]=l,l>=n)break;if(e.sCount[l]=4)break;let C=!1;for(let t=0,r=y.length;t=4)return!1;if(91!==e.src.charCodeAt(i))return!1;function a(t){const n=e.lineMax;if(t>=n||e.isEmpty(t))return null;let r=!1;if(e.sCount[t]-e.blkIndent>3&&(r=!0),e.sCount[t]<0&&(r=!0),!r){const r=e.md.block.ruler.getRules("reference"),i=e.parentType;e.parentType="reference";let s=!1;for(let i=0,o=r.length;i=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(i))return!1;let o=e.src.slice(i,s),a=0;for(;a=4)return!1;let o=e.src.charCodeAt(i);if(35!==o||i>=s)return!1;let a=1;for(o=e.src.charCodeAt(++i);35===o&&i6||ii&&Ee(e.src.charCodeAt(l-1))&&(s=l),e.line=t+1;const c=e.push("heading_open","h"+String(a),1);c.markup="########".slice(0,a),c.map=[t,e.line];const h=e.push("inline","",0);return h.content=e.src.slice(i,s).trim(),h.map=[t,e.line],h.children=[],e.push("heading_close","h"+String(a),-1).markup="########".slice(0,a),!0},["paragraph","reference","blockquote"]],["lheading",function(e,t,n){const r=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;const i=e.parentType;e.parentType="paragraph";let s,o=0,a=t+1;for(;a3)continue;if(e.sCount[a]>=e.blkIndent){let t=e.bMarks[a]+e.tShift[a];const n=e.eMarks[a];if(t=n))){o=61===s?1:2;break}}if(e.sCount[a]<0)continue;let t=!1;for(let i=0,s=r.length;i3)continue;if(e.sCount[s]<0)continue;let t=!1;for(let i=0,o=r.length;i=n))&&!(e.sCount[o]=s){e.line=n;break}const t=e.line;let l=!1;for(let s=0;s=e.line)throw new Error("block rule didn't increment state.line");break}if(!l)throw new Error("none of the block rules matched");e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),o=e.line,o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(r),this.tokens_meta.push(i),r},kt.prototype.scanDelims=function(e,t){const n=this.posMax,r=this.src.charCodeAt(e),i=e>0?this.src.charCodeAt(e-1):32;let s=e;for(;s?@[]^_`{|}~-".split("").forEach((function(e){Ct[e.charCodeAt(0)]=1}));const St={tokenize:function(e,t){const n=e.pos,r=e.src.charCodeAt(n);if(t)return!1;if(126!==r)return!1;const i=e.scanDelims(e.pos,!0);let s=i.length;const o=String.fromCharCode(r);if(s<2)return!1;let a;s%2&&(a=e.push("text","",0),a.content=o,s--);for(let t=0;t=0;n--){const r=t[n];if(95!==r.marker&&42!==r.marker)continue;if(-1===r.end)continue;const i=t[r.end],s=n>0&&t[n-1].end===r.end+1&&t[n-1].marker===r.marker&&t[n-1].token===r.token-1&&t[r.end+1].token===i.token+1,o=String.fromCharCode(r.marker),a=e.tokens[r.token];a.type=s?"strong_open":"em_open",a.tag=s?"strong":"em",a.nesting=1,a.markup=s?o+o:o,a.content="";const l=e.tokens[i.token];l.type=s?"strong_close":"em_close",l.tag=s?"strong":"em",l.nesting=-1,l.markup=s?o+o:o,l.content="",s&&(e.tokens[t[n-1].token].content="",e.tokens[t[r.end+1].token].content="",n--)}}const At={tokenize:function(e,t){const n=e.pos,r=e.src.charCodeAt(n);if(t)return!1;if(95!==r&&42!==r)return!1;const i=e.scanDelims(e.pos,42===r);for(let t=0;t\x00-\x20]*)$/,Tt=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,Ot=/^&([a-z][a-z0-9]{1,31});/i;function Nt(e){const t={},n=e.length;if(!n)return;let r=0,i=-2;const s=[];for(let o=0;oa;l-=s[l]+1){const t=e[l];if(t.marker===n.marker&&t.open&&t.end<0){let r=!1;if((t.close||n.open)&&(t.length+n.length)%3==0&&(t.length%3==0&&n.length%3==0||(r=!0)),!r){const r=l>0&&!e[l-1].open?s[l-1]+1:0;s[o]=o-l+r,s[l]=r,n.open=!1,t.end=o,t.close=!1,c=-1,i=-2;break}}}-1!==c&&(t[n.marker][(n.open?3:0)+(n.length||0)%3]=c)}}const Lt=[["text",function(e,t){let n=e.pos;for(;n0)return!1;const n=e.pos;if(n+3>e.posMax)return!1;if(58!==e.src.charCodeAt(n))return!1;if(47!==e.src.charCodeAt(n+1))return!1;if(47!==e.src.charCodeAt(n+2))return!1;const r=e.pending.match(xt);if(!r)return!1;const i=r[1],s=e.md.linkify.matchAtStart(e.src.slice(n-i.length));if(!s)return!1;let o=s.url;if(o.length<=i.length)return!1;o=o.replace(/\*+$/,"");const a=e.md.normalizeLink(o);if(!e.md.validateLink(a))return!1;if(!t){e.pending=e.pending.slice(0,-i.length);const t=e.push("link_open","a",1);t.attrs=[["href",a]],t.markup="linkify",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(o);const n=e.push("link_close","a",-1);n.markup="linkify",n.info="auto"}return e.pos+=o.length-i.length,!0}],["newline",function(e,t){let n=e.pos;if(10!==e.src.charCodeAt(n))return!1;const r=e.pending.length-1,i=e.posMax;if(!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){let t=r-1;for(;t>=1&&32===e.pending.charCodeAt(t-1);)t--;e.pending=e.pending.slice(0,t),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(n++;n=r)return!1;let i=e.src.charCodeAt(n);if(10===i){for(t||e.push("hardbreak","br",0),n++;n=55296&&i<=56319&&n+1=56320&&t<=57343&&(s+=e.src[n+1],n++)}const o="\\"+s;if(!t){const t=e.push("text_special","",0);i<256&&0!==Ct[i]?t.content=s:t.content=o,t.markup=o,t.info="escape"}return e.pos=n+1,!0}],["backticks",function(e,t){let n=e.pos;if(96!==e.src.charCodeAt(n))return!1;const r=n;n++;const i=e.posMax;for(;n=u)return!1;if(l=f,i=e.md.helpers.parseLinkDestination(e.src,f,e.posMax),i.ok){for(o=e.md.normalizeLink(i.str),e.md.validateLink(o)?f=i.pos:o="",l=f;f=u||41!==e.src.charCodeAt(f))&&(c=!0),f++}if(c){if(void 0===e.env.references)return!1;if(f=0?r=e.src.slice(l,f++):f=p+1):f=p+1,r||(r=e.src.slice(d,p)),s=e.env.references[De(r)],!s)return e.pos=h,!1;o=s.href,a=s.title}if(!t){e.pos=d,e.posMax=p;const t=[["href",o]];e.push("link_open","a",1).attrs=t,a&&t.push(["title",a]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)}return e.pos=f,e.posMax=u,!0}],["image",function(e,t){let n,r,i,s,o,a,l,c,h="";const u=e.pos,d=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;const p=e.pos+2,f=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(f<0)return!1;if(s=f+1,s=d)return!1;for(c=s,a=e.md.helpers.parseLinkDestination(e.src,s,e.posMax),a.ok&&(h=e.md.normalizeLink(a.str),e.md.validateLink(h)?s=a.pos:h=""),c=s;s=d||41!==e.src.charCodeAt(s))return e.pos=u,!1;s++}else{if(void 0===e.env.references)return!1;if(s=0?i=e.src.slice(c,s++):s=f+1):s=f+1,i||(i=e.src.slice(p,f)),o=e.env.references[De(i)],!o)return e.pos=u,!1;h=o.href,l=o.title}if(!t){r=e.src.slice(p,f);const t=[];e.md.inline.parse(r,e.md,e.env,t);const n=e.push("image","img",0),i=[["src",h],["alt",""]];n.attrs=i,n.children=t,n.content=r,l&&i.push(["title",l])}return e.pos=s,e.posMax=d,!0}],["autolink",function(e,t){let n=e.pos;if(60!==e.src.charCodeAt(n))return!1;const r=e.pos,i=e.posMax;for(;;){if(++n>=i)return!1;const t=e.src.charCodeAt(n);if(60===t)return!1;if(62===t)break}const s=e.src.slice(r+1,n);if(Mt.test(s)){const n=e.md.normalizeLink(s);if(!e.md.validateLink(n))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",n]],t.markup="autolink",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(s);const r=e.push("link_close","a",-1);r.markup="autolink",r.info="auto"}return e.pos+=s.length+2,!0}if(Dt.test(s)){const n=e.md.normalizeLink("mailto:"+s);if(!e.md.validateLink(n))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",n]],t.markup="autolink",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(s);const r=e.push("link_close","a",-1);r.markup="autolink",r.info="auto"}return e.pos+=s.length+2,!0}return!1}],["html_inline",function(e,t){if(!e.md.options.html)return!1;const n=e.posMax,r=e.pos;if(60!==e.src.charCodeAt(r)||r+2>=n)return!1;const i=e.src.charCodeAt(r+1);if(33!==i&&63!==i&&47!==i&&!function(e){const t=32|e;return t>=97&&t<=122}(i))return!1;const s=e.src.slice(r).match(pt);if(!s)return!1;if(!t){const t=e.push("html_inline","",0);t.content=s[0],o=t.content,/^\s]/i.test(o)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(t.content)&&e.linkLevel--}var o;return e.pos+=s[0].length,!0}],["entity",function(e,t){const n=e.pos,r=e.posMax;if(38!==e.src.charCodeAt(n))return!1;if(n+1>=r)return!1;if(35===e.src.charCodeAt(n+1)){const r=e.src.slice(n).match(Tt);if(r){if(!t){const t="x"===r[1][0].toLowerCase()?parseInt(r[1].slice(1),16):parseInt(r[1],10),n=e.push("text_special","",0);n.content=he(t)?ue(t):ue(65533),n.markup=r[0],n.info="entity"}return e.pos+=r[0].length,!0}}else{const r=e.src.slice(n).match(Ot);if(r){const n=X(r[0]);if(n!==r[0]){if(!t){const t=e.push("text_special","",0);t.content=n,t.markup=r[0],t.info="entity"}return e.pos+=r[0].length,!0}}}return!1}]],It=[["balance_pairs",function(e){const t=e.tokens_meta,n=e.tokens_meta.length;Nt(e.delimiters);for(let e=0;e0&&r++,"text"===i[t].type&&t+1=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;o||e.pos++,s[t]=e.pos},Ft.prototype.tokenize=function(e){const t=this.ruler.getRules(""),n=t.length,r=e.posMax,i=e.md.options.maxNesting;for(;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(o){if(e.pos>=r)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},Ft.prototype.parse=function(e,t,n,r){const i=new this.State(e,t,n,r);this.tokenize(i);const s=this.ruler2.getRules(""),o=s.length;for(let e=0;e=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,n){const r=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},jt="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function Ht(e){const t=e.re=function(e){const t={};e=e||{},t.src_Any=M.source,t.src_Cc=T.source,t.src_Z=N.source,t.src_P=A.source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}(e.__opts__),n=e.__tlds__.slice();function r(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(r(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(r(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(r(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(r(t.tpl_host_fuzzy_test),"i");const i=[];function s(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){const n=e.__schemas__[t];if(null===n)return;const r={validate:null,link:null};if(e.__compiled__[t]=r,"[object Object]"===Rt(n))return"[object RegExp]"!==Rt(n.validate)?zt(n.validate)?r.validate=n.validate:s(t,n):r.validate=function(e){return function(t,n){const r=t.slice(n);return e.test(r)?r.match(e)[0].length:0}}(n.validate),void(zt(n.normalize)?r.normalize=n.normalize:n.normalize?s(t,n):r.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===Rt(e)}(n)?s(t,n):i.push(t)})),i.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};const o=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map($t).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+o+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+o+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function Ut(e,t){const n=e.__index__,r=e.__last_index__,i=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=i,this.text=i,this.url=i}function Wt(e,t){const n=new Ut(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function Kt(e,t){if(!(this instanceof Kt))return new Kt(e,t);var n;t||(n=e,Object.keys(n||{}).reduce((function(e,t){return e||Vt.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=Pt({},Vt,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=Pt({},qt,e),this.__compiled__={},this.__tlds__=jt,this.__tlds_replaced__=!1,this.re={},Ht(this)}Kt.prototype.add=function(e,t){return this.__schemas__[e]=t,Ht(this),this},Kt.prototype.set=function(e){return this.__opts__=Pt(this.__opts__,e),this},Kt.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;let t,n,r,i,s,o,a,l,c;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(t=a.exec(e));)if(i=this.testSchemaAt(e,t[2],a.lastIndex),i){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test),l>=0&&(this.__index__<0||l=0&&null!==(r=e.match(this.re.email_fuzzy))&&(s=r.index+r[1].length,o=r.index+r[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=o))),this.__index__>=0},Kt.prototype.pretest=function(e){return this.re.pretest.test(e)},Kt.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},Kt.prototype.match=function(e){const t=[];let n=0;this.__index__>=0&&this.__text_cache__===e&&(t.push(Wt(this,n)),n=this.__last_index__);let r=n?e.slice(n):e;for(;this.test(r);)t.push(Wt(this,n)),r=r.slice(this.__last_index__),n+=this.__last_index__;return t.length?t:null},Kt.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;const t=this.re.schema_at_start.exec(e);if(!t)return null;const n=this.testSchemaAt(e,t[2],t[0].length);return n?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+n,Wt(this,0)):null},Kt.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,n){return e!==n[t-1]})).reverse(),Ht(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,Ht(this),this)},Kt.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},Kt.prototype.onCompile=function(){};const Jt=Kt,Gt=2147483647,Zt=36,Xt=/^xn--/,Qt=/[^\0-\x7F]/,Yt=/[\x2E\u3002\uFF0E\uFF61]/g,en={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},tn=Math.floor,nn=String.fromCharCode;function rn(e){throw new RangeError(en[e])}function sn(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const i=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(Yt,".")).split("."),t).join(".");return r+i}function on(e){const t=[];let n=0;const r=e.length;for(;n=55296&&i<=56319&&n>1,e+=tn(e/t);e>455;r+=Zt)e=tn(e/35);return tn(r+36*e/(e+38))},cn=function(e){const t=[],n=e.length;let r=0,i=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(let n=0;n=128&&rn("not-basic"),t.push(e.charCodeAt(n));for(let l=o>0?o+1:0;l=n&&rn("invalid-input");const o=(a=e.charCodeAt(l++))>=48&&a<58?a-48+26:a>=65&&a<91?a-65:a>=97&&a<123?a-97:Zt;o>=Zt&&rn("invalid-input"),o>tn((Gt-r)/t)&&rn("overflow"),r+=o*t;const c=i<=s?1:i>=s+26?26:i-s;if(otn(Gt/h)&&rn("overflow"),t*=h}const c=t.length+1;s=ln(r-o,c,0==o),tn(r/c)>Gt-i&&rn("overflow"),i+=tn(r/c),r%=c,t.splice(r++,0,i)}var a;return String.fromCodePoint(...t)},hn=function(e){const t=[],n=(e=on(e)).length;let r=128,i=0,s=72;for(const n of e)n<128&&t.push(nn(n));const o=t.length;let a=o;for(o&&t.push("-");a=r&&ttn((Gt-i)/l)&&rn("overflow"),i+=(n-r)*l,r=n;for(const n of e)if(nGt&&rn("overflow"),n===r){let e=i;for(let n=Zt;;n+=Zt){const r=n<=s?1:n>=s+26?26:n-s;if(e=0))try{t.hostname=un(t.hostname)}catch(e){}return d(p(t))}function kn(e){const t=_(e,!0);if(t.hostname&&(!t.protocol||bn.indexOf(t.protocol)>=0))try{t.hostname=dn(t.hostname)}catch(e){}return c(p(t),c.defaultChars+"%")}function vn(e,t){if(!(this instanceof vn))return new vn(e,t);t||se(e)||(t=e||{},e="default"),this.inline=new Bt,this.block=new yt,this.core=new it,this.renderer=new Fe,this.linkify=new Jt,this.validateLink=gn,this.normalizeLink=yn,this.normalizeLinkText=kn,this.utils=n,this.helpers=le({},s),this.options={},this.configure(e),t&&this.set(t)}vn.prototype.set=function(e){return le(this.options,e),this},vn.prototype.configure=function(e){const t=this;if(se(e)){const t=e;if(!(e=pn[t]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name')}if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)})),this},vn.prototype.enable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.enable(e,!0))}),this),n=n.concat(this.inline.ruler2.enable(e,!0));const r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},vn.prototype.disable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.disable(e,!0))}),this),n=n.concat(this.inline.ruler2.disable(e,!0));const r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},vn.prototype.use=function(e){const t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},vn.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");const n=new this.core.State(e,this,t);return this.core.process(n),n.tokens},vn.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},vn.prototype.parseInline=function(e,t){const n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens},vn.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};const wn=vn,xn=!1,Cn=!1;function En(e,t=""){return e?["%c"+t+e,"font-weight: bold;"]:[]}function Sn(e,...t){xn&&console.log.apply(console,[...En(e,"[DEBUG] "),...t])}function _n(e,...t){Cn||console.error.apply(console,[...En(e),...t])}function An(e,t){return Mn(e,t)}function Dn(e){return e instanceof Object&&!(e instanceof Function)&&!(e instanceof Array)}function Mn(e,t){if(e instanceof Array&&t instanceof Array)return[...e,...t];const n=Dn(e),r=Dn(t);if(!n&&r)return Mn({},t);if(n&&!r)return Mn({},e);if(!n&&!r)return t;const i={},s=e,o=t;let a=Object.keys(s);for(const e of a)i[e]=e in o?Mn(s[e],o[e]):s[e];a=Object.keys(o);for(const e of a)e in i||(i[e]=o[e]);return i}function Tn(e,t){return!e||!t||!e.doc.eq(t.doc)||e.storedMarks!==t.storedMarks}function On(e,t){return Tn(e,t)||!e.selection.eq(t.selection)}function Nn(e){if(!e.selection.$anchor.textOffset)return null;const t=e.selection.$anchor;return t.parent.child(t.index())}const Ln="js-sticky";function In(e){const t=new IntersectionObserver((function(e){for(const t of e){const e=!t.isIntersecting,n=t.target.nextElementSibling,r=new CustomEvent("sticky-change",{detail:{stuck:e,target:n}});document.dispatchEvent(r)}}),{threshold:[0],root:e});e.querySelectorAll("."+Ln).forEach((e=>{const n=document.createElement("div");n.className="js-sticky-sentinel",e.parentNode.insertBefore(n,e),t.observe(n)}))}const Fn=/^((https?|ftp):\/\/|\/)[-a-z0-9+&@#/%?=~_|!:,.;()*[\]$]+$/,Bn=/^mailto:[#-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+$/;function Pn(e){const t=e?.trim().toLowerCase();return Fn.test(t)||Bn.test(t)}function Rn(e,...t){let n=e[0];for(let r=0,i=t.length;r{"style"===t||t.startsWith("class")||t.startsWith("on")?_n("setAttributesOnElement",`Setting the "${t}" attribute is not supported`):!1!==n&&e.setAttribute(t.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase())),!0===n?"":String(n))}))}var Hn,Un;(Un=Hn||(Hn={}))[Un.RichText=0]="RichText",Un[Un.Commonmark=1]="Commonmark";const Wn={snippets:!0,html:!0,extraEmphasis:!0,tables:!0,tagLinks:{validate:()=>!0},validateLink:Pn};class Kn{editorView;get document(){return this.editorView.state.doc}get dom(){return this.editorView.dom}get readonly(){return!this.editorView.editable}focus(){this.editorView?.focus()}destroy(){this.editorView?.destroy()}get content(){return this.serializeContent()}set content(e){let t=this.editorView.state.tr;const n=this.editorView.state.doc,r=this.parseContent(e);t=t.replaceWith(0,n.content.size,r),this.editorView.dispatch(t)}appendContent(e){let t=this.editorView.state.tr;const n=this.editorView.state.doc,r=this.parseContent(e);t=t.insert(n.content.size,r),this.editorView.dispatch(t)}setTargetNodeAttributes(e,t){e.classList.add(...t.classList||[]),e.setAttribute("role","textbox"),e.setAttribute("aria-multiline","true"),jn(e,t.elementAttributes||{})}}function Jn(e){this.content=e}Jn.prototype={constructor:Jn,find:function(e){for(var t=0;t>1}},Jn.from=function(e){if(e instanceof Jn)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new Jn(t)};const Gn=Jn;class Zn{_plugins={richText:[],commonmark:[]};_markdownProps={parser:{},serializers:{nodes:{},marks:{}}};_nodeViews={};get plugins(){return this._plugins}get markdownProps(){return this._markdownProps}get nodeViews(){return this._nodeViews}menuCallbacks=[];schemaCallbacks=[];markdownItCallbacks=[];constructor(e,t){if(e?.length)for(const n of e)this.applyConfig(n(t))}getFinalizedSchema(e){let t={nodes:Gn.from(e.nodes),marks:Gn.from(e.marks)};for(const e of this.schemaCallbacks)e&&(t=e(t));return t}alterMarkdownIt(e){for(const t of this.markdownItCallbacks)t&&t(e)}getFinalizedMenu(e,t){let n={};for(const r of[()=>e,...this.menuCallbacks]){if(!r)continue;const i=r(t,e);for(const e of i){const t=n[e.name];t?(t.entries=[...t.entries,...e.entries],t.priority=Math.min(t.priority||0,e.priority||1/0)):n={...n,[e.name]:{...e}}}}return Object.values(n)}applyConfig(e){e.commonmark?.plugins?.forEach((e=>{this._plugins.commonmark.push(e)})),e.richText?.plugins?.forEach((e=>{this._plugins.richText.push(e)})),this.schemaCallbacks.push(e.extendSchema),e.richText?.nodeViews&&(this._nodeViews={...this._nodeViews,...e.richText?.nodeViews}),this.extendMarkdown(e.markdown,e.markdown?.alterMarkdownIt),this.menuCallbacks.push(e.menuItems)}extendMarkdown(e,t){e?.parser&&(this._markdownProps.parser={...this._markdownProps.parser,...e.parser}),e?.serializers?.nodes&&(this._markdownProps.serializers.nodes={...this._markdownProps.serializers.nodes,...e.serializers.nodes}),e?.serializers?.marks&&(this._markdownProps.serializers.marks={...this._markdownProps.serializers.marks,...e.serializers.marks}),t&&this.markdownItCallbacks.push(t)}}var Xn=200,Qn=function(){};Qn.prototype.append=function(e){return e.length?(e=Qn.from(e),!this.length&&e||e.length=t?Qn.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))},Qn.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)},Qn.prototype.forEach=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)},Qn.prototype.map=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length);var r=[];return this.forEach((function(t,n){return r.push(e(t,n))}),t,n),r},Qn.from=function(e){return e instanceof Qn?e:e&&e.length?new Yn(e):Qn.empty};var Yn=function(e){function t(t){e.call(this),this.values=t}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={length:{configurable:!0},depth:{configurable:!0}};return t.prototype.flatten=function(){return this.values},t.prototype.sliceInner=function(e,n){return 0==e&&n==this.length?this:new t(this.values.slice(e,n))},t.prototype.getInner=function(e){return this.values[e]},t.prototype.forEachInner=function(e,t,n,r){for(var i=t;i=n;i--)if(!1===e(this.values[i],r+i))return!1},t.prototype.leafAppend=function(e){if(this.length+e.length<=Xn)return new t(this.values.concat(e.flatten()))},t.prototype.leafPrepend=function(e){if(this.length+e.length<=Xn)return new t(e.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(t.prototype,n),t}(Qn);Qn.empty=new Yn([]);var er=function(e){function t(t,n){e.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},t.prototype.getInner=function(e){return ei&&!1===this.right.forEachInner(e,Math.max(t-i,0),Math.min(this.length,n)-i,r+i))&&void 0},t.prototype.forEachInvertedInner=function(e,t,n,r){var i=this.left.length;return!(t>i&&!1===this.right.forEachInvertedInner(e,t-i,Math.max(n,i)-i,r+i))&&!(n=n?this.right.slice(e-n,t-n):this.left.slice(e,n).append(this.right.slice(0,t-n))},t.prototype.leafAppend=function(e){var n=this.right.leafAppend(e);if(n)return new t(this.left,n)},t.prototype.leafPrepend=function(e){var n=this.left.leafPrepend(e);if(n)return new t(n,this.right)},t.prototype.appendInner=function(e){return this.left.depth>=Math.max(this.right.depth,e.depth)+1?new t(this.left,new t(this.right,e)):new t(this,e)},t}(Qn);const tr=Qn;function nr(e,t,n){for(let r=0;;r++){if(r==e.childCount||r==t.childCount)return e.childCount==t.childCount?null:n;let i=e.child(r),s=t.child(r);if(i!=s){if(!i.sameMarkup(s))return n;if(i.isText&&i.text!=s.text){for(let e=0;i.text[e]==s.text[e];e++)n++;return n}if(i.content.size||s.content.size){let e=nr(i.content,s.content,n+1);if(null!=e)return e}n+=i.nodeSize}else n+=i.nodeSize}}function rr(e,t,n,r){for(let i=e.childCount,s=t.childCount;;){if(0==i||0==s)return i==s?null:{a:n,b:r};let o=e.child(--i),a=t.child(--s),l=o.nodeSize;if(o!=a){if(!o.sameMarkup(a))return{a:n,b:r};if(o.isText&&o.text!=a.text){let e=0,t=Math.min(o.text.length,a.text.length);for(;ee&&!1!==n(a,r+o,i||null,s)&&a.content.size){let i=o+1;a.nodesBetween(Math.max(0,e-i),Math.min(a.content.size,t-i),n,r+i)}o=l}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i="",s=!0;return this.nodesBetween(e,t,((o,a)=>{let l=o.isText?o.text.slice(Math.max(e,a)-a,t-a):o.isLeaf?r?"function"==typeof r?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):"":"";o.isBlock&&(o.isLeaf&&l||o.isTextblock)&&n&&(s?s=!1:i+=n),i+=l}),0),i}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,n=e.firstChild,r=this.content.slice(),i=0;for(t.isText&&t.sameMarkup(n)&&(r[r.length-1]=t.withText(t.text+n.text),i=1);ie)for(let i=0,s=0;se&&((st)&&(o=o.isText?o.cut(Math.max(0,e-s),Math.min(o.text.length,t-s)):o.cut(Math.max(0,e-s-1),Math.min(o.content.size,t-s-1))),n.push(o),r+=o.nodeSize),s=a}return new ir(n,r)}cutByIndex(e,t){return e==t?ir.empty:0==e&&t==this.content.length?this:new ir(this.content.slice(e,t))}replaceChild(e,t){let n=this.content[e];if(n==t)return this;let r=this.content.slice(),i=this.size+t.nodeSize-n.nodeSize;return r[e]=t,new ir(r,i)}addToStart(e){return new ir([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new ir(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;tthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,r=0;;n++){let i=r+this.child(n).nodeSize;if(i>=e)return i==e||t>0?or(n+1,i):or(n,r);r=i}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map((e=>e.toJSON())):null}static fromJSON(e,t){if(!t)return ir.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new ir(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return ir.empty;let t,n=0;for(let r=0;rthis.type.rank&&(t||(t=e.slice(0,r)),t.push(this),n=!0),t&&t.push(i)}}return t||(t=e.slice()),n||t.push(this),t}removeFromSet(e){for(let t=0;te.type.rank-t.type.rank)),t}}lr.none=[];class cr extends Error{}class hr{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let n=dr(this.content,e+this.openStart,t);return n&&new hr(n,this.openStart,this.openEnd)}removeBetween(e,t){return new hr(ur(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return hr.empty;let n=t.openStart||0,r=t.openEnd||0;if("number"!=typeof n||"number"!=typeof r)throw new RangeError("Invalid input for Slice.fromJSON");return new hr(ir.fromJSON(e,t.content),n,r)}static maxOpen(e,t=!0){let n=0,r=0;for(let r=e.firstChild;r&&!r.isLeaf&&(t||!r.type.spec.isolating);r=r.firstChild)n++;for(let n=e.lastChild;n&&!n.isLeaf&&(t||!n.type.spec.isolating);n=n.lastChild)r++;return new hr(e,n,r)}}function ur(e,t,n){let{index:r,offset:i}=e.findIndex(t),s=e.maybeChild(r),{index:o,offset:a}=e.findIndex(n);if(i==t||s.isText){if(a!=n&&!e.child(o).isText)throw new RangeError("Removing non-flat range");return e.cut(0,t).append(e.cut(n))}if(r!=o)throw new RangeError("Removing non-flat range");return e.replaceChild(r,s.copy(ur(s.content,t-i-1,n-i-1)))}function dr(e,t,n,r){let{index:i,offset:s}=e.findIndex(t),o=e.maybeChild(i);if(s==t||o.isText)return r&&!r.canReplace(i,i,n)?null:e.cut(0,t).append(n).append(e.cut(t));let a=dr(o.content,t-s-1,n);return a&&e.replaceChild(i,o.copy(a))}function pr(e,t,n){if(n.openStart>e.depth)throw new cr("Inserted content deeper than insertion position");if(e.depth-n.openStart!=t.depth-n.openEnd)throw new cr("Inconsistent open depths");return fr(e,t,n,0)}function fr(e,t,n,r){let i=e.index(r),s=e.node(r);if(i==t.index(r)&&r=0;e--)r=t.node(e).copy(ir.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}(n,e);return kr(s,vr(e,i,o,t,r))}{let r=e.parent,i=r.content;return kr(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}}return kr(s,wr(e,t,r))}function mr(e,t){if(!t.type.compatibleContent(e.type))throw new cr("Cannot join "+t.type.name+" onto "+e.type.name)}function gr(e,t,n){let r=e.node(n);return mr(r,t.node(n)),r}function br(e,t){let n=t.length-1;n>=0&&e.isText&&e.sameMarkup(t[n])?t[n]=e.withText(t[n].text+e.text):t.push(e)}function yr(e,t,n,r){let i=(t||e).node(n),s=0,o=t?t.index(n):i.childCount;e&&(s=e.index(n),e.depth>n?s++:e.textOffset&&(br(e.nodeAfter,r),s++));for(let e=s;ei&&gr(e,t,i+1),o=r.depth>i&&gr(n,r,i+1),a=[];return yr(null,e,i,a),s&&o&&t.index(i)==n.index(i)?(mr(s,o),br(kr(s,vr(e,t,n,r,i+1)),a)):(s&&br(kr(s,wr(e,t,i+1)),a),yr(t,n,i,a),o&&br(kr(o,wr(n,r,i+1)),a)),yr(r,null,i,a),new ir(a)}function wr(e,t,n){let r=[];return yr(null,e,n,r),e.depth>n&&br(kr(gr(e,t,n+1),wr(e,t,n+1)),r),yr(t,null,n,r),new ir(r)}hr.empty=new hr(ir.empty,0,0);class xr{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return null==e?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[3*this.resolveDepth(e)]}index(e){return this.path[3*this.resolveDepth(e)+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e!=this.depth||this.textOffset?1:0)}start(e){return 0==(e=this.resolveDepth(e))?0:this.path[3*e-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]}after(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]+this.path[3*e].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):0==e?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[3*t],r=0==t?0:this.path[3*t-1]+1;for(let t=0;t0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new _r(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let n=[],r=0,i=t;for(let t=e;;){let{index:e,offset:s}=t.content.findIndex(i),o=i-s;if(n.push(t,e,r+s),!o)break;if(t=t.child(e),t.isText)break;i=o-1,r+=s+1}return new xr(t,n,i)}static resolveCached(e,t){let n=Sr.get(e);if(n)for(let e=0;ee&&this.nodesBetween(e,t,(e=>(n.isInSet(e.marks)&&(r=!0),!r))),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Tr(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,n=ir.empty,r=0,i=n.childCount){let s=this.contentMatchAt(e).matchFragment(n,r,i),o=s&&s.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;ee.type.name))}`);this.content.forEach((e=>e.check()))}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map((e=>e.toJSON()))),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let n;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");n=t.marks.map(e.markFromJSON)}if("text"==t.type){if("string"!=typeof t.text)throw new RangeError("Invalid text node in JSON");return e.text(t.text,n)}let r=ir.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}}Dr.prototype.text=void 0;class Mr extends Dr{constructor(e,t,n,r){if(super(e,t,null,r),!n)throw new RangeError("Empty text nodes are not allowed");this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Tr(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Mr(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Mr(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return 0==e&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Tr(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+"("+t+")";return t}class Or{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let n=new Nr(e,t);if(null==n.next)return Or.empty;let r=Lr(n);n.next&&n.err("Unexpected trailing text");let i=function(e){let t=Object.create(null);return function n(r){let i=[];r.forEach((t=>{e[t].forEach((({term:t,to:n})=>{if(!t)return;let r;for(let e=0;e{r||i.push([t,r=[]]),-1==r.indexOf(e)&&r.push(e)}))}))}));let s=t[r.join(",")]=new Or(r.indexOf(e.length-1)>-1);for(let e=0;et.concat(e(n,s))),[]);if("seq"!=t.type){if("star"==t.type){let o=n();return r(s,o),i(e(t.expr,o),o),[r(o)]}if("plus"==t.type){let o=n();return i(e(t.expr,s),o),i(e(t.expr,o),o),[r(o)]}if("opt"==t.type)return[r(s)].concat(e(t.expr,s));if("range"==t.type){let o=s;for(let r=0;re.to=t))}}(r));return function(e,t){for(let n=0,r=[e];ne.createAndFill())));for(let e=0;e=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];return function t(n){e.push(n);for(let r=0;r{let r=n+(t.validEnd?"*":" ")+" ";for(let n=0;n"+e.indexOf(t.next[n].next);return r})).join("\n")}}Or.empty=new Or(!0);class Nr{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),""==this.tokens[this.tokens.length-1]&&this.tokens.pop(),""==this.tokens[0]&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function Lr(e){let t=[];do{t.push(Ir(e))}while(e.eat("|"));return 1==t.length?t[0]:{type:"choice",exprs:t}}function Ir(e){let t=[];do{t.push(Fr(e))}while(e.next&&")"!=e.next&&"|"!=e.next);return 1==t.length?t[0]:{type:"seq",exprs:t}}function Fr(e){let t=function(e){if(e.eat("(")){let t=Lr(e);return e.eat(")")||e.err("Missing closing paren"),t}if(!/\W/.test(e.next)){let t=function(e,t){let n=e.nodeTypes,r=n[t];if(r)return[r];let i=[];for(let e in n){let r=n[e];r.isInGroup(t)&&i.push(r)}return 0==i.length&&e.err("No node type or group '"+t+"' found"),i}(e,e.next).map((t=>(null==e.inline?e.inline=t.isInline:e.inline!=t.isInline&&e.err("Mixing inline and block content"),{type:"name",value:t})));return e.pos++,1==t.length?t[0]:{type:"choice",exprs:t}}e.err("Unexpected token '"+e.next+"'")}(e);for(;;)if(e.eat("+"))t={type:"plus",expr:t};else if(e.eat("*"))t={type:"star",expr:t};else if(e.eat("?"))t={type:"opt",expr:t};else{if(!e.eat("{"))break;t=Pr(e,t)}return t}function Br(e){/\D/.test(e.next)&&e.err("Expected number, got '"+e.next+"'");let t=Number(e.next);return e.pos++,t}function Pr(e,t){let n=Br(e),r=n;return e.eat(",")&&(r="}"!=e.next?Br(e):-1),e.eat("}")||e.err("Unclosed braced range"),{type:"range",min:n,max:r,expr:t}}function Rr(e,t){return t-e}function zr(e,t){let n=[];return function t(r){let i=e[r];if(1==i.length&&!i[0].term)return t(i[0].to);n.push(r);for(let e=0;e-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:Vr(this.attrs,e)}create(e=null,t,n){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new Dr(this,this.computeAttrs(e),ir.from(t),lr.setFrom(n))}createChecked(e=null,t,n){return t=ir.from(t),this.checkContent(t),new Dr(this,this.computeAttrs(e),t,lr.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),(t=ir.from(t)).size){let e=this.contentMatch.fillBefore(t);if(!e)return null;t=e.append(t)}let r=this.contentMatch.matchFragment(t),i=r&&r.fillBefore(ir.empty,!0);return i?new Dr(this,e,t.append(i),lr.setFrom(n)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let t=0;t-1}allowsMarks(e){if(null==this.markSet)return!0;for(let t=0;tn[e]=new Hr(e,t,r)));let r=t.spec.topNode||"doc";if(!n[r])throw new RangeError("Schema is missing its top node type ('"+r+"')");if(!n.text)throw new RangeError("Every schema needs a 'text' type");for(let e in n.text.attrs)throw new RangeError("The text node type should not have attributes");return n}}class Ur{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,"default"),this.default=n.default,this.validate="string"==typeof n.validate?function(e,t,n){let r=n.split("|");return n=>{let i=null===n?"null":typeof n;if(r.indexOf(i)<0)throw new RangeError(`Expected value of type ${r} for attribute ${t} on type ${e}, got ${i}`)}}(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}}class Wr{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=jr(e,r.attrs),this.excluded=null;let i=$r(this.attrs);this.instance=i?new lr(this,i):null}create(e=null){return!e&&this.instance?this.instance:new lr(this,Vr(this.attrs,e))}static compile(e,t){let n=Object.create(null),r=0;return e.forEach(((e,i)=>n[e]=new Wr(e,r++,t,i))),n}removeFromSet(e){for(var t=0;t-1}}class Kr{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let n in e)t[n]=e[n];t.nodes=Gn.from(e.nodes),t.marks=Gn.from(e.marks||{}),this.nodes=Hr.compile(this.spec.nodes,this),this.marks=Wr.compile(this.spec.marks,this);let n=Object.create(null);for(let e in this.nodes){if(e in this.marks)throw new RangeError(e+" can not be both a node and a mark");let t=this.nodes[e],r=t.spec.content||"",i=t.spec.marks;if(t.contentMatch=n[r]||(n[r]=Or.parse(r,this.nodes)),t.inlineContent=t.contentMatch.inlineContent,t.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!t.isInline||!t.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=t}t.markSet="_"==i?null:i?Jr(this,i.split(" ")):""!=i&&t.inlineContent?null:[]}for(let e in this.marks){let t=this.marks[e],n=t.spec.excludes;t.excluded=null==n?[t]:""==n?[]:Jr(this,n.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,n,r){if("string"==typeof e)e=this.nodeType(e);else{if(!(e instanceof Hr))throw new RangeError("Invalid node type: "+e);if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}return e.createChecked(t,n,r)}text(e,t){let n=this.nodes.text;return new Mr(n,n.defaultAttrs,e,lr.setFrom(t))}mark(e,t){return"string"==typeof e&&(e=this.marks[e]),e.create(t)}nodeFromJSON(e){return Dr.fromJSON(this,e)}markFromJSON(e){return lr.fromJSON(this,e)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function Jr(e,t){let n=[];for(let r=0;r-1)&&n.push(o=r)}if(!o)throw new SyntaxError("Unknown mark type: '"+t[r]+"'")}return n}class Gr{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach((e=>{if(function(e){return null!=e.tag}(e))this.tags.push(e);else if(function(e){return null!=e.style}(e)){let t=/[^=]*/.exec(e.style)[0];n.indexOf(t)<0&&n.push(t),this.styles.push(e)}})),this.normalizeLists=!this.tags.some((t=>{if(!/^(ul|ol)\b/.test(t.tag)||!t.node)return!1;let n=e.nodes[t.node];return n.contentMatch.matchType(n)}))}parse(e,t={}){let n=new ti(this,t,!1);return n.addAll(e,lr.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new ti(this,t,!0);return n.addAll(e,lr.none,t.from,t.to),hr.maxOpen(n.finish())}matchTag(e,t,n){for(let r=n?this.tags.indexOf(n)+1:0;re.length&&(61!=s.charCodeAt(e.length)||s.slice(e.length+1)!=t))){if(r.getAttrs){let e=r.getAttrs(t);if(!1===e)continue;r.attrs=e||void 0}return r}}}static schemaRules(e){let t=[];function n(e){let n=null==e.priority?50:e.priority,r=0;for(;r{n(e=ri(e)),e.mark||e.ignore||e.clearMark||(e.mark=t)}))}for(let t in e.nodes){let r=e.nodes[t].spec.parseDOM;r&&r.forEach((e=>{n(e=ri(e)),e.node||e.ignore||e.mark||(e.node=t)}))}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new Gr(e,Gr.schemaRules(e)))}}const Zr={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},Xr={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},Qr={ol:!0,ul:!0};function Yr(e,t,n){return null!=t?(t?1:0)|("full"===t?2:0):e&&"pre"==e.whitespace?3:-5&n}class ei{constructor(e,t,n,r,i,s){this.type=e,this.attrs=t,this.marks=n,this.solid=r,this.options=s,this.content=[],this.activeMarks=lr.none,this.match=i||(4&s?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(ir.from(e));if(!t){let t,n=this.type.contentMatch;return(t=n.findWrapping(e.type))?(this.match=n,t):null}this.match=this.type.contentMatch.matchFragment(t)}return this.match.findWrapping(e.type)}finish(e){if(!(1&this.options)){let e,t=this.content[this.content.length-1];if(t&&t.isText&&(e=/[ \t\r\n\u000c]+$/.exec(t.text))){let n=t;t.text.length==e[0].length?this.content.pop():this.content[this.content.length-1]=n.withText(n.text.slice(0,n.text.length-e[0].length))}}let t=ir.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(ir.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!Zr.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}}class ti{constructor(e,t,n){this.parser=e,this.options=t,this.isOpen=n,this.open=0,this.localPreserveWS=!1;let r,i=t.topNode,s=Yr(null,t.preserveWhitespace,0)|(n?4:0);r=i?new ei(i.type,i.attrs,lr.none,!0,t.topMatch||i.type.contentMatch,s):new ei(n?null:e.schema.topNodeType,null,lr.none,!0,null,s),this.nodes=[r],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){3==e.nodeType?this.addTextNode(e,t):1==e.nodeType&&this.addElement(e,t)}addTextNode(e,t){let n=e.nodeValue,r=this.top,i=2&r.options?"full":this.localPreserveWS||(1&r.options)>0;if("full"===i||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(n)){if(i)n="full"!==i?n.replace(/\r?\n|\r/g," "):n.replace(/\r\n?/g,"\n");else if(n=n.replace(/[ \t\r\n\u000c]+/g," "),/^[ \t\r\n\u000c]/.test(n)&&this.open==this.nodes.length-1){let t=r.content[r.content.length-1],i=e.previousSibling;(!t||i&&"BR"==i.nodeName||t.isText&&/[ \t\r\n\u000c]$/.test(t.text))&&(n=n.slice(1))}n&&this.insertNode(this.parser.schema.text(n),t),this.findInText(e)}else this.findInside(e)}addElement(e,t,n){let r=this.localPreserveWS,i=this.top;("PRE"==e.tagName||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let s,o=e.nodeName.toLowerCase();Qr.hasOwnProperty(o)&&this.parser.normalizeLists&&function(e){for(let t=e.firstChild,n=null;t;t=t.nextSibling){let e=1==t.nodeType?t.nodeName.toLowerCase():null;e&&Qr.hasOwnProperty(e)&&n?(n.appendChild(t),t=n):"li"==e?n=t:e&&(n=null)}}(e);let a=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(s=this.parser.matchTag(e,this,n));e:if(a?a.ignore:Xr.hasOwnProperty(o))this.findInside(e),this.ignoreFallback(e,t);else if(!a||a.skip||a.closeParent){a&&a.closeParent?this.open=Math.max(0,this.open-1):a&&a.skip.nodeType&&(e=a.skip);let n,r=this.needsBlock;if(Zr.hasOwnProperty(o))i.content.length&&i.content[0].isInline&&this.open&&(this.open--,i=this.top),n=!0,i.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break e}let s=a&&a.skip?t:this.readStyles(e,t);s&&this.addAll(e,s),n&&this.sync(i),this.needsBlock=r}else{let n=this.readStyles(e,t);n&&this.addElementByRule(e,a,n,!1===a.consuming?s:void 0)}this.localPreserveWS=r}leafFallback(e,t){"BR"==e.nodeName&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode("\n"),t)}ignoreFallback(e,t){"BR"!=e.nodeName||this.top.type&&this.top.type.inlineContent||this.findPlace(this.parser.schema.text("-"),t)}readStyles(e,t){let n=e.style;if(n&&n.length)for(let e=0;e!n.clearMark(e))):t.concat(this.parser.schema.marks[n.mark].create(n.attrs)),!1!==n.consuming)break;e=n}}return t}addElementByRule(e,t,n,r){let i,s;if(t.node)if(s=this.parser.schema.nodes[t.node],s.isLeaf)this.insertNode(s.create(t.attrs),n)||this.leafFallback(e,n);else{let e=this.enter(s,t.attrs||null,n,t.preserveWhitespace);e&&(i=!0,n=e)}else{let e=this.parser.schema.marks[t.mark];n=n.concat(e.create(t.attrs))}let o=this.top;if(s&&s.isLeaf)this.findInside(e);else if(r)this.addElement(e,n,r);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach((e=>this.insertNode(e,n)));else{let r=e;"string"==typeof t.contentElement?r=e.querySelector(t.contentElement):"function"==typeof t.contentElement?r=t.contentElement(e):t.contentElement&&(r=t.contentElement),this.findAround(e,r,!0),this.addAll(r,n),this.findAround(e,r,!1)}i&&this.sync(o)&&this.open--}addAll(e,t,n,r){let i=n||0;for(let s=n?e.childNodes[n]:e.firstChild,o=null==r?null:e.childNodes[r];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s,t);this.findAtPoint(e,i)}findPlace(e,t){let n,r;for(let t=this.open;t>=0;t--){let i=this.nodes[t],s=i.findWrapping(e);if(s&&(!n||n.length>s.length)&&(n=s,r=i,!s.length))break;if(i.solid)break}if(!n)return null;this.sync(r);for(let e=0;e!(s.type?s.type.allowsMarkType(t.type):ii(t.type,e))||(a=t.addToSet(a),!1))),this.nodes.push(new ei(e,t,a,r,null,o)),this.open++,n}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!(!this.isOpen&&!this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--){if(this.nodes[t]==e)return this.open=t,!0;this.localPreserveWS&&(this.nodes[t].options|=1)}return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let t=n.length-1;t>=0;t--)e+=n[t].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),n=this.options.context,r=!(this.isOpen||n&&n.parent.type!=this.nodes[0].type),i=-(n?n.depth+1:0)+(r?0:1),s=(e,o)=>{for(;e>=0;e--){let a=t[e];if(""==a){if(e==t.length-1||0==e)continue;for(;o>=i;o--)if(s(e-1,o))return!0;return!1}{let e=o>0||0==o&&r?this.nodes[o].type:n&&o>=i?n.node(o-i).type:null;if(!e||e.name!=a&&!e.isInGroup(a))return!1;o--}}return!0};return s(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let e in this.parser.schema.nodes){let t=this.parser.schema.nodes[e];if(t.isTextblock&&t.defaultAttrs)return t}}}function ni(e,t){return(e.matches||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector).call(e,t)}function ri(e){let t={};for(let n in e)t[n]=e[n];return t}function ii(e,t){let n=t.schema.nodes;for(let r in n){let i=n[r];if(!i.allowsMarkType(e))continue;let s=[],o=e=>{s.push(e);for(let n=0;n{if(i.length||e.marks.length){let n=0,s=0;for(;n=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,t);i&&((i.contentDOM||i.dom).appendChild(n),n=i.dom)}return n}serializeMark(e,t,n={}){let r=this.marks[e.type.name];return r&&ci(ai(n),r(e,t),null,e.attrs)}static renderSpec(e,t,n=null,r){return ci(e,t,n,r)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new si(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=oi(e.nodes);return t.text||(t.text=e=>e.text),t}static marksFromSchema(e){return oi(e.marks)}}function oi(e){let t={};for(let n in e){let r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function ai(e){return e.document||window.document}const li=new WeakMap;function ci(e,t,n,r){if("string"==typeof t)return{dom:e.createTextNode(t)};if(null!=t.nodeType)return{dom:t};if(t.dom&&null!=t.dom.nodeType)return t;let i,s=t[0];if("string"!=typeof s)throw new RangeError("Invalid array passed to renderSpec");if(r&&(i=function(e){let t=li.get(e);return void 0===t&&li.set(e,t=function(e){let t=null;return function e(n){if(n&&"object"==typeof n)if(Array.isArray(n))if("string"==typeof n[0])t||(t=[]),t.push(n);else for(let t=0;t-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let o,a=s.indexOf(" ");a>0&&(n=s.slice(0,a),s=s.slice(a+1));let l=n?e.createElementNS(n,s):e.createElement(s),c=t[1],h=1;if(c&&"object"==typeof c&&null==c.nodeType&&!Array.isArray(c)){h=2;for(let e in c)if(null!=c[e]){let t=e.indexOf(" ");t>0?l.setAttributeNS(e.slice(0,t),e.slice(t+1),c[e]):l.setAttribute(e,c[e])}}for(let i=h;ih)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}{let{dom:t,contentDOM:i}=ci(e,s,n,r);if(l.appendChild(t),i){if(o)throw new RangeError("Multiple content holes");o=i}}}return{dom:l,contentDOM:o}}const hi=Math.pow(2,16);function ui(e){return 65535&e}class di{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(8&this.delInfo)>0}get deletedBefore(){return(5&this.delInfo)>0}get deletedAfter(){return(6&this.delInfo)>0}get deletedAcross(){return(4&this.delInfo)>0}}class pi{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&pi.empty)return pi.empty}recover(e){let t=0,n=ui(e);if(!this.inverted)for(let e=0;ee)break;let l=this.ranges[o+i],c=this.ranges[o+s],h=a+l;if(e<=h){let i=a+r+((l?e==a?-1:e==h?1:t:t)<0?0:c);if(n)return i;let s=e==a?2:e==h?1:4;return(t<0?e!=a:e!=h)&&(s|=8),new di(i,s,e==(t<0?a:h)?null:o/3+(e-a)*hi)}r+=c-l}return n?e+r:new di(e+r,0,null)}touches(e,t){let n=0,r=ui(t),i=this.inverted?2:1,s=this.inverted?1:2;for(let t=0;te)break;let a=this.ranges[t+i];if(e<=o+a&&t==3*r)return!0;n+=this.ranges[t+s]-a}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let r=0,i=0;r=0;t--){let r=e.getMirror(t);this.appendMap(e.maps[t].invert(),null!=r&&r>t?n-r-1:void 0)}}invert(){let e=new fi;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;nn&&te.isAtom&&t.type.allowsMarkType(this.mark.type)?e.mark(this.mark.addToSet(e.marks)):e),r),t.openStart,t.openEnd);return bi.fromReplace(e,this.from,this.to,i)}invert(){return new vi(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new ki(t.pos,n.pos,this.mark)}merge(e){return e instanceof ki&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new ki(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to)throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new ki(t.from,t.to,e.markFromJSON(t.mark))}}gi.jsonID("addMark",ki);class vi extends gi{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new hr(yi(t.content,(e=>e.mark(this.mark.removeFromSet(e.marks))),e),t.openStart,t.openEnd);return bi.fromReplace(e,this.from,this.to,n)}invert(){return new ki(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new vi(t.pos,n.pos,this.mark)}merge(e){return e instanceof vi&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new vi(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to)throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new vi(t.from,t.to,e.markFromJSON(t.mark))}}gi.jsonID("removeMark",vi);class wi extends gi{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return bi.fail("No node at mark step's position");let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return bi.fromReplace(e,this.pos,this.pos+1,new hr(ir.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let e=this.mark.addToSet(t.marks);if(e.length==t.marks.length){for(let n=0;nn.pos?null:new Ei(t.pos,n.pos,r,i,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to||"number"!=typeof t.gapFrom||"number"!=typeof t.gapTo||"number"!=typeof t.insert)throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new Ei(t.from,t.to,t.gapFrom,t.gapTo,hr.fromJSON(e,t.slice),t.insert,!!t.structure)}}function Si(e,t,n){let r=e.resolve(t),i=n-t,s=r.depth;for(;i>0&&s>0&&r.indexAfter(s)==r.node(s).childCount;)s--,i--;if(i>0){let e=r.node(s).maybeChild(r.indexAfter(s));for(;i>0;){if(!e||e.isLeaf)return!0;e=e.firstChild,i--}}return!1}function _i(e,t,n,r=n.contentMatch,i=!0){let s=e.doc.nodeAt(t),o=[],a=t+1;for(let t=0;t=0;t--)e.step(o[t])}function Ai(e,t,n){return(0==t||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function Di(e){let t=e.parent.content.cutByIndex(e.startIndex,e.endIndex);for(let n=e.depth;;--n){let r=e.$from.node(n),i=e.$from.index(n),s=e.$to.indexAfter(n);if(n{if(i.isText){let o,a=/\r?\n|\r/g;for(;o=a.exec(i.text);){let i=e.mapping.slice(r).map(n+1+s+o.index);e.replaceWith(i,i+1,t.type.schema.linebreakReplacement.create())}}}))}function Ni(e,t,n,r){t.forEach(((i,s)=>{if(i.type==i.type.schema.linebreakReplacement){let i=e.mapping.slice(r).map(n+1+s);e.replaceWith(i,i+1,t.type.schema.text("\n"))}}))}function Li(e,t,n=1,r){let i=e.resolve(t),s=i.depth-n,o=r&&r[r.length-1]||i.parent;if(s<0||i.parent.type.spec.isolating||!i.parent.canReplace(i.index(),i.parent.childCount)||!o.type.validContent(i.parent.content.cutByIndex(i.index(),i.parent.childCount)))return!1;for(let e=i.depth-1,t=n-2;e>s;e--,t--){let n=i.node(e),s=i.index(e);if(n.type.spec.isolating)return!1;let o=n.content.cutByIndex(s,n.childCount),a=r&&r[t+1];a&&(o=o.replaceChild(0,a.type.create(a.attrs)));let l=r&&r[t]||n;if(!n.canReplace(s+1,n.childCount)||!l.type.validContent(o))return!1}let a=i.indexAfter(s),l=r&&r[0];return i.node(s).canReplaceWith(a,a,l?l.type:i.node(s+1).type)}function Ii(e,t){let n=e.resolve(t),r=n.index();return i=n.nodeBefore,s=n.nodeAfter,!(!i||!s||i.isLeaf||!function(e,t){t.content.size||e.type.compatibleContent(t.type);let n=e.contentMatchAt(e.childCount),{linebreakReplacement:r}=e.type.schema;for(let i=0;i0;t--)this.placed=ir.from(e.node(t).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let e=this.findFittable();e?this.placeNodes(e):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,n=this.$from,r=this.close(e<0?this.$to:n.doc.resolve(e));if(!r)return null;let i=this.placed,s=n.depth,o=r.depth;for(;s&&o&&1==i.childCount;)i=i.firstChild.content,s--,o--;let a=new hr(i,s,o);return e>-1?new Ei(n.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||n.pos!=this.$to.pos?new Ci(n.pos,r.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,n=0,r=this.unplaced.openEnd;n1&&(r=0),i.type.spec.isolating&&r<=n){e=n;break}t=i.content}for(let t=1;t<=2;t++)for(let n=1==t?e:this.unplaced.openStart;n>=0;n--){let e,r=null;n?(r=$i(this.unplaced.content,n-1).firstChild,e=r.content):e=this.unplaced.content;let i=e.firstChild;for(let e=this.depth;e>=0;e--){let s,{type:o,match:a}=this.frontier[e],l=null;if(1==t&&(i?a.matchType(i.type)||(l=a.fillBefore(ir.from(i),!1)):r&&o.compatibleContent(r.type)))return{sliceDepth:n,frontierDepth:e,parent:r,inject:l};if(2==t&&i&&(s=a.findWrapping(i.type)))return{sliceDepth:n,frontierDepth:e,parent:r,wrap:s};if(r&&a.matchType(r.type))break}}}openMore(){let{content:e,openStart:t,openEnd:n}=this.unplaced,r=$i(e,t);return!(!r.childCount||r.firstChild.isLeaf||(this.unplaced=new hr(e,t+1,Math.max(n,r.size+t>=e.size-n?t+1:0)),0))}dropNode(){let{content:e,openStart:t,openEnd:n}=this.unplaced,r=$i(e,t);if(r.childCount<=1&&t>0){let i=e.size-t<=t+r.size;this.unplaced=new hr(Ri(e,t-1,1),t-1,i?t-1:n)}else this.unplaced=new hr(Ri(e,t,1),t,n)}placeNodes({sliceDepth:e,frontierDepth:t,parent:n,inject:r,wrap:i}){for(;this.depth>t;)this.closeFrontierNode();if(i)for(let e=0;e1||0==a||e.content.size)&&(h=t,c.push(Vi(e.mark(u.allowedMarks(e.marks)),1==l?a:0,l==o.childCount?d:-1)))}let p=l==o.childCount;p||(d=-1),this.placed=zi(this.placed,t,ir.from(c)),this.frontier[t].match=h,p&&d<0&&n&&n.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let e=0,t=o;e1&&r==this.$to.end(--n);)++r;return r}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:n,type:r}=this.frontier[t],i=t=0;n--){let{match:t,type:r}=this.frontier[n],i=qi(e,n,r,t,!0);if(!i||i.childCount)continue e}return{depth:t,fit:s,move:i?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=zi(this.placed,t.depth,t.fit)),e=t.move;for(let n=t.depth+1;n<=e.depth;n++){let t=e.node(n),r=t.type.contentMatch.fillBefore(t.content,!0,e.index(n));this.openFrontierNode(t.type,t.attrs,r)}return e}openFrontierNode(e,t=null,n){let r=this.frontier[this.depth];r.match=r.match.matchType(e),this.placed=zi(this.placed,this.depth,ir.from(e.create(t,n))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let e=this.frontier.pop().match.fillBefore(ir.empty,!0);e.childCount&&(this.placed=zi(this.placed,this.frontier.length,e))}}function Ri(e,t,n){return 0==t?e.cutByIndex(n,e.childCount):e.replaceChild(0,e.firstChild.copy(Ri(e.firstChild.content,t-1,n)))}function zi(e,t,n){return 0==t?e.append(n):e.replaceChild(e.childCount-1,e.lastChild.copy(zi(e.lastChild.content,t-1,n)))}function $i(e,t){for(let n=0;n1&&(r=r.replaceChild(0,Vi(r.firstChild,t-1,1==r.childCount?n-1:0))),t>0&&(r=e.type.contentMatch.fillBefore(r).append(r),n<=0&&(r=r.append(e.type.contentMatch.matchFragment(r).fillBefore(ir.empty,!0)))),e.copy(r)}function qi(e,t,n,r,i){let s=e.node(t),o=i?e.indexAfter(t):e.index(t);if(o==s.childCount&&!n.compatibleContent(s.type))return null;let a=r.fillBefore(s.content,!0,o);return a&&!function(e,t,n){for(let r=n;rr){let t=i.contentMatchAt(0),n=t.fillBefore(e).append(e);e=n.append(t.matchFragment(n).fillBefore(ir.empty,!0))}return e}function Hi(e,t){let n=[];for(let r=Math.min(e.depth,t.depth);r>=0;r--){let i=e.start(r);if(it.pos+(t.depth-r)||e.node(r).type.spec.isolating||t.node(r).type.spec.isolating)break;(i==t.start(r)||r==e.depth&&r==t.depth&&e.parent.inlineContent&&t.parent.inlineContent&&r&&t.start(r-1)==i-1)&&n.push(r)}return n}class Ui extends gi{constructor(e,t,n){super(),this.pos=e,this.attr=t,this.value=n}apply(e){let t=e.nodeAt(this.pos);if(!t)return bi.fail("No node at attribute step's position");let n=Object.create(null);for(let e in t.attrs)n[e]=t.attrs[e];n[this.attr]=this.value;let r=t.type.create(n,null,t.marks);return bi.fromReplace(e,this.pos,this.pos+1,new hr(ir.from(r),0,t.isLeaf?0:1))}getMap(){return pi.empty}invert(e){return new Ui(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new Ui(t.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if("number"!=typeof t.pos||"string"!=typeof t.attr)throw new RangeError("Invalid input for AttrStep.fromJSON");return new Ui(t.pos,t.attr,t.value)}}gi.jsonID("attr",Ui);class Wi extends gi{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let n in e.attrs)t[n]=e.attrs[n];t[this.attr]=this.value;let n=e.type.create(t,e.content,e.marks);return bi.ok(n)}getMap(){return pi.empty}invert(e){return new Wi(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,t){if("string"!=typeof t.attr)throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new Wi(t.attr,t.value)}}gi.jsonID("docAttr",Wi);let Ki=class extends Error{};Ki=function e(t){let n=Error.call(this,t);return n.__proto__=e.prototype,n},(Ki.prototype=Object.create(Error.prototype)).constructor=Ki,Ki.prototype.name="TransformError";class Ji{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new fi}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new Ki(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,n=hr.empty){let r=Fi(this.doc,e,t,n);return r&&this.step(r),this}replaceWith(e,t,n){return this.replace(e,t,new hr(ir.from(n),0,0))}delete(e,t){return this.replace(e,t,hr.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,n){return function(e,t,n,r){if(!r.size)return e.deleteRange(t,n);let i=e.doc.resolve(t),s=e.doc.resolve(n);if(Bi(i,s,r))return e.step(new Ci(t,n,r));let o=Hi(i,e.doc.resolve(n));0==o[o.length-1]&&o.pop();let a=-(i.depth+1);o.unshift(a);for(let e=i.depth,t=i.pos-1;e>0;e--,t--){let n=i.node(e).type.spec;if(n.defining||n.definingAsContext||n.isolating)break;o.indexOf(e)>-1?a=e:i.before(e)==t&&o.splice(1,0,-e)}let l=o.indexOf(a),c=[],h=r.openStart;for(let e=r.content,t=0;;t++){let n=e.firstChild;if(c.push(n),t==r.openStart)break;e=n.content}for(let e=h-1;e>=0;e--){let t=c[e],n=(u=t.type).spec.defining||u.spec.definingForContent;if(n&&!t.sameMarkup(i.node(Math.abs(a)-1)))h=e;else if(n||!t.type.isTextblock)break}var u;for(let t=r.openStart;t>=0;t--){let a=(t+h+1)%(r.openStart+1),u=c[a];if(u)for(let t=0;t=0&&(e.replace(t,n,r),!(e.steps.length>d));a--){let e=o[a];e<0||(t=i.before(e),n=s.after(e))}}(this,e,t,n),this}replaceRangeWith(e,t,n){return function(e,t,n,r){if(!r.isInline&&t==n&&e.doc.resolve(t).parent.content.size){let i=function(e,t,n){let r=e.resolve(t);if(r.parent.canReplaceWith(r.index(),r.index(),n))return t;if(0==r.parentOffset)for(let e=r.depth-1;e>=0;e--){let t=r.index(e);if(r.node(e).canReplaceWith(t,t,n))return r.before(e+1);if(t>0)return null}if(r.parentOffset==r.parent.content.size)for(let e=r.depth-1;e>=0;e--){let t=r.indexAfter(e);if(r.node(e).canReplaceWith(t,t,n))return r.after(e+1);if(t0&&(o||r.node(n-1).canReplace(r.index(n-1),i.indexAfter(n-1))))return e.delete(r.before(n),i.after(n))}for(let s=1;s<=r.depth&&s<=i.depth;s++)if(t-r.start(s)==r.depth-s&&n>r.end(s)&&i.end(s)-n!=i.depth-s&&r.start(s-1)==i.start(s-1)&&r.node(s-1).canReplace(r.index(s-1),i.index(s-1)))return e.delete(r.before(s),n);e.delete(t,n)}(this,e,t),this}lift(e,t){return function(e,t,n){let{$from:r,$to:i,depth:s}=t,o=r.before(s+1),a=i.after(s+1),l=o,c=a,h=ir.empty,u=0;for(let e=s,t=!1;e>n;e--)t||r.index(e)>0?(t=!0,h=ir.from(r.node(e).copy(h)),u++):l--;let d=ir.empty,p=0;for(let e=s,t=!1;e>n;e--)t||i.after(e+1)=0;e--){if(r.size){let t=n[e].type.contentMatch.matchFragment(r);if(!t||!t.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}r=ir.from(n[e].type.create(n[e].attrs,r))}let i=t.start,s=t.end;e.step(new Ei(i,s,i,s,new hr(r,0,0),n.length,!0))}(this,e,t),this}setBlockType(e,t=e,n,r=null){return function(e,t,n,r,i){if(!r.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let s=e.steps.length;e.doc.nodesBetween(t,n,((t,n)=>{let o="function"==typeof i?i(t):i;if(t.isTextblock&&!t.hasMarkup(r,o)&&function(e,t,n){let r=e.resolve(t),i=r.index();return r.parent.canReplaceWith(i,i+1,n)}(e.doc,e.mapping.slice(s).map(n),r)){let i=null;if(r.schema.linebreakReplacement){let e="pre"==r.whitespace,t=!!r.contentMatch.matchType(r.schema.linebreakReplacement);e&&!t?i=!1:!e&&t&&(i=!0)}!1===i&&Ni(e,t,n,s),_i(e,e.mapping.slice(s).map(n,1),r,void 0,null===i);let a=e.mapping.slice(s),l=a.map(n,1),c=a.map(n+t.nodeSize,1);return e.step(new Ei(l,c,l+1,c-1,new hr(ir.from(r.create(o,null,t.marks)),0,0),1,!0)),!0===i&&Oi(e,t,n,s),!1}}))}(this,e,t,n,r),this}setNodeMarkup(e,t,n=null,r){return function(e,t,n,r,i){let s=e.doc.nodeAt(t);if(!s)throw new RangeError("No node at given position");n||(n=s.type);let o=n.create(r,null,i||s.marks);if(s.isLeaf)return e.replaceWith(t,t+s.nodeSize,o);if(!n.validContent(s.content))throw new RangeError("Invalid content for node type "+n.name);e.step(new Ei(t,t+s.nodeSize,t+1,t+s.nodeSize-1,new hr(ir.from(o),0,0),1,!0))}(this,e,t,n,r),this}setNodeAttribute(e,t,n){return this.step(new Ui(e,t,n)),this}setDocAttribute(e,t){return this.step(new Wi(e,t)),this}addNodeMark(e,t){return this.step(new wi(e,t)),this}removeNodeMark(e,t){if(!(t instanceof lr)){let n=this.doc.nodeAt(e);if(!n)throw new RangeError("No node at position "+e);if(!(t=t.isInSet(n.marks)))return this}return this.step(new xi(e,t)),this}split(e,t=1,n){return function(e,t,n=1,r){let i=e.doc.resolve(t),s=ir.empty,o=ir.empty;for(let e=i.depth,t=i.depth-n,a=n-1;e>t;e--,a--){s=ir.from(i.node(e).copy(s));let t=r&&r[a];o=ir.from(t?t.type.create(t.attrs,o):i.node(e).copy(o))}e.step(new Ci(t,t,new hr(s.append(o),n,n),!0))}(this,e,t,n),this}addMark(e,t,n){return function(e,t,n,r){let i,s,o=[],a=[];e.doc.nodesBetween(t,n,((e,l,c)=>{if(!e.isInline)return;let h=e.marks;if(!r.isInSet(h)&&c.type.allowsMarkType(r.type)){let c=Math.max(l,t),u=Math.min(l+e.nodeSize,n),d=r.addToSet(h);for(let e=0;ee.step(t))),a.forEach((t=>e.step(t)))}(this,e,t,n),this}removeMark(e,t,n){return function(e,t,n,r){let i=[],s=0;e.doc.nodesBetween(t,n,((e,o)=>{if(!e.isInline)return;s++;let a=null;if(r instanceof Wr){let t,n=e.marks;for(;t=r.isInSet(n);)(a||(a=[])).push(t),n=t.removeFromSet(n)}else r?r.isInSet(e.marks)&&(a=[r]):a=e.marks;if(a&&a.length){let r=Math.min(o+e.nodeSize,n);for(let e=0;ee.step(new vi(t.from,t.to,t.style))))}(this,e,t,n),this}clearIncompatible(e,t,n){return _i(this,e,t,n),this}}const Gi=Object.create(null);class Zi{constructor(e,t,n){this.$anchor=e,this.$head=t,this.ranges=n||[new Xi(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t=0;r--){let i=t<0?as(e.node(0),e.node(r),e.before(r+1),e.index(r),t,n):as(e.node(0),e.node(r),e.after(r+1),e.index(r)+1,t,n);if(i)return i}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new is(e.node(0))}static atStart(e){return as(e,e,0,0,1)||new is(e)}static atEnd(e){return as(e,e,e.content.size,e.childCount,-1)||new is(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");let n=Gi[t.type];if(!n)throw new RangeError(`No selection type ${t.type} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in Gi)throw new RangeError("Duplicate use of selection JSON ID "+e);return Gi[e]=t,t.prototype.jsonID=e,t}getBookmark(){return es.between(this.$anchor,this.$head).getBookmark()}}Zi.prototype.visible=!0;class Xi{constructor(e,t){this.$from=e,this.$to=t}}let Qi=!1;function Yi(e){Qi||e.parent.inlineContent||(Qi=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+e.parent.type.name+")"))}class es extends Zi{constructor(e,t=e){Yi(e),Yi(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let n=e.resolve(t.map(this.head));if(!n.parent.inlineContent)return Zi.near(n);let r=e.resolve(t.map(this.anchor));return new es(r.parent.inlineContent?r:n,n)}replace(e,t=hr.empty){if(super.replace(e,t),t==hr.empty){let t=this.$from.marksAcross(this.$to);t&&e.ensureMarks(t)}}eq(e){return e instanceof es&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new ts(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if("number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid input for TextSelection.fromJSON");return new es(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,n=t){let r=e.resolve(t);return new this(r,n==t?r:e.resolve(n))}static between(e,t,n){let r=e.pos-t.pos;if(n&&!r||(n=r>=0?1:-1),!t.parent.inlineContent){let e=Zi.findFrom(t,n,!0)||Zi.findFrom(t,-n,!0);if(!e)return Zi.near(t,n);t=e.$head}return e.parent.inlineContent||(0==r||(e=(Zi.findFrom(e,-n,!0)||Zi.findFrom(e,n,!0)).$anchor).posnew is(e)};function as(e,t,n,r,i,s=!1){if(t.inlineContent)return es.create(e,n);for(let o=r-(i>0?0:1);i>0?o=0;o+=i){let r=t.child(o);if(r.isAtom){if(!s&&ns.isSelectable(r))return ns.create(e,n-(i<0?r.nodeSize:0))}else{let t=as(e,r,n+i,i<0?r.childCount:0,i,s);if(t)return t}n+=r.nodeSize*i}return null}function ls(e,t,n){let r=e.steps.length-1;if(r{null==i&&(i=r)})),e.setSelection(Zi.near(e.doc.resolve(i),n)))}class cs extends Ji{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=2,this}ensureMarks(e){return lr.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(2&this.updated)>0}addStep(e,t){super.addStep(e,t),this.updated=-3&this.updated,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let n=this.selection;return t&&(e=e.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||lr.none))),n.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,n){let r=this.doc.type.schema;if(null==t)return e?this.replaceSelectionWith(r.text(e),!0):this.deleteSelection();{if(null==n&&(n=t),n=null==n?t:n,!e)return this.deleteRange(t,n);let i=this.storedMarks;if(!i){let e=this.doc.resolve(t);i=n==t?e.marks():e.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(t,n,r.text(e,i)),this.selection.empty||this.setSelection(Zi.near(this.selection.$to)),this}}setMeta(e,t){return this.meta["string"==typeof e?e:e.key]=t,this}getMeta(e){return this.meta["string"==typeof e?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=4,this}get scrolledIntoView(){return(4&this.updated)>0}}function hs(e,t){return t&&e?e.bind(t):e}class us{constructor(e,t,n){this.name=e,this.init=hs(t.init,n),this.apply=hs(t.apply,n)}}const ds=[new us("doc",{init:e=>e.doc||e.schema.topNodeType.createAndFill(),apply:e=>e.doc}),new us("selection",{init:(e,t)=>e.selection||Zi.atStart(t.doc),apply:e=>e.selection}),new us("storedMarks",{init:e=>e.storedMarks||null,apply:(e,t,n,r)=>r.selection.$cursor?e.storedMarks:null}),new us("scrollToSelection",{init:()=>0,apply:(e,t)=>e.scrolledIntoView?t+1:t})];class ps{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=ds.slice(),t&&t.forEach((e=>{if(this.pluginsByKey[e.key])throw new RangeError("Adding different instances of a keyed plugin ("+e.key+")");this.plugins.push(e),this.pluginsByKey[e.key]=e,e.spec.state&&this.fields.push(new us(e.key,e.spec.state,e))}))}}class fs{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let n=0;ne.toJSON()))),e&&"object"==typeof e)for(let n in e){if("doc"==n||"selection"==n)throw new RangeError("The JSON fields `doc` and `selection` are reserved");let r=e[n],i=r.spec.state;i&&i.toJSON&&(t[n]=i.toJSON.call(r,this[r.key]))}return t}static fromJSON(e,t,n){if(!t)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let r=new ps(e.schema,e.plugins),i=new fs(r);return r.fields.forEach((r=>{if("doc"==r.name)i.doc=Dr.fromJSON(e.schema,t.doc);else if("selection"==r.name)i.selection=Zi.fromJSON(i.doc,t.selection);else if("storedMarks"==r.name)t.storedMarks&&(i.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(n)for(let s in n){let o=n[s],a=o.spec.state;if(o.key==r.name&&a&&a.fromJSON&&Object.prototype.hasOwnProperty.call(t,s))return void(i[r.name]=a.fromJSON.call(o,e,t[s],i))}i[r.name]=r.init(e,i)}})),i}}function ms(e,t,n){for(let r in e){let i=e[r];i instanceof Function?i=i.bind(t):"handleDOMEvents"==r&&(i=ms(i,t,{})),n[r]=i}return n}class gs{constructor(e){this.spec=e,this.props={},e.props&&ms(e.props,this,this.props),this.key=e.key?e.key.key:ys("plugin")}getState(e){return e[this.key]}}const bs=Object.create(null);function ys(e){return e in bs?e+"$"+ ++bs[e]:(bs[e]=0,e+"$")}class ks{constructor(e="key"){this.key=ys(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}}class vs{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(0==this.eventCount)return null;let n,r,i=this.items.length;for(;;i--)if(this.items.get(i-1).selection){--i;break}t&&(n=this.remapping(i,this.items.length),r=n.maps.length);let s,o,a=e.tr,l=[],c=[];return this.items.forEach(((e,t)=>{if(!e.step)return n||(n=this.remapping(i,t+1),r=n.maps.length),r--,void c.push(e);if(n){c.push(new ws(e.map));let t,i=e.step.map(n.slice(r));i&&a.maybeStep(i).doc&&(t=a.mapping.maps[a.mapping.maps.length-1],l.push(new ws(t,void 0,void 0,l.length+c.length))),r--,t&&n.appendMap(t,r)}else a.maybeStep(e.step);return e.selection?(s=n?e.selection.map(n.slice(r)):e.selection,o=new vs(this.items.slice(0,i).append(c.reverse().concat(l)),this.eventCount-1),!1):void 0}),this.items.length,0),{remaining:o,transform:a,selection:s}}addTransform(e,t,n,r){let i=[],s=this.eventCount,o=this.items,a=!r&&o.length?o.get(o.length-1):null;for(let n=0;nCs&&(o=function(e,t){let n;return e.forEach(((e,r)=>{if(e.selection&&0==t--)return n=r,!1})),e.slice(n)}(o,l),s-=l),new vs(o.append(i),s)}remapping(e,t){let n=new fi;return this.items.forEach(((t,r)=>{let i=null!=t.mirrorOffset&&r-t.mirrorOffset>=e?n.maps.length-t.mirrorOffset:void 0;n.appendMap(t.map,i)}),e,t),n}addMaps(e){return 0==this.eventCount?this:new vs(this.items.append(e.map((e=>new ws(e)))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;let n=[],r=Math.max(0,this.items.length-t),i=e.mapping,s=e.steps.length,o=this.eventCount;this.items.forEach((e=>{e.selection&&o--}),r);let a=t;this.items.forEach((t=>{let r=i.getMirror(--a);if(null==r)return;s=Math.min(s,r);let l=i.maps[r];if(t.step){let s=e.steps[r].invert(e.docs[r]),c=t.selection&&t.selection.map(i.slice(a+1,r));c&&o++,n.push(new ws(l,s,c))}else n.push(new ws(l))}),r);let l=[];for(let e=t;e500&&(h=h.compress(this.items.length-n.length)),h}emptyItemCount(){let e=0;return this.items.forEach((t=>{t.step||e++})),e}compress(e=this.items.length){let t=this.remapping(0,e),n=t.maps.length,r=[],i=0;return this.items.forEach(((s,o)=>{if(o>=e)r.push(s),s.selection&&i++;else if(s.step){let e=s.step.map(t.slice(n)),o=e&&e.getMap();if(n--,o&&t.appendMap(o,n),e){let a=s.selection&&s.selection.map(t.slice(n));a&&i++;let l,c=new ws(o.invert(),e,a),h=r.length-1;(l=r.length&&r[h].merge(c))?r[h]=l:r.push(c)}}else s.map&&n--}),this.items.length,0),new vs(tr.from(r.reverse()),i)}}vs.empty=new vs(tr.empty,0);class ws{constructor(e,t,n,r){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=r}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new ws(t.getMap().invert(),t,this.selection)}}}class xs{constructor(e,t,n,r,i){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=r,this.prevComposition=i}}const Cs=20;function Es(e){let t=[];for(let n=e.length-1;n>=0&&0==t.length;n--)e[n].forEach(((e,n,r,i)=>t.push(r,i)));return t}function Ss(e,t){if(!e)return null;let n=[];for(let r=0;rnew xs(vs.empty,vs.empty,null,0,-1),apply:(t,n,r)=>function(e,t,n,r){let i,s=n.getMeta(Ms);if(s)return s.historyState;n.getMeta(Ts)&&(e=new xs(e.done,e.undone,null,0,-1));let o=n.getMeta("appendedTransaction");if(0==n.steps.length)return e;if(o&&o.getMeta(Ms))return o.getMeta(Ms).redo?new xs(e.done.addTransform(n,void 0,r,Ds(t)),e.undone,Es(n.mapping.maps),e.prevTime,e.prevComposition):new xs(e.done,e.undone.addTransform(n,void 0,r,Ds(t)),null,e.prevTime,e.prevComposition);if(!1===n.getMeta("addToHistory")||o&&!1===o.getMeta("addToHistory"))return(i=n.getMeta("rebased"))?new xs(e.done.rebased(n,i),e.undone.rebased(n,i),Ss(e.prevRanges,n.mapping),e.prevTime,e.prevComposition):new xs(e.done.addMaps(n.mapping.maps),e.undone.addMaps(n.mapping.maps),Ss(e.prevRanges,n.mapping),e.prevTime,e.prevComposition);{let i=n.getMeta("composition"),s=0==e.prevTime||!o&&e.prevComposition!=i&&(e.prevTime<(n.time||0)-r.newGroupDelay||!function(e,t){if(!t)return!1;if(!e.docChanged)return!0;let n=!1;return e.mapping.maps[0].forEach(((e,r)=>{for(let i=0;i=t[i]&&(n=!0)})),n}(n,e.prevRanges)),a=o?Ss(e.prevRanges,n.mapping):Es(n.mapping.maps);return new xs(e.done.addTransform(n,s?t.selection.getBookmark():void 0,r,Ds(t)),vs.empty,a,n.time,null==i?e.prevComposition:i)}}(n,r,t,e)},config:e,props:{handleDOMEvents:{beforeinput(e,t){let n=t.inputType,r="historyUndo"==n?Ls:"historyRedo"==n?Is:null;return!!r&&(t.preventDefault(),r(e.state,e.dispatch))}}}})}function Ns(e,t){return(n,r)=>{let i=Ms.getState(n);if(!i||0==(e?i.undone:i.done).eventCount)return!1;if(r){let s=function(e,t,n){let r=Ds(t),i=Ms.get(t).spec.config,s=(n?e.undone:e.done).popEvent(t,r);if(!s)return null;let o=s.selection.resolve(s.transform.doc),a=(n?e.done:e.undone).addTransform(s.transform,t.selection.getBookmark(),i,r),l=new xs(n?a:s.remaining,n?s.remaining:a,null,0,-1);return s.transform.setSelection(o).setMeta(Ms,{redo:n,historyState:l})}(i,n,e);s&&r(t?s.scrollIntoView():s)}return!0}}const Ls=Ns(!1,!0),Is=Ns(!0,!0);Ns(!1,!1),Ns(!0,!1);const Fs=function(e){for(var t=0;;t++)if(!(e=e.previousSibling))return t},Bs=function(e){let t=e.assignedSlot||e.parentNode;return t&&11==t.nodeType?t.host:t};let Ps=null;const Rs=function(e,t,n){let r=Ps||(Ps=document.createRange());return r.setEnd(e,null==n?e.nodeValue.length:n),r.setStart(e,t||0),r},zs=function(e,t,n,r){return n&&(Vs(e,t,n,r,-1)||Vs(e,t,n,r,1))},$s=/^(img|br|input|textarea|hr)$/i;function Vs(e,t,n,r,i){for(;;){if(e==n&&t==r)return!0;if(t==(i<0?0:qs(e))){let n=e.parentNode;if(!n||1!=n.nodeType||js(e)||$s.test(e.nodeName)||"false"==e.contentEditable)return!1;t=Fs(e)+(i<0?0:1),e=n}else{if(1!=e.nodeType)return!1;if("false"==(e=e.childNodes[t+(i<0?-1:0)]).contentEditable)return!1;t=i<0?qs(e):0}}}function qs(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function js(e){let t;for(let n=e;n&&!(t=n.pmViewDesc);n=n.parentNode);return t&&t.node&&t.node.isBlock&&(t.dom==e||t.contentDOM==e)}const Hs=function(e){return e.focusNode&&zs(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)};function Us(e,t){let n=document.createEvent("Event");return n.initEvent("keydown",!0,!0),n.keyCode=e,n.key=n.code=t,n}const Ws="undefined"!=typeof navigator?navigator:null,Ks="undefined"!=typeof document?document:null,Js=Ws&&Ws.userAgent||"",Gs=/Edge\/(\d+)/.exec(Js),Zs=/MSIE \d/.exec(Js),Xs=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Js),Qs=!!(Zs||Xs||Gs),Ys=Zs?document.documentMode:Xs?+Xs[1]:Gs?+Gs[1]:0,eo=!Qs&&/gecko\/(\d+)/i.test(Js);eo&&(/Firefox\/(\d+)/.exec(Js)||[0,0])[1];const to=!Qs&&/Chrome\/(\d+)/.exec(Js),no=!!to,ro=to?+to[1]:0,io=!Qs&&!!Ws&&/Apple Computer/.test(Ws.vendor),so=io&&(/Mobile\/\w+/.test(Js)||!!Ws&&Ws.maxTouchPoints>2),oo=so||!!Ws&&/Mac/.test(Ws.platform),ao=!!Ws&&/Win/.test(Ws.platform),lo=/Android \d/.test(Js),co=!!Ks&&"webkitFontSmoothing"in Ks.documentElement.style,ho=co?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function uo(e){let t=e.defaultView&&e.defaultView.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:e.documentElement.clientWidth,top:0,bottom:e.documentElement.clientHeight}}function po(e,t){return"number"==typeof e?e:e[t]}function fo(e){let t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,r=t.height/e.offsetHeight||1;return{left:t.left,right:t.left+e.clientWidth*n,top:t.top,bottom:t.top+e.clientHeight*r}}function mo(e,t,n){let r=e.someProp("scrollThreshold")||0,i=e.someProp("scrollMargin")||5,s=e.dom.ownerDocument;for(let o=n||e.dom;o;o=Bs(o)){if(1!=o.nodeType)continue;let e=o,n=e==s.body,a=n?uo(s):fo(e),l=0,c=0;if(t.topa.bottom-po(r,"bottom")&&(c=t.bottom-t.top>a.bottom-a.top?t.top+po(i,"top")-a.top:t.bottom-a.bottom+po(i,"bottom")),t.lefta.right-po(r,"right")&&(l=t.right-a.right+po(i,"right")),l||c)if(n)s.defaultView.scrollBy(l,c);else{let n=e.scrollLeft,r=e.scrollTop;c&&(e.scrollTop+=c),l&&(e.scrollLeft+=l);let i=e.scrollLeft-n,s=e.scrollTop-r;t={left:t.left-i,top:t.top-s,right:t.right-i,bottom:t.bottom-s}}if(n||/^(fixed|sticky)$/.test(getComputedStyle(o).position))break}}function go(e){let t=[],n=e.ownerDocument;for(let r=e;r&&(t.push({dom:r,top:r.scrollTop,left:r.scrollLeft}),e!=n);r=Bs(r));return t}function bo(e,t){for(let n=0;n=c){l=Math.max(p.bottom,l),c=Math.min(p.top,c);let e=p.left>t.left?p.left-t.left:p.right=(p.left+p.right)/2?1:0));continue}}else p.top>t.top&&!i&&p.left<=t.left&&p.right>=t.left&&(i=h,s={left:Math.max(p.left,Math.min(p.right,t.left)),top:p.top});!n&&(t.left>=p.right&&t.top>=p.top||t.left>=p.left&&t.top>=p.bottom)&&(a=u+1)}}return!n&&i&&(n=i,r=s,o=0),n&&3==n.nodeType?function(e,t){let n=e.nodeValue.length,r=document.createRange();for(let i=0;i=(n.left+n.right)/2?1:0)}}return{node:e,offset:0}}(n,r):!n||o&&1==n.nodeType?{node:e,offset:a}:ko(n,r)}function vo(e,t){return e.left>=t.left-1&&e.left<=t.right+1&&e.top>=t.top-1&&e.top<=t.bottom+1}function wo(e,t,n){let r=e.childNodes.length;if(r&&n.topt.top&&i++}let r;co&&i&&1==n.nodeType&&1==(r=n.childNodes[i-1]).nodeType&&"false"==r.contentEditable&&r.getBoundingClientRect().top>=t.top&&i--,n==e.dom&&i==n.childNodes.length-1&&1==n.lastChild.nodeType&&t.top>n.lastChild.getBoundingClientRect().bottom?o=e.state.doc.content.size:0!=i&&1==n.nodeType&&"BR"==n.childNodes[i-1].nodeName||(o=function(e,t,n,r){let i=-1;for(let n=t,s=!1;n!=e.dom;){let t,o=e.docView.nearestDesc(n,!0);if(!o)return null;if(1==o.dom.nodeType&&(o.node.isBlock&&o.parent||!o.contentDOM)&&((t=o.dom.getBoundingClientRect()).width||t.height)&&(o.node.isBlock&&o.parent&&(!s&&t.left>r.left||t.top>r.top?i=o.posBefore:(!s&&t.right-1?i:e.docView.posFromDOM(t,n,-1)}(e,n,i,t))}null==o&&(o=function(e,t,n){let{node:r,offset:i}=ko(t,n),s=-1;if(1==r.nodeType&&!r.firstChild){let e=r.getBoundingClientRect();s=e.left!=e.right&&n.left>(e.left+e.right)/2?1:-1}return e.docView.posFromDOM(r,i,s)}(e,a,t));let l=e.docView.nearestDesc(a,!0);return{pos:o,inside:l?l.posAtStart-l.border:-1}}function Co(e){return e.top=0&&i==r.nodeValue.length?(e--,s=1):n<0?e--:t++,Ao(Eo(Rs(r,e,t),s),s<0)}{let e=Eo(Rs(r,i,i),n);if(eo&&i&&/\s/.test(r.nodeValue[i-1])&&i=0)}if(null==s&&i&&(n<0||i==qs(r))){let e=r.childNodes[i-1],t=3==e.nodeType?Rs(e,qs(e)-(o?0:1)):1!=e.nodeType||"BR"==e.nodeName&&e.nextSibling?null:e;if(t)return Ao(Eo(t,1),!1)}if(null==s&&i=0)}function Ao(e,t){if(0==e.width)return e;let n=t?e.left:e.right;return{top:e.top,bottom:e.bottom,left:n,right:n}}function Do(e,t){if(0==e.height)return e;let n=t?e.top:e.bottom;return{top:n,bottom:n,left:e.left,right:e.right}}function Mo(e,t,n){let r=e.state,i=e.root.activeElement;r!=t&&e.updateState(t),i!=e.dom&&e.focus();try{return n()}finally{r!=t&&e.updateState(r),i!=e.dom&&i&&i.focus()}}const To=/[\u0590-\u08ac]/;let Oo=null,No=null,Lo=!1;class Io{constructor(e,t,n,r){this.parent=e,this.children=t,this.dom=n,this.contentDOM=r,this.dirty=0,n.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,n){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;tFs(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))r=2&e.compareDocumentPosition(this.contentDOM);else if(this.dom.firstChild){if(0==t)for(let t=e;;t=t.parentNode){if(t==this.dom){r=!1;break}if(t.previousSibling)break}if(null==r&&t==e.childNodes.length)for(let t=e;;t=t.parentNode){if(t==this.dom){r=!0;break}if(t.nextSibling)break}}return(null==r?n>0:r)?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let n=!0,r=e;r;r=r.parentNode){let i,s=this.getDesc(r);if(s&&(!t||s.node)){if(!n||!(i=s.nodeDOM)||(1==i.nodeType?i.contains(1==e.nodeType?e:e.parentNode):i==e))return s;n=!1}}}getDesc(e){let t=e.pmViewDesc;for(let e=t;e;e=e.parent)if(e==this)return t}posFromDOM(e,t,n){for(let r=e;r;r=r.parentNode){let i=this.getDesc(r);if(i)return i.localPosFromDOM(e,t,n)}return-1}descAt(e){for(let t=0,n=0;te||i instanceof Vo){r=e-t;break}t=s}if(r)return this.children[n].domFromPos(r-this.children[n].border,t);for(let e;n&&!(e=this.children[n-1]).size&&e instanceof Fo&&e.side>=0;n--);if(t<=0){let e,r=!0;for(;e=n?this.children[n-1]:null,e&&e.dom.parentNode!=this.contentDOM;n--,r=!1);return e&&t&&r&&!e.border&&!e.domAtom?e.domFromPos(e.size,t):{node:this.contentDOM,offset:e?Fs(e.dom)+1:0}}{let e,r=!0;for(;e=n=i&&t<=a-n.border&&n.node&&n.contentDOM&&this.contentDOM.contains(n.contentDOM))return n.parseRange(e,t,i);e=s;for(let t=o;t>0;t--){let n=this.children[t-1];if(n.size&&n.dom.parentNode==this.contentDOM&&!n.emptyChildAt(1)){r=Fs(n.dom)+1;break}e-=n.size}-1==r&&(r=0)}if(r>-1&&(a>t||o==this.children.length-1)){t=a;for(let e=o+1;ea&&st){let e=o;o=a,a=e}let n=document.createRange();n.setEnd(a.node,a.offset),n.setStart(o.node,o.offset),l.removeAllRanges(),l.addRange(n)}}ignoreMutation(e){return!this.contentDOM&&"selection"!=e.type}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let n=0,r=0;r=n:en){let r=n+i.border,o=s-i.border;if(e>=r&&t<=o)return this.dirty=e==n||t==s?2:1,void(e!=r||t!=o||!i.contentLost&&i.dom.parentNode==this.contentDOM?i.markDirty(e-r,t-r):i.dirty=3);i.dirty=i.dom!=i.contentDOM||i.dom.parentNode!=this.contentDOM||i.children.length?3:2}n=s}this.dirty=2}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let n=1==e?2:1;t.dirtyi?i.parent?i.parent.posBeforeChild(i):void 0:r))),!t.type.spec.raw){if(1!=s.nodeType){let e=document.createElement("span");e.appendChild(s),s=e}s.contentEditable="false",s.classList.add("ProseMirror-widget")}super(e,[],s,null),this.widget=t,this.widget=t,i=this}matchesWidget(e){return 0==this.dirty&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return!!t&&t(e)}ignoreMutation(e){return"selection"!=e.type||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get side(){return this.widget.type.side}}class Bo extends Io{constructor(e,t,n,r){super(e,[],t,null),this.textDOM=n,this.text=r}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return"characterData"===e.type&&e.target.nodeValue==e.oldValue}}class Po extends Io{constructor(e,t,n,r,i){super(e,[],n,r),this.mark=t,this.spec=i}static create(e,t,n,r){let i=r.nodeViews[t.type.name],s=i&&i(t,r,n);return s&&s.dom||(s=si.renderSpec(document,t.type.spec.toDOM(t,n),null,t.attrs)),new Po(e,t,s.dom,s.contentDOM||s.dom,s)}parseRule(){return 3&this.dirty||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return 3!=this.dirty&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),0!=this.dirty){let e=this.parent;for(;!e.node;)e=e.parent;e.dirty0&&(i=ea(i,0,e,n));for(let e=0;eo?o.parent?o.parent.posBeforeChild(o):void 0:s),n,r),c=l&&l.dom,h=l&&l.contentDOM;if(t.isText)if(c){if(3!=c.nodeType)throw new RangeError("Text must be rendered as a DOM text node")}else c=document.createTextNode(t.text);else if(!c){let e=si.renderSpec(document,t.type.spec.toDOM(t),null,t.attrs);({dom:c,contentDOM:h}=e)}h||t.isText||"BR"==c.nodeName||(c.hasAttribute("contenteditable")||(c.contentEditable="false"),t.type.spec.draggable&&(c.draggable=!0));let u=c;return c=Go(c,n,t),l?o=new qo(e,t,n,r,c,h||null,u,l,i,s+1):t.isText?new $o(e,t,n,r,c,u,i):new Ro(e,t,n,r,c,h||null,u,i,s+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if("pre"==this.node.type.whitespace&&(e.preserveWhitespace="full"),this.contentDOM)if(this.contentLost){for(let t=this.children.length-1;t>=0;t--){let n=this.children[t];if(this.dom.contains(n.dom.parentNode)){e.contentElement=n.dom.parentNode;break}}e.contentElement||(e.getContent=()=>ir.empty)}else e.contentElement=this.contentDOM;else e.getContent=()=>this.node.content;return e}matchesNode(e,t,n){return 0==this.dirty&&e.eq(this.node)&&Zo(t,this.outerDeco)&&n.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let n=this.node.inlineContent,r=t,i=e.composing?this.localCompositionInfo(e,t):null,s=i&&i.pos>-1?i:null,o=i&&i.pos<0,a=new Qo(this,s&&s.node,e);!function(e,t,n,r){let i=t.locals(e),s=0;if(0==i.length){for(let n=0;ns;)a.push(i[o++]);let f=s+d.nodeSize;if(d.isText){let e=f;o!e.inline)):a.slice(),t.forChild(s,d),p),s=f}}(this.node,this.innerDeco,((t,i,s)=>{t.spec.marks?a.syncToMarks(t.spec.marks,n,e):t.type.side>=0&&!s&&a.syncToMarks(i==this.node.childCount?lr.none:this.node.child(i).marks,n,e),a.placeWidget(t,e,r)}),((t,s,l,c)=>{let h;a.syncToMarks(t.marks,n,e),a.findNodeMatch(t,s,l,c)||o&&e.state.selection.from>r&&e.state.selection.to-1&&a.updateNodeAt(t,s,l,h,e)||a.updateNextNode(t,s,l,e,c,r)||a.addNode(t,s,l,e,r),r+=t.nodeSize})),a.syncToMarks([],n,e),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||2==this.dirty)&&(s&&this.protectLocalComposition(e,s),jo(this.contentDOM,this.children,e),so&&function(e){if("UL"==e.nodeName||"OL"==e.nodeName){let t=e.style.cssText;e.style.cssText=t+"; list-style: square !important",window.getComputedStyle(e).listStyle,e.style.cssText=t}}(this.dom))}localCompositionInfo(e,t){let{from:n,to:r}=e.state.selection;if(!(e.state.selection instanceof es)||nt+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let e=i.nodeValue,s=function(e,t,n,r){for(let i=0,s=0;i=n){if(s>=r&&l.slice(r-t.length-a,r-a)==t)return r-t.length;let e=a=0&&e+t.length+a>=n)return a+e;if(n==r&&l.length>=r+t.length-a&&l.slice(r-a,r-a+t.length)==t)return r}}return-1}(this.node.content,e,n-t,r-t);return s<0?null:{node:i,pos:s,text:e}}return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:t,pos:n,text:r}){if(this.getDesc(t))return;let i=t;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let s=new Bo(this,i,t,r);e.input.compositionNodes.push(s),this.children=ea(this.children,n,n+r.length,e,s)}update(e,t,n,r){return!(3==this.dirty||!e.sameMarkup(this.node)||(this.updateInner(e,t,n,r),0))}updateInner(e,t,n,r){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=0}updateOuterDeco(e){if(Zo(e,this.outerDeco))return;let t=1!=this.nodeDOM.nodeType,n=this.dom;this.dom=Ko(this.dom,this.nodeDOM,Wo(this.outerDeco,this.node,t),Wo(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){1==this.nodeDOM.nodeType&&this.nodeDOM.classList.add("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||(this.dom.draggable=!0)}deselectNode(){1==this.nodeDOM.nodeType&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||this.dom.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}}function zo(e,t,n,r,i){Go(r,t,e);let s=new Ro(void 0,e,t,n,r,r,r,i,0);return s.contentDOM&&s.updateChildren(i,0),s}class $o extends Ro{constructor(e,t,n,r,i,s,o){super(e,t,n,r,i,null,s,o,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,n,r){return!(3==this.dirty||0!=this.dirty&&!this.inParent()||!e.sameMarkup(this.node)||(this.updateOuterDeco(t),0==this.dirty&&e.text==this.node.text||e.text==this.nodeDOM.nodeValue||(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=0,0))}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,n){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,n)}ignoreMutation(e){return"characterData"!=e.type&&"selection"!=e.type}slice(e,t,n){let r=this.node.cut(e,t),i=document.createTextNode(r.text);return new $o(this.parent,r,this.outerDeco,this.innerDeco,i,i,n)}markDirty(e,t){super.markDirty(e,t),this.dom==this.nodeDOM||0!=e&&t!=this.nodeDOM.nodeValue.length||(this.dirty=3)}get domAtom(){return!1}isText(e){return this.node.text==e}}class Vo extends Io{parseRule(){return{ignore:!0}}matchesHack(e){return 0==this.dirty&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return"IMG"==this.dom.nodeName}}class qo extends Ro{constructor(e,t,n,r,i,s,o,a,l,c){super(e,t,n,r,i,s,o,l,c),this.spec=a}update(e,t,n,r){if(3==this.dirty)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,t,n);return i&&this.updateInner(e,t,n,r),i}return!(!this.contentDOM&&!e.isLeaf)&&super.update(e,t,n,r)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,n,r){this.spec.setSelection?this.spec.setSelection(e,t,n.root):super.setSelection(e,t,n,r)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return!!this.spec.stopEvent&&this.spec.stopEvent(e)}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function jo(e,t,n){let r=e.firstChild,i=!1;for(let s=0;s0;){let a;for(;;)if(r){let e=n.children[r-1];if(!(e instanceof Po)){a=e,r--;break}n=e,r=e.children.length}else{if(n==t)break e;r=n.parent.children.indexOf(n),n=n.parent}let l=a.node;if(l){if(l!=e.child(i-1))break;--i,s.set(a,i),o.push(a)}}return{index:i,matched:s,matches:o.reverse()}}(e.node.content,e)}destroyBetween(e,t){if(e!=t){for(let n=e;n>1,s=Math.min(i,e.length);for(;r-1)r>this.index&&(this.changed=!0,this.destroyBetween(this.index,r)),this.top=this.top.children[this.index];else{let r=Po.create(this.top,e[i],t,n);this.top.children.splice(this.index,0,r),this.top=r,this.changed=!0}this.index=0,i++}}findNodeMatch(e,t,n,r){let i,s=-1;if(r>=this.preMatch.index&&(i=this.preMatch.matches[r-this.preMatch.index]).parent==this.top&&i.matchesNode(e,t,n))s=this.top.children.indexOf(i,this.index);else for(let r=this.index,i=Math.min(this.top.children.length,r+5);r=n||h<=t?s.push(l):(cn&&s.push(l.slice(n-c,l.size,r)))}return s}function ta(e,t=null){let n=e.domSelectionRange(),r=e.state.doc;if(!n.focusNode)return null;let i=e.docView.nearestDesc(n.focusNode),s=i&&0==i.size,o=e.docView.posFromDOM(n.focusNode,n.focusOffset,1);if(o<0)return null;let a,l,c=r.resolve(o);if(Hs(n)){for(a=o;i&&!i.node;)i=i.parent;let e=i.node;if(i&&e.isAtom&&ns.isSelectable(e)&&i.parent&&(!e.isInline||!function(e,t,n){for(let r=0==t,i=t==qs(e);r||i;){if(e==n)return!0;let t=Fs(e);if(!(e=e.parentNode))return!1;r=r&&0==t,i=i&&t==qs(e)}}(n.focusNode,n.focusOffset,i.dom))){let e=i.posBefore;l=new ns(o==e?c:r.resolve(e))}}else{if(n instanceof e.dom.ownerDocument.defaultView.Selection&&n.rangeCount>1){let t=o,i=o;for(let r=0;r{n.anchorNode==r&&n.anchorOffset==i||(t.removeEventListener("selectionchange",e.input.hideSelectionGuard),setTimeout((()=>{na(e)&&!e.state.selection.visible||e.dom.classList.remove("ProseMirror-hideselection")}),20))})}(e))}e.domObserver.setCurSelection(),e.domObserver.connectSelection()}}const ia=io||no&&ro<63;function sa(e,t){let{node:n,offset:r}=e.docView.domFromPos(t,0),i=rr(e,t,n)))||es.between(t,n,r)}function ua(e){return!(e.editable&&!e.hasFocus())&&da(e)}function da(e){let t=e.domSelectionRange();if(!t.anchorNode)return!1;try{return e.dom.contains(3==t.anchorNode.nodeType?t.anchorNode.parentNode:t.anchorNode)&&(e.editable||e.dom.contains(3==t.focusNode.nodeType?t.focusNode.parentNode:t.focusNode))}catch(e){return!1}}function pa(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),s=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):null:i;return s&&Zi.findFrom(s,t)}function fa(e,t){return e.dispatch(e.state.tr.setSelection(t).scrollIntoView()),!0}function ma(e,t,n){let r=e.state.selection;if(!(r instanceof es)){if(r instanceof ns&&r.node.isInline)return fa(e,new es(t>0?r.$to:r.$from));{let n=pa(e.state,t);return!!n&&fa(e,n)}}if(n.indexOf("s")>-1){let{$head:n}=r,i=n.textOffset?null:t<0?n.nodeBefore:n.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let s=e.state.doc.resolve(n.pos+i.nodeSize*(t<0?-1:1));return fa(e,new es(r.$anchor,s))}if(!r.empty)return!1;if(e.endOfTextblock(t>0?"forward":"backward")){let n=pa(e.state,t);return!!(n&&n instanceof ns)&&fa(e,n)}if(!(oo&&n.indexOf("m")>-1)){let n,i=r.$head,s=i.textOffset?null:t<0?i.nodeBefore:i.nodeAfter;if(!s||s.isText)return!1;let o=t<0?i.pos-s.nodeSize:i.pos;return!!(s.isAtom||(n=e.docView.descAt(o))&&!n.contentDOM)&&(ns.isSelectable(s)?fa(e,new ns(t<0?e.state.doc.resolve(i.pos-s.nodeSize):i)):!!co&&fa(e,new es(e.state.doc.resolve(t<0?o:o+s.nodeSize))))}}function ga(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function ba(e,t){let n=e.pmViewDesc;return n&&0==n.size&&(t<0||e.nextSibling||"BR"!=e.nodeName)}function ya(e,t){return t<0?function(e){let t=e.domSelectionRange(),n=t.focusNode,r=t.focusOffset;if(!n)return;let i,s,o=!1;for(eo&&1==n.nodeType&&r0){if(1!=n.nodeType)break;{let e=n.childNodes[r-1];if(ba(e,-1))i=n,s=--r;else{if(3!=e.nodeType)break;n=e,r=n.nodeValue.length}}}else{if(ka(n))break;{let t=n.previousSibling;for(;t&&ba(t,-1);)i=n.parentNode,s=Fs(t),t=t.previousSibling;if(t)n=t,r=ga(n);else{if(n=n.parentNode,n==e.dom)break;r=0}}}o?va(e,n,r):i&&va(e,i,s)}(e):function(e){let t=e.domSelectionRange(),n=t.focusNode,r=t.focusOffset;if(!n)return;let i,s,o=ga(n);for(;;)if(r{e.state==i&&ra(e)}),50)}function wa(e,t){let n=e.state.doc.resolve(t);if(!no&&!ao&&n.parent.inlineContent){let r=e.coordsAtPos(t);if(t>n.start()){let n=e.coordsAtPos(t-1),i=(n.top+n.bottom)/2;if(i>r.top&&i1)return n.leftr.top&&i1)return n.left>r.left?"ltr":"rtl"}}return"rtl"==getComputedStyle(e.dom).direction?"rtl":"ltr"}function xa(e,t,n){let r=e.state.selection;if(r instanceof es&&!r.empty||n.indexOf("s")>-1)return!1;if(oo&&n.indexOf("m")>-1)return!1;let{$from:i,$to:s}=r;if(!i.parent.inlineContent||e.endOfTextblock(t<0?"up":"down")){let n=pa(e.state,t);if(n&&n instanceof ns)return fa(e,n)}if(!i.parent.inlineContent){let n=t<0?i:s,o=r instanceof is?Zi.near(n,t):Zi.findFrom(n,t);return!!o&&fa(e,o)}return!1}function Ca(e,t){if(!(e.state.selection instanceof es))return!0;let{$head:n,$anchor:r,empty:i}=e.state.selection;if(!n.sameParent(r))return!0;if(!i)return!1;if(e.endOfTextblock(t>0?"forward":"backward"))return!0;let s=!n.textOffset&&(t<0?n.nodeBefore:n.nodeAfter);if(s&&!s.isText){let r=e.state.tr;return t<0?r.delete(n.pos-s.nodeSize,n.pos):r.delete(n.pos,n.pos+s.nodeSize),e.dispatch(r),!0}return!1}function Ea(e,t,n){e.domObserver.stop(),t.contentEditable=n,e.domObserver.start()}function Sa(e,t){e.someProp("transformCopied",(n=>{t=n(t,e)}));let n=[],{content:r,openStart:i,openEnd:s}=t;for(;i>1&&s>1&&1==r.childCount&&1==r.firstChild.childCount;){i--,s--;let e=r.firstChild;n.push(e.type.name,e.attrs!=e.type.defaultAttrs?e.attrs:null),r=e.content}let o=e.someProp("clipboardSerializer")||si.fromSchema(e.state.schema),a=Fa(),l=a.createElement("div");l.appendChild(o.serializeFragment(r,{document:a}));let c,h=l.firstChild,u=0;for(;h&&1==h.nodeType&&(c=La[h.nodeName.toLowerCase()]);){for(let e=c.length-1;e>=0;e--){let t=a.createElement(c[e]);for(;l.firstChild;)t.appendChild(l.firstChild);l.appendChild(t),u++}h=l.firstChild}return h&&1==h.nodeType&&h.setAttribute("data-pm-slice",`${i} ${s}${u?` -${u}`:""} ${JSON.stringify(n)}`),{dom:l,text:e.someProp("clipboardTextSerializer",(n=>n(t,e)))||t.content.textBetween(0,t.content.size,"\n\n"),slice:t}}function _a(e,t,n,r,i){let s,o,a=i.parent.type.spec.code;if(!n&&!t)return null;let l=t&&(r||a||!n);if(l){if(e.someProp("transformPastedText",(n=>{t=n(t,a||r,e)})),a)return t?new hr(ir.from(e.state.schema.text(t.replace(/\r\n?/g,"\n"))),0,0):hr.empty;let n=e.someProp("clipboardTextParser",(n=>n(t,i,r,e)));if(n)o=n;else{let n=i.marks(),{schema:r}=e.state,o=si.fromSchema(r);s=document.createElement("div"),t.split(/(?:\r\n?|\n)+/).forEach((e=>{let t=s.appendChild(document.createElement("p"));e&&t.appendChild(o.serializeNode(r.text(e,n)))}))}}else e.someProp("transformPastedHTML",(t=>{n=t(n,e)})),s=function(e){let t=/^(\s*]*>)*/.exec(e);t&&(e=e.slice(t[0].length));let n,r=Fa().createElement("div"),i=/<([a-z][^>\s]+)/i.exec(e);if((n=i&&La[i[1].toLowerCase()])&&(e=n.map((e=>"<"+e+">")).join("")+e+n.map((e=>"")).reverse().join("")),r.innerHTML=function(e){let t=window.trustedTypes;return t?(Ba||(Ba=t.createPolicy("ProseMirrorClipboard",{createHTML:e=>e})),Ba.createHTML(e)):e}(e),n)for(let e=0;e0;e--){let e=s.firstChild;for(;e&&1!=e.nodeType;)e=e.nextSibling;if(!e)break;s=e}if(!o){let t=e.someProp("clipboardParser")||e.someProp("domParser")||Gr.fromSchema(e.state.schema);o=t.parseSlice(s,{preserveWhitespace:!(!l&&!h),context:i,ruleFromNode:e=>"BR"!=e.nodeName||e.nextSibling||!e.parentNode||Aa.test(e.parentNode.nodeName)?null:{ignore:!0}})}if(h)o=function(e,t){if(!e.size)return e;let n,r=e.content.firstChild.type.schema;try{n=JSON.parse(t)}catch(t){return e}let{content:i,openStart:s,openEnd:o}=e;for(let e=n.length-2;e>=0;e-=2){let t=r.nodes[n[e]];if(!t||t.hasRequiredAttrs())break;i=ir.from(t.create(n[e+1],i)),s++,o++}return new hr(i,s,o)}(Na(o,+h[1],+h[2]),h[4]);else if(o=hr.maxOpen(function(e,t){if(e.childCount<2)return e;for(let n=t.depth;n>=0;n--){let r,i=t.node(n).contentMatchAt(t.index(n)),s=[];if(e.forEach((e=>{if(!s)return;let t,n=i.findWrapping(e.type);if(!n)return s=null;if(t=s.length&&r.length&&Ma(n,r,e,s[s.length-1],0))s[s.length-1]=t;else{s.length&&(s[s.length-1]=Ta(s[s.length-1],r.length));let t=Da(e,n);s.push(t),i=i.matchType(t.type),r=n}})),s)return ir.from(s)}return e}(o.content,i),!0),o.openStart||o.openEnd){let e=0,t=0;for(let t=o.content.firstChild;e{o=t(o,e)})),o}const Aa=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function Da(e,t,n=0){for(let r=t.length-1;r>=n;r--)e=t[r].create(null,ir.from(e));return e}function Ma(e,t,n,r,i){if(i1&&(s=0),i=n&&(a=t<0?o.contentMatchAt(0).fillBefore(a,s<=i).append(a):a.append(o.contentMatchAt(o.childCount).fillBefore(ir.empty,!0))),e.replaceChild(t<0?0:e.childCount-1,o.copy(a))}function Na(e,t,n){return t{for(let n in t)e.input.eventHandlers[n]||e.dom.addEventListener(n,e.input.eventHandlers[n]=t=>ja(e,t))}))}function ja(e,t){return e.someProp("handleDOMEvents",(n=>{let r=n[t.type];return!!r&&(r(e,t)||t.defaultPrevented)}))}function Ha(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n=t.target;n!=e.dom;n=n.parentNode)if(!n||11==n.nodeType||n.pmViewDesc&&n.pmViewDesc.stopEvent(t))return!1;return!0}function Ua(e){return{left:e.clientX,top:e.clientY}}function Wa(e,t,n,r,i){if(-1==r)return!1;let s=e.state.doc.resolve(r);for(let r=s.depth+1;r>0;r--)if(e.someProp(t,(t=>r>s.depth?t(e,n,s.nodeAfter,s.before(r),i,!0):t(e,n,s.node(r),s.before(r),i,!1))))return!0;return!1}function Ka(e,t,n){if(e.focused||e.focus(),e.state.selection.eq(t))return;let r=e.state.tr.setSelection(t);"pointer"==n&&r.setMeta("pointer",!0),e.dispatch(r)}function Ja(e,t,n,r){return Wa(e,"handleDoubleClickOn",t,n,r)||e.someProp("handleDoubleClick",(n=>n(e,t,r)))}function Ga(e,t,n,r){return Wa(e,"handleTripleClickOn",t,n,r)||e.someProp("handleTripleClick",(n=>n(e,t,r)))||function(e,t,n){if(0!=n.button)return!1;let r=e.state.doc;if(-1==t)return!!r.inlineContent&&(Ka(e,es.create(r,0,r.content.size),"pointer"),!0);let i=r.resolve(t);for(let t=i.depth+1;t>0;t--){let n=t>i.depth?i.nodeAfter:i.node(t),s=i.before(t);if(n.inlineContent)Ka(e,es.create(r,s+1,s+1+n.content.size),"pointer");else{if(!ns.isSelectable(n))continue;Ka(e,ns.create(r,s),"pointer")}return!0}}(e,n,r)}function Za(e){return rl(e)}Ra.keydown=(e,t)=>{let n=t;if(e.input.shiftKey=16==n.keyCode||n.shiftKey,!Ya(e,n)&&(e.input.lastKeyCode=n.keyCode,e.input.lastKeyCodeTime=Date.now(),!lo||!no||13!=n.keyCode))if(229!=n.keyCode&&e.domObserver.forceFlush(),!so||13!=n.keyCode||n.ctrlKey||n.altKey||n.metaKey)e.someProp("handleKeyDown",(t=>t(e,n)))||function(e,t){let n=t.keyCode,r=function(e){let t="";return e.ctrlKey&&(t+="c"),e.metaKey&&(t+="m"),e.altKey&&(t+="a"),e.shiftKey&&(t+="s"),t}(t);if(8==n||oo&&72==n&&"c"==r)return Ca(e,-1)||ya(e,-1);if(46==n&&!t.shiftKey||oo&&68==n&&"c"==r)return Ca(e,1)||ya(e,1);if(13==n||27==n)return!0;if(37==n||oo&&66==n&&"c"==r){let t=37==n?"ltr"==wa(e,e.state.selection.from)?-1:1:-1;return ma(e,t,r)||ya(e,t)}if(39==n||oo&&70==n&&"c"==r){let t=39==n?"ltr"==wa(e,e.state.selection.from)?1:-1:1;return ma(e,t,r)||ya(e,t)}return 38==n||oo&&80==n&&"c"==r?xa(e,-1,r)||ya(e,-1):40==n||oo&&78==n&&"c"==r?function(e){if(!io||e.state.selection.$head.parentOffset>0)return!1;let{focusNode:t,focusOffset:n}=e.domSelectionRange();if(t&&1==t.nodeType&&0==n&&t.firstChild&&"false"==t.firstChild.contentEditable){let n=t.firstChild;Ea(e,n,"true"),setTimeout((()=>Ea(e,n,"false")),20)}return!1}(e)||xa(e,1,r)||ya(e,1):r==(oo?"m":"c")&&(66==n||73==n||89==n||90==n)}(e,n)?n.preventDefault():Va(e,"key");else{let t=Date.now();e.input.lastIOSEnter=t,e.input.lastIOSEnterFallbackTimeout=setTimeout((()=>{e.input.lastIOSEnter==t&&(e.someProp("handleKeyDown",(t=>t(e,Us(13,"Enter")))),e.input.lastIOSEnter=0)}),200)}},Ra.keyup=(e,t)=>{16==t.keyCode&&(e.input.shiftKey=!1)},Ra.keypress=(e,t)=>{let n=t;if(Ya(e,n)||!n.charCode||n.ctrlKey&&!n.altKey||oo&&n.metaKey)return;if(e.someProp("handleKeyPress",(t=>t(e,n))))return void n.preventDefault();let r=e.state.selection;if(!(r instanceof es&&r.$from.sameParent(r.$to))){let t=String.fromCharCode(n.charCode);/[\r\n]/.test(t)||e.someProp("handleTextInput",(n=>n(e,r.$from.pos,r.$to.pos,t)))||e.dispatch(e.state.tr.insertText(t).scrollIntoView()),n.preventDefault()}};const Xa=oo?"metaKey":"ctrlKey";Pa.mousedown=(e,t)=>{let n=t;e.input.shiftKey=n.shiftKey;let r=Za(e),i=Date.now(),s="singleClick";i-e.input.lastClick.time<500&&function(e,t){let n=t.x-e.clientX,r=t.y-e.clientY;return n*n+r*r<100}(n,e.input.lastClick)&&!n[Xa]&&("singleClick"==e.input.lastClick.type?s="doubleClick":"doubleClick"==e.input.lastClick.type&&(s="tripleClick")),e.input.lastClick={time:i,x:n.clientX,y:n.clientY,type:s};let o=e.posAtCoords(Ua(n));o&&("singleClick"==s?(e.input.mouseDown&&e.input.mouseDown.done(),e.input.mouseDown=new Qa(e,o,n,!!r)):("doubleClick"==s?Ja:Ga)(e,o.pos,o.inside,n)?n.preventDefault():Va(e,"pointer"))};class Qa{constructor(e,t,n,r){let i,s;if(this.view=e,this.pos=t,this.event=n,this.flushed=r,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!n[Xa],this.allowDefault=n.shiftKey,t.inside>-1)i=e.state.doc.nodeAt(t.inside),s=t.inside;else{let n=e.state.doc.resolve(t.pos);i=n.parent,s=n.depth?n.before():0}const o=r?null:n.target,a=o?e.docView.nearestDesc(o,!0):null;this.target=a&&1==a.dom.nodeType?a.dom:null;let{selection:l}=e.state;(0==n.button&&i.type.spec.draggable&&!1!==i.type.spec.selectable||l instanceof ns&&l.from<=s&&l.to>s)&&(this.mightDrag={node:i,pos:s,addAttr:!(!this.target||this.target.draggable),setUneditable:!(!this.target||!eo||this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout((()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")}),20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Va(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout((()=>ra(this.view))),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Ua(e))),this.updateAllowDefault(e),this.allowDefault||!t?Va(this.view,"pointer"):function(e,t,n,r,i){return Wa(e,"handleClickOn",t,n,r)||e.someProp("handleClick",(n=>n(e,t,r)))||(i?function(e,t){if(-1==t)return!1;let n,r,i=e.state.selection;i instanceof ns&&(n=i.node);let s=e.state.doc.resolve(t);for(let e=s.depth+1;e>0;e--){let t=e>s.depth?s.nodeAfter:s.node(e);if(ns.isSelectable(t)){r=n&&i.$from.depth>0&&e>=i.$from.depth&&s.before(i.$from.depth+1)==i.$from.pos?s.before(i.$from.depth):s.before(e);break}}return null!=r&&(Ka(e,ns.create(e.state.doc,r),"pointer"),!0)}(e,n):function(e,t){if(-1==t)return!1;let n=e.state.doc.resolve(t),r=n.nodeAfter;return!!(r&&r.isAtom&&ns.isSelectable(r))&&(Ka(e,new ns(n),"pointer"),!0)}(e,n))}(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():0==e.button&&(this.flushed||io&&this.mightDrag&&!this.mightDrag.node.isAtom||no&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?(Ka(this.view,Zi.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Va(this.view,"pointer")}move(e){this.updateAllowDefault(e),Va(this.view,"pointer"),0==e.buttons&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}function Ya(e,t){return!!e.composing||!!(io&&Math.abs(t.timeStamp-e.input.compositionEndedAt)<500)&&(e.input.compositionEndedAt=-2e8,!0)}Pa.touchstart=e=>{e.input.lastTouch=Date.now(),Za(e),Va(e,"pointer")},Pa.touchmove=e=>{e.input.lastTouch=Date.now(),Va(e,"pointer")},Pa.contextmenu=e=>Za(e);const el=lo?5e3:-1;function tl(e,t){clearTimeout(e.input.composingTimeout),t>-1&&(e.input.composingTimeout=setTimeout((()=>rl(e)),t))}function nl(e){for(e.composing&&(e.input.composing=!1,e.input.compositionEndedAt=function(){let e=document.createEvent("Event");return e.initEvent("event",!0,!0),e.timeStamp}());e.input.compositionNodes.length>0;)e.input.compositionNodes.pop().markParentsDirty()}function rl(e,t=!1){if(!(lo&&e.domObserver.flushingSoon>=0)){if(e.domObserver.forceFlush(),nl(e),t||e.docView&&e.docView.dirty){let n=ta(e);return n&&!n.eq(e.state.selection)?e.dispatch(e.state.tr.setSelection(n)):!e.markCursor&&!t||e.state.selection.empty?e.updateState(e.state):e.dispatch(e.state.tr.deleteSelection()),!0}return!1}}Ra.compositionstart=Ra.compositionupdate=e=>{if(!e.composing){e.domObserver.flush();let{state:t}=e,n=t.selection.$to;if(t.selection instanceof es&&(t.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some((e=>!1===e.type.spec.inclusive))))e.markCursor=e.state.storedMarks||n.marks(),rl(e,!0),e.markCursor=null;else if(rl(e,!t.selection.empty),eo&&t.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let t=e.domSelectionRange();for(let n=t.focusNode,r=t.focusOffset;n&&1==n.nodeType&&0!=r;){let t=r<0?n.lastChild:n.childNodes[r-1];if(!t)break;if(3==t.nodeType){let n=e.domSelection();n&&n.collapse(t,t.nodeValue.length);break}n=t,r=-1}}e.input.composing=!0}tl(e,el)},Ra.compositionend=(e,t)=>{e.composing&&(e.input.composing=!1,e.input.compositionEndedAt=t.timeStamp,e.input.compositionPendingChanges=e.domObserver.pendingRecords().length?e.input.compositionID:0,e.input.compositionNode=null,e.input.compositionPendingChanges&&Promise.resolve().then((()=>e.domObserver.flush())),e.input.compositionID++,tl(e,20))};const il=Qs&&Ys<15||so&&ho<604;function sl(e,t,n,r,i){let s=_a(e,t,n,r,e.state.selection.$from);if(e.someProp("handlePaste",(t=>t(e,i,s||hr.empty))))return!0;if(!s)return!1;let o=function(e){return 0==e.openStart&&0==e.openEnd&&1==e.content.childCount?e.content.firstChild:null}(s),a=o?e.state.tr.replaceSelectionWith(o,r):e.state.tr.replaceSelection(s);return e.dispatch(a.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function ol(e){let t=e.getData("text/plain")||e.getData("Text");if(t)return t;let n=e.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}Pa.copy=Ra.cut=(e,t)=>{let n=t,r=e.state.selection,i="cut"==n.type;if(r.empty)return;let s=il?null:n.clipboardData,o=r.content(),{dom:a,text:l}=Sa(e,o);s?(n.preventDefault(),s.clearData(),s.setData("text/html",a.innerHTML),s.setData("text/plain",l)):function(e,t){if(!e.dom.parentNode)return;let n=e.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(t),n.style.cssText="position: fixed; left: -10000px; top: 10px";let r=getSelection(),i=document.createRange();i.selectNodeContents(t),e.dom.blur(),r.removeAllRanges(),r.addRange(i),setTimeout((()=>{n.parentNode&&n.parentNode.removeChild(n),e.focus()}),50)}(e,a),i&&e.dispatch(e.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))},Ra.paste=(e,t)=>{let n=t;if(e.composing&&!lo)return;let r=il?null:n.clipboardData,i=e.input.shiftKey&&45!=e.input.lastKeyCode;r&&sl(e,ol(r),r.getData("text/html"),i,n)?n.preventDefault():function(e,t){if(!e.dom.parentNode)return;let n=e.input.shiftKey||e.state.selection.$from.parent.type.spec.code,r=e.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus();let i=e.input.shiftKey&&45!=e.input.lastKeyCode;setTimeout((()=>{e.focus(),r.parentNode&&r.parentNode.removeChild(r),n?sl(e,r.value,null,i,t):sl(e,r.textContent,r.innerHTML,i,t)}),50)}(e,n)};class al{constructor(e,t,n){this.slice=e,this.move=t,this.node=n}}const ll=oo?"altKey":"ctrlKey";Pa.dragstart=(e,t)=>{let n=t,r=e.input.mouseDown;if(r&&r.done(),!n.dataTransfer)return;let i,s=e.state.selection,o=s.empty?null:e.posAtCoords(Ua(n));if(o&&o.pos>=s.from&&o.pos<=(s instanceof ns?s.to-1:s.to));else if(r&&r.mightDrag)i=ns.create(e.state.doc,r.mightDrag.pos);else if(n.target&&1==n.target.nodeType){let t=e.docView.nearestDesc(n.target,!0);t&&t.node.type.spec.draggable&&t!=e.docView&&(i=ns.create(e.state.doc,t.posBefore))}let a=(i||e.state.selection).content(),{dom:l,text:c,slice:h}=Sa(e,a);(!n.dataTransfer.files.length||!no||ro>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(il?"Text":"text/html",l.innerHTML),n.dataTransfer.effectAllowed="copyMove",il||n.dataTransfer.setData("text/plain",c),e.dragging=new al(h,!n[ll],i)},Pa.dragend=e=>{let t=e.dragging;window.setTimeout((()=>{e.dragging==t&&(e.dragging=null)}),50)},Ra.dragover=Ra.dragenter=(e,t)=>t.preventDefault(),Ra.drop=(e,t)=>{let n=t,r=e.dragging;if(e.dragging=null,!n.dataTransfer)return;let i=e.posAtCoords(Ua(n));if(!i)return;let s=e.state.doc.resolve(i.pos),o=r&&r.slice;o?e.someProp("transformPasted",(t=>{o=t(o,e)})):o=_a(e,ol(n.dataTransfer),il?null:n.dataTransfer.getData("text/html"),!1,s);let a=!(!r||n[ll]);if(e.someProp("handleDrop",(t=>t(e,n,o||hr.empty,a))))return void n.preventDefault();if(!o)return;n.preventDefault();let l=o?function(e,t,n){let r=e.resolve(t);if(!n.content.size)return t;let i=n.content;for(let e=0;e=0;t--){let n=t==r.depth?0:r.pos<=(r.start(t+1)+r.end(t+1))/2?-1:1,s=r.index(t)+(n>0?1:0),o=r.node(t),a=!1;if(1==e)a=o.canReplace(s,s,i);else{let e=o.contentMatchAt(s).findWrapping(i.firstChild.type);a=e&&o.canReplaceWith(s,s,e[0])}if(a)return 0==n?r.pos:n<0?r.before(t+1):r.after(t+1)}return null}(e.state.doc,s.pos,o):s.pos;null==l&&(l=s.pos);let c=e.state.tr;if(a){let{node:e}=r;e?e.replace(c):c.deleteSelection()}let h=c.mapping.map(l),u=0==o.openStart&&0==o.openEnd&&1==o.content.childCount,d=c.doc;if(u?c.replaceRangeWith(h,h,o.content.firstChild):c.replaceRange(h,h,o),c.doc.eq(d))return;let p=c.doc.resolve(h);if(u&&ns.isSelectable(o.content.firstChild)&&p.nodeAfter&&p.nodeAfter.sameMarkup(o.content.firstChild))c.setSelection(new ns(p));else{let t=c.mapping.map(l);c.mapping.maps[c.mapping.maps.length-1].forEach(((e,n,r,i)=>t=i)),c.setSelection(ha(e,p,c.doc.resolve(t)))}e.focus(),e.dispatch(c.setMeta("uiEvent","drop"))},Pa.focus=e=>{e.input.lastFocus=Date.now(),e.focused||(e.domObserver.stop(),e.dom.classList.add("ProseMirror-focused"),e.domObserver.start(),e.focused=!0,setTimeout((()=>{e.docView&&e.hasFocus()&&!e.domObserver.currentSelection.eq(e.domSelectionRange())&&ra(e)}),20))},Pa.blur=(e,t)=>{let n=t;e.focused&&(e.domObserver.stop(),e.dom.classList.remove("ProseMirror-focused"),e.domObserver.start(),n.relatedTarget&&e.dom.contains(n.relatedTarget)&&e.domObserver.currentSelection.clear(),e.focused=!1)},Pa.beforeinput=(e,t)=>{if(no&&lo&&"deleteContentBackward"==t.inputType){e.domObserver.flushSoon();let{domChangeCount:t}=e.input;setTimeout((()=>{if(e.input.domChangeCount!=t)return;if(e.dom.blur(),e.focus(),e.someProp("handleKeyDown",(t=>t(e,Us(8,"Backspace")))))return;let{$cursor:n}=e.state.selection;n&&n.pos>0&&e.dispatch(e.state.tr.delete(n.pos-1,n.pos).scrollIntoView())}),50)}};for(let e in Ra)Pa[e]=Ra[e];function cl(e,t){if(e==t)return!0;for(let n in e)if(e[n]!==t[n])return!1;for(let n in t)if(!(n in e))return!1;return!0}class hl{constructor(e,t){this.toDOM=e,this.spec=t||ml,this.side=this.spec.side||0}map(e,t,n,r){let{pos:i,deleted:s}=e.mapResult(t.from+r,this.side<0?-1:1);return s?null:new pl(i-n,i-n,this)}valid(){return!0}eq(e){return this==e||e instanceof hl&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&cl(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class ul{constructor(e,t){this.attrs=e,this.spec=t||ml}map(e,t,n,r){let i=e.map(t.from+r,this.spec.inclusiveStart?-1:1)-n,s=e.map(t.to+r,this.spec.inclusiveEnd?1:-1)-n;return i>=s?null:new pl(i,s,this)}valid(e,t){return t.from=e&&(!i||i(o.spec))&&n.push(o.copy(o.from+r,o.to+r))}for(let s=0;se){let o=this.children[s]+1;this.children[s+2].findInner(e-o,t-o,n,r+o,i)}}map(e,t,n){return this==bl||0==e.maps.length?this:this.mapInner(e,t,0,0,n||ml)}mapInner(e,t,n,r,i){let s;for(let o=0;o{let o=s-i-(n-e);for(let i=0;is+t-r)continue;let l=a[i]+t-r;n>=l?a[i+1]=e<=l?-2:-1:e>=t&&o&&(a[i]+=o,a[i+1]+=o)}r+=o})),t=n.maps[e].map(t,-1)}let l=!1;for(let t=0;t=r.content.size){l=!0;continue}let u=n.map(e[t+1]+s,-1)-i,{index:d,offset:p}=r.content.findIndex(h),f=r.maybeChild(d);if(f&&p==h&&p+f.nodeSize==u){let r=a[t+2].mapInner(n,f,c+1,e[t]+s+1,o);r!=bl?(a[t]=h,a[t+1]=u,a[t+2]=r):(a[t+1]=-2,l=!0)}else l=!0}if(l){let l=function(e,t,n,r,i,s,o){function a(e,t){for(let s=0;s{let o,a=s+n;if(o=vl(t,e,a)){for(r||(r=this.children.slice());is&&t.to=e){this.children[t]==e&&(n=this.children[t+2]);break}let i=e+1,s=i+t.content.size;for(let e=0;ei&&t.type instanceof ul){let e=Math.max(i,t.from)-i,n=Math.min(s,t.to)-i;en.map(e,t,ml)));return yl.from(n)}forChild(e,t){if(t.isLeaf)return gl.empty;let n=[];for(let r=0;re instanceof gl))?e:e.reduce(((e,t)=>e.concat(t instanceof gl?t:t.members)),[]))}}forEachSet(e){for(let t=0;tn&&t.to{let a=vl(e,t,o+n);if(a){s=!0;let e=xl(a,t,n+o+1,r);e!=bl&&i.push(o,o+t.nodeSize,e)}}));let o=kl(s?wl(e):e,-n).sort(Cl);for(let e=0;e0;)t++;e.splice(t,0,n)}function _l(e){let t=[];return e.someProp("decorations",(n=>{let r=n(e.state);r&&r!=bl&&t.push(r)})),e.cursorWrapper&&t.push(gl.create(e.state.doc,[e.cursorWrapper.deco])),yl.from(t)}const Al={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},Dl=Qs&&Ys<=11;class Ml{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class Tl{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new Ml,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver((e=>{for(let t=0;t"childList"==e.type&&e.removedNodes.length||"characterData"==e.type&&e.oldValue.length>e.target.nodeValue.length))?this.flushSoon():this.flush()})),Dl&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout((()=>{this.flushingSoon=-1,this.flush()}),20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,Al)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;tthis.flush()),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout((()=>this.suppressingSelectionUpdates=!1),50)}onSelectionChange(){if(ua(this.view)){if(this.suppressingSelectionUpdates)return ra(this.view);if(Qs&&Ys<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&zs(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t,n=new Set;for(let t=e.focusNode;t;t=Bs(t))n.add(t);for(let r=e.anchorNode;r;r=Bs(r))if(n.has(r)){t=r;break}let r=t&&this.view.docView.nearestDesc(t);return r&&r.ignoreMutation({type:"selection",target:3==t.nodeType?t.parentNode:t})?(this.setCurSelection(),!0):void 0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let n=e.domSelectionRange(),r=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(n)&&ua(e)&&!this.ignoreSelectionChange(n),i=-1,s=-1,o=!1,a=[];if(e.editable)for(let e=0;e"BR"==e.nodeName));if(2==t.length){let[e,n]=t;e.parentNode&&e.parentNode.parentNode==n.parentNode?n.remove():e.remove()}else{let{focusNode:n}=this.currentSelection;for(let r of t){let t=r.parentNode;!t||"LI"!=t.nodeName||n&&Il(e,n)==t||r.remove()}}}let l=null;i<0&&r&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||r)&&(i>-1&&(e.docView.markDirty(i,s),function(e){if(!Ol.has(e)&&(Ol.set(e,null),-1!==["normal","nowrap","pre-line"].indexOf(getComputedStyle(e.dom).whiteSpace))){if(e.requiresGeckoHackNode=eo,Nl)return;console.warn("ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package."),Nl=!0}}(e)),this.handleDOMChange(i,s,o,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(n)||ra(e),this.currentSelection.set(n))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let n=this.view.docView.nearestDesc(e.target);if("attributes"==e.type&&(n==this.view.docView||"contenteditable"==e.attributeName||"style"==e.attributeName&&!e.oldValue&&!e.target.getAttribute("style")))return null;if(!n||n.ignoreMutation(e))return null;if("childList"==e.type){for(let n=0;nt.content.size?null:ha(e,t.resolve(n.anchor),t.resolve(n.head))}function Rl(e,t,n){let r=e.depth,i=t?e.end():e.pos;for(;r>0&&(t||e.indexAfter(r)==e.node(r).childCount);)r--,i++,t=!1;if(n){let t=e.node(r).maybeChild(e.indexAfter(r));for(;t&&!t.isLeaf;)t=t.firstChild,i++}return i}function zl(e){if(2!=e.length)return!1;let t=e.charCodeAt(0),n=e.charCodeAt(1);return t>=56320&&t<=57343&&n>=55296&&n<=56319}class $l{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new $a,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(Ul),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):"function"==typeof e?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=jl(this),ql(this),this.nodeViews=Hl(this),this.docView=zo(this.state.doc,Vl(this),_l(this),this.dom,this),this.domObserver=new Tl(this,((e,t,n,r)=>function(e,t,n,r,i){let s=e.input.compositionPendingChanges||(e.composing?e.input.compositionID:0);if(e.input.compositionPendingChanges=0,t<0){let t=e.input.lastSelectionTime>Date.now()-50?e.input.lastSelectionOrigin:null,n=ta(e,t);if(n&&!e.state.selection.eq(n)){if(no&&lo&&13===e.input.lastKeyCode&&Date.now()-100t(e,Us(13,"Enter")))))return;let r=e.state.tr.setSelection(n);"pointer"==t?r.setMeta("pointer",!0):"key"==t&&r.scrollIntoView(),s&&r.setMeta("composition",s),e.dispatch(r)}return}let o=e.state.doc.resolve(t),a=o.sharedDepth(n);t=o.before(a+1),n=e.state.doc.resolve(n).after(a+1);let l,c,h=e.state.selection,u=function(e,t,n){let r,{node:i,fromOffset:s,toOffset:o,from:a,to:l}=e.docView.parseRange(t,n),c=e.domSelectionRange(),h=c.anchorNode;if(h&&e.dom.contains(1==h.nodeType?h:h.parentNode)&&(r=[{node:h,offset:c.anchorOffset}],Hs(c)||r.push({node:c.focusNode,offset:c.focusOffset})),no&&8===e.input.lastKeyCode)for(let e=o;e>s;e--){let t=i.childNodes[e-1],n=t.pmViewDesc;if("BR"==t.nodeName&&!n){o=e;break}if(!n||n.size)break}let u=e.state.doc,d=e.someProp("domParser")||Gr.fromSchema(e.state.schema),p=u.resolve(a),f=null,m=d.parse(i,{topNode:p.parent,topMatch:p.parent.contentMatchAt(p.index()),topOpen:!0,from:s,to:o,preserveWhitespace:"pre"!=p.parent.type.whitespace||"full",findPositions:r,ruleFromNode:Fl,context:p});if(r&&null!=r[0].pos){let e=r[0].pos,t=r[1]&&r[1].pos;null==t&&(t=e),f={anchor:e+a,head:t+a}}return{doc:m,sel:f,from:a,to:l}}(e,t,n),d=e.state.doc,p=d.slice(u.from,u.to);8===e.input.lastKeyCode&&Date.now()-100=o?s-r:0;s-=e,s&&s=a?s-r:0;s-=t,s&&sDate.now()-225||lo)&&i.some((e=>1==e.nodeType&&!Bl.test(e.nodeName)))&&(!f||f.endA>=f.endB)&&e.someProp("handleKeyDown",(t=>t(e,Us(13,"Enter")))))return void(e.input.lastIOSEnter=0);if(!f){if(!(r&&h instanceof es&&!h.empty&&h.$head.sameParent(h.$anchor))||e.composing||u.sel&&u.sel.anchor!=u.sel.head){if(u.sel){let t=Pl(e,e.state.doc,u.sel);if(t&&!t.eq(e.state.selection)){let n=e.state.tr.setSelection(t);s&&n.setMeta("composition",s),e.dispatch(n)}}return}f={start:h.from,endA:h.to,endB:h.to}}e.state.selection.frome.state.selection.from&&f.start<=e.state.selection.from+2&&e.state.selection.from>=u.from?f.start=e.state.selection.from:f.endA=e.state.selection.to-2&&e.state.selection.to<=u.to&&(f.endB+=e.state.selection.to-f.endA,f.endA=e.state.selection.to)),Qs&&Ys<=11&&f.endB==f.start+1&&f.endA==f.start&&f.start>u.from&&"  "==u.doc.textBetween(f.start-u.from-1,f.start-u.from+1)&&(f.start--,f.endA--,f.endB--);let m,g=u.doc.resolveNoCache(f.start-u.from),b=u.doc.resolveNoCache(f.endB-u.from),y=d.resolve(f.start),k=g.sameParent(b)&&g.parent.inlineContent&&y.end()>=f.endA;if((so&&e.input.lastIOSEnter>Date.now()-225&&(!k||i.some((e=>"DIV"==e.nodeName||"P"==e.nodeName)))||!k&&g.post(e,Us(13,"Enter")))))return void(e.input.lastIOSEnter=0);if(e.state.selection.anchor>f.start&&function(e,t,n,r,i){if(n-t<=i.pos-r.pos||Rl(r,!0,!1)n||Rl(o,!0,!1)t(e,Us(8,"Backspace")))))return void(lo&&no&&e.domObserver.suppressSelectionUpdates());no&&f.endB==f.start&&(e.input.lastChromeDelete=Date.now()),lo&&!k&&g.start()!=b.start()&&0==b.parentOffset&&g.depth==b.depth&&u.sel&&u.sel.anchor==u.sel.head&&u.sel.head==f.endA&&(f.endB-=2,b=u.doc.resolveNoCache(f.endB-u.from),setTimeout((()=>{e.someProp("handleKeyDown",(function(t){return t(e,Us(13,"Enter"))}))}),20));let v,w,x,C=f.start,E=f.endA;if(k)if(g.pos==b.pos)Qs&&Ys<=11&&0==g.parentOffset&&(e.domObserver.suppressSelectionUpdates(),setTimeout((()=>ra(e)),20)),v=e.state.tr.delete(C,E),w=d.resolve(f.start).marksAcross(d.resolve(f.endA));else if(f.endA==f.endB&&(x=function(e,t){let n,r,i,s=e.firstChild.marks,o=t.firstChild.marks,a=s,l=o;for(let e=0;ee.mark(r.addToSet(e.marks));else{if(0!=a.length||1!=l.length)return null;r=l[0],n="remove",i=e=>e.mark(r.removeFromSet(e.marks))}let c=[];for(let e=0;en(e,C,E,t))))return;v=e.state.tr.insertText(t,C,E)}if(v||(v=e.state.tr.replace(C,E,u.doc.slice(f.start-u.from,f.endB-u.from))),u.sel){let t=Pl(e,v.doc,u.sel);t&&!(no&&e.composing&&t.empty&&(f.start!=f.endB||e.input.lastChromeDelete{!Ha(e,t)||ja(e,t)||!e.editable&&t.type in Ra||n(e,t)},za[t]?{passive:!0}:void 0)}io&&e.dom.addEventListener("input",(()=>null)),qa(e)}(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&qa(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Ul),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let e in this._props)t[e]=this._props[e];t.state=this.state;for(let n in e)t[n]=e[n];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var n;let r=this.state,i=!1,s=!1;e.storedMarks&&this.composing&&(nl(this),s=!0),this.state=e;let o=r.plugins!=e.plugins||this._props.plugins!=t.plugins;if(o||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let e=Hl(this);(function(e,t){let n=0,r=0;for(let r in e){if(e[r]!=t[r])return!0;n++}for(let e in t)r++;return n!=r})(e,this.nodeViews)&&(this.nodeViews=e,i=!0)}(o||t.handleDOMEvents!=this._props.handleDOMEvents)&&qa(this),this.editable=jl(this),ql(this);let a=_l(this),l=Vl(this),c=r.plugins==e.plugins||r.doc.eq(e.doc)?e.scrollToSelection>r.scrollToSelection?"to selection":"preserve":"reset",h=i||!this.docView.matchesNode(e.doc,l,a);!h&&e.selection.eq(r.selection)||(s=!0);let u="preserve"==c&&s&&null==this.dom.style.overflowAnchor&&function(e){let t,n,r=e.dom.getBoundingClientRect(),i=Math.max(0,r.top);for(let s=(r.left+r.right)/2,o=i+1;o=i-20){t=r,n=a.top;break}}return{refDOM:t,refTop:n,stack:go(e.dom)}}(this);if(s){this.domObserver.stop();let t=h&&(Qs||no)&&!this.composing&&!r.selection.empty&&!e.selection.empty&&function(e,t){let n=Math.min(e.$anchor.sharedDepth(e.head),t.$anchor.sharedDepth(t.head));return e.$anchor.start(n)!=t.$anchor.start(n)}(r.selection,e.selection);if(h){let n=no?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=function(e){let t=e.domSelectionRange();if(!t.focusNode)return null;let n=function(e,t){for(;;){if(3==e.nodeType&&t)return e;if(1==e.nodeType&&t>0){if("false"==e.contentEditable)return null;t=qs(e=e.childNodes[t-1])}else{if(!e.parentNode||js(e))return null;t=Fs(e),e=e.parentNode}}}(t.focusNode,t.focusOffset),r=function(e,t){for(;;){if(3==e.nodeType&&te(this))));else if(this.state.selection instanceof ns){let t=this.docView.domAfterPos(this.state.selection.from);1==t.nodeType&&mo(this,t.getBoundingClientRect(),e)}else mo(this,this.coordsAtPos(this.state.selection.head,1),e)}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(e&&e.plugins==this.state.plugins&&this.directPlugins==this.prevDirectPlugins)for(let t=0;t0&&this.state.doc.nodeAt(e))==n.node&&(r=e)}this.dragging=new al(e.slice,e.move,r<0?void 0:ns.create(this.state.doc,r))}someProp(e,t){let n,r=this._props&&this._props[e];if(null!=r&&(n=t?t(r):r))return n;for(let r=0;re.ownerDocument.getSelection()),this._root=e;return e||document}updateRoot(){this._root=null}posAtCoords(e){return xo(this,e)}coordsAtPos(e,t=1){return _o(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,n=-1){let r=this.docView.posFromDOM(e,t,n);if(null==r)throw new RangeError("DOM position not inside the editor");return r}endOfTextblock(e,t){return function(e,t,n){return Oo==t&&No==n?Lo:(Oo=t,No=n,Lo="up"==n||"down"==n?function(e,t,n){let r=t.selection,i="up"==n?r.$from:r.$to;return Mo(e,t,(()=>{let{node:t}=e.docView.domFromPos(i.pos,"up"==n?-1:1);for(;;){let n=e.docView.nearestDesc(t,!0);if(!n)break;if(n.node.isBlock){t=n.contentDOM||n.dom;break}t=n.dom.parentNode}let r=_o(e,i.pos,1);for(let e=t.firstChild;e;e=e.nextSibling){let t;if(1==e.nodeType)t=e.getClientRects();else{if(3!=e.nodeType)continue;t=Rs(e,0,e.nodeValue.length).getClientRects()}for(let e=0;ei.top+1&&("up"==n?r.top-i.top>2*(i.bottom-r.top):i.bottom-r.bottom>2*(r.bottom-i.top)))return!1}}return!0}))}(e,t,n):function(e,t,n){let{$head:r}=t.selection;if(!r.parent.isTextblock)return!1;let i=r.parentOffset,s=!i,o=i==r.parent.content.size,a=e.domSelection();return a?To.test(r.parent.textContent)&&a.modify?Mo(e,t,(()=>{let{focusNode:t,focusOffset:i,anchorNode:s,anchorOffset:o}=e.domSelectionRange(),l=a.caretBidiLevel;a.modify("move",n,"character");let c=r.depth?e.docView.domAfterPos(r.before()):e.dom,{focusNode:h,focusOffset:u}=e.domSelectionRange(),d=h&&!c.contains(1==h.nodeType?h:h.parentNode)||t==h&&i==u;try{a.collapse(s,o),t&&(t!=s||i!=o)&&a.extend&&a.extend(t,i)}catch(e){}return null!=l&&(a.caretBidiLevel=l),d})):"left"==n||"backward"==n?s:o:r.pos==r.start()||r.pos==r.end()}(e,t,n))}(this,t||this.state,e)}pasteHTML(e,t){return sl(this,"",e,!1,t||new ClipboardEvent("paste"))}pasteText(e,t){return sl(this,e,null,!0,t||new ClipboardEvent("paste"))}destroy(){this.docView&&(function(e){e.domObserver.stop();for(let t in e.input.eventHandlers)e.dom.removeEventListener(t,e.input.eventHandlers[t]);clearTimeout(e.input.composingTimeout),clearTimeout(e.input.lastIOSEnterFallbackTimeout)}(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],_l(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,Ps=null)}get isDestroyed(){return null==this.docView}dispatchEvent(e){return function(e,t){ja(e,t)||!Pa[t.type]||!e.editable&&t.type in Ra||Pa[t.type](e,t)}(this,e)}dispatch(e){let t=this._props.dispatchTransaction;t?t.call(this,e):this.updateState(this.state.apply(e))}domSelectionRange(){let e=this.domSelection();return e?io&&11===this.root.nodeType&&function(e){let t=e.activeElement;for(;t&&t.shadowRoot;)t=t.shadowRoot.activeElement;return t}(this.dom.ownerDocument)==this.dom&&function(e,t){if(t.getComposedRanges){let n=t.getComposedRanges(e.root)[0];if(n)return Ll(e,n)}let n;function r(e){e.preventDefault(),e.stopImmediatePropagation(),n=e.getTargetRanges()[0]}return e.dom.addEventListener("beforeinput",r,!0),document.execCommand("indent"),e.dom.removeEventListener("beforeinput",r,!0),n?Ll(e,n):null}(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}}function Vl(e){let t=Object.create(null);return t.class="ProseMirror",t.contenteditable=String(e.editable),e.someProp("attributes",(n=>{if("function"==typeof n&&(n=n(e.state)),n)for(let e in n)"class"==e?t.class+=" "+n[e]:"style"==e?t.style=(t.style?t.style+";":"")+n[e]:t[e]||"contenteditable"==e||"nodeName"==e||(t[e]=String(n[e]))})),t.translate||(t.translate="no"),[pl.node(0,e.state.doc.content.size,t)]}function ql(e){if(e.markCursor){let t=document.createElement("img");t.className="ProseMirror-separator",t.setAttribute("mark-placeholder","true"),t.setAttribute("alt",""),e.cursorWrapper={dom:t,deco:pl.widget(e.state.selection.from,t,{raw:!0,marks:e.markCursor})}}else e.cursorWrapper=null}function jl(e){return!e.someProp("editable",(t=>!1===t(e.state)))}function Hl(e){let t=Object.create(null);function n(e){for(let n in e)Object.prototype.hasOwnProperty.call(t,n)||(t[n]=e[n])}return e.someProp("nodeViews",n),e.someProp("markViews",n),t}function Ul(e){if(e.spec.state||e.spec.filterTransaction||e.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}function Wl(e,t,n,r){const i=document.createElement("a");i.className=`s-editor-btn s-btn s-btn__clear flex--item js-editor-btn js-${r}`,i.href=n,i.target="_blank",i.title=t,i.setAttribute("aria-label",t),i.dataset.controller="s-tooltip",i.dataset.sTooltipPlacement="bottom";const s=document.createElement("span");s.className="svg-icon-bg icon"+e,i.append(s);const o={command:(e,t)=>(t&&window.open(i.href,i.target),!!n),active:()=>!1};return{key:r,richText:o,commonmark:o,display:i}}function Kl(e,t){const n=document.createElement("span");n.className="flex--item ta-left fs-fine tt-uppercase mx12 mb6 mt12 fc-black-400",n.dataset.key=t,n.textContent=e;const r={command:()=>!0,visible:()=>!0,active:()=>!1};return{key:t,richText:r,commonmark:r,display:n}}function Jl(e,t,n,r){const i=document.createElement("button");return i.type="button",i.dataset.key=n,i.textContent=e,i.setAttribute("role","menuitem"),i.className="s-block-link s-editor--dropdown-item js-editor-btn",r&&i.classList.add(...r),{key:n,...t,display:i}}function Gl(e,t){return t?e:null}function Zl(e,t,n,r){const i=document.createElement("button");i.className=`s-editor-btn s-btn s-btn__clear js-editor-btn js-${n}`,r&&i.classList.add(...r);let s=t,o=null;"string"!=typeof t&&(s=t.title,o=t.description),o&&(i.dataset.sTooltipHtmlTitle=Rn`

${s}

${o}

`),i.title=s,i.setAttribute("aria-label",s),i.dataset.controller="s-tooltip",i.dataset.sTooltipPlacement="bottom",i.dataset.key=n,i.type="button";const a=document.createElement("span");return a.className="svg-icon-bg icon"+e,i.append(a),i}function Xl(e,t,n,r,i,...s){const o={command:()=>!0,visible:r,active:i};return{key:n,display:{svg:e,label:t},children:s,richText:o,commonmark:o}}var Ql=r(19);const Yl=()=>!1;class ec{dom;blocks;view;readonly;editorType;static activeClass="is-selected";static invisibleClass="d-none";constructor(e,t,n){this.view=t,this.editorType=n,this.dom=document.createElement("div"),this.dom.className="d-flex g16 fl-grow1 ai-center js-editor-menu",this.blocks=e.filter((e=>!!e)).sort(((e,t)=>e.priority-t.priority)).map((e=>{const t=this.standardizeMenuItems(e.entries),n=this.makeBlockContainer(e);for(const e of t)n.appendChild(e.display);return this.dom.appendChild(n),{...e,entries:t,dom:n}})),this.update(t,null);const r=[].concat(...this.blocks.map((e=>e.entries)).reduce(((e,t)=>e.concat(t)),[]).filter((e=>!!e)).map((e=>"children"in e&&e.children?.length?[e,...e.children]:e)));this.dom.addEventListener("click",(e=>{const n=e.target.closest(".js-editor-btn");if(!n)return;if(n.hasAttribute("disabled"))return;const i=n.dataset.key;if(e.preventDefault(),e.detail>0){if("menuitem"===n.getAttribute("role")){const t=e.target.closest('[data-controller="s-popover"]');(0,Ql.hidePopover)(t)}t.focus()}const s=r.find((e=>e.key===i)),o=this.command(s);o.command&&o.command(t.state,t.dispatch.bind(t),t)})),this.readonly=!t.editable}update(e,t){if(!On(t,e.state)&&this.readonly!==e.editable)return;this.readonly=!e.editable,this.dom.classList.toggle("pe-none",this.readonly);const n=this.readonly,r=this.view.hasFocus();for(const e of this.blocks){const t=!e.visible||e.visible(this.view.state);if(e.visible&&e.dom.classList.toggle(ec.invisibleClass,!t),t)for(const t of e.entries)this.checkAndUpdateMenuCommandState(t,n,r)}}destroy(){this.dom.remove()}checkAndUpdateMenuCommandState(e,t,n){let r=e.display;if(!r.classList.contains("js-editor-btn")){const e=r.querySelector(".js-editor-btn");r=e??r}const i=this.command(e),s=!i.visible||i.visible(this.view.state),o=!(!n||!i.active)&&i.active(this.view.state),a=!t&&i.command(this.view.state,void 0,this.view);if(r.classList.remove(ec.activeClass),r.classList.remove(ec.invisibleClass),r.removeAttribute("disabled"),r.dataset.key=e.key,s?o?r.classList.add(ec.activeClass):a||r.setAttribute("disabled",""):r.classList.add(ec.invisibleClass),"children"in e&&e.children?.length)for(const r of e.children)this.checkAndUpdateMenuCommandState(r,t,n)}makeBlockContainer(e){const t=document.createElement("div");return t.className=`s-editor-menu-block d-flex g2 ${e.classes?.join(" ")??""} js-block-${e.name}`,t}standardizeMenuItems(e){const t=[];if(!e?.length)return[];for(const n of e){if(!n?.key)continue;let e={...n,commonmark:this.expandCommand(n.commonmark),richText:this.expandCommand(n.richText),display:null,children:null};"children"in n&&n.children?.length?(e.children=this.standardizeMenuItems(n.children),e=this.buildMenuDropdown(e,n.display)):"svg"in n.display?e.display=Zl(n.display.svg,n.display.label,e.key,[]):e.display=n.display,t.push(e)}return t}command(e){return this.editorType===Hn.RichText?e?.richText:e?.commonmark}buildMenuDropdown(e,t){const n=Vn(),r=`${e.key}-popover-${n}`,i=`${e.key}-btn-${n}`,s=Zl(t.svg,t.label,e.key);s.classList.add("s-btn","s-btn__dropdown"),s.setAttribute("aria-controls",r),s.setAttribute("data-action","s-popover#toggle"),s.setAttribute("data-controller","s-tooltip"),s.id=i,s.dataset.key=e.key;const o=document.createElement("div");o.className="s-popover wmn-initial w-auto px0 pt0 py8",o.id=r,o.setAttribute("role","menu");const a=document.createElement("div");a.className="d-flex fd-column",a.setAttribute("role","presentation"),a.append(...e.children.map((e=>e.display))),o.appendChild(a);const l=document.createElement("div");l.dataset.controller="s-popover",l.setAttribute("data-s-popover-toggle-class","is-selected"),l.setAttribute("data-s-popover-placement","bottom"),l.setAttribute("data-s-popover-reference-selector",`#${i}`),l.appendChild(s),l.appendChild(o);const c={...this.command(e)};return{key:e.key,display:l,children:e.children,richText:c,commonmark:c}}expandCommand(e){return e?"command"in e?e:{command:e}:{command:Yl,visible:null,active:null}}}function tc(e,t,n){return new gs({view(r){const i=new ec(e,r,n),s=(t=t||function(e){return e.dom.parentNode})(r);return s.contains(r.dom)?s.insertBefore(i.dom,r.dom):s.insertBefore(i.dom,s.firstChild),i}})}class nc extends ks{constructor(e){super(e)}get(e){return super.get(e)}setMeta(e,t){return e.setMeta(this,t)}}class rc extends gs{constructor(e){super(e)}get transactionKey(){return this.spec.key}getMeta(e){return e.getMeta(this.transactionKey)}}class ic{callback;inProgressPromise;transactionKey;constructor(e,t,n){this.callback=n,this.transactionKey=t,this.attachCallback(e,null)}update(e,t){e.state.doc.eq(t.doc)||this.attachCallback(e,t)}destroy(){}attachCallback(e,t){const n=this.inProgressPromise=Math.random();this.callback(e,t).then((t=>{n===this.inProgressPromise?(this.inProgressPromise=null,this.transactionKey.dispatchCallbackData(e,t)):Sn("AsyncViewHandler attachCallback","cancelling promise update due to another callback taking its place")})).catch((()=>{this.inProgressPromise=null}))}}class sc extends rc{constructor(e){e.view=t=>new ic(t,e.key,e.asyncCallback),super(e)}getMeta(e){const t=e.getMeta(this.transactionKey);return t?.state}getCallbackData(e){const t=e.getMeta(this.transactionKey);return t?.callbackData}}class oc{dom;container;renderer;renderTimeoutId=null;renderDelayMs;isShown;constructor(e,t,n){if(this.container=t,this.isShown=n.enabled&&n.shownByDefault,this.dom=document.createElement("div"),this.dom.classList.add("s-prose","py16","js-md-preview"),this.container.appendChild(this.dom),this.renderer=n?.renderer,!this.renderer)throw"CommonmarkOptions.preview.renderer is required when CommonmarkOptions.preview.enabled is true";this.renderDelayMs=n?.renderDelayMs??100,this.updatePreview(e.state.doc.textContent)}update(e,t){const n=ac.getState(e.state),r=n?.isShown||!1;if(!Tn(t,e.state)&&this.isShown===r)return;this.isShown=r,this.renderTimeoutId&&(window.clearTimeout(this.renderTimeoutId),this.renderTimeoutId=null);const i=e.state.doc.textContent;this.isShown&&this.renderDelayMs?this.renderTimeoutId=window.setTimeout((()=>{this.updatePreview(i),this.renderTimeoutId=null}),this.renderDelayMs):this.updatePreview(i)}destroy(){this.dom.remove()}updatePreview(e){this.container.innerHTML="",this.isShown&&(this.container.appendChild(this.dom),this.renderer?.(e,this.dom).catch((e=>_n("PreviewView.updatePreview","Uncaught exception in preview renderer",e))))}}const ac=new class extends nc{constructor(){super("preview")}setPreviewVisibility(e,t){const n=this.setMeta(e.state.tr,{isShown:t});e.dispatch(n)}previewIsVisible(e){const t=this.getState(e.state);return t?.isShown??!1}};function lc(e){return t=>`${e} (${t.shortcut})`}const cc={commands:{blockquote:lc("Blockquote"),bold:lc("Bold"),code_block:{title:lc("Code block"),description:"Multiline block of code with syntax highlighting"},emphasis:lc("Italic"),heading:{dropdown:lc("Heading"),entry:({level:e})=>`Heading ${e}`},help:"Help",horizontal_rule:lc("Horizontal rule"),image:lc("Image"),inline_code:{title:lc("Inline code"),description:"Single line code span for use within a block of text"},kbd:lc("Keyboard"),link:lc("Link"),metaTagLink:lc("Meta tag"),moreFormatting:"More formatting",ordered_list:lc("Numbered list"),redo:lc("Redo"),spoiler:lc("Spoiler"),sub:lc("Subscript"),sup:lc("Superscript"),strikethrough:"Strikethrough",table_edit:"Edit table",table_insert:lc("Table"),table_column:{insert_after:"Insert column after",insert_before:"Insert column before",remove:"Remove column"},table_row:{insert_after:"Insert row after",insert_before:"Insert row before",remove:"Remove row"},tagLink:lc("Tag"),undo:lc("Undo"),unordered_list:lc("Bulleted list")},link_editor:{cancel_button:"Cancel",href_label:"Link URL",save_button:"Save",text_label:"Link text",validation_error:"The entered URL is invalid."},link_tooltip:{edit_button_title:"Edit link",remove_button_title:"Remove link"},menubar:{mode_toggle_markdown_title:"Markdown mode",mode_toggle_preview_title:"Markdown with preview mode",mode_toggle_richtext_title:"Rich text mode"},nodes:{codeblock_lang_auto:({lang:e})=>`${e} (auto)`,spoiler_reveal_text:"Reveal spoiler"},image_upload:{default_image_alt_text:"enter image description here",external_url_validation_error:"The entered URL is invalid.",upload_error_file_too_big:({sizeLimitMib:e})=>`Your image is too large to upload (over ${e} MiB)`,upload_error_generic:"Image upload failed. Please try again.",upload_error_unsupported_format:({supportedFormats:e})=>`Please select an image (${e}) to upload`,uploaded_image_preview_alt:"uploaded image preview"}};let hc=cc;function uc(e){hc=e}function dc(e,t){return t.split(".").reduce(((e,t)=>e?.[t]),e)}const pc={};function fc(e,t={}){e in pc||(pc[e]=dc(hc,e)||dc(cc,e));const n=pc[e];if(!n)throw`Missing translation for key: ${e}`;if("string"==typeof n)return n;if("function"==typeof n)return n(t);throw`Missing translation for key: ${e}`}const mc=new class extends nc{constructor(){super("interface-manager")}showInterfaceTr(e,t,n){n&&"shouldShow"in n&&delete n.shouldShow;const r={...t.getState(e),...n};if(!this.checkIfValid(r,!0))return null;let i=this.hideCurrentInterfaceTr(e)||e.tr;if(this.dispatchCancelableEvent(e,`${t.name}-show`,r))return null;i=t.setMeta(i,{...r,shouldShow:!0});const{containerGetter:s,dom:o}=this.getState(e);return i=this.setMeta(i,{dom:o,currentlyShown:t,containerGetter:s}),i}hideInterfaceTr(e,t,n){n&&"shouldShow"in n&&delete n.shouldShow;const r={...t.getState(e),...n};if(!this.checkIfValid(r,!1))return null;if(this.dispatchCancelableEvent(e,`${t.name}-hide`,r))return null;let i=e.tr;i=t.setMeta(i,{...r,shouldShow:!1});const{containerGetter:s,dom:o}=this.getState(e);return i=this.setMeta(i,{dom:o,currentlyShown:null,containerGetter:s}),i}hideCurrentInterfaceTr(e){const{currentlyShown:t}=this.getState(e);return t?this.hideInterfaceTr(e,t,{shouldShow:!1}):null}checkIfValid(e,t){return t?!("shouldShow"in e)||!e.shouldShow:e.shouldShow}dispatchCancelableEvent(e,t,n){return!qn(this.getState(e).dom,t,n)}};class gc extends nc{name;constructor(e){super(e),this.name=e}getContainer(e){return mc.getState(e.state).containerGetter(e)}showInterfaceTr(e,t){return mc.showInterfaceTr(e,this,t)}hideInterfaceTr(e,t){return mc.hideInterfaceTr(e,this,t)}}function bc(e){return e=e||function(e){return e.dom.parentElement},new rc({key:mc,state:{init:()=>({dom:null,currentlyShown:null,containerGetter:e}),apply(e,t){return{...t,...this.getMeta(e)}}},props:{handleKeyDown:(e,t)=>{if("Escape"===t.key){const t=mc.hideCurrentInterfaceTr(e.state);t&&e.dispatch(t)}return!1},handleClick(e){const t=mc.hideCurrentInterfaceTr(e.state);return t&&e.dispatch(t),!1}},view:t=>(t.dispatch(mc.setMeta(t.state.tr,{dom:t.dom,currentlyShown:null,containerGetter:e})),{})})}class yc{key;isShown;constructor(e){this.key=e,this.isShown=!1}update(e){const{shouldShow:t}=this.key.getState(e.state);this.isShown&&!t?(this.isShown=!1,this.destroyInterface(this.key.getContainer(e))):!this.isShown&&t&&(this.isShown=!0,this.buildInterface(this.key.getContainer(e)))}tryShowInterfaceTr(e,t){return this.key.showInterfaceTr(e,t)}tryHideInterfaceTr(e,t){return this.key.hideInterfaceTr(e,t)}}async function kc(e){const t=new FormData;t.append("file",e);const n=await fetch("/image/upload",{method:"POST",cache:"no-cache",body:t});if(!n.ok)throw Error(`Failed to upload image: ${n.status} - ${n.statusText}`);return(await n.json()).UploadedImage}const vc=["image/jpeg","image/png","image/gif"];var wc,xc;(xc=wc||(wc={}))[xc.Ok=0]="Ok",xc[xc.FileTooLarge=1]="FileTooLarge",xc[xc.InvalidFileType=2]="InvalidFileType";class Cc extends yc{uploadOptions;uploadContainer;uploadField;image=null;isVisible;validateLink;addTransactionDispatcher;constructor(e,t,n,r){super(Ac);const i=Vn(),s=t.acceptedFileTypes||vc;this.isVisible=!1,this.uploadOptions=t,this.validateLink=n,this.addTransactionDispatcher=r,this.uploadContainer=document.createElement("div"),this.uploadContainer.className="mt6 bt bb bc-black-400 js-image-uploader",this.uploadField=document.createElement("input"),this.uploadField.type="file",this.uploadField.className="js-image-uploader-input v-visible-sr",this.uploadField.accept=s.join(", "),this.uploadField.multiple=!1,this.uploadField.id="fileUpload"+i,this.uploadContainer.innerHTML=Rn` +
+ +
+ , drag & drop, , or paste an image. +
+ +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+
+
+
+ `;const o=this.uploadContainer.querySelector(".js-cta-container"),a=s.length?s.join(", ").replace(/image\//g,""):"",l=this.uploadOptions.sizeLimitMib??2;if(a){const e=document.createElement("br");o.appendChild(e)}if(o.appendChild(this.getCaptionElement(a,l)),this.uploadContainer.querySelector(".js-browse-button").appendChild(this.uploadField),this.uploadContainer.querySelector(".js-branding-html").innerHTML=this.uploadOptions?.brandingHtml,this.uploadContainer.querySelector(".js-content-policy-html").innerHTML=this.uploadOptions?.contentPolicyHtml,this.uploadField.addEventListener("change",(()=>{this.handleFileSelection(e)})),this.uploadContainer.addEventListener("dragenter",this.highlightDropArea.bind(this)),this.uploadContainer.addEventListener("dragover",this.highlightDropArea.bind(this)),this.uploadContainer.addEventListener("drop",(t=>{this.unhighlightDropArea(t),this.handleDrop(t,e)})),this.uploadContainer.addEventListener("paste",(t=>{this.handlePaste(t,e)})),this.uploadContainer.addEventListener("dragleave",this.unhighlightDropArea.bind(this)),this.uploadContainer.querySelector(".js-cancel-button").addEventListener("click",(()=>{const t=this.tryHideInterfaceTr(e.state);t&&e.dispatch(t)})),this.uploadContainer.querySelector(".js-add-image").addEventListener("click",(t=>{this.handleUploadTrigger(t,this.image,e)})),this.uploadOptions?.warningNoticeHtml){const e=this.uploadContainer.querySelector(".js-warning-notice-html");e.classList.remove("d-none"),e.innerHTML=this.uploadOptions?.warningNoticeHtml}this.uploadOptions.allowExternalUrls&&(this.uploadContainer.querySelector(".js-external-url-trigger-container").classList.remove("d-none"),this.uploadContainer.querySelector(".js-external-url-trigger").addEventListener("click",(()=>{this.toggleExternalUrlInput(!0)})),this.uploadContainer.querySelector(".js-external-url-input").addEventListener("input",(e=>{this.validateExternalUrl(e.target.value)})))}highlightDropArea(e){this.uploadContainer.classList.add("bs-ring"),this.uploadContainer.classList.add("bc-theme-secondary-400"),e.preventDefault(),e.stopPropagation()}unhighlightDropArea(e){this.uploadContainer.classList.remove("bs-ring"),this.uploadContainer.classList.remove("bc-theme-secondary-400"),e.preventDefault(),e.stopPropagation()}getCaptionElement(e,t){const n=document.createElement("span");n.className="fc-light fs-caption";let r=`(Max size ${t} MiB)`;return e&&(r=`Supported file types: ${e} ${r}`),n.innerText=r,n}handleFileSelection(e){this.resetImagePreview();const t=this.uploadField.files;e.state.selection.$from.parent.inlineContent&&t.length&&this.showImagePreview(t[0])}handleDrop(e,t){this.resetImagePreview();const n=e.dataTransfer.files;t.state.selection.$from.parent.inlineContent&&n.length&&this.showImagePreview(n[0])}handlePaste(e,t){this.resetImagePreview();const n=e.clipboardData.files;t.state.selection.$from.parent.inlineContent&&n.length&&this.showImagePreview(n[0])}validateImage(e){const t=this.uploadOptions.acceptedFileTypes??vc,n=1024*(this.uploadOptions.sizeLimitMib??2)*1024;return-1===t.indexOf(e.type)?wc.InvalidFileType:e.size>=n?wc.FileTooLarge:wc.Ok}showValidationError(e,t="warning"){this.uploadField.value=null;const n=this.uploadContainer.querySelector(".js-validation-message");"warning"===t?(n.classList.remove("s-notice__danger"),n.classList.add("s-notice__warning")):(n.classList.remove("s-notice__warning"),n.classList.add("s-notice__danger")),n.classList.remove("d-none"),n.textContent=e}hideValidationError(){const e=this.uploadContainer.querySelector(".js-validation-message");e.classList.add("d-none"),e.classList.remove("s-notice__warning"),e.classList.remove("s-notice__danger"),e.innerHTML=""}showImagePreview(e){return new Promise(((t,n)=>this.showImagePreviewAsync(e,t,n)))}showImagePreviewAsync(e,t,n){const r=this.uploadContainer.querySelector(".js-image-preview"),i=this.uploadContainer.querySelector(".js-add-image");switch(this.hideValidationError(),this.validateImage(e)){case wc.FileTooLarge:return this.showValidationError(fc("image_upload.upload_error_file_too_big",{sizeLimitMib:(this.uploadOptions.sizeLimitMib??2).toString()})),void n("file too large");case wc.InvalidFileType:return this.showValidationError(fc("image_upload.upload_error_unsupported_format",{supportedFormats:(this.uploadOptions.acceptedFileTypes||vc).join(", ").replace(/image\//g,"")})),void n("invalid filetype")}this.resetImagePreview();const s=new FileReader;s.addEventListener("load",(()=>{const n=new Image;n.className="hmx1 w-auto",n.title=e.name,n.src=s.result,n.alt=fc("image_upload.uploaded_image_preview_alt"),r.appendChild(n),r.classList.remove("d-none"),this.image=e,i.disabled=!1,t()}),!1),s.readAsDataURL(e)}toggleExternalUrlInput(e){const t=this.uploadContainer.querySelector(".js-cta-container"),n=this.uploadContainer.querySelector(".js-external-url-input-container");t.classList.toggle("d-none",e),n.classList.toggle("d-none",!e),n.querySelector(".js-external-url-input").value=""}validateExternalUrl(e){this.resetImagePreview();const t=this.uploadContainer.querySelector(".js-add-image");this.validateLink(e)?(this.hideValidationError(),t.disabled=!1):(this.showValidationError(fc("image_upload.external_url_validation_error"),"danger"),t.disabled=!0)}resetImagePreview(){this.uploadContainer.querySelector(".js-image-preview").innerHTML="",this.image=null,this.uploadContainer.querySelector(".js-add-image").disabled=!0}resetUploader(){this.resetImagePreview(),this.toggleExternalUrlInput(!1),this.hideValidationError(),this.uploadField.value=null}addImagePlaceholder(e,t){const n=e.state.tr;n.selection.empty||n.deleteSelection(),this.key.setMeta(n,{add:{id:t,pos:n.selection.from},file:null,shouldShow:!1}),e.dispatch(n)}removeImagePlaceholder(e,t,n){let r=n||e.state.tr;r=this.key.setMeta(r,{remove:{id:t},file:null,shouldShow:!1}),e.dispatch(r)}async handleUploadTrigger(e,t,n){const r=this.uploadContainer.querySelector(".js-external-url-input").value,i=r&&this.validateLink(r);if(!t&&!i)return;let s;const o=new Promise((e=>{s=t=>e(t)}));if(qn(n.dom,"image-upload",{file:t||r,resume:s}))this.startImageUpload(n,t||r);else{const e={};this.addImagePlaceholder(n,e);const i=await o;this.removeImagePlaceholder(n,e),i&&this.startImageUpload(n,t||r)}this.resetUploader();const a=this.tryHideInterfaceTr(n.state);a&&n.dispatch(a),n.focus()}startImageUpload(e,t){const n={};if(this.addImagePlaceholder(e,n),this.uploadOptions?.handler)return this.uploadOptions.handler(t).then((t=>{const r=this.key.getState(e.state).decorations.find(null,null,(e=>e.id==n)),i=r.length?r[0].from:null;if(null===i)return;const s=this.addTransactionDispatcher(e.state,t,i);this.removeImagePlaceholder(e,n,s)}),(()=>{const t=this.tryShowInterfaceTr(e.state)||e.state.tr;this.removeImagePlaceholder(e,n,t),this.showValidationError(fc("image_upload.upload_error_generic"),"error")}));console.error("No upload handler registered. Ensure you set a proper handler on the editor's options.imageUploadHandler")}update(e){const t=this.key.getState(e.state);this.image=t?.file||this.image,super.update(e)}destroy(){this.uploadField.remove(),this.uploadContainer.remove(),this.image=null}buildInterface(e){this.image&&this.showImagePreview(this.image),e.appendChild(this.uploadContainer),this.uploadContainer.querySelector(".js-image-uploader-input").focus()}destroyInterface(e){this.resetUploader(),this.uploadContainer.classList.remove("outline-ring"),e.removeChild(this.uploadContainer)}}function Ec(e,t){const n=Ac.showInterfaceTr(e.state,{file:t||null});n&&e.dispatch(n)}function Sc(e){return!!Ac.getState(e)}function _c(e,t,n){return e?.handler?new rc({key:Ac,state:{init:()=>({decorations:gl.empty,file:null,shouldShow:!1}),apply(e,t){let n=t.decorations||gl.empty;n=n.map(e.mapping,e.doc);const r=this.getMeta(e),i={file:t.file,decorations:n,shouldShow:t.shouldShow};if(!r)return i;if(i.file="file"in r?r.file:null,"shouldShow"in r&&(i.shouldShow=r.shouldShow),r.add){const t=pl.widget(r.add.pos,function(){const e=document.createElement("div");return e.className="ws-normal d-block m8 js-image-upload-placeholder",e.innerHTML='\n
\n \n Loading…\n \n Uploading image…\n
\n',e}(),{id:r.add.id});i.decorations=n.add(e.doc,[t])}else r.remove&&(i.decorations=n.remove(n.find(null,null,(e=>e.id==r.remove.id))));return i}},props:{decorations(e){return this.getState(e).decorations},handleDrop(e,t){const n=t.dataTransfer.files;return!(!e.state.selection.$from.parent.inlineContent||!n.length||(Ec(e,n[0]),0))},handlePaste(e,t){const n=t.clipboardData.files;return!(!e.state.selection.$from.parent.inlineContent||!n.length||(Ec(e,n[0]),0))}},view:r=>new Cc(r,e,t,n)}):new gs({})}const Ac=new gc("image-uploader");function Dc(e,t){if(e.textContent||1!==e.childCount||0!==e.firstChild.childCount)return gl.empty;const n=e.resolve(1);return gl.create(e,[pl.node(n.before(),n.after(),{"data-placeholder":t})])}function Mc(e){return e?.trim()?new gs({key:new ks("placeholder"),state:{init:(t,n)=>Dc(n.doc,e),apply:(t,n)=>t.docChanged?Dc(t.doc,e):n.map(t.mapping,t.doc)},props:{decorations(e){return this.getState(e)}},view:t=>(t.dom.setAttribute("aria-placeholder",e),{destroy(){t.dom.removeAttribute("aria-placeholder")}})}):new gs({})}const Tc=new ks(Lc.name);function Oc(e){return!Tc.getState(e)}function Nc(e,t,n){if(Tc.getState(t)===e)return!1;let r=t.tr.setMeta(Tc,e);return r=r.setMeta("addToHistory",!1),n&&n(r),!0}function Lc(){return new gs({key:Tc,state:{init:()=>!1,apply(e,t){const n=e.getMeta(Tc);return void 0===n?t:n}}})}const Ic=new gs({props:{handleDOMEvents:{mousedown(e,t){const{$from:n,$to:r}=e.state.selection,i=3===t.detail,s=n.sameParent(r);return i&&s}}}});class Fc extends Gr{parseCode(e,t){const n=document.createElement("div");return n.innerHTML=Rn`
${e}
`,super.parse(n,t)}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new Fc(e,Fc.schemaRules(e)))}static toString(e){return e.textBetween(0,e.content.size,"\n\n")}}const Bc=e=>$c.bind(null,e),Pc=(e,t)=>zc.bind(null,e,t),Rc=(e,t)=>e.text(t);function zc(e,t,n,r){return!!function(e,t,n,r){if(n.selection.empty)return!1;t=t||e;const{from:i,to:s}=n.selection,o=n.doc.textBetween(i,s),a=o.slice(0,e.length),l=o.slice(-1*t.length);if(a!==e||l!==t)return!1;if(r){const a=n.tr,l=o.slice(e.length,-1*t.length);a.replaceSelectionWith(Rc(a.doc.type.schema,l)),a.setSelection(es.create(n.apply(a).doc,i,s-e.length-t.length)),r(a)}return!0}(e,t,n,r)||function(e,t,n,r){const i="your text";t=t||e;const{from:s,to:o}=n.selection,a=n.tr.insertText(t,o);if(n.selection.empty&&a.insertText(i,o),a.insertText(e,s).scrollIntoView(),r){let i=s,l=o+e.length+t.length;n.selection.empty&&(i=s+e.length,l=i+9),a.setSelection(es.create(n.apply(a).doc,i,l)),r(a)}return!0}(e,t,n,r)}function $c(e,t,n){return!!function(e,t,n){if(t.selection.empty)return!1;let{from:r}=t.selection;const i=t.doc.cut(r,t.selection.to).textContent;if(!i.includes("\n"))return!1;const s=" ";let o=t.tr;const a=i.split("\n"),l=a.some((t=>!t.startsWith(e+s)));let c=r;if(a.forEach((t=>{let n;const r=Vc(t);n=l&&r===e+s?t:l&&r.length?e+s+t.slice(r.length):l?e+s+t:t.slice(r.length);const i=c+t.length;o=n.length?o.replaceRangeWith(c,i,Rc(o.doc.type.schema,n)):o.deleteRange(c,i),c+=n.length+1})),r>1&&"\n"!==t.doc.textBetween(r-1,r)&&(o=o.insertText("\n",r,r),r+=1,c+=1),n){const e=c-1;o.setSelection(es.create(t.apply(o).doc,r,e)),o.scrollIntoView(),n(o)}return!0}(e,t,n)||function(e,t,n){const{from:r}=t.selection,i=t.doc.cut(0,r).textContent.lastIndexOf("\n");let s;s=-1===i?1:i+1+1;const o=Vc(t.doc.cut(s).textContent);let a=t.tr;o.length&&(a=a.delete(s,s+o.length));let l=!1;return o===e+" "&&(l=!0),l||(a=a.insertText(e+" ",s)),n&&(a=a.scrollIntoView(),n(a)),!0}(e,t,n)}function Vc(e){let t=/^(\d+)(?:\.|\))\s/.exec(e)?.[0];return t||(t=/^[^a-zA-Z0-9]+\s{1}(?=[a-zA-Z0-9_*[!]|$)+/.exec(e)?.[0]),t||""}function qc(e,t,n,r,i){let s=r.tr;const{from:o}=r.selection;return s=r.selection.empty?s.insertText(e,o):s.replaceSelectionWith(Rc(s.doc.type.schema,e)),i&&(s=void 0!==t&&void 0!==n?s.setSelection(es.create(r.apply(s).doc,o+t,o+n)):s.setSelection(es.create(r.apply(s).doc,o)),s=s.scrollIntoView(),i(s)),!0}function jc(e,t){const n=globalThis.location.origin??"url";if(e.selection.empty)return qc("[text]("+n+")",7,7+n.length,e,t);const{from:r,to:i}=e.selection,s=e.doc.textBetween(r,i),o=`[${s}](${n})`,a=3+s.length;return qc(o,a,a+n.length,e,t)}function Hc(e,t){return(n,r)=>{const i=t?"[meta-tag:":"[tag:";if(t&&e.disableMetaTags)return!1;if(n.selection.empty){const e="tag-name";return qc(`${i}${e}]`,i.length,i.length+e.length,n,r)}const{from:s,to:o}=n.selection,a=n.doc.textBetween(s,o);if(!e.validate(a.trim(),t))return!1;const l=i.length;return qc(`${i}${a}]`,l,l+a.length,n,r)}}function Uc(e,t){if(e.selection.empty)return qc("\n| Column A | Column B |\n| -------- | -------- |\n| Cell 1 | Cell 2 |\n| Cell 3 | Cell 4 |\n",1,1,e,t)}function Wc(e,t){const n=e.doc.cut(0,e.selection.from).textContent,r=n.lastIndexOf("\n"),i=n.slice(r+1);let s,o=null;if(r>-1){const e=n.lastIndexOf("\n",r-1);o=n.slice(e+1,r)}return s=n&&(o||i)?i?"\n\n":"\n":"",(a=s+"---\n",qc.bind(null,a,4,4))(e,t);// removed by dead control flow + var a; }function Kc(e,t){if(t){let n=0,r=0;e.doc.nodesBetween(0,e.doc.content.size,((e,t)=>"text"!==e.type.name||(n=t,r=e.nodeSize,!1))),t(e.tr.setSelection(es.create(e.doc,n,n+r)))}return!0}const Jc=Pc("**",null),Gc=Pc("*",null),Zc=Pc("`",null),Xc=function(){return!1},Qc=Bc("#"),Yc=Pc("~~",null),eh=Bc(">"),th=Bc("1."),nh=Bc("-"),rh=function(e,t,n){return!!function(e,t,n){if(t.selection.empty)return!1;const{from:r,to:i}=t.selection,s=t.doc.textBetween(r,i),o=e.length+1,a=s.slice(0,o),l=s.slice(-1*o);if(a!==e+"\n"||l!=="\n"+e)return!1;let c=t.tr;return c=c.delete(i-o,i),c=c.delete(r,r+o),n&&(c.setSelection(es.create(t.apply(c).doc,r,i-2*o)),c.scrollIntoView(),n(c)),!0}(e,t,n)||function(e,t,n){if(t.selection.empty){const r="type here",i=2;return qc(`\n${e}\n${r}\n${e}\n`,e.length+i,e.length+r.length+i,t,n)}if(!n)return!0;const r=t.selection.from;let i=t.selection.to,s=t.tr;const o="\n";s=s.insertText(o,r,r),i+=1,s=s.insertText(o,i,i),i+=1;const a=r>0&&t.doc.textBetween(r-1,r)!==o?o:"",l=i+1!"),sh=Pc("",""),oh=Pc("",""),ah=Pc("","");function lh(e,t,n){return!(!Sc(n.state)||t&&(Ec(n),0))}const ch=(e,t)=>!e.selection.empty&&(t&&t(e.tr.deleteSelection().scrollIntoView()),!0);function hh(e,t,n=!1){for(let r=e;r;r="start"==t?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(n&&1!=r.childCount)return!1}return!1}function uh(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function dh(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){let n=e.node(t);if(e.index(t)+1{let{$head:n,$anchor:r}=e.selection;if(!n.parent.type.spec.code||!n.sameParent(r))return!1;let i=n.node(-1),s=n.indexAfter(-1),o=ph(i.contentMatchAt(s));if(!o||!i.canReplaceWith(s,s,o))return!1;if(t){let r=n.after(),i=e.tr.replaceWith(r,r,o.createAndFill());i.setSelection(Zi.near(i.doc.resolve(r),1)),t(i.scrollIntoView())}return!0},mh=(e,t)=>{let{$from:n,$to:r}=e.selection;if(e.selection instanceof ns&&e.selection.node.isBlock)return!(!n.parentOffset||!Li(e.doc,n.pos)||(t&&t(e.tr.split(n.pos).scrollIntoView()),0));if(!n.depth)return!1;let i,s,o=[],a=!1,l=!1;for(let e=n.depth;;e--){if(n.node(e).isBlock){a=n.end(e)==n.pos+(n.depth-e),l=n.start(e)==n.pos-(n.depth-e),s=ph(n.node(e-1).contentMatchAt(n.indexAfter(e-1)));let t=gh;o.unshift(t||(a&&s?{type:s}:null)),i=e;break}if(1==e)return!1;o.unshift(null)}let c=e.tr;(e.selection instanceof es||e.selection instanceof is)&&c.deleteSelection();let h=c.mapping.map(n.pos),u=Li(c.doc,h,o.length,o);if(u||(o[0]=s?{type:s}:null,u=Li(c.doc,h,o.length,o)),c.split(h,o.length,o),!a&&l&&n.node(i).type!=s){let e=c.mapping.map(n.before(i)),t=c.doc.resolve(e);s&&n.node(i-1).canReplaceWith(t.index(),t.index()+1,s)&&c.setNodeMarkup(c.mapping.map(n.before(i)),s)}return t&&t(c.scrollIntoView()),!0};var gh;function bh(e,t,n,r){let i,s,o=t.nodeBefore,a=t.nodeAfter,l=o.type.spec.isolating||a.type.spec.isolating;if(!l&&function(e,t,n){let r=t.nodeBefore,i=t.nodeAfter,s=t.index();return!(!(r&&i&&r.type.compatibleContent(i.type))||(!r.content.size&&t.parent.canReplace(s-1,s)?(n&&n(e.tr.delete(t.pos-r.nodeSize,t.pos).scrollIntoView()),0):!t.parent.canReplace(s,s+1)||!i.isTextblock&&!Ii(e.doc,t.pos)||(n&&n(e.tr.join(t.pos).scrollIntoView()),0)))}(e,t,n))return!0;let c=!l&&t.parent.canReplace(t.index(),t.index()+1);if(c&&(i=(s=o.contentMatchAt(o.childCount)).findWrapping(a.type))&&s.matchType(i[0]||a.type).validEnd){if(n){let r=t.pos+a.nodeSize,s=ir.empty;for(let e=i.length-1;e>=0;e--)s=ir.from(i[e].create(null,s));s=ir.from(o.copy(s));let l=e.tr.step(new Ei(t.pos-1,r,t.pos,r,new hr(s,1,0),i.length,!0)),c=l.doc.resolve(r+2*i.length);c.nodeAfter&&c.nodeAfter.type==o.type&&Ii(l.doc,c.pos)&&l.join(c.pos),n(l.scrollIntoView())}return!0}let h=a.type.spec.isolating||r>0&&l?null:Zi.findFrom(t,1),u=h&&h.$from.blockRange(h.$to),d=u&&Di(u);if(null!=d&&d>=t.depth)return n&&n(e.tr.lift(u,d).scrollIntoView()),!0;if(c&&hh(a,"start",!0)&&hh(o,"end")){let r=o,i=[];for(;i.push(r),!r.isTextblock;)r=r.lastChild;let s=a,l=1;for(;!s.isTextblock;s=s.firstChild)l++;if(r.canReplace(r.childCount,r.childCount,s.content)){if(n){let r=ir.empty;for(let e=i.length-1;e>=0;e--)r=ir.from(i[e].copy(r));n(e.tr.step(new Ei(t.pos-i.length,t.pos+a.nodeSize,t.pos+l,t.pos+a.nodeSize-l,new hr(r,i.length,0),0,!0)).scrollIntoView())}return!0}}return!1}function yh(e){return function(t,n){let r=t.selection,i=e<0?r.$from:r.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return!!i.node(s).isTextblock&&(n&&n(t.tr.setSelection(es.create(t.doc,e<0?i.start(s):i.end(s)))),!0)}}const kh=yh(-1),vh=yh(1);function wh(e,t=null){return function(n,r){let{$from:i,$to:s}=n.selection,o=i.blockRange(s),a=o&&Mi(o,e,t);return!!a&&(r&&r(n.tr.wrap(o,a).scrollIntoView()),!0)}}function xh(e,t=null){return function(n,r){let i=!1;for(let r=0;r{if(i)return!1;if(r.isTextblock&&!r.hasMarkup(e,t))if(r.type==e)i=!0;else{let t=n.doc.resolve(s),r=t.index();i=t.parent.canReplaceWith(r,r+1,e)}}))}if(!i)return!1;if(r){let i=n.tr;for(let r=0;r{if(a||!r&&e.isAtom&&e.isInline&&t>=s.pos&&t+e.nodeSize<=o.pos)return!1;a=e.inlineContent&&e.type.allowsMarkType(n)})),a)return!0}return!1}(n.doc,l,e,i))return!1;if(s)if(a)e.isInSet(n.storedMarks||a.marks())?s(n.tr.removeStoredMark(e)):s(n.tr.addStoredMark(e.create(t)));else{let o,a=n.tr;i||(l=function(e){let t=[];for(let n=0;n{if(e.isAtom&&e.content.size&&e.isInline&&n>=r.pos&&n+e.nodeSize<=i.pos)return n+1>r.pos&&t.push(new Xi(r,r.doc.resolve(n+1))),r=r.doc.resolve(n+1+e.content.size),!1})),r.posn.doc.rangeHasMark(t.$from.pos,t.$to.pos,e))):!l.every((t=>{let n=!1;return a.doc.nodesBetween(t.$from.pos,t.$to.pos,((r,i,s)=>{if(n)return!1;n=!e.isInSet(r.marks)&&!!s&&s.type.allowsMarkType(e)&&!(r.isText&&/^\s*$/.test(r.textBetween(Math.max(0,t.$from.pos-i),Math.min(r.nodeSize,t.$to.pos-i))))})),!n}));for(let n=0;n{let r=function(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock("backward",e):n.parentOffset>0)?null:n}(e,n);if(!r)return!1;let i=uh(r);if(!i){let n=r.blockRange(),i=n&&Di(n);return null!=i&&(t&&t(e.tr.lift(n,i).scrollIntoView()),!0)}let s=i.nodeBefore;if(bh(e,i,t,-1))return!0;if(0==r.parent.content.size&&(hh(s,"end")||ns.isSelectable(s)))for(let n=r.depth;;n--){let o=Fi(e.doc,r.before(n),r.after(n),hr.empty);if(o&&o.slice.size1)break}return!(!s.isAtom||i.depth!=r.depth-1||(t&&t(e.tr.delete(i.pos-s.nodeSize,i.pos).scrollIntoView()),0))}),((e,t,n)=>{let{$head:r,empty:i}=e.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("backward",e):r.parentOffset>0)return!1;s=uh(r)}let o=s&&s.nodeBefore;return!(!o||!ns.isSelectable(o)||(t&&t(e.tr.setSelection(ns.create(e.doc,s.pos-o.nodeSize)).scrollIntoView()),0))})),_h=Eh(ch,((e,t,n)=>{let r=function(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock("forward",e):n.parentOffset{let{$head:r,empty:i}=e.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("forward",e):r.parentOffset{let{$head:n,$anchor:r}=e.selection;return!(!n.parent.type.spec.code||!n.sameParent(r)||(t&&t(e.tr.insertText("\n").scrollIntoView()),0))}),((e,t)=>{let n=e.selection,{$from:r,$to:i}=n;if(n instanceof is||r.parent.inlineContent||i.parent.inlineContent)return!1;let s=ph(i.parent.contentMatchAt(i.indexAfter()));if(!s||!s.isTextblock)return!1;if(t){let n=(!r.parentOffset&&i.index(){let{$cursor:n}=e.selection;if(!n||n.parent.content.size)return!1;if(n.depth>1&&n.after()!=n.end(-1)){let r=n.before();if(Li(e.doc,r))return t&&t(e.tr.split(r).scrollIntoView()),!0}let r=n.blockRange(),i=r&&Di(r);return null!=i&&(t&&t(e.tr.lift(r,i).scrollIntoView()),!0)}),mh),"Mod-Enter":fh,Backspace:Sh,"Mod-Backspace":Sh,"Shift-Backspace":Sh,Delete:_h,"Mod-Delete":_h,"Mod-a":(e,t)=>(t&&t(e.tr.setSelection(new is(e.doc))),!0)},Dh={"Ctrl-h":Ah.Backspace,"Alt-Backspace":Ah["Mod-Backspace"],"Ctrl-d":Ah.Delete,"Ctrl-Alt-Backspace":Ah["Mod-Delete"],"Alt-Delete":Ah["Mod-Delete"],"Alt-d":Ah["Mod-Delete"],"Ctrl-a":kh,"Ctrl-e":vh};for(let e in Ah)Dh[e]=Ah[e];const Mh=("undefined"!=typeof navigator?/Mac|iP(hone|[oa]d)/.test(navigator.platform):"undefined"!=typeof os&&os.platform&&"darwin"==os.platform())?Dh:Ah;for(var Th={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Oh={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Nh="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),Lh="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),Ih=0;Ih<10;Ih++)Th[48+Ih]=Th[96+Ih]=String(Ih);for(Ih=1;Ih<=24;Ih++)Th[Ih+111]="F"+Ih;for(Ih=65;Ih<=90;Ih++)Th[Ih]=String.fromCharCode(Ih+32),Oh[Ih]=String.fromCharCode(Ih);for(var Fh in Th)Oh.hasOwnProperty(Fh)||(Oh[Fh]=Th[Fh]);const Bh="undefined"!=typeof navigator&&/Mac|iP(hone|[oa]d)/.test(navigator.platform);function Ph(e){let t,n,r,i,s=e.split(/-(?!$)/),o=s[s.length-1];"Space"==o&&(o=" ");for(let e=0;enew gs({props:{handleKeyDown:(t,n)=>{let r=n;return n.key.match(/^[A-Za-z]$/)&&(r=new KeyboardEvent("keydown",{keyCode:n.keyCode,altKey:n.altKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey,shiftKey:n.shiftKey,key:n.shiftKey?n.key.toUpperCase():n.key.toLowerCase()})),function(e){let t=function(e){let t=Object.create(null);for(let n in e)t[Ph(n)]=e[n];return t}(e);return function(e,n){let r,i=function(e){var t=!(Nh&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||Lh&&e.shiftKey&&e.key&&1==e.key.length||"Unidentified"==e.key)&&e.key||(e.shiftKey?Oh:Th)[e.keyCode]||e.key||"Unidentified";return"Esc"==t&&(t="Escape"),"Del"==t&&(t="Delete"),"Left"==t&&(t="ArrowLeft"),"Up"==t&&(t="ArrowUp"),"Right"==t&&(t="ArrowRight"),"Down"==t&&(t="ArrowDown"),t}(n),s=t[Rh(i,n)];if(s&&s(e.state,e.dispatch,e))return!0;if(1==i.length&&" "!=i){if(n.shiftKey){let r=t[Rh(i,n,!1)];if(r&&r(e.state,e.dispatch,e))return!0}if((n.shiftKey||n.altKey||n.metaKey||i.charCodeAt(0)>127)&&(r=Th[n.keyCode])&&r!=i){let i=t[Rh(r,n)];if(i&&i(e.state,e.dispatch,e))return!0}}return!1}}(e)(t,r)}}});function $h(e){const t=zh({"Mod-z":Ls,"Mod-y":Is,"Shift-Mod-z":Is,Tab:Xc,"Shift-Tab":Xc,"Mod-b":Jc,"Mod-i":Gc,"Mod-l":jc,"Ctrl-q":eh,"Mod-k":Zc,"Mod-g":lh,"Ctrl-g":lh,"Mod-o":th,"Mod-u":nh,"Mod-h":Qc,"Mod-r":Wc,"Mod-m":rh,"Mod-[":Hc(e.tagLinks,!1),"Mod-]":Hc(e.tagLinks,!0),"Mod-/":ih,"Mod-,":oh,"Mod-.":sh,"Mod-'":ah,"Shift-Enter":Mh.Enter,"Mod-a":Kc}),n=zh({"Mod-e":Uc}),r=[t,zh(Mh)];return e.tables&&r.unshift(n),r}const Vh=new Kr({nodes:{doc:{content:"code_block+"},text:{group:"inline"},code_block:{content:"text*",group:"block",marks:"",code:!0,defining:!0,isolating:!0,selectable:!1,attrs:{params:{default:"markdown"}},parseDOM:[{tag:"pre",preserveWhitespace:"full"}],toDOM:()=>["pre",{class:"s-code-block markdown"},["code",0]]}},marks:{}}),qh=new gs({props:{clipboardSerializer:new si({code_block:e=>e.textContent},{})}}),jh=1024;let Hh=0;class Uh{constructor(e,t){this.from=e,this.to=t}}class Wh{constructor(e={}){this.id=Hh++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof e&&(e=Gh.match(e)),t=>{let n=e(t);return void 0===n?null:[this,n]}}}Wh.closedBy=new Wh({deserialize:e=>e.split(" ")}),Wh.openedBy=new Wh({deserialize:e=>e.split(" ")}),Wh.group=new Wh({deserialize:e=>e.split(" ")}),Wh.isolate=new Wh({deserialize:e=>{if(e&&"rtl"!=e&&"ltr"!=e&&"auto"!=e)throw new RangeError("Invalid value for isolate: "+e);return e||"auto"}}),Wh.contextHash=new Wh({perNode:!0}),Wh.lookAhead=new Wh({perNode:!0}),Wh.mounted=new Wh({perNode:!0});class Kh{constructor(e,t,n){this.tree=e,this.overlay=t,this.parser=n}static get(e){return e&&e.props&&e.props[Wh.mounted.id]}}const Jh=Object.create(null);class Gh{constructor(e,t,n,r=0){this.name=e,this.props=t,this.id=n,this.flags=r}static define(e){let t=e.props&&e.props.length?Object.create(null):Jh,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(null==e.name?8:0),r=new Gh(e.name||"",t,e.id,n);if(e.props)for(let n of e.props)if(Array.isArray(n)||(n=n(r)),n){if(n[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[n[0].id]=n[1]}return r}prop(e){return this.props[e.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(e){if("string"==typeof e){if(this.name==e)return!0;let t=this.prop(Wh.group);return!!t&&t.indexOf(e)>-1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let r of n.split(" "))t[r]=e[n];return e=>{for(let n=e.prop(Wh.group),r=-1;r<(n?n.length:0);r++){let i=t[r<0?e.name:n[r]];if(i)return i}}}}Gh.none=new Gh("",Object.create(null),0,8);class Zh{constructor(e){this.types=e;for(let t=0;t=t){let o=new au(s.tree,s.overlay[0].from+e.from,-1,e);(i||(i=[r])).push(su(o,t,n,!1))}}return i?du(i):r}(this,e,t)}iterate(e){let{enter:t,leave:n,from:r=0,to:i=this.length}=e,s=e.mode||0,o=(s&Yh.IncludeAnonymous)>0;for(let e=this.cursor(s|Yh.IncludeAnonymous);;){let s=!1;if(e.from<=i&&e.to>=r&&(!o&&e.type.isAnonymous||!1!==t(e))){if(e.firstChild())continue;s=!0}for(;s&&n&&(o||!e.type.isAnonymous)&&n(e),!e.nextSibling();){if(!e.parent())return;s=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:yu(Gh.none,this.children,this.positions,0,this.children.length,0,this.length,((e,t,n)=>new tu(this.type,e,t,n,this.propValues)),e.makeTree||((e,t,n)=>new tu(Gh.none,e,t,n)))}static build(e){return function(e){var t;let{buffer:n,nodeSet:r,maxBufferLength:i=jh,reused:s=[],minRepeatType:o=r.types.length}=e,a=Array.isArray(n)?new nu(n,n.length):n,l=r.types,c=0,h=0;function u(e,t,n,g,b,y){let{id:k,start:v,end:w,size:x}=a,C=h,E=c;for(;x<0;){if(a.next(),-1==x){let t=s[k];return n.push(t),void g.push(v-e)}if(-3==x)return void(c=k);if(-4==x)return void(h=k);throw new RangeError(`Unrecognized record size: ${x}`)}let S,_,A=l[k],D=v-e;if(w-v<=i&&(_=function(e,t){let n=a.fork(),r=0,s=0,l=0,c=n.end-i,h={size:0,start:0,skip:0};e:for(let i=n.pos-e;n.pos>i;){let e=n.size;if(n.id==t&&e>=0){h.size=r,h.start=s,h.skip=l,l+=4,r+=4,n.next();continue}let a=n.pos-e;if(e<0||a=o?4:0,d=n.start;for(n.next();n.pos>a;){if(n.size<0){if(-3!=n.size)break e;u+=4}else n.id>=o&&(u+=4);n.next()}s=d,r+=e,l+=u}return(t<0||r==e)&&(h.size=r,h.start=s,h.skip=l),h.size>4?h:void 0}(a.pos-t,b))){let t=new Uint16Array(_.size-_.skip),n=a.pos-_.size,i=t.length;for(;a.pos>n;)i=m(_.start,t,i);S=new ru(t,w-_.start,r),D=_.start-e}else{let e=a.pos-x;a.next();let t=[],n=[],r=k>=o?k:-1,s=0,l=w;for(;a.pos>e;)r>=0&&a.id==r&&a.size>=0?(a.end<=l-i&&(p(t,n,v,s,a.end,l,r,C,E),s=t.length,l=a.end),a.next()):y>2500?d(v,e,t,n):u(v,e,t,n,r,y+1);if(r>=0&&s>0&&s-1&&s>0){let e=function(e,t){return(n,r,i)=>{let s,o,a=0,l=n.length-1;if(l>=0&&(s=n[l])instanceof tu){if(!l&&s.type==e&&s.length==i)return s;(o=s.prop(Wh.lookAhead))&&(a=r[l]+s.length+o)}return f(e,n,r,i,a,t)}}(A,E);S=yu(A,t,n,0,t.length,0,w-v,e,e)}else S=f(A,t,n,w-v,C-w,E)}n.push(S),g.push(D)}function d(e,t,n,s){let o=[],l=0,c=-1;for(;a.pos>t;){let{id:e,start:t,end:n,size:r}=a;if(r>4)a.next();else{if(c>-1&&t=0;e-=3)t[n++]=o[e],t[n++]=o[e+1]-i,t[n++]=o[e+2]-i,t[n++]=n;n.push(new ru(t,o[2]-i,r)),s.push(i-e)}}function p(e,t,n,i,s,o,a,l,c){let h=[],u=[];for(;e.length>i;)h.push(e.pop()),u.push(t.pop()+n-s);e.push(f(r.types[a],h,u,o-s,l-o,c)),t.push(s-n)}function f(e,t,n,r,i,s,o){if(s){let e=[Wh.contextHash,s];o=o?[e].concat(o):[e]}if(i>25){let e=[Wh.lookAhead,i];o=o?[e].concat(o):[e]}return new tu(e,t,n,r,o)}function m(e,t,n){let{id:r,start:i,end:s,size:l}=a;if(a.next(),l>=0&&r4){let r=a.pos-(l-4);for(;a.pos>r;)n=m(e,t,n)}t[--n]=o,t[--n]=s-e,t[--n]=i-e,t[--n]=r}else-3==l?c=r:-4==l&&(h=r);return n}let g=[],b=[];for(;a.pos>0;)u(e.start||0,e.bufferStart||0,g,b,-1,0);let y=null!==(t=e.length)&&void 0!==t?t:g.length?b[0]+g[0].length:0;return new tu(l[e.topID],g.reverse(),b.reverse(),y)}(e)}}tu.empty=new tu(Gh.none,[],[],0);class nu{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new nu(this.buffer,this.index)}}class ru{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return Gh.none}toString(){let e=[];for(let t=0;t0));a=s[a+3]);return o}slice(e,t,n){let r=this.buffer,i=new Uint16Array(t-e),s=0;for(let o=e,a=0;o=t&&nt;case 1:return n<=t&&r>t;case 2:return r>t;case 4:return!0}}function su(e,t,n,r){for(var i;e.from==e.to||(n<1?e.from>=t:e.from>t)||(n>-1?e.to<=t:e.to0?o.length:-1;e!=l;e+=t){let l=o[e],c=a[e]+s.from;if(iu(r,n,c,c+l.length))if(l instanceof ru){if(i&Yh.ExcludeBuffers)continue;let o=l.findChild(0,l.buffer.length,t,n-c,r);if(o>-1)return new uu(new hu(s,l,e,c),null,o)}else if(i&Yh.IncludeAnonymous||!l.type.isAnonymous||mu(l)){let o;if(!(i&Yh.IgnoreMounts)&&(o=Kh.get(l))&&!o.overlay)return new au(o.tree,c,e,s);let a=new au(l,c,e,s);return i&Yh.IncludeAnonymous||!a.type.isAnonymous?a:a.nextChild(t<0?l.children.length-1:0,t,n,r)}}if(i&Yh.IncludeAnonymous||!s.type.isAnonymous)return null;if(e=s.index>=0?s.index+t:t<0?-1:s._parent._tree.children.length,s=s._parent,!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,n=0){let r;if(!(n&Yh.IgnoreOverlays)&&(r=Kh.get(this._tree))&&r.overlay){let n=e-this.from;for(let{from:e,to:i}of r.overlay)if((t>0?e<=n:e=n:i>n))return new au(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function lu(e,t,n,r){let i=e.cursor(),s=[];if(!i.firstChild())return s;if(null!=n)for(let e=!1;!e;)if(e=i.type.is(n),!i.nextSibling())return s;for(;;){if(null!=r&&i.type.is(r))return s;if(i.type.is(t)&&s.push(i.node),!i.nextSibling())return null==r?s:[]}}function cu(e,t,n=t.length-1){for(let r=e;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}class hu{constructor(e,t,n,r){this.parent=e,this.buffer=t,this.index=n,this.start=r}}class uu extends ou{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:r}=this.context,i=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,n);return i<0?null:new uu(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,n=0){if(n&Yh.ExcludeBuffers)return null;let{buffer:r}=this.context,i=r.findChild(this.index+4,r.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return i<0?null:new uu(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new uu(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new uu(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,r=this.index+4,i=n.buffer[this.index+3];if(i>r){let s=n.buffer[this.index+1];e.push(n.slice(r,i,s)),t.push(0)}return new tu(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function du(e){if(!e.length)return null;let t=0,n=e[0];for(let r=1;rn.from||i.to0){if(this.index-1)for(let r=t+e,i=e<0?-1:n._tree.children.length;r!=i;r+=e){let e=n._tree.children[r];if(this.mode&Yh.IncludeAnonymous||e instanceof ru||!e.type.isAnonymous||mu(e))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let s=e;s;s=s._parent)if(s.index==r){if(r==this.index)return s;t=s,n=i+1;break e}r=this.stack[--i]}for(let e=n;e=0;i--){if(i<0)return cu(this._tree,e,r);let s=n[t.buffer[this.stack[i]]];if(!s.isAnonymous){if(e[r]&&e[r]!=s.name)return!1;r--}}return!0}}function mu(e){return e.children.some((e=>e instanceof ru||!e.type.isAnonymous||mu(e)))}const gu=new WeakMap;function bu(e,t){if(!e.isAnonymous||t instanceof ru||t.type!=e)return 1;let n=gu.get(t);if(null==n){n=1;for(let r of t.children){if(r.type!=e||!(r instanceof tu)){n=1;break}n+=bu(e,r)}gu.set(t,n)}return n}function yu(e,t,n,r,i,s,o,a,l){let c=0;for(let n=r;n=h)break;f+=t}if(c==i+1){if(f>h){let e=n[i];t(e.children,e.positions,0,e.children.length,r[i]+a);continue}u.push(n[i])}else{let t=r[c-1]+n[c-1].length-p;u.push(yu(e,n,r,i,c,p,t,null,l))}d.push(p+a-s)}}(t,n,r,i,0),(a||l)(u,d,o)}class ku{constructor(e,t,n,r,i=!1,s=!1){this.from=e,this.to=t,this.tree=n,this.offset=r,this.open=(i?1:0)|(s?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(e,t=[],n=!1){let r=[new ku(0,e.length,e,0,!1,n)];for(let n of t)n.to>e.length&&r.push(n);return r}static applyChanges(e,t,n=128){if(!t.length)return e;let r=[],i=1,s=e.length?e[0]:null;for(let o=0,a=0,l=0;;o++){let c=o=n)for(;s&&s.from=t.from||h<=t.to||l){let e=Math.max(t.from,a)-l,n=Math.min(t.to,h)-l;t=e>=n?null:new ku(e,n,t.tree,t.offset+l,o>0,!!c)}if(t&&r.push(t),s.to>h)break;s=inew Uh(e.from,e.to))):[new Uh(0,0)]:[new Uh(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let r=this.startParse(e,t,n);for(;;){let e=r.advance();if(e)return e}}}class wu{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}new Wh({perNode:!0});let xu=0;class Cu{constructor(e,t,n,r){this.name=e,this.set=t,this.base=n,this.modified=r,this.id=xu++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let n="string"==typeof e?e:"?";if(e instanceof Cu&&(t=e),null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let r=new Cu(n,[],null,[]);if(r.set.push(r),t)for(let e of t.set)r.set.push(e);return r}static defineModifier(e){let t=new Su(e);return e=>e.modified.indexOf(t)>-1?e:Su.get(e.base||e,e.modified.concat(t).sort(((e,t)=>e.id-t.id)))}}let Eu=0;class Su{constructor(e){this.name=e,this.instances=[],this.id=Eu++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find((n=>{return n.base==e&&(r=t,i=n.modified,r.length==i.length&&r.every(((e,t)=>e==i[t])));// removed by dead control flow + var r, i; }));if(n)return n;let r=[],i=new Cu(e.name,r,e,t);for(let e of t)e.instances.push(i);let s=function(e){let t=[[]];for(let n=0;nt.length-e.length))}(t);for(let t of e.set)if(!t.modified.length)for(let e of s)r.push(Su.get(t,e));return i}}function _u(e){let t=Object.create(null);for(let n in e){let r=e[n];Array.isArray(r)||(r=[r]);for(let e of n.split(" "))if(e){let n=[],i=2,s=e;for(let t=0;;){if("..."==s&&t>0&&t+3==e.length){i=1;break}let r=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(s);if(!r)throw new RangeError("Invalid path: "+e);if(n.push("*"==r[0]?"":'"'==r[0][0]?JSON.parse(r[0]):r[0]),t+=r[0].length,t==e.length)break;let o=e[t++];if(t==e.length&&"!"==o){i=0;break}if("/"!=o)throw new RangeError("Invalid path: "+e);s=e.slice(t)}let o=n.length-1,a=n[o];if(!a)throw new RangeError("Invalid path: "+e);let l=new Du(r,i,o>0?n.slice(0,o):null);t[a]=l.sort(t[a])}}return Au.add(t)}const Au=new Wh;class Du{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(e){return!e||e.depth{let t=i;for(let r of e)for(let e of r.set){let r=n[e.id];if(r){t=t?t+" "+r:r;break}}return t},scope:r}}Du.empty=new Du([],2,null);class Tu{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,r,i){let{type:s,from:o,to:a}=e;if(o>=n||a<=t)return;s.isTop&&(i=this.highlighters.filter((e=>!e.scope||e.scope(s))));let l=r,c=function(e){let t=e.type.prop(Au);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}(e)||Du.empty,h=function(e,t){let n=null;for(let r of e){let e=r.style(t);e&&(n=n?n+" "+e:e)}return n}(i,c.tags);if(h&&(l&&(l+=" "),l+=h,1==c.mode&&(r+=(r?" ":"")+h)),this.startSpan(Math.max(t,o),l),c.opaque)return;let u=e.tree&&e.tree.prop(Wh.mounted);if(u&&u.overlay){let s=e.node.enter(u.overlay[0].from+o,1),c=this.highlighters.filter((e=>!e.scope||e.scope(u.tree.type))),h=e.firstChild();for(let d=0,p=o;;d++){let f=d=m)&&e.nextSibling()););if(!f||m>n)break;p=f.to+o,p>t&&(this.highlightRange(s.cursor(),Math.max(t,f.from+o),Math.min(n,p),"",c),this.startSpan(Math.min(n,p),l))}h&&e.parent()}else if(e.firstChild()){u&&(r="");do{if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,r,i),this.startSpan(Math.min(n,e.to),l)}}while(e.nextSibling());e.parent()}}}const Ou=Cu.define,Nu=Ou(),Lu=Ou(),Iu=Ou(Lu),Fu=Ou(Lu),Bu=Ou(),Pu=Ou(Bu),Ru=Ou(Bu),zu=Ou(),$u=Ou(zu),Vu=Ou(),qu=Ou(),ju=Ou(),Hu=Ou(ju),Uu=Ou(),Wu={comment:Nu,lineComment:Ou(Nu),blockComment:Ou(Nu),docComment:Ou(Nu),name:Lu,variableName:Ou(Lu),typeName:Iu,tagName:Ou(Iu),propertyName:Fu,attributeName:Ou(Fu),className:Ou(Lu),labelName:Ou(Lu),namespace:Ou(Lu),macroName:Ou(Lu),literal:Bu,string:Pu,docString:Ou(Pu),character:Ou(Pu),attributeValue:Ou(Pu),number:Ru,integer:Ou(Ru),float:Ou(Ru),bool:Ou(Bu),regexp:Ou(Bu),escape:Ou(Bu),color:Ou(Bu),url:Ou(Bu),keyword:Vu,self:Ou(Vu),null:Ou(Vu),atom:Ou(Vu),unit:Ou(Vu),modifier:Ou(Vu),operatorKeyword:Ou(Vu),controlKeyword:Ou(Vu),definitionKeyword:Ou(Vu),moduleKeyword:Ou(Vu),operator:qu,derefOperator:Ou(qu),arithmeticOperator:Ou(qu),logicOperator:Ou(qu),bitwiseOperator:Ou(qu),compareOperator:Ou(qu),updateOperator:Ou(qu),definitionOperator:Ou(qu),typeOperator:Ou(qu),controlOperator:Ou(qu),punctuation:ju,separator:Ou(ju),bracket:Hu,angleBracket:Ou(Hu),squareBracket:Ou(Hu),paren:Ou(Hu),brace:Ou(Hu),content:zu,heading:$u,heading1:Ou($u),heading2:Ou($u),heading3:Ou($u),heading4:Ou($u),heading5:Ou($u),heading6:Ou($u),contentSeparator:Ou(zu),list:Ou(zu),quote:Ou(zu),emphasis:Ou(zu),strong:Ou(zu),link:Ou(zu),monospace:Ou(zu),strikethrough:Ou(zu),inserted:Ou(),deleted:Ou(),changed:Ou(),invalid:Ou(),meta:Uu,documentMeta:Ou(Uu),annotation:Ou(Uu),processingInstruction:Ou(Uu),definition:Cu.defineModifier("definition"),constant:Cu.defineModifier("constant"),function:Cu.defineModifier("function"),standard:Cu.defineModifier("standard"),local:Cu.defineModifier("local"),special:Cu.defineModifier("special")};for(let e in Wu){let t=Wu[e];t instanceof Cu&&(t.name=e)}const Ku=Mu([{tag:Wu.link,class:"tok-link"},{tag:Wu.heading,class:"tok-heading"},{tag:Wu.emphasis,class:"tok-emphasis"},{tag:Wu.strong,class:"tok-strong"},{tag:Wu.keyword,class:"tok-keyword"},{tag:Wu.atom,class:"tok-atom"},{tag:Wu.bool,class:"tok-bool"},{tag:Wu.url,class:"tok-url"},{tag:Wu.labelName,class:"tok-labelName"},{tag:Wu.inserted,class:"tok-inserted"},{tag:Wu.deleted,class:"tok-deleted"},{tag:Wu.literal,class:"tok-literal"},{tag:Wu.string,class:"tok-string"},{tag:Wu.number,class:"tok-number"},{tag:[Wu.regexp,Wu.escape,Wu.special(Wu.string)],class:"tok-string2"},{tag:Wu.variableName,class:"tok-variableName"},{tag:Wu.local(Wu.variableName),class:"tok-variableName tok-local"},{tag:Wu.definition(Wu.variableName),class:"tok-variableName tok-definition"},{tag:Wu.special(Wu.variableName),class:"tok-variableName2"},{tag:Wu.definition(Wu.propertyName),class:"tok-propertyName tok-definition"},{tag:Wu.typeName,class:"tok-typeName"},{tag:Wu.namespace,class:"tok-namespace"},{tag:Wu.className,class:"tok-className"},{tag:Wu.macroName,class:"tok-macroName"},{tag:Wu.propertyName,class:"tok-propertyName"},{tag:Wu.operator,class:"tok-operator"},{tag:Wu.comment,class:"tok-comment"},{tag:Wu.meta,class:"tok-meta"},{tag:Wu.invalid,class:"tok-invalid"},{tag:Wu.punctuation,class:"tok-punctuation"}]);class Ju{static create(e,t,n,r,i){return new Ju(e,t,n,r+(r<<8)+e+(t<<4)|0,i,[],[])}constructor(e,t,n,r,i,s,o){this.type=e,this.value=t,this.from=n,this.hash=r,this.end=i,this.children=s,this.positions=o,this.hashProp=[[Wh.contextHash,r]]}addChild(e,t){e.prop(Wh.contextHash)!=this.hash&&(e=new tu(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){let n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new tu(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(e,t,n)=>new tu(Gh.none,e,t,n,this.hashProp)})}}var Gu,Zu;(Zu=Gu||(Gu={}))[Zu.Document=1]="Document",Zu[Zu.CodeBlock=2]="CodeBlock",Zu[Zu.FencedCode=3]="FencedCode",Zu[Zu.Blockquote=4]="Blockquote",Zu[Zu.HorizontalRule=5]="HorizontalRule",Zu[Zu.BulletList=6]="BulletList",Zu[Zu.OrderedList=7]="OrderedList",Zu[Zu.ListItem=8]="ListItem",Zu[Zu.ATXHeading1=9]="ATXHeading1",Zu[Zu.ATXHeading2=10]="ATXHeading2",Zu[Zu.ATXHeading3=11]="ATXHeading3",Zu[Zu.ATXHeading4=12]="ATXHeading4",Zu[Zu.ATXHeading5=13]="ATXHeading5",Zu[Zu.ATXHeading6=14]="ATXHeading6",Zu[Zu.SetextHeading1=15]="SetextHeading1",Zu[Zu.SetextHeading2=16]="SetextHeading2",Zu[Zu.HTMLBlock=17]="HTMLBlock",Zu[Zu.LinkReference=18]="LinkReference",Zu[Zu.Paragraph=19]="Paragraph",Zu[Zu.CommentBlock=20]="CommentBlock",Zu[Zu.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",Zu[Zu.Escape=22]="Escape",Zu[Zu.Entity=23]="Entity",Zu[Zu.HardBreak=24]="HardBreak",Zu[Zu.Emphasis=25]="Emphasis",Zu[Zu.StrongEmphasis=26]="StrongEmphasis",Zu[Zu.Link=27]="Link",Zu[Zu.Image=28]="Image",Zu[Zu.InlineCode=29]="InlineCode",Zu[Zu.HTMLTag=30]="HTMLTag",Zu[Zu.Comment=31]="Comment",Zu[Zu.ProcessingInstruction=32]="ProcessingInstruction",Zu[Zu.Autolink=33]="Autolink",Zu[Zu.HeaderMark=34]="HeaderMark",Zu[Zu.QuoteMark=35]="QuoteMark",Zu[Zu.ListMark=36]="ListMark",Zu[Zu.LinkMark=37]="LinkMark",Zu[Zu.EmphasisMark=38]="EmphasisMark",Zu[Zu.CodeMark=39]="CodeMark",Zu[Zu.CodeText=40]="CodeText",Zu[Zu.CodeInfo=41]="CodeInfo",Zu[Zu.LinkTitle=42]="LinkTitle",Zu[Zu.LinkLabel=43]="LinkLabel",Zu[Zu.URL=44]="URL";class Xu{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}class Qu{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return nd(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let r=t;r=t.stack[n.depth+1].value+n.baseIndent)return!0;if(n.indent>=n.baseIndent+4)return!1;let r=(e.type==Gu.OrderedList?cd:ld)(n,t,!1);return r>0&&(e.type!=Gu.BulletList||od(n,t,!1)<0)&&n.text.charCodeAt(n.pos+r-1)==e.value}const ed={[Gu.Blockquote]:(e,t,n)=>62==n.next&&(n.markers.push(Pd(Gu.QuoteMark,t.lineStart+n.pos,t.lineStart+n.pos+1)),n.moveBase(n.pos+(td(n.text.charCodeAt(n.pos+1))?2:1)),e.end=t.lineStart+n.text.length,!0),[Gu.ListItem]:(e,t,n)=>!(n.indent-1||(n.moveBaseColumn(n.baseIndent+e.value),0)),[Gu.OrderedList]:Yu,[Gu.BulletList]:Yu,[Gu.Document]:()=>!0};function td(e){return 32==e||9==e||10==e||13==e}function nd(e,t=0){for(;tn&&td(e.charCodeAt(t-1));)t--;return t}function id(e){if(96!=e.next&&126!=e.next)return-1;let t=e.pos+1;for(;t-1&&e.depth==t.stack.length&&t.parser.leafBlockParsers.indexOf(Cd.SetextHeading)>-1||r<3?-1:1}function ad(e,t){for(let n=e.stack.length-1;n>=0;n--)if(e.stack[n].type==t)return!0;return!1}function ld(e,t,n){return 45!=e.next&&43!=e.next&&42!=e.next||e.pos!=e.text.length-1&&!td(e.text.charCodeAt(e.pos+1))||!(!n||ad(t,Gu.BulletList)||e.skipSpace(e.pos+2)=48&&i<=57;){if(r++,r==e.text.length)return-1;i=e.text.charCodeAt(r)}return r==e.pos||r>e.pos+9||46!=i&&41!=i||re.pos+1||49!=e.next)?-1:r+1-e.pos}function hd(e){if(35!=e.next)return-1;let t=e.pos+1;for(;t6?-1:n}function ud(e){if(45!=e.next&&61!=e.next||e.indent>=e.baseIndent+4)return-1;let t=e.pos+1;for(;t/,fd=/\?>/,md=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(r);if(s)return e.append(Pd(Gu.Comment,n,n+1+s[0].length));let o=/^\?[^]*?\?>/.exec(r);if(o)return e.append(Pd(Gu.ProcessingInstruction,n,n+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(r);return a?e.append(Pd(Gu.HTMLTag,n,n+1+a[0].length)):-1},Emphasis(e,t,n){if(95!=t&&42!=t)return-1;let r=n+1;for(;e.char(r)==t;)r++;let i=e.slice(n-1,n),s=e.slice(r,r+1),o=jd.test(i),a=jd.test(s),l=/\s|^$/.test(i),c=/\s|^$/.test(s),h=!c&&(!a||l||o),u=!l&&(!o||c||a),d=h&&(42==t||!u||o),p=u&&(42==t||!h||a);return e.append(new qd(95==t?Rd:zd,n,r,(d?1:0)|(p?2:0)))},HardBreak(e,t,n){if(92==t&&10==e.char(n+1))return e.append(Pd(Gu.HardBreak,n,n+2));if(32==t){let t=n+1;for(;32==e.char(t);)t++;if(10==e.char(t)&&t>=n+2)return e.append(Pd(Gu.HardBreak,n,t+1))}return-1},Link:(e,t,n)=>91==t?e.append(new qd($d,n,n+1,1)):-1,Image:(e,t,n)=>33==t&&91==e.char(n+1)?e.append(new qd(Vd,n,n+2,1)):-1,LinkEnd(e,t,n){if(93!=t)return-1;for(let t=e.parts.length-1;t>=0;t--){let r=e.parts[t];if(r instanceof qd&&(r.type==$d||r.type==Vd)){if(!r.side||e.skipSpace(r.to)==n&&!/[(\[]/.test(e.slice(n+1,n+2)))return e.parts[t]=null,-1;let i=e.takeContent(t),s=e.parts[t]=Ud(e,i,r.type==$d?Gu.Link:Gu.Image,r.from,n+1);if(r.type==$d)for(let n=0;nt?Pd(Gu.URL,t+n,i+n):i==e.length&&null}}function Kd(e,t,n){let r=e.charCodeAt(t);if(39!=r&&34!=r&&40!=r)return!1;let i=40==r?41:r;for(let r=t+1,s=!1;r=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,r,i){return this.append(new qd(e,t,n,(r?1:0)|(i?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof qd&&(t.type==$d||t.type==Vd))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let t=e;t=e;o--){let e=this.parts[o];if(e instanceof qd&&1&e.side&&e.type==n.type&&!(i&&(1&n.side||2&e.side)&&(e.to-e.from+s)%3==0&&((e.to-e.from)%3||s%3))){r=e;break}}if(!r)continue;let a=n.type.resolve,l=[],c=r.from,h=n.to;if(i){let e=Math.min(2,r.to-r.from,s);c=r.to-e,h=n.from+e,a=1==e?"Emphasis":"StrongEmphasis"}r.type.mark&&l.push(this.elt(r.type.mark,c,r.to));for(let e=o+1;e=0;t--){let n=this.parts[t];if(n instanceof qd&&n.type==e)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}skipSpace(e){return nd(this.text,e-this.offset)+this.offset}elt(e,t,n,r){return"string"==typeof e?Pd(this.parser.getNodeType(e),t,n,r):new Bd(e,t)}}function Zd(e,t){if(!t.length)return e;if(!e.length)return t;let n=e.slice(),r=0;for(let e of t){for(;r(e?e-1:0))return!1;if(this.fragmentEnd<0){let e=this.fragment.to;for(;e>0&&"\n"!=this.input.read(e-1,e);)e--;this.fragmentEnd=e?e-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=t;if(!n.childAfter(r))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(Wh.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0),i=e.absoluteLineStart,s=i,o=e.block.children.length,a=s,l=o;for(;;){if(t.to-n>r){if(t.type.isAnonymous&&t.firstChild())continue;break}let i=Yd(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,i);else{let n=new tu(e.parser.nodeSet.types[Gu.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(n,t.tree),e.addNode(n,i)}if(t.type.is("Block")&&(Xd.indexOf(t.type.id)<0?(s=t.to-n,o=e.block.children.length):(s=a,o=l,a=t.to-n,l=e.block.children.length)),!t.nextSibling())break}for(;e.block.children.length>o;)e.block.children.pop(),e.block.positions.pop();return s-i}}function Yd(e,t){let n=e;for(let r=1;rkd[e])),Object.keys(kd).map((e=>Cd[e])),Object.keys(kd),Ed,ed,Object.keys(Hd).map((e=>Hd[e])),Object.keys(Hd),[]),np={resolve:"Strikethrough",mark:"StrikethroughMark"},rp={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":Wu.strikethrough}},{name:"StrikethroughMark",style:Wu.processingInstruction}],parseInline:[{name:"Strikethrough",parse(e,t,n){if(126!=t||126!=e.char(n+1)||126==e.char(n+2))return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),s=/\s|^$/.test(r),o=/\s|^$/.test(i),a=jd.test(r),l=jd.test(i);return e.addDelimiter(np,n,n+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function ip(e,t,n=0,r,i=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(e.elt("TableCell",i+a,i+l,e.parser.parseInline(t.slice(a,l),i+a)))};for(let u=n;u-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(e.elt("TableDelimiter",u+i,u+i+1))),a=l=-1),c=!c&&92==n}return a>-1&&(s++,r&&h()),s}function sp(e,t){for(let n=t;nsp(t.content,0)?new ap:null,endLeaf(e,t,n){if(n.parsers.some((e=>e instanceof ap))||!sp(t.text,t.basePos))return!1;let r=e.peekLine();return op.test(r)&&ip(e,t.text,t.basePos)==ip(e,r,t.basePos)},before:"SetextHeading"}]};function cp(e,t,n){return(r,i,s)=>{if(i!=e||r.char(s+1)==e)return-1;let o=[r.elt(n,s,s+1)];for(let i=s+1;i{if(e.isBlock&&t.indexOf(e.type.name)>-1)return n.push({node:e,pos:r}),!1})),n}(e,n);let o=[];return s.forEach((e=>{var n;let s;null!=i&&i.preRenderer&&(s=null!=(n=i.preRenderer(e.node,e.pos))?n:void 0);const a=r(e.node)||"*",l=t[a]||t["*"]||null;if(!l)return;const c=l.parse(e.node.textContent,s),h=[];(function(e,t,n,r=0,i=e.length){let s=new Tu(r,Array.isArray(t)?t:[t],n);s.highlightRange(e.cursor(),r,i,"",s.highlighters),s.flush(i)})(c,(null==i?void 0:i.highlighter)||Ku,((t,n,r)=>{const i=pl.inline(t+e.pos+1,n+e.pos+1,{class:r});h.push(i)})),null!=i&&i.postRenderer&&i.postRenderer(e.node,e.pos,ku.addTree(c)),o=[...o,...h]})),o}class dp{constructor(e){((e,t,n)=>{((e,t,n)=>{t in e?hp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n)})(this,"cache"),this.cache={...e}}get(e){return this.cache[e]||null}set(e,t,n){e<0||(this.cache[e]={node:t,fragments:n})}replace(e,t,n,r){this.remove(e),this.set(t,n,r)}remove(e){delete this.cache[e]}invalidate(e){const t=new dp(this.cache),n=e.mapping;return Object.keys(this.cache).forEach((r=>{const i=+r;if(i<0)return;const s=n.mapResult(i),o=e.doc.nodeAt(s.pos),{node:a,fragments:l}=this.get(i),c=e.mapping.maps.flatMap((e=>{const t=[];return e.forEach(((e,n,r,i)=>{t.push({fromA:e,toA:n,fromB:r,toB:i})})),t}));s.deleted||null==o||!o.eq(a)?t.remove(i):i!==s.pos&&t.replace(i,s.pos,o,ku.applyChanges(l,c))})),t}}function pp(e){const t=Mu([{tag:Wu.quote,class:"hljs-quote"},{tag:Wu.contentSeparator,class:"hljs-built_in"},{tag:Wu.heading1,class:"hljs-section"},{tag:Wu.heading2,class:"hljs-section"},{tag:Wu.heading3,class:"hljs-section"},{tag:Wu.heading4,class:"hljs-section"},{tag:Wu.heading5,class:"hljs-section"},{tag:Wu.heading6,class:"hljs-section"},{tag:Wu.comment,class:"hljs-comment"},{tag:Wu.escape,class:"hljs-literal"},{tag:Wu.character,class:"hljs-symbol"},{tag:Wu.emphasis,class:"hljs-emphasis"},{tag:Wu.strong,class:"hljs-strong"},{tag:Wu.link,class:"hljs-string"},{tag:Wu.monospace,class:"hljs-code"},{tag:Wu.url,class:"hljs-link"},{tag:Wu.processingInstruction,class:"hljs-symbol"},{tag:Wu.labelName,class:"hljs-string"},{tag:Wu.string,class:"hljs-string"},{tag:Wu.tagName,class:"hljs-tag"},{tag:Wu.strikethrough,class:"tok-strike"},{tag:Wu.heading,class:"hljs-strong"},{tag:Wu.content,class:""},{tag:Wu.list,class:""}]),n=[],r={};return e.extraEmphasis&&n.push(rp),e.tables&&n.push(lp),e.html&&(r["HTMLBlock HTMLTag"]=Wu.tagName),function(e,t=["code_block"],n,r){const i= false||function(e){const t=e.attrs.detectedHighlightLanguage,n=e.attrs.params;return t||(null==n?void 0:n.split(" ")[0])||""},s=(n,s)=>({content:up(n,e,t,i,{preRenderer:(e,t)=>{var n;return null==(n=s.get(t))?void 0:n.fragments},postRenderer:(e,t,n)=>{s.set(t,e,n)},highlighter:r})}),o=new ks;return new gs({key:o,state:{init(e,t){const n=new dp({}),r=s(t.doc,n);return{cache:n,decorations:gl.create(t.doc,r.content)}},apply(e,t){const n=t.cache.invalidate(e);if(!e.docChanged)return{cache:n,decorations:t.decorations.map(e.mapping,e.doc)};const r=s(e.doc,n);return{cache:n,decorations:gl.create(e.doc,r.content)}}},props:{decorations(e){var t;return null==(t=this.getState(e))?void 0:t.decorations}}})}({"*":tp.configure([{props:[_u(r)]},...n])},["code_block"],0,t)}function fp(e,t=0){if(!e.docChanged)return e;if(e.doc.resolve(e.selection.to-t).before(1)===e.doc.content.size-e.doc.lastChild.nodeSize){const t=e.doc.type.schema.nodes.paragraph.create(null);e=e.insert(e.doc.content.size,t)}return e}function mp(e,t,n){const r=e.doc;return r.resolve(n).parent.isTextblock?e.setSelection(es.create(r,n)):r.nodeAt(t)?e.setSelection(ns.create(r,t)):e.setSelection(Zi.atStart(r))}function gp(e,t){return[e.nodes.table,e.nodes.table_head,e.nodes.table_body,e.nodes.table_row,e.nodes.table_cell,e.nodes.table_header].includes(t)}function bp(e,t){return gp(e,t.$head.parent.type)}function yp(e,t){return t.$head.parent.type===e.nodes.table_header}const kp=Eh(fh,((e,t)=>(t(e.tr.replaceSelectionWith(e.schema.nodes.hard_break.create()).scrollIntoView()),!0)));function vp(e,t){return wp(e,t,!1)}function wp(e,t,n=!1){if(!bp(e.schema,e.selection))return!1;if(t){const r=e.schema.nodes.paragraph,i=n?e.selection.$head.before(-3)-1:e.selection.$head.after(-3)+1,s=e.tr;try{s.doc.resolve(i)}catch(e){const t=n?i+1:i-1;s.insert(t,r.create())}s.setSelection(Zi.near(s.doc.resolve(Math.max(0,i)),1)),t(s.scrollIntoView())}return!0}function xp(e,t){return Ep(!0,e,t)}function Cp(e,t){return Ep(!1,e,t)}function Ep(e,t,n){if(!bp(t.schema,t.selection)||yp(t.schema,t.selection))return!1;if(n){const{$head:r}=t.selection,i=r.node(-1),s=[];i.forEach((e=>{s.push(t.schema.nodes.table_cell.create(e.attrs))}));const o=t.schema.nodes.table_row.create(null,s),a=e?r.before(-1):r.after(-1);n(t.tr.insert(a,o).scrollIntoView())}return!0}function Sp(e,t){return Ap(!1,e,t)}function _p(e,t){return Ap(!0,e,t)}function Ap(e,t,n){if(!bp(t.schema,t.selection))return!1;if(n){const r=t.selection.$head,i=r.node(-3),s=r.index(-1),o=[],a=r.start(-3);let l;i.descendants(((n,r)=>{if(!gp(t.schema,n.type))return!1;if(n.type===t.schema.nodes.table_row&&(l=n.child(s)),l&&n==l){const t=e?i.resolve(r+1).before():i.resolve(r+1).after();o.push([n.type,a+t])}}));let c=t.tr;for(const e of o.reverse())c=c.insert(e[1],e[0].create());n(c.scrollIntoView())}return!0}function Dp(e,t){if(!bp(e.schema,e.selection)||yp(e.schema,e.selection))return!1;if(t){const n=e.tr,r=e.selection.$head;if(1===r.node(-2).childCount)return Ip(e,t);n.delete(r.start(-1)-1,r.end(-1)+1),t(n.scrollIntoView())}return!0}function Mp(e,t){if(!bp(e.schema,e.selection))return!1;if(t){const n=e.selection.$head,r=n.node(-3);if(1===n.node(-1).childCount)return Ip(e,t);const i=n.index(-1);let s;const o=[],a=n.start(-3);r.descendants(((t,n)=>{if(!gp(e.schema,t.type))return!1;t.type===e.schema.nodes.table_row&&(s=t.childCount>=i+1?t.child(i):null),s&&t==s&&o.push(r.resolve(n+1))}));let l=e.tr;for(const e of o.reverse())l=l.delete(a+e.start()-1,a+e.end()+1);t(l.scrollIntoView())}return!0}function Tp(e,t){if(!bp(e.schema,e.selection))return!1;const{$from:n,$to:r}=e.selection;return n.start(-3)>=n.pos-3&&n.end(-3)<=r.pos+3?Ip(e,t):n.start(-1)>=n.pos-1&&n.end(-1)<=r.pos+1?Dp(e,t):!n.sameParent(r)}function Op(e,t,n){if(-1!==n&&1!==n)return!1;if(!bp(e.schema,e.selection))return!1;const r=e.selection.$head;for(let i=-1;i>-4;i--){const s=r.index(i),o=r.node(i);if(!o)continue;const a=2;if(!o.maybeChild(s+n))continue;const l=-1===n?r.start()-a*(-1*i):r.end()+a*(-1*i);return t(e.tr.setSelection(Zi.near(e.tr.doc.resolve(l),1)).scrollIntoView()),!0}return 1===n?vp(e,t):function(e,t){return wp(e,t,!0)}(e,t)}function Np(e,t){return Op(e,t,-1)}function Lp(e,t){return Op(e,t,1)}function Ip(e,t){const n=e.selection.$head;return t&&t(e.tr.deleteRange(n.start(-3)-1,n.end(-3)+1)),!0}function Fp(e,t){if(!xh(e.schema.nodes.table)(e))return!1;if(!t)return!0;let n=1,r=1;const i=()=>e.schema.nodes.table_cell.create(null,e.schema.text("cell "+r++)),s=()=>e.schema.nodes.table_header.create(null,e.schema.text("header "+n++)),o=(...t)=>e.schema.nodes.table_row.create(null,t),a=(l=(t=>e.schema.nodes.table_head.create(null,t))(o(s(),s())),c=((...t)=>e.schema.nodes.table_body.create(null,t))(o(i(),i()),o(i(),i())),e.schema.nodes.table.createChecked(null,[l,c]));var l,c;let h=e.tr.replaceSelectionWith(a);return h=fp(h,2),t(h.scrollIntoView()),!0}class Bp extends yc{validateLink;viewContainer;get hrefInput(){return this.viewContainer.querySelector(".js-link-editor-href")}get textInput(){return this.viewContainer.querySelector(".js-link-editor-text")}get saveBtn(){return this.viewContainer.querySelector(".js-link-editor-save-btn")}get hrefError(){return this.viewContainer.querySelector(".js-link-editor-href-error")}constructor(e,t){super(Pp),this.validateLink=t;const n=Vn();this.viewContainer=document.createElement("form"),this.viewContainer.className="mt6 bt bb bc-black-400 js-link-editor",this.viewContainer.innerHTML=Rn`
+
+ + + +
+ +
+ + +
+ +
+ + +
+
`,this.viewContainer.addEventListener("submit",(t=>{t.preventDefault(),t.stopPropagation(),this.handleSave(e)})),this.viewContainer.addEventListener("reset",(t=>{t.preventDefault(),t.stopPropagation();let n=this.tryHideInterfaceTr(e.state);n=Pp.updateVisibility(!1,n),n&&e.dispatch(n)})),this.hrefInput.addEventListener("input",(e=>{this.validate(e.target.value)}))}validate(e){const t=this.validateLink(e);return t?this.hideValidationError():this.showValidationError(fc("link_editor.validation_error")),this.saveBtn.disabled=!t,t}showValidationError(e){const t=this.hrefInput.parentElement,n=this.hrefError;t.classList.add("has-error"),n.textContent=e,n.classList.remove("d-none")}hideValidationError(){const e=this.hrefInput.parentElement,t=this.hrefError;e.classList.remove("has-error"),t.textContent="",t.classList.add("d-none")}resetEditor(){this.hrefInput.value="",this.textInput.value="",this.hideValidationError()}handleSave(e){const t=this.hrefInput.value;if(!this.validate(t))return;const n=this.textInput.value||t,r=e.state.schema.text(n,[]);let i=this.tryHideInterfaceTr(e.state,{url:null,text:null})||e.state.tr;i=Pp.updateVisibility(!1,i),i=i.replaceSelectionWith(r,!0),i=i.setSelection(es.create(i.doc,i.selection.from-n.length,i.selection.to)),i=i.removeMark(i.selection.from,i.selection.to,e.state.schema.marks.link),i=i.addMark(i.selection.from,i.selection.to,e.state.schema.marks.link.create({href:t})),e.dispatch(i)}update(e){super.update(e);const t=Pp.getState(e.state);if(this.isShown){t?.url&&(this.hrefInput.value=t.url,this.validate(t.url)),t?.text&&(this.textInput.value=t.text);let n=this.tryShowInterfaceTr(e.state);n&&(n=Pp.forceHideTooltipTr(e.state.apply(n)),e.dispatch(n)),this.hrefInput.focus()}else{this.resetEditor();let t=this.tryHideInterfaceTr(e.state);t&&(t=Pp.updateVisibility(!1,t),e.dispatch(t))}}destroy(){this.viewContainer.remove()}buildInterface(e){e.appendChild(this.viewContainer)}destroyInterface(e){e.removeChild(this.viewContainer)}}const Pp=new class extends gc{constructor(){super(Bp.name)}forceHideTooltipTr(e){const t=this.getState(e);return zp(t.decorations)?(t.forceHideTooltip=!0,this.setMeta(e.tr,t)):e.tr}updateVisibility(e,t){const n=t.getMeta(Pp);return n.visible=e,this.setMeta(t,n)}};class Rp{content;href;removeListener;editListener;get editButton(){return this.content.querySelector(".js-link-tooltip-edit")}get removeButton(){return this.content.querySelector(".js-link-tooltip-remove")}get link(){return this.content.querySelector("a")}constructor(e){const t="link-tooltip-popover"+Vn();this.content=document.createElement("span"),this.content.className="w0",this.content.setAttribute("aria-controls",t),this.content.setAttribute("data-controller","s-popover"),this.content.setAttribute("data-s-popover-placement","bottom"),this.content.innerHTML=Rn`
`,this.content.addEventListener("s-popover:hide",(e=>{e.preventDefault()})),this.bindElementInteraction(this.removeButton,(()=>{this.removeListener.call(this)})),this.bindElementInteraction(this.editButton,(()=>{this.editListener.call(this)})),this.update(e)}bindElementInteraction(e,t){e.addEventListener("mousedown",(e=>{e.stopPropagation(),e.preventDefault(),t.call(this,e)})),e.addEventListener("keydown",(e=>{"Tab"!==e.key&&(e.stopPropagation(),e.preventDefault(),"Enter"!==e.key&&" "!==e.key||t.call(this,e))}))}update(e){if(!this.isLink(e))return;const t=this.findMarksInSelection(e);if(t.length>0){this.href=t[0].attrs.href;const e=this.link;e.href=e.title=e.innerText=this.href}}getDecorations(e,t){if("forceHideTooltip"in e&&e.forceHideTooltip)return gl.empty;if(!this.findMarksInSelection(t).length)return gl.empty;const n=this.linkAround(t);if(!n)return gl.empty;if(t.selection.fromn.to)return gl.empty;this.update(t);const r=Math.floor((n.from+n.to)/2),i=pl.widget(r,(e=>(this.updateEventListeners(e),this.content)),{side:-1,ignoreSelection:!0,stopEvent:()=>!0});return gl.create(t.doc,[i])}hasFocus(e){return this.content.contains(e.relatedTarget)}isLink(e){const{from:t,$from:n,to:r,empty:i}=e.selection;return i?void 0!==e.schema.marks.link.isInSet(e.storedMarks||n.marks()):e.doc.rangeHasMark(t,r,e.schema.marks.link)}expandSelection(e,t){const n=this.linkAround(e);return t.setSelection(es.create(t.doc,n.from,n.to))}linkAround(e){const t=e.selection.$from,n=t.parent.childAfter(t.parentOffset);if(!n.node)return;const r=Vp(n.node.marks,e.schema.marks.link)[0];if(!r)return;let i=t.index(),s=t.start()+n.offset;for(;i>0&&r.isInSet(t.parent.child(i-1).marks);)i-=1,s-=t.parent.child(i).nodeSize;let o=t.indexAfter(),a=s+n.node.nodeSize;if(o!==t.index())for(;or&&e.doc.nodesBetween(r,n,(n=>{t.push(Vp(n.marks,e.schema.marks.link))})),[].concat(...t))}updateEventListeners(e){this.removeListener=()=>{let t=e.state;if(e.state.selection.empty){const n=this.expandSelection(t,t.tr);t=e.state.apply(n)}Ch(e.state.schema.marks.link)(t,e.dispatch.bind(e))},this.editListener=()=>{let t=e.state.tr;t=this.expandSelection(e.state,e.state.tr);const n=e.state.apply(t),{from:r,to:i}=n.selection,s=n.doc.textBetween(r,i),o=this.findMarksInSelection(n)[0].attrs.href;t=Pp.showInterfaceTr(n,{forceHideTooltip:!0,url:o,text:s})||t,e.dispatch(t)}}}function zp(e){return e&&e!==gl.empty}const $p=e=>new rc({key:Pp,state:{init:(e,t)=>({visible:!1,linkTooltip:new Rp(t),decorations:gl.empty,shouldShow:!1}),apply(e,t,n,r){const i=this.getMeta(e)||t;"forceHideTooltip"in i&&(t.forceHideTooltip=i.forceHideTooltip);let s=t.linkTooltip.getDecorations(t,r);const o=n.selection;let a=null;return i.visible&&o&&o.from!==o.to&&(a=pl.inline(o.from,o.to,{class:"bg-black-225"}),s=s.add(r.doc,[a])),{...i,forceHideTooltip:t.forceHideTooltip&&zp(s),linkTooltip:t.linkTooltip,decorations:s}}},props:{decorations(e){return this.getState(e).decorations||gl.empty},handleDOMEvents:{blur(e,t){const{linkTooltip:n,decorations:r}=Pp.getState(e.state);return!zp(r)||e.hasFocus()||n.hasFocus(t)||e.dispatch(Pp.forceHideTooltipTr(e.state)),!1}},handleClick(e,t,n){const r=Vp(e.state.doc.resolve(t).marks(),e.state.schema.marks.link)[0],i="Cmd"===zn()?n.metaKey:n.ctrlKey,s=r&&i;return s&&window.open(r.attrs.href,"_blank"),!!s}},view:t=>new Bp(t,e.validateLink)});function Vp(e,t){return e.filter((e=>e.type===t))}function qp(e){const t=Jp(e),n=wh(e);return(e,r)=>{if(!t(e))return n(e,r);const{$from:i,$to:s}=e.selection,o=i.blockRange(s),a=o&&Di(o);return null!=a&&(r&&r(e.tr.lift(o,a)),!0)}}function jp(e){return(t,n)=>{const r=t.schema.nodes.heading,i=Jp(r,e),s=function(e){const{from:t,to:n}=e.selection;let r=0;return e.doc.nodesBetween(t,n,(e=>{if("heading"===e.type.name)return r=e.attrs.level,!0})),r}(t);return!i(t)||6!==s&&s!==e?.level?xh(r,e?.level?e:{...e,level:s+1})(t,(e=>{n&&n(fp(e))})):xh(t.schema.nodes.paragraph)(t,n)}}function Hp(e,t){return(n,r)=>{if(e.disableMetaTags&&t)return!1;if(n.selection.empty)return!1;if(!function(e,t){const n=[e.nodes.horizontal_rule,e.nodes.code_block,e.nodes.image],r=[e.marks.link,e.marks.code],i=0!=t.$head.marks().filter((e=>r.includes(e.type))).length;return!n.includes(t.$head.parent.type)&&!i}(n.schema,n.selection))return!1;if(!r)return!0;let i=n.tr;if(Jp(n.schema.nodes.tagLink)(n)){const e=n.selection.content().content.firstChild.attrs.tagName;i=n.tr.replaceSelectionWith(n.schema.text(e))}else{const r=n.selection.content().content.firstChild?.textContent;if(r.endsWith(" ")){const{from:e,to:t}=n.selection;n.selection=es.create(n.doc,e,t-1)}if(!e.validate(r.trim(),t))return!1;const s=n.schema.nodes.tagLink.create({tagName:r.trim(),tagType:t?"meta-tag":"tag"});i=n.tr.replaceSelectionWith(s)}return r(i),!0}}function Up(e,t){if(bp(e.schema,e.selection))return!1;if(!t)return!0;const n=e.doc.content.size-1===Math.max(e.selection.from,e.selection.to),r=1===e.tr.selection.from;let i=e.tr.replaceSelectionWith(e.schema.nodes.horizontal_rule.create());return r&&(i=i.insert(0,e.schema.nodes.paragraph.create())),n&&(i=i.insert(i.selection.to,e.schema.nodes.paragraph.create())),t(i),!0}function Wp(e,t,n){return!(!Sc(n.state)||t&&(Ec(n),0))}function Kp(e,t,n){const r=Ch(e.schema.marks.link,{href:null})(e,null);if(t&&r){let r,i;const s=e.selection.$anchor;if(e.selection.empty&&s.textOffset){const n=Nn(e),o=n.marks.find((t=>t.type===e.schema.marks.link));if(o){r=n.text,i=o.attrs.href;const a=s.pos;t(e.tr.setSelection(es.create(e.doc,a-s.textOffset,a-s.textOffset+r.length)))}}else{r=e.selection.content().content.firstChild?.textContent??null;const t=/^http(s)?:\/\/\S+$/.exec(r);i=t?.length>0?t[0]:""}!function(e,t,n){let r=Pp.showInterfaceTr(e.state,{url:t,text:n});r=Pp.updateVisibility(!0,r),r&&e.dispatch(r)}(n,i,r)}return r}function Jp(e,t){return function(n){const{from:r,to:i}=n.selection;let s=!1,o=!t;return n.doc.nodesBetween(r,i,(n=>{s=n.type.name===e.name;for(const e in t)o=n.attrs[e]===t[e];return!(s&&o)})),s&&o}}function Gp(e){return function(t){const{from:n,$from:r,to:i,empty:s}=t.selection;return s?!!e.isInSet(t.storedMarks||r.marks()):t.doc.rangeHasMark(n,i,e)}}function Zp(e,t){const n=e.selection.$cursor,r=e.storedMarks||n?.marks();if(!r?.length)return!1;const i=r.filter((e=>e.type.spec.exitable));if(!i?.length)return!1;const s=n?.nodeAfter;let o,a=e.tr;return o=s&&s.marks?.length?i.filter((e=>!e.type.isInSet(s.marks))):i,!!o.length&&(t&&(o.forEach((e=>{a=a.removeStoredMark(e)})),s||(a=a.insertText(" ")),t(a)),!0)}function Xp(e,t){const n=e.selection.$to,r=n.node(1)||n.parent,i=e.doc.lastChild.eq(r);return e.doc.eq(n.parent)||i&&1==n.depth||Yp(n.after(),e.doc.content.size,e)||ef(e.doc.content.size,e,t),!1}function Qp(e,t){const n=e.selection.$to,r=n.node(1)||n.parent,i=e.doc.firstChild.eq(r);return e.doc.eq(n.parent)||i&&1==n.depth||Yp(0,n.before(),e)||ef(0,e,t),!1}function Yp(e,t,n){let r=!1;return n.doc.nodesBetween(e,t,(e=>r?!r:!e.isTextblock||(r=!0,!1))),r}function ef(e,t,n){n(t.tr.insert(e,t.schema.nodes.paragraph.create()))}function tf(e,t){const{$from:n}=e.selection;return"code_block"===n.parent.type.name&&0===n.parentOffset&&1===n.depth&&0===n.index(0)&&mh(e,t)}const nf=" ";function rf(e,t){const n=of(e),r=n.length;if(r<=0||!t)return r>0;let i=e.tr;const{from:s,to:o}=e.selection,a=nf,l="code_block"===e.selection.$from.node().type.name;return n.reverse().forEach((e=>{i=i.insertText(a,e)})),i.setSelection(es.create(e.apply(i).doc,l?s+4:s,o+4*r)),t(i),!0}function sf(e,t){const n=of(e),r=n.length;if(r<=0||!t)return r>0;let i=e.tr;const{from:s,to:o}=e.selection;let a=0;const l=nf,c="code_block"===e.selection.$from.node().type.name;return n.reverse().forEach((t=>{e.doc.textBetween(t,t+4)===l&&(i=i.insertText("",t,t+4),a++)})),i.setSelection(es.create(e.apply(i).doc,c&&a?s-4:s,o-4*a)),t(i),!0}function of(e){const{from:t,to:n}=e.selection,r=[];return e.doc.nodesBetween(t,n,((e,i)=>{if("code_block"===e.type.name){let s,o=i+1;e.textContent.split("\n").forEach((e=>{s=o+e.length,(t>=o&&n<=s||o>=t&&s<=n||t>=o&&t<=s||n>=o&&n<=s)&&r.push(o),o=s+1}))}})),r}function af(e,t){const{from:n,to:r}=e.selection;if(e.doc.textBetween(n,r,"\n","\n").includes("\n"))return!1;let i=!1;return e.doc.nodesBetween(n,r,(e=>"softbreak"!==e.type.name||(i=!0,!1))),!i&&Ch(e.schema.marks.code)(e,t)}function lf(e,t){const n=function(e){const{$from:t}=e.selection;return"code_block"===t.parent.type.name?{pos:t.before(),node:t.parent}:null}(e);if(!n)return!1;const{pos:r,node:i}=n,s={...i.attrs,isEditingLanguage:!0};return t&&t(e.tr.setNodeMarkup(r,void 0,s)),!0}var cf=(e,t)=>{for(let n=e.depth;n>0;n--){const r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}};function hf(e,t){return function(n,r){let{$from:i,$to:s,node:o}=n.selection;if(o&&o.isBlock||i.depth<2||!i.sameParent(s))return!1;let a=i.node(-1);if(a.type!=e)return!1;if(0==i.parent.content.size&&i.node(-1).childCount==i.indexAfter(-1)){if(3==i.depth||i.node(-3).type!=e||i.index(-2)!=i.node(-2).childCount-1)return!1;if(r){let t=ir.empty,s=i.index(-1)?1:i.index(-2)?2:3;for(let e=i.depth-s;e>=i.depth-3;e--)t=ir.from(i.node(e).copy(t));let o=i.indexAfter(-1){if(c>-1)return!1;e.isTextblock&&0==e.content.size&&(c=t+1)})),c>-1&&l.setSelection(Zi.near(l.doc.resolve(c))),r(l.scrollIntoView())}return!0}let l=s.pos==i.end()?a.contentMatchAt(0).defaultType:null,c=n.tr.delete(i.pos,s.pos),h=l?[t?{type:e,attrs:t}:null,{type:l}]:void 0;return!!Li(c.doc,i.pos,2,h)&&(r&&r(c.split(i.pos,2,h).scrollIntoView()),!0)}}function uf(e){return function(t,n){let{$from:r,$to:i}=t.selection,s=r.blockRange(i,(t=>t.childCount>0&&t.firstChild.type==e));return!!s&&(!n||(r.node(s.depth-1).type==e?function(e,t,n,r){let i=e.tr,s=r.end,o=r.$to.end(r.depth);ss;t--)e-=i.child(t).nodeSize,r.delete(e-1,e+1);let s=r.doc.resolve(n.start),o=s.nodeAfter;if(r.mapping.map(n.end)!=n.start+s.nodeAfter.nodeSize)return!1;let a=0==n.startIndex,l=n.endIndex==i.childCount,c=s.node(-1),h=s.index(-1);if(!c.canReplace(h+(a?0:1),h+1,o.content.append(l?ir.empty:ir.from(i))))return!1;let u=s.pos,d=u+o.nodeSize;return r.step(new Ei(u-(a?1:0),d+(l?1:0),u+1,d-1,new hr((a?ir.empty:ir.from(i.copy(ir.empty))).append(l?ir.empty:ir.from(i.copy(ir.empty))),a?0:1,l?0:1),a?0:1)),t(r.scrollIntoView()),!0}(t,n,s)))}}function df(e,t){return(n,r)=>{const{$from:i,$to:s}=n.tr.selection;return!!i.blockRange(s)&&((o=e=>pf(e.type),({$from:e,$to:t},n=!1)=>{if(!n||e.sameParent(t))return cf(e,o);{let n=Math.min(e.depth,t.depth);for(;n>=0;){const r=e.node(n);if(t.node(n)===r&&o(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r};n-=1}}})(n.tr.selection)?uf(t)(n,r):(a=e,function(e,t){return function(e,t=null){return function(n,r){let{$from:i,$to:s}=n.selection,o=i.blockRange(s);if(!o)return!1;let a=r?n.tr:null;return!!function(e,t,n,r=null){let i=!1,s=t,o=t.$from.doc;if(t.depth>=2&&t.$from.node(t.depth-1).type.compatibleContent(n)&&0==t.startIndex){if(0==t.$from.index(t.depth-1))return!1;let e=o.resolve(t.start-2);s=new _r(e,e,t.depth),t.endIndex=0;e--)s=ir.from(n[e].type.create(n[e].attrs,s));e.step(new Ei(t.start-(r?2:0),t.end,t.start,t.end,new hr(s,0,0),n.length,!0));let o=0;for(let e=0;e{t?.(n);const{tr:r}=e.apply(n);!function(e){const t=e.selection.$from;let n,r,i,s,o=[];for(let e=t.depth;e>=0;e--){if(r=t.node(e),n=t.index(e),i=r.maybeChild(n-1),s=r.maybeChild(n),i&&s&&i.type.name===s.type.name&&pf(i.type)){const n=t.before(e+1);o.push(n)}if(n=t.indexAfter(e),i=r.maybeChild(n-1),s=r.maybeChild(n),i&&s&&i.type.name===s.type.name&&pf(i.type)){const n=t.after(e+1);o.push(n)}}o=[...new Set(o)].sort(((e,t)=>t-e));let a=!1;for(const t of o)Ii(e.doc,t)&&(e.join(t),a=!0)}(r),t?.(r)}))})(n,r));// removed by dead control flow + var o, a; }}function pf(e){return!!e.name.includes("_list")}const ff=e=>Xl("Header",fc("commands.heading.dropdown",{shortcut:$n("Mod-H")}),"heading-dropdown",(()=>!0),Jp(e.nodes.heading),Jl(fc("commands.heading.entry",{level:1}),{richText:{command:jp({level:1}),active:Jp(e.nodes.heading,{level:1})},commonmark:null},"h1-btn",["fs-body3"]),Jl(fc("commands.heading.entry",{level:2}),{richText:{command:jp({level:2}),active:Jp(e.nodes.heading,{level:2})},commonmark:null},"h2-btn",["fs-body2"]),Jl(fc("commands.heading.entry",{level:3}),{richText:{command:jp({level:3}),active:Jp(e.nodes.heading,{level:3})},commonmark:null},"h3-btn",["fs-body1"])),mf=(e,t)=>Xl("EllipsisHorizontal",fc("commands.moreFormatting"),"more-formatting-dropdown",(()=>!0),(()=>!1),Jl(fc("commands.tagLink",{shortcut:$n("Mod-[")}),{richText:{command:Hp(t.parserFeatures?.tagLinks,!1),active:Jp(e.nodes.tagLink)},commonmark:Hc(t.parserFeatures?.tagLinks,!1)},"tag-btn"),Gl(Jl(fc("commands.metaTagLink",{shortcut:$n("Mod-]")}),{richText:{command:Hp(t.parserFeatures?.tagLinks,!0),active:Jp(e.nodes.tagLink)},commonmark:Hc(t.parserFeatures?.tagLinks,!0)},"meta-tag-btn"),!t.parserFeatures?.tagLinks?.disableMetaTags),Jl(fc("commands.spoiler",{shortcut:$n("Mod-/")}),{richText:{command:qp(e.nodes.spoiler),active:Jp(e.nodes.spoiler)},commonmark:ih},"spoiler-btn"),Jl(fc("commands.sub",{shortcut:$n("Mod-,")}),{richText:{command:Ch(e.marks.sub),active:Gp(e.marks.sub)},commonmark:oh},"subscript-btn"),Jl(fc("commands.sup",{shortcut:$n("Mod-.")}),{richText:{command:Ch(e.marks.sup),active:Gp(e.marks.sup)},commonmark:sh},"superscript-btn"),Jl(fc("commands.kbd",{shortcut:$n("Mod-'")}),{richText:{command:Ch(e.marks.kbd),active:Gp(e.marks.kbd)},commonmark:ah},"kbd-btn")),gf=(e,t,n)=>[{name:"formatting1",priority:0,entries:[Gl(ff(e),n===Hn.RichText),Gl({key:"toggleHeading",richText:null,commonmark:Qc,display:Zl("Header",fc("commands.heading.dropdown",{shortcut:$n("Mod-H")}),"heading-btn")},n===Hn.Commonmark),{key:"toggleBold",richText:{command:Ch(e.marks.strong),active:Gp(e.marks.strong)},commonmark:Jc,display:Zl("Bold",fc("commands.bold",{shortcut:$n("Mod-B")}),"bold-btn")},{key:"toggleEmphasis",richText:{command:Ch(e.marks.em),active:Gp(e.marks.em)},commonmark:Gc,display:Zl("Italic",fc("commands.emphasis",{shortcut:$n("Mod-I")}),"italic-btn")},Gl({key:"toggleStrike",richText:{command:Ch(e.marks.strike),active:Gp(e.marks.strike)},commonmark:Yc,display:Zl("Strikethrough",fc("commands.strikethrough"),"strike-btn")},t.parserFeatures?.extraEmphasis)]},{name:"code-formatting",priority:5,entries:[{key:"toggleCode",richText:{command:af,active:Gp(e.marks.code)},commonmark:Zc,display:Zl("Code",{title:fc("commands.inline_code.title",{shortcut:$n("Mod-K")}),description:fc("commands.inline_code.description")},"code-btn")},{key:"toggleCodeblock",richText:{command:(e,t)=>{if(!t)return!0;const{schema:n,doc:r,selection:i}=e,{from:s,to:o}=i,{code_block:a,paragraph:l,hard_break:c}=n.nodes,{from:h,to:u}=function(e,t,n){let r=t,i=n;if(e.nodesBetween(t,n,((e,t)=>{if(e.isBlock){const n=t,s=t+e.nodeSize;ni&&(i=s)}})),r===i){const n=e.resolve(t);r=n.start(n.depth),i=r+n.parent.nodeSize}return{from:r,to:i-1}}(r,s,o),d=function(e,t,n,r){let i=!0;return e.nodesBetween(t,n,(e=>!e.isBlock||e.type===r||(i=!1,!1))),i}(r,h,u,a);let p=e.tr;if(d){const e=function(e,t,n,r){const i=e.split("\n"),s=[];return i.forEach(((e,t)=>{e.length>0&&s.push(r.text(e)),t{e.isBlock&&n>=t&&n>s&&n>t&&(i+="\n",s=n),e.isText?i+=e.text:e.type===r&&(i+="\n")})),i}(r,h,u,c),t=[];e.length>0&&t.push(n.text(e));const i=a.create(null,t);p=p.replaceRangeWith(h,u,i),p=mp(p,h,h+i.nodeSize-1),p=fp(p)}return t(p.scrollIntoView()),!0},active:Jp(e.nodes.code_block)},commonmark:rh,display:Zl("CodeblockAlt",{title:fc("commands.code_block.title",{shortcut:$n("Mod-M")}),description:fc("commands.code_block.description")},"code-block-btn")}]},{name:"formatting2",priority:10,entries:[{key:"toggleLink",richText:Kp,commonmark:jc,display:Zl("Link",fc("commands.link",{shortcut:$n("Mod-L")}),"insert-link-btn")},{key:"toggleBlockquote",richText:{command:qp(e.nodes.blockquote),active:Jp(e.nodes.blockquote)},commonmark:eh,display:Zl("Quote",fc("commands.blockquote",{shortcut:$n("Mod-Q")}),"blockquote-btn")},Gl({key:"insertImage",richText:Wp,commonmark:lh,display:Zl("Image",fc("commands.image",{shortcut:$n("Mod-G")}),"insert-image-btn")},!!t.imageUpload?.handler),Gl({key:"insertTable",richText:{command:Fp,visible:e=>!bp(e.schema,e.selection)},commonmark:Uc,display:Zl("Table",fc("commands.table_insert",{shortcut:$n("Mod-E")}),"insert-table-btn")},t.parserFeatures?.tables),Gl(n===Hn.RichText&&Xl("Table",fc("commands.table_edit"),"table-dropdown",(e=>bp(e.schema,e.selection)),(()=>!1),Kl("Column","columnSection"),Jl(fc("commands.table_column.remove"),{richText:Mp,commonmark:null},"remove-column-btn"),Jl(fc("commands.table_column.insert_before"),{richText:_p,commonmark:null},"insert-column-before-btn"),Jl(fc("commands.table_column.insert_after"),{richText:Sp,commonmark:null},"insert-column-after-btn"),Kl("Row","rowSection"),Jl(fc("commands.table_row.remove"),{richText:Dp,commonmark:null},"remove-row-btn"),Jl(fc("commands.table_row.insert_before"),{richText:xp,commonmark:null},"insert-row-before-btn"),Jl(fc("commands.table_row.insert_after"),{richText:Cp,commonmark:null},"insert-row-after-btn")),t.parserFeatures?.tables)]},{name:"formatting3",priority:20,entries:[{key:"toggleOrderedList",richText:{command:df(e.nodes.ordered_list,e.nodes.list_item),active:Jp(e.nodes.ordered_list)},commonmark:th,display:Zl("OrderedList",fc("commands.ordered_list",{shortcut:$n("Mod-O")}),"numbered-list-btn")},{key:"toggleUnorderedList",richText:{command:df(e.nodes.bullet_list,e.nodes.list_item),active:Jp(e.nodes.bullet_list)},commonmark:nh,display:Zl("UnorderedList",fc("commands.unordered_list",{shortcut:$n("Mod-U")}),"bullet-list-btn")},{key:"insertRule",richText:Up,commonmark:Wc,display:Zl("HorizontalRule",fc("commands.horizontal_rule",{shortcut:$n("Mod-R")}),"horizontal-rule-btn")},mf(e,t)]},{name:"history",priority:30,entries:[{key:"undo-btn",richText:Ls,commonmark:Ls,display:Zl("Undo",fc("commands.undo",{shortcut:$n("Mod-Z")}),"undo-btn")},{key:"redo-btn",richText:Is,commonmark:Is,display:Zl("Refresh",fc("commands.redo",{shortcut:$n("Mod-Y")}),"redo-btn")}],classes:["d-none sm:d-inline-flex vk:d-inline-flex"]},{name:"other",priority:40,entries:[Wl("Help",fc("commands.help"),t.editorHelpLink,"help-link")]}],bf=new ks,yf=e=>new gs({key:bf,state:{init:()=>({baseView:e}),apply:(e,t)=>t}});class kf extends Kn{options;constructor(e,t,n,r={}){super(),this.options=An(kf.defaultOptions,r);const i=tc(n.getFinalizedMenu(gf(Vh,this.options,Hn.Commonmark),Vh),this.options.menuParentContainer,Hn.Commonmark);var s,o,a;this.editorView=new $l((t=>{this.setTargetNodeAttributes(t,this.options),e.appendChild(t)}),{editable:Oc,state:fs.create({doc:this.parseContent(t),plugins:[yf(this),Os(),...$h(this.options.parserFeatures),i,(a=this.options.preview,a?.enabled?new rc({key:ac,state:{init:()=>({isShown:a.shownByDefault}),apply(e,t){const n=this.getMeta(e);return{isShown:n?.isShown??t.isShown}}},view(e){const t=(a?.parentContainer||function(e){return e.dom.parentElement})(e);if(t.contains(e.dom))throw"Preview parentContainer must not contain the editor view";return new oc(e,t,a)}}):new gs({})),pp(this.options.parserFeatures),bc(this.options.pluginParentContainer),(s=this.options.imageUpload,o=this.options.parserFeatures.validateLink,_c(s,o,((e,t,n)=>{const r=fc("image_upload.default_image_alt_text");let i=`![${r}](${t})`,o=n+2,a=o+r.length;s.embedImagesAsLinks?(i=i.slice(1),o-=1,a-=1):s.wrapImagesInLinks&&(i=`[${i}](${t})`,o+=1,a+=1);const l=e.tr.insertText(i,n);return l.setSelection(es.create(e.apply(l).doc,o,a)),l}))),Mc(this.options.placeholderText),Lc(),Ic,qh,...n.plugins.commonmark]}),plugins:[]}),Sn("prosemirror commonmark document",this.editorView.state.doc.toJSON())}static get defaultOptions(){return{editorHelpLink:null,menuParentContainer:null,parserFeatures:Wn,placeholderText:null,imageUpload:{handler:kc},preview:{enabled:!1,parentContainer:null,renderer:null}}}parseContent(e){return Fc.fromSchema(Vh).parseCode(e)}serializeContent(){return Fc.toString(this.editorView.state.doc)}}var vf=Object.defineProperty,wf=(e,t,n)=>(((e,t,n)=>{t in e?vf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);function xf(e,t,n,r,i){if(!(e&&e.nodeSize&&null!=n&&n.length&&r))return[];const s=function(e,t){const n=[];return t.includes("doc")&&n.push({node:e,pos:-1}),e.descendants(((e,r)=>{if(e.isBlock&&t.indexOf(e.type.name)>-1)return n.push({node:e,pos:r}),!1})),n}(e,n);let o=[];return s.forEach((e=>{if(null!=i&&i.preRenderer){const t=i.preRenderer(e.node,e.pos);if(t)return void(o=[...o,...t])}const n=r(e.node);if(n&&!t.getLanguage(n))return;const s=n?t.highlight(e.node.textContent,{language:n}):t.highlightAuto(e.node.textContent);!n&&s.language&&(null==i?void 0:i.autohighlightCallback)&&i.autohighlightCallback(e.node,e.pos,s.language);const a=s._emitter,l=new Cf(a,e.pos,a.options.classPrefix).value(),c=[];l.forEach((e=>{if(!e.scope)return;const t=pl.inline(e.from,e.to,{class:e.classes});c.push(t)})),null!=i&&i.postRenderer&&i.postRenderer(e.node,e.pos,c),o=[...o,...c]})),o}class Cf{constructor(e,t,n){wf(this,"buffer"),wf(this,"nodeQueue"),wf(this,"classPrefix"),wf(this,"currentPosition"),this.buffer=[],this.nodeQueue=[],this.classPrefix=n,this.currentPosition=t+1,e.walk(this)}get currentNode(){return this.nodeQueue.length?this.nodeQueue.slice(-1):null}addText(e){!this.currentNode||(this.currentPosition+=e.length)}openNode(e){let t=e.scope||"";t=e.sublanguage?`language-${t}`:this.expandScopeName(t);const n=this.newNode();n.scope=e.scope,n.classes=t,n.from=this.currentPosition,this.nodeQueue.push(n)}closeNode(e){const t=this.nodeQueue.pop();if(!t)throw"Cannot close node!";if(t.to=this.currentPosition,e.scope!==t.scope)throw"Mismatch!";this.buffer.push(t)}value(){return this.buffer}newNode(){return{from:0,to:0,scope:void 0,classes:""}}expandScopeName(e){if(e.includes(".")){const t=e.split("."),n=t.shift()||"";return[`${this.classPrefix}${n}`,...t.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${this.classPrefix}${e}`}}class Ef{constructor(e){wf(this,"cache"),this.cache={...e}}get(e){return this.cache[e]||null}set(e,t,n){e<0||(this.cache[e]={node:t,decorations:n})}replace(e,t,n,r){this.remove(e),this.set(t,n,r)}remove(e){delete this.cache[e]}invalidate(e){const t=new Ef(this.cache),n=e.mapping;return Object.keys(this.cache).forEach((r=>{const i=+r;if(i<0)return;const s=n.mapResult(i),o=e.doc.nodeAt(s.pos),{node:a,decorations:l}=this.get(i);if(s.deleted||null==o||!o.eq(a))t.remove(i);else if(i!==s.pos){const e=l.map((e=>e.map(n,0,0))).filter((e=>null!==e));t.replace(i,s.pos,o,e)}})),t}}var Sf=r(171),_f=r.n(Sf);const Af={bsh:"bash",csh:"bash",sh:"bash",c:"cpp",cc:"cpp",cxx:"cpp",cyc:"cpp",m:"cpp",cs:"csharp",coffee:"coffeescript",html:"xml",xsl:"xml",js:"javascript",pl:"perl",py:"python",cv:"python",rb:"ruby",clj:"clojure",erl:"erlang",hs:"haskell",mma:"mathematica",tex:"latex",cl:"lisp",el:"lisp",lsp:"lisp",scm:"scheme",ss:"scheme",rkt:"scheme",fs:"ocaml",ml:"ocaml",s:"r",rc:"rust",rs:"rust",vhd:"vhdl",none:"plaintext"};function Df(e){const t=function(e){return t=(e.attrs.params||e.attrs.language||"").split(/\s/)[0].toLowerCase()||null,Af[t]||t;// removed by dead control flow + var t; }(e);return t?{Language:t,IsAutoDetected:!1}:{Language:e.attrs.autodetectedLanguage,IsAutoDetected:!0}}function Mf(e){const t=function(){const e=globalThis.hljs??_f();return e&&e.highlight?e:null}();return t?function(e,t=["code_block"],n,r){const i=n||function(e){const t=e.attrs.detectedHighlightLanguage,n=e.attrs.params;return t||(null==n?void 0:n.split(" ")[0])||""},s=r||function(e,t,n,r){const i=t.attrs||{};return i.detectedHighlightLanguage=r,e.setNodeMarkup(n,void 0,i)},o=(n,r)=>{const s=[];return{content:xf(n,e,t,i,{preRenderer:(e,t)=>{var n;return null==(n=r.get(t))?void 0:n.decorations},postRenderer:(e,t,n)=>{r.set(t,e,n)},autohighlightCallback:(e,t,n)=>{s.push({node:e,pos:t,language:n})}}),autodetectedLanguages:s}},a=new ks;return new gs({key:a,state:{init(e,t){const n=new Ef({}),r=o(t.doc,n);return{cache:n,decorations:gl.create(t.doc,r.content),autodetectedLanguages:r.autodetectedLanguages}},apply(e,t){const n=t.cache.invalidate(e);if(!e.docChanged)return{cache:n,decorations:t.decorations.map(e.mapping,e.doc),autodetectedLanguages:[]};const r=o(e.doc,n);return{cache:n,decorations:gl.create(e.doc,r.content),autodetectedLanguages:r.autodetectedLanguages}}},props:{decorations(e){var t;return null==(t=this.getState(e))?void 0:t.decorations}},view(e){const t=e=>{const t=a.getState(e.state);if(!t||!t.autodetectedLanguages.length)return;let n=e.state.tr;t.autodetectedLanguages.forEach((e=>{e.language&&(n=s(n,e.node,e.pos,e.language)||n)})),n=n.setMeta("addToHistory",!1),e.dispatch(n)};return t(e),{update:t}}})}(t,["code_block",...e?.highlightedNodeTypes||[]],(e=>Df(e).Language),((e,t,n,r)=>{const i={...t.attrs};return i.autodetectedLanguage=r,e.setNodeMarkup(n,void 0,i)})):new gs({})}const Tf=new Kr({nodes:{doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:()=>["p",0]},blockquote:{content:"block+",group:"block",parseDOM:[{tag:"blockquote"}],toDOM:()=>["blockquote",0]},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["div",["hr"]]},heading:{attrs:{level:{default:1}},content:"(text | image)*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM:e=>["h"+e.attrs.level,0]},code_block:{content:"text*",group:"block",code:!0,defining:!0,marks:"",attrs:{params:{default:""}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>({params:e.getAttribute("data-params")||""})}],toDOM:e=>["pre",e.attrs.params?{"data-params":e.attrs.params}:{},["code",0]]},ordered_list:{content:"list_item+",group:"block",attrs:{order:{default:1},tight:{default:!1}},parseDOM:[{tag:"ol",getAttrs:e=>({order:e.hasAttribute("start")?+e.getAttribute("start"):1,tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ol",{start:1==e.attrs.order?null:e.attrs.order,"data-tight":e.attrs.tight?"true":null},0]},bullet_list:{content:"list_item+",group:"block",attrs:{tight:{default:!1}},parseDOM:[{tag:"ul",getAttrs:e=>({tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ul",{"data-tight":e.attrs.tight?"true":null},0]},list_item:{content:"block+",defining:!0,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]},text:{group:"inline"},image:{inline:!0,attrs:{src:{},alt:{default:null},title:{default:null}},group:"inline",draggable:!0,parseDOM:[{tag:"img[src]",getAttrs:e=>({src:e.getAttribute("src"),title:e.getAttribute("title"),alt:e.getAttribute("alt")})}],toDOM:e=>["img",e.attrs]},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:()=>["br"]}},marks:{em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"},{style:"font-style=normal",clearMark:e=>"em"==e.type.name}],toDOM:()=>["em"]},strong:{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:e=>"normal"!=e.style.fontWeight&&null},{style:"font-weight=400",clearMark:e=>"strong"==e.type.name},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:()=>["strong"]},link:{attrs:{href:{},title:{default:null}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>({href:e.getAttribute("href"),title:e.getAttribute("title")})}],toDOM:e=>["a",e.attrs]},code:{parseDOM:[{tag:"code"}],toDOM:()=>["code"]}}});class Of{constructor(e,t){this.schema=e,this.tokenHandlers=t,this.stack=[{type:e.topNodeType,attrs:null,content:[],marks:lr.none}]}top(){return this.stack[this.stack.length-1]}push(e){this.stack.length&&this.top().content.push(e)}addText(e){if(!e)return;let t,n=this.top(),r=n.content,i=r[r.length-1],s=this.schema.text(e,n.marks);i&&(t=function(e,t){if(e.isText&&t.isText&&lr.sameSet(e.marks,t.marks))return e.withText(e.text+t.text)}(i,s))?r[r.length-1]=t:r.push(s)}openMark(e){let t=this.top();t.marks=e.addToSet(t.marks)}closeMark(e){let t=this.top();t.marks=e.removeFromSet(t.marks)}parseTokens(e){for(let t=0;t{e.openNode(t,Nf(i,n,r,s)),e.addText(If(n.content)),e.closeNode()}:(n[r+"_open"]=(e,n,r,s)=>e.openNode(t,Nf(i,n,r,s)),n[r+"_close"]=e=>e.closeNode())}else if(i.node){let t=e.nodeType(i.node);n[r]=(e,n,r,s)=>e.addNode(t,Nf(i,n,r,s))}else if(i.mark){let t=e.marks[i.mark];Lf(i,r)?n[r]=(e,n,r,s)=>{e.openMark(t.create(Nf(i,n,r,s))),e.addText(If(n.content)),e.closeMark(t)}:(n[r+"_open"]=(e,n,r,s)=>e.openMark(t.create(Nf(i,n,r,s))),n[r+"_close"]=e=>e.closeMark(t))}else{if(!i.ignore)throw new RangeError("Unrecognized parsing spec "+JSON.stringify(i));Lf(i,r)?n[r]=Ff:(n[r+"_open"]=Ff,n[r+"_close"]=Ff)}}return n.text=(e,t)=>e.addText(t.content),n.inline=(e,t)=>e.parseTokens(t.children),n.softbreak=n.softbreak||(e=>e.addText(" ")),n}(e,n)}parse(e,t={}){let n,r=new Of(this.schema,this.tokenHandlers);r.parseTokens(this.tokenizer.parse(e,t));do{n=r.closeNode()}while(r.stack.length);return n||this.schema.topNodeType.createAndFill()}}function Pf(e,t){for(;++t({tight:Pf(t,n)})},ordered_list:{block:"ordered_list",getAttrs:(e,t,n)=>({order:+e.attrGet("start")||1,tight:Pf(t,n)})},heading:{block:"heading",getAttrs:e=>({level:+e.tag.slice(1)})},code_block:{block:"code_block",noCloseToken:!0},fence:{block:"code_block",getAttrs:e=>({params:e.info||""}),noCloseToken:!0},hr:{node:"horizontal_rule"},image:{node:"image",getAttrs:e=>({src:e.attrGet("src"),title:e.attrGet("title")||null,alt:e.children[0]&&e.children[0].content||null})},hardbreak:{node:"hard_break"},em:{mark:"em"},strong:{mark:"strong"},link:{mark:"link",getAttrs:e=>({href:e.attrGet("href"),title:e.attrGet("title")||null})},code_inline:{mark:"code",noCloseToken:!0}}),zf={open:"",close:"",mixable:!0};class $f{constructor(e,t,n={}){this.nodes=e,this.marks=t,this.options=n}serialize(e,t={}){t=Object.assign({},this.options,t);let n=new jf(this.nodes,this.marks,t);return n.renderContent(e),n.out}}const Vf=new $f({blockquote(e,t){e.wrapBlock("> ",null,t,(()=>e.renderContent(t)))},code_block(e,t){const n=t.textContent.match(/`{3,}/gm),r=n?n.sort().slice(-1)[0]+"`":"```";e.write(r+(t.attrs.params||"")+"\n"),e.text(t.textContent,!1),e.write("\n"),e.write(r),e.closeBlock(t)},heading(e,t){e.write(e.repeat("#",t.attrs.level)+" "),e.renderInline(t,!1),e.closeBlock(t)},horizontal_rule(e,t){e.write(t.attrs.markup||"---"),e.closeBlock(t)},bullet_list(e,t){e.renderList(t," ",(()=>(t.attrs.bullet||"*")+" "))},ordered_list(e,t){let n=t.attrs.order||1,r=String(n+t.childCount-1).length,i=e.repeat(" ",r+2);e.renderList(t,i,(t=>{let i=String(n+t);return e.repeat(" ",r-i.length)+i+". "}))},list_item(e,t){e.renderContent(t)},paragraph(e,t){e.renderInline(t),e.closeBlock(t)},image(e,t){e.write("!["+e.esc(t.attrs.alt||"")+"]("+t.attrs.src.replace(/[\(\)]/g,"\\$&")+(t.attrs.title?' "'+t.attrs.title.replace(/"/g,'\\"')+'"':"")+")")},hard_break(e,t,n,r){for(let i=r+1;i(e.inAutolink=function(e,t,n){if(e.attrs.title||!/^\w+:/.test(e.attrs.href))return!1;let r=t.child(n);return!(!r.isText||r.text!=e.attrs.href||r.marks[r.marks.length-1]!=e||n!=t.childCount-1&&e.isInSet(t.child(n+1).marks))}(t,n,r),e.inAutolink?"<":"["),close(e,t,n,r){let{inAutolink:i}=e;return e.inAutolink=void 0,i?">":"]("+t.attrs.href.replace(/[\(\)"]/g,"\\$&")+(t.attrs.title?` "${t.attrs.title.replace(/"/g,'\\"')}"`:"")+")"},mixable:!0},code:{open:(e,t,n,r)=>qf(n.child(r),-1),close:(e,t,n,r)=>qf(n.child(r-1),1),escape:!1}});function qf(e,t){let n,r=/`+/g,i=0;if(e.isText)for(;n=r.exec(e.text);)i=Math.max(i,n[0].length);let s=i>0&&t>0?" `":"`";for(let e=0;e0&&t<0&&(s+=" "),s}class jf{constructor(e,t,n){this.nodes=e,this.marks=t,this.options=n,this.delim="",this.out="",this.closed=null,this.inAutolink=void 0,this.atBlockStart=!1,this.inTightList=!1,void 0===this.options.tightLists&&(this.options.tightLists=!1),void 0===this.options.hardBreakNodeName&&(this.options.hardBreakNodeName="hard_break")}flushClose(e=2){if(this.closed){if(this.atBlank()||(this.out+="\n"),e>1){let t=this.delim,n=/\s+$/.exec(t);n&&(t=t.slice(0,t.length-n[0].length));for(let n=1;nthis.render(t,e,r)))}renderInline(e,t=!0){this.atBlockStart=t;let n=[],r="",i=(t,i,s)=>{let o=t?t.marks:[];t&&t.type.name===this.options.hardBreakNodeName&&(o=o.filter((t=>{if(s+1==e.childCount)return!1;let n=e.child(s+1);return t.isInSet(n.marks)&&(!n.isText||/\S/.test(n.text))})));let a=r;if(r="",t&&t.isText&&o.some((e=>{let t=this.getMark(e.type.name);return t&&t.expelEnclosingWhitespace&&!e.isInSet(n)}))){let[e,r,i]=/^(\s*)(.*)$/m.exec(t.text);r&&(a+=r,(t=i?t.withText(i):null)||(o=n))}if(t&&t.isText&&o.some((t=>{let n=this.getMark(t.type.name);return n&&n.expelEnclosingWhitespace&&(s==e.childCount-1||!t.isInSet(e.child(s+1).marks))}))){let[e,i,s]=/^(.*?)(\s*)$/m.exec(t.text);s&&(r=s,(t=i?t.withText(i):null)||(o=n))}let l=o.length?o[o.length-1]:null,c=l&&!1===this.getMark(l.type.name).escape,h=o.length-(c?1:0);e:for(let e=0;er?o=o.slice(0,r).concat(t).concat(o.slice(r,e)).concat(o.slice(e+1,h)):r>e&&(o=o.slice(0,e).concat(o.slice(e+1,r)).concat(t).concat(o.slice(r,h)));continue e}}}let u=0;for(;u0&&(this.atBlockStart=!1)};e.forEach(i),i(null,0,e.childCount),this.atBlockStart=!1}renderList(e,t,n){this.closed&&this.closed.type==e.type?this.flushClose(3):this.inTightList&&this.flushClose(1);let r=void 0!==e.attrs.tight?e.attrs.tight:this.options.tightLists,i=this.inTightList;this.inTightList=r,e.forEach(((i,s,o)=>{o&&r&&this.flushClose(1),this.wrapBlock(t,n(o),e,(()=>this.render(i,e,o)))})),this.inTightList=i}esc(e,t=!1){return e=e.replace(/[`*\\~\[\]_]/g,((t,n)=>"_"==t&&n>0&&n+1])/,"\\$&").replace(/^(\s*)(#{1,6})(\s|$)/,"$1\\$2$3").replace(/^(\s*\d+)\.\s/,"$1\\. ")),this.options.escapeExtraCharacters&&(e=e.replace(this.options.escapeExtraCharacters,"\\$&")),e}quote(e){let t=-1==e.indexOf('"')?'""':-1==e.indexOf("'")?"''":"()";return t[0]+e+t[1]}repeat(e,t){let n="";for(let r=0;r$/.test(e),r=e.replace(/[<>/]/g,"").trim().split(/\s/)[0];t=["del","strike","s"].includes(r)?Wf.strike:["b","strong"].includes(r)?Wf.strong:["em","i"].includes(r)?Wf.emphasis:"code"===r?Wf.code:"br"===r?Wf.hardbreak:"blockquote"===r?Wf.blockquote:"a"===r?Wf.link:"img"===r?Wf.image:/h[1,2,3,4,5,6]/.test(r)?Wf.heading:"kbd"===r?Wf.keyboard:"pre"===r?Wf.pre:"sup"===r?Wf.sup:"sub"===r?Wf.sub:"ul"===r?Wf.unordered_list:"ol"===r?Wf.ordered_list:"li"===r?Wf.list_item:"p"===r?Wf.paragraph:"hr"===r?Wf.horizontal_rule:"dd"===r?Wf.description_details:"dl"===r?Wf.description_list:"dt"===r?Wf.description_term:Wf.unknown;let i=r?`<${n?"/":""}${r}>`:"";const s=Zf.includes(t);s&&(i=e.replace(/^(<[a-z]+).*?([^\S\r\n]?\/?>)$/is,"$1$2"));const o={},a=Jf[t];if(a?.length)for(const t of a)o[t]=new RegExp(`${t}=["'](.+?)["']`).exec(e)?.[1]||"";return{type:t,isSelfClosing:s,isClosing:n,isBlock:Gf.includes(t),tagName:r,attributes:o,markup:i}}function Yf(e,t){const n=t||new Xf("","",0),r=e.isSelfClosing?"":e.isClosing?"_close":"_open";let i="";switch(e.type){case Wf.unknown:i="text";break;case Wf.strike:i="s"+r;break;case Wf.emphasis:i="em"+r;break;case Wf.code:i="code_inline_split"+r;break;case Wf.horizontal_rule:i="hr";break;case Wf.link:i="link"+r,n.attrSet("href",e.attributes.href),n.attrSet("title",e.attributes.title);break;case Wf.image:i="image",n.attrSet("src",e.attributes.src),n.attrSet("height",e.attributes.height),n.attrSet("width",e.attributes.width),n.attrSet("alt",e.attributes.alt),n.attrSet("title",e.attributes.title);break;case Wf.keyboard:i="kbd"+r;break;default:i=Wf[e.type]+r}return n.type=i,n.markup=e.markup,n.nesting=e.isClosing?-1:1,e.isSelfClosing&&(n.nesting=0),n.tag=e.tagName||"",n}function em(e,t){if(e.block)return[e];const n=[Wf.blockquote,Wf.pre],r=new Xf("inline","",0);return r.children=[e],!t||n.includes(t)?[new Xf("paragraph_open","p",1),r,new Xf("paragraph_close","p",-1)]:[r]}function tm(e){let t=null;return"html_inline"===e.type?t=Qf(e.content):e.children&&e.children.length&&(e.children=nm(e.children)),t?(t.isBlock||(e=Yf(t,e)).attrSet("inline_html","true"),e):e}function nm(e){for(let t=0,n=(e=e.map(tm).filter((e=>!!e))).length;t)/gi)?.map((e=>({match:e,tagInfo:Qf(e)})));if(!t||!t.length)return e;let n=e;return t.forEach((e=>{let t;if(e.tagInfo.type===Wf.unknown)t="";else if(e.tagInfo.type===Wf.image){const n=e.match.match(/((width|height|src|alt|title)=["'].+?["'])/g);let r=e.tagInfo.markup;n?.length&&(r=r.replace("{let n=null;if("html_block"===e.type?n=function(e){const t=e.content,n=/^(?:(<[a-z0-9]+.*?>)([^<>\n]+?)(<\/[a-z0-9]+>))$|^(<[a-z0-9]+(?:\s.+?)?\s?\/?>)$/i.exec(t);if(!n)return null;const r=[];let i=!1;if(n[4]){const e=Qf(t);e.type!==Wf.unknown&&(i=e.isBlock,r.push(e))}else{const e=Qf(n[1]),t=n[2],s=Qf(n[3]);e.type!==Wf.unknown&&s.type!==Wf.unknown&&e.type===s.type&&(i=e.isBlock,r.push(e),r.push(t),r.push(s))}return r.length>0?{isBlock:i,tagInfo:r}:null}(e):e.children?.length&&(e.children=im(e.children)),!n||!n.tagInfo.length)return void t.push(e);const r=[];n.tagInfo.forEach(((e,t,n)=>{const i=n[t-1],s="string"==typeof e||!e.isBlock;let o;if("string"==typeof e){const t=new Xf("text","",0);t.content=e,o=t}else o=Yf(e);let a=[o];s&&(a=em(o,i?.type)),r.push(...a)})),t.push(...r)})),t}function sm(e){const t=[];return e.forEach((e=>{if(e.children?.length&&(e.children=sm(e.children)),0===e.type.indexOf("html_block"))if("html_block"===e.type){if(e.content=rm(e.content),!e.content.trim())return;if(e.content.includes("<"))t.push(e);else{const n=new Xf("text","",0);n.content=e.content;const r=em(n,null);t.push(...r)}}else if("html_block_container_open"===e.type){const n=e.attrGet("contentOpen"),r=e.attrGet("contentClose");e.attrSet("contentOpen",rm(n)),e.attrSet("contentClose",rm(r)),t.push(e)}else t.push(e);else t.push(e)})),t}function om(e){const t=[];let n=0,r=e.map(((e,t)=>{if("html_block"!==e.type)return null;const r=e.content.match(/<[a-z]+(\s[a-z0-9\-"'=\s])?>/gi)?.length??0,i=e.content.match(/<\/[a-z]+>/gi)?.length??0;return r>i||rnull!==e));r.length%2==1&&(r=r.slice(0,-1));let i=null;return e.forEach(((e,n)=>{if(e.children&&e.children.length&&(e.children=om(e.children)),"html_block"!==e.type||!r.includes(n))return void t.push(e);const s=new Xf("html_block_container_"+(i?"close":"open"),"",i?-1:1);i?(i.attrSet("contentClose",e.content),i=null,t.push(s)):(s.attrSet("contentOpen",e.content),i=s,t.push(s))})),t}function am(e){e.core.ruler.push("so-sanitize-html",(function(e){return e.tokens=nm(e.tokens),e.tokens=im(e.tokens),e.tokens=om(e.tokens),e.tokens=sm(e.tokens),!1}))}function lm(e,t,n){if(!n)throw new Error("link-reference: parent token is undefined");const r=/\[(.+?)\](?!\()(?:\[\]|\[(.+?)\]|)/g;let i,s,o;for(;null!==(o=r.exec(n.content));){if(!o?.length)continue;s=o[1],o[2]&&(s=o[2]),i=e[(new wn).utils.normalizeReference(s)];const n="image"===t.type?t.attrGet("src"):t.attrGet("href");if(i&&i.href===n)break;i=void 0}if(!i)return!1;const a=o[2]?"full":o[0].endsWith("[]")?"collapsed":"shortcut";return t.markup="reference",t.meta=t.meta||{},t.meta.reference={...i,label:s,type:a,contentMatch:o[0]},!0}function cm(e,t,n){let r=!1;t.forEach((t=>{"link_open"!==t.type||t.markup||(r=lm(e,t,n)),"link_close"===t.type&&r&&(t.markup="reference",r=!1),"image"!==t.type||t.markup||lm(e,t,n),t.children&&cm(e,t.children,t)}))}function hm(e){e.core.ruler.push("link-reference",(function(e){const t=e.env?.references;return!(!t||!Object.keys(t).length||(cm(t,e.tokens),1))}))}function um(e,t,n,r,i){const s=new wn,o=e=>s.utils.isSpace(e);var a,l,c,h,u,d,p,f,m,g,b,y,k,v,w,x,C,E,S,_,A=t.lineMax,D=t.bMarks[n]+t.tShift[n],M=t.eMarks[n];if(t.sCount[n]-t.blkIndent>=4)return!1;if(62!==t.src.charCodeAt(D)||!e.followingCharRegex.test(t.src[D+1]))return!1;if(D+=e.markup.length,i)return!0;for(h=m=t.sCount[n]+D-(t.bMarks[n]+t.tShift[n]),32===t.src.charCodeAt(D)?(D++,h++,m++,a=!1,x=!0):9===t.src.charCodeAt(D)?(x=!0,(t.bsCount[n]+m)%4==3?(D++,h++,m++,a=!1):a=!0):x=!1,g=[t.bMarks[n]],t.bMarks[n]=D;D=M,v=[t.sCount[n]],t.sCount[n]=m-h,w=[t.tShift[n]],t.tShift[n]=D-t.bMarks[n],E=t.md.block.ruler.getRules("spoiler"),k=t.parentType,t.parentType="spoiler",_=!1,f=n+1;f=(M=t.eMarks[f])));f++)if(D+=e.markup.length,62!==t.src.charCodeAt(D-e.markup.length)||!e.followingCharRegex.test(t.src[D-e.markup.length+1])||_){if(d)break;for(C=!1,c=0,u=E.length;c=M,b.push(t.bsCount[f]),t.bsCount[f]=t.sCount[f]+1+(x?1:0),v.push(t.sCount[f]),t.sCount[f]=m-h,w.push(t.tShift[f]),t.tShift[f]=D-t.bMarks[f]}for(y=t.blkIndent,t.blkIndent=0,(S=t.push(e.name+"_open",e.name,1)).markup=e.markup,S.map=p=[n,0],t.md.block.tokenize(t,n,f),(S=t.push(e.name+"_close",e.name,-1)).markup=e.markup,t.lineMax=A,t.parentType=k,p[1]=t.line,c=0;c!",name:"spoiler"},e,t,n,r)}function pm(e,t,n,r){return um({followingCharRegex:/[^!]/,markup:">",name:"blockquote"},e,t,n,r)}function fm(e){e.block.ruler.__rules__.forEach((e=>{const t=e.alt.indexOf("blockquote");t>-1&&e.alt.splice(t,0,"spoiler")})),e.block.ruler.before("blockquote","spoiler",dm,{alt:["paragraph","reference","spoiler","blockquote","list"]}),e.block.ruler.at("blockquote",pm,{alt:["paragraph","reference","spoiler","blockquote","list"]})}function mm(e,t,n,r,i,s){const o=n.bMarks[r]+n.tShift[r],a=n.eMarks[r];if(60!==n.src.charCodeAt(o)||o+2>=a)return!1;if(33!==n.src.charCodeAt(o+1))return!1;const l=n.src.slice(o,a),c=e.exec(l);if(!c?.length)return!1;if(s)return!0;const h=r+1;n.line=h;const u=n.push(t,"",0);return u.map=[r,h],u.content=n.getLines(r,h,n.blkIndent,!0),u.attrSet("language",c[1]),!0}function gm(e,t,n,r){return mm(//,"stack_language_comment",e,t,0,r)}function bm(e,t,n,r){return mm(//,"stack_language_all_comment",e,t,0,r)}function ym(e){let t=null;for(const n of e.tokens)if("stack_language_all_comment"===n.type){t=n.attrGet("language");break}for(let n=0,r=e.tokens.length;n!e.type.startsWith("stack_language"))),!1}function km(e){e.block.ruler.before("html_block","stack_language_comment",gm),e.block.ruler.before("html_block","stack_language_all_comment",bm),e.core.ruler.push("so-sanitize-code-lang",ym)}function vm(e,t){e.inline.ruler.push("tag_link",(function(e,n){return function(e,t,n){if(91!==e.src.charCodeAt(e.pos))return!1;if("[tag:"!==e.src.slice(e.pos,e.pos+5)&&"[meta-tag:"!==e.src.slice(e.pos,e.pos+10))return!1;const r=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(r<0)return!1;const i=e.src.slice(e.pos,r+1),s="[meta-tag:"===i.slice(0,10),o=i.slice(s?10:5,-1);if(s&&n.disableMetaTags)return!1;if(n.validate&&!n.validate(o,s,i))return!1;if(!t){let t=e.push("tag_link_open","a",1);t.attrSet("tagName",o),t.attrSet("tagType",s?"meta-tag":"tag"),t.content=i,t=e.push("text","",0),t.content=o,t=e.push("tag_link_close","a",-1)}return e.pos=r+1,!0}(e,n,t)}))}function wm(e){let t=0,n=!1,r=!1;for(let i=0;i({content:e.content})},html_block:{node:"html_block",getAttrs:e=>({content:e.content})},html_block_container:{block:"html_block_container",getAttrs:e=>({contentOpen:e.attrGet("contentOpen"),contentClose:e.attrGet("contentClose")})},stack_language_comment:{ignore:!0},stack_language_all_comment:{ignore:!0},bullet_list:{block:"bullet_list",getAttrs:e=>({tight:"true"===e.attrGet("tight")})},ordered_list:{block:"ordered_list",getAttrs:e=>({order:+e.attrGet("start")||1,tight:"true"===e.attrGet("tight")})},code_block:{block:"code_block",noCloseToken:!0,getAttrs:e=>({params:e.info||"",markup:e.markup||"indented"})},fence:{block:"code_block",getAttrs:e=>({params:e.info||""}),noCloseToken:!0},s:{mark:"strike"},table:{block:"table"},thead:{block:"table_head"},tbody:{block:"table_body"},th:{block:"table_header",getAttrs:e=>({style:e.attrGet("style")})},tr:{block:"table_row"},td:{block:"table_cell",getAttrs:e=>({style:e.attrGet("style")})},image:{node:"image",getAttrs:e=>{const t={src:e.attrGet("src"),width:e.attrGet("width"),height:e.attrGet("height"),alt:e.attrGet("alt")||e.children?.[0]?.content||null,title:e.attrGet("title")};if("reference"===e.markup){const n=e.meta;t.referenceType=n?.reference?.type,t.referenceLabel=n?.reference?.label}return t}},tag_link:{block:"tagLink",getAttrs:e=>({tagName:e.attrGet("tagName"),tagType:e.attrGet("tagType")})},spoiler:{block:"spoiler"},code_inline_split:{mark:"code"}};Object.keys(Cm).forEach((e=>{const t=Cm[e];if(t.getAttrs){const n=t.getAttrs.bind(t);t.getAttrs="link"===e?(e,t,r)=>{const i={...n(e,t,r)};if(i.markup=e.markup,"reference"===e.markup){const t=e.meta;i.referenceType=t?.reference?.type,i.referenceLabel=t?.reference?.label}return i}:(e,t,r)=>({markup:e.markup,...n(e,t,r)})}else t.getAttrs=e=>({markup:e.markup})}));class Em extends Bf{tokens;constructor(e,t,n){super(e,t,n),this.tokenHandlers.softbreak=e=>{const t=this.schema.nodes.softbreak;e.openNode(t,{}),e.addText(" "),e.closeNode()}}}class Sm extends wn{constructor(e,t){super(e,t)}parse(e,t){const n=super.parse(e,t);return Sn("Sanitized markdown token tree",n),n}}class _m{constructor(e,t,n={}){var r;this.match=e,this.match=e,this.handler="string"==typeof t?(r=t,function(e,t,n,i){let s=r;if(t[1]){let e=t[0].lastIndexOf(t[1]);s+=t[0].slice(e+t[1].length);let r=(n+=e)-i;r>0&&(s=t[0].slice(e-r,e)+s,n=i)}return e.tr.insertText(s,n,i)}):t,this.undoable=!1!==n.undoable,this.inCode=n.inCode||!1}}function Am(e,t,n,r,i,s){if(e.composing)return!1;let o=e.state,a=o.doc.resolve(t),l=a.parent.textBetween(Math.max(0,a.parentOffset-500),a.parentOffset,null,"")+r;for(let c=0;c{let n=e.plugins;for(let r=0;r=0;e--)n.step(r.steps[e].invert(r.docs[e]));if(i.text){let t=n.doc.resolve(i.from).marks();n.replaceWith(i.from,i.to,e.schema.text(i.text,t))}else n.delete(i.from,i.to);t(n)}return!0}}return!1};function Mm(e,t,n=null,r){return new _m(e,((e,i,s,o)=>{let a=n instanceof Function?n(i):n,l=e.tr.delete(s,o),c=l.doc.resolve(s).blockRange(),h=c&&Mi(c,t,a);if(!h)return null;l.wrap(c,h);let u=l.doc.resolve(s-1).nodeBefore;return u&&u.type==t&&Ii(l.doc,s-1)&&(!r||r(i,u))&&l.join(s-1),l}))}function Tm(e,t,n=null){return new _m(e,((e,r,i,s)=>{let o=e.doc.resolve(i),a=n instanceof Function?n(r):n;return o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),t)?e.tr.delete(i,s).setBlockType(i,i,t,a):null}))}new _m(/--$/,"—"),new _m(/\.\.\.$/,"…"),new _m(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"“"),new _m(/"$/,"”"),new _m(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"‘"),new _m(/'$/,"’");const Om=/`(\S(?:|.*?\S))`$/,Nm=/\*\*(\S(?:|.*?\S))\*\*$/,Lm=/\*([^*\s]([^*])*[^*\s]|[^*\s])\*$/,Im=/(?{const a=r?r(i):{},l=e.tr;if(!e.doc.resolve(s).parent.type.allowsMarkType(t))return null;if(n&&!n(i))return null;const c=i[0],h=i[1];if(h){const e=s+c.indexOf(h),t=e+h.length;ts&&l.delete(s,e),o=s+h.length}return l.addMark(s,o,t.create(a)),l.removeStoredMark(t),l}))}function Rm(e,t){const n=Tm(e,t).handler;return new _m(e,((e,t,r,i)=>{const s=n(e,t,r,i);return s&&fp(s),s}))}const zm=(e,t)=>{const n=Mm(/^\s*>\s$/,e.nodes.blockquote),r=Mm(/^\s*>!\s$/,e.nodes.spoiler),i=Tm(new RegExp("^(#{1,3})\\s$"),e.nodes.heading,(e=>({level:e[1].length}))),s=Rm(/^```$/,e.nodes.code_block),o=Rm(/^\s{4}$/,e.nodes.code_block),a=Mm(/^\s*[*+-]\s$/,e.nodes.bullet_list),l=Mm(/^\s*\d(\.|\))\s$/,e.nodes.ordered_list,(e=>({order:+e[1]})),((e,t)=>t.childCount+t.attrs.order==+e[1])),c=Pm(Om,e.marks.code),h=Pm(Nm,e.marks.strong),u=Pm(Lm,e.marks.em,(e=>"*"!==e.input.charAt(e.input.lastIndexOf(e[0])-1)));return function({rules:e}){let t=new gs({state:{init:()=>null,apply(e,t){return e.getMeta(this)||(e.selectionSet||e.docChanged?null:t)}},props:{handleTextInput:(n,r,i,s)=>Am(n,r,i,s,e,t),handleDOMEvents:{compositionend:n=>{setTimeout((()=>{let{$cursor:r}=n.state.selection;r&&Am(n,r.pos,r.pos,"",e,t)}))}}},isInputRules:!0});return t}({rules:[n,r,i,s,o,a,l,c,h,Pm(Im,e.marks.strong),u,Pm(Fm,e.marks.em,(e=>"_"!==e.input.charAt(e.input.lastIndexOf(e[0])-1))),(t=>Pm(Bm,e.marks.link,(e=>t.validateLink(e[2])),(e=>({href:e[2]}))))(t)]})};function $m(e,t){const n=zh({Tab:rf,"Shift-Tab":sf,"Mod-]":rf,"Mod-[":sf,Enter:tf,"Mod-;":lf}),r=zh({"Mod-e":Fp,"Mod-Enter":vp,"Shift-Enter":vp,Enter:Lp,Backspace:Tp,Delete:Tp,"Mod-Backspace":Tp,"Mod-Delete":Tp,Tab:Lp,"Shift-Tab":Np});var i;const s=[zh({"Mod-z":Ls,"Mod-y":Is,"Shift-Mod-z":Is,Backspace:Dm,Enter:hf(e.nodes.list_item),Tab:(i=e.nodes.list_item,function(e,t){let{$from:n,$to:r}=e.selection,s=n.blockRange(r,(e=>e.childCount>0&&e.firstChild.type==i));if(!s)return!1;let o=s.startIndex;if(0==o)return!1;let a=s.parent,l=a.child(o-1);if(l.type!=i)return!1;if(t){let n=l.lastChild&&l.lastChild.type==a.type,r=ir.from(n?i.create():null),o=new hr(ir.from(i.create(null,ir.from(a.type.create(null,r)))),n?3:1,0),c=s.start,h=s.end;t(e.tr.step(new Ei(c-(n?3:1),h,c,h,o,1,!0)).scrollIntoView())}return!0}),"Shift-Tab":uf(e.nodes.list_item),"Mod-Enter":kp,"Shift-Enter":kp,"Mod-b":Ch(e.marks.strong),"Mod-i":Ch(e.marks.em),"Mod-l":Kp,"Ctrl-q":wh(e.nodes.blockquote),"Mod-k":Ch(e.marks.code),"Mod-g":Wp,"Ctrl-g":Wp,"Mod-o":df(e.nodes.ordered_list,e.nodes.list_item),"Mod-u":df(e.nodes.bullet_list,e.nodes.list_item),"Mod-h":jp(),"Mod-r":Up,"Mod-m":xh(e.nodes.code_block),"Mod-[":Hp(t.tagLinks,!1),"Mod-]":Hp(t.tagLinks,!0),"Mod-/":wh(e.nodes.spoiler),"Mod-,":Ch(e.marks.sub),"Mod-.":Ch(e.marks.sup),"Mod-'":Ch(e.marks.kbd),ArrowRight:Zp,ArrowUp:Qp,ArrowDown:Xp}),n,zh(Mh)];return t.tables&&s.unshift(r),s}class Vm extends jf{linkReferenceDefinitions={};constructor(e,t,n){super(e,t,n)}addLinkReferenceDefinition(e,t,n){const r=(new wn).utils.normalizeReference(e);this.linkReferenceDefinitions[r]||(this.linkReferenceDefinitions[r]={href:t,title:n})}writeLinkReferenceDefinitions(){let e=Object.keys(this.linkReferenceDefinitions);if(!e.length)return;const t=[],n=[];e.forEach((e=>{isNaN(Number(e))?n.push(e):t.push(+e)})),e=[...t.sort(((e,t)=>e-t)).map((e=>e.toString())),...n.sort()],e.forEach((e=>{const t=this.linkReferenceDefinitions[e];this.ensureNewLine(),this.write("["),this.text(e),this.write("]: "),this.text(t.href),t.title&&this.text(` "${t.title}"`)}))}}class qm extends $f{serialize(e,t){const n=new Vm(this.nodes,this.marks,t||{});return n.renderContent(e),n.writeLinkReferenceDefinitions(),n.out}}function jm(e,t,n){const r=t.attrs.markup;if(!r)return!1;if(!r.startsWith("<")||!r.endsWith(">"))return!1;const i=r.replace(/[<>/\s]/g,""),s=`<${i}`;if(e.text(s,!1),Jf[n]){const r=Jf[n].sort();for(const n of r){const r=t.attrs[n];r&&e.text(` ${n}="${r}"`)}}return Zf.includes(n)?(e.text(r.replace(s,""),!1),!0):(e.text(">",!1),e.renderInline(t),e.closed=!1,e.text(``,!1),e.closeBlock(t),!0)}const Hm={...Vf.nodes,blockquote(e,t){if(jm(e,t,Wf.blockquote))return;const n=t.attrs.markup||">";e.wrapBlock(n+" ",null,t,(()=>e.renderContent(t)))},code_block(e,t){let n=t.attrs.markup||"```";"indented"===n&&t.attrs.params&&(n="```"),"indented"===n?t.textContent.split("\n").forEach(((t,n)=>{n>0&&e.ensureNewLine(),e.text(" "+t,!1)})):(e.write(n+(t.attrs.params||"")+"\n"),e.text(t.textContent,!1),e.ensureNewLine(),e.write(n)),e.closeBlock(t)},heading(e,t){const n=t.attrs.markup||"";jm(e,t,Wf.heading)||(n&&!n.startsWith("#")?(e.renderInline(t),e.ensureNewLine(),e.write(n),e.closeBlock(t)):(e.write(e.repeat("#",t.attrs.level)+" "),e.renderInline(t),e.closeBlock(t)))},horizontal_rule(e,t){jm(e,t,Wf.horizontal_rule)||(e.write(t.attrs.markup||"----------"),e.closeBlock(t))},bullet_list(e,t){if(jm(e,t,Wf.unordered_list))return;const n=t.attrs.markup||"-";e.renderList(t," ",(()=>n+" "))},ordered_list(e,t){if(jm(e,t,Wf.ordered_list))return;const n=t.attrs.order||1,r=String(n+t.childCount-1).length,i=e.repeat(" ",r+2),s=t.attrs.markup||".";e.renderList(t,i,(t=>{const i=String(n+t);return e.repeat(" ",r-i.length)+i+s+" "}))},list_item(e,t){jm(e,t,Wf.list_item)||e.renderContent(t)},paragraph(e,t){jm(e,t,Wf.paragraph)||(e.renderInline(t),e.closeBlock(t))},image(e,t){if(jm(e,t,Wf.image))return;const n=t.attrs.title?" "+e.quote(t.attrs.title):"",r="!["+e.esc(t.attrs.alt||"")+"]";let i="("+e.esc(t.attrs.src)+n+")";if("reference"===t.attrs.markup)switch(e.addLinkReferenceDefinition(t.attrs.referenceLabel,t.attrs.src,t.attrs.title),t.attrs.referenceType){case"full":i=`[${t.attrs.referenceLabel}]`;break;case"collapsed":i="[]";break;default:i=""}e.write(r+i)},hard_break(e,t,n,r){if(!jm(e,t,Wf.hardbreak))for(let i=r+1;ie.type===e.type.schema.marks.link));let r;if(["linkify","autolink"].includes(n?.attrs.markup))r=n.attrs.href;else{const n=e.atBlank()||e.atBlockStart||e.closed;let i=e.esc(t.text,n);i=i.replace(/\\_/g,"_").replace(/\b_|_\b/g,"\\_"),i=i.replace(/([<>])/g,"\\$1"),r=i}e.text(r,!1)}},Um={html_inline(e,t){e.write(t.attrs.content)},html_block(e,t){e.write(t.attrs.content),e.closeBlock(t)},html_block_container(e,t){e.write(t.attrs.contentOpen),e.ensureNewLine(),e.write("\n"),e.renderContent(t),e.write(t.attrs.contentClose),e.closeBlock(t)},softbreak(e){e.write("\n")},table(e,t){const n=t.type.schema;function r(t){const r=[];return e.ensureNewLine(),t.forEach((t=>{if(t.type===n.nodes.table_header||t.type===n.nodes.table_cell){const n=function(t){return e.write("| "),e.renderInline(t),e.write(" "),function(e){const t=e.attrs.style;if(!t)return null;const n=t.match(/text-align:[ ]?(left|right|center)/);return n&&n[1]?n[1]:null}(t)}(t);r.push(n)}})),e.write("|"),r}t.forEach((t=>{t.type===n.nodes.table_head&&function(t){let i=[];t.forEach((e=>{e.type===n.nodes.table_row&&(i=r(e))})),e.ensureNewLine();for(const t of i)e.write("|"),e.write("left"===t||"center"===t?":":" "),e.write("---"),e.write("right"===t||"center"===t?":":" ");e.write("|")}(t),t.type===n.nodes.table_body&&t.forEach((e=>{e.type===n.nodes.table_row&&r(e)}))})),e.closeBlock(t)},tagLink(e,t){const n="meta-tag"===t.attrs.tagType?"meta-tag":"tag",r=t.attrs.tagName;e.write(`[${n}:${r}]`)},spoiler(e,t){e.wrapBlock(">! ",null,t,(()=>e.renderContent(t)))}};function Wm(e){return e.open instanceof Function||e.close instanceof Function?(_n("markdown-serializer genMarkupAwareMarkSpec","Unable to extend mark config with open/close as functions",e),e):{...e,open:(t,n)=>n.attrs.markup||e.open,close(t,n){let r=n.attrs.markup;return r=/^<[a-z]+>$/i.test(r)?r.replace(/^`},close(e,t,n,r){if(!t.attrs.markup)return"string"==typeof Km.close?Km.close:Km.close(e,t,n,r);if("reference"===t.attrs.markup)switch(t.attrs.referenceType){case"full":return`][${t.attrs.referenceLabel}]`;case"collapsed":return"][]";default:return"]"}return"linkify"===t.attrs.markup?"":"autolink"===t.attrs.markup?">":""}},Gm=Vf.marks.code,Zm={open(e,t,n,r){if("string"==typeof Gm.open)return t.attrs.markup||Gm.open;let i=Gm.open(e,t,n,r);return t.attrs.markup&&(i=i.replace("`",t.attrs.markup)),i},close(e,t,n,r){if("string"==typeof Gm.close)return t.attrs.markup||Gm.close;let i=Gm.close(e,t,n,r);if(t.attrs.markup){const e=t.attrs.markup.replace(/^",close:"",mixable:!0,expelEnclosingWhitespace:!0}),sup:Wm({open:"",close:"",mixable:!0,expelEnclosingWhitespace:!0}),sub:Wm({open:"",close:"",mixable:!0,expelEnclosingWhitespace:!0})};class Qm{dom;contentDOM;node;view;getPos;availableLanguages;maxSuggestions;ignoreBlur=!1;selectedSuggestionIndex=-1;constructor(e,t,n,r,i=5){this.node=e,this.view=t,this.getPos=n,this.availableLanguages=r,this.maxSuggestions=i,this.render()}render(){this.dom=document.createElement("div"),this.dom.classList.add("ps-relative","p0","ws-normal","ow-normal"),this.dom.innerHTML=Rn` + +
+
+ + + +
+
+
    +
    +
    +
    `,this.contentDOM=this.dom.querySelector(".content-dom");const e=this.dom.querySelector("button.js-language-selector");e.addEventListener("click",this.onLanguageSelectorClick.bind(this)),e.addEventListener("mousedown",this.onLanguageSelectorMouseDown.bind(this));const t=this.dom.querySelector(".js-language-input-textbox");t.addEventListener("blur",this.onLanguageInputBlur.bind(this)),t.addEventListener("keydown",this.onLanguageInputKeyDown.bind(this)),t.addEventListener("mousedown",this.onLanguageInputMouseDown.bind(this)),t.addEventListener("input",this.onLanguageInputTextInput.bind(this)),this.update(this.node)}update(e){if("code_block"!==e.type.name)return!1;this.node=e,this.dom.querySelector(".js-language-indicator").textContent=this.getLanguageDisplayName();const t=this.dom.querySelector(".js-language-input"),n=this.dom.querySelector(".js-language-input-textbox");t.style.display=e.attrs.isEditingLanguage?"block":"none",e.attrs.isEditingLanguage&&n.focus();const r=this.dom.querySelector(".js-language-dropdown-container");return e.attrs.suggestions?this.renderDropdown(e.attrs.suggestions):r.style.display="none",!0}getLanguageDisplayName(){const e=Df(this.node);return e.IsAutoDetected?fc("nodes.codeblock_lang_auto",{lang:e.Language}):e.Language}updateNodeAttrs(e){const t=this.getPos(),n=this.node.attrs;this.view.dispatch(this.view.state.tr.setNodeMarkup(t,null,{...n,...e}))}onLanguageSelectorClick(e){e.stopPropagation(),this.updateNodeAttrs({isEditingLanguage:!0})}onLanguageSelectorMouseDown(e){e.stopPropagation()}onLanguageInputBlur(e){if(this.ignoreBlur)return void(this.ignoreBlur=!1);const t=this.dom.querySelector(".js-language-input");if(e.relatedTarget&&t&&t.contains(e.relatedTarget))return;const n=e.target;this.updateNodeAttrs({params:n.value,isEditingLanguage:!1,suggestions:null})}onLanguageInputKeyDown(e){const t=this.dom.querySelector(".js-language-dropdown");if("Enter"===e.key){e.preventDefault();const n=t.querySelector("li:focus");if(n)return void n.click();this.view.focus()}else"Escape"===e.key?this.onEscape():"ArrowDown"===e.key?this.onArrowDown(e):"ArrowUp"===e.key?this.onArrowUp(e):" "===e.key&&e.preventDefault();e.stopPropagation()}onEscape(){this.ignoreBlur=!0,this.updateNodeAttrs({isEditingLanguage:!1,suggestions:null}),this.view.focus()}onArrowUp(e){this.updateSelectedSuggestionIndex(-1),e.preventDefault(),e.stopPropagation()}onArrowDown(e){this.updateSelectedSuggestionIndex(1),e.preventDefault(),e.stopPropagation()}updateSelectedSuggestionIndex(e){const t=this.dom.querySelector(".js-language-dropdown").querySelectorAll("li");0!=t.length&&(this.selectedSuggestionIndex+=e,this.selectedSuggestionIndex<-1?this.selectedSuggestionIndex=t.length-1:this.selectedSuggestionIndex>=t.length&&(this.selectedSuggestionIndex=-1),-1==this.selectedSuggestionIndex?(this.dom.querySelector(".js-language-input-textbox").focus(),this.selectedSuggestionIndex=-1):t[this.selectedSuggestionIndex].focus())}onLanguageInputMouseDown(e){e.stopPropagation()}onLanguageInputTextInput(e){const t=e.target.value.toLowerCase(),n=t.length>0?this.availableLanguages.filter((e=>e.toLowerCase().startsWith(t))).slice(0,this.maxSuggestions):[];this.selectedSuggestionIndex=-1,this.updateNodeAttrs({suggestions:n})}renderDropdown(e){const t=this.dom.querySelector(".js-language-dropdown-container"),n=this.dom.querySelector(".js-language-dropdown");if(n.innerHTML="",0===e.length)return t.style.display="none",void(this.selectedSuggestionIndex=-1);this.selectedSuggestionIndex=-1,e.forEach((e=>{const r=document.createElement("li");r.textContent=e,r.classList.add("h:bg-black-150","px4"),r.tabIndex=0,r.addEventListener("mousedown",(e=>{e.preventDefault()})),r.addEventListener("click",(()=>{this.dom.querySelector(".js-language-input-textbox").value=e,this.updateNodeAttrs({params:e,isEditingLanguage:!1,suggestions:null}),t.style.display="none",this.view.focus()})),r.addEventListener("keydown",(e=>{"Enter"===e.key?(e.preventDefault(),e.stopPropagation(),r.click()):"Escape"===e.key?this.onEscape():"ArrowDown"===e.key?this.onArrowDown(e):"ArrowUp"===e.key?this.onArrowUp(e):"Tab"===e.key&&e.stopPropagation()})),n.appendChild(r)})),t.style.display="block"}}class Ym{dom;constructor(e){this.dom=document.createElement("div"),this.dom.className="html_block ProseMirror-widget",this.dom.innerHTML=e.attrs.content}}class eg{dom;contentDOM;constructor(e){if(this.dom=document.createElement("div"),this.dom.className="html_block_container ProseMirror-widget",!e.childCount)return void(this.dom.innerHTML="invalid html_block_container");const t=e.attrs.contentOpen+'
    '+e.attrs.contentClose;this.dom.innerHTML=t,this.contentDOM=this.dom.querySelector(".ProseMirror-contentdom")}}class tg{dom;img;popover;form;id;selectionActive;constructor(e,t,n){this.id=Vn(),this.img=this.createImage(e),this.form=this.createForm(),this.form.addEventListener("submit",(e=>this.handleChangedImageAttributes(e,n,t))),this.popover=this.createPopover(),this.dom=document.createElement("span"),this.dom.appendChild(this.img),this.dom.appendChild(this.popover),this.dom.addEventListener("s-popover:hide",(e=>this.preventClose(e)))}selectNode(){this.img.classList.add("bs-ring"),this.selectionActive=!0,this.img.dispatchEvent(new Event("image-popover-show"));const e=this.form.querySelectorAll("input");e.length>0&&e[0].focus({preventScroll:!0})}deselectNode(){this.img.classList.remove("bs-ring"),this.selectionActive=!1,this.img.dispatchEvent(new Event("image-popover-hide"))}stopEvent(e){return this.popover.contains(e.target)}ignoreMutation(){return!0}destroy(){this.img.remove(),this.popover.remove(),this.dom=null,this.form.remove()}createImage(e){const t=document.createElement("img");return t.setAttribute("aria-controls",`img-popover-${this.id}`),t.setAttribute("data-controller","s-popover"),t.setAttribute("data-action","image-popover-show->s-popover#show image-popover-hide->s-popover#hide"),t.src=e.attrs.src,e.attrs.alt&&(t.alt=e.attrs.alt),e.attrs.title&&(t.title=e.attrs.title),t}createForm(){const e=document.createElement("form");return e.className="d-flex fd-column",e.innerHTML=Rn` + +
    + +
    + +
    + +
    + +
    + +
    + + + `,e}createPopover(){const e=document.createElement("div");return e.className="s-popover ws-normal wb-normal js-img-popover",e.id=`img-popover-${this.id}`,e.append(this.form),e}handleChangedImageAttributes(e,t,n){if(e.preventDefault(),"function"!=typeof t)return;const r=e=>this.form.querySelector(e),i=r(`#img-src-${this.id}`),s=r(`#img-alt-${this.id}`),o=r(`#img-title-${this.id}`);n.dispatch(n.state.tr.setNodeMarkup(t(),null,{src:i.value,alt:s.value,title:o.value})),n.focus()}preventClose(e){this.selectionActive&&e.preventDefault()}}class ng{dom;constructor(e,t){if(this.dom=document.createElement("a"),this.dom.setAttribute("href","#"),this.dom.setAttribute("rel","tag"),this.dom.classList.add("s-tag"),this.dom.innerText=e.attrs.tagName,t?.render){const n=t.render(e.attrs.tagName,"meta-tag"===e.attrs.tagType);if(!n||!n?.link)return void _n("TagLink NodeView","Unable to render taglink due to invalid response from options.renderer: ",n);(n.additionalClasses||[]).forEach((e=>this.dom.classList.add(e))),this.dom.setAttribute("href",n.link),this.dom.setAttribute("title",n.linkTitle)}}}const rg={doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:()=>["p",0]},spoiler:{content:"block+",group:"block",attrs:{revealed:{default:!1}},parseDOM:[{tag:"blockquote.spoiler",getAttrs:e=>({revealed:e.classList.contains("is-visible")})}],toDOM:e=>["blockquote",{class:"spoiler"+(e.attrs.revealed?" is-visible":""),"data-spoiler":fc("nodes.spoiler_reveal_text")},0]},blockquote:{content:"block+",group:"block",parseDOM:[{tag:"blockquote"}],toDOM:()=>["blockquote",0]},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["div",["hr"]]},heading:{attrs:{level:{default:1}},content:"inline*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM:e=>["h"+e.attrs.level,0]},code_block:{content:"text*",group:"block",code:!0,defining:!0,marks:"",attrs:{params:{default:""},autodetectedLanguage:{default:""},isEditingLanguage:{default:!1},suggestions:{default:null}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>({params:e.getAttribute("data-params")||""})}],toDOM:e=>["pre",e.attrs.params?{"data-params":e.attrs.params}:{},["code",0]]},ordered_list:{content:"list_item+",group:"block",attrs:{order:{default:1},tight:{default:!1}},parseDOM:[{tag:"ol",getAttrs:e=>({order:e.hasAttribute("start")?+e.getAttribute("start"):1,tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ol",{start:1===e.attrs.order?null:String(e.attrs.order),"data-tight":e.attrs.tight?"true":null},0]},bullet_list:{content:"list_item+",group:"block",attrs:{tight:{default:!1}},parseDOM:[{tag:"ul",getAttrs:e=>({tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ul",{"data-tight":e.attrs.tight?"true":null},0]},list_item:{content:"block+",defining:!0,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]},text:{group:"inline"},image:{inline:!0,group:"inline",draggable:!0,attrs:{src:{},alt:{default:null},title:{default:null},width:{default:null},height:{default:null},referenceType:{default:""},referenceLabel:{default:""}},parseDOM:[{tag:"img[src]",getAttrs:e=>({src:e.getAttribute("src"),title:e.getAttribute("title"),alt:e.getAttribute("alt"),height:e.getAttribute("height"),width:e.getAttribute("width")})}],toDOM:e=>["img",e.attrs]},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:()=>["br"]},pre:{content:"block+",marks:"",group:"block",inline:!1,selectable:!0,toDOM:()=>["pre",0],parseDOM:[{tag:"pre"}]},html_block:{content:"text*",attrs:{content:{default:""}},marks:"_",group:"block",atom:!0,inline:!1,selectable:!0,defining:!0,isolating:!0,parseDOM:[{tag:"div.html_block"}],toDOM:e=>["div",{class:"html_block"},e.attrs.content]},html_inline:{content:"text*",attrs:{content:{default:""}},marks:"_",group:"inline",atom:!0,inline:!0,selectable:!0,defining:!0,isolating:!0,parseDOM:[{tag:"span.html_inline"}],toDOM:e=>["span",{class:"html_inline"},e.attrs.content]},html_block_container:{content:"block*",attrs:{contentOpen:{default:""},contentClose:{default:""}},marks:"_",group:"block",inline:!1,selectable:!0,defining:!0,isolating:!0},softbreak:{content:"inline+",attrs:{},marks:"_",inline:!0,group:"inline",parseDOM:[{tag:"span[softbreak]",getAttrs:e=>({content:e.innerHTML})}],toDOM:()=>["span",{softbreak:""},0]},table:{content:"table_head table_body*",isolating:!0,group:"block",selectable:!1,parseDOM:[{tag:"table"}],toDOM:()=>["div",{class:"s-table-container"},["table",{class:"s-table"},0]]},table_head:{content:"table_row",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"thead"}],toDOM:()=>["thead",0]},table_body:{content:"table_row+",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"tbody"}],toDOM:()=>["tbody",0]},table_row:{content:"(table_cell | table_header)+",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"tr"}],toDOM:()=>["tr",0]},table_cell:{content:"inline*",isolating:!0,group:"table_block",selectable:!1,attrs:{style:{default:null}},parseDOM:[{tag:"td",getAttrs(e){const t=e.style.textAlign;return t?{style:`text-align: ${t}`}:null}}],toDOM:e=>["td",e.attrs,0]},table_header:{content:"inline*",isolating:!0,group:"table_block",selectable:!1,attrs:{style:{default:null}},parseDOM:[{tag:"th",getAttrs(e){const t=e.style.textAlign;return t?{style:`text-align: ${t}`}:null}}],toDOM:e=>["th",e.attrs,0]},tagLink:{content:"text*",marks:"",atom:!0,inline:!0,group:"inline",attrs:{tagName:{default:null},tagType:{default:"tag"}}}};const ig={em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style",getAttrs:e=>"italic"===e&&null}],toDOM:()=>["em"]},strong:{parseDOM:[{tag:"b"},{tag:"strong"},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:()=>["strong"]},link:{inclusive:!1,attrs:{href:{},title:{default:null},referenceType:{default:""},referenceLabel:{default:""}},parseDOM:[{tag:"a[href]",getAttrs:e=>({href:e.getAttribute("href"),title:e.getAttribute("title")})}],toDOM:e=>["a",{href:e.attrs.href,title:e.attrs.title}]},code:{exitable:!0,inclusive:!0,parseDOM:[{tag:"code"}],toDOM:()=>["code"]},strike:og({},"del","s","strike"),kbd:og({exitable:!0,inclusive:!0},"kbd"),sup:og({},"sup"),sub:og({},"sub")};Object.values(ig).forEach((e=>{const t=e.attrs||{};t.markup={default:""},e.attrs=t})),Object.entries(rg).forEach((([e,t])=>{if("text"===e)return;const n=t.attrs||{};n.markup={default:""},t.attrs=n}));const sg={nodes:rg,marks:ig};function og(e,...t){return{...e,toDOM:()=>[t[0],0],parseDOM:t.map((e=>({tag:e})))}}const ag=new Kr({nodes:{doc:sg.nodes.doc,text:sg.nodes.text,paragraph:sg.nodes.paragraph,code_block:sg.nodes.code_block}});function lg(e){return e.types.includes("text/html")?(new globalThis.DOMParser).parseFromString(e.getData("text/html"),"text/html"):null}const cg=new gs({props:{handlePaste(e,t,n){const r=e.state.schema,i=r.nodes.code_block;if(e.state.selection.$from.node().type===i)return!1;const s=function(e,t){let n,r=null;return t||(r=lg(e),r&&(t=Gr.fromSchema(ag).parse(r))),t&&1===t.content.childCount&&"code_block"===t.content.child(0).type.name?n=t.content.child(0).textContent:(r??=lg(e),n=function(e,t){const n=t?.querySelector("code");if(t&&n)return t.body.textContent.trim()!==n.textContent?null:n.textContent;const r=e.getData("text/plain");return r&&(e.getData("vscode-editor-data")||/^([ ]{2,}|\t)/m.test(r))?r:null}(e,r)),n||null}(t.clipboardData,n);if(!s)return!1;const o=i.createChecked({},r.text(s));return e.dispatch(e.state.tr.replaceSelectionWith(o)),!0}}}),hg={};function ug(e,t,n){if(!Tn(e,t))return;const r=[];return e.doc.descendants(((e,t,i)=>{const s=function(e,t,n){if(!t?.isText||!n)return null;const r=t,i=r?.marks.find((e=>"link"===e.type.name))?.attrs?.href;if(!i)return null;for(const s of e)if(s&&(s.textOnly||fg(n))&&(!s.textOnly||t.isText)&&(!s.textOnly||i===r?.textContent)&&s.domainTest&&s.domainTest.test(i))return{url:i,provider:s};return null}(n,e,i);if(s)return r.push({provider:s,pos:t,node:e}),!1})),r}function dg(e,t){const n=ug(e,null,t).map((e=>({content:hg[e.provider.url],href:e.provider.url,isTextOnly:e.provider.provider.textOnly,pos:e.pos})));return pg(e.doc,n)}function pg(e,t){const n=[];return t.forEach((t=>{if(!t.isTextOnly&&t.content)n.push(function(e,t){const n=document.createElement("div");return n.className="js-link-preview-decoration",t&&n.appendChild(t.cloneNode(!0)),pl.widget(e,n,{side:-1})}(t.pos,t.content));else if(null===t.content){const r=e.resolve(t.pos),i=r.posAtIndex(0,r.depth-1);n.push(pl.node(i,i+r.parent.nodeSize,{class:"is-loading js-link-preview-loading",title:"Loading..."}))}})),gl.create(e,n)}function fg(e){const t=e.content.firstChild;if(!t)return!1;const n=1===e.childCount,r="text"===t.type.name,i=t.marks.some((e=>"link"===e.type.name));return n&&r&&i}const mg=new class extends nc{constructor(e){super(e)}setMeta(e,t){const n={callbackData:null,state:t};return e.setMeta(this,n)}setCallbackData(e,t){const n={callbackData:t,state:null};return e.setMeta(this,n)}dispatchCallbackData(e,t){const n=this.setCallbackData(e.state.tr,t);return e.updateState(e.state.apply(n)),n}}("linkPreviews");function gg(e){const t=e||[];return new sc({key:mg,asyncCallback:(e,n)=>function(e,t,n){const r=ug(e.state,t,n);if(!r.length)return Promise.reject(null);const i=r.map((e=>{const t=e.provider.url in hg,n=hg[e.provider.url]||null,r=t?Promise.resolve(n):e.provider.provider.renderer(e.provider.url),i={pos:e.pos,content:n,isTextOnly:e.provider.provider.textOnly,href:e.provider.url},s=r.then((t=>(hg[e.provider.url]=t,{content:t,isTextOnly:e.provider.provider.textOnly,href:e.provider.url,pos:e.pos}))).catch((()=>{const t=document.createElement("div");return t.innerText="Error fetching content.",hg[e.provider.url]=t,Promise.resolve({})}));return i.promise=s,i}));return mg.dispatchCallbackData(e,i),Promise.all(i.map((e=>e.promise)))}(e,n,t),state:{init:(e,n)=>({decorations:dg(n,t)}),apply(e,t){const n=this.getCallbackData(e);if(n){const t=n.map((t=>({...t,pos:e.mapping.map(t.pos)})));return{decorations:pg(e.doc,t),recentlyUpdated:t}}return{decorations:t.decorations.map(e.mapping,e.doc)}}},props:{decorations(e){return this.getState(e).decorations}},appendTransaction(e,t,n){const r=mg.getState(n);if(!r.recentlyUpdated?.length||!r.recentlyUpdated.some((e=>e.isTextOnly)))return null;let i=null;return r.recentlyUpdated.forEach((t=>{if(!t.content?.textContent||!t.isTextOnly)return;let r=t.pos;e.forEach((e=>{r=e.mapping.map(r)}));const s=n.schema,o=s.text(t.content.textContent,[s.marks.link.create({href:t.href,markup:null})]),a=n.doc.nodeAt(r).nodeSize;i=(i||n.tr).replaceWith(r,r+a,o)})),i}})}const bg=new gs({props:{handlePaste(e,t,n){if(!t.clipboardData?.getData("text/html"))return!1;let r=n.content.firstChild;if("paragraph"===r?.type?.name&&1===r.childCount&&(r=r.firstChild),!r||"text"!==r.type.name||r.marks.length)return!1;const{selection:i}=e.state,s=i.$from.nodeBefore;return!!s?.marks.length&&(e.dispatch(e.state.tr.replaceSelectionWith(r,!0)),!0)}}});function yg(e,t,n,r){const{from:i,to:s}=t.selection;return t.doc.nodesBetween(i,s,((t,i)=>{if("spoiler"===t.type.name){const s={...t.attrs};s.revealed=n;let o=!1;return r?.length&&r.forEach((e=>{const t=e.mapping.mapResult(i);if(t.deleted)return o=!0,!1;i=t.pos})),o||(e=e.setNodeMarkup(i,null,s)),!1}})),e}const kg=new gs({appendTransaction(e,t,n){if(!On(t,n))return null;let r=n.tr;return r=yg(r,t,!1,e),r=yg(r,n,!0),r.steps.length?(r=r.setMeta("addToHistory",!1),r):null}}),vg=new gs({key:new ks("tablesPlugin"),props:{transformPasted:e=>new hr(wg(e.content),1,1),handlePaste:(e,t,n)=>!!bp(e.state.schema,e.state.selection)&&(e.dispatch(e.state.tr.insertText(function(e){return e.size&&e.content&&e.content.firstChild?e.content.firstChild.textContent:null}(n))),!0)}});function wg(e){const t=[];return e.forEach((e=>{e.type===e.type.schema.nodes.table?t.push(e.type.schema.nodes.paragraph.createAndFill({},e.type.schema.text(e.textContent))):t.push(e.copy(wg(e.content)))})),ir.fromArray(t)}class xg extends Kn{options;markdownSerializer;markdownParser;finalizedSchema;externalPluginProvider;constructor(e,t,n,r={}){var i;super(),this.options=An(xg.defaultOptions,r),this.externalPluginProvider=n,this.markdownSerializer=(i=this.externalPluginProvider,new qm({...Hm,...Um,...i.markdownProps.serializers.nodes},{...Xm,...i.markdownProps.serializers.marks})),this.finalizedSchema=new Kr(this.externalPluginProvider.getFinalizedSchema(sg)),this.markdownParser=function(e,t,n){const r=function(e,t){const n=new Sm("default",{html:e.html,linkify:!0});return e.tables||n.disable("table"),e.extraEmphasis||n.disable("strikethrough"),n.linkify.set({fuzzyLink:!1,fuzzyEmail:!1}),n.validateLink=e.validateLink,e.html&&n.use((e=>am(e))),n.use(km),e.tagLinks&&n.use(vm,e.tagLinks),n.use(fm),n.use(xm),n.use(hm),n.use(Uf),t?.alterMarkdownIt(n),n}(e,n);return new Em(t,r,{...Cm,...n?.markdownProps.parser})}(this.options.parserFeatures,this.finalizedSchema,this.externalPluginProvider);const s=this.parseContent(t),o=tc(this.externalPluginProvider.getFinalizedMenu(gf(this.finalizedSchema,this.options,Hn.RichText),s.type.schema),this.options.menuParentContainer,Hn.RichText),a=this.options.parserFeatures.tagLinks;var l,c,h,u;this.editorView=new $l((t=>{this.setTargetNodeAttributes(t,this.options),e.appendChild(t)}),{editable:Oc,state:fs.create({doc:s,plugins:[yf(this),Os(),o,zm(this.finalizedSchema,this.options.parserFeatures),gg(this.options.linkPreviewProviders),Mf(this.options.highlighting),bc(this.options.pluginParentContainer),$p(this.options.parserFeatures),Mc(this.options.placeholderText),(c=this.options.imageUpload,h=this.options.parserFeatures.validateLink,u=this.finalizedSchema,_c(c,h,((e,t,n)=>{const r=fc("image_upload.default_image_alt_text"),i=c.wrapImagesInLinks||c.embedImagesAsLinks?[u.marks.link.create({href:t})]:null,s=c.embedImagesAsLinks?u.text(r,i):u.nodes.image.create({src:t,alt:r},null,i);return e.tr.replaceWith(n,n,s)}))),Lc(),kg,...this.externalPluginProvider.plugins.richText,...$m(this.finalizedSchema,this.options.parserFeatures),vg,cg,(l=this.options.parserFeatures,new gs({props:{handlePaste(e,t){if("code_block"===e.state.selection.$from.node().type.name)return!1;const n=t.clipboardData.getData("text/plain");if(!n||!/^.+?:\/\//.test(n)||!l.validateLink(n))return!1;if(function(e){const{from:t,$from:n,to:r,empty:i}=e.selection,s=e.schema;return i?!!s.marks.code.isInSet(e.storedMarks||n.marks()):e.doc.rangeHasMark(t,r,s.marks.code)}(e.state))e.dispatch(e.state.tr.insertText(n));else{let t=n;if(!e.state.tr.selection.empty){const n=e.state.tr.selection;let r="";e.state.doc.nodesBetween(n.from,n.to,((e,t)=>{if(!e.isText)return;const i=Math.max(0,n.from-t),s=Math.max(0,n.to-t);r+=e.textBetween(i,s)})),r&&(t=r)}const r=e.state.schema,i={href:n,markup:t===n?"linkify":null},s=r.text(t,[r.marks.link.create(i)]);e.dispatch(e.state.tr.replaceSelectionWith(s,!1))}return!0}}})),bg]}),nodeViews:{code_block:(e,t,n)=>new Qm(e,t,n,this.options.highlighting?.languages||[],this.options.highlighting?.maxSuggestions),image:(e,t,n)=>new tg(e,t,n),tagLink:e=>new ng(e,a),html_block:function(e){return new Ym(e)},html_block_container:function(e){return new eg(e)},...this.externalPluginProvider.nodeViews},plugins:[]}),Sn("prosemirror rich-text document",this.editorView.state.doc.toJSON().content)}static get defaultOptions(){return{parserFeatures:Wn,editorHelpLink:null,linkPreviewProviders:[],highlighting:null,menuParentContainer:null,imageUpload:{handler:kc},editorPlugins:[]}}parseContent(e){let t;try{t=this.markdownParser.parse(e)}catch(n){_n("RichTextEditorConstructor markdownParser.parse","Catastrophic parse error!",n),t=Fc.fromSchema(this.finalizedSchema).parseCode(e),t=new Ji(t).insert(0,this.finalizedSchema.node("heading",{level:1},this.finalizedSchema.text("WARNING! There was an error parsing the document"))).doc}return t}serializeContent(){return this.markdownSerializer.serialize(this.editorView.state.doc)}}class Cg{target;innerTarget;pluginContainer;backingView;options;internalId;pluginProvider;constructor(e,t,n={}){this.options=An(Cg.defaultOptions,n),this.target=e,this.internalId=Vn(),this.innerTarget=document.createElement("div"),this.target.appendChild(this.innerTarget),this.setupPluginContainer(),this.pluginProvider=new Zn(this.options.editorPlugins,this.options),this.setBackingView(this.options.defaultView,t)}get editorView(){return this.backingView?.editorView}get content(){return this.backingView?.content||""}set content(e){this.backingView.content=e}appendContent(e){this.backingView.appendContent(e)}get document(){return this.editorView.state.doc}get dom(){return this.editorView.dom}get readonly(){return!!this.editorView&&!this.editorView.editable}get currentViewType(){return this.backingView instanceof xg?Hn.RichText:Hn.Commonmark}static get defaultOptions(){const e=["fl-grow1","outline-none","p12","pt6","w100","s-prose","js-editor","ProseMirror"];return{defaultView:Hn.RichText,targetClassList:["ps-relative","z-base","s-textarea","overflow-auto","hmn2","w100","p0","d-flex","fd-column","s-editor-resizable"],elementAttributes:{},parserFeatures:xg.defaultOptions.parserFeatures,commonmarkOptions:{classList:e,preview:{enabled:!1,renderer:null}},richTextOptions:{classList:e}}}focus(){this.backingView.focus()}destroy(){this.backingView.destroy()}setView(e){this.setBackingView(e,null)}enable(){Nc(!1,this.editorView.state,this.editorView.dispatch.bind(null)),this.innerTarget.removeAttribute("readonly"),this.innerTarget.removeAttribute("aria-readonly")}disable(){Nc(!0,this.editorView.state,this.editorView.dispatch.bind(null)),this.innerTarget.setAttribute("readonly",""),this.innerTarget.setAttribute("aria-readonly","true")}reinitialize(e={}){this.options=An(this.options,e),this.setBackingView(this.currentViewType,this.content)}setupPluginContainer(){this.pluginContainer=document.createElement("div"),this.pluginContainer.className=`py6 bg-inherit btr-sm w100 ps-sticky t0 l0 z-nav s-editor-shadow js-plugin-container ${Ln}`;const e=document.createElement("div");if(e.className="d-flex overflow-x-auto ai-center px12 py4 pb0",this.pluginContainer.appendChild(e),this.options.menuParentContainer=()=>e,this.options.commonmarkOptions.preview.enabled){const e=document.createElement("div");this.target.appendChild(e);const t=()=>e;this.options.commonmarkOptions.preview.parentContainer=t}const t=document.createElement("div");this.pluginContainer.appendChild(t),this.options.pluginParentContainer=()=>t,this.innerTarget.appendChild(this.pluginContainer),this.createEditorSwitcher(this.options.defaultView,e),In(this.innerTarget),document.addEventListener("sticky-change",(e=>{const t=e.detail.target;t.classList.contains("js-plugin-container")&&t.classList.toggle("is-stuck",e.detail.stuck)}))}setBackingView(e,t){const n=this.readonly;if(this.backingView&&(t=t||this.backingView.content,this.backingView.destroy()),this.innerTarget.classList.add(...this.options.targetClassList),e===Hn.RichText)this.backingView=new xg(this.innerTarget,t,this.pluginProvider,An(this.options,this.options.richTextOptions));else{if(e!==Hn.Commonmark)throw`Unable to set editor to unknown type: ${Hn[e]}`;this.backingView=new kf(this.innerTarget,t,this.pluginProvider,An(this.options,this.options.commonmarkOptions))}this.backingView.editorView.props.handleDOMEvents={focus:()=>(this.innerTarget.classList.add("bs-ring","bc-theme-secondary-400"),!1),blur:()=>(this.innerTarget.classList.remove("bs-ring","bc-theme-secondary-400"),!1)},n?this.disable():this.enable()}createEditorSwitcher(e,t){const n=this.options.commonmarkOptions.preview,r=n?.enabled&&n?.shownByDefault||!1,i=e===Hn.RichText?"checked":"",s=e!==Hn.Commonmark||r?"":"checked",o=this.options.commonmarkOptions.preview.enabled,a=document.createElement("div");if(a.className="flex--item d-flex ai-center ml24 fc-medium",a.innerHTML=Rn`
    + + + + +
    `,o){const e=r?"checked":"",t=document.createElement("div");t.innerHTML=Rn` + +`,a.firstElementChild.append(...t.children)}a.querySelectorAll(".js-editor-toggle-btn").forEach((e=>{e.addEventListener("change",this.editorSwitcherChangeHandler.bind(this))})),t.appendChild(a)}editorSwitcherChangeHandler(e){e.stopPropagation(),e.preventDefault();const t=e.target,n=+t.dataset.mode,r="true"===t.dataset.preview,i=(s=this.backingView.editorView,ac.previewIsVisible(s));var s;n===this.currentViewType&&r===i||(t.parentElement.querySelectorAll(".js-editor-toggle-btn").forEach((e=>{e.checked=e===t})),this.setView(n),function(e,t){ac.setPreviewVisibility(e,t)}(this.backingView.editorView,r),qn(this.target,"view-change",{editorType:n,previewShown:this.currentViewType!==Hn.RichText&&r}))}}})(),i})())); + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/core.js" +/*!***************************************************!*\ + !*** ../../node_modules/highlight.js/lib/core.js ***! + \***************************************************/ +(module) { + +/* eslint-disable no-multi-assign */ + +function deepFreeze(obj) { + if (obj instanceof Map) { + obj.clear = + obj.delete = + obj.set = + function () { + throw new Error('map is read-only'); + }; + } else if (obj instanceof Set) { + obj.add = + obj.clear = + obj.delete = + function () { + throw new Error('set is read-only'); + }; + } + + // Freeze self + Object.freeze(obj); + + Object.getOwnPropertyNames(obj).forEach((name) => { + const prop = obj[name]; + const type = typeof prop; + + // Freeze prop if it is an object or function and also not already frozen + if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) { + deepFreeze(prop); + } + }); + + return obj; +} + +/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */ +/** @typedef {import('highlight.js').CompiledMode} CompiledMode */ +/** @implements CallbackResponse */ + +class Response { + /** + * @param {CompiledMode} mode + */ + constructor(mode) { + // eslint-disable-next-line no-undefined + if (mode.data === undefined) mode.data = {}; + + this.data = mode.data; + this.isMatchIgnored = false; + } + + ignoreMatch() { + this.isMatchIgnored = true; + } +} + +/** + * @param {string} value + * @returns {string} + */ +function escapeHTML(value) { + return value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +/** + * performs a shallow merge of multiple objects into one + * + * @template T + * @param {T} original + * @param {Record[]} objects + * @returns {T} a single new object + */ +function inherit$1(original, ...objects) { + /** @type Record */ + const result = Object.create(null); + + for (const key in original) { + result[key] = original[key]; + } + objects.forEach(function(obj) { + for (const key in obj) { + result[key] = obj[key]; + } + }); + return /** @type {T} */ (result); +} + +/** + * @typedef {object} Renderer + * @property {(text: string) => void} addText + * @property {(node: Node) => void} openNode + * @property {(node: Node) => void} closeNode + * @property {() => string} value + */ + +/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */ +/** @typedef {{walk: (r: Renderer) => void}} Tree */ +/** */ + +const SPAN_CLOSE = ''; + +/** + * Determines if a node needs to be wrapped in + * + * @param {Node} node */ +const emitsWrappingTags = (node) => { + // rarely we can have a sublanguage where language is undefined + // TODO: track down why + return !!node.scope; +}; + +/** + * + * @param {string} name + * @param {{prefix:string}} options + */ +const scopeToCSSClass = (name, { prefix }) => { + // sub-language + if (name.startsWith("language:")) { + return name.replace("language:", "language-"); + } + // tiered scope: comment.line + if (name.includes(".")) { + const pieces = name.split("."); + return [ + `${prefix}${pieces.shift()}`, + ...(pieces.map((x, i) => `${x}${"_".repeat(i + 1)}`)) + ].join(" "); + } + // simple scope + return `${prefix}${name}`; +}; + +/** @type {Renderer} */ +class HTMLRenderer { + /** + * Creates a new HTMLRenderer + * + * @param {Tree} parseTree - the parse tree (must support `walk` API) + * @param {{classPrefix: string}} options + */ + constructor(parseTree, options) { + this.buffer = ""; + this.classPrefix = options.classPrefix; + parseTree.walk(this); + } + + /** + * Adds texts to the output stream + * + * @param {string} text */ + addText(text) { + this.buffer += escapeHTML(text); + } + + /** + * Adds a node open to the output stream (if needed) + * + * @param {Node} node */ + openNode(node) { + if (!emitsWrappingTags(node)) return; + + const className = scopeToCSSClass(node.scope, + { prefix: this.classPrefix }); + this.span(className); + } + + /** + * Adds a node close to the output stream (if needed) + * + * @param {Node} node */ + closeNode(node) { + if (!emitsWrappingTags(node)) return; + + this.buffer += SPAN_CLOSE; + } + + /** + * returns the accumulated buffer + */ + value() { + return this.buffer; + } + + // helpers + + /** + * Builds a span element + * + * @param {string} className */ + span(className) { + this.buffer += ``; + } +} + +/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */ +/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */ +/** @typedef {import('highlight.js').Emitter} Emitter */ +/** */ + +/** @returns {DataNode} */ +const newNode = (opts = {}) => { + /** @type DataNode */ + const result = { children: [] }; + Object.assign(result, opts); + return result; +}; + +class TokenTree { + constructor() { + /** @type DataNode */ + this.rootNode = newNode(); + this.stack = [this.rootNode]; + } + + get top() { + return this.stack[this.stack.length - 1]; + } + + get root() { return this.rootNode; } + + /** @param {Node} node */ + add(node) { + this.top.children.push(node); + } + + /** @param {string} scope */ + openNode(scope) { + /** @type Node */ + const node = newNode({ scope }); + this.add(node); + this.stack.push(node); + } + + closeNode() { + if (this.stack.length > 1) { + return this.stack.pop(); + } + // eslint-disable-next-line no-undefined + return undefined; + } + + closeAllNodes() { + while (this.closeNode()); + } + + toJSON() { + return JSON.stringify(this.rootNode, null, 4); + } + + /** + * @typedef { import("./html_renderer").Renderer } Renderer + * @param {Renderer} builder + */ + walk(builder) { + // this does not + return this.constructor._walk(builder, this.rootNode); + // this works + // return TokenTree._walk(builder, this.rootNode); + } + + /** + * @param {Renderer} builder + * @param {Node} node + */ + static _walk(builder, node) { + if (typeof node === "string") { + builder.addText(node); + } else if (node.children) { + builder.openNode(node); + node.children.forEach((child) => this._walk(builder, child)); + builder.closeNode(node); + } + return builder; + } + + /** + * @param {Node} node + */ + static _collapse(node) { + if (typeof node === "string") return; + if (!node.children) return; + + if (node.children.every(el => typeof el === "string")) { + // node.text = node.children.join(""); + // delete node.children; + node.children = [node.children.join("")]; + } else { + node.children.forEach((child) => { + TokenTree._collapse(child); + }); + } + } +} + +/** + Currently this is all private API, but this is the minimal API necessary + that an Emitter must implement to fully support the parser. + + Minimal interface: + + - addText(text) + - __addSublanguage(emitter, subLanguageName) + - startScope(scope) + - endScope() + - finalize() + - toHTML() + +*/ + +/** + * @implements {Emitter} + */ +class TokenTreeEmitter extends TokenTree { + /** + * @param {*} options + */ + constructor(options) { + super(); + this.options = options; + } + + /** + * @param {string} text + */ + addText(text) { + if (text === "") { return; } + + this.add(text); + } + + /** @param {string} scope */ + startScope(scope) { + this.openNode(scope); + } + + endScope() { + this.closeNode(); + } + + /** + * @param {Emitter & {root: DataNode}} emitter + * @param {string} name + */ + __addSublanguage(emitter, name) { + /** @type DataNode */ + const node = emitter.root; + if (name) node.scope = `language:${name}`; + + this.add(node); + } + + toHTML() { + const renderer = new HTMLRenderer(this, this.options); + return renderer.value(); + } + + finalize() { + this.closeAllNodes(); + return true; + } +} + +/** + * @param {string} value + * @returns {RegExp} + * */ + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function source(re) { + if (!re) return null; + if (typeof re === "string") return re; + + return re.source; +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function lookahead(re) { + return concat('(?=', re, ')'); +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function anyNumberOfTimes(re) { + return concat('(?:', re, ')*'); +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function optional(re) { + return concat('(?:', re, ')?'); +} + +/** + * @param {...(RegExp | string) } args + * @returns {string} + */ +function concat(...args) { + const joined = args.map((x) => source(x)).join(""); + return joined; +} + +/** + * @param { Array } args + * @returns {object} + */ +function stripOptionsFromArgs(args) { + const opts = args[args.length - 1]; + + if (typeof opts === 'object' && opts.constructor === Object) { + args.splice(args.length - 1, 1); + return opts; + } else { + return {}; + } +} + +/** @typedef { {capture?: boolean} } RegexEitherOptions */ + +/** + * Any of the passed expresssions may match + * + * Creates a huge this | this | that | that match + * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args + * @returns {string} + */ +function either(...args) { + /** @type { object & {capture?: boolean} } */ + const opts = stripOptionsFromArgs(args); + const joined = '(' + + (opts.capture ? "" : "?:") + + args.map((x) => source(x)).join("|") + ")"; + return joined; +} + +/** + * @param {RegExp | string} re + * @returns {number} + */ +function countMatchGroups(re) { + return (new RegExp(re.toString() + '|')).exec('').length - 1; +} + +/** + * Does lexeme start with a regular expression match at the beginning + * @param {RegExp} re + * @param {string} lexeme + */ +function startsWith(re, lexeme) { + const match = re && re.exec(lexeme); + return match && match.index === 0; +} + +// BACKREF_RE matches an open parenthesis or backreference. To avoid +// an incorrect parse, it additionally matches the following: +// - [...] elements, where the meaning of parentheses and escapes change +// - other escape sequences, so we do not misparse escape sequences as +// interesting elements +// - non-matching or lookahead parentheses, which do not capture. These +// follow the '(' with a '?'. +const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; + +// **INTERNAL** Not intended for outside usage +// join logically computes regexps.join(separator), but fixes the +// backreferences so they continue to match. +// it also places each individual regular expression into it's own +// match group, keeping track of the sequencing of those match groups +// is currently an exercise for the caller. :-) +/** + * @param {(string | RegExp)[]} regexps + * @param {{joinWith: string}} opts + * @returns {string} + */ +function _rewriteBackreferences(regexps, { joinWith }) { + let numCaptures = 0; + + return regexps.map((regex) => { + numCaptures += 1; + const offset = numCaptures; + let re = source(regex); + let out = ''; + + while (re.length > 0) { + const match = BACKREF_RE.exec(re); + if (!match) { + out += re; + break; + } + out += re.substring(0, match.index); + re = re.substring(match.index + match[0].length); + if (match[0][0] === '\\' && match[1]) { + // Adjust the backreference. + out += '\\' + String(Number(match[1]) + offset); + } else { + out += match[0]; + if (match[0] === '(') { + numCaptures++; + } + } + } + return out; + }).map(re => `(${re})`).join(joinWith); +} + +/** @typedef {import('highlight.js').Mode} Mode */ +/** @typedef {import('highlight.js').ModeCallback} ModeCallback */ + +// Common regexps +const MATCH_NOTHING_RE = /\b\B/; +const IDENT_RE = '[a-zA-Z]\\w*'; +const UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*'; +const NUMBER_RE = '\\b\\d+(\\.\\d+)?'; +const C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float +const BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b... +const RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~'; + +/** +* @param { Partial & {binary?: string | RegExp} } opts +*/ +const SHEBANG = (opts = {}) => { + const beginShebang = /^#![ ]*\//; + if (opts.binary) { + opts.begin = concat( + beginShebang, + /.*\b/, + opts.binary, + /\b.*/); + } + return inherit$1({ + scope: 'meta', + begin: beginShebang, + end: /$/, + relevance: 0, + /** @type {ModeCallback} */ + "on:begin": (m, resp) => { + if (m.index !== 0) resp.ignoreMatch(); + } + }, opts); +}; + +// Common modes +const BACKSLASH_ESCAPE = { + begin: '\\\\[\\s\\S]', relevance: 0 +}; +const APOS_STRING_MODE = { + scope: 'string', + begin: '\'', + end: '\'', + illegal: '\\n', + contains: [BACKSLASH_ESCAPE] +}; +const QUOTE_STRING_MODE = { + scope: 'string', + begin: '"', + end: '"', + illegal: '\\n', + contains: [BACKSLASH_ESCAPE] +}; +const PHRASAL_WORDS_MODE = { + begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +}; +/** + * Creates a comment mode + * + * @param {string | RegExp} begin + * @param {string | RegExp} end + * @param {Mode | {}} [modeOptions] + * @returns {Partial} + */ +const COMMENT = function(begin, end, modeOptions = {}) { + const mode = inherit$1( + { + scope: 'comment', + begin, + end, + contains: [] + }, + modeOptions + ); + mode.contains.push({ + scope: 'doctag', + // hack to avoid the space from being included. the space is necessary to + // match here to prevent the plain text rule below from gobbling up doctags + begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)', + end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/, + excludeBegin: true, + relevance: 0 + }); + const ENGLISH_WORD = either( + // list of common 1 and 2 letter words in English + "I", + "a", + "is", + "so", + "us", + "to", + "at", + "if", + "in", + "it", + "on", + // note: this is not an exhaustive list of contractions, just popular ones + /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc + /[A-Za-z]+[-][a-z]+/, // `no-way`, etc. + /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences + ); + // looking like plain text, more likely to be a comment + mode.contains.push( + { + // TODO: how to include ", (, ) without breaking grammars that use these for + // comment delimiters? + // begin: /[ ]+([()"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()":]?([.][ ]|[ ]|\))){3}/ + // --- + + // this tries to find sequences of 3 english words in a row (without any + // "programming" type syntax) this gives us a strong signal that we've + // TRULY found a comment - vs perhaps scanning with the wrong language. + // It's possible to find something that LOOKS like the start of the + // comment - but then if there is no readable text - good chance it is a + // false match and not a comment. + // + // for a visual example please see: + // https://github.com/highlightjs/highlight.js/issues/2827 + + begin: concat( + /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */ + '(', + ENGLISH_WORD, + /[.]?[:]?([.][ ]|[ ])/, + '){3}') // look for 3 words in a row + } + ); + return mode; +}; +const C_LINE_COMMENT_MODE = COMMENT('//', '$'); +const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/'); +const HASH_COMMENT_MODE = COMMENT('#', '$'); +const NUMBER_MODE = { + scope: 'number', + begin: NUMBER_RE, + relevance: 0 +}; +const C_NUMBER_MODE = { + scope: 'number', + begin: C_NUMBER_RE, + relevance: 0 +}; +const BINARY_NUMBER_MODE = { + scope: 'number', + begin: BINARY_NUMBER_RE, + relevance: 0 +}; +const REGEXP_MODE = { + scope: "regexp", + begin: /\/(?=[^/\n]*\/)/, + end: /\/[gimuy]*/, + contains: [ + BACKSLASH_ESCAPE, + { + begin: /\[/, + end: /\]/, + relevance: 0, + contains: [BACKSLASH_ESCAPE] + } + ] +}; +const TITLE_MODE = { + scope: 'title', + begin: IDENT_RE, + relevance: 0 +}; +const UNDERSCORE_TITLE_MODE = { + scope: 'title', + begin: UNDERSCORE_IDENT_RE, + relevance: 0 +}; +const METHOD_GUARD = { + // excludes method names from keyword processing + begin: '\\.\\s*' + UNDERSCORE_IDENT_RE, + relevance: 0 +}; + +/** + * Adds end same as begin mechanics to a mode + * + * Your mode must include at least a single () match group as that first match + * group is what is used for comparison + * @param {Partial} mode + */ +const END_SAME_AS_BEGIN = function(mode) { + return Object.assign(mode, + { + /** @type {ModeCallback} */ + 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; }, + /** @type {ModeCallback} */ + 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); } + }); +}; + +var MODES = /*#__PURE__*/Object.freeze({ + __proto__: null, + APOS_STRING_MODE: APOS_STRING_MODE, + BACKSLASH_ESCAPE: BACKSLASH_ESCAPE, + BINARY_NUMBER_MODE: BINARY_NUMBER_MODE, + BINARY_NUMBER_RE: BINARY_NUMBER_RE, + COMMENT: COMMENT, + C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE, + C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE, + C_NUMBER_MODE: C_NUMBER_MODE, + C_NUMBER_RE: C_NUMBER_RE, + END_SAME_AS_BEGIN: END_SAME_AS_BEGIN, + HASH_COMMENT_MODE: HASH_COMMENT_MODE, + IDENT_RE: IDENT_RE, + MATCH_NOTHING_RE: MATCH_NOTHING_RE, + METHOD_GUARD: METHOD_GUARD, + NUMBER_MODE: NUMBER_MODE, + NUMBER_RE: NUMBER_RE, + PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE, + QUOTE_STRING_MODE: QUOTE_STRING_MODE, + REGEXP_MODE: REGEXP_MODE, + RE_STARTERS_RE: RE_STARTERS_RE, + SHEBANG: SHEBANG, + TITLE_MODE: TITLE_MODE, + UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE, + UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE +}); + +/** +@typedef {import('highlight.js').CallbackResponse} CallbackResponse +@typedef {import('highlight.js').CompilerExt} CompilerExt +*/ + +// Grammar extensions / plugins +// See: https://github.com/highlightjs/highlight.js/issues/2833 + +// Grammar extensions allow "syntactic sugar" to be added to the grammar modes +// without requiring any underlying changes to the compiler internals. + +// `compileMatch` being the perfect small example of now allowing a grammar +// author to write `match` when they desire to match a single expression rather +// than being forced to use `begin`. The extension then just moves `match` into +// `begin` when it runs. Ie, no features have been added, but we've just made +// the experience of writing (and reading grammars) a little bit nicer. + +// ------ + +// TODO: We need negative look-behind support to do this properly +/** + * Skip a match if it has a preceding dot + * + * This is used for `beginKeywords` to prevent matching expressions such as + * `bob.keyword.do()`. The mode compiler automatically wires this up as a + * special _internal_ 'on:begin' callback for modes with `beginKeywords` + * @param {RegExpMatchArray} match + * @param {CallbackResponse} response + */ +function skipIfHasPrecedingDot(match, response) { + const before = match.input[match.index - 1]; + if (before === ".") { + response.ignoreMatch(); + } +} + +/** + * + * @type {CompilerExt} + */ +function scopeClassName(mode, _parent) { + // eslint-disable-next-line no-undefined + if (mode.className !== undefined) { + mode.scope = mode.className; + delete mode.className; + } +} + +/** + * `beginKeywords` syntactic sugar + * @type {CompilerExt} + */ +function beginKeywords(mode, parent) { + if (!parent) return; + if (!mode.beginKeywords) return; + + // for languages with keywords that include non-word characters checking for + // a word boundary is not sufficient, so instead we check for a word boundary + // or whitespace - this does no harm in any case since our keyword engine + // doesn't allow spaces in keywords anyways and we still check for the boundary + // first + mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\.)(?=\\b|\\s)'; + mode.__beforeBegin = skipIfHasPrecedingDot; + mode.keywords = mode.keywords || mode.beginKeywords; + delete mode.beginKeywords; + + // prevents double relevance, the keywords themselves provide + // relevance, the mode doesn't need to double it + // eslint-disable-next-line no-undefined + if (mode.relevance === undefined) mode.relevance = 0; +} + +/** + * Allow `illegal` to contain an array of illegal values + * @type {CompilerExt} + */ +function compileIllegal(mode, _parent) { + if (!Array.isArray(mode.illegal)) return; + + mode.illegal = either(...mode.illegal); +} + +/** + * `match` to match a single expression for readability + * @type {CompilerExt} + */ +function compileMatch(mode, _parent) { + if (!mode.match) return; + if (mode.begin || mode.end) throw new Error("begin & end are not supported with match"); + + mode.begin = mode.match; + delete mode.match; +} + +/** + * provides the default 1 relevance to all modes + * @type {CompilerExt} + */ +function compileRelevance(mode, _parent) { + // eslint-disable-next-line no-undefined + if (mode.relevance === undefined) mode.relevance = 1; +} + +// allow beforeMatch to act as a "qualifier" for the match +// the full match begin must be [beforeMatch][begin] +const beforeMatchExt = (mode, parent) => { + if (!mode.beforeMatch) return; + // starts conflicts with endsParent which we need to make sure the child + // rule is not matched multiple times + if (mode.starts) throw new Error("beforeMatch cannot be used with starts"); + + const originalMode = Object.assign({}, mode); + Object.keys(mode).forEach((key) => { delete mode[key]; }); + + mode.keywords = originalMode.keywords; + mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin)); + mode.starts = { + relevance: 0, + contains: [ + Object.assign(originalMode, { endsParent: true }) + ] + }; + mode.relevance = 0; + + delete originalMode.beforeMatch; +}; + +// keywords that should have no default relevance value +const COMMON_KEYWORDS = [ + 'of', + 'and', + 'for', + 'in', + 'not', + 'or', + 'if', + 'then', + 'parent', // common variable name + 'list', // common variable name + 'value' // common variable name +]; + +const DEFAULT_KEYWORD_SCOPE = "keyword"; + +/** + * Given raw keywords from a language definition, compile them. + * + * @param {string | Record | Array} rawKeywords + * @param {boolean} caseInsensitive + */ +function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) { + /** @type {import("highlight.js/private").KeywordDict} */ + const compiledKeywords = Object.create(null); + + // input can be a string of keywords, an array of keywords, or a object with + // named keys representing scopeName (which can then point to a string or array) + if (typeof rawKeywords === 'string') { + compileList(scopeName, rawKeywords.split(" ")); + } else if (Array.isArray(rawKeywords)) { + compileList(scopeName, rawKeywords); + } else { + Object.keys(rawKeywords).forEach(function(scopeName) { + // collapse all our objects back into the parent object + Object.assign( + compiledKeywords, + compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName) + ); + }); + } + return compiledKeywords; + + // --- + + /** + * Compiles an individual list of keywords + * + * Ex: "for if when while|5" + * + * @param {string} scopeName + * @param {Array} keywordList + */ + function compileList(scopeName, keywordList) { + if (caseInsensitive) { + keywordList = keywordList.map(x => x.toLowerCase()); + } + keywordList.forEach(function(keyword) { + const pair = keyword.split('|'); + compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])]; + }); + } +} + +/** + * Returns the proper score for a given keyword + * + * Also takes into account comment keywords, which will be scored 0 UNLESS + * another score has been manually assigned. + * @param {string} keyword + * @param {string} [providedScore] + */ +function scoreForKeyword(keyword, providedScore) { + // manual scores always win over common keywords + // so you can force a score of 1 if you really insist + if (providedScore) { + return Number(providedScore); + } + + return commonKeyword(keyword) ? 0 : 1; +} + +/** + * Determines if a given keyword is common or not + * + * @param {string} keyword */ +function commonKeyword(keyword) { + return COMMON_KEYWORDS.includes(keyword.toLowerCase()); +} + +/* + +For the reasoning behind this please see: +https://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419 + +*/ + +/** + * @type {Record} + */ +const seenDeprecations = {}; + +/** + * @param {string} message + */ +const error = (message) => { + console.error(message); +}; + +/** + * @param {string} message + * @param {any} args + */ +const warn = (message, ...args) => { + console.log(`WARN: ${message}`, ...args); +}; + +/** + * @param {string} version + * @param {string} message + */ +const deprecated = (version, message) => { + if (seenDeprecations[`${version}/${message}`]) return; + + console.log(`Deprecated as of ${version}. ${message}`); + seenDeprecations[`${version}/${message}`] = true; +}; + +/* eslint-disable no-throw-literal */ + +/** +@typedef {import('highlight.js').CompiledMode} CompiledMode +*/ + +const MultiClassError = new Error(); + +/** + * Renumbers labeled scope names to account for additional inner match + * groups that otherwise would break everything. + * + * Lets say we 3 match scopes: + * + * { 1 => ..., 2 => ..., 3 => ... } + * + * So what we need is a clean match like this: + * + * (a)(b)(c) => [ "a", "b", "c" ] + * + * But this falls apart with inner match groups: + * + * (a)(((b)))(c) => ["a", "b", "b", "b", "c" ] + * + * Our scopes are now "out of alignment" and we're repeating `b` 3 times. + * What needs to happen is the numbers are remapped: + * + * { 1 => ..., 2 => ..., 5 => ... } + * + * We also need to know that the ONLY groups that should be output + * are 1, 2, and 5. This function handles this behavior. + * + * @param {CompiledMode} mode + * @param {Array} regexes + * @param {{key: "beginScope"|"endScope"}} opts + */ +function remapScopeNames(mode, regexes, { key }) { + let offset = 0; + const scopeNames = mode[key]; + /** @type Record */ + const emit = {}; + /** @type Record */ + const positions = {}; + + for (let i = 1; i <= regexes.length; i++) { + positions[i + offset] = scopeNames[i]; + emit[i + offset] = true; + offset += countMatchGroups(regexes[i - 1]); + } + // we use _emit to keep track of which match groups are "top-level" to avoid double + // output from inside match groups + mode[key] = positions; + mode[key]._emit = emit; + mode[key]._multi = true; +} + +/** + * @param {CompiledMode} mode + */ +function beginMultiClass(mode) { + if (!Array.isArray(mode.begin)) return; + + if (mode.skip || mode.excludeBegin || mode.returnBegin) { + error("skip, excludeBegin, returnBegin not compatible with beginScope: {}"); + throw MultiClassError; + } + + if (typeof mode.beginScope !== "object" || mode.beginScope === null) { + error("beginScope must be object"); + throw MultiClassError; + } + + remapScopeNames(mode, mode.begin, { key: "beginScope" }); + mode.begin = _rewriteBackreferences(mode.begin, { joinWith: "" }); +} + +/** + * @param {CompiledMode} mode + */ +function endMultiClass(mode) { + if (!Array.isArray(mode.end)) return; + + if (mode.skip || mode.excludeEnd || mode.returnEnd) { + error("skip, excludeEnd, returnEnd not compatible with endScope: {}"); + throw MultiClassError; + } + + if (typeof mode.endScope !== "object" || mode.endScope === null) { + error("endScope must be object"); + throw MultiClassError; + } + + remapScopeNames(mode, mode.end, { key: "endScope" }); + mode.end = _rewriteBackreferences(mode.end, { joinWith: "" }); +} + +/** + * this exists only to allow `scope: {}` to be used beside `match:` + * Otherwise `beginScope` would necessary and that would look weird + + { + match: [ /def/, /\w+/ ] + scope: { 1: "keyword" , 2: "title" } + } + + * @param {CompiledMode} mode + */ +function scopeSugar(mode) { + if (mode.scope && typeof mode.scope === "object" && mode.scope !== null) { + mode.beginScope = mode.scope; + delete mode.scope; + } +} + +/** + * @param {CompiledMode} mode + */ +function MultiClass(mode) { + scopeSugar(mode); + + if (typeof mode.beginScope === "string") { + mode.beginScope = { _wrap: mode.beginScope }; + } + if (typeof mode.endScope === "string") { + mode.endScope = { _wrap: mode.endScope }; + } + + beginMultiClass(mode); + endMultiClass(mode); +} + +/** +@typedef {import('highlight.js').Mode} Mode +@typedef {import('highlight.js').CompiledMode} CompiledMode +@typedef {import('highlight.js').Language} Language +@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin +@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage +*/ + +// compilation + +/** + * Compiles a language definition result + * + * Given the raw result of a language definition (Language), compiles this so + * that it is ready for highlighting code. + * @param {Language} language + * @returns {CompiledLanguage} + */ +function compileLanguage(language) { + /** + * Builds a regex with the case sensitivity of the current language + * + * @param {RegExp | string} value + * @param {boolean} [global] + */ + function langRe(value, global) { + return new RegExp( + source(value), + 'm' + + (language.case_insensitive ? 'i' : '') + + (language.unicodeRegex ? 'u' : '') + + (global ? 'g' : '') + ); + } + + /** + Stores multiple regular expressions and allows you to quickly search for + them all in a string simultaneously - returning the first match. It does + this by creating a huge (a|b|c) regex - each individual item wrapped with () + and joined by `|` - using match groups to track position. When a match is + found checking which position in the array has content allows us to figure + out which of the original regexes / match groups triggered the match. + + The match object itself (the result of `Regex.exec`) is returned but also + enhanced by merging in any meta-data that was registered with the regex. + This is how we keep track of which mode matched, and what type of rule + (`illegal`, `begin`, end, etc). + */ + class MultiRegex { + constructor() { + this.matchIndexes = {}; + // @ts-ignore + this.regexes = []; + this.matchAt = 1; + this.position = 0; + } + + // @ts-ignore + addRule(re, opts) { + opts.position = this.position++; + // @ts-ignore + this.matchIndexes[this.matchAt] = opts; + this.regexes.push([opts, re]); + this.matchAt += countMatchGroups(re) + 1; + } + + compile() { + if (this.regexes.length === 0) { + // avoids the need to check length every time exec is called + // @ts-ignore + this.exec = () => null; + } + const terminators = this.regexes.map(el => el[1]); + this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true); + this.lastIndex = 0; + } + + /** @param {string} s */ + exec(s) { + this.matcherRe.lastIndex = this.lastIndex; + const match = this.matcherRe.exec(s); + if (!match) { return null; } + + // eslint-disable-next-line no-undefined + const i = match.findIndex((el, i) => i > 0 && el !== undefined); + // @ts-ignore + const matchData = this.matchIndexes[i]; + // trim off any earlier non-relevant match groups (ie, the other regex + // match groups that make up the multi-matcher) + match.splice(0, i); + + return Object.assign(match, matchData); + } + } + + /* + Created to solve the key deficiently with MultiRegex - there is no way to + test for multiple matches at a single location. Why would we need to do + that? In the future a more dynamic engine will allow certain matches to be + ignored. An example: if we matched say the 3rd regex in a large group but + decided to ignore it - we'd need to started testing again at the 4th + regex... but MultiRegex itself gives us no real way to do that. + + So what this class creates MultiRegexs on the fly for whatever search + position they are needed. + + NOTE: These additional MultiRegex objects are created dynamically. For most + grammars most of the time we will never actually need anything more than the + first MultiRegex - so this shouldn't have too much overhead. + + Say this is our search group, and we match regex3, but wish to ignore it. + + regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0 + + What we need is a new MultiRegex that only includes the remaining + possibilities: + + regex4 | regex5 ' ie, startAt = 3 + + This class wraps all that complexity up in a simple API... `startAt` decides + where in the array of expressions to start doing the matching. It + auto-increments, so if a match is found at position 2, then startAt will be + set to 3. If the end is reached startAt will return to 0. + + MOST of the time the parser will be setting startAt manually to 0. + */ + class ResumableMultiRegex { + constructor() { + // @ts-ignore + this.rules = []; + // @ts-ignore + this.multiRegexes = []; + this.count = 0; + + this.lastIndex = 0; + this.regexIndex = 0; + } + + // @ts-ignore + getMatcher(index) { + if (this.multiRegexes[index]) return this.multiRegexes[index]; + + const matcher = new MultiRegex(); + this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts)); + matcher.compile(); + this.multiRegexes[index] = matcher; + return matcher; + } + + resumingScanAtSamePosition() { + return this.regexIndex !== 0; + } + + considerAll() { + this.regexIndex = 0; + } + + // @ts-ignore + addRule(re, opts) { + this.rules.push([re, opts]); + if (opts.type === "begin") this.count++; + } + + /** @param {string} s */ + exec(s) { + const m = this.getMatcher(this.regexIndex); + m.lastIndex = this.lastIndex; + let result = m.exec(s); + + // The following is because we have no easy way to say "resume scanning at the + // existing position but also skip the current rule ONLY". What happens is + // all prior rules are also skipped which can result in matching the wrong + // thing. Example of matching "booger": + + // our matcher is [string, "booger", number] + // + // ....booger.... + + // if "booger" is ignored then we'd really need a regex to scan from the + // SAME position for only: [string, number] but ignoring "booger" (if it + // was the first match), a simple resume would scan ahead who knows how + // far looking only for "number", ignoring potential string matches (or + // future "booger" matches that might be valid.) + + // So what we do: We execute two matchers, one resuming at the same + // position, but the second full matcher starting at the position after: + + // /--- resume first regex match here (for [number]) + // |/---- full match here for [string, "booger", number] + // vv + // ....booger.... + + // Which ever results in a match first is then used. So this 3-4 step + // process essentially allows us to say "match at this position, excluding + // a prior rule that was ignored". + // + // 1. Match "booger" first, ignore. Also proves that [string] does non match. + // 2. Resume matching for [number] + // 3. Match at index + 1 for [string, "booger", number] + // 4. If #2 and #3 result in matches, which came first? + if (this.resumingScanAtSamePosition()) { + if (result && result.index === this.lastIndex) ; else { // use the second matcher result + const m2 = this.getMatcher(0); + m2.lastIndex = this.lastIndex + 1; + result = m2.exec(s); + } + } + + if (result) { + this.regexIndex += result.position + 1; + if (this.regexIndex === this.count) { + // wrap-around to considering all matches again + this.considerAll(); + } + } + + return result; + } + } + + /** + * Given a mode, builds a huge ResumableMultiRegex that can be used to walk + * the content and find matches. + * + * @param {CompiledMode} mode + * @returns {ResumableMultiRegex} + */ + function buildModeRegex(mode) { + const mm = new ResumableMultiRegex(); + + mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: "begin" })); + + if (mode.terminatorEnd) { + mm.addRule(mode.terminatorEnd, { type: "end" }); + } + if (mode.illegal) { + mm.addRule(mode.illegal, { type: "illegal" }); + } + + return mm; + } + + /** skip vs abort vs ignore + * + * @skip - The mode is still entered and exited normally (and contains rules apply), + * but all content is held and added to the parent buffer rather than being + * output when the mode ends. Mostly used with `sublanguage` to build up + * a single large buffer than can be parsed by sublanguage. + * + * - The mode begin ands ends normally. + * - Content matched is added to the parent mode buffer. + * - The parser cursor is moved forward normally. + * + * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it + * never matched) but DOES NOT continue to match subsequent `contains` + * modes. Abort is bad/suboptimal because it can result in modes + * farther down not getting applied because an earlier rule eats the + * content but then aborts. + * + * - The mode does not begin. + * - Content matched by `begin` is added to the mode buffer. + * - The parser cursor is moved forward accordingly. + * + * @ignore - Ignores the mode (as if it never matched) and continues to match any + * subsequent `contains` modes. Ignore isn't technically possible with + * the current parser implementation. + * + * - The mode does not begin. + * - Content matched by `begin` is ignored. + * - The parser cursor is not moved forward. + */ + + /** + * Compiles an individual mode + * + * This can raise an error if the mode contains certain detectable known logic + * issues. + * @param {Mode} mode + * @param {CompiledMode | null} [parent] + * @returns {CompiledMode | never} + */ + function compileMode(mode, parent) { + const cmode = /** @type CompiledMode */ (mode); + if (mode.isCompiled) return cmode; + + [ + scopeClassName, + // do this early so compiler extensions generally don't have to worry about + // the distinction between match/begin + compileMatch, + MultiClass, + beforeMatchExt + ].forEach(ext => ext(mode, parent)); + + language.compilerExtensions.forEach(ext => ext(mode, parent)); + + // __beforeBegin is considered private API, internal use only + mode.__beforeBegin = null; + + [ + beginKeywords, + // do this later so compiler extensions that come earlier have access to the + // raw array if they wanted to perhaps manipulate it, etc. + compileIllegal, + // default to 1 relevance if not specified + compileRelevance + ].forEach(ext => ext(mode, parent)); + + mode.isCompiled = true; + + let keywordPattern = null; + if (typeof mode.keywords === "object" && mode.keywords.$pattern) { + // we need a copy because keywords might be compiled multiple times + // so we can't go deleting $pattern from the original on the first + // pass + mode.keywords = Object.assign({}, mode.keywords); + keywordPattern = mode.keywords.$pattern; + delete mode.keywords.$pattern; + } + keywordPattern = keywordPattern || /\w+/; + + if (mode.keywords) { + mode.keywords = compileKeywords(mode.keywords, language.case_insensitive); + } + + cmode.keywordPatternRe = langRe(keywordPattern, true); + + if (parent) { + if (!mode.begin) mode.begin = /\B|\b/; + cmode.beginRe = langRe(cmode.begin); + if (!mode.end && !mode.endsWithParent) mode.end = /\B|\b/; + if (mode.end) cmode.endRe = langRe(cmode.end); + cmode.terminatorEnd = source(cmode.end) || ''; + if (mode.endsWithParent && parent.terminatorEnd) { + cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd; + } + } + if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal)); + if (!mode.contains) mode.contains = []; + + mode.contains = [].concat(...mode.contains.map(function(c) { + return expandOrCloneMode(c === 'self' ? mode : c); + })); + mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); }); + + if (mode.starts) { + compileMode(mode.starts, parent); + } + + cmode.matcher = buildModeRegex(cmode); + return cmode; + } + + if (!language.compilerExtensions) language.compilerExtensions = []; + + // self is not valid at the top-level + if (language.contains && language.contains.includes('self')) { + throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation."); + } + + // we need a null object, which inherit will guarantee + language.classNameAliases = inherit$1(language.classNameAliases || {}); + + return compileMode(/** @type Mode */ (language)); +} + +/** + * Determines if a mode has a dependency on it's parent or not + * + * If a mode does have a parent dependency then often we need to clone it if + * it's used in multiple places so that each copy points to the correct parent, + * where-as modes without a parent can often safely be re-used at the bottom of + * a mode chain. + * + * @param {Mode | null} mode + * @returns {boolean} - is there a dependency on the parent? + * */ +function dependencyOnParent(mode) { + if (!mode) return false; + + return mode.endsWithParent || dependencyOnParent(mode.starts); +} + +/** + * Expands a mode or clones it if necessary + * + * This is necessary for modes with parental dependenceis (see notes on + * `dependencyOnParent`) and for nodes that have `variants` - which must then be + * exploded into their own individual modes at compile time. + * + * @param {Mode} mode + * @returns {Mode | Mode[]} + * */ +function expandOrCloneMode(mode) { + if (mode.variants && !mode.cachedVariants) { + mode.cachedVariants = mode.variants.map(function(variant) { + return inherit$1(mode, { variants: null }, variant); + }); + } + + // EXPAND + // if we have variants then essentially "replace" the mode with the variants + // this happens in compileMode, where this function is called from + if (mode.cachedVariants) { + return mode.cachedVariants; + } + + // CLONE + // if we have dependencies on parents then we need a unique + // instance of ourselves, so we can be reused with many + // different parents without issue + if (dependencyOnParent(mode)) { + return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null }); + } + + if (Object.isFrozen(mode)) { + return inherit$1(mode); + } + + // no special dependency issues, just return ourselves + return mode; +} + +var version = "11.11.1"; + +class HTMLInjectionError extends Error { + constructor(reason, html) { + super(reason); + this.name = "HTMLInjectionError"; + this.html = html; + } +} + +/* +Syntax highlighting with language autodetection. +https://highlightjs.org/ +*/ + + + +/** +@typedef {import('highlight.js').Mode} Mode +@typedef {import('highlight.js').CompiledMode} CompiledMode +@typedef {import('highlight.js').CompiledScope} CompiledScope +@typedef {import('highlight.js').Language} Language +@typedef {import('highlight.js').HLJSApi} HLJSApi +@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin +@typedef {import('highlight.js').PluginEvent} PluginEvent +@typedef {import('highlight.js').HLJSOptions} HLJSOptions +@typedef {import('highlight.js').LanguageFn} LanguageFn +@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement +@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext +@typedef {import('highlight.js/private').MatchType} MatchType +@typedef {import('highlight.js/private').KeywordData} KeywordData +@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch +@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError +@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult +@typedef {import('highlight.js').HighlightOptions} HighlightOptions +@typedef {import('highlight.js').HighlightResult} HighlightResult +*/ + + +const escape = escapeHTML; +const inherit = inherit$1; +const NO_MATCH = Symbol("nomatch"); +const MAX_KEYWORD_HITS = 7; + +/** + * @param {any} hljs - object that is extended (legacy) + * @returns {HLJSApi} + */ +const HLJS = function(hljs) { + // Global internal variables used within the highlight.js library. + /** @type {Record} */ + const languages = Object.create(null); + /** @type {Record} */ + const aliases = Object.create(null); + /** @type {HLJSPlugin[]} */ + const plugins = []; + + // safe/production mode - swallows more errors, tries to keep running + // even if a single syntax or parse hits a fatal error + let SAFE_MODE = true; + const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?"; + /** @type {Language} */ + const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] }; + + // Global options used when within external APIs. This is modified when + // calling the `hljs.configure` function. + /** @type HLJSOptions */ + let options = { + ignoreUnescapedHTML: false, + throwUnescapedHTML: false, + noHighlightRe: /^(no-?highlight)$/i, + languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, + classPrefix: 'hljs-', + cssSelector: 'pre code', + languages: null, + // beta configuration options, subject to change, welcome to discuss + // https://github.com/highlightjs/highlight.js/issues/1086 + __emitter: TokenTreeEmitter + }; + + /* Utility functions */ + + /** + * Tests a language name to see if highlighting should be skipped + * @param {string} languageName + */ + function shouldNotHighlight(languageName) { + return options.noHighlightRe.test(languageName); + } + + /** + * @param {HighlightedHTMLElement} block - the HTML element to determine language for + */ + function blockLanguage(block) { + let classes = block.className + ' '; + + classes += block.parentNode ? block.parentNode.className : ''; + + // language-* takes precedence over non-prefixed class names. + const match = options.languageDetectRe.exec(classes); + if (match) { + const language = getLanguage(match[1]); + if (!language) { + warn(LANGUAGE_NOT_FOUND.replace("{}", match[1])); + warn("Falling back to no-highlight mode for this block.", block); + } + return language ? match[1] : 'no-highlight'; + } + + return classes + .split(/\s+/) + .find((_class) => shouldNotHighlight(_class) || getLanguage(_class)); + } + + /** + * Core highlighting function. + * + * OLD API + * highlight(lang, code, ignoreIllegals, continuation) + * + * NEW API + * highlight(code, {lang, ignoreIllegals}) + * + * @param {string} codeOrLanguageName - the language to use for highlighting + * @param {string | HighlightOptions} optionsOrCode - the code to highlight + * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail + * + * @returns {HighlightResult} Result - an object that represents the result + * @property {string} language - the language name + * @property {number} relevance - the relevance score + * @property {string} value - the highlighted HTML code + * @property {string} code - the original raw code + * @property {CompiledMode} top - top of the current mode stack + * @property {boolean} illegal - indicates whether any illegal matches were found + */ + function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) { + let code = ""; + let languageName = ""; + if (typeof optionsOrCode === "object") { + code = codeOrLanguageName; + ignoreIllegals = optionsOrCode.ignoreIllegals; + languageName = optionsOrCode.language; + } else { + // old API + deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated."); + deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"); + languageName = codeOrLanguageName; + code = optionsOrCode; + } + + // https://github.com/highlightjs/highlight.js/issues/3149 + // eslint-disable-next-line no-undefined + if (ignoreIllegals === undefined) { ignoreIllegals = true; } + + /** @type {BeforeHighlightContext} */ + const context = { + code, + language: languageName + }; + // the plugin can change the desired language or the code to be highlighted + // just be changing the object it was passed + fire("before:highlight", context); + + // a before plugin can usurp the result completely by providing it's own + // in which case we don't even need to call highlight + const result = context.result + ? context.result + : _highlight(context.language, context.code, ignoreIllegals); + + result.code = context.code; + // the plugin can change anything in result to suite it + fire("after:highlight", result); + + return result; + } + + /** + * private highlight that's used internally and does not fire callbacks + * + * @param {string} languageName - the language to use for highlighting + * @param {string} codeToHighlight - the code to highlight + * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail + * @param {CompiledMode?} [continuation] - current continuation mode, if any + * @returns {HighlightResult} - result of the highlight operation + */ + function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) { + const keywordHits = Object.create(null); + + /** + * Return keyword data if a match is a keyword + * @param {CompiledMode} mode - current mode + * @param {string} matchText - the textual match + * @returns {KeywordData | false} + */ + function keywordData(mode, matchText) { + return mode.keywords[matchText]; + } + + function processKeywords() { + if (!top.keywords) { + emitter.addText(modeBuffer); + return; + } + + let lastIndex = 0; + top.keywordPatternRe.lastIndex = 0; + let match = top.keywordPatternRe.exec(modeBuffer); + let buf = ""; + + while (match) { + buf += modeBuffer.substring(lastIndex, match.index); + const word = language.case_insensitive ? match[0].toLowerCase() : match[0]; + const data = keywordData(top, word); + if (data) { + const [kind, keywordRelevance] = data; + emitter.addText(buf); + buf = ""; + + keywordHits[word] = (keywordHits[word] || 0) + 1; + if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance; + if (kind.startsWith("_")) { + // _ implied for relevance only, do not highlight + // by applying a class name + buf += match[0]; + } else { + const cssClass = language.classNameAliases[kind] || kind; + emitKeyword(match[0], cssClass); + } + } else { + buf += match[0]; + } + lastIndex = top.keywordPatternRe.lastIndex; + match = top.keywordPatternRe.exec(modeBuffer); + } + buf += modeBuffer.substring(lastIndex); + emitter.addText(buf); + } + + function processSubLanguage() { + if (modeBuffer === "") return; + /** @type HighlightResult */ + let result = null; + + if (typeof top.subLanguage === 'string') { + if (!languages[top.subLanguage]) { + emitter.addText(modeBuffer); + return; + } + result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]); + continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top); + } else { + result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null); + } + + // Counting embedded language score towards the host language may be disabled + // with zeroing the containing mode relevance. Use case in point is Markdown that + // allows XML everywhere and makes every XML snippet to have a much larger Markdown + // score. + if (top.relevance > 0) { + relevance += result.relevance; + } + emitter.__addSublanguage(result._emitter, result.language); + } + + function processBuffer() { + if (top.subLanguage != null) { + processSubLanguage(); + } else { + processKeywords(); + } + modeBuffer = ''; + } + + /** + * @param {string} text + * @param {string} scope + */ + function emitKeyword(keyword, scope) { + if (keyword === "") return; + + emitter.startScope(scope); + emitter.addText(keyword); + emitter.endScope(); + } + + /** + * @param {CompiledScope} scope + * @param {RegExpMatchArray} match + */ + function emitMultiClass(scope, match) { + let i = 1; + const max = match.length - 1; + while (i <= max) { + if (!scope._emit[i]) { i++; continue; } + const klass = language.classNameAliases[scope[i]] || scope[i]; + const text = match[i]; + if (klass) { + emitKeyword(text, klass); + } else { + modeBuffer = text; + processKeywords(); + modeBuffer = ""; + } + i++; + } + } + + /** + * @param {CompiledMode} mode - new mode to start + * @param {RegExpMatchArray} match + */ + function startNewMode(mode, match) { + if (mode.scope && typeof mode.scope === "string") { + emitter.openNode(language.classNameAliases[mode.scope] || mode.scope); + } + if (mode.beginScope) { + // beginScope just wraps the begin match itself in a scope + if (mode.beginScope._wrap) { + emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap); + modeBuffer = ""; + } else if (mode.beginScope._multi) { + // at this point modeBuffer should just be the match + emitMultiClass(mode.beginScope, match); + modeBuffer = ""; + } + } + + top = Object.create(mode, { parent: { value: top } }); + return top; + } + + /** + * @param {CompiledMode } mode - the mode to potentially end + * @param {RegExpMatchArray} match - the latest match + * @param {string} matchPlusRemainder - match plus remainder of content + * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode + */ + function endOfMode(mode, match, matchPlusRemainder) { + let matched = startsWith(mode.endRe, matchPlusRemainder); + + if (matched) { + if (mode["on:end"]) { + const resp = new Response(mode); + mode["on:end"](match, resp); + if (resp.isMatchIgnored) matched = false; + } + + if (matched) { + while (mode.endsParent && mode.parent) { + mode = mode.parent; + } + return mode; + } + } + // even if on:end fires an `ignore` it's still possible + // that we might trigger the end node because of a parent mode + if (mode.endsWithParent) { + return endOfMode(mode.parent, match, matchPlusRemainder); + } + } + + /** + * Handle matching but then ignoring a sequence of text + * + * @param {string} lexeme - string containing full match text + */ + function doIgnore(lexeme) { + if (top.matcher.regexIndex === 0) { + // no more regexes to potentially match here, so we move the cursor forward one + // space + modeBuffer += lexeme[0]; + return 1; + } else { + // no need to move the cursor, we still have additional regexes to try and + // match at this very spot + resumeScanAtSamePosition = true; + return 0; + } + } + + /** + * Handle the start of a new potential mode match + * + * @param {EnhancedMatch} match - the current match + * @returns {number} how far to advance the parse cursor + */ + function doBeginMatch(match) { + const lexeme = match[0]; + const newMode = match.rule; + + const resp = new Response(newMode); + // first internal before callbacks, then the public ones + const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]]; + for (const cb of beforeCallbacks) { + if (!cb) continue; + cb(match, resp); + if (resp.isMatchIgnored) return doIgnore(lexeme); + } + + if (newMode.skip) { + modeBuffer += lexeme; + } else { + if (newMode.excludeBegin) { + modeBuffer += lexeme; + } + processBuffer(); + if (!newMode.returnBegin && !newMode.excludeBegin) { + modeBuffer = lexeme; + } + } + startNewMode(newMode, match); + return newMode.returnBegin ? 0 : lexeme.length; + } + + /** + * Handle the potential end of mode + * + * @param {RegExpMatchArray} match - the current match + */ + function doEndMatch(match) { + const lexeme = match[0]; + const matchPlusRemainder = codeToHighlight.substring(match.index); + + const endMode = endOfMode(top, match, matchPlusRemainder); + if (!endMode) { return NO_MATCH; } + + const origin = top; + if (top.endScope && top.endScope._wrap) { + processBuffer(); + emitKeyword(lexeme, top.endScope._wrap); + } else if (top.endScope && top.endScope._multi) { + processBuffer(); + emitMultiClass(top.endScope, match); + } else if (origin.skip) { + modeBuffer += lexeme; + } else { + if (!(origin.returnEnd || origin.excludeEnd)) { + modeBuffer += lexeme; + } + processBuffer(); + if (origin.excludeEnd) { + modeBuffer = lexeme; + } + } + do { + if (top.scope) { + emitter.closeNode(); + } + if (!top.skip && !top.subLanguage) { + relevance += top.relevance; + } + top = top.parent; + } while (top !== endMode.parent); + if (endMode.starts) { + startNewMode(endMode.starts, match); + } + return origin.returnEnd ? 0 : lexeme.length; + } + + function processContinuations() { + const list = []; + for (let current = top; current !== language; current = current.parent) { + if (current.scope) { + list.unshift(current.scope); + } + } + list.forEach(item => emitter.openNode(item)); + } + + /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */ + let lastMatch = {}; + + /** + * Process an individual match + * + * @param {string} textBeforeMatch - text preceding the match (since the last match) + * @param {EnhancedMatch} [match] - the match itself + */ + function processLexeme(textBeforeMatch, match) { + const lexeme = match && match[0]; + + // add non-matched text to the current mode buffer + modeBuffer += textBeforeMatch; + + if (lexeme == null) { + processBuffer(); + return 0; + } + + // we've found a 0 width match and we're stuck, so we need to advance + // this happens when we have badly behaved rules that have optional matchers to the degree that + // sometimes they can end up matching nothing at all + // Ref: https://github.com/highlightjs/highlight.js/issues/2140 + if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") { + // spit the "skipped" character that our regex choked on back into the output sequence + modeBuffer += codeToHighlight.slice(match.index, match.index + 1); + if (!SAFE_MODE) { + /** @type {AnnotatedError} */ + const err = new Error(`0 width match regex (${languageName})`); + err.languageName = languageName; + err.badRule = lastMatch.rule; + throw err; + } + return 1; + } + lastMatch = match; + + if (match.type === "begin") { + return doBeginMatch(match); + } else if (match.type === "illegal" && !ignoreIllegals) { + // illegal match, we do not continue processing + /** @type {AnnotatedError} */ + const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.scope || '') + '"'); + err.mode = top; + throw err; + } else if (match.type === "end") { + const processed = doEndMatch(match); + if (processed !== NO_MATCH) { + return processed; + } + } + + // edge case for when illegal matches $ (end of line) which is technically + // a 0 width match but not a begin/end match so it's not caught by the + // first handler (when ignoreIllegals is true) + if (match.type === "illegal" && lexeme === "") { + // advance so we aren't stuck in an infinite loop + modeBuffer += "\n"; + return 1; + } + + // infinite loops are BAD, this is a last ditch catch all. if we have a + // decent number of iterations yet our index (cursor position in our + // parsing) still 3x behind our index then something is very wrong + // so we bail + if (iterations > 100000 && iterations > match.index * 3) { + const err = new Error('potential infinite loop, way more iterations than matches'); + throw err; + } + + /* + Why might be find ourselves here? An potential end match that was + triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH. + (this could be because a callback requests the match be ignored, etc) + + This causes no real harm other than stopping a few times too many. + */ + + modeBuffer += lexeme; + return lexeme.length; + } + + const language = getLanguage(languageName); + if (!language) { + error(LANGUAGE_NOT_FOUND.replace("{}", languageName)); + throw new Error('Unknown language: "' + languageName + '"'); + } + + const md = compileLanguage(language); + let result = ''; + /** @type {CompiledMode} */ + let top = continuation || md; + /** @type Record */ + const continuations = {}; // keep continuations for sub-languages + const emitter = new options.__emitter(options); + processContinuations(); + let modeBuffer = ''; + let relevance = 0; + let index = 0; + let iterations = 0; + let resumeScanAtSamePosition = false; + + try { + if (!language.__emitTokens) { + top.matcher.considerAll(); + + for (;;) { + iterations++; + if (resumeScanAtSamePosition) { + // only regexes not matched previously will now be + // considered for a potential match + resumeScanAtSamePosition = false; + } else { + top.matcher.considerAll(); + } + top.matcher.lastIndex = index; + + const match = top.matcher.exec(codeToHighlight); + // console.log("match", match[0], match.rule && match.rule.begin) + + if (!match) break; + + const beforeMatch = codeToHighlight.substring(index, match.index); + const processedCount = processLexeme(beforeMatch, match); + index = match.index + processedCount; + } + processLexeme(codeToHighlight.substring(index)); + } else { + language.__emitTokens(codeToHighlight, emitter); + } + + emitter.finalize(); + result = emitter.toHTML(); + + return { + language: languageName, + value: result, + relevance, + illegal: false, + _emitter: emitter, + _top: top + }; + } catch (err) { + if (err.message && err.message.includes('Illegal')) { + return { + language: languageName, + value: escape(codeToHighlight), + illegal: true, + relevance: 0, + _illegalBy: { + message: err.message, + index, + context: codeToHighlight.slice(index - 100, index + 100), + mode: err.mode, + resultSoFar: result + }, + _emitter: emitter + }; + } else if (SAFE_MODE) { + return { + language: languageName, + value: escape(codeToHighlight), + illegal: false, + relevance: 0, + errorRaised: err, + _emitter: emitter, + _top: top + }; + } else { + throw err; + } + } + } + + /** + * returns a valid highlight result, without actually doing any actual work, + * auto highlight starts with this and it's possible for small snippets that + * auto-detection may not find a better match + * @param {string} code + * @returns {HighlightResult} + */ + function justTextHighlightResult(code) { + const result = { + value: escape(code), + illegal: false, + relevance: 0, + _top: PLAINTEXT_LANGUAGE, + _emitter: new options.__emitter(options) + }; + result._emitter.addText(code); + return result; + } + + /** + Highlighting with language detection. Accepts a string with the code to + highlight. Returns an object with the following properties: + + - language (detected language) + - relevance (int) + - value (an HTML string with highlighting markup) + - secondBest (object with the same structure for second-best heuristically + detected language, may be absent) + + @param {string} code + @param {Array} [languageSubset] + @returns {AutoHighlightResult} + */ + function highlightAuto(code, languageSubset) { + languageSubset = languageSubset || options.languages || Object.keys(languages); + const plaintext = justTextHighlightResult(code); + + const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name => + _highlight(name, code, false) + ); + results.unshift(plaintext); // plaintext is always an option + + const sorted = results.sort((a, b) => { + // sort base on relevance + if (a.relevance !== b.relevance) return b.relevance - a.relevance; + + // always award the tie to the base language + // ie if C++ and Arduino are tied, it's more likely to be C++ + if (a.language && b.language) { + if (getLanguage(a.language).supersetOf === b.language) { + return 1; + } else if (getLanguage(b.language).supersetOf === a.language) { + return -1; + } + } + + // otherwise say they are equal, which has the effect of sorting on + // relevance while preserving the original ordering - which is how ties + // have historically been settled, ie the language that comes first always + // wins in the case of a tie + return 0; + }); + + const [best, secondBest] = sorted; + + /** @type {AutoHighlightResult} */ + const result = best; + result.secondBest = secondBest; + + return result; + } + + /** + * Builds new class name for block given the language name + * + * @param {HTMLElement} element + * @param {string} [currentLang] + * @param {string} [resultLang] + */ + function updateClassName(element, currentLang, resultLang) { + const language = (currentLang && aliases[currentLang]) || resultLang; + + element.classList.add("hljs"); + element.classList.add(`language-${language}`); + } + + /** + * Applies highlighting to a DOM node containing code. + * + * @param {HighlightedHTMLElement} element - the HTML element to highlight + */ + function highlightElement(element) { + /** @type HTMLElement */ + let node = null; + const language = blockLanguage(element); + + if (shouldNotHighlight(language)) return; + + fire("before:highlightElement", + { el: element, language }); + + if (element.dataset.highlighted) { + console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", element); + return; + } + + // we should be all text, no child nodes (unescaped HTML) - this is possibly + // an HTML injection attack - it's likely too late if this is already in + // production (the code has likely already done its damage by the time + // we're seeing it)... but we yell loudly about this so that hopefully it's + // more likely to be caught in development before making it to production + if (element.children.length > 0) { + if (!options.ignoreUnescapedHTML) { + console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."); + console.warn("https://github.com/highlightjs/highlight.js/wiki/security"); + console.warn("The element with unescaped HTML:"); + console.warn(element); + } + if (options.throwUnescapedHTML) { + const err = new HTMLInjectionError( + "One of your code blocks includes unescaped HTML.", + element.innerHTML + ); + throw err; + } + } + + node = element; + const text = node.textContent; + const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text); + + element.innerHTML = result.value; + element.dataset.highlighted = "yes"; + updateClassName(element, language, result.language); + element.result = { + language: result.language, + // TODO: remove with version 11.0 + re: result.relevance, + relevance: result.relevance + }; + if (result.secondBest) { + element.secondBest = { + language: result.secondBest.language, + relevance: result.secondBest.relevance + }; + } + + fire("after:highlightElement", { el: element, result, text }); + } + + /** + * Updates highlight.js global options with the passed options + * + * @param {Partial} userOptions + */ + function configure(userOptions) { + options = inherit(options, userOptions); + } + + // TODO: remove v12, deprecated + const initHighlighting = () => { + highlightAll(); + deprecated("10.6.0", "initHighlighting() deprecated. Use highlightAll() now."); + }; + + // TODO: remove v12, deprecated + function initHighlightingOnLoad() { + highlightAll(); + deprecated("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now."); + } + + let wantsHighlight = false; + + /** + * auto-highlights all pre>code elements on the page + */ + function highlightAll() { + function boot() { + // if a highlight was requested before DOM was loaded, do now + highlightAll(); + } + + // if we are called too early in the loading process + if (document.readyState === "loading") { + // make sure the event listener is only added once + if (!wantsHighlight) { + window.addEventListener('DOMContentLoaded', boot, false); + } + wantsHighlight = true; + return; + } + + const blocks = document.querySelectorAll(options.cssSelector); + blocks.forEach(highlightElement); + } + + /** + * Register a language grammar module + * + * @param {string} languageName + * @param {LanguageFn} languageDefinition + */ + function registerLanguage(languageName, languageDefinition) { + let lang = null; + try { + lang = languageDefinition(hljs); + } catch (error$1) { + error("Language definition for '{}' could not be registered.".replace("{}", languageName)); + // hard or soft error + if (!SAFE_MODE) { throw error$1; } else { error(error$1); } + // languages that have serious errors are replaced with essentially a + // "plaintext" stand-in so that the code blocks will still get normal + // css classes applied to them - and one bad language won't break the + // entire highlighter + lang = PLAINTEXT_LANGUAGE; + } + // give it a temporary name if it doesn't have one in the meta-data + if (!lang.name) lang.name = languageName; + languages[languageName] = lang; + lang.rawDefinition = languageDefinition.bind(null, hljs); + + if (lang.aliases) { + registerAliases(lang.aliases, { languageName }); + } + } + + /** + * Remove a language grammar module + * + * @param {string} languageName + */ + function unregisterLanguage(languageName) { + delete languages[languageName]; + for (const alias of Object.keys(aliases)) { + if (aliases[alias] === languageName) { + delete aliases[alias]; + } + } + } + + /** + * @returns {string[]} List of language internal names + */ + function listLanguages() { + return Object.keys(languages); + } + + /** + * @param {string} name - name of the language to retrieve + * @returns {Language | undefined} + */ + function getLanguage(name) { + name = (name || '').toLowerCase(); + return languages[name] || languages[aliases[name]]; + } + + /** + * + * @param {string|string[]} aliasList - single alias or list of aliases + * @param {{languageName: string}} opts + */ + function registerAliases(aliasList, { languageName }) { + if (typeof aliasList === 'string') { + aliasList = [aliasList]; + } + aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; }); + } + + /** + * Determines if a given language has auto-detection enabled + * @param {string} name - name of the language + */ + function autoDetection(name) { + const lang = getLanguage(name); + return lang && !lang.disableAutodetect; + } + + /** + * Upgrades the old highlightBlock plugins to the new + * highlightElement API + * @param {HLJSPlugin} plugin + */ + function upgradePluginAPI(plugin) { + // TODO: remove with v12 + if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) { + plugin["before:highlightElement"] = (data) => { + plugin["before:highlightBlock"]( + Object.assign({ block: data.el }, data) + ); + }; + } + if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) { + plugin["after:highlightElement"] = (data) => { + plugin["after:highlightBlock"]( + Object.assign({ block: data.el }, data) + ); + }; + } + } + + /** + * @param {HLJSPlugin} plugin + */ + function addPlugin(plugin) { + upgradePluginAPI(plugin); + plugins.push(plugin); + } + + /** + * @param {HLJSPlugin} plugin + */ + function removePlugin(plugin) { + const index = plugins.indexOf(plugin); + if (index !== -1) { + plugins.splice(index, 1); + } + } + + /** + * + * @param {PluginEvent} event + * @param {any} args + */ + function fire(event, args) { + const cb = event; + plugins.forEach(function(plugin) { + if (plugin[cb]) { + plugin[cb](args); + } + }); + } + + /** + * DEPRECATED + * @param {HighlightedHTMLElement} el + */ + function deprecateHighlightBlock(el) { + deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0"); + deprecated("10.7.0", "Please use highlightElement now."); + + return highlightElement(el); + } + + /* Interface definition */ + Object.assign(hljs, { + highlight, + highlightAuto, + highlightAll, + highlightElement, + // TODO: Remove with v12 API + highlightBlock: deprecateHighlightBlock, + configure, + initHighlighting, + initHighlightingOnLoad, + registerLanguage, + unregisterLanguage, + listLanguages, + getLanguage, + registerAliases, + autoDetection, + inherit, + addPlugin, + removePlugin + }); + + hljs.debugMode = function() { SAFE_MODE = false; }; + hljs.safeMode = function() { SAFE_MODE = true; }; + hljs.versionString = version; + + hljs.regex = { + concat: concat, + lookahead: lookahead, + either: either, + optional: optional, + anyNumberOfTimes: anyNumberOfTimes + }; + + for (const key in MODES) { + // @ts-ignore + if (typeof MODES[key] === "object") { + // @ts-ignore + deepFreeze(MODES[key]); + } + } + + // merge all the modes/regexes into our main object + Object.assign(hljs, MODES); + + return hljs; +}; + +// Other names for the variable may break build script +const highlight = HLJS({}); + +// returns a new instance of the highlighter to be used for extensions +// check https://github.com/wooorm/lowlight/issues/47 +highlight.newInstance = () => HLJS({}); + +module.exports = highlight; +highlight.HighlightJS = highlight; +highlight.default = highlight; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/index.js" +/*!****************************************************!*\ + !*** ../../node_modules/highlight.js/lib/index.js ***! + \****************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +var hljs = __webpack_require__(/*! ./core */ "../../node_modules/highlight.js/lib/core.js"); + +hljs.registerLanguage('1c', __webpack_require__(/*! ./languages/1c */ "../../node_modules/highlight.js/lib/languages/1c.js")); +hljs.registerLanguage('abnf', __webpack_require__(/*! ./languages/abnf */ "../../node_modules/highlight.js/lib/languages/abnf.js")); +hljs.registerLanguage('accesslog', __webpack_require__(/*! ./languages/accesslog */ "../../node_modules/highlight.js/lib/languages/accesslog.js")); +hljs.registerLanguage('actionscript', __webpack_require__(/*! ./languages/actionscript */ "../../node_modules/highlight.js/lib/languages/actionscript.js")); +hljs.registerLanguage('ada', __webpack_require__(/*! ./languages/ada */ "../../node_modules/highlight.js/lib/languages/ada.js")); +hljs.registerLanguage('angelscript', __webpack_require__(/*! ./languages/angelscript */ "../../node_modules/highlight.js/lib/languages/angelscript.js")); +hljs.registerLanguage('apache', __webpack_require__(/*! ./languages/apache */ "../../node_modules/highlight.js/lib/languages/apache.js")); +hljs.registerLanguage('applescript', __webpack_require__(/*! ./languages/applescript */ "../../node_modules/highlight.js/lib/languages/applescript.js")); +hljs.registerLanguage('arcade', __webpack_require__(/*! ./languages/arcade */ "../../node_modules/highlight.js/lib/languages/arcade.js")); +hljs.registerLanguage('arduino', __webpack_require__(/*! ./languages/arduino */ "../../node_modules/highlight.js/lib/languages/arduino.js")); +hljs.registerLanguage('armasm', __webpack_require__(/*! ./languages/armasm */ "../../node_modules/highlight.js/lib/languages/armasm.js")); +hljs.registerLanguage('xml', __webpack_require__(/*! ./languages/xml */ "../../node_modules/highlight.js/lib/languages/xml.js")); +hljs.registerLanguage('asciidoc', __webpack_require__(/*! ./languages/asciidoc */ "../../node_modules/highlight.js/lib/languages/asciidoc.js")); +hljs.registerLanguage('aspectj', __webpack_require__(/*! ./languages/aspectj */ "../../node_modules/highlight.js/lib/languages/aspectj.js")); +hljs.registerLanguage('autohotkey', __webpack_require__(/*! ./languages/autohotkey */ "../../node_modules/highlight.js/lib/languages/autohotkey.js")); +hljs.registerLanguage('autoit', __webpack_require__(/*! ./languages/autoit */ "../../node_modules/highlight.js/lib/languages/autoit.js")); +hljs.registerLanguage('avrasm', __webpack_require__(/*! ./languages/avrasm */ "../../node_modules/highlight.js/lib/languages/avrasm.js")); +hljs.registerLanguage('awk', __webpack_require__(/*! ./languages/awk */ "../../node_modules/highlight.js/lib/languages/awk.js")); +hljs.registerLanguage('axapta', __webpack_require__(/*! ./languages/axapta */ "../../node_modules/highlight.js/lib/languages/axapta.js")); +hljs.registerLanguage('bash', __webpack_require__(/*! ./languages/bash */ "../../node_modules/highlight.js/lib/languages/bash.js")); +hljs.registerLanguage('basic', __webpack_require__(/*! ./languages/basic */ "../../node_modules/highlight.js/lib/languages/basic.js")); +hljs.registerLanguage('bnf', __webpack_require__(/*! ./languages/bnf */ "../../node_modules/highlight.js/lib/languages/bnf.js")); +hljs.registerLanguage('brainfuck', __webpack_require__(/*! ./languages/brainfuck */ "../../node_modules/highlight.js/lib/languages/brainfuck.js")); +hljs.registerLanguage('c', __webpack_require__(/*! ./languages/c */ "../../node_modules/highlight.js/lib/languages/c.js")); +hljs.registerLanguage('cal', __webpack_require__(/*! ./languages/cal */ "../../node_modules/highlight.js/lib/languages/cal.js")); +hljs.registerLanguage('capnproto', __webpack_require__(/*! ./languages/capnproto */ "../../node_modules/highlight.js/lib/languages/capnproto.js")); +hljs.registerLanguage('ceylon', __webpack_require__(/*! ./languages/ceylon */ "../../node_modules/highlight.js/lib/languages/ceylon.js")); +hljs.registerLanguage('clean', __webpack_require__(/*! ./languages/clean */ "../../node_modules/highlight.js/lib/languages/clean.js")); +hljs.registerLanguage('clojure', __webpack_require__(/*! ./languages/clojure */ "../../node_modules/highlight.js/lib/languages/clojure.js")); +hljs.registerLanguage('clojure-repl', __webpack_require__(/*! ./languages/clojure-repl */ "../../node_modules/highlight.js/lib/languages/clojure-repl.js")); +hljs.registerLanguage('cmake', __webpack_require__(/*! ./languages/cmake */ "../../node_modules/highlight.js/lib/languages/cmake.js")); +hljs.registerLanguage('coffeescript', __webpack_require__(/*! ./languages/coffeescript */ "../../node_modules/highlight.js/lib/languages/coffeescript.js")); +hljs.registerLanguage('coq', __webpack_require__(/*! ./languages/coq */ "../../node_modules/highlight.js/lib/languages/coq.js")); +hljs.registerLanguage('cos', __webpack_require__(/*! ./languages/cos */ "../../node_modules/highlight.js/lib/languages/cos.js")); +hljs.registerLanguage('cpp', __webpack_require__(/*! ./languages/cpp */ "../../node_modules/highlight.js/lib/languages/cpp.js")); +hljs.registerLanguage('crmsh', __webpack_require__(/*! ./languages/crmsh */ "../../node_modules/highlight.js/lib/languages/crmsh.js")); +hljs.registerLanguage('crystal', __webpack_require__(/*! ./languages/crystal */ "../../node_modules/highlight.js/lib/languages/crystal.js")); +hljs.registerLanguage('csharp', __webpack_require__(/*! ./languages/csharp */ "../../node_modules/highlight.js/lib/languages/csharp.js")); +hljs.registerLanguage('csp', __webpack_require__(/*! ./languages/csp */ "../../node_modules/highlight.js/lib/languages/csp.js")); +hljs.registerLanguage('css', __webpack_require__(/*! ./languages/css */ "../../node_modules/highlight.js/lib/languages/css.js")); +hljs.registerLanguage('d', __webpack_require__(/*! ./languages/d */ "../../node_modules/highlight.js/lib/languages/d.js")); +hljs.registerLanguage('markdown', __webpack_require__(/*! ./languages/markdown */ "../../node_modules/highlight.js/lib/languages/markdown.js")); +hljs.registerLanguage('dart', __webpack_require__(/*! ./languages/dart */ "../../node_modules/highlight.js/lib/languages/dart.js")); +hljs.registerLanguage('delphi', __webpack_require__(/*! ./languages/delphi */ "../../node_modules/highlight.js/lib/languages/delphi.js")); +hljs.registerLanguage('diff', __webpack_require__(/*! ./languages/diff */ "../../node_modules/highlight.js/lib/languages/diff.js")); +hljs.registerLanguage('django', __webpack_require__(/*! ./languages/django */ "../../node_modules/highlight.js/lib/languages/django.js")); +hljs.registerLanguage('dns', __webpack_require__(/*! ./languages/dns */ "../../node_modules/highlight.js/lib/languages/dns.js")); +hljs.registerLanguage('dockerfile', __webpack_require__(/*! ./languages/dockerfile */ "../../node_modules/highlight.js/lib/languages/dockerfile.js")); +hljs.registerLanguage('dos', __webpack_require__(/*! ./languages/dos */ "../../node_modules/highlight.js/lib/languages/dos.js")); +hljs.registerLanguage('dsconfig', __webpack_require__(/*! ./languages/dsconfig */ "../../node_modules/highlight.js/lib/languages/dsconfig.js")); +hljs.registerLanguage('dts', __webpack_require__(/*! ./languages/dts */ "../../node_modules/highlight.js/lib/languages/dts.js")); +hljs.registerLanguage('dust', __webpack_require__(/*! ./languages/dust */ "../../node_modules/highlight.js/lib/languages/dust.js")); +hljs.registerLanguage('ebnf', __webpack_require__(/*! ./languages/ebnf */ "../../node_modules/highlight.js/lib/languages/ebnf.js")); +hljs.registerLanguage('elixir', __webpack_require__(/*! ./languages/elixir */ "../../node_modules/highlight.js/lib/languages/elixir.js")); +hljs.registerLanguage('elm', __webpack_require__(/*! ./languages/elm */ "../../node_modules/highlight.js/lib/languages/elm.js")); +hljs.registerLanguage('ruby', __webpack_require__(/*! ./languages/ruby */ "../../node_modules/highlight.js/lib/languages/ruby.js")); +hljs.registerLanguage('erb', __webpack_require__(/*! ./languages/erb */ "../../node_modules/highlight.js/lib/languages/erb.js")); +hljs.registerLanguage('erlang-repl', __webpack_require__(/*! ./languages/erlang-repl */ "../../node_modules/highlight.js/lib/languages/erlang-repl.js")); +hljs.registerLanguage('erlang', __webpack_require__(/*! ./languages/erlang */ "../../node_modules/highlight.js/lib/languages/erlang.js")); +hljs.registerLanguage('excel', __webpack_require__(/*! ./languages/excel */ "../../node_modules/highlight.js/lib/languages/excel.js")); +hljs.registerLanguage('fix', __webpack_require__(/*! ./languages/fix */ "../../node_modules/highlight.js/lib/languages/fix.js")); +hljs.registerLanguage('flix', __webpack_require__(/*! ./languages/flix */ "../../node_modules/highlight.js/lib/languages/flix.js")); +hljs.registerLanguage('fortran', __webpack_require__(/*! ./languages/fortran */ "../../node_modules/highlight.js/lib/languages/fortran.js")); +hljs.registerLanguage('fsharp', __webpack_require__(/*! ./languages/fsharp */ "../../node_modules/highlight.js/lib/languages/fsharp.js")); +hljs.registerLanguage('gams', __webpack_require__(/*! ./languages/gams */ "../../node_modules/highlight.js/lib/languages/gams.js")); +hljs.registerLanguage('gauss', __webpack_require__(/*! ./languages/gauss */ "../../node_modules/highlight.js/lib/languages/gauss.js")); +hljs.registerLanguage('gcode', __webpack_require__(/*! ./languages/gcode */ "../../node_modules/highlight.js/lib/languages/gcode.js")); +hljs.registerLanguage('gherkin', __webpack_require__(/*! ./languages/gherkin */ "../../node_modules/highlight.js/lib/languages/gherkin.js")); +hljs.registerLanguage('glsl', __webpack_require__(/*! ./languages/glsl */ "../../node_modules/highlight.js/lib/languages/glsl.js")); +hljs.registerLanguage('gml', __webpack_require__(/*! ./languages/gml */ "../../node_modules/highlight.js/lib/languages/gml.js")); +hljs.registerLanguage('go', __webpack_require__(/*! ./languages/go */ "../../node_modules/highlight.js/lib/languages/go.js")); +hljs.registerLanguage('golo', __webpack_require__(/*! ./languages/golo */ "../../node_modules/highlight.js/lib/languages/golo.js")); +hljs.registerLanguage('gradle', __webpack_require__(/*! ./languages/gradle */ "../../node_modules/highlight.js/lib/languages/gradle.js")); +hljs.registerLanguage('graphql', __webpack_require__(/*! ./languages/graphql */ "../../node_modules/highlight.js/lib/languages/graphql.js")); +hljs.registerLanguage('groovy', __webpack_require__(/*! ./languages/groovy */ "../../node_modules/highlight.js/lib/languages/groovy.js")); +hljs.registerLanguage('haml', __webpack_require__(/*! ./languages/haml */ "../../node_modules/highlight.js/lib/languages/haml.js")); +hljs.registerLanguage('handlebars', __webpack_require__(/*! ./languages/handlebars */ "../../node_modules/highlight.js/lib/languages/handlebars.js")); +hljs.registerLanguage('haskell', __webpack_require__(/*! ./languages/haskell */ "../../node_modules/highlight.js/lib/languages/haskell.js")); +hljs.registerLanguage('haxe', __webpack_require__(/*! ./languages/haxe */ "../../node_modules/highlight.js/lib/languages/haxe.js")); +hljs.registerLanguage('hsp', __webpack_require__(/*! ./languages/hsp */ "../../node_modules/highlight.js/lib/languages/hsp.js")); +hljs.registerLanguage('http', __webpack_require__(/*! ./languages/http */ "../../node_modules/highlight.js/lib/languages/http.js")); +hljs.registerLanguage('hy', __webpack_require__(/*! ./languages/hy */ "../../node_modules/highlight.js/lib/languages/hy.js")); +hljs.registerLanguage('inform7', __webpack_require__(/*! ./languages/inform7 */ "../../node_modules/highlight.js/lib/languages/inform7.js")); +hljs.registerLanguage('ini', __webpack_require__(/*! ./languages/ini */ "../../node_modules/highlight.js/lib/languages/ini.js")); +hljs.registerLanguage('irpf90', __webpack_require__(/*! ./languages/irpf90 */ "../../node_modules/highlight.js/lib/languages/irpf90.js")); +hljs.registerLanguage('isbl', __webpack_require__(/*! ./languages/isbl */ "../../node_modules/highlight.js/lib/languages/isbl.js")); +hljs.registerLanguage('java', __webpack_require__(/*! ./languages/java */ "../../node_modules/highlight.js/lib/languages/java.js")); +hljs.registerLanguage('javascript', __webpack_require__(/*! ./languages/javascript */ "../../node_modules/highlight.js/lib/languages/javascript.js")); +hljs.registerLanguage('jboss-cli', __webpack_require__(/*! ./languages/jboss-cli */ "../../node_modules/highlight.js/lib/languages/jboss-cli.js")); +hljs.registerLanguage('json', __webpack_require__(/*! ./languages/json */ "../../node_modules/highlight.js/lib/languages/json.js")); +hljs.registerLanguage('julia', __webpack_require__(/*! ./languages/julia */ "../../node_modules/highlight.js/lib/languages/julia.js")); +hljs.registerLanguage('julia-repl', __webpack_require__(/*! ./languages/julia-repl */ "../../node_modules/highlight.js/lib/languages/julia-repl.js")); +hljs.registerLanguage('kotlin', __webpack_require__(/*! ./languages/kotlin */ "../../node_modules/highlight.js/lib/languages/kotlin.js")); +hljs.registerLanguage('lasso', __webpack_require__(/*! ./languages/lasso */ "../../node_modules/highlight.js/lib/languages/lasso.js")); +hljs.registerLanguage('latex', __webpack_require__(/*! ./languages/latex */ "../../node_modules/highlight.js/lib/languages/latex.js")); +hljs.registerLanguage('ldif', __webpack_require__(/*! ./languages/ldif */ "../../node_modules/highlight.js/lib/languages/ldif.js")); +hljs.registerLanguage('leaf', __webpack_require__(/*! ./languages/leaf */ "../../node_modules/highlight.js/lib/languages/leaf.js")); +hljs.registerLanguage('less', __webpack_require__(/*! ./languages/less */ "../../node_modules/highlight.js/lib/languages/less.js")); +hljs.registerLanguage('lisp', __webpack_require__(/*! ./languages/lisp */ "../../node_modules/highlight.js/lib/languages/lisp.js")); +hljs.registerLanguage('livecodeserver', __webpack_require__(/*! ./languages/livecodeserver */ "../../node_modules/highlight.js/lib/languages/livecodeserver.js")); +hljs.registerLanguage('livescript', __webpack_require__(/*! ./languages/livescript */ "../../node_modules/highlight.js/lib/languages/livescript.js")); +hljs.registerLanguage('llvm', __webpack_require__(/*! ./languages/llvm */ "../../node_modules/highlight.js/lib/languages/llvm.js")); +hljs.registerLanguage('lsl', __webpack_require__(/*! ./languages/lsl */ "../../node_modules/highlight.js/lib/languages/lsl.js")); +hljs.registerLanguage('lua', __webpack_require__(/*! ./languages/lua */ "../../node_modules/highlight.js/lib/languages/lua.js")); +hljs.registerLanguage('makefile', __webpack_require__(/*! ./languages/makefile */ "../../node_modules/highlight.js/lib/languages/makefile.js")); +hljs.registerLanguage('mathematica', __webpack_require__(/*! ./languages/mathematica */ "../../node_modules/highlight.js/lib/languages/mathematica.js")); +hljs.registerLanguage('matlab', __webpack_require__(/*! ./languages/matlab */ "../../node_modules/highlight.js/lib/languages/matlab.js")); +hljs.registerLanguage('maxima', __webpack_require__(/*! ./languages/maxima */ "../../node_modules/highlight.js/lib/languages/maxima.js")); +hljs.registerLanguage('mel', __webpack_require__(/*! ./languages/mel */ "../../node_modules/highlight.js/lib/languages/mel.js")); +hljs.registerLanguage('mercury', __webpack_require__(/*! ./languages/mercury */ "../../node_modules/highlight.js/lib/languages/mercury.js")); +hljs.registerLanguage('mipsasm', __webpack_require__(/*! ./languages/mipsasm */ "../../node_modules/highlight.js/lib/languages/mipsasm.js")); +hljs.registerLanguage('mizar', __webpack_require__(/*! ./languages/mizar */ "../../node_modules/highlight.js/lib/languages/mizar.js")); +hljs.registerLanguage('perl', __webpack_require__(/*! ./languages/perl */ "../../node_modules/highlight.js/lib/languages/perl.js")); +hljs.registerLanguage('mojolicious', __webpack_require__(/*! ./languages/mojolicious */ "../../node_modules/highlight.js/lib/languages/mojolicious.js")); +hljs.registerLanguage('monkey', __webpack_require__(/*! ./languages/monkey */ "../../node_modules/highlight.js/lib/languages/monkey.js")); +hljs.registerLanguage('moonscript', __webpack_require__(/*! ./languages/moonscript */ "../../node_modules/highlight.js/lib/languages/moonscript.js")); +hljs.registerLanguage('n1ql', __webpack_require__(/*! ./languages/n1ql */ "../../node_modules/highlight.js/lib/languages/n1ql.js")); +hljs.registerLanguage('nestedtext', __webpack_require__(/*! ./languages/nestedtext */ "../../node_modules/highlight.js/lib/languages/nestedtext.js")); +hljs.registerLanguage('nginx', __webpack_require__(/*! ./languages/nginx */ "../../node_modules/highlight.js/lib/languages/nginx.js")); +hljs.registerLanguage('nim', __webpack_require__(/*! ./languages/nim */ "../../node_modules/highlight.js/lib/languages/nim.js")); +hljs.registerLanguage('nix', __webpack_require__(/*! ./languages/nix */ "../../node_modules/highlight.js/lib/languages/nix.js")); +hljs.registerLanguage('node-repl', __webpack_require__(/*! ./languages/node-repl */ "../../node_modules/highlight.js/lib/languages/node-repl.js")); +hljs.registerLanguage('nsis', __webpack_require__(/*! ./languages/nsis */ "../../node_modules/highlight.js/lib/languages/nsis.js")); +hljs.registerLanguage('objectivec', __webpack_require__(/*! ./languages/objectivec */ "../../node_modules/highlight.js/lib/languages/objectivec.js")); +hljs.registerLanguage('ocaml', __webpack_require__(/*! ./languages/ocaml */ "../../node_modules/highlight.js/lib/languages/ocaml.js")); +hljs.registerLanguage('openscad', __webpack_require__(/*! ./languages/openscad */ "../../node_modules/highlight.js/lib/languages/openscad.js")); +hljs.registerLanguage('oxygene', __webpack_require__(/*! ./languages/oxygene */ "../../node_modules/highlight.js/lib/languages/oxygene.js")); +hljs.registerLanguage('parser3', __webpack_require__(/*! ./languages/parser3 */ "../../node_modules/highlight.js/lib/languages/parser3.js")); +hljs.registerLanguage('pf', __webpack_require__(/*! ./languages/pf */ "../../node_modules/highlight.js/lib/languages/pf.js")); +hljs.registerLanguage('pgsql', __webpack_require__(/*! ./languages/pgsql */ "../../node_modules/highlight.js/lib/languages/pgsql.js")); +hljs.registerLanguage('php', __webpack_require__(/*! ./languages/php */ "../../node_modules/highlight.js/lib/languages/php.js")); +hljs.registerLanguage('php-template', __webpack_require__(/*! ./languages/php-template */ "../../node_modules/highlight.js/lib/languages/php-template.js")); +hljs.registerLanguage('plaintext', __webpack_require__(/*! ./languages/plaintext */ "../../node_modules/highlight.js/lib/languages/plaintext.js")); +hljs.registerLanguage('pony', __webpack_require__(/*! ./languages/pony */ "../../node_modules/highlight.js/lib/languages/pony.js")); +hljs.registerLanguage('powershell', __webpack_require__(/*! ./languages/powershell */ "../../node_modules/highlight.js/lib/languages/powershell.js")); +hljs.registerLanguage('processing', __webpack_require__(/*! ./languages/processing */ "../../node_modules/highlight.js/lib/languages/processing.js")); +hljs.registerLanguage('profile', __webpack_require__(/*! ./languages/profile */ "../../node_modules/highlight.js/lib/languages/profile.js")); +hljs.registerLanguage('prolog', __webpack_require__(/*! ./languages/prolog */ "../../node_modules/highlight.js/lib/languages/prolog.js")); +hljs.registerLanguage('properties', __webpack_require__(/*! ./languages/properties */ "../../node_modules/highlight.js/lib/languages/properties.js")); +hljs.registerLanguage('protobuf', __webpack_require__(/*! ./languages/protobuf */ "../../node_modules/highlight.js/lib/languages/protobuf.js")); +hljs.registerLanguage('puppet', __webpack_require__(/*! ./languages/puppet */ "../../node_modules/highlight.js/lib/languages/puppet.js")); +hljs.registerLanguage('purebasic', __webpack_require__(/*! ./languages/purebasic */ "../../node_modules/highlight.js/lib/languages/purebasic.js")); +hljs.registerLanguage('python', __webpack_require__(/*! ./languages/python */ "../../node_modules/highlight.js/lib/languages/python.js")); +hljs.registerLanguage('python-repl', __webpack_require__(/*! ./languages/python-repl */ "../../node_modules/highlight.js/lib/languages/python-repl.js")); +hljs.registerLanguage('q', __webpack_require__(/*! ./languages/q */ "../../node_modules/highlight.js/lib/languages/q.js")); +hljs.registerLanguage('qml', __webpack_require__(/*! ./languages/qml */ "../../node_modules/highlight.js/lib/languages/qml.js")); +hljs.registerLanguage('r', __webpack_require__(/*! ./languages/r */ "../../node_modules/highlight.js/lib/languages/r.js")); +hljs.registerLanguage('reasonml', __webpack_require__(/*! ./languages/reasonml */ "../../node_modules/highlight.js/lib/languages/reasonml.js")); +hljs.registerLanguage('rib', __webpack_require__(/*! ./languages/rib */ "../../node_modules/highlight.js/lib/languages/rib.js")); +hljs.registerLanguage('roboconf', __webpack_require__(/*! ./languages/roboconf */ "../../node_modules/highlight.js/lib/languages/roboconf.js")); +hljs.registerLanguage('routeros', __webpack_require__(/*! ./languages/routeros */ "../../node_modules/highlight.js/lib/languages/routeros.js")); +hljs.registerLanguage('rsl', __webpack_require__(/*! ./languages/rsl */ "../../node_modules/highlight.js/lib/languages/rsl.js")); +hljs.registerLanguage('ruleslanguage', __webpack_require__(/*! ./languages/ruleslanguage */ "../../node_modules/highlight.js/lib/languages/ruleslanguage.js")); +hljs.registerLanguage('rust', __webpack_require__(/*! ./languages/rust */ "../../node_modules/highlight.js/lib/languages/rust.js")); +hljs.registerLanguage('sas', __webpack_require__(/*! ./languages/sas */ "../../node_modules/highlight.js/lib/languages/sas.js")); +hljs.registerLanguage('scala', __webpack_require__(/*! ./languages/scala */ "../../node_modules/highlight.js/lib/languages/scala.js")); +hljs.registerLanguage('scheme', __webpack_require__(/*! ./languages/scheme */ "../../node_modules/highlight.js/lib/languages/scheme.js")); +hljs.registerLanguage('scilab', __webpack_require__(/*! ./languages/scilab */ "../../node_modules/highlight.js/lib/languages/scilab.js")); +hljs.registerLanguage('scss', __webpack_require__(/*! ./languages/scss */ "../../node_modules/highlight.js/lib/languages/scss.js")); +hljs.registerLanguage('shell', __webpack_require__(/*! ./languages/shell */ "../../node_modules/highlight.js/lib/languages/shell.js")); +hljs.registerLanguage('smali', __webpack_require__(/*! ./languages/smali */ "../../node_modules/highlight.js/lib/languages/smali.js")); +hljs.registerLanguage('smalltalk', __webpack_require__(/*! ./languages/smalltalk */ "../../node_modules/highlight.js/lib/languages/smalltalk.js")); +hljs.registerLanguage('sml', __webpack_require__(/*! ./languages/sml */ "../../node_modules/highlight.js/lib/languages/sml.js")); +hljs.registerLanguage('sqf', __webpack_require__(/*! ./languages/sqf */ "../../node_modules/highlight.js/lib/languages/sqf.js")); +hljs.registerLanguage('sql', __webpack_require__(/*! ./languages/sql */ "../../node_modules/highlight.js/lib/languages/sql.js")); +hljs.registerLanguage('stan', __webpack_require__(/*! ./languages/stan */ "../../node_modules/highlight.js/lib/languages/stan.js")); +hljs.registerLanguage('stata', __webpack_require__(/*! ./languages/stata */ "../../node_modules/highlight.js/lib/languages/stata.js")); +hljs.registerLanguage('step21', __webpack_require__(/*! ./languages/step21 */ "../../node_modules/highlight.js/lib/languages/step21.js")); +hljs.registerLanguage('stylus', __webpack_require__(/*! ./languages/stylus */ "../../node_modules/highlight.js/lib/languages/stylus.js")); +hljs.registerLanguage('subunit', __webpack_require__(/*! ./languages/subunit */ "../../node_modules/highlight.js/lib/languages/subunit.js")); +hljs.registerLanguage('swift', __webpack_require__(/*! ./languages/swift */ "../../node_modules/highlight.js/lib/languages/swift.js")); +hljs.registerLanguage('taggerscript', __webpack_require__(/*! ./languages/taggerscript */ "../../node_modules/highlight.js/lib/languages/taggerscript.js")); +hljs.registerLanguage('yaml', __webpack_require__(/*! ./languages/yaml */ "../../node_modules/highlight.js/lib/languages/yaml.js")); +hljs.registerLanguage('tap', __webpack_require__(/*! ./languages/tap */ "../../node_modules/highlight.js/lib/languages/tap.js")); +hljs.registerLanguage('tcl', __webpack_require__(/*! ./languages/tcl */ "../../node_modules/highlight.js/lib/languages/tcl.js")); +hljs.registerLanguage('thrift', __webpack_require__(/*! ./languages/thrift */ "../../node_modules/highlight.js/lib/languages/thrift.js")); +hljs.registerLanguage('tp', __webpack_require__(/*! ./languages/tp */ "../../node_modules/highlight.js/lib/languages/tp.js")); +hljs.registerLanguage('twig', __webpack_require__(/*! ./languages/twig */ "../../node_modules/highlight.js/lib/languages/twig.js")); +hljs.registerLanguage('typescript', __webpack_require__(/*! ./languages/typescript */ "../../node_modules/highlight.js/lib/languages/typescript.js")); +hljs.registerLanguage('vala', __webpack_require__(/*! ./languages/vala */ "../../node_modules/highlight.js/lib/languages/vala.js")); +hljs.registerLanguage('vbnet', __webpack_require__(/*! ./languages/vbnet */ "../../node_modules/highlight.js/lib/languages/vbnet.js")); +hljs.registerLanguage('vbscript', __webpack_require__(/*! ./languages/vbscript */ "../../node_modules/highlight.js/lib/languages/vbscript.js")); +hljs.registerLanguage('vbscript-html', __webpack_require__(/*! ./languages/vbscript-html */ "../../node_modules/highlight.js/lib/languages/vbscript-html.js")); +hljs.registerLanguage('verilog', __webpack_require__(/*! ./languages/verilog */ "../../node_modules/highlight.js/lib/languages/verilog.js")); +hljs.registerLanguage('vhdl', __webpack_require__(/*! ./languages/vhdl */ "../../node_modules/highlight.js/lib/languages/vhdl.js")); +hljs.registerLanguage('vim', __webpack_require__(/*! ./languages/vim */ "../../node_modules/highlight.js/lib/languages/vim.js")); +hljs.registerLanguage('wasm', __webpack_require__(/*! ./languages/wasm */ "../../node_modules/highlight.js/lib/languages/wasm.js")); +hljs.registerLanguage('wren', __webpack_require__(/*! ./languages/wren */ "../../node_modules/highlight.js/lib/languages/wren.js")); +hljs.registerLanguage('x86asm', __webpack_require__(/*! ./languages/x86asm */ "../../node_modules/highlight.js/lib/languages/x86asm.js")); +hljs.registerLanguage('xl', __webpack_require__(/*! ./languages/xl */ "../../node_modules/highlight.js/lib/languages/xl.js")); +hljs.registerLanguage('xquery', __webpack_require__(/*! ./languages/xquery */ "../../node_modules/highlight.js/lib/languages/xquery.js")); +hljs.registerLanguage('zephir', __webpack_require__(/*! ./languages/zephir */ "../../node_modules/highlight.js/lib/languages/zephir.js")); + +hljs.HighlightJS = hljs +hljs.default = hljs +module.exports = hljs; + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/1c.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/1c.js ***! + \***********************************************************/ +(module) { + +/* +Language: 1C:Enterprise +Author: Stanislav Belov +Description: built-in language 1C:Enterprise (v7, v8) +Category: enterprise +*/ + +function _1c(hljs) { + // общий паттерн для определения идентификаторов + const UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+'; + + // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword + const v7_keywords = + 'далее '; + + // v8 ключевые слова ==> keyword + const v8_keywords = + 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' + + 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт '; + + // keyword : ключевые слова + const KEYWORD = v7_keywords + v8_keywords; + + // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword + const v7_meta_keywords = + 'загрузитьизфайла '; + + // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword + const v8_meta_keywords = + 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' + + 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' + + 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент '; + + // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях + const METAKEYWORD = v7_meta_keywords + v8_meta_keywords; + + // v7 системные константы ==> built_in + const v7_system_constants = + 'разделительстраниц разделительстрок символтабуляции '; + + // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in + const v7_global_context_methods = + 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' + + 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' + + 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' + + 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' + + 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' + + 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' + + 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' + + 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' + + 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' + + 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' + + 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон '; + + // v8 методы глобального контекста ==> built_in + const v8_global_context_methods = + 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' + + 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' + + 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' + + 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' + + 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' + + 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' + + 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' + + 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' + + 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' + + 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' + + 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' + + 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' + + 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' + + 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' + + 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' + + 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' + + 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' + + 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' + + 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' + + 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' + + 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' + + 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' + + 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' + + 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' + + 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' + + 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' + + 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' + + 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' + + 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' + + 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' + + 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' + + 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' + + 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' + + 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' + + 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' + + 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' + + 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' + + 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' + + 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' + + 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' + + 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' + + 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' + + 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' + + 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' + + 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' + + 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' + + 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' + + 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' + + 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' + + 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' + + 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' + + 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' + + 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' + + 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' + + 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' + + 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' + + 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений ' + + 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' + + 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' + + 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' + + 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' + + 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' + + 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' + + 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' + + 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' + + 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' + + 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' + + 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' + + 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' + + 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' + + 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' + + 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища '; + + // v8 свойства глобального контекста ==> built_in + const v8_global_context_property = + 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' + + 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' + + 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' + + 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' + + 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' + + 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' + + 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' + + 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' + + 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' + + 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' + + 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек '; + + // built_in : встроенные или библиотечные объекты (константы, классы, функции) + const BUILTIN = + v7_system_constants + + v7_global_context_methods + v8_global_context_methods + + v8_global_context_property; + + // v8 системные наборы значений ==> class + const v8_system_sets_of_values = + 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля '; + + // v8 системные перечисления - интерфейсные ==> class + const v8_system_enums_interface = + 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' + + 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' + + 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' + + 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' + + 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' + + 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' + + 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' + + 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' + + 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' + + 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' + + 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' + + 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' + + 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' + + 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' + + 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' + + 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' + + 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' + + 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' + + 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' + + 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' + + 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' + + 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' + + 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' + + 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' + + 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' + + 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' + + 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' + + 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' + + 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' + + 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' + + 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' + + 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' + + 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' + + 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' + + 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' + + 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' + + 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' + + 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' + + 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' + + 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' + + 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' + + 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' + + 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' + + 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' + + 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' + + 'форматкартинки ширинаподчиненныхэлементовформы '; + + // v8 системные перечисления - свойства прикладных объектов ==> class + const v8_system_enums_objects_properties = + 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' + + 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' + + 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента '; + + // v8 системные перечисления - планы обмена ==> class + const v8_system_enums_exchange_plans = + 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных '; + + // v8 системные перечисления - табличный документ ==> class + const v8_system_enums_tabular_document = + 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' + + 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' + + 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' + + 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' + + 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' + + 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' + + 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц '; + + // v8 системные перечисления - планировщик ==> class + const v8_system_enums_sheduler = + 'отображениевремениэлементовпланировщика '; + + // v8 системные перечисления - форматированный документ ==> class + const v8_system_enums_formatted_document = + 'типфайлаформатированногодокумента '; + + // v8 системные перечисления - запрос ==> class + const v8_system_enums_query = + 'обходрезультатазапроса типзаписизапроса '; + + // v8 системные перечисления - построитель отчета ==> class + const v8_system_enums_report_builder = + 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов '; + + // v8 системные перечисления - работа с файлами ==> class + const v8_system_enums_files = + 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла '; + + // v8 системные перечисления - построитель запроса ==> class + const v8_system_enums_query_builder = + 'типизмеренияпостроителязапроса '; + + // v8 системные перечисления - анализ данных ==> class + const v8_system_enums_data_analysis = + 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' + + 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' + + 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' + + 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' + + 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' + + 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений '; + + // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class + const v8_system_enums_xml_json_xs_dom_xdto_ws = + 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' + + 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' + + 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' + + 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' + + 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' + + 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' + + 'форматдатыjson экранированиесимволовjson '; + + // v8 системные перечисления - система компоновки данных ==> class + const v8_system_enums_data_composition_system = + 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' + + 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' + + 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' + + 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' + + 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' + + 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' + + 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' + + 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' + + 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' + + 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных ' + + 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' + + 'использованиеусловногооформлениякомпоновкиданных '; + + // v8 системные перечисления - почта ==> class + const v8_system_enums_email = + 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' + + 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' + + 'статусразборапочтовогосообщения '; + + // v8 системные перечисления - журнал регистрации ==> class + const v8_system_enums_logbook = + 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации '; + + // v8 системные перечисления - криптография ==> class + const v8_system_enums_cryptography = + 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' + + 'типхранилищасертификатовкриптографии '; + + // v8 системные перечисления - ZIP ==> class + const v8_system_enums_zip = + 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' + + 'режимсохраненияпутейzip уровеньсжатияzip '; + + // v8 системные перечисления - + // Блокировка данных, Фоновые задания, Автоматизированное тестирование, + // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class + const v8_system_enums_other = + 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' + + 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp '; + + // v8 системные перечисления - схема запроса ==> class + const v8_system_enums_request_schema = + 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' + + 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса '; + + // v8 системные перечисления - свойства объектов метаданных ==> class + const v8_system_enums_properties_of_metadata_objects = + 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' + + 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' + + 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' + + 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' + + 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' + + 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' + + 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' + + 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' + + 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' + + 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита ' + + 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' + + 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' + + 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' + + 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' + + 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' + + 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' + + 'типномерадокумента типномеразадачи типформы удалениедвижений '; + + // v8 системные перечисления - разные ==> class + const v8_system_enums_differents = + 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' + + 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' + + 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' + + 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' + + 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' + + 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' + + 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' + + 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' + + 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты'; + + // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование) + const CLASS = + v8_system_sets_of_values + + v8_system_enums_interface + + v8_system_enums_objects_properties + + v8_system_enums_exchange_plans + + v8_system_enums_tabular_document + + v8_system_enums_sheduler + + v8_system_enums_formatted_document + + v8_system_enums_query + + v8_system_enums_report_builder + + v8_system_enums_files + + v8_system_enums_query_builder + + v8_system_enums_data_analysis + + v8_system_enums_xml_json_xs_dom_xdto_ws + + v8_system_enums_data_composition_system + + v8_system_enums_email + + v8_system_enums_logbook + + v8_system_enums_cryptography + + v8_system_enums_zip + + v8_system_enums_other + + v8_system_enums_request_schema + + v8_system_enums_properties_of_metadata_objects + + v8_system_enums_differents; + + // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type + const v8_shared_object = + 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' + + 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' + + 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' + + 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' + + 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' + + 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' + + 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' + + 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' + + 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' + + 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' + + 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' + + 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' + + 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' + + 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' + + 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' + + 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' + + 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' + + 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' + + 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' + + 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' + + 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' + + 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' + + 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' + + 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' + + 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' + + 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' + + 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' + + 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' + + 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' + + 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' + + 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' + + 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' + + 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' + + 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' + + 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных '; + + // v8 универсальные коллекции значений ==> type + const v8_universal_collection = + 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' + + 'фиксированноесоответствие фиксированныймассив '; + + // type : встроенные типы + const TYPE = + v8_shared_object + + v8_universal_collection; + + // literal : примитивные типы + const LITERAL = 'null истина ложь неопределено'; + + // number : числа + const NUMBERS = hljs.inherit(hljs.NUMBER_MODE); + + // string : строки + const STRINGS = { + className: 'string', + begin: '"|\\|', + end: '"|$', + contains: [ { begin: '""' } ] + }; + + // number : даты + const DATE = { + begin: "'", + end: "'", + excludeBegin: true, + excludeEnd: true, + contains: [ + { + className: 'number', + begin: '\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}' + } + ] + }; + + const PUNCTUATION = { + match: /[;()+\-:=,]/, + className: "punctuation", + relevance: 0 + }; + + // comment : комментарии + const COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE); + + // meta : инструкции препроцессора, директивы компиляции + const META = { + className: 'meta', + + begin: '#|&', + end: '$', + keywords: { + $pattern: UNDERSCORE_IDENT_RE, + keyword: KEYWORD + METAKEYWORD + }, + contains: [ COMMENTS ] + }; + + // symbol : метка goto + const SYMBOL = { + className: 'symbol', + begin: '~', + end: ';|:', + excludeEnd: true + }; + + // function : объявление процедур и функций + const FUNCTION = { + className: 'function', + variants: [ + { + begin: 'процедура|функция', + end: '\\)', + keywords: 'процедура функция' + }, + { + begin: 'конецпроцедуры|конецфункции', + keywords: 'конецпроцедуры конецфункции' + } + ], + contains: [ + { + begin: '\\(', + end: '\\)', + endsParent: true, + contains: [ + { + className: 'params', + begin: UNDERSCORE_IDENT_RE, + end: ',', + excludeEnd: true, + endsWithParent: true, + keywords: { + $pattern: UNDERSCORE_IDENT_RE, + keyword: 'знач', + literal: LITERAL + }, + contains: [ + NUMBERS, + STRINGS, + DATE + ] + }, + COMMENTS + ] + }, + hljs.inherit(hljs.TITLE_MODE, { begin: UNDERSCORE_IDENT_RE }) + ] + }; + + return { + name: '1C:Enterprise', + case_insensitive: true, + keywords: { + $pattern: UNDERSCORE_IDENT_RE, + keyword: KEYWORD, + built_in: BUILTIN, + class: CLASS, + type: TYPE, + literal: LITERAL + }, + contains: [ + META, + FUNCTION, + COMMENTS, + SYMBOL, + NUMBERS, + STRINGS, + DATE, + PUNCTUATION + ] + }; +} + +module.exports = _1c; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/abnf.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/abnf.js ***! + \*************************************************************/ +(module) { + +/* +Language: Augmented Backus-Naur Form +Author: Alex McKibben +Website: https://tools.ietf.org/html/rfc5234 +Category: syntax +Audit: 2020 +*/ + +/** @type LanguageFn */ +function abnf(hljs) { + const regex = hljs.regex; + const IDENT = /^[a-zA-Z][a-zA-Z0-9-]*/; + + const KEYWORDS = [ + "ALPHA", + "BIT", + "CHAR", + "CR", + "CRLF", + "CTL", + "DIGIT", + "DQUOTE", + "HEXDIG", + "HTAB", + "LF", + "LWSP", + "OCTET", + "SP", + "VCHAR", + "WSP" + ]; + + const COMMENT = hljs.COMMENT(/;/, /$/); + + const TERMINAL_BINARY = { + scope: "symbol", + match: /%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/ + }; + + const TERMINAL_DECIMAL = { + scope: "symbol", + match: /%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/ + }; + + const TERMINAL_HEXADECIMAL = { + scope: "symbol", + match: /%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/ + }; + + const CASE_SENSITIVITY = { + scope: "symbol", + match: /%[si](?=".*")/ + }; + + const RULE_DECLARATION = { + scope: "attribute", + match: regex.concat(IDENT, /(?=\s*=)/) + }; + + const ASSIGNMENT = { + scope: "operator", + match: /=\/?/ + }; + + return { + name: 'Augmented Backus-Naur Form', + illegal: /[!@#$^&',?+~`|:]/, + keywords: KEYWORDS, + contains: [ + ASSIGNMENT, + RULE_DECLARATION, + COMMENT, + TERMINAL_BINARY, + TERMINAL_DECIMAL, + TERMINAL_HEXADECIMAL, + CASE_SENSITIVITY, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE + ] + }; +} + +module.exports = abnf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/accesslog.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/accesslog.js ***! + \******************************************************************/ +(module) { + +/* + Language: Apache Access Log + Author: Oleg Efimov + Description: Apache/Nginx Access Logs + Website: https://httpd.apache.org/docs/2.4/logs.html#accesslog + Category: web, logs + Audit: 2020 + */ + +/** @type LanguageFn */ +function accesslog(hljs) { + const regex = hljs.regex; + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods + const HTTP_VERBS = [ + "GET", + "POST", + "HEAD", + "PUT", + "DELETE", + "CONNECT", + "OPTIONS", + "PATCH", + "TRACE" + ]; + return { + name: 'Apache Access Log', + contains: [ + // IP + { + className: 'number', + begin: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/, + relevance: 5 + }, + // Other numbers + { + className: 'number', + begin: /\b\d+\b/, + relevance: 0 + }, + // Requests + { + className: 'string', + begin: regex.concat(/"/, regex.either(...HTTP_VERBS)), + end: /"/, + keywords: HTTP_VERBS, + illegal: /\n/, + relevance: 5, + contains: [ + { + begin: /HTTP\/[12]\.\d'/, + relevance: 5 + } + ] + }, + // Dates + { + className: 'string', + // dates must have a certain length, this prevents matching + // simple array accesses a[123] and [] and other common patterns + // found in other languages + begin: /\[\d[^\]\n]{8,}\]/, + illegal: /\n/, + relevance: 1 + }, + { + className: 'string', + begin: /\[/, + end: /\]/, + illegal: /\n/, + relevance: 0 + }, + // User agent / relevance boost + { + className: 'string', + begin: /"Mozilla\/\d\.\d \(/, + end: /"/, + illegal: /\n/, + relevance: 3 + }, + // Strings + { + className: 'string', + begin: /"/, + end: /"/, + illegal: /\n/, + relevance: 0 + } + ] + }; +} + +module.exports = accesslog; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/actionscript.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/actionscript.js ***! + \*********************************************************************/ +(module) { + +/* +Language: ActionScript +Author: Alexander Myadzel +Category: scripting +Audit: 2020 +*/ + +/** @type LanguageFn */ +function actionscript(hljs) { + const regex = hljs.regex; + const IDENT_RE = /[a-zA-Z_$][a-zA-Z0-9_$]*/; + const PKG_NAME_RE = regex.concat( + IDENT_RE, + regex.concat("(\\.", IDENT_RE, ")*") + ); + const IDENT_FUNC_RETURN_TYPE_RE = /([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/; + + const AS3_REST_ARG_MODE = { + className: 'rest_arg', + begin: /[.]{3}/, + end: IDENT_RE, + relevance: 10 + }; + + const KEYWORDS = [ + "as", + "break", + "case", + "catch", + "class", + "const", + "continue", + "default", + "delete", + "do", + "dynamic", + "each", + "else", + "extends", + "final", + "finally", + "for", + "function", + "get", + "if", + "implements", + "import", + "in", + "include", + "instanceof", + "interface", + "internal", + "is", + "namespace", + "native", + "new", + "override", + "package", + "private", + "protected", + "public", + "return", + "set", + "static", + "super", + "switch", + "this", + "throw", + "try", + "typeof", + "use", + "var", + "void", + "while", + "with" + ]; + const LITERALS = [ + "true", + "false", + "null", + "undefined" + ]; + + return { + name: 'ActionScript', + aliases: [ 'as' ], + keywords: { + keyword: KEYWORDS, + literal: LITERALS + }, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_NUMBER_MODE, + { + match: [ + /\bpackage/, + /\s+/, + PKG_NAME_RE + ], + className: { + 1: "keyword", + 3: "title.class" + } + }, + { + match: [ + /\b(?:class|interface|extends|implements)/, + /\s+/, + IDENT_RE + ], + className: { + 1: "keyword", + 3: "title.class" + } + }, + { + className: 'meta', + beginKeywords: 'import include', + end: /;/, + keywords: { keyword: 'import include' } + }, + { + beginKeywords: 'function', + end: /[{;]/, + excludeEnd: true, + illegal: /\S/, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { className: "title.function" }), + { + className: 'params', + begin: /\(/, + end: /\)/, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AS3_REST_ARG_MODE + ] + }, + { begin: regex.concat(/:\s*/, IDENT_FUNC_RETURN_TYPE_RE) } + ] + }, + hljs.METHOD_GUARD + ], + illegal: /#/ + }; +} + +module.exports = actionscript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ada.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ada.js ***! + \************************************************************/ +(module) { + +/* +Language: Ada +Author: Lars Schulna +Description: Ada is a general-purpose programming language that has great support for saftey critical and real-time applications. + It has been developed by the DoD and thus has been used in military and safety-critical applications (like civil aviation). + The first version appeared in the 80s, but it's still actively developed today with + the newest standard being Ada2012. +*/ + +// We try to support full Ada2012 +// +// We highlight all appearances of types, keywords, literals (string, char, number, bool) +// and titles (user defined function/procedure/package) +// CSS classes are set accordingly +// +// Languages causing problems for language detection: +// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword) +// sql (ada default.txt has a lot of sql keywords) + +/** @type LanguageFn */ +function ada(hljs) { + // Regular expression for Ada numeric literals. + // stolen form the VHDL highlighter + + // Decimal literal: + const INTEGER_RE = '\\d(_|\\d)*'; + const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE; + const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?'; + + // Based literal: + const BASED_INTEGER_RE = '\\w+'; + const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?'; + + const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')'; + + // Identifier regex + const ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*'; + + // bad chars, only allowed in literals + const BAD_CHARS = `[]\\{\\}%#'"`; + + // Ada doesn't have block comments, only line comments + const COMMENTS = hljs.COMMENT('--', '$'); + + // variable declarations of the form + // Foo : Bar := Baz; + // where only Bar will be highlighted + const VAR_DECLS = { + // TODO: These spaces are not required by the Ada syntax + // however, I have yet to see handwritten Ada code where + // someone does not put spaces around : + begin: '\\s+:\\s+', + end: '\\s*(:=|;|\\)|=>|$)', + // endsWithParent: true, + // returnBegin: true, + illegal: BAD_CHARS, + contains: [ + { + // workaround to avoid highlighting + // named loops and declare blocks + beginKeywords: 'loop for declare others', + endsParent: true + }, + { + // properly highlight all modifiers + className: 'keyword', + beginKeywords: 'not null constant access function procedure in out aliased exception' + }, + { + className: 'type', + begin: ID_REGEX, + endsParent: true, + relevance: 0 + } + ] + }; + + const KEYWORDS = [ + "abort", + "else", + "new", + "return", + "abs", + "elsif", + "not", + "reverse", + "abstract", + "end", + "accept", + "entry", + "select", + "access", + "exception", + "of", + "separate", + "aliased", + "exit", + "or", + "some", + "all", + "others", + "subtype", + "and", + "for", + "out", + "synchronized", + "array", + "function", + "overriding", + "at", + "tagged", + "generic", + "package", + "task", + "begin", + "goto", + "pragma", + "terminate", + "body", + "private", + "then", + "if", + "procedure", + "type", + "case", + "in", + "protected", + "constant", + "interface", + "is", + "raise", + "use", + "declare", + "range", + "delay", + "limited", + "record", + "when", + "delta", + "loop", + "rem", + "while", + "digits", + "renames", + "with", + "do", + "mod", + "requeue", + "xor" + ]; + + return { + name: 'Ada', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + literal: [ + "True", + "False" + ] + }, + contains: [ + COMMENTS, + // strings "foobar" + { + className: 'string', + begin: /"/, + end: /"/, + contains: [ + { + begin: /""/, + relevance: 0 + } + ] + }, + // characters '' + { + // character literals always contain one char + className: 'string', + begin: /'.'/ + }, + { + // number literals + className: 'number', + begin: NUMBER_RE, + relevance: 0 + }, + { + // Attributes + className: 'symbol', + begin: "'" + ID_REGEX + }, + { + // package definition, maybe inside generic + className: 'title', + begin: '(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?', + end: '(is|$)', + keywords: 'package body', + excludeBegin: true, + excludeEnd: true, + illegal: BAD_CHARS + }, + { + // function/procedure declaration/definition + // maybe inside generic + begin: '(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+', + end: '(\\bis|\\bwith|\\brenames|\\)\\s*;)', + keywords: 'overriding function procedure with is renames return', + // we need to re-match the 'function' keyword, so that + // the title mode below matches only exactly once + returnBegin: true, + contains: + [ + COMMENTS, + { + // name of the function/procedure + className: 'title', + begin: '(\\bwith\\s+)?\\b(function|procedure)\\s+', + end: '(\\(|\\s+|$)', + excludeBegin: true, + excludeEnd: true, + illegal: BAD_CHARS + }, + // 'self' + // // parameter types + VAR_DECLS, + { + // return type + className: 'type', + begin: '\\breturn\\s+', + end: '(\\s+|;|$)', + keywords: 'return', + excludeBegin: true, + excludeEnd: true, + // we are done with functions + endsParent: true, + illegal: BAD_CHARS + + } + ] + }, + { + // new type declarations + // maybe inside generic + className: 'type', + begin: '\\b(sub)?type\\s+', + end: '\\s+', + keywords: 'type', + excludeBegin: true, + illegal: BAD_CHARS + }, + + // see comment above the definition + VAR_DECLS + + // no markup + // relevance boosters for small snippets + // {begin: '\\s*=>\\s*'}, + // {begin: '\\s*:=\\s*'}, + // {begin: '\\s+:=\\s+'}, + ] + }; +} + +module.exports = ada; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/angelscript.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/angelscript.js ***! + \********************************************************************/ +(module) { + +/* +Language: AngelScript +Author: Melissa Geels +Category: scripting +Website: https://www.angelcode.com/angelscript/ +*/ + +/** @type LanguageFn */ +function angelscript(hljs) { + const builtInTypeMode = { + className: 'built_in', + begin: '\\b(void|bool|int8|int16|int32|int64|int|uint8|uint16|uint32|uint64|uint|string|ref|array|double|float|auto|dictionary)' + }; + + const objectHandleMode = { + className: 'symbol', + begin: '[a-zA-Z0-9_]+@' + }; + + const genericMode = { + className: 'keyword', + begin: '<', + end: '>', + contains: [ + builtInTypeMode, + objectHandleMode + ] + }; + + builtInTypeMode.contains = [ genericMode ]; + objectHandleMode.contains = [ genericMode ]; + + const KEYWORDS = [ + "for", + "in|0", + "break", + "continue", + "while", + "do|0", + "return", + "if", + "else", + "case", + "switch", + "namespace", + "is", + "cast", + "or", + "and", + "xor", + "not", + "get|0", + "in", + "inout|10", + "out", + "override", + "set|0", + "private", + "public", + "const", + "default|0", + "final", + "shared", + "external", + "mixin|10", + "enum", + "typedef", + "funcdef", + "this", + "super", + "import", + "from", + "interface", + "abstract|0", + "try", + "catch", + "protected", + "explicit", + "property" + ]; + + return { + name: 'AngelScript', + aliases: [ 'asc' ], + + keywords: KEYWORDS, + + // avoid close detection with C# and JS + illegal: '(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])', + + contains: [ + { // 'strings' + className: 'string', + begin: '\'', + end: '\'', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ], + relevance: 0 + }, + + // """heredoc strings""" + { + className: 'string', + begin: '"""', + end: '"""' + }, + + { // "strings" + className: 'string', + begin: '"', + end: '"', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ], + relevance: 0 + }, + + hljs.C_LINE_COMMENT_MODE, // single-line comments + hljs.C_BLOCK_COMMENT_MODE, // comment blocks + + { // metadata + className: 'string', + begin: '^\\s*\\[', + end: '\\]' + }, + + { // interface or namespace declaration + beginKeywords: 'interface namespace', + end: /\{/, + illegal: '[;.\\-]', + contains: [ + { // interface or namespace name + className: 'symbol', + begin: '[a-zA-Z0-9_]+' + } + ] + }, + + { // class declaration + beginKeywords: 'class', + end: /\{/, + illegal: '[;.\\-]', + contains: [ + { // class name + className: 'symbol', + begin: '[a-zA-Z0-9_]+', + contains: [ + { + begin: '[:,]\\s*', + contains: [ + { + className: 'symbol', + begin: '[a-zA-Z0-9_]+' + } + ] + } + ] + } + ] + }, + + builtInTypeMode, // built-in types + objectHandleMode, // object handles + + { // literals + className: 'literal', + begin: '\\b(null|true|false)' + }, + + { // numbers + className: 'number', + relevance: 0, + begin: '(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)' + } + ] + }; +} + +module.exports = angelscript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/apache.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/apache.js ***! + \***************************************************************/ +(module) { + +/* +Language: Apache config +Author: Ruslan Keba +Contributors: Ivan Sagalaev +Website: https://httpd.apache.org +Description: language definition for Apache configuration files (httpd.conf & .htaccess) +Category: config, web +Audit: 2020 +*/ + +/** @type LanguageFn */ +function apache(hljs) { + const NUMBER_REF = { + className: 'number', + begin: /[$%]\d+/ + }; + const NUMBER = { + className: 'number', + begin: /\b\d+/ + }; + const IP_ADDRESS = { + className: "number", + begin: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/ + }; + const PORT_NUMBER = { + className: "number", + begin: /:\d{1,5}/ + }; + return { + name: 'Apache config', + aliases: [ 'apacheconf' ], + case_insensitive: true, + contains: [ + hljs.HASH_COMMENT_MODE, + { + className: 'section', + begin: /<\/?/, + end: />/, + contains: [ + IP_ADDRESS, + PORT_NUMBER, + // low relevance prevents us from claming XML/HTML where this rule would + // match strings inside of XML tags + hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 }) + ] + }, + { + className: 'attribute', + begin: /\w+/, + relevance: 0, + // keywords aren’t needed for highlighting per se, they only boost relevance + // for a very generally defined mode (starts with a word, ends with line-end + keywords: { _: [ + "order", + "deny", + "allow", + "setenv", + "rewriterule", + "rewriteengine", + "rewritecond", + "documentroot", + "sethandler", + "errordocument", + "loadmodule", + "options", + "header", + "listen", + "serverroot", + "servername" + ] }, + starts: { + end: /$/, + relevance: 0, + keywords: { literal: 'on off all deny allow' }, + contains: [ + { + scope: "punctuation", + match: /\\\n/ + }, + { + className: 'meta', + begin: /\s\[/, + end: /\]$/ + }, + { + className: 'variable', + begin: /[\$%]\{/, + end: /\}/, + contains: [ + 'self', + NUMBER_REF + ] + }, + IP_ADDRESS, + NUMBER, + hljs.QUOTE_STRING_MODE + ] + } + } + ], + illegal: /\S/ + }; +} + +module.exports = apache; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/applescript.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/applescript.js ***! + \********************************************************************/ +(module) { + +/* +Language: AppleScript +Authors: Nathan Grigg , Dr. Drang +Category: scripting +Website: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html +Audit: 2020 +*/ + +/** @type LanguageFn */ +function applescript(hljs) { + const regex = hljs.regex; + const STRING = hljs.inherit( + hljs.QUOTE_STRING_MODE, { illegal: null }); + const PARAMS = { + className: 'params', + begin: /\(/, + end: /\)/, + contains: [ + 'self', + hljs.C_NUMBER_MODE, + STRING + ] + }; + const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/); + const COMMENT_MODE_2 = hljs.COMMENT( + /\(\*/, + /\*\)/, + { contains: [ + 'self', // allow nesting + COMMENT_MODE_1 + ] } + ); + const COMMENTS = [ + COMMENT_MODE_1, + COMMENT_MODE_2, + hljs.HASH_COMMENT_MODE + ]; + + const KEYWORD_PATTERNS = [ + /apart from/, + /aside from/, + /instead of/, + /out of/, + /greater than/, + /isn't|(doesn't|does not) (equal|come before|come after|contain)/, + /(greater|less) than( or equal)?/, + /(starts?|ends|begins?) with/, + /contained by/, + /comes (before|after)/, + /a (ref|reference)/, + /POSIX (file|path)/, + /(date|time) string/, + /quoted form/ + ]; + + const BUILT_IN_PATTERNS = [ + /clipboard info/, + /the clipboard/, + /info for/, + /list (disks|folder)/, + /mount volume/, + /path to/, + /(close|open for) access/, + /(get|set) eof/, + /current date/, + /do shell script/, + /get volume settings/, + /random number/, + /set volume/, + /system attribute/, + /system info/, + /time to GMT/, + /(load|run|store) script/, + /scripting components/, + /ASCII (character|number)/, + /localized string/, + /choose (application|color|file|file name|folder|from list|remote application|URL)/, + /display (alert|dialog)/ + ]; + + return { + name: 'AppleScript', + aliases: [ 'osascript' ], + keywords: { + keyword: + 'about above after against and around as at back before beginning ' + + 'behind below beneath beside between but by considering ' + + 'contain contains continue copy div does eighth else end equal ' + + 'equals error every exit fifth first for fourth from front ' + + 'get given global if ignoring in into is it its last local me ' + + 'middle mod my ninth not of on onto or over prop property put ref ' + + 'reference repeat returning script second set seventh since ' + + 'sixth some tell tenth that the|0 then third through thru ' + + 'timeout times to transaction try until where while whose with ' + + 'without', + literal: + 'AppleScript false linefeed return pi quote result space tab true', + built_in: + 'alias application boolean class constant date file integer list ' + + 'number real record string text ' + + 'activate beep count delay launch log offset read round ' + + 'run say summarize write ' + + 'character characters contents day frontmost id item length ' + + 'month name|0 paragraph paragraphs rest reverse running time version ' + + 'weekday word words year' + }, + contains: [ + STRING, + hljs.C_NUMBER_MODE, + { + className: 'built_in', + begin: regex.concat( + /\b/, + regex.either(...BUILT_IN_PATTERNS), + /\b/ + ) + }, + { + className: 'built_in', + begin: /^\s*return\b/ + }, + { + className: 'literal', + begin: + /\b(text item delimiters|current application|missing value)\b/ + }, + { + className: 'keyword', + begin: regex.concat( + /\b/, + regex.either(...KEYWORD_PATTERNS), + /\b/ + ) + }, + { + beginKeywords: 'on', + illegal: /[${=;\n]/, + contains: [ + hljs.UNDERSCORE_TITLE_MODE, + PARAMS + ] + }, + ...COMMENTS + ], + illegal: /\/\/|->|=>|\[\[/ + }; +} + +module.exports = applescript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/arcade.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/arcade.js ***! + \***************************************************************/ +(module) { + +/* + Language: ArcGIS Arcade + Category: scripting + Website: https://developers.arcgis.com/arcade/ + Description: ArcGIS Arcade is an expression language used in many Esri ArcGIS products such as Pro, Online, Server, Runtime, JavaScript, and Python +*/ + +/** @type LanguageFn */ +function arcade(hljs) { + const regex = hljs.regex; + const IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*'; + const KEYWORDS = { + keyword: [ + "break", + "case", + "catch", + "continue", + "debugger", + "do", + "else", + "export", + "for", + "function", + "if", + "import", + "in", + "new", + "of", + "return", + "switch", + "try", + "var", + "void", + "while" + ], + literal: [ + "BackSlash", + "DoubleQuote", + "ForwardSlash", + "Infinity", + "NaN", + "NewLine", + "PI", + "SingleQuote", + "Tab", + "TextFormatting", + "false", + "null", + "true", + "undefined" + ], + built_in: [ + "Abs", + "Acos", + "All", + "Angle", + "Any", + "Area", + "AreaGeodetic", + "Array", + "Asin", + "Atan", + "Atan2", + "Attachments", + "Average", + "Back", + "Bearing", + "Boolean", + "Buffer", + "BufferGeodetic", + "Ceil", + "Centroid", + "ChangeTimeZone", + "Clip", + "Concatenate", + "Console", + "Constrain", + "Contains", + "ConvertDirection", + "ConvexHull", + "Cos", + "Count", + "Crosses", + "Cut", + "Date|0", + "DateAdd", + "DateDiff", + "DateOnly", + "Day", + "Decode", + "DefaultValue", + "Densify", + "DensifyGeodetic", + "Dictionary", + "Difference", + "Disjoint", + "Distance", + "DistanceGeodetic", + "DistanceToCoordinate", + "Distinct", + "Domain", + "DomainCode", + "DomainName", + "EnvelopeIntersects", + "Equals", + "Erase", + "Exp", + "Expects", + "Extent", + "Feature", + "FeatureInFilter", + "FeatureSet", + "FeatureSetByAssociation", + "FeatureSetById", + "FeatureSetByName", + "FeatureSetByPortalItem", + "FeatureSetByRelationshipClass", + "FeatureSetByRelationshipName", + "Filter", + "FilterBySubtypeCode", + "Find", + "First|0", + "Floor", + "FromCharCode", + "FromCodePoint", + "FromJSON", + "Front", + "GdbVersion", + "Generalize", + "Geometry", + "GetEnvironment", + "GetFeatureSet", + "GetFeatureSetInfo", + "GetUser", + "GroupBy", + "Guid", + "HasKey", + "HasValue", + "Hash", + "Hour", + "IIf", + "ISOMonth", + "ISOWeek", + "ISOWeekday", + "ISOYear", + "Includes", + "IndexOf", + "Insert", + "Intersection", + "Intersects", + "IsEmpty", + "IsNan", + "IsSelfIntersecting", + "IsSimple", + "KnowledgeGraphByPortalItem", + "Left|0", + "Length", + "Length3D", + "LengthGeodetic", + "Log", + "Lower", + "Map", + "Max", + "Mean", + "MeasureToCoordinate", + "Mid", + "Millisecond", + "Min", + "Minute", + "Month", + "MultiPartToSinglePart", + "Multipoint", + "NearestCoordinate", + "NearestVertex", + "NextSequenceValue", + "None", + "Now", + "Number", + "Offset", + "OrderBy", + "Overlaps", + "Point", + "PointToCoordinate", + "Polygon", + "Polyline", + "Pop", + "Portal", + "Pow", + "Proper", + "Push", + "QueryGraph", + "Random", + "Reduce", + "Relate", + "Replace", + "Resize", + "Reverse", + "Right|0", + "RingIsClockwise", + "Rotate", + "Round", + "Schema", + "Second", + "SetGeometry", + "Simplify", + "Sin", + "Slice", + "Sort", + "Splice", + "Split", + "Sqrt", + "StandardizeFilename", + "StandardizeGuid", + "Stdev", + "SubtypeCode", + "SubtypeName", + "Subtypes", + "Sum", + "SymmetricDifference", + "Tan", + "Text", + "Time", + "TimeZone", + "TimeZoneOffset", + "Timestamp", + "ToCharCode", + "ToCodePoint", + "ToHex", + "ToLocal", + "ToUTC", + "Today", + "Top|0", + "Touches", + "TrackAccelerationAt", + "TrackAccelerationWindow", + "TrackCurrentAcceleration", + "TrackCurrentDistance", + "TrackCurrentSpeed", + "TrackCurrentTime", + "TrackDistanceAt", + "TrackDistanceWindow", + "TrackDuration", + "TrackFieldWindow", + "TrackGeometryWindow", + "TrackIndex", + "TrackSpeedAt", + "TrackSpeedWindow", + "TrackStartTime", + "TrackWindow", + "Trim", + "TypeOf", + "Union", + "Upper", + "UrlEncode", + "Variance", + "Week", + "Weekday", + "When|0", + "Within", + "Year|0", + ] + }; + const PROFILE_VARS = [ + "aggregatedFeatures", + "analytic", + "config", + "datapoint", + "datastore", + "editcontext", + "feature", + "featureSet", + "feedfeature", + "fencefeature", + "fencenotificationtype", + "graph", + "join", + "layer", + "locationupdate", + "map", + "measure", + "measure", + "originalFeature", + "record", + "reference", + "rowindex", + "sourcedatastore", + "sourcefeature", + "sourcelayer", + "target", + "targetdatastore", + "targetfeature", + "targetlayer", + "userInput", + "value", + "variables", + "view" + ]; + const SYMBOL = { + className: 'symbol', + begin: '\\$' + regex.either(...PROFILE_VARS) + }; + const NUMBER = { + className: 'number', + variants: [ + { begin: '\\b(0[bB][01]+)' }, + { begin: '\\b(0[oO][0-7]+)' }, + { begin: hljs.C_NUMBER_RE } + ], + relevance: 0 + }; + const SUBST = { + className: 'subst', + begin: '\\$\\{', + end: '\\}', + keywords: KEYWORDS, + contains: [] // defined later + }; + const TEMPLATE_STRING = { + className: 'string', + begin: '`', + end: '`', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }; + SUBST.contains = [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + TEMPLATE_STRING, + NUMBER, + hljs.REGEXP_MODE + ]; + const PARAMS_CONTAINS = SUBST.contains.concat([ + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_LINE_COMMENT_MODE + ]); + + return { + name: 'ArcGIS Arcade', + case_insensitive: true, + keywords: KEYWORDS, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + TEMPLATE_STRING, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + SYMBOL, + NUMBER, + { // object attr container + begin: /[{,]\s*/, + relevance: 0, + contains: [ + { + begin: IDENT_RE + '\\s*:', + returnBegin: true, + relevance: 0, + contains: [ + { + className: 'attr', + begin: IDENT_RE, + relevance: 0 + } + ] + } + ] + }, + { // "value" container + begin: '(' + hljs.RE_STARTERS_RE + '|\\b(return)\\b)\\s*', + keywords: 'return', + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.REGEXP_MODE, + { + className: 'function', + begin: '(\\(.*?\\)|' + IDENT_RE + ')\\s*=>', + returnBegin: true, + end: '\\s*=>', + contains: [ + { + className: 'params', + variants: [ + { begin: IDENT_RE }, + { begin: /\(\s*\)/ }, + { + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + contains: PARAMS_CONTAINS + } + ] + } + ] + } + ], + relevance: 0 + }, + { + beginKeywords: 'function', + end: /\{/, + excludeEnd: true, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { + className: "title.function", + begin: IDENT_RE + }), + { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + contains: PARAMS_CONTAINS + } + ], + illegal: /\[|%/ + }, + { begin: /\$[(.]/ } + ], + illegal: /#(?!!)/ + }; +} + +module.exports = arcade; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/arduino.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/arduino.js ***! + \****************************************************************/ +(module) { + +/* +Language: C++ +Category: common, system +Website: https://isocpp.org +*/ + +/** @type LanguageFn */ +function cPlusPlus(hljs) { + const regex = hljs.regex; + // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does + // not include such support nor can we be sure all the grammars depending + // on it would desire this behavior + const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); + const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; + const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; + const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; + const FUNCTION_TYPE_RE = '(?!struct)(' + + DECLTYPE_AUTO_RE + '|' + + regex.optional(NAMESPACE_RE) + + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) + + ')'; + + const CPP_PRIMITIVE_TYPES = { + className: 'type', + begin: '\\b[a-z\\d_]*_t\\b' + }; + + // https://en.cppreference.com/w/cpp/language/escape + // \\ \x \xFF \u2837 \u00323747 \374 + const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; + const STRINGS = { + className: 'string', + variants: [ + { + begin: '(u8?|U|L)?"', + end: '"', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + '|.)', + end: '\'', + illegal: '.' + }, + hljs.END_SAME_AS_BEGIN({ + begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, + end: /\)([^()\\ ]{0,16})"/ + }) + ] + }; + + const NUMBERS = { + className: 'number', + variants: [ + // Floating-point literal. + { begin: + "[+-]?(?:" // Leading sign. + // Decimal. + + "(?:" + +"[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?" + + "|\\.[0-9](?:'?[0-9])*" + + ")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?" + + "|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*" + // Hexadecimal. + + "|0[Xx](?:" + +"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?" + + "|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*" + + ")[Pp][+-]?[0-9](?:'?[0-9])*" + + ")(?:" // Literal suffixes. + + "[Ff](?:16|32|64|128)?" + + "|(BF|bf)16" + + "|[Ll]" + + "|" // Literal suffix is optional. + + ")" + }, + // Integer literal. + { begin: + "[+-]?\\b(?:" // Leading sign. + + "0[Bb][01](?:'?[01])*" // Binary. + + "|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*" // Hexadecimal. + + "|0(?:'?[0-7])*" // Octal or just a lone zero. + + "|[1-9](?:'?[0-9])*" // Decimal. + + ")(?:" // Literal suffixes. + + "[Uu](?:LL?|ll?)" + + "|[Uu][Zz]?" + + "|(?:LL?|ll?)[Uu]?" + + "|[Zz][Uu]" + + "|" // Literal suffix is optional. + + ")" + // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the + // literal highlight actually makes it stand out more. + } + ], + relevance: 0 + }; + + const PREPROCESSOR = { + className: 'meta', + begin: /#\s*[a-z]+\b/, + end: /$/, + keywords: { keyword: + 'if else elif endif define undef warning error line ' + + 'pragma _Pragma ifdef ifndef include' }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + hljs.inherit(STRINGS, { className: 'string' }), + { + className: 'string', + begin: /<.*?>/ + }, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; + + const TITLE_MODE = { + className: 'title', + begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, + relevance: 0 + }; + + const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; + + // https://en.cppreference.com/w/cpp/keyword + const RESERVED_KEYWORDS = [ + 'alignas', + 'alignof', + 'and', + 'and_eq', + 'asm', + 'atomic_cancel', + 'atomic_commit', + 'atomic_noexcept', + 'auto', + 'bitand', + 'bitor', + 'break', + 'case', + 'catch', + 'class', + 'co_await', + 'co_return', + 'co_yield', + 'compl', + 'concept', + 'const_cast|10', + 'consteval', + 'constexpr', + 'constinit', + 'continue', + 'decltype', + 'default', + 'delete', + 'do', + 'dynamic_cast|10', + 'else', + 'enum', + 'explicit', + 'export', + 'extern', + 'false', + 'final', + 'for', + 'friend', + 'goto', + 'if', + 'import', + 'inline', + 'module', + 'mutable', + 'namespace', + 'new', + 'noexcept', + 'not', + 'not_eq', + 'nullptr', + 'operator', + 'or', + 'or_eq', + 'override', + 'private', + 'protected', + 'public', + 'reflexpr', + 'register', + 'reinterpret_cast|10', + 'requires', + 'return', + 'sizeof', + 'static_assert', + 'static_cast|10', + 'struct', + 'switch', + 'synchronized', + 'template', + 'this', + 'thread_local', + 'throw', + 'transaction_safe', + 'transaction_safe_dynamic', + 'true', + 'try', + 'typedef', + 'typeid', + 'typename', + 'union', + 'using', + 'virtual', + 'volatile', + 'while', + 'xor', + 'xor_eq' + ]; + + // https://en.cppreference.com/w/cpp/keyword + const RESERVED_TYPES = [ + 'bool', + 'char', + 'char16_t', + 'char32_t', + 'char8_t', + 'double', + 'float', + 'int', + 'long', + 'short', + 'void', + 'wchar_t', + 'unsigned', + 'signed', + 'const', + 'static' + ]; + + const TYPE_HINTS = [ + 'any', + 'auto_ptr', + 'barrier', + 'binary_semaphore', + 'bitset', + 'complex', + 'condition_variable', + 'condition_variable_any', + 'counting_semaphore', + 'deque', + 'false_type', + 'flat_map', + 'flat_set', + 'future', + 'imaginary', + 'initializer_list', + 'istringstream', + 'jthread', + 'latch', + 'lock_guard', + 'multimap', + 'multiset', + 'mutex', + 'optional', + 'ostringstream', + 'packaged_task', + 'pair', + 'promise', + 'priority_queue', + 'queue', + 'recursive_mutex', + 'recursive_timed_mutex', + 'scoped_lock', + 'set', + 'shared_future', + 'shared_lock', + 'shared_mutex', + 'shared_timed_mutex', + 'shared_ptr', + 'stack', + 'string_view', + 'stringstream', + 'timed_mutex', + 'thread', + 'true_type', + 'tuple', + 'unique_lock', + 'unique_ptr', + 'unordered_map', + 'unordered_multimap', + 'unordered_multiset', + 'unordered_set', + 'variant', + 'vector', + 'weak_ptr', + 'wstring', + 'wstring_view' + ]; + + const FUNCTION_HINTS = [ + 'abort', + 'abs', + 'acos', + 'apply', + 'as_const', + 'asin', + 'atan', + 'atan2', + 'calloc', + 'ceil', + 'cerr', + 'cin', + 'clog', + 'cos', + 'cosh', + 'cout', + 'declval', + 'endl', + 'exchange', + 'exit', + 'exp', + 'fabs', + 'floor', + 'fmod', + 'forward', + 'fprintf', + 'fputs', + 'free', + 'frexp', + 'fscanf', + 'future', + 'invoke', + 'isalnum', + 'isalpha', + 'iscntrl', + 'isdigit', + 'isgraph', + 'islower', + 'isprint', + 'ispunct', + 'isspace', + 'isupper', + 'isxdigit', + 'labs', + 'launder', + 'ldexp', + 'log', + 'log10', + 'make_pair', + 'make_shared', + 'make_shared_for_overwrite', + 'make_tuple', + 'make_unique', + 'malloc', + 'memchr', + 'memcmp', + 'memcpy', + 'memset', + 'modf', + 'move', + 'pow', + 'printf', + 'putchar', + 'puts', + 'realloc', + 'scanf', + 'sin', + 'sinh', + 'snprintf', + 'sprintf', + 'sqrt', + 'sscanf', + 'std', + 'stderr', + 'stdin', + 'stdout', + 'strcat', + 'strchr', + 'strcmp', + 'strcpy', + 'strcspn', + 'strlen', + 'strncat', + 'strncmp', + 'strncpy', + 'strpbrk', + 'strrchr', + 'strspn', + 'strstr', + 'swap', + 'tan', + 'tanh', + 'terminate', + 'to_underlying', + 'tolower', + 'toupper', + 'vfprintf', + 'visit', + 'vprintf', + 'vsprintf' + ]; + + const LITERALS = [ + 'NULL', + 'false', + 'nullopt', + 'nullptr', + 'true' + ]; + + // https://en.cppreference.com/w/cpp/keyword + const BUILT_IN = [ '_Pragma' ]; + + const CPP_KEYWORDS = { + type: RESERVED_TYPES, + keyword: RESERVED_KEYWORDS, + literal: LITERALS, + built_in: BUILT_IN, + _type_hints: TYPE_HINTS + }; + + const FUNCTION_DISPATCH = { + className: 'function.dispatch', + relevance: 0, + keywords: { + // Only for relevance, not highlighting. + _hint: FUNCTION_HINTS }, + begin: regex.concat( + /\b/, + /(?!decltype)/, + /(?!if)/, + /(?!for)/, + /(?!switch)/, + /(?!while)/, + hljs.IDENT_RE, + regex.lookahead(/(<[^<>]+>|)\s*\(/)) + }; + + const EXPRESSION_CONTAINS = [ + FUNCTION_DISPATCH, + PREPROCESSOR, + CPP_PRIMITIVE_TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + NUMBERS, + STRINGS + ]; + + const EXPRESSION_CONTEXT = { + // This mode covers expression context where we can't expect a function + // definition and shouldn't highlight anything that looks like one: + // `return some()`, `else if()`, `(x*sum(1, 2))` + variants: [ + { + begin: /=/, + end: /;/ + }, + { + begin: /\(/, + end: /\)/ + }, + { + beginKeywords: 'new throw return else', + end: /;/ + } + ], + keywords: CPP_KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ + { + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ 'self' ]), + relevance: 0 + } + ]), + relevance: 0 + }; + + const FUNCTION_DECLARATION = { + className: 'function', + begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, + returnBegin: true, + end: /[{;=]/, + excludeEnd: true, + keywords: CPP_KEYWORDS, + illegal: /[^\w\s\*&:<>.]/, + contains: [ + { // to prevent it from being confused as the function title + begin: DECLTYPE_AUTO_RE, + keywords: CPP_KEYWORDS, + relevance: 0 + }, + { + begin: FUNCTION_TITLE, + returnBegin: true, + contains: [ TITLE_MODE ], + relevance: 0 + }, + // needed because we do not have look-behind on the below rule + // to prevent it from grabbing the final : in a :: pair + { + begin: /::/, + relevance: 0 + }, + // initializers + { + begin: /:/, + endsWithParent: true, + contains: [ + STRINGS, + NUMBERS + ] + }, + // allow for multiple declarations, e.g.: + // extern void f(int), g(char); + { + relevance: 0, + match: /,/ + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + relevance: 0, + contains: [ + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + CPP_PRIMITIVE_TYPES, + // Count matching parentheses. + { + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + relevance: 0, + contains: [ + 'self', + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + CPP_PRIMITIVE_TYPES + ] + } + ] + }, + CPP_PRIMITIVE_TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + PREPROCESSOR + ] + }; + + return { + name: 'C++', + aliases: [ + 'cc', + 'c++', + 'h++', + 'hpp', + 'hh', + 'hxx', + 'cxx' + ], + keywords: CPP_KEYWORDS, + illegal: ' rooms (9);` + begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)', + end: '>', + keywords: CPP_KEYWORDS, + contains: [ + 'self', + CPP_PRIMITIVE_TYPES + ] + }, + { + begin: hljs.IDENT_RE + '::', + keywords: CPP_KEYWORDS + }, + { + match: [ + // extra complexity to deal with `enum class` and `enum struct` + /\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, + /\s+/, + /\w+/ + ], + className: { + 1: 'keyword', + 3: 'title.class' + } + } + ]) + }; +} + +/* +Language: Arduino +Author: Stefania Mellai +Description: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc. +Website: https://www.arduino.cc +Category: system +*/ + + +/** @type LanguageFn */ +function arduino(hljs) { + const ARDUINO_KW = { + type: [ + "boolean", + "byte", + "word", + "String" + ], + built_in: [ + "KeyboardController", + "MouseController", + "SoftwareSerial", + "EthernetServer", + "EthernetClient", + "LiquidCrystal", + "RobotControl", + "GSMVoiceCall", + "EthernetUDP", + "EsploraTFT", + "HttpClient", + "RobotMotor", + "WiFiClient", + "GSMScanner", + "FileSystem", + "Scheduler", + "GSMServer", + "YunClient", + "YunServer", + "IPAddress", + "GSMClient", + "GSMModem", + "Keyboard", + "Ethernet", + "Console", + "GSMBand", + "Esplora", + "Stepper", + "Process", + "WiFiUDP", + "GSM_SMS", + "Mailbox", + "USBHost", + "Firmata", + "PImage", + "Client", + "Server", + "GSMPIN", + "FileIO", + "Bridge", + "Serial", + "EEPROM", + "Stream", + "Mouse", + "Audio", + "Servo", + "File", + "Task", + "GPRS", + "WiFi", + "Wire", + "TFT", + "GSM", + "SPI", + "SD" + ], + _hints: [ + "setup", + "loop", + "runShellCommandAsynchronously", + "analogWriteResolution", + "retrieveCallingNumber", + "printFirmwareVersion", + "analogReadResolution", + "sendDigitalPortPair", + "noListenOnLocalhost", + "readJoystickButton", + "setFirmwareVersion", + "readJoystickSwitch", + "scrollDisplayRight", + "getVoiceCallStatus", + "scrollDisplayLeft", + "writeMicroseconds", + "delayMicroseconds", + "beginTransmission", + "getSignalStrength", + "runAsynchronously", + "getAsynchronously", + "listenOnLocalhost", + "getCurrentCarrier", + "readAccelerometer", + "messageAvailable", + "sendDigitalPorts", + "lineFollowConfig", + "countryNameWrite", + "runShellCommand", + "readStringUntil", + "rewindDirectory", + "readTemperature", + "setClockDivider", + "readLightSensor", + "endTransmission", + "analogReference", + "detachInterrupt", + "countryNameRead", + "attachInterrupt", + "encryptionType", + "readBytesUntil", + "robotNameWrite", + "readMicrophone", + "robotNameRead", + "cityNameWrite", + "userNameWrite", + "readJoystickY", + "readJoystickX", + "mouseReleased", + "openNextFile", + "scanNetworks", + "noInterrupts", + "digitalWrite", + "beginSpeaker", + "mousePressed", + "isActionDone", + "mouseDragged", + "displayLogos", + "noAutoscroll", + "addParameter", + "remoteNumber", + "getModifiers", + "keyboardRead", + "userNameRead", + "waitContinue", + "processInput", + "parseCommand", + "printVersion", + "readNetworks", + "writeMessage", + "blinkVersion", + "cityNameRead", + "readMessage", + "setDataMode", + "parsePacket", + "isListening", + "setBitOrder", + "beginPacket", + "isDirectory", + "motorsWrite", + "drawCompass", + "digitalRead", + "clearScreen", + "serialEvent", + "rightToLeft", + "setTextSize", + "leftToRight", + "requestFrom", + "keyReleased", + "compassRead", + "analogWrite", + "interrupts", + "WiFiServer", + "disconnect", + "playMelody", + "parseFloat", + "autoscroll", + "getPINUsed", + "setPINUsed", + "setTimeout", + "sendAnalog", + "readSlider", + "analogRead", + "beginWrite", + "createChar", + "motorsStop", + "keyPressed", + "tempoWrite", + "readButton", + "subnetMask", + "debugPrint", + "macAddress", + "writeGreen", + "randomSeed", + "attachGPRS", + "readString", + "sendString", + "remotePort", + "releaseAll", + "mouseMoved", + "background", + "getXChange", + "getYChange", + "answerCall", + "getResult", + "voiceCall", + "endPacket", + "constrain", + "getSocket", + "writeJSON", + "getButton", + "available", + "connected", + "findUntil", + "readBytes", + "exitValue", + "readGreen", + "writeBlue", + "startLoop", + "IPAddress", + "isPressed", + "sendSysex", + "pauseMode", + "gatewayIP", + "setCursor", + "getOemKey", + "tuneWrite", + "noDisplay", + "loadImage", + "switchPIN", + "onRequest", + "onReceive", + "changePIN", + "playFile", + "noBuffer", + "parseInt", + "overflow", + "checkPIN", + "knobRead", + "beginTFT", + "bitClear", + "updateIR", + "bitWrite", + "position", + "writeRGB", + "highByte", + "writeRed", + "setSpeed", + "readBlue", + "noStroke", + "remoteIP", + "transfer", + "shutdown", + "hangCall", + "beginSMS", + "endWrite", + "attached", + "maintain", + "noCursor", + "checkReg", + "checkPUK", + "shiftOut", + "isValid", + "shiftIn", + "pulseIn", + "connect", + "println", + "localIP", + "pinMode", + "getIMEI", + "display", + "noBlink", + "process", + "getBand", + "running", + "beginSD", + "drawBMP", + "lowByte", + "setBand", + "release", + "bitRead", + "prepare", + "pointTo", + "readRed", + "setMode", + "noFill", + "remove", + "listen", + "stroke", + "detach", + "attach", + "noTone", + "exists", + "buffer", + "height", + "bitSet", + "circle", + "config", + "cursor", + "random", + "IRread", + "setDNS", + "endSMS", + "getKey", + "micros", + "millis", + "begin", + "print", + "write", + "ready", + "flush", + "width", + "isPIN", + "blink", + "clear", + "press", + "mkdir", + "rmdir", + "close", + "point", + "yield", + "image", + "BSSID", + "click", + "delay", + "read", + "text", + "move", + "peek", + "beep", + "rect", + "line", + "open", + "seek", + "fill", + "size", + "turn", + "stop", + "home", + "find", + "step", + "tone", + "sqrt", + "RSSI", + "SSID", + "end", + "bit", + "tan", + "cos", + "sin", + "pow", + "map", + "abs", + "max", + "min", + "get", + "run", + "put" + ], + literal: [ + "DIGITAL_MESSAGE", + "FIRMATA_STRING", + "ANALOG_MESSAGE", + "REPORT_DIGITAL", + "REPORT_ANALOG", + "INPUT_PULLUP", + "SET_PIN_MODE", + "INTERNAL2V56", + "SYSTEM_RESET", + "LED_BUILTIN", + "INTERNAL1V1", + "SYSEX_START", + "INTERNAL", + "EXTERNAL", + "DEFAULT", + "OUTPUT", + "INPUT", + "HIGH", + "LOW" + ] + }; + + const ARDUINO = cPlusPlus(hljs); + + const kws = /** @type {Record} */ (ARDUINO.keywords); + + kws.type = [ + ...kws.type, + ...ARDUINO_KW.type + ]; + kws.literal = [ + ...kws.literal, + ...ARDUINO_KW.literal + ]; + kws.built_in = [ + ...kws.built_in, + ...ARDUINO_KW.built_in + ]; + kws._hints = ARDUINO_KW._hints; + + ARDUINO.name = 'Arduino'; + ARDUINO.aliases = [ 'ino' ]; + ARDUINO.supersetOf = "cpp"; + + return ARDUINO; +} + +module.exports = arduino; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/armasm.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/armasm.js ***! + \***************************************************************/ +(module) { + +/* +Language: ARM Assembly +Author: Dan Panzarella +Description: ARM Assembly including Thumb and Thumb2 instructions +Category: assembler +*/ + +/** @type LanguageFn */ +function armasm(hljs) { + // local labels: %?[FB]?[AT]?\d{1,2}\w+ + + const COMMENT = { variants: [ + hljs.COMMENT('^[ \\t]*(?=#)', '$', { + relevance: 0, + excludeBegin: true + }), + hljs.COMMENT('[;@]', '$', { relevance: 0 }), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] }; + + return { + name: 'ARM Assembly', + case_insensitive: true, + aliases: [ 'arm' ], + keywords: { + $pattern: '\\.?' + hljs.IDENT_RE, + meta: + // GNU preprocs + '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ' + // ARM directives + + 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ', + built_in: + 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' // standard registers + + 'w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 ' // 32 bit ARMv8 registers + + 'w16 w17 w18 w19 w20 w21 w22 w23 w24 w25 w26 w27 w28 w29 w30 ' + + 'x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 ' // 64 bit ARMv8 registers + + 'x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 ' + + 'pc lr sp ip sl sb fp ' // typical regs plus backward compatibility + + 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' // more regs and fp + + 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' // coprocessor regs + + 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' // more coproc + + 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' // advanced SIMD NEON regs + + // program status registers + + 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf ' + + 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf ' + + // NEON and VFP registers + + 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 ' + + 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 ' + + 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 ' + + 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' + + + '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @' + }, + contains: [ + { + className: 'keyword', + begin: '\\b(' // mnemonics + + 'adc|' + + '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|' + + 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|' + + 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|' + + 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|' + + 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|' + + 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|' + + 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|' + + 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|' + + 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|' + + 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|' + + '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|' + + 'wfe|wfi|yield' + + ')' + + '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' // condition codes + + '[sptrx]?' // legal postfixes + + '(?=\\s)' // followed by space + }, + COMMENT, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\'', + end: '[^\\\\]\'', + relevance: 0 + }, + { + className: 'title', + begin: '\\|', + end: '\\|', + illegal: '\\n', + relevance: 0 + }, + { + className: 'number', + variants: [ + { // hex + begin: '[#$=]?0x[0-9a-f]+' }, + { // bin + begin: '[#$=]?0b[01]+' }, + { // literal + begin: '[#$=]\\d+' }, + { // bare number + begin: '\\b\\d+' } + ], + relevance: 0 + }, + { + className: 'symbol', + variants: [ + { // GNU ARM syntax + begin: '^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' }, + { // ARM syntax + begin: '^[a-z_\\.\\$][a-z0-9_\\.\\$]+' }, + { // label reference + begin: '[=#]\\w+' } + ], + relevance: 0 + } + ] + }; +} + +module.exports = armasm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/asciidoc.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/asciidoc.js ***! + \*****************************************************************/ +(module) { + +/* +Language: AsciiDoc +Requires: xml.js +Author: Dan Allen +Website: http://asciidoc.org +Description: A semantic, text-based document format that can be exported to HTML, DocBook and other backends. +Category: markup +*/ + +/** @type LanguageFn */ +function asciidoc(hljs) { + const regex = hljs.regex; + const HORIZONTAL_RULE = { + begin: '^\'{3,}[ \\t]*$', + relevance: 10 + }; + const ESCAPED_FORMATTING = [ + // escaped constrained formatting marks (i.e., \* \_ or \`) + { begin: /\\[*_`]/ }, + // escaped unconstrained formatting marks (i.e., \\** \\__ or \\``) + // must ignore until the next formatting marks + // this rule might not be 100% compliant with Asciidoctor 2.0 but we are entering undefined behavior territory... + { begin: /\\\\\*{2}[^\n]*?\*{2}/ }, + { begin: /\\\\_{2}[^\n]*_{2}/ }, + { begin: /\\\\`{2}[^\n]*`{2}/ }, + // guard: constrained formatting mark may not be preceded by ":", ";" or + // "}". match these so the constrained rule doesn't see them + { begin: /[:;}][*_`](?![*_`])/ } + ]; + const STRONG = [ + // inline unconstrained strong (single line) + { + className: 'strong', + begin: /\*{2}([^\n]+?)\*{2}/ + }, + // inline unconstrained strong (multi-line) + { + className: 'strong', + begin: regex.concat( + /\*\*/, + /((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/, + /(\*(?!\*)|\\[^\n]|[^*\n\\])*/, + /\*\*/ + ), + relevance: 0 + }, + // inline constrained strong (single line) + { + className: 'strong', + // must not precede or follow a word character + begin: /\B\*(\S|\S[^\n]*?\S)\*(?!\w)/ + }, + // inline constrained strong (multi-line) + { + className: 'strong', + // must not precede or follow a word character + begin: /\*[^\s]([^\n]+\n)+([^\n]+)\*/ + } + ]; + const EMPHASIS = [ + // inline unconstrained emphasis (single line) + { + className: 'emphasis', + begin: /_{2}([^\n]+?)_{2}/ + }, + // inline unconstrained emphasis (multi-line) + { + className: 'emphasis', + begin: regex.concat( + /__/, + /((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/, + /(_(?!_)|\\[^\n]|[^_\n\\])*/, + /__/ + ), + relevance: 0 + }, + // inline constrained emphasis (single line) + { + className: 'emphasis', + // must not precede or follow a word character + begin: /\b_(\S|\S[^\n]*?\S)_(?!\w)/ + }, + // inline constrained emphasis (multi-line) + { + className: 'emphasis', + // must not precede or follow a word character + begin: /_[^\s]([^\n]+\n)+([^\n]+)_/ + }, + // inline constrained emphasis using single quote (legacy) + { + className: 'emphasis', + // must not follow a word character or be followed by a single quote or space + begin: '\\B\'(?![\'\\s])', + end: '(\\n{2}|\')', + // allow escaped single quote followed by word char + contains: [ + { + begin: '\\\\\'\\w', + relevance: 0 + } + ], + relevance: 0 + } + ]; + const ADMONITION = { + className: 'symbol', + begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+', + relevance: 10 + }; + const BULLET_LIST = { + className: 'bullet', + begin: '^(\\*+|-+|\\.+|[^\\n]+?::)\\s+' + }; + + return { + name: 'AsciiDoc', + aliases: [ 'adoc' ], + contains: [ + // block comment + hljs.COMMENT( + '^/{4,}\\n', + '\\n/{4,}$', + // can also be done as... + // '^/{4,}$', + // '^/{4,}$', + { relevance: 10 } + ), + // line comment + hljs.COMMENT( + '^//', + '$', + { relevance: 0 } + ), + // title + { + className: 'title', + begin: '^\\.\\w.*$' + }, + // example, admonition & sidebar blocks + { + begin: '^[=\\*]{4,}\\n', + end: '\\n^[=\\*]{4,}$', + relevance: 10 + }, + // headings + { + className: 'section', + relevance: 10, + variants: [ + { begin: '^(={1,6})[ \t].+?([ \t]\\1)?$' }, + { begin: '^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$' } + ] + }, + // document attributes + { + className: 'meta', + begin: '^:.+?:', + end: '\\s', + excludeEnd: true, + relevance: 10 + }, + // block attributes + { + className: 'meta', + begin: '^\\[.+?\\]$', + relevance: 0 + }, + // quoteblocks + { + className: 'quote', + begin: '^_{4,}\\n', + end: '\\n_{4,}$', + relevance: 10 + }, + // listing and literal blocks + { + className: 'code', + begin: '^[\\-\\.]{4,}\\n', + end: '\\n[\\-\\.]{4,}$', + relevance: 10 + }, + // passthrough blocks + { + begin: '^\\+{4,}\\n', + end: '\\n\\+{4,}$', + contains: [ + { + begin: '<', + end: '>', + subLanguage: 'xml', + relevance: 0 + } + ], + relevance: 10 + }, + + BULLET_LIST, + ADMONITION, + ...ESCAPED_FORMATTING, + ...STRONG, + ...EMPHASIS, + + // inline smart quotes + { + className: 'string', + variants: [ + { begin: "``.+?''" }, + { begin: "`.+?'" } + ] + }, + // inline unconstrained emphasis + { + className: 'code', + begin: /`{2}/, + end: /(\n{2}|`{2})/ + }, + // inline code snippets (TODO should get same treatment as strong and emphasis) + { + className: 'code', + begin: '(`.+?`|\\+.+?\\+)', + relevance: 0 + }, + // indented literal block + { + className: 'code', + begin: '^[ \\t]', + end: '$', + relevance: 0 + }, + HORIZONTAL_RULE, + // images and links + { + begin: '(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]', + returnBegin: true, + contains: [ + { + begin: '(link|image:?):', + relevance: 0 + }, + { + className: 'link', + begin: '\\w', + end: '[^\\[]+', + relevance: 0 + }, + { + className: 'string', + begin: '\\[', + end: '\\]', + excludeBegin: true, + excludeEnd: true, + relevance: 0 + } + ], + relevance: 10 + } + ] + }; +} + +module.exports = asciidoc; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/aspectj.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/aspectj.js ***! + \****************************************************************/ +(module) { + +/* +Language: AspectJ +Author: Hakan Ozler +Website: https://www.eclipse.org/aspectj/ +Description: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language. +Category: system +Audit: 2020 +*/ + +/** @type LanguageFn */ +function aspectj(hljs) { + const regex = hljs.regex; + const KEYWORDS = [ + "false", + "synchronized", + "int", + "abstract", + "float", + "private", + "char", + "boolean", + "static", + "null", + "if", + "const", + "for", + "true", + "while", + "long", + "throw", + "strictfp", + "finally", + "protected", + "import", + "native", + "final", + "return", + "void", + "enum", + "else", + "extends", + "implements", + "break", + "transient", + "new", + "catch", + "instanceof", + "byte", + "super", + "volatile", + "case", + "assert", + "short", + "package", + "default", + "double", + "public", + "try", + "this", + "switch", + "continue", + "throws", + "privileged", + "aspectOf", + "adviceexecution", + "proceed", + "cflowbelow", + "cflow", + "initialization", + "preinitialization", + "staticinitialization", + "withincode", + "target", + "within", + "execution", + "getWithinTypeName", + "handler", + "thisJoinPoint", + "thisJoinPointStaticPart", + "thisEnclosingJoinPointStaticPart", + "declare", + "parents", + "warning", + "error", + "soft", + "precedence", + "thisAspectInstance" + ]; + const SHORTKEYS = [ + "get", + "set", + "args", + "call" + ]; + + return { + name: 'AspectJ', + keywords: KEYWORDS, + illegal: /<\/|#/, + contains: [ + hljs.COMMENT( + /\/\*\*/, + /\*\//, + { + relevance: 0, + contains: [ + { + // eat up @'s in emails to prevent them to be recognized as doctags + begin: /\w+@/, + relevance: 0 + }, + { + className: 'doctag', + begin: /@[A-Za-z]+/ + } + ] + } + ), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'class', + beginKeywords: 'aspect', + end: /[{;=]/, + excludeEnd: true, + illegal: /[:;"\[\]]/, + contains: [ + { beginKeywords: 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton' }, + hljs.UNDERSCORE_TITLE_MODE, + { + begin: /\([^\)]*/, + end: /[)]+/, + keywords: KEYWORDS.concat(SHORTKEYS), + excludeEnd: false + } + ] + }, + { + className: 'class', + beginKeywords: 'class interface', + end: /[{;=]/, + excludeEnd: true, + relevance: 0, + keywords: 'class interface', + illegal: /[:"\[\]]/, + contains: [ + { beginKeywords: 'extends implements' }, + hljs.UNDERSCORE_TITLE_MODE + ] + }, + { + // AspectJ Constructs + beginKeywords: 'pointcut after before around throwing returning', + end: /[)]/, + excludeEnd: false, + illegal: /["\[\]]/, + contains: [ + { + begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), + returnBegin: true, + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + } + ] + }, + { + begin: /[:]/, + returnBegin: true, + end: /[{;]/, + relevance: 0, + excludeEnd: false, + keywords: KEYWORDS, + illegal: /["\[\]]/, + contains: [ + { + begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), + keywords: KEYWORDS.concat(SHORTKEYS), + relevance: 0 + }, + hljs.QUOTE_STRING_MODE + ] + }, + { + // this prevents 'new Name(...), or throw ...' from being recognized as a function definition + beginKeywords: 'new throw', + relevance: 0 + }, + { + // the function class is a bit different for AspectJ compared to the Java language + className: 'function', + begin: /\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/, + returnBegin: true, + end: /[{;=]/, + keywords: KEYWORDS, + excludeEnd: true, + contains: [ + { + begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), + returnBegin: true, + relevance: 0, + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + relevance: 0, + keywords: KEYWORDS, + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + hljs.C_NUMBER_MODE, + { + // annotation is also used in this language + className: 'meta', + begin: /@[A-Za-z]+/ + } + ] + }; +} + +module.exports = aspectj; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/autohotkey.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/autohotkey.js ***! + \*******************************************************************/ +(module) { + +/* +Language: AutoHotkey +Author: Seongwon Lee +Description: AutoHotkey language definition +Category: scripting +*/ + +/** @type LanguageFn */ +function autohotkey(hljs) { + const BACKTICK_ESCAPE = { begin: '`[\\s\\S]' }; + + return { + name: 'AutoHotkey', + case_insensitive: true, + aliases: [ 'ahk' ], + keywords: { + keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group', + literal: 'true false NOT AND OR', + built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel' + }, + contains: [ + BACKTICK_ESCAPE, + hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ BACKTICK_ESCAPE ] }), + hljs.COMMENT(';', '$', { relevance: 0 }), + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'number', + begin: hljs.NUMBER_RE, + relevance: 0 + }, + { + // subst would be the most accurate however fails the point of + // highlighting. variable is comparably the most accurate that actually + // has some effect + className: 'variable', + begin: '%[a-zA-Z0-9#_$@]+%' + }, + { + className: 'built_in', + begin: '^\\s*\\w+\\s*(,|%)' + // I don't really know if this is totally relevant + }, + { + // symbol would be most accurate however is highlighted just like + // built_in and that makes up a lot of AutoHotkey code meaning that it + // would fail to highlight anything + className: 'title', + variants: [ + { begin: '^[^\\n";]+::(?!=)' }, + { + begin: '^[^\\n";]+:(?!=)', + // zero relevance as it catches a lot of things + // followed by a single ':' in many languages + relevance: 0 + } + ] + }, + { + className: 'meta', + begin: '^\\s*#\\w+', + end: '$', + relevance: 0 + }, + { + className: 'built_in', + begin: 'A_[a-zA-Z0-9]+' + }, + { + // consecutive commas, not for highlighting but just for relevance + begin: ',\\s*,' } + ] + }; +} + +module.exports = autohotkey; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/autoit.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/autoit.js ***! + \***************************************************************/ +(module) { + +/* +Language: AutoIt +Author: Manh Tuan +Description: AutoIt language definition +Category: scripting +*/ + +/** @type LanguageFn */ +function autoit(hljs) { + const KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' + + 'Dim Do Else ElseIf EndFunc EndIf EndSelect ' + + 'EndSwitch EndWith Enum Exit ExitLoop For Func ' + + 'Global If In Local Next ReDim Return Select Static ' + + 'Step Switch Then To Until Volatile WEnd While With'; + + const DIRECTIVES = [ + "EndRegion", + "forcedef", + "forceref", + "ignorefunc", + "include", + "include-once", + "NoTrayIcon", + "OnAutoItStartRegister", + "pragma", + "Region", + "RequireAdmin", + "Tidy_Off", + "Tidy_On", + "Tidy_Parameters" + ]; + + const LITERAL = 'True False And Null Not Or Default'; + + const BUILT_IN = + 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive'; + + const COMMENT = { variants: [ + hljs.COMMENT(';', '$', { relevance: 0 }), + hljs.COMMENT('#cs', '#ce'), + hljs.COMMENT('#comments-start', '#comments-end') + ] }; + + const VARIABLE = { begin: '\\$[A-z0-9_]+' }; + + const STRING = { + className: 'string', + variants: [ + { + begin: /"/, + end: /"/, + contains: [ + { + begin: /""/, + relevance: 0 + } + ] + }, + { + begin: /'/, + end: /'/, + contains: [ + { + begin: /''/, + relevance: 0 + } + ] + } + ] + }; + + const NUMBER = { variants: [ + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE + ] }; + + const PREPROCESSOR = { + className: 'meta', + begin: '#', + end: '$', + keywords: { keyword: DIRECTIVES }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + { + beginKeywords: 'include', + keywords: { keyword: 'include' }, + end: '$', + contains: [ + STRING, + { + className: 'string', + variants: [ + { + begin: '<', + end: '>' + }, + { + begin: /"/, + end: /"/, + contains: [ + { + begin: /""/, + relevance: 0 + } + ] + }, + { + begin: /'/, + end: /'/, + contains: [ + { + begin: /''/, + relevance: 0 + } + ] + } + ] + } + ] + }, + STRING, + COMMENT + ] + }; + + const CONSTANT = { + className: 'symbol', + // begin: '@', + // end: '$', + // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR', + // relevance: 5 + begin: '@[A-z0-9_]+' + }; + + const FUNCTION = { + beginKeywords: 'Func', + end: '$', + illegal: '\\$|\\[|%', + contains: [ + hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { className: "title.function" }), + { + className: 'params', + begin: '\\(', + end: '\\)', + contains: [ + VARIABLE, + STRING, + NUMBER + ] + } + ] + }; + + return { + name: 'AutoIt', + case_insensitive: true, + illegal: /\/\*/, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_IN, + literal: LITERAL + }, + contains: [ + COMMENT, + VARIABLE, + STRING, + NUMBER, + PREPROCESSOR, + CONSTANT, + FUNCTION + ] + }; +} + +module.exports = autoit; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/avrasm.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/avrasm.js ***! + \***************************************************************/ +(module) { + +/* +Language: AVR Assembly +Author: Vladimir Ermakov +Category: assembler +Website: https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_instruction_list.html +*/ + +/** @type LanguageFn */ +function avrasm(hljs) { + return { + name: 'AVR Assembly', + case_insensitive: true, + keywords: { + $pattern: '\\.?' + hljs.IDENT_RE, + keyword: + /* mnemonic */ + 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' + + 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' + + 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' + + 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' + + 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' + + 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' + + 'subi swap tst wdr', + built_in: + /* general purpose registers */ + 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' + + 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' + /* IO Registers (ATMega128) */ + + 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' + + 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' + + 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' + + 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' + + 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' + + 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' + + 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' + + 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf', + meta: + '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' + + '.listmac .macro .nolist .org .set' + }, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ), + hljs.C_NUMBER_MODE, // 0x..., decimal, float + hljs.BINARY_NUMBER_MODE, // 0b... + { + className: 'number', + begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o... + }, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\'', + end: '[^\\\\]\'', + illegal: '[^\\\\][^\']' + }, + { + className: 'symbol', + begin: '^[A-Za-z0-9_.$]+:' + }, + { + className: 'meta', + begin: '#', + end: '$' + }, + { // substitution within a macro + className: 'subst', + begin: '@[0-9]+' + } + ] + }; +} + +module.exports = avrasm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/awk.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/awk.js ***! + \************************************************************/ +(module) { + +/* +Language: Awk +Author: Matthew Daly +Website: https://www.gnu.org/software/gawk/manual/gawk.html +Description: language definition for Awk scripts +Category: scripting +*/ + +/** @type LanguageFn */ +function awk(hljs) { + const VARIABLE = { + className: 'variable', + variants: [ + { begin: /\$[\w\d#@][\w\d_]*/ }, + { begin: /\$\{(.*?)\}/ } + ] + }; + const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10'; + const STRING = { + className: 'string', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + { + begin: /(u|b)?r?'''/, + end: /'''/, + relevance: 10 + }, + { + begin: /(u|b)?r?"""/, + end: /"""/, + relevance: 10 + }, + { + begin: /(u|r|ur)'/, + end: /'/, + relevance: 10 + }, + { + begin: /(u|r|ur)"/, + end: /"/, + relevance: 10 + }, + { + begin: /(b|br)'/, + end: /'/ + }, + { + begin: /(b|br)"/, + end: /"/ + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }; + return { + name: 'Awk', + keywords: { keyword: KEYWORDS }, + contains: [ + VARIABLE, + STRING, + hljs.REGEXP_MODE, + hljs.HASH_COMMENT_MODE, + hljs.NUMBER_MODE + ] + }; +} + +module.exports = awk; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/axapta.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/axapta.js ***! + \***************************************************************/ +(module) { + +/* +Language: Microsoft X++ +Description: X++ is a language used in Microsoft Dynamics 365, Dynamics AX, and Axapta. +Author: Dmitri Roudakov +Website: https://dynamics.microsoft.com/en-us/ax-overview/ +Category: enterprise +*/ + +/** @type LanguageFn */ +function axapta(hljs) { + const IDENT_RE = hljs.UNDERSCORE_IDENT_RE; + const BUILT_IN_KEYWORDS = [ + 'anytype', + 'boolean', + 'byte', + 'char', + 'container', + 'date', + 'double', + 'enum', + 'guid', + 'int', + 'int64', + 'long', + 'real', + 'short', + 'str', + 'utcdatetime', + 'var' + ]; + + const LITERAL_KEYWORDS = [ + 'default', + 'false', + 'null', + 'true' + ]; + + const NORMAL_KEYWORDS = [ + 'abstract', + 'as', + 'asc', + 'avg', + 'break', + 'breakpoint', + 'by', + 'byref', + 'case', + 'catch', + 'changecompany', + 'class', + 'client', + 'client', + 'common', + 'const', + 'continue', + 'count', + 'crosscompany', + 'delegate', + 'delete_from', + 'desc', + 'display', + 'div', + 'do', + 'edit', + 'else', + 'eventhandler', + 'exists', + 'extends', + 'final', + 'finally', + 'firstfast', + 'firstonly', + 'firstonly1', + 'firstonly10', + 'firstonly100', + 'firstonly1000', + 'flush', + 'for', + 'forceliterals', + 'forcenestedloop', + 'forceplaceholders', + 'forceselectorder', + 'forupdate', + 'from', + 'generateonly', + 'group', + 'hint', + 'if', + 'implements', + 'in', + 'index', + 'insert_recordset', + 'interface', + 'internal', + 'is', + 'join', + 'like', + 'maxof', + 'minof', + 'mod', + 'namespace', + 'new', + 'next', + 'nofetch', + 'notexists', + 'optimisticlock', + 'order', + 'outer', + 'pessimisticlock', + 'print', + 'private', + 'protected', + 'public', + 'readonly', + 'repeatableread', + 'retry', + 'return', + 'reverse', + 'select', + 'server', + 'setting', + 'static', + 'sum', + 'super', + 'switch', + 'this', + 'throw', + 'try', + 'ttsabort', + 'ttsbegin', + 'ttscommit', + 'unchecked', + 'update_recordset', + 'using', + 'validtimestate', + 'void', + 'where', + 'while' + ]; + + const KEYWORDS = { + keyword: NORMAL_KEYWORDS, + built_in: BUILT_IN_KEYWORDS, + literal: LITERAL_KEYWORDS + }; + + const CLASS_DEFINITION = { + variants: [ + { match: [ + /(class|interface)\s+/, + IDENT_RE, + /\s+(extends|implements)\s+/, + IDENT_RE + ] }, + { match: [ + /class\s+/, + IDENT_RE + ] } + ], + scope: { + 2: "title.class", + 4: "title.class.inherited" + }, + keywords: KEYWORDS + }; + + return { + name: 'X++', + aliases: [ 'x++' ], + keywords: KEYWORDS, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'meta', + begin: '#', + end: '$' + }, + CLASS_DEFINITION + ] + }; +} + +module.exports = axapta; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/bash.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/bash.js ***! + \*************************************************************/ +(module) { + +/* +Language: Bash +Author: vah +Contributrors: Benjamin Pannell +Website: https://www.gnu.org/software/bash/ +Category: common, scripting +*/ + +/** @type LanguageFn */ +function bash(hljs) { + const regex = hljs.regex; + const VAR = {}; + const BRACED_VAR = { + begin: /\$\{/, + end: /\}/, + contains: [ + "self", + { + begin: /:-/, + contains: [ VAR ] + } // default values + ] + }; + Object.assign(VAR, { + className: 'variable', + variants: [ + { begin: regex.concat(/\$[\w\d#@][\w\d_]*/, + // negative look-ahead tries to avoid matching patterns that are not + // Perl at all like $ident$, @ident@, etc. + `(?![\\w\\d])(?![$])`) }, + BRACED_VAR + ] + }); + + const SUBST = { + className: 'subst', + begin: /\$\(/, + end: /\)/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + const COMMENT = hljs.inherit( + hljs.COMMENT(), + { + match: [ + /(^|\s)/, + /#.*$/ + ], + scope: { + 2: 'comment' + } + } + ); + const HERE_DOC = { + begin: /<<-?\s*(?=\w+)/, + starts: { contains: [ + hljs.END_SAME_AS_BEGIN({ + begin: /(\w+)/, + end: /(\w+)/, + className: 'string' + }) + ] } + }; + const QUOTE_STRING = { + className: 'string', + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + VAR, + SUBST + ] + }; + SUBST.contains.push(QUOTE_STRING); + const ESCAPED_QUOTE = { + match: /\\"/ + }; + const APOS_STRING = { + className: 'string', + begin: /'/, + end: /'/ + }; + const ESCAPED_APOS = { + match: /\\'/ + }; + const ARITHMETIC = { + begin: /\$?\(\(/, + end: /\)\)/, + contains: [ + { + begin: /\d+#[0-9a-f]+/, + className: "number" + }, + hljs.NUMBER_MODE, + VAR + ] + }; + const SH_LIKE_SHELLS = [ + "fish", + "bash", + "zsh", + "sh", + "csh", + "ksh", + "tcsh", + "dash", + "scsh", + ]; + const KNOWN_SHEBANG = hljs.SHEBANG({ + binary: `(${SH_LIKE_SHELLS.join("|")})`, + relevance: 10 + }); + const FUNCTION = { + className: 'function', + begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/, + returnBegin: true, + contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\w[\w\d_]*/ }) ], + relevance: 0 + }; + + const KEYWORDS = [ + "if", + "then", + "else", + "elif", + "fi", + "time", + "for", + "while", + "until", + "in", + "do", + "done", + "case", + "esac", + "coproc", + "function", + "select" + ]; + + const LITERALS = [ + "true", + "false" + ]; + + // to consume paths to prevent keyword matches inside them + const PATH_MODE = { match: /(\/[a-z._-]+)+/ }; + + // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html + const SHELL_BUILT_INS = [ + "break", + "cd", + "continue", + "eval", + "exec", + "exit", + "export", + "getopts", + "hash", + "pwd", + "readonly", + "return", + "shift", + "test", + "times", + "trap", + "umask", + "unset" + ]; + + const BASH_BUILT_INS = [ + "alias", + "bind", + "builtin", + "caller", + "command", + "declare", + "echo", + "enable", + "help", + "let", + "local", + "logout", + "mapfile", + "printf", + "read", + "readarray", + "source", + "sudo", + "type", + "typeset", + "ulimit", + "unalias" + ]; + + const ZSH_BUILT_INS = [ + "autoload", + "bg", + "bindkey", + "bye", + "cap", + "chdir", + "clone", + "comparguments", + "compcall", + "compctl", + "compdescribe", + "compfiles", + "compgroups", + "compquote", + "comptags", + "comptry", + "compvalues", + "dirs", + "disable", + "disown", + "echotc", + "echoti", + "emulate", + "fc", + "fg", + "float", + "functions", + "getcap", + "getln", + "history", + "integer", + "jobs", + "kill", + "limit", + "log", + "noglob", + "popd", + "print", + "pushd", + "pushln", + "rehash", + "sched", + "setcap", + "setopt", + "stat", + "suspend", + "ttyctl", + "unfunction", + "unhash", + "unlimit", + "unsetopt", + "vared", + "wait", + "whence", + "where", + "which", + "zcompile", + "zformat", + "zftp", + "zle", + "zmodload", + "zparseopts", + "zprof", + "zpty", + "zregexparse", + "zsocket", + "zstyle", + "ztcp" + ]; + + const GNU_CORE_UTILS = [ + "chcon", + "chgrp", + "chown", + "chmod", + "cp", + "dd", + "df", + "dir", + "dircolors", + "ln", + "ls", + "mkdir", + "mkfifo", + "mknod", + "mktemp", + "mv", + "realpath", + "rm", + "rmdir", + "shred", + "sync", + "touch", + "truncate", + "vdir", + "b2sum", + "base32", + "base64", + "cat", + "cksum", + "comm", + "csplit", + "cut", + "expand", + "fmt", + "fold", + "head", + "join", + "md5sum", + "nl", + "numfmt", + "od", + "paste", + "ptx", + "pr", + "sha1sum", + "sha224sum", + "sha256sum", + "sha384sum", + "sha512sum", + "shuf", + "sort", + "split", + "sum", + "tac", + "tail", + "tr", + "tsort", + "unexpand", + "uniq", + "wc", + "arch", + "basename", + "chroot", + "date", + "dirname", + "du", + "echo", + "env", + "expr", + "factor", + // "false", // keyword literal already + "groups", + "hostid", + "id", + "link", + "logname", + "nice", + "nohup", + "nproc", + "pathchk", + "pinky", + "printenv", + "printf", + "pwd", + "readlink", + "runcon", + "seq", + "sleep", + "stat", + "stdbuf", + "stty", + "tee", + "test", + "timeout", + // "true", // keyword literal already + "tty", + "uname", + "unlink", + "uptime", + "users", + "who", + "whoami", + "yes" + ]; + + return { + name: 'Bash', + aliases: [ + 'sh', + 'zsh' + ], + keywords: { + $pattern: /\b[a-z][a-z0-9._-]+\b/, + keyword: KEYWORDS, + literal: LITERALS, + built_in: [ + ...SHELL_BUILT_INS, + ...BASH_BUILT_INS, + // Shell modifiers + "set", + "shopt", + ...ZSH_BUILT_INS, + ...GNU_CORE_UTILS + ] + }, + contains: [ + KNOWN_SHEBANG, // to catch known shells and boost relevancy + hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang + FUNCTION, + ARITHMETIC, + COMMENT, + HERE_DOC, + PATH_MODE, + QUOTE_STRING, + ESCAPED_QUOTE, + APOS_STRING, + ESCAPED_APOS, + VAR + ] + }; +} + +module.exports = bash; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/basic.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/basic.js ***! + \**************************************************************/ +(module) { + +/* +Language: BASIC +Author: Raphaël Assénat +Description: Based on the BASIC reference from the Tandy 1000 guide +Website: https://en.wikipedia.org/wiki/Tandy_1000 +Category: system +*/ + +/** @type LanguageFn */ +function basic(hljs) { + const KEYWORDS = [ + "ABS", + "ASC", + "AND", + "ATN", + "AUTO|0", + "BEEP", + "BLOAD|10", + "BSAVE|10", + "CALL", + "CALLS", + "CDBL", + "CHAIN", + "CHDIR", + "CHR$|10", + "CINT", + "CIRCLE", + "CLEAR", + "CLOSE", + "CLS", + "COLOR", + "COM", + "COMMON", + "CONT", + "COS", + "CSNG", + "CSRLIN", + "CVD", + "CVI", + "CVS", + "DATA", + "DATE$", + "DEFDBL", + "DEFINT", + "DEFSNG", + "DEFSTR", + "DEF|0", + "SEG", + "USR", + "DELETE", + "DIM", + "DRAW", + "EDIT", + "END", + "ENVIRON", + "ENVIRON$", + "EOF", + "EQV", + "ERASE", + "ERDEV", + "ERDEV$", + "ERL", + "ERR", + "ERROR", + "EXP", + "FIELD", + "FILES", + "FIX", + "FOR|0", + "FRE", + "GET", + "GOSUB|10", + "GOTO", + "HEX$", + "IF", + "THEN", + "ELSE|0", + "INKEY$", + "INP", + "INPUT", + "INPUT#", + "INPUT$", + "INSTR", + "IMP", + "INT", + "IOCTL", + "IOCTL$", + "KEY", + "ON", + "OFF", + "LIST", + "KILL", + "LEFT$", + "LEN", + "LET", + "LINE", + "LLIST", + "LOAD", + "LOC", + "LOCATE", + "LOF", + "LOG", + "LPRINT", + "USING", + "LSET", + "MERGE", + "MID$", + "MKDIR", + "MKD$", + "MKI$", + "MKS$", + "MOD", + "NAME", + "NEW", + "NEXT", + "NOISE", + "NOT", + "OCT$", + "ON", + "OR", + "PEN", + "PLAY", + "STRIG", + "OPEN", + "OPTION", + "BASE", + "OUT", + "PAINT", + "PALETTE", + "PCOPY", + "PEEK", + "PMAP", + "POINT", + "POKE", + "POS", + "PRINT", + "PRINT]", + "PSET", + "PRESET", + "PUT", + "RANDOMIZE", + "READ", + "REM", + "RENUM", + "RESET|0", + "RESTORE", + "RESUME", + "RETURN|0", + "RIGHT$", + "RMDIR", + "RND", + "RSET", + "RUN", + "SAVE", + "SCREEN", + "SGN", + "SHELL", + "SIN", + "SOUND", + "SPACE$", + "SPC", + "SQR", + "STEP", + "STICK", + "STOP", + "STR$", + "STRING$", + "SWAP", + "SYSTEM", + "TAB", + "TAN", + "TIME$", + "TIMER", + "TROFF", + "TRON", + "TO", + "USR", + "VAL", + "VARPTR", + "VARPTR$", + "VIEW", + "WAIT", + "WHILE", + "WEND", + "WIDTH", + "WINDOW", + "WRITE", + "XOR" + ]; + + return { + name: 'BASIC', + case_insensitive: true, + illegal: '^\.', + // Support explicitly typed variables that end with $%! or #. + keywords: { + $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*', + keyword: KEYWORDS + }, + contains: [ + { + // Match strings that start with " and end with " or a line break + scope: 'string', + begin: /"/, + end: /"|$/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + hljs.COMMENT('REM', '$', { relevance: 10 }), + hljs.COMMENT('\'', '$', { relevance: 0 }), + { + // Match line numbers + className: 'symbol', + begin: '^[0-9]+ ', + relevance: 10 + }, + { + // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2) + className: 'number', + begin: '\\b\\d+(\\.\\d+)?([edED]\\d+)?[#\!]?', + relevance: 0 + }, + { + // Match hexadecimal numbers (&Hxxxx) + className: 'number', + begin: '(&[hH][0-9a-fA-F]{1,4})' + }, + { + // Match octal numbers (&Oxxxxxx) + className: 'number', + begin: '(&[oO][0-7]{1,6})' + } + ] + }; +} + +module.exports = basic; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/bnf.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/bnf.js ***! + \************************************************************/ +(module) { + +/* +Language: Backus–Naur Form +Website: https://en.wikipedia.org/wiki/Backus–Naur_form +Category: syntax +Author: Oleg Efimov +*/ + +/** @type LanguageFn */ +function bnf(hljs) { + return { + name: 'Backus–Naur Form', + contains: [ + // Attribute + { + className: 'attribute', + begin: // + }, + // Specific + { + begin: /::=/, + end: /$/, + contains: [ + { + begin: // + }, + // Common + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + } + ] + }; +} + +module.exports = bnf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/brainfuck.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/brainfuck.js ***! + \******************************************************************/ +(module) { + +/* +Language: Brainfuck +Author: Evgeny Stepanischev +Website: https://esolangs.org/wiki/Brainfuck +*/ + +/** @type LanguageFn */ +function brainfuck(hljs) { + const LITERAL = { + className: 'literal', + begin: /[+-]+/, + relevance: 0 + }; + return { + name: 'Brainfuck', + aliases: [ 'bf' ], + contains: [ + hljs.COMMENT( + /[^\[\]\.,\+\-<> \r\n]/, + /[\[\]\.,\+\-<> \r\n]/, + { + contains: [ + { + match: /[ ]+[^\[\]\.,\+\-<> \r\n]/, + relevance: 0 + } + ], + returnEnd: true, + relevance: 0 + } + ), + { + className: 'title', + begin: '[\\[\\]]', + relevance: 0 + }, + { + className: 'string', + begin: '[\\.,]', + relevance: 0 + }, + { + // this mode works as the only relevance counter + // it looks ahead to find the start of a run of literals + // so only the runs are counted as relevant + begin: /(?=\+\+|--)/, + contains: [ LITERAL ] + }, + LITERAL + ] + }; +} + +module.exports = brainfuck; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/c.js" +/*!**********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/c.js ***! + \**********************************************************/ +(module) { + +/* +Language: C +Category: common, system +Website: https://en.wikipedia.org/wiki/C_(programming_language) +*/ + +/** @type LanguageFn */ +function c(hljs) { + const regex = hljs.regex; + // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does + // not include such support nor can we be sure all the grammars depending + // on it would desire this behavior + const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); + const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; + const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; + const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; + const FUNCTION_TYPE_RE = '(' + + DECLTYPE_AUTO_RE + '|' + + regex.optional(NAMESPACE_RE) + + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) + + ')'; + + + const TYPES = { + className: 'type', + variants: [ + { begin: '\\b[a-z\\d_]*_t\\b' }, + { match: /\batomic_[a-z]{3,6}\b/ } + ] + + }; + + // https://en.cppreference.com/w/cpp/language/escape + // \\ \x \xFF \u2837 \u00323747 \374 + const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; + const STRINGS = { + className: 'string', + variants: [ + { + begin: '(u8?|U|L)?"', + end: '"', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)", + end: '\'', + illegal: '.' + }, + hljs.END_SAME_AS_BEGIN({ + begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, + end: /\)([^()\\ ]{0,16})"/ + }) + ] + }; + + const NUMBERS = { + className: 'number', + variants: [ + { match: /\b(0b[01']+)/ }, + { match: /(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/ }, + { match: /(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/ }, + { match: /(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/ } + ], + relevance: 0 + }; + + const PREPROCESSOR = { + className: 'meta', + begin: /#\s*[a-z]+\b/, + end: /$/, + keywords: { keyword: + 'if else elif endif define undef warning error line ' + + 'pragma _Pragma ifdef ifndef elifdef elifndef include' }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + hljs.inherit(STRINGS, { className: 'string' }), + { + className: 'string', + begin: /<.*?>/ + }, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; + + const TITLE_MODE = { + className: 'title', + begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, + relevance: 0 + }; + + const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; + + const C_KEYWORDS = [ + "asm", + "auto", + "break", + "case", + "continue", + "default", + "do", + "else", + "enum", + "extern", + "for", + "fortran", + "goto", + "if", + "inline", + "register", + "restrict", + "return", + "sizeof", + "typeof", + "typeof_unqual", + "struct", + "switch", + "typedef", + "union", + "volatile", + "while", + "_Alignas", + "_Alignof", + "_Atomic", + "_Generic", + "_Noreturn", + "_Static_assert", + "_Thread_local", + // aliases + "alignas", + "alignof", + "noreturn", + "static_assert", + "thread_local", + // not a C keyword but is, for all intents and purposes, treated exactly like one. + "_Pragma" + ]; + + const C_TYPES = [ + "float", + "double", + "signed", + "unsigned", + "int", + "short", + "long", + "char", + "void", + "_Bool", + "_BitInt", + "_Complex", + "_Imaginary", + "_Decimal32", + "_Decimal64", + "_Decimal96", + "_Decimal128", + "_Decimal64x", + "_Decimal128x", + "_Float16", + "_Float32", + "_Float64", + "_Float128", + "_Float32x", + "_Float64x", + "_Float128x", + // modifiers + "const", + "static", + "constexpr", + // aliases + "complex", + "bool", + "imaginary" + ]; + + const KEYWORDS = { + keyword: C_KEYWORDS, + type: C_TYPES, + literal: 'true false NULL', + // TODO: apply hinting work similar to what was done in cpp.js + built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' + + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set ' + + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos ' + + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' + + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' + + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' + + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' + + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' + + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr', + }; + + const EXPRESSION_CONTAINS = [ + PREPROCESSOR, + TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + NUMBERS, + STRINGS + ]; + + const EXPRESSION_CONTEXT = { + // This mode covers expression context where we can't expect a function + // definition and shouldn't highlight anything that looks like one: + // `return some()`, `else if()`, `(x*sum(1, 2))` + variants: [ + { + begin: /=/, + end: /;/ + }, + { + begin: /\(/, + end: /\)/ + }, + { + beginKeywords: 'new throw return else', + end: /;/ + } + ], + keywords: KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ + { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ 'self' ]), + relevance: 0 + } + ]), + relevance: 0 + }; + + const FUNCTION_DECLARATION = { + begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, + returnBegin: true, + end: /[{;=]/, + excludeEnd: true, + keywords: KEYWORDS, + illegal: /[^\w\s\*&:<>.]/, + contains: [ + { // to prevent it from being confused as the function title + begin: DECLTYPE_AUTO_RE, + keywords: KEYWORDS, + relevance: 0 + }, + { + begin: FUNCTION_TITLE, + returnBegin: true, + contains: [ hljs.inherit(TITLE_MODE, { className: "title.function" }) ], + relevance: 0 + }, + // allow for multiple declarations, e.g.: + // extern void f(int), g(char); + { + relevance: 0, + match: /,/ + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + relevance: 0, + contains: [ + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + TYPES, + // Count matching parentheses. + { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + relevance: 0, + contains: [ + 'self', + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + TYPES + ] + } + ] + }, + TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + PREPROCESSOR + ] + }; + + return { + name: "C", + aliases: [ 'h' ], + keywords: KEYWORDS, + // Until differentiations are added between `c` and `cpp`, `c` will + // not be auto-detected to avoid auto-detect conflicts between C and C++ + disableAutodetect: true, + illegal: '=]/, + contains: [ + { beginKeywords: "final class struct" }, + hljs.TITLE_MODE + ] + } + ]), + exports: { + preprocessor: PREPROCESSOR, + strings: STRINGS, + keywords: KEYWORDS + } + }; +} + +module.exports = c; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/cal.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/cal.js ***! + \************************************************************/ +(module) { + +/* +Language: C/AL +Author: Kenneth Fuglsang Christensen +Description: Provides highlighting of Microsoft Dynamics NAV C/AL code files +Website: https://docs.microsoft.com/en-us/dynamics-nav/programming-in-c-al +Category: enterprise +*/ + +/** @type LanguageFn */ +function cal(hljs) { + const regex = hljs.regex; + const KEYWORDS = [ + "div", + "mod", + "in", + "and", + "or", + "not", + "xor", + "asserterror", + "begin", + "case", + "do", + "downto", + "else", + "end", + "exit", + "for", + "local", + "if", + "of", + "repeat", + "then", + "to", + "until", + "while", + "with", + "var" + ]; + const LITERALS = 'false true'; + const COMMENT_MODES = [ + hljs.C_LINE_COMMENT_MODE, + hljs.COMMENT( + /\{/, + /\}/, + { relevance: 0 } + ), + hljs.COMMENT( + /\(\*/, + /\*\)/, + { relevance: 10 } + ) + ]; + const STRING = { + className: 'string', + begin: /'/, + end: /'/, + contains: [ { begin: /''/ } ] + }; + const CHAR_STRING = { + className: 'string', + begin: /(#\d+)+/ + }; + const DATE = { + className: 'number', + begin: '\\b\\d+(\\.\\d+)?(DT|D|T)', + relevance: 0 + }; + const DBL_QUOTED_VARIABLE = { + className: 'string', // not a string technically but makes sense to be highlighted in the same style + begin: '"', + end: '"' + }; + + const PROCEDURE = { + match: [ + /procedure/, + /\s+/, + /[a-zA-Z_][\w@]*/, + /\s*/ + ], + scope: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: [ + STRING, + CHAR_STRING, + hljs.NUMBER_MODE + ] + }, + ...COMMENT_MODES + ] + }; + + const OBJECT_TYPES = [ + "Table", + "Form", + "Report", + "Dataport", + "Codeunit", + "XMLport", + "MenuSuite", + "Page", + "Query" + ]; + const OBJECT = { + match: [ + /OBJECT/, + /\s+/, + regex.either(...OBJECT_TYPES), + /\s+/, + /\d+/, + /\s+(?=[^\s])/, + /.*/, + /$/ + ], + relevance: 3, + scope: { + 1: "keyword", + 3: "type", + 5: "number", + 7: "title" + } + }; + + const PROPERTY = { + match: /[\w]+(?=\=)/, + scope: "attribute", + relevance: 0 + }; + + return { + name: 'C/AL', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + literal: LITERALS + }, + illegal: /\/\*/, + contains: [ + PROPERTY, + STRING, + CHAR_STRING, + DATE, + DBL_QUOTED_VARIABLE, + hljs.NUMBER_MODE, + OBJECT, + PROCEDURE + ] + }; +} + +module.exports = cal; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/capnproto.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/capnproto.js ***! + \******************************************************************/ +(module) { + +/* +Language: Cap’n Proto +Author: Oleg Efimov +Description: Cap’n Proto message definition format +Website: https://capnproto.org/capnp-tool.html +Category: protocols +*/ + +/** @type LanguageFn */ +function capnproto(hljs) { + const KEYWORDS = [ + "struct", + "enum", + "interface", + "union", + "group", + "import", + "using", + "const", + "annotation", + "extends", + "in", + "of", + "on", + "as", + "with", + "from", + "fixed" + ]; + const TYPES = [ + "Void", + "Bool", + "Int8", + "Int16", + "Int32", + "Int64", + "UInt8", + "UInt16", + "UInt32", + "UInt64", + "Float32", + "Float64", + "Text", + "Data", + "AnyPointer", + "AnyStruct", + "Capability", + "List" + ]; + const LITERALS = [ + "true", + "false" + ]; + const CLASS_DEFINITION = { + variants: [ + { match: [ + /(struct|enum|interface)/, + /\s+/, + hljs.IDENT_RE + ] }, + { match: [ + /extends/, + /\s*\(/, + hljs.IDENT_RE, + /\s*\)/ + ] } + ], + scope: { + 1: "keyword", + 3: "title.class" + } + }; + return { + name: 'Cap’n Proto', + aliases: [ 'capnp' ], + keywords: { + keyword: KEYWORDS, + type: TYPES, + literal: LITERALS + }, + contains: [ + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + hljs.HASH_COMMENT_MODE, + { + className: 'meta', + begin: /@0x[\w\d]{16};/, + illegal: /\n/ + }, + { + className: 'symbol', + begin: /@\d+\b/ + }, + CLASS_DEFINITION + ] + }; +} + +module.exports = capnproto; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ceylon.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ceylon.js ***! + \***************************************************************/ +(module) { + +/* +Language: Ceylon +Author: Lucas Werkmeister +Website: https://ceylon-lang.org +Category: system +*/ + +/** @type LanguageFn */ +function ceylon(hljs) { + // 2.3. Identifiers and keywords + const KEYWORDS = [ + "assembly", + "module", + "package", + "import", + "alias", + "class", + "interface", + "object", + "given", + "value", + "assign", + "void", + "function", + "new", + "of", + "extends", + "satisfies", + "abstracts", + "in", + "out", + "return", + "break", + "continue", + "throw", + "assert", + "dynamic", + "if", + "else", + "switch", + "case", + "for", + "while", + "try", + "catch", + "finally", + "then", + "let", + "this", + "outer", + "super", + "is", + "exists", + "nonempty" + ]; + // 7.4.1 Declaration Modifiers + const DECLARATION_MODIFIERS = [ + "shared", + "abstract", + "formal", + "default", + "actual", + "variable", + "late", + "native", + "deprecated", + "final", + "sealed", + "annotation", + "suppressWarnings", + "small" + ]; + // 7.4.2 Documentation + const DOCUMENTATION = [ + "doc", + "by", + "license", + "see", + "throws", + "tagged" + ]; + const SUBST = { + className: 'subst', + excludeBegin: true, + excludeEnd: true, + begin: /``/, + end: /``/, + keywords: KEYWORDS, + relevance: 10 + }; + const EXPRESSIONS = [ + { + // verbatim string + className: 'string', + begin: '"""', + end: '"""', + relevance: 10 + }, + { + // string literal or template + className: 'string', + begin: '"', + end: '"', + contains: [ SUBST ] + }, + { + // character literal + className: 'string', + begin: "'", + end: "'" + }, + { + // numeric literal + className: 'number', + begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?', + relevance: 0 + } + ]; + SUBST.contains = EXPRESSIONS; + + return { + name: 'Ceylon', + keywords: { + keyword: KEYWORDS.concat(DECLARATION_MODIFIERS), + meta: DOCUMENTATION + }, + illegal: '\\$[^01]|#[^0-9a-fA-F]', + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.COMMENT('/\\*', '\\*/', { contains: [ 'self' ] }), + { + // compiler annotation + className: 'meta', + begin: '@[a-z]\\w*(?::"[^"]*")?' + } + ].concat(EXPRESSIONS) + }; +} + +module.exports = ceylon; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/clean.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/clean.js ***! + \**************************************************************/ +(module) { + +/* +Language: Clean +Author: Camil Staps +Category: functional +Website: http://clean.cs.ru.nl +*/ + +/** @type LanguageFn */ +function clean(hljs) { + const KEYWORDS = [ + "if", + "let", + "in", + "with", + "where", + "case", + "of", + "class", + "instance", + "otherwise", + "implementation", + "definition", + "system", + "module", + "from", + "import", + "qualified", + "as", + "special", + "code", + "inline", + "foreign", + "export", + "ccall", + "stdcall", + "generic", + "derive", + "infix", + "infixl", + "infixr" + ]; + return { + name: 'Clean', + aliases: [ + 'icl', + 'dcl' + ], + keywords: { + keyword: KEYWORDS, + built_in: + 'Int Real Char Bool', + literal: + 'True False' + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { // relevance booster + begin: '->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>' } + ] + }; +} + +module.exports = clean; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/clojure-repl.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/clojure-repl.js ***! + \*********************************************************************/ +(module) { + +/* +Language: Clojure REPL +Description: Clojure REPL sessions +Author: Ivan Sagalaev +Requires: clojure.js +Website: https://clojure.org +Category: lisp +*/ + +/** @type LanguageFn */ +function clojureRepl(hljs) { + return { + name: 'Clojure REPL', + contains: [ + { + className: 'meta.prompt', + begin: /^([\w.-]+|\s*#_)?=>/, + starts: { + end: /$/, + subLanguage: 'clojure' + } + } + ] + }; +} + +module.exports = clojureRepl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/clojure.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/clojure.js ***! + \****************************************************************/ +(module) { + +/* +Language: Clojure +Description: Clojure syntax (based on lisp.js) +Author: mfornos +Website: https://clojure.org +Category: lisp +*/ + +/** @type LanguageFn */ +function clojure(hljs) { + const SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&\''; + const SYMBOL_RE = '[#]?[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:$#]*'; + const globals = 'def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord'; + const keywords = { + $pattern: SYMBOL_RE, + built_in: + // Clojure keywords + globals + ' ' + + 'cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem ' + + 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? ' + + 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? ' + + 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? ' + + 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . ' + + 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last ' + + 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate ' + + 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext ' + + 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends ' + + 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler ' + + 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter ' + + 'monitor-exit macroexpand macroexpand-1 for dosync and or ' + + 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert ' + + 'peek pop doto proxy first rest cons cast coll last butlast ' + + 'sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import ' + + 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! ' + + 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger ' + + 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline ' + + 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking ' + + 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! ' + + 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! ' + + 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty ' + + 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list ' + + 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer ' + + 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate ' + + 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta ' + + 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize' + }; + + const SYMBOL = { + begin: SYMBOL_RE, + relevance: 0 + }; + const NUMBER = { + scope: 'number', + relevance: 0, + variants: [ + { match: /[-+]?0[xX][0-9a-fA-F]+N?/ }, // hexadecimal // 0x2a + { match: /[-+]?0[0-7]+N?/ }, // octal // 052 + { match: /[-+]?[1-9][0-9]?[rR][0-9a-zA-Z]+N?/ }, // variable radix from 2 to 36 // 2r101010, 8r52, 36r16 + { match: /[-+]?[0-9]+\/[0-9]+N?/ }, // ratio // 1/2 + { match: /[-+]?[0-9]+((\.[0-9]*([eE][+-]?[0-9]+)?M?)|([eE][+-]?[0-9]+M?|M))/ }, // float // 0.42 4.2E-1M 42E1 42M + { match: /[-+]?([1-9][0-9]*|0)N?/ }, // int (don't match leading 0) // 42 42N + ] + }; + const CHARACTER = { + scope: 'character', + variants: [ + { match: /\\o[0-3]?[0-7]{1,2}/ }, // Unicode Octal 0 - 377 + { match: /\\u[0-9a-fA-F]{4}/ }, // Unicode Hex 0000 - FFFF + { match: /\\(newline|space|tab|formfeed|backspace|return)/ }, // special characters + { + match: /\\\S/, + relevance: 0 + } // any non-whitespace char + ] + }; + const REGEX = { + scope: 'regex', + begin: /#"/, + end: /"/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); + const COMMA = { + scope: 'punctuation', + match: /,/, + relevance: 0 + }; + const COMMENT = hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ); + const LITERAL = { + className: 'literal', + begin: /\b(true|false|nil)\b/ + }; + const COLLECTION = { + begin: "\\[|(#::?" + SYMBOL_RE + ")?\\{", + end: '[\\]\\}]', + relevance: 0 + }; + const KEY = { + className: 'symbol', + begin: '[:]{1,2}' + SYMBOL_RE + }; + const LIST = { + begin: '\\(', + end: '\\)' + }; + const BODY = { + endsWithParent: true, + relevance: 0 + }; + const NAME = { + keywords: keywords, + className: 'name', + begin: SYMBOL_RE, + relevance: 0, + starts: BODY + }; + const DEFAULT_CONTAINS = [ + COMMA, + LIST, + CHARACTER, + REGEX, + STRING, + COMMENT, + KEY, + COLLECTION, + NUMBER, + LITERAL, + SYMBOL + ]; + + const GLOBAL = { + beginKeywords: globals, + keywords: { + $pattern: SYMBOL_RE, + keyword: globals + }, + end: '(\\[|#|\\d|"|:|\\{|\\)|\\(|$)', + contains: [ + { + className: 'title', + begin: SYMBOL_RE, + relevance: 0, + excludeEnd: true, + // we can only have a single title + endsParent: true + } + ].concat(DEFAULT_CONTAINS) + }; + + LIST.contains = [ + GLOBAL, + NAME, + BODY + ]; + BODY.contains = DEFAULT_CONTAINS; + COLLECTION.contains = DEFAULT_CONTAINS; + + return { + name: 'Clojure', + aliases: [ + 'clj', + 'edn' + ], + illegal: /\S/, + contains: [ + COMMA, + LIST, + CHARACTER, + REGEX, + STRING, + COMMENT, + KEY, + COLLECTION, + NUMBER, + LITERAL + ] + }; +} + +module.exports = clojure; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/cmake.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/cmake.js ***! + \**************************************************************/ +(module) { + +/* +Language: CMake +Description: CMake is an open-source cross-platform system for build automation. +Author: Igor Kalnitsky +Website: https://cmake.org +Category: build-system +*/ + +/** @type LanguageFn */ +function cmake(hljs) { + return { + name: 'CMake', + aliases: [ 'cmake.in' ], + case_insensitive: true, + keywords: { keyword: + // scripting commands + 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' + + 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' + + 'endwhile execute_process file find_file find_library find_package find_path ' + + 'find_program foreach function get_cmake_property get_directory_property ' + + 'get_filename_component get_property if include include_guard list macro ' + + 'mark_as_advanced math message option return separate_arguments ' + + 'set_directory_properties set_property set site_name string unset variable_watch while ' + // project commands + + 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' + + 'add_definitions add_dependencies add_executable add_library add_link_options ' + + 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' + + 'define_property enable_language enable_testing export fltk_wrap_ui ' + + 'get_source_file_property get_target_property get_test_property include_directories ' + + 'include_external_msproject include_regular_expression install link_directories ' + + 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' + + 'set_source_files_properties set_target_properties set_tests_properties source_group ' + + 'target_compile_definitions target_compile_features target_compile_options ' + + 'target_include_directories target_link_directories target_link_libraries ' + + 'target_link_options target_sources try_compile try_run ' + // CTest commands + + 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' + + 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' + + 'ctest_test ctest_update ctest_upload ' + // deprecated commands + + 'build_name exec_program export_library_dependencies install_files install_programs ' + + 'install_targets load_command make_directory output_required_files remove ' + + 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' + + 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' + // core keywords + + 'on off true false and or not command policy target test exists is_newer_than ' + + 'is_directory is_symlink is_absolute matches less greater equal less_equal ' + + 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' + + 'version_greater version_equal version_less_equal version_greater_equal in_list defined' }, + contains: [ + { + className: 'variable', + begin: /\$\{/, + end: /\}/ + }, + hljs.COMMENT(/#\[\[/, /]]/), + hljs.HASH_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE + ] + }; +} + +module.exports = cmake; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/coffeescript.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/coffeescript.js ***! + \*********************************************************************/ +(module) { + +const KEYWORDS = [ + "as", // for exports + "in", + "of", + "if", + "for", + "while", + "finally", + "var", + "new", + "function", + "do", + "return", + "void", + "else", + "break", + "catch", + "instanceof", + "with", + "throw", + "case", + "default", + "try", + "switch", + "continue", + "typeof", + "delete", + "let", + "yield", + "const", + "class", + // JS handles these with a special rule + // "get", + // "set", + "debugger", + "async", + "await", + "static", + "import", + "from", + "export", + "extends", + // It's reached stage 3, which is "recommended for implementation": + "using" +]; +const LITERALS = [ + "true", + "false", + "null", + "undefined", + "NaN", + "Infinity" +]; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects +const TYPES = [ + // Fundamental objects + "Object", + "Function", + "Boolean", + "Symbol", + // numbers and dates + "Math", + "Date", + "Number", + "BigInt", + // text + "String", + "RegExp", + // Indexed collections + "Array", + "Float32Array", + "Float64Array", + "Int8Array", + "Uint8Array", + "Uint8ClampedArray", + "Int16Array", + "Int32Array", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array", + // Keyed collections + "Set", + "Map", + "WeakSet", + "WeakMap", + // Structured data + "ArrayBuffer", + "SharedArrayBuffer", + "Atomics", + "DataView", + "JSON", + // Control abstraction objects + "Promise", + "Generator", + "GeneratorFunction", + "AsyncFunction", + // Reflection + "Reflect", + "Proxy", + // Internationalization + "Intl", + // WebAssembly + "WebAssembly" +]; + +const ERROR_TYPES = [ + "Error", + "EvalError", + "InternalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" +]; + +const BUILT_IN_GLOBALS = [ + "setInterval", + "setTimeout", + "clearInterval", + "clearTimeout", + + "require", + "exports", + + "eval", + "isFinite", + "isNaN", + "parseFloat", + "parseInt", + "decodeURI", + "decodeURIComponent", + "encodeURI", + "encodeURIComponent", + "escape", + "unescape" +]; + +const BUILT_INS = [].concat( + BUILT_IN_GLOBALS, + TYPES, + ERROR_TYPES +); + +/* +Language: CoffeeScript +Author: Dmytrii Nagirniak +Contributors: Oleg Efimov , Cédric Néhémie +Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/ +Category: scripting +Website: https://coffeescript.org +*/ + + +/** @type LanguageFn */ +function coffeescript(hljs) { + const COFFEE_BUILT_INS = [ + 'npm', + 'print' + ]; + const COFFEE_LITERALS = [ + 'yes', + 'no', + 'on', + 'off' + ]; + const COFFEE_KEYWORDS = [ + 'then', + 'unless', + 'until', + 'loop', + 'by', + 'when', + 'and', + 'or', + 'is', + 'isnt', + 'not' + ]; + const NOT_VALID_KEYWORDS = [ + "var", + "const", + "let", + "function", + "static" + ]; + const excluding = (list) => + (kw) => !list.includes(kw); + const KEYWORDS$1 = { + keyword: KEYWORDS.concat(COFFEE_KEYWORDS).filter(excluding(NOT_VALID_KEYWORDS)), + literal: LITERALS.concat(COFFEE_LITERALS), + built_in: BUILT_INS.concat(COFFEE_BUILT_INS) + }; + const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: KEYWORDS$1 + }; + const EXPRESSIONS = [ + hljs.BINARY_NUMBER_MODE, + hljs.inherit(hljs.C_NUMBER_MODE, { starts: { + end: '(\\s*/)?', + relevance: 0 + } }), // a number tries to eat the following slash to prevent treating it as a regexp + { + className: 'string', + variants: [ + { + begin: /'''/, + end: /'''/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /'/, + end: /'/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /"""/, + end: /"""/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }, + { + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + } + ] + }, + { + className: 'regexp', + variants: [ + { + begin: '///', + end: '///', + contains: [ + SUBST, + hljs.HASH_COMMENT_MODE + ] + }, + { + begin: '//[gim]{0,3}(?=\\W)', + relevance: 0 + }, + { + // regex can't start with space to parse x / 2 / 3 as two divisions + // regex can't start with *, and it supports an "illegal" in the main mode + begin: /\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/ } + ] + }, + { begin: '@' + JS_IDENT_RE // relevance booster + }, + { + subLanguage: 'javascript', + excludeBegin: true, + excludeEnd: true, + variants: [ + { + begin: '```', + end: '```' + }, + { + begin: '`', + end: '`' + } + ] + } + ]; + SUBST.contains = EXPRESSIONS; + + const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); + const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>'; + const PARAMS = { + className: 'params', + begin: '\\([^\\(]', + returnBegin: true, + /* We need another contained nameless mode to not have every nested + pair of parens to be called "params" */ + contains: [ + { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS$1, + contains: [ 'self' ].concat(EXPRESSIONS) + } + ] + }; + + const CLASS_DEFINITION = { + variants: [ + { match: [ + /class\s+/, + JS_IDENT_RE, + /\s+extends\s+/, + JS_IDENT_RE + ] }, + { match: [ + /class\s+/, + JS_IDENT_RE + ] } + ], + scope: { + 2: "title.class", + 4: "title.class.inherited" + }, + keywords: KEYWORDS$1 + }; + + return { + name: 'CoffeeScript', + aliases: [ + 'coffee', + 'cson', + 'iced' + ], + keywords: KEYWORDS$1, + illegal: /\/\*/, + contains: [ + ...EXPRESSIONS, + hljs.COMMENT('###', '###'), + hljs.HASH_COMMENT_MODE, + { + className: 'function', + begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE, + end: '[-=]>', + returnBegin: true, + contains: [ + TITLE, + PARAMS + ] + }, + { + // anonymous function start + begin: /[:\(,=]\s*/, + relevance: 0, + contains: [ + { + className: 'function', + begin: POSSIBLE_PARAMS_RE, + end: '[-=]>', + returnBegin: true, + contains: [ PARAMS ] + } + ] + }, + CLASS_DEFINITION, + { + begin: JS_IDENT_RE + ':', + end: ':', + returnBegin: true, + returnEnd: true, + relevance: 0 + } + ] + }; +} + +module.exports = coffeescript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/coq.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/coq.js ***! + \************************************************************/ +(module) { + +/* +Language: Coq +Author: Stephan Boyer +Category: functional +Website: https://coq.inria.fr +*/ + +/** @type LanguageFn */ +function coq(hljs) { + const KEYWORDS = [ + "_|0", + "as", + "at", + "cofix", + "else", + "end", + "exists", + "exists2", + "fix", + "for", + "forall", + "fun", + "if", + "IF", + "in", + "let", + "match", + "mod", + "Prop", + "return", + "Set", + "then", + "Type", + "using", + "where", + "with", + "Abort", + "About", + "Add", + "Admit", + "Admitted", + "All", + "Arguments", + "Assumptions", + "Axiom", + "Back", + "BackTo", + "Backtrack", + "Bind", + "Blacklist", + "Canonical", + "Cd", + "Check", + "Class", + "Classes", + "Close", + "Coercion", + "Coercions", + "CoFixpoint", + "CoInductive", + "Collection", + "Combined", + "Compute", + "Conjecture", + "Conjectures", + "Constant", + "constr", + "Constraint", + "Constructors", + "Context", + "Corollary", + "CreateHintDb", + "Cut", + "Declare", + "Defined", + "Definition", + "Delimit", + "Dependencies", + "Dependent", + "Derive", + "Drop", + "eauto", + "End", + "Equality", + "Eval", + "Example", + "Existential", + "Existentials", + "Existing", + "Export", + "exporting", + "Extern", + "Extract", + "Extraction", + "Fact", + "Field", + "Fields", + "File", + "Fixpoint", + "Focus", + "for", + "From", + "Function", + "Functional", + "Generalizable", + "Global", + "Goal", + "Grab", + "Grammar", + "Graph", + "Guarded", + "Heap", + "Hint", + "HintDb", + "Hints", + "Hypotheses", + "Hypothesis", + "ident", + "Identity", + "If", + "Immediate", + "Implicit", + "Import", + "Include", + "Inductive", + "Infix", + "Info", + "Initial", + "Inline", + "Inspect", + "Instance", + "Instances", + "Intro", + "Intros", + "Inversion", + "Inversion_clear", + "Language", + "Left", + "Lemma", + "Let", + "Libraries", + "Library", + "Load", + "LoadPath", + "Local", + "Locate", + "Ltac", + "ML", + "Mode", + "Module", + "Modules", + "Monomorphic", + "Morphism", + "Next", + "NoInline", + "Notation", + "Obligation", + "Obligations", + "Opaque", + "Open", + "Optimize", + "Options", + "Parameter", + "Parameters", + "Parametric", + "Path", + "Paths", + "pattern", + "Polymorphic", + "Preterm", + "Print", + "Printing", + "Program", + "Projections", + "Proof", + "Proposition", + "Pwd", + "Qed", + "Quit", + "Rec", + "Record", + "Recursive", + "Redirect", + "Relation", + "Remark", + "Remove", + "Require", + "Reserved", + "Reset", + "Resolve", + "Restart", + "Rewrite", + "Right", + "Ring", + "Rings", + "Save", + "Scheme", + "Scope", + "Scopes", + "Script", + "Search", + "SearchAbout", + "SearchHead", + "SearchPattern", + "SearchRewrite", + "Section", + "Separate", + "Set", + "Setoid", + "Show", + "Solve", + "Sorted", + "Step", + "Strategies", + "Strategy", + "Structure", + "SubClass", + "Table", + "Tables", + "Tactic", + "Term", + "Test", + "Theorem", + "Time", + "Timeout", + "Transparent", + "Type", + "Typeclasses", + "Types", + "Undelimit", + "Undo", + "Unfocus", + "Unfocused", + "Unfold", + "Universe", + "Universes", + "Unset", + "Unshelve", + "using", + "Variable", + "Variables", + "Variant", + "Verbose", + "Visibility", + "where", + "with" + ]; + const BUILT_INS = [ + "abstract", + "absurd", + "admit", + "after", + "apply", + "as", + "assert", + "assumption", + "at", + "auto", + "autorewrite", + "autounfold", + "before", + "bottom", + "btauto", + "by", + "case", + "case_eq", + "cbn", + "cbv", + "change", + "classical_left", + "classical_right", + "clear", + "clearbody", + "cofix", + "compare", + "compute", + "congruence", + "constr_eq", + "constructor", + "contradict", + "contradiction", + "cut", + "cutrewrite", + "cycle", + "decide", + "decompose", + "dependent", + "destruct", + "destruction", + "dintuition", + "discriminate", + "discrR", + "do", + "double", + "dtauto", + "eapply", + "eassumption", + "eauto", + "ecase", + "econstructor", + "edestruct", + "ediscriminate", + "eelim", + "eexact", + "eexists", + "einduction", + "einjection", + "eleft", + "elim", + "elimtype", + "enough", + "equality", + "erewrite", + "eright", + "esimplify_eq", + "esplit", + "evar", + "exact", + "exactly_once", + "exfalso", + "exists", + "f_equal", + "fail", + "field", + "field_simplify", + "field_simplify_eq", + "first", + "firstorder", + "fix", + "fold", + "fourier", + "functional", + "generalize", + "generalizing", + "gfail", + "give_up", + "has_evar", + "hnf", + "idtac", + "in", + "induction", + "injection", + "instantiate", + "intro", + "intro_pattern", + "intros", + "intuition", + "inversion", + "inversion_clear", + "is_evar", + "is_var", + "lapply", + "lazy", + "left", + "lia", + "lra", + "move", + "native_compute", + "nia", + "nsatz", + "omega", + "once", + "pattern", + "pose", + "progress", + "proof", + "psatz", + "quote", + "record", + "red", + "refine", + "reflexivity", + "remember", + "rename", + "repeat", + "replace", + "revert", + "revgoals", + "rewrite", + "rewrite_strat", + "right", + "ring", + "ring_simplify", + "rtauto", + "set", + "setoid_reflexivity", + "setoid_replace", + "setoid_rewrite", + "setoid_symmetry", + "setoid_transitivity", + "shelve", + "shelve_unifiable", + "simpl", + "simple", + "simplify_eq", + "solve", + "specialize", + "split", + "split_Rabs", + "split_Rmult", + "stepl", + "stepr", + "subst", + "sum", + "swap", + "symmetry", + "tactic", + "tauto", + "time", + "timeout", + "top", + "transitivity", + "trivial", + "try", + "tryif", + "unfold", + "unify", + "until", + "using", + "vm_compute", + "with" + ]; + return { + name: 'Coq', + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS + }, + contains: [ + hljs.QUOTE_STRING_MODE, + hljs.COMMENT('\\(\\*', '\\*\\)'), + hljs.C_NUMBER_MODE, + { + className: 'type', + excludeBegin: true, + begin: '\\|\\s*', + end: '\\w+' + }, + { // relevance booster + begin: /[-=]>/ } + ] + }; +} + +module.exports = coq; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/cos.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/cos.js ***! + \************************************************************/ +(module) { + +/* +Language: Caché Object Script +Author: Nikita Savchenko +Category: enterprise, scripting +Website: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls +*/ + +/** @type LanguageFn */ +function cos(hljs) { + const STRINGS = { + className: 'string', + variants: [ + { + begin: '"', + end: '"', + contains: [ + { // escaped + begin: "\"\"", + relevance: 0 + } + ] + } + ] + }; + + const NUMBERS = { + className: "number", + begin: "\\b(\\d+(\\.\\d*)?|\\.\\d+)", + relevance: 0 + }; + + const COS_KEYWORDS = + 'property parameter class classmethod clientmethod extends as break ' + + 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' + + 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' + + 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' + + 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' + + 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' + + 'zsync ascii'; + + // registered function - no need in them due to all functions are highlighted, + // but I'll just leave this here. + + // "$bit", "$bitcount", + // "$bitfind", "$bitlogic", "$case", "$char", "$classmethod", "$classname", + // "$compile", "$data", "$decimal", "$double", "$extract", "$factor", + // "$find", "$fnumber", "$get", "$increment", "$inumber", "$isobject", + // "$isvaliddouble", "$isvalidnum", "$justify", "$length", "$list", + // "$listbuild", "$listdata", "$listfind", "$listfromstring", "$listget", + // "$listlength", "$listnext", "$listsame", "$listtostring", "$listvalid", + // "$locate", "$match", "$method", "$name", "$nconvert", "$next", + // "$normalize", "$now", "$number", "$order", "$parameter", "$piece", + // "$prefetchoff", "$prefetchon", "$property", "$qlength", "$qsubscript", + // "$query", "$random", "$replace", "$reverse", "$sconvert", "$select", + // "$sortbegin", "$sortend", "$stack", "$text", "$translate", "$view", + // "$wascii", "$wchar", "$wextract", "$wfind", "$wiswide", "$wlength", + // "$wreverse", "$xecute", "$zabs", "$zarccos", "$zarcsin", "$zarctan", + // "$zcos", "$zcot", "$zcsc", "$zdate", "$zdateh", "$zdatetime", + // "$zdatetimeh", "$zexp", "$zhex", "$zln", "$zlog", "$zpower", "$zsec", + // "$zsin", "$zsqr", "$ztan", "$ztime", "$ztimeh", "$zboolean", + // "$zconvert", "$zcrc", "$zcyc", "$zdascii", "$zdchar", "$zf", + // "$ziswide", "$zlascii", "$zlchar", "$zname", "$zposition", "$zqascii", + // "$zqchar", "$zsearch", "$zseek", "$zstrip", "$zwascii", "$zwchar", + // "$zwidth", "$zwpack", "$zwbpack", "$zwunpack", "$zwbunpack", "$zzenkaku", + // "$change", "$mv", "$mvat", "$mvfmt", "$mvfmts", "$mviconv", + // "$mviconvs", "$mvinmat", "$mvlover", "$mvoconv", "$mvoconvs", "$mvraise", + // "$mvtrans", "$mvv", "$mvname", "$zbitand", "$zbitcount", "$zbitfind", + // "$zbitget", "$zbitlen", "$zbitnot", "$zbitor", "$zbitset", "$zbitstr", + // "$zbitxor", "$zincrement", "$znext", "$zorder", "$zprevious", "$zsort", + // "device", "$ecode", "$estack", "$etrap", "$halt", "$horolog", + // "$io", "$job", "$key", "$namespace", "$principal", "$quit", "$roles", + // "$storage", "$system", "$test", "$this", "$tlevel", "$username", + // "$x", "$y", "$za", "$zb", "$zchild", "$zeof", "$zeos", "$zerror", + // "$zhorolog", "$zio", "$zjob", "$zmode", "$znspace", "$zparent", "$zpi", + // "$zpos", "$zreference", "$zstorage", "$ztimestamp", "$ztimezone", + // "$ztrap", "$zversion" + + return { + name: 'Caché Object Script', + case_insensitive: true, + aliases: [ "cls" ], + keywords: COS_KEYWORDS, + contains: [ + NUMBERS, + STRINGS, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: "comment", + begin: /;/, + end: "$", + relevance: 0 + }, + { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1) + className: "built_in", + begin: /(?:\$\$?|\.\.)\^?[a-zA-Z]+/ + }, + { // Macro command: quit $$$OK + className: "built_in", + begin: /\$\$\$[a-zA-Z]+/ + }, + { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer + className: "built_in", + begin: /%[a-z]+(?:\.[a-z]+)*/ + }, + { // Global variable: set ^globalName = 12 write ^globalName + className: "symbol", + begin: /\^%?[a-zA-Z][\w]*/ + }, + { // Some control constructions: do ##class(Package.ClassName).Method(), ##super() + className: "keyword", + begin: /##class|##super|#define|#dim/ + }, + // sub-languages: are not fully supported by hljs by 11/15/2015 + // left for the future implementation. + { + begin: /&sql\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + subLanguage: "sql" + }, + { + begin: /&(js|jscript|javascript)/, + excludeBegin: true, + excludeEnd: true, + subLanguage: "javascript" + }, + { + // this brakes first and last tag, but this is the only way to embed a valid html + begin: /&html<\s*\s*>/, + subLanguage: "xml" + } + ] + }; +} + +module.exports = cos; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/cpp.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/cpp.js ***! + \************************************************************/ +(module) { + +/* +Language: C++ +Category: common, system +Website: https://isocpp.org +*/ + +/** @type LanguageFn */ +function cpp(hljs) { + const regex = hljs.regex; + // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does + // not include such support nor can we be sure all the grammars depending + // on it would desire this behavior + const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); + const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; + const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; + const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; + const FUNCTION_TYPE_RE = '(?!struct)(' + + DECLTYPE_AUTO_RE + '|' + + regex.optional(NAMESPACE_RE) + + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) + + ')'; + + const CPP_PRIMITIVE_TYPES = { + className: 'type', + begin: '\\b[a-z\\d_]*_t\\b' + }; + + // https://en.cppreference.com/w/cpp/language/escape + // \\ \x \xFF \u2837 \u00323747 \374 + const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; + const STRINGS = { + className: 'string', + variants: [ + { + begin: '(u8?|U|L)?"', + end: '"', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + '|.)', + end: '\'', + illegal: '.' + }, + hljs.END_SAME_AS_BEGIN({ + begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, + end: /\)([^()\\ ]{0,16})"/ + }) + ] + }; + + const NUMBERS = { + className: 'number', + variants: [ + // Floating-point literal. + { begin: + "[+-]?(?:" // Leading sign. + // Decimal. + + "(?:" + +"[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?" + + "|\\.[0-9](?:'?[0-9])*" + + ")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?" + + "|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*" + // Hexadecimal. + + "|0[Xx](?:" + +"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?" + + "|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*" + + ")[Pp][+-]?[0-9](?:'?[0-9])*" + + ")(?:" // Literal suffixes. + + "[Ff](?:16|32|64|128)?" + + "|(BF|bf)16" + + "|[Ll]" + + "|" // Literal suffix is optional. + + ")" + }, + // Integer literal. + { begin: + "[+-]?\\b(?:" // Leading sign. + + "0[Bb][01](?:'?[01])*" // Binary. + + "|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*" // Hexadecimal. + + "|0(?:'?[0-7])*" // Octal or just a lone zero. + + "|[1-9](?:'?[0-9])*" // Decimal. + + ")(?:" // Literal suffixes. + + "[Uu](?:LL?|ll?)" + + "|[Uu][Zz]?" + + "|(?:LL?|ll?)[Uu]?" + + "|[Zz][Uu]" + + "|" // Literal suffix is optional. + + ")" + // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the + // literal highlight actually makes it stand out more. + } + ], + relevance: 0 + }; + + const PREPROCESSOR = { + className: 'meta', + begin: /#\s*[a-z]+\b/, + end: /$/, + keywords: { keyword: + 'if else elif endif define undef warning error line ' + + 'pragma _Pragma ifdef ifndef include' }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + hljs.inherit(STRINGS, { className: 'string' }), + { + className: 'string', + begin: /<.*?>/ + }, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; + + const TITLE_MODE = { + className: 'title', + begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, + relevance: 0 + }; + + const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; + + // https://en.cppreference.com/w/cpp/keyword + const RESERVED_KEYWORDS = [ + 'alignas', + 'alignof', + 'and', + 'and_eq', + 'asm', + 'atomic_cancel', + 'atomic_commit', + 'atomic_noexcept', + 'auto', + 'bitand', + 'bitor', + 'break', + 'case', + 'catch', + 'class', + 'co_await', + 'co_return', + 'co_yield', + 'compl', + 'concept', + 'const_cast|10', + 'consteval', + 'constexpr', + 'constinit', + 'continue', + 'decltype', + 'default', + 'delete', + 'do', + 'dynamic_cast|10', + 'else', + 'enum', + 'explicit', + 'export', + 'extern', + 'false', + 'final', + 'for', + 'friend', + 'goto', + 'if', + 'import', + 'inline', + 'module', + 'mutable', + 'namespace', + 'new', + 'noexcept', + 'not', + 'not_eq', + 'nullptr', + 'operator', + 'or', + 'or_eq', + 'override', + 'private', + 'protected', + 'public', + 'reflexpr', + 'register', + 'reinterpret_cast|10', + 'requires', + 'return', + 'sizeof', + 'static_assert', + 'static_cast|10', + 'struct', + 'switch', + 'synchronized', + 'template', + 'this', + 'thread_local', + 'throw', + 'transaction_safe', + 'transaction_safe_dynamic', + 'true', + 'try', + 'typedef', + 'typeid', + 'typename', + 'union', + 'using', + 'virtual', + 'volatile', + 'while', + 'xor', + 'xor_eq' + ]; + + // https://en.cppreference.com/w/cpp/keyword + const RESERVED_TYPES = [ + 'bool', + 'char', + 'char16_t', + 'char32_t', + 'char8_t', + 'double', + 'float', + 'int', + 'long', + 'short', + 'void', + 'wchar_t', + 'unsigned', + 'signed', + 'const', + 'static' + ]; + + const TYPE_HINTS = [ + 'any', + 'auto_ptr', + 'barrier', + 'binary_semaphore', + 'bitset', + 'complex', + 'condition_variable', + 'condition_variable_any', + 'counting_semaphore', + 'deque', + 'false_type', + 'flat_map', + 'flat_set', + 'future', + 'imaginary', + 'initializer_list', + 'istringstream', + 'jthread', + 'latch', + 'lock_guard', + 'multimap', + 'multiset', + 'mutex', + 'optional', + 'ostringstream', + 'packaged_task', + 'pair', + 'promise', + 'priority_queue', + 'queue', + 'recursive_mutex', + 'recursive_timed_mutex', + 'scoped_lock', + 'set', + 'shared_future', + 'shared_lock', + 'shared_mutex', + 'shared_timed_mutex', + 'shared_ptr', + 'stack', + 'string_view', + 'stringstream', + 'timed_mutex', + 'thread', + 'true_type', + 'tuple', + 'unique_lock', + 'unique_ptr', + 'unordered_map', + 'unordered_multimap', + 'unordered_multiset', + 'unordered_set', + 'variant', + 'vector', + 'weak_ptr', + 'wstring', + 'wstring_view' + ]; + + const FUNCTION_HINTS = [ + 'abort', + 'abs', + 'acos', + 'apply', + 'as_const', + 'asin', + 'atan', + 'atan2', + 'calloc', + 'ceil', + 'cerr', + 'cin', + 'clog', + 'cos', + 'cosh', + 'cout', + 'declval', + 'endl', + 'exchange', + 'exit', + 'exp', + 'fabs', + 'floor', + 'fmod', + 'forward', + 'fprintf', + 'fputs', + 'free', + 'frexp', + 'fscanf', + 'future', + 'invoke', + 'isalnum', + 'isalpha', + 'iscntrl', + 'isdigit', + 'isgraph', + 'islower', + 'isprint', + 'ispunct', + 'isspace', + 'isupper', + 'isxdigit', + 'labs', + 'launder', + 'ldexp', + 'log', + 'log10', + 'make_pair', + 'make_shared', + 'make_shared_for_overwrite', + 'make_tuple', + 'make_unique', + 'malloc', + 'memchr', + 'memcmp', + 'memcpy', + 'memset', + 'modf', + 'move', + 'pow', + 'printf', + 'putchar', + 'puts', + 'realloc', + 'scanf', + 'sin', + 'sinh', + 'snprintf', + 'sprintf', + 'sqrt', + 'sscanf', + 'std', + 'stderr', + 'stdin', + 'stdout', + 'strcat', + 'strchr', + 'strcmp', + 'strcpy', + 'strcspn', + 'strlen', + 'strncat', + 'strncmp', + 'strncpy', + 'strpbrk', + 'strrchr', + 'strspn', + 'strstr', + 'swap', + 'tan', + 'tanh', + 'terminate', + 'to_underlying', + 'tolower', + 'toupper', + 'vfprintf', + 'visit', + 'vprintf', + 'vsprintf' + ]; + + const LITERALS = [ + 'NULL', + 'false', + 'nullopt', + 'nullptr', + 'true' + ]; + + // https://en.cppreference.com/w/cpp/keyword + const BUILT_IN = [ '_Pragma' ]; + + const CPP_KEYWORDS = { + type: RESERVED_TYPES, + keyword: RESERVED_KEYWORDS, + literal: LITERALS, + built_in: BUILT_IN, + _type_hints: TYPE_HINTS + }; + + const FUNCTION_DISPATCH = { + className: 'function.dispatch', + relevance: 0, + keywords: { + // Only for relevance, not highlighting. + _hint: FUNCTION_HINTS }, + begin: regex.concat( + /\b/, + /(?!decltype)/, + /(?!if)/, + /(?!for)/, + /(?!switch)/, + /(?!while)/, + hljs.IDENT_RE, + regex.lookahead(/(<[^<>]+>|)\s*\(/)) + }; + + const EXPRESSION_CONTAINS = [ + FUNCTION_DISPATCH, + PREPROCESSOR, + CPP_PRIMITIVE_TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + NUMBERS, + STRINGS + ]; + + const EXPRESSION_CONTEXT = { + // This mode covers expression context where we can't expect a function + // definition and shouldn't highlight anything that looks like one: + // `return some()`, `else if()`, `(x*sum(1, 2))` + variants: [ + { + begin: /=/, + end: /;/ + }, + { + begin: /\(/, + end: /\)/ + }, + { + beginKeywords: 'new throw return else', + end: /;/ + } + ], + keywords: CPP_KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ + { + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + contains: EXPRESSION_CONTAINS.concat([ 'self' ]), + relevance: 0 + } + ]), + relevance: 0 + }; + + const FUNCTION_DECLARATION = { + className: 'function', + begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, + returnBegin: true, + end: /[{;=]/, + excludeEnd: true, + keywords: CPP_KEYWORDS, + illegal: /[^\w\s\*&:<>.]/, + contains: [ + { // to prevent it from being confused as the function title + begin: DECLTYPE_AUTO_RE, + keywords: CPP_KEYWORDS, + relevance: 0 + }, + { + begin: FUNCTION_TITLE, + returnBegin: true, + contains: [ TITLE_MODE ], + relevance: 0 + }, + // needed because we do not have look-behind on the below rule + // to prevent it from grabbing the final : in a :: pair + { + begin: /::/, + relevance: 0 + }, + // initializers + { + begin: /:/, + endsWithParent: true, + contains: [ + STRINGS, + NUMBERS + ] + }, + // allow for multiple declarations, e.g.: + // extern void f(int), g(char); + { + relevance: 0, + match: /,/ + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + relevance: 0, + contains: [ + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + CPP_PRIMITIVE_TYPES, + // Count matching parentheses. + { + begin: /\(/, + end: /\)/, + keywords: CPP_KEYWORDS, + relevance: 0, + contains: [ + 'self', + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRINGS, + NUMBERS, + CPP_PRIMITIVE_TYPES + ] + } + ] + }, + CPP_PRIMITIVE_TYPES, + C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + PREPROCESSOR + ] + }; + + return { + name: 'C++', + aliases: [ + 'cc', + 'c++', + 'h++', + 'hpp', + 'hh', + 'hxx', + 'cxx' + ], + keywords: CPP_KEYWORDS, + illegal: ' rooms (9);` + begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)', + end: '>', + keywords: CPP_KEYWORDS, + contains: [ + 'self', + CPP_PRIMITIVE_TYPES + ] + }, + { + begin: hljs.IDENT_RE + '::', + keywords: CPP_KEYWORDS + }, + { + match: [ + // extra complexity to deal with `enum class` and `enum struct` + /\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, + /\s+/, + /\w+/ + ], + className: { + 1: 'keyword', + 3: 'title.class' + } + } + ]) + }; +} + +module.exports = cpp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/crmsh.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/crmsh.js ***! + \**************************************************************/ +(module) { + +/* +Language: crmsh +Author: Kristoffer Gronlund +Website: http://crmsh.github.io +Description: Syntax Highlighting for the crmsh DSL +Category: config +*/ + +/** @type LanguageFn */ +function crmsh(hljs) { + const RESOURCES = 'primitive rsc_template'; + const COMMANDS = 'group clone ms master location colocation order fencing_topology ' + + 'rsc_ticket acl_target acl_group user role ' + + 'tag xml'; + const PROPERTY_SETS = 'property rsc_defaults op_defaults'; + const KEYWORDS = 'params meta operations op rule attributes utilization'; + const OPERATORS = 'read write deny defined not_defined in_range date spec in ' + + 'ref reference attribute type xpath version and or lt gt tag ' + + 'lte gte eq ne \\'; + const TYPES = 'number string'; + const LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false'; + + return { + name: 'crmsh', + aliases: [ + 'crm', + 'pcmk' + ], + case_insensitive: true, + keywords: { + keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES, + literal: LITERALS + }, + contains: [ + hljs.HASH_COMMENT_MODE, + { + beginKeywords: 'node', + starts: { + end: '\\s*([\\w_-]+:)?', + starts: { + className: 'title', + end: '\\s*[\\$\\w_][\\w_-]*' + } + } + }, + { + beginKeywords: RESOURCES, + starts: { + className: 'title', + end: '\\s*[\\$\\w_][\\w_-]*', + starts: { end: '\\s*@?[\\w_][\\w_\\.:-]*' } + } + }, + { + begin: '\\b(' + COMMANDS.split(' ').join('|') + ')\\s+', + keywords: COMMANDS, + starts: { + className: 'title', + end: '[\\$\\w_][\\w_-]*' + } + }, + { + beginKeywords: PROPERTY_SETS, + starts: { + className: 'title', + end: '\\s*([\\w_-]+:)?' + } + }, + hljs.QUOTE_STRING_MODE, + { + className: 'meta', + begin: '(ocf|systemd|service|lsb):[\\w_:-]+', + relevance: 0 + }, + { + className: 'number', + begin: '\\b\\d+(\\.\\d+)?(ms|s|h|m)?', + relevance: 0 + }, + { + className: 'literal', + begin: '[-]?(infinity|inf)', + relevance: 0 + }, + { + className: 'attr', + begin: /([A-Za-z$_#][\w_-]+)=/, + relevance: 0 + }, + { + className: 'tag', + begin: '', + relevance: 0 + } + ] + }; +} + +module.exports = crmsh; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/crystal.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/crystal.js ***! + \****************************************************************/ +(module) { + +/* +Language: Crystal +Author: TSUYUSATO Kitsune +Website: https://crystal-lang.org +Category: system +*/ + +/** @type LanguageFn */ +function crystal(hljs) { + const INT_SUFFIX = '(_?[ui](8|16|32|64|128))?'; + const FLOAT_SUFFIX = '(_?f(32|64))?'; + const CRYSTAL_IDENT_RE = '[a-zA-Z_]\\w*[!?=]?'; + const CRYSTAL_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?'; + const CRYSTAL_PATH_RE = '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?'; + const CRYSTAL_KEYWORDS = { + $pattern: CRYSTAL_IDENT_RE, + keyword: + 'abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' + + 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' + + 'return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield ' + + '__DIR__ __END_LINE__ __FILE__ __LINE__', + literal: 'false nil true' + }; + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: CRYSTAL_KEYWORDS + }; + // borrowed from Ruby + const VARIABLE = { + // negative-look forward attemps to prevent false matches like: + // @ident@ or $ident$ that might indicate this is not ruby at all + className: "variable", + begin: '(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])` + }; + const EXPANSION = { + className: 'template-variable', + variants: [ + { + begin: '\\{\\{', + end: '\\}\\}' + }, + { + begin: '\\{%', + end: '%\\}' + } + ], + keywords: CRYSTAL_KEYWORDS + }; + + function recursiveParen(begin, end) { + const + contains = [ + { + begin: begin, + end: end + } + ]; + contains[0].contains = contains; + return contains; + } + const STRING = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + variants: [ + { + begin: /'/, + end: /'/ + }, + { + begin: /"/, + end: /"/ + }, + { + begin: /`/, + end: /`/ + }, + { + begin: '%[Qwi]?\\(', + end: '\\)', + contains: recursiveParen('\\(', '\\)') + }, + { + begin: '%[Qwi]?\\[', + end: '\\]', + contains: recursiveParen('\\[', '\\]') + }, + { + begin: '%[Qwi]?\\{', + end: /\}/, + contains: recursiveParen(/\{/, /\}/) + }, + { + begin: '%[Qwi]?<', + end: '>', + contains: recursiveParen('<', '>') + }, + { + begin: '%[Qwi]?\\|', + end: '\\|' + }, + { + begin: /<<-\w+$/, + end: /^\s*\w+$/ + } + ], + relevance: 0 + }; + const Q_STRING = { + className: 'string', + variants: [ + { + begin: '%q\\(', + end: '\\)', + contains: recursiveParen('\\(', '\\)') + }, + { + begin: '%q\\[', + end: '\\]', + contains: recursiveParen('\\[', '\\]') + }, + { + begin: '%q\\{', + end: /\}/, + contains: recursiveParen(/\{/, /\}/) + }, + { + begin: '%q<', + end: '>', + contains: recursiveParen('<', '>') + }, + { + begin: '%q\\|', + end: '\\|' + }, + { + begin: /<<-'\w+'$/, + end: /^\s*\w+$/ + } + ], + relevance: 0 + }; + const REGEXP = { + begin: '(?!%\\})(' + hljs.RE_STARTERS_RE + '|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*', + keywords: 'case if select unless until when while', + contains: [ + { + className: 'regexp', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + variants: [ + { + begin: '//[a-z]*', + relevance: 0 + }, + { + begin: '/(?!\\/)', + end: '/[a-z]*' + } + ] + } + ], + relevance: 0 + }; + const REGEXP2 = { + className: 'regexp', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + variants: [ + { + begin: '%r\\(', + end: '\\)', + contains: recursiveParen('\\(', '\\)') + }, + { + begin: '%r\\[', + end: '\\]', + contains: recursiveParen('\\[', '\\]') + }, + { + begin: '%r\\{', + end: /\}/, + contains: recursiveParen(/\{/, /\}/) + }, + { + begin: '%r<', + end: '>', + contains: recursiveParen('<', '>') + }, + { + begin: '%r\\|', + end: '\\|' + } + ], + relevance: 0 + }; + const ATTRIBUTE = { + className: 'meta', + begin: '@\\[', + end: '\\]', + contains: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }) ] + }; + const CRYSTAL_DEFAULT_CONTAINS = [ + EXPANSION, + STRING, + Q_STRING, + REGEXP2, + REGEXP, + ATTRIBUTE, + VARIABLE, + hljs.HASH_COMMENT_MODE, + { + className: 'class', + beginKeywords: 'class module struct', + end: '$|;', + illegal: /=/, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }), + { // relevance booster for inheritance + begin: '<' } + ] + }, + { + className: 'class', + beginKeywords: 'lib enum union', + end: '$|;', + illegal: /=/, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }) + ] + }, + { + beginKeywords: 'annotation', + end: '$|;', + illegal: /=/, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }) + ], + relevance: 2 + }, + { + className: 'function', + beginKeywords: 'def', + end: /\B\b/, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { + begin: CRYSTAL_METHOD_RE, + endsParent: true + }) + ] + }, + { + className: 'function', + beginKeywords: 'fun macro', + end: /\B\b/, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { + begin: CRYSTAL_METHOD_RE, + endsParent: true + }) + ], + relevance: 2 + }, + { + className: 'symbol', + begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', + relevance: 0 + }, + { + className: 'symbol', + begin: ':', + contains: [ + STRING, + { begin: CRYSTAL_METHOD_RE } + ], + relevance: 0 + }, + { + className: 'number', + variants: [ + { begin: '\\b0b([01_]+)' + INT_SUFFIX }, + { begin: '\\b0o([0-7_]+)' + INT_SUFFIX }, + { begin: '\\b0x([A-Fa-f0-9_]+)' + INT_SUFFIX }, + { begin: '\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?' + FLOAT_SUFFIX + '(?!_)' }, + { begin: '\\b([1-9][0-9_]*|0)' + INT_SUFFIX } + ], + relevance: 0 + } + ]; + SUBST.contains = CRYSTAL_DEFAULT_CONTAINS; + EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION + + return { + name: 'Crystal', + aliases: [ 'cr' ], + keywords: CRYSTAL_KEYWORDS, + contains: CRYSTAL_DEFAULT_CONTAINS + }; +} + +module.exports = crystal; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/csharp.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/csharp.js ***! + \***************************************************************/ +(module) { + +/* +Language: C# +Author: Jason Diamond +Contributor: Nicolas LLOBERA , Pieter Vantorre , David Pine +Website: https://docs.microsoft.com/dotnet/csharp/ +Category: common +*/ + +/** @type LanguageFn */ +function csharp(hljs) { + const BUILT_IN_KEYWORDS = [ + 'bool', + 'byte', + 'char', + 'decimal', + 'delegate', + 'double', + 'dynamic', + 'enum', + 'float', + 'int', + 'long', + 'nint', + 'nuint', + 'object', + 'sbyte', + 'short', + 'string', + 'ulong', + 'uint', + 'ushort' + ]; + const FUNCTION_MODIFIERS = [ + 'public', + 'private', + 'protected', + 'static', + 'internal', + 'protected', + 'abstract', + 'async', + 'extern', + 'override', + 'unsafe', + 'virtual', + 'new', + 'sealed', + 'partial' + ]; + const LITERAL_KEYWORDS = [ + 'default', + 'false', + 'null', + 'true' + ]; + const NORMAL_KEYWORDS = [ + 'abstract', + 'as', + 'base', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'do', + 'else', + 'event', + 'explicit', + 'extern', + 'finally', + 'fixed', + 'for', + 'foreach', + 'goto', + 'if', + 'implicit', + 'in', + 'interface', + 'internal', + 'is', + 'lock', + 'namespace', + 'new', + 'operator', + 'out', + 'override', + 'params', + 'private', + 'protected', + 'public', + 'readonly', + 'record', + 'ref', + 'return', + 'scoped', + 'sealed', + 'sizeof', + 'stackalloc', + 'static', + 'struct', + 'switch', + 'this', + 'throw', + 'try', + 'typeof', + 'unchecked', + 'unsafe', + 'using', + 'virtual', + 'void', + 'volatile', + 'while' + ]; + const CONTEXTUAL_KEYWORDS = [ + 'add', + 'alias', + 'and', + 'ascending', + 'args', + 'async', + 'await', + 'by', + 'descending', + 'dynamic', + 'equals', + 'file', + 'from', + 'get', + 'global', + 'group', + 'init', + 'into', + 'join', + 'let', + 'nameof', + 'not', + 'notnull', + 'on', + 'or', + 'orderby', + 'partial', + 'record', + 'remove', + 'required', + 'scoped', + 'select', + 'set', + 'unmanaged', + 'value|0', + 'var', + 'when', + 'where', + 'with', + 'yield' + ]; + + const KEYWORDS = { + keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS), + built_in: BUILT_IN_KEYWORDS, + literal: LITERAL_KEYWORDS + }; + const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\.?\\w)*' }); + const NUMBERS = { + className: 'number', + variants: [ + { begin: '\\b(0b[01\']+)' }, + { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' }, + { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' } + ], + relevance: 0 + }; + const RAW_STRING = { + className: 'string', + begin: /"""("*)(?!")(.|\n)*?"""\1/, + relevance: 1 + }; + const VERBATIM_STRING = { + className: 'string', + begin: '@"', + end: '"', + contains: [ { begin: '""' } ] + }; + const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\n/ }); + const SUBST = { + className: 'subst', + begin: /\{/, + end: /\}/, + keywords: KEYWORDS + }; + const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\n/ }); + const INTERPOLATED_STRING = { + className: 'string', + begin: /\$"/, + end: '"', + illegal: /\n/, + contains: [ + { begin: /\{\{/ }, + { begin: /\}\}/ }, + hljs.BACKSLASH_ESCAPE, + SUBST_NO_LF + ] + }; + const INTERPOLATED_VERBATIM_STRING = { + className: 'string', + begin: /\$@"/, + end: '"', + contains: [ + { begin: /\{\{/ }, + { begin: /\}\}/ }, + { begin: '""' }, + SUBST + ] + }; + const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, { + illegal: /\n/, + contains: [ + { begin: /\{\{/ }, + { begin: /\}\}/ }, + { begin: '""' }, + SUBST_NO_LF + ] + }); + SUBST.contains = [ + INTERPOLATED_VERBATIM_STRING, + INTERPOLATED_STRING, + VERBATIM_STRING, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + NUMBERS, + hljs.C_BLOCK_COMMENT_MODE + ]; + SUBST_NO_LF.contains = [ + INTERPOLATED_VERBATIM_STRING_NO_LF, + INTERPOLATED_STRING, + VERBATIM_STRING_NO_LF, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + NUMBERS, + hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\n/ }) + ]; + const STRING = { variants: [ + RAW_STRING, + INTERPOLATED_VERBATIM_STRING, + INTERPOLATED_STRING, + VERBATIM_STRING, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] }; + + const GENERIC_MODIFIER = { + begin: "<", + end: ">", + contains: [ + { beginKeywords: "in out" }, + TITLE_MODE + ] + }; + const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?'; + const AT_IDENTIFIER = { + // prevents expressions like `@class` from incorrect flagging + // `class` as a keyword + begin: "@" + hljs.IDENT_RE, + relevance: 0 + }; + + return { + name: 'C#', + aliases: [ + 'cs', + 'c#' + ], + keywords: KEYWORDS, + illegal: /::/, + contains: [ + hljs.COMMENT( + '///', + '$', + { + returnBegin: true, + contains: [ + { + className: 'doctag', + variants: [ + { + begin: '///', + relevance: 0 + }, + { begin: '' }, + { + begin: '' + } + ] + } + ] + } + ), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'meta', + begin: '#', + end: '$', + keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' } + }, + STRING, + NUMBERS, + { + beginKeywords: 'class interface', + relevance: 0, + end: /[{;=]/, + illegal: /[^\s:,]/, + contains: [ + { beginKeywords: "where class" }, + TITLE_MODE, + GENERIC_MODIFIER, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + beginKeywords: 'namespace', + relevance: 0, + end: /[{;=]/, + illegal: /[^\s:]/, + contains: [ + TITLE_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + beginKeywords: 'record', + relevance: 0, + end: /[{;=]/, + illegal: /[^\s:]/, + contains: [ + TITLE_MODE, + GENERIC_MODIFIER, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + // [Attributes("")] + className: 'meta', + begin: '^\\s*\\[(?=[\\w])', + excludeBegin: true, + end: '\\]', + excludeEnd: true, + contains: [ + { + className: 'string', + begin: /"/, + end: /"/ + } + ] + }, + { + // Expression keywords prevent 'keyword Name(...)' from being + // recognized as a function definition + beginKeywords: 'new return throw await else', + relevance: 0 + }, + { + className: 'function', + begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(', + returnBegin: true, + end: /\s*[{;=]/, + excludeEnd: true, + keywords: KEYWORDS, + contains: [ + // prevents these from being highlighted `title` + { + beginKeywords: FUNCTION_MODIFIERS.join(" "), + relevance: 0 + }, + { + begin: hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(', + returnBegin: true, + contains: [ + hljs.TITLE_MODE, + GENERIC_MODIFIER + ], + relevance: 0 + }, + { match: /\(\)/ }, + { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + relevance: 0, + contains: [ + STRING, + NUMBERS, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + AT_IDENTIFIER + ] + }; +} + +module.exports = csharp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/csp.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/csp.js ***! + \************************************************************/ +(module) { + +/* +Language: CSP +Description: Content Security Policy definition highlighting +Author: Taras +Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP +Category: web + +vim: ts=2 sw=2 st=2 +*/ + +/** @type LanguageFn */ +function csp(hljs) { + const KEYWORDS = [ + "base-uri", + "child-src", + "connect-src", + "default-src", + "font-src", + "form-action", + "frame-ancestors", + "frame-src", + "img-src", + "manifest-src", + "media-src", + "object-src", + "plugin-types", + "report-uri", + "sandbox", + "script-src", + "style-src", + "trusted-types", + "unsafe-hashes", + "worker-src" + ]; + return { + name: 'CSP', + case_insensitive: false, + keywords: { + $pattern: '[a-zA-Z][a-zA-Z0-9_-]*', + keyword: KEYWORDS + }, + contains: [ + { + className: 'string', + begin: "'", + end: "'" + }, + { + className: 'attribute', + begin: '^Content', + end: ':', + excludeEnd: true + } + ] + }; +} + +module.exports = csp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/css.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/css.js ***! + \************************************************************/ +(module) { + +const MODES = (hljs) => { + return { + IMPORTANT: { + scope: 'meta', + begin: '!important' + }, + BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, + HEXCOLOR: { + scope: 'number', + begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ + }, + FUNCTION_DISPATCH: { + className: "built_in", + begin: /[\w-]+(?=\()/ + }, + ATTRIBUTE_SELECTOR_MODE: { + scope: 'selector-attr', + begin: /\[/, + end: /\]/, + illegal: '$', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }, + CSS_NUMBER_MODE: { + scope: 'number', + begin: hljs.NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 + }, + CSS_VARIABLE: { + className: "attr", + begin: /--[A-Za-z_][A-Za-z0-9_-]*/ + } + }; +}; + +const HTML_TAGS = [ + 'a', + 'abbr', + 'address', + 'article', + 'aside', + 'audio', + 'b', + 'blockquote', + 'body', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'dd', + 'del', + 'details', + 'dfn', + 'div', + 'dl', + 'dt', + 'em', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'header', + 'hgroup', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'label', + 'legend', + 'li', + 'main', + 'mark', + 'menu', + 'nav', + 'object', + 'ol', + 'optgroup', + 'option', + 'p', + 'picture', + 'q', + 'quote', + 'samp', + 'section', + 'select', + 'source', + 'span', + 'strong', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'tr', + 'ul', + 'var', + 'video' +]; + +const SVG_TAGS = [ + 'defs', + 'g', + 'marker', + 'mask', + 'pattern', + 'svg', + 'switch', + 'symbol', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feFlood', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMorphology', + 'feOffset', + 'feSpecularLighting', + 'feTile', + 'feTurbulence', + 'linearGradient', + 'radialGradient', + 'stop', + 'circle', + 'ellipse', + 'image', + 'line', + 'path', + 'polygon', + 'polyline', + 'rect', + 'text', + 'use', + 'textPath', + 'tspan', + 'foreignObject', + 'clipPath' +]; + +const TAGS = [ + ...HTML_TAGS, + ...SVG_TAGS, +]; + +// Sorting, then reversing makes sure longer attributes/elements like +// `font-weight` are matched fully instead of getting false positives on say `font` + +const MEDIA_FEATURES = [ + 'any-hover', + 'any-pointer', + 'aspect-ratio', + 'color', + 'color-gamut', + 'color-index', + 'device-aspect-ratio', + 'device-height', + 'device-width', + 'display-mode', + 'forced-colors', + 'grid', + 'height', + 'hover', + 'inverted-colors', + 'monochrome', + 'orientation', + 'overflow-block', + 'overflow-inline', + 'pointer', + 'prefers-color-scheme', + 'prefers-contrast', + 'prefers-reduced-motion', + 'prefers-reduced-transparency', + 'resolution', + 'scan', + 'scripting', + 'update', + 'width', + // TODO: find a better solution? + 'min-width', + 'max-width', + 'min-height', + 'max-height' +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes +const PSEUDO_CLASSES = [ + 'active', + 'any-link', + 'blank', + 'checked', + 'current', + 'default', + 'defined', + 'dir', // dir() + 'disabled', + 'drop', + 'empty', + 'enabled', + 'first', + 'first-child', + 'first-of-type', + 'fullscreen', + 'future', + 'focus', + 'focus-visible', + 'focus-within', + 'has', // has() + 'host', // host or host() + 'host-context', // host-context() + 'hover', + 'indeterminate', + 'in-range', + 'invalid', + 'is', // is() + 'lang', // lang() + 'last-child', + 'last-of-type', + 'left', + 'link', + 'local-link', + 'not', // not() + 'nth-child', // nth-child() + 'nth-col', // nth-col() + 'nth-last-child', // nth-last-child() + 'nth-last-col', // nth-last-col() + 'nth-last-of-type', //nth-last-of-type() + 'nth-of-type', //nth-of-type() + 'only-child', + 'only-of-type', + 'optional', + 'out-of-range', + 'past', + 'placeholder-shown', + 'read-only', + 'read-write', + 'required', + 'right', + 'root', + 'scope', + 'target', + 'target-within', + 'user-invalid', + 'valid', + 'visited', + 'where' // where() +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements +const PSEUDO_ELEMENTS = [ + 'after', + 'backdrop', + 'before', + 'cue', + 'cue-region', + 'first-letter', + 'first-line', + 'grammar-error', + 'marker', + 'part', + 'placeholder', + 'selection', + 'slotted', + 'spelling-error' +].sort().reverse(); + +const ATTRIBUTES = [ + 'accent-color', + 'align-content', + 'align-items', + 'align-self', + 'alignment-baseline', + 'all', + 'anchor-name', + 'animation', + 'animation-composition', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-range', + 'animation-range-end', + 'animation-range-start', + 'animation-timeline', + 'animation-timing-function', + 'appearance', + 'aspect-ratio', + 'backdrop-filter', + 'backface-visibility', + 'background', + 'background-attachment', + 'background-blend-mode', + 'background-clip', + 'background-color', + 'background-image', + 'background-origin', + 'background-position', + 'background-position-x', + 'background-position-y', + 'background-repeat', + 'background-size', + 'baseline-shift', + 'block-size', + 'border', + 'border-block', + 'border-block-color', + 'border-block-end', + 'border-block-end-color', + 'border-block-end-style', + 'border-block-end-width', + 'border-block-start', + 'border-block-start-color', + 'border-block-start-style', + 'border-block-start-width', + 'border-block-style', + 'border-block-width', + 'border-bottom', + 'border-bottom-color', + 'border-bottom-left-radius', + 'border-bottom-right-radius', + 'border-bottom-style', + 'border-bottom-width', + 'border-collapse', + 'border-color', + 'border-end-end-radius', + 'border-end-start-radius', + 'border-image', + 'border-image-outset', + 'border-image-repeat', + 'border-image-slice', + 'border-image-source', + 'border-image-width', + 'border-inline', + 'border-inline-color', + 'border-inline-end', + 'border-inline-end-color', + 'border-inline-end-style', + 'border-inline-end-width', + 'border-inline-start', + 'border-inline-start-color', + 'border-inline-start-style', + 'border-inline-start-width', + 'border-inline-style', + 'border-inline-width', + 'border-left', + 'border-left-color', + 'border-left-style', + 'border-left-width', + 'border-radius', + 'border-right', + 'border-right-color', + 'border-right-style', + 'border-right-width', + 'border-spacing', + 'border-start-end-radius', + 'border-start-start-radius', + 'border-style', + 'border-top', + 'border-top-color', + 'border-top-left-radius', + 'border-top-right-radius', + 'border-top-style', + 'border-top-width', + 'border-width', + 'bottom', + 'box-align', + 'box-decoration-break', + 'box-direction', + 'box-flex', + 'box-flex-group', + 'box-lines', + 'box-ordinal-group', + 'box-orient', + 'box-pack', + 'box-shadow', + 'box-sizing', + 'break-after', + 'break-before', + 'break-inside', + 'caption-side', + 'caret-color', + 'clear', + 'clip', + 'clip-path', + 'clip-rule', + 'color', + 'color-interpolation', + 'color-interpolation-filters', + 'color-profile', + 'color-rendering', + 'color-scheme', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + 'contain', + 'contain-intrinsic-block-size', + 'contain-intrinsic-height', + 'contain-intrinsic-inline-size', + 'contain-intrinsic-size', + 'contain-intrinsic-width', + 'container', + 'container-name', + 'container-type', + 'content', + 'content-visibility', + 'counter-increment', + 'counter-reset', + 'counter-set', + 'cue', + 'cue-after', + 'cue-before', + 'cursor', + 'cx', + 'cy', + 'direction', + 'display', + 'dominant-baseline', + 'empty-cells', + 'enable-background', + 'field-sizing', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'float', + 'flood-color', + 'flood-opacity', + 'flow', + 'font', + 'font-display', + 'font-family', + 'font-feature-settings', + 'font-kerning', + 'font-language-override', + 'font-optical-sizing', + 'font-palette', + 'font-size', + 'font-size-adjust', + 'font-smooth', + 'font-smoothing', + 'font-stretch', + 'font-style', + 'font-synthesis', + 'font-synthesis-position', + 'font-synthesis-small-caps', + 'font-synthesis-style', + 'font-synthesis-weight', + 'font-variant', + 'font-variant-alternates', + 'font-variant-caps', + 'font-variant-east-asian', + 'font-variant-emoji', + 'font-variant-ligatures', + 'font-variant-numeric', + 'font-variant-position', + 'font-variation-settings', + 'font-weight', + 'forced-color-adjust', + 'gap', + 'glyph-orientation-horizontal', + 'glyph-orientation-vertical', + 'grid', + 'grid-area', + 'grid-auto-columns', + 'grid-auto-flow', + 'grid-auto-rows', + 'grid-column', + 'grid-column-end', + 'grid-column-start', + 'grid-gap', + 'grid-row', + 'grid-row-end', + 'grid-row-start', + 'grid-template', + 'grid-template-areas', + 'grid-template-columns', + 'grid-template-rows', + 'hanging-punctuation', + 'height', + 'hyphenate-character', + 'hyphenate-limit-chars', + 'hyphens', + 'icon', + 'image-orientation', + 'image-rendering', + 'image-resolution', + 'ime-mode', + 'initial-letter', + 'initial-letter-align', + 'inline-size', + 'inset', + 'inset-area', + 'inset-block', + 'inset-block-end', + 'inset-block-start', + 'inset-inline', + 'inset-inline-end', + 'inset-inline-start', + 'isolation', + 'justify-content', + 'justify-items', + 'justify-self', + 'kerning', + 'left', + 'letter-spacing', + 'lighting-color', + 'line-break', + 'line-height', + 'line-height-step', + 'list-style', + 'list-style-image', + 'list-style-position', + 'list-style-type', + 'margin', + 'margin-block', + 'margin-block-end', + 'margin-block-start', + 'margin-bottom', + 'margin-inline', + 'margin-inline-end', + 'margin-inline-start', + 'margin-left', + 'margin-right', + 'margin-top', + 'margin-trim', + 'marker', + 'marker-end', + 'marker-mid', + 'marker-start', + 'marks', + 'mask', + 'mask-border', + 'mask-border-mode', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-mode', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + 'mask-type', + 'masonry-auto-flow', + 'math-depth', + 'math-shift', + 'math-style', + 'max-block-size', + 'max-height', + 'max-inline-size', + 'max-width', + 'min-block-size', + 'min-height', + 'min-inline-size', + 'min-width', + 'mix-blend-mode', + 'nav-down', + 'nav-index', + 'nav-left', + 'nav-right', + 'nav-up', + 'none', + 'normal', + 'object-fit', + 'object-position', + 'offset', + 'offset-anchor', + 'offset-distance', + 'offset-path', + 'offset-position', + 'offset-rotate', + 'opacity', + 'order', + 'orphans', + 'outline', + 'outline-color', + 'outline-offset', + 'outline-style', + 'outline-width', + 'overflow', + 'overflow-anchor', + 'overflow-block', + 'overflow-clip-margin', + 'overflow-inline', + 'overflow-wrap', + 'overflow-x', + 'overflow-y', + 'overlay', + 'overscroll-behavior', + 'overscroll-behavior-block', + 'overscroll-behavior-inline', + 'overscroll-behavior-x', + 'overscroll-behavior-y', + 'padding', + 'padding-block', + 'padding-block-end', + 'padding-block-start', + 'padding-bottom', + 'padding-inline', + 'padding-inline-end', + 'padding-inline-start', + 'padding-left', + 'padding-right', + 'padding-top', + 'page', + 'page-break-after', + 'page-break-before', + 'page-break-inside', + 'paint-order', + 'pause', + 'pause-after', + 'pause-before', + 'perspective', + 'perspective-origin', + 'place-content', + 'place-items', + 'place-self', + 'pointer-events', + 'position', + 'position-anchor', + 'position-visibility', + 'print-color-adjust', + 'quotes', + 'r', + 'resize', + 'rest', + 'rest-after', + 'rest-before', + 'right', + 'rotate', + 'row-gap', + 'ruby-align', + 'ruby-position', + 'scale', + 'scroll-behavior', + 'scroll-margin', + 'scroll-margin-block', + 'scroll-margin-block-end', + 'scroll-margin-block-start', + 'scroll-margin-bottom', + 'scroll-margin-inline', + 'scroll-margin-inline-end', + 'scroll-margin-inline-start', + 'scroll-margin-left', + 'scroll-margin-right', + 'scroll-margin-top', + 'scroll-padding', + 'scroll-padding-block', + 'scroll-padding-block-end', + 'scroll-padding-block-start', + 'scroll-padding-bottom', + 'scroll-padding-inline', + 'scroll-padding-inline-end', + 'scroll-padding-inline-start', + 'scroll-padding-left', + 'scroll-padding-right', + 'scroll-padding-top', + 'scroll-snap-align', + 'scroll-snap-stop', + 'scroll-snap-type', + 'scroll-timeline', + 'scroll-timeline-axis', + 'scroll-timeline-name', + 'scrollbar-color', + 'scrollbar-gutter', + 'scrollbar-width', + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + 'shape-rendering', + 'speak', + 'speak-as', + 'src', // @font-face + 'stop-color', + 'stop-opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'tab-size', + 'table-layout', + 'text-align', + 'text-align-all', + 'text-align-last', + 'text-anchor', + 'text-combine-upright', + 'text-decoration', + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-skip-ink', + 'text-decoration-style', + 'text-decoration-thickness', + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + 'text-indent', + 'text-justify', + 'text-orientation', + 'text-overflow', + 'text-rendering', + 'text-shadow', + 'text-size-adjust', + 'text-transform', + 'text-underline-offset', + 'text-underline-position', + 'text-wrap', + 'text-wrap-mode', + 'text-wrap-style', + 'timeline-scope', + 'top', + 'touch-action', + 'transform', + 'transform-box', + 'transform-origin', + 'transform-style', + 'transition', + 'transition-behavior', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + 'translate', + 'unicode-bidi', + 'user-modify', + 'user-select', + 'vector-effect', + 'vertical-align', + 'view-timeline', + 'view-timeline-axis', + 'view-timeline-inset', + 'view-timeline-name', + 'view-transition-name', + 'visibility', + 'voice-balance', + 'voice-duration', + 'voice-family', + 'voice-pitch', + 'voice-range', + 'voice-rate', + 'voice-stress', + 'voice-volume', + 'white-space', + 'white-space-collapse', + 'widows', + 'width', + 'will-change', + 'word-break', + 'word-spacing', + 'word-wrap', + 'writing-mode', + 'x', + 'y', + 'z-index', + 'zoom' +].sort().reverse(); + +/* +Language: CSS +Category: common, css, web +Website: https://developer.mozilla.org/en-US/docs/Web/CSS +*/ + + +/** @type LanguageFn */ +function css(hljs) { + const regex = hljs.regex; + const modes = MODES(hljs); + const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ }; + const AT_MODIFIERS = "and or not only"; + const AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/; // @-webkit-keyframes + const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*'; + const STRINGS = [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ]; + + return { + name: 'CSS', + case_insensitive: true, + illegal: /[=|'\$]/, + keywords: { keyframePosition: "from to" }, + classNameAliases: { + // for visual continuity with `tag {}` and because we + // don't have a great class for this? + keyframePosition: "selector-tag" }, + contains: [ + modes.BLOCK_COMMENT, + VENDOR_PREFIX, + // to recognize keyframe 40% etc which are outside the scope of our + // attribute value mode + modes.CSS_NUMBER_MODE, + { + className: 'selector-id', + begin: /#[A-Za-z0-9_-]+/, + relevance: 0 + }, + { + className: 'selector-class', + begin: '\\.' + IDENT_RE, + relevance: 0 + }, + modes.ATTRIBUTE_SELECTOR_MODE, + { + className: 'selector-pseudo', + variants: [ + { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' }, + { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' } + ] + }, + // we may actually need this (12/2020) + // { // pseudo-selector params + // begin: /\(/, + // end: /\)/, + // contains: [ hljs.CSS_NUMBER_MODE ] + // }, + modes.CSS_VARIABLE, + { + className: 'attribute', + begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b' + }, + // attribute values + { + begin: /:/, + end: /[;}{]/, + contains: [ + modes.BLOCK_COMMENT, + modes.HEXCOLOR, + modes.IMPORTANT, + modes.CSS_NUMBER_MODE, + ...STRINGS, + // needed to highlight these as strings and to avoid issues with + // illegal characters that might be inside urls that would tigger the + // languages illegal stack + { + begin: /(url|data-uri)\(/, + end: /\)/, + relevance: 0, // from keywords + keywords: { built_in: "url data-uri" }, + contains: [ + ...STRINGS, + { + className: "string", + // any character other than `)` as in `url()` will be the start + // of a string, which ends with `)` (from the parent mode) + begin: /[^)]/, + endsWithParent: true, + excludeEnd: true + } + ] + }, + modes.FUNCTION_DISPATCH + ] + }, + { + begin: regex.lookahead(/@/), + end: '[{;]', + relevance: 0, + illegal: /:/, // break on Less variables @var: ... + contains: [ + { + className: 'keyword', + begin: AT_PROPERTY_RE + }, + { + begin: /\s/, + endsWithParent: true, + excludeEnd: true, + relevance: 0, + keywords: { + $pattern: /[a-z-]+/, + keyword: AT_MODIFIERS, + attribute: MEDIA_FEATURES.join(" ") + }, + contains: [ + { + begin: /[a-z-]+(?=:)/, + className: "attribute" + }, + ...STRINGS, + modes.CSS_NUMBER_MODE + ] + } + ] + }, + { + className: 'selector-tag', + begin: '\\b(' + TAGS.join('|') + ')\\b' + } + ] + }; +} + +module.exports = css; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/d.js" +/*!**********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/d.js ***! + \**********************************************************/ +(module) { + +/* +Language: D +Author: Aleksandar Ruzicic +Description: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity. +Version: 1.0a +Website: https://dlang.org +Category: system +Date: 2012-04-08 +*/ + +/** + * Known issues: + * + * - invalid hex string literals will be recognized as a double quoted strings + * but 'x' at the beginning of string will not be matched + * + * - delimited string literals are not checked for matching end delimiter + * (not possible to do with js regexp) + * + * - content of token string is colored as a string (i.e. no keyword coloring inside a token string) + * also, content of token string is not validated to contain only valid D tokens + * + * - special token sequence rule is not strictly following D grammar (anything following #line + * up to the end of line is matched as special token sequence) + */ + +/** @type LanguageFn */ +function d(hljs) { + /** + * Language keywords + * + * @type {Object} + */ + const D_KEYWORDS = { + $pattern: hljs.UNDERSCORE_IDENT_RE, + keyword: + 'abstract alias align asm assert auto body break byte case cast catch class ' + + 'const continue debug default delete deprecated do else enum export extern final ' + + 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' + + 'interface invariant is lazy macro mixin module new nothrow out override package ' + + 'pragma private protected public pure ref return scope shared static struct ' + + 'super switch synchronized template this throw try typedef typeid typeof union ' + + 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' + + '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__', + built_in: + 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' + + 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' + + 'wstring', + literal: + 'false null true' + }; + + /** + * Number literal regexps + * + * @type {String} + */ + const decimal_integer_re = '(0|[1-9][\\d_]*)'; + const decimal_integer_nosus_re = '(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)'; + const binary_integer_re = '0[bB][01_]+'; + const hexadecimal_digits_re = '([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)'; + const hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re; + + const decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')'; + const decimal_float_re = '(' + decimal_integer_nosus_re + '(\\.\\d*|' + decimal_exponent_re + ')|' + + '\\d+\\.' + decimal_integer_nosus_re + '|' + + '\\.' + decimal_integer_re + decimal_exponent_re + '?' + + ')'; + const hexadecimal_float_re = '(0[xX](' + + hexadecimal_digits_re + '\\.' + hexadecimal_digits_re + '|' + + '\\.?' + hexadecimal_digits_re + + ')[pP][+-]?' + decimal_integer_nosus_re + ')'; + + const integer_re = '(' + + decimal_integer_re + '|' + + binary_integer_re + '|' + + hexadecimal_integer_re + + ')'; + + const float_re = '(' + + hexadecimal_float_re + '|' + + decimal_float_re + + ')'; + + /** + * Escape sequence supported in D string and character literals + * + * @type {String} + */ + const escape_sequence_re = '\\\\(' + + '[\'"\\?\\\\abfnrtv]|' // common escapes + + 'u[\\dA-Fa-f]{4}|' // four hex digit unicode codepoint + + '[0-7]{1,3}|' // one to three octal digit ascii char code + + 'x[\\dA-Fa-f]{2}|' // two hex digit ascii char code + + 'U[\\dA-Fa-f]{8}' // eight hex digit unicode codepoint + + ')|' + + '&[a-zA-Z\\d]{2,};'; // named character entity + + /** + * D integer number literals + * + * @type {Object} + */ + const D_INTEGER_MODE = { + className: 'number', + begin: '\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?', + relevance: 0 + }; + + /** + * [D_FLOAT_MODE description] + * @type {Object} + */ + const D_FLOAT_MODE = { + className: 'number', + begin: '\\b(' + + float_re + '([fF]|L|i|[fF]i|Li)?|' + + integer_re + '(i|[fF]i|Li)' + + ')', + relevance: 0 + }; + + /** + * D character literal + * + * @type {Object} + */ + const D_CHARACTER_MODE = { + className: 'string', + begin: '\'(' + escape_sequence_re + '|.)', + end: '\'', + illegal: '.' + }; + + /** + * D string escape sequence + * + * @type {Object} + */ + const D_ESCAPE_SEQUENCE = { + begin: escape_sequence_re, + relevance: 0 + }; + + /** + * D double quoted string literal + * + * @type {Object} + */ + const D_STRING_MODE = { + className: 'string', + begin: '"', + contains: [ D_ESCAPE_SEQUENCE ], + end: '"[cwd]?' + }; + + /** + * D wysiwyg and delimited string literals + * + * @type {Object} + */ + const D_WYSIWYG_DELIMITED_STRING_MODE = { + className: 'string', + begin: '[rq]"', + end: '"[cwd]?', + relevance: 5 + }; + + /** + * D alternate wysiwyg string literal + * + * @type {Object} + */ + const D_ALTERNATE_WYSIWYG_STRING_MODE = { + className: 'string', + begin: '`', + end: '`[cwd]?' + }; + + /** + * D hexadecimal string literal + * + * @type {Object} + */ + const D_HEX_STRING_MODE = { + className: 'string', + begin: 'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?', + relevance: 10 + }; + + /** + * D delimited string literal + * + * @type {Object} + */ + const D_TOKEN_STRING_MODE = { + className: 'string', + begin: 'q"\\{', + end: '\\}"' + }; + + /** + * Hashbang support + * + * @type {Object} + */ + const D_HASHBANG_MODE = { + className: 'meta', + begin: '^#!', + end: '$', + relevance: 5 + }; + + /** + * D special token sequence + * + * @type {Object} + */ + const D_SPECIAL_TOKEN_SEQUENCE_MODE = { + className: 'meta', + begin: '#(line)', + end: '$', + relevance: 5 + }; + + /** + * D attributes + * + * @type {Object} + */ + const D_ATTRIBUTE_MODE = { + className: 'keyword', + begin: '@[a-zA-Z_][a-zA-Z_\\d]*' + }; + + /** + * D nesting comment + * + * @type {Object} + */ + const D_NESTING_COMMENT_MODE = hljs.COMMENT( + '\\/\\+', + '\\+\\/', + { + contains: [ 'self' ], + relevance: 10 + } + ); + + return { + name: 'D', + keywords: D_KEYWORDS, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + D_NESTING_COMMENT_MODE, + D_HEX_STRING_MODE, + D_STRING_MODE, + D_WYSIWYG_DELIMITED_STRING_MODE, + D_ALTERNATE_WYSIWYG_STRING_MODE, + D_TOKEN_STRING_MODE, + D_FLOAT_MODE, + D_INTEGER_MODE, + D_CHARACTER_MODE, + D_HASHBANG_MODE, + D_SPECIAL_TOKEN_SEQUENCE_MODE, + D_ATTRIBUTE_MODE + ] + }; +} + +module.exports = d; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dart.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dart.js ***! + \*************************************************************/ +(module) { + +/* +Language: Dart +Requires: markdown.js +Author: Maxim Dikun +Description: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/ +Website: https://dart.dev +Category: scripting +*/ + +/** @type LanguageFn */ +function dart(hljs) { + const SUBST = { + className: 'subst', + variants: [ { begin: '\\$[A-Za-z0-9_]+' } ] + }; + + const BRACED_SUBST = { + className: 'subst', + variants: [ + { + begin: /\$\{/, + end: /\}/ + } + ], + keywords: 'true false null this is new super' + }; + + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + { match: /\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b/ }, + { match: /\b0[xX][0-9A-Fa-f][0-9A-Fa-f_]*\b/ } + ] + }; + + const STRING = { + className: 'string', + variants: [ + { + begin: 'r\'\'\'', + end: '\'\'\'' + }, + { + begin: 'r"""', + end: '"""' + }, + { + begin: 'r\'', + end: '\'', + illegal: '\\n' + }, + { + begin: 'r"', + end: '"', + illegal: '\\n' + }, + { + begin: '\'\'\'', + end: '\'\'\'', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + BRACED_SUBST + ] + }, + { + begin: '"""', + end: '"""', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + BRACED_SUBST + ] + }, + { + begin: '\'', + end: '\'', + illegal: '\\n', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + BRACED_SUBST + ] + }, + { + begin: '"', + end: '"', + illegal: '\\n', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + BRACED_SUBST + ] + } + ] + }; + BRACED_SUBST.contains = [ + NUMBER, + STRING + ]; + + const BUILT_IN_TYPES = [ + // dart:core + 'Comparable', + 'DateTime', + 'Duration', + 'Function', + 'Iterable', + 'Iterator', + 'List', + 'Map', + 'Match', + 'Object', + 'Pattern', + 'RegExp', + 'Set', + 'Stopwatch', + 'String', + 'StringBuffer', + 'StringSink', + 'Symbol', + 'Type', + 'Uri', + 'bool', + 'double', + 'int', + 'num', + // dart:html + 'Element', + 'ElementList' + ]; + const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`); + + const BASIC_KEYWORDS = [ + "abstract", + "as", + "assert", + "async", + "await", + "base", + "break", + "case", + "catch", + "class", + "const", + "continue", + "covariant", + "default", + "deferred", + "do", + "dynamic", + "else", + "enum", + "export", + "extends", + "extension", + "external", + "factory", + "false", + "final", + "finally", + "for", + "Function", + "get", + "hide", + "if", + "implements", + "import", + "in", + "interface", + "is", + "late", + "library", + "mixin", + "new", + "null", + "on", + "operator", + "part", + "required", + "rethrow", + "return", + "sealed", + "set", + "show", + "static", + "super", + "switch", + "sync", + "this", + "throw", + "true", + "try", + "typedef", + "var", + "void", + "when", + "while", + "with", + "yield" + ]; + + const KEYWORDS = { + keyword: BASIC_KEYWORDS, + built_in: + BUILT_IN_TYPES + .concat(NULLABLE_BUILT_IN_TYPES) + .concat([ + // dart:core + 'Never', + 'Null', + 'dynamic', + 'print', + // dart:html + 'document', + 'querySelector', + 'querySelectorAll', + 'window' + ]), + $pattern: /[A-Za-z][A-Za-z0-9_]*\??/ + }; + + return { + name: 'Dart', + keywords: KEYWORDS, + contains: [ + STRING, + hljs.COMMENT( + /\/\*\*(?!\/)/, + /\*\//, + { + subLanguage: 'markdown', + relevance: 0 + } + ), + hljs.COMMENT( + /\/{3,} ?/, + /$/, { contains: [ + { + subLanguage: 'markdown', + begin: '.', + end: '$', + relevance: 0 + } + ] } + ), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'class', + beginKeywords: 'class interface', + end: /\{/, + excludeEnd: true, + contains: [ + { beginKeywords: 'extends implements' }, + hljs.UNDERSCORE_TITLE_MODE + ] + }, + NUMBER, + { + className: 'meta', + begin: '@[A-Za-z]+' + }, + { begin: '=>' // No markup, just a relevance booster + } + ] + }; +} + +module.exports = dart; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/delphi.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/delphi.js ***! + \***************************************************************/ +(module) { + +/* +Language: Delphi +Website: https://www.embarcadero.com/products/delphi +Category: system +*/ + +/** @type LanguageFn */ +function delphi(hljs) { + const KEYWORDS = [ + "exports", + "register", + "file", + "shl", + "array", + "record", + "property", + "for", + "mod", + "while", + "set", + "ally", + "label", + "uses", + "raise", + "not", + "stored", + "class", + "safecall", + "var", + "interface", + "or", + "private", + "static", + "exit", + "index", + "inherited", + "to", + "else", + "stdcall", + "override", + "shr", + "asm", + "far", + "resourcestring", + "finalization", + "packed", + "virtual", + "out", + "and", + "protected", + "library", + "do", + "xorwrite", + "goto", + "near", + "function", + "end", + "div", + "overload", + "object", + "unit", + "begin", + "string", + "on", + "inline", + "repeat", + "until", + "destructor", + "write", + "message", + "program", + "with", + "read", + "initialization", + "except", + "default", + "nil", + "if", + "case", + "cdecl", + "in", + "downto", + "threadvar", + "of", + "try", + "pascal", + "const", + "external", + "constructor", + "type", + "public", + "then", + "implementation", + "finally", + "published", + "procedure", + "absolute", + "reintroduce", + "operator", + "as", + "is", + "abstract", + "alias", + "assembler", + "bitpacked", + "break", + "continue", + "cppdecl", + "cvar", + "enumerator", + "experimental", + "platform", + "deprecated", + "unimplemented", + "dynamic", + "export", + "far16", + "forward", + "generic", + "helper", + "implements", + "interrupt", + "iochecks", + "local", + "name", + "nodefault", + "noreturn", + "nostackframe", + "oldfpccall", + "otherwise", + "saveregisters", + "softfloat", + "specialize", + "strict", + "unaligned", + "varargs" + ]; + const COMMENT_MODES = [ + hljs.C_LINE_COMMENT_MODE, + hljs.COMMENT(/\{/, /\}/, { relevance: 0 }), + hljs.COMMENT(/\(\*/, /\*\)/, { relevance: 10 }) + ]; + const DIRECTIVE = { + className: 'meta', + variants: [ + { + begin: /\{\$/, + end: /\}/ + }, + { + begin: /\(\*\$/, + end: /\*\)/ + } + ] + }; + const STRING = { + className: 'string', + begin: /'/, + end: /'/, + contains: [ { begin: /''/ } ] + }; + const NUMBER = { + className: 'number', + relevance: 0, + // Source: https://www.freepascal.org/docs-html/ref/refse6.html + variants: [ + { + // Regular numbers, e.g., 123, 123.456. + match: /\b\d[\d_]*(\.\d[\d_]*)?/ }, + { + // Hexadecimal notation, e.g., $7F. + match: /\$[\dA-Fa-f_]+/ }, + { + // Hexadecimal literal with no digits + match: /\$/, + relevance: 0 }, + { + // Octal notation, e.g., &42. + match: /&[0-7][0-7_]*/ }, + { + // Binary notation, e.g., %1010. + match: /%[01_]+/ }, + { + // Binary literal with no digits + match: /%/, + relevance: 0 } + ] + }; + const CHAR_STRING = { + className: 'string', + variants: [ + { match: /#\d[\d_]*/ }, + { match: /#\$[\dA-Fa-f][\dA-Fa-f_]*/ }, + { match: /#&[0-7][0-7_]*/ }, + { match: /#%[01][01_]*/ } + ] + }; + const CLASS = { + begin: hljs.IDENT_RE + '\\s*=\\s*class\\s*\\(', + returnBegin: true, + contains: [ hljs.TITLE_MODE ] + }; + const FUNCTION = { + className: 'function', + beginKeywords: 'function constructor destructor procedure', + end: /[:;]/, + keywords: 'function constructor|10 destructor|10 procedure|10', + contains: [ + hljs.TITLE_MODE, + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: [ + STRING, + CHAR_STRING, + DIRECTIVE + ].concat(COMMENT_MODES) + }, + DIRECTIVE + ].concat(COMMENT_MODES) + }; + return { + name: 'Delphi', + aliases: [ + 'dpr', + 'dfm', + 'pas', + 'pascal' + ], + case_insensitive: true, + keywords: KEYWORDS, + illegal: /"|\$[G-Zg-z]|\/\*|<\/|\|/, + contains: [ + STRING, + CHAR_STRING, + NUMBER, + CLASS, + FUNCTION, + DIRECTIVE + ].concat(COMMENT_MODES) + }; +} + +module.exports = delphi; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/diff.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/diff.js ***! + \*************************************************************/ +(module) { + +/* +Language: Diff +Description: Unified and context diff +Author: Vasily Polovnyov +Website: https://www.gnu.org/software/diffutils/ +Category: common +*/ + +/** @type LanguageFn */ +function diff(hljs) { + const regex = hljs.regex; + return { + name: 'Diff', + aliases: [ 'patch' ], + contains: [ + { + className: 'meta', + relevance: 10, + match: regex.either( + /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, + /^\*\*\* +\d+,\d+ +\*\*\*\*$/, + /^--- +\d+,\d+ +----$/ + ) + }, + { + className: 'comment', + variants: [ + { + begin: regex.either( + /Index: /, + /^index/, + /={3,}/, + /^-{3}/, + /^\*{3} /, + /^\+{3}/, + /^diff --git/ + ), + end: /$/ + }, + { match: /^\*{15}$/ } + ] + }, + { + className: 'addition', + begin: /^\+/, + end: /$/ + }, + { + className: 'deletion', + begin: /^-/, + end: /$/ + }, + { + className: 'addition', + begin: /^!/, + end: /$/ + } + ] + }; +} + +module.exports = diff; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/django.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/django.js ***! + \***************************************************************/ +(module) { + +/* +Language: Django +Description: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. +Requires: xml.js +Author: Ivan Sagalaev +Contributors: Ilya Baryshev +Website: https://www.djangoproject.com +Category: template +*/ + +/** @type LanguageFn */ +function django(hljs) { + const FILTER = { + begin: /\|[A-Za-z]+:?/, + keywords: { name: + 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' + + 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' + + 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' + + 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' + + 'dictsortreversed default_if_none pluralize lower join center default ' + + 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' + + 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' + + 'localtime utc timezone' }, + contains: [ + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE + ] + }; + + return { + name: 'Django', + aliases: [ 'jinja' ], + case_insensitive: true, + subLanguage: 'xml', + contains: [ + hljs.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/), + hljs.COMMENT(/\{#/, /#\}/), + { + className: 'template-tag', + begin: /\{%/, + end: /%\}/, + contains: [ + { + className: 'name', + begin: /\w+/, + keywords: { name: + 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' + + 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' + + 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' + + 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' + + 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' + + 'plural get_current_language language get_available_languages ' + + 'get_current_language_bidi get_language_info get_language_info_list localize ' + + 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' + + 'verbatim' }, + starts: { + endsWithParent: true, + keywords: 'in by as', + contains: [ FILTER ], + relevance: 0 + } + } + ] + }, + { + className: 'template-variable', + begin: /\{\{/, + end: /\}\}/, + contains: [ FILTER ] + } + ] + }; +} + +module.exports = django; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dns.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dns.js ***! + \************************************************************/ +(module) { + +/* +Language: DNS Zone +Author: Tim Schumacher +Category: config +Website: https://en.wikipedia.org/wiki/Zone_file +*/ + +/** @type LanguageFn */ +function dns(hljs) { + const KEYWORDS = [ + "IN", + "A", + "AAAA", + "AFSDB", + "APL", + "CAA", + "CDNSKEY", + "CDS", + "CERT", + "CNAME", + "DHCID", + "DLV", + "DNAME", + "DNSKEY", + "DS", + "HIP", + "IPSECKEY", + "KEY", + "KX", + "LOC", + "MX", + "NAPTR", + "NS", + "NSEC", + "NSEC3", + "NSEC3PARAM", + "PTR", + "RRSIG", + "RP", + "SIG", + "SOA", + "SRV", + "SSHFP", + "TA", + "TKEY", + "TLSA", + "TSIG", + "TXT" + ]; + return { + name: 'DNS Zone', + aliases: [ + 'bind', + 'zone' + ], + keywords: KEYWORDS, + contains: [ + hljs.COMMENT(';', '$', { relevance: 0 }), + { + className: 'meta', + begin: /^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/ + }, + // IPv6 + { + className: 'number', + begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b' + }, + // IPv4 + { + className: 'number', + begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b' + }, + hljs.inherit(hljs.NUMBER_MODE, { begin: /\b\d+[dhwm]?/ }) + ] + }; +} + +module.exports = dns; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dockerfile.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dockerfile.js ***! + \*******************************************************************/ +(module) { + +/* +Language: Dockerfile +Requires: bash.js +Author: Alexis Hénaut +Description: language definition for Dockerfile files +Website: https://docs.docker.com/engine/reference/builder/ +Category: config +*/ + +/** @type LanguageFn */ +function dockerfile(hljs) { + const KEYWORDS = [ + "from", + "maintainer", + "expose", + "env", + "arg", + "user", + "onbuild", + "stopsignal" + ]; + return { + name: 'Dockerfile', + aliases: [ 'docker' ], + case_insensitive: true, + keywords: KEYWORDS, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + { + beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell', + starts: { + end: /[^\\]$/, + subLanguage: 'bash' + } + } + ], + illegal: ' +Contributors: Anton Kochkov +Website: https://en.wikipedia.org/wiki/Batch_file +Category: scripting +*/ + +/** @type LanguageFn */ +function dos(hljs) { + const COMMENT = hljs.COMMENT( + /^\s*@?rem\b/, /$/, + { relevance: 10 } + ); + const LABEL = { + className: 'symbol', + begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)', + relevance: 0 + }; + const KEYWORDS = [ + "if", + "else", + "goto", + "for", + "in", + "do", + "call", + "exit", + "not", + "exist", + "errorlevel", + "defined", + "equ", + "neq", + "lss", + "leq", + "gtr", + "geq" + ]; + const BUILT_INS = [ + "prn", + "nul", + "lpt3", + "lpt2", + "lpt1", + "con", + "com4", + "com3", + "com2", + "com1", + "aux", + "shift", + "cd", + "dir", + "echo", + "setlocal", + "endlocal", + "set", + "pause", + "copy", + "append", + "assoc", + "at", + "attrib", + "break", + "cacls", + "cd", + "chcp", + "chdir", + "chkdsk", + "chkntfs", + "cls", + "cmd", + "color", + "comp", + "compact", + "convert", + "date", + "dir", + "diskcomp", + "diskcopy", + "doskey", + "erase", + "fs", + "find", + "findstr", + "format", + "ftype", + "graftabl", + "help", + "keyb", + "label", + "md", + "mkdir", + "mode", + "more", + "move", + "path", + "pause", + "print", + "popd", + "pushd", + "promt", + "rd", + "recover", + "rem", + "rename", + "replace", + "restore", + "rmdir", + "shift", + "sort", + "start", + "subst", + "time", + "title", + "tree", + "type", + "ver", + "verify", + "vol", + // winutils + "ping", + "net", + "ipconfig", + "taskkill", + "xcopy", + "ren", + "del" + ]; + return { + name: 'Batch file (DOS)', + aliases: [ + 'bat', + 'cmd' + ], + case_insensitive: true, + illegal: /\/\*/, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS + }, + contains: [ + { + className: 'variable', + begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/ + }, + { + className: 'function', + begin: LABEL.begin, + end: 'goto:eof', + contains: [ + hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }), + COMMENT + ] + }, + { + className: 'number', + begin: '\\b\\d+', + relevance: 0 + }, + COMMENT + ] + }; +} + +module.exports = dos; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dsconfig.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dsconfig.js ***! + \*****************************************************************/ +(module) { + +/* + Language: dsconfig + Description: dsconfig batch configuration language for LDAP directory servers + Contributors: Jacob Childress + Category: enterprise, config + */ + +/** @type LanguageFn */ +function dsconfig(hljs) { + const QUOTED_PROPERTY = { + className: 'string', + begin: /"/, + end: /"/ + }; + const APOS_PROPERTY = { + className: 'string', + begin: /'/, + end: /'/ + }; + const UNQUOTED_PROPERTY = { + className: 'string', + begin: /[\w\-?]+:\w+/, + end: /\W/, + relevance: 0 + }; + const VALUELESS_PROPERTY = { + className: 'string', + begin: /\w+(\-\w+)*/, + end: /(?=\W)/, + relevance: 0 + }; + + return { + keywords: 'dsconfig', + contains: [ + { + className: 'keyword', + begin: '^dsconfig', + end: /\s/, + excludeEnd: true, + relevance: 10 + }, + { + className: 'built_in', + begin: /(list|create|get|set|delete)-(\w+)/, + end: /\s/, + excludeEnd: true, + illegal: '!@#$%^&*()', + relevance: 10 + }, + { + className: 'built_in', + begin: /--(\w+)/, + end: /\s/, + excludeEnd: true + }, + QUOTED_PROPERTY, + APOS_PROPERTY, + UNQUOTED_PROPERTY, + VALUELESS_PROPERTY, + hljs.HASH_COMMENT_MODE + ] + }; +} + +module.exports = dsconfig; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dts.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dts.js ***! + \************************************************************/ +(module) { + +/* +Language: Device Tree +Description: *.dts files used in the Linux kernel +Author: Martin Braun , Moritz Fischer +Website: https://elinux.org/Device_Tree_Reference +Category: config +*/ + +/** @type LanguageFn */ +function dts(hljs) { + const STRINGS = { + className: 'string', + variants: [ + hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?"' }), + { + begin: '(u8?|U)?R"', + end: '"', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '\'\\\\?.', + end: '\'', + illegal: '.' + } + ] + }; + + const NUMBERS = { + className: 'number', + variants: [ + { begin: '\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)' }, + { begin: hljs.C_NUMBER_RE } + ], + relevance: 0 + }; + + const PREPROCESSOR = { + className: 'meta', + begin: '#', + end: '$', + keywords: { keyword: 'if else elif endif define undef ifdef ifndef' }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + { + beginKeywords: 'include', + end: '$', + keywords: { keyword: 'include' }, + contains: [ + hljs.inherit(STRINGS, { className: 'string' }), + { + className: 'string', + begin: '<', + end: '>', + illegal: '\\n' + } + ] + }, + STRINGS, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; + + const REFERENCE = { + className: 'variable', + begin: /&[a-z\d_]*\b/ + }; + + const KEYWORD = { + className: 'keyword', + begin: '/[a-z][a-z\\d-]*/' + }; + + const LABEL = { + className: 'symbol', + begin: '^\\s*[a-zA-Z_][a-zA-Z\\d_]*:' + }; + + const CELL_PROPERTY = { + className: 'params', + relevance: 0, + begin: '<', + end: '>', + contains: [ + NUMBERS, + REFERENCE + ] + }; + + const NODE = { + className: 'title.class', + begin: /[a-zA-Z_][a-zA-Z\d_@-]*(?=\s\{)/, + relevance: 0.2 + }; + + const ROOT_NODE = { + className: 'title.class', + begin: /^\/(?=\s*\{)/, + relevance: 10 + }; + + // TODO: `attribute` might be the right scope here, unsure + // I'm not sure if all these key names have semantic meaning or not + const ATTR_NO_VALUE = { + match: /[a-z][a-z-,]+(?=;)/, + relevance: 0, + scope: "attr" + }; + const ATTR = { + relevance: 0, + match: [ + /[a-z][a-z-,]+/, + /\s*/, + /=/ + ], + scope: { + 1: "attr", + 3: "operator" + } + }; + + const PUNC = { + scope: "punctuation", + relevance: 0, + // `};` combined is just to avoid tons of useless punctuation nodes + match: /\};|[;{}]/ + }; + + return { + name: 'Device Tree', + contains: [ + ROOT_NODE, + REFERENCE, + KEYWORD, + LABEL, + NODE, + ATTR, + ATTR_NO_VALUE, + CELL_PROPERTY, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + NUMBERS, + STRINGS, + PREPROCESSOR, + PUNC, + { + begin: hljs.IDENT_RE + '::', + keywords: "" + } + ] + }; +} + +module.exports = dts; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/dust.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/dust.js ***! + \*************************************************************/ +(module) { + +/* +Language: Dust +Requires: xml.js +Author: Michael Allen +Description: Matcher for dust.js templates. +Website: https://www.dustjs.com +Category: template +*/ + +/** @type LanguageFn */ +function dust(hljs) { + const EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep'; + return { + name: 'Dust', + aliases: [ 'dst' ], + case_insensitive: true, + subLanguage: 'xml', + contains: [ + { + className: 'template-tag', + begin: /\{[#\/]/, + end: /\}/, + illegal: /;/, + contains: [ + { + className: 'name', + begin: /[a-zA-Z\.-]+/, + starts: { + endsWithParent: true, + relevance: 0, + contains: [ hljs.QUOTE_STRING_MODE ] + } + } + ] + }, + { + className: 'template-variable', + begin: /\{/, + end: /\}/, + illegal: /;/, + keywords: EXPRESSION_KEYWORDS + } + ] + }; +} + +module.exports = dust; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ebnf.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ebnf.js ***! + \*************************************************************/ +(module) { + +/* +Language: Extended Backus-Naur Form +Author: Alex McKibben +Website: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form +Category: syntax +*/ + +/** @type LanguageFn */ +function ebnf(hljs) { + const commentMode = hljs.COMMENT(/\(\*/, /\*\)/); + + const nonTerminalMode = { + className: "attribute", + begin: /^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/ + }; + + const specialSequenceMode = { + className: "meta", + begin: /\?.*\?/ + }; + + const ruleBodyMode = { + begin: /=/, + end: /[.;]/, + contains: [ + commentMode, + specialSequenceMode, + { + // terminals + className: 'string', + variants: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + begin: '`', + end: '`' + } + ] + } + ] + }; + + return { + name: 'Extended Backus-Naur Form', + illegal: /\S/, + contains: [ + commentMode, + nonTerminalMode, + ruleBodyMode + ] + }; +} + +module.exports = ebnf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/elixir.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/elixir.js ***! + \***************************************************************/ +(module) { + +/* +Language: Elixir +Author: Josh Adams +Description: language definition for Elixir source code files (.ex and .exs). Based on ruby language support. +Category: functional +Website: https://elixir-lang.org +*/ + +/** @type LanguageFn */ +function elixir(hljs) { + const regex = hljs.regex; + const ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?'; + const ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; + const KEYWORDS = [ + "after", + "alias", + "and", + "case", + "catch", + "cond", + "defstruct", + "defguard", + "do", + "else", + "end", + "fn", + "for", + "if", + "import", + "in", + "not", + "or", + "quote", + "raise", + "receive", + "require", + "reraise", + "rescue", + "try", + "unless", + "unquote", + "unquote_splicing", + "use", + "when", + "with|0" + ]; + const LITERALS = [ + "false", + "nil", + "true" + ]; + const KWS = { + $pattern: ELIXIR_IDENT_RE, + keyword: KEYWORDS, + literal: LITERALS + }; + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: KWS + }; + const NUMBER = { + className: 'number', + begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[0-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)', + relevance: 0 + }; + // TODO: could be tightened + // https://elixir-lang.readthedocs.io/en/latest/intro/18.html + // but you also need to include closing delemeters in the escape list per + // individual sigil mode from what I can tell, + // ie: \} might or might not be an escape depending on the sigil used + const ESCAPES_RE = /\\[\s\S]/; + // const ESCAPES_RE = /\\["'\\abdefnrstv0]/; + const BACKSLASH_ESCAPE = { + match: ESCAPES_RE, + scope: "char.escape", + relevance: 0 + }; + const SIGIL_DELIMITERS = '[/|([{<"\']'; + const SIGIL_DELIMITER_MODES = [ + { + begin: /"/, + end: /"/ + }, + { + begin: /'/, + end: /'/ + }, + { + begin: /\//, + end: /\// + }, + { + begin: /\|/, + end: /\|/ + }, + { + begin: /\(/, + end: /\)/ + }, + { + begin: /\[/, + end: /\]/ + }, + { + begin: /\{/, + end: /\}/ + }, + { + begin: // + } + ]; + const escapeSigilEnd = (end) => { + return { + scope: "char.escape", + begin: regex.concat(/\\/, end), + relevance: 0 + }; + }; + const LOWERCASE_SIGIL = { + className: 'string', + begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')', + contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, + { contains: [ + escapeSigilEnd(x.end), + BACKSLASH_ESCAPE, + SUBST + ] } + )) + }; + + const UPCASE_SIGIL = { + className: 'string', + begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')', + contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, + { contains: [ escapeSigilEnd(x.end) ] } + )) + }; + + const REGEX_SIGIL = { + className: 'regex', + variants: [ + { + begin: '~r' + '(?=' + SIGIL_DELIMITERS + ')', + contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, + { + end: regex.concat(x.end, /[uismxfU]{0,7}/), + contains: [ + escapeSigilEnd(x.end), + BACKSLASH_ESCAPE, + SUBST + ] + } + )) + }, + { + begin: '~R' + '(?=' + SIGIL_DELIMITERS + ')', + contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, + { + end: regex.concat(x.end, /[uismxfU]{0,7}/), + contains: [ escapeSigilEnd(x.end) ] + }) + ) + } + ] + }; + + const STRING = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + variants: [ + { + begin: /"""/, + end: /"""/ + }, + { + begin: /'''/, + end: /'''/ + }, + { + begin: /~S"""/, + end: /"""/, + contains: [] // override default + }, + { + begin: /~S"/, + end: /"/, + contains: [] // override default + }, + { + begin: /~S'''/, + end: /'''/, + contains: [] // override default + }, + { + begin: /~S'/, + end: /'/, + contains: [] // override default + }, + { + begin: /'/, + end: /'/ + }, + { + begin: /"/, + end: /"/ + } + ] + }; + const FUNCTION = { + className: 'function', + beginKeywords: 'def defp defmacro defmacrop', + end: /\B\b/, // the mode is ended by the title + contains: [ + hljs.inherit(hljs.TITLE_MODE, { + begin: ELIXIR_IDENT_RE, + endsParent: true + }) + ] + }; + const CLASS = hljs.inherit(FUNCTION, { + className: 'class', + beginKeywords: 'defimpl defmodule defprotocol defrecord', + end: /\bdo\b|$|;/ + }); + const ELIXIR_DEFAULT_CONTAINS = [ + STRING, + REGEX_SIGIL, + UPCASE_SIGIL, + LOWERCASE_SIGIL, + hljs.HASH_COMMENT_MODE, + CLASS, + FUNCTION, + { begin: '::' }, + { + className: 'symbol', + begin: ':(?![\\s:])', + contains: [ + STRING, + { begin: ELIXIR_METHOD_RE } + ], + relevance: 0 + }, + { + className: 'symbol', + begin: ELIXIR_IDENT_RE + ':(?!:)', + relevance: 0 + }, + { // Usage of a module, struct, etc. + className: 'title.class', + begin: /(\b[A-Z][a-zA-Z0-9_]+)/, + relevance: 0 + }, + NUMBER, + { + className: 'variable', + begin: '(\\$\\W)|((\\$|@@?)(\\w+))' + } + // -> has been removed, capnproto always uses this grammar construct + ]; + SUBST.contains = ELIXIR_DEFAULT_CONTAINS; + + return { + name: 'Elixir', + aliases: [ + 'ex', + 'exs' + ], + keywords: KWS, + contains: ELIXIR_DEFAULT_CONTAINS + }; +} + +module.exports = elixir; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/elm.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/elm.js ***! + \************************************************************/ +(module) { + +/* +Language: Elm +Author: Janis Voigtlaender +Website: https://elm-lang.org +Category: functional +*/ + +/** @type LanguageFn */ +function elm(hljs) { + const COMMENT = { variants: [ + hljs.COMMENT('--', '$'), + hljs.COMMENT( + /\{-/, + /-\}/, + { contains: [ 'self' ] } + ) + ] }; + + const CONSTRUCTOR = { + className: 'type', + begin: '\\b[A-Z][\\w\']*', // TODO: other constructors (built-in, infix). + relevance: 0 + }; + + const LIST = { + begin: '\\(', + end: '\\)', + illegal: '"', + contains: [ + { + className: 'type', + begin: '\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?' + }, + COMMENT + ] + }; + + const RECORD = { + begin: /\{/, + end: /\}/, + contains: LIST.contains + }; + + const CHARACTER = { + className: 'string', + begin: '\'\\\\?.', + end: '\'', + illegal: '.' + }; + + const KEYWORDS = [ + "let", + "in", + "if", + "then", + "else", + "case", + "of", + "where", + "module", + "import", + "exposing", + "type", + "alias", + "as", + "infix", + "infixl", + "infixr", + "port", + "effect", + "command", + "subscription" + ]; + + return { + name: 'Elm', + keywords: KEYWORDS, + contains: [ + + // Top-level constructions. + + { + beginKeywords: 'port effect module', + end: 'exposing', + keywords: 'port effect module where command subscription exposing', + contains: [ + LIST, + COMMENT + ], + illegal: '\\W\\.|;' + }, + { + begin: 'import', + end: '$', + keywords: 'import as exposing', + contains: [ + LIST, + COMMENT + ], + illegal: '\\W\\.|;' + }, + { + begin: 'type', + end: '$', + keywords: 'type alias', + contains: [ + CONSTRUCTOR, + LIST, + RECORD, + COMMENT + ] + }, + { + beginKeywords: 'infix infixl infixr', + end: '$', + contains: [ + hljs.C_NUMBER_MODE, + COMMENT + ] + }, + { + begin: 'port', + end: '$', + keywords: 'port', + contains: [ COMMENT ] + }, + + // Literals and names. + CHARACTER, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + CONSTRUCTOR, + hljs.inherit(hljs.TITLE_MODE, { begin: '^[_a-z][\\w\']*' }), + COMMENT, + + { // No markup, relevance booster + begin: '->|<-' } + ], + illegal: /;/ + }; +} + +module.exports = elm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/erb.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/erb.js ***! + \************************************************************/ +(module) { + +/* +Language: ERB (Embedded Ruby) +Requires: xml.js, ruby.js +Author: Lucas Mazza +Contributors: Kassio Borges +Description: "Bridge" language defining fragments of Ruby in HTML within <% .. %> +Website: https://ruby-doc.org/stdlib-2.6.5/libdoc/erb/rdoc/ERB.html +Category: template +*/ + +/** @type LanguageFn */ +function erb(hljs) { + return { + name: 'ERB', + subLanguage: 'xml', + contains: [ + hljs.COMMENT('<%#', '%>'), + { + begin: '<%[%=-]?', + end: '[%-]?%>', + subLanguage: 'ruby', + excludeBegin: true, + excludeEnd: true + } + ] + }; +} + +module.exports = erb; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/erlang-repl.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/erlang-repl.js ***! + \********************************************************************/ +(module) { + +/* +Language: Erlang REPL +Author: Sergey Ignatov +Website: https://www.erlang.org +Category: functional +*/ + +/** @type LanguageFn */ +function erlangRepl(hljs) { + const regex = hljs.regex; + return { + name: 'Erlang REPL', + keywords: { + built_in: + 'spawn spawn_link self', + keyword: + 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' + + 'let not of or orelse|10 query receive rem try when xor' + }, + contains: [ + { + className: 'meta.prompt', + begin: '^[0-9]+> ', + relevance: 10 + }, + hljs.COMMENT('%', '$'), + { + className: 'number', + begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', + relevance: 0 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { begin: regex.concat( + /\?(::)?/, + /([A-Z]\w*)/, // at least one identifier + /((::)[A-Z]\w*)*/ // perhaps more + ) }, + { begin: '->' }, + { begin: 'ok' }, + { begin: '!' }, + { + begin: '(\\b[a-z\'][a-zA-Z0-9_\']*:[a-z\'][a-zA-Z0-9_\']*)|(\\b[a-z\'][a-zA-Z0-9_\']*)', + relevance: 0 + }, + { + begin: '[A-Z][a-zA-Z0-9_\']*', + relevance: 0 + } + ] + }; +} + +module.exports = erlangRepl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/erlang.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/erlang.js ***! + \***************************************************************/ +(module) { + +/* +Language: Erlang +Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing. +Author: Nikolay Zakharov , Dmitry Kovega +Website: https://www.erlang.org +Category: functional +*/ + +/** @type LanguageFn */ +function erlang(hljs) { + const BASIC_ATOM_RE = '[a-z\'][a-zA-Z0-9_\']*'; + const FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')'; + const ERLANG_RESERVED = { + keyword: + 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' + + 'let not of orelse|10 query receive rem try when xor maybe else', + literal: + 'false true' + }; + + const COMMENT = hljs.COMMENT('%', '$'); + const NUMBER = { + className: 'number', + begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', + relevance: 0 + }; + const NAMED_FUN = { begin: 'fun\\s+' + BASIC_ATOM_RE + '/\\d+' }; + const FUNCTION_CALL = { + begin: FUNCTION_NAME_RE + '\\(', + end: '\\)', + returnBegin: true, + relevance: 0, + contains: [ + { + begin: FUNCTION_NAME_RE, + relevance: 0 + }, + { + begin: '\\(', + end: '\\)', + endsWithParent: true, + returnEnd: true, + relevance: 0 + // "contains" defined later + } + ] + }; + const TUPLE = { + begin: /\{/, + end: /\}/, + relevance: 0 + // "contains" defined later + }; + const VAR1 = { + begin: '\\b_([A-Z][A-Za-z0-9_]*)?', + relevance: 0 + }; + const VAR2 = { + begin: '[A-Z][a-zA-Z0-9_]*', + relevance: 0 + }; + const RECORD_ACCESS = { + begin: '#' + hljs.UNDERSCORE_IDENT_RE, + relevance: 0, + returnBegin: true, + contains: [ + { + begin: '#' + hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }, + { + begin: /\{/, + end: /\}/, + relevance: 0 + // "contains" defined later + } + ] + }; + const CHAR_LITERAL = { + scope: 'string', + match: /\$(\\([^0-9]|[0-9]{1,3}|)|.)/, + }; + const TRIPLE_QUOTE = { + scope: 'string', + match: /"""("*)(?!")[\s\S]*?"""\1/, + }; + + const SIGIL = { + scope: 'string', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + {match: /~\w?"""("*)(?!")[\s\S]*?"""\1/}, + {begin: /~\w?\(/, end: /\)/}, + {begin: /~\w?\[/, end: /\]/}, + {begin: /~\w?{/, end: /}/}, + {begin: /~\w?/}, + {begin: /~\w?\//, end: /\//}, + {begin: /~\w?\|/, end: /\|/}, + {begin: /~\w?'/, end: /'/}, + {begin: /~\w?"/, end: /"/}, + {begin: /~\w?`/, end: /`/}, + {begin: /~\w?#/, end: /#/}, + ], + }; + + const BLOCK_STATEMENTS = { + beginKeywords: 'fun receive if try case maybe', + end: 'end', + keywords: ERLANG_RESERVED + }; + BLOCK_STATEMENTS.contains = [ + COMMENT, + NAMED_FUN, + hljs.inherit(hljs.APOS_STRING_MODE, { className: '' }), + BLOCK_STATEMENTS, + FUNCTION_CALL, + SIGIL, + TRIPLE_QUOTE, + hljs.QUOTE_STRING_MODE, + NUMBER, + TUPLE, + VAR1, + VAR2, + RECORD_ACCESS, + CHAR_LITERAL + ]; + + const BASIC_MODES = [ + COMMENT, + NAMED_FUN, + BLOCK_STATEMENTS, + FUNCTION_CALL, + SIGIL, + TRIPLE_QUOTE, + hljs.QUOTE_STRING_MODE, + NUMBER, + TUPLE, + VAR1, + VAR2, + RECORD_ACCESS, + CHAR_LITERAL + ]; + FUNCTION_CALL.contains[1].contains = BASIC_MODES; + TUPLE.contains = BASIC_MODES; + RECORD_ACCESS.contains[1].contains = BASIC_MODES; + + const DIRECTIVES = [ + "-module", + "-record", + "-undef", + "-export", + "-ifdef", + "-ifndef", + "-author", + "-copyright", + "-doc", + "-moduledoc", + "-vsn", + "-import", + "-include", + "-include_lib", + "-compile", + "-define", + "-else", + "-endif", + "-file", + "-behaviour", + "-behavior", + "-spec", + "-on_load", + "-nifs", + ]; + + const PARAMS = { + className: 'params', + begin: '\\(', + end: '\\)', + contains: BASIC_MODES + }; + + return { + name: 'Erlang', + aliases: [ 'erl' ], + keywords: ERLANG_RESERVED, + illegal: '(', + returnBegin: true, + illegal: '\\(|#|//|/\\*|\\\\|:|;', + contains: [ + PARAMS, + hljs.inherit(hljs.TITLE_MODE, { begin: BASIC_ATOM_RE }) + ], + starts: { + end: ';|\\.', + keywords: ERLANG_RESERVED, + contains: BASIC_MODES + } + }, + COMMENT, + { + begin: '^-', + end: '\\.', + relevance: 0, + excludeEnd: true, + returnBegin: true, + keywords: { + $pattern: '-' + hljs.IDENT_RE, + keyword: DIRECTIVES.map(x => `${x}|1.5`).join(" ") + }, + contains: [ + PARAMS, + SIGIL, + TRIPLE_QUOTE, + hljs.QUOTE_STRING_MODE + ] + }, + NUMBER, + SIGIL, + TRIPLE_QUOTE, + hljs.QUOTE_STRING_MODE, + RECORD_ACCESS, + VAR1, + VAR2, + TUPLE, + CHAR_LITERAL, + { begin: /\.$/ } // relevance booster + ] + }; +} + +module.exports = erlang; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/excel.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/excel.js ***! + \**************************************************************/ +(module) { + +/* +Language: Excel formulae +Author: Victor Zhou +Description: Excel formulae +Website: https://products.office.com/en-us/excel/ +Category: enterprise +*/ + +/** @type LanguageFn */ +function excel(hljs) { + // built-in functions imported from https://web.archive.org/web/20241205190205/https://support.microsoft.com/en-us/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 + const BUILT_INS = [ + "ABS", + "ACCRINT", + "ACCRINTM", + "ACOS", + "ACOSH", + "ACOT", + "ACOTH", + "AGGREGATE", + "ADDRESS", + "AMORDEGRC", + "AMORLINC", + "AND", + "ARABIC", + "AREAS", + "ARRAYTOTEXT", + "ASC", + "ASIN", + "ASINH", + "ATAN", + "ATAN2", + "ATANH", + "AVEDEV", + "AVERAGE", + "AVERAGEA", + "AVERAGEIF", + "AVERAGEIFS", + "BAHTTEXT", + "BASE", + "BESSELI", + "BESSELJ", + "BESSELK", + "BESSELY", + "BETADIST", + "BETA.DIST", + "BETAINV", + "BETA.INV", + "BIN2DEC", + "BIN2HEX", + "BIN2OCT", + "BINOMDIST", + "BINOM.DIST", + "BINOM.DIST.RANGE", + "BINOM.INV", + "BITAND", + "BITLSHIFT", + "BITOR", + "BITRSHIFT", + "BITXOR", + "BYCOL", + "BYROW", + "CALL", + "CEILING", + "CEILING.MATH", + "CEILING.PRECISE", + "CELL", + "CHAR", + "CHIDIST", + "CHIINV", + "CHITEST", + "CHISQ.DIST", + "CHISQ.DIST.RT", + "CHISQ.INV", + "CHISQ.INV.RT", + "CHISQ.TEST", + "CHOOSE", + "CHOOSECOLS", + "CHOOSEROWS", + "CLEAN", + "CODE", + "COLUMN", + "COLUMNS", + "COMBIN", + "COMBINA", + "COMPLEX", + "CONCAT", + "CONCATENATE", + "CONFIDENCE", + "CONFIDENCE.NORM", + "CONFIDENCE.T", + "CONVERT", + "CORREL", + "COS", + "COSH", + "COT", + "COTH", + "COUNT", + "COUNTA", + "COUNTBLANK", + "COUNTIF", + "COUNTIFS", + "COUPDAYBS", + "COUPDAYS", + "COUPDAYSNC", + "COUPNCD", + "COUPNUM", + "COUPPCD", + "COVAR", + "COVARIANCE.P", + "COVARIANCE.S", + "CRITBINOM", + "CSC", + "CSCH", + "CUBEKPIMEMBER", + "CUBEMEMBER", + "CUBEMEMBERPROPERTY", + "CUBERANKEDMEMBER", + "CUBESET", + "CUBESETCOUNT", + "CUBEVALUE", + "CUMIPMT", + "CUMPRINC", + "DATE", + "DATEDIF", + "DATEVALUE", + "DAVERAGE", + "DAY", + "DAYS", + "DAYS360", + "DB", + "DBCS", + "DCOUNT", + "DCOUNTA", + "DDB", + "DEC2BIN", + "DEC2HEX", + "DEC2OCT", + "DECIMAL", + "DEGREES", + "DELTA", + "DEVSQ", + "DGET", + "DISC", + "DMAX", + "DMIN", + "DOLLAR", + "DOLLARDE", + "DOLLARFR", + "DPRODUCT", + "DROP", + "DSTDEV", + "DSTDEVP", + "DSUM", + "DURATION", + "DVAR", + "DVARP", + "EDATE", + "EFFECT", + "ENCODEURL", + "EOMONTH", + "ERF", + "ERF.PRECISE", + "ERFC", + "ERFC.PRECISE", + "ERROR.TYPE", + "EUROCONVERT", + "EVEN", + "EXACT", + "EXP", + "EXPAND", + "EXPON.DIST", + "EXPONDIST", + "FACT", + "FACTDOUBLE", + "FALSE", + "F.DIST", + "FDIST", + "F.DIST.RT", + "FILTER", + "FILTERXML", + "FIND", + "FINDB", + "F.INV", + "F.INV.RT", + "FINV", + "FISHER", + "FISHERINV", + "FIXED", + "FLOOR", + "FLOOR.MATH", + "FLOOR.PRECISE", + "FORECAST", + "FORECAST.ETS", + "FORECAST.ETS.CONFINT", + "FORECAST.ETS.SEASONALITY", + "FORECAST.ETS.STAT", + "FORECAST.LINEAR", + "FORMULATEXT", + "FREQUENCY", + "F.TEST", + "FTEST", + "FV", + "FVSCHEDULE", + "GAMMA", + "GAMMA.DIST", + "GAMMADIST", + "GAMMA.INV", + "GAMMAINV", + "GAMMALN", + "GAMMALN.PRECISE", + "GAUSS", + "GCD", + "GEOMEAN", + "GESTEP", + "GETPIVOTDATA", + "GROWTH", + "HARMEAN", + "HEX2BIN", + "HEX2DEC", + "HEX2OCT", + "HLOOKUP", + "HOUR", + "HSTACK", + "HYPERLINK", + "HYPGEOM.DIST", + "HYPGEOMDIST", + "IF", + "IFERROR", + "IFNA", + "IFS", + "IMABS", + "IMAGE", + "IMAGINARY", + "IMARGUMENT", + "IMCONJUGATE", + "IMCOS", + "IMCOSH", + "IMCOT", + "IMCSC", + "IMCSCH", + "IMDIV", + "IMEXP", + "IMLN", + "IMLOG10", + "IMLOG2", + "IMPOWER", + "IMPRODUCT", + "IMREAL", + "IMSEC", + "IMSECH", + "IMSIN", + "IMSINH", + "IMSQRT", + "IMSUB", + "IMSUM", + "IMTAN", + "INDEX", + "INDIRECT", + "INFO", + "INT", + "INTERCEPT", + "INTRATE", + "IPMT", + "IRR", + "ISBLANK", + "ISERR", + "ISERROR", + "ISEVEN", + "ISFORMULA", + "ISLOGICAL", + "ISNA", + "ISNONTEXT", + "ISNUMBER", + "ISODD", + "ISOMITTED", + "ISREF", + "ISTEXT", + "ISO.CEILING", + "ISOWEEKNUM", + "ISPMT", + "JIS", + "KURT", + "LAMBDA", + "LARGE", + "LCM", + "LEFT", + "LEFTB", + "LEN", + "LENB", + "LET", + "LINEST", + "LN", + "LOG", + "LOG10", + "LOGEST", + "LOGINV", + "LOGNORM.DIST", + "LOGNORMDIST", + "LOGNORM.INV", + "LOOKUP", + "LOWER", + "MAKEARRAY", + "MAP", + "MATCH", + "MAX", + "MAXA", + "MAXIFS", + "MDETERM", + "MDURATION", + "MEDIAN", + "MID", + "MIDB", + "MIN", + "MINIFS", + "MINA", + "MINUTE", + "MINVERSE", + "MIRR", + "MMULT", + "MOD", + "MODE", + "MODE.MULT", + "MODE.SNGL", + "MONTH", + "MROUND", + "MULTINOMIAL", + "MUNIT", + "N", + "NA", + "NEGBINOM.DIST", + "NEGBINOMDIST", + "NETWORKDAYS", + "NETWORKDAYS.INTL", + "NOMINAL", + "NORM.DIST", + "NORMDIST", + "NORMINV", + "NORM.INV", + "NORM.S.DIST", + "NORMSDIST", + "NORM.S.INV", + "NORMSINV", + "NOT", + "NOW", + "NPER", + "NPV", + "NUMBERVALUE", + "OCT2BIN", + "OCT2DEC", + "OCT2HEX", + "ODD", + "ODDFPRICE", + "ODDFYIELD", + "ODDLPRICE", + "ODDLYIELD", + "OFFSET", + "OR", + "PDURATION", + "PEARSON", + "PERCENTILE.EXC", + "PERCENTILE.INC", + "PERCENTILE", + "PERCENTRANK.EXC", + "PERCENTRANK.INC", + "PERCENTRANK", + "PERMUT", + "PERMUTATIONA", + "PHI", + "PHONETIC", + "PI", + "PMT", + "POISSON.DIST", + "POISSON", + "POWER", + "PPMT", + "PRICE", + "PRICEDISC", + "PRICEMAT", + "PROB", + "PRODUCT", + "PROPER", + "PV", + "QUARTILE", + "QUARTILE.EXC", + "QUARTILE.INC", + "QUOTIENT", + "RADIANS", + "RAND", + "RANDARRAY", + "RANDBETWEEN", + "RANK.AVG", + "RANK.EQ", + "RANK", + "RATE", + "RECEIVED", + "REDUCE", + "REGISTER.ID", + "REPLACE", + "REPLACEB", + "REPT", + "RIGHT", + "RIGHTB", + "ROMAN", + "ROUND", + "ROUNDDOWN", + "ROUNDUP", + "ROW", + "ROWS", + "RRI", + "RSQ", + "RTD", + "SCAN", + "SEARCH", + "SEARCHB", + "SEC", + "SECH", + "SECOND", + "SEQUENCE", + "SERIESSUM", + "SHEET", + "SHEETS", + "SIGN", + "SIN", + "SINH", + "SKEW", + "SKEW.P", + "SLN", + "SLOPE", + "SMALL", + "SORT", + "SORTBY", + "SQRT", + "SQRTPI", + "SQL.REQUEST", + "STANDARDIZE", + "STOCKHISTORY", + "STDEV", + "STDEV.P", + "STDEV.S", + "STDEVA", + "STDEVP", + "STDEVPA", + "STEYX", + "SUBSTITUTE", + "SUBTOTAL", + "SUM", + "SUMIF", + "SUMIFS", + "SUMPRODUCT", + "SUMSQ", + "SUMX2MY2", + "SUMX2PY2", + "SUMXMY2", + "SWITCH", + "SYD", + "T", + "TAN", + "TANH", + "TAKE", + "TBILLEQ", + "TBILLPRICE", + "TBILLYIELD", + "T.DIST", + "T.DIST.2T", + "T.DIST.RT", + "TDIST", + "TEXT", + "TEXTAFTER", + "TEXTBEFORE", + "TEXTJOIN", + "TEXTSPLIT", + "TIME", + "TIMEVALUE", + "T.INV", + "T.INV.2T", + "TINV", + "TOCOL", + "TOROW", + "TODAY", + "TRANSPOSE", + "TREND", + "TRIM", + "TRIMMEAN", + "TRUE", + "TRUNC", + "T.TEST", + "TTEST", + "TYPE", + "UNICHAR", + "UNICODE", + "UNIQUE", + "UPPER", + "VALUE", + "VALUETOTEXT", + "VAR", + "VAR.P", + "VAR.S", + "VARA", + "VARP", + "VARPA", + "VDB", + "VLOOKUP", + "VSTACK", + "WEBSERVICE", + "WEEKDAY", + "WEEKNUM", + "WEIBULL", + "WEIBULL.DIST", + "WORKDAY", + "WORKDAY.INTL", + "WRAPCOLS", + "WRAPROWS", + "XIRR", + "XLOOKUP", + "XMATCH", + "XNPV", + "XOR", + "YEAR", + "YEARFRAC", + "YIELD", + "YIELDDISC", + "YIELDMAT", + "Z.TEST", + "ZTEST" + ]; + return { + name: 'Excel formulae', + aliases: [ + 'xlsx', + 'xls' + ], + case_insensitive: true, + keywords: { + $pattern: /[a-zA-Z][\w\.]*/, + built_in: BUILT_INS + }, + contains: [ + { + /* matches a beginning equal sign found in Excel formula examples */ + begin: /^=/, + end: /[^=]/, + returnEnd: true, + illegal: /=/, /* only allow single equal sign at front of line */ + relevance: 10 + }, + /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */ + { + /* matches a reference to a single cell */ + className: 'symbol', + begin: /\b[A-Z]{1,2}\d+\b/, + end: /[^\d]/, + excludeEnd: true, + relevance: 0 + }, + { + /* matches a reference to a range of cells */ + className: 'symbol', + begin: /[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/, + relevance: 0 + }, + hljs.BACKSLASH_ESCAPE, + hljs.QUOTE_STRING_MODE, + { + className: 'number', + begin: hljs.NUMBER_RE + '(%)?', + relevance: 0 + }, + /* Excel formula comments are done by putting the comment in a function call to N() */ + hljs.COMMENT(/\bN\(/, /\)/, + { + excludeBegin: true, + excludeEnd: true, + illegal: /\n/ + }) + ] + }; +} + +module.exports = excel; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/fix.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/fix.js ***! + \************************************************************/ +(module) { + +/* +Language: FIX +Author: Brent Bradbury +*/ + +/** @type LanguageFn */ +function fix(hljs) { + return { + name: 'FIX', + contains: [ + { + begin: /[^\u2401\u0001]+/, + end: /[\u2401\u0001]/, + excludeEnd: true, + returnBegin: true, + returnEnd: false, + contains: [ + { + begin: /([^\u2401\u0001=]+)/, + end: /=([^\u2401\u0001=]+)/, + returnEnd: true, + returnBegin: false, + className: 'attr' + }, + { + begin: /=/, + end: /([\u2401\u0001])/, + excludeEnd: true, + excludeBegin: true, + className: 'string' + } + ] + } + ], + case_insensitive: true + }; +} + +module.exports = fix; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/flix.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/flix.js ***! + \*************************************************************/ +(module) { + +/* + Language: Flix + Category: functional + Author: Magnus Madsen + Website: https://flix.dev/ + */ + +/** @type LanguageFn */ +function flix(hljs) { + const CHAR = { + className: 'string', + begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/ + }; + + const STRING = { + className: 'string', + variants: [ + { + begin: '"', + end: '"' + } + ] + }; + + const NAME = { + className: 'title', + relevance: 0, + begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/ + }; + + const METHOD = { + className: 'function', + beginKeywords: 'def', + end: /[:={\[(\n;]/, + excludeEnd: true, + contains: [ NAME ] + }; + + return { + name: 'Flix', + keywords: { + keyword: [ + "case", + "class", + "def", + "else", + "enum", + "if", + "impl", + "import", + "in", + "lat", + "rel", + "index", + "let", + "match", + "namespace", + "switch", + "type", + "yield", + "with" + ], + literal: [ + "true", + "false" + ] + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + CHAR, + STRING, + METHOD, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = flix; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/fortran.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/fortran.js ***! + \****************************************************************/ +(module) { + +/* +Language: Fortran +Author: Anthony Scemama +Website: https://en.wikipedia.org/wiki/Fortran +Category: scientific +*/ + +/** @type LanguageFn */ +function fortran(hljs) { + const regex = hljs.regex; + const PARAMS = { + className: 'params', + begin: '\\(', + end: '\\)' + }; + + const COMMENT = { variants: [ + hljs.COMMENT('!', '$', { relevance: 0 }), + // allow FORTRAN 77 style comments + hljs.COMMENT('^C[ ]', '$', { relevance: 0 }), + hljs.COMMENT('^C$', '$', { relevance: 0 }) + ] }; + + // regex in both fortran and irpf90 should match + const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/; + const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/; + const NUMBER = { + className: 'number', + variants: [ + { begin: regex.concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, + { begin: regex.concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, + { begin: regex.concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) } + ], + relevance: 0 + }; + + const FUNCTION_DEF = { + className: 'function', + beginKeywords: 'subroutine function program', + illegal: '[${=\\n]', + contains: [ + hljs.UNDERSCORE_TITLE_MODE, + PARAMS + ] + }; + + const STRING = { + className: 'string', + relevance: 0, + variants: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }; + + const KEYWORDS = [ + "kind", + "do", + "concurrent", + "local", + "shared", + "while", + "private", + "call", + "intrinsic", + "where", + "elsewhere", + "type", + "endtype", + "endmodule", + "endselect", + "endinterface", + "end", + "enddo", + "endif", + "if", + "forall", + "endforall", + "only", + "contains", + "default", + "return", + "stop", + "then", + "block", + "endblock", + "endassociate", + "public", + "subroutine|10", + "function", + "program", + ".and.", + ".or.", + ".not.", + ".le.", + ".eq.", + ".ge.", + ".gt.", + ".lt.", + "goto", + "save", + "else", + "use", + "module", + "select", + "case", + "access", + "blank", + "direct", + "exist", + "file", + "fmt", + "form", + "formatted", + "iostat", + "name", + "named", + "nextrec", + "number", + "opened", + "rec", + "recl", + "sequential", + "status", + "unformatted", + "unit", + "continue", + "format", + "pause", + "cycle", + "exit", + "c_null_char", + "c_alert", + "c_backspace", + "c_form_feed", + "flush", + "wait", + "decimal", + "round", + "iomsg", + "synchronous", + "nopass", + "non_overridable", + "pass", + "protected", + "volatile", + "abstract", + "extends", + "import", + "non_intrinsic", + "value", + "deferred", + "generic", + "final", + "enumerator", + "class", + "associate", + "bind", + "enum", + "c_int", + "c_short", + "c_long", + "c_long_long", + "c_signed_char", + "c_size_t", + "c_int8_t", + "c_int16_t", + "c_int32_t", + "c_int64_t", + "c_int_least8_t", + "c_int_least16_t", + "c_int_least32_t", + "c_int_least64_t", + "c_int_fast8_t", + "c_int_fast16_t", + "c_int_fast32_t", + "c_int_fast64_t", + "c_intmax_t", + "C_intptr_t", + "c_float", + "c_double", + "c_long_double", + "c_float_complex", + "c_double_complex", + "c_long_double_complex", + "c_bool", + "c_char", + "c_null_ptr", + "c_null_funptr", + "c_new_line", + "c_carriage_return", + "c_horizontal_tab", + "c_vertical_tab", + "iso_c_binding", + "c_loc", + "c_funloc", + "c_associated", + "c_f_pointer", + "c_ptr", + "c_funptr", + "iso_fortran_env", + "character_storage_size", + "error_unit", + "file_storage_size", + "input_unit", + "iostat_end", + "iostat_eor", + "numeric_storage_size", + "output_unit", + "c_f_procpointer", + "ieee_arithmetic", + "ieee_support_underflow_control", + "ieee_get_underflow_mode", + "ieee_set_underflow_mode", + "newunit", + "contiguous", + "recursive", + "pad", + "position", + "action", + "delim", + "readwrite", + "eor", + "advance", + "nml", + "interface", + "procedure", + "namelist", + "include", + "sequence", + "elemental", + "pure", + "impure", + "integer", + "real", + "character", + "complex", + "logical", + "codimension", + "dimension", + "allocatable|10", + "parameter", + "external", + "implicit|10", + "none", + "double", + "precision", + "assign", + "intent", + "optional", + "pointer", + "target", + "in", + "out", + "common", + "equivalence", + "data" + ]; + const LITERALS = [ + ".False.", + ".True." + ]; + const BUILT_INS = [ + "alog", + "alog10", + "amax0", + "amax1", + "amin0", + "amin1", + "amod", + "cabs", + "ccos", + "cexp", + "clog", + "csin", + "csqrt", + "dabs", + "dacos", + "dasin", + "datan", + "datan2", + "dcos", + "dcosh", + "ddim", + "dexp", + "dint", + "dlog", + "dlog10", + "dmax1", + "dmin1", + "dmod", + "dnint", + "dsign", + "dsin", + "dsinh", + "dsqrt", + "dtan", + "dtanh", + "float", + "iabs", + "idim", + "idint", + "idnint", + "ifix", + "isign", + "max0", + "max1", + "min0", + "min1", + "sngl", + "algama", + "cdabs", + "cdcos", + "cdexp", + "cdlog", + "cdsin", + "cdsqrt", + "cqabs", + "cqcos", + "cqexp", + "cqlog", + "cqsin", + "cqsqrt", + "dcmplx", + "dconjg", + "derf", + "derfc", + "dfloat", + "dgamma", + "dimag", + "dlgama", + "iqint", + "qabs", + "qacos", + "qasin", + "qatan", + "qatan2", + "qcmplx", + "qconjg", + "qcos", + "qcosh", + "qdim", + "qerf", + "qerfc", + "qexp", + "qgamma", + "qimag", + "qlgama", + "qlog", + "qlog10", + "qmax1", + "qmin1", + "qmod", + "qnint", + "qsign", + "qsin", + "qsinh", + "qsqrt", + "qtan", + "qtanh", + "abs", + "acos", + "aimag", + "aint", + "anint", + "asin", + "atan", + "atan2", + "char", + "cmplx", + "conjg", + "cos", + "cosh", + "exp", + "ichar", + "index", + "int", + "log", + "log10", + "max", + "min", + "nint", + "sign", + "sin", + "sinh", + "sqrt", + "tan", + "tanh", + "print", + "write", + "dim", + "lge", + "lgt", + "lle", + "llt", + "mod", + "nullify", + "allocate", + "deallocate", + "adjustl", + "adjustr", + "all", + "allocated", + "any", + "associated", + "bit_size", + "btest", + "ceiling", + "count", + "cshift", + "date_and_time", + "digits", + "dot_product", + "eoshift", + "epsilon", + "exponent", + "floor", + "fraction", + "huge", + "iand", + "ibclr", + "ibits", + "ibset", + "ieor", + "ior", + "ishft", + "ishftc", + "lbound", + "len_trim", + "matmul", + "maxexponent", + "maxloc", + "maxval", + "merge", + "minexponent", + "minloc", + "minval", + "modulo", + "mvbits", + "nearest", + "pack", + "present", + "product", + "radix", + "random_number", + "random_seed", + "range", + "repeat", + "reshape", + "rrspacing", + "scale", + "scan", + "selected_int_kind", + "selected_real_kind", + "set_exponent", + "shape", + "size", + "spacing", + "spread", + "sum", + "system_clock", + "tiny", + "transpose", + "trim", + "ubound", + "unpack", + "verify", + "achar", + "iachar", + "transfer", + "dble", + "entry", + "dprod", + "cpu_time", + "command_argument_count", + "get_command", + "get_command_argument", + "get_environment_variable", + "is_iostat_end", + "ieee_arithmetic", + "ieee_support_underflow_control", + "ieee_get_underflow_mode", + "ieee_set_underflow_mode", + "is_iostat_eor", + "move_alloc", + "new_line", + "selected_char_kind", + "same_type_as", + "extends_type_of", + "acosh", + "asinh", + "atanh", + "bessel_j0", + "bessel_j1", + "bessel_jn", + "bessel_y0", + "bessel_y1", + "bessel_yn", + "erf", + "erfc", + "erfc_scaled", + "gamma", + "log_gamma", + "hypot", + "norm2", + "atomic_define", + "atomic_ref", + "execute_command_line", + "leadz", + "trailz", + "storage_size", + "merge_bits", + "bge", + "bgt", + "ble", + "blt", + "dshiftl", + "dshiftr", + "findloc", + "iall", + "iany", + "iparity", + "image_index", + "lcobound", + "ucobound", + "maskl", + "maskr", + "num_images", + "parity", + "popcnt", + "poppar", + "shifta", + "shiftl", + "shiftr", + "this_image", + "sync", + "change", + "team", + "co_broadcast", + "co_max", + "co_min", + "co_sum", + "co_reduce" + ]; + return { + name: 'Fortran', + case_insensitive: true, + aliases: [ + 'f90', + 'f95' + ], + keywords: { + $pattern: /\b[a-z][a-z0-9_]+\b|\.[a-z][a-z0-9_]+\./, + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILT_INS + }, + illegal: /\/\*/, + contains: [ + STRING, + FUNCTION_DEF, + // allow `C = value` for assignments so they aren't misdetected + // as Fortran 77 style comments + { + begin: /^C\s*=(?!=)/, + relevance: 0 + }, + COMMENT, + NUMBER + ] + }; +} + +module.exports = fortran; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/fsharp.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/fsharp.js ***! + \***************************************************************/ +(module) { + +/** + * @param {string} value + * @returns {RegExp} + * */ +function escape(value) { + return new RegExp(value.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm'); +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function source(re) { + if (!re) return null; + if (typeof re === "string") return re; + + return re.source; +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function lookahead(re) { + return concat('(?=', re, ')'); +} + +/** + * @param {...(RegExp | string) } args + * @returns {string} + */ +function concat(...args) { + const joined = args.map((x) => source(x)).join(""); + return joined; +} + +/** + * @param { Array } args + * @returns {object} + */ +function stripOptionsFromArgs(args) { + const opts = args[args.length - 1]; + + if (typeof opts === 'object' && opts.constructor === Object) { + args.splice(args.length - 1, 1); + return opts; + } else { + return {}; + } +} + +/** @typedef { {capture?: boolean} } RegexEitherOptions */ + +/** + * Any of the passed expresssions may match + * + * Creates a huge this | this | that | that match + * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args + * @returns {string} + */ +function either(...args) { + /** @type { object & {capture?: boolean} } */ + const opts = stripOptionsFromArgs(args); + const joined = '(' + + (opts.capture ? "" : "?:") + + args.map((x) => source(x)).join("|") + ")"; + return joined; +} + +/* +Language: F# +Author: Jonas Follesø +Contributors: Troy Kershaw , Henrik Feldt , Melvyn Laïly +Website: https://docs.microsoft.com/en-us/dotnet/fsharp/ +Category: functional +*/ + + +/** @type LanguageFn */ +function fsharp(hljs) { + const KEYWORDS = [ + "abstract", + "and", + "as", + "assert", + "base", + "begin", + "class", + "default", + "delegate", + "do", + "done", + "downcast", + "downto", + "elif", + "else", + "end", + "exception", + "extern", + // "false", // literal + "finally", + "fixed", + "for", + "fun", + "function", + "global", + "if", + "in", + "inherit", + "inline", + "interface", + "internal", + "lazy", + "let", + "match", + "member", + "module", + "mutable", + "namespace", + "new", + // "not", // built_in + // "null", // literal + "of", + "open", + "or", + "override", + "private", + "public", + "rec", + "return", + "static", + "struct", + "then", + "to", + // "true", // literal + "try", + "type", + "upcast", + "use", + "val", + "void", + "when", + "while", + "with", + "yield" + ]; + + const BANG_KEYWORD_MODE = { + // monad builder keywords (matches before non-bang keywords) + scope: 'keyword', + match: /\b(yield|return|let|do|match|use)!/ + }; + + const PREPROCESSOR_KEYWORDS = [ + "if", + "else", + "endif", + "line", + "nowarn", + "light", + "r", + "i", + "I", + "load", + "time", + "help", + "quit" + ]; + + const LITERALS = [ + "true", + "false", + "null", + "Some", + "None", + "Ok", + "Error", + "infinity", + "infinityf", + "nan", + "nanf" + ]; + + const SPECIAL_IDENTIFIERS = [ + "__LINE__", + "__SOURCE_DIRECTORY__", + "__SOURCE_FILE__" + ]; + + // Since it's possible to re-bind/shadow names (e.g. let char = 'c'), + // these builtin types should only be matched when a type name is expected. + const KNOWN_TYPES = [ + // basic types + "bool", + "byte", + "sbyte", + "int8", + "int16", + "int32", + "uint8", + "uint16", + "uint32", + "int", + "uint", + "int64", + "uint64", + "nativeint", + "unativeint", + "decimal", + "float", + "double", + "float32", + "single", + "char", + "string", + "unit", + "bigint", + // other native types or lowercase aliases + "option", + "voption", + "list", + "array", + "seq", + "byref", + "exn", + "inref", + "nativeptr", + "obj", + "outref", + "voidptr", + // other important FSharp types + "Result" + ]; + + const BUILTINS = [ + // Somewhat arbitrary list of builtin functions and values. + // Most of them are declared in Microsoft.FSharp.Core + // I tried to stay relevant by adding only the most idiomatic + // and most used symbols that are not already declared as types. + "not", + "ref", + "raise", + "reraise", + "dict", + "readOnlyDict", + "set", + "get", + "enum", + "sizeof", + "typeof", + "typedefof", + "nameof", + "nullArg", + "invalidArg", + "invalidOp", + "id", + "fst", + "snd", + "ignore", + "lock", + "using", + "box", + "unbox", + "tryUnbox", + "printf", + "printfn", + "sprintf", + "eprintf", + "eprintfn", + "fprintf", + "fprintfn", + "failwith", + "failwithf" + ]; + + const ALL_KEYWORDS = { + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILTINS, + 'variable.constant': SPECIAL_IDENTIFIERS + }; + + // (* potentially multi-line Meta Language style comment *) + const ML_COMMENT = + hljs.COMMENT(/\(\*(?!\))/, /\*\)/, { + contains: ["self"] + }); + // Either a multi-line (* Meta Language style comment *) or a single line // C style comment. + const COMMENT = { + variants: [ + ML_COMMENT, + hljs.C_LINE_COMMENT_MODE, + ] + }; + + // Most identifiers can contain apostrophes + const IDENTIFIER_RE = /[a-zA-Z_](\w|')*/; + + const QUOTED_IDENTIFIER = { + scope: 'variable', + begin: /``/, + end: /``/ + }; + + // 'a or ^a where a can be a ``quoted identifier`` + const BEGIN_GENERIC_TYPE_SYMBOL_RE = /\B('|\^)/; + const GENERIC_TYPE_SYMBOL = { + scope: 'symbol', + variants: [ + // the type name is a quoted identifier: + { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, /``.*?``/) }, + // the type name is a normal identifier (we don't use IDENTIFIER_RE because there cannot be another apostrophe here): + { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, hljs.UNDERSCORE_IDENT_RE) } + ], + relevance: 0 + }; + + const makeOperatorMode = function({ includeEqual }) { + // List or symbolic operator characters from the FSharp Spec 4.1, minus the dot, and with `?` added, used for nullable operators. + let allOperatorChars; + if (includeEqual) + allOperatorChars = "!%&*+-/<=>@^|~?"; + else + allOperatorChars = "!%&*+-/<>@^|~?"; + const OPERATOR_CHARS = Array.from(allOperatorChars); + const OPERATOR_CHAR_RE = concat('[', ...OPERATOR_CHARS.map(escape), ']'); + // The lone dot operator is special. It cannot be redefined, and we don't want to highlight it. It can be used as part of a multi-chars operator though. + const OPERATOR_CHAR_OR_DOT_RE = either(OPERATOR_CHAR_RE, /\./); + // When a dot is present, it must be followed by another operator char: + const OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE = concat(OPERATOR_CHAR_OR_DOT_RE, lookahead(OPERATOR_CHAR_OR_DOT_RE)); + const SYMBOLIC_OPERATOR_RE = either( + concat(OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE, OPERATOR_CHAR_OR_DOT_RE, '*'), // Matches at least 2 chars operators + concat(OPERATOR_CHAR_RE, '+'), // Matches at least one char operators + ); + return { + scope: 'operator', + match: either( + // symbolic operators: + SYMBOLIC_OPERATOR_RE, + // other symbolic keywords: + // Type casting and conversion operators: + /:\?>/, + /:\?/, + /:>/, + /:=/, // Reference cell assignment + /::?/, // : or :: + /\$/), // A single $ can be used as an operator + relevance: 0 + }; + }; + + const OPERATOR = makeOperatorMode({ includeEqual: true }); + // This variant is used when matching '=' should end a parent mode: + const OPERATOR_WITHOUT_EQUAL = makeOperatorMode({ includeEqual: false }); + + const makeTypeAnnotationMode = function(prefix, prefixScope) { + return { + begin: concat( // a type annotation is a + prefix, // should be a colon or the 'of' keyword + lookahead( // that has to be followed by + concat( + /\s*/, // optional space + either( // then either of: + /\w/, // word + /'/, // generic type name + /\^/, // generic type name + /#/, // flexible type name + /``/, // quoted type name + /\(/, // parens type expression + /{\|/, // anonymous type annotation + )))), + beginScope: prefixScope, + // BUG: because ending with \n is necessary for some cases, multi-line type annotations are not properly supported. + // Examples where \n is required at the end: + // - abstract member definitions in classes: abstract Property : int * string + // - return type annotations: let f f' = f' () : returnTypeAnnotation + // - record fields definitions: { A : int \n B : string } + end: lookahead( + either( + /\n/, + /=/)), + relevance: 0, + // we need the known types, and we need the type constraint keywords and literals. e.g.: when 'a : null + keywords: hljs.inherit(ALL_KEYWORDS, { type: KNOWN_TYPES }), + contains: [ + COMMENT, + GENERIC_TYPE_SYMBOL, + hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing + OPERATOR_WITHOUT_EQUAL + ] + }; + }; + + const TYPE_ANNOTATION = makeTypeAnnotationMode(/:/, 'operator'); + const DISCRIMINATED_UNION_TYPE_ANNOTATION = makeTypeAnnotationMode(/\bof\b/, 'keyword'); + + // type MyType<'a> = ... + const TYPE_DECLARATION = { + begin: [ + /(^|\s+)/, // prevents matching the following: `match s.stype with` + /type/, + /\s+/, + IDENTIFIER_RE + ], + beginScope: { + 2: 'keyword', + 4: 'title.class' + }, + end: lookahead(/\(|=|$/), + keywords: ALL_KEYWORDS, // match keywords in type constraints. e.g.: when 'a : null + contains: [ + COMMENT, + hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing + GENERIC_TYPE_SYMBOL, + { + // For visual consistency, highlight type brackets as operators. + scope: 'operator', + match: /<|>/ + }, + TYPE_ANNOTATION // generic types can have constraints, which are type annotations. e.g. type MyType<'T when 'T : delegate> = + ] + }; + + const COMPUTATION_EXPRESSION = { + // computation expressions: + scope: 'computation-expression', + // BUG: might conflict with record deconstruction. e.g. let f { Name = name } = name // will highlight f + match: /\b[_a-z]\w*(?=\s*\{)/ + }; + + const PREPROCESSOR = { + // preprocessor directives and fsi commands: + begin: [ + /^\s*/, + concat(/#/, either(...PREPROCESSOR_KEYWORDS)), + /\b/ + ], + beginScope: { 2: 'meta' }, + end: lookahead(/\s|$/) + }; + + // TODO: this definition is missing support for type suffixes and octal notation. + // BUG: range operator without any space is wrongly interpreted as a single number (e.g. 1..10 ) + const NUMBER = { + variants: [ + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE + ] + }; + + // All the following string definitions are potentially multi-line. + // BUG: these definitions are missing support for byte strings (suffixed with B) + + // "..." + const QUOTED_STRING = { + scope: 'string', + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE + ] + }; + // @"..." + const VERBATIM_STRING = { + scope: 'string', + begin: /@"/, + end: /"/, + contains: [ + { + match: /""/ // escaped " + }, + hljs.BACKSLASH_ESCAPE + ] + }; + // """...""" + const TRIPLE_QUOTED_STRING = { + scope: 'string', + begin: /"""/, + end: /"""/, + relevance: 2 + }; + const SUBST = { + scope: 'subst', + begin: /\{/, + end: /\}/, + keywords: ALL_KEYWORDS + }; + // $"...{1+1}..." + const INTERPOLATED_STRING = { + scope: 'string', + begin: /\$"/, + end: /"/, + contains: [ + { + match: /\{\{/ // escaped { + }, + { + match: /\}\}/ // escaped } + }, + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }; + // $@"...{1+1}..." + const INTERPOLATED_VERBATIM_STRING = { + scope: 'string', + begin: /(\$@|@\$)"/, + end: /"/, + contains: [ + { + match: /\{\{/ // escaped { + }, + { + match: /\}\}/ // escaped } + }, + { + match: /""/ + }, + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }; + // $"""...{1+1}...""" + const INTERPOLATED_TRIPLE_QUOTED_STRING = { + scope: 'string', + begin: /\$"""/, + end: /"""/, + contains: [ + { + match: /\{\{/ // escaped { + }, + { + match: /\}\}/ // escaped } + }, + SUBST + ], + relevance: 2 + }; + // '.' + const CHAR_LITERAL = { + scope: 'string', + match: concat( + /'/, + either( + /[^\\']/, // either a single non escaped char... + /\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/ // ...or an escape sequence + ), + /'/ + ) + }; + // F# allows a lot of things inside string placeholders. + // Things that don't currently seem allowed by the compiler: types definition, attributes usage. + // (Strictly speaking, some of the followings are only allowed inside triple quoted interpolated strings...) + SUBST.contains = [ + INTERPOLATED_VERBATIM_STRING, + INTERPOLATED_STRING, + VERBATIM_STRING, + QUOTED_STRING, + CHAR_LITERAL, + BANG_KEYWORD_MODE, + COMMENT, + QUOTED_IDENTIFIER, + TYPE_ANNOTATION, + COMPUTATION_EXPRESSION, + PREPROCESSOR, + NUMBER, + GENERIC_TYPE_SYMBOL, + OPERATOR + ]; + const STRING = { + variants: [ + INTERPOLATED_TRIPLE_QUOTED_STRING, + INTERPOLATED_VERBATIM_STRING, + INTERPOLATED_STRING, + TRIPLE_QUOTED_STRING, + VERBATIM_STRING, + QUOTED_STRING, + CHAR_LITERAL + ] + }; + + return { + name: 'F#', + aliases: [ + 'fs', + 'f#' + ], + keywords: ALL_KEYWORDS, + illegal: /\/\*/, + classNameAliases: { + 'computation-expression': 'keyword' + }, + contains: [ + BANG_KEYWORD_MODE, + STRING, + COMMENT, + QUOTED_IDENTIFIER, + TYPE_DECLARATION, + { + // e.g. [] or [<``module``: MyCustomAttributeThatWorksOnModules>] + // or [] + scope: 'meta', + begin: /\[\]/, + relevance: 2, + contains: [ + QUOTED_IDENTIFIER, + // can contain any constant value + TRIPLE_QUOTED_STRING, + VERBATIM_STRING, + QUOTED_STRING, + CHAR_LITERAL, + NUMBER + ] + }, + DISCRIMINATED_UNION_TYPE_ANNOTATION, + TYPE_ANNOTATION, + COMPUTATION_EXPRESSION, + PREPROCESSOR, + NUMBER, + GENERIC_TYPE_SYMBOL, + OPERATOR + ] + }; +} + +module.exports = fsharp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gams.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gams.js ***! + \*************************************************************/ +(module) { + +/* + Language: GAMS + Author: Stefan Bechert + Contributors: Oleg Efimov , Mikko Kouhia + Description: The General Algebraic Modeling System language + Website: https://www.gams.com + Category: scientific + */ + +/** @type LanguageFn */ +function gams(hljs) { + const regex = hljs.regex; + const KEYWORDS = { + keyword: + 'abort acronym acronyms alias all and assign binary card diag display ' + + 'else eq file files for free ge gt if integer le loop lt maximizing ' + + 'minimizing model models ne negative no not option options or ord ' + + 'positive prod put putpage puttl repeat sameas semicont semiint smax ' + + 'smin solve sos1 sos2 sum system table then until using while xor yes', + literal: + 'eps inf na', + built_in: + 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' + + 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' + + 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' + + 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' + + 'randBinomial randLinear randTriangle round rPower sigmoid sign ' + + 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' + + 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' + + 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' + + 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' + + 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' + + 'handleCollect handleDelete handleStatus handleSubmit heapFree ' + + 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' + + 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' + + 'timeElapsed timeExec timeStart' + }; + const PARAMS = { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true + }; + const SYMBOLS = { + className: 'symbol', + variants: [ + { begin: /=[lgenxc]=/ }, + { begin: /\$/ } + ] + }; + const QSTR = { // One-line quoted comment string + className: 'comment', + variants: [ + { + begin: '\'', + end: '\'' + }, + { + begin: '"', + end: '"' + } + ], + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + const ASSIGNMENT = { + begin: '/', + end: '/', + keywords: KEYWORDS, + contains: [ + QSTR, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + hljs.C_NUMBER_MODE + ] + }; + const COMMENT_WORD = /[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/; + const DESCTEXT = { // Parameter/set/variable description text + begin: /[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/, + excludeBegin: true, + end: '$', + endsWithParent: true, + contains: [ + QSTR, + ASSIGNMENT, + { + className: 'comment', + // one comment word, then possibly more + begin: regex.concat( + COMMENT_WORD, + // [ ] because \s would be too broad (matching newlines) + regex.anyNumberOfTimes(regex.concat(/[ ]+/, COMMENT_WORD)) + ), + relevance: 0 + } + ] + }; + + return { + name: 'GAMS', + aliases: [ 'gms' ], + case_insensitive: true, + keywords: KEYWORDS, + contains: [ + hljs.COMMENT(/^\$ontext/, /^\$offtext/), + { + className: 'meta', + begin: '^\\$[a-z0-9]+', + end: '$', + returnBegin: true, + contains: [ + { + className: 'keyword', + begin: '^\\$[a-z0-9]+' + } + ] + }, + hljs.COMMENT('^\\*', '$'), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + // Declarations + { + beginKeywords: + 'set sets parameter parameters variable variables ' + + 'scalar scalars equation equations', + end: ';', + contains: [ + hljs.COMMENT('^\\*', '$'), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + ASSIGNMENT, + DESCTEXT + ] + }, + { // table environment + beginKeywords: 'table', + end: ';', + returnBegin: true, + contains: [ + { // table header row + beginKeywords: 'table', + end: '$', + contains: [ DESCTEXT ] + }, + hljs.COMMENT('^\\*', '$'), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + hljs.C_NUMBER_MODE + // Table does not contain DESCTEXT or ASSIGNMENT + ] + }, + // Function definitions + { + className: 'function', + begin: /^[a-z][a-z0-9_,\-+' ()$]+\.{2}/, + returnBegin: true, + contains: [ + { // Function title + className: 'title', + begin: /^[a-z0-9_]+/ + }, + PARAMS, + SYMBOLS + ] + }, + hljs.C_NUMBER_MODE, + SYMBOLS + ] + }; +} + +module.exports = gams; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gauss.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gauss.js ***! + \**************************************************************/ +(module) { + +/* +Language: GAUSS +Author: Matt Evans +Description: GAUSS Mathematical and Statistical language +Website: https://www.aptech.com +Category: scientific +*/ +function gauss(hljs) { + const KEYWORDS = { + keyword: 'bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' + + 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' + + 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' + + 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' + + 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' + + 'matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print ' + + 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' + + 'scroll setarray show sparse stop string struct system trace trap threadfor ' + + 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint ' + + 'ne ge le gt lt and xor or not eq eqv', + built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' + + 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' + + 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' + + 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' + + 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' + + 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' + + 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' + + 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' + + 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' + + 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' + + 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' + + 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' + + 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' + + 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' + + 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' + + 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' + + 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' + + 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' + + 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' + + 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' + + 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' + + 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' + + 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' + + 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' + + 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' + + 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' + + 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' + + 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' + + 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' + + 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' + + 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' + + 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' + + 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' + + 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' + + 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' + + 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' + + 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' + + 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' + + 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' + + 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' + + 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' + + 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' + + 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' + + 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' + + 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' + + 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' + + 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' + + 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' + + 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' + + 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' + + 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' + + 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' + + 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' + + 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' + + 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' + + 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' + + 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' + + 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' + + 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' + + 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' + + 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' + + 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' + + 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' + + 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' + + 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' + + 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' + + 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' + + 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' + + 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' + + 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' + + 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' + + 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' + + 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' + + 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' + + 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' + + 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname ' + + 'time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' + + 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' + + 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' + + 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' + + 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' + + 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' + + 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' + + 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester ' + + 'strtrim', + literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' + + 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' + + 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' + + 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' + + 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR' + }; + + const AT_COMMENT_MODE = hljs.COMMENT('@', '@'); + + const PREPROCESSOR = + { + className: 'meta', + begin: '#', + end: '$', + keywords: { keyword: 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline' }, + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + { + beginKeywords: 'include', + end: '$', + keywords: { keyword: 'include' }, + contains: [ + { + className: 'string', + begin: '"', + end: '"', + illegal: '\\n' + } + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AT_COMMENT_MODE + ] + }; + + const STRUCT_TYPE = + { + begin: /\bstruct\s+/, + end: /\s/, + keywords: "struct", + contains: [ + { + className: "type", + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + } + ] + }; + + // only for definitions + const PARSE_PARAMS = [ + { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + endsWithParent: true, + relevance: 0, + contains: [ + { // dots + className: 'literal', + begin: /\.\.\./ + }, + hljs.C_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AT_COMMENT_MODE, + STRUCT_TYPE + ] + } + ]; + + const FUNCTION_DEF = + { + className: "title", + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }; + + const DEFINITION = function(beginKeywords, end, inherits) { + const mode = hljs.inherit( + { + className: "function", + beginKeywords: beginKeywords, + end: end, + excludeEnd: true, + contains: [].concat(PARSE_PARAMS) + }, + {} + ); + mode.contains.push(FUNCTION_DEF); + mode.contains.push(hljs.C_NUMBER_MODE); + mode.contains.push(hljs.C_BLOCK_COMMENT_MODE); + mode.contains.push(AT_COMMENT_MODE); + return mode; + }; + + const BUILT_IN_REF = + { // these are explicitly named internal function calls + className: 'built_in', + begin: '\\b(' + KEYWORDS.built_in.split(' ').join('|') + ')\\b' + }; + + const STRING_REF = + { + className: 'string', + begin: '"', + end: '"', + contains: [ hljs.BACKSLASH_ESCAPE ], + relevance: 0 + }; + + const FUNCTION_REF = + { + // className: "fn_ref", + begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', + returnBegin: true, + keywords: KEYWORDS, + relevance: 0, + contains: [ + { beginKeywords: KEYWORDS.keyword }, + BUILT_IN_REF, + { // ambiguously named function calls get a relevance of 0 + className: 'built_in', + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + } + ] + }; + + const FUNCTION_REF_PARAMS = + { + // className: "fn_ref_params", + begin: /\(/, + end: /\)/, + relevance: 0, + keywords: { + built_in: KEYWORDS.built_in, + literal: KEYWORDS.literal + }, + contains: [ + hljs.C_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AT_COMMENT_MODE, + BUILT_IN_REF, + FUNCTION_REF, + STRING_REF, + 'self' + ] + }; + + FUNCTION_REF.contains.push(FUNCTION_REF_PARAMS); + + return { + name: 'GAUSS', + aliases: [ 'gss' ], + case_insensitive: true, // language is case-insensitive + keywords: KEYWORDS, + illegal: /(\{[%#]|[%#]\}| <- )/, + contains: [ + hljs.C_NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AT_COMMENT_MODE, + STRING_REF, + PREPROCESSOR, + { + className: 'keyword', + begin: /\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/ + }, + DEFINITION('proc keyword', ';'), + DEFINITION('fn', '='), + { + beginKeywords: 'for threadfor', + end: /;/, + // end: /\(/, + relevance: 0, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + AT_COMMENT_MODE, + FUNCTION_REF_PARAMS + ] + }, + { // custom method guard + // excludes method names from keyword processing + variants: [ + { begin: hljs.UNDERSCORE_IDENT_RE + '\\.' + hljs.UNDERSCORE_IDENT_RE }, + { begin: hljs.UNDERSCORE_IDENT_RE + '\\s*=' } + ], + relevance: 0 + }, + FUNCTION_REF, + STRUCT_TYPE + ] + }; +} + +module.exports = gauss; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gcode.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gcode.js ***! + \**************************************************************/ +(module) { + +/* + Language: G-code (ISO 6983) + Contributors: Adam Joseph Cook + Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls. + Website: https://www.sis.se/api/document/preview/911952/ + Category: hardware + */ + +function gcode(hljs) { + const regex = hljs.regex; + const GCODE_KEYWORDS = { + $pattern: /[A-Z]+|%/, + keyword: [ + // conditions + 'THEN', + 'ELSE', + 'ENDIF', + 'IF', + + // controls + 'GOTO', + 'DO', + 'WHILE', + 'WH', + 'END', + 'CALL', + + // scoping + 'SUB', + 'ENDSUB', + + // comparisons + 'EQ', + 'NE', + 'LT', + 'GT', + 'LE', + 'GE', + 'AND', + 'OR', + 'XOR', + + // start/end of program + '%' + ], + built_in: [ + 'ATAN', + 'ABS', + 'ACOS', + 'ASIN', + 'COS', + 'EXP', + 'FIX', + 'FUP', + 'ROUND', + 'LN', + 'SIN', + 'SQRT', + 'TAN', + 'EXISTS' + ] + }; + + + // TODO: post v12 lets use look-behind, until then \b and a callback filter will be used + // const LETTER_BOUNDARY_RE = /(?= '0' && charBeforeMatch <= '9') { + return; + } + + if (charBeforeMatch === '_') { + return; + } + + response.ignoreMatch(); + } + + const NUMBER_RE = /[+-]?((\.\d+)|(\d+)(\.\d*)?)/; + + const GENERAL_MISC_FUNCTION_RE = /[GM]\s*\d+(\.\d+)?/; + const TOOLS_RE = /T\s*\d+/; + const SUBROUTINE_RE = /O\s*\d+/; + const SUBROUTINE_NAMED_RE = /O<.+>/; + const AXES_RE = /[ABCUVWXYZ]\s*/; + const PARAMETERS_RE = /[FHIJKPQRS]\s*/; + + const GCODE_CODE = [ + // comments + hljs.COMMENT(/\(/, /\)/), + hljs.COMMENT(/;/, /$/), + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + + // gcodes + { + scope: 'title.function', + variants: [ + // G General functions: G0, G5.1, G5.2, … + // M Misc functions: M0, M55.6, M199, … + { match: regex.concat(LETTER_BOUNDARY_RE, GENERAL_MISC_FUNCTION_RE) }, + { + begin: GENERAL_MISC_FUNCTION_RE, + 'on:begin': LETTER_BOUNDARY_CALLBACK + }, + // T Tools + { match: regex.concat(LETTER_BOUNDARY_RE, TOOLS_RE), }, + { + begin: TOOLS_RE, + 'on:begin': LETTER_BOUNDARY_CALLBACK + } + ] + }, + + { + scope: 'symbol', + variants: [ + // O Subroutine ID: O100, O110, … + { match: regex.concat(LETTER_BOUNDARY_RE, SUBROUTINE_RE) }, + { + begin: SUBROUTINE_RE, + 'on:begin': LETTER_BOUNDARY_CALLBACK + }, + // O Subroutine name: O, … + { match: regex.concat(LETTER_BOUNDARY_RE, SUBROUTINE_NAMED_RE) }, + { + begin: SUBROUTINE_NAMED_RE, + 'on:begin': LETTER_BOUNDARY_CALLBACK + }, + // Checksum at end of line: *71, *199, … + { match: /\*\s*\d+\s*$/ } + ] + }, + + { + scope: 'operator', // N Line number: N1, N2, N1020, … + match: /^N\s*\d+/ + }, + + { + scope: 'variable', + match: /-?#\s*\d+/ + }, + + { + scope: 'property', // Physical axes, + variants: [ + { match: regex.concat(LETTER_BOUNDARY_RE, AXES_RE, NUMBER_RE) }, + { + begin: regex.concat(AXES_RE, NUMBER_RE), + 'on:begin': LETTER_BOUNDARY_CALLBACK + }, + ] + }, + + { + scope: 'params', // Different types of parameters + variants: [ + { match: regex.concat(LETTER_BOUNDARY_RE, PARAMETERS_RE, NUMBER_RE) }, + { + begin: regex.concat(PARAMETERS_RE, NUMBER_RE), + 'on:begin': LETTER_BOUNDARY_CALLBACK + }, + ] + }, + ]; + + return { + name: 'G-code (ISO 6983)', + aliases: [ 'nc' ], + // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly. + // However, most prefer all uppercase and uppercase is customary. + case_insensitive: true, + // TODO: post v12 with the use of look-behind this can be enabled + disableAutodetect: true, + keywords: GCODE_KEYWORDS, + contains: GCODE_CODE + }; +} + +module.exports = gcode; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gherkin.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gherkin.js ***! + \****************************************************************/ +(module) { + +/* + Language: Gherkin + Author: Sam Pikesley (@pikesley) + Description: Gherkin is the format for cucumber specifications. It is a domain specific language which helps you to describe business behavior without the need to go into detail of implementation. + Website: https://cucumber.io/docs/gherkin/ + */ + +function gherkin(hljs) { + return { + name: 'Gherkin', + aliases: [ 'feature' ], + keywords: 'Feature Background Ability Business\ Need Scenario Scenarios Scenario\ Outline Scenario\ Template Examples Given And Then But When', + contains: [ + { + className: 'symbol', + begin: '\\*', + relevance: 0 + }, + { + className: 'meta', + begin: '@[^@\\s]+' + }, + { + begin: '\\|', + end: '\\|\\w*$', + contains: [ + { + className: 'string', + begin: '[^|]+' + } + ] + }, + { + className: 'variable', + begin: '<', + end: '>' + }, + hljs.HASH_COMMENT_MODE, + { + className: 'string', + begin: '"""', + end: '"""' + }, + hljs.QUOTE_STRING_MODE + ] + }; +} + +module.exports = gherkin; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/glsl.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/glsl.js ***! + \*************************************************************/ +(module) { + +/* +Language: GLSL +Description: OpenGL Shading Language +Author: Sergey Tikhomirov +Website: https://en.wikipedia.org/wiki/OpenGL_Shading_Language +Category: graphics +*/ + +function glsl(hljs) { + return { + name: 'GLSL', + keywords: { + keyword: + // Statements + 'break continue discard do else for if return while switch case default ' + // Qualifiers + + 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' + + 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' + + 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' + + 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' + + 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' + + 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f ' + + 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' + + 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' + + 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' + + 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' + + 'triangles triangles_adjacency uniform varying vertices volatile writeonly', + type: + 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' + + 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' + + 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer ' + + 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' + + 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' + + 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' + + 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' + + 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' + + 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' + + 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' + + 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' + + 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' + + 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' + + 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' + + 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void', + built_in: + // Constants + 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' + + 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' + + 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' + + 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' + + 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' + + 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' + + 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' + + 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' + + 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' + + 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' + + 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' + + 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' + + 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' + + 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' + + 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' + + 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' + + 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' + + 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' + + 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' + + 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' + + 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' + + 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' + + 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' + // Variables + + 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' + + 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' + + 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' + + 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' + + 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' + + 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' + + 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' + + 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' + + 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' + + 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' + + 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' + + 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' + + 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' + + 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' + + 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' + + 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' + + 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' + + 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' + // Functions + + 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' + + 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' + + 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' + + 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' + + 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' + + 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' + + 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' + + 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' + + 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' + + 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' + + 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' + + 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' + + 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' + + 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' + + 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' + + 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' + + 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' + + 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' + + 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' + + 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' + + 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' + + 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' + + 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow', + literal: 'true false' + }, + illegal: '"', + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_NUMBER_MODE, + { + className: 'meta', + begin: '#', + end: '$' + } + ] + }; +} + +module.exports = glsl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gml.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gml.js ***! + \************************************************************/ +(module) { + +/* +Language: GML +Description: Game Maker Language for GameMaker (rev. 2023.1) +Website: https://manual.yoyogames.com/ +Category: scripting +*/ + +function gml(hljs) { + const KEYWORDS = [ + "#endregion", + "#macro", + "#region", + "and", + "begin", + "break", + "case", + "constructor", + "continue", + "default", + "delete", + "div", + "do", + "else", + "end", + "enum", + "exit", + "for", + "function", + "globalvar", + "if", + "mod", + "new", + "not", + "or", + "repeat", + "return", + "static", + "switch", + "then", + "until", + "var", + "while", + "with", + "xor" + ]; + + const BUILT_INS = [ + "abs", + "alarm_get", + "alarm_set", + "angle_difference", + "animcurve_channel_evaluate", + "animcurve_channel_new", + "animcurve_create", + "animcurve_destroy", + "animcurve_exists", + "animcurve_get", + "animcurve_get_channel", + "animcurve_get_channel_index", + "animcurve_point_new", + "ansi_char", + "application_get_position", + "application_surface_draw_enable", + "application_surface_enable", + "application_surface_is_enabled", + "arccos", + "arcsin", + "arctan", + "arctan2", + "array_all", + "array_any", + "array_concat", + "array_contains", + "array_contains_ext", + "array_copy", + "array_copy_while", + "array_create", + "array_create_ext", + "array_delete", + "array_equals", + "array_filter", + "array_filter_ext", + "array_find_index", + "array_first", + "array_foreach", + "array_get", + "array_get_index", + "array_insert", + "array_intersection", + "array_last", + "array_length", + "array_map", + "array_map_ext", + "array_pop", + "array_push", + "array_reduce", + "array_resize", + "array_reverse", + "array_reverse_ext", + "array_set", + "array_shuffle", + "array_shuffle_ext", + "array_sort", + "array_union", + "array_unique", + "array_unique_ext", + "asset_add_tags", + "asset_clear_tags", + "asset_get_ids", + "asset_get_index", + "asset_get_tags", + "asset_get_type", + "asset_has_any_tag", + "asset_has_tags", + "asset_remove_tags", + "audio_bus_clear_emitters", + "audio_bus_create", + "audio_bus_get_emitters", + "audio_channel_num", + "audio_create_buffer_sound", + "audio_create_play_queue", + "audio_create_stream", + "audio_create_sync_group", + "audio_debug", + "audio_destroy_stream", + "audio_destroy_sync_group", + "audio_effect_create", + "audio_emitter_bus", + "audio_emitter_create", + "audio_emitter_exists", + "audio_emitter_falloff", + "audio_emitter_free", + "audio_emitter_gain", + "audio_emitter_get_bus", + "audio_emitter_get_gain", + "audio_emitter_get_listener_mask", + "audio_emitter_get_pitch", + "audio_emitter_get_vx", + "audio_emitter_get_vy", + "audio_emitter_get_vz", + "audio_emitter_get_x", + "audio_emitter_get_y", + "audio_emitter_get_z", + "audio_emitter_pitch", + "audio_emitter_position", + "audio_emitter_set_listener_mask", + "audio_emitter_velocity", + "audio_exists", + "audio_falloff_set_model", + "audio_free_buffer_sound", + "audio_free_play_queue", + "audio_get_listener_count", + "audio_get_listener_info", + "audio_get_listener_mask", + "audio_get_master_gain", + "audio_get_name", + "audio_get_recorder_count", + "audio_get_recorder_info", + "audio_get_type", + "audio_group_get_assets", + "audio_group_get_gain", + "audio_group_is_loaded", + "audio_group_load", + "audio_group_load_progress", + "audio_group_name", + "audio_group_set_gain", + "audio_group_stop_all", + "audio_group_unload", + "audio_is_paused", + "audio_is_playing", + "audio_listener_get_data", + "audio_listener_orientation", + "audio_listener_position", + "audio_listener_set_orientation", + "audio_listener_set_position", + "audio_listener_set_velocity", + "audio_listener_velocity", + "audio_master_gain", + "audio_pause_all", + "audio_pause_sound", + "audio_pause_sync_group", + "audio_play_in_sync_group", + "audio_play_sound", + "audio_play_sound_at", + "audio_play_sound_ext", + "audio_play_sound_on", + "audio_queue_sound", + "audio_resume_all", + "audio_resume_sound", + "audio_resume_sync_group", + "audio_set_listener_mask", + "audio_set_master_gain", + "audio_sound_gain", + "audio_sound_get_audio_group", + "audio_sound_get_gain", + "audio_sound_get_listener_mask", + "audio_sound_get_loop", + "audio_sound_get_loop_end", + "audio_sound_get_loop_start", + "audio_sound_get_pitch", + "audio_sound_get_track_position", + "audio_sound_is_playable", + "audio_sound_length", + "audio_sound_loop", + "audio_sound_loop_end", + "audio_sound_loop_start", + "audio_sound_pitch", + "audio_sound_set_listener_mask", + "audio_sound_set_track_position", + "audio_start_recording", + "audio_start_sync_group", + "audio_stop_all", + "audio_stop_recording", + "audio_stop_sound", + "audio_stop_sync_group", + "audio_sync_group_debug", + "audio_sync_group_get_track_pos", + "audio_sync_group_is_paused", + "audio_sync_group_is_playing", + "audio_system_is_available", + "audio_system_is_initialised", + "base64_decode", + "base64_encode", + "bool", + "browser_input_capture", + "buffer_async_group_begin", + "buffer_async_group_end", + "buffer_async_group_option", + "buffer_base64_decode", + "buffer_base64_decode_ext", + "buffer_base64_encode", + "buffer_compress", + "buffer_copy", + "buffer_copy_from_vertex_buffer", + "buffer_copy_stride", + "buffer_crc32", + "buffer_create", + "buffer_create_from_vertex_buffer", + "buffer_create_from_vertex_buffer_ext", + "buffer_decompress", + "buffer_delete", + "buffer_exists", + "buffer_fill", + "buffer_get_address", + "buffer_get_alignment", + "buffer_get_size", + "buffer_get_surface", + "buffer_get_type", + "buffer_load", + "buffer_load_async", + "buffer_load_ext", + "buffer_load_partial", + "buffer_md5", + "buffer_peek", + "buffer_poke", + "buffer_read", + "buffer_resize", + "buffer_save", + "buffer_save_async", + "buffer_save_ext", + "buffer_seek", + "buffer_set_surface", + "buffer_set_used_size", + "buffer_sha1", + "buffer_sizeof", + "buffer_tell", + "buffer_write", + "call_cancel", + "call_later", + "camera_apply", + "camera_copy_transforms", + "camera_create", + "camera_create_view", + "camera_destroy", + "camera_get_active", + "camera_get_begin_script", + "camera_get_default", + "camera_get_end_script", + "camera_get_proj_mat", + "camera_get_update_script", + "camera_get_view_angle", + "camera_get_view_border_x", + "camera_get_view_border_y", + "camera_get_view_height", + "camera_get_view_mat", + "camera_get_view_speed_x", + "camera_get_view_speed_y", + "camera_get_view_target", + "camera_get_view_width", + "camera_get_view_x", + "camera_get_view_y", + "camera_set_begin_script", + "camera_set_default", + "camera_set_end_script", + "camera_set_proj_mat", + "camera_set_update_script", + "camera_set_view_angle", + "camera_set_view_border", + "camera_set_view_mat", + "camera_set_view_pos", + "camera_set_view_size", + "camera_set_view_speed", + "camera_set_view_target", + "ceil", + "choose", + "chr", + "clamp", + "clickable_add", + "clickable_add_ext", + "clickable_change", + "clickable_change_ext", + "clickable_delete", + "clickable_exists", + "clickable_set_style", + "clipboard_get_text", + "clipboard_has_text", + "clipboard_set_text", + "cloud_file_save", + "cloud_string_save", + "cloud_synchronise", + "code_is_compiled", + "collision_circle", + "collision_circle_list", + "collision_ellipse", + "collision_ellipse_list", + "collision_line", + "collision_line_list", + "collision_point", + "collision_point_list", + "collision_rectangle", + "collision_rectangle_list", + "color_get_blue", + "color_get_green", + "color_get_hue", + "color_get_red", + "color_get_saturation", + "color_get_value", + "colour_get_blue", + "colour_get_green", + "colour_get_hue", + "colour_get_red", + "colour_get_saturation", + "colour_get_value", + "cos", + "darccos", + "darcsin", + "darctan", + "darctan2", + "date_compare_date", + "date_compare_datetime", + "date_compare_time", + "date_create_datetime", + "date_current_datetime", + "date_date_of", + "date_date_string", + "date_datetime_string", + "date_day_span", + "date_days_in_month", + "date_days_in_year", + "date_get_day", + "date_get_day_of_year", + "date_get_hour", + "date_get_hour_of_year", + "date_get_minute", + "date_get_minute_of_year", + "date_get_month", + "date_get_second", + "date_get_second_of_year", + "date_get_timezone", + "date_get_week", + "date_get_weekday", + "date_get_year", + "date_hour_span", + "date_inc_day", + "date_inc_hour", + "date_inc_minute", + "date_inc_month", + "date_inc_second", + "date_inc_week", + "date_inc_year", + "date_is_today", + "date_leap_year", + "date_minute_span", + "date_month_span", + "date_second_span", + "date_set_timezone", + "date_time_of", + "date_time_string", + "date_valid_datetime", + "date_week_span", + "date_year_span", + "db_to_lin", + "dbg_add_font_glyphs", + "dbg_button", + "dbg_checkbox", + "dbg_color", + "dbg_colour", + "dbg_drop_down", + "dbg_same_line", + "dbg_section", + "dbg_section_delete", + "dbg_section_exists", + "dbg_slider", + "dbg_slider_int", + "dbg_sprite", + "dbg_text", + "dbg_text_input", + "dbg_view", + "dbg_view_delete", + "dbg_view_exists", + "dbg_watch", + "dcos", + "debug_event", + "debug_get_callstack", + "degtorad", + "device_get_tilt_x", + "device_get_tilt_y", + "device_get_tilt_z", + "device_is_keypad_open", + "device_mouse_check_button", + "device_mouse_check_button_pressed", + "device_mouse_check_button_released", + "device_mouse_dbclick_enable", + "device_mouse_raw_x", + "device_mouse_raw_y", + "device_mouse_x", + "device_mouse_x_to_gui", + "device_mouse_y", + "device_mouse_y_to_gui", + "directory_create", + "directory_destroy", + "directory_exists", + "display_get_dpi_x", + "display_get_dpi_y", + "display_get_frequency", + "display_get_gui_height", + "display_get_gui_width", + "display_get_height", + "display_get_orientation", + "display_get_sleep_margin", + "display_get_timing_method", + "display_get_width", + "display_mouse_get_x", + "display_mouse_get_y", + "display_mouse_set", + "display_reset", + "display_set_gui_maximise", + "display_set_gui_maximize", + "display_set_gui_size", + "display_set_sleep_margin", + "display_set_timing_method", + "display_set_ui_visibility", + "distance_to_object", + "distance_to_point", + "dot_product", + "dot_product_3d", + "dot_product_3d_normalised", + "dot_product_3d_normalized", + "dot_product_normalised", + "dot_product_normalized", + "draw_arrow", + "draw_button", + "draw_circle", + "draw_circle_color", + "draw_circle_colour", + "draw_clear", + "draw_clear_alpha", + "draw_ellipse", + "draw_ellipse_color", + "draw_ellipse_colour", + "draw_enable_drawevent", + "draw_enable_skeleton_blendmodes", + "draw_enable_swf_aa", + "draw_flush", + "draw_get_alpha", + "draw_get_color", + "draw_get_colour", + "draw_get_enable_skeleton_blendmodes", + "draw_get_font", + "draw_get_halign", + "draw_get_lighting", + "draw_get_swf_aa_level", + "draw_get_valign", + "draw_getpixel", + "draw_getpixel_ext", + "draw_healthbar", + "draw_highscore", + "draw_light_define_ambient", + "draw_light_define_direction", + "draw_light_define_point", + "draw_light_enable", + "draw_light_get", + "draw_light_get_ambient", + "draw_line", + "draw_line_color", + "draw_line_colour", + "draw_line_width", + "draw_line_width_color", + "draw_line_width_colour", + "draw_path", + "draw_point", + "draw_point_color", + "draw_point_colour", + "draw_primitive_begin", + "draw_primitive_begin_texture", + "draw_primitive_end", + "draw_rectangle", + "draw_rectangle_color", + "draw_rectangle_colour", + "draw_roundrect", + "draw_roundrect_color", + "draw_roundrect_color_ext", + "draw_roundrect_colour", + "draw_roundrect_colour_ext", + "draw_roundrect_ext", + "draw_self", + "draw_set_alpha", + "draw_set_circle_precision", + "draw_set_color", + "draw_set_colour", + "draw_set_font", + "draw_set_halign", + "draw_set_lighting", + "draw_set_swf_aa_level", + "draw_set_valign", + "draw_skeleton", + "draw_skeleton_collision", + "draw_skeleton_instance", + "draw_skeleton_time", + "draw_sprite", + "draw_sprite_ext", + "draw_sprite_general", + "draw_sprite_part", + "draw_sprite_part_ext", + "draw_sprite_pos", + "draw_sprite_stretched", + "draw_sprite_stretched_ext", + "draw_sprite_tiled", + "draw_sprite_tiled_ext", + "draw_surface", + "draw_surface_ext", + "draw_surface_general", + "draw_surface_part", + "draw_surface_part_ext", + "draw_surface_stretched", + "draw_surface_stretched_ext", + "draw_surface_tiled", + "draw_surface_tiled_ext", + "draw_text", + "draw_text_color", + "draw_text_colour", + "draw_text_ext", + "draw_text_ext_color", + "draw_text_ext_colour", + "draw_text_ext_transformed", + "draw_text_ext_transformed_color", + "draw_text_ext_transformed_colour", + "draw_text_transformed", + "draw_text_transformed_color", + "draw_text_transformed_colour", + "draw_texture_flush", + "draw_tile", + "draw_tilemap", + "draw_triangle", + "draw_triangle_color", + "draw_triangle_colour", + "draw_vertex", + "draw_vertex_color", + "draw_vertex_colour", + "draw_vertex_texture", + "draw_vertex_texture_color", + "draw_vertex_texture_colour", + "ds_exists", + "ds_grid_add", + "ds_grid_add_disk", + "ds_grid_add_grid_region", + "ds_grid_add_region", + "ds_grid_clear", + "ds_grid_copy", + "ds_grid_create", + "ds_grid_destroy", + "ds_grid_get", + "ds_grid_get_disk_max", + "ds_grid_get_disk_mean", + "ds_grid_get_disk_min", + "ds_grid_get_disk_sum", + "ds_grid_get_max", + "ds_grid_get_mean", + "ds_grid_get_min", + "ds_grid_get_sum", + "ds_grid_height", + "ds_grid_multiply", + "ds_grid_multiply_disk", + "ds_grid_multiply_grid_region", + "ds_grid_multiply_region", + "ds_grid_read", + "ds_grid_resize", + "ds_grid_set", + "ds_grid_set_disk", + "ds_grid_set_grid_region", + "ds_grid_set_region", + "ds_grid_shuffle", + "ds_grid_sort", + "ds_grid_to_mp_grid", + "ds_grid_value_disk_exists", + "ds_grid_value_disk_x", + "ds_grid_value_disk_y", + "ds_grid_value_exists", + "ds_grid_value_x", + "ds_grid_value_y", + "ds_grid_width", + "ds_grid_write", + "ds_list_add", + "ds_list_clear", + "ds_list_copy", + "ds_list_create", + "ds_list_delete", + "ds_list_destroy", + "ds_list_empty", + "ds_list_find_index", + "ds_list_find_value", + "ds_list_insert", + "ds_list_is_list", + "ds_list_is_map", + "ds_list_mark_as_list", + "ds_list_mark_as_map", + "ds_list_read", + "ds_list_replace", + "ds_list_set", + "ds_list_shuffle", + "ds_list_size", + "ds_list_sort", + "ds_list_write", + "ds_map_add", + "ds_map_add_list", + "ds_map_add_map", + "ds_map_clear", + "ds_map_copy", + "ds_map_create", + "ds_map_delete", + "ds_map_destroy", + "ds_map_empty", + "ds_map_exists", + "ds_map_find_first", + "ds_map_find_last", + "ds_map_find_next", + "ds_map_find_previous", + "ds_map_find_value", + "ds_map_is_list", + "ds_map_is_map", + "ds_map_keys_to_array", + "ds_map_read", + "ds_map_replace", + "ds_map_replace_list", + "ds_map_replace_map", + "ds_map_secure_load", + "ds_map_secure_load_buffer", + "ds_map_secure_save", + "ds_map_secure_save_buffer", + "ds_map_set", + "ds_map_size", + "ds_map_values_to_array", + "ds_map_write", + "ds_priority_add", + "ds_priority_change_priority", + "ds_priority_clear", + "ds_priority_copy", + "ds_priority_create", + "ds_priority_delete_max", + "ds_priority_delete_min", + "ds_priority_delete_value", + "ds_priority_destroy", + "ds_priority_empty", + "ds_priority_find_max", + "ds_priority_find_min", + "ds_priority_find_priority", + "ds_priority_read", + "ds_priority_size", + "ds_priority_write", + "ds_queue_clear", + "ds_queue_copy", + "ds_queue_create", + "ds_queue_dequeue", + "ds_queue_destroy", + "ds_queue_empty", + "ds_queue_enqueue", + "ds_queue_head", + "ds_queue_read", + "ds_queue_size", + "ds_queue_tail", + "ds_queue_write", + "ds_set_precision", + "ds_stack_clear", + "ds_stack_copy", + "ds_stack_create", + "ds_stack_destroy", + "ds_stack_empty", + "ds_stack_pop", + "ds_stack_push", + "ds_stack_read", + "ds_stack_size", + "ds_stack_top", + "ds_stack_write", + "dsin", + "dtan", + "effect_clear", + "effect_create_above", + "effect_create_below", + "effect_create_depth", + "effect_create_layer", + "environment_get_variable", + "event_inherited", + "event_perform", + "event_perform_async", + "event_perform_object", + "event_user", + "exception_unhandled_handler", + "exp", + "extension_exists", + "extension_get_option_count", + "extension_get_option_names", + "extension_get_option_value", + "extension_get_options", + "extension_get_version", + "external_call", + "external_define", + "external_free", + "file_attributes", + "file_bin_close", + "file_bin_open", + "file_bin_position", + "file_bin_read_byte", + "file_bin_rewrite", + "file_bin_seek", + "file_bin_size", + "file_bin_write_byte", + "file_copy", + "file_delete", + "file_exists", + "file_find_close", + "file_find_first", + "file_find_next", + "file_rename", + "file_text_close", + "file_text_eof", + "file_text_eoln", + "file_text_open_append", + "file_text_open_from_string", + "file_text_open_read", + "file_text_open_write", + "file_text_read_real", + "file_text_read_string", + "file_text_readln", + "file_text_write_real", + "file_text_write_string", + "file_text_writeln", + "filename_change_ext", + "filename_dir", + "filename_drive", + "filename_ext", + "filename_name", + "filename_path", + "floor", + "font_add", + "font_add_enable_aa", + "font_add_get_enable_aa", + "font_add_sprite", + "font_add_sprite_ext", + "font_cache_glyph", + "font_delete", + "font_enable_effects", + "font_enable_sdf", + "font_exists", + "font_get_bold", + "font_get_first", + "font_get_fontname", + "font_get_info", + "font_get_italic", + "font_get_last", + "font_get_name", + "font_get_sdf_enabled", + "font_get_sdf_spread", + "font_get_size", + "font_get_texture", + "font_get_uvs", + "font_replace_sprite", + "font_replace_sprite_ext", + "font_sdf_spread", + "font_set_cache_size", + "frac", + "fx_create", + "fx_get_name", + "fx_get_parameter", + "fx_get_parameter_names", + "fx_get_parameters", + "fx_get_single_layer", + "fx_set_parameter", + "fx_set_parameters", + "fx_set_single_layer", + "game_change", + "game_end", + "game_get_speed", + "game_load", + "game_load_buffer", + "game_restart", + "game_save", + "game_save_buffer", + "game_set_speed", + "gamepad_axis_count", + "gamepad_axis_value", + "gamepad_button_check", + "gamepad_button_check_pressed", + "gamepad_button_check_released", + "gamepad_button_count", + "gamepad_button_value", + "gamepad_get_axis_deadzone", + "gamepad_get_button_threshold", + "gamepad_get_description", + "gamepad_get_device_count", + "gamepad_get_guid", + "gamepad_get_mapping", + "gamepad_get_option", + "gamepad_hat_count", + "gamepad_hat_value", + "gamepad_is_connected", + "gamepad_is_supported", + "gamepad_remove_mapping", + "gamepad_set_axis_deadzone", + "gamepad_set_button_threshold", + "gamepad_set_color", + "gamepad_set_colour", + "gamepad_set_option", + "gamepad_set_vibration", + "gamepad_test_mapping", + "gc_collect", + "gc_enable", + "gc_get_stats", + "gc_get_target_frame_time", + "gc_is_enabled", + "gc_target_frame_time", + "gesture_double_tap_distance", + "gesture_double_tap_time", + "gesture_drag_distance", + "gesture_drag_time", + "gesture_flick_speed", + "gesture_get_double_tap_distance", + "gesture_get_double_tap_time", + "gesture_get_drag_distance", + "gesture_get_drag_time", + "gesture_get_flick_speed", + "gesture_get_pinch_angle_away", + "gesture_get_pinch_angle_towards", + "gesture_get_pinch_distance", + "gesture_get_rotate_angle", + "gesture_get_rotate_time", + "gesture_get_tap_count", + "gesture_pinch_angle_away", + "gesture_pinch_angle_towards", + "gesture_pinch_distance", + "gesture_rotate_angle", + "gesture_rotate_time", + "gesture_tap_count", + "get_integer", + "get_integer_async", + "get_login_async", + "get_open_filename", + "get_open_filename_ext", + "get_save_filename", + "get_save_filename_ext", + "get_string", + "get_string_async", + "get_timer", + "gif_add_surface", + "gif_open", + "gif_save", + "gif_save_buffer", + "gml_pragma", + "gml_release_mode", + "gpu_get_alphatestenable", + "gpu_get_alphatestref", + "gpu_get_blendenable", + "gpu_get_blendmode", + "gpu_get_blendmode_dest", + "gpu_get_blendmode_destalpha", + "gpu_get_blendmode_ext", + "gpu_get_blendmode_ext_sepalpha", + "gpu_get_blendmode_src", + "gpu_get_blendmode_srcalpha", + "gpu_get_colorwriteenable", + "gpu_get_colourwriteenable", + "gpu_get_cullmode", + "gpu_get_depth", + "gpu_get_fog", + "gpu_get_state", + "gpu_get_tex_filter", + "gpu_get_tex_filter_ext", + "gpu_get_tex_max_aniso", + "gpu_get_tex_max_aniso_ext", + "gpu_get_tex_max_mip", + "gpu_get_tex_max_mip_ext", + "gpu_get_tex_min_mip", + "gpu_get_tex_min_mip_ext", + "gpu_get_tex_mip_bias", + "gpu_get_tex_mip_bias_ext", + "gpu_get_tex_mip_enable", + "gpu_get_tex_mip_enable_ext", + "gpu_get_tex_mip_filter", + "gpu_get_tex_mip_filter_ext", + "gpu_get_tex_repeat", + "gpu_get_tex_repeat_ext", + "gpu_get_texfilter", + "gpu_get_texfilter_ext", + "gpu_get_texrepeat", + "gpu_get_texrepeat_ext", + "gpu_get_zfunc", + "gpu_get_ztestenable", + "gpu_get_zwriteenable", + "gpu_pop_state", + "gpu_push_state", + "gpu_set_alphatestenable", + "gpu_set_alphatestref", + "gpu_set_blendenable", + "gpu_set_blendmode", + "gpu_set_blendmode_ext", + "gpu_set_blendmode_ext_sepalpha", + "gpu_set_colorwriteenable", + "gpu_set_colourwriteenable", + "gpu_set_cullmode", + "gpu_set_depth", + "gpu_set_fog", + "gpu_set_state", + "gpu_set_tex_filter", + "gpu_set_tex_filter_ext", + "gpu_set_tex_max_aniso", + "gpu_set_tex_max_aniso_ext", + "gpu_set_tex_max_mip", + "gpu_set_tex_max_mip_ext", + "gpu_set_tex_min_mip", + "gpu_set_tex_min_mip_ext", + "gpu_set_tex_mip_bias", + "gpu_set_tex_mip_bias_ext", + "gpu_set_tex_mip_enable", + "gpu_set_tex_mip_enable_ext", + "gpu_set_tex_mip_filter", + "gpu_set_tex_mip_filter_ext", + "gpu_set_tex_repeat", + "gpu_set_tex_repeat_ext", + "gpu_set_texfilter", + "gpu_set_texfilter_ext", + "gpu_set_texrepeat", + "gpu_set_texrepeat_ext", + "gpu_set_zfunc", + "gpu_set_ztestenable", + "gpu_set_zwriteenable", + "handle_parse", + "highscore_add", + "highscore_clear", + "highscore_name", + "highscore_value", + "http_get", + "http_get_file", + "http_get_request_crossorigin", + "http_post_string", + "http_request", + "http_set_request_crossorigin", + "iap_acquire", + "iap_activate", + "iap_consume", + "iap_enumerate_products", + "iap_product_details", + "iap_purchase_details", + "iap_restore_all", + "iap_status", + "ini_close", + "ini_key_delete", + "ini_key_exists", + "ini_open", + "ini_open_from_string", + "ini_read_real", + "ini_read_string", + "ini_section_delete", + "ini_section_exists", + "ini_write_real", + "ini_write_string", + "instance_activate_all", + "instance_activate_layer", + "instance_activate_object", + "instance_activate_region", + "instance_change", + "instance_copy", + "instance_create_depth", + "instance_create_layer", + "instance_deactivate_all", + "instance_deactivate_layer", + "instance_deactivate_object", + "instance_deactivate_region", + "instance_destroy", + "instance_exists", + "instance_find", + "instance_furthest", + "instance_id_get", + "instance_nearest", + "instance_number", + "instance_place", + "instance_place_list", + "instance_position", + "instance_position_list", + "instanceof", + "int64", + "io_clear", + "irandom", + "irandom_range", + "is_array", + "is_bool", + "is_callable", + "is_debug_overlay_open", + "is_handle", + "is_infinity", + "is_instanceof", + "is_int32", + "is_int64", + "is_keyboard_used_debug_overlay", + "is_method", + "is_mouse_over_debug_overlay", + "is_nan", + "is_numeric", + "is_ptr", + "is_real", + "is_string", + "is_struct", + "is_undefined", + "json_decode", + "json_encode", + "json_parse", + "json_stringify", + "keyboard_check", + "keyboard_check_direct", + "keyboard_check_pressed", + "keyboard_check_released", + "keyboard_clear", + "keyboard_get_map", + "keyboard_get_numlock", + "keyboard_key_press", + "keyboard_key_release", + "keyboard_set_map", + "keyboard_set_numlock", + "keyboard_unset_map", + "keyboard_virtual_height", + "keyboard_virtual_hide", + "keyboard_virtual_show", + "keyboard_virtual_status", + "layer_add_instance", + "layer_background_alpha", + "layer_background_blend", + "layer_background_change", + "layer_background_create", + "layer_background_destroy", + "layer_background_exists", + "layer_background_get_alpha", + "layer_background_get_blend", + "layer_background_get_htiled", + "layer_background_get_id", + "layer_background_get_index", + "layer_background_get_speed", + "layer_background_get_sprite", + "layer_background_get_stretch", + "layer_background_get_visible", + "layer_background_get_vtiled", + "layer_background_get_xscale", + "layer_background_get_yscale", + "layer_background_htiled", + "layer_background_index", + "layer_background_speed", + "layer_background_sprite", + "layer_background_stretch", + "layer_background_visible", + "layer_background_vtiled", + "layer_background_xscale", + "layer_background_yscale", + "layer_clear_fx", + "layer_create", + "layer_depth", + "layer_destroy", + "layer_destroy_instances", + "layer_element_move", + "layer_enable_fx", + "layer_exists", + "layer_force_draw_depth", + "layer_fx_is_enabled", + "layer_get_all", + "layer_get_all_elements", + "layer_get_depth", + "layer_get_element_layer", + "layer_get_element_type", + "layer_get_forced_depth", + "layer_get_fx", + "layer_get_hspeed", + "layer_get_id", + "layer_get_id_at_depth", + "layer_get_name", + "layer_get_script_begin", + "layer_get_script_end", + "layer_get_shader", + "layer_get_target_room", + "layer_get_visible", + "layer_get_vspeed", + "layer_get_x", + "layer_get_y", + "layer_has_instance", + "layer_hspeed", + "layer_instance_get_instance", + "layer_is_draw_depth_forced", + "layer_reset_target_room", + "layer_script_begin", + "layer_script_end", + "layer_sequence_angle", + "layer_sequence_create", + "layer_sequence_destroy", + "layer_sequence_exists", + "layer_sequence_get_angle", + "layer_sequence_get_headdir", + "layer_sequence_get_headpos", + "layer_sequence_get_instance", + "layer_sequence_get_length", + "layer_sequence_get_sequence", + "layer_sequence_get_speedscale", + "layer_sequence_get_x", + "layer_sequence_get_xscale", + "layer_sequence_get_y", + "layer_sequence_get_yscale", + "layer_sequence_headdir", + "layer_sequence_headpos", + "layer_sequence_is_finished", + "layer_sequence_is_paused", + "layer_sequence_pause", + "layer_sequence_play", + "layer_sequence_speedscale", + "layer_sequence_x", + "layer_sequence_xscale", + "layer_sequence_y", + "layer_sequence_yscale", + "layer_set_fx", + "layer_set_target_room", + "layer_set_visible", + "layer_shader", + "layer_sprite_alpha", + "layer_sprite_angle", + "layer_sprite_blend", + "layer_sprite_change", + "layer_sprite_create", + "layer_sprite_destroy", + "layer_sprite_exists", + "layer_sprite_get_alpha", + "layer_sprite_get_angle", + "layer_sprite_get_blend", + "layer_sprite_get_id", + "layer_sprite_get_index", + "layer_sprite_get_speed", + "layer_sprite_get_sprite", + "layer_sprite_get_x", + "layer_sprite_get_xscale", + "layer_sprite_get_y", + "layer_sprite_get_yscale", + "layer_sprite_index", + "layer_sprite_speed", + "layer_sprite_x", + "layer_sprite_xscale", + "layer_sprite_y", + "layer_sprite_yscale", + "layer_tile_alpha", + "layer_tile_blend", + "layer_tile_change", + "layer_tile_create", + "layer_tile_destroy", + "layer_tile_exists", + "layer_tile_get_alpha", + "layer_tile_get_blend", + "layer_tile_get_region", + "layer_tile_get_sprite", + "layer_tile_get_visible", + "layer_tile_get_x", + "layer_tile_get_xscale", + "layer_tile_get_y", + "layer_tile_get_yscale", + "layer_tile_region", + "layer_tile_visible", + "layer_tile_x", + "layer_tile_xscale", + "layer_tile_y", + "layer_tile_yscale", + "layer_tilemap_create", + "layer_tilemap_destroy", + "layer_tilemap_exists", + "layer_tilemap_get_id", + "layer_vspeed", + "layer_x", + "layer_y", + "lengthdir_x", + "lengthdir_y", + "lerp", + "lin_to_db", + "ln", + "load_csv", + "log10", + "log2", + "logn", + "make_color_hsv", + "make_color_rgb", + "make_colour_hsv", + "make_colour_rgb", + "math_get_epsilon", + "math_set_epsilon", + "matrix_build", + "matrix_build_identity", + "matrix_build_lookat", + "matrix_build_projection_ortho", + "matrix_build_projection_perspective", + "matrix_build_projection_perspective_fov", + "matrix_get", + "matrix_multiply", + "matrix_set", + "matrix_stack_clear", + "matrix_stack_is_empty", + "matrix_stack_pop", + "matrix_stack_push", + "matrix_stack_set", + "matrix_stack_top", + "matrix_transform_vertex", + "max", + "md5_file", + "md5_string_unicode", + "md5_string_utf8", + "mean", + "median", + "merge_color", + "merge_colour", + "method", + "method_call", + "method_get_index", + "method_get_self", + "min", + "motion_add", + "motion_set", + "mouse_check_button", + "mouse_check_button_pressed", + "mouse_check_button_released", + "mouse_clear", + "mouse_wheel_down", + "mouse_wheel_up", + "move_and_collide", + "move_bounce_all", + "move_bounce_solid", + "move_contact_all", + "move_contact_solid", + "move_outside_all", + "move_outside_solid", + "move_random", + "move_snap", + "move_towards_point", + "move_wrap", + "mp_grid_add_cell", + "mp_grid_add_instances", + "mp_grid_add_rectangle", + "mp_grid_clear_all", + "mp_grid_clear_cell", + "mp_grid_clear_rectangle", + "mp_grid_create", + "mp_grid_destroy", + "mp_grid_draw", + "mp_grid_get_cell", + "mp_grid_path", + "mp_grid_to_ds_grid", + "mp_linear_path", + "mp_linear_path_object", + "mp_linear_step", + "mp_linear_step_object", + "mp_potential_path", + "mp_potential_path_object", + "mp_potential_settings", + "mp_potential_step", + "mp_potential_step_object", + "nameof", + "network_connect", + "network_connect_async", + "network_connect_raw", + "network_connect_raw_async", + "network_create_server", + "network_create_server_raw", + "network_create_socket", + "network_create_socket_ext", + "network_destroy", + "network_resolve", + "network_send_broadcast", + "network_send_packet", + "network_send_raw", + "network_send_udp", + "network_send_udp_raw", + "network_set_config", + "network_set_timeout", + "object_exists", + "object_get_mask", + "object_get_name", + "object_get_parent", + "object_get_persistent", + "object_get_physics", + "object_get_solid", + "object_get_sprite", + "object_get_visible", + "object_is_ancestor", + "object_set_mask", + "object_set_persistent", + "object_set_solid", + "object_set_sprite", + "object_set_visible", + "ord", + "os_check_permission", + "os_get_config", + "os_get_info", + "os_get_language", + "os_get_region", + "os_is_network_connected", + "os_is_paused", + "os_lock_orientation", + "os_powersave_enable", + "os_request_permission", + "os_set_orientation_lock", + "parameter_count", + "parameter_string", + "part_emitter_burst", + "part_emitter_clear", + "part_emitter_create", + "part_emitter_delay", + "part_emitter_destroy", + "part_emitter_destroy_all", + "part_emitter_enable", + "part_emitter_exists", + "part_emitter_interval", + "part_emitter_region", + "part_emitter_relative", + "part_emitter_stream", + "part_particles_burst", + "part_particles_clear", + "part_particles_count", + "part_particles_create", + "part_particles_create_color", + "part_particles_create_colour", + "part_system_angle", + "part_system_automatic_draw", + "part_system_automatic_update", + "part_system_clear", + "part_system_color", + "part_system_colour", + "part_system_create", + "part_system_create_layer", + "part_system_depth", + "part_system_destroy", + "part_system_draw_order", + "part_system_drawit", + "part_system_exists", + "part_system_get_info", + "part_system_get_layer", + "part_system_global_space", + "part_system_layer", + "part_system_position", + "part_system_update", + "part_type_alpha1", + "part_type_alpha2", + "part_type_alpha3", + "part_type_blend", + "part_type_clear", + "part_type_color1", + "part_type_color2", + "part_type_color3", + "part_type_color_hsv", + "part_type_color_mix", + "part_type_color_rgb", + "part_type_colour1", + "part_type_colour2", + "part_type_colour3", + "part_type_colour_hsv", + "part_type_colour_mix", + "part_type_colour_rgb", + "part_type_create", + "part_type_death", + "part_type_destroy", + "part_type_direction", + "part_type_exists", + "part_type_gravity", + "part_type_life", + "part_type_orientation", + "part_type_scale", + "part_type_shape", + "part_type_size", + "part_type_size_x", + "part_type_size_y", + "part_type_speed", + "part_type_sprite", + "part_type_step", + "part_type_subimage", + "particle_exists", + "particle_get_info", + "path_add", + "path_add_point", + "path_append", + "path_assign", + "path_change_point", + "path_clear_points", + "path_delete", + "path_delete_point", + "path_duplicate", + "path_end", + "path_exists", + "path_flip", + "path_get_closed", + "path_get_kind", + "path_get_length", + "path_get_name", + "path_get_number", + "path_get_point_speed", + "path_get_point_x", + "path_get_point_y", + "path_get_precision", + "path_get_speed", + "path_get_x", + "path_get_y", + "path_insert_point", + "path_mirror", + "path_rescale", + "path_reverse", + "path_rotate", + "path_set_closed", + "path_set_kind", + "path_set_precision", + "path_shift", + "path_start", + "physics_apply_angular_impulse", + "physics_apply_force", + "physics_apply_impulse", + "physics_apply_local_force", + "physics_apply_local_impulse", + "physics_apply_torque", + "physics_draw_debug", + "physics_fixture_add_point", + "physics_fixture_bind", + "physics_fixture_bind_ext", + "physics_fixture_create", + "physics_fixture_delete", + "physics_fixture_set_angular_damping", + "physics_fixture_set_awake", + "physics_fixture_set_box_shape", + "physics_fixture_set_chain_shape", + "physics_fixture_set_circle_shape", + "physics_fixture_set_collision_group", + "physics_fixture_set_density", + "physics_fixture_set_edge_shape", + "physics_fixture_set_friction", + "physics_fixture_set_kinematic", + "physics_fixture_set_linear_damping", + "physics_fixture_set_polygon_shape", + "physics_fixture_set_restitution", + "physics_fixture_set_sensor", + "physics_get_density", + "physics_get_friction", + "physics_get_restitution", + "physics_joint_delete", + "physics_joint_distance_create", + "physics_joint_enable_motor", + "physics_joint_friction_create", + "physics_joint_gear_create", + "physics_joint_get_value", + "physics_joint_prismatic_create", + "physics_joint_pulley_create", + "physics_joint_revolute_create", + "physics_joint_rope_create", + "physics_joint_set_value", + "physics_joint_weld_create", + "physics_joint_wheel_create", + "physics_mass_properties", + "physics_particle_count", + "physics_particle_create", + "physics_particle_delete", + "physics_particle_delete_region_box", + "physics_particle_delete_region_circle", + "physics_particle_delete_region_poly", + "physics_particle_draw", + "physics_particle_draw_ext", + "physics_particle_get_damping", + "physics_particle_get_data", + "physics_particle_get_data_particle", + "physics_particle_get_density", + "physics_particle_get_gravity_scale", + "physics_particle_get_group_flags", + "physics_particle_get_max_count", + "physics_particle_get_radius", + "physics_particle_group_add_point", + "physics_particle_group_begin", + "physics_particle_group_box", + "physics_particle_group_circle", + "physics_particle_group_count", + "physics_particle_group_delete", + "physics_particle_group_end", + "physics_particle_group_get_ang_vel", + "physics_particle_group_get_angle", + "physics_particle_group_get_centre_x", + "physics_particle_group_get_centre_y", + "physics_particle_group_get_data", + "physics_particle_group_get_inertia", + "physics_particle_group_get_mass", + "physics_particle_group_get_vel_x", + "physics_particle_group_get_vel_y", + "physics_particle_group_get_x", + "physics_particle_group_get_y", + "physics_particle_group_join", + "physics_particle_group_polygon", + "physics_particle_set_category_flags", + "physics_particle_set_damping", + "physics_particle_set_density", + "physics_particle_set_flags", + "physics_particle_set_gravity_scale", + "physics_particle_set_group_flags", + "physics_particle_set_max_count", + "physics_particle_set_radius", + "physics_pause_enable", + "physics_remove_fixture", + "physics_set_density", + "physics_set_friction", + "physics_set_restitution", + "physics_test_overlap", + "physics_world_create", + "physics_world_draw_debug", + "physics_world_gravity", + "physics_world_update_iterations", + "physics_world_update_speed", + "place_empty", + "place_free", + "place_meeting", + "place_snapped", + "point_direction", + "point_distance", + "point_distance_3d", + "point_in_circle", + "point_in_rectangle", + "point_in_triangle", + "position_change", + "position_destroy", + "position_empty", + "position_meeting", + "power", + "ptr", + "radtodeg", + "random", + "random_get_seed", + "random_range", + "random_set_seed", + "randomise", + "randomize", + "real", + "rectangle_in_circle", + "rectangle_in_rectangle", + "rectangle_in_triangle", + "ref_create", + "rollback_chat", + "rollback_create_game", + "rollback_define_extra_network_latency", + "rollback_define_input", + "rollback_define_input_frame_delay", + "rollback_define_mock_input", + "rollback_define_player", + "rollback_display_events", + "rollback_get_info", + "rollback_get_input", + "rollback_get_player_prefs", + "rollback_join_game", + "rollback_leave_game", + "rollback_set_player_prefs", + "rollback_start_game", + "rollback_sync_on_frame", + "rollback_use_late_join", + "rollback_use_manual_start", + "rollback_use_player_prefs", + "rollback_use_random_input", + "room_add", + "room_assign", + "room_duplicate", + "room_exists", + "room_get_camera", + "room_get_info", + "room_get_name", + "room_get_viewport", + "room_goto", + "room_goto_next", + "room_goto_previous", + "room_instance_add", + "room_instance_clear", + "room_next", + "room_previous", + "room_restart", + "room_set_camera", + "room_set_height", + "room_set_persistent", + "room_set_view_enabled", + "room_set_viewport", + "room_set_width", + "round", + "scheduler_resolution_get", + "scheduler_resolution_set", + "screen_save", + "screen_save_part", + "script_execute", + "script_execute_ext", + "script_exists", + "script_get_name", + "sequence_create", + "sequence_destroy", + "sequence_exists", + "sequence_get", + "sequence_get_objects", + "sequence_instance_override_object", + "sequence_keyframe_new", + "sequence_keyframedata_new", + "sequence_track_new", + "sha1_file", + "sha1_string_unicode", + "sha1_string_utf8", + "shader_current", + "shader_enable_corner_id", + "shader_get_name", + "shader_get_sampler_index", + "shader_get_uniform", + "shader_is_compiled", + "shader_reset", + "shader_set", + "shader_set_uniform_f", + "shader_set_uniform_f_array", + "shader_set_uniform_f_buffer", + "shader_set_uniform_i", + "shader_set_uniform_i_array", + "shader_set_uniform_matrix", + "shader_set_uniform_matrix_array", + "shaders_are_supported", + "shop_leave_rating", + "show_debug_message", + "show_debug_message_ext", + "show_debug_overlay", + "show_error", + "show_message", + "show_message_async", + "show_question", + "show_question_async", + "sign", + "sin", + "skeleton_animation_clear", + "skeleton_animation_get", + "skeleton_animation_get_duration", + "skeleton_animation_get_event_frames", + "skeleton_animation_get_ext", + "skeleton_animation_get_frame", + "skeleton_animation_get_frames", + "skeleton_animation_get_position", + "skeleton_animation_is_finished", + "skeleton_animation_is_looping", + "skeleton_animation_list", + "skeleton_animation_mix", + "skeleton_animation_set", + "skeleton_animation_set_ext", + "skeleton_animation_set_frame", + "skeleton_animation_set_position", + "skeleton_attachment_create", + "skeleton_attachment_create_color", + "skeleton_attachment_create_colour", + "skeleton_attachment_destroy", + "skeleton_attachment_exists", + "skeleton_attachment_get", + "skeleton_attachment_replace", + "skeleton_attachment_replace_color", + "skeleton_attachment_replace_colour", + "skeleton_attachment_set", + "skeleton_bone_data_get", + "skeleton_bone_data_set", + "skeleton_bone_list", + "skeleton_bone_state_get", + "skeleton_bone_state_set", + "skeleton_collision_draw_set", + "skeleton_find_slot", + "skeleton_get_bounds", + "skeleton_get_minmax", + "skeleton_get_num_bounds", + "skeleton_skin_create", + "skeleton_skin_get", + "skeleton_skin_list", + "skeleton_skin_set", + "skeleton_slot_alpha_get", + "skeleton_slot_color_get", + "skeleton_slot_color_set", + "skeleton_slot_colour_get", + "skeleton_slot_colour_set", + "skeleton_slot_data", + "skeleton_slot_data_instance", + "skeleton_slot_list", + "sprite_add", + "sprite_add_ext", + "sprite_add_from_surface", + "sprite_assign", + "sprite_collision_mask", + "sprite_create_from_surface", + "sprite_delete", + "sprite_duplicate", + "sprite_exists", + "sprite_flush", + "sprite_flush_multi", + "sprite_get_bbox_bottom", + "sprite_get_bbox_left", + "sprite_get_bbox_mode", + "sprite_get_bbox_right", + "sprite_get_bbox_top", + "sprite_get_height", + "sprite_get_info", + "sprite_get_name", + "sprite_get_nineslice", + "sprite_get_number", + "sprite_get_speed", + "sprite_get_speed_type", + "sprite_get_texture", + "sprite_get_tpe", + "sprite_get_uvs", + "sprite_get_width", + "sprite_get_xoffset", + "sprite_get_yoffset", + "sprite_merge", + "sprite_nineslice_create", + "sprite_prefetch", + "sprite_prefetch_multi", + "sprite_replace", + "sprite_save", + "sprite_save_strip", + "sprite_set_alpha_from_sprite", + "sprite_set_bbox", + "sprite_set_bbox_mode", + "sprite_set_cache_size", + "sprite_set_cache_size_ext", + "sprite_set_nineslice", + "sprite_set_offset", + "sprite_set_speed", + "sqr", + "sqrt", + "static_get", + "static_set", + "string", + "string_byte_at", + "string_byte_length", + "string_char_at", + "string_concat", + "string_concat_ext", + "string_copy", + "string_count", + "string_delete", + "string_digits", + "string_ends_with", + "string_ext", + "string_foreach", + "string_format", + "string_hash_to_newline", + "string_height", + "string_height_ext", + "string_insert", + "string_join", + "string_join_ext", + "string_last_pos", + "string_last_pos_ext", + "string_length", + "string_letters", + "string_lettersdigits", + "string_lower", + "string_ord_at", + "string_pos", + "string_pos_ext", + "string_repeat", + "string_replace", + "string_replace_all", + "string_set_byte_at", + "string_split", + "string_split_ext", + "string_starts_with", + "string_trim", + "string_trim_end", + "string_trim_start", + "string_upper", + "string_width", + "string_width_ext", + "struct_exists", + "struct_foreach", + "struct_get", + "struct_get_from_hash", + "struct_get_names", + "struct_names_count", + "struct_remove", + "struct_set", + "struct_set_from_hash", + "surface_copy", + "surface_copy_part", + "surface_create", + "surface_create_ext", + "surface_depth_disable", + "surface_exists", + "surface_format_is_supported", + "surface_free", + "surface_get_depth_disable", + "surface_get_format", + "surface_get_height", + "surface_get_target", + "surface_get_target_ext", + "surface_get_texture", + "surface_get_width", + "surface_getpixel", + "surface_getpixel_ext", + "surface_reset_target", + "surface_resize", + "surface_save", + "surface_save_part", + "surface_set_target", + "surface_set_target_ext", + "tag_get_asset_ids", + "tag_get_assets", + "tan", + "texture_debug_messages", + "texture_flush", + "texture_get_height", + "texture_get_texel_height", + "texture_get_texel_width", + "texture_get_uvs", + "texture_get_width", + "texture_global_scale", + "texture_is_ready", + "texture_prefetch", + "texture_set_stage", + "texturegroup_get_fonts", + "texturegroup_get_names", + "texturegroup_get_sprites", + "texturegroup_get_status", + "texturegroup_get_textures", + "texturegroup_get_tilesets", + "texturegroup_load", + "texturegroup_set_mode", + "texturegroup_unload", + "tile_get_empty", + "tile_get_flip", + "tile_get_index", + "tile_get_mirror", + "tile_get_rotate", + "tile_set_empty", + "tile_set_flip", + "tile_set_index", + "tile_set_mirror", + "tile_set_rotate", + "tilemap_clear", + "tilemap_get", + "tilemap_get_at_pixel", + "tilemap_get_cell_x_at_pixel", + "tilemap_get_cell_y_at_pixel", + "tilemap_get_frame", + "tilemap_get_global_mask", + "tilemap_get_height", + "tilemap_get_mask", + "tilemap_get_tile_height", + "tilemap_get_tile_width", + "tilemap_get_tileset", + "tilemap_get_width", + "tilemap_get_x", + "tilemap_get_y", + "tilemap_set", + "tilemap_set_at_pixel", + "tilemap_set_global_mask", + "tilemap_set_height", + "tilemap_set_mask", + "tilemap_set_width", + "tilemap_tileset", + "tilemap_x", + "tilemap_y", + "tileset_get_info", + "tileset_get_name", + "tileset_get_texture", + "tileset_get_uvs", + "time_bpm_to_seconds", + "time_seconds_to_bpm", + "time_source_create", + "time_source_destroy", + "time_source_exists", + "time_source_get_children", + "time_source_get_parent", + "time_source_get_period", + "time_source_get_reps_completed", + "time_source_get_reps_remaining", + "time_source_get_state", + "time_source_get_time_remaining", + "time_source_get_units", + "time_source_pause", + "time_source_reconfigure", + "time_source_reset", + "time_source_resume", + "time_source_start", + "time_source_stop", + "timeline_add", + "timeline_clear", + "timeline_delete", + "timeline_exists", + "timeline_get_name", + "timeline_max_moment", + "timeline_moment_add_script", + "timeline_moment_clear", + "timeline_size", + "typeof", + "url_get_domain", + "url_open", + "url_open_ext", + "url_open_full", + "uwp_device_touchscreen_available", + "uwp_livetile_badge_clear", + "uwp_livetile_badge_notification", + "uwp_livetile_notification_begin", + "uwp_livetile_notification_end", + "uwp_livetile_notification_expiry", + "uwp_livetile_notification_image_add", + "uwp_livetile_notification_secondary_begin", + "uwp_livetile_notification_tag", + "uwp_livetile_notification_template_add", + "uwp_livetile_notification_text_add", + "uwp_livetile_queue_enable", + "uwp_livetile_tile_clear", + "uwp_secondarytile_badge_clear", + "uwp_secondarytile_badge_notification", + "uwp_secondarytile_delete", + "uwp_secondarytile_pin", + "uwp_secondarytile_tile_clear", + "variable_clone", + "variable_get_hash", + "variable_global_exists", + "variable_global_get", + "variable_global_set", + "variable_instance_exists", + "variable_instance_get", + "variable_instance_get_names", + "variable_instance_names_count", + "variable_instance_set", + "variable_struct_exists", + "variable_struct_get", + "variable_struct_get_names", + "variable_struct_names_count", + "variable_struct_remove", + "variable_struct_set", + "vertex_argb", + "vertex_begin", + "vertex_color", + "vertex_colour", + "vertex_create_buffer", + "vertex_create_buffer_ext", + "vertex_create_buffer_from_buffer", + "vertex_create_buffer_from_buffer_ext", + "vertex_delete_buffer", + "vertex_end", + "vertex_float1", + "vertex_float2", + "vertex_float3", + "vertex_float4", + "vertex_format_add_color", + "vertex_format_add_colour", + "vertex_format_add_custom", + "vertex_format_add_normal", + "vertex_format_add_position", + "vertex_format_add_position_3d", + "vertex_format_add_texcoord", + "vertex_format_begin", + "vertex_format_delete", + "vertex_format_end", + "vertex_format_get_info", + "vertex_freeze", + "vertex_get_buffer_size", + "vertex_get_number", + "vertex_normal", + "vertex_position", + "vertex_position_3d", + "vertex_submit", + "vertex_submit_ext", + "vertex_texcoord", + "vertex_ubyte4", + "vertex_update_buffer_from_buffer", + "vertex_update_buffer_from_vertex", + "video_close", + "video_draw", + "video_enable_loop", + "video_get_duration", + "video_get_format", + "video_get_position", + "video_get_status", + "video_get_volume", + "video_is_looping", + "video_open", + "video_pause", + "video_resume", + "video_seek_to", + "video_set_volume", + "view_get_camera", + "view_get_hport", + "view_get_surface_id", + "view_get_visible", + "view_get_wport", + "view_get_xport", + "view_get_yport", + "view_set_camera", + "view_set_hport", + "view_set_surface_id", + "view_set_visible", + "view_set_wport", + "view_set_xport", + "view_set_yport", + "virtual_key_add", + "virtual_key_delete", + "virtual_key_hide", + "virtual_key_show", + "wallpaper_set_config", + "wallpaper_set_subscriptions", + "weak_ref_alive", + "weak_ref_any_alive", + "weak_ref_create", + "window_center", + "window_device", + "window_enable_borderless_fullscreen", + "window_get_borderless_fullscreen", + "window_get_caption", + "window_get_color", + "window_get_colour", + "window_get_cursor", + "window_get_fullscreen", + "window_get_height", + "window_get_showborder", + "window_get_visible_rects", + "window_get_width", + "window_get_x", + "window_get_y", + "window_handle", + "window_has_focus", + "window_mouse_get_delta_x", + "window_mouse_get_delta_y", + "window_mouse_get_locked", + "window_mouse_get_x", + "window_mouse_get_y", + "window_mouse_set", + "window_mouse_set_locked", + "window_set_caption", + "window_set_color", + "window_set_colour", + "window_set_cursor", + "window_set_fullscreen", + "window_set_max_height", + "window_set_max_width", + "window_set_min_height", + "window_set_min_width", + "window_set_position", + "window_set_rectangle", + "window_set_showborder", + "window_set_size", + "window_view_mouse_get_x", + "window_view_mouse_get_y", + "window_views_mouse_get_x", + "window_views_mouse_get_y", + "winphone_tile_background_color", + "winphone_tile_background_colour", + "zip_add_file", + "zip_create", + "zip_save", + "zip_unzip", + "zip_unzip_async" + ]; + const SYMBOLS = [ + "AudioEffect", + "AudioEffectType", + "AudioLFOType", + "GM_build_date", + "GM_build_type", + "GM_is_sandboxed", + "GM_project_filename", + "GM_runtime_version", + "GM_version", + "NaN", + "_GMFILE_", + "_GMFUNCTION_", + "_GMLINE_", + "alignmentH", + "alignmentV", + "all", + "animcurvetype_bezier", + "animcurvetype_catmullrom", + "animcurvetype_linear", + "asset_animationcurve", + "asset_font", + "asset_object", + "asset_path", + "asset_room", + "asset_script", + "asset_sequence", + "asset_shader", + "asset_sound", + "asset_sprite", + "asset_tiles", + "asset_timeline", + "asset_unknown", + "audio_3D", + "audio_bus_main", + "audio_falloff_exponent_distance", + "audio_falloff_exponent_distance_clamped", + "audio_falloff_exponent_distance_scaled", + "audio_falloff_inverse_distance", + "audio_falloff_inverse_distance_clamped", + "audio_falloff_inverse_distance_scaled", + "audio_falloff_linear_distance", + "audio_falloff_linear_distance_clamped", + "audio_falloff_none", + "audio_mono", + "audio_stereo", + "bboxkind_diamond", + "bboxkind_ellipse", + "bboxkind_precise", + "bboxkind_rectangular", + "bboxmode_automatic", + "bboxmode_fullimage", + "bboxmode_manual", + "bm_add", + "bm_dest_alpha", + "bm_dest_color", + "bm_dest_colour", + "bm_inv_dest_alpha", + "bm_inv_dest_color", + "bm_inv_dest_colour", + "bm_inv_src_alpha", + "bm_inv_src_color", + "bm_inv_src_colour", + "bm_max", + "bm_normal", + "bm_one", + "bm_src_alpha", + "bm_src_alpha_sat", + "bm_src_color", + "bm_src_colour", + "bm_subtract", + "bm_zero", + "browser_chrome", + "browser_edge", + "browser_firefox", + "browser_ie", + "browser_ie_mobile", + "browser_not_a_browser", + "browser_opera", + "browser_safari", + "browser_safari_mobile", + "browser_tizen", + "browser_unknown", + "browser_windows_store", + "buffer_bool", + "buffer_f16", + "buffer_f32", + "buffer_f64", + "buffer_fast", + "buffer_fixed", + "buffer_grow", + "buffer_s16", + "buffer_s32", + "buffer_s8", + "buffer_seek_end", + "buffer_seek_relative", + "buffer_seek_start", + "buffer_string", + "buffer_text", + "buffer_u16", + "buffer_u32", + "buffer_u64", + "buffer_u8", + "buffer_vbuffer", + "buffer_wrap", + "c_aqua", + "c_black", + "c_blue", + "c_dkgray", + "c_dkgrey", + "c_fuchsia", + "c_gray", + "c_green", + "c_grey", + "c_lime", + "c_ltgray", + "c_ltgrey", + "c_maroon", + "c_navy", + "c_olive", + "c_orange", + "c_purple", + "c_red", + "c_silver", + "c_teal", + "c_white", + "c_yellow", + "cache_directory", + "characterSpacing", + "cmpfunc_always", + "cmpfunc_equal", + "cmpfunc_greater", + "cmpfunc_greaterequal", + "cmpfunc_less", + "cmpfunc_lessequal", + "cmpfunc_never", + "cmpfunc_notequal", + "coreColor", + "coreColour", + "cr_appstart", + "cr_arrow", + "cr_beam", + "cr_cross", + "cr_default", + "cr_drag", + "cr_handpoint", + "cr_hourglass", + "cr_none", + "cr_size_all", + "cr_size_nesw", + "cr_size_ns", + "cr_size_nwse", + "cr_size_we", + "cr_uparrow", + "cull_clockwise", + "cull_counterclockwise", + "cull_noculling", + "device_emulator", + "device_ios_ipad", + "device_ios_ipad_retina", + "device_ios_iphone", + "device_ios_iphone5", + "device_ios_iphone6", + "device_ios_iphone6plus", + "device_ios_iphone_retina", + "device_ios_unknown", + "device_tablet", + "display_landscape", + "display_landscape_flipped", + "display_portrait", + "display_portrait_flipped", + "dll_cdecl", + "dll_stdcall", + "dropShadowEnabled", + "dropShadowEnabled", + "ds_type_grid", + "ds_type_list", + "ds_type_map", + "ds_type_priority", + "ds_type_queue", + "ds_type_stack", + "ef_cloud", + "ef_ellipse", + "ef_explosion", + "ef_firework", + "ef_flare", + "ef_rain", + "ef_ring", + "ef_smoke", + "ef_smokeup", + "ef_snow", + "ef_spark", + "ef_star", + "effectsEnabled", + "effectsEnabled", + "ev_alarm", + "ev_animation_end", + "ev_animation_event", + "ev_animation_update", + "ev_async_audio_playback", + "ev_async_audio_playback_ended", + "ev_async_audio_recording", + "ev_async_dialog", + "ev_async_push_notification", + "ev_async_save_load", + "ev_async_save_load", + "ev_async_social", + "ev_async_system_event", + "ev_async_web", + "ev_async_web_cloud", + "ev_async_web_iap", + "ev_async_web_image_load", + "ev_async_web_networking", + "ev_async_web_steam", + "ev_audio_playback", + "ev_audio_playback_ended", + "ev_audio_recording", + "ev_boundary", + "ev_boundary_view0", + "ev_boundary_view1", + "ev_boundary_view2", + "ev_boundary_view3", + "ev_boundary_view4", + "ev_boundary_view5", + "ev_boundary_view6", + "ev_boundary_view7", + "ev_broadcast_message", + "ev_cleanup", + "ev_collision", + "ev_create", + "ev_destroy", + "ev_dialog_async", + "ev_draw", + "ev_draw_begin", + "ev_draw_end", + "ev_draw_normal", + "ev_draw_post", + "ev_draw_pre", + "ev_end_of_path", + "ev_game_end", + "ev_game_start", + "ev_gesture", + "ev_gesture_double_tap", + "ev_gesture_drag_end", + "ev_gesture_drag_start", + "ev_gesture_dragging", + "ev_gesture_flick", + "ev_gesture_pinch_end", + "ev_gesture_pinch_in", + "ev_gesture_pinch_out", + "ev_gesture_pinch_start", + "ev_gesture_rotate_end", + "ev_gesture_rotate_start", + "ev_gesture_rotating", + "ev_gesture_tap", + "ev_global_gesture_double_tap", + "ev_global_gesture_drag_end", + "ev_global_gesture_drag_start", + "ev_global_gesture_dragging", + "ev_global_gesture_flick", + "ev_global_gesture_pinch_end", + "ev_global_gesture_pinch_in", + "ev_global_gesture_pinch_out", + "ev_global_gesture_pinch_start", + "ev_global_gesture_rotate_end", + "ev_global_gesture_rotate_start", + "ev_global_gesture_rotating", + "ev_global_gesture_tap", + "ev_global_left_button", + "ev_global_left_press", + "ev_global_left_release", + "ev_global_middle_button", + "ev_global_middle_press", + "ev_global_middle_release", + "ev_global_right_button", + "ev_global_right_press", + "ev_global_right_release", + "ev_gui", + "ev_gui_begin", + "ev_gui_end", + "ev_joystick1_button1", + "ev_joystick1_button2", + "ev_joystick1_button3", + "ev_joystick1_button4", + "ev_joystick1_button5", + "ev_joystick1_button6", + "ev_joystick1_button7", + "ev_joystick1_button8", + "ev_joystick1_down", + "ev_joystick1_left", + "ev_joystick1_right", + "ev_joystick1_up", + "ev_joystick2_button1", + "ev_joystick2_button2", + "ev_joystick2_button3", + "ev_joystick2_button4", + "ev_joystick2_button5", + "ev_joystick2_button6", + "ev_joystick2_button7", + "ev_joystick2_button8", + "ev_joystick2_down", + "ev_joystick2_left", + "ev_joystick2_right", + "ev_joystick2_up", + "ev_keyboard", + "ev_keypress", + "ev_keyrelease", + "ev_left_button", + "ev_left_press", + "ev_left_release", + "ev_middle_button", + "ev_middle_press", + "ev_middle_release", + "ev_mouse", + "ev_mouse_enter", + "ev_mouse_leave", + "ev_mouse_wheel_down", + "ev_mouse_wheel_up", + "ev_no_button", + "ev_no_more_health", + "ev_no_more_lives", + "ev_other", + "ev_outside", + "ev_outside_view0", + "ev_outside_view1", + "ev_outside_view2", + "ev_outside_view3", + "ev_outside_view4", + "ev_outside_view5", + "ev_outside_view6", + "ev_outside_view7", + "ev_pre_create", + "ev_push_notification", + "ev_right_button", + "ev_right_press", + "ev_right_release", + "ev_room_end", + "ev_room_start", + "ev_social", + "ev_step", + "ev_step_begin", + "ev_step_end", + "ev_step_normal", + "ev_system_event", + "ev_trigger", + "ev_user0", + "ev_user1", + "ev_user10", + "ev_user11", + "ev_user12", + "ev_user13", + "ev_user14", + "ev_user15", + "ev_user2", + "ev_user3", + "ev_user4", + "ev_user5", + "ev_user6", + "ev_user7", + "ev_user8", + "ev_user9", + "ev_web_async", + "ev_web_cloud", + "ev_web_iap", + "ev_web_image_load", + "ev_web_networking", + "ev_web_sound_load", + "ev_web_steam", + "fa_archive", + "fa_bottom", + "fa_center", + "fa_directory", + "fa_hidden", + "fa_left", + "fa_middle", + "fa_none", + "fa_readonly", + "fa_right", + "fa_sysfile", + "fa_top", + "fa_volumeid", + "false", + "frameSizeX", + "frameSizeY", + "gamespeed_fps", + "gamespeed_microseconds", + "global", + "glowColor", + "glowColour", + "glowEnabled", + "glowEnabled", + "glowEnd", + "glowStart", + "gp_axis_acceleration_x", + "gp_axis_acceleration_y", + "gp_axis_acceleration_z", + "gp_axis_angular_velocity_x", + "gp_axis_angular_velocity_y", + "gp_axis_angular_velocity_z", + "gp_axis_orientation_w", + "gp_axis_orientation_x", + "gp_axis_orientation_y", + "gp_axis_orientation_z", + "gp_axislh", + "gp_axislv", + "gp_axisrh", + "gp_axisrv", + "gp_face1", + "gp_face2", + "gp_face3", + "gp_face4", + "gp_padd", + "gp_padl", + "gp_padr", + "gp_padu", + "gp_select", + "gp_shoulderl", + "gp_shoulderlb", + "gp_shoulderr", + "gp_shoulderrb", + "gp_start", + "gp_stickl", + "gp_stickr", + "iap_available", + "iap_canceled", + "iap_ev_consume", + "iap_ev_product", + "iap_ev_purchase", + "iap_ev_restore", + "iap_ev_storeload", + "iap_failed", + "iap_purchased", + "iap_refunded", + "iap_status_available", + "iap_status_loading", + "iap_status_processing", + "iap_status_restoring", + "iap_status_unavailable", + "iap_status_uninitialised", + "iap_storeload_failed", + "iap_storeload_ok", + "iap_unavailable", + "infinity", + "kbv_autocapitalize_characters", + "kbv_autocapitalize_none", + "kbv_autocapitalize_sentences", + "kbv_autocapitalize_words", + "kbv_returnkey_continue", + "kbv_returnkey_default", + "kbv_returnkey_done", + "kbv_returnkey_emergency", + "kbv_returnkey_go", + "kbv_returnkey_google", + "kbv_returnkey_join", + "kbv_returnkey_next", + "kbv_returnkey_route", + "kbv_returnkey_search", + "kbv_returnkey_send", + "kbv_returnkey_yahoo", + "kbv_type_ascii", + "kbv_type_default", + "kbv_type_email", + "kbv_type_numbers", + "kbv_type_phone", + "kbv_type_phone_name", + "kbv_type_url", + "layerelementtype_background", + "layerelementtype_instance", + "layerelementtype_oldtilemap", + "layerelementtype_particlesystem", + "layerelementtype_sequence", + "layerelementtype_sprite", + "layerelementtype_tile", + "layerelementtype_tilemap", + "layerelementtype_undefined", + "leaderboard_type_number", + "leaderboard_type_time_mins_secs", + "lighttype_dir", + "lighttype_point", + "lineSpacing", + "m_axisx", + "m_axisx_gui", + "m_axisy", + "m_axisy_gui", + "m_scroll_down", + "m_scroll_up", + "matrix_projection", + "matrix_view", + "matrix_world", + "mb_any", + "mb_left", + "mb_middle", + "mb_none", + "mb_right", + "mb_side1", + "mb_side2", + "mip_markedonly", + "mip_off", + "mip_on", + "network_config_avoid_time_wait", + "network_config_connect_timeout", + "network_config_disable_multicast", + "network_config_disable_reliable_udp", + "network_config_enable_multicast", + "network_config_enable_reliable_udp", + "network_config_use_non_blocking_socket", + "network_config_websocket_protocol", + "network_connect_active", + "network_connect_blocking", + "network_connect_nonblocking", + "network_connect_none", + "network_connect_passive", + "network_send_binary", + "network_send_text", + "network_socket_bluetooth", + "network_socket_tcp", + "network_socket_udp", + "network_socket_ws", + "network_socket_wss", + "network_type_connect", + "network_type_data", + "network_type_disconnect", + "network_type_down", + "network_type_non_blocking_connect", + "network_type_up", + "network_type_up_failed", + "nineslice_blank", + "nineslice_bottom", + "nineslice_center", + "nineslice_centre", + "nineslice_hide", + "nineslice_left", + "nineslice_mirror", + "nineslice_repeat", + "nineslice_right", + "nineslice_stretch", + "nineslice_top", + "noone", + "of_challenge_lose", + "of_challenge_tie", + "of_challenge_win", + "os_android", + "os_gdk", + "os_gxgames", + "os_ios", + "os_linux", + "os_macosx", + "os_operagx", + "os_permission_denied", + "os_permission_denied_dont_request", + "os_permission_granted", + "os_ps3", + "os_ps4", + "os_ps5", + "os_psvita", + "os_switch", + "os_tvos", + "os_unknown", + "os_uwp", + "os_win8native", + "os_windows", + "os_winphone", + "os_xboxone", + "os_xboxseriesxs", + "other", + "outlineColor", + "outlineColour", + "outlineDist", + "outlineEnabled", + "outlineEnabled", + "paragraphSpacing", + "path_action_continue", + "path_action_restart", + "path_action_reverse", + "path_action_stop", + "phy_debug_render_aabb", + "phy_debug_render_collision_pairs", + "phy_debug_render_coms", + "phy_debug_render_core_shapes", + "phy_debug_render_joints", + "phy_debug_render_obb", + "phy_debug_render_shapes", + "phy_joint_anchor_1_x", + "phy_joint_anchor_1_y", + "phy_joint_anchor_2_x", + "phy_joint_anchor_2_y", + "phy_joint_angle", + "phy_joint_angle_limits", + "phy_joint_damping_ratio", + "phy_joint_frequency", + "phy_joint_length_1", + "phy_joint_length_2", + "phy_joint_lower_angle_limit", + "phy_joint_max_force", + "phy_joint_max_length", + "phy_joint_max_motor_force", + "phy_joint_max_motor_torque", + "phy_joint_max_torque", + "phy_joint_motor_force", + "phy_joint_motor_speed", + "phy_joint_motor_torque", + "phy_joint_reaction_force_x", + "phy_joint_reaction_force_y", + "phy_joint_reaction_torque", + "phy_joint_speed", + "phy_joint_translation", + "phy_joint_upper_angle_limit", + "phy_particle_data_flag_category", + "phy_particle_data_flag_color", + "phy_particle_data_flag_colour", + "phy_particle_data_flag_position", + "phy_particle_data_flag_typeflags", + "phy_particle_data_flag_velocity", + "phy_particle_flag_colormixing", + "phy_particle_flag_colourmixing", + "phy_particle_flag_elastic", + "phy_particle_flag_powder", + "phy_particle_flag_spring", + "phy_particle_flag_tensile", + "phy_particle_flag_viscous", + "phy_particle_flag_wall", + "phy_particle_flag_water", + "phy_particle_flag_zombie", + "phy_particle_group_flag_rigid", + "phy_particle_group_flag_solid", + "pi", + "pointer_invalid", + "pointer_null", + "pr_linelist", + "pr_linestrip", + "pr_pointlist", + "pr_trianglefan", + "pr_trianglelist", + "pr_trianglestrip", + "ps_distr_gaussian", + "ps_distr_invgaussian", + "ps_distr_linear", + "ps_mode_burst", + "ps_mode_stream", + "ps_shape_diamond", + "ps_shape_ellipse", + "ps_shape_line", + "ps_shape_rectangle", + "pt_shape_circle", + "pt_shape_cloud", + "pt_shape_disk", + "pt_shape_explosion", + "pt_shape_flare", + "pt_shape_line", + "pt_shape_pixel", + "pt_shape_ring", + "pt_shape_smoke", + "pt_shape_snow", + "pt_shape_spark", + "pt_shape_sphere", + "pt_shape_square", + "pt_shape_star", + "rollback_chat_message", + "rollback_connect_error", + "rollback_connect_info", + "rollback_connected_to_peer", + "rollback_connection_rejected", + "rollback_disconnected_from_peer", + "rollback_end_game", + "rollback_game_full", + "rollback_game_info", + "rollback_game_interrupted", + "rollback_game_resumed", + "rollback_high_latency", + "rollback_player_prefs", + "rollback_protocol_rejected", + "rollback_synchronized_with_peer", + "rollback_synchronizing_with_peer", + "self", + "seqaudiokey_loop", + "seqaudiokey_oneshot", + "seqdir_left", + "seqdir_right", + "seqinterpolation_assign", + "seqinterpolation_lerp", + "seqplay_loop", + "seqplay_oneshot", + "seqplay_pingpong", + "seqtextkey_bottom", + "seqtextkey_center", + "seqtextkey_justify", + "seqtextkey_left", + "seqtextkey_middle", + "seqtextkey_right", + "seqtextkey_top", + "seqtracktype_audio", + "seqtracktype_bool", + "seqtracktype_clipmask", + "seqtracktype_clipmask_mask", + "seqtracktype_clipmask_subject", + "seqtracktype_color", + "seqtracktype_colour", + "seqtracktype_empty", + "seqtracktype_graphic", + "seqtracktype_group", + "seqtracktype_instance", + "seqtracktype_message", + "seqtracktype_moment", + "seqtracktype_particlesystem", + "seqtracktype_real", + "seqtracktype_sequence", + "seqtracktype_spriteframes", + "seqtracktype_string", + "seqtracktype_text", + "shadowColor", + "shadowColour", + "shadowOffsetX", + "shadowOffsetY", + "shadowSoftness", + "sprite_add_ext_error_cancelled", + "sprite_add_ext_error_decompressfailed", + "sprite_add_ext_error_loadfailed", + "sprite_add_ext_error_setupfailed", + "sprite_add_ext_error_spritenotfound", + "sprite_add_ext_error_unknown", + "spritespeed_framespergameframe", + "spritespeed_framespersecond", + "surface_r16float", + "surface_r32float", + "surface_r8unorm", + "surface_rg8unorm", + "surface_rgba16float", + "surface_rgba32float", + "surface_rgba4unorm", + "surface_rgba8unorm", + "texturegroup_status_fetched", + "texturegroup_status_loaded", + "texturegroup_status_loading", + "texturegroup_status_unloaded", + "tf_anisotropic", + "tf_linear", + "tf_point", + "thickness", + "tile_flip", + "tile_index_mask", + "tile_mirror", + "tile_rotate", + "time_source_expire_after", + "time_source_expire_nearest", + "time_source_game", + "time_source_global", + "time_source_state_active", + "time_source_state_initial", + "time_source_state_paused", + "time_source_state_stopped", + "time_source_units_frames", + "time_source_units_seconds", + "timezone_local", + "timezone_utc", + "tm_countvsyncs", + "tm_sleep", + "tm_systemtiming", + "true", + "ty_real", + "ty_string", + "undefined", + "vertex_type_color", + "vertex_type_colour", + "vertex_type_float1", + "vertex_type_float2", + "vertex_type_float3", + "vertex_type_float4", + "vertex_type_ubyte4", + "vertex_usage_binormal", + "vertex_usage_blendindices", + "vertex_usage_blendweight", + "vertex_usage_color", + "vertex_usage_colour", + "vertex_usage_depth", + "vertex_usage_fog", + "vertex_usage_normal", + "vertex_usage_position", + "vertex_usage_psize", + "vertex_usage_sample", + "vertex_usage_tangent", + "vertex_usage_texcoord", + "video_format_rgba", + "video_format_yuv", + "video_status_closed", + "video_status_paused", + "video_status_playing", + "video_status_preparing", + "vk_add", + "vk_alt", + "vk_anykey", + "vk_backspace", + "vk_control", + "vk_decimal", + "vk_delete", + "vk_divide", + "vk_down", + "vk_end", + "vk_enter", + "vk_escape", + "vk_f1", + "vk_f10", + "vk_f11", + "vk_f12", + "vk_f2", + "vk_f3", + "vk_f4", + "vk_f5", + "vk_f6", + "vk_f7", + "vk_f8", + "vk_f9", + "vk_home", + "vk_insert", + "vk_lalt", + "vk_lcontrol", + "vk_left", + "vk_lshift", + "vk_multiply", + "vk_nokey", + "vk_numpad0", + "vk_numpad1", + "vk_numpad2", + "vk_numpad3", + "vk_numpad4", + "vk_numpad5", + "vk_numpad6", + "vk_numpad7", + "vk_numpad8", + "vk_numpad9", + "vk_pagedown", + "vk_pageup", + "vk_pause", + "vk_printscreen", + "vk_ralt", + "vk_rcontrol", + "vk_return", + "vk_right", + "vk_rshift", + "vk_shift", + "vk_space", + "vk_subtract", + "vk_tab", + "vk_up", + "wallpaper_config", + "wallpaper_subscription_data", + "wrap" + ]; + const LANGUAGE_VARIABLES = [ + "alarm", + "application_surface", + "argument", + "argument0", + "argument1", + "argument2", + "argument3", + "argument4", + "argument5", + "argument6", + "argument7", + "argument8", + "argument9", + "argument10", + "argument11", + "argument12", + "argument13", + "argument14", + "argument15", + "argument_count", + "async_load", + "background_color", + "background_colour", + "background_showcolor", + "background_showcolour", + "bbox_bottom", + "bbox_left", + "bbox_right", + "bbox_top", + "browser_height", + "browser_width", + "colour?ColourTrack", + "current_day", + "current_hour", + "current_minute", + "current_month", + "current_second", + "current_time", + "current_weekday", + "current_year", + "cursor_sprite", + "debug_mode", + "delta_time", + "depth", + "direction", + "display_aa", + "drawn_by_sequence", + "event_action", + "event_data", + "event_number", + "event_object", + "event_type", + "font_texture_page_size", + "fps", + "fps_real", + "friction", + "game_display_name", + "game_id", + "game_project_name", + "game_save_id", + "gravity", + "gravity_direction", + "health", + "hspeed", + "iap_data", + "id", + "image_alpha", + "image_angle", + "image_blend", + "image_index", + "image_number", + "image_speed", + "image_xscale", + "image_yscale", + "in_collision_tree", + "in_sequence", + "instance_count", + "instance_id", + "keyboard_key", + "keyboard_lastchar", + "keyboard_lastkey", + "keyboard_string", + "layer", + "lives", + "longMessage", + "managed", + "mask_index", + "message", + "mouse_button", + "mouse_lastbutton", + "mouse_x", + "mouse_y", + "object_index", + "os_browser", + "os_device", + "os_type", + "os_version", + "path_endaction", + "path_index", + "path_orientation", + "path_position", + "path_positionprevious", + "path_scale", + "path_speed", + "persistent", + "phy_active", + "phy_angular_damping", + "phy_angular_velocity", + "phy_bullet", + "phy_col_normal_x", + "phy_col_normal_y", + "phy_collision_points", + "phy_collision_x", + "phy_collision_y", + "phy_com_x", + "phy_com_y", + "phy_dynamic", + "phy_fixed_rotation", + "phy_inertia", + "phy_kinematic", + "phy_linear_damping", + "phy_linear_velocity_x", + "phy_linear_velocity_y", + "phy_mass", + "phy_position_x", + "phy_position_xprevious", + "phy_position_y", + "phy_position_yprevious", + "phy_rotation", + "phy_sleeping", + "phy_speed", + "phy_speed_x", + "phy_speed_y", + "player_avatar_sprite", + "player_avatar_url", + "player_id", + "player_local", + "player_type", + "player_user_id", + "program_directory", + "rollback_api_server", + "rollback_confirmed_frame", + "rollback_current_frame", + "rollback_event_id", + "rollback_event_param", + "rollback_game_running", + "room", + "room_first", + "room_height", + "room_last", + "room_persistent", + "room_speed", + "room_width", + "score", + "script", + "sequence_instance", + "solid", + "speed", + "sprite_height", + "sprite_index", + "sprite_width", + "sprite_xoffset", + "sprite_yoffset", + "stacktrace", + "temp_directory", + "timeline_index", + "timeline_loop", + "timeline_position", + "timeline_running", + "timeline_speed", + "view_camera", + "view_current", + "view_enabled", + "view_hport", + "view_surface_id", + "view_visible", + "view_wport", + "view_xport", + "view_yport", + "visible", + "vspeed", + "webgl_enabled", + "working_directory", + "x", + "xprevious", + "xstart", + "y", + "yprevious", + "ystart" + ]; + return { + name: 'GML', + case_insensitive: false, // language is case-insensitive + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS, + symbol: SYMBOLS, + "variable.language": LANGUAGE_VARIABLES + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = gml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/go.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/go.js ***! + \***********************************************************/ +(module) { + +/* +Language: Go +Author: Stephan Kountso aka StepLg +Contributors: Evgeny Stepanischev +Description: Google go language (golang). For info about language +Website: http://golang.org/ +Category: common, system +*/ + +function go(hljs) { + const LITERALS = [ + "true", + "false", + "iota", + "nil" + ]; + const BUILT_INS = [ + "append", + "cap", + "close", + "complex", + "copy", + "imag", + "len", + "make", + "new", + "panic", + "print", + "println", + "real", + "recover", + "delete" + ]; + const TYPES = [ + "bool", + "byte", + "complex64", + "complex128", + "error", + "float32", + "float64", + "int8", + "int16", + "int32", + "int64", + "string", + "uint8", + "uint16", + "uint32", + "uint64", + "int", + "uint", + "uintptr", + "rune" + ]; + const KWS = [ + "break", + "case", + "chan", + "const", + "continue", + "default", + "defer", + "else", + "fallthrough", + "for", + "func", + "go", + "goto", + "if", + "import", + "interface", + "map", + "package", + "range", + "return", + "select", + "struct", + "switch", + "type", + "var", + ]; + const KEYWORDS = { + keyword: KWS, + type: TYPES, + literal: LITERALS, + built_in: BUILT_INS + }; + return { + name: 'Go', + aliases: [ 'golang' ], + keywords: KEYWORDS, + illegal: ' +Description: a lightweight dynamic language for the JVM +Website: http://golo-lang.org/ +Category: system +*/ + +function golo(hljs) { + const KEYWORDS = [ + "println", + "readln", + "print", + "import", + "module", + "function", + "local", + "return", + "let", + "var", + "while", + "for", + "foreach", + "times", + "in", + "case", + "when", + "match", + "with", + "break", + "continue", + "augment", + "augmentation", + "each", + "find", + "filter", + "reduce", + "if", + "then", + "else", + "otherwise", + "try", + "catch", + "finally", + "raise", + "throw", + "orIfNull", + "DynamicObject|10", + "DynamicVariable", + "struct", + "Observable", + "map", + "set", + "vector", + "list", + "array" + ]; + + return { + name: 'Golo', + keywords: { + keyword: KEYWORDS, + literal: [ + "true", + "false", + "null" + ] + }, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'meta', + begin: '@[A-Za-z]+' + } + ] + }; +} + +module.exports = golo; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/gradle.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/gradle.js ***! + \***************************************************************/ +(module) { + +/* +Language: Gradle +Description: Gradle is an open-source build automation tool focused on flexibility and performance. +Website: https://gradle.org +Author: Damian Mee +Category: build-system +*/ + +function gradle(hljs) { + const KEYWORDS = [ + "task", + "project", + "allprojects", + "subprojects", + "artifacts", + "buildscript", + "configurations", + "dependencies", + "repositories", + "sourceSets", + "description", + "delete", + "from", + "into", + "include", + "exclude", + "source", + "classpath", + "destinationDir", + "includes", + "options", + "sourceCompatibility", + "targetCompatibility", + "group", + "flatDir", + "doLast", + "doFirst", + "flatten", + "todir", + "fromdir", + "ant", + "def", + "abstract", + "break", + "case", + "catch", + "continue", + "default", + "do", + "else", + "extends", + "final", + "finally", + "for", + "if", + "implements", + "instanceof", + "native", + "new", + "private", + "protected", + "public", + "return", + "static", + "switch", + "synchronized", + "throw", + "throws", + "transient", + "try", + "volatile", + "while", + "strictfp", + "package", + "import", + "false", + "null", + "super", + "this", + "true", + "antlrtask", + "checkstyle", + "codenarc", + "copy", + "boolean", + "byte", + "char", + "class", + "double", + "float", + "int", + "interface", + "long", + "short", + "void", + "compile", + "runTime", + "file", + "fileTree", + "abs", + "any", + "append", + "asList", + "asWritable", + "call", + "collect", + "compareTo", + "count", + "div", + "dump", + "each", + "eachByte", + "eachFile", + "eachLine", + "every", + "find", + "findAll", + "flatten", + "getAt", + "getErr", + "getIn", + "getOut", + "getText", + "grep", + "immutable", + "inject", + "inspect", + "intersect", + "invokeMethods", + "isCase", + "join", + "leftShift", + "minus", + "multiply", + "newInputStream", + "newOutputStream", + "newPrintWriter", + "newReader", + "newWriter", + "next", + "plus", + "pop", + "power", + "previous", + "print", + "println", + "push", + "putAt", + "read", + "readBytes", + "readLines", + "reverse", + "reverseEach", + "round", + "size", + "sort", + "splitEachLine", + "step", + "subMap", + "times", + "toInteger", + "toList", + "tokenize", + "upto", + "waitForOrKill", + "withPrintWriter", + "withReader", + "withStream", + "withWriter", + "withWriterAppend", + "write", + "writeLine" + ]; + return { + name: 'Gradle', + case_insensitive: true, + keywords: KEYWORDS, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + hljs.REGEXP_MODE + + ] + }; +} + +module.exports = gradle; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/graphql.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/graphql.js ***! + \****************************************************************/ +(module) { + +/* + Language: GraphQL + Author: John Foster (GH jf990), and others + Description: GraphQL is a query language for APIs + Category: web, common +*/ + +/** @type LanguageFn */ +function graphql(hljs) { + const regex = hljs.regex; + const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/; + return { + name: "GraphQL", + aliases: [ "gql" ], + case_insensitive: true, + disableAutodetect: false, + keywords: { + keyword: [ + "query", + "mutation", + "subscription", + "type", + "input", + "schema", + "directive", + "interface", + "union", + "scalar", + "fragment", + "enum", + "on" + ], + literal: [ + "true", + "false", + "null" + ] + }, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + { + scope: "punctuation", + match: /[.]{3}/, + relevance: 0 + }, + { + scope: "punctuation", + begin: /[\!\(\)\:\=\[\]\{\|\}]{1}/, + relevance: 0 + }, + { + scope: "variable", + begin: /\$/, + end: /\W/, + excludeEnd: true, + relevance: 0 + }, + { + scope: "meta", + match: /@\w+/, + excludeEnd: true + }, + { + scope: "symbol", + begin: regex.concat(GQL_NAME, regex.lookahead(/\s*:/)), + relevance: 0 + } + ], + illegal: [ + /[;<']/, + /BEGIN/ + ] + }; +} + +module.exports = graphql; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/groovy.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/groovy.js ***! + \***************************************************************/ +(module) { + +/* + Language: Groovy + Author: Guillaume Laforge + Description: Groovy programming language implementation inspired from Vsevolod's Java mode + Website: https://groovy-lang.org + Category: system + */ + +function variants(variants, obj = {}) { + obj.variants = variants; + return obj; +} + +function groovy(hljs) { + const regex = hljs.regex; + const IDENT_RE = '[A-Za-z0-9_$]+'; + const COMMENT = variants([ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.COMMENT( + '/\\*\\*', + '\\*/', + { + relevance: 0, + contains: [ + { + // eat up @'s in emails to prevent them to be recognized as doctags + begin: /\w+@/, + relevance: 0 + }, + { + className: 'doctag', + begin: '@[A-Za-z]+' + } + ] + } + ) + ]); + const REGEXP = { + className: 'regexp', + begin: /~?\/[^\/\n]+\//, + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + const NUMBER = variants([ + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE + ]); + const STRING = variants([ + { + begin: /"""/, + end: /"""/ + }, + { + begin: /'''/, + end: /'''/ + }, + { + begin: "\\$/", + end: "/\\$", + relevance: 10 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ], + { className: "string" } + ); + + const CLASS_DEFINITION = { + match: [ + /(class|interface|trait|enum|record|extends|implements)/, + /\s+/, + hljs.UNDERSCORE_IDENT_RE + ], + scope: { + 1: "keyword", + 3: "title.class", + } + }; + const TYPES = [ + "byte", + "short", + "char", + "int", + "long", + "boolean", + "float", + "double", + "void" + ]; + const KEYWORDS = [ + // groovy specific keywords + "def", + "as", + "in", + "assert", + "trait", + // common keywords with Java + "abstract", + "static", + "volatile", + "transient", + "public", + "private", + "protected", + "synchronized", + "final", + "class", + "interface", + "enum", + "if", + "else", + "for", + "while", + "switch", + "case", + "break", + "default", + "continue", + "throw", + "throws", + "try", + "catch", + "finally", + "implements", + "extends", + "new", + "import", + "package", + "return", + "instanceof", + "var" + ]; + + return { + name: 'Groovy', + keywords: { + "variable.language": 'this super', + literal: 'true false null', + type: TYPES, + keyword: KEYWORDS + }, + contains: [ + hljs.SHEBANG({ + binary: "groovy", + relevance: 10 + }), + COMMENT, + STRING, + REGEXP, + NUMBER, + CLASS_DEFINITION, + { + className: 'meta', + begin: '@[A-Za-z]+', + relevance: 0 + }, + { + // highlight map keys and named parameters as attrs + className: 'attr', + begin: IDENT_RE + '[ \t]*:', + relevance: 0 + }, + { + // catch middle element of the ternary operator + // to avoid highlight it as a label, named parameter, or map key + begin: /\?/, + end: /:/, + relevance: 0, + contains: [ + COMMENT, + STRING, + REGEXP, + NUMBER, + 'self' + ] + }, + { + // highlight labeled statements + className: 'symbol', + begin: '^[ \t]*' + regex.lookahead(IDENT_RE + ':'), + excludeBegin: true, + end: IDENT_RE + ':', + relevance: 0 + } + ], + illegal: /#|<\// + }; +} + +module.exports = groovy; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/haml.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/haml.js ***! + \*************************************************************/ +(module) { + +/* +Language: HAML +Requires: ruby.js +Author: Dan Allen +Website: http://haml.info +Category: template +*/ + +// TODO support filter tags like :javascript, support inline HTML +function haml(hljs) { + return { + name: 'HAML', + case_insensitive: true, + contains: [ + { + className: 'meta', + begin: '^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$', + relevance: 10 + }, + // FIXME these comments should be allowed to span indented lines + hljs.COMMENT( + '^\\s*(!=#|=#|-#|/).*$', + null, + { relevance: 0 } + ), + { + begin: '^\\s*(-|=|!=)(?!#)', + end: /$/, + subLanguage: 'ruby', + excludeBegin: true, + excludeEnd: true + }, + { + className: 'tag', + begin: '^\\s*%', + contains: [ + { + className: 'selector-tag', + begin: '\\w+' + }, + { + className: 'selector-id', + begin: '#[\\w-]+' + }, + { + className: 'selector-class', + begin: '\\.[\\w-]+' + }, + { + begin: /\{\s*/, + end: /\s*\}/, + contains: [ + { + begin: ':\\w+\\s*=>', + end: ',\\s+', + returnBegin: true, + endsWithParent: true, + contains: [ + { + className: 'attr', + begin: ':\\w+' + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + begin: '\\w+', + relevance: 0 + } + ] + } + ] + }, + { + begin: '\\(\\s*', + end: '\\s*\\)', + excludeEnd: true, + contains: [ + { + begin: '\\w+\\s*=', + end: '\\s+', + returnBegin: true, + endsWithParent: true, + contains: [ + { + className: 'attr', + begin: '\\w+', + relevance: 0 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + begin: '\\w+', + relevance: 0 + } + ] + } + ] + } + ] + }, + { begin: '^\\s*[=~]\\s*' }, + { + begin: /#\{/, + end: /\}/, + subLanguage: 'ruby', + excludeBegin: true, + excludeEnd: true + } + ] + }; +} + +module.exports = haml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/handlebars.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/handlebars.js ***! + \*******************************************************************/ +(module) { + +/* +Language: Handlebars +Requires: xml.js +Author: Robin Ward +Description: Matcher for Handlebars as well as EmberJS additions. +Website: https://handlebarsjs.com +Category: template +*/ + +function handlebars(hljs) { + const regex = hljs.regex; + const BUILT_INS = { + $pattern: /[\w.\/]+/, + built_in: [ + 'action', + 'bindattr', + 'collection', + 'component', + 'concat', + 'debugger', + 'each', + 'each-in', + 'get', + 'hash', + 'if', + 'in', + 'input', + 'link-to', + 'loc', + 'log', + 'lookup', + 'mut', + 'outlet', + 'partial', + 'query-params', + 'render', + 'template', + 'textarea', + 'unbound', + 'unless', + 'view', + 'with', + 'yield' + ] + }; + + const LITERALS = { + $pattern: /[\w.\/]+/, + literal: [ + 'true', + 'false', + 'undefined', + 'null' + ] + }; + + // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments + // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths + // like a/b, ./abc/cde, and abc.bcd + + const DOUBLE_QUOTED_ID_REGEX = /""|"[^"]+"/; + const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/; + const BRACKET_QUOTED_ID_REGEX = /\[\]|\[[^\]]+\]/; + const PLAIN_ID_REGEX = /[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/; + const PATH_DELIMITER_REGEX = /(\.|\/)/; + const ANY_ID = regex.either( + DOUBLE_QUOTED_ID_REGEX, + SINGLE_QUOTED_ID_REGEX, + BRACKET_QUOTED_ID_REGEX, + PLAIN_ID_REGEX + ); + + const IDENTIFIER_REGEX = regex.concat( + regex.optional(/\.|\.\/|\//), // relative or absolute path + ANY_ID, + regex.anyNumberOfTimes(regex.concat( + PATH_DELIMITER_REGEX, + ANY_ID + )) + ); + + // identifier followed by a equal-sign (without the equal sign) + const HASH_PARAM_REGEX = regex.concat( + '(', + BRACKET_QUOTED_ID_REGEX, '|', + PLAIN_ID_REGEX, + ')(?==)' + ); + + const HELPER_NAME_OR_PATH_EXPRESSION = { begin: IDENTIFIER_REGEX }; + + const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { keywords: LITERALS }); + + const SUB_EXPRESSION = { + begin: /\(/, + end: /\)/ + // the "contains" is added below when all necessary sub-modes are defined + }; + + const HASH = { + // fka "attribute-assignment", parameters of the form 'key=value' + className: 'attr', + begin: HASH_PARAM_REGEX, + relevance: 0, + starts: { + begin: /=/, + end: /=/, + starts: { contains: [ + hljs.NUMBER_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + HELPER_PARAMETER, + SUB_EXPRESSION + ] } + } + }; + + const BLOCK_PARAMS = { + // parameters of the form '{{#with x as | y |}}...{{/with}}' + begin: /as\s+\|/, + keywords: { keyword: 'as' }, + end: /\|/, + contains: [ + { + // define sub-mode in order to prevent highlighting of block-parameter named "as" + begin: /\w+/ } + ] + }; + + const HELPER_PARAMETERS = { + contains: [ + hljs.NUMBER_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + BLOCK_PARAMS, + HASH, + HELPER_PARAMETER, + SUB_EXPRESSION + ], + returnEnd: true + // the property "end" is defined through inheritance when the mode is used. If depends + // on the surrounding mode, but "endsWithParent" does not work here (i.e. it includes the + // end-token of the surrounding mode) + }; + + const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { + className: 'name', + keywords: BUILT_INS, + starts: hljs.inherit(HELPER_PARAMETERS, { end: /\)/ }) + }); + + SUB_EXPRESSION.contains = [ SUB_EXPRESSION_CONTENTS ]; + + const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { + keywords: BUILT_INS, + className: 'name', + starts: hljs.inherit(HELPER_PARAMETERS, { end: /\}\}/ }) + }); + + const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { + keywords: BUILT_INS, + className: 'name' + }); + + const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { + className: 'name', + keywords: BUILT_INS, + starts: hljs.inherit(HELPER_PARAMETERS, { end: /\}\}/ }) + }); + + const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = { + begin: /\\\{\{/, + skip: true + }; + const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = { + begin: /\\\\(?=\{\{)/, + skip: true + }; + + return { + name: 'Handlebars', + aliases: [ + 'hbs', + 'html.hbs', + 'html.handlebars', + 'htmlbars' + ], + case_insensitive: true, + subLanguage: 'xml', + contains: [ + ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH, + PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH, + hljs.COMMENT(/\{\{!--/, /--\}\}/), + hljs.COMMENT(/\{\{!/, /\}\}/), + { + // open raw block "{{{{raw}}}} content not evaluated {{{{/raw}}}}" + className: 'template-tag', + begin: /\{\{\{\{(?!\/)/, + end: /\}\}\}\}/, + contains: [ OPENING_BLOCK_MUSTACHE_CONTENTS ], + starts: { + end: /\{\{\{\{\//, + returnEnd: true, + subLanguage: 'xml' + } + }, + { + // close raw block + className: 'template-tag', + begin: /\{\{\{\{\//, + end: /\}\}\}\}/, + contains: [ CLOSING_BLOCK_MUSTACHE_CONTENTS ] + }, + { + // open block statement + className: 'template-tag', + begin: /\{\{#/, + end: /\}\}/, + contains: [ OPENING_BLOCK_MUSTACHE_CONTENTS ] + }, + { + className: 'template-tag', + begin: /\{\{(?=else\}\})/, + end: /\}\}/, + keywords: 'else' + }, + { + className: 'template-tag', + begin: /\{\{(?=else if)/, + end: /\}\}/, + keywords: 'else if' + }, + { + // closing block statement + className: 'template-tag', + begin: /\{\{\//, + end: /\}\}/, + contains: [ CLOSING_BLOCK_MUSTACHE_CONTENTS ] + }, + { + // template variable or helper-call that is NOT html-escaped + className: 'template-variable', + begin: /\{\{\{/, + end: /\}\}\}/, + contains: [ BASIC_MUSTACHE_CONTENTS ] + }, + { + // template variable or helper-call that is html-escaped + className: 'template-variable', + begin: /\{\{/, + end: /\}\}/, + contains: [ BASIC_MUSTACHE_CONTENTS ] + } + ] + }; +} + +module.exports = handlebars; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/haskell.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/haskell.js ***! + \****************************************************************/ +(module) { + +/* +Language: Haskell +Author: Jeremy Hull +Contributors: Zena Treep +Website: https://www.haskell.org +Category: functional +*/ + +function haskell(hljs) { + + /* See: + - https://www.haskell.org/onlinereport/lexemes.html + - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/binary_literals.html + - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/numeric_underscores.html + - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/hex_float_literals.html + */ + const decimalDigits = '([0-9]_*)+'; + const hexDigits = '([0-9a-fA-F]_*)+'; + const binaryDigits = '([01]_*)+'; + const octalDigits = '([0-7]_*)+'; + const ascSymbol = '[!#$%&*+.\\/<=>?@\\\\^~-]'; + const uniSymbol = '(\\p{S}|\\p{P})'; // Symbol or Punctuation + const special = '[(),;\\[\\]`|{}]'; + const symbol = `(${ascSymbol}|(?!(${special}|[_:"']))${uniSymbol})`; + + const COMMENT = { variants: [ + // Double dash forms a valid comment only if it's not part of legal lexeme. + // See: Haskell 98 report: https://www.haskell.org/onlinereport/lexemes.html + // + // The commented code does the job, but we can't use negative lookbehind, + // due to poor support by Safari browser. + // > hljs.COMMENT(`(?|<-' } + ] + }; +} + +module.exports = haskell; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/haxe.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/haxe.js ***! + \*************************************************************/ +(module) { + +/* +Language: Haxe +Description: Haxe is an open source toolkit based on a modern, high level, strictly typed programming language. +Author: Christopher Kaster (Based on the actionscript.js language file by Alexander Myadzel) +Contributors: Kenton Hamaluik +Website: https://haxe.org +Category: system +*/ + +function haxe(hljs) { + const IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*'; + + // C_NUMBER_RE with underscores and literal suffixes + const HAXE_NUMBER_RE = /(-?)(\b0[xX][a-fA-F0-9_]+|(\b\d+(\.[\d_]*)?|\.[\d_]+)(([eE][-+]?\d+)|i32|u32|i64|f64)?)/; + + const HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array '; + + return { + name: 'Haxe', + aliases: [ 'hx' ], + keywords: { + keyword: 'abstract break case cast catch continue default do dynamic else enum extern ' + + 'final for function here if import in inline is macro never new override package private get set ' + + 'public return static super switch this throw trace try typedef untyped using var while ' + + HAXE_BASIC_TYPES, + built_in: + 'trace this', + literal: + 'true false null _' + }, + contains: [ + { + className: 'string', // interpolate-able strings + begin: '\'', + end: '\'', + contains: [ + hljs.BACKSLASH_ESCAPE, + { + className: 'subst', // interpolation + begin: /\$\{/, + end: /\}/ + }, + { + className: 'subst', // interpolation + begin: /\$/, + end: /\W\}/ + } + ] + }, + hljs.QUOTE_STRING_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'number', + begin: HAXE_NUMBER_RE, + relevance: 0 + }, + { + className: 'variable', + begin: "\\$" + IDENT_RE, + }, + { + className: 'meta', // compiler meta + begin: /@:?/, + end: /\(|$/, + excludeEnd: true, + }, + { + className: 'meta', // compiler conditionals + begin: '#', + end: '$', + keywords: { keyword: 'if else elseif end error' } + }, + { + className: 'type', // function types + begin: /:[ \t]*/, + end: /[^A-Za-z0-9_ \t\->]/, + excludeBegin: true, + excludeEnd: true, + relevance: 0 + }, + { + className: 'type', // types + begin: /:[ \t]*/, + end: /\W/, + excludeBegin: true, + excludeEnd: true + }, + { + className: 'type', // instantiation + beginKeywords: 'new', + end: /\W/, + excludeBegin: true, + excludeEnd: true + }, + { + className: 'title.class', // enums + beginKeywords: 'enum', + end: /\{/, + contains: [ hljs.TITLE_MODE ] + }, + { + className: 'title.class', // abstracts + begin: '\\babstract\\b(?=\\s*' + hljs.IDENT_RE + '\\s*\\()', + end: /[\{$]/, + contains: [ + { + className: 'type', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true + }, + { + className: 'type', + begin: /from +/, + end: /\W/, + excludeBegin: true, + excludeEnd: true + }, + { + className: 'type', + begin: /to +/, + end: /\W/, + excludeBegin: true, + excludeEnd: true + }, + hljs.TITLE_MODE + ], + keywords: { keyword: 'abstract from to' } + }, + { + className: 'title.class', // classes + begin: /\b(class|interface) +/, + end: /[\{$]/, + excludeEnd: true, + keywords: 'class interface', + contains: [ + { + className: 'keyword', + begin: /\b(extends|implements) +/, + keywords: 'extends implements', + contains: [ + { + className: 'type', + begin: hljs.IDENT_RE, + relevance: 0 + } + ] + }, + hljs.TITLE_MODE + ] + }, + { + className: 'title.function', + beginKeywords: 'function', + end: /\(/, + excludeEnd: true, + illegal: /\S/, + contains: [ hljs.TITLE_MODE ] + } + ], + illegal: /<\// + }; +} + +module.exports = haxe; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/hsp.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/hsp.js ***! + \************************************************************/ +(module) { + +/* +Language: HSP +Author: prince +Website: https://en.wikipedia.org/wiki/Hot_Soup_Processor +Category: scripting +*/ + +function hsp(hljs) { + return { + name: 'HSP', + case_insensitive: true, + keywords: { + $pattern: /[\w._]+/, + keyword: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop' + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + + { + // multi-line string + className: 'string', + begin: /\{"/, + end: /"\}/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + + hljs.COMMENT(';', '$', { relevance: 0 }), + + { + // pre-processor + className: 'meta', + begin: '#', + end: '$', + keywords: { keyword: 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib' }, + contains: [ + hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }), + hljs.NUMBER_MODE, + hljs.C_NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + + { + // label + className: 'symbol', + begin: '^\\*(\\w+|@)' + }, + + hljs.NUMBER_MODE, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = hsp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/http.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/http.js ***! + \*************************************************************/ +(module) { + +/* +Language: HTTP +Description: HTTP request and response headers with automatic body highlighting +Author: Ivan Sagalaev +Category: protocols, web +Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview +*/ + +function http(hljs) { + const regex = hljs.regex; + const VERSION = 'HTTP/([32]|1\\.[01])'; + const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/; + const HEADER = { + className: 'attribute', + begin: regex.concat('^', HEADER_NAME, '(?=\\:\\s)'), + starts: { contains: [ + { + className: "punctuation", + begin: /: /, + relevance: 0, + starts: { + end: '$', + relevance: 0 + } + } + ] } + }; + const HEADERS_AND_BODY = [ + HEADER, + { + begin: '\\n\\n', + starts: { + subLanguage: [], + endsWithParent: true + } + } + ]; + + return { + name: 'HTTP', + aliases: [ 'https' ], + illegal: /\S/, + contains: [ + // response + { + begin: '^(?=' + VERSION + " \\d{3})", + end: /$/, + contains: [ + { + className: "meta", + begin: VERSION + }, + { + className: 'number', + begin: '\\b\\d{3}\\b' + } + ], + starts: { + end: /\b\B/, + illegal: /\S/, + contains: HEADERS_AND_BODY + } + }, + // request + { + begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)', + end: /$/, + contains: [ + { + className: 'string', + begin: ' ', + end: ' ', + excludeBegin: true, + excludeEnd: true + }, + { + className: "meta", + begin: VERSION + }, + { + className: 'keyword', + begin: '[A-Z]+' + } + ], + starts: { + end: /\b\B/, + illegal: /\S/, + contains: HEADERS_AND_BODY + } + }, + // to allow headers to work even without a preamble + hljs.inherit(HEADER, { relevance: 0 }) + ] + }; +} + +module.exports = http; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/hy.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/hy.js ***! + \***********************************************************/ +(module) { + +/* +Language: Hy +Description: Hy is a wonderful dialect of Lisp that’s embedded in Python. +Author: Sergey Sobko +Website: http://docs.hylang.org/en/stable/ +Category: lisp +*/ + +function hy(hljs) { + const SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&#\''; + const SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*'; + const keywords = { + $pattern: SYMBOL_RE, + built_in: + // keywords + '!= % %= & &= * ** **= *= *map ' + + '+ += , --build-class-- --import-- -= . / // //= ' + + '/= < << <<= <= = > >= >> >>= ' + + '@ @= ^ ^= abs accumulate all and any ap-compose ' + + 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' + + 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' + + 'callable calling-module-name car case cdr chain chr coll? combinations compile ' + + 'compress cond cons cons? continue count curry cut cycle dec ' + + 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' + + 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' + + 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' + + 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' + + 'flatten float? fn fnc fnr for for* format fraction genexpr ' + + 'gensym get getattr global globals group-by hasattr hash hex id ' + + 'identity if if* if-not if-python2 import in inc input instance? ' + + 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' + + 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' + + 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' + + 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' + + 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' + + 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' + + 'none? nonlocal not not-in not? nth numeric? oct odd? open ' + + 'or ord partition permutations pos? post-route postwalk pow prewalk print ' + + 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' + + 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' + + 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' + + 'string? sum switch symbol? take take-nth take-while tee try unless ' + + 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' + + 'xi xor yield yield-from zero? zip zip-longest | |= ~' + }; + + const SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?'; + + const SYMBOL = { + begin: SYMBOL_RE, + relevance: 0 + }; + const NUMBER = { + className: 'number', + begin: SIMPLE_NUMBER_RE, + relevance: 0 + }; + const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); + const COMMENT = hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ); + const LITERAL = { + className: 'literal', + begin: /\b([Tt]rue|[Ff]alse|nil|None)\b/ + }; + const COLLECTION = { + begin: '[\\[\\{]', + end: '[\\]\\}]', + relevance: 0 + }; + const HINT = { + className: 'comment', + begin: '\\^' + SYMBOL_RE + }; + const HINT_COL = hljs.COMMENT('\\^\\{', '\\}'); + const KEY = { + className: 'symbol', + begin: '[:]{1,2}' + SYMBOL_RE + }; + const LIST = { + begin: '\\(', + end: '\\)' + }; + const BODY = { + endsWithParent: true, + relevance: 0 + }; + const NAME = { + className: 'name', + relevance: 0, + keywords: keywords, + begin: SYMBOL_RE, + starts: BODY + }; + const DEFAULT_CONTAINS = [ + LIST, + STRING, + HINT, + HINT_COL, + COMMENT, + KEY, + COLLECTION, + NUMBER, + LITERAL, + SYMBOL + ]; + + LIST.contains = [ + hljs.COMMENT('comment', ''), + NAME, + BODY + ]; + BODY.contains = DEFAULT_CONTAINS; + COLLECTION.contains = DEFAULT_CONTAINS; + + return { + name: 'Hy', + aliases: [ 'hylang' ], + illegal: /\S/, + contains: [ + hljs.SHEBANG(), + LIST, + STRING, + HINT, + HINT_COL, + COMMENT, + KEY, + COLLECTION, + NUMBER, + LITERAL + ] + }; +} + +module.exports = hy; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/inform7.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/inform7.js ***! + \****************************************************************/ +(module) { + +/* +Language: Inform 7 +Author: Bruno Dias +Description: Language definition for Inform 7, a DSL for writing parser interactive fiction. +Website: http://inform7.com +Category: gaming +*/ + +function inform7(hljs) { + const START_BRACKET = '\\['; + const END_BRACKET = '\\]'; + return { + name: 'Inform 7', + aliases: [ 'i7' ], + case_insensitive: true, + keywords: { + // Some keywords more or less unique to I7, for relevance. + keyword: + // kind: + 'thing room person man woman animal container ' + + 'supporter backdrop door ' + // characteristic: + + 'scenery open closed locked inside gender ' + // verb: + + 'is are say understand ' + // misc keyword: + + 'kind of rule' }, + contains: [ + { + className: 'string', + begin: '"', + end: '"', + relevance: 0, + contains: [ + { + className: 'subst', + begin: START_BRACKET, + end: END_BRACKET + } + ] + }, + { + className: 'section', + begin: /^(Volume|Book|Part|Chapter|Section|Table)\b/, + end: '$' + }, + { + // Rule definition + // This is here for relevance. + begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/, + end: ':', + contains: [ + { + // Rule name + begin: '\\(This', + end: '\\)' + } + ] + }, + { + className: 'comment', + begin: START_BRACKET, + end: END_BRACKET, + contains: [ 'self' ] + } + ] + }; +} + +module.exports = inform7; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ini.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ini.js ***! + \************************************************************/ +(module) { + +/* +Language: TOML, also INI +Description: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. +Contributors: Guillaume Gomez +Category: common, config +Website: https://github.com/toml-lang/toml +*/ + +function ini(hljs) { + const regex = hljs.regex; + const NUMBERS = { + className: 'number', + relevance: 0, + variants: [ + { begin: /([+-]+)?[\d]+_[\d_]+/ }, + { begin: hljs.NUMBER_RE } + ] + }; + const COMMENTS = hljs.COMMENT(); + COMMENTS.variants = [ + { + begin: /;/, + end: /$/ + }, + { + begin: /#/, + end: /$/ + } + ]; + const VARIABLES = { + className: 'variable', + variants: [ + { begin: /\$[\w\d"][\w\d_]*/ }, + { begin: /\$\{(.*?)\}/ } + ] + }; + const LITERALS = { + className: 'literal', + begin: /\bon|off|true|false|yes|no\b/ + }; + const STRINGS = { + className: "string", + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + { + begin: "'''", + end: "'''", + relevance: 10 + }, + { + begin: '"""', + end: '"""', + relevance: 10 + }, + { + begin: '"', + end: '"' + }, + { + begin: "'", + end: "'" + } + ] + }; + const ARRAY = { + begin: /\[/, + end: /\]/, + contains: [ + COMMENTS, + LITERALS, + VARIABLES, + STRINGS, + NUMBERS, + 'self' + ], + relevance: 0 + }; + + const BARE_KEY = /[A-Za-z0-9_-]+/; + const QUOTED_KEY_DOUBLE_QUOTE = /"(\\"|[^"])*"/; + const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/; + const ANY_KEY = regex.either( + BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE + ); + const DOTTED_KEY = regex.concat( + ANY_KEY, '(\\s*\\.\\s*', ANY_KEY, ')*', + regex.lookahead(/\s*=\s*[^#\s]/) + ); + + return { + name: 'TOML, also INI', + aliases: [ 'toml' ], + case_insensitive: true, + illegal: /\S/, + contains: [ + COMMENTS, + { + className: 'section', + begin: /\[+/, + end: /\]+/ + }, + { + begin: DOTTED_KEY, + className: 'attr', + starts: { + end: /$/, + contains: [ + COMMENTS, + ARRAY, + LITERALS, + VARIABLES, + STRINGS, + NUMBERS + ] + } + } + ] + }; +} + +module.exports = ini; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/irpf90.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/irpf90.js ***! + \***************************************************************/ +(module) { + +/* +Language: IRPF90 +Author: Anthony Scemama +Description: IRPF90 is an open-source Fortran code generator +Website: http://irpf90.ups-tlse.fr +Category: scientific +*/ + +/** @type LanguageFn */ +function irpf90(hljs) { + const regex = hljs.regex; + const PARAMS = { + className: 'params', + begin: '\\(', + end: '\\)' + }; + + // regex in both fortran and irpf90 should match + const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/; + const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/; + const NUMBER = { + className: 'number', + variants: [ + { begin: regex.concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, + { begin: regex.concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, + { begin: regex.concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) } + ], + relevance: 0 + }; + + const F_KEYWORDS = { + literal: '.False. .True.', + keyword: 'kind do while private call intrinsic where elsewhere ' + + 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' + + 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' + + 'goto save else use module select case ' + + 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' + + 'continue format pause cycle exit ' + + 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' + + 'synchronous nopass non_overridable pass protected volatile abstract extends import ' + + 'non_intrinsic value deferred generic final enumerator class associate bind enum ' + + 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' + + 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' + + 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' + + 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' + + 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' + + 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' + + 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' + + 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' + + 'integer real character complex logical dimension allocatable|10 parameter ' + + 'external implicit|10 none double precision assign intent optional pointer ' + + 'target in out common equivalence data ' + // IRPF90 special keywords + + 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' + + 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read', + built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' + + 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' + + 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' + + 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' + + 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' + + 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' + + 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' + + 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' + + 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' + + 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' + + 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' + + 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' + + 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' + + 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' + + 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' + + 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' + + 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' + + 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' + // IRPF90 special built_ins + + 'IRP_ALIGN irp_here' + }; + return { + name: 'IRPF90', + case_insensitive: true, + keywords: F_KEYWORDS, + illegal: /\/\*/, + contains: [ + hljs.inherit(hljs.APOS_STRING_MODE, { + className: 'string', + relevance: 0 + }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { + className: 'string', + relevance: 0 + }), + { + className: 'function', + beginKeywords: 'subroutine function program', + illegal: '[${=\\n]', + contains: [ + hljs.UNDERSCORE_TITLE_MODE, + PARAMS + ] + }, + hljs.COMMENT('!', '$', { relevance: 0 }), + hljs.COMMENT('begin_doc', 'end_doc', { relevance: 10 }), + NUMBER + ] + }; +} + +module.exports = irpf90; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/isbl.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/isbl.js ***! + \*************************************************************/ +(module) { + +/* +Language: ISBL +Author: Dmitriy Tarasov +Description: built-in language DIRECTUM +Category: enterprise +*/ + +function isbl(hljs) { + // Определение идентификаторов + const UNDERSCORE_IDENT_RE = "[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*"; + + // Определение имен функций + const FUNCTION_NAME_IDENT_RE = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*"; + + // keyword : ключевые слова + const KEYWORD = + "and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока " + + "except exitfor finally foreach все if если in в not не or или try while пока "; + + // SYSRES Constants + const sysres_constants = + "SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT " + + "SYSRES_CONST_ACCES_RIGHT_TYPE_FULL " + + "SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW " + + "SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW " + + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_VIEW " + + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE " + + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE " + + "SYSRES_CONST_ACCESS_TYPE_CHANGE " + + "SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE " + + "SYSRES_CONST_ACCESS_TYPE_EXISTS " + + "SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE " + + "SYSRES_CONST_ACCESS_TYPE_FULL " + + "SYSRES_CONST_ACCESS_TYPE_FULL_CODE " + + "SYSRES_CONST_ACCESS_TYPE_VIEW " + + "SYSRES_CONST_ACCESS_TYPE_VIEW_CODE " + + "SYSRES_CONST_ACTION_TYPE_ABORT " + + "SYSRES_CONST_ACTION_TYPE_ACCEPT " + + "SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS " + + "SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT " + + "SYSRES_CONST_ACTION_TYPE_CHANGE_CARD " + + "SYSRES_CONST_ACTION_TYPE_CHANGE_KIND " + + "SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE " + + "SYSRES_CONST_ACTION_TYPE_CONTINUE " + + "SYSRES_CONST_ACTION_TYPE_COPY " + + "SYSRES_CONST_ACTION_TYPE_CREATE " + + "SYSRES_CONST_ACTION_TYPE_CREATE_VERSION " + + "SYSRES_CONST_ACTION_TYPE_DELETE " + + "SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT " + + "SYSRES_CONST_ACTION_TYPE_DELETE_VERSION " + + "SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS " + + "SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS " + + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE " + + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD " + + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD " + + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK " + + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK " + + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK " + + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK " + + "SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE " + + "SYSRES_CONST_ACTION_TYPE_LOCK " + + "SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER " + + "SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY " + + "SYSRES_CONST_ACTION_TYPE_MARK_AS_READED " + + "SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED " + + "SYSRES_CONST_ACTION_TYPE_MODIFY " + + "SYSRES_CONST_ACTION_TYPE_MODIFY_CARD " + + "SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE " + + "SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION " + + "SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE " + + "SYSRES_CONST_ACTION_TYPE_PERFORM " + + "SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY " + + "SYSRES_CONST_ACTION_TYPE_RESTART " + + "SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE " + + "SYSRES_CONST_ACTION_TYPE_REVISION " + + "SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL " + + "SYSRES_CONST_ACTION_TYPE_SIGN " + + "SYSRES_CONST_ACTION_TYPE_START " + + "SYSRES_CONST_ACTION_TYPE_UNLOCK " + + "SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER " + + "SYSRES_CONST_ACTION_TYPE_VERSION_STATE " + + "SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY " + + "SYSRES_CONST_ACTION_TYPE_VIEW " + + "SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY " + + "SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY " + + "SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY " + + "SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE " + + "SYSRES_CONST_ADD_REFERENCE_MODE_NAME " + + "SYSRES_CONST_ADDITION_REQUISITE_CODE " + + "SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE " + + "SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME " + + "SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME " + + "SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME " + + "SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE " + + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION " + + "SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS " + + "SYSRES_CONST_ALL_USERS_GROUP " + + "SYSRES_CONST_ALL_USERS_GROUP_NAME " + + "SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME " + + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE " + + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME " + + "SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_APPROVING_SIGNATURE_NAME " + + "SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE " + + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE " + + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE " + + "SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN " + + "SYSRES_CONST_ATTACH_TYPE_DOC " + + "SYSRES_CONST_ATTACH_TYPE_EDOC " + + "SYSRES_CONST_ATTACH_TYPE_FOLDER " + + "SYSRES_CONST_ATTACH_TYPE_JOB " + + "SYSRES_CONST_ATTACH_TYPE_REFERENCE " + + "SYSRES_CONST_ATTACH_TYPE_TASK " + + "SYSRES_CONST_AUTH_ENCODED_PASSWORD " + + "SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE " + + "SYSRES_CONST_AUTH_NOVELL " + + "SYSRES_CONST_AUTH_PASSWORD " + + "SYSRES_CONST_AUTH_PASSWORD_CODE " + + "SYSRES_CONST_AUTH_WINDOWS " + + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME " + + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE " + + "SYSRES_CONST_AUTO_ENUM_METHOD_FLAG " + + "SYSRES_CONST_AUTO_NUMERATION_CODE " + + "SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG " + + "SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE " + + "SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE " + + "SYSRES_CONST_AUTOTEXT_USAGE_ALL " + + "SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE " + + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN " + + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE " + + "SYSRES_CONST_AUTOTEXT_USAGE_WORK " + + "SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE " + + "SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE " + + "SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE " + + "SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE " + + "SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE " + + "SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_BTN_PART " + + "SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE " + + "SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE " + + "SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE " + + "SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT " + + "SYSRES_CONST_CARD_PART " + + "SYSRES_CONST_CARD_REFERENCE_MODE_NAME " + + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE " + + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE " + + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE " + + "SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE " + + "SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE " + + "SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE " + + "SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE " + + "SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE " + + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE " + + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT " + + "SYSRES_CONST_CODE_COMPONENT_TYPE_URL " + + "SYSRES_CONST_CODE_REQUISITE_ACCESS " + + "SYSRES_CONST_CODE_REQUISITE_CODE " + + "SYSRES_CONST_CODE_REQUISITE_COMPONENT " + + "SYSRES_CONST_CODE_REQUISITE_DESCRIPTION " + + "SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT " + + "SYSRES_CONST_CODE_REQUISITE_RECORD " + + "SYSRES_CONST_COMMENT_REQ_CODE " + + "SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE " + + "SYSRES_CONST_COMP_CODE_GRD " + + "SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS " + + "SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS " + + "SYSRES_CONST_COMPONENT_TYPE_DOCS " + + "SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS " + + "SYSRES_CONST_COMPONENT_TYPE_EDOCS " + + "SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " + + "SYSRES_CONST_COMPONENT_TYPE_OTHER " + + "SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES " + + "SYSRES_CONST_COMPONENT_TYPE_REFERENCES " + + "SYSRES_CONST_COMPONENT_TYPE_REPORTS " + + "SYSRES_CONST_COMPONENT_TYPE_SCRIPTS " + + "SYSRES_CONST_COMPONENT_TYPE_URL " + + "SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE " + + "SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION " + + "SYSRES_CONST_CONST_FIRM_STATUS_COMMON " + + "SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL " + + "SYSRES_CONST_CONST_NEGATIVE_VALUE " + + "SYSRES_CONST_CONST_POSITIVE_VALUE " + + "SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE " + + "SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE " + + "SYSRES_CONST_CONTENTS_REQUISITE_CODE " + + "SYSRES_CONST_DATA_TYPE_BOOLEAN " + + "SYSRES_CONST_DATA_TYPE_DATE " + + "SYSRES_CONST_DATA_TYPE_FLOAT " + + "SYSRES_CONST_DATA_TYPE_INTEGER " + + "SYSRES_CONST_DATA_TYPE_PICK " + + "SYSRES_CONST_DATA_TYPE_REFERENCE " + + "SYSRES_CONST_DATA_TYPE_STRING " + + "SYSRES_CONST_DATA_TYPE_TEXT " + + "SYSRES_CONST_DATA_TYPE_VARIANT " + + "SYSRES_CONST_DATE_CLOSE_REQ_CODE " + + "SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR " + + "SYSRES_CONST_DATE_OPEN_REQ_CODE " + + "SYSRES_CONST_DATE_REQUISITE " + + "SYSRES_CONST_DATE_REQUISITE_CODE " + + "SYSRES_CONST_DATE_REQUISITE_NAME " + + "SYSRES_CONST_DATE_REQUISITE_TYPE " + + "SYSRES_CONST_DATE_TYPE_CHAR " + + "SYSRES_CONST_DATETIME_FORMAT_VALUE " + + "SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE " + + "SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE " + + "SYSRES_CONST_DESCRIPTION_REQUISITE_CODE " + + "SYSRES_CONST_DET1_PART " + + "SYSRES_CONST_DET2_PART " + + "SYSRES_CONST_DET3_PART " + + "SYSRES_CONST_DET4_PART " + + "SYSRES_CONST_DET5_PART " + + "SYSRES_CONST_DET6_PART " + + "SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE " + + "SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE " + + "SYSRES_CONST_DETAIL_REQ_CODE " + + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE " + + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME " + + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE " + + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME " + + "SYSRES_CONST_DOCUMENT_STORAGES_CODE " + + "SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME " + + "SYSRES_CONST_DOUBLE_REQUISITE_CODE " + + "SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE " + + "SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE " + + "SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE " + + "SYSRES_CONST_EDITORS_REFERENCE_CODE " + + "SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE " + + "SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE " + + "SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE " + + "SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE " + + "SYSRES_CONST_EDOC_DATE_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_KIND_REFERENCE_CODE " + + "SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE " + + "SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE " + + "SYSRES_CONST_EDOC_NONE_ENCODE_CODE " + + "SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE " + + "SYSRES_CONST_EDOC_READONLY_ACCESS_CODE " + + "SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE " + + "SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE " + + "SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE " + + "SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE " + + "SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE " + + "SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE " + + "SYSRES_CONST_EDOC_WRITE_ACCES_CODE " + + "SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " + + "SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE " + + "SYSRES_CONST_END_DATE_REQUISITE_CODE " + + "SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE " + + "SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE " + + "SYSRES_CONST_EXIST_CONST " + + "SYSRES_CONST_EXIST_VALUE " + + "SYSRES_CONST_EXPORT_LOCK_TYPE_ASK " + + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK " + + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK " + + "SYSRES_CONST_EXPORT_VERSION_TYPE_ASK " + + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST " + + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE " + + "SYSRES_CONST_EXTENSION_REQUISITE_CODE " + + "SYSRES_CONST_FILTER_NAME_REQUISITE_CODE " + + "SYSRES_CONST_FILTER_REQUISITE_CODE " + + "SYSRES_CONST_FILTER_TYPE_COMMON_CODE " + + "SYSRES_CONST_FILTER_TYPE_COMMON_NAME " + + "SYSRES_CONST_FILTER_TYPE_USER_CODE " + + "SYSRES_CONST_FILTER_TYPE_USER_NAME " + + "SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME " + + "SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR " + + "SYSRES_CONST_FLOAT_REQUISITE_TYPE " + + "SYSRES_CONST_FOLDER_AUTHOR_VALUE " + + "SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS " + + "SYSRES_CONST_FOLDER_KIND_COMPONENTS " + + "SYSRES_CONST_FOLDER_KIND_EDOCS " + + "SYSRES_CONST_FOLDER_KIND_JOBS " + + "SYSRES_CONST_FOLDER_KIND_TASKS " + + "SYSRES_CONST_FOLDER_TYPE_COMMON " + + "SYSRES_CONST_FOLDER_TYPE_COMPONENT " + + "SYSRES_CONST_FOLDER_TYPE_FAVORITES " + + "SYSRES_CONST_FOLDER_TYPE_INBOX " + + "SYSRES_CONST_FOLDER_TYPE_OUTBOX " + + "SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH " + + "SYSRES_CONST_FOLDER_TYPE_SEARCH " + + "SYSRES_CONST_FOLDER_TYPE_SHORTCUTS " + + "SYSRES_CONST_FOLDER_TYPE_USER " + + "SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG " + + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE " + + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE " + + "SYSRES_CONST_FUNCTION_CANCEL_RESULT " + + "SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM " + + "SYSRES_CONST_FUNCTION_CATEGORY_USER " + + "SYSRES_CONST_FUNCTION_FAILURE_RESULT " + + "SYSRES_CONST_FUNCTION_SAVE_RESULT " + + "SYSRES_CONST_GENERATED_REQUISITE " + + "SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE " + + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE " + + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME " + + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE " + + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME " + + "SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE " + + "SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE " + + "SYSRES_CONST_GROUP_NAME_REQUISITE_CODE " + + "SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE " + + "SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE " + + "SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE " + + "SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE " + + "SYSRES_CONST_GROUP_USER_REQUISITE_CODE " + + "SYSRES_CONST_GROUPS_REFERENCE_CODE " + + "SYSRES_CONST_GROUPS_REQUISITE_CODE " + + "SYSRES_CONST_HIDDEN_MODE_NAME " + + "SYSRES_CONST_HIGH_LVL_REQUISITE_CODE " + + "SYSRES_CONST_HISTORY_ACTION_CREATE_CODE " + + "SYSRES_CONST_HISTORY_ACTION_DELETE_CODE " + + "SYSRES_CONST_HISTORY_ACTION_EDIT_CODE " + + "SYSRES_CONST_HOUR_CHAR " + + "SYSRES_CONST_ID_REQUISITE_CODE " + + "SYSRES_CONST_IDSPS_REQUISITE_CODE " + + "SYSRES_CONST_IMAGE_MODE_COLOR " + + "SYSRES_CONST_IMAGE_MODE_GREYSCALE " + + "SYSRES_CONST_IMAGE_MODE_MONOCHROME " + + "SYSRES_CONST_IMPORTANCE_HIGH " + + "SYSRES_CONST_IMPORTANCE_LOW " + + "SYSRES_CONST_IMPORTANCE_NORMAL " + + "SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE " + + "SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE " + + "SYSRES_CONST_INT_REQUISITE " + + "SYSRES_CONST_INT_REQUISITE_TYPE " + + "SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR " + + "SYSRES_CONST_INTEGER_TYPE_CHAR " + + "SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE " + + "SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE " + + "SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE " + + "SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE " + + "SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE " + + "SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE " + + "SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE " + + "SYSRES_CONST_JOB_BLOCK_DESCRIPTION " + + "SYSRES_CONST_JOB_KIND_CONTROL_JOB " + + "SYSRES_CONST_JOB_KIND_JOB " + + "SYSRES_CONST_JOB_KIND_NOTICE " + + "SYSRES_CONST_JOB_STATE_ABORTED " + + "SYSRES_CONST_JOB_STATE_COMPLETE " + + "SYSRES_CONST_JOB_STATE_WORKING " + + "SYSRES_CONST_KIND_REQUISITE_CODE " + + "SYSRES_CONST_KIND_REQUISITE_NAME " + + "SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE " + + "SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE " + + "SYSRES_CONST_KOD_INPUT_TYPE " + + "SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE " + + "SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE " + + "SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT " + + "SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT " + + "SYSRES_CONST_LINK_OBJECT_KIND_EDOC " + + "SYSRES_CONST_LINK_OBJECT_KIND_FOLDER " + + "SYSRES_CONST_LINK_OBJECT_KIND_JOB " + + "SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE " + + "SYSRES_CONST_LINK_OBJECT_KIND_TASK " + + "SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_LIST_REFERENCE_MODE_NAME " + + "SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE " + + "SYSRES_CONST_MAIN_VIEW_CODE " + + "SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG " + + "SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE " + + "SYSRES_CONST_MAXIMIZED_MODE_NAME " + + "SYSRES_CONST_ME_VALUE " + + "SYSRES_CONST_MESSAGE_ATTENTION_CAPTION " + + "SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION " + + "SYSRES_CONST_MESSAGE_ERROR_CAPTION " + + "SYSRES_CONST_MESSAGE_INFORMATION_CAPTION " + + "SYSRES_CONST_MINIMIZED_MODE_NAME " + + "SYSRES_CONST_MINUTE_CHAR " + + "SYSRES_CONST_MODULE_REQUISITE_CODE " + + "SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION " + + "SYSRES_CONST_MONTH_FORMAT_VALUE " + + "SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE " + + "SYSRES_CONST_NAME_REQUISITE_CODE " + + "SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE " + + "SYSRES_CONST_NAMEAN_INPUT_TYPE " + + "SYSRES_CONST_NEGATIVE_PICK_VALUE " + + "SYSRES_CONST_NEGATIVE_VALUE " + + "SYSRES_CONST_NO " + + "SYSRES_CONST_NO_PICK_VALUE " + + "SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE " + + "SYSRES_CONST_NO_VALUE " + + "SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE " + + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE " + + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE " + + "SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE " + + "SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE " + + "SYSRES_CONST_NORMAL_MODE_NAME " + + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE " + + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME " + + "SYSRES_CONST_NOTE_REQUISITE_CODE " + + "SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION " + + "SYSRES_CONST_NUM_REQUISITE " + + "SYSRES_CONST_NUM_STR_REQUISITE_CODE " + + "SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG " + + "SYSRES_CONST_NUMERATION_AUTO_STRONG " + + "SYSRES_CONST_NUMERATION_FROM_DICTONARY " + + "SYSRES_CONST_NUMERATION_MANUAL " + + "SYSRES_CONST_NUMERIC_TYPE_CHAR " + + "SYSRES_CONST_NUMREQ_REQUISITE_CODE " + + "SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE " + + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE " + + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE " + + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE " + + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE " + + "SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX " + + "SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_ORIGINALREF_REQUISITE_CODE " + + "SYSRES_CONST_OURFIRM_REF_CODE " + + "SYSRES_CONST_OURFIRM_REQUISITE_CODE " + + "SYSRES_CONST_OURFIRM_VAR " + + "SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE " + + "SYSRES_CONST_PICK_NEGATIVE_RESULT " + + "SYSRES_CONST_PICK_POSITIVE_RESULT " + + "SYSRES_CONST_PICK_REQUISITE " + + "SYSRES_CONST_PICK_REQUISITE_TYPE " + + "SYSRES_CONST_PICK_TYPE_CHAR " + + "SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE " + + "SYSRES_CONST_PLATFORM_VERSION_COMMENT " + + "SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE " + + "SYSRES_CONST_POSITIVE_PICK_VALUE " + + "SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE " + + "SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE " + + "SYSRES_CONST_PRIORITY_REQUISITE_CODE " + + "SYSRES_CONST_QUALIFIED_TASK_TYPE " + + "SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE " + + "SYSRES_CONST_RECSTAT_REQUISITE_CODE " + + "SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_REF_REQUISITE " + + "SYSRES_CONST_REF_REQUISITE_TYPE " + + "SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " + + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE " + + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE " + + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE " + + "SYSRES_CONST_REFERENCE_TYPE_CHAR " + + "SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME " + + "SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE " + + "SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE " + + "SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING " + + "SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN " + + "SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY " + + "SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE " + + "SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL " + + "SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE " + + "SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE " + + "SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE " + + "SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE " + + "SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE " + + "SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE " + + "SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE " + + "SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE " + + "SYSRES_CONST_REQ_MODE_AVAILABLE_CODE " + + "SYSRES_CONST_REQ_MODE_EDIT_CODE " + + "SYSRES_CONST_REQ_MODE_HIDDEN_CODE " + + "SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE " + + "SYSRES_CONST_REQ_MODE_VIEW_CODE " + + "SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE " + + "SYSRES_CONST_REQ_SECTION_VALUE " + + "SYSRES_CONST_REQ_TYPE_VALUE " + + "SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT " + + "SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL " + + "SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME " + + "SYSRES_CONST_REQUISITE_FORMAT_LEFT " + + "SYSRES_CONST_REQUISITE_FORMAT_RIGHT " + + "SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT " + + "SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE " + + "SYSRES_CONST_REQUISITE_SECTION_ACTIONS " + + "SYSRES_CONST_REQUISITE_SECTION_BUTTON " + + "SYSRES_CONST_REQUISITE_SECTION_BUTTONS " + + "SYSRES_CONST_REQUISITE_SECTION_CARD " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE10 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE11 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE12 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE13 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE14 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE15 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE16 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE17 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE18 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE19 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE2 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE20 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE21 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE22 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE23 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE24 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE3 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE4 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE5 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE6 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE7 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE8 " + + "SYSRES_CONST_REQUISITE_SECTION_TABLE9 " + + "SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE " + + "SYSRES_CONST_RIGHT_ALIGNMENT_CODE " + + "SYSRES_CONST_ROLES_REFERENCE_CODE " + + "SYSRES_CONST_ROUTE_STEP_AFTER_RUS " + + "SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS " + + "SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS " + + "SYSRES_CONST_ROUTE_TYPE_COMPLEX " + + "SYSRES_CONST_ROUTE_TYPE_PARALLEL " + + "SYSRES_CONST_ROUTE_TYPE_SERIAL " + + "SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE " + + "SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE " + + "SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE " + + "SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION " + + "SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE " + + "SYSRES_CONST_SEARCHES_COMPONENT_CONTENT " + + "SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME " + + "SYSRES_CONST_SEARCHES_EDOC_CONTENT " + + "SYSRES_CONST_SEARCHES_FOLDER_CONTENT " + + "SYSRES_CONST_SEARCHES_JOB_CONTENT " + + "SYSRES_CONST_SEARCHES_REFERENCE_CODE " + + "SYSRES_CONST_SEARCHES_TASK_CONTENT " + + "SYSRES_CONST_SECOND_CHAR " + + "SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_CODE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE " + + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE " + + "SYSRES_CONST_SELECT_REFERENCE_MODE_NAME " + + "SYSRES_CONST_SELECT_TYPE_SELECTABLE " + + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD " + + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD " + + "SYSRES_CONST_SELECT_TYPE_UNSLECTABLE " + + "SYSRES_CONST_SERVER_TYPE_MAIN " + + "SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE " + + "SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE " + + "SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE " + + "SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE " + + "SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE " + + "SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE " + + "SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE " + + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE " + + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE " + + "SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE " + + "SYSRES_CONST_STATE_REQ_NAME " + + "SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE " + + "SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE " + + "SYSRES_CONST_STATE_REQUISITE_CODE " + + "SYSRES_CONST_STATIC_ROLE_TYPE_CODE " + + "SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE " + + "SYSRES_CONST_STATUS_VALUE_AUTOCLEANING " + + "SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE " + + "SYSRES_CONST_STATUS_VALUE_COMPLETE " + + "SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE " + + "SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE " + + "SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE " + + "SYSRES_CONST_STATUS_VALUE_RED_SQUARE " + + "SYSRES_CONST_STATUS_VALUE_SUSPEND " + + "SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE " + + "SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE " + + "SYSRES_CONST_STORAGE_TYPE_FILE " + + "SYSRES_CONST_STORAGE_TYPE_SQL_SERVER " + + "SYSRES_CONST_STR_REQUISITE " + + "SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE " + + "SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR " + + "SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR " + + "SYSRES_CONST_STRING_REQUISITE_CODE " + + "SYSRES_CONST_STRING_REQUISITE_TYPE " + + "SYSRES_CONST_STRING_TYPE_CHAR " + + "SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE " + + "SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION " + + "SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE " + + "SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE " + + "SYSRES_CONST_SYSTEM_VERSION_COMMENT " + + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL " + + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS " + + "SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL " + + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION " + + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD " + + "SYSRES_CONST_TASK_ENCODE_TYPE_NONE " + + "SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD " + + "SYSRES_CONST_TASK_ROUTE_ALL_CONDITION " + + "SYSRES_CONST_TASK_ROUTE_AND_CONDITION " + + "SYSRES_CONST_TASK_ROUTE_OR_CONDITION " + + "SYSRES_CONST_TASK_STATE_ABORTED " + + "SYSRES_CONST_TASK_STATE_COMPLETE " + + "SYSRES_CONST_TASK_STATE_CONTINUED " + + "SYSRES_CONST_TASK_STATE_CONTROL " + + "SYSRES_CONST_TASK_STATE_INIT " + + "SYSRES_CONST_TASK_STATE_WORKING " + + "SYSRES_CONST_TASK_TITLE " + + "SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE " + + "SYSRES_CONST_TASK_TYPES_REFERENCE_CODE " + + "SYSRES_CONST_TEMPLATES_REFERENCE_CODE " + + "SYSRES_CONST_TEST_DATE_REQUISITE_NAME " + + "SYSRES_CONST_TEST_DEV_DATABASE_NAME " + + "SYSRES_CONST_TEST_DEV_SYSTEM_CODE " + + "SYSRES_CONST_TEST_EDMS_DATABASE_NAME " + + "SYSRES_CONST_TEST_EDMS_MAIN_CODE " + + "SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME " + + "SYSRES_CONST_TEST_EDMS_SECOND_CODE " + + "SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME " + + "SYSRES_CONST_TEST_EDMS_SYSTEM_CODE " + + "SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME " + + "SYSRES_CONST_TEXT_REQUISITE " + + "SYSRES_CONST_TEXT_REQUISITE_CODE " + + "SYSRES_CONST_TEXT_REQUISITE_TYPE " + + "SYSRES_CONST_TEXT_TYPE_CHAR " + + "SYSRES_CONST_TYPE_CODE_REQUISITE_CODE " + + "SYSRES_CONST_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR " + + "SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE " + + "SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE " + + "SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE " + + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE " + + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME " + + "SYSRES_CONST_USE_ACCESS_TYPE_CODE " + + "SYSRES_CONST_USE_ACCESS_TYPE_NAME " + + "SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE " + + "SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE " + + "SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE " + + "SYSRES_CONST_USER_CATEGORY_NORMAL " + + "SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE " + + "SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE " + + "SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE " + + "SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE " + + "SYSRES_CONST_USER_COMMON_CATEGORY " + + "SYSRES_CONST_USER_COMMON_CATEGORY_CODE " + + "SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE " + + "SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_USER_LOGIN_REQUISITE_CODE " + + "SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE " + + "SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE " + + "SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE " + + "SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE " + + "SYSRES_CONST_USER_SERVICE_CATEGORY " + + "SYSRES_CONST_USER_SERVICE_CATEGORY_CODE " + + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE " + + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME " + + "SYSRES_CONST_USER_STATUS_DEVELOPER_CODE " + + "SYSRES_CONST_USER_STATUS_DEVELOPER_NAME " + + "SYSRES_CONST_USER_STATUS_DISABLED_CODE " + + "SYSRES_CONST_USER_STATUS_DISABLED_NAME " + + "SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE " + + "SYSRES_CONST_USER_STATUS_USER_CODE " + + "SYSRES_CONST_USER_STATUS_USER_NAME " + + "SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED " + + "SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER " + + "SYSRES_CONST_USER_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE " + + "SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE " + + "SYSRES_CONST_USERS_REFERENCE_CODE " + + "SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME " + + "SYSRES_CONST_USERS_REQUISITE_CODE " + + "SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE " + + "SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE " + + "SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE " + + "SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE " + + "SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE " + + "SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME " + + "SYSRES_CONST_VIEW_DEFAULT_CODE " + + "SYSRES_CONST_VIEW_DEFAULT_NAME " + + "SYSRES_CONST_VIEWER_REQUISITE_CODE " + + "SYSRES_CONST_WAITING_BLOCK_DESCRIPTION " + + "SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING " + + "SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING " + + "SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE " + + "SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE " + + "SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE " + + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE " + + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE " + + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS " + + "SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS " + + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD " + + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT " + + "SYSRES_CONST_XML_ENCODING " + + "SYSRES_CONST_XREC_STAT_REQUISITE_CODE " + + "SYSRES_CONST_XRECID_FIELD_NAME " + + "SYSRES_CONST_YES " + + "SYSRES_CONST_YES_NO_2_REQUISITE_CODE " + + "SYSRES_CONST_YES_NO_REQUISITE_CODE " + + "SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE " + + "SYSRES_CONST_YES_PICK_VALUE " + + "SYSRES_CONST_YES_VALUE "; + + // Base constant + const base_constants = "CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE "; + + // Base group name + const base_group_name_constants = + "ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME "; + + // Decision block properties + const decision_block_properties_constants = + "DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY " + + "DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY "; + + // File extension + const file_extension_constants = + "ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION " + + "SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION "; + + // Job block properties + const job_block_properties_constants = + "JOB_BLOCK_ABORT_DEADLINE_PROPERTY " + + "JOB_BLOCK_AFTER_FINISH_EVENT " + + "JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT " + + "JOB_BLOCK_ATTACHMENT_PROPERTY " + + "JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " + + "JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " + + "JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT " + + "JOB_BLOCK_BEFORE_START_EVENT " + + "JOB_BLOCK_CREATED_JOBS_PROPERTY " + + "JOB_BLOCK_DEADLINE_PROPERTY " + + "JOB_BLOCK_EXECUTION_RESULTS_PROPERTY " + + "JOB_BLOCK_IS_PARALLEL_PROPERTY " + + "JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " + + "JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " + + "JOB_BLOCK_JOB_TEXT_PROPERTY " + + "JOB_BLOCK_NAME_PROPERTY " + + "JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY " + + "JOB_BLOCK_PERFORMER_PROPERTY " + + "JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " + + "JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " + + "JOB_BLOCK_SUBJECT_PROPERTY "; + + // Language code + const language_code_constants = "ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE "; + + // Launching external applications + const launching_external_applications_constants = + "smHidden smMaximized smMinimized smNormal wmNo wmYes "; + + // Link kind + const link_kind_constants = + "COMPONENT_TOKEN_LINK_KIND " + + "DOCUMENT_LINK_KIND " + + "EDOCUMENT_LINK_KIND " + + "FOLDER_LINK_KIND " + + "JOB_LINK_KIND " + + "REFERENCE_LINK_KIND " + + "TASK_LINK_KIND "; + + // Lock type + const lock_type_constants = + "COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE "; + + // Monitor block properties + const monitor_block_properties_constants = + "MONITOR_BLOCK_AFTER_FINISH_EVENT " + + "MONITOR_BLOCK_BEFORE_START_EVENT " + + "MONITOR_BLOCK_DEADLINE_PROPERTY " + + "MONITOR_BLOCK_INTERVAL_PROPERTY " + + "MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY " + + "MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " + + "MONITOR_BLOCK_NAME_PROPERTY " + + "MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " + + "MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY "; + + // Notice block properties + const notice_block_properties_constants = + "NOTICE_BLOCK_AFTER_FINISH_EVENT " + + "NOTICE_BLOCK_ATTACHMENT_PROPERTY " + + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " + + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " + + "NOTICE_BLOCK_BEFORE_START_EVENT " + + "NOTICE_BLOCK_CREATED_NOTICES_PROPERTY " + + "NOTICE_BLOCK_DEADLINE_PROPERTY " + + "NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " + + "NOTICE_BLOCK_NAME_PROPERTY " + + "NOTICE_BLOCK_NOTICE_TEXT_PROPERTY " + + "NOTICE_BLOCK_PERFORMER_PROPERTY " + + "NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " + + "NOTICE_BLOCK_SUBJECT_PROPERTY "; + + // Object events + const object_events_constants = + "dseAfterCancel " + + "dseAfterClose " + + "dseAfterDelete " + + "dseAfterDeleteOutOfTransaction " + + "dseAfterInsert " + + "dseAfterOpen " + + "dseAfterScroll " + + "dseAfterUpdate " + + "dseAfterUpdateOutOfTransaction " + + "dseBeforeCancel " + + "dseBeforeClose " + + "dseBeforeDelete " + + "dseBeforeDetailUpdate " + + "dseBeforeInsert " + + "dseBeforeOpen " + + "dseBeforeUpdate " + + "dseOnAnyRequisiteChange " + + "dseOnCloseRecord " + + "dseOnDeleteError " + + "dseOnOpenRecord " + + "dseOnPrepareUpdate " + + "dseOnUpdateError " + + "dseOnUpdateRatifiedRecord " + + "dseOnValidDelete " + + "dseOnValidUpdate " + + "reOnChange " + + "reOnChangeValues " + + "SELECTION_BEGIN_ROUTE_EVENT " + + "SELECTION_END_ROUTE_EVENT "; + + // Object params + const object_params_constants = + "CURRENT_PERIOD_IS_REQUIRED " + + "PREVIOUS_CARD_TYPE_NAME " + + "SHOW_RECORD_PROPERTIES_FORM "; + + // Other + const other_constants = + "ACCESS_RIGHTS_SETTING_DIALOG_CODE " + + "ADMINISTRATOR_USER_CODE " + + "ANALYTIC_REPORT_TYPE " + + "asrtHideLocal " + + "asrtHideRemote " + + "CALCULATED_ROLE_TYPE_CODE " + + "COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE " + + "DCTS_TEST_PROTOCOLS_FOLDER_PATH " + + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED " + + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER " + + "E_EDOC_VERSION_ALREDY_SIGNED " + + "E_EDOC_VERSION_ALREDY_SIGNED_BY_USER " + + "EDOC_TYPES_CODE_REQUISITE_FIELD_NAME " + + "EDOCUMENTS_ALIAS_NAME " + + "FILES_FOLDER_PATH " + + "FILTER_OPERANDS_DELIMITER " + + "FILTER_OPERATIONS_DELIMITER " + + "FORMCARD_NAME " + + "FORMLIST_NAME " + + "GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE " + + "GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE " + + "INTEGRATED_REPORT_TYPE " + + "IS_BUILDER_APPLICATION_ROLE " + + "IS_BUILDER_APPLICATION_ROLE2 " + + "IS_BUILDER_USERS " + + "ISBSYSDEV " + + "LOG_FOLDER_PATH " + + "mbCancel " + + "mbNo " + + "mbNoToAll " + + "mbOK " + + "mbYes " + + "mbYesToAll " + + "MEMORY_DATASET_DESRIPTIONS_FILENAME " + + "mrNo " + + "mrNoToAll " + + "mrYes " + + "mrYesToAll " + + "MULTIPLE_SELECT_DIALOG_CODE " + + "NONOPERATING_RECORD_FLAG_FEMININE " + + "NONOPERATING_RECORD_FLAG_MASCULINE " + + "OPERATING_RECORD_FLAG_FEMININE " + + "OPERATING_RECORD_FLAG_MASCULINE " + + "PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE " + + "PROGRAM_INITIATED_LOOKUP_ACTION " + + "ratDelete " + + "ratEdit " + + "ratInsert " + + "REPORT_TYPE " + + "REQUIRED_PICK_VALUES_VARIABLE " + + "rmCard " + + "rmList " + + "SBRTE_PROGID_DEV " + + "SBRTE_PROGID_RELEASE " + + "STATIC_ROLE_TYPE_CODE " + + "SUPPRESS_EMPTY_TEMPLATE_CREATION " + + "SYSTEM_USER_CODE " + + "UPDATE_DIALOG_DATASET " + + "USED_IN_OBJECT_HINT_PARAM " + + "USER_INITIATED_LOOKUP_ACTION " + + "USER_NAME_FORMAT " + + "USER_SELECTION_RESTRICTIONS " + + "WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH " + + "ELS_SUBTYPE_CONTROL_NAME " + + "ELS_FOLDER_KIND_CONTROL_NAME " + + "REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME "; + + // Privileges + const privileges_constants = + "PRIVILEGE_COMPONENT_FULL_ACCESS " + + "PRIVILEGE_DEVELOPMENT_EXPORT " + + "PRIVILEGE_DEVELOPMENT_IMPORT " + + "PRIVILEGE_DOCUMENT_DELETE " + + "PRIVILEGE_ESD " + + "PRIVILEGE_FOLDER_DELETE " + + "PRIVILEGE_MANAGE_ACCESS_RIGHTS " + + "PRIVILEGE_MANAGE_REPLICATION " + + "PRIVILEGE_MANAGE_SESSION_SERVER " + + "PRIVILEGE_OBJECT_FULL_ACCESS " + + "PRIVILEGE_OBJECT_VIEW " + + "PRIVILEGE_RESERVE_LICENSE " + + "PRIVILEGE_SYSTEM_CUSTOMIZE " + + "PRIVILEGE_SYSTEM_DEVELOP " + + "PRIVILEGE_SYSTEM_INSTALL " + + "PRIVILEGE_TASK_DELETE " + + "PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE " + + "PRIVILEGES_PSEUDOREFERENCE_CODE "; + + // Pseudoreference code + const pseudoreference_code_constants = + "ACCESS_TYPES_PSEUDOREFERENCE_CODE " + + "ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE " + + "ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE " + + "ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE " + + "AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE " + + "COMPONENTS_PSEUDOREFERENCE_CODE " + + "FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE " + + "GROUPS_PSEUDOREFERENCE_CODE " + + "RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE " + + "REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE " + + "REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE " + + "REFTYPES_PSEUDOREFERENCE_CODE " + + "REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE " + + "SEND_PROTOCOL_PSEUDOREFERENCE_CODE " + + "SUBSTITUTES_PSEUDOREFERENCE_CODE " + + "SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE " + + "UNITS_PSEUDOREFERENCE_CODE " + + "USERS_PSEUDOREFERENCE_CODE " + + "VIEWERS_PSEUDOREFERENCE_CODE "; + + // Requisite ISBCertificateType values + const requisite_ISBCertificateType_values_constants = + "CERTIFICATE_TYPE_ENCRYPT " + + "CERTIFICATE_TYPE_SIGN " + + "CERTIFICATE_TYPE_SIGN_AND_ENCRYPT "; + + // Requisite ISBEDocStorageType values + const requisite_ISBEDocStorageType_values_constants = + "STORAGE_TYPE_FILE " + + "STORAGE_TYPE_NAS_CIFS " + + "STORAGE_TYPE_SAPERION " + + "STORAGE_TYPE_SQL_SERVER "; + + // Requisite CompType2 values + const requisite_compType2_values_constants = + "COMPTYPE2_REQUISITE_DOCUMENTS_VALUE " + + "COMPTYPE2_REQUISITE_TASKS_VALUE " + + "COMPTYPE2_REQUISITE_FOLDERS_VALUE " + + "COMPTYPE2_REQUISITE_REFERENCES_VALUE "; + + // Requisite name + const requisite_name_constants = + "SYSREQ_CODE " + + "SYSREQ_COMPTYPE2 " + + "SYSREQ_CONST_AVAILABLE_FOR_WEB " + + "SYSREQ_CONST_COMMON_CODE " + + "SYSREQ_CONST_COMMON_VALUE " + + "SYSREQ_CONST_FIRM_CODE " + + "SYSREQ_CONST_FIRM_STATUS " + + "SYSREQ_CONST_FIRM_VALUE " + + "SYSREQ_CONST_SERVER_STATUS " + + "SYSREQ_CONTENTS " + + "SYSREQ_DATE_OPEN " + + "SYSREQ_DATE_CLOSE " + + "SYSREQ_DESCRIPTION " + + "SYSREQ_DESCRIPTION_LOCALIZE_ID " + + "SYSREQ_DOUBLE " + + "SYSREQ_EDOC_ACCESS_TYPE " + + "SYSREQ_EDOC_AUTHOR " + + "SYSREQ_EDOC_CREATED " + + "SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE " + + "SYSREQ_EDOC_EDITOR " + + "SYSREQ_EDOC_ENCODE_TYPE " + + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME " + + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION " + + "SYSREQ_EDOC_EXPORT_DATE " + + "SYSREQ_EDOC_EXPORTER " + + "SYSREQ_EDOC_KIND " + + "SYSREQ_EDOC_LIFE_STAGE_NAME " + + "SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE " + + "SYSREQ_EDOC_MODIFIED " + + "SYSREQ_EDOC_NAME " + + "SYSREQ_EDOC_NOTE " + + "SYSREQ_EDOC_QUALIFIED_ID " + + "SYSREQ_EDOC_SESSION_KEY " + + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME " + + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION " + + "SYSREQ_EDOC_SIGNATURE_TYPE " + + "SYSREQ_EDOC_SIGNED " + + "SYSREQ_EDOC_STORAGE " + + "SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE " + + "SYSREQ_EDOC_STORAGES_CHECK_RIGHTS " + + "SYSREQ_EDOC_STORAGES_COMPUTER_NAME " + + "SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE " + + "SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE " + + "SYSREQ_EDOC_STORAGES_FUNCTION " + + "SYSREQ_EDOC_STORAGES_INITIALIZED " + + "SYSREQ_EDOC_STORAGES_LOCAL_PATH " + + "SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME " + + "SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT " + + "SYSREQ_EDOC_STORAGES_SERVER_NAME " + + "SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME " + + "SYSREQ_EDOC_STORAGES_TYPE " + + "SYSREQ_EDOC_TEXT_MODIFIED " + + "SYSREQ_EDOC_TYPE_ACT_CODE " + + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION " + + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " + + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE " + + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS " + + "SYSREQ_EDOC_TYPE_ACT_SECTION " + + "SYSREQ_EDOC_TYPE_ADD_PARAMS " + + "SYSREQ_EDOC_TYPE_COMMENT " + + "SYSREQ_EDOC_TYPE_EVENT_TEXT " + + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR " + + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " + + "SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID " + + "SYSREQ_EDOC_TYPE_NUMERATION_METHOD " + + "SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE " + + "SYSREQ_EDOC_TYPE_REQ_CODE " + + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION " + + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " + + "SYSREQ_EDOC_TYPE_REQ_IS_LEADING " + + "SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED " + + "SYSREQ_EDOC_TYPE_REQ_NUMBER " + + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE " + + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS " + + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT " + + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND " + + "SYSREQ_EDOC_TYPE_REQ_SECTION " + + "SYSREQ_EDOC_TYPE_VIEW_CARD " + + "SYSREQ_EDOC_TYPE_VIEW_CODE " + + "SYSREQ_EDOC_TYPE_VIEW_COMMENT " + + "SYSREQ_EDOC_TYPE_VIEW_IS_MAIN " + + "SYSREQ_EDOC_TYPE_VIEW_NAME " + + "SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID " + + "SYSREQ_EDOC_VERSION_AUTHOR " + + "SYSREQ_EDOC_VERSION_CRC " + + "SYSREQ_EDOC_VERSION_DATA " + + "SYSREQ_EDOC_VERSION_EDITOR " + + "SYSREQ_EDOC_VERSION_EXPORT_DATE " + + "SYSREQ_EDOC_VERSION_EXPORTER " + + "SYSREQ_EDOC_VERSION_HIDDEN " + + "SYSREQ_EDOC_VERSION_LIFE_STAGE " + + "SYSREQ_EDOC_VERSION_MODIFIED " + + "SYSREQ_EDOC_VERSION_NOTE " + + "SYSREQ_EDOC_VERSION_SIGNATURE_TYPE " + + "SYSREQ_EDOC_VERSION_SIGNED " + + "SYSREQ_EDOC_VERSION_SIZE " + + "SYSREQ_EDOC_VERSION_SOURCE " + + "SYSREQ_EDOC_VERSION_TEXT_MODIFIED " + + "SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE " + + "SYSREQ_FOLDER_KIND " + + "SYSREQ_FUNC_CATEGORY " + + "SYSREQ_FUNC_COMMENT " + + "SYSREQ_FUNC_GROUP " + + "SYSREQ_FUNC_GROUP_COMMENT " + + "SYSREQ_FUNC_GROUP_NUMBER " + + "SYSREQ_FUNC_HELP " + + "SYSREQ_FUNC_PARAM_DEF_VALUE " + + "SYSREQ_FUNC_PARAM_IDENT " + + "SYSREQ_FUNC_PARAM_NUMBER " + + "SYSREQ_FUNC_PARAM_TYPE " + + "SYSREQ_FUNC_TEXT " + + "SYSREQ_GROUP_CATEGORY " + + "SYSREQ_ID " + + "SYSREQ_LAST_UPDATE " + + "SYSREQ_LEADER_REFERENCE " + + "SYSREQ_LINE_NUMBER " + + "SYSREQ_MAIN_RECORD_ID " + + "SYSREQ_NAME " + + "SYSREQ_NAME_LOCALIZE_ID " + + "SYSREQ_NOTE " + + "SYSREQ_ORIGINAL_RECORD " + + "SYSREQ_OUR_FIRM " + + "SYSREQ_PROFILING_SETTINGS_BATCH_LOGING " + + "SYSREQ_PROFILING_SETTINGS_BATCH_SIZE " + + "SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED " + + "SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED " + + "SYSREQ_PROFILING_SETTINGS_START_LOGGED " + + "SYSREQ_RECORD_STATUS " + + "SYSREQ_REF_REQ_FIELD_NAME " + + "SYSREQ_REF_REQ_FORMAT " + + "SYSREQ_REF_REQ_GENERATED " + + "SYSREQ_REF_REQ_LENGTH " + + "SYSREQ_REF_REQ_PRECISION " + + "SYSREQ_REF_REQ_REFERENCE " + + "SYSREQ_REF_REQ_SECTION " + + "SYSREQ_REF_REQ_STORED " + + "SYSREQ_REF_REQ_TOKENS " + + "SYSREQ_REF_REQ_TYPE " + + "SYSREQ_REF_REQ_VIEW " + + "SYSREQ_REF_TYPE_ACT_CODE " + + "SYSREQ_REF_TYPE_ACT_DESCRIPTION " + + "SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " + + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE " + + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS " + + "SYSREQ_REF_TYPE_ACT_SECTION " + + "SYSREQ_REF_TYPE_ADD_PARAMS " + + "SYSREQ_REF_TYPE_COMMENT " + + "SYSREQ_REF_TYPE_COMMON_SETTINGS " + + "SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME " + + "SYSREQ_REF_TYPE_EVENT_TEXT " + + "SYSREQ_REF_TYPE_MAIN_LEADING_REF " + + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR " + + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " + + "SYSREQ_REF_TYPE_NAME_LOCALIZE_ID " + + "SYSREQ_REF_TYPE_NUMERATION_METHOD " + + "SYSREQ_REF_TYPE_REQ_CODE " + + "SYSREQ_REF_TYPE_REQ_DESCRIPTION " + + "SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " + + "SYSREQ_REF_TYPE_REQ_IS_CONTROL " + + "SYSREQ_REF_TYPE_REQ_IS_FILTER " + + "SYSREQ_REF_TYPE_REQ_IS_LEADING " + + "SYSREQ_REF_TYPE_REQ_IS_REQUIRED " + + "SYSREQ_REF_TYPE_REQ_NUMBER " + + "SYSREQ_REF_TYPE_REQ_ON_CHANGE " + + "SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS " + + "SYSREQ_REF_TYPE_REQ_ON_SELECT " + + "SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND " + + "SYSREQ_REF_TYPE_REQ_SECTION " + + "SYSREQ_REF_TYPE_VIEW_CARD " + + "SYSREQ_REF_TYPE_VIEW_CODE " + + "SYSREQ_REF_TYPE_VIEW_COMMENT " + + "SYSREQ_REF_TYPE_VIEW_IS_MAIN " + + "SYSREQ_REF_TYPE_VIEW_NAME " + + "SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID " + + "SYSREQ_REFERENCE_TYPE_ID " + + "SYSREQ_STATE " + + "SYSREQ_STATЕ " + + "SYSREQ_SYSTEM_SETTINGS_VALUE " + + "SYSREQ_TYPE " + + "SYSREQ_UNIT " + + "SYSREQ_UNIT_ID " + + "SYSREQ_USER_GROUPS_GROUP_FULL_NAME " + + "SYSREQ_USER_GROUPS_GROUP_NAME " + + "SYSREQ_USER_GROUPS_GROUP_SERVER_NAME " + + "SYSREQ_USERS_ACCESS_RIGHTS " + + "SYSREQ_USERS_AUTHENTICATION " + + "SYSREQ_USERS_CATEGORY " + + "SYSREQ_USERS_COMPONENT " + + "SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC " + + "SYSREQ_USERS_DOMAIN " + + "SYSREQ_USERS_FULL_USER_NAME " + + "SYSREQ_USERS_GROUP " + + "SYSREQ_USERS_IS_MAIN_SERVER " + + "SYSREQ_USERS_LOGIN " + + "SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC " + + "SYSREQ_USERS_STATUS " + + "SYSREQ_USERS_USER_CERTIFICATE " + + "SYSREQ_USERS_USER_CERTIFICATE_INFO " + + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME " + + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION " + + "SYSREQ_USERS_USER_CERTIFICATE_STATE " + + "SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME " + + "SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT " + + "SYSREQ_USERS_USER_DEFAULT_CERTIFICATE " + + "SYSREQ_USERS_USER_DESCRIPTION " + + "SYSREQ_USERS_USER_GLOBAL_NAME " + + "SYSREQ_USERS_USER_LOGIN " + + "SYSREQ_USERS_USER_MAIN_SERVER " + + "SYSREQ_USERS_USER_TYPE " + + "SYSREQ_WORK_RULES_FOLDER_ID "; + + // Result + const result_constants = "RESULT_VAR_NAME RESULT_VAR_NAME_ENG "; + + // Rule identification + const rule_identification_constants = + "AUTO_NUMERATION_RULE_ID " + + "CANT_CHANGE_ID_REQUISITE_RULE_ID " + + "CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID " + + "CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID " + + "CHECK_CODE_REQUISITE_RULE_ID " + + "CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID " + + "CHECK_FILTRATER_CHANGES_RULE_ID " + + "CHECK_RECORD_INTERVAL_RULE_ID " + + "CHECK_REFERENCE_INTERVAL_RULE_ID " + + "CHECK_REQUIRED_DATA_FULLNESS_RULE_ID " + + "CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID " + + "MAKE_RECORD_UNRATIFIED_RULE_ID " + + "RESTORE_AUTO_NUMERATION_RULE_ID " + + "SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID " + + "SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID " + + "SET_IDSPS_VALUE_RULE_ID " + + "SET_NEXT_CODE_VALUE_RULE_ID " + + "SET_OURFIRM_BOUNDS_RULE_ID " + + "SET_OURFIRM_REQUISITE_RULE_ID "; + + // Script block properties + const script_block_properties_constants = + "SCRIPT_BLOCK_AFTER_FINISH_EVENT " + + "SCRIPT_BLOCK_BEFORE_START_EVENT " + + "SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY " + + "SCRIPT_BLOCK_NAME_PROPERTY " + + "SCRIPT_BLOCK_SCRIPT_PROPERTY "; + + // Subtask block properties + const subtask_block_properties_constants = + "SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY " + + "SUBTASK_BLOCK_AFTER_FINISH_EVENT " + + "SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT " + + "SUBTASK_BLOCK_ATTACHMENTS_PROPERTY " + + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " + + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " + + "SUBTASK_BLOCK_BEFORE_START_EVENT " + + "SUBTASK_BLOCK_CREATED_TASK_PROPERTY " + + "SUBTASK_BLOCK_CREATION_EVENT " + + "SUBTASK_BLOCK_DEADLINE_PROPERTY " + + "SUBTASK_BLOCK_IMPORTANCE_PROPERTY " + + "SUBTASK_BLOCK_INITIATOR_PROPERTY " + + "SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " + + "SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " + + "SUBTASK_BLOCK_JOBS_TYPE_PROPERTY " + + "SUBTASK_BLOCK_NAME_PROPERTY " + + "SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY " + + "SUBTASK_BLOCK_PERFORMERS_PROPERTY " + + "SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " + + "SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " + + "SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY " + + "SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY " + + "SUBTASK_BLOCK_START_EVENT " + + "SUBTASK_BLOCK_STEP_CONTROL_PROPERTY " + + "SUBTASK_BLOCK_SUBJECT_PROPERTY " + + "SUBTASK_BLOCK_TASK_CONTROL_PROPERTY " + + "SUBTASK_BLOCK_TEXT_PROPERTY " + + "SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY " + + "SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY " + + "SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY "; + + // System component + const system_component_constants = + "SYSCOMP_CONTROL_JOBS " + + "SYSCOMP_FOLDERS " + + "SYSCOMP_JOBS " + + "SYSCOMP_NOTICES " + + "SYSCOMP_TASKS "; + + // System dialogs + const system_dialogs_constants = + "SYSDLG_CREATE_EDOCUMENT " + + "SYSDLG_CREATE_EDOCUMENT_VERSION " + + "SYSDLG_CURRENT_PERIOD " + + "SYSDLG_EDIT_FUNCTION_HELP " + + "SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE " + + "SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS " + + "SYSDLG_EXPORT_SINGLE_EDOCUMENT " + + "SYSDLG_IMPORT_EDOCUMENT " + + "SYSDLG_MULTIPLE_SELECT " + + "SYSDLG_SETUP_ACCESS_RIGHTS " + + "SYSDLG_SETUP_DEFAULT_RIGHTS " + + "SYSDLG_SETUP_FILTER_CONDITION " + + "SYSDLG_SETUP_SIGN_RIGHTS " + + "SYSDLG_SETUP_TASK_OBSERVERS " + + "SYSDLG_SETUP_TASK_ROUTE " + + "SYSDLG_SETUP_USERS_LIST " + + "SYSDLG_SIGN_EDOCUMENT " + + "SYSDLG_SIGN_MULTIPLE_EDOCUMENTS "; + + // System reference names + const system_reference_names_constants = + "SYSREF_ACCESS_RIGHTS_TYPES " + + "SYSREF_ADMINISTRATION_HISTORY " + + "SYSREF_ALL_AVAILABLE_COMPONENTS " + + "SYSREF_ALL_AVAILABLE_PRIVILEGES " + + "SYSREF_ALL_REPLICATING_COMPONENTS " + + "SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS " + + "SYSREF_CALENDAR_EVENTS " + + "SYSREF_COMPONENT_TOKEN_HISTORY " + + "SYSREF_COMPONENT_TOKENS " + + "SYSREF_COMPONENTS " + + "SYSREF_CONSTANTS " + + "SYSREF_DATA_RECEIVE_PROTOCOL " + + "SYSREF_DATA_SEND_PROTOCOL " + + "SYSREF_DIALOGS " + + "SYSREF_DIALOGS_REQUISITES " + + "SYSREF_EDITORS " + + "SYSREF_EDOC_CARDS " + + "SYSREF_EDOC_TYPES " + + "SYSREF_EDOCUMENT_CARD_REQUISITES " + + "SYSREF_EDOCUMENT_CARD_TYPES " + + "SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE " + + "SYSREF_EDOCUMENT_CARDS " + + "SYSREF_EDOCUMENT_HISTORY " + + "SYSREF_EDOCUMENT_KINDS " + + "SYSREF_EDOCUMENT_REQUISITES " + + "SYSREF_EDOCUMENT_SIGNATURES " + + "SYSREF_EDOCUMENT_TEMPLATES " + + "SYSREF_EDOCUMENT_TEXT_STORAGES " + + "SYSREF_EDOCUMENT_VIEWS " + + "SYSREF_FILTERER_SETUP_CONFLICTS " + + "SYSREF_FILTRATER_SETTING_CONFLICTS " + + "SYSREF_FOLDER_HISTORY " + + "SYSREF_FOLDERS " + + "SYSREF_FUNCTION_GROUPS " + + "SYSREF_FUNCTION_PARAMS " + + "SYSREF_FUNCTIONS " + + "SYSREF_JOB_HISTORY " + + "SYSREF_LINKS " + + "SYSREF_LOCALIZATION_DICTIONARY " + + "SYSREF_LOCALIZATION_LANGUAGES " + + "SYSREF_MODULES " + + "SYSREF_PRIVILEGES " + + "SYSREF_RECORD_HISTORY " + + "SYSREF_REFERENCE_REQUISITES " + + "SYSREF_REFERENCE_TYPE_VIEWS " + + "SYSREF_REFERENCE_TYPES " + + "SYSREF_REFERENCES " + + "SYSREF_REFERENCES_REQUISITES " + + "SYSREF_REMOTE_SERVERS " + + "SYSREF_REPLICATION_SESSIONS_LOG " + + "SYSREF_REPLICATION_SESSIONS_PROTOCOL " + + "SYSREF_REPORTS " + + "SYSREF_ROLES " + + "SYSREF_ROUTE_BLOCK_GROUPS " + + "SYSREF_ROUTE_BLOCKS " + + "SYSREF_SCRIPTS " + + "SYSREF_SEARCHES " + + "SYSREF_SERVER_EVENTS " + + "SYSREF_SERVER_EVENTS_HISTORY " + + "SYSREF_STANDARD_ROUTE_GROUPS " + + "SYSREF_STANDARD_ROUTES " + + "SYSREF_STATUSES " + + "SYSREF_SYSTEM_SETTINGS " + + "SYSREF_TASK_HISTORY " + + "SYSREF_TASK_KIND_GROUPS " + + "SYSREF_TASK_KINDS " + + "SYSREF_TASK_RIGHTS " + + "SYSREF_TASK_SIGNATURES " + + "SYSREF_TASKS " + + "SYSREF_UNITS " + + "SYSREF_USER_GROUPS " + + "SYSREF_USER_GROUPS_REFERENCE " + + "SYSREF_USER_SUBSTITUTION " + + "SYSREF_USERS " + + "SYSREF_USERS_REFERENCE " + + "SYSREF_VIEWERS " + + "SYSREF_WORKING_TIME_CALENDARS "; + + // Table name + const table_name_constants = + "ACCESS_RIGHTS_TABLE_NAME " + + "EDMS_ACCESS_TABLE_NAME " + + "EDOC_TYPES_TABLE_NAME "; + + // Test + const test_constants = + "TEST_DEV_DB_NAME " + + "TEST_DEV_SYSTEM_CODE " + + "TEST_EDMS_DB_NAME " + + "TEST_EDMS_MAIN_CODE " + + "TEST_EDMS_MAIN_DB_NAME " + + "TEST_EDMS_SECOND_CODE " + + "TEST_EDMS_SECOND_DB_NAME " + + "TEST_EDMS_SYSTEM_CODE " + + "TEST_ISB5_MAIN_CODE " + + "TEST_ISB5_SECOND_CODE " + + "TEST_SQL_SERVER_2005_NAME " + + "TEST_SQL_SERVER_NAME "; + + // Using the dialog windows + const using_the_dialog_windows_constants = + "ATTENTION_CAPTION " + + "cbsCommandLinks " + + "cbsDefault " + + "CONFIRMATION_CAPTION " + + "ERROR_CAPTION " + + "INFORMATION_CAPTION " + + "mrCancel " + + "mrOk "; + + // Using the document + const using_the_document_constants = + "EDOC_VERSION_ACTIVE_STAGE_CODE " + + "EDOC_VERSION_DESIGN_STAGE_CODE " + + "EDOC_VERSION_OBSOLETE_STAGE_CODE "; + + // Using the EA and encryption + const using_the_EA_and_encryption_constants = + "cpDataEnciphermentEnabled " + + "cpDigitalSignatureEnabled " + + "cpID " + + "cpIssuer " + + "cpPluginVersion " + + "cpSerial " + + "cpSubjectName " + + "cpSubjSimpleName " + + "cpValidFromDate " + + "cpValidToDate "; + + // Using the ISBL-editor + const using_the_ISBL_editor_constants = + "ISBL_SYNTAX " + "NO_SYNTAX " + "XML_SYNTAX "; + + // Wait block properties + const wait_block_properties_constants = + "WAIT_BLOCK_AFTER_FINISH_EVENT " + + "WAIT_BLOCK_BEFORE_START_EVENT " + + "WAIT_BLOCK_DEADLINE_PROPERTY " + + "WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " + + "WAIT_BLOCK_NAME_PROPERTY " + + "WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "; + + // SYSRES Common + const sysres_common_constants = + "SYSRES_COMMON " + + "SYSRES_CONST " + + "SYSRES_MBFUNC " + + "SYSRES_SBDATA " + + "SYSRES_SBGUI " + + "SYSRES_SBINTF " + + "SYSRES_SBREFDSC " + + "SYSRES_SQLERRORS " + + "SYSRES_SYSCOMP "; + + // Константы ==> built_in + const CONSTANTS = + sysres_constants + + base_constants + + base_group_name_constants + + decision_block_properties_constants + + file_extension_constants + + job_block_properties_constants + + language_code_constants + + launching_external_applications_constants + + link_kind_constants + + lock_type_constants + + monitor_block_properties_constants + + notice_block_properties_constants + + object_events_constants + + object_params_constants + + other_constants + + privileges_constants + + pseudoreference_code_constants + + requisite_ISBCertificateType_values_constants + + requisite_ISBEDocStorageType_values_constants + + requisite_compType2_values_constants + + requisite_name_constants + + result_constants + + rule_identification_constants + + script_block_properties_constants + + subtask_block_properties_constants + + system_component_constants + + system_dialogs_constants + + system_reference_names_constants + + table_name_constants + + test_constants + + using_the_dialog_windows_constants + + using_the_document_constants + + using_the_EA_and_encryption_constants + + using_the_ISBL_editor_constants + + wait_block_properties_constants + + sysres_common_constants; + + // enum TAccountType + const TAccountType = "atUser atGroup atRole "; + + // enum TActionEnabledMode + const TActionEnabledMode = + "aemEnabledAlways " + + "aemDisabledAlways " + + "aemEnabledOnBrowse " + + "aemEnabledOnEdit " + + "aemDisabledOnBrowseEmpty "; + + // enum TAddPosition + const TAddPosition = "apBegin apEnd "; + + // enum TAlignment + const TAlignment = "alLeft alRight "; + + // enum TAreaShowMode + const TAreaShowMode = + "asmNever " + + "asmNoButCustomize " + + "asmAsLastTime " + + "asmYesButCustomize " + + "asmAlways "; + + // enum TCertificateInvalidationReason + const TCertificateInvalidationReason = "cirCommon cirRevoked "; + + // enum TCertificateType + const TCertificateType = "ctSignature ctEncode ctSignatureEncode "; + + // enum TCheckListBoxItemState + const TCheckListBoxItemState = "clbUnchecked clbChecked clbGrayed "; + + // enum TCloseOnEsc + const TCloseOnEsc = "ceISB ceAlways ceNever "; + + // enum TCompType + const TCompType = + "ctDocument " + + "ctReference " + + "ctScript " + + "ctUnknown " + + "ctReport " + + "ctDialog " + + "ctFunction " + + "ctFolder " + + "ctEDocument " + + "ctTask " + + "ctJob " + + "ctNotice " + + "ctControlJob "; + + // enum TConditionFormat + const TConditionFormat = "cfInternal cfDisplay "; + + // enum TConnectionIntent + const TConnectionIntent = "ciUnspecified ciWrite ciRead "; + + // enum TContentKind + const TContentKind = + "ckFolder " + + "ckEDocument " + + "ckTask " + + "ckJob " + + "ckComponentToken " + + "ckAny " + + "ckReference " + + "ckScript " + + "ckReport " + + "ckDialog "; + + // enum TControlType + const TControlType = + "ctISBLEditor " + + "ctBevel " + + "ctButton " + + "ctCheckListBox " + + "ctComboBox " + + "ctComboEdit " + + "ctGrid " + + "ctDBCheckBox " + + "ctDBComboBox " + + "ctDBEdit " + + "ctDBEllipsis " + + "ctDBMemo " + + "ctDBNavigator " + + "ctDBRadioGroup " + + "ctDBStatusLabel " + + "ctEdit " + + "ctGroupBox " + + "ctInplaceHint " + + "ctMemo " + + "ctPanel " + + "ctListBox " + + "ctRadioButton " + + "ctRichEdit " + + "ctTabSheet " + + "ctWebBrowser " + + "ctImage " + + "ctHyperLink " + + "ctLabel " + + "ctDBMultiEllipsis " + + "ctRibbon " + + "ctRichView " + + "ctInnerPanel " + + "ctPanelGroup " + + "ctBitButton "; + + // enum TCriterionContentType + const TCriterionContentType = + "cctDate " + + "cctInteger " + + "cctNumeric " + + "cctPick " + + "cctReference " + + "cctString " + + "cctText "; + + // enum TCultureType + const TCultureType = "cltInternal cltPrimary cltGUI "; + + // enum TDataSetEventType + const TDataSetEventType = + "dseBeforeOpen " + + "dseAfterOpen " + + "dseBeforeClose " + + "dseAfterClose " + + "dseOnValidDelete " + + "dseBeforeDelete " + + "dseAfterDelete " + + "dseAfterDeleteOutOfTransaction " + + "dseOnDeleteError " + + "dseBeforeInsert " + + "dseAfterInsert " + + "dseOnValidUpdate " + + "dseBeforeUpdate " + + "dseOnUpdateRatifiedRecord " + + "dseAfterUpdate " + + "dseAfterUpdateOutOfTransaction " + + "dseOnUpdateError " + + "dseAfterScroll " + + "dseOnOpenRecord " + + "dseOnCloseRecord " + + "dseBeforeCancel " + + "dseAfterCancel " + + "dseOnUpdateDeadlockError " + + "dseBeforeDetailUpdate " + + "dseOnPrepareUpdate " + + "dseOnAnyRequisiteChange "; + + // enum TDataSetState + const TDataSetState = "dssEdit dssInsert dssBrowse dssInActive "; + + // enum TDateFormatType + const TDateFormatType = "dftDate dftShortDate dftDateTime dftTimeStamp "; + + // enum TDateOffsetType + const TDateOffsetType = "dotDays dotHours dotMinutes dotSeconds "; + + // enum TDateTimeKind + const TDateTimeKind = "dtkndLocal dtkndUTC "; + + // enum TDeaAccessRights + const TDeaAccessRights = "arNone arView arEdit arFull "; + + // enum TDocumentDefaultAction + const TDocumentDefaultAction = "ddaView ddaEdit "; + + // enum TEditMode + const TEditMode = + "emLock " + + "emEdit " + + "emSign " + + "emExportWithLock " + + "emImportWithUnlock " + + "emChangeVersionNote " + + "emOpenForModify " + + "emChangeLifeStage " + + "emDelete " + + "emCreateVersion " + + "emImport " + + "emUnlockExportedWithLock " + + "emStart " + + "emAbort " + + "emReInit " + + "emMarkAsReaded " + + "emMarkAsUnreaded " + + "emPerform " + + "emAccept " + + "emResume " + + "emChangeRights " + + "emEditRoute " + + "emEditObserver " + + "emRecoveryFromLocalCopy " + + "emChangeWorkAccessType " + + "emChangeEncodeTypeToCertificate " + + "emChangeEncodeTypeToPassword " + + "emChangeEncodeTypeToNone " + + "emChangeEncodeTypeToCertificatePassword " + + "emChangeStandardRoute " + + "emGetText " + + "emOpenForView " + + "emMoveToStorage " + + "emCreateObject " + + "emChangeVersionHidden " + + "emDeleteVersion " + + "emChangeLifeCycleStage " + + "emApprovingSign " + + "emExport " + + "emContinue " + + "emLockFromEdit " + + "emUnLockForEdit " + + "emLockForServer " + + "emUnlockFromServer " + + "emDelegateAccessRights " + + "emReEncode "; + + // enum TEditorCloseObservType + const TEditorCloseObservType = "ecotFile ecotProcess "; + + // enum TEdmsApplicationAction + const TEdmsApplicationAction = "eaGet eaCopy eaCreate eaCreateStandardRoute "; + + // enum TEDocumentLockType + const TEDocumentLockType = "edltAll edltNothing edltQuery "; + + // enum TEDocumentStepShowMode + const TEDocumentStepShowMode = "essmText essmCard "; + + // enum TEDocumentStepVersionType + const TEDocumentStepVersionType = "esvtLast esvtLastActive esvtSpecified "; + + // enum TEDocumentStorageFunction + const TEDocumentStorageFunction = "edsfExecutive edsfArchive "; + + // enum TEDocumentStorageType + const TEDocumentStorageType = "edstSQLServer edstFile "; + + // enum TEDocumentVersionSourceType + const TEDocumentVersionSourceType = + "edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile "; + + // enum TEDocumentVersionState + const TEDocumentVersionState = "vsDefault vsDesign vsActive vsObsolete "; + + // enum TEncodeType + const TEncodeType = "etNone etCertificate etPassword etCertificatePassword "; + + // enum TExceptionCategory + const TExceptionCategory = "ecException ecWarning ecInformation "; + + // enum TExportedSignaturesType + const TExportedSignaturesType = "estAll estApprovingOnly "; + + // enum TExportedVersionType + const TExportedVersionType = "evtLast evtLastActive evtQuery "; + + // enum TFieldDataType + const TFieldDataType = + "fdtString " + + "fdtNumeric " + + "fdtInteger " + + "fdtDate " + + "fdtText " + + "fdtUnknown " + + "fdtWideString " + + "fdtLargeInteger "; + + // enum TFolderType + const TFolderType = + "ftInbox " + + "ftOutbox " + + "ftFavorites " + + "ftCommonFolder " + + "ftUserFolder " + + "ftComponents " + + "ftQuickLaunch " + + "ftShortcuts " + + "ftSearch "; + + // enum TGridRowHeight + const TGridRowHeight = "grhAuto " + "grhX1 " + "grhX2 " + "grhX3 "; + + // enum THyperlinkType + const THyperlinkType = "hltText " + "hltRTF " + "hltHTML "; + + // enum TImageFileFormat + const TImageFileFormat = + "iffBMP " + + "iffJPEG " + + "iffMultiPageTIFF " + + "iffSinglePageTIFF " + + "iffTIFF " + + "iffPNG "; + + // enum TImageMode + const TImageMode = "im8bGrayscale " + "im24bRGB " + "im1bMonochrome "; + + // enum TImageType + const TImageType = "itBMP " + "itJPEG " + "itWMF " + "itPNG "; + + // enum TInplaceHintKind + const TInplaceHintKind = + "ikhInformation " + "ikhWarning " + "ikhError " + "ikhNoIcon "; + + // enum TISBLContext + const TISBLContext = + "icUnknown " + + "icScript " + + "icFunction " + + "icIntegratedReport " + + "icAnalyticReport " + + "icDataSetEventHandler " + + "icActionHandler " + + "icFormEventHandler " + + "icLookUpEventHandler " + + "icRequisiteChangeEventHandler " + + "icBeforeSearchEventHandler " + + "icRoleCalculation " + + "icSelectRouteEventHandler " + + "icBlockPropertyCalculation " + + "icBlockQueryParamsEventHandler " + + "icChangeSearchResultEventHandler " + + "icBlockEventHandler " + + "icSubTaskInitEventHandler " + + "icEDocDataSetEventHandler " + + "icEDocLookUpEventHandler " + + "icEDocActionHandler " + + "icEDocFormEventHandler " + + "icEDocRequisiteChangeEventHandler " + + "icStructuredConversionRule " + + "icStructuredConversionEventBefore " + + "icStructuredConversionEventAfter " + + "icWizardEventHandler " + + "icWizardFinishEventHandler " + + "icWizardStepEventHandler " + + "icWizardStepFinishEventHandler " + + "icWizardActionEnableEventHandler " + + "icWizardActionExecuteEventHandler " + + "icCreateJobsHandler " + + "icCreateNoticesHandler " + + "icBeforeLookUpEventHandler " + + "icAfterLookUpEventHandler " + + "icTaskAbortEventHandler " + + "icWorkflowBlockActionHandler " + + "icDialogDataSetEventHandler " + + "icDialogActionHandler " + + "icDialogLookUpEventHandler " + + "icDialogRequisiteChangeEventHandler " + + "icDialogFormEventHandler " + + "icDialogValidCloseEventHandler " + + "icBlockFormEventHandler " + + "icTaskFormEventHandler " + + "icReferenceMethod " + + "icEDocMethod " + + "icDialogMethod " + + "icProcessMessageHandler "; + + // enum TItemShow + const TItemShow = "isShow " + "isHide " + "isByUserSettings "; + + // enum TJobKind + const TJobKind = "jkJob " + "jkNotice " + "jkControlJob "; + + // enum TJoinType + const TJoinType = "jtInner " + "jtLeft " + "jtRight " + "jtFull " + "jtCross "; + + // enum TLabelPos + const TLabelPos = "lbpAbove " + "lbpBelow " + "lbpLeft " + "lbpRight "; + + // enum TLicensingType + const TLicensingType = "eltPerConnection " + "eltPerUser "; + + // enum TLifeCycleStageFontColor + const TLifeCycleStageFontColor = + "sfcUndefined " + + "sfcBlack " + + "sfcGreen " + + "sfcRed " + + "sfcBlue " + + "sfcOrange " + + "sfcLilac "; + + // enum TLifeCycleStageFontStyle + const TLifeCycleStageFontStyle = "sfsItalic " + "sfsStrikeout " + "sfsNormal "; + + // enum TLockableDevelopmentComponentType + const TLockableDevelopmentComponentType = + "ldctStandardRoute " + + "ldctWizard " + + "ldctScript " + + "ldctFunction " + + "ldctRouteBlock " + + "ldctIntegratedReport " + + "ldctAnalyticReport " + + "ldctReferenceType " + + "ldctEDocumentType " + + "ldctDialog " + + "ldctServerEvents "; + + // enum TMaxRecordCountRestrictionType + const TMaxRecordCountRestrictionType = + "mrcrtNone " + "mrcrtUser " + "mrcrtMaximal " + "mrcrtCustom "; + + // enum TRangeValueType + const TRangeValueType = + "vtEqual " + "vtGreaterOrEqual " + "vtLessOrEqual " + "vtRange "; + + // enum TRelativeDate + const TRelativeDate = + "rdYesterday " + + "rdToday " + + "rdTomorrow " + + "rdThisWeek " + + "rdThisMonth " + + "rdThisYear " + + "rdNextMonth " + + "rdNextWeek " + + "rdLastWeek " + + "rdLastMonth "; + + // enum TReportDestination + const TReportDestination = "rdWindow " + "rdFile " + "rdPrinter "; + + // enum TReqDataType + const TReqDataType = + "rdtString " + + "rdtNumeric " + + "rdtInteger " + + "rdtDate " + + "rdtReference " + + "rdtAccount " + + "rdtText " + + "rdtPick " + + "rdtUnknown " + + "rdtLargeInteger " + + "rdtDocument "; + + // enum TRequisiteEventType + const TRequisiteEventType = "reOnChange " + "reOnChangeValues "; + + // enum TSBTimeType + const TSBTimeType = "ttGlobal " + "ttLocal " + "ttUser " + "ttSystem "; + + // enum TSearchShowMode + const TSearchShowMode = + "ssmBrowse " + "ssmSelect " + "ssmMultiSelect " + "ssmBrowseModal "; + + // enum TSelectMode + const TSelectMode = "smSelect " + "smLike " + "smCard "; + + // enum TSignatureType + const TSignatureType = "stNone " + "stAuthenticating " + "stApproving "; + + // enum TSignerContentType + const TSignerContentType = "sctString " + "sctStream "; + + // enum TStringsSortType + const TStringsSortType = "sstAnsiSort " + "sstNaturalSort "; + + // enum TStringValueType + const TStringValueType = "svtEqual " + "svtContain "; + + // enum TStructuredObjectAttributeType + const TStructuredObjectAttributeType = + "soatString " + + "soatNumeric " + + "soatInteger " + + "soatDatetime " + + "soatReferenceRecord " + + "soatText " + + "soatPick " + + "soatBoolean " + + "soatEDocument " + + "soatAccount " + + "soatIntegerCollection " + + "soatNumericCollection " + + "soatStringCollection " + + "soatPickCollection " + + "soatDatetimeCollection " + + "soatBooleanCollection " + + "soatReferenceRecordCollection " + + "soatEDocumentCollection " + + "soatAccountCollection " + + "soatContents " + + "soatUnknown "; + + // enum TTaskAbortReason + const TTaskAbortReason = "tarAbortByUser " + "tarAbortByWorkflowException "; + + // enum TTextValueType + const TTextValueType = "tvtAllWords " + "tvtExactPhrase " + "tvtAnyWord "; + + // enum TUserObjectStatus + const TUserObjectStatus = + "usNone " + + "usCompleted " + + "usRedSquare " + + "usBlueSquare " + + "usYellowSquare " + + "usGreenSquare " + + "usOrangeSquare " + + "usPurpleSquare " + + "usFollowUp "; + + // enum TUserType + const TUserType = + "utUnknown " + + "utUser " + + "utDeveloper " + + "utAdministrator " + + "utSystemDeveloper " + + "utDisconnected "; + + // enum TValuesBuildType + const TValuesBuildType = + "btAnd " + "btDetailAnd " + "btOr " + "btNotOr " + "btOnly "; + + // enum TViewMode + const TViewMode = "vmView " + "vmSelect " + "vmNavigation "; + + // enum TViewSelectionMode + const TViewSelectionMode = + "vsmSingle " + "vsmMultiple " + "vsmMultipleCheck " + "vsmNoSelection "; + + // enum TWizardActionType + const TWizardActionType = + "wfatPrevious " + "wfatNext " + "wfatCancel " + "wfatFinish "; + + // enum TWizardFormElementProperty + const TWizardFormElementProperty = + "wfepUndefined " + + "wfepText3 " + + "wfepText6 " + + "wfepText9 " + + "wfepSpinEdit " + + "wfepDropDown " + + "wfepRadioGroup " + + "wfepFlag " + + "wfepText12 " + + "wfepText15 " + + "wfepText18 " + + "wfepText21 " + + "wfepText24 " + + "wfepText27 " + + "wfepText30 " + + "wfepRadioGroupColumn1 " + + "wfepRadioGroupColumn2 " + + "wfepRadioGroupColumn3 "; + + // enum TWizardFormElementType + const TWizardFormElementType = + "wfetQueryParameter " + "wfetText " + "wfetDelimiter " + "wfetLabel "; + + // enum TWizardParamType + const TWizardParamType = + "wptString " + + "wptInteger " + + "wptNumeric " + + "wptBoolean " + + "wptDateTime " + + "wptPick " + + "wptText " + + "wptUser " + + "wptUserList " + + "wptEDocumentInfo " + + "wptEDocumentInfoList " + + "wptReferenceRecordInfo " + + "wptReferenceRecordInfoList " + + "wptFolderInfo " + + "wptTaskInfo " + + "wptContents " + + "wptFileName " + + "wptDate "; + + // enum TWizardStepResult + const TWizardStepResult = + "wsrComplete " + + "wsrGoNext " + + "wsrGoPrevious " + + "wsrCustom " + + "wsrCancel " + + "wsrGoFinal "; + + // enum TWizardStepType + const TWizardStepType = + "wstForm " + + "wstEDocument " + + "wstTaskCard " + + "wstReferenceRecordCard " + + "wstFinal "; + + // enum TWorkAccessType + const TWorkAccessType = "waAll " + "waPerformers " + "waManual "; + + // enum TWorkflowBlockType + const TWorkflowBlockType = + "wsbStart " + + "wsbFinish " + + "wsbNotice " + + "wsbStep " + + "wsbDecision " + + "wsbWait " + + "wsbMonitor " + + "wsbScript " + + "wsbConnector " + + "wsbSubTask " + + "wsbLifeCycleStage " + + "wsbPause "; + + // enum TWorkflowDataType + const TWorkflowDataType = + "wdtInteger " + + "wdtFloat " + + "wdtString " + + "wdtPick " + + "wdtDateTime " + + "wdtBoolean " + + "wdtTask " + + "wdtJob " + + "wdtFolder " + + "wdtEDocument " + + "wdtReferenceRecord " + + "wdtUser " + + "wdtGroup " + + "wdtRole " + + "wdtIntegerCollection " + + "wdtFloatCollection " + + "wdtStringCollection " + + "wdtPickCollection " + + "wdtDateTimeCollection " + + "wdtBooleanCollection " + + "wdtTaskCollection " + + "wdtJobCollection " + + "wdtFolderCollection " + + "wdtEDocumentCollection " + + "wdtReferenceRecordCollection " + + "wdtUserCollection " + + "wdtGroupCollection " + + "wdtRoleCollection " + + "wdtContents " + + "wdtUserList " + + "wdtSearchDescription " + + "wdtDeadLine " + + "wdtPickSet " + + "wdtAccountCollection "; + + // enum TWorkImportance + const TWorkImportance = "wiLow " + "wiNormal " + "wiHigh "; + + // enum TWorkRouteType + const TWorkRouteType = "wrtSoft " + "wrtHard "; + + // enum TWorkState + const TWorkState = + "wsInit " + + "wsRunning " + + "wsDone " + + "wsControlled " + + "wsAborted " + + "wsContinued "; + + // enum TWorkTextBuildingMode + const TWorkTextBuildingMode = + "wtmFull " + "wtmFromCurrent " + "wtmOnlyCurrent "; + + // Перечисления + const ENUMS = + TAccountType + + TActionEnabledMode + + TAddPosition + + TAlignment + + TAreaShowMode + + TCertificateInvalidationReason + + TCertificateType + + TCheckListBoxItemState + + TCloseOnEsc + + TCompType + + TConditionFormat + + TConnectionIntent + + TContentKind + + TControlType + + TCriterionContentType + + TCultureType + + TDataSetEventType + + TDataSetState + + TDateFormatType + + TDateOffsetType + + TDateTimeKind + + TDeaAccessRights + + TDocumentDefaultAction + + TEditMode + + TEditorCloseObservType + + TEdmsApplicationAction + + TEDocumentLockType + + TEDocumentStepShowMode + + TEDocumentStepVersionType + + TEDocumentStorageFunction + + TEDocumentStorageType + + TEDocumentVersionSourceType + + TEDocumentVersionState + + TEncodeType + + TExceptionCategory + + TExportedSignaturesType + + TExportedVersionType + + TFieldDataType + + TFolderType + + TGridRowHeight + + THyperlinkType + + TImageFileFormat + + TImageMode + + TImageType + + TInplaceHintKind + + TISBLContext + + TItemShow + + TJobKind + + TJoinType + + TLabelPos + + TLicensingType + + TLifeCycleStageFontColor + + TLifeCycleStageFontStyle + + TLockableDevelopmentComponentType + + TMaxRecordCountRestrictionType + + TRangeValueType + + TRelativeDate + + TReportDestination + + TReqDataType + + TRequisiteEventType + + TSBTimeType + + TSearchShowMode + + TSelectMode + + TSignatureType + + TSignerContentType + + TStringsSortType + + TStringValueType + + TStructuredObjectAttributeType + + TTaskAbortReason + + TTextValueType + + TUserObjectStatus + + TUserType + + TValuesBuildType + + TViewMode + + TViewSelectionMode + + TWizardActionType + + TWizardFormElementProperty + + TWizardFormElementType + + TWizardParamType + + TWizardStepResult + + TWizardStepType + + TWorkAccessType + + TWorkflowBlockType + + TWorkflowDataType + + TWorkImportance + + TWorkRouteType + + TWorkState + + TWorkTextBuildingMode; + + // Системные функции ==> SYSFUNCTIONS + const system_functions = + "AddSubString " + + "AdjustLineBreaks " + + "AmountInWords " + + "Analysis " + + "ArrayDimCount " + + "ArrayHighBound " + + "ArrayLowBound " + + "ArrayOf " + + "ArrayReDim " + + "Assert " + + "Assigned " + + "BeginOfMonth " + + "BeginOfPeriod " + + "BuildProfilingOperationAnalysis " + + "CallProcedure " + + "CanReadFile " + + "CArrayElement " + + "CDataSetRequisite " + + "ChangeDate " + + "ChangeReferenceDataset " + + "Char " + + "CharPos " + + "CheckParam " + + "CheckParamValue " + + "CompareStrings " + + "ConstantExists " + + "ControlState " + + "ConvertDateStr " + + "Copy " + + "CopyFile " + + "CreateArray " + + "CreateCachedReference " + + "CreateConnection " + + "CreateDialog " + + "CreateDualListDialog " + + "CreateEditor " + + "CreateException " + + "CreateFile " + + "CreateFolderDialog " + + "CreateInputDialog " + + "CreateLinkFile " + + "CreateList " + + "CreateLock " + + "CreateMemoryDataSet " + + "CreateObject " + + "CreateOpenDialog " + + "CreateProgress " + + "CreateQuery " + + "CreateReference " + + "CreateReport " + + "CreateSaveDialog " + + "CreateScript " + + "CreateSQLPivotFunction " + + "CreateStringList " + + "CreateTreeListSelectDialog " + + "CSelectSQL " + + "CSQL " + + "CSubString " + + "CurrentUserID " + + "CurrentUserName " + + "CurrentVersion " + + "DataSetLocateEx " + + "DateDiff " + + "DateTimeDiff " + + "DateToStr " + + "DayOfWeek " + + "DeleteFile " + + "DirectoryExists " + + "DisableCheckAccessRights " + + "DisableCheckFullShowingRestriction " + + "DisableMassTaskSendingRestrictions " + + "DropTable " + + "DupeString " + + "EditText " + + "EnableCheckAccessRights " + + "EnableCheckFullShowingRestriction " + + "EnableMassTaskSendingRestrictions " + + "EndOfMonth " + + "EndOfPeriod " + + "ExceptionExists " + + "ExceptionsOff " + + "ExceptionsOn " + + "Execute " + + "ExecuteProcess " + + "Exit " + + "ExpandEnvironmentVariables " + + "ExtractFileDrive " + + "ExtractFileExt " + + "ExtractFileName " + + "ExtractFilePath " + + "ExtractParams " + + "FileExists " + + "FileSize " + + "FindFile " + + "FindSubString " + + "FirmContext " + + "ForceDirectories " + + "Format " + + "FormatDate " + + "FormatNumeric " + + "FormatSQLDate " + + "FormatString " + + "FreeException " + + "GetComponent " + + "GetComponentLaunchParam " + + "GetConstant " + + "GetLastException " + + "GetReferenceRecord " + + "GetRefTypeByRefID " + + "GetTableID " + + "GetTempFolder " + + "IfThen " + + "In " + + "IndexOf " + + "InputDialog " + + "InputDialogEx " + + "InteractiveMode " + + "IsFileLocked " + + "IsGraphicFile " + + "IsNumeric " + + "Length " + + "LoadString " + + "LoadStringFmt " + + "LocalTimeToUTC " + + "LowerCase " + + "Max " + + "MessageBox " + + "MessageBoxEx " + + "MimeDecodeBinary " + + "MimeDecodeString " + + "MimeEncodeBinary " + + "MimeEncodeString " + + "Min " + + "MoneyInWords " + + "MoveFile " + + "NewID " + + "Now " + + "OpenFile " + + "Ord " + + "Precision " + + "Raise " + + "ReadCertificateFromFile " + + "ReadFile " + + "ReferenceCodeByID " + + "ReferenceNumber " + + "ReferenceRequisiteMode " + + "ReferenceRequisiteValue " + + "RegionDateSettings " + + "RegionNumberSettings " + + "RegionTimeSettings " + + "RegRead " + + "RegWrite " + + "RenameFile " + + "Replace " + + "Round " + + "SelectServerCode " + + "SelectSQL " + + "ServerDateTime " + + "SetConstant " + + "SetManagedFolderFieldsState " + + "ShowConstantsInputDialog " + + "ShowMessage " + + "Sleep " + + "Split " + + "SQL " + + "SQL2XLSTAB " + + "SQLProfilingSendReport " + + "StrToDate " + + "SubString " + + "SubStringCount " + + "SystemSetting " + + "Time " + + "TimeDiff " + + "Today " + + "Transliterate " + + "Trim " + + "UpperCase " + + "UserStatus " + + "UTCToLocalTime " + + "ValidateXML " + + "VarIsClear " + + "VarIsEmpty " + + "VarIsNull " + + "WorkTimeDiff " + + "WriteFile " + + "WriteFileEx " + + "WriteObjectHistory " + + "Анализ " + + "БазаДанных " + + "БлокЕсть " + + "БлокЕстьРасш " + + "БлокИнфо " + + "БлокСнять " + + "БлокСнятьРасш " + + "БлокУстановить " + + "Ввод " + + "ВводМеню " + + "ВедС " + + "ВедСпр " + + "ВерхняяГраницаМассива " + + "ВнешПрогр " + + "Восст " + + "ВременнаяПапка " + + "Время " + + "ВыборSQL " + + "ВыбратьЗапись " + + "ВыделитьСтр " + + "Вызвать " + + "Выполнить " + + "ВыпПрогр " + + "ГрафическийФайл " + + "ГруппаДополнительно " + + "ДатаВремяСерв " + + "ДеньНедели " + + "ДиалогДаНет " + + "ДлинаСтр " + + "ДобПодстр " + + "ЕПусто " + + "ЕслиТо " + + "ЕЧисло " + + "ЗамПодстр " + + "ЗаписьСправочника " + + "ЗначПоляСпр " + + "ИДТипСпр " + + "ИзвлечьДиск " + + "ИзвлечьИмяФайла " + + "ИзвлечьПуть " + + "ИзвлечьРасширение " + + "ИзмДат " + + "ИзменитьРазмерМассива " + + "ИзмеренийМассива " + + "ИмяОрг " + + "ИмяПоляСпр " + + "Индекс " + + "ИндикаторЗакрыть " + + "ИндикаторОткрыть " + + "ИндикаторШаг " + + "ИнтерактивныйРежим " + + "ИтогТблСпр " + + "КодВидВедСпр " + + "КодВидСпрПоИД " + + "КодПоAnalit " + + "КодСимвола " + + "КодСпр " + + "КолПодстр " + + "КолПроп " + + "КонМес " + + "Конст " + + "КонстЕсть " + + "КонстЗнач " + + "КонТран " + + "КопироватьФайл " + + "КопияСтр " + + "КПериод " + + "КСтрТблСпр " + + "Макс " + + "МаксСтрТблСпр " + + "Массив " + + "Меню " + + "МенюРасш " + + "Мин " + + "НаборДанныхНайтиРасш " + + "НаимВидСпр " + + "НаимПоAnalit " + + "НаимСпр " + + "НастроитьПереводыСтрок " + + "НачМес " + + "НачТран " + + "НижняяГраницаМассива " + + "НомерСпр " + + "НПериод " + + "Окно " + + "Окр " + + "Окружение " + + "ОтлИнфДобавить " + + "ОтлИнфУдалить " + + "Отчет " + + "ОтчетАнал " + + "ОтчетИнт " + + "ПапкаСуществует " + + "Пауза " + + "ПВыборSQL " + + "ПереименоватьФайл " + + "Переменные " + + "ПереместитьФайл " + + "Подстр " + + "ПоискПодстр " + + "ПоискСтр " + + "ПолучитьИДТаблицы " + + "ПользовательДополнительно " + + "ПользовательИД " + + "ПользовательИмя " + + "ПользовательСтатус " + + "Прервать " + + "ПроверитьПараметр " + + "ПроверитьПараметрЗнач " + + "ПроверитьУсловие " + + "РазбСтр " + + "РазнВремя " + + "РазнДат " + + "РазнДатаВремя " + + "РазнРабВремя " + + "РегУстВрем " + + "РегУстДат " + + "РегУстЧсл " + + "РедТекст " + + "РеестрЗапись " + + "РеестрСписокИменПарам " + + "РеестрЧтение " + + "РеквСпр " + + "РеквСпрПр " + + "Сегодня " + + "Сейчас " + + "Сервер " + + "СерверПроцессИД " + + "СертификатФайлСчитать " + + "СжПроб " + + "Символ " + + "СистемаДиректумКод " + + "СистемаИнформация " + + "СистемаКод " + + "Содержит " + + "СоединениеЗакрыть " + + "СоединениеОткрыть " + + "СоздатьДиалог " + + "СоздатьДиалогВыбораИзДвухСписков " + + "СоздатьДиалогВыбораПапки " + + "СоздатьДиалогОткрытияФайла " + + "СоздатьДиалогСохраненияФайла " + + "СоздатьЗапрос " + + "СоздатьИндикатор " + + "СоздатьИсключение " + + "СоздатьКэшированныйСправочник " + + "СоздатьМассив " + + "СоздатьНаборДанных " + + "СоздатьОбъект " + + "СоздатьОтчет " + + "СоздатьПапку " + + "СоздатьРедактор " + + "СоздатьСоединение " + + "СоздатьСписок " + + "СоздатьСписокСтрок " + + "СоздатьСправочник " + + "СоздатьСценарий " + + "СоздСпр " + + "СостСпр " + + "Сохр " + + "СохрСпр " + + "СписокСистем " + + "Спр " + + "Справочник " + + "СпрБлокЕсть " + + "СпрБлокСнять " + + "СпрБлокСнятьРасш " + + "СпрБлокУстановить " + + "СпрИзмНабДан " + + "СпрКод " + + "СпрНомер " + + "СпрОбновить " + + "СпрОткрыть " + + "СпрОтменить " + + "СпрПарам " + + "СпрПолеЗнач " + + "СпрПолеИмя " + + "СпрРекв " + + "СпрРеквВведЗн " + + "СпрРеквНовые " + + "СпрРеквПр " + + "СпрРеквПредЗн " + + "СпрРеквРежим " + + "СпрРеквТипТекст " + + "СпрСоздать " + + "СпрСост " + + "СпрСохранить " + + "СпрТблИтог " + + "СпрТблСтр " + + "СпрТблСтрКол " + + "СпрТблСтрМакс " + + "СпрТблСтрМин " + + "СпрТблСтрПред " + + "СпрТблСтрСлед " + + "СпрТблСтрСозд " + + "СпрТблСтрУд " + + "СпрТекПредст " + + "СпрУдалить " + + "СравнитьСтр " + + "СтрВерхРегистр " + + "СтрНижнРегистр " + + "СтрТблСпр " + + "СумПроп " + + "Сценарий " + + "СценарийПарам " + + "ТекВерсия " + + "ТекОрг " + + "Точн " + + "Тран " + + "Транслитерация " + + "УдалитьТаблицу " + + "УдалитьФайл " + + "УдСпр " + + "УдСтрТблСпр " + + "Уст " + + "УстановкиКонстант " + + "ФайлАтрибутСчитать " + + "ФайлАтрибутУстановить " + + "ФайлВремя " + + "ФайлВремяУстановить " + + "ФайлВыбрать " + + "ФайлЗанят " + + "ФайлЗаписать " + + "ФайлИскать " + + "ФайлКопировать " + + "ФайлМожноЧитать " + + "ФайлОткрыть " + + "ФайлПереименовать " + + "ФайлПерекодировать " + + "ФайлПереместить " + + "ФайлПросмотреть " + + "ФайлРазмер " + + "ФайлСоздать " + + "ФайлСсылкаСоздать " + + "ФайлСуществует " + + "ФайлСчитать " + + "ФайлУдалить " + + "ФмтSQLДат " + + "ФмтДат " + + "ФмтСтр " + + "ФмтЧсл " + + "Формат " + + "ЦМассивЭлемент " + + "ЦНаборДанныхРеквизит " + + "ЦПодстр "; + + // Предопределенные переменные ==> built_in + const predefined_variables = + "AltState " + + "Application " + + "CallType " + + "ComponentTokens " + + "CreatedJobs " + + "CreatedNotices " + + "ControlState " + + "DialogResult " + + "Dialogs " + + "EDocuments " + + "EDocumentVersionSource " + + "Folders " + + "GlobalIDs " + + "Job " + + "Jobs " + + "InputValue " + + "LookUpReference " + + "LookUpRequisiteNames " + + "LookUpSearch " + + "Object " + + "ParentComponent " + + "Processes " + + "References " + + "Requisite " + + "ReportName " + + "Reports " + + "Result " + + "Scripts " + + "Searches " + + "SelectedAttachments " + + "SelectedItems " + + "SelectMode " + + "Sender " + + "ServerEvents " + + "ServiceFactory " + + "ShiftState " + + "SubTask " + + "SystemDialogs " + + "Tasks " + + "Wizard " + + "Wizards " + + "Work " + + "ВызовСпособ " + + "ИмяОтчета " + + "РеквЗнач "; + + // Интерфейсы ==> type + const interfaces = + "IApplication " + + "IAccessRights " + + "IAccountRepository " + + "IAccountSelectionRestrictions " + + "IAction " + + "IActionList " + + "IAdministrationHistoryDescription " + + "IAnchors " + + "IApplication " + + "IArchiveInfo " + + "IAttachment " + + "IAttachmentList " + + "ICheckListBox " + + "ICheckPointedList " + + "IColumn " + + "IComponent " + + "IComponentDescription " + + "IComponentToken " + + "IComponentTokenFactory " + + "IComponentTokenInfo " + + "ICompRecordInfo " + + "IConnection " + + "IContents " + + "IControl " + + "IControlJob " + + "IControlJobInfo " + + "IControlList " + + "ICrypto " + + "ICrypto2 " + + "ICustomJob " + + "ICustomJobInfo " + + "ICustomListBox " + + "ICustomObjectWizardStep " + + "ICustomWork " + + "ICustomWorkInfo " + + "IDataSet " + + "IDataSetAccessInfo " + + "IDataSigner " + + "IDateCriterion " + + "IDateRequisite " + + "IDateRequisiteDescription " + + "IDateValue " + + "IDeaAccessRights " + + "IDeaObjectInfo " + + "IDevelopmentComponentLock " + + "IDialog " + + "IDialogFactory " + + "IDialogPickRequisiteItems " + + "IDialogsFactory " + + "IDICSFactory " + + "IDocRequisite " + + "IDocumentInfo " + + "IDualListDialog " + + "IECertificate " + + "IECertificateInfo " + + "IECertificates " + + "IEditControl " + + "IEditorForm " + + "IEdmsExplorer " + + "IEdmsObject " + + "IEdmsObjectDescription " + + "IEdmsObjectFactory " + + "IEdmsObjectInfo " + + "IEDocument " + + "IEDocumentAccessRights " + + "IEDocumentDescription " + + "IEDocumentEditor " + + "IEDocumentFactory " + + "IEDocumentInfo " + + "IEDocumentStorage " + + "IEDocumentVersion " + + "IEDocumentVersionListDialog " + + "IEDocumentVersionSource " + + "IEDocumentWizardStep " + + "IEDocVerSignature " + + "IEDocVersionState " + + "IEnabledMode " + + "IEncodeProvider " + + "IEncrypter " + + "IEvent " + + "IEventList " + + "IException " + + "IExternalEvents " + + "IExternalHandler " + + "IFactory " + + "IField " + + "IFileDialog " + + "IFolder " + + "IFolderDescription " + + "IFolderDialog " + + "IFolderFactory " + + "IFolderInfo " + + "IForEach " + + "IForm " + + "IFormTitle " + + "IFormWizardStep " + + "IGlobalIDFactory " + + "IGlobalIDInfo " + + "IGrid " + + "IHasher " + + "IHistoryDescription " + + "IHyperLinkControl " + + "IImageButton " + + "IImageControl " + + "IInnerPanel " + + "IInplaceHint " + + "IIntegerCriterion " + + "IIntegerList " + + "IIntegerRequisite " + + "IIntegerValue " + + "IISBLEditorForm " + + "IJob " + + "IJobDescription " + + "IJobFactory " + + "IJobForm " + + "IJobInfo " + + "ILabelControl " + + "ILargeIntegerCriterion " + + "ILargeIntegerRequisite " + + "ILargeIntegerValue " + + "ILicenseInfo " + + "ILifeCycleStage " + + "IList " + + "IListBox " + + "ILocalIDInfo " + + "ILocalization " + + "ILock " + + "IMemoryDataSet " + + "IMessagingFactory " + + "IMetadataRepository " + + "INotice " + + "INoticeInfo " + + "INumericCriterion " + + "INumericRequisite " + + "INumericValue " + + "IObject " + + "IObjectDescription " + + "IObjectImporter " + + "IObjectInfo " + + "IObserver " + + "IPanelGroup " + + "IPickCriterion " + + "IPickProperty " + + "IPickRequisite " + + "IPickRequisiteDescription " + + "IPickRequisiteItem " + + "IPickRequisiteItems " + + "IPickValue " + + "IPrivilege " + + "IPrivilegeList " + + "IProcess " + + "IProcessFactory " + + "IProcessMessage " + + "IProgress " + + "IProperty " + + "IPropertyChangeEvent " + + "IQuery " + + "IReference " + + "IReferenceCriterion " + + "IReferenceEnabledMode " + + "IReferenceFactory " + + "IReferenceHistoryDescription " + + "IReferenceInfo " + + "IReferenceRecordCardWizardStep " + + "IReferenceRequisiteDescription " + + "IReferencesFactory " + + "IReferenceValue " + + "IRefRequisite " + + "IReport " + + "IReportFactory " + + "IRequisite " + + "IRequisiteDescription " + + "IRequisiteDescriptionList " + + "IRequisiteFactory " + + "IRichEdit " + + "IRouteStep " + + "IRule " + + "IRuleList " + + "ISchemeBlock " + + "IScript " + + "IScriptFactory " + + "ISearchCriteria " + + "ISearchCriterion " + + "ISearchDescription " + + "ISearchFactory " + + "ISearchFolderInfo " + + "ISearchForObjectDescription " + + "ISearchResultRestrictions " + + "ISecuredContext " + + "ISelectDialog " + + "IServerEvent " + + "IServerEventFactory " + + "IServiceDialog " + + "IServiceFactory " + + "ISignature " + + "ISignProvider " + + "ISignProvider2 " + + "ISignProvider3 " + + "ISimpleCriterion " + + "IStringCriterion " + + "IStringList " + + "IStringRequisite " + + "IStringRequisiteDescription " + + "IStringValue " + + "ISystemDialogsFactory " + + "ISystemInfo " + + "ITabSheet " + + "ITask " + + "ITaskAbortReasonInfo " + + "ITaskCardWizardStep " + + "ITaskDescription " + + "ITaskFactory " + + "ITaskInfo " + + "ITaskRoute " + + "ITextCriterion " + + "ITextRequisite " + + "ITextValue " + + "ITreeListSelectDialog " + + "IUser " + + "IUserList " + + "IValue " + + "IView " + + "IWebBrowserControl " + + "IWizard " + + "IWizardAction " + + "IWizardFactory " + + "IWizardFormElement " + + "IWizardParam " + + "IWizardPickParam " + + "IWizardReferenceParam " + + "IWizardStep " + + "IWorkAccessRights " + + "IWorkDescription " + + "IWorkflowAskableParam " + + "IWorkflowAskableParams " + + "IWorkflowBlock " + + "IWorkflowBlockResult " + + "IWorkflowEnabledMode " + + "IWorkflowParam " + + "IWorkflowPickParam " + + "IWorkflowReferenceParam " + + "IWorkState " + + "IWorkTreeCustomNode " + + "IWorkTreeJobNode " + + "IWorkTreeTaskNode " + + "IXMLEditorForm " + + "SBCrypto "; + + // built_in : встроенные или библиотечные объекты (константы, перечисления) + const BUILTIN = CONSTANTS + ENUMS; + + // class: встроенные наборы значений, системные объекты, фабрики + const CLASS = predefined_variables; + + // literal : примитивные типы + const LITERAL = "null true false nil "; + + // number : числа + const NUMBERS = { + className: "number", + begin: hljs.NUMBER_RE, + relevance: 0 + }; + + // string : строки + const STRINGS = { + className: "string", + variants: [ + { + begin: '"', + end: '"' + }, + { + begin: "'", + end: "'" + } + ] + }; + + // Токены + const DOCTAGS = { + className: "doctag", + begin: "\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b", + relevance: 0 + }; + + // Однострочный комментарий + const ISBL_LINE_COMMENT_MODE = { + className: "comment", + begin: "//", + end: "$", + relevance: 0, + contains: [ + hljs.PHRASAL_WORDS_MODE, + DOCTAGS + ] + }; + + // Многострочный комментарий + const ISBL_BLOCK_COMMENT_MODE = { + className: "comment", + begin: "/\\*", + end: "\\*/", + relevance: 0, + contains: [ + hljs.PHRASAL_WORDS_MODE, + DOCTAGS + ] + }; + + // comment : комментарии + const COMMENTS = { variants: [ + ISBL_LINE_COMMENT_MODE, + ISBL_BLOCK_COMMENT_MODE + ] }; + + // keywords : ключевые слова + const KEYWORDS = { + $pattern: UNDERSCORE_IDENT_RE, + keyword: KEYWORD, + built_in: BUILTIN, + class: CLASS, + literal: LITERAL + }; + + // methods : методы + const METHODS = { + begin: "\\.\\s*" + hljs.UNDERSCORE_IDENT_RE, + keywords: KEYWORDS, + relevance: 0 + }; + + // type : встроенные типы + const TYPES = { + className: "type", + begin: ":[ \\t]*(" + interfaces.trim().replace(/\s/g, "|") + ")", + end: "[ \\t]*=", + excludeEnd: true + }; + + // variables : переменные + const VARIABLES = { + className: "variable", + keywords: KEYWORDS, + begin: UNDERSCORE_IDENT_RE, + relevance: 0, + contains: [ + TYPES, + METHODS + ] + }; + + // Имена функций + const FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + "\\("; + + const TITLE_MODE = { + className: "title", + keywords: { + $pattern: UNDERSCORE_IDENT_RE, + built_in: system_functions + }, + begin: FUNCTION_TITLE, + end: "\\(", + returnBegin: true, + excludeEnd: true + }; + + // function : функции + const FUNCTIONS = { + className: "function", + begin: FUNCTION_TITLE, + end: "\\)$", + returnBegin: true, + keywords: KEYWORDS, + illegal: "[\\[\\]\\|\\$\\?%,~#@]", + contains: [ + TITLE_MODE, + METHODS, + VARIABLES, + STRINGS, + NUMBERS, + COMMENTS + ] + }; + + return { + name: 'ISBL', + case_insensitive: true, + keywords: KEYWORDS, + illegal: "\\$|\\?|%|,|;$|~|#|@| +Category: common, enterprise +Website: https://www.java.com/ +*/ + + +/** + * Allows recursive regex expressions to a given depth + * + * ie: recurRegex("(abc~~~)", /~~~/g, 2) becomes: + * (abc(abc(abc))) + * + * @param {string} re + * @param {RegExp} substitution (should be a g mode regex) + * @param {number} depth + * @returns {string}`` + */ +function recurRegex(re, substitution, depth) { + if (depth === -1) return ""; + + return re.replace(substitution, _ => { + return recurRegex(re, substitution, depth - 1); + }); +} + +/** @type LanguageFn */ +function java(hljs) { + const regex = hljs.regex; + const JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*'; + const GENERIC_IDENT_RE = JAVA_IDENT_RE + + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\s*,\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2); + const MAIN_KEYWORDS = [ + 'synchronized', + 'abstract', + 'private', + 'var', + 'static', + 'if', + 'const ', + 'for', + 'while', + 'strictfp', + 'finally', + 'protected', + 'import', + 'native', + 'final', + 'void', + 'enum', + 'else', + 'break', + 'transient', + 'catch', + 'instanceof', + 'volatile', + 'case', + 'assert', + 'package', + 'default', + 'public', + 'try', + 'switch', + 'continue', + 'throws', + 'protected', + 'public', + 'private', + 'module', + 'requires', + 'exports', + 'do', + 'sealed', + 'yield', + 'permits', + 'goto', + 'when' + ]; + + const BUILT_INS = [ + 'super', + 'this' + ]; + + const LITERALS = [ + 'false', + 'true', + 'null' + ]; + + const TYPES = [ + 'char', + 'boolean', + 'long', + 'float', + 'int', + 'byte', + 'short', + 'double' + ]; + + const KEYWORDS = { + keyword: MAIN_KEYWORDS, + literal: LITERALS, + type: TYPES, + built_in: BUILT_INS + }; + + const ANNOTATION = { + className: 'meta', + begin: '@' + JAVA_IDENT_RE, + contains: [ + { + begin: /\(/, + end: /\)/, + contains: [ "self" ] // allow nested () inside our annotation + } + ] + }; + const PARAMS = { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + relevance: 0, + contains: [ hljs.C_BLOCK_COMMENT_MODE ], + endsParent: true + }; + + return { + name: 'Java', + aliases: [ 'jsp' ], + keywords: KEYWORDS, + illegal: /<\/|#/, + contains: [ + hljs.COMMENT( + '/\\*\\*', + '\\*/', + { + relevance: 0, + contains: [ + { + // eat up @'s in emails to prevent them to be recognized as doctags + begin: /\w+@/, + relevance: 0 + }, + { + className: 'doctag', + begin: '@[A-Za-z]+' + } + ] + } + ), + // relevance boost + { + begin: /import java\.[a-z]+\./, + keywords: "import", + relevance: 2 + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + begin: /"""/, + end: /"""/, + className: "string", + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + match: [ + /\b(?:class|interface|enum|extends|implements|new)/, + /\s+/, + JAVA_IDENT_RE + ], + className: { + 1: "keyword", + 3: "title.class" + } + }, + { + // Exceptions for hyphenated keywords + match: /non-sealed/, + scope: "keyword" + }, + { + begin: [ + regex.concat(/(?!else)/, JAVA_IDENT_RE), + /\s+/, + JAVA_IDENT_RE, + /\s+/, + /=(?!=)/ + ], + className: { + 1: "type", + 3: "variable", + 5: "operator" + } + }, + { + begin: [ + /record/, + /\s+/, + JAVA_IDENT_RE + ], + className: { + 1: "keyword", + 3: "title.class" + }, + contains: [ + PARAMS, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + // Expression keywords prevent 'keyword Name(...)' from being + // recognized as a function definition + beginKeywords: 'new throw return else', + relevance: 0 + }, + { + begin: [ + '(?:' + GENERIC_IDENT_RE + '\\s+)', + hljs.UNDERSCORE_IDENT_RE, + /\s*(?=\()/ + ], + className: { 2: "title.function" }, + keywords: KEYWORDS, + contains: [ + { + className: 'params', + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + relevance: 0, + contains: [ + ANNOTATION, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + NUMERIC, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + NUMERIC, + ANNOTATION + ] + }; +} + +module.exports = java; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/javascript.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/javascript.js ***! + \*******************************************************************/ +(module) { + +const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; +const KEYWORDS = [ + "as", // for exports + "in", + "of", + "if", + "for", + "while", + "finally", + "var", + "new", + "function", + "do", + "return", + "void", + "else", + "break", + "catch", + "instanceof", + "with", + "throw", + "case", + "default", + "try", + "switch", + "continue", + "typeof", + "delete", + "let", + "yield", + "const", + "class", + // JS handles these with a special rule + // "get", + // "set", + "debugger", + "async", + "await", + "static", + "import", + "from", + "export", + "extends", + // It's reached stage 3, which is "recommended for implementation": + "using" +]; +const LITERALS = [ + "true", + "false", + "null", + "undefined", + "NaN", + "Infinity" +]; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects +const TYPES = [ + // Fundamental objects + "Object", + "Function", + "Boolean", + "Symbol", + // numbers and dates + "Math", + "Date", + "Number", + "BigInt", + // text + "String", + "RegExp", + // Indexed collections + "Array", + "Float32Array", + "Float64Array", + "Int8Array", + "Uint8Array", + "Uint8ClampedArray", + "Int16Array", + "Int32Array", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array", + // Keyed collections + "Set", + "Map", + "WeakSet", + "WeakMap", + // Structured data + "ArrayBuffer", + "SharedArrayBuffer", + "Atomics", + "DataView", + "JSON", + // Control abstraction objects + "Promise", + "Generator", + "GeneratorFunction", + "AsyncFunction", + // Reflection + "Reflect", + "Proxy", + // Internationalization + "Intl", + // WebAssembly + "WebAssembly" +]; + +const ERROR_TYPES = [ + "Error", + "EvalError", + "InternalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" +]; + +const BUILT_IN_GLOBALS = [ + "setInterval", + "setTimeout", + "clearInterval", + "clearTimeout", + + "require", + "exports", + + "eval", + "isFinite", + "isNaN", + "parseFloat", + "parseInt", + "decodeURI", + "decodeURIComponent", + "encodeURI", + "encodeURIComponent", + "escape", + "unescape" +]; + +const BUILT_IN_VARIABLES = [ + "arguments", + "this", + "super", + "console", + "window", + "document", + "localStorage", + "sessionStorage", + "module", + "global" // Node.js +]; + +const BUILT_INS = [].concat( + BUILT_IN_GLOBALS, + TYPES, + ERROR_TYPES +); + +/* +Language: JavaScript +Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions. +Category: common, scripting, web +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript +*/ + + +/** @type LanguageFn */ +function javascript(hljs) { + const regex = hljs.regex; + /** + * Takes a string like " { + const tag = "', + end: '' + }; + // to avoid some special cases inside isTrulyOpeningTag + const XML_SELF_CLOSING = /<[A-Za-z0-9\\._:-]+\s*\/>/; + const XML_TAG = { + begin: /<[A-Za-z0-9\\._:-]+/, + end: /\/[A-Za-z0-9\\._:-]+>|\/>/, + /** + * @param {RegExpMatchArray} match + * @param {CallbackResponse} response + */ + isTrulyOpeningTag: (match, response) => { + const afterMatchIndex = match[0].length + match.index; + const nextChar = match.input[afterMatchIndex]; + if ( + // HTML should not include another raw `<` inside a tag + // nested type? + // `>`, etc. + nextChar === "<" || + // the , gives away that this is not HTML + // `` + nextChar === "," + ) { + response.ignoreMatch(); + return; + } + + // `` + // Quite possibly a tag, lets look for a matching closing tag... + if (nextChar === ">") { + // if we cannot find a matching closing tag, then we + // will ignore it + if (!hasClosingTag(match, { after: afterMatchIndex })) { + response.ignoreMatch(); + } + } + + // `` (self-closing) + // handled by simpleSelfClosing rule + + let m; + const afterMatch = match.input.substring(afterMatchIndex); + + // some more template typing stuff + // (key?: string) => Modify< + if ((m = afterMatch.match(/^\s*=/))) { + response.ignoreMatch(); + return; + } + + // `` + // technically this could be HTML, but it smells like a type + // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276 + if ((m = afterMatch.match(/^\s+extends\s+/))) { + if (m.index === 0) { + response.ignoreMatch(); + // eslint-disable-next-line no-useless-return + return; + } + } + } + }; + const KEYWORDS$1 = { + $pattern: IDENT_RE, + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILT_INS, + "variable.language": BUILT_IN_VARIABLES + }; + + // https://tc39.es/ecma262/#sec-literals-numeric-literals + const decimalDigits = '[0-9](_?[0-9])*'; + const frac = `\\.(${decimalDigits})`; + // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral + // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals + const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`; + const NUMBER = { + className: 'number', + variants: [ + // DecimalLiteral + { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` + + `[eE][+-]?(${decimalDigits})\\b` }, + { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` }, + + // DecimalBigIntegerLiteral + { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` }, + + // NonDecimalIntegerLiteral + { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, + { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, + { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, + + // LegacyOctalIntegerLiteral (does not include underscore separators) + // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals + { begin: "\\b0[0-7]+n?\\b" }, + ], + relevance: 0 + }; + + const SUBST = { + className: 'subst', + begin: '\\$\\{', + end: '\\}', + keywords: KEYWORDS$1, + contains: [] // defined later + }; + const HTML_TEMPLATE = { + begin: '\.?html`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'xml' + } + }; + const CSS_TEMPLATE = { + begin: '\.?css`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'css' + } + }; + const GRAPHQL_TEMPLATE = { + begin: '\.?gql`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'graphql' + } + }; + const TEMPLATE_STRING = { + className: 'string', + begin: '`', + end: '`', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }; + const JSDOC_COMMENT = hljs.COMMENT( + /\/\*\*(?!\/)/, + '\\*/', + { + relevance: 0, + contains: [ + { + begin: '(?=@[A-Za-z]+)', + relevance: 0, + contains: [ + { + className: 'doctag', + begin: '@[A-Za-z]+' + }, + { + className: 'type', + begin: '\\{', + end: '\\}', + excludeEnd: true, + excludeBegin: true, + relevance: 0 + }, + { + className: 'variable', + begin: IDENT_RE$1 + '(?=\\s*(-)|$)', + endsParent: true, + relevance: 0 + }, + // eat spaces (not newlines) so we can find + // types or variables + { + begin: /(?=[^\n])\s/, + relevance: 0 + } + ] + } + ] + } + ); + const COMMENT = { + className: "comment", + variants: [ + JSDOC_COMMENT, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_LINE_COMMENT_MODE + ] + }; + const SUBST_INTERNALS = [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + HTML_TEMPLATE, + CSS_TEMPLATE, + GRAPHQL_TEMPLATE, + TEMPLATE_STRING, + // Skip numbers when they are part of a variable name + { match: /\$\d+/ }, + NUMBER, + // This is intentional: + // See https://github.com/highlightjs/highlight.js/issues/3288 + // hljs.REGEXP_MODE + ]; + SUBST.contains = SUBST_INTERNALS + .concat({ + // we need to pair up {} inside our subst to prevent + // it from ending too early by matching another } + begin: /\{/, + end: /\}/, + keywords: KEYWORDS$1, + contains: [ + "self" + ].concat(SUBST_INTERNALS) + }); + const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains); + const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([ + // eat recursive parens in sub expressions + { + begin: /(\s*)\(/, + end: /\)/, + keywords: KEYWORDS$1, + contains: ["self"].concat(SUBST_AND_COMMENTS) + } + ]); + const PARAMS = { + className: 'params', + // convert this to negative lookbehind in v12 + begin: /(\s*)\(/, // to match the parms with + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS$1, + contains: PARAMS_CONTAINS + }; + + // ES6 classes + const CLASS_OR_EXTENDS = { + variants: [ + // class Car extends vehicle + { + match: [ + /class/, + /\s+/, + IDENT_RE$1, + /\s+/, + /extends/, + /\s+/, + regex.concat(IDENT_RE$1, "(", regex.concat(/\./, IDENT_RE$1), ")*") + ], + scope: { + 1: "keyword", + 3: "title.class", + 5: "keyword", + 7: "title.class.inherited" + } + }, + // class Car + { + match: [ + /class/, + /\s+/, + IDENT_RE$1 + ], + scope: { + 1: "keyword", + 3: "title.class" + } + }, + + ] + }; + + const CLASS_REFERENCE = { + relevance: 0, + match: + regex.either( + // Hard coded exceptions + /\bJSON/, + // Float32Array, OutT + /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, + // CSSFactory, CSSFactoryT + /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, + // FPs, FPsT + /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/, + // P + // single letters are not highlighted + // BLAH + // this will be flagged as a UPPER_CASE_CONSTANT instead + ), + className: "title.class", + keywords: { + _: [ + // se we still get relevance credit for JS library classes + ...TYPES, + ...ERROR_TYPES + ] + } + }; + + const USE_STRICT = { + label: "use_strict", + className: 'meta', + relevance: 10, + begin: /^\s*['"]use (strict|asm)['"]/ + }; + + const FUNCTION_DEFINITION = { + variants: [ + { + match: [ + /function/, + /\s+/, + IDENT_RE$1, + /(?=\s*\()/ + ] + }, + // anonymous function + { + match: [ + /function/, + /\s*(?=\()/ + ] + } + ], + className: { + 1: "keyword", + 3: "title.function" + }, + label: "func.def", + contains: [ PARAMS ], + illegal: /%/ + }; + + const UPPER_CASE_CONSTANT = { + relevance: 0, + match: /\b[A-Z][A-Z_0-9]+\b/, + className: "variable.constant" + }; + + function noneOf(list) { + return regex.concat("(?!", list.join("|"), ")"); + } + + const FUNCTION_CALL = { + match: regex.concat( + /\b/, + noneOf([ + ...BUILT_IN_GLOBALS, + "super", + "import" + ].map(x => `${x}\\s*\\(`)), + IDENT_RE$1, regex.lookahead(/\s*\(/)), + className: "title.function", + relevance: 0 + }; + + const PROPERTY_ACCESS = { + begin: regex.concat(/\./, regex.lookahead( + regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/) + )), + end: IDENT_RE$1, + excludeBegin: true, + keywords: "prototype", + className: "property", + relevance: 0 + }; + + const GETTER_OR_SETTER = { + match: [ + /get|set/, + /\s+/, + IDENT_RE$1, + /(?=\()/ + ], + className: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + { // eat to avoid empty params + begin: /\(\)/ + }, + PARAMS + ] + }; + + const FUNC_LEAD_IN_RE = '(\\(' + + '[^()]*(\\(' + + '[^()]*(\\(' + + '[^()]*' + + '\\)[^()]*)*' + + '\\)[^()]*)*' + + '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>'; + + const FUNCTION_VARIABLE = { + match: [ + /const|var|let/, /\s+/, + IDENT_RE$1, /\s*/, + /=\s*/, + /(async\s*)?/, // async is optional + regex.lookahead(FUNC_LEAD_IN_RE) + ], + keywords: "async", + className: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + PARAMS + ] + }; + + return { + name: 'JavaScript', + aliases: ['js', 'jsx', 'mjs', 'cjs'], + keywords: KEYWORDS$1, + // this will be extended by TypeScript + exports: { PARAMS_CONTAINS, CLASS_REFERENCE }, + illegal: /#(?![$_A-z])/, + contains: [ + hljs.SHEBANG({ + label: "shebang", + binary: "node", + relevance: 5 + }), + USE_STRICT, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + HTML_TEMPLATE, + CSS_TEMPLATE, + GRAPHQL_TEMPLATE, + TEMPLATE_STRING, + COMMENT, + // Skip numbers when they are part of a variable name + { match: /\$\d+/ }, + NUMBER, + CLASS_REFERENCE, + { + scope: 'attr', + match: IDENT_RE$1 + regex.lookahead(':'), + relevance: 0 + }, + FUNCTION_VARIABLE, + { // "value" container + begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', + keywords: 'return throw case', + relevance: 0, + contains: [ + COMMENT, + hljs.REGEXP_MODE, + { + className: 'function', + // we have to count the parens to make sure we actually have the + // correct bounding ( ) before the =>. There could be any number of + // sub-expressions inside also surrounded by parens. + begin: FUNC_LEAD_IN_RE, + returnBegin: true, + end: '\\s*=>', + contains: [ + { + className: 'params', + variants: [ + { + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }, + { + className: null, + begin: /\(\s*\)/, + skip: true + }, + { + begin: /(\s*)\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS$1, + contains: PARAMS_CONTAINS + } + ] + } + ] + }, + { // could be a comma delimited list of params to a function call + begin: /,/, + relevance: 0 + }, + { + match: /\s+/, + relevance: 0 + }, + { // JSX + variants: [ + { begin: FRAGMENT.begin, end: FRAGMENT.end }, + { match: XML_SELF_CLOSING }, + { + begin: XML_TAG.begin, + // we carefully check the opening tag to see if it truly + // is a tag and not a false positive + 'on:begin': XML_TAG.isTrulyOpeningTag, + end: XML_TAG.end + } + ], + subLanguage: 'xml', + contains: [ + { + begin: XML_TAG.begin, + end: XML_TAG.end, + skip: true, + contains: ['self'] + } + ] + } + ], + }, + FUNCTION_DEFINITION, + { + // prevent this from getting swallowed up by function + // since they appear "function like" + beginKeywords: "while if switch catch for" + }, + { + // we have to count the parens to make sure we actually have the correct + // bounding ( ). There could be any number of sub-expressions inside + // also surrounded by parens. + begin: '\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE + + '\\(' + // first parens + '[^()]*(\\(' + + '[^()]*(\\(' + + '[^()]*' + + '\\)[^()]*)*' + + '\\)[^()]*)*' + + '\\)\\s*\\{', // end parens + returnBegin:true, + label: "func.def", + contains: [ + PARAMS, + hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" }) + ] + }, + // catch ... so it won't trigger the property rule below + { + match: /\.\.\./, + relevance: 0 + }, + PROPERTY_ACCESS, + // hack: prevents detection of keywords in some circumstances + // .keyword() + // $keyword = x + { + match: '\\$' + IDENT_RE$1, + relevance: 0 + }, + { + match: [ /\bconstructor(?=\s*\()/ ], + className: { 1: "title.function" }, + contains: [ PARAMS ] + }, + FUNCTION_CALL, + UPPER_CASE_CONSTANT, + CLASS_OR_EXTENDS, + GETTER_OR_SETTER, + { + match: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something` + } + ] + }; +} + +module.exports = javascript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/jboss-cli.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/jboss-cli.js ***! + \******************************************************************/ +(module) { + +/* + Language: JBoss CLI + Author: Raphaël Parrëe + Description: language definition jboss cli + Website: https://docs.jboss.org/author/display/WFLY/Command+Line+Interface + Category: config + */ + +function jbossCli(hljs) { + const PARAM = { + begin: /[\w-]+ *=/, + returnBegin: true, + relevance: 0, + contains: [ + { + className: 'attr', + begin: /[\w-]+/ + } + ] + }; + const PARAMSBLOCK = { + className: 'params', + begin: /\(/, + end: /\)/, + contains: [ PARAM ], + relevance: 0 + }; + const OPERATION = { + className: 'function', + begin: /:[\w\-.]+/, + relevance: 0 + }; + const PATH = { + className: 'string', + begin: /\B([\/.])[\w\-.\/=]+/ + }; + const COMMAND_PARAMS = { + className: 'params', + begin: /--[\w\-=\/]+/ + }; + return { + name: 'JBoss CLI', + aliases: [ 'wildfly-cli' ], + keywords: { + $pattern: '[a-z\-]+', + keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' + + 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' + + 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' + + 'undeploy unset version xa-data-source', // module + literal: 'true false' + }, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + COMMAND_PARAMS, + OPERATION, + PATH, + PARAMSBLOCK + ] + }; +} + +module.exports = jbossCli; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/json.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/json.js ***! + \*************************************************************/ +(module) { + +/* +Language: JSON +Description: JSON (JavaScript Object Notation) is a lightweight data-interchange format. +Author: Ivan Sagalaev +Website: http://www.json.org +Category: common, protocols, web +*/ + +function json(hljs) { + const ATTRIBUTE = { + className: 'attr', + begin: /"(\\.|[^\\"\r\n])*"(?=\s*:)/, + relevance: 1.01 + }; + const PUNCTUATION = { + match: /[{}[\],:]/, + className: "punctuation", + relevance: 0 + }; + const LITERALS = [ + "true", + "false", + "null" + ]; + // NOTE: normally we would rely on `keywords` for this but using a mode here allows us + // - to use the very tight `illegal: \S` rule later to flag any other character + // - as illegal indicating that despite looking like JSON we do not truly have + // - JSON and thus improve false-positively greatly since JSON will try and claim + // - all sorts of JSON looking stuff + const LITERALS_MODE = { + scope: "literal", + beginKeywords: LITERALS.join(" "), + }; + + return { + name: 'JSON', + aliases: ['jsonc'], + keywords:{ + literal: LITERALS, + }, + contains: [ + ATTRIBUTE, + PUNCTUATION, + hljs.QUOTE_STRING_MODE, + LITERALS_MODE, + hljs.C_NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ], + illegal: '\\S' + }; +} + +module.exports = json; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/julia-repl.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/julia-repl.js ***! + \*******************************************************************/ +(module) { + +/* +Language: Julia REPL +Description: Julia REPL sessions +Author: Morten Piibeleht +Website: https://julialang.org +Requires: julia.js +Category: scientific + +The Julia REPL code blocks look something like the following: + + julia> function foo(x) + x + 1 + end + foo (generic function with 1 method) + +They start on a new line with "julia>". Usually there should also be a space after this, but +we also allow the code to start right after the > character. The code may run over multiple +lines, but the additional lines must start with six spaces (i.e. be indented to match +"julia>"). The rest of the code is assumed to be output from the executed code and will be +left un-highlighted. + +Using simply spaces to identify line continuations may get a false-positive if the output +also prints out six spaces, but such cases should be rare. +*/ + +function juliaRepl(hljs) { + return { + name: 'Julia REPL', + contains: [ + { + className: 'meta.prompt', + begin: /^julia>/, + relevance: 10, + starts: { + // end the highlighting if we are on a new line and the line does not have at + // least six spaces in the beginning + end: /^(?![ ]{6})/, + subLanguage: 'julia' + }, + }, + ], + // jldoctest Markdown blocks are used in the Julia manual and package docs indicate + // code snippets that should be verified when the documentation is built. They can be + // either REPL-like or script-like, but are usually REPL-like and therefore we apply + // julia-repl highlighting to them. More information can be found in Documenter's + // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html + aliases: [ 'jldoctest' ], + }; +} + +module.exports = juliaRepl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/julia.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/julia.js ***! + \**************************************************************/ +(module) { + +/* +Language: Julia +Description: Julia is a high-level, high-performance, dynamic programming language. +Author: Kenta Sato +Contributors: Alex Arslan , Fredrik Ekre +Website: https://julialang.org +Category: scientific +*/ + +function julia(hljs) { + // Since there are numerous special names in Julia, it is too much trouble + // to maintain them by hand. Hence these names (i.e. keywords, literals and + // built-ins) are automatically generated from Julia 1.5.2 itself through + // the following scripts for each. + + // ref: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names + const VARIABLE_NAME_RE = '[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*'; + + // # keyword generator, multi-word keywords handled manually below (Julia 1.5.2) + // import REPL.REPLCompletions + // res = String["in", "isa", "where"] + // for kw in collect(x.keyword for x in REPLCompletions.complete_keyword("")) + // if !(contains(kw, " ") || kw == "struct") + // push!(res, kw) + // end + // end + // sort!(unique!(res)) + // foreach(x -> println("\'", x, "\',"), res) + const KEYWORD_LIST = [ + 'baremodule', + 'begin', + 'break', + 'catch', + 'ccall', + 'const', + 'continue', + 'do', + 'else', + 'elseif', + 'end', + 'export', + 'false', + 'finally', + 'for', + 'function', + 'global', + 'if', + 'import', + 'in', + 'isa', + 'let', + 'local', + 'macro', + 'module', + 'quote', + 'return', + 'true', + 'try', + 'using', + 'where', + 'while', + ]; + + // # literal generator (Julia 1.5.2) + // import REPL.REPLCompletions + // res = String["true", "false"] + // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core), + // REPLCompletions.completions("", 0)[1]) + // try + // v = eval(Symbol(compl.mod)) + // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon) + // push!(res, compl.mod) + // end + // catch e + // end + // end + // sort!(unique!(res)) + // foreach(x -> println("\'", x, "\',"), res) + const LITERAL_LIST = [ + 'ARGS', + 'C_NULL', + 'DEPOT_PATH', + 'ENDIAN_BOM', + 'ENV', + 'Inf', + 'Inf16', + 'Inf32', + 'Inf64', + 'InsertionSort', + 'LOAD_PATH', + 'MergeSort', + 'NaN', + 'NaN16', + 'NaN32', + 'NaN64', + 'PROGRAM_FILE', + 'QuickSort', + 'RoundDown', + 'RoundFromZero', + 'RoundNearest', + 'RoundNearestTiesAway', + 'RoundNearestTiesUp', + 'RoundToZero', + 'RoundUp', + 'VERSION|0', + 'devnull', + 'false', + 'im', + 'missing', + 'nothing', + 'pi', + 'stderr', + 'stdin', + 'stdout', + 'true', + 'undef', + 'π', + 'ℯ', + ]; + + // # built_in generator (Julia 1.5.2) + // import REPL.REPLCompletions + // res = String[] + // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core), + // REPLCompletions.completions("", 0)[1]) + // try + // v = eval(Symbol(compl.mod)) + // if (v isa Type || v isa TypeVar) && (compl.mod != "=>") + // push!(res, compl.mod) + // end + // catch e + // end + // end + // sort!(unique!(res)) + // foreach(x -> println("\'", x, "\',"), res) + const BUILT_IN_LIST = [ + 'AbstractArray', + 'AbstractChannel', + 'AbstractChar', + 'AbstractDict', + 'AbstractDisplay', + 'AbstractFloat', + 'AbstractIrrational', + 'AbstractMatrix', + 'AbstractRange', + 'AbstractSet', + 'AbstractString', + 'AbstractUnitRange', + 'AbstractVecOrMat', + 'AbstractVector', + 'Any', + 'ArgumentError', + 'Array', + 'AssertionError', + 'BigFloat', + 'BigInt', + 'BitArray', + 'BitMatrix', + 'BitSet', + 'BitVector', + 'Bool', + 'BoundsError', + 'CapturedException', + 'CartesianIndex', + 'CartesianIndices', + 'Cchar', + 'Cdouble', + 'Cfloat', + 'Channel', + 'Char', + 'Cint', + 'Cintmax_t', + 'Clong', + 'Clonglong', + 'Cmd', + 'Colon', + 'Complex', + 'ComplexF16', + 'ComplexF32', + 'ComplexF64', + 'CompositeException', + 'Condition', + 'Cptrdiff_t', + 'Cshort', + 'Csize_t', + 'Cssize_t', + 'Cstring', + 'Cuchar', + 'Cuint', + 'Cuintmax_t', + 'Culong', + 'Culonglong', + 'Cushort', + 'Cvoid', + 'Cwchar_t', + 'Cwstring', + 'DataType', + 'DenseArray', + 'DenseMatrix', + 'DenseVecOrMat', + 'DenseVector', + 'Dict', + 'DimensionMismatch', + 'Dims', + 'DivideError', + 'DomainError', + 'EOFError', + 'Enum', + 'ErrorException', + 'Exception', + 'ExponentialBackOff', + 'Expr', + 'Float16', + 'Float32', + 'Float64', + 'Function', + 'GlobalRef', + 'HTML', + 'IO', + 'IOBuffer', + 'IOContext', + 'IOStream', + 'IdDict', + 'IndexCartesian', + 'IndexLinear', + 'IndexStyle', + 'InexactError', + 'InitError', + 'Int', + 'Int128', + 'Int16', + 'Int32', + 'Int64', + 'Int8', + 'Integer', + 'InterruptException', + 'InvalidStateException', + 'Irrational', + 'KeyError', + 'LinRange', + 'LineNumberNode', + 'LinearIndices', + 'LoadError', + 'MIME', + 'Matrix', + 'Method', + 'MethodError', + 'Missing', + 'MissingException', + 'Module', + 'NTuple', + 'NamedTuple', + 'Nothing', + 'Number', + 'OrdinalRange', + 'OutOfMemoryError', + 'OverflowError', + 'Pair', + 'PartialQuickSort', + 'PermutedDimsArray', + 'Pipe', + 'ProcessFailedException', + 'Ptr', + 'QuoteNode', + 'Rational', + 'RawFD', + 'ReadOnlyMemoryError', + 'Real', + 'ReentrantLock', + 'Ref', + 'Regex', + 'RegexMatch', + 'RoundingMode', + 'SegmentationFault', + 'Set', + 'Signed', + 'Some', + 'StackOverflowError', + 'StepRange', + 'StepRangeLen', + 'StridedArray', + 'StridedMatrix', + 'StridedVecOrMat', + 'StridedVector', + 'String', + 'StringIndexError', + 'SubArray', + 'SubString', + 'SubstitutionString', + 'Symbol', + 'SystemError', + 'Task', + 'TaskFailedException', + 'Text', + 'TextDisplay', + 'Timer', + 'Tuple', + 'Type', + 'TypeError', + 'TypeVar', + 'UInt', + 'UInt128', + 'UInt16', + 'UInt32', + 'UInt64', + 'UInt8', + 'UndefInitializer', + 'UndefKeywordError', + 'UndefRefError', + 'UndefVarError', + 'Union', + 'UnionAll', + 'UnitRange', + 'Unsigned', + 'Val', + 'Vararg', + 'VecElement', + 'VecOrMat', + 'Vector', + 'VersionNumber', + 'WeakKeyDict', + 'WeakRef', + ]; + + const KEYWORDS = { + $pattern: VARIABLE_NAME_RE, + keyword: KEYWORD_LIST, + literal: LITERAL_LIST, + built_in: BUILT_IN_LIST, + }; + + // placeholder for recursive self-reference + const DEFAULT = { + keywords: KEYWORDS, + illegal: /<\// + }; + + // ref: https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/ + const NUMBER = { + className: 'number', + // supported numeric literals: + // * binary literal (e.g. 0x10) + // * octal literal (e.g. 0o76543210) + // * hexadecimal literal (e.g. 0xfedcba876543210) + // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2) + // * decimal literal (e.g. 9876543210, 100_000_000) + // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10) + begin: /(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/, + relevance: 0 + }; + + const CHAR = { + className: 'string', + begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/ + }; + + const INTERPOLATION = { + className: 'subst', + begin: /\$\(/, + end: /\)/, + keywords: KEYWORDS + }; + + const INTERPOLATED_VARIABLE = { + className: 'variable', + begin: '\\$' + VARIABLE_NAME_RE + }; + + // TODO: neatly escape normal code in string literal + const STRING = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + INTERPOLATION, + INTERPOLATED_VARIABLE + ], + variants: [ + { + begin: /\w*"""/, + end: /"""\w*/, + relevance: 10 + }, + { + begin: /\w*"/, + end: /"\w*/ + } + ] + }; + + const COMMAND = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + INTERPOLATION, + INTERPOLATED_VARIABLE + ], + begin: '`', + end: '`' + }; + + const MACROCALL = { + className: 'meta', + begin: '@' + VARIABLE_NAME_RE + }; + + const COMMENT = { + className: 'comment', + variants: [ + { + begin: '#=', + end: '=#', + relevance: 10 + }, + { + begin: '#', + end: '$' + } + ] + }; + + DEFAULT.name = 'Julia'; + DEFAULT.contains = [ + NUMBER, + CHAR, + STRING, + COMMAND, + MACROCALL, + COMMENT, + hljs.HASH_COMMENT_MODE, + { + className: 'keyword', + begin: + '\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b' + }, + { begin: /<:/ } // relevance booster + ]; + INTERPOLATION.contains = DEFAULT.contains; + + return DEFAULT; +} + +module.exports = julia; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/kotlin.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/kotlin.js ***! + \***************************************************************/ +(module) { + +// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10 +var decimalDigits = '[0-9](_*[0-9])*'; +var frac = `\\.(${decimalDigits})`; +var hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*'; +var NUMERIC = { + className: 'number', + variants: [ + // DecimalFloatingPointLiteral + // including ExponentPart + { begin: `(\\b(${decimalDigits})((${frac})|\\.)?|(${frac}))` + + `[eE][+-]?(${decimalDigits})[fFdD]?\\b` }, + // excluding ExponentPart + { begin: `\\b(${decimalDigits})((${frac})[fFdD]?\\b|\\.([fFdD]\\b)?)` }, + { begin: `(${frac})[fFdD]?\\b` }, + { begin: `\\b(${decimalDigits})[fFdD]\\b` }, + + // HexadecimalFloatingPointLiteral + { begin: `\\b0[xX]((${hexDigits})\\.?|(${hexDigits})?\\.(${hexDigits}))` + + `[pP][+-]?(${decimalDigits})[fFdD]?\\b` }, + + // DecimalIntegerLiteral + { begin: '\\b(0|[1-9](_*[0-9])*)[lL]?\\b' }, + + // HexIntegerLiteral + { begin: `\\b0[xX](${hexDigits})[lL]?\\b` }, + + // OctalIntegerLiteral + { begin: '\\b0(_*[0-7])*[lL]?\\b' }, + + // BinaryIntegerLiteral + { begin: '\\b0[bB][01](_*[01])*[lL]?\\b' }, + ], + relevance: 0 +}; + +/* + Language: Kotlin + Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native. + Author: Sergey Mashkov + Website: https://kotlinlang.org + Category: common + */ + + +function kotlin(hljs) { + const KEYWORDS = { + keyword: + 'abstract as val var vararg get set class object open private protected public noinline ' + + 'crossinline dynamic final enum if else do while for when throw try catch finally ' + + 'import package is in fun override companion reified inline lateinit init ' + + 'interface annotation data sealed internal infix operator out by constructor super ' + + 'tailrec where const inner suspend typealias external expect actual', + built_in: + 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing', + literal: + 'true false null' + }; + const KEYWORDS_WITH_LABEL = { + className: 'keyword', + begin: /\b(break|continue|return|this)\b/, + starts: { contains: [ + { + className: 'symbol', + begin: /@\w+/ + } + ] } + }; + const LABEL = { + className: 'symbol', + begin: hljs.UNDERSCORE_IDENT_RE + '@' + }; + + // for string templates + const SUBST = { + className: 'subst', + begin: /\$\{/, + end: /\}/, + contains: [ hljs.C_NUMBER_MODE ] + }; + const VARIABLE = { + className: 'variable', + begin: '\\$' + hljs.UNDERSCORE_IDENT_RE + }; + const STRING = { + className: 'string', + variants: [ + { + begin: '"""', + end: '"""(?=[^"])', + contains: [ + VARIABLE, + SUBST + ] + }, + // Can't use built-in modes easily, as we want to use STRING in the meta + // context as 'meta-string' and there's no syntax to remove explicitly set + // classNames in built-in modes. + { + begin: '\'', + end: '\'', + illegal: /\n/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '"', + end: '"', + illegal: /\n/, + contains: [ + hljs.BACKSLASH_ESCAPE, + VARIABLE, + SUBST + ] + } + ] + }; + SUBST.contains.push(STRING); + + const ANNOTATION_USE_SITE = { + className: 'meta', + begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?' + }; + const ANNOTATION = { + className: 'meta', + begin: '@' + hljs.UNDERSCORE_IDENT_RE, + contains: [ + { + begin: /\(/, + end: /\)/, + contains: [ + hljs.inherit(STRING, { className: 'string' }), + "self" + ] + } + ] + }; + + // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals + // According to the doc above, the number mode of kotlin is the same as java 8, + // so the code below is copied from java.js + const KOTLIN_NUMBER_MODE = NUMERIC; + const KOTLIN_NESTED_COMMENT = hljs.COMMENT( + '/\\*', '\\*/', + { contains: [ hljs.C_BLOCK_COMMENT_MODE ] } + ); + const KOTLIN_PAREN_TYPE = { variants: [ + { + className: 'type', + begin: hljs.UNDERSCORE_IDENT_RE + }, + { + begin: /\(/, + end: /\)/, + contains: [] // defined later + } + ] }; + const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE; + KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ]; + KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ]; + + return { + name: 'Kotlin', + aliases: [ + 'kt', + 'kts' + ], + keywords: KEYWORDS, + contains: [ + hljs.COMMENT( + '/\\*\\*', + '\\*/', + { + relevance: 0, + contains: [ + { + className: 'doctag', + begin: '@[A-Za-z]+' + } + ] + } + ), + hljs.C_LINE_COMMENT_MODE, + KOTLIN_NESTED_COMMENT, + KEYWORDS_WITH_LABEL, + LABEL, + ANNOTATION_USE_SITE, + ANNOTATION, + { + className: 'function', + beginKeywords: 'fun', + end: '[(]|$', + returnBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + relevance: 5, + contains: [ + { + begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', + returnBegin: true, + relevance: 0, + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + }, + { + className: 'type', + begin: //, + keywords: 'reified', + relevance: 0 + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + endsParent: true, + keywords: KEYWORDS, + relevance: 0, + contains: [ + { + begin: /:/, + end: /[=,\/]/, + endsWithParent: true, + contains: [ + KOTLIN_PAREN_TYPE, + hljs.C_LINE_COMMENT_MODE, + KOTLIN_NESTED_COMMENT + ], + relevance: 0 + }, + hljs.C_LINE_COMMENT_MODE, + KOTLIN_NESTED_COMMENT, + ANNOTATION_USE_SITE, + ANNOTATION, + STRING, + hljs.C_NUMBER_MODE + ] + }, + KOTLIN_NESTED_COMMENT + ] + }, + { + begin: [ + /class|interface|trait/, + /\s+/, + hljs.UNDERSCORE_IDENT_RE + ], + beginScope: { + 3: "title.class" + }, + keywords: 'class interface trait', + end: /[:\{(]|$/, + excludeEnd: true, + illegal: 'extends implements', + contains: [ + { beginKeywords: 'public protected internal private constructor' }, + hljs.UNDERSCORE_TITLE_MODE, + { + className: 'type', + begin: //, + excludeBegin: true, + excludeEnd: true, + relevance: 0 + }, + { + className: 'type', + begin: /[,:]\s*/, + end: /[<\(,){\s]|$/, + excludeBegin: true, + returnEnd: true + }, + ANNOTATION_USE_SITE, + ANNOTATION + ] + }, + STRING, + { + className: 'meta', + begin: "^#!/usr/bin/env", + end: '$', + illegal: '\n' + }, + KOTLIN_NUMBER_MODE + ] + }; +} + +module.exports = kotlin; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/lasso.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/lasso.js ***! + \**************************************************************/ +(module) { + +/* +Language: Lasso +Author: Eric Knibbe +Description: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier. +Website: http://www.lassosoft.com/What-Is-Lasso +Category: database, web +*/ + +function lasso(hljs) { + const LASSO_IDENT_RE = '[a-zA-Z_][\\w.]*'; + const LASSO_ANGLE_RE = '<\\?(lasso(script)?|=)'; + const LASSO_CLOSE_RE = '\\]|\\?>'; + const LASSO_KEYWORDS = { + $pattern: LASSO_IDENT_RE + '|&[lg]t;', + literal: + 'true false none minimal full all void and or not ' + + 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft', + built_in: + 'array date decimal duration integer map pair string tag xml null ' + + 'boolean bytes keyword list locale queue set stack staticarray ' + + 'local var variable global data self inherited currentcapture givenblock', + keyword: + 'cache database_names database_schemanames database_tablenames ' + + 'define_tag define_type email_batch encode_set html_comment handle ' + + 'handle_error header if inline iterate ljax_target link ' + + 'link_currentaction link_currentgroup link_currentrecord link_detail ' + + 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' + + 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' + + 'loop namespace_using output_none portal private protect records ' + + 'referer referrer repeating resultset rows search_args ' + + 'search_arguments select sort_args sort_arguments thread_atomic ' + + 'value_list while abort case else fail_if fail_ifnot fail if_empty ' + + 'if_false if_null if_true loop_abort loop_continue loop_count params ' + + 'params_up return return_value run_children soap_definetag ' + + 'soap_lastrequest soap_lastresponse tag_name ascending average by ' + + 'define descending do equals frozen group handle_failure import in ' + + 'into join let match max min on order parent protected provide public ' + + 'require returnhome skip split_thread sum take thread to trait type ' + + 'where with yield yieldhome' + }; + const HTML_COMMENT = hljs.COMMENT( + '', + { relevance: 0 } + ); + const LASSO_NOPROCESS = { + className: 'meta', + begin: '\\[noprocess\\]', + starts: { + end: '\\[/noprocess\\]', + returnEnd: true, + contains: [ HTML_COMMENT ] + } + }; + const LASSO_START = { + className: 'meta', + begin: '\\[/noprocess|' + LASSO_ANGLE_RE + }; + const LASSO_DATAMEMBER = { + className: 'symbol', + begin: '\'' + LASSO_IDENT_RE + '\'' + }; + const LASSO_CODE = [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.inherit(hljs.C_NUMBER_MODE, { begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\b' }), + hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), + { + className: 'string', + begin: '`', + end: '`' + }, + { // variables + variants: [ + { begin: '[#$]' + LASSO_IDENT_RE }, + { + begin: '#', + end: '\\d+', + illegal: '\\W' + } + ] }, + { + className: 'type', + begin: '::\\s*', + end: LASSO_IDENT_RE, + illegal: '\\W' + }, + { + className: 'params', + variants: [ + { + begin: '-(?!infinity)' + LASSO_IDENT_RE, + relevance: 0 + }, + { begin: '(\\.\\.\\.)' } + ] + }, + { + begin: /(->|\.)\s*/, + relevance: 0, + contains: [ LASSO_DATAMEMBER ] + }, + { + className: 'class', + beginKeywords: 'define', + returnEnd: true, + end: '\\(|=>', + contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)' }) ] + } + ]; + return { + name: 'Lasso', + aliases: [ + 'ls', + 'lassoscript' + ], + case_insensitive: true, + keywords: LASSO_KEYWORDS, + contains: [ + { + className: 'meta', + begin: LASSO_CLOSE_RE, + relevance: 0, + starts: { // markup + end: '\\[|' + LASSO_ANGLE_RE, + returnEnd: true, + relevance: 0, + contains: [ HTML_COMMENT ] + } + }, + LASSO_NOPROCESS, + LASSO_START, + { + className: 'meta', + begin: '\\[no_square_brackets', + starts: { + end: '\\[/no_square_brackets\\]', // not implemented in the language + keywords: LASSO_KEYWORDS, + contains: [ + { + className: 'meta', + begin: LASSO_CLOSE_RE, + relevance: 0, + starts: { + end: '\\[noprocess\\]|' + LASSO_ANGLE_RE, + returnEnd: true, + contains: [ HTML_COMMENT ] + } + }, + LASSO_NOPROCESS, + LASSO_START + ].concat(LASSO_CODE) + } + }, + { + className: 'meta', + begin: '\\[', + relevance: 0 + }, + { + className: 'meta', + begin: '^#!', + end: 'lasso9$', + relevance: 10 + } + ].concat(LASSO_CODE) + }; +} + +module.exports = lasso; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/latex.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/latex.js ***! + \**************************************************************/ +(module) { + +/* +Language: LaTeX +Author: Benedikt Wilde +Website: https://www.latex-project.org +Category: markup +*/ + +/** @type LanguageFn */ +function latex(hljs) { + const regex = hljs.regex; + const KNOWN_CONTROL_WORDS = regex.either(...[ + '(?:NeedsTeXFormat|RequirePackage|GetIdInfo)', + 'Provides(?:Expl)?(?:Package|Class|File)', + '(?:DeclareOption|ProcessOptions)', + '(?:documentclass|usepackage|input|include)', + 'makeat(?:letter|other)', + 'ExplSyntax(?:On|Off)', + '(?:new|renew|provide)?command', + '(?:re)newenvironment', + '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand', + '(?:New|Renew|Provide|Declare)DocumentEnvironment', + '(?:(?:e|g|x)?def|let)', + '(?:begin|end)', + '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)', + 'caption', + '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)', + '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)', + '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)', + '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)', + '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)', + '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)' + ].map(word => word + '(?![a-zA-Z@:_])')); + const L3_REGEX = new RegExp([ + // A function \module_function_name:signature or \__module_function_name:signature, + // where both module and function_name need at least two characters and + // function_name may contain single underscores. + '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*', + // A variable \scope_module_and_name_type or \scope__module_ane_name_type, + // where scope is one of l, g or c, type needs at least two characters + // and module_and_name may contain single underscores. + '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}', + // A quark \q_the_name or \q__the_name or + // scan mark \s_the_name or \s__vthe_name, + // where variable_name needs at least two characters and + // may contain single underscores. + '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+', + // Other LaTeX3 macro names that are not covered by the three rules above. + 'use(?:_i)?:[a-zA-Z]*', + '(?:else|fi|or):', + '(?:if|cs|exp):w', + '(?:hbox|vbox):n', + '::[a-zA-Z]_unbraced', + '::[a-zA-Z:]' + ].map(pattern => pattern + '(?![a-zA-Z:_])').join('|')); + const L2_VARIANTS = [ + { begin: /[a-zA-Z@]+/ }, // control word + { begin: /[^a-zA-Z@]?/ } // control symbol + ]; + const DOUBLE_CARET_VARIANTS = [ + { begin: /\^{6}[0-9a-f]{6}/ }, + { begin: /\^{5}[0-9a-f]{5}/ }, + { begin: /\^{4}[0-9a-f]{4}/ }, + { begin: /\^{3}[0-9a-f]{3}/ }, + { begin: /\^{2}[0-9a-f]{2}/ }, + { begin: /\^{2}[\u0000-\u007f]/ } + ]; + const CONTROL_SEQUENCE = { + className: 'keyword', + begin: /\\/, + relevance: 0, + contains: [ + { + endsParent: true, + begin: KNOWN_CONTROL_WORDS + }, + { + endsParent: true, + begin: L3_REGEX + }, + { + endsParent: true, + variants: DOUBLE_CARET_VARIANTS + }, + { + endsParent: true, + relevance: 0, + variants: L2_VARIANTS + } + ] + }; + const MACRO_PARAM = { + className: 'params', + relevance: 0, + begin: /#+\d?/ + }; + const DOUBLE_CARET_CHAR = { + // relevance: 1 + variants: DOUBLE_CARET_VARIANTS }; + const SPECIAL_CATCODE = { + className: 'built_in', + relevance: 0, + begin: /[$&^_]/ + }; + const MAGIC_COMMENT = { + className: 'meta', + begin: /% ?!(T[eE]X|tex|BIB|bib)/, + end: '$', + relevance: 10 + }; + const COMMENT = hljs.COMMENT( + '%', + '$', + { relevance: 0 } + ); + const EVERYTHING_BUT_VERBATIM = [ + CONTROL_SEQUENCE, + MACRO_PARAM, + DOUBLE_CARET_CHAR, + SPECIAL_CATCODE, + MAGIC_COMMENT, + COMMENT + ]; + const BRACE_GROUP_NO_VERBATIM = { + begin: /\{/, + end: /\}/, + relevance: 0, + contains: [ + 'self', + ...EVERYTHING_BUT_VERBATIM + ] + }; + const ARGUMENT_BRACES = hljs.inherit( + BRACE_GROUP_NO_VERBATIM, + { + relevance: 0, + endsParent: true, + contains: [ + BRACE_GROUP_NO_VERBATIM, + ...EVERYTHING_BUT_VERBATIM + ] + } + ); + const ARGUMENT_BRACKETS = { + begin: /\[/, + end: /\]/, + endsParent: true, + relevance: 0, + contains: [ + BRACE_GROUP_NO_VERBATIM, + ...EVERYTHING_BUT_VERBATIM + ] + }; + const SPACE_GOBBLER = { + begin: /\s+/, + relevance: 0 + }; + const ARGUMENT_M = [ ARGUMENT_BRACES ]; + const ARGUMENT_O = [ ARGUMENT_BRACKETS ]; + const ARGUMENT_AND_THEN = function(arg, starts_mode) { + return { + contains: [ SPACE_GOBBLER ], + starts: { + relevance: 0, + contains: arg, + starts: starts_mode + } + }; + }; + const CSNAME = function(csname, starts_mode) { + return { + begin: '\\\\' + csname + '(?![a-zA-Z@:_])', + keywords: { + $pattern: /\\[a-zA-Z]+/, + keyword: '\\' + csname + }, + relevance: 0, + contains: [ SPACE_GOBBLER ], + starts: starts_mode + }; + }; + const BEGIN_ENV = function(envname, starts_mode) { + return hljs.inherit( + { + begin: '\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{' + envname + '\\})', + keywords: { + $pattern: /\\[a-zA-Z]+/, + keyword: '\\begin' + }, + relevance: 0, + }, + ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode) + ); + }; + const VERBATIM_DELIMITED_EQUAL = (innerName = "string") => { + return hljs.END_SAME_AS_BEGIN({ + className: innerName, + begin: /(.|\r?\n)/, + end: /(.|\r?\n)/, + excludeBegin: true, + excludeEnd: true, + endsParent: true + }); + }; + const VERBATIM_DELIMITED_ENV = function(envname) { + return { + className: 'string', + end: '(?=\\\\end\\{' + envname + '\\})' + }; + }; + + const VERBATIM_DELIMITED_BRACES = (innerName = "string") => { + return { + relevance: 0, + begin: /\{/, + starts: { + endsParent: true, + contains: [ + { + className: innerName, + end: /(?=\})/, + endsParent: true, + contains: [ + { + begin: /\{/, + end: /\}/, + relevance: 0, + contains: [ "self" ] + } + ], + } + ] + } + }; + }; + const VERBATIM = [ + ...[ + 'verb', + 'lstinline' + ].map(csname => CSNAME(csname, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })), + CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })), + CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [ + VERBATIM_DELIMITED_BRACES(), + VERBATIM_DELIMITED_EQUAL() + ] })), + CSNAME('url', { contains: [ + VERBATIM_DELIMITED_BRACES("link"), + VERBATIM_DELIMITED_BRACES("link") + ] }), + CSNAME('hyperref', { contains: [ VERBATIM_DELIMITED_BRACES("link") ] }), + CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, { contains: [ VERBATIM_DELIMITED_BRACES("link") ] })), + ...[].concat(...[ + '', + '\\*' + ].map(suffix => [ + BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)), + BEGIN_ENV('filecontents' + suffix, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix))), + ...[ + '', + 'B', + 'L' + ].map(prefix => + BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix))) + ) + ])), + BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted')))), + ]; + + return { + name: 'LaTeX', + aliases: [ 'tex' ], + contains: [ + ...VERBATIM, + ...EVERYTHING_BUT_VERBATIM + ] + }; +} + +module.exports = latex; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ldif.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ldif.js ***! + \*************************************************************/ +(module) { + +/* +Language: LDIF +Contributors: Jacob Childress +Category: enterprise, config +Website: https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format +*/ + +/** @type LanguageFn */ +function ldif(hljs) { + return { + name: 'LDIF', + contains: [ + { + className: 'attribute', + match: '^dn(?=:)', + relevance: 10 + }, + { + className: 'attribute', + match: '^\\w+(?=:)' + }, + { + className: 'literal', + match: '^-' + }, + hljs.HASH_COMMENT_MODE + ] + }; +} + +module.exports = ldif; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/leaf.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/leaf.js ***! + \*************************************************************/ +(module) { + +/* +Language: Leaf +Description: A Swift-based templating language created for the Vapor project. +Website: https://docs.vapor.codes/leaf/overview +Category: template +*/ + +function leaf(hljs) { + const IDENT = /([A-Za-z_][A-Za-z_0-9]*)?/; + const LITERALS = [ + 'true', + 'false', + 'in' + ]; + const PARAMS = { + scope: 'params', + begin: /\(/, + end: /\)(?=\:?)/, + endsParent: true, + relevance: 7, + contains: [ + { + scope: 'string', + begin: '"', + end: '"' + }, + { + scope: 'keyword', + match: LITERALS.join("|"), + }, + { + scope: 'variable', + match: /[A-Za-z_][A-Za-z_0-9]*/ + }, + { + scope: 'operator', + match: /\+|\-|\*|\/|\%|\=\=|\=|\!|\>|\<|\&\&|\|\|/ + } + ] + }; + const INSIDE_DISPATCH = { + match: [ + IDENT, + /(?=\()/, + ], + scope: { + 1: "keyword" + }, + contains: [ PARAMS ] + }; + PARAMS.contains.unshift(INSIDE_DISPATCH); + return { + name: 'Leaf', + contains: [ + // #ident(): + { + match: [ + /#+/, + IDENT, + /(?=\()/, + ], + scope: { + 1: "punctuation", + 2: "keyword" + }, + // will start up after the ending `)` match from line ~44 + // just to grab the trailing `:` if we can match it + starts: { + contains: [ + { + match: /\:/, + scope: "punctuation" + } + ] + }, + contains: [ + PARAMS + ], + }, + // #ident or #ident: + { + match: [ + /#+/, + IDENT, + /:?/, + ], + scope: { + 1: "punctuation", + 2: "keyword", + 3: "punctuation" + } + }, + ] + }; +} + +module.exports = leaf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/less.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/less.js ***! + \*************************************************************/ +(module) { + +const MODES = (hljs) => { + return { + IMPORTANT: { + scope: 'meta', + begin: '!important' + }, + BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, + HEXCOLOR: { + scope: 'number', + begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ + }, + FUNCTION_DISPATCH: { + className: "built_in", + begin: /[\w-]+(?=\()/ + }, + ATTRIBUTE_SELECTOR_MODE: { + scope: 'selector-attr', + begin: /\[/, + end: /\]/, + illegal: '$', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }, + CSS_NUMBER_MODE: { + scope: 'number', + begin: hljs.NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 + }, + CSS_VARIABLE: { + className: "attr", + begin: /--[A-Za-z_][A-Za-z0-9_-]*/ + } + }; +}; + +const HTML_TAGS = [ + 'a', + 'abbr', + 'address', + 'article', + 'aside', + 'audio', + 'b', + 'blockquote', + 'body', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'dd', + 'del', + 'details', + 'dfn', + 'div', + 'dl', + 'dt', + 'em', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'header', + 'hgroup', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'label', + 'legend', + 'li', + 'main', + 'mark', + 'menu', + 'nav', + 'object', + 'ol', + 'optgroup', + 'option', + 'p', + 'picture', + 'q', + 'quote', + 'samp', + 'section', + 'select', + 'source', + 'span', + 'strong', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'tr', + 'ul', + 'var', + 'video' +]; + +const SVG_TAGS = [ + 'defs', + 'g', + 'marker', + 'mask', + 'pattern', + 'svg', + 'switch', + 'symbol', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feFlood', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMorphology', + 'feOffset', + 'feSpecularLighting', + 'feTile', + 'feTurbulence', + 'linearGradient', + 'radialGradient', + 'stop', + 'circle', + 'ellipse', + 'image', + 'line', + 'path', + 'polygon', + 'polyline', + 'rect', + 'text', + 'use', + 'textPath', + 'tspan', + 'foreignObject', + 'clipPath' +]; + +const TAGS = [ + ...HTML_TAGS, + ...SVG_TAGS, +]; + +// Sorting, then reversing makes sure longer attributes/elements like +// `font-weight` are matched fully instead of getting false positives on say `font` + +const MEDIA_FEATURES = [ + 'any-hover', + 'any-pointer', + 'aspect-ratio', + 'color', + 'color-gamut', + 'color-index', + 'device-aspect-ratio', + 'device-height', + 'device-width', + 'display-mode', + 'forced-colors', + 'grid', + 'height', + 'hover', + 'inverted-colors', + 'monochrome', + 'orientation', + 'overflow-block', + 'overflow-inline', + 'pointer', + 'prefers-color-scheme', + 'prefers-contrast', + 'prefers-reduced-motion', + 'prefers-reduced-transparency', + 'resolution', + 'scan', + 'scripting', + 'update', + 'width', + // TODO: find a better solution? + 'min-width', + 'max-width', + 'min-height', + 'max-height' +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes +const PSEUDO_CLASSES = [ + 'active', + 'any-link', + 'blank', + 'checked', + 'current', + 'default', + 'defined', + 'dir', // dir() + 'disabled', + 'drop', + 'empty', + 'enabled', + 'first', + 'first-child', + 'first-of-type', + 'fullscreen', + 'future', + 'focus', + 'focus-visible', + 'focus-within', + 'has', // has() + 'host', // host or host() + 'host-context', // host-context() + 'hover', + 'indeterminate', + 'in-range', + 'invalid', + 'is', // is() + 'lang', // lang() + 'last-child', + 'last-of-type', + 'left', + 'link', + 'local-link', + 'not', // not() + 'nth-child', // nth-child() + 'nth-col', // nth-col() + 'nth-last-child', // nth-last-child() + 'nth-last-col', // nth-last-col() + 'nth-last-of-type', //nth-last-of-type() + 'nth-of-type', //nth-of-type() + 'only-child', + 'only-of-type', + 'optional', + 'out-of-range', + 'past', + 'placeholder-shown', + 'read-only', + 'read-write', + 'required', + 'right', + 'root', + 'scope', + 'target', + 'target-within', + 'user-invalid', + 'valid', + 'visited', + 'where' // where() +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements +const PSEUDO_ELEMENTS = [ + 'after', + 'backdrop', + 'before', + 'cue', + 'cue-region', + 'first-letter', + 'first-line', + 'grammar-error', + 'marker', + 'part', + 'placeholder', + 'selection', + 'slotted', + 'spelling-error' +].sort().reverse(); + +const ATTRIBUTES = [ + 'accent-color', + 'align-content', + 'align-items', + 'align-self', + 'alignment-baseline', + 'all', + 'anchor-name', + 'animation', + 'animation-composition', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-range', + 'animation-range-end', + 'animation-range-start', + 'animation-timeline', + 'animation-timing-function', + 'appearance', + 'aspect-ratio', + 'backdrop-filter', + 'backface-visibility', + 'background', + 'background-attachment', + 'background-blend-mode', + 'background-clip', + 'background-color', + 'background-image', + 'background-origin', + 'background-position', + 'background-position-x', + 'background-position-y', + 'background-repeat', + 'background-size', + 'baseline-shift', + 'block-size', + 'border', + 'border-block', + 'border-block-color', + 'border-block-end', + 'border-block-end-color', + 'border-block-end-style', + 'border-block-end-width', + 'border-block-start', + 'border-block-start-color', + 'border-block-start-style', + 'border-block-start-width', + 'border-block-style', + 'border-block-width', + 'border-bottom', + 'border-bottom-color', + 'border-bottom-left-radius', + 'border-bottom-right-radius', + 'border-bottom-style', + 'border-bottom-width', + 'border-collapse', + 'border-color', + 'border-end-end-radius', + 'border-end-start-radius', + 'border-image', + 'border-image-outset', + 'border-image-repeat', + 'border-image-slice', + 'border-image-source', + 'border-image-width', + 'border-inline', + 'border-inline-color', + 'border-inline-end', + 'border-inline-end-color', + 'border-inline-end-style', + 'border-inline-end-width', + 'border-inline-start', + 'border-inline-start-color', + 'border-inline-start-style', + 'border-inline-start-width', + 'border-inline-style', + 'border-inline-width', + 'border-left', + 'border-left-color', + 'border-left-style', + 'border-left-width', + 'border-radius', + 'border-right', + 'border-right-color', + 'border-right-style', + 'border-right-width', + 'border-spacing', + 'border-start-end-radius', + 'border-start-start-radius', + 'border-style', + 'border-top', + 'border-top-color', + 'border-top-left-radius', + 'border-top-right-radius', + 'border-top-style', + 'border-top-width', + 'border-width', + 'bottom', + 'box-align', + 'box-decoration-break', + 'box-direction', + 'box-flex', + 'box-flex-group', + 'box-lines', + 'box-ordinal-group', + 'box-orient', + 'box-pack', + 'box-shadow', + 'box-sizing', + 'break-after', + 'break-before', + 'break-inside', + 'caption-side', + 'caret-color', + 'clear', + 'clip', + 'clip-path', + 'clip-rule', + 'color', + 'color-interpolation', + 'color-interpolation-filters', + 'color-profile', + 'color-rendering', + 'color-scheme', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + 'contain', + 'contain-intrinsic-block-size', + 'contain-intrinsic-height', + 'contain-intrinsic-inline-size', + 'contain-intrinsic-size', + 'contain-intrinsic-width', + 'container', + 'container-name', + 'container-type', + 'content', + 'content-visibility', + 'counter-increment', + 'counter-reset', + 'counter-set', + 'cue', + 'cue-after', + 'cue-before', + 'cursor', + 'cx', + 'cy', + 'direction', + 'display', + 'dominant-baseline', + 'empty-cells', + 'enable-background', + 'field-sizing', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'float', + 'flood-color', + 'flood-opacity', + 'flow', + 'font', + 'font-display', + 'font-family', + 'font-feature-settings', + 'font-kerning', + 'font-language-override', + 'font-optical-sizing', + 'font-palette', + 'font-size', + 'font-size-adjust', + 'font-smooth', + 'font-smoothing', + 'font-stretch', + 'font-style', + 'font-synthesis', + 'font-synthesis-position', + 'font-synthesis-small-caps', + 'font-synthesis-style', + 'font-synthesis-weight', + 'font-variant', + 'font-variant-alternates', + 'font-variant-caps', + 'font-variant-east-asian', + 'font-variant-emoji', + 'font-variant-ligatures', + 'font-variant-numeric', + 'font-variant-position', + 'font-variation-settings', + 'font-weight', + 'forced-color-adjust', + 'gap', + 'glyph-orientation-horizontal', + 'glyph-orientation-vertical', + 'grid', + 'grid-area', + 'grid-auto-columns', + 'grid-auto-flow', + 'grid-auto-rows', + 'grid-column', + 'grid-column-end', + 'grid-column-start', + 'grid-gap', + 'grid-row', + 'grid-row-end', + 'grid-row-start', + 'grid-template', + 'grid-template-areas', + 'grid-template-columns', + 'grid-template-rows', + 'hanging-punctuation', + 'height', + 'hyphenate-character', + 'hyphenate-limit-chars', + 'hyphens', + 'icon', + 'image-orientation', + 'image-rendering', + 'image-resolution', + 'ime-mode', + 'initial-letter', + 'initial-letter-align', + 'inline-size', + 'inset', + 'inset-area', + 'inset-block', + 'inset-block-end', + 'inset-block-start', + 'inset-inline', + 'inset-inline-end', + 'inset-inline-start', + 'isolation', + 'justify-content', + 'justify-items', + 'justify-self', + 'kerning', + 'left', + 'letter-spacing', + 'lighting-color', + 'line-break', + 'line-height', + 'line-height-step', + 'list-style', + 'list-style-image', + 'list-style-position', + 'list-style-type', + 'margin', + 'margin-block', + 'margin-block-end', + 'margin-block-start', + 'margin-bottom', + 'margin-inline', + 'margin-inline-end', + 'margin-inline-start', + 'margin-left', + 'margin-right', + 'margin-top', + 'margin-trim', + 'marker', + 'marker-end', + 'marker-mid', + 'marker-start', + 'marks', + 'mask', + 'mask-border', + 'mask-border-mode', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-mode', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + 'mask-type', + 'masonry-auto-flow', + 'math-depth', + 'math-shift', + 'math-style', + 'max-block-size', + 'max-height', + 'max-inline-size', + 'max-width', + 'min-block-size', + 'min-height', + 'min-inline-size', + 'min-width', + 'mix-blend-mode', + 'nav-down', + 'nav-index', + 'nav-left', + 'nav-right', + 'nav-up', + 'none', + 'normal', + 'object-fit', + 'object-position', + 'offset', + 'offset-anchor', + 'offset-distance', + 'offset-path', + 'offset-position', + 'offset-rotate', + 'opacity', + 'order', + 'orphans', + 'outline', + 'outline-color', + 'outline-offset', + 'outline-style', + 'outline-width', + 'overflow', + 'overflow-anchor', + 'overflow-block', + 'overflow-clip-margin', + 'overflow-inline', + 'overflow-wrap', + 'overflow-x', + 'overflow-y', + 'overlay', + 'overscroll-behavior', + 'overscroll-behavior-block', + 'overscroll-behavior-inline', + 'overscroll-behavior-x', + 'overscroll-behavior-y', + 'padding', + 'padding-block', + 'padding-block-end', + 'padding-block-start', + 'padding-bottom', + 'padding-inline', + 'padding-inline-end', + 'padding-inline-start', + 'padding-left', + 'padding-right', + 'padding-top', + 'page', + 'page-break-after', + 'page-break-before', + 'page-break-inside', + 'paint-order', + 'pause', + 'pause-after', + 'pause-before', + 'perspective', + 'perspective-origin', + 'place-content', + 'place-items', + 'place-self', + 'pointer-events', + 'position', + 'position-anchor', + 'position-visibility', + 'print-color-adjust', + 'quotes', + 'r', + 'resize', + 'rest', + 'rest-after', + 'rest-before', + 'right', + 'rotate', + 'row-gap', + 'ruby-align', + 'ruby-position', + 'scale', + 'scroll-behavior', + 'scroll-margin', + 'scroll-margin-block', + 'scroll-margin-block-end', + 'scroll-margin-block-start', + 'scroll-margin-bottom', + 'scroll-margin-inline', + 'scroll-margin-inline-end', + 'scroll-margin-inline-start', + 'scroll-margin-left', + 'scroll-margin-right', + 'scroll-margin-top', + 'scroll-padding', + 'scroll-padding-block', + 'scroll-padding-block-end', + 'scroll-padding-block-start', + 'scroll-padding-bottom', + 'scroll-padding-inline', + 'scroll-padding-inline-end', + 'scroll-padding-inline-start', + 'scroll-padding-left', + 'scroll-padding-right', + 'scroll-padding-top', + 'scroll-snap-align', + 'scroll-snap-stop', + 'scroll-snap-type', + 'scroll-timeline', + 'scroll-timeline-axis', + 'scroll-timeline-name', + 'scrollbar-color', + 'scrollbar-gutter', + 'scrollbar-width', + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + 'shape-rendering', + 'speak', + 'speak-as', + 'src', // @font-face + 'stop-color', + 'stop-opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'tab-size', + 'table-layout', + 'text-align', + 'text-align-all', + 'text-align-last', + 'text-anchor', + 'text-combine-upright', + 'text-decoration', + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-skip-ink', + 'text-decoration-style', + 'text-decoration-thickness', + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + 'text-indent', + 'text-justify', + 'text-orientation', + 'text-overflow', + 'text-rendering', + 'text-shadow', + 'text-size-adjust', + 'text-transform', + 'text-underline-offset', + 'text-underline-position', + 'text-wrap', + 'text-wrap-mode', + 'text-wrap-style', + 'timeline-scope', + 'top', + 'touch-action', + 'transform', + 'transform-box', + 'transform-origin', + 'transform-style', + 'transition', + 'transition-behavior', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + 'translate', + 'unicode-bidi', + 'user-modify', + 'user-select', + 'vector-effect', + 'vertical-align', + 'view-timeline', + 'view-timeline-axis', + 'view-timeline-inset', + 'view-timeline-name', + 'view-transition-name', + 'visibility', + 'voice-balance', + 'voice-duration', + 'voice-family', + 'voice-pitch', + 'voice-range', + 'voice-rate', + 'voice-stress', + 'voice-volume', + 'white-space', + 'white-space-collapse', + 'widows', + 'width', + 'will-change', + 'word-break', + 'word-spacing', + 'word-wrap', + 'writing-mode', + 'x', + 'y', + 'z-index', + 'zoom' +].sort().reverse(); + +// some grammars use them all as a single group +const PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS).sort().reverse(); + +/* +Language: Less +Description: It's CSS, with just a little more. +Author: Max Mikhailov +Website: http://lesscss.org +Category: common, css, web +*/ + + +/** @type LanguageFn */ +function less(hljs) { + const modes = MODES(hljs); + const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS; + + const AT_MODIFIERS = "and or not only"; + const IDENT_RE = '[\\w-]+'; // yes, Less identifiers may begin with a digit + const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\{' + IDENT_RE + '\\})'; + + /* Generic Modes */ + + const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes + + const STRING_MODE = function(c) { + return { + // Less strings are not multiline (also include '~' for more consistent coloring of "escaped" strings) + className: 'string', + begin: '~?' + c + '.*?' + c + }; + }; + + const IDENT_MODE = function(name, begin, relevance) { + return { + className: name, + begin: begin, + relevance: relevance + }; + }; + + const AT_KEYWORDS = { + $pattern: /[a-z-]+/, + keyword: AT_MODIFIERS, + attribute: MEDIA_FEATURES.join(" ") + }; + + const PARENS_MODE = { + // used only to properly balance nested parens inside mixin call, def. arg list + begin: '\\(', + end: '\\)', + contains: VALUE_MODES, + keywords: AT_KEYWORDS, + relevance: 0 + }; + + // generic Less highlighter (used almost everywhere except selectors): + VALUE_MODES.push( + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRING_MODE("'"), + STRING_MODE('"'), + modes.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :( + { + begin: '(url|data-uri)\\(', + starts: { + className: 'string', + end: '[\\)\\n]', + excludeEnd: true + } + }, + modes.HEXCOLOR, + PARENS_MODE, + IDENT_MODE('variable', '@@?' + IDENT_RE, 10), + IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), + IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string + { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding): + className: 'attribute', + begin: IDENT_RE + '\\s*:', + end: ':', + returnBegin: true, + excludeEnd: true + }, + modes.IMPORTANT, + { beginKeywords: 'and not' }, + modes.FUNCTION_DISPATCH + ); + + const VALUE_WITH_RULESETS = VALUE_MODES.concat({ + begin: /\{/, + end: /\}/, + contains: RULES + }); + + const MIXIN_GUARD_MODE = { + beginKeywords: 'when', + endsWithParent: true, + contains: [ { beginKeywords: 'and not' } ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match + }; + + /* Rule-Level Modes */ + + const RULE_MODE = { + begin: INTERP_IDENT_RE + '\\s*:', + returnBegin: true, + end: /[;}]/, + relevance: 0, + contains: [ + { begin: /-(webkit|moz|ms|o)-/ }, + modes.CSS_VARIABLE, + { + className: 'attribute', + begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b', + end: /(?=:)/, + starts: { + endsWithParent: true, + illegal: '[<=$]', + relevance: 0, + contains: VALUE_MODES + } + } + ] + }; + + const AT_RULE_MODE = { + className: 'keyword', + begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b', + starts: { + end: '[;{}]', + keywords: AT_KEYWORDS, + returnEnd: true, + contains: VALUE_MODES, + relevance: 0 + } + }; + + // variable definitions and calls + const VAR_RULE_MODE = { + className: 'variable', + variants: [ + // using more strict pattern for higher relevance to increase chances of Less detection. + // this is *the only* Less specific statement used in most of the sources, so... + // (we’ll still often loose to the css-parser unless there's '//' comment, + // simply because 1 variable just can't beat 99 properties :) + { + begin: '@' + IDENT_RE + '\\s*:', + relevance: 15 + }, + { begin: '@' + IDENT_RE } + ], + starts: { + end: '[;}]', + returnEnd: true, + contains: VALUE_WITH_RULESETS + } + }; + + const SELECTOR_MODE = { + // first parse unambiguous selectors (i.e. those not starting with tag) + // then fall into the scary lookahead-discriminator variant. + // this mode also handles mixin definitions and calls + variants: [ + { + begin: '[\\.#:&\\[>]', + end: '[;{}]' // mixin calls end with ';' + }, + { + begin: INTERP_IDENT_RE, + end: /\{/ + } + ], + returnBegin: true, + returnEnd: true, + illegal: '[<=\'$"]', + relevance: 0, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + MIXIN_GUARD_MODE, + IDENT_MODE('keyword', 'all\\b'), + IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), // otherwise it’s identified as tag + + { + begin: '\\b(' + TAGS.join('|') + ')\\b', + className: 'selector-tag' + }, + modes.CSS_NUMBER_MODE, + IDENT_MODE('selector-tag', INTERP_IDENT_RE, 0), + IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE), + IDENT_MODE('selector-class', '\\.' + INTERP_IDENT_RE, 0), + IDENT_MODE('selector-tag', '&', 0), + modes.ATTRIBUTE_SELECTOR_MODE, + { + className: 'selector-pseudo', + begin: ':(' + PSEUDO_CLASSES.join('|') + ')' + }, + { + className: 'selector-pseudo', + begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' + }, + { + begin: /\(/, + end: /\)/, + relevance: 0, + contains: VALUE_WITH_RULESETS + }, // argument list of parametric mixins + { begin: '!important' }, // eat !important after mixin call or it will be colored as tag + modes.FUNCTION_DISPATCH + ] + }; + + const PSEUDO_SELECTOR_MODE = { + begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`, + returnBegin: true, + contains: [ SELECTOR_MODE ] + }; + + RULES.push( + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + AT_RULE_MODE, + VAR_RULE_MODE, + PSEUDO_SELECTOR_MODE, + RULE_MODE, + SELECTOR_MODE, + MIXIN_GUARD_MODE, + modes.FUNCTION_DISPATCH + ); + + return { + name: 'Less', + case_insensitive: true, + illegal: '[=>\'/<($"]', + contains: RULES + }; +} + +module.exports = less; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/lisp.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/lisp.js ***! + \*************************************************************/ +(module) { + +/* +Language: Lisp +Description: Generic lisp syntax +Author: Vasily Polovnyov +Category: lisp +*/ + +function lisp(hljs) { + const LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*'; + const MEC_RE = '\\|[^]*?\\|'; + const LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?'; + const LITERAL = { + className: 'literal', + begin: '\\b(t{1}|nil)\\b' + }; + const NUMBER = { + className: 'number', + variants: [ + { + begin: LISP_SIMPLE_NUMBER_RE, + relevance: 0 + }, + { begin: '#(b|B)[0-1]+(/[0-1]+)?' }, + { begin: '#(o|O)[0-7]+(/[0-7]+)?' }, + { begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?' }, + { + begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, + end: '\\)' + } + ] + }; + const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); + const COMMENT = hljs.COMMENT( + ';', '$', + { relevance: 0 } + ); + const VARIABLE = { + begin: '\\*', + end: '\\*' + }; + const KEYWORD = { + className: 'symbol', + begin: '[:&]' + LISP_IDENT_RE + }; + const IDENT = { + begin: LISP_IDENT_RE, + relevance: 0 + }; + const MEC = { begin: MEC_RE }; + const QUOTED_LIST = { + begin: '\\(', + end: '\\)', + contains: [ + 'self', + LITERAL, + STRING, + NUMBER, + IDENT + ] + }; + const QUOTED = { + contains: [ + NUMBER, + STRING, + VARIABLE, + KEYWORD, + QUOTED_LIST, + IDENT + ], + variants: [ + { + begin: '[\'`]\\(', + end: '\\)' + }, + { + begin: '\\(quote ', + end: '\\)', + keywords: { name: 'quote' } + }, + { begin: '\'' + MEC_RE } + ] + }; + const QUOTED_ATOM = { variants: [ + { begin: '\'' + LISP_IDENT_RE }, + { begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*' } + ] }; + const LIST = { + begin: '\\(\\s*', + end: '\\)' + }; + const BODY = { + endsWithParent: true, + relevance: 0 + }; + LIST.contains = [ + { + className: 'name', + variants: [ + { + begin: LISP_IDENT_RE, + relevance: 0, + }, + { begin: MEC_RE } + ] + }, + BODY + ]; + BODY.contains = [ + QUOTED, + QUOTED_ATOM, + LIST, + LITERAL, + NUMBER, + STRING, + COMMENT, + VARIABLE, + KEYWORD, + MEC, + IDENT + ]; + + return { + name: 'Lisp', + illegal: /\S/, + contains: [ + NUMBER, + hljs.SHEBANG(), + LITERAL, + STRING, + COMMENT, + QUOTED, + QUOTED_ATOM, + LIST, + IDENT + ] + }; +} + +module.exports = lisp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/livecodeserver.js" +/*!***********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/livecodeserver.js ***! + \***********************************************************************/ +(module) { + +/* +Language: LiveCode +Author: Ralf Bitter +Description: Language definition for LiveCode server accounting for revIgniter (a web application framework) characteristics. +Version: 1.1 +Date: 2019-04-17 +Category: enterprise +*/ + +function livecodeserver(hljs) { + const VARIABLE = { + className: 'variable', + variants: [ + { begin: '\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)' }, + { begin: '\\$_[A-Z]+' } + ], + relevance: 0 + }; + const COMMENT_MODES = [ + hljs.C_BLOCK_COMMENT_MODE, + hljs.HASH_COMMENT_MODE, + hljs.COMMENT('--', '$'), + hljs.COMMENT('[^:]//', '$') + ]; + const TITLE1 = hljs.inherit(hljs.TITLE_MODE, { variants: [ + { begin: '\\b_*rig[A-Z][A-Za-z0-9_\\-]*' }, + { begin: '\\b_[a-z0-9\\-]+' } + ] }); + const TITLE2 = hljs.inherit(hljs.TITLE_MODE, { begin: '\\b([A-Za-z0-9_\\-]+)\\b' }); + return { + name: 'LiveCode', + case_insensitive: false, + keywords: { + keyword: + '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' + + 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' + + 'after byte bytes english the until http forever descending using line real8 with seventh ' + + 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' + + 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' + + 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' + + 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' + + 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' + + 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' + + 'first ftp integer abbreviated abbr abbrev private case while if ' + + 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' + + 'contains ends with begins the keys of keys', + literal: + 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' + + 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' + + 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' + + 'quote empty one true return cr linefeed right backslash null seven tab three two ' + + 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' + + 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK', + built_in: + 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' + + 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' + + 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' + + 'constantNames cos date dateFormat decompress difference directories ' + + 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' + + 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' + + 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' + + 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' + + 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec ' + + 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' + + 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' + + 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' + + 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' + + 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' + + 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' + + 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' + + 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' + + 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' + + 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' + + 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' + + 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' + + 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' + + 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' + + 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' + + 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' + + 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' + + 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' + + 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' + + 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' + + 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' + + 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' + + 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' + + 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' + + 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' + + 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' + + 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' + + 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' + + 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' + + 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver ' + + 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' + + 'libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename ' + + 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' + + 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' + + 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' + + 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' + + 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' + + 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' + + 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' + + 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' + + 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' + + 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' + + 'subtract symmetric union unload vectorDotProduct wait write' + }, + contains: [ + VARIABLE, + { + className: 'keyword', + begin: '\\bend\\sif\\b' + }, + { + className: 'function', + beginKeywords: 'function', + end: '$', + contains: [ + VARIABLE, + TITLE2, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE, + TITLE1 + ] + }, + { + className: 'function', + begin: '\\bend\\s+', + end: '$', + keywords: 'end', + contains: [ + TITLE2, + TITLE1 + ], + relevance: 0 + }, + { + beginKeywords: 'command on', + end: '$', + contains: [ + VARIABLE, + TITLE2, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE, + TITLE1 + ] + }, + { + className: 'meta', + variants: [ + { + begin: '<\\?(rev|lc|livecode)', + relevance: 10 + }, + { begin: '<\\?' }, + { begin: '\\?>' } + ] + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE, + TITLE1 + ].concat(COMMENT_MODES), + illegal: ';$|^\\[|^=|&|\\{' + }; +} + +module.exports = livecodeserver; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/livescript.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/livescript.js ***! + \*******************************************************************/ +(module) { + +const KEYWORDS = [ + "as", // for exports + "in", + "of", + "if", + "for", + "while", + "finally", + "var", + "new", + "function", + "do", + "return", + "void", + "else", + "break", + "catch", + "instanceof", + "with", + "throw", + "case", + "default", + "try", + "switch", + "continue", + "typeof", + "delete", + "let", + "yield", + "const", + "class", + // JS handles these with a special rule + // "get", + // "set", + "debugger", + "async", + "await", + "static", + "import", + "from", + "export", + "extends", + // It's reached stage 3, which is "recommended for implementation": + "using" +]; +const LITERALS = [ + "true", + "false", + "null", + "undefined", + "NaN", + "Infinity" +]; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects +const TYPES = [ + // Fundamental objects + "Object", + "Function", + "Boolean", + "Symbol", + // numbers and dates + "Math", + "Date", + "Number", + "BigInt", + // text + "String", + "RegExp", + // Indexed collections + "Array", + "Float32Array", + "Float64Array", + "Int8Array", + "Uint8Array", + "Uint8ClampedArray", + "Int16Array", + "Int32Array", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array", + // Keyed collections + "Set", + "Map", + "WeakSet", + "WeakMap", + // Structured data + "ArrayBuffer", + "SharedArrayBuffer", + "Atomics", + "DataView", + "JSON", + // Control abstraction objects + "Promise", + "Generator", + "GeneratorFunction", + "AsyncFunction", + // Reflection + "Reflect", + "Proxy", + // Internationalization + "Intl", + // WebAssembly + "WebAssembly" +]; + +const ERROR_TYPES = [ + "Error", + "EvalError", + "InternalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" +]; + +const BUILT_IN_GLOBALS = [ + "setInterval", + "setTimeout", + "clearInterval", + "clearTimeout", + + "require", + "exports", + + "eval", + "isFinite", + "isNaN", + "parseFloat", + "parseInt", + "decodeURI", + "decodeURIComponent", + "encodeURI", + "encodeURIComponent", + "escape", + "unescape" +]; + +const BUILT_INS = [].concat( + BUILT_IN_GLOBALS, + TYPES, + ERROR_TYPES +); + +/* +Language: LiveScript +Author: Taneli Vatanen +Contributors: Jen Evers-Corvina +Origin: coffeescript.js +Description: LiveScript is a programming language that transcompiles to JavaScript. For info about language see http://livescript.net/ +Website: https://livescript.net +Category: scripting +*/ + + +function livescript(hljs) { + const LIVESCRIPT_BUILT_INS = [ + 'npm', + 'print' + ]; + const LIVESCRIPT_LITERALS = [ + 'yes', + 'no', + 'on', + 'off', + 'it', + 'that', + 'void' + ]; + const LIVESCRIPT_KEYWORDS = [ + 'then', + 'unless', + 'until', + 'loop', + 'of', + 'by', + 'when', + 'and', + 'or', + 'is', + 'isnt', + 'not', + 'it', + 'that', + 'otherwise', + 'from', + 'to', + 'til', + 'fallthrough', + 'case', + 'enum', + 'native', + 'list', + 'map', + '__hasProp', + '__extends', + '__slice', + '__bind', + '__indexOf' + ]; + const KEYWORDS$1 = { + keyword: KEYWORDS.concat(LIVESCRIPT_KEYWORDS), + literal: LITERALS.concat(LIVESCRIPT_LITERALS), + built_in: BUILT_INS.concat(LIVESCRIPT_BUILT_INS) + }; + const JS_IDENT_RE = '[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*'; + const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: KEYWORDS$1 + }; + const SUBST_SIMPLE = { + className: 'subst', + begin: /#[A-Za-z$_]/, + end: /(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/, + keywords: KEYWORDS$1 + }; + const EXPRESSIONS = [ + hljs.BINARY_NUMBER_MODE, + { + className: 'number', + begin: '(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)', + relevance: 0, + starts: { + end: '(\\s*/)?', + relevance: 0 + } // a number tries to eat the following slash to prevent treating it as a regexp + }, + { + className: 'string', + variants: [ + { + begin: /'''/, + end: /'''/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /'/, + end: /'/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /"""/, + end: /"""/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + SUBST_SIMPLE + ] + }, + { + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST, + SUBST_SIMPLE + ] + }, + { + begin: /\\/, + end: /(\s|$)/, + excludeEnd: true + } + ] + }, + { + className: 'regexp', + variants: [ + { + begin: '//', + end: '//[gim]*', + contains: [ + SUBST, + hljs.HASH_COMMENT_MODE + ] + }, + { + // regex can't start with space to parse x / 2 / 3 as two divisions + // regex can't start with *, and it supports an "illegal" in the main mode + begin: /\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/ } + ] + }, + { begin: '@' + JS_IDENT_RE }, + { + begin: '``', + end: '``', + excludeBegin: true, + excludeEnd: true, + subLanguage: 'javascript' + } + ]; + SUBST.contains = EXPRESSIONS; + + const PARAMS = { + className: 'params', + begin: '\\(', + returnBegin: true, + /* We need another contained nameless mode to not have every nested + pair of parens to be called "params" */ + contains: [ + { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS$1, + contains: [ 'self' ].concat(EXPRESSIONS) + } + ] + }; + + const SYMBOLS = { begin: '(#=>|=>|\\|>>|-?->|!->)' }; + + const CLASS_DEFINITION = { + variants: [ + { match: [ + /class\s+/, + JS_IDENT_RE, + /\s+extends\s+/, + JS_IDENT_RE + ] }, + { match: [ + /class\s+/, + JS_IDENT_RE + ] } + ], + scope: { + 2: "title.class", + 4: "title.class.inherited" + }, + keywords: KEYWORDS$1 + }; + + return { + name: 'LiveScript', + aliases: [ 'ls' ], + keywords: KEYWORDS$1, + illegal: /\/\*/, + contains: EXPRESSIONS.concat([ + hljs.COMMENT('\\/\\*', '\\*\\/'), + hljs.HASH_COMMENT_MODE, + SYMBOLS, // relevance booster + { + className: 'function', + contains: [ + TITLE, + PARAMS + ], + returnBegin: true, + variants: [ + { + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B->\\*?', + end: '->\\*?' + }, + { + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?!?(\\(.*\\)\\s*)?\\B[-~]{1,2}>\\*?', + end: '[-~]{1,2}>\\*?' + }, + { + begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B!?[-~]{1,2}>\\*?', + end: '!?[-~]{1,2}>\\*?' + } + ] + }, + CLASS_DEFINITION, + { + begin: JS_IDENT_RE + ':', + end: ':', + returnBegin: true, + returnEnd: true, + relevance: 0 + } + ]) + }; +} + +module.exports = livescript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/llvm.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/llvm.js ***! + \*************************************************************/ +(module) { + +/* +Language: LLVM IR +Author: Michael Rodler +Description: language used as intermediate representation in the LLVM compiler framework +Website: https://llvm.org/docs/LangRef.html +Category: assembler +Audit: 2020 +*/ + +/** @type LanguageFn */ +function llvm(hljs) { + const regex = hljs.regex; + const IDENT_RE = /([-a-zA-Z$._][\w$.-]*)/; + const TYPE = { + className: 'type', + begin: /\bi\d+(?=\s|\b)/ + }; + const OPERATOR = { + className: 'operator', + relevance: 0, + begin: /=/ + }; + const PUNCTUATION = { + className: 'punctuation', + relevance: 0, + begin: /,/ + }; + const NUMBER = { + className: 'number', + variants: [ + { begin: /[su]?0[xX][KMLHR]?[a-fA-F0-9]+/ }, + { begin: /[-+]?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/ } + ], + relevance: 0 + }; + const LABEL = { + className: 'symbol', + variants: [ { begin: /^\s*[a-z]+:/ }, // labels + ], + relevance: 0 + }; + const VARIABLE = { + className: 'variable', + variants: [ + { begin: regex.concat(/%/, IDENT_RE) }, + { begin: /%\d+/ }, + { begin: /#\d+/ }, + ] + }; + const FUNCTION = { + className: 'title', + variants: [ + { begin: regex.concat(/@/, IDENT_RE) }, + { begin: /@\d+/ }, + { begin: regex.concat(/!/, IDENT_RE) }, + { begin: regex.concat(/!\d+/, IDENT_RE) }, + // https://llvm.org/docs/LangRef.html#namedmetadatastructure + // obviously a single digit can also be used in this fashion + { begin: /!\d+/ } + ] + }; + + return { + name: 'LLVM IR', + // TODO: split into different categories of keywords + keywords: { + keyword: 'begin end true false declare define global ' + + 'constant private linker_private internal ' + + 'available_externally linkonce linkonce_odr weak ' + + 'weak_odr appending dllimport dllexport common ' + + 'default hidden protected extern_weak external ' + + 'thread_local zeroinitializer undef null to tail ' + + 'target triple datalayout volatile nuw nsw nnan ' + + 'ninf nsz arcp fast exact inbounds align ' + + 'addrspace section alias module asm sideeffect ' + + 'gc dbg linker_private_weak attributes blockaddress ' + + 'initialexec localdynamic localexec prefix unnamed_addr ' + + 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' + + 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' + + 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' + + 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' + + 'cc c signext zeroext inreg sret nounwind ' + + 'noreturn noalias nocapture byval nest readnone ' + + 'readonly inlinehint noinline alwaysinline optsize ssp ' + + 'sspreq noredzone noimplicitfloat naked builtin cold ' + + 'nobuiltin noduplicate nonlazybind optnone returns_twice ' + + 'sanitize_address sanitize_memory sanitize_thread sspstrong ' + + 'uwtable returned type opaque eq ne slt sgt ' + + 'sle sge ult ugt ule uge oeq one olt ogt ' + + 'ole oge ord uno ueq une x acq_rel acquire ' + + 'alignstack atomic catch cleanup filter inteldialect ' + + 'max min monotonic nand personality release seq_cst ' + + 'singlethread umax umin unordered xchg add fadd ' + + 'sub fsub mul fmul udiv sdiv fdiv urem srem ' + + 'frem shl lshr ashr and or xor icmp fcmp ' + + 'phi call trunc zext sext fptrunc fpext uitofp ' + + 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' + + 'addrspacecast select va_arg ret br switch invoke ' + + 'unwind unreachable indirectbr landingpad resume ' + + 'malloc alloca free load store getelementptr ' + + 'extractelement insertelement shufflevector getresult ' + + 'extractvalue insertvalue atomicrmw cmpxchg fence ' + + 'argmemonly', + type: 'void half bfloat float double fp128 x86_fp80 ppc_fp128 ' + + 'x86_amx x86_mmx ptr label token metadata opaque' + }, + contains: [ + TYPE, + // this matches "empty comments"... + // ...because it's far more likely this is a statement terminator in + // another language than an actual comment + hljs.COMMENT(/;\s*$/, null, { relevance: 0 }), + hljs.COMMENT(/;/, /$/), + { + className: 'string', + begin: /"/, + end: /"/, + contains: [ + { + className: 'char.escape', + match: /\\\d\d/ + } + ] + }, + FUNCTION, + PUNCTUATION, + OPERATOR, + VARIABLE, + LABEL, + NUMBER + ] + }; +} + +module.exports = llvm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/lsl.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/lsl.js ***! + \************************************************************/ +(module) { + +/* +Language: LSL (Linden Scripting Language) +Description: The Linden Scripting Language is used in Second Life by Linden Labs. +Author: Builder's Brewery +Website: http://wiki.secondlife.com/wiki/LSL_Portal +Category: scripting +*/ + +function lsl(hljs) { + const LSL_STRING_ESCAPE_CHARS = { + className: 'subst', + begin: /\\[tn"\\]/ + }; + + const LSL_STRINGS = { + className: 'string', + begin: '"', + end: '"', + contains: [ LSL_STRING_ESCAPE_CHARS ] + }; + + const LSL_NUMBERS = { + className: 'number', + relevance: 0, + begin: hljs.C_NUMBER_RE + }; + + const LSL_CONSTANTS = { + className: 'literal', + variants: [ + { begin: '\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b' }, + { begin: '\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b' }, + { begin: '\\b(FALSE|TRUE)\\b' }, + { begin: '\\b(ZERO_ROTATION)\\b' }, + { begin: '\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b' }, + { begin: '\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b' } + ] + }; + + const LSL_FUNCTIONS = { + className: 'built_in', + begin: '\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b' + }; + + return { + name: 'LSL (Linden Scripting Language)', + illegal: ':', + contains: [ + LSL_STRINGS, + { + className: 'comment', + variants: [ + hljs.COMMENT('//', '$'), + hljs.COMMENT('/\\*', '\\*/') + ], + relevance: 0 + }, + LSL_NUMBERS, + { + className: 'section', + variants: [ + { begin: '\\b(state|default)\\b' }, + { begin: '\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b' } + ] + }, + LSL_FUNCTIONS, + LSL_CONSTANTS, + { + className: 'type', + begin: '\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b' + } + ] + }; +} + +module.exports = lsl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/lua.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/lua.js ***! + \************************************************************/ +(module) { + +/* +Language: Lua +Description: Lua is a powerful, efficient, lightweight, embeddable scripting language. +Author: Andrew Fedorov +Category: common, gaming, scripting +Website: https://www.lua.org +*/ + +function lua(hljs) { + const OPENING_LONG_BRACKET = '\\[=*\\['; + const CLOSING_LONG_BRACKET = '\\]=*\\]'; + const LONG_BRACKETS = { + begin: OPENING_LONG_BRACKET, + end: CLOSING_LONG_BRACKET, + contains: [ 'self' ] + }; + const COMMENTS = [ + hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'), + hljs.COMMENT( + '--' + OPENING_LONG_BRACKET, + CLOSING_LONG_BRACKET, + { + contains: [ LONG_BRACKETS ], + relevance: 10 + } + ) + ]; + return { + name: 'Lua', + aliases: ['pluto'], + keywords: { + $pattern: hljs.UNDERSCORE_IDENT_RE, + literal: "true false nil", + keyword: "and break do else elseif end for goto if in local not or repeat return then until while", + built_in: + // Metatags and globals: + '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' + + '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' + // Standard methods and properties: + + 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring ' + + 'module next pairs pcall print rawequal rawget rawset require select setfenv ' + + 'setmetatable tonumber tostring type unpack xpcall arg self ' + // Library methods and properties (one line per library): + + 'coroutine resume yield status wrap create running debug getupvalue ' + + 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' + + 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' + + 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' + + 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' + + 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' + + 'table setn insert getn foreachi maxn foreach concat sort remove' + }, + contains: COMMENTS.concat([ + { + className: 'function', + beginKeywords: 'function', + end: '\\)', + contains: [ + hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }), + { + className: 'params', + begin: '\\(', + endsWithParent: true, + contains: COMMENTS + } + ].concat(COMMENTS) + }, + hljs.C_NUMBER_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: OPENING_LONG_BRACKET, + end: CLOSING_LONG_BRACKET, + contains: [ LONG_BRACKETS ], + relevance: 5 + } + ]) + }; +} + +module.exports = lua; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/makefile.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/makefile.js ***! + \*****************************************************************/ +(module) { + +/* +Language: Makefile +Author: Ivan Sagalaev +Contributors: Joël Porquet +Website: https://www.gnu.org/software/make/manual/html_node/Introduction.html +Category: common, build-system +*/ + +function makefile(hljs) { + /* Variables: simple (eg $(var)) and special (eg $@) */ + const VARIABLE = { + className: 'variable', + variants: [ + { + begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { begin: /\$[@% +Website: https://daringfireball.net/projects/markdown/ +Category: common, markup +*/ + +function markdown(hljs) { + const regex = hljs.regex; + const INLINE_HTML = { + begin: /<\/?[A-Za-z_]/, + end: '>', + subLanguage: 'xml', + relevance: 0 + }; + const HORIZONTAL_RULE = { + begin: '^[-\\*]{3,}', + end: '$' + }; + const CODE = { + className: 'code', + variants: [ + // TODO: fix to allow these to work with sublanguage also + { begin: '(`{3,})[^`](.|\\n)*?\\1`*[ ]*' }, + { begin: '(~{3,})[^~](.|\\n)*?\\1~*[ ]*' }, + // needed to allow markdown as a sublanguage to work + { + begin: '```', + end: '```+[ ]*$' + }, + { + begin: '~~~', + end: '~~~+[ ]*$' + }, + { begin: '`.+?`' }, + { + begin: '(?=^( {4}|\\t))', + // use contains to gobble up multiple lines to allow the block to be whatever size + // but only have a single open/close tag vs one per line + contains: [ + { + begin: '^( {4}|\\t)', + end: '(\\n)$' + } + ], + relevance: 0 + } + ] + }; + const LIST = { + className: 'bullet', + begin: '^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)', + end: '\\s+', + excludeEnd: true + }; + const LINK_REFERENCE = { + begin: /^\[[^\n]+\]:/, + returnBegin: true, + contains: [ + { + className: 'symbol', + begin: /\[/, + end: /\]/, + excludeBegin: true, + excludeEnd: true + }, + { + className: 'link', + begin: /:\s*/, + end: /$/, + excludeBegin: true + } + ] + }; + const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/; + const LINK = { + variants: [ + // too much like nested array access in so many languages + // to have any real relevance + { + begin: /\[.+?\]\[.*?\]/, + relevance: 0 + }, + // popular internet URLs + { + begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, + relevance: 2 + }, + { + begin: regex.concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/), + relevance: 2 + }, + // relative urls + { + begin: /\[.+?\]\([./?&#].*?\)/, + relevance: 1 + }, + // whatever else, lower relevance (might not be a link at all) + { + begin: /\[.*?\]\(.*?\)/, + relevance: 0 + } + ], + returnBegin: true, + contains: [ + { + // empty strings for alt or link text + match: /\[(?=\])/ }, + { + className: 'string', + relevance: 0, + begin: '\\[', + end: '\\]', + excludeBegin: true, + returnEnd: true + }, + { + className: 'link', + relevance: 0, + begin: '\\]\\(', + end: '\\)', + excludeBegin: true, + excludeEnd: true + }, + { + className: 'symbol', + relevance: 0, + begin: '\\]\\[', + end: '\\]', + excludeBegin: true, + excludeEnd: true + } + ] + }; + const BOLD = { + className: 'strong', + contains: [], // defined later + variants: [ + { + begin: /_{2}(?!\s)/, + end: /_{2}/ + }, + { + begin: /\*{2}(?!\s)/, + end: /\*{2}/ + } + ] + }; + const ITALIC = { + className: 'emphasis', + contains: [], // defined later + variants: [ + { + begin: /\*(?![*\s])/, + end: /\*/ + }, + { + begin: /_(?![_\s])/, + end: /_/, + relevance: 0 + } + ] + }; + + // 3 level deep nesting is not allowed because it would create confusion + // in cases like `***testing***` because where we don't know if the last + // `***` is starting a new bold/italic or finishing the last one + const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] }); + const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] }); + BOLD.contains.push(ITALIC_WITHOUT_BOLD); + ITALIC.contains.push(BOLD_WITHOUT_ITALIC); + + let CONTAINABLE = [ + INLINE_HTML, + LINK + ]; + + [ + BOLD, + ITALIC, + BOLD_WITHOUT_ITALIC, + ITALIC_WITHOUT_BOLD + ].forEach(m => { + m.contains = m.contains.concat(CONTAINABLE); + }); + + CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC); + + const HEADER = { + className: 'section', + variants: [ + { + begin: '^#{1,6}', + end: '$', + contains: CONTAINABLE + }, + { + begin: '(?=^.+?\\n[=-]{2,}$)', + contains: [ + { begin: '^[=-]*$' }, + { + begin: '^', + end: "\\n", + contains: CONTAINABLE + } + ] + } + ] + }; + + const BLOCKQUOTE = { + className: 'quote', + begin: '^>\\s+', + contains: CONTAINABLE, + end: '$' + }; + + const ENTITY = { + //https://spec.commonmark.org/0.31.2/#entity-references + scope: 'literal', + match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/ + }; + + return { + name: 'Markdown', + aliases: [ + 'md', + 'mkdown', + 'mkd' + ], + contains: [ + HEADER, + INLINE_HTML, + LIST, + BOLD, + ITALIC, + BLOCKQUOTE, + CODE, + HORIZONTAL_RULE, + LINK, + LINK_REFERENCE, + ENTITY + ] + }; +} + +module.exports = markdown; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/mathematica.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/mathematica.js ***! + \********************************************************************/ +(module) { + +const SYSTEM_SYMBOLS = [ + "AASTriangle", + "AbelianGroup", + "Abort", + "AbortKernels", + "AbortProtect", + "AbortScheduledTask", + "Above", + "Abs", + "AbsArg", + "AbsArgPlot", + "Absolute", + "AbsoluteCorrelation", + "AbsoluteCorrelationFunction", + "AbsoluteCurrentValue", + "AbsoluteDashing", + "AbsoluteFileName", + "AbsoluteOptions", + "AbsolutePointSize", + "AbsoluteThickness", + "AbsoluteTime", + "AbsoluteTiming", + "AcceptanceThreshold", + "AccountingForm", + "Accumulate", + "Accuracy", + "AccuracyGoal", + "AcousticAbsorbingValue", + "AcousticImpedanceValue", + "AcousticNormalVelocityValue", + "AcousticPDEComponent", + "AcousticPressureCondition", + "AcousticRadiationValue", + "AcousticSoundHardValue", + "AcousticSoundSoftCondition", + "ActionDelay", + "ActionMenu", + "ActionMenuBox", + "ActionMenuBoxOptions", + "Activate", + "Active", + "ActiveClassification", + "ActiveClassificationObject", + "ActiveItem", + "ActivePrediction", + "ActivePredictionObject", + "ActiveStyle", + "AcyclicGraphQ", + "AddOnHelpPath", + "AddSides", + "AddTo", + "AddToSearchIndex", + "AddUsers", + "AdjacencyGraph", + "AdjacencyList", + "AdjacencyMatrix", + "AdjacentMeshCells", + "Adjugate", + "AdjustmentBox", + "AdjustmentBoxOptions", + "AdjustTimeSeriesForecast", + "AdministrativeDivisionData", + "AffineHalfSpace", + "AffineSpace", + "AffineStateSpaceModel", + "AffineTransform", + "After", + "AggregatedEntityClass", + "AggregationLayer", + "AircraftData", + "AirportData", + "AirPressureData", + "AirSoundAttenuation", + "AirTemperatureData", + "AiryAi", + "AiryAiPrime", + "AiryAiZero", + "AiryBi", + "AiryBiPrime", + "AiryBiZero", + "AlgebraicIntegerQ", + "AlgebraicNumber", + "AlgebraicNumberDenominator", + "AlgebraicNumberNorm", + "AlgebraicNumberPolynomial", + "AlgebraicNumberTrace", + "AlgebraicRules", + "AlgebraicRulesData", + "Algebraics", + "AlgebraicUnitQ", + "Alignment", + "AlignmentMarker", + "AlignmentPoint", + "All", + "AllowAdultContent", + "AllowChatServices", + "AllowedCloudExtraParameters", + "AllowedCloudParameterExtensions", + "AllowedDimensions", + "AllowedFrequencyRange", + "AllowedHeads", + "AllowGroupClose", + "AllowIncomplete", + "AllowInlineCells", + "AllowKernelInitialization", + "AllowLooseGrammar", + "AllowReverseGroupClose", + "AllowScriptLevelChange", + "AllowVersionUpdate", + "AllTrue", + "Alphabet", + "AlphabeticOrder", + "AlphabeticSort", + "AlphaChannel", + "AlternateImage", + "AlternatingFactorial", + "AlternatingGroup", + "AlternativeHypothesis", + "Alternatives", + "AltitudeMethod", + "AmbientLight", + "AmbiguityFunction", + "AmbiguityList", + "Analytic", + "AnatomyData", + "AnatomyForm", + "AnatomyPlot3D", + "AnatomySkinStyle", + "AnatomyStyling", + "AnchoredSearch", + "And", + "AndersonDarlingTest", + "AngerJ", + "AngleBisector", + "AngleBracket", + "AnglePath", + "AnglePath3D", + "AngleVector", + "AngularGauge", + "Animate", + "AnimatedImage", + "AnimationCycleOffset", + "AnimationCycleRepetitions", + "AnimationDirection", + "AnimationDisplayTime", + "AnimationRate", + "AnimationRepetitions", + "AnimationRunning", + "AnimationRunTime", + "AnimationTimeIndex", + "AnimationVideo", + "Animator", + "AnimatorBox", + "AnimatorBoxOptions", + "AnimatorElements", + "Annotate", + "Annotation", + "AnnotationDelete", + "AnnotationKeys", + "AnnotationRules", + "AnnotationValue", + "Annuity", + "AnnuityDue", + "Annulus", + "AnomalyDetection", + "AnomalyDetector", + "AnomalyDetectorFunction", + "Anonymous", + "Antialiasing", + "Antihermitian", + "AntihermitianMatrixQ", + "Antisymmetric", + "AntisymmetricMatrixQ", + "Antonyms", + "AnyOrder", + "AnySubset", + "AnyTrue", + "Apart", + "ApartSquareFree", + "APIFunction", + "Appearance", + "AppearanceElements", + "AppearanceRules", + "AppellF1", + "Append", + "AppendCheck", + "AppendLayer", + "AppendTo", + "Application", + "Apply", + "ApplyReaction", + "ApplySides", + "ApplyTo", + "ArcCos", + "ArcCosh", + "ArcCot", + "ArcCoth", + "ArcCsc", + "ArcCsch", + "ArcCurvature", + "ARCHProcess", + "ArcLength", + "ArcSec", + "ArcSech", + "ArcSin", + "ArcSinDistribution", + "ArcSinh", + "ArcTan", + "ArcTanh", + "Area", + "Arg", + "ArgMax", + "ArgMin", + "ArgumentCountQ", + "ArgumentsOptions", + "ARIMAProcess", + "ArithmeticGeometricMean", + "ARMAProcess", + "Around", + "AroundReplace", + "ARProcess", + "Array", + "ArrayComponents", + "ArrayDepth", + "ArrayFilter", + "ArrayFlatten", + "ArrayMesh", + "ArrayPad", + "ArrayPlot", + "ArrayPlot3D", + "ArrayQ", + "ArrayReduce", + "ArrayResample", + "ArrayReshape", + "ArrayRules", + "Arrays", + "Arrow", + "Arrow3DBox", + "ArrowBox", + "Arrowheads", + "ASATriangle", + "Ask", + "AskAppend", + "AskConfirm", + "AskDisplay", + "AskedQ", + "AskedValue", + "AskFunction", + "AskState", + "AskTemplateDisplay", + "AspectRatio", + "AspectRatioFixed", + "Assert", + "AssessmentFunction", + "AssessmentResultObject", + "AssociateTo", + "Association", + "AssociationFormat", + "AssociationMap", + "AssociationQ", + "AssociationThread", + "AssumeDeterministic", + "Assuming", + "Assumptions", + "AstroAngularSeparation", + "AstroBackground", + "AstroCenter", + "AstroDistance", + "AstroGraphics", + "AstroGridLines", + "AstroGridLinesStyle", + "AstronomicalData", + "AstroPosition", + "AstroProjection", + "AstroRange", + "AstroRangePadding", + "AstroReferenceFrame", + "AstroStyling", + "AstroZoomLevel", + "Asymptotic", + "AsymptoticDSolveValue", + "AsymptoticEqual", + "AsymptoticEquivalent", + "AsymptoticExpectation", + "AsymptoticGreater", + "AsymptoticGreaterEqual", + "AsymptoticIntegrate", + "AsymptoticLess", + "AsymptoticLessEqual", + "AsymptoticOutputTracker", + "AsymptoticProbability", + "AsymptoticProduct", + "AsymptoticRSolveValue", + "AsymptoticSolve", + "AsymptoticSum", + "Asynchronous", + "AsynchronousTaskObject", + "AsynchronousTasks", + "Atom", + "AtomCoordinates", + "AtomCount", + "AtomDiagramCoordinates", + "AtomLabels", + "AtomLabelStyle", + "AtomList", + "AtomQ", + "AttachCell", + "AttachedCell", + "AttentionLayer", + "Attributes", + "Audio", + "AudioAmplify", + "AudioAnnotate", + "AudioAnnotationLookup", + "AudioBlockMap", + "AudioCapture", + "AudioChannelAssignment", + "AudioChannelCombine", + "AudioChannelMix", + "AudioChannels", + "AudioChannelSeparate", + "AudioData", + "AudioDelay", + "AudioDelete", + "AudioDevice", + "AudioDistance", + "AudioEncoding", + "AudioFade", + "AudioFrequencyShift", + "AudioGenerator", + "AudioIdentify", + "AudioInputDevice", + "AudioInsert", + "AudioInstanceQ", + "AudioIntervals", + "AudioJoin", + "AudioLabel", + "AudioLength", + "AudioLocalMeasurements", + "AudioLooping", + "AudioLoudness", + "AudioMeasurements", + "AudioNormalize", + "AudioOutputDevice", + "AudioOverlay", + "AudioPad", + "AudioPan", + "AudioPartition", + "AudioPause", + "AudioPitchShift", + "AudioPlay", + "AudioPlot", + "AudioQ", + "AudioRecord", + "AudioReplace", + "AudioResample", + "AudioReverb", + "AudioReverse", + "AudioSampleRate", + "AudioSpectralMap", + "AudioSpectralTransformation", + "AudioSplit", + "AudioStop", + "AudioStream", + "AudioStreams", + "AudioTimeStretch", + "AudioTrackApply", + "AudioTrackSelection", + "AudioTrim", + "AudioType", + "AugmentedPolyhedron", + "AugmentedSymmetricPolynomial", + "Authenticate", + "Authentication", + "AuthenticationDialog", + "AutoAction", + "Autocomplete", + "AutocompletionFunction", + "AutoCopy", + "AutocorrelationTest", + "AutoDelete", + "AutoEvaluateEvents", + "AutoGeneratedPackage", + "AutoIndent", + "AutoIndentSpacings", + "AutoItalicWords", + "AutoloadPath", + "AutoMatch", + "Automatic", + "AutomaticImageSize", + "AutoMultiplicationSymbol", + "AutoNumberFormatting", + "AutoOpenNotebooks", + "AutoOpenPalettes", + "AutoOperatorRenderings", + "AutoQuoteCharacters", + "AutoRefreshed", + "AutoRemove", + "AutorunSequencing", + "AutoScaling", + "AutoScroll", + "AutoSpacing", + "AutoStyleOptions", + "AutoStyleWords", + "AutoSubmitting", + "Axes", + "AxesEdge", + "AxesLabel", + "AxesOrigin", + "AxesStyle", + "AxiomaticTheory", + "Axis", + "Axis3DBox", + "Axis3DBoxOptions", + "AxisBox", + "AxisBoxOptions", + "AxisLabel", + "AxisObject", + "AxisStyle", + "BabyMonsterGroupB", + "Back", + "BackFaceColor", + "BackFaceGlowColor", + "BackFaceOpacity", + "BackFaceSpecularColor", + "BackFaceSpecularExponent", + "BackFaceSurfaceAppearance", + "BackFaceTexture", + "Background", + "BackgroundAppearance", + "BackgroundTasksSettings", + "Backslash", + "Backsubstitution", + "Backward", + "Ball", + "Band", + "BandpassFilter", + "BandstopFilter", + "BarabasiAlbertGraphDistribution", + "BarChart", + "BarChart3D", + "BarcodeImage", + "BarcodeRecognize", + "BaringhausHenzeTest", + "BarLegend", + "BarlowProschanImportance", + "BarnesG", + "BarOrigin", + "BarSpacing", + "BartlettHannWindow", + "BartlettWindow", + "BaseDecode", + "BaseEncode", + "BaseForm", + "Baseline", + "BaselinePosition", + "BaseStyle", + "BasicRecurrentLayer", + "BatchNormalizationLayer", + "BatchSize", + "BatesDistribution", + "BattleLemarieWavelet", + "BayesianMaximization", + "BayesianMaximizationObject", + "BayesianMinimization", + "BayesianMinimizationObject", + "Because", + "BeckmannDistribution", + "Beep", + "Before", + "Begin", + "BeginDialogPacket", + "BeginPackage", + "BellB", + "BellY", + "Below", + "BenfordDistribution", + "BeniniDistribution", + "BenktanderGibratDistribution", + "BenktanderWeibullDistribution", + "BernoulliB", + "BernoulliDistribution", + "BernoulliGraphDistribution", + "BernoulliProcess", + "BernsteinBasis", + "BesagL", + "BesselFilterModel", + "BesselI", + "BesselJ", + "BesselJZero", + "BesselK", + "BesselY", + "BesselYZero", + "Beta", + "BetaBinomialDistribution", + "BetaDistribution", + "BetaNegativeBinomialDistribution", + "BetaPrimeDistribution", + "BetaRegularized", + "Between", + "BetweennessCentrality", + "Beveled", + "BeveledPolyhedron", + "BezierCurve", + "BezierCurve3DBox", + "BezierCurve3DBoxOptions", + "BezierCurveBox", + "BezierCurveBoxOptions", + "BezierFunction", + "BilateralFilter", + "BilateralLaplaceTransform", + "BilateralZTransform", + "Binarize", + "BinaryDeserialize", + "BinaryDistance", + "BinaryFormat", + "BinaryImageQ", + "BinaryRead", + "BinaryReadList", + "BinarySerialize", + "BinaryWrite", + "BinCounts", + "BinLists", + "BinnedVariogramList", + "Binomial", + "BinomialDistribution", + "BinomialPointProcess", + "BinomialProcess", + "BinormalDistribution", + "BiorthogonalSplineWavelet", + "BioSequence", + "BioSequenceBackTranslateList", + "BioSequenceComplement", + "BioSequenceInstances", + "BioSequenceModify", + "BioSequencePlot", + "BioSequenceQ", + "BioSequenceReverseComplement", + "BioSequenceTranscribe", + "BioSequenceTranslate", + "BipartiteGraphQ", + "BiquadraticFilterModel", + "BirnbaumImportance", + "BirnbaumSaundersDistribution", + "BitAnd", + "BitClear", + "BitGet", + "BitLength", + "BitNot", + "BitOr", + "BitRate", + "BitSet", + "BitShiftLeft", + "BitShiftRight", + "BitXor", + "BiweightLocation", + "BiweightMidvariance", + "Black", + "BlackmanHarrisWindow", + "BlackmanNuttallWindow", + "BlackmanWindow", + "Blank", + "BlankForm", + "BlankNullSequence", + "BlankSequence", + "Blend", + "Block", + "BlockchainAddressData", + "BlockchainBase", + "BlockchainBlockData", + "BlockchainContractValue", + "BlockchainData", + "BlockchainGet", + "BlockchainKeyEncode", + "BlockchainPut", + "BlockchainTokenData", + "BlockchainTransaction", + "BlockchainTransactionData", + "BlockchainTransactionSign", + "BlockchainTransactionSubmit", + "BlockDiagonalMatrix", + "BlockLowerTriangularMatrix", + "BlockMap", + "BlockRandom", + "BlockUpperTriangularMatrix", + "BlomqvistBeta", + "BlomqvistBetaTest", + "Blue", + "Blur", + "Blurring", + "BodePlot", + "BohmanWindow", + "Bold", + "Bond", + "BondCount", + "BondLabels", + "BondLabelStyle", + "BondList", + "BondQ", + "Bookmarks", + "Boole", + "BooleanConsecutiveFunction", + "BooleanConvert", + "BooleanCountingFunction", + "BooleanFunction", + "BooleanGraph", + "BooleanMaxterms", + "BooleanMinimize", + "BooleanMinterms", + "BooleanQ", + "BooleanRegion", + "Booleans", + "BooleanStrings", + "BooleanTable", + "BooleanVariables", + "BorderDimensions", + "BorelTannerDistribution", + "Bottom", + "BottomHatTransform", + "BoundaryDiscretizeGraphics", + "BoundaryDiscretizeRegion", + "BoundaryMesh", + "BoundaryMeshRegion", + "BoundaryMeshRegionQ", + "BoundaryStyle", + "BoundedRegionQ", + "BoundingRegion", + "Bounds", + "Box", + "BoxBaselineShift", + "BoxData", + "BoxDimensions", + "Boxed", + "Boxes", + "BoxForm", + "BoxFormFormatTypes", + "BoxFrame", + "BoxID", + "BoxMargins", + "BoxMatrix", + "BoxObject", + "BoxRatios", + "BoxRotation", + "BoxRotationPoint", + "BoxStyle", + "BoxWhiskerChart", + "Bra", + "BracketingBar", + "BraKet", + "BrayCurtisDistance", + "BreadthFirstScan", + "Break", + "BridgeData", + "BrightnessEqualize", + "BroadcastStationData", + "Brown", + "BrownForsytheTest", + "BrownianBridgeProcess", + "BrowserCategory", + "BSplineBasis", + "BSplineCurve", + "BSplineCurve3DBox", + "BSplineCurve3DBoxOptions", + "BSplineCurveBox", + "BSplineCurveBoxOptions", + "BSplineFunction", + "BSplineSurface", + "BSplineSurface3DBox", + "BSplineSurface3DBoxOptions", + "BubbleChart", + "BubbleChart3D", + "BubbleScale", + "BubbleSizes", + "BuckyballGraph", + "BuildCompiledComponent", + "BuildingData", + "BulletGauge", + "BusinessDayQ", + "ButterflyGraph", + "ButterworthFilterModel", + "Button", + "ButtonBar", + "ButtonBox", + "ButtonBoxOptions", + "ButtonCell", + "ButtonContents", + "ButtonData", + "ButtonEvaluator", + "ButtonExpandable", + "ButtonFrame", + "ButtonFunction", + "ButtonMargins", + "ButtonMinHeight", + "ButtonNote", + "ButtonNotebook", + "ButtonSource", + "ButtonStyle", + "ButtonStyleMenuListing", + "Byte", + "ByteArray", + "ByteArrayFormat", + "ByteArrayFormatQ", + "ByteArrayQ", + "ByteArrayToString", + "ByteCount", + "ByteOrdering", + "C", + "CachedValue", + "CacheGraphics", + "CachePersistence", + "CalendarConvert", + "CalendarData", + "CalendarType", + "Callout", + "CalloutMarker", + "CalloutStyle", + "CallPacket", + "CanberraDistance", + "Cancel", + "CancelButton", + "CandlestickChart", + "CanonicalGraph", + "CanonicalizePolygon", + "CanonicalizePolyhedron", + "CanonicalizeRegion", + "CanonicalName", + "CanonicalWarpingCorrespondence", + "CanonicalWarpingDistance", + "CantorMesh", + "CantorStaircase", + "Canvas", + "Cap", + "CapForm", + "CapitalDifferentialD", + "Capitalize", + "CapsuleShape", + "CaptureRunning", + "CaputoD", + "CardinalBSplineBasis", + "CarlemanLinearize", + "CarlsonRC", + "CarlsonRD", + "CarlsonRE", + "CarlsonRF", + "CarlsonRG", + "CarlsonRJ", + "CarlsonRK", + "CarlsonRM", + "CarmichaelLambda", + "CaseOrdering", + "Cases", + "CaseSensitive", + "Cashflow", + "Casoratian", + "Cast", + "Catalan", + "CatalanNumber", + "Catch", + "CategoricalDistribution", + "Catenate", + "CatenateLayer", + "CauchyDistribution", + "CauchyMatrix", + "CauchyPointProcess", + "CauchyWindow", + "CayleyGraph", + "CDF", + "CDFDeploy", + "CDFInformation", + "CDFWavelet", + "Ceiling", + "CelestialSystem", + "Cell", + "CellAutoOverwrite", + "CellBaseline", + "CellBoundingBox", + "CellBracketOptions", + "CellChangeTimes", + "CellContents", + "CellContext", + "CellDingbat", + "CellDingbatMargin", + "CellDynamicExpression", + "CellEditDuplicate", + "CellElementsBoundingBox", + "CellElementSpacings", + "CellEpilog", + "CellEvaluationDuplicate", + "CellEvaluationFunction", + "CellEvaluationLanguage", + "CellEventActions", + "CellFrame", + "CellFrameColor", + "CellFrameLabelMargins", + "CellFrameLabels", + "CellFrameMargins", + "CellFrameStyle", + "CellGroup", + "CellGroupData", + "CellGrouping", + "CellGroupingRules", + "CellHorizontalScrolling", + "CellID", + "CellInsertionPointCell", + "CellLabel", + "CellLabelAutoDelete", + "CellLabelMargins", + "CellLabelPositioning", + "CellLabelStyle", + "CellLabelTemplate", + "CellMargins", + "CellObject", + "CellOpen", + "CellPrint", + "CellProlog", + "Cells", + "CellSize", + "CellStyle", + "CellTags", + "CellTrayPosition", + "CellTrayWidgets", + "CellularAutomaton", + "CensoredDistribution", + "Censoring", + "Center", + "CenterArray", + "CenterDot", + "CenteredInterval", + "CentralFeature", + "CentralMoment", + "CentralMomentGeneratingFunction", + "Cepstrogram", + "CepstrogramArray", + "CepstrumArray", + "CForm", + "ChampernowneNumber", + "ChangeOptions", + "ChannelBase", + "ChannelBrokerAction", + "ChannelDatabin", + "ChannelHistoryLength", + "ChannelListen", + "ChannelListener", + "ChannelListeners", + "ChannelListenerWait", + "ChannelObject", + "ChannelPreSendFunction", + "ChannelReceiverFunction", + "ChannelSend", + "ChannelSubscribers", + "ChanVeseBinarize", + "Character", + "CharacterCounts", + "CharacterEncoding", + "CharacterEncodingsPath", + "CharacteristicFunction", + "CharacteristicPolynomial", + "CharacterName", + "CharacterNormalize", + "CharacterRange", + "Characters", + "ChartBaseStyle", + "ChartElementData", + "ChartElementDataFunction", + "ChartElementFunction", + "ChartElements", + "ChartLabels", + "ChartLayout", + "ChartLegends", + "ChartStyle", + "Chebyshev1FilterModel", + "Chebyshev2FilterModel", + "ChebyshevDistance", + "ChebyshevT", + "ChebyshevU", + "Check", + "CheckAbort", + "CheckAll", + "CheckArguments", + "Checkbox", + "CheckboxBar", + "CheckboxBox", + "CheckboxBoxOptions", + "ChemicalConvert", + "ChemicalData", + "ChemicalFormula", + "ChemicalInstance", + "ChemicalReaction", + "ChessboardDistance", + "ChiDistribution", + "ChineseRemainder", + "ChiSquareDistribution", + "ChoiceButtons", + "ChoiceDialog", + "CholeskyDecomposition", + "Chop", + "ChromaticityPlot", + "ChromaticityPlot3D", + "ChromaticPolynomial", + "Circle", + "CircleBox", + "CircleDot", + "CircleMinus", + "CirclePlus", + "CirclePoints", + "CircleThrough", + "CircleTimes", + "CirculantGraph", + "CircularArcThrough", + "CircularOrthogonalMatrixDistribution", + "CircularQuaternionMatrixDistribution", + "CircularRealMatrixDistribution", + "CircularSymplecticMatrixDistribution", + "CircularUnitaryMatrixDistribution", + "Circumsphere", + "CityData", + "ClassifierFunction", + "ClassifierInformation", + "ClassifierMeasurements", + "ClassifierMeasurementsObject", + "Classify", + "ClassPriors", + "Clear", + "ClearAll", + "ClearAttributes", + "ClearCookies", + "ClearPermissions", + "ClearSystemCache", + "ClebschGordan", + "ClickPane", + "ClickToCopy", + "ClickToCopyEnabled", + "Clip", + "ClipboardNotebook", + "ClipFill", + "ClippingStyle", + "ClipPlanes", + "ClipPlanesStyle", + "ClipRange", + "Clock", + "ClockGauge", + "ClockwiseContourIntegral", + "Close", + "Closed", + "CloseKernels", + "ClosenessCentrality", + "Closing", + "ClosingAutoSave", + "ClosingEvent", + "CloudAccountData", + "CloudBase", + "CloudConnect", + "CloudConnections", + "CloudDeploy", + "CloudDirectory", + "CloudDisconnect", + "CloudEvaluate", + "CloudExport", + "CloudExpression", + "CloudExpressions", + "CloudFunction", + "CloudGet", + "CloudImport", + "CloudLoggingData", + "CloudObject", + "CloudObjectInformation", + "CloudObjectInformationData", + "CloudObjectNameFormat", + "CloudObjects", + "CloudObjectURLType", + "CloudPublish", + "CloudPut", + "CloudRenderingMethod", + "CloudSave", + "CloudShare", + "CloudSubmit", + "CloudSymbol", + "CloudUnshare", + "CloudUserID", + "ClusterClassify", + "ClusterDissimilarityFunction", + "ClusteringComponents", + "ClusteringMeasurements", + "ClusteringTree", + "CMYKColor", + "Coarse", + "CodeAssistOptions", + "Coefficient", + "CoefficientArrays", + "CoefficientDomain", + "CoefficientList", + "CoefficientRules", + "CoifletWavelet", + "Collect", + "CollinearPoints", + "Colon", + "ColonForm", + "ColorBalance", + "ColorCombine", + "ColorConvert", + "ColorCoverage", + "ColorData", + "ColorDataFunction", + "ColorDetect", + "ColorDistance", + "ColorFunction", + "ColorFunctionBinning", + "ColorFunctionScaling", + "Colorize", + "ColorNegate", + "ColorOutput", + "ColorProfileData", + "ColorQ", + "ColorQuantize", + "ColorReplace", + "ColorRules", + "ColorSelectorSettings", + "ColorSeparate", + "ColorSetter", + "ColorSetterBox", + "ColorSetterBoxOptions", + "ColorSlider", + "ColorsNear", + "ColorSpace", + "ColorToneMapping", + "Column", + "ColumnAlignments", + "ColumnBackgrounds", + "ColumnForm", + "ColumnLines", + "ColumnsEqual", + "ColumnSpacings", + "ColumnWidths", + "CombinatorB", + "CombinatorC", + "CombinatorI", + "CombinatorK", + "CombinatorS", + "CombinatorW", + "CombinatorY", + "CombinedEntityClass", + "CombinerFunction", + "CometData", + "CommonDefaultFormatTypes", + "Commonest", + "CommonestFilter", + "CommonName", + "CommonUnits", + "CommunityBoundaryStyle", + "CommunityGraphPlot", + "CommunityLabels", + "CommunityRegionStyle", + "CompanyData", + "CompatibleUnitQ", + "CompilationOptions", + "CompilationTarget", + "Compile", + "Compiled", + "CompiledCodeFunction", + "CompiledComponent", + "CompiledExpressionDeclaration", + "CompiledFunction", + "CompiledLayer", + "CompilerCallback", + "CompilerEnvironment", + "CompilerEnvironmentAppend", + "CompilerEnvironmentAppendTo", + "CompilerEnvironmentObject", + "CompilerOptions", + "Complement", + "ComplementedEntityClass", + "CompleteGraph", + "CompleteGraphQ", + "CompleteIntegral", + "CompleteKaryTree", + "CompletionsListPacket", + "Complex", + "ComplexArrayPlot", + "ComplexContourPlot", + "Complexes", + "ComplexExpand", + "ComplexInfinity", + "ComplexityFunction", + "ComplexListPlot", + "ComplexPlot", + "ComplexPlot3D", + "ComplexRegionPlot", + "ComplexStreamPlot", + "ComplexVectorPlot", + "ComponentMeasurements", + "ComponentwiseContextMenu", + "Compose", + "ComposeList", + "ComposeSeries", + "CompositeQ", + "Composition", + "CompoundElement", + "CompoundExpression", + "CompoundPoissonDistribution", + "CompoundPoissonProcess", + "CompoundRenewalProcess", + "Compress", + "CompressedData", + "CompressionLevel", + "ComputeUncertainty", + "ConcaveHullMesh", + "Condition", + "ConditionalExpression", + "Conditioned", + "Cone", + "ConeBox", + "ConfidenceLevel", + "ConfidenceRange", + "ConfidenceTransform", + "ConfigurationPath", + "Confirm", + "ConfirmAssert", + "ConfirmBy", + "ConfirmMatch", + "ConfirmQuiet", + "ConformationMethod", + "ConformAudio", + "ConformImages", + "Congruent", + "ConicGradientFilling", + "ConicHullRegion", + "ConicHullRegion3DBox", + "ConicHullRegion3DBoxOptions", + "ConicHullRegionBox", + "ConicHullRegionBoxOptions", + "ConicOptimization", + "Conjugate", + "ConjugateTranspose", + "Conjunction", + "Connect", + "ConnectedComponents", + "ConnectedGraphComponents", + "ConnectedGraphQ", + "ConnectedMeshComponents", + "ConnectedMoleculeComponents", + "ConnectedMoleculeQ", + "ConnectionSettings", + "ConnectLibraryCallbackFunction", + "ConnectSystemModelComponents", + "ConnectSystemModelController", + "ConnesWindow", + "ConoverTest", + "ConservativeConvectionPDETerm", + "ConsoleMessage", + "Constant", + "ConstantArray", + "ConstantArrayLayer", + "ConstantImage", + "ConstantPlusLayer", + "ConstantRegionQ", + "Constants", + "ConstantTimesLayer", + "ConstellationData", + "ConstrainedMax", + "ConstrainedMin", + "Construct", + "Containing", + "ContainsAll", + "ContainsAny", + "ContainsExactly", + "ContainsNone", + "ContainsOnly", + "ContentDetectorFunction", + "ContentFieldOptions", + "ContentLocationFunction", + "ContentObject", + "ContentPadding", + "ContentsBoundingBox", + "ContentSelectable", + "ContentSize", + "Context", + "ContextMenu", + "Contexts", + "ContextToFileName", + "Continuation", + "Continue", + "ContinuedFraction", + "ContinuedFractionK", + "ContinuousAction", + "ContinuousMarkovProcess", + "ContinuousTask", + "ContinuousTimeModelQ", + "ContinuousWaveletData", + "ContinuousWaveletTransform", + "ContourDetect", + "ContourGraphics", + "ContourIntegral", + "ContourLabels", + "ContourLines", + "ContourPlot", + "ContourPlot3D", + "Contours", + "ContourShading", + "ContourSmoothing", + "ContourStyle", + "ContraharmonicMean", + "ContrastiveLossLayer", + "Control", + "ControlActive", + "ControlAlignment", + "ControlGroupContentsBox", + "ControllabilityGramian", + "ControllabilityMatrix", + "ControllableDecomposition", + "ControllableModelQ", + "ControllerDuration", + "ControllerInformation", + "ControllerInformationData", + "ControllerLinking", + "ControllerManipulate", + "ControllerMethod", + "ControllerPath", + "ControllerState", + "ControlPlacement", + "ControlsRendering", + "ControlType", + "ConvectionPDETerm", + "Convergents", + "ConversionOptions", + "ConversionRules", + "ConvertToPostScript", + "ConvertToPostScriptPacket", + "ConvexHullMesh", + "ConvexHullRegion", + "ConvexOptimization", + "ConvexPolygonQ", + "ConvexPolyhedronQ", + "ConvexRegionQ", + "ConvolutionLayer", + "Convolve", + "ConwayGroupCo1", + "ConwayGroupCo2", + "ConwayGroupCo3", + "CookieFunction", + "Cookies", + "CoordinateBoundingBox", + "CoordinateBoundingBoxArray", + "CoordinateBounds", + "CoordinateBoundsArray", + "CoordinateChartData", + "CoordinatesToolOptions", + "CoordinateTransform", + "CoordinateTransformData", + "CoplanarPoints", + "CoprimeQ", + "Coproduct", + "CopulaDistribution", + "Copyable", + "CopyDatabin", + "CopyDirectory", + "CopyFile", + "CopyFunction", + "CopyTag", + "CopyToClipboard", + "CoreNilpotentDecomposition", + "CornerFilter", + "CornerNeighbors", + "Correlation", + "CorrelationDistance", + "CorrelationFunction", + "CorrelationTest", + "Cos", + "Cosh", + "CoshIntegral", + "CosineDistance", + "CosineWindow", + "CosIntegral", + "Cot", + "Coth", + "CoulombF", + "CoulombG", + "CoulombH1", + "CoulombH2", + "Count", + "CountDistinct", + "CountDistinctBy", + "CounterAssignments", + "CounterBox", + "CounterBoxOptions", + "CounterClockwiseContourIntegral", + "CounterEvaluator", + "CounterFunction", + "CounterIncrements", + "CounterStyle", + "CounterStyleMenuListing", + "CountRoots", + "CountryData", + "Counts", + "CountsBy", + "Covariance", + "CovarianceEstimatorFunction", + "CovarianceFunction", + "CoxianDistribution", + "CoxIngersollRossProcess", + "CoxModel", + "CoxModelFit", + "CramerVonMisesTest", + "CreateArchive", + "CreateCellID", + "CreateChannel", + "CreateCloudExpression", + "CreateCompilerEnvironment", + "CreateDatabin", + "CreateDataStructure", + "CreateDataSystemModel", + "CreateDialog", + "CreateDirectory", + "CreateDocument", + "CreateFile", + "CreateIntermediateDirectories", + "CreateLicenseEntitlement", + "CreateManagedLibraryExpression", + "CreateNotebook", + "CreatePacletArchive", + "CreatePalette", + "CreatePermissionsGroup", + "CreateScheduledTask", + "CreateSearchIndex", + "CreateSystemModel", + "CreateTemporary", + "CreateTypeInstance", + "CreateUUID", + "CreateWindow", + "CriterionFunction", + "CriticalityFailureImportance", + "CriticalitySuccessImportance", + "CriticalSection", + "Cross", + "CrossEntropyLossLayer", + "CrossingCount", + "CrossingDetect", + "CrossingPolygon", + "CrossMatrix", + "Csc", + "Csch", + "CSGRegion", + "CSGRegionQ", + "CSGRegionTree", + "CTCLossLayer", + "Cube", + "CubeRoot", + "Cubics", + "Cuboid", + "CuboidBox", + "CuboidBoxOptions", + "Cumulant", + "CumulantGeneratingFunction", + "CumulativeFeatureImpactPlot", + "Cup", + "CupCap", + "Curl", + "CurlyDoubleQuote", + "CurlyQuote", + "CurrencyConvert", + "CurrentDate", + "CurrentImage", + "CurrentNotebookImage", + "CurrentScreenImage", + "CurrentValue", + "Curry", + "CurryApplied", + "CurvatureFlowFilter", + "CurveClosed", + "Cyan", + "CycleGraph", + "CycleIndexPolynomial", + "Cycles", + "CyclicGroup", + "Cyclotomic", + "Cylinder", + "CylinderBox", + "CylinderBoxOptions", + "CylindricalDecomposition", + "CylindricalDecompositionFunction", + "D", + "DagumDistribution", + "DamData", + "DamerauLevenshteinDistance", + "DampingFactor", + "Darker", + "Dashed", + "Dashing", + "DatabaseConnect", + "DatabaseDisconnect", + "DatabaseReference", + "Databin", + "DatabinAdd", + "DatabinRemove", + "Databins", + "DatabinSubmit", + "DatabinUpload", + "DataCompression", + "DataDistribution", + "DataRange", + "DataReversed", + "Dataset", + "DatasetDisplayPanel", + "DatasetTheme", + "DataStructure", + "DataStructureQ", + "Date", + "DateBounds", + "Dated", + "DateDelimiters", + "DateDifference", + "DatedUnit", + "DateFormat", + "DateFunction", + "DateGranularity", + "DateHistogram", + "DateInterval", + "DateList", + "DateListLogPlot", + "DateListPlot", + "DateListStepPlot", + "DateObject", + "DateObjectQ", + "DateOverlapsQ", + "DatePattern", + "DatePlus", + "DateRange", + "DateReduction", + "DateScale", + "DateSelect", + "DateString", + "DateTicksFormat", + "DateValue", + "DateWithinQ", + "DaubechiesWavelet", + "DavisDistribution", + "DawsonF", + "DayCount", + "DayCountConvention", + "DayHemisphere", + "DaylightQ", + "DayMatchQ", + "DayName", + "DayNightTerminator", + "DayPlus", + "DayRange", + "DayRound", + "DeBruijnGraph", + "DeBruijnSequence", + "Debug", + "DebugTag", + "Decapitalize", + "Decimal", + "DecimalForm", + "DeclareCompiledComponent", + "DeclareKnownSymbols", + "DeclarePackage", + "Decompose", + "DeconvolutionLayer", + "Decrement", + "Decrypt", + "DecryptFile", + "DedekindEta", + "DeepSpaceProbeData", + "Default", + "Default2DTool", + "Default3DTool", + "DefaultAttachedCellStyle", + "DefaultAxesStyle", + "DefaultBaseStyle", + "DefaultBoxStyle", + "DefaultButton", + "DefaultColor", + "DefaultControlPlacement", + "DefaultDockedCellStyle", + "DefaultDuplicateCellStyle", + "DefaultDuration", + "DefaultElement", + "DefaultFaceGridsStyle", + "DefaultFieldHintStyle", + "DefaultFont", + "DefaultFontProperties", + "DefaultFormatType", + "DefaultFrameStyle", + "DefaultFrameTicksStyle", + "DefaultGridLinesStyle", + "DefaultInlineFormatType", + "DefaultInputFormatType", + "DefaultLabelStyle", + "DefaultMenuStyle", + "DefaultNaturalLanguage", + "DefaultNewCellStyle", + "DefaultNewInlineCellStyle", + "DefaultNotebook", + "DefaultOptions", + "DefaultOutputFormatType", + "DefaultPrintPrecision", + "DefaultStyle", + "DefaultStyleDefinitions", + "DefaultTextFormatType", + "DefaultTextInlineFormatType", + "DefaultTicksStyle", + "DefaultTooltipStyle", + "DefaultValue", + "DefaultValues", + "Defer", + "DefineExternal", + "DefineInputStreamMethod", + "DefineOutputStreamMethod", + "DefineResourceFunction", + "Definition", + "Degree", + "DegreeCentrality", + "DegreeGraphDistribution", + "DegreeLexicographic", + "DegreeReverseLexicographic", + "DEigensystem", + "DEigenvalues", + "Deinitialization", + "Del", + "DelaunayMesh", + "Delayed", + "Deletable", + "Delete", + "DeleteAdjacentDuplicates", + "DeleteAnomalies", + "DeleteBorderComponents", + "DeleteCases", + "DeleteChannel", + "DeleteCloudExpression", + "DeleteContents", + "DeleteDirectory", + "DeleteDuplicates", + "DeleteDuplicatesBy", + "DeleteElements", + "DeleteFile", + "DeleteMissing", + "DeleteObject", + "DeletePermissionsKey", + "DeleteSearchIndex", + "DeleteSmallComponents", + "DeleteStopwords", + "DeleteWithContents", + "DeletionWarning", + "DelimitedArray", + "DelimitedSequence", + "Delimiter", + "DelimiterAutoMatching", + "DelimiterFlashTime", + "DelimiterMatching", + "Delimiters", + "DeliveryFunction", + "Dendrogram", + "Denominator", + "DensityGraphics", + "DensityHistogram", + "DensityPlot", + "DensityPlot3D", + "DependentVariables", + "Deploy", + "Deployed", + "Depth", + "DepthFirstScan", + "Derivative", + "DerivativeFilter", + "DerivativePDETerm", + "DerivedKey", + "DescriptorStateSpace", + "DesignMatrix", + "DestroyAfterEvaluation", + "Det", + "DeviceClose", + "DeviceConfigure", + "DeviceExecute", + "DeviceExecuteAsynchronous", + "DeviceObject", + "DeviceOpen", + "DeviceOpenQ", + "DeviceRead", + "DeviceReadBuffer", + "DeviceReadLatest", + "DeviceReadList", + "DeviceReadTimeSeries", + "Devices", + "DeviceStreams", + "DeviceWrite", + "DeviceWriteBuffer", + "DGaussianWavelet", + "DiacriticalPositioning", + "Diagonal", + "DiagonalizableMatrixQ", + "DiagonalMatrix", + "DiagonalMatrixQ", + "Dialog", + "DialogIndent", + "DialogInput", + "DialogLevel", + "DialogNotebook", + "DialogProlog", + "DialogReturn", + "DialogSymbols", + "Diamond", + "DiamondMatrix", + "DiceDissimilarity", + "DictionaryLookup", + "DictionaryWordQ", + "DifferenceDelta", + "DifferenceOrder", + "DifferenceQuotient", + "DifferenceRoot", + "DifferenceRootReduce", + "Differences", + "DifferentialD", + "DifferentialRoot", + "DifferentialRootReduce", + "DifferentiatorFilter", + "DiffusionPDETerm", + "DiggleGatesPointProcess", + "DiggleGrattonPointProcess", + "DigitalSignature", + "DigitBlock", + "DigitBlockMinimum", + "DigitCharacter", + "DigitCount", + "DigitQ", + "DihedralAngle", + "DihedralGroup", + "Dilation", + "DimensionalCombinations", + "DimensionalMeshComponents", + "DimensionReduce", + "DimensionReducerFunction", + "DimensionReduction", + "Dimensions", + "DiracComb", + "DiracDelta", + "DirectedEdge", + "DirectedEdges", + "DirectedGraph", + "DirectedGraphQ", + "DirectedInfinity", + "Direction", + "DirectionalLight", + "Directive", + "Directory", + "DirectoryName", + "DirectoryQ", + "DirectoryStack", + "DirichletBeta", + "DirichletCharacter", + "DirichletCondition", + "DirichletConvolve", + "DirichletDistribution", + "DirichletEta", + "DirichletL", + "DirichletLambda", + "DirichletTransform", + "DirichletWindow", + "DisableConsolePrintPacket", + "DisableFormatting", + "DiscreteAsymptotic", + "DiscreteChirpZTransform", + "DiscreteConvolve", + "DiscreteDelta", + "DiscreteHadamardTransform", + "DiscreteIndicator", + "DiscreteInputOutputModel", + "DiscreteLimit", + "DiscreteLQEstimatorGains", + "DiscreteLQRegulatorGains", + "DiscreteLyapunovSolve", + "DiscreteMarkovProcess", + "DiscreteMaxLimit", + "DiscreteMinLimit", + "DiscretePlot", + "DiscretePlot3D", + "DiscreteRatio", + "DiscreteRiccatiSolve", + "DiscreteShift", + "DiscreteTimeModelQ", + "DiscreteUniformDistribution", + "DiscreteVariables", + "DiscreteWaveletData", + "DiscreteWaveletPacketTransform", + "DiscreteWaveletTransform", + "DiscretizeGraphics", + "DiscretizeRegion", + "Discriminant", + "DisjointQ", + "Disjunction", + "Disk", + "DiskBox", + "DiskBoxOptions", + "DiskMatrix", + "DiskSegment", + "Dispatch", + "DispatchQ", + "DispersionEstimatorFunction", + "Display", + "DisplayAllSteps", + "DisplayEndPacket", + "DisplayForm", + "DisplayFunction", + "DisplayPacket", + "DisplayRules", + "DisplayString", + "DisplayTemporary", + "DisplayWith", + "DisplayWithRef", + "DisplayWithVariable", + "DistanceFunction", + "DistanceMatrix", + "DistanceTransform", + "Distribute", + "Distributed", + "DistributedContexts", + "DistributeDefinitions", + "DistributionChart", + "DistributionDomain", + "DistributionFitTest", + "DistributionParameterAssumptions", + "DistributionParameterQ", + "Dithering", + "Div", + "Divergence", + "Divide", + "DivideBy", + "Dividers", + "DivideSides", + "Divisible", + "Divisors", + "DivisorSigma", + "DivisorSum", + "DMSList", + "DMSString", + "Do", + "DockedCell", + "DockedCells", + "DocumentGenerator", + "DocumentGeneratorInformation", + "DocumentGeneratorInformationData", + "DocumentGenerators", + "DocumentNotebook", + "DocumentWeightingRules", + "Dodecahedron", + "DomainRegistrationInformation", + "DominantColors", + "DominatorTreeGraph", + "DominatorVertexList", + "DOSTextFormat", + "Dot", + "DotDashed", + "DotEqual", + "DotLayer", + "DotPlusLayer", + "Dotted", + "DoubleBracketingBar", + "DoubleContourIntegral", + "DoubleDownArrow", + "DoubleLeftArrow", + "DoubleLeftRightArrow", + "DoubleLeftTee", + "DoubleLongLeftArrow", + "DoubleLongLeftRightArrow", + "DoubleLongRightArrow", + "DoubleRightArrow", + "DoubleRightTee", + "DoubleUpArrow", + "DoubleUpDownArrow", + "DoubleVerticalBar", + "DoublyInfinite", + "Down", + "DownArrow", + "DownArrowBar", + "DownArrowUpArrow", + "DownLeftRightVector", + "DownLeftTeeVector", + "DownLeftVector", + "DownLeftVectorBar", + "DownRightTeeVector", + "DownRightVector", + "DownRightVectorBar", + "Downsample", + "DownTee", + "DownTeeArrow", + "DownValues", + "DownValuesFunction", + "DragAndDrop", + "DrawBackFaces", + "DrawEdges", + "DrawFrontFaces", + "DrawHighlighted", + "DrazinInverse", + "Drop", + "DropoutLayer", + "DropShadowing", + "DSolve", + "DSolveChangeVariables", + "DSolveValue", + "Dt", + "DualLinearProgramming", + "DualPlanarGraph", + "DualPolyhedron", + "DualSystemsModel", + "DumpGet", + "DumpSave", + "DuplicateFreeQ", + "Duration", + "Dynamic", + "DynamicBox", + "DynamicBoxOptions", + "DynamicEvaluationTimeout", + "DynamicGeoGraphics", + "DynamicImage", + "DynamicLocation", + "DynamicModule", + "DynamicModuleBox", + "DynamicModuleBoxOptions", + "DynamicModuleParent", + "DynamicModuleValues", + "DynamicName", + "DynamicNamespace", + "DynamicReference", + "DynamicSetting", + "DynamicUpdating", + "DynamicWrapper", + "DynamicWrapperBox", + "DynamicWrapperBoxOptions", + "E", + "EarthImpactData", + "EarthquakeData", + "EccentricityCentrality", + "Echo", + "EchoEvaluation", + "EchoFunction", + "EchoLabel", + "EchoTiming", + "EclipseType", + "EdgeAdd", + "EdgeBetweennessCentrality", + "EdgeCapacity", + "EdgeCapForm", + "EdgeChromaticNumber", + "EdgeColor", + "EdgeConnectivity", + "EdgeContract", + "EdgeCost", + "EdgeCount", + "EdgeCoverQ", + "EdgeCycleMatrix", + "EdgeDashing", + "EdgeDelete", + "EdgeDetect", + "EdgeForm", + "EdgeIndex", + "EdgeJoinForm", + "EdgeLabeling", + "EdgeLabels", + "EdgeLabelStyle", + "EdgeList", + "EdgeOpacity", + "EdgeQ", + "EdgeRenderingFunction", + "EdgeRules", + "EdgeShapeFunction", + "EdgeStyle", + "EdgeTaggedGraph", + "EdgeTaggedGraphQ", + "EdgeTags", + "EdgeThickness", + "EdgeTransitiveGraphQ", + "EdgeValueRange", + "EdgeValueSizes", + "EdgeWeight", + "EdgeWeightedGraphQ", + "Editable", + "EditButtonSettings", + "EditCellTagsSettings", + "EditDistance", + "EffectiveInterest", + "Eigensystem", + "Eigenvalues", + "EigenvectorCentrality", + "Eigenvectors", + "Element", + "ElementData", + "ElementwiseLayer", + "ElidedForms", + "Eliminate", + "EliminationOrder", + "Ellipsoid", + "EllipticE", + "EllipticExp", + "EllipticExpPrime", + "EllipticF", + "EllipticFilterModel", + "EllipticK", + "EllipticLog", + "EllipticNomeQ", + "EllipticPi", + "EllipticReducedHalfPeriods", + "EllipticTheta", + "EllipticThetaPrime", + "EmbedCode", + "EmbeddedHTML", + "EmbeddedService", + "EmbeddedSQLEntityClass", + "EmbeddedSQLExpression", + "EmbeddingLayer", + "EmbeddingObject", + "EmitSound", + "EmphasizeSyntaxErrors", + "EmpiricalDistribution", + "Empty", + "EmptyGraphQ", + "EmptyRegion", + "EmptySpaceF", + "EnableConsolePrintPacket", + "Enabled", + "Enclose", + "Encode", + "Encrypt", + "EncryptedObject", + "EncryptFile", + "End", + "EndAdd", + "EndDialogPacket", + "EndOfBuffer", + "EndOfFile", + "EndOfLine", + "EndOfString", + "EndPackage", + "EngineEnvironment", + "EngineeringForm", + "Enter", + "EnterExpressionPacket", + "EnterTextPacket", + "Entity", + "EntityClass", + "EntityClassList", + "EntityCopies", + "EntityFunction", + "EntityGroup", + "EntityInstance", + "EntityList", + "EntityPrefetch", + "EntityProperties", + "EntityProperty", + "EntityPropertyClass", + "EntityRegister", + "EntityStore", + "EntityStores", + "EntityTypeName", + "EntityUnregister", + "EntityValue", + "Entropy", + "EntropyFilter", + "Environment", + "Epilog", + "EpilogFunction", + "Equal", + "EqualColumns", + "EqualRows", + "EqualTilde", + "EqualTo", + "EquatedTo", + "Equilibrium", + "EquirippleFilterKernel", + "Equivalent", + "Erf", + "Erfc", + "Erfi", + "ErlangB", + "ErlangC", + "ErlangDistribution", + "Erosion", + "ErrorBox", + "ErrorBoxOptions", + "ErrorNorm", + "ErrorPacket", + "ErrorsDialogSettings", + "EscapeRadius", + "EstimatedBackground", + "EstimatedDistribution", + "EstimatedPointNormals", + "EstimatedPointProcess", + "EstimatedProcess", + "EstimatedVariogramModel", + "EstimatorGains", + "EstimatorRegulator", + "EuclideanDistance", + "EulerAngles", + "EulerCharacteristic", + "EulerE", + "EulerGamma", + "EulerianGraphQ", + "EulerMatrix", + "EulerPhi", + "Evaluatable", + "Evaluate", + "Evaluated", + "EvaluatePacket", + "EvaluateScheduledTask", + "EvaluationBox", + "EvaluationCell", + "EvaluationCompletionAction", + "EvaluationData", + "EvaluationElements", + "EvaluationEnvironment", + "EvaluationMode", + "EvaluationMonitor", + "EvaluationNotebook", + "EvaluationObject", + "EvaluationOrder", + "EvaluationPrivileges", + "EvaluationRateLimit", + "Evaluator", + "EvaluatorNames", + "EvenQ", + "EventData", + "EventEvaluator", + "EventHandler", + "EventHandlerTag", + "EventLabels", + "EventSeries", + "ExactBlackmanWindow", + "ExactNumberQ", + "ExactRootIsolation", + "ExampleData", + "Except", + "ExcludedContexts", + "ExcludedForms", + "ExcludedLines", + "ExcludedPhysicalQuantities", + "ExcludePods", + "Exclusions", + "ExclusionsStyle", + "Exists", + "Exit", + "ExitDialog", + "ExoplanetData", + "Exp", + "Expand", + "ExpandAll", + "ExpandDenominator", + "ExpandFileName", + "ExpandNumerator", + "Expectation", + "ExpectationE", + "ExpectedValue", + "ExpGammaDistribution", + "ExpIntegralE", + "ExpIntegralEi", + "ExpirationDate", + "Exponent", + "ExponentFunction", + "ExponentialDistribution", + "ExponentialFamily", + "ExponentialGeneratingFunction", + "ExponentialMovingAverage", + "ExponentialPowerDistribution", + "ExponentPosition", + "ExponentStep", + "Export", + "ExportAutoReplacements", + "ExportByteArray", + "ExportForm", + "ExportPacket", + "ExportString", + "Expression", + "ExpressionCell", + "ExpressionGraph", + "ExpressionPacket", + "ExpressionTree", + "ExpressionUUID", + "ExpToTrig", + "ExtendedEntityClass", + "ExtendedGCD", + "Extension", + "ExtentElementFunction", + "ExtentMarkers", + "ExtentSize", + "ExternalBundle", + "ExternalCall", + "ExternalDataCharacterEncoding", + "ExternalEvaluate", + "ExternalFunction", + "ExternalFunctionName", + "ExternalIdentifier", + "ExternalObject", + "ExternalOptions", + "ExternalSessionObject", + "ExternalSessions", + "ExternalStorageBase", + "ExternalStorageDownload", + "ExternalStorageGet", + "ExternalStorageObject", + "ExternalStoragePut", + "ExternalStorageUpload", + "ExternalTypeSignature", + "ExternalValue", + "Extract", + "ExtractArchive", + "ExtractLayer", + "ExtractPacletArchive", + "ExtremeValueDistribution", + "FaceAlign", + "FaceForm", + "FaceGrids", + "FaceGridsStyle", + "FaceRecognize", + "FacialFeatures", + "Factor", + "FactorComplete", + "Factorial", + "Factorial2", + "FactorialMoment", + "FactorialMomentGeneratingFunction", + "FactorialPower", + "FactorInteger", + "FactorList", + "FactorSquareFree", + "FactorSquareFreeList", + "FactorTerms", + "FactorTermsList", + "Fail", + "Failure", + "FailureAction", + "FailureDistribution", + "FailureQ", + "False", + "FareySequence", + "FARIMAProcess", + "FeatureDistance", + "FeatureExtract", + "FeatureExtraction", + "FeatureExtractor", + "FeatureExtractorFunction", + "FeatureImpactPlot", + "FeatureNames", + "FeatureNearest", + "FeatureSpacePlot", + "FeatureSpacePlot3D", + "FeatureTypes", + "FeatureValueDependencyPlot", + "FeatureValueImpactPlot", + "FEDisableConsolePrintPacket", + "FeedbackLinearize", + "FeedbackSector", + "FeedbackSectorStyle", + "FeedbackType", + "FEEnableConsolePrintPacket", + "FetalGrowthData", + "Fibonacci", + "Fibonorial", + "FieldCompletionFunction", + "FieldHint", + "FieldHintStyle", + "FieldMasked", + "FieldSize", + "File", + "FileBaseName", + "FileByteCount", + "FileConvert", + "FileDate", + "FileExistsQ", + "FileExtension", + "FileFormat", + "FileFormatProperties", + "FileFormatQ", + "FileHandler", + "FileHash", + "FileInformation", + "FileName", + "FileNameDepth", + "FileNameDialogSettings", + "FileNameDrop", + "FileNameForms", + "FileNameJoin", + "FileNames", + "FileNameSetter", + "FileNameSplit", + "FileNameTake", + "FileNameToFormatList", + "FilePrint", + "FileSize", + "FileSystemMap", + "FileSystemScan", + "FileSystemTree", + "FileTemplate", + "FileTemplateApply", + "FileType", + "FilledCurve", + "FilledCurveBox", + "FilledCurveBoxOptions", + "FilledTorus", + "FillForm", + "Filling", + "FillingStyle", + "FillingTransform", + "FilteredEntityClass", + "FilterRules", + "FinancialBond", + "FinancialData", + "FinancialDerivative", + "FinancialIndicator", + "Find", + "FindAnomalies", + "FindArgMax", + "FindArgMin", + "FindChannels", + "FindClique", + "FindClusters", + "FindCookies", + "FindCurvePath", + "FindCycle", + "FindDevices", + "FindDistribution", + "FindDistributionParameters", + "FindDivisions", + "FindEdgeColoring", + "FindEdgeCover", + "FindEdgeCut", + "FindEdgeIndependentPaths", + "FindEquationalProof", + "FindEulerianCycle", + "FindExternalEvaluators", + "FindFaces", + "FindFile", + "FindFit", + "FindFormula", + "FindFundamentalCycles", + "FindGeneratingFunction", + "FindGeoLocation", + "FindGeometricConjectures", + "FindGeometricTransform", + "FindGraphCommunities", + "FindGraphIsomorphism", + "FindGraphPartition", + "FindHamiltonianCycle", + "FindHamiltonianPath", + "FindHiddenMarkovStates", + "FindImageText", + "FindIndependentEdgeSet", + "FindIndependentVertexSet", + "FindInstance", + "FindIntegerNullVector", + "FindIsomers", + "FindIsomorphicSubgraph", + "FindKClan", + "FindKClique", + "FindKClub", + "FindKPlex", + "FindLibrary", + "FindLinearRecurrence", + "FindList", + "FindMatchingColor", + "FindMaximum", + "FindMaximumCut", + "FindMaximumFlow", + "FindMaxValue", + "FindMeshDefects", + "FindMinimum", + "FindMinimumCostFlow", + "FindMinimumCut", + "FindMinValue", + "FindMoleculeSubstructure", + "FindPath", + "FindPeaks", + "FindPermutation", + "FindPlanarColoring", + "FindPointProcessParameters", + "FindPostmanTour", + "FindProcessParameters", + "FindRegionTransform", + "FindRepeat", + "FindRoot", + "FindSequenceFunction", + "FindSettings", + "FindShortestPath", + "FindShortestTour", + "FindSpanningTree", + "FindSubgraphIsomorphism", + "FindSystemModelEquilibrium", + "FindTextualAnswer", + "FindThreshold", + "FindTransientRepeat", + "FindVertexColoring", + "FindVertexCover", + "FindVertexCut", + "FindVertexIndependentPaths", + "Fine", + "FinishDynamic", + "FiniteAbelianGroupCount", + "FiniteGroupCount", + "FiniteGroupData", + "First", + "FirstCase", + "FirstPassageTimeDistribution", + "FirstPosition", + "FischerGroupFi22", + "FischerGroupFi23", + "FischerGroupFi24Prime", + "FisherHypergeometricDistribution", + "FisherRatioTest", + "FisherZDistribution", + "Fit", + "FitAll", + "FitRegularization", + "FittedModel", + "FixedOrder", + "FixedPoint", + "FixedPointList", + "FlashSelection", + "Flat", + "FlatShading", + "Flatten", + "FlattenAt", + "FlattenLayer", + "FlatTopWindow", + "FlightData", + "FlipView", + "Floor", + "FlowPolynomial", + "Fold", + "FoldList", + "FoldPair", + "FoldPairList", + "FoldWhile", + "FoldWhileList", + "FollowRedirects", + "Font", + "FontColor", + "FontFamily", + "FontForm", + "FontName", + "FontOpacity", + "FontPostScriptName", + "FontProperties", + "FontReencoding", + "FontSize", + "FontSlant", + "FontSubstitutions", + "FontTracking", + "FontVariations", + "FontWeight", + "For", + "ForAll", + "ForAllType", + "ForceVersionInstall", + "Format", + "FormatRules", + "FormatType", + "FormatTypeAutoConvert", + "FormatValues", + "FormBox", + "FormBoxOptions", + "FormControl", + "FormFunction", + "FormLayoutFunction", + "FormObject", + "FormPage", + "FormProtectionMethod", + "FormTheme", + "FormulaData", + "FormulaLookup", + "FortranForm", + "Forward", + "ForwardBackward", + "ForwardCloudCredentials", + "Fourier", + "FourierCoefficient", + "FourierCosCoefficient", + "FourierCosSeries", + "FourierCosTransform", + "FourierDCT", + "FourierDCTFilter", + "FourierDCTMatrix", + "FourierDST", + "FourierDSTMatrix", + "FourierMatrix", + "FourierParameters", + "FourierSequenceTransform", + "FourierSeries", + "FourierSinCoefficient", + "FourierSinSeries", + "FourierSinTransform", + "FourierTransform", + "FourierTrigSeries", + "FoxH", + "FoxHReduce", + "FractionalBrownianMotionProcess", + "FractionalD", + "FractionalGaussianNoiseProcess", + "FractionalPart", + "FractionBox", + "FractionBoxOptions", + "FractionLine", + "Frame", + "FrameBox", + "FrameBoxOptions", + "Framed", + "FrameInset", + "FrameLabel", + "Frameless", + "FrameListVideo", + "FrameMargins", + "FrameRate", + "FrameStyle", + "FrameTicks", + "FrameTicksStyle", + "FRatioDistribution", + "FrechetDistribution", + "FreeQ", + "FrenetSerretSystem", + "FrequencySamplingFilterKernel", + "FresnelC", + "FresnelF", + "FresnelG", + "FresnelS", + "Friday", + "FrobeniusNumber", + "FrobeniusSolve", + "FromAbsoluteTime", + "FromCharacterCode", + "FromCoefficientRules", + "FromContinuedFraction", + "FromDate", + "FromDateString", + "FromDigits", + "FromDMS", + "FromEntity", + "FromJulianDate", + "FromLetterNumber", + "FromPolarCoordinates", + "FromRawPointer", + "FromRomanNumeral", + "FromSphericalCoordinates", + "FromUnixTime", + "Front", + "FrontEndDynamicExpression", + "FrontEndEventActions", + "FrontEndExecute", + "FrontEndObject", + "FrontEndResource", + "FrontEndResourceString", + "FrontEndStackSize", + "FrontEndToken", + "FrontEndTokenExecute", + "FrontEndValueCache", + "FrontEndVersion", + "FrontFaceColor", + "FrontFaceGlowColor", + "FrontFaceOpacity", + "FrontFaceSpecularColor", + "FrontFaceSpecularExponent", + "FrontFaceSurfaceAppearance", + "FrontFaceTexture", + "Full", + "FullAxes", + "FullDefinition", + "FullForm", + "FullGraphics", + "FullInformationOutputRegulator", + "FullOptions", + "FullRegion", + "FullSimplify", + "Function", + "FunctionAnalytic", + "FunctionBijective", + "FunctionCompile", + "FunctionCompileExport", + "FunctionCompileExportByteArray", + "FunctionCompileExportLibrary", + "FunctionCompileExportString", + "FunctionContinuous", + "FunctionConvexity", + "FunctionDeclaration", + "FunctionDiscontinuities", + "FunctionDomain", + "FunctionExpand", + "FunctionInjective", + "FunctionInterpolation", + "FunctionLayer", + "FunctionMeromorphic", + "FunctionMonotonicity", + "FunctionPeriod", + "FunctionPoles", + "FunctionRange", + "FunctionSign", + "FunctionSingularities", + "FunctionSpace", + "FunctionSurjective", + "FussellVeselyImportance", + "GaborFilter", + "GaborMatrix", + "GaborWavelet", + "GainMargins", + "GainPhaseMargins", + "GalaxyData", + "GalleryView", + "Gamma", + "GammaDistribution", + "GammaRegularized", + "GapPenalty", + "GARCHProcess", + "GatedRecurrentLayer", + "Gather", + "GatherBy", + "GaugeFaceElementFunction", + "GaugeFaceStyle", + "GaugeFrameElementFunction", + "GaugeFrameSize", + "GaugeFrameStyle", + "GaugeLabels", + "GaugeMarkers", + "GaugeStyle", + "GaussianFilter", + "GaussianIntegers", + "GaussianMatrix", + "GaussianOrthogonalMatrixDistribution", + "GaussianSymplecticMatrixDistribution", + "GaussianUnitaryMatrixDistribution", + "GaussianWindow", + "GCD", + "GegenbauerC", + "General", + "GeneralizedLinearModelFit", + "GenerateAsymmetricKeyPair", + "GenerateConditions", + "GeneratedAssetFormat", + "GeneratedAssetLocation", + "GeneratedCell", + "GeneratedCellStyles", + "GeneratedDocumentBinding", + "GenerateDerivedKey", + "GenerateDigitalSignature", + "GenerateDocument", + "GeneratedParameters", + "GeneratedQuantityMagnitudes", + "GenerateFileSignature", + "GenerateHTTPResponse", + "GenerateSecuredAuthenticationKey", + "GenerateSymmetricKey", + "GeneratingFunction", + "GeneratorDescription", + "GeneratorHistoryLength", + "GeneratorOutputType", + "Generic", + "GenericCylindricalDecomposition", + "GenomeData", + "GenomeLookup", + "GeoAntipode", + "GeoArea", + "GeoArraySize", + "GeoBackground", + "GeoBoundary", + "GeoBoundingBox", + "GeoBounds", + "GeoBoundsRegion", + "GeoBoundsRegionBoundary", + "GeoBubbleChart", + "GeoCenter", + "GeoCircle", + "GeoContourPlot", + "GeoDensityPlot", + "GeodesicClosing", + "GeodesicDilation", + "GeodesicErosion", + "GeodesicOpening", + "GeodesicPolyhedron", + "GeoDestination", + "GeodesyData", + "GeoDirection", + "GeoDisk", + "GeoDisplacement", + "GeoDistance", + "GeoDistanceList", + "GeoElevationData", + "GeoEntities", + "GeoGraphics", + "GeoGraphPlot", + "GeoGraphValuePlot", + "GeogravityModelData", + "GeoGridDirectionDifference", + "GeoGridLines", + "GeoGridLinesStyle", + "GeoGridPosition", + "GeoGridRange", + "GeoGridRangePadding", + "GeoGridUnitArea", + "GeoGridUnitDistance", + "GeoGridVector", + "GeoGroup", + "GeoHemisphere", + "GeoHemisphereBoundary", + "GeoHistogram", + "GeoIdentify", + "GeoImage", + "GeoLabels", + "GeoLength", + "GeoListPlot", + "GeoLocation", + "GeologicalPeriodData", + "GeomagneticModelData", + "GeoMarker", + "GeometricAssertion", + "GeometricBrownianMotionProcess", + "GeometricDistribution", + "GeometricMean", + "GeometricMeanFilter", + "GeometricOptimization", + "GeometricScene", + "GeometricStep", + "GeometricStylingRules", + "GeometricTest", + "GeometricTransformation", + "GeometricTransformation3DBox", + "GeometricTransformation3DBoxOptions", + "GeometricTransformationBox", + "GeometricTransformationBoxOptions", + "GeoModel", + "GeoNearest", + "GeoOrientationData", + "GeoPath", + "GeoPolygon", + "GeoPosition", + "GeoPositionENU", + "GeoPositionXYZ", + "GeoProjection", + "GeoProjectionData", + "GeoRange", + "GeoRangePadding", + "GeoRegionValuePlot", + "GeoResolution", + "GeoScaleBar", + "GeoServer", + "GeoSmoothHistogram", + "GeoStreamPlot", + "GeoStyling", + "GeoStylingImageFunction", + "GeoVariant", + "GeoVector", + "GeoVectorENU", + "GeoVectorPlot", + "GeoVectorXYZ", + "GeoVisibleRegion", + "GeoVisibleRegionBoundary", + "GeoWithinQ", + "GeoZoomLevel", + "GestureHandler", + "GestureHandlerTag", + "Get", + "GetContext", + "GetEnvironment", + "GetFileName", + "GetLinebreakInformationPacket", + "GibbsPointProcess", + "Glaisher", + "GlobalClusteringCoefficient", + "GlobalPreferences", + "GlobalSession", + "Glow", + "GoldenAngle", + "GoldenRatio", + "GompertzMakehamDistribution", + "GoochShading", + "GoodmanKruskalGamma", + "GoodmanKruskalGammaTest", + "Goto", + "GouraudShading", + "Grad", + "Gradient", + "GradientFilter", + "GradientFittedMesh", + "GradientOrientationFilter", + "GrammarApply", + "GrammarRules", + "GrammarToken", + "Graph", + "Graph3D", + "GraphAssortativity", + "GraphAutomorphismGroup", + "GraphCenter", + "GraphComplement", + "GraphData", + "GraphDensity", + "GraphDiameter", + "GraphDifference", + "GraphDisjointUnion", + "GraphDistance", + "GraphDistanceMatrix", + "GraphEmbedding", + "GraphHighlight", + "GraphHighlightStyle", + "GraphHub", + "Graphics", + "Graphics3D", + "Graphics3DBox", + "Graphics3DBoxOptions", + "GraphicsArray", + "GraphicsBaseline", + "GraphicsBox", + "GraphicsBoxOptions", + "GraphicsColor", + "GraphicsColumn", + "GraphicsComplex", + "GraphicsComplex3DBox", + "GraphicsComplex3DBoxOptions", + "GraphicsComplexBox", + "GraphicsComplexBoxOptions", + "GraphicsContents", + "GraphicsData", + "GraphicsGrid", + "GraphicsGridBox", + "GraphicsGroup", + "GraphicsGroup3DBox", + "GraphicsGroup3DBoxOptions", + "GraphicsGroupBox", + "GraphicsGroupBoxOptions", + "GraphicsGrouping", + "GraphicsHighlightColor", + "GraphicsRow", + "GraphicsSpacing", + "GraphicsStyle", + "GraphIntersection", + "GraphJoin", + "GraphLayerLabels", + "GraphLayers", + "GraphLayerStyle", + "GraphLayout", + "GraphLinkEfficiency", + "GraphPeriphery", + "GraphPlot", + "GraphPlot3D", + "GraphPower", + "GraphProduct", + "GraphPropertyDistribution", + "GraphQ", + "GraphRadius", + "GraphReciprocity", + "GraphRoot", + "GraphStyle", + "GraphSum", + "GraphTree", + "GraphUnion", + "Gray", + "GrayLevel", + "Greater", + "GreaterEqual", + "GreaterEqualLess", + "GreaterEqualThan", + "GreaterFullEqual", + "GreaterGreater", + "GreaterLess", + "GreaterSlantEqual", + "GreaterThan", + "GreaterTilde", + "GreekStyle", + "Green", + "GreenFunction", + "Grid", + "GridBaseline", + "GridBox", + "GridBoxAlignment", + "GridBoxBackground", + "GridBoxDividers", + "GridBoxFrame", + "GridBoxItemSize", + "GridBoxItemStyle", + "GridBoxOptions", + "GridBoxSpacings", + "GridCreationSettings", + "GridDefaultElement", + "GridElementStyleOptions", + "GridFrame", + "GridFrameMargins", + "GridGraph", + "GridLines", + "GridLinesStyle", + "GridVideo", + "GroebnerBasis", + "GroupActionBase", + "GroupBy", + "GroupCentralizer", + "GroupElementFromWord", + "GroupElementPosition", + "GroupElementQ", + "GroupElements", + "GroupElementToWord", + "GroupGenerators", + "Groupings", + "GroupMultiplicationTable", + "GroupOpenerColor", + "GroupOpenerInsideFrame", + "GroupOrbits", + "GroupOrder", + "GroupPageBreakWithin", + "GroupSetwiseStabilizer", + "GroupStabilizer", + "GroupStabilizerChain", + "GroupTogetherGrouping", + "GroupTogetherNestedGrouping", + "GrowCutComponents", + "Gudermannian", + "GuidedFilter", + "GumbelDistribution", + "HaarWavelet", + "HadamardMatrix", + "HalfLine", + "HalfNormalDistribution", + "HalfPlane", + "HalfSpace", + "HalftoneShading", + "HamiltonianGraphQ", + "HammingDistance", + "HammingWindow", + "HandlerFunctions", + "HandlerFunctionsKeys", + "HankelH1", + "HankelH2", + "HankelMatrix", + "HankelTransform", + "HannPoissonWindow", + "HannWindow", + "HaradaNortonGroupHN", + "HararyGraph", + "HardcorePointProcess", + "HarmonicMean", + "HarmonicMeanFilter", + "HarmonicNumber", + "Hash", + "HatchFilling", + "HatchShading", + "Haversine", + "HazardFunction", + "Head", + "HeadCompose", + "HeaderAlignment", + "HeaderBackground", + "HeaderDisplayFunction", + "HeaderLines", + "Headers", + "HeaderSize", + "HeaderStyle", + "Heads", + "HeatFluxValue", + "HeatInsulationValue", + "HeatOutflowValue", + "HeatRadiationValue", + "HeatSymmetryValue", + "HeatTemperatureCondition", + "HeatTransferPDEComponent", + "HeatTransferValue", + "HeavisideLambda", + "HeavisidePi", + "HeavisideTheta", + "HeldGroupHe", + "HeldPart", + "HelmholtzPDEComponent", + "HelpBrowserLookup", + "HelpBrowserNotebook", + "HelpBrowserSettings", + "HelpViewerSettings", + "Here", + "HermiteDecomposition", + "HermiteH", + "Hermitian", + "HermitianMatrixQ", + "HessenbergDecomposition", + "Hessian", + "HeunB", + "HeunBPrime", + "HeunC", + "HeunCPrime", + "HeunD", + "HeunDPrime", + "HeunG", + "HeunGPrime", + "HeunT", + "HeunTPrime", + "HexadecimalCharacter", + "Hexahedron", + "HexahedronBox", + "HexahedronBoxOptions", + "HiddenItems", + "HiddenMarkovProcess", + "HiddenSurface", + "Highlighted", + "HighlightGraph", + "HighlightImage", + "HighlightMesh", + "HighlightString", + "HighpassFilter", + "HigmanSimsGroupHS", + "HilbertCurve", + "HilbertFilter", + "HilbertMatrix", + "Histogram", + "Histogram3D", + "HistogramDistribution", + "HistogramList", + "HistogramPointDensity", + "HistogramTransform", + "HistogramTransformInterpolation", + "HistoricalPeriodData", + "HitMissTransform", + "HITSCentrality", + "HjorthDistribution", + "HodgeDual", + "HoeffdingD", + "HoeffdingDTest", + "Hold", + "HoldAll", + "HoldAllComplete", + "HoldComplete", + "HoldFirst", + "HoldForm", + "HoldPattern", + "HoldRest", + "HolidayCalendar", + "HomeDirectory", + "HomePage", + "Horizontal", + "HorizontalForm", + "HorizontalGauge", + "HorizontalScrollPosition", + "HornerForm", + "HostLookup", + "HotellingTSquareDistribution", + "HoytDistribution", + "HTMLSave", + "HTTPErrorResponse", + "HTTPRedirect", + "HTTPRequest", + "HTTPRequestData", + "HTTPResponse", + "Hue", + "HumanGrowthData", + "HumpDownHump", + "HumpEqual", + "HurwitzLerchPhi", + "HurwitzZeta", + "HyperbolicDistribution", + "HypercubeGraph", + "HyperexponentialDistribution", + "Hyperfactorial", + "Hypergeometric0F1", + "Hypergeometric0F1Regularized", + "Hypergeometric1F1", + "Hypergeometric1F1Regularized", + "Hypergeometric2F1", + "Hypergeometric2F1Regularized", + "HypergeometricDistribution", + "HypergeometricPFQ", + "HypergeometricPFQRegularized", + "HypergeometricU", + "Hyperlink", + "HyperlinkAction", + "HyperlinkCreationSettings", + "Hyperplane", + "Hyphenation", + "HyphenationOptions", + "HypoexponentialDistribution", + "HypothesisTestData", + "I", + "IconData", + "Iconize", + "IconizedObject", + "IconRules", + "Icosahedron", + "Identity", + "IdentityMatrix", + "If", + "IfCompiled", + "IgnoreCase", + "IgnoreDiacritics", + "IgnoreIsotopes", + "IgnorePunctuation", + "IgnoreSpellCheck", + "IgnoreStereochemistry", + "IgnoringInactive", + "Im", + "Image", + "Image3D", + "Image3DProjection", + "Image3DSlices", + "ImageAccumulate", + "ImageAdd", + "ImageAdjust", + "ImageAlign", + "ImageApply", + "ImageApplyIndexed", + "ImageAspectRatio", + "ImageAssemble", + "ImageAugmentationLayer", + "ImageBoundingBoxes", + "ImageCache", + "ImageCacheValid", + "ImageCapture", + "ImageCaptureFunction", + "ImageCases", + "ImageChannels", + "ImageClip", + "ImageCollage", + "ImageColorSpace", + "ImageCompose", + "ImageContainsQ", + "ImageContents", + "ImageConvolve", + "ImageCooccurrence", + "ImageCorners", + "ImageCorrelate", + "ImageCorrespondingPoints", + "ImageCrop", + "ImageData", + "ImageDeconvolve", + "ImageDemosaic", + "ImageDifference", + "ImageDimensions", + "ImageDisplacements", + "ImageDistance", + "ImageEditMode", + "ImageEffect", + "ImageExposureCombine", + "ImageFeatureTrack", + "ImageFileApply", + "ImageFileFilter", + "ImageFileScan", + "ImageFilter", + "ImageFocusCombine", + "ImageForestingComponents", + "ImageFormattingWidth", + "ImageForwardTransformation", + "ImageGraphics", + "ImageHistogram", + "ImageIdentify", + "ImageInstanceQ", + "ImageKeypoints", + "ImageLabels", + "ImageLegends", + "ImageLevels", + "ImageLines", + "ImageMargins", + "ImageMarker", + "ImageMarkers", + "ImageMeasurements", + "ImageMesh", + "ImageMultiply", + "ImageOffset", + "ImagePad", + "ImagePadding", + "ImagePartition", + "ImagePeriodogram", + "ImagePerspectiveTransformation", + "ImagePosition", + "ImagePreviewFunction", + "ImagePyramid", + "ImagePyramidApply", + "ImageQ", + "ImageRangeCache", + "ImageRecolor", + "ImageReflect", + "ImageRegion", + "ImageResize", + "ImageResolution", + "ImageRestyle", + "ImageRotate", + "ImageRotated", + "ImageSaliencyFilter", + "ImageScaled", + "ImageScan", + "ImageSize", + "ImageSizeAction", + "ImageSizeCache", + "ImageSizeMultipliers", + "ImageSizeRaw", + "ImageStitch", + "ImageSubtract", + "ImageTake", + "ImageTransformation", + "ImageTrim", + "ImageType", + "ImageValue", + "ImageValuePositions", + "ImageVectorscopePlot", + "ImageWaveformPlot", + "ImagingDevice", + "ImplicitD", + "ImplicitRegion", + "Implies", + "Import", + "ImportAutoReplacements", + "ImportByteArray", + "ImportedObject", + "ImportOptions", + "ImportString", + "ImprovementImportance", + "In", + "Inactivate", + "Inactive", + "InactiveStyle", + "IncidenceGraph", + "IncidenceList", + "IncidenceMatrix", + "IncludeAromaticBonds", + "IncludeConstantBasis", + "IncludedContexts", + "IncludeDefinitions", + "IncludeDirectories", + "IncludeFileExtension", + "IncludeGeneratorTasks", + "IncludeHydrogens", + "IncludeInflections", + "IncludeMetaInformation", + "IncludePods", + "IncludeQuantities", + "IncludeRelatedTables", + "IncludeSingularSolutions", + "IncludeSingularTerm", + "IncludeWindowTimes", + "Increment", + "IndefiniteMatrixQ", + "Indent", + "IndentingNewlineSpacings", + "IndentMaxFraction", + "IndependenceTest", + "IndependentEdgeSetQ", + "IndependentPhysicalQuantity", + "IndependentUnit", + "IndependentUnitDimension", + "IndependentVertexSetQ", + "Indeterminate", + "IndeterminateThreshold", + "IndexCreationOptions", + "Indexed", + "IndexEdgeTaggedGraph", + "IndexGraph", + "IndexTag", + "Inequality", + "InertEvaluate", + "InertExpression", + "InexactNumberQ", + "InexactNumbers", + "InfiniteFuture", + "InfiniteLine", + "InfiniteLineThrough", + "InfinitePast", + "InfinitePlane", + "Infinity", + "Infix", + "InflationAdjust", + "InflationMethod", + "Information", + "InformationData", + "InformationDataGrid", + "Inherited", + "InheritScope", + "InhomogeneousPoissonPointProcess", + "InhomogeneousPoissonProcess", + "InitialEvaluationHistory", + "Initialization", + "InitializationCell", + "InitializationCellEvaluation", + "InitializationCellWarning", + "InitializationObject", + "InitializationObjects", + "InitializationValue", + "Initialize", + "InitialSeeding", + "InlineCounterAssignments", + "InlineCounterIncrements", + "InlineRules", + "Inner", + "InnerPolygon", + "InnerPolyhedron", + "Inpaint", + "Input", + "InputAliases", + "InputAssumptions", + "InputAutoReplacements", + "InputField", + "InputFieldBox", + "InputFieldBoxOptions", + "InputForm", + "InputGrouping", + "InputNamePacket", + "InputNotebook", + "InputPacket", + "InputPorts", + "InputSettings", + "InputStream", + "InputString", + "InputStringPacket", + "InputToBoxFormPacket", + "Insert", + "InsertionFunction", + "InsertionPointObject", + "InsertLinebreaks", + "InsertResults", + "Inset", + "Inset3DBox", + "Inset3DBoxOptions", + "InsetBox", + "InsetBoxOptions", + "Insphere", + "Install", + "InstallService", + "InstanceNormalizationLayer", + "InString", + "Integer", + "IntegerDigits", + "IntegerExponent", + "IntegerLength", + "IntegerName", + "IntegerPart", + "IntegerPartitions", + "IntegerQ", + "IntegerReverse", + "Integers", + "IntegerString", + "Integral", + "Integrate", + "IntegrateChangeVariables", + "Interactive", + "InteractiveTradingChart", + "InterfaceSwitched", + "Interlaced", + "Interleaving", + "InternallyBalancedDecomposition", + "InterpolatingFunction", + "InterpolatingPolynomial", + "Interpolation", + "InterpolationOrder", + "InterpolationPoints", + "InterpolationPrecision", + "Interpretation", + "InterpretationBox", + "InterpretationBoxOptions", + "InterpretationFunction", + "Interpreter", + "InterpretTemplate", + "InterquartileRange", + "Interrupt", + "InterruptSettings", + "IntersectedEntityClass", + "IntersectingQ", + "Intersection", + "Interval", + "IntervalIntersection", + "IntervalMarkers", + "IntervalMarkersStyle", + "IntervalMemberQ", + "IntervalSlider", + "IntervalUnion", + "Into", + "Inverse", + "InverseBetaRegularized", + "InverseBilateralLaplaceTransform", + "InverseBilateralZTransform", + "InverseCDF", + "InverseChiSquareDistribution", + "InverseContinuousWaveletTransform", + "InverseDistanceTransform", + "InverseEllipticNomeQ", + "InverseErf", + "InverseErfc", + "InverseFourier", + "InverseFourierCosTransform", + "InverseFourierSequenceTransform", + "InverseFourierSinTransform", + "InverseFourierTransform", + "InverseFunction", + "InverseFunctions", + "InverseGammaDistribution", + "InverseGammaRegularized", + "InverseGaussianDistribution", + "InverseGudermannian", + "InverseHankelTransform", + "InverseHaversine", + "InverseImagePyramid", + "InverseJacobiCD", + "InverseJacobiCN", + "InverseJacobiCS", + "InverseJacobiDC", + "InverseJacobiDN", + "InverseJacobiDS", + "InverseJacobiNC", + "InverseJacobiND", + "InverseJacobiNS", + "InverseJacobiSC", + "InverseJacobiSD", + "InverseJacobiSN", + "InverseLaplaceTransform", + "InverseMellinTransform", + "InversePermutation", + "InverseRadon", + "InverseRadonTransform", + "InverseSeries", + "InverseShortTimeFourier", + "InverseSpectrogram", + "InverseSurvivalFunction", + "InverseTransformedRegion", + "InverseWaveletTransform", + "InverseWeierstrassP", + "InverseWishartMatrixDistribution", + "InverseZTransform", + "Invisible", + "InvisibleApplication", + "InvisibleTimes", + "IPAddress", + "IrreduciblePolynomialQ", + "IslandData", + "IsolatingInterval", + "IsomorphicGraphQ", + "IsomorphicSubgraphQ", + "IsotopeData", + "Italic", + "Item", + "ItemAspectRatio", + "ItemBox", + "ItemBoxOptions", + "ItemDisplayFunction", + "ItemSize", + "ItemStyle", + "ItoProcess", + "JaccardDissimilarity", + "JacobiAmplitude", + "Jacobian", + "JacobiCD", + "JacobiCN", + "JacobiCS", + "JacobiDC", + "JacobiDN", + "JacobiDS", + "JacobiEpsilon", + "JacobiNC", + "JacobiND", + "JacobiNS", + "JacobiP", + "JacobiSC", + "JacobiSD", + "JacobiSN", + "JacobiSymbol", + "JacobiZeta", + "JacobiZN", + "JankoGroupJ1", + "JankoGroupJ2", + "JankoGroupJ3", + "JankoGroupJ4", + "JarqueBeraALMTest", + "JohnsonDistribution", + "Join", + "JoinAcross", + "Joined", + "JoinedCurve", + "JoinedCurveBox", + "JoinedCurveBoxOptions", + "JoinForm", + "JordanDecomposition", + "JordanModelDecomposition", + "JulianDate", + "JuliaSetBoettcher", + "JuliaSetIterationCount", + "JuliaSetPlot", + "JuliaSetPoints", + "K", + "KagiChart", + "KaiserBesselWindow", + "KaiserWindow", + "KalmanEstimator", + "KalmanFilter", + "KarhunenLoeveDecomposition", + "KaryTree", + "KatzCentrality", + "KCoreComponents", + "KDistribution", + "KEdgeConnectedComponents", + "KEdgeConnectedGraphQ", + "KeepExistingVersion", + "KelvinBei", + "KelvinBer", + "KelvinKei", + "KelvinKer", + "KendallTau", + "KendallTauTest", + "KernelConfiguration", + "KernelExecute", + "KernelFunction", + "KernelMixtureDistribution", + "KernelObject", + "Kernels", + "Ket", + "Key", + "KeyCollisionFunction", + "KeyComplement", + "KeyDrop", + "KeyDropFrom", + "KeyExistsQ", + "KeyFreeQ", + "KeyIntersection", + "KeyMap", + "KeyMemberQ", + "KeypointStrength", + "Keys", + "KeySelect", + "KeySort", + "KeySortBy", + "KeyTake", + "KeyUnion", + "KeyValueMap", + "KeyValuePattern", + "Khinchin", + "KillProcess", + "KirchhoffGraph", + "KirchhoffMatrix", + "KleinInvariantJ", + "KnapsackSolve", + "KnightTourGraph", + "KnotData", + "KnownUnitQ", + "KochCurve", + "KolmogorovSmirnovTest", + "KroneckerDelta", + "KroneckerModelDecomposition", + "KroneckerProduct", + "KroneckerSymbol", + "KuiperTest", + "KumaraswamyDistribution", + "Kurtosis", + "KuwaharaFilter", + "KVertexConnectedComponents", + "KVertexConnectedGraphQ", + "LABColor", + "Label", + "Labeled", + "LabeledSlider", + "LabelingFunction", + "LabelingSize", + "LabelStyle", + "LabelVisibility", + "LaguerreL", + "LakeData", + "LambdaComponents", + "LambertW", + "LameC", + "LameCPrime", + "LameEigenvalueA", + "LameEigenvalueB", + "LameS", + "LameSPrime", + "LaminaData", + "LanczosWindow", + "LandauDistribution", + "Language", + "LanguageCategory", + "LanguageData", + "LanguageIdentify", + "LanguageOptions", + "LaplaceDistribution", + "LaplaceTransform", + "Laplacian", + "LaplacianFilter", + "LaplacianGaussianFilter", + "LaplacianPDETerm", + "Large", + "Larger", + "Last", + "Latitude", + "LatitudeLongitude", + "LatticeData", + "LatticeReduce", + "Launch", + "LaunchKernels", + "LayeredGraphPlot", + "LayeredGraphPlot3D", + "LayerSizeFunction", + "LayoutInformation", + "LCHColor", + "LCM", + "LeaderSize", + "LeafCount", + "LeapVariant", + "LeapYearQ", + "LearnDistribution", + "LearnedDistribution", + "LearningRate", + "LearningRateMultipliers", + "LeastSquares", + "LeastSquaresFilterKernel", + "Left", + "LeftArrow", + "LeftArrowBar", + "LeftArrowRightArrow", + "LeftDownTeeVector", + "LeftDownVector", + "LeftDownVectorBar", + "LeftRightArrow", + "LeftRightVector", + "LeftTee", + "LeftTeeArrow", + "LeftTeeVector", + "LeftTriangle", + "LeftTriangleBar", + "LeftTriangleEqual", + "LeftUpDownVector", + "LeftUpTeeVector", + "LeftUpVector", + "LeftUpVectorBar", + "LeftVector", + "LeftVectorBar", + "LegendAppearance", + "Legended", + "LegendFunction", + "LegendLabel", + "LegendLayout", + "LegendMargins", + "LegendMarkers", + "LegendMarkerSize", + "LegendreP", + "LegendreQ", + "LegendreType", + "Length", + "LengthWhile", + "LerchPhi", + "Less", + "LessEqual", + "LessEqualGreater", + "LessEqualThan", + "LessFullEqual", + "LessGreater", + "LessLess", + "LessSlantEqual", + "LessThan", + "LessTilde", + "LetterCharacter", + "LetterCounts", + "LetterNumber", + "LetterQ", + "Level", + "LeveneTest", + "LeviCivitaTensor", + "LevyDistribution", + "Lexicographic", + "LexicographicOrder", + "LexicographicSort", + "LibraryDataType", + "LibraryFunction", + "LibraryFunctionDeclaration", + "LibraryFunctionError", + "LibraryFunctionInformation", + "LibraryFunctionLoad", + "LibraryFunctionUnload", + "LibraryLoad", + "LibraryUnload", + "LicenseEntitlementObject", + "LicenseEntitlements", + "LicenseID", + "LicensingSettings", + "LiftingFilterData", + "LiftingWaveletTransform", + "LightBlue", + "LightBrown", + "LightCyan", + "Lighter", + "LightGray", + "LightGreen", + "Lighting", + "LightingAngle", + "LightMagenta", + "LightOrange", + "LightPink", + "LightPurple", + "LightRed", + "LightSources", + "LightYellow", + "Likelihood", + "Limit", + "LimitsPositioning", + "LimitsPositioningTokens", + "LindleyDistribution", + "Line", + "Line3DBox", + "Line3DBoxOptions", + "LinearFilter", + "LinearFractionalOptimization", + "LinearFractionalTransform", + "LinearGradientFilling", + "LinearGradientImage", + "LinearizingTransformationData", + "LinearLayer", + "LinearModelFit", + "LinearOffsetFunction", + "LinearOptimization", + "LinearProgramming", + "LinearRecurrence", + "LinearSolve", + "LinearSolveFunction", + "LineBox", + "LineBoxOptions", + "LineBreak", + "LinebreakAdjustments", + "LineBreakChart", + "LinebreakSemicolonWeighting", + "LineBreakWithin", + "LineColor", + "LineGraph", + "LineIndent", + "LineIndentMaxFraction", + "LineIntegralConvolutionPlot", + "LineIntegralConvolutionScale", + "LineLegend", + "LineOpacity", + "LineSpacing", + "LineWrapParts", + "LinkActivate", + "LinkClose", + "LinkConnect", + "LinkConnectedQ", + "LinkCreate", + "LinkError", + "LinkFlush", + "LinkFunction", + "LinkHost", + "LinkInterrupt", + "LinkLaunch", + "LinkMode", + "LinkObject", + "LinkOpen", + "LinkOptions", + "LinkPatterns", + "LinkProtocol", + "LinkRankCentrality", + "LinkRead", + "LinkReadHeld", + "LinkReadyQ", + "Links", + "LinkService", + "LinkWrite", + "LinkWriteHeld", + "LiouvilleLambda", + "List", + "Listable", + "ListAnimate", + "ListContourPlot", + "ListContourPlot3D", + "ListConvolve", + "ListCorrelate", + "ListCurvePathPlot", + "ListDeconvolve", + "ListDensityPlot", + "ListDensityPlot3D", + "Listen", + "ListFormat", + "ListFourierSequenceTransform", + "ListInterpolation", + "ListLineIntegralConvolutionPlot", + "ListLinePlot", + "ListLinePlot3D", + "ListLogLinearPlot", + "ListLogLogPlot", + "ListLogPlot", + "ListPicker", + "ListPickerBox", + "ListPickerBoxBackground", + "ListPickerBoxOptions", + "ListPlay", + "ListPlot", + "ListPlot3D", + "ListPointPlot3D", + "ListPolarPlot", + "ListQ", + "ListSliceContourPlot3D", + "ListSliceDensityPlot3D", + "ListSliceVectorPlot3D", + "ListStepPlot", + "ListStreamDensityPlot", + "ListStreamPlot", + "ListStreamPlot3D", + "ListSurfacePlot3D", + "ListVectorDensityPlot", + "ListVectorDisplacementPlot", + "ListVectorDisplacementPlot3D", + "ListVectorPlot", + "ListVectorPlot3D", + "ListZTransform", + "Literal", + "LiteralSearch", + "LiteralType", + "LoadCompiledComponent", + "LocalAdaptiveBinarize", + "LocalCache", + "LocalClusteringCoefficient", + "LocalEvaluate", + "LocalizeDefinitions", + "LocalizeVariables", + "LocalObject", + "LocalObjects", + "LocalResponseNormalizationLayer", + "LocalSubmit", + "LocalSymbol", + "LocalTime", + "LocalTimeZone", + "LocationEquivalenceTest", + "LocationTest", + "Locator", + "LocatorAutoCreate", + "LocatorBox", + "LocatorBoxOptions", + "LocatorCentering", + "LocatorPane", + "LocatorPaneBox", + "LocatorPaneBoxOptions", + "LocatorRegion", + "Locked", + "Log", + "Log10", + "Log2", + "LogBarnesG", + "LogGamma", + "LogGammaDistribution", + "LogicalExpand", + "LogIntegral", + "LogisticDistribution", + "LogisticSigmoid", + "LogitModelFit", + "LogLikelihood", + "LogLinearPlot", + "LogLogisticDistribution", + "LogLogPlot", + "LogMultinormalDistribution", + "LogNormalDistribution", + "LogPlot", + "LogRankTest", + "LogSeriesDistribution", + "LongEqual", + "Longest", + "LongestCommonSequence", + "LongestCommonSequencePositions", + "LongestCommonSubsequence", + "LongestCommonSubsequencePositions", + "LongestMatch", + "LongestOrderedSequence", + "LongForm", + "Longitude", + "LongLeftArrow", + "LongLeftRightArrow", + "LongRightArrow", + "LongShortTermMemoryLayer", + "Lookup", + "Loopback", + "LoopFreeGraphQ", + "Looping", + "LossFunction", + "LowerCaseQ", + "LowerLeftArrow", + "LowerRightArrow", + "LowerTriangularize", + "LowerTriangularMatrix", + "LowerTriangularMatrixQ", + "LowpassFilter", + "LQEstimatorGains", + "LQGRegulator", + "LQOutputRegulatorGains", + "LQRegulatorGains", + "LUBackSubstitution", + "LucasL", + "LuccioSamiComponents", + "LUDecomposition", + "LunarEclipse", + "LUVColor", + "LyapunovSolve", + "LyonsGroupLy", + "MachineID", + "MachineName", + "MachineNumberQ", + "MachinePrecision", + "MacintoshSystemPageSetup", + "Magenta", + "Magnification", + "Magnify", + "MailAddressValidation", + "MailExecute", + "MailFolder", + "MailItem", + "MailReceiverFunction", + "MailResponseFunction", + "MailSearch", + "MailServerConnect", + "MailServerConnection", + "MailSettings", + "MainSolve", + "MaintainDynamicCaches", + "Majority", + "MakeBoxes", + "MakeExpression", + "MakeRules", + "ManagedLibraryExpressionID", + "ManagedLibraryExpressionQ", + "MandelbrotSetBoettcher", + "MandelbrotSetDistance", + "MandelbrotSetIterationCount", + "MandelbrotSetMemberQ", + "MandelbrotSetPlot", + "MangoldtLambda", + "ManhattanDistance", + "Manipulate", + "Manipulator", + "MannedSpaceMissionData", + "MannWhitneyTest", + "MantissaExponent", + "Manual", + "Map", + "MapAll", + "MapApply", + "MapAt", + "MapIndexed", + "MAProcess", + "MapThread", + "MarchenkoPasturDistribution", + "MarcumQ", + "MardiaCombinedTest", + "MardiaKurtosisTest", + "MardiaSkewnessTest", + "MarginalDistribution", + "MarkovProcessProperties", + "Masking", + "MassConcentrationCondition", + "MassFluxValue", + "MassImpermeableBoundaryValue", + "MassOutflowValue", + "MassSymmetryValue", + "MassTransferValue", + "MassTransportPDEComponent", + "MatchingDissimilarity", + "MatchLocalNameQ", + "MatchLocalNames", + "MatchQ", + "Material", + "MaterialShading", + "MaternPointProcess", + "MathematicalFunctionData", + "MathematicaNotation", + "MathieuC", + "MathieuCharacteristicA", + "MathieuCharacteristicB", + "MathieuCharacteristicExponent", + "MathieuCPrime", + "MathieuGroupM11", + "MathieuGroupM12", + "MathieuGroupM22", + "MathieuGroupM23", + "MathieuGroupM24", + "MathieuS", + "MathieuSPrime", + "MathMLForm", + "MathMLText", + "Matrices", + "MatrixExp", + "MatrixForm", + "MatrixFunction", + "MatrixLog", + "MatrixNormalDistribution", + "MatrixPlot", + "MatrixPower", + "MatrixPropertyDistribution", + "MatrixQ", + "MatrixRank", + "MatrixTDistribution", + "Max", + "MaxBend", + "MaxCellMeasure", + "MaxColorDistance", + "MaxDate", + "MaxDetect", + "MaxDisplayedChildren", + "MaxDuration", + "MaxExtraBandwidths", + "MaxExtraConditions", + "MaxFeatureDisplacement", + "MaxFeatures", + "MaxFilter", + "MaximalBy", + "Maximize", + "MaxItems", + "MaxIterations", + "MaxLimit", + "MaxMemoryUsed", + "MaxMixtureKernels", + "MaxOverlapFraction", + "MaxPlotPoints", + "MaxPoints", + "MaxRecursion", + "MaxStableDistribution", + "MaxStepFraction", + "MaxSteps", + "MaxStepSize", + "MaxTrainingRounds", + "MaxValue", + "MaxwellDistribution", + "MaxWordGap", + "McLaughlinGroupMcL", + "Mean", + "MeanAbsoluteLossLayer", + "MeanAround", + "MeanClusteringCoefficient", + "MeanDegreeConnectivity", + "MeanDeviation", + "MeanFilter", + "MeanGraphDistance", + "MeanNeighborDegree", + "MeanPointDensity", + "MeanShift", + "MeanShiftFilter", + "MeanSquaredLossLayer", + "Median", + "MedianDeviation", + "MedianFilter", + "MedicalTestData", + "Medium", + "MeijerG", + "MeijerGReduce", + "MeixnerDistribution", + "MellinConvolve", + "MellinTransform", + "MemberQ", + "MemoryAvailable", + "MemoryConstrained", + "MemoryConstraint", + "MemoryInUse", + "MengerMesh", + "Menu", + "MenuAppearance", + "MenuCommandKey", + "MenuEvaluator", + "MenuItem", + "MenuList", + "MenuPacket", + "MenuSortingValue", + "MenuStyle", + "MenuView", + "Merge", + "MergeDifferences", + "MergingFunction", + "MersennePrimeExponent", + "MersennePrimeExponentQ", + "Mesh", + "MeshCellCentroid", + "MeshCellCount", + "MeshCellHighlight", + "MeshCellIndex", + "MeshCellLabel", + "MeshCellMarker", + "MeshCellMeasure", + "MeshCellQuality", + "MeshCells", + "MeshCellShapeFunction", + "MeshCellStyle", + "MeshConnectivityGraph", + "MeshCoordinates", + "MeshFunctions", + "MeshPrimitives", + "MeshQualityGoal", + "MeshRange", + "MeshRefinementFunction", + "MeshRegion", + "MeshRegionQ", + "MeshShading", + "MeshStyle", + "Message", + "MessageDialog", + "MessageList", + "MessageName", + "MessageObject", + "MessageOptions", + "MessagePacket", + "Messages", + "MessagesNotebook", + "MetaCharacters", + "MetaInformation", + "MeteorShowerData", + "Method", + "MethodOptions", + "MexicanHatWavelet", + "MeyerWavelet", + "Midpoint", + "MIMETypeToFormatList", + "Min", + "MinColorDistance", + "MinDate", + "MinDetect", + "MineralData", + "MinFilter", + "MinimalBy", + "MinimalPolynomial", + "MinimalStateSpaceModel", + "Minimize", + "MinimumTimeIncrement", + "MinIntervalSize", + "MinkowskiQuestionMark", + "MinLimit", + "MinMax", + "MinorPlanetData", + "Minors", + "MinPointSeparation", + "MinRecursion", + "MinSize", + "MinStableDistribution", + "Minus", + "MinusPlus", + "MinValue", + "Missing", + "MissingBehavior", + "MissingDataMethod", + "MissingDataRules", + "MissingQ", + "MissingString", + "MissingStyle", + "MissingValuePattern", + "MissingValueSynthesis", + "MittagLefflerE", + "MixedFractionParts", + "MixedGraphQ", + "MixedMagnitude", + "MixedRadix", + "MixedRadixQuantity", + "MixedUnit", + "MixtureDistribution", + "Mod", + "Modal", + "Mode", + "ModelPredictiveController", + "Modular", + "ModularInverse", + "ModularLambda", + "Module", + "Modulus", + "MoebiusMu", + "Molecule", + "MoleculeAlign", + "MoleculeContainsQ", + "MoleculeDraw", + "MoleculeEquivalentQ", + "MoleculeFreeQ", + "MoleculeGraph", + "MoleculeMatchQ", + "MoleculeMaximumCommonSubstructure", + "MoleculeModify", + "MoleculeName", + "MoleculePattern", + "MoleculePlot", + "MoleculePlot3D", + "MoleculeProperty", + "MoleculeQ", + "MoleculeRecognize", + "MoleculeSubstructureCount", + "MoleculeValue", + "Moment", + "MomentConvert", + "MomentEvaluate", + "MomentGeneratingFunction", + "MomentOfInertia", + "Monday", + "Monitor", + "MonomialList", + "MonomialOrder", + "MonsterGroupM", + "MoonPhase", + "MoonPosition", + "MorletWavelet", + "MorphologicalBinarize", + "MorphologicalBranchPoints", + "MorphologicalComponents", + "MorphologicalEulerNumber", + "MorphologicalGraph", + "MorphologicalPerimeter", + "MorphologicalTransform", + "MortalityData", + "Most", + "MountainData", + "MouseAnnotation", + "MouseAppearance", + "MouseAppearanceTag", + "MouseButtons", + "Mouseover", + "MousePointerNote", + "MousePosition", + "MovieData", + "MovingAverage", + "MovingMap", + "MovingMedian", + "MoyalDistribution", + "MultiaxisArrangement", + "Multicolumn", + "MultiedgeStyle", + "MultigraphQ", + "MultilaunchWarning", + "MultiLetterItalics", + "MultiLetterStyle", + "MultilineFunction", + "Multinomial", + "MultinomialDistribution", + "MultinormalDistribution", + "MultiplicativeOrder", + "Multiplicity", + "MultiplySides", + "MultiscriptBoxOptions", + "Multiselection", + "MultivariateHypergeometricDistribution", + "MultivariatePoissonDistribution", + "MultivariateTDistribution", + "N", + "NakagamiDistribution", + "NameQ", + "Names", + "NamespaceBox", + "NamespaceBoxOptions", + "Nand", + "NArgMax", + "NArgMin", + "NBernoulliB", + "NBodySimulation", + "NBodySimulationData", + "NCache", + "NCaputoD", + "NDEigensystem", + "NDEigenvalues", + "NDSolve", + "NDSolveValue", + "Nearest", + "NearestFunction", + "NearestMeshCells", + "NearestNeighborG", + "NearestNeighborGraph", + "NearestTo", + "NebulaData", + "NeedlemanWunschSimilarity", + "Needs", + "Negative", + "NegativeBinomialDistribution", + "NegativeDefiniteMatrixQ", + "NegativeIntegers", + "NegativelyOrientedPoints", + "NegativeMultinomialDistribution", + "NegativeRationals", + "NegativeReals", + "NegativeSemidefiniteMatrixQ", + "NeighborhoodData", + "NeighborhoodGraph", + "Nest", + "NestedGreaterGreater", + "NestedLessLess", + "NestedScriptRules", + "NestGraph", + "NestList", + "NestTree", + "NestWhile", + "NestWhileList", + "NetAppend", + "NetArray", + "NetArrayLayer", + "NetBidirectionalOperator", + "NetChain", + "NetDecoder", + "NetDelete", + "NetDrop", + "NetEncoder", + "NetEvaluationMode", + "NetExternalObject", + "NetExtract", + "NetFlatten", + "NetFoldOperator", + "NetGANOperator", + "NetGraph", + "NetInformation", + "NetInitialize", + "NetInsert", + "NetInsertSharedArrays", + "NetJoin", + "NetMapOperator", + "NetMapThreadOperator", + "NetMeasurements", + "NetModel", + "NetNestOperator", + "NetPairEmbeddingOperator", + "NetPort", + "NetPortGradient", + "NetPrepend", + "NetRename", + "NetReplace", + "NetReplacePart", + "NetSharedArray", + "NetStateObject", + "NetTake", + "NetTrain", + "NetTrainResultsObject", + "NetUnfold", + "NetworkPacketCapture", + "NetworkPacketRecording", + "NetworkPacketRecordingDuring", + "NetworkPacketTrace", + "NeumannValue", + "NevilleThetaC", + "NevilleThetaD", + "NevilleThetaN", + "NevilleThetaS", + "NewPrimitiveStyle", + "NExpectation", + "Next", + "NextCell", + "NextDate", + "NextPrime", + "NextScheduledTaskTime", + "NeymanScottPointProcess", + "NFractionalD", + "NHoldAll", + "NHoldFirst", + "NHoldRest", + "NicholsGridLines", + "NicholsPlot", + "NightHemisphere", + "NIntegrate", + "NMaximize", + "NMaxValue", + "NMinimize", + "NMinValue", + "NominalScale", + "NominalVariables", + "NonAssociative", + "NoncentralBetaDistribution", + "NoncentralChiSquareDistribution", + "NoncentralFRatioDistribution", + "NoncentralStudentTDistribution", + "NonCommutativeMultiply", + "NonConstants", + "NondimensionalizationTransform", + "None", + "NoneTrue", + "NonlinearModelFit", + "NonlinearStateSpaceModel", + "NonlocalMeansFilter", + "NonNegative", + "NonNegativeIntegers", + "NonNegativeRationals", + "NonNegativeReals", + "NonPositive", + "NonPositiveIntegers", + "NonPositiveRationals", + "NonPositiveReals", + "Nor", + "NorlundB", + "Norm", + "Normal", + "NormalDistribution", + "NormalGrouping", + "NormalizationLayer", + "Normalize", + "Normalized", + "NormalizedSquaredEuclideanDistance", + "NormalMatrixQ", + "NormalsFunction", + "NormFunction", + "Not", + "NotCongruent", + "NotCupCap", + "NotDoubleVerticalBar", + "Notebook", + "NotebookApply", + "NotebookAutoSave", + "NotebookBrowseDirectory", + "NotebookClose", + "NotebookConvertSettings", + "NotebookCreate", + "NotebookDefault", + "NotebookDelete", + "NotebookDirectory", + "NotebookDynamicExpression", + "NotebookEvaluate", + "NotebookEventActions", + "NotebookFileName", + "NotebookFind", + "NotebookGet", + "NotebookImport", + "NotebookInformation", + "NotebookInterfaceObject", + "NotebookLocate", + "NotebookObject", + "NotebookOpen", + "NotebookPath", + "NotebookPrint", + "NotebookPut", + "NotebookRead", + "Notebooks", + "NotebookSave", + "NotebookSelection", + "NotebooksMenu", + "NotebookTemplate", + "NotebookWrite", + "NotElement", + "NotEqualTilde", + "NotExists", + "NotGreater", + "NotGreaterEqual", + "NotGreaterFullEqual", + "NotGreaterGreater", + "NotGreaterLess", + "NotGreaterSlantEqual", + "NotGreaterTilde", + "Nothing", + "NotHumpDownHump", + "NotHumpEqual", + "NotificationFunction", + "NotLeftTriangle", + "NotLeftTriangleBar", + "NotLeftTriangleEqual", + "NotLess", + "NotLessEqual", + "NotLessFullEqual", + "NotLessGreater", + "NotLessLess", + "NotLessSlantEqual", + "NotLessTilde", + "NotNestedGreaterGreater", + "NotNestedLessLess", + "NotPrecedes", + "NotPrecedesEqual", + "NotPrecedesSlantEqual", + "NotPrecedesTilde", + "NotReverseElement", + "NotRightTriangle", + "NotRightTriangleBar", + "NotRightTriangleEqual", + "NotSquareSubset", + "NotSquareSubsetEqual", + "NotSquareSuperset", + "NotSquareSupersetEqual", + "NotSubset", + "NotSubsetEqual", + "NotSucceeds", + "NotSucceedsEqual", + "NotSucceedsSlantEqual", + "NotSucceedsTilde", + "NotSuperset", + "NotSupersetEqual", + "NotTilde", + "NotTildeEqual", + "NotTildeFullEqual", + "NotTildeTilde", + "NotVerticalBar", + "Now", + "NoWhitespace", + "NProbability", + "NProduct", + "NProductFactors", + "NRoots", + "NSolve", + "NSolveValues", + "NSum", + "NSumTerms", + "NuclearExplosionData", + "NuclearReactorData", + "Null", + "NullRecords", + "NullSpace", + "NullWords", + "Number", + "NumberCompose", + "NumberDecompose", + "NumberDigit", + "NumberExpand", + "NumberFieldClassNumber", + "NumberFieldDiscriminant", + "NumberFieldFundamentalUnits", + "NumberFieldIntegralBasis", + "NumberFieldNormRepresentatives", + "NumberFieldRegulator", + "NumberFieldRootsOfUnity", + "NumberFieldSignature", + "NumberForm", + "NumberFormat", + "NumberLinePlot", + "NumberMarks", + "NumberMultiplier", + "NumberPadding", + "NumberPoint", + "NumberQ", + "NumberSeparator", + "NumberSigns", + "NumberString", + "Numerator", + "NumeratorDenominator", + "NumericalOrder", + "NumericalSort", + "NumericArray", + "NumericArrayQ", + "NumericArrayType", + "NumericFunction", + "NumericQ", + "NuttallWindow", + "NValues", + "NyquistGridLines", + "NyquistPlot", + "O", + "ObjectExistsQ", + "ObservabilityGramian", + "ObservabilityMatrix", + "ObservableDecomposition", + "ObservableModelQ", + "OceanData", + "Octahedron", + "OddQ", + "Off", + "Offset", + "OLEData", + "On", + "ONanGroupON", + "Once", + "OneIdentity", + "Opacity", + "OpacityFunction", + "OpacityFunctionScaling", + "Open", + "OpenAppend", + "Opener", + "OpenerBox", + "OpenerBoxOptions", + "OpenerView", + "OpenFunctionInspectorPacket", + "Opening", + "OpenRead", + "OpenSpecialOptions", + "OpenTemporary", + "OpenWrite", + "Operate", + "OperatingSystem", + "OperatorApplied", + "OptimumFlowData", + "Optional", + "OptionalElement", + "OptionInspectorSettings", + "OptionQ", + "Options", + "OptionsPacket", + "OptionsPattern", + "OptionValue", + "OptionValueBox", + "OptionValueBoxOptions", + "Or", + "Orange", + "Order", + "OrderDistribution", + "OrderedQ", + "Ordering", + "OrderingBy", + "OrderingLayer", + "Orderless", + "OrderlessPatternSequence", + "OrdinalScale", + "OrnsteinUhlenbeckProcess", + "Orthogonalize", + "OrthogonalMatrixQ", + "Out", + "Outer", + "OuterPolygon", + "OuterPolyhedron", + "OutputAutoOverwrite", + "OutputControllabilityMatrix", + "OutputControllableModelQ", + "OutputForm", + "OutputFormData", + "OutputGrouping", + "OutputMathEditExpression", + "OutputNamePacket", + "OutputPorts", + "OutputResponse", + "OutputSizeLimit", + "OutputStream", + "Over", + "OverBar", + "OverDot", + "Overflow", + "OverHat", + "Overlaps", + "Overlay", + "OverlayBox", + "OverlayBoxOptions", + "OverlayVideo", + "Overscript", + "OverscriptBox", + "OverscriptBoxOptions", + "OverTilde", + "OverVector", + "OverwriteTarget", + "OwenT", + "OwnValues", + "Package", + "PackingMethod", + "PackPaclet", + "PacletDataRebuild", + "PacletDirectoryAdd", + "PacletDirectoryLoad", + "PacletDirectoryRemove", + "PacletDirectoryUnload", + "PacletDisable", + "PacletEnable", + "PacletFind", + "PacletFindRemote", + "PacletInformation", + "PacletInstall", + "PacletInstallSubmit", + "PacletNewerQ", + "PacletObject", + "PacletObjectQ", + "PacletSite", + "PacletSiteObject", + "PacletSiteRegister", + "PacletSites", + "PacletSiteUnregister", + "PacletSiteUpdate", + "PacletSymbol", + "PacletUninstall", + "PacletUpdate", + "PaddedForm", + "Padding", + "PaddingLayer", + "PaddingSize", + "PadeApproximant", + "PadLeft", + "PadRight", + "PageBreakAbove", + "PageBreakBelow", + "PageBreakWithin", + "PageFooterLines", + "PageFooters", + "PageHeaderLines", + "PageHeaders", + "PageHeight", + "PageRankCentrality", + "PageTheme", + "PageWidth", + "Pagination", + "PairCorrelationG", + "PairedBarChart", + "PairedHistogram", + "PairedSmoothHistogram", + "PairedTTest", + "PairedZTest", + "PaletteNotebook", + "PalettePath", + "PalettesMenuSettings", + "PalindromeQ", + "Pane", + "PaneBox", + "PaneBoxOptions", + "Panel", + "PanelBox", + "PanelBoxOptions", + "Paneled", + "PaneSelector", + "PaneSelectorBox", + "PaneSelectorBoxOptions", + "PaperWidth", + "ParabolicCylinderD", + "ParagraphIndent", + "ParagraphSpacing", + "ParallelArray", + "ParallelAxisPlot", + "ParallelCombine", + "ParallelDo", + "Parallelepiped", + "ParallelEvaluate", + "Parallelization", + "Parallelize", + "ParallelKernels", + "ParallelMap", + "ParallelNeeds", + "Parallelogram", + "ParallelProduct", + "ParallelSubmit", + "ParallelSum", + "ParallelTable", + "ParallelTry", + "Parameter", + "ParameterEstimator", + "ParameterMixtureDistribution", + "ParameterVariables", + "ParametricConvexOptimization", + "ParametricFunction", + "ParametricNDSolve", + "ParametricNDSolveValue", + "ParametricPlot", + "ParametricPlot3D", + "ParametricRampLayer", + "ParametricRegion", + "ParentBox", + "ParentCell", + "ParentConnect", + "ParentDirectory", + "ParentEdgeLabel", + "ParentEdgeLabelFunction", + "ParentEdgeLabelStyle", + "ParentEdgeShapeFunction", + "ParentEdgeStyle", + "ParentEdgeStyleFunction", + "ParentForm", + "Parenthesize", + "ParentList", + "ParentNotebook", + "ParetoDistribution", + "ParetoPickandsDistribution", + "ParkData", + "Part", + "PartBehavior", + "PartialCorrelationFunction", + "PartialD", + "ParticleAcceleratorData", + "ParticleData", + "Partition", + "PartitionGranularity", + "PartitionsP", + "PartitionsQ", + "PartLayer", + "PartOfSpeech", + "PartProtection", + "ParzenWindow", + "PascalDistribution", + "PassEventsDown", + "PassEventsUp", + "Paste", + "PasteAutoQuoteCharacters", + "PasteBoxFormInlineCells", + "PasteButton", + "Path", + "PathGraph", + "PathGraphQ", + "Pattern", + "PatternFilling", + "PatternReaction", + "PatternSequence", + "PatternTest", + "PauliMatrix", + "PaulWavelet", + "Pause", + "PausedTime", + "PDF", + "PeakDetect", + "PeanoCurve", + "PearsonChiSquareTest", + "PearsonCorrelationTest", + "PearsonDistribution", + "PenttinenPointProcess", + "PercentForm", + "PerfectNumber", + "PerfectNumberQ", + "PerformanceGoal", + "Perimeter", + "PeriodicBoundaryCondition", + "PeriodicInterpolation", + "Periodogram", + "PeriodogramArray", + "Permanent", + "Permissions", + "PermissionsGroup", + "PermissionsGroupMemberQ", + "PermissionsGroups", + "PermissionsKey", + "PermissionsKeys", + "PermutationCycles", + "PermutationCyclesQ", + "PermutationGroup", + "PermutationLength", + "PermutationList", + "PermutationListQ", + "PermutationMatrix", + "PermutationMax", + "PermutationMin", + "PermutationOrder", + "PermutationPower", + "PermutationProduct", + "PermutationReplace", + "Permutations", + "PermutationSupport", + "Permute", + "PeronaMalikFilter", + "Perpendicular", + "PerpendicularBisector", + "PersistenceLocation", + "PersistenceTime", + "PersistentObject", + "PersistentObjects", + "PersistentSymbol", + "PersistentValue", + "PersonData", + "PERTDistribution", + "PetersenGraph", + "PhaseMargins", + "PhaseRange", + "PhongShading", + "PhysicalSystemData", + "Pi", + "Pick", + "PickedElements", + "PickMode", + "PIDData", + "PIDDerivativeFilter", + "PIDFeedforward", + "PIDTune", + "Piecewise", + "PiecewiseExpand", + "PieChart", + "PieChart3D", + "PillaiTrace", + "PillaiTraceTest", + "PingTime", + "Pink", + "PitchRecognize", + "Pivoting", + "PixelConstrained", + "PixelValue", + "PixelValuePositions", + "Placed", + "Placeholder", + "PlaceholderLayer", + "PlaceholderReplace", + "Plain", + "PlanarAngle", + "PlanarFaceList", + "PlanarGraph", + "PlanarGraphQ", + "PlanckRadiationLaw", + "PlaneCurveData", + "PlanetaryMoonData", + "PlanetData", + "PlantData", + "Play", + "PlaybackSettings", + "PlayRange", + "Plot", + "Plot3D", + "Plot3Matrix", + "PlotDivision", + "PlotJoined", + "PlotLabel", + "PlotLabels", + "PlotLayout", + "PlotLegends", + "PlotMarkers", + "PlotPoints", + "PlotRange", + "PlotRangeClipping", + "PlotRangeClipPlanesStyle", + "PlotRangePadding", + "PlotRegion", + "PlotStyle", + "PlotTheme", + "Pluralize", + "Plus", + "PlusMinus", + "Pochhammer", + "PodStates", + "PodWidth", + "Point", + "Point3DBox", + "Point3DBoxOptions", + "PointBox", + "PointBoxOptions", + "PointCountDistribution", + "PointDensity", + "PointDensityFunction", + "PointFigureChart", + "PointLegend", + "PointLight", + "PointProcessEstimator", + "PointProcessFitTest", + "PointProcessParameterAssumptions", + "PointProcessParameterQ", + "PointSize", + "PointStatisticFunction", + "PointValuePlot", + "PoissonConsulDistribution", + "PoissonDistribution", + "PoissonPDEComponent", + "PoissonPointProcess", + "PoissonProcess", + "PoissonWindow", + "PolarAxes", + "PolarAxesOrigin", + "PolarGridLines", + "PolarPlot", + "PolarTicks", + "PoleZeroMarkers", + "PolyaAeppliDistribution", + "PolyGamma", + "Polygon", + "Polygon3DBox", + "Polygon3DBoxOptions", + "PolygonalNumber", + "PolygonAngle", + "PolygonBox", + "PolygonBoxOptions", + "PolygonCoordinates", + "PolygonDecomposition", + "PolygonHoleScale", + "PolygonIntersections", + "PolygonScale", + "Polyhedron", + "PolyhedronAngle", + "PolyhedronBox", + "PolyhedronBoxOptions", + "PolyhedronCoordinates", + "PolyhedronData", + "PolyhedronDecomposition", + "PolyhedronGenus", + "PolyLog", + "PolynomialExpressionQ", + "PolynomialExtendedGCD", + "PolynomialForm", + "PolynomialGCD", + "PolynomialLCM", + "PolynomialMod", + "PolynomialQ", + "PolynomialQuotient", + "PolynomialQuotientRemainder", + "PolynomialReduce", + "PolynomialRemainder", + "Polynomials", + "PolynomialSumOfSquaresList", + "PoolingLayer", + "PopupMenu", + "PopupMenuBox", + "PopupMenuBoxOptions", + "PopupView", + "PopupWindow", + "Position", + "PositionIndex", + "PositionLargest", + "PositionSmallest", + "Positive", + "PositiveDefiniteMatrixQ", + "PositiveIntegers", + "PositivelyOrientedPoints", + "PositiveRationals", + "PositiveReals", + "PositiveSemidefiniteMatrixQ", + "PossibleZeroQ", + "Postfix", + "PostScript", + "Power", + "PowerDistribution", + "PowerExpand", + "PowerMod", + "PowerModList", + "PowerRange", + "PowerSpectralDensity", + "PowersRepresentations", + "PowerSymmetricPolynomial", + "Precedence", + "PrecedenceForm", + "Precedes", + "PrecedesEqual", + "PrecedesSlantEqual", + "PrecedesTilde", + "Precision", + "PrecisionGoal", + "PreDecrement", + "Predict", + "PredictionRoot", + "PredictorFunction", + "PredictorInformation", + "PredictorMeasurements", + "PredictorMeasurementsObject", + "PreemptProtect", + "PreferencesPath", + "PreferencesSettings", + "Prefix", + "PreIncrement", + "Prepend", + "PrependLayer", + "PrependTo", + "PreprocessingRules", + "PreserveColor", + "PreserveImageOptions", + "Previous", + "PreviousCell", + "PreviousDate", + "PriceGraphDistribution", + "PrimaryPlaceholder", + "Prime", + "PrimeNu", + "PrimeOmega", + "PrimePi", + "PrimePowerQ", + "PrimeQ", + "Primes", + "PrimeZetaP", + "PrimitivePolynomialQ", + "PrimitiveRoot", + "PrimitiveRootList", + "PrincipalComponents", + "PrincipalValue", + "Print", + "PrintableASCIIQ", + "PrintAction", + "PrintForm", + "PrintingCopies", + "PrintingOptions", + "PrintingPageRange", + "PrintingStartingPageNumber", + "PrintingStyleEnvironment", + "Printout3D", + "Printout3DPreviewer", + "PrintPrecision", + "PrintTemporary", + "Prism", + "PrismBox", + "PrismBoxOptions", + "PrivateCellOptions", + "PrivateEvaluationOptions", + "PrivateFontOptions", + "PrivateFrontEndOptions", + "PrivateKey", + "PrivateNotebookOptions", + "PrivatePaths", + "Probability", + "ProbabilityDistribution", + "ProbabilityPlot", + "ProbabilityPr", + "ProbabilityScalePlot", + "ProbitModelFit", + "ProcessConnection", + "ProcessDirectory", + "ProcessEnvironment", + "Processes", + "ProcessEstimator", + "ProcessInformation", + "ProcessObject", + "ProcessParameterAssumptions", + "ProcessParameterQ", + "ProcessStateDomain", + "ProcessStatus", + "ProcessTimeDomain", + "Product", + "ProductDistribution", + "ProductLog", + "ProgressIndicator", + "ProgressIndicatorBox", + "ProgressIndicatorBoxOptions", + "ProgressReporting", + "Projection", + "Prolog", + "PromptForm", + "ProofObject", + "PropagateAborts", + "Properties", + "Property", + "PropertyList", + "PropertyValue", + "Proportion", + "Proportional", + "Protect", + "Protected", + "ProteinData", + "Pruning", + "PseudoInverse", + "PsychrometricPropertyData", + "PublicKey", + "PublisherID", + "PulsarData", + "PunctuationCharacter", + "Purple", + "Put", + "PutAppend", + "Pyramid", + "PyramidBox", + "PyramidBoxOptions", + "QBinomial", + "QFactorial", + "QGamma", + "QHypergeometricPFQ", + "QnDispersion", + "QPochhammer", + "QPolyGamma", + "QRDecomposition", + "QuadraticIrrationalQ", + "QuadraticOptimization", + "Quantile", + "QuantilePlot", + "Quantity", + "QuantityArray", + "QuantityDistribution", + "QuantityForm", + "QuantityMagnitude", + "QuantityQ", + "QuantityUnit", + "QuantityVariable", + "QuantityVariableCanonicalUnit", + "QuantityVariableDimensions", + "QuantityVariableIdentifier", + "QuantityVariablePhysicalQuantity", + "Quartics", + "QuartileDeviation", + "Quartiles", + "QuartileSkewness", + "Query", + "QuestionGenerator", + "QuestionInterface", + "QuestionObject", + "QuestionSelector", + "QueueingNetworkProcess", + "QueueingProcess", + "QueueProperties", + "Quiet", + "QuietEcho", + "Quit", + "Quotient", + "QuotientRemainder", + "RadialAxisPlot", + "RadialGradientFilling", + "RadialGradientImage", + "RadialityCentrality", + "RadicalBox", + "RadicalBoxOptions", + "RadioButton", + "RadioButtonBar", + "RadioButtonBox", + "RadioButtonBoxOptions", + "Radon", + "RadonTransform", + "RamanujanTau", + "RamanujanTauL", + "RamanujanTauTheta", + "RamanujanTauZ", + "Ramp", + "Random", + "RandomArrayLayer", + "RandomChoice", + "RandomColor", + "RandomComplex", + "RandomDate", + "RandomEntity", + "RandomFunction", + "RandomGeneratorState", + "RandomGeoPosition", + "RandomGraph", + "RandomImage", + "RandomInstance", + "RandomInteger", + "RandomPermutation", + "RandomPoint", + "RandomPointConfiguration", + "RandomPolygon", + "RandomPolyhedron", + "RandomPrime", + "RandomReal", + "RandomSample", + "RandomSeed", + "RandomSeeding", + "RandomTime", + "RandomTree", + "RandomVariate", + "RandomWalkProcess", + "RandomWord", + "Range", + "RangeFilter", + "RangeSpecification", + "RankedMax", + "RankedMin", + "RarerProbability", + "Raster", + "Raster3D", + "Raster3DBox", + "Raster3DBoxOptions", + "RasterArray", + "RasterBox", + "RasterBoxOptions", + "Rasterize", + "RasterSize", + "Rational", + "RationalExpressionQ", + "RationalFunctions", + "Rationalize", + "Rationals", + "Ratios", + "RawArray", + "RawBoxes", + "RawData", + "RawMedium", + "RayleighDistribution", + "Re", + "ReactionBalance", + "ReactionBalancedQ", + "ReactionPDETerm", + "Read", + "ReadByteArray", + "ReadLine", + "ReadList", + "ReadProtected", + "ReadString", + "Real", + "RealAbs", + "RealBlockDiagonalForm", + "RealDigits", + "RealExponent", + "Reals", + "RealSign", + "Reap", + "RebuildPacletData", + "RecalibrationFunction", + "RecognitionPrior", + "RecognitionThreshold", + "ReconstructionMesh", + "Record", + "RecordLists", + "RecordSeparators", + "Rectangle", + "RectangleBox", + "RectangleBoxOptions", + "RectangleChart", + "RectangleChart3D", + "RectangularRepeatingElement", + "RecurrenceFilter", + "RecurrenceTable", + "RecurringDigitsForm", + "Red", + "Reduce", + "RefBox", + "ReferenceLineStyle", + "ReferenceMarkers", + "ReferenceMarkerStyle", + "Refine", + "ReflectionMatrix", + "ReflectionTransform", + "Refresh", + "RefreshRate", + "Region", + "RegionBinarize", + "RegionBoundary", + "RegionBoundaryStyle", + "RegionBounds", + "RegionCentroid", + "RegionCongruent", + "RegionConvert", + "RegionDifference", + "RegionDilation", + "RegionDimension", + "RegionDisjoint", + "RegionDistance", + "RegionDistanceFunction", + "RegionEmbeddingDimension", + "RegionEqual", + "RegionErosion", + "RegionFillingStyle", + "RegionFit", + "RegionFunction", + "RegionImage", + "RegionIntersection", + "RegionMeasure", + "RegionMember", + "RegionMemberFunction", + "RegionMoment", + "RegionNearest", + "RegionNearestFunction", + "RegionPlot", + "RegionPlot3D", + "RegionProduct", + "RegionQ", + "RegionResize", + "RegionSimilar", + "RegionSize", + "RegionSymmetricDifference", + "RegionUnion", + "RegionWithin", + "RegisterExternalEvaluator", + "RegularExpression", + "Regularization", + "RegularlySampledQ", + "RegularPolygon", + "ReIm", + "ReImLabels", + "ReImPlot", + "ReImStyle", + "Reinstall", + "RelationalDatabase", + "RelationGraph", + "Release", + "ReleaseHold", + "ReliabilityDistribution", + "ReliefImage", + "ReliefPlot", + "RemoteAuthorizationCaching", + "RemoteBatchJobAbort", + "RemoteBatchJobObject", + "RemoteBatchJobs", + "RemoteBatchMapSubmit", + "RemoteBatchSubmissionEnvironment", + "RemoteBatchSubmit", + "RemoteConnect", + "RemoteConnectionObject", + "RemoteEvaluate", + "RemoteFile", + "RemoteInputFiles", + "RemoteKernelObject", + "RemoteProviderSettings", + "RemoteRun", + "RemoteRunProcess", + "RemovalConditions", + "Remove", + "RemoveAlphaChannel", + "RemoveAsynchronousTask", + "RemoveAudioStream", + "RemoveBackground", + "RemoveChannelListener", + "RemoveChannelSubscribers", + "Removed", + "RemoveDiacritics", + "RemoveInputStreamMethod", + "RemoveOutputStreamMethod", + "RemoveProperty", + "RemoveScheduledTask", + "RemoveUsers", + "RemoveVideoStream", + "RenameDirectory", + "RenameFile", + "RenderAll", + "RenderingOptions", + "RenewalProcess", + "RenkoChart", + "RepairMesh", + "Repeated", + "RepeatedNull", + "RepeatedString", + "RepeatedTiming", + "RepeatingElement", + "Replace", + "ReplaceAll", + "ReplaceAt", + "ReplaceHeldPart", + "ReplaceImageValue", + "ReplaceList", + "ReplacePart", + "ReplacePixelValue", + "ReplaceRepeated", + "ReplicateLayer", + "RequiredPhysicalQuantities", + "Resampling", + "ResamplingAlgorithmData", + "ResamplingMethod", + "Rescale", + "RescalingTransform", + "ResetDirectory", + "ResetScheduledTask", + "ReshapeLayer", + "Residue", + "ResidueSum", + "ResizeLayer", + "Resolve", + "ResolveContextAliases", + "ResourceAcquire", + "ResourceData", + "ResourceFunction", + "ResourceObject", + "ResourceRegister", + "ResourceRemove", + "ResourceSearch", + "ResourceSubmissionObject", + "ResourceSubmit", + "ResourceSystemBase", + "ResourceSystemPath", + "ResourceUpdate", + "ResourceVersion", + "ResponseForm", + "Rest", + "RestartInterval", + "Restricted", + "Resultant", + "ResumePacket", + "Return", + "ReturnCreatesNewCell", + "ReturnEntersInput", + "ReturnExpressionPacket", + "ReturnInputFormPacket", + "ReturnPacket", + "ReturnReceiptFunction", + "ReturnTextPacket", + "Reverse", + "ReverseApplied", + "ReverseBiorthogonalSplineWavelet", + "ReverseElement", + "ReverseEquilibrium", + "ReverseGraph", + "ReverseSort", + "ReverseSortBy", + "ReverseUpEquilibrium", + "RevolutionAxis", + "RevolutionPlot3D", + "RGBColor", + "RiccatiSolve", + "RiceDistribution", + "RidgeFilter", + "RiemannR", + "RiemannSiegelTheta", + "RiemannSiegelZ", + "RiemannXi", + "Riffle", + "Right", + "RightArrow", + "RightArrowBar", + "RightArrowLeftArrow", + "RightComposition", + "RightCosetRepresentative", + "RightDownTeeVector", + "RightDownVector", + "RightDownVectorBar", + "RightTee", + "RightTeeArrow", + "RightTeeVector", + "RightTriangle", + "RightTriangleBar", + "RightTriangleEqual", + "RightUpDownVector", + "RightUpTeeVector", + "RightUpVector", + "RightUpVectorBar", + "RightVector", + "RightVectorBar", + "RipleyK", + "RipleyRassonRegion", + "RiskAchievementImportance", + "RiskReductionImportance", + "RobustConvexOptimization", + "RogersTanimotoDissimilarity", + "RollPitchYawAngles", + "RollPitchYawMatrix", + "RomanNumeral", + "Root", + "RootApproximant", + "RootIntervals", + "RootLocusPlot", + "RootMeanSquare", + "RootOfUnityQ", + "RootReduce", + "Roots", + "RootSum", + "RootTree", + "Rotate", + "RotateLabel", + "RotateLeft", + "RotateRight", + "RotationAction", + "RotationBox", + "RotationBoxOptions", + "RotationMatrix", + "RotationTransform", + "Round", + "RoundImplies", + "RoundingRadius", + "Row", + "RowAlignments", + "RowBackgrounds", + "RowBox", + "RowHeights", + "RowLines", + "RowMinHeight", + "RowReduce", + "RowsEqual", + "RowSpacings", + "RSolve", + "RSolveValue", + "RudinShapiro", + "RudvalisGroupRu", + "Rule", + "RuleCondition", + "RuleDelayed", + "RuleForm", + "RulePlot", + "RulerUnits", + "RulesTree", + "Run", + "RunProcess", + "RunScheduledTask", + "RunThrough", + "RuntimeAttributes", + "RuntimeOptions", + "RussellRaoDissimilarity", + "SameAs", + "SameQ", + "SameTest", + "SameTestProperties", + "SampledEntityClass", + "SampleDepth", + "SampledSoundFunction", + "SampledSoundList", + "SampleRate", + "SamplingPeriod", + "SARIMAProcess", + "SARMAProcess", + "SASTriangle", + "SatelliteData", + "SatisfiabilityCount", + "SatisfiabilityInstances", + "SatisfiableQ", + "Saturday", + "Save", + "Saveable", + "SaveAutoDelete", + "SaveConnection", + "SaveDefinitions", + "SavitzkyGolayMatrix", + "SawtoothWave", + "Scale", + "Scaled", + "ScaleDivisions", + "ScaledMousePosition", + "ScaleOrigin", + "ScalePadding", + "ScaleRanges", + "ScaleRangeStyle", + "ScalingFunctions", + "ScalingMatrix", + "ScalingTransform", + "Scan", + "ScheduledTask", + "ScheduledTaskActiveQ", + "ScheduledTaskInformation", + "ScheduledTaskInformationData", + "ScheduledTaskObject", + "ScheduledTasks", + "SchurDecomposition", + "ScientificForm", + "ScientificNotationThreshold", + "ScorerGi", + "ScorerGiPrime", + "ScorerHi", + "ScorerHiPrime", + "ScreenRectangle", + "ScreenStyleEnvironment", + "ScriptBaselineShifts", + "ScriptForm", + "ScriptLevel", + "ScriptMinSize", + "ScriptRules", + "ScriptSizeMultipliers", + "Scrollbars", + "ScrollingOptions", + "ScrollPosition", + "SearchAdjustment", + "SearchIndexObject", + "SearchIndices", + "SearchQueryString", + "SearchResultObject", + "Sec", + "Sech", + "SechDistribution", + "SecondOrderConeOptimization", + "SectionGrouping", + "SectorChart", + "SectorChart3D", + "SectorOrigin", + "SectorSpacing", + "SecuredAuthenticationKey", + "SecuredAuthenticationKeys", + "SecurityCertificate", + "SeedRandom", + "Select", + "Selectable", + "SelectComponents", + "SelectedCells", + "SelectedNotebook", + "SelectFirst", + "Selection", + "SelectionAnimate", + "SelectionCell", + "SelectionCellCreateCell", + "SelectionCellDefaultStyle", + "SelectionCellParentStyle", + "SelectionCreateCell", + "SelectionDebuggerTag", + "SelectionEvaluate", + "SelectionEvaluateCreateCell", + "SelectionMove", + "SelectionPlaceholder", + "SelectWithContents", + "SelfLoops", + "SelfLoopStyle", + "SemanticImport", + "SemanticImportString", + "SemanticInterpretation", + "SemialgebraicComponentInstances", + "SemidefiniteOptimization", + "SendMail", + "SendMessage", + "Sequence", + "SequenceAlignment", + "SequenceAttentionLayer", + "SequenceCases", + "SequenceCount", + "SequenceFold", + "SequenceFoldList", + "SequenceForm", + "SequenceHold", + "SequenceIndicesLayer", + "SequenceLastLayer", + "SequenceMostLayer", + "SequencePosition", + "SequencePredict", + "SequencePredictorFunction", + "SequenceReplace", + "SequenceRestLayer", + "SequenceReverseLayer", + "SequenceSplit", + "Series", + "SeriesCoefficient", + "SeriesData", + "SeriesTermGoal", + "ServiceConnect", + "ServiceDisconnect", + "ServiceExecute", + "ServiceObject", + "ServiceRequest", + "ServiceResponse", + "ServiceSubmit", + "SessionSubmit", + "SessionTime", + "Set", + "SetAccuracy", + "SetAlphaChannel", + "SetAttributes", + "Setbacks", + "SetCloudDirectory", + "SetCookies", + "SetDelayed", + "SetDirectory", + "SetEnvironment", + "SetFileDate", + "SetFileFormatProperties", + "SetOptions", + "SetOptionsPacket", + "SetPermissions", + "SetPrecision", + "SetProperty", + "SetSecuredAuthenticationKey", + "SetSelectedNotebook", + "SetSharedFunction", + "SetSharedVariable", + "SetStreamPosition", + "SetSystemModel", + "SetSystemOptions", + "Setter", + "SetterBar", + "SetterBox", + "SetterBoxOptions", + "Setting", + "SetUsers", + "Shading", + "Shallow", + "ShannonWavelet", + "ShapiroWilkTest", + "Share", + "SharingList", + "Sharpen", + "ShearingMatrix", + "ShearingTransform", + "ShellRegion", + "ShenCastanMatrix", + "ShiftedGompertzDistribution", + "ShiftRegisterSequence", + "Short", + "ShortDownArrow", + "Shortest", + "ShortestMatch", + "ShortestPathFunction", + "ShortLeftArrow", + "ShortRightArrow", + "ShortTimeFourier", + "ShortTimeFourierData", + "ShortUpArrow", + "Show", + "ShowAutoConvert", + "ShowAutoSpellCheck", + "ShowAutoStyles", + "ShowCellBracket", + "ShowCellLabel", + "ShowCellTags", + "ShowClosedCellArea", + "ShowCodeAssist", + "ShowContents", + "ShowControls", + "ShowCursorTracker", + "ShowGroupOpenCloseIcon", + "ShowGroupOpener", + "ShowInvisibleCharacters", + "ShowPageBreaks", + "ShowPredictiveInterface", + "ShowSelection", + "ShowShortBoxForm", + "ShowSpecialCharacters", + "ShowStringCharacters", + "ShowSyntaxStyles", + "ShrinkingDelay", + "ShrinkWrapBoundingBox", + "SiderealTime", + "SiegelTheta", + "SiegelTukeyTest", + "SierpinskiCurve", + "SierpinskiMesh", + "Sign", + "Signature", + "SignedRankTest", + "SignedRegionDistance", + "SignificanceLevel", + "SignPadding", + "SignTest", + "SimilarityRules", + "SimpleGraph", + "SimpleGraphQ", + "SimplePolygonQ", + "SimplePolyhedronQ", + "Simplex", + "Simplify", + "Sin", + "Sinc", + "SinghMaddalaDistribution", + "SingleEvaluation", + "SingleLetterItalics", + "SingleLetterStyle", + "SingularValueDecomposition", + "SingularValueList", + "SingularValuePlot", + "SingularValues", + "Sinh", + "SinhIntegral", + "SinIntegral", + "SixJSymbol", + "Skeleton", + "SkeletonTransform", + "SkellamDistribution", + "Skewness", + "SkewNormalDistribution", + "SkinStyle", + "Skip", + "SliceContourPlot3D", + "SliceDensityPlot3D", + "SliceDistribution", + "SliceVectorPlot3D", + "Slider", + "Slider2D", + "Slider2DBox", + "Slider2DBoxOptions", + "SliderBox", + "SliderBoxOptions", + "SlideShowVideo", + "SlideView", + "Slot", + "SlotSequence", + "Small", + "SmallCircle", + "Smaller", + "SmithDecomposition", + "SmithDelayCompensator", + "SmithWatermanSimilarity", + "SmoothDensityHistogram", + "SmoothHistogram", + "SmoothHistogram3D", + "SmoothKernelDistribution", + "SmoothPointDensity", + "SnDispersion", + "Snippet", + "SnippetsVideo", + "SnubPolyhedron", + "SocialMediaData", + "Socket", + "SocketConnect", + "SocketListen", + "SocketListener", + "SocketObject", + "SocketOpen", + "SocketReadMessage", + "SocketReadyQ", + "Sockets", + "SocketWaitAll", + "SocketWaitNext", + "SoftmaxLayer", + "SokalSneathDissimilarity", + "SolarEclipse", + "SolarSystemFeatureData", + "SolarTime", + "SolidAngle", + "SolidBoundaryLoadValue", + "SolidData", + "SolidDisplacementCondition", + "SolidFixedCondition", + "SolidMechanicsPDEComponent", + "SolidMechanicsStrain", + "SolidMechanicsStress", + "SolidRegionQ", + "Solve", + "SolveAlways", + "SolveDelayed", + "SolveValues", + "Sort", + "SortBy", + "SortedBy", + "SortedEntityClass", + "Sound", + "SoundAndGraphics", + "SoundNote", + "SoundVolume", + "SourceLink", + "SourcePDETerm", + "Sow", + "Space", + "SpaceCurveData", + "SpaceForm", + "Spacer", + "Spacings", + "Span", + "SpanAdjustments", + "SpanCharacterRounding", + "SpanFromAbove", + "SpanFromBoth", + "SpanFromLeft", + "SpanLineThickness", + "SpanMaxSize", + "SpanMinSize", + "SpanningCharacters", + "SpanSymmetric", + "SparseArray", + "SparseArrayQ", + "SpatialBinnedPointData", + "SpatialBoundaryCorrection", + "SpatialEstimate", + "SpatialEstimatorFunction", + "SpatialGraphDistribution", + "SpatialJ", + "SpatialMedian", + "SpatialNoiseLevel", + "SpatialObservationRegionQ", + "SpatialPointData", + "SpatialPointSelect", + "SpatialRandomnessTest", + "SpatialTransformationLayer", + "SpatialTrendFunction", + "Speak", + "SpeakerMatchQ", + "SpearmanRankTest", + "SpearmanRho", + "SpeciesData", + "SpecificityGoal", + "SpectralLineData", + "Spectrogram", + "SpectrogramArray", + "Specularity", + "SpeechCases", + "SpeechInterpreter", + "SpeechRecognize", + "SpeechSynthesize", + "SpellingCorrection", + "SpellingCorrectionList", + "SpellingDictionaries", + "SpellingDictionariesPath", + "SpellingOptions", + "Sphere", + "SphereBox", + "SphereBoxOptions", + "SpherePoints", + "SphericalBesselJ", + "SphericalBesselY", + "SphericalHankelH1", + "SphericalHankelH2", + "SphericalHarmonicY", + "SphericalPlot3D", + "SphericalRegion", + "SphericalShell", + "SpheroidalEigenvalue", + "SpheroidalJoiningFactor", + "SpheroidalPS", + "SpheroidalPSPrime", + "SpheroidalQS", + "SpheroidalQSPrime", + "SpheroidalRadialFactor", + "SpheroidalS1", + "SpheroidalS1Prime", + "SpheroidalS2", + "SpheroidalS2Prime", + "Splice", + "SplicedDistribution", + "SplineClosed", + "SplineDegree", + "SplineKnots", + "SplineWeights", + "Split", + "SplitBy", + "SpokenString", + "SpotLight", + "Sqrt", + "SqrtBox", + "SqrtBoxOptions", + "Square", + "SquaredEuclideanDistance", + "SquareFreeQ", + "SquareIntersection", + "SquareMatrixQ", + "SquareRepeatingElement", + "SquaresR", + "SquareSubset", + "SquareSubsetEqual", + "SquareSuperset", + "SquareSupersetEqual", + "SquareUnion", + "SquareWave", + "SSSTriangle", + "StabilityMargins", + "StabilityMarginsStyle", + "StableDistribution", + "Stack", + "StackBegin", + "StackComplete", + "StackedDateListPlot", + "StackedListPlot", + "StackInhibit", + "StadiumShape", + "StandardAtmosphereData", + "StandardDeviation", + "StandardDeviationFilter", + "StandardForm", + "Standardize", + "Standardized", + "StandardOceanData", + "StandbyDistribution", + "Star", + "StarClusterData", + "StarData", + "StarGraph", + "StartAsynchronousTask", + "StartExternalSession", + "StartingStepSize", + "StartOfLine", + "StartOfString", + "StartProcess", + "StartScheduledTask", + "StartupSound", + "StartWebSession", + "StateDimensions", + "StateFeedbackGains", + "StateOutputEstimator", + "StateResponse", + "StateSpaceModel", + "StateSpaceRealization", + "StateSpaceTransform", + "StateTransformationLinearize", + "StationaryDistribution", + "StationaryWaveletPacketTransform", + "StationaryWaveletTransform", + "StatusArea", + "StatusCentrality", + "StepMonitor", + "StereochemistryElements", + "StieltjesGamma", + "StippleShading", + "StirlingS1", + "StirlingS2", + "StopAsynchronousTask", + "StoppingPowerData", + "StopScheduledTask", + "StrataVariables", + "StratonovichProcess", + "StraussHardcorePointProcess", + "StraussPointProcess", + "StreamColorFunction", + "StreamColorFunctionScaling", + "StreamDensityPlot", + "StreamMarkers", + "StreamPlot", + "StreamPlot3D", + "StreamPoints", + "StreamPosition", + "Streams", + "StreamScale", + "StreamStyle", + "StrictInequalities", + "String", + "StringBreak", + "StringByteCount", + "StringCases", + "StringContainsQ", + "StringCount", + "StringDelete", + "StringDrop", + "StringEndsQ", + "StringExpression", + "StringExtract", + "StringForm", + "StringFormat", + "StringFormatQ", + "StringFreeQ", + "StringInsert", + "StringJoin", + "StringLength", + "StringMatchQ", + "StringPadLeft", + "StringPadRight", + "StringPart", + "StringPartition", + "StringPosition", + "StringQ", + "StringRepeat", + "StringReplace", + "StringReplaceList", + "StringReplacePart", + "StringReverse", + "StringRiffle", + "StringRotateLeft", + "StringRotateRight", + "StringSkeleton", + "StringSplit", + "StringStartsQ", + "StringTake", + "StringTakeDrop", + "StringTemplate", + "StringToByteArray", + "StringToStream", + "StringTrim", + "StripBoxes", + "StripOnInput", + "StripStyleOnPaste", + "StripWrapperBoxes", + "StrokeForm", + "Struckthrough", + "StructuralImportance", + "StructuredArray", + "StructuredArrayHeadQ", + "StructuredSelection", + "StruveH", + "StruveL", + "Stub", + "StudentTDistribution", + "Style", + "StyleBox", + "StyleBoxAutoDelete", + "StyleData", + "StyleDefinitions", + "StyleForm", + "StyleHints", + "StyleKeyMapping", + "StyleMenuListing", + "StyleNameDialogSettings", + "StyleNames", + "StylePrint", + "StyleSheetPath", + "Subdivide", + "Subfactorial", + "Subgraph", + "SubMinus", + "SubPlus", + "SubresultantPolynomialRemainders", + "SubresultantPolynomials", + "Subresultants", + "Subscript", + "SubscriptBox", + "SubscriptBoxOptions", + "Subscripted", + "Subsequences", + "Subset", + "SubsetCases", + "SubsetCount", + "SubsetEqual", + "SubsetMap", + "SubsetPosition", + "SubsetQ", + "SubsetReplace", + "Subsets", + "SubStar", + "SubstitutionSystem", + "Subsuperscript", + "SubsuperscriptBox", + "SubsuperscriptBoxOptions", + "SubtitleEncoding", + "SubtitleTrackSelection", + "Subtract", + "SubtractFrom", + "SubtractSides", + "SubValues", + "Succeeds", + "SucceedsEqual", + "SucceedsSlantEqual", + "SucceedsTilde", + "Success", + "SuchThat", + "Sum", + "SumConvergence", + "SummationLayer", + "Sunday", + "SunPosition", + "Sunrise", + "Sunset", + "SuperDagger", + "SuperMinus", + "SupernovaData", + "SuperPlus", + "Superscript", + "SuperscriptBox", + "SuperscriptBoxOptions", + "Superset", + "SupersetEqual", + "SuperStar", + "Surd", + "SurdForm", + "SurfaceAppearance", + "SurfaceArea", + "SurfaceColor", + "SurfaceData", + "SurfaceGraphics", + "SurvivalDistribution", + "SurvivalFunction", + "SurvivalModel", + "SurvivalModelFit", + "SuspendPacket", + "SuzukiDistribution", + "SuzukiGroupSuz", + "SwatchLegend", + "Switch", + "Symbol", + "SymbolName", + "SymletWavelet", + "Symmetric", + "SymmetricDifference", + "SymmetricGroup", + "SymmetricKey", + "SymmetricMatrixQ", + "SymmetricPolynomial", + "SymmetricReduction", + "Symmetrize", + "SymmetrizedArray", + "SymmetrizedArrayRules", + "SymmetrizedDependentComponents", + "SymmetrizedIndependentComponents", + "SymmetrizedReplacePart", + "SynchronousInitialization", + "SynchronousUpdating", + "Synonyms", + "Syntax", + "SyntaxForm", + "SyntaxInformation", + "SyntaxLength", + "SyntaxPacket", + "SyntaxQ", + "SynthesizeMissingValues", + "SystemCredential", + "SystemCredentialData", + "SystemCredentialKey", + "SystemCredentialKeys", + "SystemCredentialStoreObject", + "SystemDialogInput", + "SystemException", + "SystemGet", + "SystemHelpPath", + "SystemInformation", + "SystemInformationData", + "SystemInstall", + "SystemModel", + "SystemModeler", + "SystemModelExamples", + "SystemModelLinearize", + "SystemModelMeasurements", + "SystemModelParametricSimulate", + "SystemModelPlot", + "SystemModelProgressReporting", + "SystemModelReliability", + "SystemModels", + "SystemModelSimulate", + "SystemModelSimulateSensitivity", + "SystemModelSimulationData", + "SystemOpen", + "SystemOptions", + "SystemProcessData", + "SystemProcesses", + "SystemsConnectionsModel", + "SystemsModelControllerData", + "SystemsModelDelay", + "SystemsModelDelayApproximate", + "SystemsModelDelete", + "SystemsModelDimensions", + "SystemsModelExtract", + "SystemsModelFeedbackConnect", + "SystemsModelLabels", + "SystemsModelLinearity", + "SystemsModelMerge", + "SystemsModelOrder", + "SystemsModelParallelConnect", + "SystemsModelSeriesConnect", + "SystemsModelStateFeedbackConnect", + "SystemsModelVectorRelativeOrders", + "SystemStub", + "SystemTest", + "Tab", + "TabFilling", + "Table", + "TableAlignments", + "TableDepth", + "TableDirections", + "TableForm", + "TableHeadings", + "TableSpacing", + "TableView", + "TableViewBox", + "TableViewBoxAlignment", + "TableViewBoxBackground", + "TableViewBoxHeaders", + "TableViewBoxItemSize", + "TableViewBoxItemStyle", + "TableViewBoxOptions", + "TabSpacings", + "TabView", + "TabViewBox", + "TabViewBoxOptions", + "TagBox", + "TagBoxNote", + "TagBoxOptions", + "TaggingRules", + "TagSet", + "TagSetDelayed", + "TagStyle", + "TagUnset", + "Take", + "TakeDrop", + "TakeLargest", + "TakeLargestBy", + "TakeList", + "TakeSmallest", + "TakeSmallestBy", + "TakeWhile", + "Tally", + "Tan", + "Tanh", + "TargetDevice", + "TargetFunctions", + "TargetSystem", + "TargetUnits", + "TaskAbort", + "TaskExecute", + "TaskObject", + "TaskRemove", + "TaskResume", + "Tasks", + "TaskSuspend", + "TaskWait", + "TautologyQ", + "TelegraphProcess", + "TemplateApply", + "TemplateArgBox", + "TemplateBox", + "TemplateBoxOptions", + "TemplateEvaluate", + "TemplateExpression", + "TemplateIf", + "TemplateObject", + "TemplateSequence", + "TemplateSlot", + "TemplateSlotSequence", + "TemplateUnevaluated", + "TemplateVerbatim", + "TemplateWith", + "TemporalData", + "TemporalRegularity", + "Temporary", + "TemporaryVariable", + "TensorContract", + "TensorDimensions", + "TensorExpand", + "TensorProduct", + "TensorQ", + "TensorRank", + "TensorReduce", + "TensorSymmetry", + "TensorTranspose", + "TensorWedge", + "TerminatedEvaluation", + "TernaryListPlot", + "TernaryPlotCorners", + "TestID", + "TestReport", + "TestReportObject", + "TestResultObject", + "Tetrahedron", + "TetrahedronBox", + "TetrahedronBoxOptions", + "TeXForm", + "TeXSave", + "Text", + "Text3DBox", + "Text3DBoxOptions", + "TextAlignment", + "TextBand", + "TextBoundingBox", + "TextBox", + "TextCases", + "TextCell", + "TextClipboardType", + "TextContents", + "TextData", + "TextElement", + "TextForm", + "TextGrid", + "TextJustification", + "TextLine", + "TextPacket", + "TextParagraph", + "TextPosition", + "TextRecognize", + "TextSearch", + "TextSearchReport", + "TextSentences", + "TextString", + "TextStructure", + "TextStyle", + "TextTranslation", + "Texture", + "TextureCoordinateFunction", + "TextureCoordinateScaling", + "TextWords", + "Therefore", + "ThermodynamicData", + "ThermometerGauge", + "Thick", + "Thickness", + "Thin", + "Thinning", + "ThisLink", + "ThomasPointProcess", + "ThompsonGroupTh", + "Thread", + "Threaded", + "ThreadingLayer", + "ThreeJSymbol", + "Threshold", + "Through", + "Throw", + "ThueMorse", + "Thumbnail", + "Thursday", + "TickDirection", + "TickLabelOrientation", + "TickLabelPositioning", + "TickLabels", + "TickLengths", + "TickPositions", + "Ticks", + "TicksStyle", + "TideData", + "Tilde", + "TildeEqual", + "TildeFullEqual", + "TildeTilde", + "TimeConstrained", + "TimeConstraint", + "TimeDirection", + "TimeFormat", + "TimeGoal", + "TimelinePlot", + "TimeObject", + "TimeObjectQ", + "TimeRemaining", + "Times", + "TimesBy", + "TimeSeries", + "TimeSeriesAggregate", + "TimeSeriesForecast", + "TimeSeriesInsert", + "TimeSeriesInvertibility", + "TimeSeriesMap", + "TimeSeriesMapThread", + "TimeSeriesModel", + "TimeSeriesModelFit", + "TimeSeriesResample", + "TimeSeriesRescale", + "TimeSeriesShift", + "TimeSeriesThread", + "TimeSeriesWindow", + "TimeSystem", + "TimeSystemConvert", + "TimeUsed", + "TimeValue", + "TimeWarpingCorrespondence", + "TimeWarpingDistance", + "TimeZone", + "TimeZoneConvert", + "TimeZoneOffset", + "Timing", + "Tiny", + "TitleGrouping", + "TitsGroupT", + "ToBoxes", + "ToCharacterCode", + "ToColor", + "ToContinuousTimeModel", + "ToDate", + "Today", + "ToDiscreteTimeModel", + "ToEntity", + "ToeplitzMatrix", + "ToExpression", + "ToFileName", + "Together", + "Toggle", + "ToggleFalse", + "Toggler", + "TogglerBar", + "TogglerBox", + "TogglerBoxOptions", + "ToHeldExpression", + "ToInvertibleTimeSeries", + "TokenWords", + "Tolerance", + "ToLowerCase", + "Tomorrow", + "ToNumberField", + "TooBig", + "Tooltip", + "TooltipBox", + "TooltipBoxOptions", + "TooltipDelay", + "TooltipStyle", + "ToonShading", + "Top", + "TopHatTransform", + "ToPolarCoordinates", + "TopologicalSort", + "ToRadicals", + "ToRawPointer", + "ToRules", + "Torus", + "TorusGraph", + "ToSphericalCoordinates", + "ToString", + "Total", + "TotalHeight", + "TotalLayer", + "TotalVariationFilter", + "TotalWidth", + "TouchPosition", + "TouchscreenAutoZoom", + "TouchscreenControlPlacement", + "ToUpperCase", + "TourVideo", + "Tr", + "Trace", + "TraceAbove", + "TraceAction", + "TraceBackward", + "TraceDepth", + "TraceDialog", + "TraceForward", + "TraceInternal", + "TraceLevel", + "TraceOff", + "TraceOn", + "TraceOriginal", + "TracePrint", + "TraceScan", + "TrackCellChangeTimes", + "TrackedSymbols", + "TrackingFunction", + "TracyWidomDistribution", + "TradingChart", + "TraditionalForm", + "TraditionalFunctionNotation", + "TraditionalNotation", + "TraditionalOrder", + "TrainImageContentDetector", + "TrainingProgressCheckpointing", + "TrainingProgressFunction", + "TrainingProgressMeasurements", + "TrainingProgressReporting", + "TrainingStoppingCriterion", + "TrainingUpdateSchedule", + "TrainTextContentDetector", + "TransferFunctionCancel", + "TransferFunctionExpand", + "TransferFunctionFactor", + "TransferFunctionModel", + "TransferFunctionPoles", + "TransferFunctionTransform", + "TransferFunctionZeros", + "TransformationClass", + "TransformationFunction", + "TransformationFunctions", + "TransformationMatrix", + "TransformedDistribution", + "TransformedField", + "TransformedProcess", + "TransformedRegion", + "TransitionDirection", + "TransitionDuration", + "TransitionEffect", + "TransitiveClosureGraph", + "TransitiveReductionGraph", + "Translate", + "TranslationOptions", + "TranslationTransform", + "Transliterate", + "Transparent", + "TransparentColor", + "Transpose", + "TransposeLayer", + "TrapEnterKey", + "TrapSelection", + "TravelDirections", + "TravelDirectionsData", + "TravelDistance", + "TravelDistanceList", + "TravelMethod", + "TravelTime", + "Tree", + "TreeCases", + "TreeChildren", + "TreeCount", + "TreeData", + "TreeDelete", + "TreeDepth", + "TreeElementCoordinates", + "TreeElementLabel", + "TreeElementLabelFunction", + "TreeElementLabelStyle", + "TreeElementShape", + "TreeElementShapeFunction", + "TreeElementSize", + "TreeElementSizeFunction", + "TreeElementStyle", + "TreeElementStyleFunction", + "TreeExpression", + "TreeExtract", + "TreeFold", + "TreeForm", + "TreeGraph", + "TreeGraphQ", + "TreeInsert", + "TreeLayout", + "TreeLeafCount", + "TreeLeafQ", + "TreeLeaves", + "TreeLevel", + "TreeMap", + "TreeMapAt", + "TreeOutline", + "TreePlot", + "TreePosition", + "TreeQ", + "TreeReplacePart", + "TreeRules", + "TreeScan", + "TreeSelect", + "TreeSize", + "TreeTraversalOrder", + "TrendStyle", + "Triangle", + "TriangleCenter", + "TriangleConstruct", + "TriangleMeasurement", + "TriangleWave", + "TriangularDistribution", + "TriangulateMesh", + "Trig", + "TrigExpand", + "TrigFactor", + "TrigFactorList", + "Trigger", + "TrigReduce", + "TrigToExp", + "TrimmedMean", + "TrimmedVariance", + "TropicalStormData", + "True", + "TrueQ", + "TruncatedDistribution", + "TruncatedPolyhedron", + "TsallisQExponentialDistribution", + "TsallisQGaussianDistribution", + "TTest", + "Tube", + "TubeBezierCurveBox", + "TubeBezierCurveBoxOptions", + "TubeBox", + "TubeBoxOptions", + "TubeBSplineCurveBox", + "TubeBSplineCurveBoxOptions", + "Tuesday", + "TukeyLambdaDistribution", + "TukeyWindow", + "TunnelData", + "Tuples", + "TuranGraph", + "TuringMachine", + "TuttePolynomial", + "TwoWayRule", + "Typed", + "TypeDeclaration", + "TypeEvaluate", + "TypeHint", + "TypeOf", + "TypeSpecifier", + "UnateQ", + "Uncompress", + "UnconstrainedParameters", + "Undefined", + "UnderBar", + "Underflow", + "Underlined", + "Underoverscript", + "UnderoverscriptBox", + "UnderoverscriptBoxOptions", + "Underscript", + "UnderscriptBox", + "UnderscriptBoxOptions", + "UnderseaFeatureData", + "UndirectedEdge", + "UndirectedGraph", + "UndirectedGraphQ", + "UndoOptions", + "UndoTrackedVariables", + "Unequal", + "UnequalTo", + "Unevaluated", + "UniformDistribution", + "UniformGraphDistribution", + "UniformPolyhedron", + "UniformSumDistribution", + "Uninstall", + "Union", + "UnionedEntityClass", + "UnionPlus", + "Unique", + "UniqueElements", + "UnitaryMatrixQ", + "UnitBox", + "UnitConvert", + "UnitDimensions", + "Unitize", + "UnitRootTest", + "UnitSimplify", + "UnitStep", + "UnitSystem", + "UnitTriangle", + "UnitVector", + "UnitVectorLayer", + "UnityDimensions", + "UniverseModelData", + "UniversityData", + "UnixTime", + "UnlabeledTree", + "UnmanageObject", + "Unprotect", + "UnregisterExternalEvaluator", + "UnsameQ", + "UnsavedVariables", + "Unset", + "UnsetShared", + "Until", + "UntrackedVariables", + "Up", + "UpArrow", + "UpArrowBar", + "UpArrowDownArrow", + "Update", + "UpdateDynamicObjects", + "UpdateDynamicObjectsSynchronous", + "UpdateInterval", + "UpdatePacletSites", + "UpdateSearchIndex", + "UpDownArrow", + "UpEquilibrium", + "UpperCaseQ", + "UpperLeftArrow", + "UpperRightArrow", + "UpperTriangularize", + "UpperTriangularMatrix", + "UpperTriangularMatrixQ", + "Upsample", + "UpSet", + "UpSetDelayed", + "UpTee", + "UpTeeArrow", + "UpTo", + "UpValues", + "URL", + "URLBuild", + "URLDecode", + "URLDispatcher", + "URLDownload", + "URLDownloadSubmit", + "URLEncode", + "URLExecute", + "URLExpand", + "URLFetch", + "URLFetchAsynchronous", + "URLParse", + "URLQueryDecode", + "URLQueryEncode", + "URLRead", + "URLResponseTime", + "URLSave", + "URLSaveAsynchronous", + "URLShorten", + "URLSubmit", + "UseEmbeddedLibrary", + "UseGraphicsRange", + "UserDefinedWavelet", + "Using", + "UsingFrontEnd", + "UtilityFunction", + "V2Get", + "ValenceErrorHandling", + "ValenceFilling", + "ValidationLength", + "ValidationSet", + "ValueBox", + "ValueBoxOptions", + "ValueDimensions", + "ValueForm", + "ValuePreprocessingFunction", + "ValueQ", + "Values", + "ValuesData", + "VandermondeMatrix", + "Variables", + "Variance", + "VarianceEquivalenceTest", + "VarianceEstimatorFunction", + "VarianceGammaDistribution", + "VarianceGammaPointProcess", + "VarianceTest", + "VariogramFunction", + "VariogramModel", + "VectorAngle", + "VectorAround", + "VectorAspectRatio", + "VectorColorFunction", + "VectorColorFunctionScaling", + "VectorDensityPlot", + "VectorDisplacementPlot", + "VectorDisplacementPlot3D", + "VectorGlyphData", + "VectorGreater", + "VectorGreaterEqual", + "VectorLess", + "VectorLessEqual", + "VectorMarkers", + "VectorPlot", + "VectorPlot3D", + "VectorPoints", + "VectorQ", + "VectorRange", + "Vectors", + "VectorScale", + "VectorScaling", + "VectorSizes", + "VectorStyle", + "Vee", + "Verbatim", + "Verbose", + "VerificationTest", + "VerifyConvergence", + "VerifyDerivedKey", + "VerifyDigitalSignature", + "VerifyFileSignature", + "VerifyInterpretation", + "VerifySecurityCertificates", + "VerifySolutions", + "VerifyTestAssumptions", + "VersionedPreferences", + "VertexAdd", + "VertexCapacity", + "VertexChromaticNumber", + "VertexColors", + "VertexComponent", + "VertexConnectivity", + "VertexContract", + "VertexCoordinateRules", + "VertexCoordinates", + "VertexCorrelationSimilarity", + "VertexCosineSimilarity", + "VertexCount", + "VertexCoverQ", + "VertexDataCoordinates", + "VertexDegree", + "VertexDelete", + "VertexDiceSimilarity", + "VertexEccentricity", + "VertexInComponent", + "VertexInComponentGraph", + "VertexInDegree", + "VertexIndex", + "VertexJaccardSimilarity", + "VertexLabeling", + "VertexLabels", + "VertexLabelStyle", + "VertexList", + "VertexNormals", + "VertexOutComponent", + "VertexOutComponentGraph", + "VertexOutDegree", + "VertexQ", + "VertexRenderingFunction", + "VertexReplace", + "VertexShape", + "VertexShapeFunction", + "VertexSize", + "VertexStyle", + "VertexTextureCoordinates", + "VertexTransitiveGraphQ", + "VertexWeight", + "VertexWeightedGraphQ", + "Vertical", + "VerticalBar", + "VerticalForm", + "VerticalGauge", + "VerticalSeparator", + "VerticalSlider", + "VerticalTilde", + "Video", + "VideoCapture", + "VideoCombine", + "VideoDelete", + "VideoEncoding", + "VideoExtractFrames", + "VideoFrameList", + "VideoFrameMap", + "VideoGenerator", + "VideoInsert", + "VideoIntervals", + "VideoJoin", + "VideoMap", + "VideoMapList", + "VideoMapTimeSeries", + "VideoPadding", + "VideoPause", + "VideoPlay", + "VideoQ", + "VideoRecord", + "VideoReplace", + "VideoScreenCapture", + "VideoSplit", + "VideoStop", + "VideoStream", + "VideoStreams", + "VideoTimeStretch", + "VideoTrackSelection", + "VideoTranscode", + "VideoTransparency", + "VideoTrim", + "ViewAngle", + "ViewCenter", + "ViewMatrix", + "ViewPoint", + "ViewPointSelectorSettings", + "ViewPort", + "ViewProjection", + "ViewRange", + "ViewVector", + "ViewVertical", + "VirtualGroupData", + "Visible", + "VisibleCell", + "VoiceStyleData", + "VoigtDistribution", + "VolcanoData", + "Volume", + "VonMisesDistribution", + "VoronoiMesh", + "WaitAll", + "WaitAsynchronousTask", + "WaitNext", + "WaitUntil", + "WakebyDistribution", + "WalleniusHypergeometricDistribution", + "WaringYuleDistribution", + "WarpingCorrespondence", + "WarpingDistance", + "WatershedComponents", + "WatsonUSquareTest", + "WattsStrogatzGraphDistribution", + "WaveletBestBasis", + "WaveletFilterCoefficients", + "WaveletImagePlot", + "WaveletListPlot", + "WaveletMapIndexed", + "WaveletMatrixPlot", + "WaveletPhi", + "WaveletPsi", + "WaveletScale", + "WaveletScalogram", + "WaveletThreshold", + "WavePDEComponent", + "WeaklyConnectedComponents", + "WeaklyConnectedGraphComponents", + "WeaklyConnectedGraphQ", + "WeakStationarity", + "WeatherData", + "WeatherForecastData", + "WebAudioSearch", + "WebColumn", + "WebElementObject", + "WeberE", + "WebExecute", + "WebImage", + "WebImageSearch", + "WebItem", + "WebPageMetaInformation", + "WebRow", + "WebSearch", + "WebSessionObject", + "WebSessions", + "WebWindowObject", + "Wedge", + "Wednesday", + "WeibullDistribution", + "WeierstrassE1", + "WeierstrassE2", + "WeierstrassE3", + "WeierstrassEta1", + "WeierstrassEta2", + "WeierstrassEta3", + "WeierstrassHalfPeriods", + "WeierstrassHalfPeriodW1", + "WeierstrassHalfPeriodW2", + "WeierstrassHalfPeriodW3", + "WeierstrassInvariantG2", + "WeierstrassInvariantG3", + "WeierstrassInvariants", + "WeierstrassP", + "WeierstrassPPrime", + "WeierstrassSigma", + "WeierstrassZeta", + "WeightedAdjacencyGraph", + "WeightedAdjacencyMatrix", + "WeightedData", + "WeightedGraphQ", + "Weights", + "WelchWindow", + "WheelGraph", + "WhenEvent", + "Which", + "While", + "White", + "WhiteNoiseProcess", + "WhitePoint", + "Whitespace", + "WhitespaceCharacter", + "WhittakerM", + "WhittakerW", + "WholeCellGroupOpener", + "WienerFilter", + "WienerProcess", + "WignerD", + "WignerSemicircleDistribution", + "WikidataData", + "WikidataSearch", + "WikipediaData", + "WikipediaSearch", + "WilksW", + "WilksWTest", + "WindDirectionData", + "WindingCount", + "WindingPolygon", + "WindowClickSelect", + "WindowElements", + "WindowFloating", + "WindowFrame", + "WindowFrameElements", + "WindowMargins", + "WindowMovable", + "WindowOpacity", + "WindowPersistentStyles", + "WindowSelected", + "WindowSize", + "WindowStatusArea", + "WindowTitle", + "WindowToolbars", + "WindowWidth", + "WindSpeedData", + "WindVectorData", + "WinsorizedMean", + "WinsorizedVariance", + "WishartMatrixDistribution", + "With", + "WithCleanup", + "WithLock", + "WolframAlpha", + "WolframAlphaDate", + "WolframAlphaQuantity", + "WolframAlphaResult", + "WolframCloudSettings", + "WolframLanguageData", + "Word", + "WordBoundary", + "WordCharacter", + "WordCloud", + "WordCount", + "WordCounts", + "WordData", + "WordDefinition", + "WordFrequency", + "WordFrequencyData", + "WordList", + "WordOrientation", + "WordSearch", + "WordSelectionFunction", + "WordSeparators", + "WordSpacings", + "WordStem", + "WordTranslation", + "WorkingPrecision", + "WrapAround", + "Write", + "WriteLine", + "WriteString", + "Wronskian", + "XMLElement", + "XMLObject", + "XMLTemplate", + "Xnor", + "Xor", + "XYZColor", + "Yellow", + "Yesterday", + "YuleDissimilarity", + "ZernikeR", + "ZeroSymmetric", + "ZeroTest", + "ZeroWidthTimes", + "Zeta", + "ZetaZero", + "ZIPCodeData", + "ZipfDistribution", + "ZoomCenter", + "ZoomFactor", + "ZTest", + "ZTransform", + "$Aborted", + "$ActivationGroupID", + "$ActivationKey", + "$ActivationUserRegistered", + "$AddOnsDirectory", + "$AllowDataUpdates", + "$AllowExternalChannelFunctions", + "$AllowInternet", + "$AssertFunction", + "$Assumptions", + "$AsynchronousTask", + "$AudioDecoders", + "$AudioEncoders", + "$AudioInputDevices", + "$AudioOutputDevices", + "$BaseDirectory", + "$BasePacletsDirectory", + "$BatchInput", + "$BatchOutput", + "$BlockchainBase", + "$BoxForms", + "$ByteOrdering", + "$CacheBaseDirectory", + "$Canceled", + "$ChannelBase", + "$CharacterEncoding", + "$CharacterEncodings", + "$CloudAccountName", + "$CloudBase", + "$CloudConnected", + "$CloudConnection", + "$CloudCreditsAvailable", + "$CloudEvaluation", + "$CloudExpressionBase", + "$CloudObjectNameFormat", + "$CloudObjectURLType", + "$CloudRootDirectory", + "$CloudSymbolBase", + "$CloudUserID", + "$CloudUserUUID", + "$CloudVersion", + "$CloudVersionNumber", + "$CloudWolframEngineVersionNumber", + "$CommandLine", + "$CompilationTarget", + "$CompilerEnvironment", + "$ConditionHold", + "$ConfiguredKernels", + "$Context", + "$ContextAliases", + "$ContextPath", + "$ControlActiveSetting", + "$Cookies", + "$CookieStore", + "$CreationDate", + "$CryptographicEllipticCurveNames", + "$CurrentLink", + "$CurrentTask", + "$CurrentWebSession", + "$DataStructures", + "$DateStringFormat", + "$DefaultAudioInputDevice", + "$DefaultAudioOutputDevice", + "$DefaultFont", + "$DefaultFrontEnd", + "$DefaultImagingDevice", + "$DefaultKernels", + "$DefaultLocalBase", + "$DefaultLocalKernel", + "$DefaultMailbox", + "$DefaultNetworkInterface", + "$DefaultPath", + "$DefaultProxyRules", + "$DefaultRemoteBatchSubmissionEnvironment", + "$DefaultRemoteKernel", + "$DefaultSystemCredentialStore", + "$Display", + "$DisplayFunction", + "$DistributedContexts", + "$DynamicEvaluation", + "$Echo", + "$EmbedCodeEnvironments", + "$EmbeddableServices", + "$EntityStores", + "$Epilog", + "$EvaluationCloudBase", + "$EvaluationCloudObject", + "$EvaluationEnvironment", + "$ExportFormats", + "$ExternalIdentifierTypes", + "$ExternalStorageBase", + "$Failed", + "$FinancialDataSource", + "$FontFamilies", + "$FormatType", + "$FrontEnd", + "$FrontEndSession", + "$GeneratedAssetLocation", + "$GeoEntityTypes", + "$GeoLocation", + "$GeoLocationCity", + "$GeoLocationCountry", + "$GeoLocationPrecision", + "$GeoLocationSource", + "$HistoryLength", + "$HomeDirectory", + "$HTMLExportRules", + "$HTTPCookies", + "$HTTPRequest", + "$IgnoreEOF", + "$ImageFormattingWidth", + "$ImageResolution", + "$ImagingDevice", + "$ImagingDevices", + "$ImportFormats", + "$IncomingMailSettings", + "$InitialDirectory", + "$Initialization", + "$InitializationContexts", + "$Input", + "$InputFileName", + "$InputStreamMethods", + "$Inspector", + "$InstallationDate", + "$InstallationDirectory", + "$InterfaceEnvironment", + "$InterpreterTypes", + "$IterationLimit", + "$KernelCount", + "$KernelID", + "$Language", + "$LaunchDirectory", + "$LibraryPath", + "$LicenseExpirationDate", + "$LicenseID", + "$LicenseProcesses", + "$LicenseServer", + "$LicenseSubprocesses", + "$LicenseType", + "$Line", + "$Linked", + "$LinkSupported", + "$LoadedFiles", + "$LocalBase", + "$LocalSymbolBase", + "$MachineAddresses", + "$MachineDomain", + "$MachineDomains", + "$MachineEpsilon", + "$MachineID", + "$MachineName", + "$MachinePrecision", + "$MachineType", + "$MaxDisplayedChildren", + "$MaxExtraPrecision", + "$MaxLicenseProcesses", + "$MaxLicenseSubprocesses", + "$MaxMachineNumber", + "$MaxNumber", + "$MaxPiecewiseCases", + "$MaxPrecision", + "$MaxRootDegree", + "$MessageGroups", + "$MessageList", + "$MessagePrePrint", + "$Messages", + "$MinMachineNumber", + "$MinNumber", + "$MinorReleaseNumber", + "$MinPrecision", + "$MobilePhone", + "$ModuleNumber", + "$NetworkConnected", + "$NetworkInterfaces", + "$NetworkLicense", + "$NewMessage", + "$NewSymbol", + "$NotebookInlineStorageLimit", + "$Notebooks", + "$NoValue", + "$NumberMarks", + "$Off", + "$OperatingSystem", + "$Output", + "$OutputForms", + "$OutputSizeLimit", + "$OutputStreamMethods", + "$Packages", + "$ParentLink", + "$ParentProcessID", + "$PasswordFile", + "$PatchLevelID", + "$Path", + "$PathnameSeparator", + "$PerformanceGoal", + "$Permissions", + "$PermissionsGroupBase", + "$PersistenceBase", + "$PersistencePath", + "$PipeSupported", + "$PlotTheme", + "$Post", + "$Pre", + "$PreferencesDirectory", + "$PreInitialization", + "$PrePrint", + "$PreRead", + "$PrintForms", + "$PrintLiteral", + "$Printout3DPreviewer", + "$ProcessID", + "$ProcessorCount", + "$ProcessorType", + "$ProductInformation", + "$ProgramName", + "$ProgressReporting", + "$PublisherID", + "$RandomGeneratorState", + "$RandomState", + "$RecursionLimit", + "$RegisteredDeviceClasses", + "$RegisteredUserName", + "$ReleaseNumber", + "$RequesterAddress", + "$RequesterCloudUserID", + "$RequesterCloudUserUUID", + "$RequesterWolframID", + "$RequesterWolframUUID", + "$ResourceSystemBase", + "$ResourceSystemPath", + "$RootDirectory", + "$ScheduledTask", + "$ScriptCommandLine", + "$ScriptInputString", + "$SecuredAuthenticationKeyTokens", + "$ServiceCreditsAvailable", + "$Services", + "$SessionID", + "$SetParentLink", + "$SharedFunctions", + "$SharedVariables", + "$SoundDisplay", + "$SoundDisplayFunction", + "$SourceLink", + "$SSHAuthentication", + "$SubtitleDecoders", + "$SubtitleEncoders", + "$SummaryBoxDataSizeLimit", + "$SuppressInputFormHeads", + "$SynchronousEvaluation", + "$SyntaxHandler", + "$System", + "$SystemCharacterEncoding", + "$SystemCredentialStore", + "$SystemID", + "$SystemMemory", + "$SystemShell", + "$SystemTimeZone", + "$SystemWordLength", + "$TargetSystems", + "$TemplatePath", + "$TemporaryDirectory", + "$TemporaryPrefix", + "$TestFileName", + "$TextStyle", + "$TimedOut", + "$TimeUnit", + "$TimeZone", + "$TimeZoneEntity", + "$TopDirectory", + "$TraceOff", + "$TraceOn", + "$TracePattern", + "$TracePostAction", + "$TracePreAction", + "$UnitSystem", + "$Urgent", + "$UserAddOnsDirectory", + "$UserAgentLanguages", + "$UserAgentMachine", + "$UserAgentName", + "$UserAgentOperatingSystem", + "$UserAgentString", + "$UserAgentVersion", + "$UserBaseDirectory", + "$UserBasePacletsDirectory", + "$UserDocumentsDirectory", + "$Username", + "$UserName", + "$UserURLBase", + "$Version", + "$VersionNumber", + "$VideoDecoders", + "$VideoEncoders", + "$VoiceStyles", + "$WolframDocumentsDirectory", + "$WolframID", + "$WolframUUID" +]; + +/* +Language: Wolfram Language +Description: The Wolfram Language is the programming language used in Wolfram Mathematica, a modern technical computing system spanning most areas of technical computing. +Authors: Patrick Scheibe , Robert Jacobson +Website: https://www.wolfram.com/mathematica/ +Category: scientific +*/ + + +/** @type LanguageFn */ +function mathematica(hljs) { + const regex = hljs.regex; + /* + This rather scary looking matching of Mathematica numbers is carefully explained by Robert Jacobson here: + https://wltools.github.io/LanguageSpec/Specification/Syntax/Number-representations/ + */ + const BASE_RE = /([2-9]|[1-2]\d|[3][0-5])\^\^/; + const BASE_DIGITS_RE = /(\w*\.\w+|\w+\.\w*|\w+)/; + const NUMBER_RE = /(\d*\.\d+|\d+\.\d*|\d+)/; + const BASE_NUMBER_RE = regex.either(regex.concat(BASE_RE, BASE_DIGITS_RE), NUMBER_RE); + + const ACCURACY_RE = /``[+-]?(\d*\.\d+|\d+\.\d*|\d+)/; + const PRECISION_RE = /`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?/; + const APPROXIMATE_NUMBER_RE = regex.either(ACCURACY_RE, PRECISION_RE); + + const SCIENTIFIC_NOTATION_RE = /\*\^[+-]?\d+/; + + const MATHEMATICA_NUMBER_RE = regex.concat( + BASE_NUMBER_RE, + regex.optional(APPROXIMATE_NUMBER_RE), + regex.optional(SCIENTIFIC_NOTATION_RE) + ); + + const NUMBERS = { + className: 'number', + relevance: 0, + begin: MATHEMATICA_NUMBER_RE + }; + + const SYMBOL_RE = /[a-zA-Z$][a-zA-Z0-9$]*/; + const SYSTEM_SYMBOLS_SET = new Set(SYSTEM_SYMBOLS); + /** @type {Mode} */ + const SYMBOLS = { variants: [ + { + className: 'builtin-symbol', + begin: SYMBOL_RE, + // for performance out of fear of regex.either(...Mathematica.SYSTEM_SYMBOLS) + "on:begin": (match, response) => { + if (!SYSTEM_SYMBOLS_SET.has(match[0])) response.ignoreMatch(); + } + }, + { + className: 'symbol', + relevance: 0, + begin: SYMBOL_RE + } + ] }; + + const NAMED_CHARACTER = { + className: 'named-character', + begin: /\\\[[$a-zA-Z][$a-zA-Z0-9]+\]/ + }; + + const OPERATORS = { + className: 'operator', + relevance: 0, + begin: /[+\-*/,;.:@~=><&|_`'^?!%]+/ + }; + const PATTERNS = { + className: 'pattern', + relevance: 0, + begin: /([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/ + }; + + const SLOTS = { + className: 'slot', + relevance: 0, + begin: /#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/ + }; + + const BRACES = { + className: 'brace', + relevance: 0, + begin: /[[\](){}]/ + }; + + const MESSAGES = { + className: 'message-name', + relevance: 0, + begin: regex.concat("::", SYMBOL_RE) + }; + + return { + name: 'Mathematica', + aliases: [ + 'mma', + 'wl' + ], + classNameAliases: { + brace: 'punctuation', + pattern: 'type', + slot: 'type', + symbol: 'variable', + 'named-character': 'variable', + 'builtin-symbol': 'built_in', + 'message-name': 'string' + }, + contains: [ + hljs.COMMENT(/\(\*/, /\*\)/, { contains: [ 'self' ] }), + PATTERNS, + SLOTS, + MESSAGES, + SYMBOLS, + NAMED_CHARACTER, + hljs.QUOTE_STRING_MODE, + NUMBERS, + OPERATORS, + BRACES + ] + }; +} + +module.exports = mathematica; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/matlab.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/matlab.js ***! + \***************************************************************/ +(module) { + +/* +Language: Matlab +Author: Denis Bardadym +Contributors: Eugene Nizhibitsky , Egor Rogov +Website: https://www.mathworks.com/products/matlab.html +Category: scientific +*/ + +/* + Formal syntax is not published, helpful link: + https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf +*/ +function matlab(hljs) { + const TRANSPOSE_RE = '(\'|\\.\')+'; + const TRANSPOSE = { + relevance: 0, + contains: [ { begin: TRANSPOSE_RE } ] + }; + + return { + name: 'Matlab', + keywords: { + keyword: + 'arguments break case catch classdef continue else elseif end enumeration events for function ' + + 'global if methods otherwise parfor persistent properties return spmd switch try while', + built_in: + 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' + + 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' + + 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' + + 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' + + 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' + + 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' + + 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' + + 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' + + 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' + + 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' + + 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' + + 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan ' + + 'isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal ' + + 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' + + 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' + + 'legend intersect ismember procrustes hold num2cell ' + }, + illegal: '(//|"|#|/\\*|\\s+/\\w+)', + contains: [ + { + className: 'function', + beginKeywords: 'function', + end: '$', + contains: [ + hljs.UNDERSCORE_TITLE_MODE, + { + className: 'params', + variants: [ + { + begin: '\\(', + end: '\\)' + }, + { + begin: '\\[', + end: '\\]' + } + ] + } + ] + }, + { + className: 'built_in', + begin: /true|false/, + relevance: 0, + starts: TRANSPOSE + }, + { + begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE, + relevance: 0 + }, + { + className: 'number', + begin: hljs.C_NUMBER_RE, + relevance: 0, + starts: TRANSPOSE + }, + { + className: 'string', + begin: '\'', + end: '\'', + contains: [ { begin: '\'\'' } ] + }, + { + begin: /\]|\}|\)/, + relevance: 0, + starts: TRANSPOSE + }, + { + className: 'string', + begin: '"', + end: '"', + contains: [ { begin: '""' } ], + starts: TRANSPOSE + }, + hljs.COMMENT('^\\s*%\\{\\s*$', '^\\s*%\\}\\s*$'), + hljs.COMMENT('%', '$') + ] + }; +} + +module.exports = matlab; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/maxima.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/maxima.js ***! + \***************************************************************/ +(module) { + +/* +Language: Maxima +Author: Robert Dodier +Website: http://maxima.sourceforge.net +Category: scientific +*/ + +function maxima(hljs) { + const KEYWORDS = + 'if then else elseif for thru do while unless step in and or not'; + const LITERALS = + 'true false unknown inf minf ind und %e %i %pi %phi %gamma'; + const BUILTIN_FUNCTIONS = + ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate' + + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix' + + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type' + + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv' + + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2' + + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply' + + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger' + + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order' + + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method' + + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode' + + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx' + + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify' + + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized' + + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp' + + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition' + + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description' + + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten' + + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli' + + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform' + + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel' + + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial' + + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson' + + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay' + + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic' + + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2' + + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps' + + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph' + + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph' + + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse' + + ' collectterms columnop columnspace columnswap columnvector combination combine' + + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph' + + ' complete_graph complex_number_p components compose_functions concan concat' + + ' conjugate conmetderiv connected_components connect_vertices cons constant' + + ' constantp constituent constvalue cont2part content continuous_freq contortion' + + ' contour_plot contract contract_edge contragrad contrib_ode convert coord' + + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1' + + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline' + + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph' + + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate' + + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions' + + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion' + + ' declare_units declare_weights decsym defcon define define_alt_display define_variable' + + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten' + + ' delta demo demoivre denom depends derivdegree derivlist describe desolve' + + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag' + + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export' + + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct' + + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform' + + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum' + + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart' + + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring' + + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth' + + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome' + + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using' + + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi' + + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp' + + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors' + + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp' + + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci' + + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li' + + ' expintegral_shi expintegral_si explicit explose exponentialize express expt' + + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum' + + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements' + + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge' + + ' file_search file_type fillarray findde find_root find_root_abs find_root_error' + + ' find_root_rel first fix flatten flength float floatnump floor flower_snark' + + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran' + + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp' + + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s' + + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp' + + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units' + + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized' + + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide' + + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym' + + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean' + + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string' + + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default' + + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close' + + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum' + + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import' + + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery' + + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph' + + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path' + + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite' + + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description' + + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph' + + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy' + + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart' + + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices' + + ' induced_subgraph inferencep inference_result infix info_display init_atensor' + + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions' + + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2' + + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc' + + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns' + + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint' + + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph' + + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate' + + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph' + + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc' + + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd' + + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill' + + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis' + + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform' + + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete' + + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace' + + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2' + + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson' + + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange' + + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp' + + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length' + + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit' + + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph' + + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials' + + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry' + + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst' + + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact' + + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub' + + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma' + + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country' + + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream' + + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom' + + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display' + + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker' + + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching' + + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform' + + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete' + + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic' + + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t' + + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull' + + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree' + + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor' + + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton' + + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions' + + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff' + + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary' + + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext' + + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices' + + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp' + + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst' + + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets' + + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai' + + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin' + + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary' + + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless' + + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap' + + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface' + + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition' + + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name' + + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform' + + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete' + + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal' + + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal' + + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t' + + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph' + + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding' + + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff' + + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar' + + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion' + + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal' + + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal' + + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation' + + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm' + + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form' + + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part' + + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension' + + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod' + + ' powerseries powerset prefix prev_prime primep primes principal_components' + + ' print printf printfile print_graph printpois printprops prodrac product properties' + + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct' + + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp' + + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile' + + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2' + + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f' + + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel' + + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal' + + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t' + + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t' + + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan' + + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph' + + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform' + + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric' + + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace' + + ' random_logistic random_lognormal random_negative_binomial random_network' + + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto' + + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t' + + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom' + + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump' + + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array' + + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline' + + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate' + + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar' + + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus' + + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction' + + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions' + + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule' + + ' remsym remvalue rename rename_file reset reset_displays residue resolvante' + + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein' + + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer' + + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann' + + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row' + + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i' + + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description' + + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second' + + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight' + + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state' + + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications' + + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path' + + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform' + + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert' + + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial' + + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp' + + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric' + + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic' + + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t' + + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t' + + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph' + + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve' + + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export' + + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1' + + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition' + + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus' + + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot' + + ' starplot_description status std std1 std_bernoulli std_beta std_binomial' + + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma' + + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace' + + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t' + + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull' + + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout' + + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices' + + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart' + + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext' + + ' symbolp symmdifference symmetricp system take_channel take_inference tan' + + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract' + + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference' + + ' test_normality test_proportion test_proportions_difference test_rank_sum' + + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display' + + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter' + + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep' + + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample' + + ' translate translate_file transpose treefale tree_reduce treillis treinat' + + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate' + + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph' + + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget' + + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp' + + ' units unit_step unitvector unorder unsum untellrat untimer' + + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli' + + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform' + + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel' + + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial' + + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson' + + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp' + + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance' + + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle' + + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j' + + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian' + + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta' + + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors' + + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table' + + ' absboxchar activecontexts adapt_depth additive adim aform algebraic' + + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic' + + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar' + + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top' + + ' azimuth background background_color backsubst berlefact bernstein_explicit' + + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest' + + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange' + + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics' + + ' colorbox columns commutative complex cone context contexts contour contour_levels' + + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp' + + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing' + + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout' + + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal' + + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor' + + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules' + + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart' + + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag' + + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer' + + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type' + + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand' + + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine' + + ' factlim factorflag factorial_expand factors_only fb feature features' + + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10' + + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color' + + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size' + + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim' + + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command' + + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command' + + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command' + + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble' + + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args' + + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both' + + ' head_length head_type height hypergeometric_representation %iargs ibase' + + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form' + + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval' + + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued' + + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color' + + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr' + + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment' + + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max' + + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear' + + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params' + + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname' + + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx' + + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros' + + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult' + + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10' + + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint' + + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp' + + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver' + + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag' + + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc' + + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np' + + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties' + + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals' + + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution' + + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart' + + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type' + + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm' + + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list' + + ' poly_secondary_elimination_order poly_top_reduction_only posfun position' + + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program' + + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand' + + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof' + + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann' + + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw' + + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs' + + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy' + + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck' + + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width' + + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type' + + ' show_vertices show_weight simp simplified_output simplify_products simpproduct' + + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn' + + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag' + + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda' + + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric' + + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials' + + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch' + + ' tr track transcompile transform transform_xy translate_fast_arrays transparent' + + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex' + + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign' + + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars' + + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode' + + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes' + + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble' + + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition' + + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface' + + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel' + + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate' + + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel' + + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width' + + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis' + + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis' + + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob' + + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest'; + const SYMBOLS = '_ __ %|0 %%|0'; + + return { + name: 'Maxima', + keywords: { + $pattern: '[A-Za-z_%][0-9A-Za-z_%]*', + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILTIN_FUNCTIONS, + symbol: SYMBOLS + }, + contains: [ + { + className: 'comment', + begin: '/\\*', + end: '\\*/', + contains: [ 'self' ] + }, + hljs.QUOTE_STRING_MODE, + { + className: 'number', + relevance: 0, + variants: [ + { + // float number w/ exponent + // hmm, I wonder if we ought to include other exponent markers? + begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b' }, + { + // bigfloat number + begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b', + relevance: 10 + }, + { + // float number w/out exponent + // Doesn't seem to recognize floats which start with '.' + begin: '\\b(\\.\\d+|\\d+\\.\\d+)\\b' }, + { + // integer in base up to 36 + // Doesn't seem to recognize integers which end with '.' + begin: '\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b' } + ] + } + ], + illegal: /@/ + }; +} + +module.exports = maxima; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/mel.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/mel.js ***! + \************************************************************/ +(module) { + +/* +Language: MEL +Description: Maya Embedded Language +Author: Shuen-Huei Guan +Website: http://www.autodesk.com/products/autodesk-maya/overview +Category: graphics +*/ + +function mel(hljs) { + return { + name: 'MEL', + keywords: + 'int float string vector matrix if else switch case default while do for in break ' + + 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' + + 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' + + 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' + + 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' + + 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' + + 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' + + 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' + + 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' + + 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' + + 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' + + 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' + + 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' + + 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' + + 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' + + 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' + + 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' + + 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' + + 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' + + 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' + + 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' + + 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' + + 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' + + 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' + + 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' + + 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' + + 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' + + 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' + + 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' + + 'constrainValue constructionHistory container containsMultibyte contextInfo control ' + + 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' + + 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' + + 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' + + 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' + + 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' + + 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' + + 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' + + 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' + + 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' + + 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' + + 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' + + 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' + + 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' + + 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' + + 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' + + 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' + + 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' + + 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' + + 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' + + 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' + + 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' + + 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' + + 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' + + 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' + + 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' + + 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' + + 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' + + 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' + + 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' + + 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' + + 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' + + 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' + + 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' + + 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' + + 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' + + 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' + + 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' + + 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' + + 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' + + 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' + + 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' + + 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' + + 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' + + 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' + + 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' + + 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' + + 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' + + 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' + + 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' + + 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' + + 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' + + 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' + + 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' + + 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' + + 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' + + 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' + + 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' + + 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' + + 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' + + 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' + + 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' + + 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' + + 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' + + 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' + + 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' + + 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' + + 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' + + 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' + + 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' + + 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' + + 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' + + 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' + + 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' + + 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' + + 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' + + 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' + + 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' + + 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' + + 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' + + 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' + + 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' + + 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' + + 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' + + 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' + + 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' + + 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' + + 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' + + 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' + + 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' + + 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' + + 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' + + 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' + + 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' + + 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' + + 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' + + 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' + + 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' + + 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' + + 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' + + 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' + + 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' + + 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' + + 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' + + 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' + + 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' + + 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' + + 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' + + 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' + + 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' + + 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' + + 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' + + 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' + + 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' + + 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' + + 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' + + 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' + + 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' + + 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' + + 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' + + 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' + + 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' + + 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' + + 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' + + 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' + + 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' + + 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' + + 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' + + 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' + + 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' + + 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' + + 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' + + 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' + + 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' + + 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' + + 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' + + 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' + + 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' + + 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' + + 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' + + 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' + + 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' + + 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' + + 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' + + 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' + + 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' + + 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' + + 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' + + 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' + + 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' + + 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' + + 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' + + 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' + + 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' + + 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' + + 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' + + 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' + + 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' + + 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' + + 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' + + 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' + + 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' + + 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' + + 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' + + 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' + + 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' + + 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' + + 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' + + 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' + + 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' + + 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' + + 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' + + 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' + + 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform', + illegal: ' +Description: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features. +Website: https://www.mercurylang.org +Category: functional +*/ + +function mercury(hljs) { + const KEYWORDS = { + keyword: + 'module use_module import_module include_module end_module initialise ' + + 'mutable initialize finalize finalise interface implementation pred ' + + 'mode func type inst solver any_pred any_func is semidet det nondet ' + + 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' + + 'pragma promise external trace atomic or_else require_complete_switch ' + + 'require_det require_semidet require_multi require_nondet ' + + 'require_cc_multi require_cc_nondet require_erroneous require_failure', + meta: + // pragma + 'inline no_inline type_spec source_file fact_table obsolete memo ' + + 'loop_check minimal_model terminates does_not_terminate ' + + 'check_termination promise_equivalent_clauses ' + // preprocessor + + 'foreign_proc foreign_decl foreign_code foreign_type ' + + 'foreign_import_module foreign_export_enum foreign_export ' + + 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' + + 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' + + 'tabled_for_io local untrailed trailed attach_to_io_state ' + + 'can_pass_as_mercury_type stable will_not_throw_exception ' + + 'may_modify_trail will_not_modify_trail may_duplicate ' + + 'may_not_duplicate affects_liveness does_not_affect_liveness ' + + 'doesnt_affect_liveness no_sharing unknown_sharing sharing', + built_in: + 'some all not if then else true fail false try catch catch_any ' + + 'semidet_true semidet_false semidet_fail impure_true impure semipure' + }; + + const COMMENT = hljs.COMMENT('%', '$'); + + const NUMCODE = { + className: 'number', + begin: "0'.\\|0[box][0-9a-fA-F]*" + }; + + const ATOM = hljs.inherit(hljs.APOS_STRING_MODE, { relevance: 0 }); + const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 }); + const STRING_FMT = { + className: 'subst', + begin: '\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]', + relevance: 0 + }; + STRING.contains = STRING.contains.slice(); // we need our own copy of contains + STRING.contains.push(STRING_FMT); + + const IMPLICATION = { + className: 'built_in', + variants: [ + { begin: '<=>' }, + { + begin: '<=', + relevance: 0 + }, + { + begin: '=>', + relevance: 0 + }, + { begin: '/\\\\' }, + { begin: '\\\\/' } + ] + }; + + const HEAD_BODY_CONJUNCTION = { + className: 'built_in', + variants: [ + { begin: ':-\\|-->' }, + { + begin: '=', + relevance: 0 + } + ] + }; + + return { + name: 'Mercury', + aliases: [ + 'm', + 'moo' + ], + keywords: KEYWORDS, + contains: [ + IMPLICATION, + HEAD_BODY_CONJUNCTION, + COMMENT, + hljs.C_BLOCK_COMMENT_MODE, + NUMCODE, + hljs.NUMBER_MODE, + ATOM, + STRING, + { // relevance booster + begin: /:-/ }, + { // relevance booster + begin: /\.$/ } + ] + }; +} + +module.exports = mercury; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/mipsasm.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/mipsasm.js ***! + \****************************************************************/ +(module) { + +/* +Language: MIPS Assembly +Author: Nebuleon Fumika +Description: MIPS Assembly (up to MIPS32R2) +Website: https://en.wikipedia.org/wiki/MIPS_architecture +Category: assembler +*/ + +function mipsasm(hljs) { + // local labels: %?[FB]?[AT]?\d{1,2}\w+ + return { + name: 'MIPS Assembly', + case_insensitive: true, + aliases: [ 'mips' ], + keywords: { + $pattern: '\\.?' + hljs.IDENT_RE, + meta: + // GNU preprocs + '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ', + built_in: + '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' // integer registers + + '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' // integer registers + + 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' // integer register aliases + + 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' // integer register aliases + + 'k0 k1 gp sp fp ra ' // integer register aliases + + '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' // floating-point registers + + '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' // floating-point registers + + 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' // Coprocessor 0 registers + + 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' // Coprocessor 0 registers + + 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' // Coprocessor 0 registers + + 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers + }, + contains: [ + { + className: 'keyword', + begin: '\\b(' // mnemonics + // 32-bit integer instructions + + 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' + + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' + + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' + + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' + + 'srlv?|subu?|sw[lr]?|xori?|wsbh|' + // floating-point instructions + + 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' + + 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' + + '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' + + 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' + + 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' + + 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' + + 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' + + 'swx?c1|' + // system control instructions + + 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' + + 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' + + 'tlti?u?|tnei?|wait|wrpgpr' + + ')', + end: '\\s' + }, + // lines ending with ; or # aren't really comments, probably auto-detect fail + hljs.COMMENT('[;#](?!\\s*$)', '$'), + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\'', + end: '[^\\\\]\'', + relevance: 0 + }, + { + className: 'title', + begin: '\\|', + end: '\\|', + illegal: '\\n', + relevance: 0 + }, + { + className: 'number', + variants: [ + { // hex + begin: '0x[0-9a-f]+' }, + { // bare number + begin: '\\b-?\\d+' } + ], + relevance: 0 + }, + { + className: 'symbol', + variants: [ + { // GNU MIPS syntax + begin: '^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' }, + { // numbered local labels + begin: '^\\s*[0-9]+:' }, + { // number local label reference (backwards, forwards) + begin: '[0-9]+[bf]' } + ], + relevance: 0 + } + ], + // forward slashes are not allowed + illegal: /\// + }; +} + +module.exports = mipsasm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/mizar.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/mizar.js ***! + \**************************************************************/ +(module) { + +/* +Language: Mizar +Description: The Mizar Language is a formal language derived from the mathematical vernacular. +Author: Kelley van Evert +Website: http://mizar.org/language/ +Category: scientific +*/ + +function mizar(hljs) { + return { + name: 'Mizar', + keywords: + 'environ vocabularies notations constructors definitions ' + + 'registrations theorems schemes requirements begin end definition ' + + 'registration cluster existence pred func defpred deffunc theorem ' + + 'proof let take assume then thus hence ex for st holds consider ' + + 'reconsider such that and in provided of as from be being by means ' + + 'equals implies iff redefine define now not or attr is mode ' + + 'suppose per cases set thesis contradiction scheme reserve struct ' + + 'correctness compatibility coherence symmetry assymetry ' + + 'reflexivity irreflexivity connectedness uniqueness commutativity ' + + 'idempotence involutiveness projectivity', + contains: [ hljs.COMMENT('::', '$') ] + }; +} + +module.exports = mizar; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/mojolicious.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/mojolicious.js ***! + \********************************************************************/ +(module) { + +/* +Language: Mojolicious +Requires: xml.js, perl.js +Author: Dotan Dimet +Description: Mojolicious .ep (Embedded Perl) templates +Website: https://mojolicious.org +Category: template +*/ +function mojolicious(hljs) { + return { + name: 'Mojolicious', + subLanguage: 'xml', + contains: [ + { + className: 'meta', + begin: '^__(END|DATA)__$' + }, + // mojolicious line + { + begin: "^\\s*%{1,2}={0,2}", + end: '$', + subLanguage: 'perl' + }, + // mojolicious block + { + begin: "<%{1,2}={0,2}", + end: "={0,1}%>", + subLanguage: 'perl', + excludeBegin: true, + excludeEnd: true + } + ] + }; +} + +module.exports = mojolicious; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/monkey.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/monkey.js ***! + \***************************************************************/ +(module) { + +/* +Language: Monkey +Description: Monkey2 is an easy to use, cross platform, games oriented programming language from Blitz Research. +Author: Arthur Bikmullin +Website: https://blitzresearch.itch.io/monkey2 +Category: gaming +*/ + +function monkey(hljs) { + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + { begin: '[$][a-fA-F0-9]+' }, + hljs.NUMBER_MODE + ] + }; + const FUNC_DEFINITION = { + variants: [ + { match: [ + /(function|method)/, + /\s+/, + hljs.UNDERSCORE_IDENT_RE, + ] }, + ], + scope: { + 1: "keyword", + 3: "title.function" + } + }; + const CLASS_DEFINITION = { + variants: [ + { match: [ + /(class|interface|extends|implements)/, + /\s+/, + hljs.UNDERSCORE_IDENT_RE, + ] }, + ], + scope: { + 1: "keyword", + 3: "title.class" + } + }; + const BUILT_INS = [ + "DebugLog", + "DebugStop", + "Error", + "Print", + "ACos", + "ACosr", + "ASin", + "ASinr", + "ATan", + "ATan2", + "ATan2r", + "ATanr", + "Abs", + "Abs", + "Ceil", + "Clamp", + "Clamp", + "Cos", + "Cosr", + "Exp", + "Floor", + "Log", + "Max", + "Max", + "Min", + "Min", + "Pow", + "Sgn", + "Sgn", + "Sin", + "Sinr", + "Sqrt", + "Tan", + "Tanr", + "Seed", + "PI", + "HALFPI", + "TWOPI" + ]; + const LITERALS = [ + "true", + "false", + "null" + ]; + const KEYWORDS = [ + "public", + "private", + "property", + "continue", + "exit", + "extern", + "new", + "try", + "catch", + "eachin", + "not", + "abstract", + "final", + "select", + "case", + "default", + "const", + "local", + "global", + "field", + "end", + "if", + "then", + "else", + "elseif", + "endif", + "while", + "wend", + "repeat", + "until", + "forever", + "for", + "to", + "step", + "next", + "return", + "module", + "inline", + "throw", + "import", + // not positive, but these are not literals + "and", + "or", + "shl", + "shr", + "mod" + ]; + + return { + name: 'Monkey', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS, + literal: LITERALS + }, + illegal: /\/\*/, + contains: [ + hljs.COMMENT('#rem', '#end'), + hljs.COMMENT( + "'", + '$', + { relevance: 0 } + ), + FUNC_DEFINITION, + CLASS_DEFINITION, + { + className: 'variable.language', + begin: /\b(self|super)\b/ + }, + { + className: 'meta', + begin: /\s*#/, + end: '$', + keywords: { keyword: 'if else elseif endif end then' } + }, + { + match: [ + /^\s*/, + /strict\b/ + ], + scope: { 2: "meta" } + }, + { + beginKeywords: 'alias', + end: '=', + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + }, + hljs.QUOTE_STRING_MODE, + NUMBER + ] + }; +} + +module.exports = monkey; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/moonscript.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/moonscript.js ***! + \*******************************************************************/ +(module) { + +/* +Language: MoonScript +Author: Billy Quith +Description: MoonScript is a programming language that transcompiles to Lua. +Origin: coffeescript.js +Website: http://moonscript.org/ +Category: scripting +*/ + +function moonscript(hljs) { + const KEYWORDS = { + keyword: + // Moonscript keywords + 'if then not for in while do return else elseif break continue switch and or ' + + 'unless when class extends super local import export from using', + literal: + 'true false nil', + built_in: + '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' + + 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' + + 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' + + 'io math os package string table' + }; + const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: KEYWORDS + }; + const EXPRESSIONS = [ + hljs.inherit(hljs.C_NUMBER_MODE, + { starts: { + end: '(\\s*/)?', + relevance: 0 + } }), // a number tries to eat the following slash to prevent treating it as a regexp + { + className: 'string', + variants: [ + { + begin: /'/, + end: /'/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + } + ] + }, + { + className: 'built_in', + begin: '@__' + hljs.IDENT_RE + }, + { begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript + }, + { begin: hljs.IDENT_RE + '\\\\' + hljs.IDENT_RE // inst\method + } + ]; + SUBST.contains = EXPRESSIONS; + + const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); + const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>'; + const PARAMS = { + className: 'params', + begin: '\\([^\\(]', + returnBegin: true, + /* We need another contained nameless mode to not have every nested + pair of parens to be called "params" */ + contains: [ + { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: [ 'self' ].concat(EXPRESSIONS) + } + ] + }; + + return { + name: 'MoonScript', + aliases: [ 'moon' ], + keywords: KEYWORDS, + illegal: /\/\*/, + contains: EXPRESSIONS.concat([ + hljs.COMMENT('--', '$'), + { + className: 'function', // function: -> => + begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE, + end: '[-=]>', + returnBegin: true, + contains: [ + TITLE, + PARAMS + ] + }, + { + begin: /[\(,:=]\s*/, // anonymous function start + relevance: 0, + contains: [ + { + className: 'function', + begin: POSSIBLE_PARAMS_RE, + end: '[-=]>', + returnBegin: true, + contains: [ PARAMS ] + } + ] + }, + { + className: 'class', + beginKeywords: 'class', + end: '$', + illegal: /[:="\[\]]/, + contains: [ + { + beginKeywords: 'extends', + endsWithParent: true, + illegal: /[:="\[\]]/, + contains: [ TITLE ] + }, + TITLE + ] + }, + { + className: 'name', // table + begin: JS_IDENT_RE + ':', + end: ':', + returnBegin: true, + returnEnd: true, + relevance: 0 + } + ]) + }; +} + +module.exports = moonscript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/n1ql.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/n1ql.js ***! + \*************************************************************/ +(module) { + +/* + Language: N1QL + Author: Andres Täht + Contributors: Rene Saarsoo + Description: Couchbase query language + Website: https://www.couchbase.com/products/n1ql + Category: database + */ + +function n1ql(hljs) { + // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html + const KEYWORDS = [ + "all", + "alter", + "analyze", + "and", + "any", + "array", + "as", + "asc", + "begin", + "between", + "binary", + "boolean", + "break", + "bucket", + "build", + "by", + "call", + "case", + "cast", + "cluster", + "collate", + "collection", + "commit", + "connect", + "continue", + "correlate", + "cover", + "create", + "database", + "dataset", + "datastore", + "declare", + "decrement", + "delete", + "derived", + "desc", + "describe", + "distinct", + "do", + "drop", + "each", + "element", + "else", + "end", + "every", + "except", + "exclude", + "execute", + "exists", + "explain", + "fetch", + "first", + "flatten", + "for", + "force", + "from", + "function", + "grant", + "group", + "gsi", + "having", + "if", + "ignore", + "ilike", + "in", + "include", + "increment", + "index", + "infer", + "inline", + "inner", + "insert", + "intersect", + "into", + "is", + "join", + "key", + "keys", + "keyspace", + "known", + "last", + "left", + "let", + "letting", + "like", + "limit", + "lsm", + "map", + "mapping", + "matched", + "materialized", + "merge", + "minus", + "namespace", + "nest", + "not", + "number", + "object", + "offset", + "on", + "option", + "or", + "order", + "outer", + "over", + "parse", + "partition", + "password", + "path", + "pool", + "prepare", + "primary", + "private", + "privilege", + "procedure", + "public", + "raw", + "realm", + "reduce", + "rename", + "return", + "returning", + "revoke", + "right", + "role", + "rollback", + "satisfies", + "schema", + "select", + "self", + "semi", + "set", + "show", + "some", + "start", + "statistics", + "string", + "system", + "then", + "to", + "transaction", + "trigger", + "truncate", + "under", + "union", + "unique", + "unknown", + "unnest", + "unset", + "update", + "upsert", + "use", + "user", + "using", + "validate", + "value", + "valued", + "values", + "via", + "view", + "when", + "where", + "while", + "with", + "within", + "work", + "xor" + ]; + // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html + const LITERALS = [ + "true", + "false", + "null", + "missing|5" + ]; + // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html + const BUILT_INS = [ + "array_agg", + "array_append", + "array_concat", + "array_contains", + "array_count", + "array_distinct", + "array_ifnull", + "array_length", + "array_max", + "array_min", + "array_position", + "array_prepend", + "array_put", + "array_range", + "array_remove", + "array_repeat", + "array_replace", + "array_reverse", + "array_sort", + "array_sum", + "avg", + "count", + "max", + "min", + "sum", + "greatest", + "least", + "ifmissing", + "ifmissingornull", + "ifnull", + "missingif", + "nullif", + "ifinf", + "ifnan", + "ifnanorinf", + "naninf", + "neginfif", + "posinfif", + "clock_millis", + "clock_str", + "date_add_millis", + "date_add_str", + "date_diff_millis", + "date_diff_str", + "date_part_millis", + "date_part_str", + "date_trunc_millis", + "date_trunc_str", + "duration_to_str", + "millis", + "str_to_millis", + "millis_to_str", + "millis_to_utc", + "millis_to_zone_name", + "now_millis", + "now_str", + "str_to_duration", + "str_to_utc", + "str_to_zone_name", + "decode_json", + "encode_json", + "encoded_size", + "poly_length", + "base64", + "base64_encode", + "base64_decode", + "meta", + "uuid", + "abs", + "acos", + "asin", + "atan", + "atan2", + "ceil", + "cos", + "degrees", + "e", + "exp", + "ln", + "log", + "floor", + "pi", + "power", + "radians", + "random", + "round", + "sign", + "sin", + "sqrt", + "tan", + "trunc", + "object_length", + "object_names", + "object_pairs", + "object_inner_pairs", + "object_values", + "object_inner_values", + "object_add", + "object_put", + "object_remove", + "object_unwrap", + "regexp_contains", + "regexp_like", + "regexp_position", + "regexp_replace", + "contains", + "initcap", + "length", + "lower", + "ltrim", + "position", + "repeat", + "replace", + "rtrim", + "split", + "substr", + "title", + "trim", + "upper", + "isarray", + "isatom", + "isboolean", + "isnumber", + "isobject", + "isstring", + "type", + "toarray", + "toatom", + "toboolean", + "tonumber", + "toobject", + "tostring" + ]; + + return { + name: 'N1QL', + case_insensitive: true, + contains: [ + { + beginKeywords: + 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10', + end: /;/, + keywords: { + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILT_INS + }, + contains: [ + { + className: 'string', + begin: '\'', + end: '\'', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + className: 'string', + begin: '"', + end: '"', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + className: 'symbol', + begin: '`', + end: '`', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + hljs.C_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + hljs.C_BLOCK_COMMENT_MODE + ] + }; +} + +module.exports = n1ql; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/nestedtext.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/nestedtext.js ***! + \*******************************************************************/ +(module) { + +/* +Language: NestedText +Description: NestedText is a file format for holding data that is to be entered, edited, or viewed by people. +Website: https://nestedtext.org/ +Category: config +*/ + +/** @type LanguageFn */ +function nestedtext(hljs) { + const NESTED = { + match: [ + /^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking + /[^:]+/, + /:\s*/, + /$/ + ], + className: { + 2: "attribute", + 3: "punctuation" + } + }; + const DICTIONARY_ITEM = { + match: [ + /^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking + /[^:]*[^: ]/, + /[ ]*:/, + /[ ]/, + /.*$/ + ], + className: { + 2: "attribute", + 3: "punctuation", + 5: "string" + } + }; + const STRING = { + match: [ + /^\s*/, + />/, + /[ ]/, + /.*$/ + ], + className: { + 2: "punctuation", + 4: "string" + } + }; + const LIST_ITEM = { + variants: [ + { match: [ + /^\s*/, + /-/, + /[ ]/, + /.*$/ + ] }, + { match: [ + /^\s*/, + /-$/ + ] } + ], + className: { + 2: "bullet", + 4: "string" + } + }; + + return { + name: 'Nested Text', + aliases: [ 'nt' ], + contains: [ + hljs.inherit(hljs.HASH_COMMENT_MODE, { + begin: /^\s*(?=#)/, + excludeBegin: true + }), + LIST_ITEM, + STRING, + NESTED, + DICTIONARY_ITEM + ] + }; +} + +module.exports = nestedtext; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/nginx.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/nginx.js ***! + \**************************************************************/ +(module) { + +/* +Language: Nginx config +Author: Peter Leonov +Contributors: Ivan Sagalaev +Category: config, web +Website: https://www.nginx.com +*/ + +/** @type LanguageFn */ +function nginx(hljs) { + const regex = hljs.regex; + const VAR = { + className: 'variable', + variants: [ + { begin: /\$\d+/ }, + { begin: /\$\{\w+\}/ }, + { begin: regex.concat(/[$@]/, hljs.UNDERSCORE_IDENT_RE) } + ] + }; + const LITERALS = [ + "on", + "off", + "yes", + "no", + "true", + "false", + "none", + "blocked", + "debug", + "info", + "notice", + "warn", + "error", + "crit", + "select", + "break", + "last", + "permanent", + "redirect", + "kqueue", + "rtsig", + "epoll", + "poll", + "/dev/poll" + ]; + const DEFAULT = { + endsWithParent: true, + keywords: { + $pattern: /[a-z_]{2,}|\/dev\/poll/, + literal: LITERALS + }, + relevance: 0, + illegal: '=>', + contains: [ + hljs.HASH_COMMENT_MODE, + { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + VAR + ], + variants: [ + { + begin: /"/, + end: /"/ + }, + { + begin: /'/, + end: /'/ + } + ] + }, + // this swallows entire URLs to avoid detecting numbers within + { + begin: '([a-z]+):/', + end: '\\s', + endsWithParent: true, + excludeEnd: true, + contains: [ VAR ] + }, + { + className: 'regexp', + contains: [ + hljs.BACKSLASH_ESCAPE, + VAR + ], + variants: [ + { + begin: "\\s\\^", + end: "\\s|\\{|;", + returnEnd: true + }, + // regexp locations (~, ~*) + { + begin: "~\\*?\\s+", + end: "\\s|\\{|;", + returnEnd: true + }, + // *.example.com + { begin: "\\*(\\.[a-z\\-]+)+" }, + // sub.example.* + { begin: "([a-z\\-]+\\.)+\\*" } + ] + }, + // IP + { + className: 'number', + begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b' + }, + // units + { + className: 'number', + begin: '\\b\\d+[kKmMgGdshdwy]?\\b', + relevance: 0 + }, + VAR + ] + }; + + return { + name: 'Nginx config', + aliases: [ 'nginxconf' ], + contains: [ + hljs.HASH_COMMENT_MODE, + { + beginKeywords: "upstream location", + end: /;|\{/, + contains: DEFAULT.contains, + keywords: { section: "upstream location" } + }, + { + className: 'section', + begin: regex.concat(hljs.UNDERSCORE_IDENT_RE + regex.lookahead(/\s+\{/)), + relevance: 0 + }, + { + begin: regex.lookahead(hljs.UNDERSCORE_IDENT_RE + '\\s'), + end: ';|\\{', + contains: [ + { + className: 'attribute', + begin: hljs.UNDERSCORE_IDENT_RE, + starts: DEFAULT + } + ], + relevance: 0 + } + ], + illegal: '[^\\s\\}\\{]' + }; +} + +module.exports = nginx; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/nim.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/nim.js ***! + \************************************************************/ +(module) { + +/* +Language: Nim +Description: Nim is a statically typed compiled systems programming language. +Website: https://nim-lang.org +Category: system +*/ + +function nim(hljs) { + const TYPES = [ + "int", + "int8", + "int16", + "int32", + "int64", + "uint", + "uint8", + "uint16", + "uint32", + "uint64", + "float", + "float32", + "float64", + "bool", + "char", + "string", + "cstring", + "pointer", + "expr", + "stmt", + "void", + "auto", + "any", + "range", + "array", + "openarray", + "varargs", + "seq", + "set", + "clong", + "culong", + "cchar", + "cschar", + "cshort", + "cint", + "csize", + "clonglong", + "cfloat", + "cdouble", + "clongdouble", + "cuchar", + "cushort", + "cuint", + "culonglong", + "cstringarray", + "semistatic" + ]; + const KEYWORDS = [ + "addr", + "and", + "as", + "asm", + "bind", + "block", + "break", + "case", + "cast", + "concept", + "const", + "continue", + "converter", + "defer", + "discard", + "distinct", + "div", + "do", + "elif", + "else", + "end", + "enum", + "except", + "export", + "finally", + "for", + "from", + "func", + "generic", + "guarded", + "if", + "import", + "in", + "include", + "interface", + "is", + "isnot", + "iterator", + "let", + "macro", + "method", + "mixin", + "mod", + "nil", + "not", + "notin", + "object", + "of", + "or", + "out", + "proc", + "ptr", + "raise", + "ref", + "return", + "shared", + "shl", + "shr", + "static", + "template", + "try", + "tuple", + "type", + "using", + "var", + "when", + "while", + "with", + "without", + "xor", + "yield" + ]; + const BUILT_INS = [ + "stdin", + "stdout", + "stderr", + "result" + ]; + const LITERALS = [ + "true", + "false" + ]; + return { + name: 'Nim', + keywords: { + keyword: KEYWORDS, + literal: LITERALS, + type: TYPES, + built_in: BUILT_INS + }, + contains: [ + { + className: 'meta', // Actually pragma + begin: /\{\./, + end: /\.\}/, + relevance: 10 + }, + { + className: 'string', + begin: /[a-zA-Z]\w*"/, + end: /"/, + contains: [ { begin: /""/ } ] + }, + { + className: 'string', + begin: /([a-zA-Z]\w*)?"""/, + end: /"""/ + }, + hljs.QUOTE_STRING_MODE, + { + className: 'type', + begin: /\b[A-Z]\w+\b/, + relevance: 0 + }, + { + className: 'number', + relevance: 0, + variants: [ + { begin: /\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/ }, + { begin: /\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/ }, + { begin: /\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/ }, + { begin: /\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/ } + ] + }, + hljs.HASH_COMMENT_MODE + ] + }; +} + +module.exports = nim; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/nix.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/nix.js ***! + \************************************************************/ +(module) { + +/* +Language: Nix +Author: Domen Kožar +Description: Nix functional language +Website: http://nixos.org/nix +Category: system +*/ + +/** @type LanguageFn */ +function nix(hljs) { + const regex = hljs.regex; + const KEYWORDS = { + keyword: [ + "assert", + "else", + "if", + "in", + "inherit", + "let", + "or", + "rec", + "then", + "with", + ], + literal: [ + "true", + "false", + "null", + ], + built_in: [ + // toplevel builtins + "abort", + "baseNameOf", + "builtins", + "derivation", + "derivationStrict", + "dirOf", + "fetchGit", + "fetchMercurial", + "fetchTarball", + "fetchTree", + "fromTOML", + "import", + "isNull", + "map", + "placeholder", + "removeAttrs", + "scopedImport", + "throw", + "toString", + ], + }; + + const BUILTINS = { + scope: 'built_in', + match: regex.either(...[ + "abort", + "add", + "addDrvOutputDependencies", + "addErrorContext", + "all", + "any", + "appendContext", + "attrNames", + "attrValues", + "baseNameOf", + "bitAnd", + "bitOr", + "bitXor", + "break", + "builtins", + "catAttrs", + "ceil", + "compareVersions", + "concatLists", + "concatMap", + "concatStringsSep", + "convertHash", + "currentSystem", + "currentTime", + "deepSeq", + "derivation", + "derivationStrict", + "dirOf", + "div", + "elem", + "elemAt", + "false", + "fetchGit", + "fetchMercurial", + "fetchTarball", + "fetchTree", + "fetchurl", + "filter", + "filterSource", + "findFile", + "flakeRefToString", + "floor", + "foldl'", + "fromJSON", + "fromTOML", + "functionArgs", + "genList", + "genericClosure", + "getAttr", + "getContext", + "getEnv", + "getFlake", + "groupBy", + "hasAttr", + "hasContext", + "hashFile", + "hashString", + "head", + "import", + "intersectAttrs", + "isAttrs", + "isBool", + "isFloat", + "isFunction", + "isInt", + "isList", + "isNull", + "isPath", + "isString", + "langVersion", + "length", + "lessThan", + "listToAttrs", + "map", + "mapAttrs", + "match", + "mul", + "nixPath", + "nixVersion", + "null", + "parseDrvName", + "parseFlakeRef", + "partition", + "path", + "pathExists", + "placeholder", + "readDir", + "readFile", + "readFileType", + "removeAttrs", + "replaceStrings", + "scopedImport", + "seq", + "sort", + "split", + "splitVersion", + "storeDir", + "storePath", + "stringLength", + "sub", + "substring", + "tail", + "throw", + "toFile", + "toJSON", + "toPath", + "toString", + "toXML", + "trace", + "traceVerbose", + "true", + "tryEval", + "typeOf", + "unsafeDiscardOutputDependency", + "unsafeDiscardStringContext", + "unsafeGetAttrPos", + "warn", + "zipAttrsWith", + ].map(b => `builtins\\.${b}`)), + relevance: 10, + }; + + const IDENTIFIER_REGEX = '[A-Za-z_][A-Za-z0-9_\'-]*'; + + const LOOKUP_PATH = { + scope: 'symbol', + match: new RegExp(`<${IDENTIFIER_REGEX}(/${IDENTIFIER_REGEX})*>`), + }; + + const PATH_PIECE = "[A-Za-z0-9_\\+\\.-]+"; + const PATH = { + scope: 'symbol', + match: new RegExp(`(\\.\\.|\\.|~)?/(${PATH_PIECE})?(/${PATH_PIECE})*(?=[\\s;])`), + }; + + const OPERATOR_WITHOUT_MINUS_REGEX = regex.either(...[ + '==', + '=', + '\\+\\+', + '\\+', + '<=', + '<\\|', + '<', + '>=', + '>', + '->', + '//', + '/', + '!=', + '!', + '\\|\\|', + '\\|>', + '\\?', + '\\*', + '&&', + ]); + + const OPERATOR = { + scope: 'operator', + match: regex.concat(OPERATOR_WITHOUT_MINUS_REGEX, /(?!-)/), + relevance: 0, + }; + + // '-' is being handled by itself to ensure we are able to tell the difference + // between a dash in an identifier and a minus operator + const NUMBER = { + scope: 'number', + match: new RegExp(`${hljs.NUMBER_RE}(?!-)`), + relevance: 0, + }; + const MINUS_OPERATOR = { + variants: [ + { + scope: 'operator', + beforeMatch: /\s/, + // The (?!>) is used to ensure this doesn't collide with the '->' operator + begin: /-(?!>)/, + }, + { + begin: [ + new RegExp(`${hljs.NUMBER_RE}`), + /-/, + /(?!>)/, + ], + beginScope: { + 1: 'number', + 2: 'operator' + }, + }, + { + begin: [ + OPERATOR_WITHOUT_MINUS_REGEX, + /-/, + /(?!>)/, + ], + beginScope: { + 1: 'operator', + 2: 'operator' + }, + }, + ], + relevance: 0, + }; + + const ATTRS = { + beforeMatch: /(^|\{|;)\s*/, + begin: new RegExp(`${IDENTIFIER_REGEX}(\\.${IDENTIFIER_REGEX})*\\s*=(?!=)`), + returnBegin: true, + relevance: 0, + contains: [ + { + scope: 'attr', + match: new RegExp(`${IDENTIFIER_REGEX}(\\.${IDENTIFIER_REGEX})*(?=\\s*=)`), + relevance: 0.2, + } + ], + }; + + const NORMAL_ESCAPED_DOLLAR = { + scope: 'char.escape', + match: /\\\$/, + }; + const INDENTED_ESCAPED_DOLLAR = { + scope: 'char.escape', + match: /''\$/, + }; + const ANTIQUOTE = { + scope: 'subst', + begin: /\$\{/, + end: /\}/, + keywords: KEYWORDS, + }; + const ESCAPED_DOUBLEQUOTE = { + scope: 'char.escape', + match: /'''/, + }; + const ESCAPED_LITERAL = { + scope: 'char.escape', + match: /\\(?!\$)./, + }; + const STRING = { + scope: 'string', + variants: [ + { + begin: "''", + end: "''", + contains: [ + INDENTED_ESCAPED_DOLLAR, + ANTIQUOTE, + ESCAPED_DOUBLEQUOTE, + ESCAPED_LITERAL, + ], + }, + { + begin: '"', + end: '"', + contains: [ + NORMAL_ESCAPED_DOLLAR, + ANTIQUOTE, + ESCAPED_LITERAL, + ], + }, + ], + }; + + const FUNCTION_PARAMS = { + scope: 'params', + match: new RegExp(`${IDENTIFIER_REGEX}\\s*:(?=\\s)`), + }; + + const EXPRESSIONS = [ + NUMBER, + hljs.HASH_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.COMMENT( + /\/\*\*(?!\/)/, + /\*\//, + { + subLanguage: 'markdown', + relevance: 0 + } + ), + BUILTINS, + STRING, + LOOKUP_PATH, + PATH, + FUNCTION_PARAMS, + ATTRS, + MINUS_OPERATOR, + OPERATOR, + ]; + + ANTIQUOTE.contains = EXPRESSIONS; + + const REPL = [ + { + scope: 'meta.prompt', + match: /^nix-repl>(?=\s)/, + relevance: 10, + }, + { + scope: 'meta', + beforeMatch: /\s+/, + begin: /:([a-z]+|\?)/, + }, + ]; + + return { + name: 'Nix', + aliases: [ "nixos" ], + keywords: KEYWORDS, + contains: EXPRESSIONS.concat(REPL), + }; +} + +module.exports = nix; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/node-repl.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/node-repl.js ***! + \******************************************************************/ +(module) { + +/* +Language: Node REPL +Requires: javascript.js +Author: Marat Nagayev +Category: scripting +*/ + +/** @type LanguageFn */ +function nodeRepl(hljs) { + return { + name: 'Node REPL', + contains: [ + { + className: 'meta.prompt', + starts: { + // a space separates the REPL prefix from the actual code + // this is purely for cleaner HTML output + end: / |$/, + starts: { + end: '$', + subLanguage: 'javascript' + } + }, + variants: [ + { begin: /^>(?=[ ]|$)/ }, + { begin: /^\.\.\.(?=[ ]|$)/ } + ] + } + ] + }; +} + +module.exports = nodeRepl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/nsis.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/nsis.js ***! + \*************************************************************/ +(module) { + +/* +Language: NSIS +Description: Nullsoft Scriptable Install System +Author: Jan T. Sott +Website: https://nsis.sourceforge.io/Main_Page +Category: scripting +*/ + + +function nsis(hljs) { + const regex = hljs.regex; + const LANGUAGE_CONSTANTS = [ + "ADMINTOOLS", + "APPDATA", + "CDBURN_AREA", + "CMDLINE", + "COMMONFILES32", + "COMMONFILES64", + "COMMONFILES", + "COOKIES", + "DESKTOP", + "DOCUMENTS", + "EXEDIR", + "EXEFILE", + "EXEPATH", + "FAVORITES", + "FONTS", + "HISTORY", + "HWNDPARENT", + "INSTDIR", + "INTERNET_CACHE", + "LANGUAGE", + "LOCALAPPDATA", + "MUSIC", + "NETHOOD", + "OUTDIR", + "PICTURES", + "PLUGINSDIR", + "PRINTHOOD", + "PROFILE", + "PROGRAMFILES32", + "PROGRAMFILES64", + "PROGRAMFILES", + "QUICKLAUNCH", + "RECENT", + "RESOURCES_LOCALIZED", + "RESOURCES", + "SENDTO", + "SMPROGRAMS", + "SMSTARTUP", + "STARTMENU", + "SYSDIR", + "TEMP", + "TEMPLATES", + "VIDEOS", + "WINDIR" + ]; + + const PARAM_NAMES = [ + "ARCHIVE", + "FILE_ATTRIBUTE_ARCHIVE", + "FILE_ATTRIBUTE_NORMAL", + "FILE_ATTRIBUTE_OFFLINE", + "FILE_ATTRIBUTE_READONLY", + "FILE_ATTRIBUTE_SYSTEM", + "FILE_ATTRIBUTE_TEMPORARY", + "HKCR", + "HKCU", + "HKDD", + "HKEY_CLASSES_ROOT", + "HKEY_CURRENT_CONFIG", + "HKEY_CURRENT_USER", + "HKEY_DYN_DATA", + "HKEY_LOCAL_MACHINE", + "HKEY_PERFORMANCE_DATA", + "HKEY_USERS", + "HKLM", + "HKPD", + "HKU", + "IDABORT", + "IDCANCEL", + "IDIGNORE", + "IDNO", + "IDOK", + "IDRETRY", + "IDYES", + "MB_ABORTRETRYIGNORE", + "MB_DEFBUTTON1", + "MB_DEFBUTTON2", + "MB_DEFBUTTON3", + "MB_DEFBUTTON4", + "MB_ICONEXCLAMATION", + "MB_ICONINFORMATION", + "MB_ICONQUESTION", + "MB_ICONSTOP", + "MB_OK", + "MB_OKCANCEL", + "MB_RETRYCANCEL", + "MB_RIGHT", + "MB_RTLREADING", + "MB_SETFOREGROUND", + "MB_TOPMOST", + "MB_USERICON", + "MB_YESNO", + "NORMAL", + "OFFLINE", + "READONLY", + "SHCTX", + "SHELL_CONTEXT", + "SYSTEM|TEMPORARY", + ]; + + const COMPILER_FLAGS = [ + "addincludedir", + "addplugindir", + "appendfile", + "assert", + "cd", + "define", + "delfile", + "echo", + "else", + "endif", + "error", + "execute", + "finalize", + "getdllversion", + "gettlbversion", + "if", + "ifdef", + "ifmacrodef", + "ifmacrondef", + "ifndef", + "include", + "insertmacro", + "macro", + "macroend", + "makensis", + "packhdr", + "searchparse", + "searchreplace", + "system", + "tempfile", + "undef", + "uninstfinalize", + "verbose", + "warning", + ]; + + const CONSTANTS = { + className: 'variable.constant', + begin: regex.concat(/\$/, regex.either(...LANGUAGE_CONSTANTS)) + }; + + const DEFINES = { + // ${defines} + className: 'variable', + begin: /\$+\{[\!\w.:-]+\}/ + }; + + const VARIABLES = { + // $variables + className: 'variable', + begin: /\$+\w[\w\.]*/, + illegal: /\(\)\{\}/ + }; + + const LANGUAGES = { + // $(language_strings) + className: 'variable', + begin: /\$+\([\w^.:!-]+\)/ + }; + + const PARAMETERS = { + // command parameters + className: 'params', + begin: regex.either(...PARAM_NAMES) + }; + + const COMPILER = { + // !compiler_flags + className: 'keyword', + begin: regex.concat( + /!/, + regex.either(...COMPILER_FLAGS) + ) + }; + + const ESCAPE_CHARS = { + // $\n, $\r, $\t, $$ + className: 'char.escape', + begin: /\$(\\[nrt]|\$)/ + }; + + const PLUGINS = { + // plug::ins + className: 'title.function', + begin: /\w+::\w+/ + }; + + const STRING = { + className: 'string', + variants: [ + { + begin: '"', + end: '"' + }, + { + begin: '\'', + end: '\'' + }, + { + begin: '`', + end: '`' + } + ], + illegal: /\n/, + contains: [ + ESCAPE_CHARS, + CONSTANTS, + DEFINES, + VARIABLES, + LANGUAGES + ] + }; + + const KEYWORDS = [ + "Abort", + "AddBrandingImage", + "AddSize", + "AllowRootDirInstall", + "AllowSkipFiles", + "AutoCloseWindow", + "BGFont", + "BGGradient", + "BrandingText", + "BringToFront", + "Call", + "CallInstDLL", + "Caption", + "ChangeUI", + "CheckBitmap", + "ClearErrors", + "CompletedText", + "ComponentText", + "CopyFiles", + "CRCCheck", + "CreateDirectory", + "CreateFont", + "CreateShortCut", + "Delete", + "DeleteINISec", + "DeleteINIStr", + "DeleteRegKey", + "DeleteRegValue", + "DetailPrint", + "DetailsButtonText", + "DirText", + "DirVar", + "DirVerify", + "EnableWindow", + "EnumRegKey", + "EnumRegValue", + "Exch", + "Exec", + "ExecShell", + "ExecShellWait", + "ExecWait", + "ExpandEnvStrings", + "File", + "FileBufSize", + "FileClose", + "FileErrorText", + "FileOpen", + "FileRead", + "FileReadByte", + "FileReadUTF16LE", + "FileReadWord", + "FileWriteUTF16LE", + "FileSeek", + "FileWrite", + "FileWriteByte", + "FileWriteWord", + "FindClose", + "FindFirst", + "FindNext", + "FindWindow", + "FlushINI", + "GetCurInstType", + "GetCurrentAddress", + "GetDlgItem", + "GetDLLVersion", + "GetDLLVersionLocal", + "GetErrorLevel", + "GetFileTime", + "GetFileTimeLocal", + "GetFullPathName", + "GetFunctionAddress", + "GetInstDirError", + "GetKnownFolderPath", + "GetLabelAddress", + "GetTempFileName", + "GetWinVer", + "Goto", + "HideWindow", + "Icon", + "IfAbort", + "IfErrors", + "IfFileExists", + "IfRebootFlag", + "IfRtlLanguage", + "IfShellVarContextAll", + "IfSilent", + "InitPluginsDir", + "InstallButtonText", + "InstallColors", + "InstallDir", + "InstallDirRegKey", + "InstProgressFlags", + "InstType", + "InstTypeGetText", + "InstTypeSetText", + "Int64Cmp", + "Int64CmpU", + "Int64Fmt", + "IntCmp", + "IntCmpU", + "IntFmt", + "IntOp", + "IntPtrCmp", + "IntPtrCmpU", + "IntPtrOp", + "IsWindow", + "LangString", + "LicenseBkColor", + "LicenseData", + "LicenseForceSelection", + "LicenseLangString", + "LicenseText", + "LoadAndSetImage", + "LoadLanguageFile", + "LockWindow", + "LogSet", + "LogText", + "ManifestDPIAware", + "ManifestLongPathAware", + "ManifestMaxVersionTested", + "ManifestSupportedOS", + "MessageBox", + "MiscButtonText", + "Name|0", + "Nop", + "OutFile", + "Page", + "PageCallbacks", + "PEAddResource", + "PEDllCharacteristics", + "PERemoveResource", + "PESubsysVer", + "Pop", + "Push", + "Quit", + "ReadEnvStr", + "ReadINIStr", + "ReadRegDWORD", + "ReadRegStr", + "Reboot", + "RegDLL", + "Rename", + "RequestExecutionLevel", + "ReserveFile", + "Return", + "RMDir", + "SearchPath", + "SectionGetFlags", + "SectionGetInstTypes", + "SectionGetSize", + "SectionGetText", + "SectionIn", + "SectionSetFlags", + "SectionSetInstTypes", + "SectionSetSize", + "SectionSetText", + "SendMessage", + "SetAutoClose", + "SetBrandingImage", + "SetCompress", + "SetCompressor", + "SetCompressorDictSize", + "SetCtlColors", + "SetCurInstType", + "SetDatablockOptimize", + "SetDateSave", + "SetDetailsPrint", + "SetDetailsView", + "SetErrorLevel", + "SetErrors", + "SetFileAttributes", + "SetFont", + "SetOutPath", + "SetOverwrite", + "SetRebootFlag", + "SetRegView", + "SetShellVarContext", + "SetSilent", + "ShowInstDetails", + "ShowUninstDetails", + "ShowWindow", + "SilentInstall", + "SilentUnInstall", + "Sleep", + "SpaceTexts", + "StrCmp", + "StrCmpS", + "StrCpy", + "StrLen", + "SubCaption", + "Unicode", + "UninstallButtonText", + "UninstallCaption", + "UninstallIcon", + "UninstallSubCaption", + "UninstallText", + "UninstPage", + "UnRegDLL", + "Var", + "VIAddVersionKey", + "VIFileVersion", + "VIProductVersion", + "WindowIcon", + "WriteINIStr", + "WriteRegBin", + "WriteRegDWORD", + "WriteRegExpandStr", + "WriteRegMultiStr", + "WriteRegNone", + "WriteRegStr", + "WriteUninstaller", + "XPStyle" + ]; + + const LITERALS = [ + "admin", + "all", + "auto", + "both", + "bottom", + "bzip2", + "colored", + "components", + "current", + "custom", + "directory", + "false", + "force", + "hide", + "highest", + "ifdiff", + "ifnewer", + "instfiles", + "lastused", + "leave", + "left", + "license", + "listonly", + "lzma", + "nevershow", + "none", + "normal", + "notset", + "off", + "on", + "open", + "print", + "right", + "show", + "silent", + "silentlog", + "smooth", + "textonly", + "top", + "true", + "try", + "un.components", + "un.custom", + "un.directory", + "un.instfiles", + "un.license", + "uninstConfirm", + "user", + "Win10", + "Win7", + "Win8", + "WinVista", + "zlib" + ]; + + const FUNCTION_DEFINITION = { + match: [ + /Function/, + /\s+/, + regex.concat(/(\.)?/, hljs.IDENT_RE) + ], + scope: { + 1: "keyword", + 3: "title.function" + } + }; + + // Var Custom.Variable.Name.Item + // Var /GLOBAL Custom.Variable.Name.Item + const VARIABLE_NAME_RE = /[A-Za-z][\w.]*/; + const VARIABLE_DEFINITION = { + match: [ + /Var/, + /\s+/, + /(?:\/GLOBAL\s+)?/, + VARIABLE_NAME_RE + ], + scope: { + 1: "keyword", + 3: "params", + 4: "variable" + } + }; + + return { + name: 'NSIS', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + literal: LITERALS + }, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ), + VARIABLE_DEFINITION, + FUNCTION_DEFINITION, + { beginKeywords: 'Function PageEx Section SectionGroup FunctionEnd SectionEnd', }, + STRING, + COMPILER, + DEFINES, + VARIABLES, + LANGUAGES, + PARAMETERS, + PLUGINS, + hljs.NUMBER_MODE + ] + }; +} + +module.exports = nsis; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/objectivec.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/objectivec.js ***! + \*******************************************************************/ +(module) { + +/* +Language: Objective-C +Author: Valerii Hiora +Contributors: Angel G. Olloqui , Matt Diephouse , Andrew Farmer , Minh Nguyễn +Website: https://developer.apple.com/documentation/objectivec +Category: common +*/ + +function objectivec(hljs) { + const API_CLASS = { + className: 'built_in', + begin: '\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+' + }; + const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/; + const TYPES = [ + "int", + "float", + "char", + "unsigned", + "signed", + "short", + "long", + "double", + "wchar_t", + "unichar", + "void", + "bool", + "BOOL", + "id|0", + "_Bool" + ]; + const KWS = [ + "while", + "export", + "sizeof", + "typedef", + "const", + "struct", + "for", + "union", + "volatile", + "static", + "mutable", + "if", + "do", + "return", + "goto", + "enum", + "else", + "break", + "extern", + "asm", + "case", + "default", + "register", + "explicit", + "typename", + "switch", + "continue", + "inline", + "readonly", + "assign", + "readwrite", + "self", + "@synchronized", + "id", + "typeof", + "nonatomic", + "IBOutlet", + "IBAction", + "strong", + "weak", + "copy", + "in", + "out", + "inout", + "bycopy", + "byref", + "oneway", + "__strong", + "__weak", + "__block", + "__autoreleasing", + "@private", + "@protected", + "@public", + "@try", + "@property", + "@end", + "@throw", + "@catch", + "@finally", + "@autoreleasepool", + "@synthesize", + "@dynamic", + "@selector", + "@optional", + "@required", + "@encode", + "@package", + "@import", + "@defs", + "@compatibility_alias", + "__bridge", + "__bridge_transfer", + "__bridge_retained", + "__bridge_retain", + "__covariant", + "__contravariant", + "__kindof", + "_Nonnull", + "_Nullable", + "_Null_unspecified", + "__FUNCTION__", + "__PRETTY_FUNCTION__", + "__attribute__", + "getter", + "setter", + "retain", + "unsafe_unretained", + "nonnull", + "nullable", + "null_unspecified", + "null_resettable", + "class", + "instancetype", + "NS_DESIGNATED_INITIALIZER", + "NS_UNAVAILABLE", + "NS_REQUIRES_SUPER", + "NS_RETURNS_INNER_POINTER", + "NS_INLINE", + "NS_AVAILABLE", + "NS_DEPRECATED", + "NS_ENUM", + "NS_OPTIONS", + "NS_SWIFT_UNAVAILABLE", + "NS_ASSUME_NONNULL_BEGIN", + "NS_ASSUME_NONNULL_END", + "NS_REFINED_FOR_SWIFT", + "NS_SWIFT_NAME", + "NS_SWIFT_NOTHROW", + "NS_DURING", + "NS_HANDLER", + "NS_ENDHANDLER", + "NS_VALUERETURN", + "NS_VOIDRETURN" + ]; + const LITERALS = [ + "false", + "true", + "FALSE", + "TRUE", + "nil", + "YES", + "NO", + "NULL" + ]; + const BUILT_INS = [ + "dispatch_once_t", + "dispatch_queue_t", + "dispatch_sync", + "dispatch_async", + "dispatch_once" + ]; + const KEYWORDS = { + "variable.language": [ + "this", + "super" + ], + $pattern: IDENTIFIER_RE, + keyword: KWS, + literal: LITERALS, + built_in: BUILT_INS, + type: TYPES + }; + const CLASS_KEYWORDS = { + $pattern: IDENTIFIER_RE, + keyword: [ + "@interface", + "@class", + "@protocol", + "@implementation" + ] + }; + return { + name: 'Objective-C', + aliases: [ + 'mm', + 'objc', + 'obj-c', + 'obj-c++', + 'objective-c++' + ], + keywords: KEYWORDS, + illegal: '/, + end: /$/, + illegal: '\\n' + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }, + { + className: 'class', + begin: '(' + CLASS_KEYWORDS.keyword.join('|') + ')\\b', + end: /(\{|$)/, + excludeEnd: true, + keywords: CLASS_KEYWORDS, + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + }, + { + begin: '\\.' + hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + } + ] + }; +} + +module.exports = objectivec; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ocaml.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ocaml.js ***! + \**************************************************************/ +(module) { + +/* +Language: OCaml +Author: Mehdi Dogguy +Contributors: Nicolas Braud-Santoni , Mickael Delahaye +Description: OCaml language definition. +Website: https://ocaml.org +Category: functional +*/ + +function ocaml(hljs) { + /* missing support for heredoc-like string (OCaml 4.0.2+) */ + return { + name: 'OCaml', + aliases: [ 'ml' ], + keywords: { + $pattern: '[a-z_]\\w*!?', + keyword: + 'and as assert asr begin class constraint do done downto else end ' + + 'exception external for fun function functor if in include ' + + 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' + + 'mod module mutable new object of open! open or private rec sig struct ' + + 'then to try type val! val virtual when while with ' + /* camlp4 */ + + 'parser value', + built_in: + /* built-in types */ + 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' + /* (some) types in Pervasives */ + + 'in_channel out_channel ref', + literal: + 'true false' + }, + illegal: /\/\/|>>/, + contains: [ + { + className: 'literal', + begin: '\\[(\\|\\|)?\\]|\\(\\)', + relevance: 0 + }, + hljs.COMMENT( + '\\(\\*', + '\\*\\)', + { contains: [ 'self' ] } + ), + { /* type variable */ + className: 'symbol', + begin: '\'[A-Za-z_](?!\')[\\w\']*' + /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ + }, + { /* polymorphic variant */ + className: 'type', + begin: '`[A-Z][\\w\']*' + }, + { /* module or constructor */ + className: 'type', + begin: '\\b[A-Z][\\w\']*', + relevance: 0 + }, + { /* don't color identifiers, but safely catch all identifiers with ' */ + begin: '[a-z_]\\w*\'[\\w\']*', + relevance: 0 + }, + hljs.inherit(hljs.APOS_STRING_MODE, { + className: 'string', + relevance: 0 + }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), + { + className: 'number', + begin: + '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' + + '0[oO][0-7_]+[Lln]?|' + + '0[bB][01_]+[Lln]?|' + + '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)', + relevance: 0 + }, + { begin: /->/ // relevance booster + } + ] + }; +} + +module.exports = ocaml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/openscad.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/openscad.js ***! + \*****************************************************************/ +(module) { + +/* +Language: OpenSCAD +Author: Dan Panzarella +Description: OpenSCAD is a language for the 3D CAD modeling software of the same name. +Website: https://www.openscad.org +Category: scientific +*/ + +function openscad(hljs) { + const SPECIAL_VARS = { + className: 'keyword', + begin: '\\$(f[asn]|t|vp[rtd]|children)' + }; + const LITERALS = { + className: 'literal', + begin: 'false|true|PI|undef' + }; + const NUMBERS = { + className: 'number', + begin: '\\b\\d+(\\.\\d+)?(e-?\\d+)?', // adds 1e5, 1e-10 + relevance: 0 + }; + const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); + const PREPRO = { + className: 'meta', + keywords: { keyword: 'include use' }, + begin: 'include|use <', + end: '>' + }; + const PARAMS = { + className: 'params', + begin: '\\(', + end: '\\)', + contains: [ + 'self', + NUMBERS, + STRING, + SPECIAL_VARS, + LITERALS + ] + }; + const MODIFIERS = { + begin: '[*!#%]', + relevance: 0 + }; + const FUNCTIONS = { + className: 'function', + beginKeywords: 'module function', + end: /=|\{/, + contains: [ + PARAMS, + hljs.UNDERSCORE_TITLE_MODE + ] + }; + + return { + name: 'OpenSCAD', + aliases: [ 'scad' ], + keywords: { + keyword: 'function module include use for intersection_for if else \\%', + literal: 'false true PI undef', + built_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign' + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + NUMBERS, + PREPRO, + STRING, + SPECIAL_VARS, + MODIFIERS, + FUNCTIONS + ] + }; +} + +module.exports = openscad; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/oxygene.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/oxygene.js ***! + \****************************************************************/ +(module) { + +/* +Language: Oxygene +Author: Carlo Kok +Description: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century. +Website: https://www.elementscompiler.com/elements/default.aspx +Category: build-system +*/ + +function oxygene(hljs) { + const OXYGENE_KEYWORDS = { + $pattern: /\.?\w+/, + keyword: + 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue ' + + 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false ' + + 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited ' + + 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of ' + + 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly ' + + 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple ' + + 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal ' + + 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained' + }; + const CURLY_COMMENT = hljs.COMMENT( + /\{/, + /\}/, + { relevance: 0 } + ); + const PAREN_COMMENT = hljs.COMMENT( + '\\(\\*', + '\\*\\)', + { relevance: 10 } + ); + const STRING = { + className: 'string', + begin: '\'', + end: '\'', + contains: [ { begin: '\'\'' } ] + }; + const CHAR_STRING = { + className: 'string', + begin: '(#\\d+)+' + }; + const FUNCTION = { + beginKeywords: 'function constructor destructor procedure method', + end: '[:;]', + keywords: 'function constructor|10 destructor|10 procedure|10 method|10', + contains: [ + hljs.inherit(hljs.TITLE_MODE, { scope: "title.function" }), + { + className: 'params', + begin: '\\(', + end: '\\)', + keywords: OXYGENE_KEYWORDS, + contains: [ + STRING, + CHAR_STRING + ] + }, + CURLY_COMMENT, + PAREN_COMMENT + ] + }; + + const SEMICOLON = { + scope: "punctuation", + match: /;/, + relevance: 0 + }; + + return { + name: 'Oxygene', + case_insensitive: true, + keywords: OXYGENE_KEYWORDS, + illegal: '("|\\$[G-Zg-z]|\\/\\*||->)', + contains: [ + CURLY_COMMENT, + PAREN_COMMENT, + hljs.C_LINE_COMMENT_MODE, + STRING, + CHAR_STRING, + hljs.NUMBER_MODE, + FUNCTION, + SEMICOLON + ] + }; +} + +module.exports = oxygene; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/parser3.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/parser3.js ***! + \****************************************************************/ +(module) { + +/* +Language: Parser3 +Requires: xml.js +Author: Oleg Volchkov +Website: https://www.parser.ru/en/ +Category: template +*/ + +function parser3(hljs) { + const CURLY_SUBCOMMENT = hljs.COMMENT( + /\{/, + /\}/, + { contains: [ 'self' ] } + ); + return { + name: 'Parser3', + subLanguage: 'xml', + relevance: 0, + contains: [ + hljs.COMMENT('^#', '$'), + hljs.COMMENT( + /\^rem\{/, + /\}/, + { + relevance: 10, + contains: [ CURLY_SUBCOMMENT ] + } + ), + { + className: 'meta', + begin: '^@(?:BASE|USE|CLASS|OPTIONS)$', + relevance: 10 + }, + { + className: 'title', + begin: '@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$' + }, + { + className: 'variable', + begin: /\$\{?[\w\-.:]+\}?/ + }, + { + className: 'keyword', + begin: /\^[\w\-.:]+/ + }, + { + className: 'number', + begin: '\\^#[0-9a-fA-F]+' + }, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = parser3; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/perl.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/perl.js ***! + \*************************************************************/ +(module) { + +/* +Language: Perl +Author: Peter Leonov +Website: https://www.perl.org +Category: common +*/ + +/** @type LanguageFn */ +function perl(hljs) { + const regex = hljs.regex; + const KEYWORDS = [ + 'abs', + 'accept', + 'alarm', + 'and', + 'atan2', + 'bind', + 'binmode', + 'bless', + 'break', + 'caller', + 'chdir', + 'chmod', + 'chomp', + 'chop', + 'chown', + 'chr', + 'chroot', + 'class', + 'close', + 'closedir', + 'connect', + 'continue', + 'cos', + 'crypt', + 'dbmclose', + 'dbmopen', + 'defined', + 'delete', + 'die', + 'do', + 'dump', + 'each', + 'else', + 'elsif', + 'endgrent', + 'endhostent', + 'endnetent', + 'endprotoent', + 'endpwent', + 'endservent', + 'eof', + 'eval', + 'exec', + 'exists', + 'exit', + 'exp', + 'fcntl', + 'field', + 'fileno', + 'flock', + 'for', + 'foreach', + 'fork', + 'format', + 'formline', + 'getc', + 'getgrent', + 'getgrgid', + 'getgrnam', + 'gethostbyaddr', + 'gethostbyname', + 'gethostent', + 'getlogin', + 'getnetbyaddr', + 'getnetbyname', + 'getnetent', + 'getpeername', + 'getpgrp', + 'getpriority', + 'getprotobyname', + 'getprotobynumber', + 'getprotoent', + 'getpwent', + 'getpwnam', + 'getpwuid', + 'getservbyname', + 'getservbyport', + 'getservent', + 'getsockname', + 'getsockopt', + 'given', + 'glob', + 'gmtime', + 'goto', + 'grep', + 'gt', + 'hex', + 'if', + 'index', + 'int', + 'ioctl', + 'join', + 'keys', + 'kill', + 'last', + 'lc', + 'lcfirst', + 'length', + 'link', + 'listen', + 'local', + 'localtime', + 'log', + 'lstat', + 'lt', + 'ma', + 'map', + 'method', + 'mkdir', + 'msgctl', + 'msgget', + 'msgrcv', + 'msgsnd', + 'my', + 'ne', + 'next', + 'no', + 'not', + 'oct', + 'open', + 'opendir', + 'or', + 'ord', + 'our', + 'pack', + 'package', + 'pipe', + 'pop', + 'pos', + 'print', + 'printf', + 'prototype', + 'push', + 'q|0', + 'qq', + 'quotemeta', + 'qw', + 'qx', + 'rand', + 'read', + 'readdir', + 'readline', + 'readlink', + 'readpipe', + 'recv', + 'redo', + 'ref', + 'rename', + 'require', + 'reset', + 'return', + 'reverse', + 'rewinddir', + 'rindex', + 'rmdir', + 'say', + 'scalar', + 'seek', + 'seekdir', + 'select', + 'semctl', + 'semget', + 'semop', + 'send', + 'setgrent', + 'sethostent', + 'setnetent', + 'setpgrp', + 'setpriority', + 'setprotoent', + 'setpwent', + 'setservent', + 'setsockopt', + 'shift', + 'shmctl', + 'shmget', + 'shmread', + 'shmwrite', + 'shutdown', + 'sin', + 'sleep', + 'socket', + 'socketpair', + 'sort', + 'splice', + 'split', + 'sprintf', + 'sqrt', + 'srand', + 'stat', + 'state', + 'study', + 'sub', + 'substr', + 'symlink', + 'syscall', + 'sysopen', + 'sysread', + 'sysseek', + 'system', + 'syswrite', + 'tell', + 'telldir', + 'tie', + 'tied', + 'time', + 'times', + 'tr', + 'truncate', + 'uc', + 'ucfirst', + 'umask', + 'undef', + 'unless', + 'unlink', + 'unpack', + 'unshift', + 'untie', + 'until', + 'use', + 'utime', + 'values', + 'vec', + 'wait', + 'waitpid', + 'wantarray', + 'warn', + 'when', + 'while', + 'write', + 'x|0', + 'xor', + 'y|0' + ]; + + // https://perldoc.perl.org/perlre#Modifiers + const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12 + const PERL_KEYWORDS = { + $pattern: /[\w.]+/, + keyword: KEYWORDS.join(" ") + }; + const SUBST = { + className: 'subst', + begin: '[$@]\\{', + end: '\\}', + keywords: PERL_KEYWORDS + }; + const METHOD = { + begin: /->\{/, + end: /\}/ + // contains defined later + }; + const ATTR = { + scope: 'attr', + match: /\s+:\s*\w+(\s*\(.*?\))?/, + }; + const VAR = { + scope: 'variable', + variants: [ + { begin: /\$\d/ }, + { begin: regex.concat( + /[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/, + // negative look-ahead tries to avoid matching patterns that are not + // Perl at all like $ident$, @ident@, etc. + `(?![A-Za-z])(?![@$%])` + ) + }, + { + // Only $= is a special Perl variable and one can't declare @= or %=. + begin: /[$%@](?!")[^\s\w{=]|\$=/, + relevance: 0 + } + ], + contains: [ ATTR ], + }; + const NUMBER = { + className: 'number', + variants: [ + // decimal numbers: + // include the case where a number starts with a dot (eg. .9), and + // the leading 0? avoids mixing the first and second match on 0.x cases + { match: /0?\.[0-9][0-9_]+\b/ }, + // include the special versioned number (eg. v5.38) + { match: /\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/ }, + // non-decimal numbers: + { match: /\b0[0-7][0-7_]*\b/ }, + { match: /\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/ }, + { match: /\b0b[0-1][0-1_]*\b/ }, + ], + relevance: 0 + }; + const STRING_CONTAINS = [ + hljs.BACKSLASH_ESCAPE, + SUBST, + VAR + ]; + const REGEX_DELIMS = [ + /!/, + /\//, + /\|/, + /\?/, + /'/, + /"/, // valid but infrequent and weird + /#/ // valid but infrequent and weird + ]; + /** + * @param {string|RegExp} prefix + * @param {string|RegExp} open + * @param {string|RegExp} close + */ + const PAIRED_DOUBLE_RE = (prefix, open, close = '\\1') => { + const middle = (close === '\\1') + ? close + : regex.concat(close, open); + return regex.concat( + regex.concat("(?:", prefix, ")"), + open, + /(?:\\.|[^\\\/])*?/, + middle, + /(?:\\.|[^\\\/])*?/, + close, + REGEX_MODIFIERS + ); + }; + /** + * @param {string|RegExp} prefix + * @param {string|RegExp} open + * @param {string|RegExp} close + */ + const PAIRED_RE = (prefix, open, close) => { + return regex.concat( + regex.concat("(?:", prefix, ")"), + open, + /(?:\\.|[^\\\/])*?/, + close, + REGEX_MODIFIERS + ); + }; + const PERL_DEFAULT_CONTAINS = [ + VAR, + hljs.HASH_COMMENT_MODE, + hljs.COMMENT( + /^=\w/, + /=cut/, + { endsWithParent: true } + ), + METHOD, + { + className: 'string', + contains: STRING_CONTAINS, + variants: [ + { + begin: 'q[qwxr]?\\s*\\(', + end: '\\)', + relevance: 5 + }, + { + begin: 'q[qwxr]?\\s*\\[', + end: '\\]', + relevance: 5 + }, + { + begin: 'q[qwxr]?\\s*\\{', + end: '\\}', + relevance: 5 + }, + { + begin: 'q[qwxr]?\\s*\\|', + end: '\\|', + relevance: 5 + }, + { + begin: 'q[qwxr]?\\s*<', + end: '>', + relevance: 5 + }, + { + begin: 'qw\\s+q', + end: 'q', + relevance: 5 + }, + { + begin: '\'', + end: '\'', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '"', + end: '"' + }, + { + begin: '`', + end: '`', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: /\{\w+\}/, + relevance: 0 + }, + { + begin: '-?\\w+\\s*=>', + relevance: 0 + } + ] + }, + NUMBER, + { // regexp container + begin: '(\\/\\/|' + hljs.RE_STARTERS_RE + '|\\b(split|return|print|reverse|grep)\\b)\\s*', + keywords: 'split return print reverse grep', + relevance: 0, + contains: [ + hljs.HASH_COMMENT_MODE, + { + className: 'regexp', + variants: [ + // allow matching common delimiters + { begin: PAIRED_DOUBLE_RE("s|tr|y", regex.either(...REGEX_DELIMS, { capture: true })) }, + // and then paired delmis + { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\(", "\\)") }, + { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\[", "\\]") }, + { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\{", "\\}") } + ], + relevance: 2 + }, + { + className: 'regexp', + variants: [ + { + // could be a comment in many languages so do not count + // as relevant + begin: /(m|qr)\/\//, + relevance: 0 + }, + // prefix is optional with /regex/ + { begin: PAIRED_RE("(?:m|qr)?", /\//, /\//) }, + // allow matching common delimiters + { begin: PAIRED_RE("m|qr", regex.either(...REGEX_DELIMS, { capture: true }), /\1/) }, + // allow common paired delmins + { begin: PAIRED_RE("m|qr", /\(/, /\)/) }, + { begin: PAIRED_RE("m|qr", /\[/, /\]/) }, + { begin: PAIRED_RE("m|qr", /\{/, /\}/) } + ] + } + ] + }, + { + className: 'function', + beginKeywords: 'sub method', + end: '(\\s*\\(.*?\\))?[;{]', + excludeEnd: true, + relevance: 5, + contains: [ hljs.TITLE_MODE, ATTR ] + }, + { + className: 'class', + beginKeywords: 'class', + end: '[;{]', + excludeEnd: true, + relevance: 5, + contains: [ hljs.TITLE_MODE, ATTR, NUMBER ] + }, + { + begin: '-\\w\\b', + relevance: 0 + }, + { + begin: "^__DATA__$", + end: "^__END__$", + subLanguage: 'mojolicious', + contains: [ + { + begin: "^@@.*", + end: "$", + className: "comment" + } + ] + } + ]; + SUBST.contains = PERL_DEFAULT_CONTAINS; + METHOD.contains = PERL_DEFAULT_CONTAINS; + + return { + name: 'Perl', + aliases: [ + 'pl', + 'pm' + ], + keywords: PERL_KEYWORDS, + contains: PERL_DEFAULT_CONTAINS + }; +} + +module.exports = perl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/pf.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/pf.js ***! + \***********************************************************/ +(module) { + +/* +Language: Packet Filter config +Description: pf.conf — packet filter configuration file (OpenBSD) +Author: Peter Piwowarski +Website: http://man.openbsd.org/pf.conf +Category: config +*/ + +function pf(hljs) { + const MACRO = { + className: 'variable', + begin: /\$[\w\d#@][\w\d_]*/, + relevance: 0 + }; + const TABLE = { + className: 'variable', + begin: /<(?!\/)/, + end: />/ + }; + + return { + name: 'Packet Filter config', + aliases: [ 'pf.conf' ], + keywords: { + $pattern: /[a-z0-9_<>-]+/, + built_in: /* block match pass are "actions" in pf.conf(5), the rest are + * lexically similar top-level commands. + */ + 'block match pass load anchor|5 antispoof|10 set table', + keyword: + 'in out log quick on rdomain inet inet6 proto from port os to route ' + + 'allow-opts divert-packet divert-reply divert-to flags group icmp-type ' + + 'icmp6-type label once probability recieved-on rtable prio queue ' + + 'tos tag tagged user keep fragment for os drop ' + + 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin ' + + 'source-hash static-port ' + + 'dup-to reply-to route-to ' + + 'parent bandwidth default min max qlimit ' + + 'block-policy debug fingerprints hostid limit loginterface optimization ' + + 'reassemble ruleset-optimization basic none profile skip state-defaults ' + + 'state-policy timeout ' + + 'const counters persist ' + + 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy ' + + 'source-track global rule max-src-nodes max-src-states max-src-conn ' + + 'max-src-conn-rate overload flush ' + + 'scrub|5 max-mss min-ttl no-df|10 random-id', + literal: + 'all any no-route self urpf-failed egress|5 unknown' + }, + contains: [ + hljs.HASH_COMMENT_MODE, + hljs.NUMBER_MODE, + hljs.QUOTE_STRING_MODE, + MACRO, + TABLE + ] + }; +} + +module.exports = pf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/pgsql.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/pgsql.js ***! + \**************************************************************/ +(module) { + +/* +Language: PostgreSQL and PL/pgSQL +Author: Egor Rogov (e.rogov@postgrespro.ru) +Website: https://www.postgresql.org/docs/11/sql.html +Description: + This language incorporates both PostgreSQL SQL dialect and PL/pgSQL language. + It is based on PostgreSQL version 11. Some notes: + - Text in double-dollar-strings is _always_ interpreted as some programming code. Text + in ordinary quotes is _never_ interpreted that way and highlighted just as a string. + - There are quite a bit "special cases". That's because many keywords are not strictly + they are keywords in some contexts and ordinary identifiers in others. Only some + of such cases are handled; you still can get some of your identifiers highlighted + wrong way. + - Function names deliberately are not highlighted. There is no way to tell function + call from other constructs, hence we can't highlight _all_ function names. And + some names highlighted while others not looks ugly. +Category: database +*/ + +function pgsql(hljs) { + const COMMENT_MODE = hljs.COMMENT('--', '$'); + const UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*'; + const DOLLAR_STRING = '\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$'; + const LABEL = '<<\\s*' + UNQUOTED_IDENT + '\\s*>>'; + + const SQL_KW = + // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html + // https://www.postgresql.org/docs/11/static/sql-commands.html + // SQL commands (starting words) + 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' + + 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' + + 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' + + 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' + // SQL commands (others) + + 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' + + 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' + + 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' + + 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' + + 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' + + 'INDEX PROCEDURE ASSERTION ' + // additional reserved key words + + 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' + + 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' + + 'DEFERRABLE RANGE ' + + 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' + + 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' + + 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' + + 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' + + 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' + // some of non-reserved (which are used in clauses or as PL/pgSQL keyword) + + 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' + + 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' + + 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' + + 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' + + 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' + + 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' + + 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' + + 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' + + 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' + + 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' + + 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' + // some parameters of VACUUM/ANALYZE/EXPLAIN + + 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' + // + + 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' + + 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' + // from GRANT (not keywords actually) + + 'USAGE ROUTINES ' + // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc) + + 'TRUE FALSE NAN INFINITY '; + + const ROLE_ATTRS = // only those not in keywrods already + 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' + + 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS '; + + const PLPGSQL_KW = + 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' + + 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' + + 'OPEN '; + + const TYPES = + // https://www.postgresql.org/docs/11/static/datatype.html + 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' + + 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' + + 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' + + 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' + + 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' + + 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' + // pseudotypes + + 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' + + 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' + // spec. type + + 'NAME ' + // OID-types + + 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' + + 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// + + + const TYPES_RE = + TYPES.trim() + .split(' ') + .map(function(val) { return val.split('|')[0]; }) + .join('|'); + + const SQL_BI = + 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' + + 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC '; + + const PLPGSQL_BI = + 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' + + 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' + // get diagnostics + + 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' + + 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' + + 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 '; + + const PLPGSQL_EXCEPTIONS = + // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html + 'SQLSTATE SQLERRM|10 ' + + 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' + + 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' + + 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' + + 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' + + 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' + + 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' + + 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' + + 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' + + 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' + + 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' + + 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' + + 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' + + 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' + + 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' + + 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' + + 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' + + 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' + + 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' + + 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' + + 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' + + 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' + + 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' + + 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' + + 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' + + 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' + + 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' + + 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' + + 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' + + 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' + + 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' + + 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' + + 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' + + 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' + + 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' + + 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' + + 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' + + 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' + + 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' + + 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' + + 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' + + 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' + + 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' + + 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' + + 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' + + 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' + + 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' + + 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' + + 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' + + 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' + + 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' + + 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' + + 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' + + 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' + + 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' + + 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' + + 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' + + 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' + + 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' + + 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' + + 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' + + 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' + + 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' + + 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' + + 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' + + 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' + + 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' + + 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' + + 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' + + 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' + + 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' + + 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' + + 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' + + 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' + + 'INDEX_CORRUPTED '; + + const FUNCTIONS = + // https://www.postgresql.org/docs/11/static/functions-aggregate.html + 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' + + 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' + + 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' + + 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' + + 'PERCENTILE_CONT PERCENTILE_DISC ' + // https://www.postgresql.org/docs/11/static/functions-window.html + + 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' + // https://www.postgresql.org/docs/11/static/functions-comparison.html + + 'NUM_NONNULLS NUM_NULLS ' + // https://www.postgresql.org/docs/11/static/functions-math.html + + 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' + + 'TRUNC WIDTH_BUCKET ' + + 'RANDOM SETSEED ' + + 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' + // https://www.postgresql.org/docs/11/static/functions-string.html + + 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' + + 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP ' + + 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' + + 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' + + 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' + + 'TO_ASCII TO_HEX TRANSLATE ' + // https://www.postgresql.org/docs/11/static/functions-binarystring.html + + 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' + // https://www.postgresql.org/docs/11/static/functions-formatting.html + + 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' + // https://www.postgresql.org/docs/11/static/functions-datetime.html + + 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' + + 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' + + 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' + // https://www.postgresql.org/docs/11/static/functions-enum.html + + 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' + // https://www.postgresql.org/docs/11/static/functions-geometry.html + + 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' + + 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' + // https://www.postgresql.org/docs/11/static/functions-net.html + + 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY ' + + 'INET_MERGE MACADDR8_SET7BIT ' + // https://www.postgresql.org/docs/11/static/functions-textsearch.html + + 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' + + 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' + + 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' + + 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' + // https://www.postgresql.org/docs/11/static/functions-xml.html + + 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' + + 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' + + 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' + + 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' + + 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' + + 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' + + 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' + + 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' + + 'XMLATTRIBUTES ' + // https://www.postgresql.org/docs/11/static/functions-json.html + + 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' + + 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' + + 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' + + 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' + + 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' + + 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' + + 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' + // https://www.postgresql.org/docs/11/static/functions-sequence.html + + 'CURRVAL LASTVAL NEXTVAL SETVAL ' + // https://www.postgresql.org/docs/11/static/functions-conditional.html + + 'COALESCE NULLIF GREATEST LEAST ' + // https://www.postgresql.org/docs/11/static/functions-array.html + + 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' + + 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' + + 'STRING_TO_ARRAY UNNEST ' + // https://www.postgresql.org/docs/11/static/functions-range.html + + 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' + // https://www.postgresql.org/docs/11/static/functions-srf.html + + 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' + // https://www.postgresql.org/docs/11/static/functions-info.html + + 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' + + 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' + + 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' + + 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' + + 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' + + 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' + // https://www.postgresql.org/docs/11/static/functions-admin.html + + 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' + + 'GIN_CLEAN_PENDING_LIST ' + // https://www.postgresql.org/docs/11/static/functions-trigger.html + + 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' + // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html + + 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' + // + + 'GROUPING CAST '; + + const FUNCTIONS_RE = + FUNCTIONS.trim() + .split(' ') + .map(function(val) { return val.split('|')[0]; }) + .join('|'); + + return { + name: 'PostgreSQL', + aliases: [ + 'postgres', + 'postgresql' + ], + supersetOf: "sql", + case_insensitive: true, + keywords: { + keyword: + SQL_KW + PLPGSQL_KW + ROLE_ATTRS, + built_in: + SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS + }, + // Forbid some cunstructs from other languages to improve autodetect. In fact + // "[a-z]:" is legal (as part of array slice), but improbabal. + illegal: /:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/, + contains: [ + // special handling of some words, which are reserved only in some contexts + { + className: 'keyword', + variants: [ + { begin: /\bTEXT\s*SEARCH\b/ }, + { begin: /\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/ }, + { begin: /\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/ }, + { begin: /\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/ }, + { begin: /\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/ }, + { begin: /\bNULLS\s+(FIRST|LAST)\b/ }, + { begin: /\bEVENT\s+TRIGGER\b/ }, + { begin: /\b(MAPPING|OR)\s+REPLACE\b/ }, + { begin: /\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/ }, + { begin: /\b(SHARE|EXCLUSIVE)\s+MODE\b/ }, + { begin: /\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/ }, + { begin: /\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/ }, + { begin: /\bPRESERVE\s+ROWS\b/ }, + { begin: /\bDISCARD\s+PLANS\b/ }, + { begin: /\bREFERENCING\s+(OLD|NEW)\b/ }, + { begin: /\bSKIP\s+LOCKED\b/ }, + { begin: /\bGROUPING\s+SETS\b/ }, + { begin: /\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/ }, + { begin: /\b(WITH|WITHOUT)\s+HOLD\b/ }, + { begin: /\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/ }, + { begin: /\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/ }, + { begin: /\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/ }, + { begin: /\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/ }, + { begin: /\bIS\s+(NOT\s+)?UNKNOWN\b/ }, + { begin: /\bSECURITY\s+LABEL\b/ }, + { begin: /\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/ }, + { begin: /\bWITH\s+(NO\s+)?DATA\b/ }, + { begin: /\b(FOREIGN|SET)\s+DATA\b/ }, + { begin: /\bSET\s+(CATALOG|CONSTRAINTS)\b/ }, + { begin: /\b(WITH|FOR)\s+ORDINALITY\b/ }, + { begin: /\bIS\s+(NOT\s+)?DOCUMENT\b/ }, + { begin: /\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/ }, + { begin: /\b(STRIP|PRESERVE)\s+WHITESPACE\b/ }, + { begin: /\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/ }, + { begin: /\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/ }, + { begin: /\bAT\s+TIME\s+ZONE\b/ }, + { begin: /\bGRANTED\s+BY\b/ }, + { begin: /\bRETURN\s+(QUERY|NEXT)\b/ }, + { begin: /\b(ATTACH|DETACH)\s+PARTITION\b/ }, + { begin: /\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/ }, + { begin: /\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/ }, + { begin: /\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/ } + ] + }, + // functions named as keywords, followed by '(' + { begin: /\b(FORMAT|FAMILY|VERSION)\s*\(/ + // keywords: { built_in: 'FORMAT FAMILY VERSION' } + }, + // INCLUDE ( ... ) in index_parameters in CREATE TABLE + { + begin: /\bINCLUDE\s*\(/, + keywords: 'INCLUDE' + }, + // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory) + { begin: /\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/ }, + // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE + // and in PL/pgSQL RAISE ... USING + { begin: /\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/ }, + // PG_smth; HAS_some_PRIVILEGE + { + // className: 'built_in', + begin: /\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/, + relevance: 10 + }, + // extract + { + begin: /\bEXTRACT\s*\(/, + end: /\bFROM\b/, + returnEnd: true, + keywords: { + // built_in: 'EXTRACT', + type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' + + 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' + + 'TIMEZONE_MINUTE WEEK YEAR' } + }, + // xmlelement, xmlpi - special NAME + { + begin: /\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/, + keywords: { + // built_in: 'XMLELEMENT XMLPI', + keyword: 'NAME' } + }, + // xmlparse, xmlserialize + { + begin: /\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/, + keywords: { + // built_in: 'XMLPARSE XMLSERIALIZE', + keyword: 'DOCUMENT CONTENT' } + }, + // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and + // nearest following numeric constant. Without with trick we find a lot of "keywords" + // in 'avrasm' autodetection test... + { + beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE', + end: hljs.C_NUMBER_RE, + returnEnd: true, + keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE' + }, + // WITH|WITHOUT TIME ZONE as part of datatype + { + className: 'type', + begin: /\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/ + }, + // INTERVAL optional fields + { + className: 'type', + begin: /\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/ + }, + // Pseudo-types which allowed only as return type + { + begin: /\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/, + keywords: { + keyword: 'RETURNS', + type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER' + } + }, + // Known functions - only when followed by '(' + { begin: '\\b(' + FUNCTIONS_RE + ')\\s*\\(' + // keywords: { built_in: FUNCTIONS } + }, + // Types + { begin: '\\.(' + TYPES_RE + ')\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid' + }, + { + begin: '\\b(' + TYPES_RE + ')\\s+PATH\\b', // in XMLTABLE + keywords: { + keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE... + type: TYPES.replace('PATH ', '') + } + }, + { + className: 'type', + begin: '\\b(' + TYPES_RE + ')\\b' + }, + // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS + { + className: 'string', + begin: '\'', + end: '\'', + contains: [ { begin: '\'\'' } ] + }, + { + className: 'string', + begin: '(e|E|u&|U&)\'', + end: '\'', + contains: [ { begin: '\\\\.' } ], + relevance: 10 + }, + hljs.END_SAME_AS_BEGIN({ + begin: DOLLAR_STRING, + end: DOLLAR_STRING, + contains: [ + { + // actually we want them all except SQL; listed are those with known implementations + // and XML + JSON just in case + subLanguage: [ + 'pgsql', + 'perl', + 'python', + 'tcl', + 'r', + 'lua', + 'java', + 'php', + 'ruby', + 'bash', + 'scheme', + 'xml', + 'json' + ], + endsWithParent: true + } + ] + }), + // identifiers in quotes + { + begin: '"', + end: '"', + contains: [ { begin: '""' } ] + }, + // numbers + hljs.C_NUMBER_MODE, + // comments + hljs.C_BLOCK_COMMENT_MODE, + COMMENT_MODE, + // PL/pgSQL staff + // %ROWTYPE, %TYPE, $n + { + className: 'meta', + variants: [ + { // %TYPE, %ROWTYPE + begin: '%(ROW)?TYPE', + relevance: 10 + }, + { // $n + begin: '\\$\\d+' }, + { // #compiler option + begin: '^#\\w', + end: '$' + } + ] + }, + // <> + { + className: 'symbol', + begin: LABEL, + relevance: 10 + } + ] + }; +} + +module.exports = pgsql; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/php-template.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/php-template.js ***! + \*********************************************************************/ +(module) { + +/* +Language: PHP Template +Requires: xml.js, php.js +Author: Josh Goebel +Website: https://www.php.net +Category: common +*/ + +function phpTemplate(hljs) { + return { + name: "PHP template", + subLanguage: 'xml', + contains: [ + { + begin: /<\?(php|=)?/, + end: /\?>/, + subLanguage: 'php', + contains: [ + // We don't want the php closing tag ?> to close the PHP block when + // inside any of the following blocks: + { + begin: '/\\*', + end: '\\*/', + skip: true + }, + { + begin: 'b"', + end: '"', + skip: true + }, + { + begin: 'b\'', + end: '\'', + skip: true + }, + hljs.inherit(hljs.APOS_STRING_MODE, { + illegal: null, + className: null, + contains: null, + skip: true + }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { + illegal: null, + className: null, + contains: null, + skip: true + }) + ] + } + ] + }; +} + +module.exports = phpTemplate; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/php.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/php.js ***! + \************************************************************/ +(module) { + +/* +Language: PHP +Author: Victor Karamzin +Contributors: Evgeny Stepanischev , Ivan Sagalaev +Website: https://www.php.net +Category: common +*/ + +/** + * @param {HLJSApi} hljs + * @returns {LanguageDetail} + * */ +function php(hljs) { + const regex = hljs.regex; + // negative look-ahead tries to avoid matching patterns that are not + // Perl at all like $ident$, @ident@, etc. + const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/; + const IDENT_RE = regex.concat( + /[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/, + NOT_PERL_ETC); + // Will not detect camelCase classes + const PASCAL_CASE_CLASS_NAME_RE = regex.concat( + /(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/, + NOT_PERL_ETC); + const UPCASE_NAME_RE = regex.concat( + /[A-Z]+/, + NOT_PERL_ETC); + const VARIABLE = { + scope: 'variable', + match: '\\$+' + IDENT_RE, + }; + const PREPROCESSOR = { + scope: "meta", + variants: [ + { begin: /<\?php/, relevance: 10 }, // boost for obvious PHP + { begin: /<\?=/ }, + // less relevant per PSR-1 which says not to use short-tags + { begin: /<\?/, relevance: 0.1 }, + { begin: /\?>/ } // end php tag + ] + }; + const SUBST = { + scope: 'subst', + variants: [ + { begin: /\$\w+/ }, + { + begin: /\{\$/, + end: /\}/ + } + ] + }; + const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, }); + const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, { + illegal: null, + contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST), + }); + + const HEREDOC = { + begin: /<<<[ \t]*(?:(\w+)|"(\w+)")\n/, + end: /[ \t]*(\w+)\b/, + contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST), + 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; }, + 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }, + }; + + const NOWDOC = hljs.END_SAME_AS_BEGIN({ + begin: /<<<[ \t]*'(\w+)'\n/, + end: /[ \t]*(\w+)\b/, + }); + // list of valid whitespaces because non-breaking space might be part of a IDENT_RE + const WHITESPACE = '[ \t\n]'; + const STRING = { + scope: 'string', + variants: [ + DOUBLE_QUOTED, + SINGLE_QUOTED, + HEREDOC, + NOWDOC + ] + }; + const NUMBER = { + scope: 'number', + variants: [ + { begin: `\\b0[bB][01]+(?:_[01]+)*\\b` }, // Binary w/ underscore support + { begin: `\\b0[oO][0-7]+(?:_[0-7]+)*\\b` }, // Octals w/ underscore support + { begin: `\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b` }, // Hex w/ underscore support + // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix. + { begin: `(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?` } + ], + relevance: 0 + }; + const LITERALS = [ + "false", + "null", + "true" + ]; + const KWS = [ + // Magic constants: + // + "__CLASS__", + "__DIR__", + "__FILE__", + "__FUNCTION__", + "__COMPILER_HALT_OFFSET__", + "__LINE__", + "__METHOD__", + "__NAMESPACE__", + "__TRAIT__", + // Function that look like language construct or language construct that look like function: + // List of keywords that may not require parenthesis + "die", + "echo", + "exit", + "include", + "include_once", + "print", + "require", + "require_once", + // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table + // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' + + // Other keywords: + // + // + "array", + "abstract", + "and", + "as", + "binary", + "bool", + "boolean", + "break", + "callable", + "case", + "catch", + "class", + "clone", + "const", + "continue", + "declare", + "default", + "do", + "double", + "else", + "elseif", + "empty", + "enddeclare", + "endfor", + "endforeach", + "endif", + "endswitch", + "endwhile", + "enum", + "eval", + "extends", + "final", + "finally", + "float", + "for", + "foreach", + "from", + "global", + "goto", + "if", + "implements", + "instanceof", + "insteadof", + "int", + "integer", + "interface", + "isset", + "iterable", + "list", + "match|0", + "mixed", + "new", + "never", + "object", + "or", + "private", + "protected", + "public", + "readonly", + "real", + "return", + "string", + "switch", + "throw", + "trait", + "try", + "unset", + "use", + "var", + "void", + "while", + "xor", + "yield" + ]; + + const BUILT_INS = [ + // Standard PHP library: + // + "Error|0", + "AppendIterator", + "ArgumentCountError", + "ArithmeticError", + "ArrayIterator", + "ArrayObject", + "AssertionError", + "BadFunctionCallException", + "BadMethodCallException", + "CachingIterator", + "CallbackFilterIterator", + "CompileError", + "Countable", + "DirectoryIterator", + "DivisionByZeroError", + "DomainException", + "EmptyIterator", + "ErrorException", + "Exception", + "FilesystemIterator", + "FilterIterator", + "GlobIterator", + "InfiniteIterator", + "InvalidArgumentException", + "IteratorIterator", + "LengthException", + "LimitIterator", + "LogicException", + "MultipleIterator", + "NoRewindIterator", + "OutOfBoundsException", + "OutOfRangeException", + "OuterIterator", + "OverflowException", + "ParentIterator", + "ParseError", + "RangeException", + "RecursiveArrayIterator", + "RecursiveCachingIterator", + "RecursiveCallbackFilterIterator", + "RecursiveDirectoryIterator", + "RecursiveFilterIterator", + "RecursiveIterator", + "RecursiveIteratorIterator", + "RecursiveRegexIterator", + "RecursiveTreeIterator", + "RegexIterator", + "RuntimeException", + "SeekableIterator", + "SplDoublyLinkedList", + "SplFileInfo", + "SplFileObject", + "SplFixedArray", + "SplHeap", + "SplMaxHeap", + "SplMinHeap", + "SplObjectStorage", + "SplObserver", + "SplPriorityQueue", + "SplQueue", + "SplStack", + "SplSubject", + "SplTempFileObject", + "TypeError", + "UnderflowException", + "UnexpectedValueException", + "UnhandledMatchError", + // Reserved interfaces: + // + "ArrayAccess", + "BackedEnum", + "Closure", + "Fiber", + "Generator", + "Iterator", + "IteratorAggregate", + "Serializable", + "Stringable", + "Throwable", + "Traversable", + "UnitEnum", + "WeakReference", + "WeakMap", + // Reserved classes: + // + "Directory", + "__PHP_Incomplete_Class", + "parent", + "php_user_filter", + "self", + "static", + "stdClass" + ]; + + /** Dual-case keywords + * + * ["then","FILE"] => + * ["then", "THEN", "FILE", "file"] + * + * @param {string[]} items */ + const dualCase = (items) => { + /** @type string[] */ + const result = []; + items.forEach(item => { + result.push(item); + if (item.toLowerCase() === item) { + result.push(item.toUpperCase()); + } else { + result.push(item.toLowerCase()); + } + }); + return result; + }; + + const KEYWORDS = { + keyword: KWS, + literal: dualCase(LITERALS), + built_in: BUILT_INS, + }; + + /** + * @param {string[]} items */ + const normalizeKeywords = (items) => { + return items.map(item => { + return item.replace(/\|\d+$/, ""); + }); + }; + + const CONSTRUCTOR_CALL = { variants: [ + { + match: [ + /new/, + regex.concat(WHITESPACE, "+"), + // to prevent built ins from being confused as the class constructor call + regex.concat("(?!", normalizeKeywords(BUILT_INS).join("\\b|"), "\\b)"), + PASCAL_CASE_CLASS_NAME_RE, + ], + scope: { + 1: "keyword", + 4: "title.class", + }, + } + ] }; + + const CONSTANT_REFERENCE = regex.concat(IDENT_RE, "\\b(?!\\()"); + + const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [ + { + match: [ + regex.concat( + /::/, + regex.lookahead(/(?!class\b)/) + ), + CONSTANT_REFERENCE, + ], + scope: { 2: "variable.constant", }, + }, + { + match: [ + /::/, + /class/, + ], + scope: { 2: "variable.language", }, + }, + { + match: [ + PASCAL_CASE_CLASS_NAME_RE, + regex.concat( + /::/, + regex.lookahead(/(?!class\b)/) + ), + CONSTANT_REFERENCE, + ], + scope: { + 1: "title.class", + 3: "variable.constant", + }, + }, + { + match: [ + PASCAL_CASE_CLASS_NAME_RE, + regex.concat( + "::", + regex.lookahead(/(?!class\b)/) + ), + ], + scope: { 1: "title.class", }, + }, + { + match: [ + PASCAL_CASE_CLASS_NAME_RE, + /::/, + /class/, + ], + scope: { + 1: "title.class", + 3: "variable.language", + }, + } + ] }; + + const NAMED_ARGUMENT = { + scope: 'attr', + match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)), + }; + const PARAMS_MODE = { + relevance: 0, + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: [ + NAMED_ARGUMENT, + VARIABLE, + LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, + hljs.C_BLOCK_COMMENT_MODE, + STRING, + NUMBER, + CONSTRUCTOR_CALL, + ], + }; + const FUNCTION_INVOKE = { + relevance: 0, + match: [ + /\b/, + // to prevent keywords from being confused as the function title + regex.concat("(?!fn\\b|function\\b|", normalizeKeywords(KWS).join("\\b|"), "|", normalizeKeywords(BUILT_INS).join("\\b|"), "\\b)"), + IDENT_RE, + regex.concat(WHITESPACE, "*"), + regex.lookahead(/(?=\()/) + ], + scope: { 3: "title.function.invoke", }, + contains: [ PARAMS_MODE ] + }; + PARAMS_MODE.contains.push(FUNCTION_INVOKE); + + const ATTRIBUTE_CONTAINS = [ + NAMED_ARGUMENT, + LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, + hljs.C_BLOCK_COMMENT_MODE, + STRING, + NUMBER, + CONSTRUCTOR_CALL, + ]; + + const ATTRIBUTES = { + begin: regex.concat(/#\[\s*\\?/, + regex.either( + PASCAL_CASE_CLASS_NAME_RE, + UPCASE_NAME_RE + ) + ), + beginScope: "meta", + end: /]/, + endScope: "meta", + keywords: { + literal: LITERALS, + keyword: [ + 'new', + 'array', + ] + }, + contains: [ + { + begin: /\[/, + end: /]/, + keywords: { + literal: LITERALS, + keyword: [ + 'new', + 'array', + ] + }, + contains: [ + 'self', + ...ATTRIBUTE_CONTAINS, + ] + }, + ...ATTRIBUTE_CONTAINS, + { + scope: 'meta', + variants: [ + { match: PASCAL_CASE_CLASS_NAME_RE }, + { match: UPCASE_NAME_RE } + ] + } + ] + }; + + return { + case_insensitive: false, + keywords: KEYWORDS, + contains: [ + ATTRIBUTES, + hljs.HASH_COMMENT_MODE, + hljs.COMMENT('//', '$'), + hljs.COMMENT( + '/\\*', + '\\*/', + { contains: [ + { + scope: 'doctag', + match: '@[A-Za-z]+' + } + ] } + ), + { + match: /__halt_compiler\(\);/, + keywords: '__halt_compiler', + starts: { + scope: "comment", + end: hljs.MATCH_NOTHING_RE, + contains: [ + { + match: /\?>/, + scope: "meta", + endsParent: true + } + ] + } + }, + PREPROCESSOR, + { + scope: 'variable.language', + match: /\$this\b/ + }, + VARIABLE, + FUNCTION_INVOKE, + LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, + { + match: [ + /const/, + /\s/, + IDENT_RE, + ], + scope: { + 1: "keyword", + 3: "variable.constant", + }, + }, + CONSTRUCTOR_CALL, + { + scope: 'function', + relevance: 0, + beginKeywords: 'fn function', + end: /[;{]/, + excludeEnd: true, + illegal: '[$%\\[]', + contains: [ + { beginKeywords: 'use', }, + hljs.UNDERSCORE_TITLE_MODE, + { + begin: '=>', // No markup, just a relevance booster + endsParent: true + }, + { + scope: 'params', + begin: '\\(', + end: '\\)', + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + contains: [ + 'self', + ATTRIBUTES, + VARIABLE, + LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, + hljs.C_BLOCK_COMMENT_MODE, + STRING, + NUMBER + ] + }, + ] + }, + { + scope: 'class', + variants: [ + { + beginKeywords: "enum", + illegal: /[($"]/ + }, + { + beginKeywords: "class interface trait", + illegal: /[:($"]/ + } + ], + relevance: 0, + end: /\{/, + excludeEnd: true, + contains: [ + { beginKeywords: 'extends implements' }, + hljs.UNDERSCORE_TITLE_MODE + ] + }, + // both use and namespace still use "old style" rules (vs multi-match) + // because the namespace name can include `\` and we still want each + // element to be treated as its own *individual* title + { + beginKeywords: 'namespace', + relevance: 0, + end: ';', + illegal: /[.']/, + contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: "title.class" }) ] + }, + { + beginKeywords: 'use', + relevance: 0, + end: ';', + contains: [ + // TODO: title.function vs title.class + { + match: /\b(as|const|function)\b/, + scope: "keyword" + }, + // TODO: could be title.class or title.function + hljs.UNDERSCORE_TITLE_MODE + ] + }, + STRING, + NUMBER, + ] + }; +} + +module.exports = php; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/plaintext.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/plaintext.js ***! + \******************************************************************/ +(module) { + +/* +Language: Plain text +Author: Egor Rogov (e.rogov@postgrespro.ru) +Description: Plain text without any highlighting. +Category: common +*/ + +function plaintext(hljs) { + return { + name: 'Plain text', + aliases: [ + 'text', + 'txt' + ], + disableAutodetect: true + }; +} + +module.exports = plaintext; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/pony.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/pony.js ***! + \*************************************************************/ +(module) { + +/* +Language: Pony +Author: Joe Eli McIlvain +Description: Pony is an open-source, object-oriented, actor-model, + capabilities-secure, high performance programming language. +Website: https://www.ponylang.io +Category: system +*/ + +function pony(hljs) { + const KEYWORDS = { + keyword: + 'actor addressof and as be break class compile_error compile_intrinsic ' + + 'consume continue delegate digestof do else elseif embed end error ' + + 'for fun if ifdef in interface is isnt lambda let match new not object ' + + 'or primitive recover repeat return struct then trait try type until ' + + 'use var where while with xor', + meta: + 'iso val tag trn box ref', + literal: + 'this false true' + }; + + const TRIPLE_QUOTE_STRING_MODE = { + className: 'string', + begin: '"""', + end: '"""', + relevance: 10 + }; + + const QUOTE_STRING_MODE = { + className: 'string', + begin: '"', + end: '"', + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + + const SINGLE_QUOTE_CHAR_MODE = { + className: 'string', + begin: '\'', + end: '\'', + contains: [ hljs.BACKSLASH_ESCAPE ], + relevance: 0 + }; + + const TYPE_NAME = { + className: 'type', + begin: '\\b_?[A-Z][\\w]*', + relevance: 0 + }; + + const PRIMED_NAME = { + begin: hljs.IDENT_RE + '\'', + relevance: 0 + }; + + const NUMBER_MODE = { + className: 'number', + begin: '(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)', + relevance: 0 + }; + + /** + * The `FUNCTION` and `CLASS` modes were intentionally removed to simplify + * highlighting and fix cases like + * ``` + * interface Iterator[A: A] + * fun has_next(): Bool + * fun next(): A? + * ``` + * where it is valid to have a function head without a body + */ + + return { + name: 'Pony', + keywords: KEYWORDS, + contains: [ + TYPE_NAME, + TRIPLE_QUOTE_STRING_MODE, + QUOTE_STRING_MODE, + SINGLE_QUOTE_CHAR_MODE, + PRIMED_NAME, + NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; +} + +module.exports = pony; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/powershell.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/powershell.js ***! + \*******************************************************************/ +(module) { + +/* +Language: PowerShell +Description: PowerShell is a task-based command-line shell and scripting language built on .NET. +Author: David Mohundro +Contributors: Nicholas Blumhardt , Victor Zhou , Nicolas Le Gall +Website: https://docs.microsoft.com/en-us/powershell/ +Category: scripting +*/ + +function powershell(hljs) { + const TYPES = [ + "string", + "char", + "byte", + "int", + "long", + "bool", + "decimal", + "single", + "double", + "DateTime", + "xml", + "array", + "hashtable", + "void" + ]; + + // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands + const VALID_VERBS = + 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' + + 'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' + + 'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' + + 'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' + + 'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' + + 'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|' + + 'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|' + + 'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' + + 'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' + + 'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' + + 'Unprotect|Use|ForEach|Sort|Tee|Where'; + + const COMPARISON_OPERATORS = + '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' + + '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' + + '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' + + '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' + + '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' + + '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' + + '-split|-wildcard|-xor'; + + const KEYWORDS = { + $pattern: /-?[A-z\.\-]+\b/, + keyword: + 'if else foreach return do while until elseif begin for trap data dynamicparam ' + + 'end break throw param continue finally in switch exit filter try process catch ' + + 'hidden static parameter', + // "echo" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts + built_in: + 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp ' + + 'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx ' + + 'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group ' + + 'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi ' + + 'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh ' + + 'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp ' + + 'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp ' + + 'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write' + // TODO: 'validate[A-Z]+' can't work in keywords + }; + + const TITLE_NAME_RE = /\w[\w\d]*((-)[\w\d]+)*/; + + const BACKTICK_ESCAPE = { + begin: '`[\\s\\S]', + relevance: 0 + }; + + const VAR = { + className: 'variable', + variants: [ + { begin: /\$\B/ }, + { + className: 'keyword', + begin: /\$this/ + }, + { begin: /\$[\w\d][\w\d_:]*/ } + ] + }; + + const LITERAL = { + className: 'literal', + begin: /\$(null|true|false)\b/ + }; + + const QUOTE_STRING = { + className: "string", + variants: [ + { + begin: /"/, + end: /"/ + }, + { + begin: /@"/, + end: /^"@/ + } + ], + contains: [ + BACKTICK_ESCAPE, + VAR, + { + className: 'variable', + begin: /\$[A-z]/, + end: /[^A-z]/ + } + ] + }; + + const APOS_STRING = { + className: 'string', + variants: [ + { + begin: /'/, + end: /'/ + }, + { + begin: /@'/, + end: /^'@/ + } + ] + }; + + const PS_HELPTAGS = { + className: "doctag", + variants: [ + /* no paramater help tags */ + { begin: /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ }, + /* one parameter help tags */ + { begin: /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ } + ] + }; + + const PS_COMMENT = hljs.inherit( + hljs.COMMENT(null, null), + { + variants: [ + /* single-line comment */ + { + begin: /#/, + end: /$/ + }, + /* multi-line comment */ + { + begin: /<#/, + end: /#>/ + } + ], + contains: [ PS_HELPTAGS ] + } + ); + + const CMDLETS = { + className: 'built_in', + variants: [ { begin: '('.concat(VALID_VERBS, ')+(-)[\\w\\d]+') } ] + }; + + const PS_CLASS = { + className: 'class', + beginKeywords: 'class enum', + end: /\s*[{]/, + excludeEnd: true, + relevance: 0, + contains: [ hljs.TITLE_MODE ] + }; + + const PS_FUNCTION = { + className: 'function', + begin: /function\s+/, + end: /\s*\{|$/, + excludeEnd: true, + returnBegin: true, + relevance: 0, + contains: [ + { + begin: "function", + relevance: 0, + className: "keyword" + }, + { + className: "title", + begin: TITLE_NAME_RE, + relevance: 0 + }, + { + begin: /\(/, + end: /\)/, + className: "params", + relevance: 0, + contains: [ VAR ] + } + // CMDLETS + ] + }; + + // Using statment, plus type, plus assembly name. + const PS_USING = { + begin: /using\s/, + end: /$/, + returnBegin: true, + contains: [ + QUOTE_STRING, + APOS_STRING, + { + className: 'keyword', + begin: /(using|assembly|command|module|namespace|type)/ + } + ] + }; + + // Comperison operators & function named parameters. + const PS_ARGUMENTS = { variants: [ + // PS literals are pretty verbose so it's a good idea to accent them a bit. + { + className: 'operator', + begin: '('.concat(COMPARISON_OPERATORS, ')\\b') + }, + { + className: 'literal', + begin: /(-){1,2}[\w\d-]+/, + relevance: 0 + } + ] }; + + const HASH_SIGNS = { + className: 'selector-tag', + begin: /@\B/, + relevance: 0 + }; + + // It's a very general rule so I'll narrow it a bit with some strict boundaries + // to avoid any possible false-positive collisions! + const PS_METHODS = { + className: 'function', + begin: /\[.*\]\s*[\w]+[ ]??\(/, + end: /$/, + returnBegin: true, + relevance: 0, + contains: [ + { + className: 'keyword', + begin: '('.concat( + KEYWORDS.keyword.toString().replace(/\s/g, '|' + ), ')\\b'), + endsParent: true, + relevance: 0 + }, + hljs.inherit(hljs.TITLE_MODE, { endsParent: true }) + ] + }; + + const GENTLEMANS_SET = [ + // STATIC_MEMBER, + PS_METHODS, + PS_COMMENT, + BACKTICK_ESCAPE, + hljs.NUMBER_MODE, + QUOTE_STRING, + APOS_STRING, + // PS_NEW_OBJECT_TYPE, + CMDLETS, + VAR, + LITERAL, + HASH_SIGNS + ]; + + const PS_TYPE = { + begin: /\[/, + end: /\]/, + excludeBegin: true, + excludeEnd: true, + relevance: 0, + contains: [].concat( + 'self', + GENTLEMANS_SET, + { + begin: "(" + TYPES.join("|") + ")", + className: "built_in", + relevance: 0 + }, + { + className: 'type', + begin: /[\.\w\d]+/, + relevance: 0 + } + ) + }; + + PS_METHODS.contains.unshift(PS_TYPE); + + return { + name: 'PowerShell', + aliases: [ + "pwsh", + "ps", + "ps1" + ], + case_insensitive: true, + keywords: KEYWORDS, + contains: GENTLEMANS_SET.concat( + PS_CLASS, + PS_FUNCTION, + PS_USING, + PS_ARGUMENTS, + PS_TYPE + ) + }; +} + +module.exports = powershell; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/processing.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/processing.js ***! + \*******************************************************************/ +(module) { + +/* +Language: Processing +Description: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. +Author: Erik Paluka +Website: https://processing.org +Category: graphics +*/ + +function processing(hljs) { + const regex = hljs.regex; + const BUILT_INS = [ + "displayHeight", + "displayWidth", + "mouseY", + "mouseX", + "mousePressed", + "pmouseX", + "pmouseY", + "key", + "keyCode", + "pixels", + "focused", + "frameCount", + "frameRate", + "height", + "width", + "size", + "createGraphics", + "beginDraw", + "createShape", + "loadShape", + "PShape", + "arc", + "ellipse", + "line", + "point", + "quad", + "rect", + "triangle", + "bezier", + "bezierDetail", + "bezierPoint", + "bezierTangent", + "curve", + "curveDetail", + "curvePoint", + "curveTangent", + "curveTightness", + "shape", + "shapeMode", + "beginContour", + "beginShape", + "bezierVertex", + "curveVertex", + "endContour", + "endShape", + "quadraticVertex", + "vertex", + "ellipseMode", + "noSmooth", + "rectMode", + "smooth", + "strokeCap", + "strokeJoin", + "strokeWeight", + "mouseClicked", + "mouseDragged", + "mouseMoved", + "mousePressed", + "mouseReleased", + "mouseWheel", + "keyPressed", + "keyPressedkeyReleased", + "keyTyped", + "print", + "println", + "save", + "saveFrame", + "day", + "hour", + "millis", + "minute", + "month", + "second", + "year", + "background", + "clear", + "colorMode", + "fill", + "noFill", + "noStroke", + "stroke", + "alpha", + "blue", + "brightness", + "color", + "green", + "hue", + "lerpColor", + "red", + "saturation", + "modelX", + "modelY", + "modelZ", + "screenX", + "screenY", + "screenZ", + "ambient", + "emissive", + "shininess", + "specular", + "add", + "createImage", + "beginCamera", + "camera", + "endCamera", + "frustum", + "ortho", + "perspective", + "printCamera", + "printProjection", + "cursor", + "frameRate", + "noCursor", + "exit", + "loop", + "noLoop", + "popStyle", + "pushStyle", + "redraw", + "binary", + "boolean", + "byte", + "char", + "float", + "hex", + "int", + "str", + "unbinary", + "unhex", + "join", + "match", + "matchAll", + "nf", + "nfc", + "nfp", + "nfs", + "split", + "splitTokens", + "trim", + "append", + "arrayCopy", + "concat", + "expand", + "reverse", + "shorten", + "sort", + "splice", + "subset", + "box", + "sphere", + "sphereDetail", + "createInput", + "createReader", + "loadBytes", + "loadJSONArray", + "loadJSONObject", + "loadStrings", + "loadTable", + "loadXML", + "open", + "parseXML", + "saveTable", + "selectFolder", + "selectInput", + "beginRaw", + "beginRecord", + "createOutput", + "createWriter", + "endRaw", + "endRecord", + "PrintWritersaveBytes", + "saveJSONArray", + "saveJSONObject", + "saveStream", + "saveStrings", + "saveXML", + "selectOutput", + "popMatrix", + "printMatrix", + "pushMatrix", + "resetMatrix", + "rotate", + "rotateX", + "rotateY", + "rotateZ", + "scale", + "shearX", + "shearY", + "translate", + "ambientLight", + "directionalLight", + "lightFalloff", + "lights", + "lightSpecular", + "noLights", + "normal", + "pointLight", + "spotLight", + "image", + "imageMode", + "loadImage", + "noTint", + "requestImage", + "tint", + "texture", + "textureMode", + "textureWrap", + "blend", + "copy", + "filter", + "get", + "loadPixels", + "set", + "updatePixels", + "blendMode", + "loadShader", + "PShaderresetShader", + "shader", + "createFont", + "loadFont", + "text", + "textFont", + "textAlign", + "textLeading", + "textMode", + "textSize", + "textWidth", + "textAscent", + "textDescent", + "abs", + "ceil", + "constrain", + "dist", + "exp", + "floor", + "lerp", + "log", + "mag", + "map", + "max", + "min", + "norm", + "pow", + "round", + "sq", + "sqrt", + "acos", + "asin", + "atan", + "atan2", + "cos", + "degrees", + "radians", + "sin", + "tan", + "noise", + "noiseDetail", + "noiseSeed", + "random", + "randomGaussian", + "randomSeed" + ]; + const IDENT = hljs.IDENT_RE; + const FUNC_NAME = { variants: [ + { + match: regex.concat(regex.either(...BUILT_INS), regex.lookahead(/\s*\(/)), + className: "built_in" + }, + { + relevance: 0, + match: regex.concat( + /\b(?!for|if|while)/, + IDENT, regex.lookahead(/\s*\(/)), + className: "title.function" + } + ] }; + const NEW_CLASS = { + match: [ + /new\s+/, + IDENT + ], + className: { + 1: "keyword", + 2: "class.title" + } + }; + const PROPERTY = { + relevance: 0, + match: [ + /\./, + IDENT + ], + className: { 2: "property" } + }; + const CLASS = { + variants: [ + { match: [ + /class/, + /\s+/, + IDENT, + /\s+/, + /extends/, + /\s+/, + IDENT + ] }, + { match: [ + /class/, + /\s+/, + IDENT + ] } + ], + className: { + 1: "keyword", + 3: "title.class", + 5: "keyword", + 7: "title.class.inherited" + } + }; + + const TYPES = [ + "boolean", + "byte", + "char", + "color", + "double", + "float", + "int", + "long", + "short", + ]; + const CLASSES = [ + "BufferedReader", + "PVector", + "PFont", + "PImage", + "PGraphics", + "HashMap", + "String", + "Array", + "FloatDict", + "ArrayList", + "FloatList", + "IntDict", + "IntList", + "JSONArray", + "JSONObject", + "Object", + "StringDict", + "StringList", + "Table", + "TableRow", + "XML" + ]; + const JAVA_KEYWORDS = [ + "abstract", + "assert", + "break", + "case", + "catch", + "const", + "continue", + "default", + "else", + "enum", + "final", + "finally", + "for", + "if", + "import", + "instanceof", + "long", + "native", + "new", + "package", + "private", + "private", + "protected", + "protected", + "public", + "public", + "return", + "static", + "strictfp", + "switch", + "synchronized", + "throw", + "throws", + "transient", + "try", + "void", + "volatile", + "while" + ]; + + return { + name: 'Processing', + aliases: [ 'pde' ], + keywords: { + keyword: [ ...JAVA_KEYWORDS ], + literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false', + title: 'setup draw', + variable: "super this", + built_in: [ + ...BUILT_INS, + ...CLASSES + ], + type: TYPES + }, + contains: [ + CLASS, + NEW_CLASS, + FUNC_NAME, + PROPERTY, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = processing; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/profile.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/profile.js ***! + \****************************************************************/ +(module) { + +/* +Language: Python profiler +Description: Python profiler results +Author: Brian Beck +*/ + +function profile(hljs) { + return { + name: 'Python profiler', + contains: [ + hljs.C_NUMBER_MODE, + { + begin: '[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}', + end: ':', + excludeEnd: true + }, + { + begin: '(ncalls|tottime|cumtime)', + end: '$', + keywords: 'ncalls tottime|10 cumtime|10 filename', + relevance: 10 + }, + { + begin: 'function calls', + end: '$', + contains: [ hljs.C_NUMBER_MODE ], + relevance: 10 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\\(', + end: '\\)$', + excludeBegin: true, + excludeEnd: true, + relevance: 0 + } + ] + }; +} + +module.exports = profile; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/prolog.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/prolog.js ***! + \***************************************************************/ +(module) { + +/* +Language: Prolog +Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics. +Author: Raivo Laanemets +Website: https://en.wikipedia.org/wiki/Prolog +Category: functional +*/ + +function prolog(hljs) { + const ATOM = { + + begin: /[a-z][A-Za-z0-9_]*/, + relevance: 0 + }; + + const VAR = { + + className: 'symbol', + variants: [ + { begin: /[A-Z][a-zA-Z0-9_]*/ }, + { begin: /_[A-Za-z0-9_]*/ } + ], + relevance: 0 + }; + + const PARENTED = { + + begin: /\(/, + end: /\)/, + relevance: 0 + }; + + const LIST = { + + begin: /\[/, + end: /\]/ + }; + + const LINE_COMMENT = { + + className: 'comment', + begin: /%/, + end: /$/, + contains: [ hljs.PHRASAL_WORDS_MODE ] + }; + + const BACKTICK_STRING = { + + className: 'string', + begin: /`/, + end: /`/, + contains: [ hljs.BACKSLASH_ESCAPE ] + }; + + const CHAR_CODE = { + className: 'string', // 0'a etc. + begin: /0'(\\'|.)/ + }; + + const SPACE_CODE = { + className: 'string', + begin: /0'\\s/ // 0'\s + }; + + const PRED_OP = { // relevance booster + begin: /:-/ }; + + const inner = [ + + ATOM, + VAR, + PARENTED, + PRED_OP, + LIST, + LINE_COMMENT, + hljs.C_BLOCK_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + BACKTICK_STRING, + CHAR_CODE, + SPACE_CODE, + hljs.C_NUMBER_MODE + ]; + + PARENTED.contains = inner; + LIST.contains = inner; + + return { + name: 'Prolog', + contains: inner.concat([ + { // relevance booster + begin: /\.$/ } + ]) + }; +} + +module.exports = prolog; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/properties.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/properties.js ***! + \*******************************************************************/ +(module) { + +/* +Language: .properties +Contributors: Valentin Aitken , Egor Rogov +Website: https://en.wikipedia.org/wiki/.properties +Category: config +*/ + +/** @type LanguageFn */ +function properties(hljs) { + // whitespaces: space, tab, formfeed + const WS0 = '[ \\t\\f]*'; + const WS1 = '[ \\t\\f]+'; + // delimiter + const EQUAL_DELIM = WS0 + '[:=]' + WS0; + const WS_DELIM = WS1; + const DELIM = '(' + EQUAL_DELIM + '|' + WS_DELIM + ')'; + const KEY = '([^\\\\:= \\t\\f\\n]|\\\\.)+'; + + const DELIM_AND_VALUE = { + // skip DELIM + end: DELIM, + relevance: 0, + starts: { + // value: everything until end of line (again, taking into account backslashes) + className: 'string', + end: /$/, + relevance: 0, + contains: [ + { begin: '\\\\\\\\' }, + { begin: '\\\\\\n' } + ] + } + }; + + return { + name: '.properties', + disableAutodetect: true, + case_insensitive: true, + illegal: /\S/, + contains: [ + hljs.COMMENT('^\\s*[!#]', '$'), + // key: everything until whitespace or = or : (taking into account backslashes) + // case of a key-value pair + { + returnBegin: true, + variants: [ + { begin: KEY + EQUAL_DELIM }, + { begin: KEY + WS_DELIM } + ], + contains: [ + { + className: 'attr', + begin: KEY, + endsParent: true + } + ], + starts: DELIM_AND_VALUE + }, + // case of an empty key + { + className: 'attr', + begin: KEY + WS0 + '$' + } + ] + }; +} + +module.exports = properties; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/protobuf.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/protobuf.js ***! + \*****************************************************************/ +(module) { + +/* +Language: Protocol Buffers +Author: Dan Tao +Description: Protocol buffer message definition format +Website: https://developers.google.com/protocol-buffers/docs/proto3 +Category: protocols +*/ + +function protobuf(hljs) { + const KEYWORDS = [ + "package", + "import", + "option", + "optional", + "required", + "repeated", + "group", + "oneof" + ]; + const TYPES = [ + "double", + "float", + "int32", + "int64", + "uint32", + "uint64", + "sint32", + "sint64", + "fixed32", + "fixed64", + "sfixed32", + "sfixed64", + "bool", + "string", + "bytes" + ]; + const CLASS_DEFINITION = { + match: [ + /(message|enum|service)\s+/, + hljs.IDENT_RE + ], + scope: { + 1: "keyword", + 2: "title.class" + } + }; + + return { + name: 'Protocol Buffers', + aliases: ['proto'], + keywords: { + keyword: KEYWORDS, + type: TYPES, + literal: [ + 'true', + 'false' + ] + }, + contains: [ + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + CLASS_DEFINITION, + { + className: 'function', + beginKeywords: 'rpc', + end: /[{;]/, + excludeEnd: true, + keywords: 'rpc returns' + }, + { // match enum items (relevance) + // BLAH = ...; + begin: /^\s*[A-Z_]+(?=\s*=[^\n]+;$)/ } + ] + }; +} + +module.exports = protobuf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/puppet.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/puppet.js ***! + \***************************************************************/ +(module) { + +/* +Language: Puppet +Author: Jose Molina Colmenero +Website: https://puppet.com/docs +Category: config +*/ + +function puppet(hljs) { + const PUPPET_KEYWORDS = { + keyword: + /* language keywords */ + 'and case default else elsif false if in import enherits node or true undef unless main settings $string ', + literal: + /* metaparameters */ + 'alias audit before loglevel noop require subscribe tag ' + /* normal attributes */ + + 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' + + 'en_address ip_address realname command environment hour monute month monthday special target weekday ' + + 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' + + 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' + + 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ' + + 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' + + 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' + + 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' + + 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' + + 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' + + 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' + + 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' + + 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' + + 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' + + 'sslverify mounted', + built_in: + /* core facts */ + 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' + + 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ' + + 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' + + 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' + + 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' + + 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease ' + + 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion ' + + 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced ' + + 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime ' + + 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version' + }; + + const COMMENT = hljs.COMMENT('#', '$'); + + const IDENT_RE = '([A-Za-z_]|::)(\\w|::)*'; + + const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE }); + + const VARIABLE = { + className: 'variable', + begin: '\\$' + IDENT_RE + }; + + const STRING = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + VARIABLE + ], + variants: [ + { + begin: /'/, + end: /'/ + }, + { + begin: /"/, + end: /"/ + } + ] + }; + + return { + name: 'Puppet', + aliases: [ 'pp' ], + contains: [ + COMMENT, + VARIABLE, + STRING, + { + beginKeywords: 'class', + end: '\\{|;', + illegal: /=/, + contains: [ + TITLE, + COMMENT + ] + }, + { + beginKeywords: 'define', + end: /\{/, + contains: [ + { + className: 'section', + begin: hljs.IDENT_RE, + endsParent: true + } + ] + }, + { + begin: hljs.IDENT_RE + '\\s+\\{', + returnBegin: true, + end: /\S/, + contains: [ + { + className: 'keyword', + begin: hljs.IDENT_RE, + relevance: 0.2 + }, + { + begin: /\{/, + end: /\}/, + keywords: PUPPET_KEYWORDS, + relevance: 0, + contains: [ + STRING, + COMMENT, + { + begin: '[a-zA-Z_]+\\s*=>', + returnBegin: true, + end: '=>', + contains: [ + { + className: 'attr', + begin: hljs.IDENT_RE + } + ] + }, + { + className: 'number', + begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b', + relevance: 0 + }, + VARIABLE + ] + } + ], + relevance: 0 + } + ] + }; +} + +module.exports = puppet; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/purebasic.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/purebasic.js ***! + \******************************************************************/ +(module) { + +/* +Language: PureBASIC +Author: Tristano Ajmone +Description: Syntax highlighting for PureBASIC (v.5.00-5.60). No inline ASM highlighting. (v.1.2, May 2017) +Credits: I've taken inspiration from the PureBasic language file for GeSHi, created by Gustavo Julio Fiorenza (GuShH). +Website: https://www.purebasic.com +Category: system +*/ + +// Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000; + +function purebasic(hljs) { + const STRINGS = { // PB IDE color: #0080FF (Azure Radiance) + className: 'string', + begin: '(~)?"', + end: '"', + illegal: '\\n' + }; + const CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink) + // "#" + a letter or underscore + letters, digits or underscores + (optional) "$" + className: 'symbol', + begin: '#[a-zA-Z_]\\w*\\$?' + }; + + return { + name: 'PureBASIC', + aliases: [ + 'pb', + 'pbi' + ], + keywords: // PB IDE color: #006666 (Blue Stone) + Bold + // Keywords from all version of PureBASIC 5.00 upward ... + 'Align And Array As Break CallDebugger Case CompilerCase CompilerDefault ' + + 'CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError ' + + 'CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug ' + + 'DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default ' + + 'Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' + + 'EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration ' + + 'EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect ' + + 'EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends ' + + 'FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC ' + + 'IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount ' + + 'Map Module NewList NewMap Next Not Or Procedure ProcedureC ' + + 'ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim ' + + 'Read Repeat Restore Return Runtime Select Shared Static Step Structure ' + + 'StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule ' + + 'UseModule Wend While With XIncludeFile XOr', + contains: [ + // COMMENTS | PB IDE color: #00AAAA (Persian Green) + hljs.COMMENT(';', '$', { relevance: 0 }), + + { // PROCEDURES DEFINITIONS + className: 'function', + begin: '\\b(Procedure|Declare)(C|CDLL|DLL)?\\b', + end: '\\(', + excludeEnd: true, + returnBegin: true, + contains: [ + { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold + className: 'keyword', + begin: '(Procedure|Declare)(C|CDLL|DLL)?', + excludeEnd: true + }, + { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black) + className: 'type', + begin: '\\.\\w*' + // end: ' ', + }, + hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone) + ] + }, + STRINGS, + CONSTANTS + ] + }; +} + +/* ============================================================================== + CHANGELOG + ============================================================================== + - v.1.2 (2017-05-12) + -- BUG-FIX: Some keywords were accidentally joyned together. Now fixed. + - v.1.1 (2017-04-30) + -- Updated to PureBASIC 5.60. + -- Keywords list now built by extracting them from the PureBASIC SDK's + "SyntaxHilighting.dll" (from each PureBASIC version). Tokens from each + version are added to the list, and renamed or removed tokens are kept + for the sake of covering all versions of the language from PureBASIC + v5.00 upward. (NOTE: currently, there are no renamed or deprecated + tokens in the keywords list). For more info, see: + -- http://www.purebasic.fr/english/viewtopic.php?&p=506269 + -- https://github.com/tajmone/purebasic-archives/tree/master/syntax-highlighting/guidelines + - v.1.0 (April 2016) + -- First release + -- Keywords list taken and adapted from GuShH's (Gustavo Julio Fiorenza) + PureBasic language file for GeSHi: + -- https://github.com/easybook/geshi/blob/master/geshi/purebasic.php +*/ + +module.exports = purebasic; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/python-repl.js" +/*!********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/python-repl.js ***! + \********************************************************************/ +(module) { + +/* +Language: Python REPL +Requires: python.js +Author: Josh Goebel +Category: common +*/ + +function pythonRepl(hljs) { + return { + aliases: [ 'pycon' ], + contains: [ + { + className: 'meta.prompt', + starts: { + // a space separates the REPL prefix from the actual code + // this is purely for cleaner HTML output + end: / |$/, + starts: { + end: '$', + subLanguage: 'python' + } + }, + variants: [ + { begin: /^>>>(?=[ ]|$)/ }, + { begin: /^\.\.\.(?=[ ]|$)/ } + ] + } + ] + }; +} + +module.exports = pythonRepl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/python.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/python.js ***! + \***************************************************************/ +(module) { + +/* +Language: Python +Description: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. +Website: https://www.python.org +Category: common +*/ + +function python(hljs) { + const regex = hljs.regex; + const IDENT_RE = /[\p{XID_Start}_]\p{XID_Continue}*/u; + const RESERVED_WORDS = [ + 'and', + 'as', + 'assert', + 'async', + 'await', + 'break', + 'case', + 'class', + 'continue', + 'def', + 'del', + 'elif', + 'else', + 'except', + 'finally', + 'for', + 'from', + 'global', + 'if', + 'import', + 'in', + 'is', + 'lambda', + 'match', + 'nonlocal|10', + 'not', + 'or', + 'pass', + 'raise', + 'return', + 'try', + 'while', + 'with', + 'yield' + ]; + + const BUILT_INS = [ + '__import__', + 'abs', + 'all', + 'any', + 'ascii', + 'bin', + 'bool', + 'breakpoint', + 'bytearray', + 'bytes', + 'callable', + 'chr', + 'classmethod', + 'compile', + 'complex', + 'delattr', + 'dict', + 'dir', + 'divmod', + 'enumerate', + 'eval', + 'exec', + 'filter', + 'float', + 'format', + 'frozenset', + 'getattr', + 'globals', + 'hasattr', + 'hash', + 'help', + 'hex', + 'id', + 'input', + 'int', + 'isinstance', + 'issubclass', + 'iter', + 'len', + 'list', + 'locals', + 'map', + 'max', + 'memoryview', + 'min', + 'next', + 'object', + 'oct', + 'open', + 'ord', + 'pow', + 'print', + 'property', + 'range', + 'repr', + 'reversed', + 'round', + 'set', + 'setattr', + 'slice', + 'sorted', + 'staticmethod', + 'str', + 'sum', + 'super', + 'tuple', + 'type', + 'vars', + 'zip' + ]; + + const LITERALS = [ + '__debug__', + 'Ellipsis', + 'False', + 'None', + 'NotImplemented', + 'True' + ]; + + // https://docs.python.org/3/library/typing.html + // TODO: Could these be supplemented by a CamelCase matcher in certain + // contexts, leaving these remaining only for relevance hinting? + const TYPES = [ + "Any", + "Callable", + "Coroutine", + "Dict", + "List", + "Literal", + "Generic", + "Optional", + "Sequence", + "Set", + "Tuple", + "Type", + "Union" + ]; + + const KEYWORDS = { + $pattern: /[A-Za-z]\w+|__\w+__/, + keyword: RESERVED_WORDS, + built_in: BUILT_INS, + literal: LITERALS, + type: TYPES + }; + + const PROMPT = { + className: 'meta', + begin: /^(>>>|\.\.\.) / + }; + + const SUBST = { + className: 'subst', + begin: /\{/, + end: /\}/, + keywords: KEYWORDS, + illegal: /#/ + }; + + const LITERAL_BRACKET = { + begin: /\{\{/, + relevance: 0 + }; + + const STRING = { + className: 'string', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + { + begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/, + end: /'''/, + contains: [ + hljs.BACKSLASH_ESCAPE, + PROMPT + ], + relevance: 10 + }, + { + begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/, + end: /"""/, + contains: [ + hljs.BACKSLASH_ESCAPE, + PROMPT + ], + relevance: 10 + }, + { + begin: /([fF][rR]|[rR][fF]|[fF])'''/, + end: /'''/, + contains: [ + hljs.BACKSLASH_ESCAPE, + PROMPT, + LITERAL_BRACKET, + SUBST + ] + }, + { + begin: /([fF][rR]|[rR][fF]|[fF])"""/, + end: /"""/, + contains: [ + hljs.BACKSLASH_ESCAPE, + PROMPT, + LITERAL_BRACKET, + SUBST + ] + }, + { + begin: /([uU]|[rR])'/, + end: /'/, + relevance: 10 + }, + { + begin: /([uU]|[rR])"/, + end: /"/, + relevance: 10 + }, + { + begin: /([bB]|[bB][rR]|[rR][bB])'/, + end: /'/ + }, + { + begin: /([bB]|[bB][rR]|[rR][bB])"/, + end: /"/ + }, + { + begin: /([fF][rR]|[rR][fF]|[fF])'/, + end: /'/, + contains: [ + hljs.BACKSLASH_ESCAPE, + LITERAL_BRACKET, + SUBST + ] + }, + { + begin: /([fF][rR]|[rR][fF]|[fF])"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + LITERAL_BRACKET, + SUBST + ] + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }; + + // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals + const digitpart = '[0-9](_?[0-9])*'; + const pointfloat = `(\\b(${digitpart}))?\\.(${digitpart})|\\b(${digitpart})\\.`; + // Whitespace after a number (or any lexical token) is needed only if its absence + // would change the tokenization + // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens + // We deviate slightly, requiring a word boundary or a keyword + // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`) + const lookahead = `\\b|${RESERVED_WORDS.join('|')}`; + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + // exponentfloat, pointfloat + // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals + // optionally imaginary + // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals + // Note: no leading \b because floats can start with a decimal point + // and we don't want to mishandle e.g. `fn(.5)`, + // no trailing \b for pointfloat because it can end with a decimal point + // and we don't want to mishandle e.g. `0..hex()`; this should be safe + // because both MUST contain a decimal point and so cannot be confused with + // the interior part of an identifier + { + begin: `(\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})` + }, + { + begin: `(${pointfloat})[jJ]?` + }, + + // decinteger, bininteger, octinteger, hexinteger + // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals + // optionally "long" in Python 2 + // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals + // decinteger is optionally imaginary + // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals + { + begin: `\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})` + }, + { + begin: `\\b0[bB](_?[01])+[lL]?(?=${lookahead})` + }, + { + begin: `\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})` + }, + { + begin: `\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})` + }, + + // imagnumber (digitpart-based) + // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals + { + begin: `\\b(${digitpart})[jJ](?=${lookahead})` + } + ] + }; + const COMMENT_TYPE = { + className: "comment", + begin: regex.lookahead(/# type:/), + end: /$/, + keywords: KEYWORDS, + contains: [ + { // prevent keywords from coloring `type` + begin: /# type:/ + }, + // comment within a datatype comment includes no keywords + { + begin: /#/, + end: /\b\B/, + endsWithParent: true + } + ] + }; + const PARAMS = { + className: 'params', + variants: [ + // Exclude params in functions without params + { + className: "", + begin: /\(\s*\)/, + skip: true + }, + { + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS, + contains: [ + 'self', + PROMPT, + NUMBER, + STRING, + hljs.HASH_COMMENT_MODE + ] + } + ] + }; + SUBST.contains = [ + STRING, + NUMBER, + PROMPT + ]; + + return { + name: 'Python', + aliases: [ + 'py', + 'gyp', + 'ipython' + ], + unicodeRegex: true, + keywords: KEYWORDS, + illegal: /(<\/|\?)|=>/, + contains: [ + PROMPT, + NUMBER, + { + // very common convention + scope: 'variable.language', + match: /\bself\b/ + }, + { + // eat "if" prior to string so that it won't accidentally be + // labeled as an f-string + beginKeywords: "if", + relevance: 0 + }, + { match: /\bor\b/, scope: "keyword" }, + STRING, + COMMENT_TYPE, + hljs.HASH_COMMENT_MODE, + { + match: [ + /\bdef/, /\s+/, + IDENT_RE, + ], + scope: { + 1: "keyword", + 3: "title.function" + }, + contains: [ PARAMS ] + }, + { + variants: [ + { + match: [ + /\bclass/, /\s+/, + IDENT_RE, /\s*/, + /\(\s*/, IDENT_RE,/\s*\)/ + ], + }, + { + match: [ + /\bclass/, /\s+/, + IDENT_RE + ], + } + ], + scope: { + 1: "keyword", + 3: "title.class", + 6: "title.class.inherited", + } + }, + { + className: 'meta', + begin: /^[\t ]*@/, + end: /(?=#)|$/, + contains: [ + NUMBER, + PARAMS, + STRING + ] + } + ] + }; +} + +module.exports = python; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/q.js" +/*!**********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/q.js ***! + \**********************************************************/ +(module) { + +/* +Language: Q +Description: Q is a vector-based functional paradigm programming language built into the kdb+ database. + (K/Q/Kdb+ from Kx Systems) +Author: Sergey Vidyuk +Website: https://kx.com/connect-with-us/developers/ +Category: enterprise, functional, database +*/ + +function q(hljs) { + const KEYWORDS = { + $pattern: /(`?)[A-Za-z0-9_]+\b/, + keyword: + 'do while select delete by update from', + literal: + '0b 1b', + built_in: + 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum', + type: + '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid' + }; + + return { + name: 'Q', + aliases: [ + 'k', + 'kdb' + ], + keywords: KEYWORDS, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = q; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/qml.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/qml.js ***! + \************************************************************/ +(module) { + +/* +Language: QML +Requires: javascript.js, xml.js +Author: John Foster +Description: Syntax highlighting for the Qt Quick QML scripting language, based mostly off + the JavaScript parser. +Website: https://doc.qt.io/qt-5/qmlapplications.html +Category: scripting +*/ + +function qml(hljs) { + const regex = hljs.regex; + const KEYWORDS = { + keyword: + 'in of on if for while finally var new function do return void else break catch ' + + 'instanceof with throw case default try this switch continue typeof delete ' + + 'let yield const export super debugger as async await import', + literal: + 'true false null undefined NaN Infinity', + built_in: + 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' + + 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' + + 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' + + 'TypeError URIError Number Math Date String RegExp Array Float32Array ' + + 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' + + 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' + + 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' + + 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' + + 'geoshape int list matrix4x4 parent point quaternion real rect ' + + 'size string url variant vector2d vector3d vector4d ' + + 'Promise' + }; + + const QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\._]*'; + + // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line. + // Use property class. + const PROPERTY = { + className: 'keyword', + begin: '\\bproperty\\b', + starts: { + className: 'string', + end: '(:|=|;|,|//|/\\*|$)', + returnEnd: true + } + }; + + // Isolate signal statements. Ends at a ) a comment or end of line. + // Use property class. + const SIGNAL = { + className: 'keyword', + begin: '\\bsignal\\b', + starts: { + className: 'string', + end: '(\\(|:|=|;|,|//|/\\*|$)', + returnEnd: true + } + }; + + // id: is special in QML. When we see id: we want to mark the id: as attribute and + // emphasize the token following. + const ID_ID = { + className: 'attribute', + begin: '\\bid\\s*:', + starts: { + className: 'string', + end: QML_IDENT_RE, + returnEnd: false + } + }; + + // Find QML object attribute. An attribute is a QML identifier followed by :. + // Unfortunately it's hard to know where it ends, as it may contain scalars, + // objects, object definitions, or javascript. The true end is either when the parent + // ends or the next attribute is detected. + const QML_ATTRIBUTE = { + begin: QML_IDENT_RE + '\\s*:', + returnBegin: true, + contains: [ + { + className: 'attribute', + begin: QML_IDENT_RE, + end: '\\s*:', + excludeEnd: true, + relevance: 0 + } + ], + relevance: 0 + }; + + // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }. + // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {. + const QML_OBJECT = { + begin: regex.concat(QML_IDENT_RE, /\s*\{/), + end: /\{/, + returnBegin: true, + relevance: 0, + contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: QML_IDENT_RE }) ] + }; + + return { + name: 'QML', + aliases: [ 'qt' ], + case_insensitive: false, + keywords: KEYWORDS, + contains: [ + { + className: 'meta', + begin: /^\s*['"]use (strict|asm)['"]/ + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + { // template string + className: 'string', + begin: '`', + end: '`', + contains: [ + hljs.BACKSLASH_ESCAPE, + { + className: 'subst', + begin: '\\$\\{', + end: '\\}' + } + ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'number', + variants: [ + { begin: '\\b(0[bB][01]+)' }, + { begin: '\\b(0[oO][0-7]+)' }, + { begin: hljs.C_NUMBER_RE } + ], + relevance: 0 + }, + { // "value" container + begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', + keywords: 'return throw case', + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.REGEXP_MODE, + { // E4X / JSX + begin: /\s*[);\]]/, + relevance: 0, + subLanguage: 'xml' + } + ], + relevance: 0 + }, + SIGNAL, + PROPERTY, + { + className: 'function', + beginKeywords: 'function', + end: /\{/, + excludeEnd: true, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { begin: /[A-Za-z$_][0-9A-Za-z$_]*/ }), + { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + } + ], + illegal: /\[|%/ + }, + { + // hack: prevents detection of keywords after dots + begin: '\\.' + hljs.IDENT_RE, + relevance: 0 + }, + ID_ID, + QML_ATTRIBUTE, + QML_OBJECT + ], + illegal: /#/ + }; +} + +module.exports = qml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/r.js" +/*!**********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/r.js ***! + \**********************************************************/ +(module) { + +/* +Language: R +Description: R is a free software environment for statistical computing and graphics. +Author: Joe Cheng +Contributors: Konrad Rudolph +Website: https://www.r-project.org +Category: common,scientific +*/ + +/** @type LanguageFn */ +function r(hljs) { + const regex = hljs.regex; + // Identifiers in R cannot start with `_`, but they can start with `.` if it + // is not immediately followed by a digit. + // R also supports quoted identifiers, which are near-arbitrary sequences + // delimited by backticks (`…`), which may contain escape sequences. These are + // handled in a separate mode. See `test/markup/r/names.txt` for examples. + // FIXME: Support Unicode identifiers. + const IDENT_RE = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/; + const NUMBER_TYPES_RE = regex.either( + // Special case: only hexadecimal binary powers can contain fractions + /0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/, + // Hexadecimal numbers without fraction and optional binary power + /0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/, + // Decimal numbers + /(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/ + ); + const OPERATORS_RE = /[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/; + const PUNCTUATION_RE = regex.either( + /[()]/, + /[{}]/, + /\[\[/, + /[[\]]/, + /\\/, + /,/ + ); + + return { + name: 'R', + + keywords: { + $pattern: IDENT_RE, + keyword: + 'function if in break next repeat else for while', + literal: + 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 ' + + 'NA_character_|10 NA_complex_|10', + built_in: + // Builtin constants + 'LETTERS letters month.abb month.name pi T F ' + // Primitive functions + // These are all the functions in `base` that are implemented as a + // `.Primitive`, minus those functions that are also keywords. + + 'abs acos acosh all any anyNA Arg as.call as.character ' + + 'as.complex as.double as.environment as.integer as.logical ' + + 'as.null.default as.numeric as.raw asin asinh atan atanh attr ' + + 'attributes baseenv browser c call ceiling class Conj cos cosh ' + + 'cospi cummax cummin cumprod cumsum digamma dim dimnames ' + + 'emptyenv exp expression floor forceAndCall gamma gc.time ' + + 'globalenv Im interactive invisible is.array is.atomic is.call ' + + 'is.character is.complex is.double is.environment is.expression ' + + 'is.finite is.function is.infinite is.integer is.language ' + + 'is.list is.logical is.matrix is.na is.name is.nan is.null ' + + 'is.numeric is.object is.pairlist is.raw is.recursive is.single ' + + 'is.symbol lazyLoadDBfetch length lgamma list log max min ' + + 'missing Mod names nargs nzchar oldClass on.exit pos.to.env ' + + 'proc.time prod quote range Re rep retracemem return round ' + + 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt ' + + 'standardGeneric substitute sum switch tan tanh tanpi tracemem ' + + 'trigamma trunc unclass untracemem UseMethod xtfrm', + }, + + contains: [ + // Roxygen comments + hljs.COMMENT( + /#'/, + /$/, + { contains: [ + { + // Handle `@examples` separately to cause all subsequent code + // until the next `@`-tag on its own line to be kept as-is, + // preventing highlighting. This code is example R code, so nested + // doctags shouldn’t be treated as such. See + // `test/markup/r/roxygen.txt` for an example. + scope: 'doctag', + match: /@examples/, + starts: { + end: regex.lookahead(regex.either( + // end if another doc comment + /\n^#'\s*(?=@[a-zA-Z]+)/, + // or a line with no comment + /\n^(?!#')/ + )), + endsParent: true + } + }, + { + // Handle `@param` to highlight the parameter name following + // after. + scope: 'doctag', + begin: '@param', + end: /$/, + contains: [ + { + scope: 'variable', + variants: [ + { match: IDENT_RE }, + { match: /`(?:\\.|[^`\\])+`/ } + ], + endsParent: true + } + ] + }, + { + scope: 'doctag', + match: /@[a-zA-Z]+/ + }, + { + scope: 'keyword', + match: /\\[a-zA-Z]+/ + } + ] } + ), + + hljs.HASH_COMMENT_MODE, + + { + scope: 'string', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]"(-*)\(/, + end: /\)(-*)"/ + }), + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]"(-*)\{/, + end: /\}(-*)"/ + }), + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]"(-*)\[/, + end: /\](-*)"/ + }), + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]'(-*)\(/, + end: /\)(-*)'/ + }), + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]'(-*)\{/, + end: /\}(-*)'/ + }), + hljs.END_SAME_AS_BEGIN({ + begin: /[rR]'(-*)\[/, + end: /\](-*)'/ + }), + { + begin: '"', + end: '"', + relevance: 0 + }, + { + begin: "'", + end: "'", + relevance: 0 + } + ], + }, + + // Matching numbers immediately following punctuation and operators is + // tricky since we need to look at the character ahead of a number to + // ensure the number is not part of an identifier, and we cannot use + // negative look-behind assertions. So instead we explicitly handle all + // possible combinations of (operator|punctuation), number. + // TODO: replace with negative look-behind when available + // { begin: /(? +Category: functional +*/ +function reasonml(hljs) { + const BUILT_IN_TYPES = [ + "array", + "bool", + "bytes", + "char", + "exn|5", + "float", + "int", + "int32", + "int64", + "list", + "lazy_t|5", + "nativeint|5", + "ref", + "string", + "unit", + ]; + return { + name: 'ReasonML', + aliases: [ 're' ], + keywords: { + $pattern: /[a-z_]\w*!?/, + keyword: [ + "and", + "as", + "asr", + "assert", + "begin", + "class", + "constraint", + "do", + "done", + "downto", + "else", + "end", + "esfun", + "exception", + "external", + "for", + "fun", + "function", + "functor", + "if", + "in", + "include", + "inherit", + "initializer", + "land", + "lazy", + "let", + "lor", + "lsl", + "lsr", + "lxor", + "mod", + "module", + "mutable", + "new", + "nonrec", + "object", + "of", + "open", + "or", + "pri", + "pub", + "rec", + "sig", + "struct", + "switch", + "then", + "to", + "try", + "type", + "val", + "virtual", + "when", + "while", + "with", + ], + built_in: BUILT_IN_TYPES, + literal: ["true", "false"], + }, + illegal: /(:-|:=|\$\{|\+=)/, + contains: [ + { + scope: 'literal', + match: /\[(\|\|)?\]|\(\)/, + relevance: 0 + }, + hljs.C_LINE_COMMENT_MODE, + hljs.COMMENT(/\/\*/, /\*\//, { illegal: /^(#,\/\/)/ }), + { /* type variable */ + scope: 'symbol', + match: /\'[A-Za-z_](?!\')[\w\']*/ + /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ + }, + { /* polymorphic variant */ + scope: 'type', + match: /`[A-Z][\w\']*/ + }, + { /* module or constructor */ + scope: 'type', + match: /\b[A-Z][\w\']*/, + relevance: 0 + }, + { /* don't color identifiers, but safely catch all identifiers with ' */ + match: /[a-z_]\w*\'[\w\']*/, + relevance: 0 + }, + { + scope: 'operator', + match: /\s+(\|\||\+[\+\.]?|\*[\*\/\.]?|\/[\.]?|\.\.\.|\|>|&&|===?)\s+/, + relevance: 0 + }, + hljs.inherit(hljs.APOS_STRING_MODE, { + scope: 'string', + relevance: 0 + }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), + { + scope: 'number', + variants: [ + { match: /\b0[xX][a-fA-F0-9_]+[Lln]?/ }, + { match: /\b0[oO][0-7_]+[Lln]?/ }, + { match: /\b0[bB][01_]+[Lln]?/ }, + { match: /\b[0-9][0-9_]*([Lln]|(\.[0-9_]*)?([eE][-+]?[0-9_]+)?)/ }, + ], + relevance: 0 + }, + ] + }; +} + +module.exports = reasonml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/rib.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/rib.js ***! + \************************************************************/ +(module) { + +/* +Language: RenderMan RIB +Author: Konstantin Evdokimenko +Contributors: Shuen-Huei Guan +Website: https://renderman.pixar.com/resources/RenderMan_20/ribBinding.html +Category: graphics +*/ + +function rib(hljs) { + return { + name: 'RenderMan RIB', + keywords: + 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' + + 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' + + 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' + + 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' + + 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' + + 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' + + 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' + + 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' + + 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' + + 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' + + 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' + + 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' + + 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' + + 'TransformPoints Translate TrimCurve WorldBegin WorldEnd', + illegal: ' +Description: Syntax highlighting for Roboconf's DSL +Website: http://roboconf.net +Category: config +*/ + +function roboconf(hljs) { + const IDENTIFIER = '[a-zA-Z-_][^\\n{]+\\{'; + + const PROPERTY = { + className: 'attribute', + begin: /[a-zA-Z-_]+/, + end: /\s*:/, + excludeEnd: true, + starts: { + end: ';', + relevance: 0, + contains: [ + { + className: 'variable', + begin: /\.[a-zA-Z-_]+/ + }, + { + className: 'keyword', + begin: /\(optional\)/ + } + ] + } + }; + + return { + name: 'Roboconf', + aliases: [ + 'graph', + 'instances' + ], + case_insensitive: true, + keywords: 'import', + contains: [ + // Facet sections + { + begin: '^facet ' + IDENTIFIER, + end: /\}/, + keywords: 'facet', + contains: [ + PROPERTY, + hljs.HASH_COMMENT_MODE + ] + }, + + // Instance sections + { + begin: '^\\s*instance of ' + IDENTIFIER, + end: /\}/, + keywords: 'name count channels instance-data instance-state instance of', + illegal: /\S/, + contains: [ + 'self', + PROPERTY, + hljs.HASH_COMMENT_MODE + ] + }, + + // Component sections + { + begin: '^' + IDENTIFIER, + end: /\}/, + contains: [ + PROPERTY, + hljs.HASH_COMMENT_MODE + ] + }, + + // Comments + hljs.HASH_COMMENT_MODE + ] + }; +} + +module.exports = roboconf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/routeros.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/routeros.js ***! + \*****************************************************************/ +(module) { + +/* +Language: MikroTik RouterOS script +Author: Ivan Dementev +Description: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence +Website: https://wiki.mikrotik.com/wiki/Manual:Scripting +Category: scripting +*/ + +// Colors from RouterOS terminal: +// green - #0E9A00 +// teal - #0C9A9A +// purple - #99069A +// light-brown - #9A9900 + +function routeros(hljs) { + const STATEMENTS = 'foreach do while for if from to step else on-error and or not in'; + + // Global commands: Every global command should start with ":" token, otherwise it will be treated as variable. + const GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime'; + + // Common commands: Following commands available from most sub-menus: + const COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning'; + + const LITERALS = 'true false yes no nothing nil null'; + + const OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw'; + + const VAR = { + className: 'variable', + variants: [ + { begin: /\$[\w\d#@][\w\d_]*/ }, + { begin: /\$\{(.*?)\}/ } + ] + }; + + const QUOTE_STRING = { + className: 'string', + begin: /"/, + end: /"/, + contains: [ + hljs.BACKSLASH_ESCAPE, + VAR, + { + className: 'variable', + begin: /\$\(/, + end: /\)/, + contains: [ hljs.BACKSLASH_ESCAPE ] + } + ] + }; + + const APOS_STRING = { + className: 'string', + begin: /'/, + end: /'/ + }; + + return { + name: 'MikroTik RouterOS script', + aliases: [ 'mikrotik' ], + case_insensitive: true, + keywords: { + $pattern: /:?[\w-]+/, + literal: LITERALS, + keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :') + }, + contains: [ + { // illegal syntax + variants: [ + { // -- comment + begin: /\/\*/, + end: /\*\// + }, + { // Stan comment + begin: /\/\//, + end: /$/ + }, + { // HTML tags + begin: /<\//, + end: />/ + } + ], + illegal: /./ + }, + hljs.COMMENT('^#', '$'), + QUOTE_STRING, + APOS_STRING, + VAR, + // attribute=value + { + // > is to avoid matches with => in other grammars + begin: /[\w-]+=([^\s{}[\]()>]+)/, + relevance: 0, + returnBegin: true, + contains: [ + { + className: 'attribute', + begin: /[^=]+/ + }, + { + begin: /=/, + endsWithParent: true, + relevance: 0, + contains: [ + QUOTE_STRING, + APOS_STRING, + VAR, + { + className: 'literal', + begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b' + }, + { + // Do not format unclassified values. Needed to exclude highlighting of values as built_in. + begin: /("[^"]*"|[^\s{}[\]]+)/ } + /* + { + // IPv4 addresses and subnets + className: 'number', + variants: [ + {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24 + {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3 + {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1 + ] + }, + { + // MAC addresses and DHCP Client IDs + className: 'number', + begin: /\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\b/, + }, + */ + ] + } + ] + }, + { + // HEX values + className: 'number', + begin: /\*[0-9a-fA-F]+/ + }, + { + begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])', + returnBegin: true, + contains: [ + { + className: 'built_in', // 'function', + begin: /\w+/ + } + ] + }, + { + className: 'built_in', + variants: [ + { begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+' }, + { + begin: /\.\./, + relevance: 0 + } + ] + } + ] + }; +} + +module.exports = routeros; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/rsl.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/rsl.js ***! + \************************************************************/ +(module) { + +/* +Language: RenderMan RSL +Author: Konstantin Evdokimenko +Contributors: Shuen-Huei Guan +Website: https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html +Category: graphics +*/ + +function rsl(hljs) { + const BUILT_INS = [ + "abs", + "acos", + "ambient", + "area", + "asin", + "atan", + "atmosphere", + "attribute", + "calculatenormal", + "ceil", + "cellnoise", + "clamp", + "comp", + "concat", + "cos", + "degrees", + "depth", + "Deriv", + "diffuse", + "distance", + "Du", + "Dv", + "environment", + "exp", + "faceforward", + "filterstep", + "floor", + "format", + "fresnel", + "incident", + "length", + "lightsource", + "log", + "match", + "max", + "min", + "mod", + "noise", + "normalize", + "ntransform", + "opposite", + "option", + "phong", + "pnoise", + "pow", + "printf", + "ptlined", + "radians", + "random", + "reflect", + "refract", + "renderinfo", + "round", + "setcomp", + "setxcomp", + "setycomp", + "setzcomp", + "shadow", + "sign", + "sin", + "smoothstep", + "specular", + "specularbrdf", + "spline", + "sqrt", + "step", + "tan", + "texture", + "textureinfo", + "trace", + "transform", + "vtransform", + "xcomp", + "ycomp", + "zcomp" + ]; + + const TYPES = [ + "matrix", + "float", + "color", + "point", + "normal", + "vector" + ]; + + const KEYWORDS = [ + "while", + "for", + "if", + "do", + "return", + "else", + "break", + "extern", + "continue" + ]; + + const CLASS_DEFINITION = { + match: [ + /(surface|displacement|light|volume|imager)/, + /\s+/, + hljs.IDENT_RE, + ], + scope: { + 1: "keyword", + 3: "title.class", + } + }; + + return { + name: 'RenderMan RSL', + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS, + type: TYPES + }, + illegal: ' +Contributors: Peter Leonov , Vasily Polovnyov , Loren Segal , Pascal Hurni , Cedric Sohrauer +Category: common, scripting +*/ + +function ruby(hljs) { + const regex = hljs.regex; + const RUBY_METHOD_RE = '([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)'; + // TODO: move concepts like CAMEL_CASE into `modes.js` + const CLASS_NAME_RE = regex.either( + /\b([A-Z]+[a-z0-9]+)+/, + // ends in caps + /\b([A-Z]+[a-z0-9]+)+[A-Z]+/, + ) + ; + const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\w+)*/); + // very popular ruby built-ins that one might even assume + // are actual keywords (despite that not being the case) + const PSEUDO_KWS = [ + "include", + "extend", + "prepend", + "public", + "private", + "protected", + "raise", + "throw" + ]; + const RUBY_KEYWORDS = { + "variable.constant": [ + "__FILE__", + "__LINE__", + "__ENCODING__" + ], + "variable.language": [ + "self", + "super", + ], + keyword: [ + "alias", + "and", + "begin", + "BEGIN", + "break", + "case", + "class", + "defined", + "do", + "else", + "elsif", + "end", + "END", + "ensure", + "for", + "if", + "in", + "module", + "next", + "not", + "or", + "redo", + "require", + "rescue", + "retry", + "return", + "then", + "undef", + "unless", + "until", + "when", + "while", + "yield", + ...PSEUDO_KWS + ], + built_in: [ + "proc", + "lambda", + "attr_accessor", + "attr_reader", + "attr_writer", + "define_method", + "private_constant", + "module_function" + ], + literal: [ + "true", + "false", + "nil" + ] + }; + const YARDOCTAG = { + className: 'doctag', + begin: '@[A-Za-z]+' + }; + const IRB_OBJECT = { + begin: '#<', + end: '>' + }; + const COMMENT_MODES = [ + hljs.COMMENT( + '#', + '$', + { contains: [ YARDOCTAG ] } + ), + hljs.COMMENT( + '^=begin', + '^=end', + { + contains: [ YARDOCTAG ], + relevance: 10 + } + ), + hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE) + ]; + const SUBST = { + className: 'subst', + begin: /#\{/, + end: /\}/, + keywords: RUBY_KEYWORDS + }; + const STRING = { + className: 'string', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + variants: [ + { + begin: /'/, + end: /'/ + }, + { + begin: /"/, + end: /"/ + }, + { + begin: /`/, + end: /`/ + }, + { + begin: /%[qQwWx]?\(/, + end: /\)/ + }, + { + begin: /%[qQwWx]?\[/, + end: /\]/ + }, + { + begin: /%[qQwWx]?\{/, + end: /\}/ + }, + { + begin: /%[qQwWx]?/ + }, + { + begin: /%[qQwWx]?\//, + end: /\// + }, + { + begin: /%[qQwWx]?%/, + end: /%/ + }, + { + begin: /%[qQwWx]?-/, + end: /-/ + }, + { + begin: /%[qQwWx]?\|/, + end: /\|/ + }, + // in the following expressions, \B in the beginning suppresses recognition of ?-sequences + // where ? is the last character of a preceding identifier, as in: `func?4` + { begin: /\B\?(\\\d{1,3})/ }, + { begin: /\B\?(\\x[A-Fa-f0-9]{1,2})/ }, + { begin: /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/ }, + { begin: /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/ }, + { begin: /\B\?\\(c|C-)[\x20-\x7e]/ }, + { begin: /\B\?\\?\S/ }, + // heredocs + { + // this guard makes sure that we have an entire heredoc and not a false + // positive (auto-detect, etc.) + begin: regex.concat( + /<<[-~]?'?/, + regex.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/) + ), + contains: [ + hljs.END_SAME_AS_BEGIN({ + begin: /(\w+)/, + end: /(\w+)/, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }) + ] + } + ] + }; + + // Ruby syntax is underdocumented, but this grammar seems to be accurate + // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`) + // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers + const decimal = '[1-9](_?[0-9])*|0'; + const digits = '[0-9](_?[0-9])*'; + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + // decimal integer/float, optionally exponential or rational, optionally imaginary + { begin: `\\b(${decimal})(\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\b` }, + + // explicit decimal/binary/octal/hexadecimal integer, + // optionally rational and/or imaginary + { begin: "\\b0[dD][0-9](_?[0-9])*r?i?\\b" }, + { begin: "\\b0[bB][0-1](_?[0-1])*r?i?\\b" }, + { begin: "\\b0[oO][0-7](_?[0-7])*r?i?\\b" }, + { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b" }, + + // 0-prefixed implicit octal integer, optionally rational and/or imaginary + { begin: "\\b0(_?[0-7])+r?i?\\b" } + ] + }; + + const PARAMS = { + variants: [ + { + match: /\(\)/, + }, + { + className: 'params', + begin: /\(/, + end: /(?=\))/, + excludeBegin: true, + endsParent: true, + keywords: RUBY_KEYWORDS, + } + ] + }; + + const INCLUDE_EXTEND = { + match: [ + /(include|extend)\s+/, + CLASS_NAME_WITH_NAMESPACE_RE + ], + scope: { + 2: "title.class" + }, + keywords: RUBY_KEYWORDS + }; + + const CLASS_DEFINITION = { + variants: [ + { + match: [ + /class\s+/, + CLASS_NAME_WITH_NAMESPACE_RE, + /\s+<\s+/, + CLASS_NAME_WITH_NAMESPACE_RE + ] + }, + { + match: [ + /\b(class|module)\s+/, + CLASS_NAME_WITH_NAMESPACE_RE + ] + } + ], + scope: { + 2: "title.class", + 4: "title.class.inherited" + }, + keywords: RUBY_KEYWORDS + }; + + const UPPER_CASE_CONSTANT = { + relevance: 0, + match: /\b[A-Z][A-Z_0-9]+\b/, + className: "variable.constant" + }; + + const METHOD_DEFINITION = { + match: [ + /def/, /\s+/, + RUBY_METHOD_RE + ], + scope: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + PARAMS + ] + }; + + const OBJECT_CREATION = { + relevance: 0, + match: [ + CLASS_NAME_WITH_NAMESPACE_RE, + /\.new[. (]/ + ], + scope: { + 1: "title.class" + } + }; + + // CamelCase + const CLASS_REFERENCE = { + relevance: 0, + match: CLASS_NAME_RE, + scope: "title.class" + }; + + const RUBY_DEFAULT_CONTAINS = [ + STRING, + CLASS_DEFINITION, + INCLUDE_EXTEND, + OBJECT_CREATION, + UPPER_CASE_CONSTANT, + CLASS_REFERENCE, + METHOD_DEFINITION, + { + // swallow namespace qualifiers before symbols + begin: hljs.IDENT_RE + '::' }, + { + className: 'symbol', + begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', + relevance: 0 + }, + { + className: 'symbol', + begin: ':(?!\\s)', + contains: [ + STRING, + { begin: RUBY_METHOD_RE } + ], + relevance: 0 + }, + NUMBER, + { + // negative-look forward attempts to prevent false matches like: + // @ident@ or $ident$ that might indicate this is not ruby at all + className: "variable", + begin: '(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])` + }, + { + className: 'params', + begin: /\|(?!=)/, + end: /\|/, + excludeBegin: true, + excludeEnd: true, + relevance: 0, // this could be a lot of things (in other languages) other than params + keywords: RUBY_KEYWORDS + }, + { // regexp container + begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\s*', + keywords: 'unless', + contains: [ + { + className: 'regexp', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + illegal: /\n/, + variants: [ + { + begin: '/', + end: '/[a-z]*' + }, + { + begin: /%r\{/, + end: /\}[a-z]*/ + }, + { + begin: '%r\\(', + end: '\\)[a-z]*' + }, + { + begin: '%r!', + end: '![a-z]*' + }, + { + begin: '%r\\[', + end: '\\][a-z]*' + } + ] + } + ].concat(IRB_OBJECT, COMMENT_MODES), + relevance: 0 + } + ].concat(IRB_OBJECT, COMMENT_MODES); + + SUBST.contains = RUBY_DEFAULT_CONTAINS; + PARAMS.contains = RUBY_DEFAULT_CONTAINS; + + // >> + // ?> + const SIMPLE_PROMPT = "[>?]>"; + // irb(main):001:0> + const DEFAULT_PROMPT = "[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"; + const RVM_PROMPT = "(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"; + + const IRB_DEFAULT = [ + { + begin: /^\s*=>/, + starts: { + end: '$', + contains: RUBY_DEFAULT_CONTAINS + } + }, + { + className: 'meta.prompt', + begin: '^(' + SIMPLE_PROMPT + "|" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])', + starts: { + end: '$', + keywords: RUBY_KEYWORDS, + contains: RUBY_DEFAULT_CONTAINS + } + } + ]; + + COMMENT_MODES.unshift(IRB_OBJECT); + + return { + name: 'Ruby', + aliases: [ + 'rb', + 'gemspec', + 'podspec', + 'thor', + 'irb' + ], + keywords: RUBY_KEYWORDS, + illegal: /\/\*/, + contains: [ hljs.SHEBANG({ binary: "ruby" }) ] + .concat(IRB_DEFAULT) + .concat(COMMENT_MODES) + .concat(RUBY_DEFAULT_CONTAINS) + }; +} + +module.exports = ruby; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/ruleslanguage.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/ruleslanguage.js ***! + \**********************************************************************/ +(module) { + +/* +Language: Oracle Rules Language +Author: Jason Jacobson +Description: The Oracle Utilities Rules Language is used to program the Oracle Utilities Applications acquired from LODESTAR Corporation. The products include Billing Component, LPSS, Pricing Component etc. through version 1.6.1. +Website: https://docs.oracle.com/cd/E17904_01/dev.1111/e10227/rlref.htm +Category: enterprise +*/ + +function ruleslanguage(hljs) { + return { + name: 'Oracle Rules Language', + keywords: { + keyword: + 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' + + 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' + + 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' + + 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' + + 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' + + 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' + + 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' + + 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' + + 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' + + 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' + + 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' + + 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' + + 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' + + 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' + + 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' + + 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' + + 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' + + 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' + + 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' + + 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' + + 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' + + 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' + + 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' + + 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' + + 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' + + 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' + + 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' + + 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' + + 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' + + 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' + + 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' + + 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' + + 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' + + 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' + + 'NUMDAYS READ_DATE STAGING', + built_in: + 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' + + 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' + + 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' + + 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' + + 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME' + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'literal', + variants: [ + { // looks like #-comment + begin: '#\\s+', + relevance: 0 + }, + { begin: '#[a-zA-Z .]+' } + ] + } + ] + }; +} + +module.exports = ruleslanguage; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/rust.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/rust.js ***! + \*************************************************************/ +(module) { + +/* +Language: Rust +Author: Andrey Vlasovskikh +Contributors: Roman Shmatov , Kasper Andersen +Website: https://www.rust-lang.org +Category: common, system +*/ + +/** @type LanguageFn */ + +function rust(hljs) { + const regex = hljs.regex; + // ============================================ + // Added to support the r# keyword, which is a raw identifier in Rust. + const RAW_IDENTIFIER = /(r#)?/; + const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE); + const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE); + // ============================================ + const FUNCTION_INVOKE = { + className: "title.function.invoke", + relevance: 0, + begin: regex.concat( + /\b/, + /(?!let|for|while|if|else|match\b)/, + IDENT_RE, + regex.lookahead(/\s*\(/)) + }; + const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\?'; + const KEYWORDS = [ + "abstract", + "as", + "async", + "await", + "become", + "box", + "break", + "const", + "continue", + "crate", + "do", + "dyn", + "else", + "enum", + "extern", + "false", + "final", + "fn", + "for", + "if", + "impl", + "in", + "let", + "loop", + "macro", + "match", + "mod", + "move", + "mut", + "override", + "priv", + "pub", + "ref", + "return", + "self", + "Self", + "static", + "struct", + "super", + "trait", + "true", + "try", + "type", + "typeof", + "union", + "unsafe", + "unsized", + "use", + "virtual", + "where", + "while", + "yield" + ]; + const LITERALS = [ + "true", + "false", + "Some", + "None", + "Ok", + "Err" + ]; + const BUILTINS = [ + // functions + 'drop ', + // traits + "Copy", + "Send", + "Sized", + "Sync", + "Drop", + "Fn", + "FnMut", + "FnOnce", + "ToOwned", + "Clone", + "Debug", + "PartialEq", + "PartialOrd", + "Eq", + "Ord", + "AsRef", + "AsMut", + "Into", + "From", + "Default", + "Iterator", + "Extend", + "IntoIterator", + "DoubleEndedIterator", + "ExactSizeIterator", + "SliceConcatExt", + "ToString", + // macros + "assert!", + "assert_eq!", + "bitflags!", + "bytes!", + "cfg!", + "col!", + "concat!", + "concat_idents!", + "debug_assert!", + "debug_assert_eq!", + "env!", + "eprintln!", + "panic!", + "file!", + "format!", + "format_args!", + "include_bytes!", + "include_str!", + "line!", + "local_data_key!", + "module_path!", + "option_env!", + "print!", + "println!", + "select!", + "stringify!", + "try!", + "unimplemented!", + "unreachable!", + "vec!", + "write!", + "writeln!", + "macro_rules!", + "assert_ne!", + "debug_assert_ne!" + ]; + const TYPES = [ + "i8", + "i16", + "i32", + "i64", + "i128", + "isize", + "u8", + "u16", + "u32", + "u64", + "u128", + "usize", + "f32", + "f64", + "str", + "char", + "bool", + "Box", + "Option", + "Result", + "String", + "Vec" + ]; + return { + name: 'Rust', + aliases: [ 'rs' ], + keywords: { + $pattern: hljs.IDENT_RE + '!?', + type: TYPES, + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILTINS + }, + illegal: '' + }, + FUNCTION_INVOKE + ] + }; +} + +module.exports = rust; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/sas.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/sas.js ***! + \************************************************************/ +(module) { + +/* +Language: SAS +Author: Mauricio Caceres +Description: Syntax Highlighting for SAS +Category: scientific +*/ + +/** @type LanguageFn */ +function sas(hljs) { + const regex = hljs.regex; + // Data step and PROC SQL statements + const SAS_KEYWORDS = [ + "do", + "if", + "then", + "else", + "end", + "until", + "while", + "abort", + "array", + "attrib", + "by", + "call", + "cards", + "cards4", + "catname", + "continue", + "datalines", + "datalines4", + "delete", + "delim", + "delimiter", + "display", + "dm", + "drop", + "endsas", + "error", + "file", + "filename", + "footnote", + "format", + "goto", + "in", + "infile", + "informat", + "input", + "keep", + "label", + "leave", + "length", + "libname", + "link", + "list", + "lostcard", + "merge", + "missing", + "modify", + "options", + "output", + "out", + "page", + "put", + "redirect", + "remove", + "rename", + "replace", + "retain", + "return", + "select", + "set", + "skip", + "startsas", + "stop", + "title", + "update", + "waitsas", + "where", + "window", + "x|0", + "systask", + "add", + "and", + "alter", + "as", + "cascade", + "check", + "create", + "delete", + "describe", + "distinct", + "drop", + "foreign", + "from", + "group", + "having", + "index", + "insert", + "into", + "in", + "key", + "like", + "message", + "modify", + "msgtype", + "not", + "null", + "on", + "or", + "order", + "primary", + "references", + "reset", + "restrict", + "select", + "set", + "table", + "unique", + "update", + "validate", + "view", + "where" + ]; + + // Built-in SAS functions + const FUNCTIONS = [ + "abs", + "addr", + "airy", + "arcos", + "arsin", + "atan", + "attrc", + "attrn", + "band", + "betainv", + "blshift", + "bnot", + "bor", + "brshift", + "bxor", + "byte", + "cdf", + "ceil", + "cexist", + "cinv", + "close", + "cnonct", + "collate", + "compbl", + "compound", + "compress", + "cos", + "cosh", + "css", + "curobs", + "cv", + "daccdb", + "daccdbsl", + "daccsl", + "daccsyd", + "dacctab", + "dairy", + "date", + "datejul", + "datepart", + "datetime", + "day", + "dclose", + "depdb", + "depdbsl", + "depdbsl", + "depsl", + "depsl", + "depsyd", + "depsyd", + "deptab", + "deptab", + "dequote", + "dhms", + "dif", + "digamma", + "dim", + "dinfo", + "dnum", + "dopen", + "doptname", + "doptnum", + "dread", + "dropnote", + "dsname", + "erf", + "erfc", + "exist", + "exp", + "fappend", + "fclose", + "fcol", + "fdelete", + "fetch", + "fetchobs", + "fexist", + "fget", + "fileexist", + "filename", + "fileref", + "finfo", + "finv", + "fipname", + "fipnamel", + "fipstate", + "floor", + "fnonct", + "fnote", + "fopen", + "foptname", + "foptnum", + "fpoint", + "fpos", + "fput", + "fread", + "frewind", + "frlen", + "fsep", + "fuzz", + "fwrite", + "gaminv", + "gamma", + "getoption", + "getvarc", + "getvarn", + "hbound", + "hms", + "hosthelp", + "hour", + "ibessel", + "index", + "indexc", + "indexw", + "input", + "inputc", + "inputn", + "int", + "intck", + "intnx", + "intrr", + "irr", + "jbessel", + "juldate", + "kurtosis", + "lag", + "lbound", + "left", + "length", + "lgamma", + "libname", + "libref", + "log", + "log10", + "log2", + "logpdf", + "logpmf", + "logsdf", + "lowcase", + "max", + "mdy", + "mean", + "min", + "minute", + "mod", + "month", + "mopen", + "mort", + "n", + "netpv", + "nmiss", + "normal", + "note", + "npv", + "open", + "ordinal", + "pathname", + "pdf", + "peek", + "peekc", + "pmf", + "point", + "poisson", + "poke", + "probbeta", + "probbnml", + "probchi", + "probf", + "probgam", + "probhypr", + "probit", + "probnegb", + "probnorm", + "probt", + "put", + "putc", + "putn", + "qtr", + "quote", + "ranbin", + "rancau", + "ranexp", + "rangam", + "range", + "rank", + "rannor", + "ranpoi", + "rantbl", + "rantri", + "ranuni", + "repeat", + "resolve", + "reverse", + "rewind", + "right", + "round", + "saving", + "scan", + "sdf", + "second", + "sign", + "sin", + "sinh", + "skewness", + "soundex", + "spedis", + "sqrt", + "std", + "stderr", + "stfips", + "stname", + "stnamel", + "substr", + "sum", + "symget", + "sysget", + "sysmsg", + "sysprod", + "sysrc", + "system", + "tan", + "tanh", + "time", + "timepart", + "tinv", + "tnonct", + "today", + "translate", + "tranwrd", + "trigamma", + "trim", + "trimn", + "trunc", + "uniform", + "upcase", + "uss", + "var", + "varfmt", + "varinfmt", + "varlabel", + "varlen", + "varname", + "varnum", + "varray", + "varrayx", + "vartype", + "verify", + "vformat", + "vformatd", + "vformatdx", + "vformatn", + "vformatnx", + "vformatw", + "vformatwx", + "vformatx", + "vinarray", + "vinarrayx", + "vinformat", + "vinformatd", + "vinformatdx", + "vinformatn", + "vinformatnx", + "vinformatw", + "vinformatwx", + "vinformatx", + "vlabel", + "vlabelx", + "vlength", + "vlengthx", + "vname", + "vnamex", + "vtype", + "vtypex", + "weekday", + "year", + "yyq", + "zipfips", + "zipname", + "zipnamel", + "zipstate" + ]; + + // Built-in macro functions + const MACRO_FUNCTIONS = [ + "bquote", + "nrbquote", + "cmpres", + "qcmpres", + "compstor", + "datatyp", + "display", + "do", + "else", + "end", + "eval", + "global", + "goto", + "if", + "index", + "input", + "keydef", + "label", + "left", + "length", + "let", + "local", + "lowcase", + "macro", + "mend", + "nrbquote", + "nrquote", + "nrstr", + "put", + "qcmpres", + "qleft", + "qlowcase", + "qscan", + "qsubstr", + "qsysfunc", + "qtrim", + "quote", + "qupcase", + "scan", + "str", + "substr", + "superq", + "syscall", + "sysevalf", + "sysexec", + "sysfunc", + "sysget", + "syslput", + "sysprod", + "sysrc", + "sysrput", + "then", + "to", + "trim", + "unquote", + "until", + "upcase", + "verify", + "while", + "window" + ]; + + const LITERALS = [ + "null", + "missing", + "_all_", + "_automatic_", + "_character_", + "_infile_", + "_n_", + "_name_", + "_null_", + "_numeric_", + "_user_", + "_webout_" + ]; + + return { + name: 'SAS', + case_insensitive: true, + keywords: { + literal: LITERALS, + keyword: SAS_KEYWORDS + }, + contains: [ + { + // Distinct highlight for proc , data, run, quit + className: 'keyword', + begin: /^\s*(proc [\w\d_]+|data|run|quit)[\s;]/ + }, + { + // Macro variables + className: 'variable', + begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\.?/ + }, + { + begin: [ + /^\s*/, + /datalines;|cards;/, + /(?:.*\n)+/, + /^\s*;\s*$/ + ], + className: { + 2: "keyword", + 3: "string" + } + }, + { + begin: [ + /%mend|%macro/, + /\s+/, + /[a-zA-Z_&][a-zA-Z0-9_]*/ + ], + className: { + 1: "built_in", + 3: "title.function" + } + }, + { // Built-in macro variables + className: 'built_in', + begin: '%' + regex.either(...MACRO_FUNCTIONS) + }, + { + // User-defined macro functions + className: 'title.function', + begin: /%[a-zA-Z_][a-zA-Z_0-9]*/ + }, + { + // TODO: this is most likely an incorrect classification + // built_in may need more nuance + // https://github.com/highlightjs/highlight.js/issues/2521 + className: 'meta', + begin: regex.either(...FUNCTIONS) + '(?=\\()' + }, + { + className: 'string', + variants: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }, + hljs.COMMENT('\\*', ';'), + hljs.C_BLOCK_COMMENT_MODE + ] + }; +} + +module.exports = sas; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/scala.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/scala.js ***! + \**************************************************************/ +(module) { + +/* +Language: Scala +Category: functional +Author: Jan Berkel +Contributors: Erik Osheim +Website: https://www.scala-lang.org +*/ + +function scala(hljs) { + const regex = hljs.regex; + const ANNOTATION = { + className: 'meta', + begin: '@[A-Za-z]+' + }; + + // used in strings for escaping/interpolation/substitution + const SUBST = { + className: 'subst', + variants: [ + { begin: '\\$[A-Za-z0-9_]+' }, + { + begin: /\$\{/, + end: /\}/ + } + ] + }; + + const STRING = { + className: 'string', + variants: [ + { + begin: '"""', + end: '"""' + }, + { + begin: '"', + end: '"', + illegal: '\\n', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + begin: '[a-z]+"', + end: '"', + illegal: '\\n', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }, + { + className: 'string', + begin: '[a-z]+"""', + end: '"""', + contains: [ SUBST ], + relevance: 10 + } + ] + + }; + + const TYPE = { + className: 'type', + begin: '\\b[A-Z][A-Za-z0-9_]*', + relevance: 0 + }; + + const NAME = { + className: 'title', + begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/, + relevance: 0 + }; + + const CLASS = { + className: 'class', + beginKeywords: 'class object trait type', + end: /[:={\[\n;]/, + excludeEnd: true, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + beginKeywords: 'extends with', + relevance: 10 + }, + { + begin: /\[/, + end: /\]/, + excludeBegin: true, + excludeEnd: true, + relevance: 0, + contains: [ + TYPE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + ] + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + relevance: 0, + contains: [ + TYPE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + ] + }, + NAME + ] + }; + + const METHOD = { + className: 'function', + beginKeywords: 'def', + end: regex.lookahead(/[:={\[(\n;]/), + contains: [ NAME ] + }; + + const EXTENSION = { + begin: [ + /^\s*/, // Is first token on the line + 'extension', + /\s+(?=[[(])/, // followed by at least one space and `[` or `(` + ], + beginScope: { 2: "keyword", } + }; + + const END = { + begin: [ + /^\s*/, // Is first token on the line + /end/, + /\s+/, + /(extension\b)?/, // `extension` is the only marker that follows an `end` that cannot be captured by another rule. + ], + beginScope: { + 2: "keyword", + 4: "keyword", + } + }; + + // TODO: use negative look-behind in future + // /(?', + /\s+/, + /using/, + /\s+/, + /\S+/ + ], + beginScope: { + 1: "comment", + 3: "keyword", + 5: "type" + }, + end: /$/, + contains: [ + DIRECTIVE_VALUE, + ] + }; + + return { + name: 'Scala', + keywords: { + literal: 'true false null', + keyword: 'type yield lazy override def with val var sealed abstract private trait object if then forSome for while do throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit export enum given transparent' + }, + contains: [ + USING_DIRECTIVE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + STRING, + TYPE, + METHOD, + CLASS, + hljs.C_NUMBER_MODE, + EXTENSION, + END, + ...INLINE_MODES, + USING_PARAM_CLAUSE, + ANNOTATION + ] + }; +} + +module.exports = scala; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/scheme.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/scheme.js ***! + \***************************************************************/ +(module) { + +/* +Language: Scheme +Description: Scheme is a programming language in the Lisp family. + (keywords based on http://community.schemewiki.org/?scheme-keywords) +Author: JP Verkamp +Contributors: Ivan Sagalaev +Origin: clojure.js +Website: http://community.schemewiki.org/?what-is-scheme +Category: lisp +*/ + +function scheme(hljs) { + const SCHEME_IDENT_RE = '[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+'; + const SCHEME_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+([./]\\d+)?'; + const SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i'; + const KEYWORDS = { + $pattern: SCHEME_IDENT_RE, + built_in: + 'case-lambda call/cc class define-class exit-handler field import ' + + 'inherit init-field interface let*-values let-values let/ec mixin ' + + 'opt-lambda override protect provide public rename require ' + + 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' + + 'when with-syntax and begin call-with-current-continuation ' + + 'call-with-input-file call-with-output-file case cond define ' + + 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' + + 'let-syntax letrec letrec-syntax map or syntax-rules \' * + , ,@ - ... / ' + + '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' + + 'boolean? caar cadr call-with-input-file call-with-output-file ' + + 'call-with-values car cdddar cddddr cdr ceiling char->integer ' + + 'char-alphabetic? char-ci<=? char-ci=? char-ci>? ' + + 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' + + 'char-upper-case? char-whitespace? char<=? char=? char>? ' + + 'char? close-input-port close-output-port complex? cons cos ' + + 'current-input-port current-output-port denominator display eof-object? ' + + 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' + + 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' + + 'integer? interaction-environment lcm length list list->string ' + + 'list->vector list-ref list-tail list? load log magnitude make-polar ' + + 'make-rectangular make-string make-vector max member memq memv min ' + + 'modulo negative? newline not null-environment null? number->string ' + + 'number? numerator odd? open-input-file open-output-file output-port? ' + + 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' + + 'rational? rationalize read read-char real-part real? remainder reverse ' + + 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' + + 'string->list string->number string->symbol string-append string-ci<=? ' + + 'string-ci=? string-ci>? string-copy ' + + 'string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? ' + + 'tan transcript-off transcript-on truncate values vector ' + + 'vector->list vector-fill! vector-length vector-ref vector-set! ' + + 'with-input-from-file with-output-to-file write write-char zero?' + }; + + const LITERAL = { + className: 'literal', + begin: '(#t|#f|#\\\\' + SCHEME_IDENT_RE + '|#\\\\.)' + }; + + const NUMBER = { + className: 'number', + variants: [ + { + begin: SCHEME_SIMPLE_NUMBER_RE, + relevance: 0 + }, + { + begin: SCHEME_COMPLEX_NUMBER_RE, + relevance: 0 + }, + { begin: '#b[0-1]+(/[0-1]+)?' }, + { begin: '#o[0-7]+(/[0-7]+)?' }, + { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' } + ] + }; + + const STRING = hljs.QUOTE_STRING_MODE; + + const COMMENT_MODES = [ + hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ), + hljs.COMMENT('#\\|', '\\|#') + ]; + + const IDENT = { + begin: SCHEME_IDENT_RE, + relevance: 0 + }; + + const QUOTED_IDENT = { + className: 'symbol', + begin: '\'' + SCHEME_IDENT_RE + }; + + const BODY = { + endsWithParent: true, + relevance: 0 + }; + + const QUOTED_LIST = { + variants: [ + { begin: /'/ }, + { begin: '`' } + ], + contains: [ + { + begin: '\\(', + end: '\\)', + contains: [ + 'self', + LITERAL, + STRING, + NUMBER, + IDENT, + QUOTED_IDENT + ] + } + ] + }; + + const NAME = { + className: 'name', + relevance: 0, + begin: SCHEME_IDENT_RE, + keywords: KEYWORDS + }; + + const LAMBDA = { + begin: /lambda/, + endsWithParent: true, + returnBegin: true, + contains: [ + NAME, + { + endsParent: true, + variants: [ + { + begin: /\(/, + end: /\)/ + }, + { + begin: /\[/, + end: /\]/ + } + ], + contains: [ IDENT ] + } + ] + }; + + const LIST = { + variants: [ + { + begin: '\\(', + end: '\\)' + }, + { + begin: '\\[', + end: '\\]' + } + ], + contains: [ + LAMBDA, + NAME, + BODY + ] + }; + + BODY.contains = [ + LITERAL, + NUMBER, + STRING, + IDENT, + QUOTED_IDENT, + QUOTED_LIST, + LIST + ].concat(COMMENT_MODES); + + return { + name: 'Scheme', + aliases: ['scm'], + illegal: /\S/, + contains: [ + hljs.SHEBANG(), + NUMBER, + STRING, + QUOTED_IDENT, + QUOTED_LIST, + LIST + ].concat(COMMENT_MODES) + }; +} + +module.exports = scheme; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/scilab.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/scilab.js ***! + \***************************************************************/ +(module) { + +/* +Language: Scilab +Author: Sylvestre Ledru +Origin: matlab.js +Description: Scilab is a port from Matlab +Website: https://www.scilab.org +Category: scientific +*/ + +function scilab(hljs) { + const COMMON_CONTAINS = [ + hljs.C_NUMBER_MODE, + { + className: 'string', + begin: '\'|\"', + end: '\'|\"', + contains: [ + hljs.BACKSLASH_ESCAPE, + { begin: '\'\'' } + ] + } + ]; + + return { + name: 'Scilab', + aliases: [ 'sci' ], + keywords: { + $pattern: /%?\w+/, + keyword: 'abort break case clear catch continue do elseif else endfunction end for function ' + + 'global if pause return resume select try then while', + literal: + '%f %F %t %T %pi %eps %inf %nan %e %i %z %s', + built_in: // Scilab has more than 2000 functions. Just list the most commons + 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error ' + + 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty ' + + 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log ' + + 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real ' + + 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan ' + + 'type typename warning zeros matrix' + }, + illegal: '("|#|/\\*|\\s+/\\w+)', + contains: [ + { + className: 'function', + beginKeywords: 'function', + end: '$', + contains: [ + hljs.UNDERSCORE_TITLE_MODE, + { + className: 'params', + begin: '\\(', + end: '\\)' + } + ] + }, + // seems to be a guard against [ident]' or [ident]. + // perhaps to prevent attributes from flagging as keywords? + { + begin: '[a-zA-Z_][a-zA-Z_0-9]*[\\.\']+', + relevance: 0 + }, + { + begin: '\\[', + end: '\\][\\.\']*', + relevance: 0, + contains: COMMON_CONTAINS + }, + hljs.COMMENT('//', '$') + ].concat(COMMON_CONTAINS) + }; +} + +module.exports = scilab; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/scss.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/scss.js ***! + \*************************************************************/ +(module) { + +const MODES = (hljs) => { + return { + IMPORTANT: { + scope: 'meta', + begin: '!important' + }, + BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, + HEXCOLOR: { + scope: 'number', + begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ + }, + FUNCTION_DISPATCH: { + className: "built_in", + begin: /[\w-]+(?=\()/ + }, + ATTRIBUTE_SELECTOR_MODE: { + scope: 'selector-attr', + begin: /\[/, + end: /\]/, + illegal: '$', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }, + CSS_NUMBER_MODE: { + scope: 'number', + begin: hljs.NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 + }, + CSS_VARIABLE: { + className: "attr", + begin: /--[A-Za-z_][A-Za-z0-9_-]*/ + } + }; +}; + +const HTML_TAGS = [ + 'a', + 'abbr', + 'address', + 'article', + 'aside', + 'audio', + 'b', + 'blockquote', + 'body', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'dd', + 'del', + 'details', + 'dfn', + 'div', + 'dl', + 'dt', + 'em', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'header', + 'hgroup', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'label', + 'legend', + 'li', + 'main', + 'mark', + 'menu', + 'nav', + 'object', + 'ol', + 'optgroup', + 'option', + 'p', + 'picture', + 'q', + 'quote', + 'samp', + 'section', + 'select', + 'source', + 'span', + 'strong', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'tr', + 'ul', + 'var', + 'video' +]; + +const SVG_TAGS = [ + 'defs', + 'g', + 'marker', + 'mask', + 'pattern', + 'svg', + 'switch', + 'symbol', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feFlood', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMorphology', + 'feOffset', + 'feSpecularLighting', + 'feTile', + 'feTurbulence', + 'linearGradient', + 'radialGradient', + 'stop', + 'circle', + 'ellipse', + 'image', + 'line', + 'path', + 'polygon', + 'polyline', + 'rect', + 'text', + 'use', + 'textPath', + 'tspan', + 'foreignObject', + 'clipPath' +]; + +const TAGS = [ + ...HTML_TAGS, + ...SVG_TAGS, +]; + +// Sorting, then reversing makes sure longer attributes/elements like +// `font-weight` are matched fully instead of getting false positives on say `font` + +const MEDIA_FEATURES = [ + 'any-hover', + 'any-pointer', + 'aspect-ratio', + 'color', + 'color-gamut', + 'color-index', + 'device-aspect-ratio', + 'device-height', + 'device-width', + 'display-mode', + 'forced-colors', + 'grid', + 'height', + 'hover', + 'inverted-colors', + 'monochrome', + 'orientation', + 'overflow-block', + 'overflow-inline', + 'pointer', + 'prefers-color-scheme', + 'prefers-contrast', + 'prefers-reduced-motion', + 'prefers-reduced-transparency', + 'resolution', + 'scan', + 'scripting', + 'update', + 'width', + // TODO: find a better solution? + 'min-width', + 'max-width', + 'min-height', + 'max-height' +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes +const PSEUDO_CLASSES = [ + 'active', + 'any-link', + 'blank', + 'checked', + 'current', + 'default', + 'defined', + 'dir', // dir() + 'disabled', + 'drop', + 'empty', + 'enabled', + 'first', + 'first-child', + 'first-of-type', + 'fullscreen', + 'future', + 'focus', + 'focus-visible', + 'focus-within', + 'has', // has() + 'host', // host or host() + 'host-context', // host-context() + 'hover', + 'indeterminate', + 'in-range', + 'invalid', + 'is', // is() + 'lang', // lang() + 'last-child', + 'last-of-type', + 'left', + 'link', + 'local-link', + 'not', // not() + 'nth-child', // nth-child() + 'nth-col', // nth-col() + 'nth-last-child', // nth-last-child() + 'nth-last-col', // nth-last-col() + 'nth-last-of-type', //nth-last-of-type() + 'nth-of-type', //nth-of-type() + 'only-child', + 'only-of-type', + 'optional', + 'out-of-range', + 'past', + 'placeholder-shown', + 'read-only', + 'read-write', + 'required', + 'right', + 'root', + 'scope', + 'target', + 'target-within', + 'user-invalid', + 'valid', + 'visited', + 'where' // where() +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements +const PSEUDO_ELEMENTS = [ + 'after', + 'backdrop', + 'before', + 'cue', + 'cue-region', + 'first-letter', + 'first-line', + 'grammar-error', + 'marker', + 'part', + 'placeholder', + 'selection', + 'slotted', + 'spelling-error' +].sort().reverse(); + +const ATTRIBUTES = [ + 'accent-color', + 'align-content', + 'align-items', + 'align-self', + 'alignment-baseline', + 'all', + 'anchor-name', + 'animation', + 'animation-composition', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-range', + 'animation-range-end', + 'animation-range-start', + 'animation-timeline', + 'animation-timing-function', + 'appearance', + 'aspect-ratio', + 'backdrop-filter', + 'backface-visibility', + 'background', + 'background-attachment', + 'background-blend-mode', + 'background-clip', + 'background-color', + 'background-image', + 'background-origin', + 'background-position', + 'background-position-x', + 'background-position-y', + 'background-repeat', + 'background-size', + 'baseline-shift', + 'block-size', + 'border', + 'border-block', + 'border-block-color', + 'border-block-end', + 'border-block-end-color', + 'border-block-end-style', + 'border-block-end-width', + 'border-block-start', + 'border-block-start-color', + 'border-block-start-style', + 'border-block-start-width', + 'border-block-style', + 'border-block-width', + 'border-bottom', + 'border-bottom-color', + 'border-bottom-left-radius', + 'border-bottom-right-radius', + 'border-bottom-style', + 'border-bottom-width', + 'border-collapse', + 'border-color', + 'border-end-end-radius', + 'border-end-start-radius', + 'border-image', + 'border-image-outset', + 'border-image-repeat', + 'border-image-slice', + 'border-image-source', + 'border-image-width', + 'border-inline', + 'border-inline-color', + 'border-inline-end', + 'border-inline-end-color', + 'border-inline-end-style', + 'border-inline-end-width', + 'border-inline-start', + 'border-inline-start-color', + 'border-inline-start-style', + 'border-inline-start-width', + 'border-inline-style', + 'border-inline-width', + 'border-left', + 'border-left-color', + 'border-left-style', + 'border-left-width', + 'border-radius', + 'border-right', + 'border-right-color', + 'border-right-style', + 'border-right-width', + 'border-spacing', + 'border-start-end-radius', + 'border-start-start-radius', + 'border-style', + 'border-top', + 'border-top-color', + 'border-top-left-radius', + 'border-top-right-radius', + 'border-top-style', + 'border-top-width', + 'border-width', + 'bottom', + 'box-align', + 'box-decoration-break', + 'box-direction', + 'box-flex', + 'box-flex-group', + 'box-lines', + 'box-ordinal-group', + 'box-orient', + 'box-pack', + 'box-shadow', + 'box-sizing', + 'break-after', + 'break-before', + 'break-inside', + 'caption-side', + 'caret-color', + 'clear', + 'clip', + 'clip-path', + 'clip-rule', + 'color', + 'color-interpolation', + 'color-interpolation-filters', + 'color-profile', + 'color-rendering', + 'color-scheme', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + 'contain', + 'contain-intrinsic-block-size', + 'contain-intrinsic-height', + 'contain-intrinsic-inline-size', + 'contain-intrinsic-size', + 'contain-intrinsic-width', + 'container', + 'container-name', + 'container-type', + 'content', + 'content-visibility', + 'counter-increment', + 'counter-reset', + 'counter-set', + 'cue', + 'cue-after', + 'cue-before', + 'cursor', + 'cx', + 'cy', + 'direction', + 'display', + 'dominant-baseline', + 'empty-cells', + 'enable-background', + 'field-sizing', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'float', + 'flood-color', + 'flood-opacity', + 'flow', + 'font', + 'font-display', + 'font-family', + 'font-feature-settings', + 'font-kerning', + 'font-language-override', + 'font-optical-sizing', + 'font-palette', + 'font-size', + 'font-size-adjust', + 'font-smooth', + 'font-smoothing', + 'font-stretch', + 'font-style', + 'font-synthesis', + 'font-synthesis-position', + 'font-synthesis-small-caps', + 'font-synthesis-style', + 'font-synthesis-weight', + 'font-variant', + 'font-variant-alternates', + 'font-variant-caps', + 'font-variant-east-asian', + 'font-variant-emoji', + 'font-variant-ligatures', + 'font-variant-numeric', + 'font-variant-position', + 'font-variation-settings', + 'font-weight', + 'forced-color-adjust', + 'gap', + 'glyph-orientation-horizontal', + 'glyph-orientation-vertical', + 'grid', + 'grid-area', + 'grid-auto-columns', + 'grid-auto-flow', + 'grid-auto-rows', + 'grid-column', + 'grid-column-end', + 'grid-column-start', + 'grid-gap', + 'grid-row', + 'grid-row-end', + 'grid-row-start', + 'grid-template', + 'grid-template-areas', + 'grid-template-columns', + 'grid-template-rows', + 'hanging-punctuation', + 'height', + 'hyphenate-character', + 'hyphenate-limit-chars', + 'hyphens', + 'icon', + 'image-orientation', + 'image-rendering', + 'image-resolution', + 'ime-mode', + 'initial-letter', + 'initial-letter-align', + 'inline-size', + 'inset', + 'inset-area', + 'inset-block', + 'inset-block-end', + 'inset-block-start', + 'inset-inline', + 'inset-inline-end', + 'inset-inline-start', + 'isolation', + 'justify-content', + 'justify-items', + 'justify-self', + 'kerning', + 'left', + 'letter-spacing', + 'lighting-color', + 'line-break', + 'line-height', + 'line-height-step', + 'list-style', + 'list-style-image', + 'list-style-position', + 'list-style-type', + 'margin', + 'margin-block', + 'margin-block-end', + 'margin-block-start', + 'margin-bottom', + 'margin-inline', + 'margin-inline-end', + 'margin-inline-start', + 'margin-left', + 'margin-right', + 'margin-top', + 'margin-trim', + 'marker', + 'marker-end', + 'marker-mid', + 'marker-start', + 'marks', + 'mask', + 'mask-border', + 'mask-border-mode', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-mode', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + 'mask-type', + 'masonry-auto-flow', + 'math-depth', + 'math-shift', + 'math-style', + 'max-block-size', + 'max-height', + 'max-inline-size', + 'max-width', + 'min-block-size', + 'min-height', + 'min-inline-size', + 'min-width', + 'mix-blend-mode', + 'nav-down', + 'nav-index', + 'nav-left', + 'nav-right', + 'nav-up', + 'none', + 'normal', + 'object-fit', + 'object-position', + 'offset', + 'offset-anchor', + 'offset-distance', + 'offset-path', + 'offset-position', + 'offset-rotate', + 'opacity', + 'order', + 'orphans', + 'outline', + 'outline-color', + 'outline-offset', + 'outline-style', + 'outline-width', + 'overflow', + 'overflow-anchor', + 'overflow-block', + 'overflow-clip-margin', + 'overflow-inline', + 'overflow-wrap', + 'overflow-x', + 'overflow-y', + 'overlay', + 'overscroll-behavior', + 'overscroll-behavior-block', + 'overscroll-behavior-inline', + 'overscroll-behavior-x', + 'overscroll-behavior-y', + 'padding', + 'padding-block', + 'padding-block-end', + 'padding-block-start', + 'padding-bottom', + 'padding-inline', + 'padding-inline-end', + 'padding-inline-start', + 'padding-left', + 'padding-right', + 'padding-top', + 'page', + 'page-break-after', + 'page-break-before', + 'page-break-inside', + 'paint-order', + 'pause', + 'pause-after', + 'pause-before', + 'perspective', + 'perspective-origin', + 'place-content', + 'place-items', + 'place-self', + 'pointer-events', + 'position', + 'position-anchor', + 'position-visibility', + 'print-color-adjust', + 'quotes', + 'r', + 'resize', + 'rest', + 'rest-after', + 'rest-before', + 'right', + 'rotate', + 'row-gap', + 'ruby-align', + 'ruby-position', + 'scale', + 'scroll-behavior', + 'scroll-margin', + 'scroll-margin-block', + 'scroll-margin-block-end', + 'scroll-margin-block-start', + 'scroll-margin-bottom', + 'scroll-margin-inline', + 'scroll-margin-inline-end', + 'scroll-margin-inline-start', + 'scroll-margin-left', + 'scroll-margin-right', + 'scroll-margin-top', + 'scroll-padding', + 'scroll-padding-block', + 'scroll-padding-block-end', + 'scroll-padding-block-start', + 'scroll-padding-bottom', + 'scroll-padding-inline', + 'scroll-padding-inline-end', + 'scroll-padding-inline-start', + 'scroll-padding-left', + 'scroll-padding-right', + 'scroll-padding-top', + 'scroll-snap-align', + 'scroll-snap-stop', + 'scroll-snap-type', + 'scroll-timeline', + 'scroll-timeline-axis', + 'scroll-timeline-name', + 'scrollbar-color', + 'scrollbar-gutter', + 'scrollbar-width', + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + 'shape-rendering', + 'speak', + 'speak-as', + 'src', // @font-face + 'stop-color', + 'stop-opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'tab-size', + 'table-layout', + 'text-align', + 'text-align-all', + 'text-align-last', + 'text-anchor', + 'text-combine-upright', + 'text-decoration', + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-skip-ink', + 'text-decoration-style', + 'text-decoration-thickness', + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + 'text-indent', + 'text-justify', + 'text-orientation', + 'text-overflow', + 'text-rendering', + 'text-shadow', + 'text-size-adjust', + 'text-transform', + 'text-underline-offset', + 'text-underline-position', + 'text-wrap', + 'text-wrap-mode', + 'text-wrap-style', + 'timeline-scope', + 'top', + 'touch-action', + 'transform', + 'transform-box', + 'transform-origin', + 'transform-style', + 'transition', + 'transition-behavior', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + 'translate', + 'unicode-bidi', + 'user-modify', + 'user-select', + 'vector-effect', + 'vertical-align', + 'view-timeline', + 'view-timeline-axis', + 'view-timeline-inset', + 'view-timeline-name', + 'view-transition-name', + 'visibility', + 'voice-balance', + 'voice-duration', + 'voice-family', + 'voice-pitch', + 'voice-range', + 'voice-rate', + 'voice-stress', + 'voice-volume', + 'white-space', + 'white-space-collapse', + 'widows', + 'width', + 'will-change', + 'word-break', + 'word-spacing', + 'word-wrap', + 'writing-mode', + 'x', + 'y', + 'z-index', + 'zoom' +].sort().reverse(); + +/* +Language: SCSS +Description: Scss is an extension of the syntax of CSS. +Author: Kurt Emch +Website: https://sass-lang.com +Category: common, css, web +*/ + + +/** @type LanguageFn */ +function scss(hljs) { + const modes = MODES(hljs); + const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS; + const PSEUDO_CLASSES$1 = PSEUDO_CLASSES; + + const AT_IDENTIFIER = '@[a-z-]+'; // @font-face + const AT_MODIFIERS = "and or not only"; + const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*'; + const VARIABLE = { + className: 'variable', + begin: '(\\$' + IDENT_RE + ')\\b', + relevance: 0 + }; + + return { + name: 'SCSS', + case_insensitive: true, + illegal: '[=/|\']', + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + // to recognize keyframe 40% etc which are outside the scope of our + // attribute value mode + modes.CSS_NUMBER_MODE, + { + className: 'selector-id', + begin: '#[A-Za-z0-9_-]+', + relevance: 0 + }, + { + className: 'selector-class', + begin: '\\.[A-Za-z0-9_-]+', + relevance: 0 + }, + modes.ATTRIBUTE_SELECTOR_MODE, + { + className: 'selector-tag', + begin: '\\b(' + TAGS.join('|') + ')\\b', + // was there, before, but why? + relevance: 0 + }, + { + className: 'selector-pseudo', + begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')' + }, + { + className: 'selector-pseudo', + begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')' + }, + VARIABLE, + { // pseudo-selector params + begin: /\(/, + end: /\)/, + contains: [ modes.CSS_NUMBER_MODE ] + }, + modes.CSS_VARIABLE, + { + className: 'attribute', + begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b' + }, + { begin: '\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b' }, + { + begin: /:/, + end: /[;}{]/, + relevance: 0, + contains: [ + modes.BLOCK_COMMENT, + VARIABLE, + modes.HEXCOLOR, + modes.CSS_NUMBER_MODE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + modes.IMPORTANT, + modes.FUNCTION_DISPATCH + ] + }, + // matching these here allows us to treat them more like regular CSS + // rules so everything between the {} gets regular rule highlighting, + // which is what we want for page and font-face + { + begin: '@(page|font-face)', + keywords: { + $pattern: AT_IDENTIFIER, + keyword: '@page @font-face' + } + }, + { + begin: '@', + end: '[{;]', + returnBegin: true, + keywords: { + $pattern: /[a-z-]+/, + keyword: AT_MODIFIERS, + attribute: MEDIA_FEATURES.join(" ") + }, + contains: [ + { + begin: AT_IDENTIFIER, + className: "keyword" + }, + { + begin: /[a-z-]+(?=:)/, + className: "attribute" + }, + VARIABLE, + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + modes.HEXCOLOR, + modes.CSS_NUMBER_MODE + ] + }, + modes.FUNCTION_DISPATCH + ] + }; +} + +module.exports = scss; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/shell.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/shell.js ***! + \**************************************************************/ +(module) { + +/* +Language: Shell Session +Requires: bash.js +Author: TSUYUSATO Kitsune +Category: common +Audit: 2020 +*/ + +/** @type LanguageFn */ +function shell(hljs) { + return { + name: 'Shell Session', + aliases: [ + 'console', + 'shellsession' + ], + contains: [ + { + className: 'meta.prompt', + // We cannot add \s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result. + // For instance, in the following example, it would match "echo /path/to/home >" as a prompt: + // echo /path/to/home > t.exe + begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/, + starts: { + end: /[^\\](?=\s*$)/, + subLanguage: 'bash' + } + } + ] + }; +} + +module.exports = shell; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/smali.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/smali.js ***! + \**************************************************************/ +(module) { + +/* +Language: Smali +Author: Dennis Titze +Description: Basic Smali highlighting +Website: https://github.com/JesusFreke/smali +Category: assembler +*/ + +function smali(hljs) { + const smali_instr_low_prio = [ + 'add', + 'and', + 'cmp', + 'cmpg', + 'cmpl', + 'const', + 'div', + 'double', + 'float', + 'goto', + 'if', + 'int', + 'long', + 'move', + 'mul', + 'neg', + 'new', + 'nop', + 'not', + 'or', + 'rem', + 'return', + 'shl', + 'shr', + 'sput', + 'sub', + 'throw', + 'ushr', + 'xor' + ]; + const smali_instr_high_prio = [ + 'aget', + 'aput', + 'array', + 'check', + 'execute', + 'fill', + 'filled', + 'goto/16', + 'goto/32', + 'iget', + 'instance', + 'invoke', + 'iput', + 'monitor', + 'packed', + 'sget', + 'sparse' + ]; + const smali_keywords = [ + 'transient', + 'constructor', + 'abstract', + 'final', + 'synthetic', + 'public', + 'private', + 'protected', + 'static', + 'bridge', + 'system' + ]; + return { + name: 'Smali', + contains: [ + { + className: 'string', + begin: '"', + end: '"', + relevance: 0 + }, + hljs.COMMENT( + '#', + '$', + { relevance: 0 } + ), + { + className: 'keyword', + variants: [ + { begin: '\\s*\\.end\\s[a-zA-Z0-9]*' }, + { + begin: '^[ ]*\\.[a-zA-Z]*', + relevance: 0 + }, + { + begin: '\\s:[a-zA-Z_0-9]*', + relevance: 0 + }, + { begin: '\\s(' + smali_keywords.join('|') + ')' } + ] + }, + { + className: 'built_in', + variants: [ + { begin: '\\s(' + smali_instr_low_prio.join('|') + ')\\s' }, + { + begin: '\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\s', + relevance: 10 + }, + { + begin: '\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\s', + relevance: 10 + } + ] + }, + { + className: 'class', + begin: 'L[^\(;:\n]*;', + relevance: 0 + }, + { begin: '[vp][0-9]+' } + ] + }; +} + +module.exports = smali; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/smalltalk.js" +/*!******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/smalltalk.js ***! + \******************************************************************/ +(module) { + +/* +Language: Smalltalk +Description: Smalltalk is an object-oriented, dynamically typed reflective programming language. +Author: Vladimir Gubarkov +Website: https://en.wikipedia.org/wiki/Smalltalk +Category: system +*/ + +function smalltalk(hljs) { + const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*'; + const CHAR = { + className: 'string', + begin: '\\$.{1}' + }; + const SYMBOL = { + className: 'symbol', + begin: '#' + hljs.UNDERSCORE_IDENT_RE + }; + return { + name: 'Smalltalk', + aliases: [ 'st' ], + keywords: [ + "self", + "super", + "nil", + "true", + "false", + "thisContext" + ], + contains: [ + hljs.COMMENT('"', '"'), + hljs.APOS_STRING_MODE, + { + className: 'type', + begin: '\\b[A-Z][A-Za-z0-9_]*', + relevance: 0 + }, + { + begin: VAR_IDENT_RE + ':', + relevance: 0 + }, + hljs.C_NUMBER_MODE, + SYMBOL, + CHAR, + { + // This looks more complicated than needed to avoid combinatorial + // explosion under V8. It effectively means `| var1 var2 ... |` with + // whitespace adjacent to `|` being optional. + begin: '\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\|', + returnBegin: true, + end: /\|/, + illegal: /\S/, + contains: [ { begin: '(\\|[ ]*)?' + VAR_IDENT_RE } ] + }, + { + begin: '#\\(', + end: '\\)', + contains: [ + hljs.APOS_STRING_MODE, + CHAR, + hljs.C_NUMBER_MODE, + SYMBOL + ] + } + ] + }; +} + +module.exports = smalltalk; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/sml.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/sml.js ***! + \************************************************************/ +(module) { + +/* +Language: SML (Standard ML) +Author: Edwin Dalorzo +Description: SML language definition. +Website: https://www.smlnj.org +Origin: ocaml.js +Category: functional +*/ +function sml(hljs) { + return { + name: 'SML (Standard ML)', + aliases: [ 'ml' ], + keywords: { + $pattern: '[a-z_]\\w*!?', + keyword: + /* according to Definition of Standard ML 97 */ + 'abstype and andalso as case datatype do else end eqtype ' + + 'exception fn fun functor handle if in include infix infixr ' + + 'let local nonfix of op open orelse raise rec sharing sig ' + + 'signature struct structure then type val with withtype where while', + built_in: + /* built-in types according to basis library */ + 'array bool char exn int list option order real ref string substring vector unit word', + literal: + 'true false NONE SOME LESS EQUAL GREATER nil' + }, + illegal: /\/\/|>>/, + contains: [ + { + className: 'literal', + begin: /\[(\|\|)?\]|\(\)/, + relevance: 0 + }, + hljs.COMMENT( + '\\(\\*', + '\\*\\)', + { contains: [ 'self' ] } + ), + { /* type variable */ + className: 'symbol', + begin: '\'[A-Za-z_](?!\')[\\w\']*' + /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ + }, + { /* polymorphic variant */ + className: 'type', + begin: '`[A-Z][\\w\']*' + }, + { /* module or constructor */ + className: 'type', + begin: '\\b[A-Z][\\w\']*', + relevance: 0 + }, + { /* don't color identifiers, but safely catch all identifiers with ' */ + begin: '[a-z_]\\w*\'[\\w\']*' }, + hljs.inherit(hljs.APOS_STRING_MODE, { + className: 'string', + relevance: 0 + }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), + { + className: 'number', + begin: + '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' + + '0[oO][0-7_]+[Lln]?|' + + '0[bB][01_]+[Lln]?|' + + '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)', + relevance: 0 + }, + { begin: /[-=]>/ // relevance booster + } + ] + }; +} + +module.exports = sml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/sqf.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/sqf.js ***! + \************************************************************/ +(module) { + +/* +Language: SQF +Author: Søren Enevoldsen +Contributors: Marvin Saignat , Dedmen Miller , Leopard20 +Description: Scripting language for the Arma game series +Website: https://community.bistudio.com/wiki/SQF_syntax +Category: scripting +Last update: 07.01.2023, Arma 3 v2.11 +*/ + +/* +//////////////////////////////////////////////////////////////////////////////////////////// + * Author: Leopard20 + + * Description: + This script can be used to dump all commands to the clipboard. + Make sure you're using the Diag EXE to dump all of the commands. + + * How to use: + Simply replace the _KEYWORDS and _LITERAL arrays with the one from this sqf.js file. + Execute the script from the debug console. + All commands will be copied to the clipboard. +//////////////////////////////////////////////////////////////////////////////////////////// +_KEYWORDS = ['if']; //Array of all KEYWORDS +_LITERALS = ['west']; //Array of all LITERALS +_allCommands = createHashMap; +{ + _type = _x select [0,1]; + if (_type != "t") then { + _command_lowercase = ((_x select [2]) splitString " ")#(((["n", "u", "b"] find _type) - 1) max 0); + _command_uppercase = supportInfo ("i:" + _command_lowercase) # 0 # 2; + _allCommands set [_command_lowercase, _command_uppercase]; + }; +} forEach supportInfo ""; +_allCommands = _allCommands toArray false; +_allCommands sort true; //sort by lowercase +_allCommands = ((_allCommands apply {_x#1}) -_KEYWORDS)-_LITERALS; //remove KEYWORDS and LITERALS +copyToClipboard (str (_allCommands select {_x regexMatch "\w+"}) regexReplace ["""", "'"] regexReplace [",", ",\n"]); +*/ + +function sqf(hljs) { + // In SQF, a local variable starts with _ + const VARIABLE = { + className: 'variable', + begin: /\b_+[a-zA-Z]\w*/ + }; + + // In SQF, a function should fit myTag_fnc_myFunction pattern + // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function + const FUNCTION = { + className: 'title', + begin: /[a-zA-Z][a-zA-Z_0-9]*_fnc_[a-zA-Z_0-9]+/ + }; + + // In SQF strings, quotes matching the start are escaped by adding a consecutive. + // Example of single escaped quotes: " "" " and ' '' '. + const STRINGS = { + className: 'string', + variants: [ + { + begin: '"', + end: '"', + contains: [ + { + begin: '""', + relevance: 0 + } + ] + }, + { + begin: '\'', + end: '\'', + contains: [ + { + begin: '\'\'', + relevance: 0 + } + ] + } + ] + }; + + const KEYWORDS = [ + 'break', + 'breakWith', + 'breakOut', + 'breakTo', + 'case', + 'catch', + 'continue', + 'continueWith', + 'default', + 'do', + 'else', + 'exit', + 'exitWith', + 'for', + 'forEach', + 'from', + 'if', + 'local', + 'private', + 'switch', + 'step', + 'then', + 'throw', + 'to', + 'try', + 'waitUntil', + 'while', + 'with' + ]; + + const LITERAL = [ + 'blufor', + 'civilian', + 'configNull', + 'controlNull', + 'displayNull', + 'diaryRecordNull', + 'east', + 'endl', + 'false', + 'grpNull', + 'independent', + 'lineBreak', + 'locationNull', + 'nil', + 'objNull', + 'opfor', + 'pi', + 'resistance', + 'scriptNull', + 'sideAmbientLife', + 'sideEmpty', + 'sideEnemy', + 'sideFriendly', + 'sideLogic', + 'sideUnknown', + 'taskNull', + 'teamMemberNull', + 'true', + 'west' + ]; + + const BUILT_IN = [ + 'abs', + 'accTime', + 'acos', + 'action', + 'actionIDs', + 'actionKeys', + 'actionKeysEx', + 'actionKeysImages', + 'actionKeysNames', + 'actionKeysNamesArray', + 'actionName', + 'actionParams', + 'activateAddons', + 'activatedAddons', + 'activateKey', + 'activeTitleEffectParams', + 'add3DENConnection', + 'add3DENEventHandler', + 'add3DENLayer', + 'addAction', + 'addBackpack', + 'addBackpackCargo', + 'addBackpackCargoGlobal', + 'addBackpackGlobal', + 'addBinocularItem', + 'addCamShake', + 'addCuratorAddons', + 'addCuratorCameraArea', + 'addCuratorEditableObjects', + 'addCuratorEditingArea', + 'addCuratorPoints', + 'addEditorObject', + 'addEventHandler', + 'addForce', + 'addForceGeneratorRTD', + 'addGoggles', + 'addGroupIcon', + 'addHandgunItem', + 'addHeadgear', + 'addItem', + 'addItemCargo', + 'addItemCargoGlobal', + 'addItemPool', + 'addItemToBackpack', + 'addItemToUniform', + 'addItemToVest', + 'addLiveStats', + 'addMagazine', + 'addMagazineAmmoCargo', + 'addMagazineCargo', + 'addMagazineCargoGlobal', + 'addMagazineGlobal', + 'addMagazinePool', + 'addMagazines', + 'addMagazineTurret', + 'addMenu', + 'addMenuItem', + 'addMissionEventHandler', + 'addMPEventHandler', + 'addMusicEventHandler', + 'addonFiles', + 'addOwnedMine', + 'addPlayerScores', + 'addPrimaryWeaponItem', + 'addPublicVariableEventHandler', + 'addRating', + 'addResources', + 'addScore', + 'addScoreSide', + 'addSecondaryWeaponItem', + 'addSwitchableUnit', + 'addTeamMember', + 'addToRemainsCollector', + 'addTorque', + 'addUniform', + 'addUserActionEventHandler', + 'addVehicle', + 'addVest', + 'addWaypoint', + 'addWeapon', + 'addWeaponCargo', + 'addWeaponCargoGlobal', + 'addWeaponGlobal', + 'addWeaponItem', + 'addWeaponPool', + 'addWeaponTurret', + 'addWeaponWithAttachmentsCargo', + 'addWeaponWithAttachmentsCargoGlobal', + 'admin', + 'agent', + 'agents', + 'AGLToASL', + 'aimedAtTarget', + 'aimPos', + 'airDensityCurveRTD', + 'airDensityRTD', + 'airplaneThrottle', + 'airportSide', + 'AISFinishHeal', + 'alive', + 'all3DENEntities', + 'allActiveTitleEffects', + 'allAddonsInfo', + 'allAirports', + 'allControls', + 'allCurators', + 'allCutLayers', + 'allDead', + 'allDeadMen', + 'allDiaryRecords', + 'allDiarySubjects', + 'allDisplays', + 'allEnv3DSoundSources', + 'allGroups', + 'allLODs', + 'allMapMarkers', + 'allMines', + 'allMissionObjects', + 'allObjects', + 'allow3DMode', + 'allowCrewInImmobile', + 'allowCuratorLogicIgnoreAreas', + 'allowDamage', + 'allowDammage', + 'allowedService', + 'allowFileOperations', + 'allowFleeing', + 'allowGetIn', + 'allowService', + 'allowSprint', + 'allPlayers', + 'allSimpleObjects', + 'allSites', + 'allTurrets', + 'allUnits', + 'allUnitsUAV', + 'allUsers', + 'allVariables', + 'ambientTemperature', + 'ammo', + 'ammoOnPylon', + 'and', + 'animate', + 'animateBay', + 'animateDoor', + 'animatePylon', + 'animateSource', + 'animationNames', + 'animationPhase', + 'animationSourcePhase', + 'animationState', + 'apertureParams', + 'append', + 'apply', + 'armoryPoints', + 'arrayIntersect', + 'asin', + 'ASLToAGL', + 'ASLToATL', + 'assert', + 'assignAsCargo', + 'assignAsCargoIndex', + 'assignAsCommander', + 'assignAsDriver', + 'assignAsGunner', + 'assignAsTurret', + 'assignCurator', + 'assignedCargo', + 'assignedCommander', + 'assignedDriver', + 'assignedGroup', + 'assignedGunner', + 'assignedItems', + 'assignedTarget', + 'assignedTeam', + 'assignedVehicle', + 'assignedVehicleRole', + 'assignedVehicles', + 'assignItem', + 'assignTeam', + 'assignToAirport', + 'atan', + 'atan2', + 'atg', + 'ATLToASL', + 'attachedObject', + 'attachedObjects', + 'attachedTo', + 'attachObject', + 'attachTo', + 'attackEnabled', + 'awake', + 'backpack', + 'backpackCargo', + 'backpackContainer', + 'backpackItems', + 'backpackMagazines', + 'backpackSpaceFor', + 'behaviour', + 'benchmark', + 'bezierInterpolation', + 'binocular', + 'binocularItems', + 'binocularMagazine', + 'boundingBox', + 'boundingBoxReal', + 'boundingCenter', + 'brakesDisabled', + 'briefingName', + 'buildingExit', + 'buildingPos', + 'buldozer_EnableRoadDiag', + 'buldozer_IsEnabledRoadDiag', + 'buldozer_LoadNewRoads', + 'buldozer_reloadOperMap', + 'buttonAction', + 'buttonSetAction', + 'cadetMode', + 'calculatePath', + 'calculatePlayerVisibilityByFriendly', + 'call', + 'callExtension', + 'camCommand', + 'camCommit', + 'camCommitPrepared', + 'camCommitted', + 'camConstuctionSetParams', + 'camCreate', + 'camDestroy', + 'cameraEffect', + 'cameraEffectEnableHUD', + 'cameraInterest', + 'cameraOn', + 'cameraView', + 'campaignConfigFile', + 'camPreload', + 'camPreloaded', + 'camPrepareBank', + 'camPrepareDir', + 'camPrepareDive', + 'camPrepareFocus', + 'camPrepareFov', + 'camPrepareFovRange', + 'camPreparePos', + 'camPrepareRelPos', + 'camPrepareTarget', + 'camSetBank', + 'camSetDir', + 'camSetDive', + 'camSetFocus', + 'camSetFov', + 'camSetFovRange', + 'camSetPos', + 'camSetRelPos', + 'camSetTarget', + 'camTarget', + 'camUseNVG', + 'canAdd', + 'canAddItemToBackpack', + 'canAddItemToUniform', + 'canAddItemToVest', + 'cancelSimpleTaskDestination', + 'canDeployWeapon', + 'canFire', + 'canMove', + 'canSlingLoad', + 'canStand', + 'canSuspend', + 'canTriggerDynamicSimulation', + 'canUnloadInCombat', + 'canVehicleCargo', + 'captive', + 'captiveNum', + 'cbChecked', + 'cbSetChecked', + 'ceil', + 'channelEnabled', + 'cheatsEnabled', + 'checkAIFeature', + 'checkVisibility', + 'className', + 'clear3DENAttribute', + 'clear3DENInventory', + 'clearAllItemsFromBackpack', + 'clearBackpackCargo', + 'clearBackpackCargoGlobal', + 'clearForcesRTD', + 'clearGroupIcons', + 'clearItemCargo', + 'clearItemCargoGlobal', + 'clearItemPool', + 'clearMagazineCargo', + 'clearMagazineCargoGlobal', + 'clearMagazinePool', + 'clearOverlay', + 'clearRadio', + 'clearWeaponCargo', + 'clearWeaponCargoGlobal', + 'clearWeaponPool', + 'clientOwner', + 'closeDialog', + 'closeDisplay', + 'closeOverlay', + 'collapseObjectTree', + 'collect3DENHistory', + 'collectiveRTD', + 'collisionDisabledWith', + 'combatBehaviour', + 'combatMode', + 'commandArtilleryFire', + 'commandChat', + 'commander', + 'commandFire', + 'commandFollow', + 'commandFSM', + 'commandGetOut', + 'commandingMenu', + 'commandMove', + 'commandRadio', + 'commandStop', + 'commandSuppressiveFire', + 'commandTarget', + 'commandWatch', + 'comment', + 'commitOverlay', + 'compatibleItems', + 'compatibleMagazines', + 'compile', + 'compileFinal', + 'compileScript', + 'completedFSM', + 'composeText', + 'configClasses', + 'configFile', + 'configHierarchy', + 'configName', + 'configOf', + 'configProperties', + 'configSourceAddonList', + 'configSourceMod', + 'configSourceModList', + 'confirmSensorTarget', + 'connectTerminalToUAV', + 'connectToServer', + 'controlsGroupCtrl', + 'conversationDisabled', + 'copyFromClipboard', + 'copyToClipboard', + 'copyWaypoints', + 'cos', + 'count', + 'countEnemy', + 'countFriendly', + 'countSide', + 'countType', + 'countUnknown', + 'create3DENComposition', + 'create3DENEntity', + 'createAgent', + 'createCenter', + 'createDialog', + 'createDiaryLink', + 'createDiaryRecord', + 'createDiarySubject', + 'createDisplay', + 'createGearDialog', + 'createGroup', + 'createGuardedPoint', + 'createHashMap', + 'createHashMapFromArray', + 'createLocation', + 'createMarker', + 'createMarkerLocal', + 'createMenu', + 'createMine', + 'createMissionDisplay', + 'createMPCampaignDisplay', + 'createSimpleObject', + 'createSimpleTask', + 'createSite', + 'createSoundSource', + 'createTask', + 'createTeam', + 'createTrigger', + 'createUnit', + 'createVehicle', + 'createVehicleCrew', + 'createVehicleLocal', + 'crew', + 'ctAddHeader', + 'ctAddRow', + 'ctClear', + 'ctCurSel', + 'ctData', + 'ctFindHeaderRows', + 'ctFindRowHeader', + 'ctHeaderControls', + 'ctHeaderCount', + 'ctRemoveHeaders', + 'ctRemoveRows', + 'ctrlActivate', + 'ctrlAddEventHandler', + 'ctrlAngle', + 'ctrlAnimateModel', + 'ctrlAnimationPhaseModel', + 'ctrlAt', + 'ctrlAutoScrollDelay', + 'ctrlAutoScrollRewind', + 'ctrlAutoScrollSpeed', + 'ctrlBackgroundColor', + 'ctrlChecked', + 'ctrlClassName', + 'ctrlCommit', + 'ctrlCommitted', + 'ctrlCreate', + 'ctrlDelete', + 'ctrlEnable', + 'ctrlEnabled', + 'ctrlFade', + 'ctrlFontHeight', + 'ctrlForegroundColor', + 'ctrlHTMLLoaded', + 'ctrlIDC', + 'ctrlIDD', + 'ctrlMapAnimAdd', + 'ctrlMapAnimClear', + 'ctrlMapAnimCommit', + 'ctrlMapAnimDone', + 'ctrlMapCursor', + 'ctrlMapMouseOver', + 'ctrlMapPosition', + 'ctrlMapScale', + 'ctrlMapScreenToWorld', + 'ctrlMapSetPosition', + 'ctrlMapWorldToScreen', + 'ctrlModel', + 'ctrlModelDirAndUp', + 'ctrlModelScale', + 'ctrlMousePosition', + 'ctrlParent', + 'ctrlParentControlsGroup', + 'ctrlPosition', + 'ctrlRemoveAllEventHandlers', + 'ctrlRemoveEventHandler', + 'ctrlScale', + 'ctrlScrollValues', + 'ctrlSetActiveColor', + 'ctrlSetAngle', + 'ctrlSetAutoScrollDelay', + 'ctrlSetAutoScrollRewind', + 'ctrlSetAutoScrollSpeed', + 'ctrlSetBackgroundColor', + 'ctrlSetChecked', + 'ctrlSetDisabledColor', + 'ctrlSetEventHandler', + 'ctrlSetFade', + 'ctrlSetFocus', + 'ctrlSetFont', + 'ctrlSetFontH1', + 'ctrlSetFontH1B', + 'ctrlSetFontH2', + 'ctrlSetFontH2B', + 'ctrlSetFontH3', + 'ctrlSetFontH3B', + 'ctrlSetFontH4', + 'ctrlSetFontH4B', + 'ctrlSetFontH5', + 'ctrlSetFontH5B', + 'ctrlSetFontH6', + 'ctrlSetFontH6B', + 'ctrlSetFontHeight', + 'ctrlSetFontHeightH1', + 'ctrlSetFontHeightH2', + 'ctrlSetFontHeightH3', + 'ctrlSetFontHeightH4', + 'ctrlSetFontHeightH5', + 'ctrlSetFontHeightH6', + 'ctrlSetFontHeightSecondary', + 'ctrlSetFontP', + 'ctrlSetFontPB', + 'ctrlSetFontSecondary', + 'ctrlSetForegroundColor', + 'ctrlSetModel', + 'ctrlSetModelDirAndUp', + 'ctrlSetModelScale', + 'ctrlSetMousePosition', + 'ctrlSetPixelPrecision', + 'ctrlSetPosition', + 'ctrlSetPositionH', + 'ctrlSetPositionW', + 'ctrlSetPositionX', + 'ctrlSetPositionY', + 'ctrlSetScale', + 'ctrlSetScrollValues', + 'ctrlSetShadow', + 'ctrlSetStructuredText', + 'ctrlSetText', + 'ctrlSetTextColor', + 'ctrlSetTextColorSecondary', + 'ctrlSetTextSecondary', + 'ctrlSetTextSelection', + 'ctrlSetTooltip', + 'ctrlSetTooltipColorBox', + 'ctrlSetTooltipColorShade', + 'ctrlSetTooltipColorText', + 'ctrlSetTooltipMaxWidth', + 'ctrlSetURL', + 'ctrlSetURLOverlayMode', + 'ctrlShadow', + 'ctrlShow', + 'ctrlShown', + 'ctrlStyle', + 'ctrlText', + 'ctrlTextColor', + 'ctrlTextHeight', + 'ctrlTextSecondary', + 'ctrlTextSelection', + 'ctrlTextWidth', + 'ctrlTooltip', + 'ctrlType', + 'ctrlURL', + 'ctrlURLOverlayMode', + 'ctrlVisible', + 'ctRowControls', + 'ctRowCount', + 'ctSetCurSel', + 'ctSetData', + 'ctSetHeaderTemplate', + 'ctSetRowTemplate', + 'ctSetValue', + 'ctValue', + 'curatorAddons', + 'curatorCamera', + 'curatorCameraArea', + 'curatorCameraAreaCeiling', + 'curatorCoef', + 'curatorEditableObjects', + 'curatorEditingArea', + 'curatorEditingAreaType', + 'curatorMouseOver', + 'curatorPoints', + 'curatorRegisteredObjects', + 'curatorSelected', + 'curatorWaypointCost', + 'current3DENOperation', + 'currentChannel', + 'currentCommand', + 'currentMagazine', + 'currentMagazineDetail', + 'currentMagazineDetailTurret', + 'currentMagazineTurret', + 'currentMuzzle', + 'currentNamespace', + 'currentPilot', + 'currentTask', + 'currentTasks', + 'currentThrowable', + 'currentVisionMode', + 'currentWaypoint', + 'currentWeapon', + 'currentWeaponMode', + 'currentWeaponTurret', + 'currentZeroing', + 'cursorObject', + 'cursorTarget', + 'customChat', + 'customRadio', + 'customWaypointPosition', + 'cutFadeOut', + 'cutObj', + 'cutRsc', + 'cutText', + 'damage', + 'date', + 'dateToNumber', + 'dayTime', + 'deActivateKey', + 'debriefingText', + 'debugFSM', + 'debugLog', + 'decayGraphValues', + 'deg', + 'delete3DENEntities', + 'deleteAt', + 'deleteCenter', + 'deleteCollection', + 'deleteEditorObject', + 'deleteGroup', + 'deleteGroupWhenEmpty', + 'deleteIdentity', + 'deleteLocation', + 'deleteMarker', + 'deleteMarkerLocal', + 'deleteRange', + 'deleteResources', + 'deleteSite', + 'deleteStatus', + 'deleteTeam', + 'deleteVehicle', + 'deleteVehicleCrew', + 'deleteWaypoint', + 'detach', + 'detectedMines', + 'diag_activeMissionFSMs', + 'diag_activeScripts', + 'diag_activeSQFScripts', + 'diag_activeSQSScripts', + 'diag_allMissionEventHandlers', + 'diag_captureFrame', + 'diag_captureFrameToFile', + 'diag_captureSlowFrame', + 'diag_codePerformance', + 'diag_deltaTime', + 'diag_drawmode', + 'diag_dumpCalltraceToLog', + 'diag_dumpScriptAssembly', + 'diag_dumpTerrainSynth', + 'diag_dynamicSimulationEnd', + 'diag_enable', + 'diag_enabled', + 'diag_exportConfig', + 'diag_exportTerrainSVG', + 'diag_fps', + 'diag_fpsmin', + 'diag_frameno', + 'diag_getTerrainSegmentOffset', + 'diag_lightNewLoad', + 'diag_list', + 'diag_localized', + 'diag_log', + 'diag_logSlowFrame', + 'diag_mergeConfigFile', + 'diag_recordTurretLimits', + 'diag_resetFSM', + 'diag_resetshapes', + 'diag_scope', + 'diag_setLightNew', + 'diag_stacktrace', + 'diag_tickTime', + 'diag_toggle', + 'dialog', + 'diarySubjectExists', + 'didJIP', + 'didJIPOwner', + 'difficulty', + 'difficultyEnabled', + 'difficultyEnabledRTD', + 'difficultyOption', + 'direction', + 'directionStabilizationEnabled', + 'directSay', + 'disableAI', + 'disableBrakes', + 'disableCollisionWith', + 'disableConversation', + 'disableDebriefingStats', + 'disableMapIndicators', + 'disableNVGEquipment', + 'disableRemoteSensors', + 'disableSerialization', + 'disableTIEquipment', + 'disableUAVConnectability', + 'disableUserInput', + 'displayAddEventHandler', + 'displayChild', + 'displayCtrl', + 'displayParent', + 'displayRemoveAllEventHandlers', + 'displayRemoveEventHandler', + 'displaySetEventHandler', + 'displayUniqueName', + 'displayUpdate', + 'dissolveTeam', + 'distance', + 'distance2D', + 'distanceSqr', + 'distributionRegion', + 'do3DENAction', + 'doArtilleryFire', + 'doFire', + 'doFollow', + 'doFSM', + 'doGetOut', + 'doMove', + 'doorPhase', + 'doStop', + 'doSuppressiveFire', + 'doTarget', + 'doWatch', + 'drawArrow', + 'drawEllipse', + 'drawIcon', + 'drawIcon3D', + 'drawLaser', + 'drawLine', + 'drawLine3D', + 'drawLink', + 'drawLocation', + 'drawPolygon', + 'drawRectangle', + 'drawTriangle', + 'driver', + 'drop', + 'dynamicSimulationDistance', + 'dynamicSimulationDistanceCoef', + 'dynamicSimulationEnabled', + 'dynamicSimulationSystemEnabled', + 'echo', + 'edit3DENMissionAttributes', + 'editObject', + 'editorSetEventHandler', + 'effectiveCommander', + 'elevatePeriscope', + 'emptyPositions', + 'enableAI', + 'enableAIFeature', + 'enableAimPrecision', + 'enableAttack', + 'enableAudioFeature', + 'enableAutoStartUpRTD', + 'enableAutoTrimRTD', + 'enableCamShake', + 'enableCaustics', + 'enableChannel', + 'enableCollisionWith', + 'enableCopilot', + 'enableDebriefingStats', + 'enableDiagLegend', + 'enableDirectionStabilization', + 'enableDynamicSimulation', + 'enableDynamicSimulationSystem', + 'enableEndDialog', + 'enableEngineArtillery', + 'enableEnvironment', + 'enableFatigue', + 'enableGunLights', + 'enableInfoPanelComponent', + 'enableIRLasers', + 'enableMimics', + 'enablePersonTurret', + 'enableRadio', + 'enableReload', + 'enableRopeAttach', + 'enableSatNormalOnDetail', + 'enableSaving', + 'enableSentences', + 'enableSimulation', + 'enableSimulationGlobal', + 'enableStamina', + 'enableStressDamage', + 'enableTeamSwitch', + 'enableTraffic', + 'enableUAVConnectability', + 'enableUAVWaypoints', + 'enableVehicleCargo', + 'enableVehicleSensor', + 'enableWeaponDisassembly', + 'endLoadingScreen', + 'endMission', + 'engineOn', + 'enginesIsOnRTD', + 'enginesPowerRTD', + 'enginesRpmRTD', + 'enginesTorqueRTD', + 'entities', + 'environmentEnabled', + 'environmentVolume', + 'equipmentDisabled', + 'estimatedEndServerTime', + 'estimatedTimeLeft', + 'evalObjectArgument', + 'everyBackpack', + 'everyContainer', + 'exec', + 'execEditorScript', + 'execFSM', + 'execVM', + 'exp', + 'expectedDestination', + 'exportJIPMessages', + 'eyeDirection', + 'eyePos', + 'face', + 'faction', + 'fadeEnvironment', + 'fadeMusic', + 'fadeRadio', + 'fadeSound', + 'fadeSpeech', + 'failMission', + 'fileExists', + 'fillWeaponsFromPool', + 'find', + 'findAny', + 'findCover', + 'findDisplay', + 'findEditorObject', + 'findEmptyPosition', + 'findEmptyPositionReady', + 'findIf', + 'findNearestEnemy', + 'finishMissionInit', + 'finite', + 'fire', + 'fireAtTarget', + 'firstBackpack', + 'flag', + 'flagAnimationPhase', + 'flagOwner', + 'flagSide', + 'flagTexture', + 'flatten', + 'fleeing', + 'floor', + 'flyInHeight', + 'flyInHeightASL', + 'focusedCtrl', + 'fog', + 'fogForecast', + 'fogParams', + 'forceAddUniform', + 'forceAtPositionRTD', + 'forceCadetDifficulty', + 'forcedMap', + 'forceEnd', + 'forceFlagTexture', + 'forceFollowRoad', + 'forceGeneratorRTD', + 'forceMap', + 'forceRespawn', + 'forceSpeed', + 'forceUnicode', + 'forceWalk', + 'forceWeaponFire', + 'forceWeatherChange', + 'forEachMember', + 'forEachMemberAgent', + 'forEachMemberTeam', + 'forgetTarget', + 'format', + 'formation', + 'formationDirection', + 'formationLeader', + 'formationMembers', + 'formationPosition', + 'formationTask', + 'formatText', + 'formLeader', + 'freeExtension', + 'freeLook', + 'fromEditor', + 'fuel', + 'fullCrew', + 'gearIDCAmmoCount', + 'gearSlotAmmoCount', + 'gearSlotData', + 'gestureState', + 'get', + 'get3DENActionState', + 'get3DENAttribute', + 'get3DENCamera', + 'get3DENConnections', + 'get3DENEntity', + 'get3DENEntityID', + 'get3DENGrid', + 'get3DENIconsVisible', + 'get3DENLayerEntities', + 'get3DENLinesVisible', + 'get3DENMissionAttribute', + 'get3DENMouseOver', + 'get3DENSelected', + 'getAimingCoef', + 'getAllEnv3DSoundControllers', + 'getAllEnvSoundControllers', + 'getAllHitPointsDamage', + 'getAllOwnedMines', + 'getAllPylonsInfo', + 'getAllSoundControllers', + 'getAllUnitTraits', + 'getAmmoCargo', + 'getAnimAimPrecision', + 'getAnimSpeedCoef', + 'getArray', + 'getArtilleryAmmo', + 'getArtilleryComputerSettings', + 'getArtilleryETA', + 'getAssetDLCInfo', + 'getAssignedCuratorLogic', + 'getAssignedCuratorUnit', + 'getAttackTarget', + 'getAudioOptionVolumes', + 'getBackpackCargo', + 'getBleedingRemaining', + 'getBurningValue', + 'getCalculatePlayerVisibilityByFriendly', + 'getCameraViewDirection', + 'getCargoIndex', + 'getCenterOfMass', + 'getClientState', + 'getClientStateNumber', + 'getCompatiblePylonMagazines', + 'getConnectedUAV', + 'getConnectedUAVUnit', + 'getContainerMaxLoad', + 'getCorpse', + 'getCruiseControl', + 'getCursorObjectParams', + 'getCustomAimCoef', + 'getCustomSoundController', + 'getCustomSoundControllerCount', + 'getDammage', + 'getDebriefingText', + 'getDescription', + 'getDir', + 'getDirVisual', + 'getDiverState', + 'getDLCAssetsUsage', + 'getDLCAssetsUsageByName', + 'getDLCs', + 'getDLCUsageTime', + 'getEditorCamera', + 'getEditorMode', + 'getEditorObjectScope', + 'getElevationOffset', + 'getEngineTargetRPMRTD', + 'getEnv3DSoundController', + 'getEnvSoundController', + 'getEventHandlerInfo', + 'getFatigue', + 'getFieldManualStartPage', + 'getForcedFlagTexture', + 'getForcedSpeed', + 'getFriend', + 'getFSMVariable', + 'getFuelCargo', + 'getGraphValues', + 'getGroupIcon', + 'getGroupIconParams', + 'getGroupIcons', + 'getHideFrom', + 'getHit', + 'getHitIndex', + 'getHitPointDamage', + 'getItemCargo', + 'getLighting', + 'getLightingAt', + 'getLoadedModsInfo', + 'getMagazineCargo', + 'getMarkerColor', + 'getMarkerPos', + 'getMarkerSize', + 'getMarkerType', + 'getMass', + 'getMissionConfig', + 'getMissionConfigValue', + 'getMissionDLCs', + 'getMissionLayerEntities', + 'getMissionLayers', + 'getMissionPath', + 'getModelInfo', + 'getMousePosition', + 'getMusicPlayedTime', + 'getNumber', + 'getObjectArgument', + 'getObjectChildren', + 'getObjectDLC', + 'getObjectFOV', + 'getObjectID', + 'getObjectMaterials', + 'getObjectProxy', + 'getObjectScale', + 'getObjectTextures', + 'getObjectType', + 'getObjectViewDistance', + 'getOpticsMode', + 'getOrDefault', + 'getOrDefaultCall', + 'getOxygenRemaining', + 'getPersonUsedDLCs', + 'getPilotCameraDirection', + 'getPilotCameraPosition', + 'getPilotCameraRotation', + 'getPilotCameraTarget', + 'getPiPViewDistance', + 'getPlateNumber', + 'getPlayerChannel', + 'getPlayerID', + 'getPlayerScores', + 'getPlayerUID', + 'getPlayerVoNVolume', + 'getPos', + 'getPosASL', + 'getPosASLVisual', + 'getPosASLW', + 'getPosATL', + 'getPosATLVisual', + 'getPosVisual', + 'getPosWorld', + 'getPosWorldVisual', + 'getPylonMagazines', + 'getRelDir', + 'getRelPos', + 'getRemoteSensorsDisabled', + 'getRepairCargo', + 'getResolution', + 'getRoadInfo', + 'getRotorBrakeRTD', + 'getSensorTargets', + 'getSensorThreats', + 'getShadowDistance', + 'getShotParents', + 'getSlingLoad', + 'getSoundController', + 'getSoundControllerResult', + 'getSpeed', + 'getStamina', + 'getStatValue', + 'getSteamFriendsServers', + 'getSubtitleOptions', + 'getSuppression', + 'getTerrainGrid', + 'getTerrainHeight', + 'getTerrainHeightASL', + 'getTerrainInfo', + 'getText', + 'getTextRaw', + 'getTextureInfo', + 'getTextWidth', + 'getTiParameters', + 'getTotalDLCUsageTime', + 'getTrimOffsetRTD', + 'getTurretLimits', + 'getTurretOpticsMode', + 'getUnitFreefallInfo', + 'getUnitLoadout', + 'getUnitTrait', + 'getUnloadInCombat', + 'getUserInfo', + 'getUserMFDText', + 'getUserMFDValue', + 'getVariable', + 'getVehicleCargo', + 'getVehicleTiPars', + 'getWeaponCargo', + 'getWeaponSway', + 'getWingsOrientationRTD', + 'getWingsPositionRTD', + 'getWPPos', + 'glanceAt', + 'globalChat', + 'globalRadio', + 'goggles', + 'goto', + 'group', + 'groupChat', + 'groupFromNetId', + 'groupIconSelectable', + 'groupIconsVisible', + 'groupID', + 'groupOwner', + 'groupRadio', + 'groups', + 'groupSelectedUnits', + 'groupSelectUnit', + 'gunner', + 'gusts', + 'halt', + 'handgunItems', + 'handgunMagazine', + 'handgunWeapon', + 'handsHit', + 'hashValue', + 'hasInterface', + 'hasPilotCamera', + 'hasWeapon', + 'hcAllGroups', + 'hcGroupParams', + 'hcLeader', + 'hcRemoveAllGroups', + 'hcRemoveGroup', + 'hcSelected', + 'hcSelectGroup', + 'hcSetGroup', + 'hcShowBar', + 'hcShownBar', + 'headgear', + 'hideBody', + 'hideObject', + 'hideObjectGlobal', + 'hideSelection', + 'hint', + 'hintC', + 'hintCadet', + 'hintSilent', + 'hmd', + 'hostMission', + 'htmlLoad', + 'HUDMovementLevels', + 'humidity', + 'image', + 'importAllGroups', + 'importance', + 'in', + 'inArea', + 'inAreaArray', + 'incapacitatedState', + 'inflame', + 'inflamed', + 'infoPanel', + 'infoPanelComponentEnabled', + 'infoPanelComponents', + 'infoPanels', + 'inGameUISetEventHandler', + 'inheritsFrom', + 'initAmbientLife', + 'inPolygon', + 'inputAction', + 'inputController', + 'inputMouse', + 'inRangeOfArtillery', + 'insert', + 'insertEditorObject', + 'intersect', + 'is3DEN', + 'is3DENMultiplayer', + 'is3DENPreview', + 'isAbleToBreathe', + 'isActionMenuVisible', + 'isAgent', + 'isAimPrecisionEnabled', + 'isAllowedCrewInImmobile', + 'isArray', + 'isAutoHoverOn', + 'isAutonomous', + 'isAutoStartUpEnabledRTD', + 'isAutotest', + 'isAutoTrimOnRTD', + 'isAwake', + 'isBleeding', + 'isBurning', + 'isClass', + 'isCollisionLightOn', + 'isCopilotEnabled', + 'isDamageAllowed', + 'isDedicated', + 'isDLCAvailable', + 'isEngineOn', + 'isEqualRef', + 'isEqualTo', + 'isEqualType', + 'isEqualTypeAll', + 'isEqualTypeAny', + 'isEqualTypeArray', + 'isEqualTypeParams', + 'isFilePatchingEnabled', + 'isFinal', + 'isFlashlightOn', + 'isFlatEmpty', + 'isForcedWalk', + 'isFormationLeader', + 'isGameFocused', + 'isGamePaused', + 'isGroupDeletedWhenEmpty', + 'isHidden', + 'isInRemainsCollector', + 'isInstructorFigureEnabled', + 'isIRLaserOn', + 'isKeyActive', + 'isKindOf', + 'isLaserOn', + 'isLightOn', + 'isLocalized', + 'isManualFire', + 'isMarkedForCollection', + 'isMissionProfileNamespaceLoaded', + 'isMultiplayer', + 'isMultiplayerSolo', + 'isNil', + 'isNotEqualRef', + 'isNotEqualTo', + 'isNull', + 'isNumber', + 'isObjectHidden', + 'isObjectRTD', + 'isOnRoad', + 'isPiPEnabled', + 'isPlayer', + 'isRealTime', + 'isRemoteExecuted', + 'isRemoteExecutedJIP', + 'isSaving', + 'isSensorTargetConfirmed', + 'isServer', + 'isShowing3DIcons', + 'isSimpleObject', + 'isSprintAllowed', + 'isStaminaEnabled', + 'isSteamMission', + 'isSteamOverlayEnabled', + 'isStreamFriendlyUIEnabled', + 'isStressDamageEnabled', + 'isText', + 'isTouchingGround', + 'isTurnedOut', + 'isTutHintsEnabled', + 'isUAVConnectable', + 'isUAVConnected', + 'isUIContext', + 'isUniformAllowed', + 'isVehicleCargo', + 'isVehicleRadarOn', + 'isVehicleSensorEnabled', + 'isWalking', + 'isWeaponDeployed', + 'isWeaponRested', + 'itemCargo', + 'items', + 'itemsWithMagazines', + 'join', + 'joinAs', + 'joinAsSilent', + 'joinSilent', + 'joinString', + 'kbAddDatabase', + 'kbAddDatabaseTargets', + 'kbAddTopic', + 'kbHasTopic', + 'kbReact', + 'kbRemoveTopic', + 'kbTell', + 'kbWasSaid', + 'keyImage', + 'keyName', + 'keys', + 'knowsAbout', + 'land', + 'landAt', + 'landResult', + 'language', + 'laserTarget', + 'lbAdd', + 'lbClear', + 'lbColor', + 'lbColorRight', + 'lbCurSel', + 'lbData', + 'lbDelete', + 'lbIsSelected', + 'lbPicture', + 'lbPictureRight', + 'lbSelection', + 'lbSetColor', + 'lbSetColorRight', + 'lbSetCurSel', + 'lbSetData', + 'lbSetPicture', + 'lbSetPictureColor', + 'lbSetPictureColorDisabled', + 'lbSetPictureColorSelected', + 'lbSetPictureRight', + 'lbSetPictureRightColor', + 'lbSetPictureRightColorDisabled', + 'lbSetPictureRightColorSelected', + 'lbSetSelectColor', + 'lbSetSelectColorRight', + 'lbSetSelected', + 'lbSetText', + 'lbSetTextRight', + 'lbSetTooltip', + 'lbSetValue', + 'lbSize', + 'lbSort', + 'lbSortBy', + 'lbSortByValue', + 'lbText', + 'lbTextRight', + 'lbTooltip', + 'lbValue', + 'leader', + 'leaderboardDeInit', + 'leaderboardGetRows', + 'leaderboardInit', + 'leaderboardRequestRowsFriends', + 'leaderboardRequestRowsGlobal', + 'leaderboardRequestRowsGlobalAroundUser', + 'leaderboardsRequestUploadScore', + 'leaderboardsRequestUploadScoreKeepBest', + 'leaderboardState', + 'leaveVehicle', + 'libraryCredits', + 'libraryDisclaimers', + 'lifeState', + 'lightAttachObject', + 'lightDetachObject', + 'lightIsOn', + 'lightnings', + 'limitSpeed', + 'linearConversion', + 'lineIntersects', + 'lineIntersectsObjs', + 'lineIntersectsSurfaces', + 'lineIntersectsWith', + 'linkItem', + 'list', + 'listObjects', + 'listRemoteTargets', + 'listVehicleSensors', + 'ln', + 'lnbAddArray', + 'lnbAddColumn', + 'lnbAddRow', + 'lnbClear', + 'lnbColor', + 'lnbColorRight', + 'lnbCurSelRow', + 'lnbData', + 'lnbDeleteColumn', + 'lnbDeleteRow', + 'lnbGetColumnsPosition', + 'lnbPicture', + 'lnbPictureRight', + 'lnbSetColor', + 'lnbSetColorRight', + 'lnbSetColumnsPos', + 'lnbSetCurSelRow', + 'lnbSetData', + 'lnbSetPicture', + 'lnbSetPictureColor', + 'lnbSetPictureColorRight', + 'lnbSetPictureColorSelected', + 'lnbSetPictureColorSelectedRight', + 'lnbSetPictureRight', + 'lnbSetText', + 'lnbSetTextRight', + 'lnbSetTooltip', + 'lnbSetValue', + 'lnbSize', + 'lnbSort', + 'lnbSortBy', + 'lnbSortByValue', + 'lnbText', + 'lnbTextRight', + 'lnbValue', + 'load', + 'loadAbs', + 'loadBackpack', + 'loadConfig', + 'loadFile', + 'loadGame', + 'loadIdentity', + 'loadMagazine', + 'loadOverlay', + 'loadStatus', + 'loadUniform', + 'loadVest', + 'localize', + 'localNamespace', + 'locationPosition', + 'lock', + 'lockCameraTo', + 'lockCargo', + 'lockDriver', + 'locked', + 'lockedCameraTo', + 'lockedCargo', + 'lockedDriver', + 'lockedInventory', + 'lockedTurret', + 'lockIdentity', + 'lockInventory', + 'lockTurret', + 'lockWp', + 'log', + 'logEntities', + 'logNetwork', + 'logNetworkTerminate', + 'lookAt', + 'lookAtPos', + 'magazineCargo', + 'magazines', + 'magazinesAllTurrets', + 'magazinesAmmo', + 'magazinesAmmoCargo', + 'magazinesAmmoFull', + 'magazinesDetail', + 'magazinesDetailBackpack', + 'magazinesDetailUniform', + 'magazinesDetailVest', + 'magazinesTurret', + 'magazineTurretAmmo', + 'mapAnimAdd', + 'mapAnimClear', + 'mapAnimCommit', + 'mapAnimDone', + 'mapCenterOnCamera', + 'mapGridPosition', + 'markAsFinishedOnSteam', + 'markerAlpha', + 'markerBrush', + 'markerChannel', + 'markerColor', + 'markerDir', + 'markerPolyline', + 'markerPos', + 'markerShadow', + 'markerShape', + 'markerSize', + 'markerText', + 'markerType', + 'matrixMultiply', + 'matrixTranspose', + 'max', + 'maxLoad', + 'members', + 'menuAction', + 'menuAdd', + 'menuChecked', + 'menuClear', + 'menuCollapse', + 'menuData', + 'menuDelete', + 'menuEnable', + 'menuEnabled', + 'menuExpand', + 'menuHover', + 'menuPicture', + 'menuSetAction', + 'menuSetCheck', + 'menuSetData', + 'menuSetPicture', + 'menuSetShortcut', + 'menuSetText', + 'menuSetURL', + 'menuSetValue', + 'menuShortcut', + 'menuShortcutText', + 'menuSize', + 'menuSort', + 'menuText', + 'menuURL', + 'menuValue', + 'merge', + 'min', + 'mineActive', + 'mineDetectedBy', + 'missileTarget', + 'missileTargetPos', + 'missionConfigFile', + 'missionDifficulty', + 'missionEnd', + 'missionName', + 'missionNameSource', + 'missionNamespace', + 'missionProfileNamespace', + 'missionStart', + 'missionVersion', + 'mod', + 'modelToWorld', + 'modelToWorldVisual', + 'modelToWorldVisualWorld', + 'modelToWorldWorld', + 'modParams', + 'moonIntensity', + 'moonPhase', + 'morale', + 'move', + 'move3DENCamera', + 'moveInAny', + 'moveInCargo', + 'moveInCommander', + 'moveInDriver', + 'moveInGunner', + 'moveInTurret', + 'moveObjectToEnd', + 'moveOut', + 'moveTime', + 'moveTo', + 'moveToCompleted', + 'moveToFailed', + 'musicVolume', + 'name', + 'namedProperties', + 'nameSound', + 'nearEntities', + 'nearestBuilding', + 'nearestLocation', + 'nearestLocations', + 'nearestLocationWithDubbing', + 'nearestMines', + 'nearestObject', + 'nearestObjects', + 'nearestTerrainObjects', + 'nearObjects', + 'nearObjectsReady', + 'nearRoads', + 'nearSupplies', + 'nearTargets', + 'needReload', + 'needService', + 'netId', + 'netObjNull', + 'newOverlay', + 'nextMenuItemIndex', + 'nextWeatherChange', + 'nMenuItems', + 'not', + 'numberOfEnginesRTD', + 'numberToDate', + 'objectCurators', + 'objectFromNetId', + 'objectParent', + 'objStatus', + 'onBriefingGroup', + 'onBriefingNotes', + 'onBriefingPlan', + 'onBriefingTeamSwitch', + 'onCommandModeChanged', + 'onDoubleClick', + 'onEachFrame', + 'onGroupIconClick', + 'onGroupIconOverEnter', + 'onGroupIconOverLeave', + 'onHCGroupSelectionChanged', + 'onMapSingleClick', + 'onPlayerConnected', + 'onPlayerDisconnected', + 'onPreloadFinished', + 'onPreloadStarted', + 'onShowNewObject', + 'onTeamSwitch', + 'openCuratorInterface', + 'openDLCPage', + 'openGPS', + 'openMap', + 'openSteamApp', + 'openYoutubeVideo', + 'or', + 'orderGetIn', + 'overcast', + 'overcastForecast', + 'owner', + 'param', + 'params', + 'parseNumber', + 'parseSimpleArray', + 'parseText', + 'parsingNamespace', + 'particlesQuality', + 'periscopeElevation', + 'pickWeaponPool', + 'pitch', + 'pixelGrid', + 'pixelGridBase', + 'pixelGridNoUIScale', + 'pixelH', + 'pixelW', + 'playableSlotsNumber', + 'playableUnits', + 'playAction', + 'playActionNow', + 'player', + 'playerRespawnTime', + 'playerSide', + 'playersNumber', + 'playGesture', + 'playMission', + 'playMove', + 'playMoveNow', + 'playMusic', + 'playScriptedMission', + 'playSound', + 'playSound3D', + 'playSoundUI', + 'pose', + 'position', + 'positionCameraToWorld', + 'posScreenToWorld', + 'posWorldToScreen', + 'ppEffectAdjust', + 'ppEffectCommit', + 'ppEffectCommitted', + 'ppEffectCreate', + 'ppEffectDestroy', + 'ppEffectEnable', + 'ppEffectEnabled', + 'ppEffectForceInNVG', + 'precision', + 'preloadCamera', + 'preloadObject', + 'preloadSound', + 'preloadTitleObj', + 'preloadTitleRsc', + 'preprocessFile', + 'preprocessFileLineNumbers', + 'primaryWeapon', + 'primaryWeaponItems', + 'primaryWeaponMagazine', + 'priority', + 'processDiaryLink', + 'productVersion', + 'profileName', + 'profileNamespace', + 'profileNameSteam', + 'progressLoadingScreen', + 'progressPosition', + 'progressSetPosition', + 'publicVariable', + 'publicVariableClient', + 'publicVariableServer', + 'pushBack', + 'pushBackUnique', + 'putWeaponPool', + 'queryItemsPool', + 'queryMagazinePool', + 'queryWeaponPool', + 'rad', + 'radioChannelAdd', + 'radioChannelCreate', + 'radioChannelInfo', + 'radioChannelRemove', + 'radioChannelSetCallSign', + 'radioChannelSetLabel', + 'radioEnabled', + 'radioVolume', + 'rain', + 'rainbow', + 'rainParams', + 'random', + 'rank', + 'rankId', + 'rating', + 'rectangular', + 'regexFind', + 'regexMatch', + 'regexReplace', + 'registeredTasks', + 'registerTask', + 'reload', + 'reloadEnabled', + 'remoteControl', + 'remoteExec', + 'remoteExecCall', + 'remoteExecutedOwner', + 'remove3DENConnection', + 'remove3DENEventHandler', + 'remove3DENLayer', + 'removeAction', + 'removeAll3DENEventHandlers', + 'removeAllActions', + 'removeAllAssignedItems', + 'removeAllBinocularItems', + 'removeAllContainers', + 'removeAllCuratorAddons', + 'removeAllCuratorCameraAreas', + 'removeAllCuratorEditingAreas', + 'removeAllEventHandlers', + 'removeAllHandgunItems', + 'removeAllItems', + 'removeAllItemsWithMagazines', + 'removeAllMissionEventHandlers', + 'removeAllMPEventHandlers', + 'removeAllMusicEventHandlers', + 'removeAllOwnedMines', + 'removeAllPrimaryWeaponItems', + 'removeAllSecondaryWeaponItems', + 'removeAllUserActionEventHandlers', + 'removeAllWeapons', + 'removeBackpack', + 'removeBackpackGlobal', + 'removeBinocularItem', + 'removeCuratorAddons', + 'removeCuratorCameraArea', + 'removeCuratorEditableObjects', + 'removeCuratorEditingArea', + 'removeDiaryRecord', + 'removeDiarySubject', + 'removeDrawIcon', + 'removeDrawLinks', + 'removeEventHandler', + 'removeFromRemainsCollector', + 'removeGoggles', + 'removeGroupIcon', + 'removeHandgunItem', + 'removeHeadgear', + 'removeItem', + 'removeItemFromBackpack', + 'removeItemFromUniform', + 'removeItemFromVest', + 'removeItems', + 'removeMagazine', + 'removeMagazineGlobal', + 'removeMagazines', + 'removeMagazinesTurret', + 'removeMagazineTurret', + 'removeMenuItem', + 'removeMissionEventHandler', + 'removeMPEventHandler', + 'removeMusicEventHandler', + 'removeOwnedMine', + 'removePrimaryWeaponItem', + 'removeSecondaryWeaponItem', + 'removeSimpleTask', + 'removeSwitchableUnit', + 'removeTeamMember', + 'removeUniform', + 'removeUserActionEventHandler', + 'removeVest', + 'removeWeapon', + 'removeWeaponAttachmentCargo', + 'removeWeaponCargo', + 'removeWeaponGlobal', + 'removeWeaponTurret', + 'reportRemoteTarget', + 'requiredVersion', + 'resetCamShake', + 'resetSubgroupDirection', + 'resize', + 'resources', + 'respawnVehicle', + 'restartEditorCamera', + 'reveal', + 'revealMine', + 'reverse', + 'reversedMouseY', + 'roadAt', + 'roadsConnectedTo', + 'roleDescription', + 'ropeAttachedObjects', + 'ropeAttachedTo', + 'ropeAttachEnabled', + 'ropeAttachTo', + 'ropeCreate', + 'ropeCut', + 'ropeDestroy', + 'ropeDetach', + 'ropeEndPosition', + 'ropeLength', + 'ropes', + 'ropesAttachedTo', + 'ropeSegments', + 'ropeUnwind', + 'ropeUnwound', + 'rotorsForcesRTD', + 'rotorsRpmRTD', + 'round', + 'runInitScript', + 'safeZoneH', + 'safeZoneW', + 'safeZoneWAbs', + 'safeZoneX', + 'safeZoneXAbs', + 'safeZoneY', + 'save3DENInventory', + 'saveGame', + 'saveIdentity', + 'saveJoysticks', + 'saveMissionProfileNamespace', + 'saveOverlay', + 'saveProfileNamespace', + 'saveStatus', + 'saveVar', + 'savingEnabled', + 'say', + 'say2D', + 'say3D', + 'scopeName', + 'score', + 'scoreSide', + 'screenshot', + 'screenToWorld', + 'scriptDone', + 'scriptName', + 'scudState', + 'secondaryWeapon', + 'secondaryWeaponItems', + 'secondaryWeaponMagazine', + 'select', + 'selectBestPlaces', + 'selectDiarySubject', + 'selectedEditorObjects', + 'selectEditorObject', + 'selectionNames', + 'selectionPosition', + 'selectionVectorDirAndUp', + 'selectLeader', + 'selectMax', + 'selectMin', + 'selectNoPlayer', + 'selectPlayer', + 'selectRandom', + 'selectRandomWeighted', + 'selectWeapon', + 'selectWeaponTurret', + 'sendAUMessage', + 'sendSimpleCommand', + 'sendTask', + 'sendTaskResult', + 'sendUDPMessage', + 'sentencesEnabled', + 'serverCommand', + 'serverCommandAvailable', + 'serverCommandExecutable', + 'serverName', + 'serverNamespace', + 'serverTime', + 'set', + 'set3DENAttribute', + 'set3DENAttributes', + 'set3DENGrid', + 'set3DENIconsVisible', + 'set3DENLayer', + 'set3DENLinesVisible', + 'set3DENLogicType', + 'set3DENMissionAttribute', + 'set3DENMissionAttributes', + 'set3DENModelsVisible', + 'set3DENObjectType', + 'set3DENSelected', + 'setAccTime', + 'setActualCollectiveRTD', + 'setAirplaneThrottle', + 'setAirportSide', + 'setAmmo', + 'setAmmoCargo', + 'setAmmoOnPylon', + 'setAnimSpeedCoef', + 'setAperture', + 'setApertureNew', + 'setArmoryPoints', + 'setAttributes', + 'setAutonomous', + 'setBehaviour', + 'setBehaviourStrong', + 'setBleedingRemaining', + 'setBrakesRTD', + 'setCameraInterest', + 'setCamShakeDefParams', + 'setCamShakeParams', + 'setCamUseTi', + 'setCaptive', + 'setCenterOfMass', + 'setCollisionLight', + 'setCombatBehaviour', + 'setCombatMode', + 'setCompassOscillation', + 'setConvoySeparation', + 'setCruiseControl', + 'setCuratorCameraAreaCeiling', + 'setCuratorCoef', + 'setCuratorEditingAreaType', + 'setCuratorWaypointCost', + 'setCurrentChannel', + 'setCurrentTask', + 'setCurrentWaypoint', + 'setCustomAimCoef', + 'SetCustomMissionData', + 'setCustomSoundController', + 'setCustomWeightRTD', + 'setDamage', + 'setDammage', + 'setDate', + 'setDebriefingText', + 'setDefaultCamera', + 'setDestination', + 'setDetailMapBlendPars', + 'setDiaryRecordText', + 'setDiarySubjectPicture', + 'setDir', + 'setDirection', + 'setDrawIcon', + 'setDriveOnPath', + 'setDropInterval', + 'setDynamicSimulationDistance', + 'setDynamicSimulationDistanceCoef', + 'setEditorMode', + 'setEditorObjectScope', + 'setEffectCondition', + 'setEffectiveCommander', + 'setEngineRpmRTD', + 'setFace', + 'setFaceanimation', + 'setFatigue', + 'setFeatureType', + 'setFlagAnimationPhase', + 'setFlagOwner', + 'setFlagSide', + 'setFlagTexture', + 'setFog', + 'setForceGeneratorRTD', + 'setFormation', + 'setFormationTask', + 'setFormDir', + 'setFriend', + 'setFromEditor', + 'setFSMVariable', + 'setFuel', + 'setFuelCargo', + 'setGroupIcon', + 'setGroupIconParams', + 'setGroupIconsSelectable', + 'setGroupIconsVisible', + 'setGroupid', + 'setGroupIdGlobal', + 'setGroupOwner', + 'setGusts', + 'setHideBehind', + 'setHit', + 'setHitIndex', + 'setHitPointDamage', + 'setHorizonParallaxCoef', + 'setHUDMovementLevels', + 'setHumidity', + 'setIdentity', + 'setImportance', + 'setInfoPanel', + 'setLeader', + 'setLightAmbient', + 'setLightAttenuation', + 'setLightBrightness', + 'setLightColor', + 'setLightConePars', + 'setLightDayLight', + 'setLightFlareMaxDistance', + 'setLightFlareSize', + 'setLightIntensity', + 'setLightIR', + 'setLightnings', + 'setLightUseFlare', + 'setLightVolumeShape', + 'setLocalWindParams', + 'setMagazineTurretAmmo', + 'setMarkerAlpha', + 'setMarkerAlphaLocal', + 'setMarkerBrush', + 'setMarkerBrushLocal', + 'setMarkerColor', + 'setMarkerColorLocal', + 'setMarkerDir', + 'setMarkerDirLocal', + 'setMarkerPolyline', + 'setMarkerPolylineLocal', + 'setMarkerPos', + 'setMarkerPosLocal', + 'setMarkerShadow', + 'setMarkerShadowLocal', + 'setMarkerShape', + 'setMarkerShapeLocal', + 'setMarkerSize', + 'setMarkerSizeLocal', + 'setMarkerText', + 'setMarkerTextLocal', + 'setMarkerType', + 'setMarkerTypeLocal', + 'setMass', + 'setMaxLoad', + 'setMimic', + 'setMissileTarget', + 'setMissileTargetPos', + 'setMousePosition', + 'setMusicEffect', + 'setMusicEventHandler', + 'setName', + 'setNameSound', + 'setObjectArguments', + 'setObjectMaterial', + 'setObjectMaterialGlobal', + 'setObjectProxy', + 'setObjectScale', + 'setObjectTexture', + 'setObjectTextureGlobal', + 'setObjectViewDistance', + 'setOpticsMode', + 'setOvercast', + 'setOwner', + 'setOxygenRemaining', + 'setParticleCircle', + 'setParticleClass', + 'setParticleFire', + 'setParticleParams', + 'setParticleRandom', + 'setPilotCameraDirection', + 'setPilotCameraRotation', + 'setPilotCameraTarget', + 'setPilotLight', + 'setPiPEffect', + 'setPiPViewDistance', + 'setPitch', + 'setPlateNumber', + 'setPlayable', + 'setPlayerRespawnTime', + 'setPlayerVoNVolume', + 'setPos', + 'setPosASL', + 'setPosASL2', + 'setPosASLW', + 'setPosATL', + 'setPosition', + 'setPosWorld', + 'setPylonLoadout', + 'setPylonsPriority', + 'setRadioMsg', + 'setRain', + 'setRainbow', + 'setRandomLip', + 'setRank', + 'setRectangular', + 'setRepairCargo', + 'setRotorBrakeRTD', + 'setShadowDistance', + 'setShotParents', + 'setSide', + 'setSimpleTaskAlwaysVisible', + 'setSimpleTaskCustomData', + 'setSimpleTaskDescription', + 'setSimpleTaskDestination', + 'setSimpleTaskTarget', + 'setSimpleTaskType', + 'setSimulWeatherLayers', + 'setSize', + 'setSkill', + 'setSlingLoad', + 'setSoundEffect', + 'setSpeaker', + 'setSpeech', + 'setSpeedMode', + 'setStamina', + 'setStaminaScheme', + 'setStatValue', + 'setSuppression', + 'setSystemOfUnits', + 'setTargetAge', + 'setTaskMarkerOffset', + 'setTaskResult', + 'setTaskState', + 'setTerrainGrid', + 'setTerrainHeight', + 'setText', + 'setTimeMultiplier', + 'setTiParameter', + 'setTitleEffect', + 'setTowParent', + 'setTrafficDensity', + 'setTrafficDistance', + 'setTrafficGap', + 'setTrafficSpeed', + 'setTriggerActivation', + 'setTriggerArea', + 'setTriggerInterval', + 'setTriggerStatements', + 'setTriggerText', + 'setTriggerTimeout', + 'setTriggerType', + 'setTurretLimits', + 'setTurretOpticsMode', + 'setType', + 'setUnconscious', + 'setUnitAbility', + 'setUnitCombatMode', + 'setUnitFreefallHeight', + 'setUnitLoadout', + 'setUnitPos', + 'setUnitPosWeak', + 'setUnitRank', + 'setUnitRecoilCoefficient', + 'setUnitTrait', + 'setUnloadInCombat', + 'setUserActionText', + 'setUserMFDText', + 'setUserMFDValue', + 'setVariable', + 'setVectorDir', + 'setVectorDirAndUp', + 'setVectorUp', + 'setVehicleAmmo', + 'setVehicleAmmoDef', + 'setVehicleArmor', + 'setVehicleCargo', + 'setVehicleId', + 'setVehicleLock', + 'setVehiclePosition', + 'setVehicleRadar', + 'setVehicleReceiveRemoteTargets', + 'setVehicleReportOwnPosition', + 'setVehicleReportRemoteTargets', + 'setVehicleTiPars', + 'setVehicleVarName', + 'setVelocity', + 'setVelocityModelSpace', + 'setVelocityTransformation', + 'setViewDistance', + 'setVisibleIfTreeCollapsed', + 'setWantedRPMRTD', + 'setWaves', + 'setWaypointBehaviour', + 'setWaypointCombatMode', + 'setWaypointCompletionRadius', + 'setWaypointDescription', + 'setWaypointForceBehaviour', + 'setWaypointFormation', + 'setWaypointHousePosition', + 'setWaypointLoiterAltitude', + 'setWaypointLoiterRadius', + 'setWaypointLoiterType', + 'setWaypointName', + 'setWaypointPosition', + 'setWaypointScript', + 'setWaypointSpeed', + 'setWaypointStatements', + 'setWaypointTimeout', + 'setWaypointType', + 'setWaypointVisible', + 'setWeaponReloadingTime', + 'setWeaponZeroing', + 'setWind', + 'setWindDir', + 'setWindForce', + 'setWindStr', + 'setWingForceScaleRTD', + 'setWPPos', + 'show3DIcons', + 'showChat', + 'showCinemaBorder', + 'showCommandingMenu', + 'showCompass', + 'showCuratorCompass', + 'showGps', + 'showHUD', + 'showLegend', + 'showMap', + 'shownArtilleryComputer', + 'shownChat', + 'shownCompass', + 'shownCuratorCompass', + 'showNewEditorObject', + 'shownGps', + 'shownHUD', + 'shownMap', + 'shownPad', + 'shownRadio', + 'shownScoretable', + 'shownSubtitles', + 'shownUAVFeed', + 'shownWarrant', + 'shownWatch', + 'showPad', + 'showRadio', + 'showScoretable', + 'showSubtitles', + 'showUAVFeed', + 'showWarrant', + 'showWatch', + 'showWaypoint', + 'showWaypoints', + 'side', + 'sideChat', + 'sideRadio', + 'simpleTasks', + 'simulationEnabled', + 'simulCloudDensity', + 'simulCloudOcclusion', + 'simulInClouds', + 'simulWeatherSync', + 'sin', + 'size', + 'sizeOf', + 'skill', + 'skillFinal', + 'skipTime', + 'sleep', + 'sliderPosition', + 'sliderRange', + 'sliderSetPosition', + 'sliderSetRange', + 'sliderSetSpeed', + 'sliderSpeed', + 'slingLoadAssistantShown', + 'soldierMagazines', + 'someAmmo', + 'sort', + 'soundVolume', + 'spawn', + 'speaker', + 'speechVolume', + 'speed', + 'speedMode', + 'splitString', + 'sqrt', + 'squadParams', + 'stance', + 'startLoadingScreen', + 'stop', + 'stopEngineRTD', + 'stopped', + 'str', + 'sunOrMoon', + 'supportInfo', + 'suppressFor', + 'surfaceIsWater', + 'surfaceNormal', + 'surfaceTexture', + 'surfaceType', + 'swimInDepth', + 'switchableUnits', + 'switchAction', + 'switchCamera', + 'switchGesture', + 'switchLight', + 'switchMove', + 'synchronizedObjects', + 'synchronizedTriggers', + 'synchronizedWaypoints', + 'synchronizeObjectsAdd', + 'synchronizeObjectsRemove', + 'synchronizeTrigger', + 'synchronizeWaypoint', + 'systemChat', + 'systemOfUnits', + 'systemTime', + 'systemTimeUTC', + 'tan', + 'targetKnowledge', + 'targets', + 'targetsAggregate', + 'targetsQuery', + 'taskAlwaysVisible', + 'taskChildren', + 'taskCompleted', + 'taskCustomData', + 'taskDescription', + 'taskDestination', + 'taskHint', + 'taskMarkerOffset', + 'taskName', + 'taskParent', + 'taskResult', + 'taskState', + 'taskType', + 'teamMember', + 'teamName', + 'teams', + 'teamSwitch', + 'teamSwitchEnabled', + 'teamType', + 'terminate', + 'terrainIntersect', + 'terrainIntersectASL', + 'terrainIntersectAtASL', + 'text', + 'textLog', + 'textLogFormat', + 'tg', + 'time', + 'timeMultiplier', + 'titleCut', + 'titleFadeOut', + 'titleObj', + 'titleRsc', + 'titleText', + 'toArray', + 'toFixed', + 'toLower', + 'toLowerANSI', + 'toString', + 'toUpper', + 'toUpperANSI', + 'triggerActivated', + 'triggerActivation', + 'triggerAmmo', + 'triggerArea', + 'triggerAttachedVehicle', + 'triggerAttachObject', + 'triggerAttachVehicle', + 'triggerDynamicSimulation', + 'triggerInterval', + 'triggerStatements', + 'triggerText', + 'triggerTimeout', + 'triggerTimeoutCurrent', + 'triggerType', + 'trim', + 'turretLocal', + 'turretOwner', + 'turretUnit', + 'tvAdd', + 'tvClear', + 'tvCollapse', + 'tvCollapseAll', + 'tvCount', + 'tvCurSel', + 'tvData', + 'tvDelete', + 'tvExpand', + 'tvExpandAll', + 'tvIsSelected', + 'tvPicture', + 'tvPictureRight', + 'tvSelection', + 'tvSetColor', + 'tvSetCurSel', + 'tvSetData', + 'tvSetPicture', + 'tvSetPictureColor', + 'tvSetPictureColorDisabled', + 'tvSetPictureColorSelected', + 'tvSetPictureRight', + 'tvSetPictureRightColor', + 'tvSetPictureRightColorDisabled', + 'tvSetPictureRightColorSelected', + 'tvSetSelectColor', + 'tvSetSelected', + 'tvSetText', + 'tvSetTooltip', + 'tvSetValue', + 'tvSort', + 'tvSortAll', + 'tvSortByValue', + 'tvSortByValueAll', + 'tvText', + 'tvTooltip', + 'tvValue', + 'type', + 'typeName', + 'typeOf', + 'UAVControl', + 'uiNamespace', + 'uiSleep', + 'unassignCurator', + 'unassignItem', + 'unassignTeam', + 'unassignVehicle', + 'underwater', + 'uniform', + 'uniformContainer', + 'uniformItems', + 'uniformMagazines', + 'uniqueUnitItems', + 'unitAddons', + 'unitAimPosition', + 'unitAimPositionVisual', + 'unitBackpack', + 'unitCombatMode', + 'unitIsUAV', + 'unitPos', + 'unitReady', + 'unitRecoilCoefficient', + 'units', + 'unitsBelowHeight', + 'unitTurret', + 'unlinkItem', + 'unlockAchievement', + 'unregisterTask', + 'updateDrawIcon', + 'updateMenuItem', + 'updateObjectTree', + 'useAIOperMapObstructionTest', + 'useAISteeringComponent', + 'useAudioTimeForMoves', + 'userInputDisabled', + 'values', + 'vectorAdd', + 'vectorCos', + 'vectorCrossProduct', + 'vectorDiff', + 'vectorDir', + 'vectorDirVisual', + 'vectorDistance', + 'vectorDistanceSqr', + 'vectorDotProduct', + 'vectorFromTo', + 'vectorLinearConversion', + 'vectorMagnitude', + 'vectorMagnitudeSqr', + 'vectorModelToWorld', + 'vectorModelToWorldVisual', + 'vectorMultiply', + 'vectorNormalized', + 'vectorUp', + 'vectorUpVisual', + 'vectorWorldToModel', + 'vectorWorldToModelVisual', + 'vehicle', + 'vehicleCargoEnabled', + 'vehicleChat', + 'vehicleMoveInfo', + 'vehicleRadio', + 'vehicleReceiveRemoteTargets', + 'vehicleReportOwnPosition', + 'vehicleReportRemoteTargets', + 'vehicles', + 'vehicleVarName', + 'velocity', + 'velocityModelSpace', + 'verifySignature', + 'vest', + 'vestContainer', + 'vestItems', + 'vestMagazines', + 'viewDistance', + 'visibleCompass', + 'visibleGps', + 'visibleMap', + 'visiblePosition', + 'visiblePositionASL', + 'visibleScoretable', + 'visibleWatch', + 'waves', + 'waypointAttachedObject', + 'waypointAttachedVehicle', + 'waypointAttachObject', + 'waypointAttachVehicle', + 'waypointBehaviour', + 'waypointCombatMode', + 'waypointCompletionRadius', + 'waypointDescription', + 'waypointForceBehaviour', + 'waypointFormation', + 'waypointHousePosition', + 'waypointLoiterAltitude', + 'waypointLoiterRadius', + 'waypointLoiterType', + 'waypointName', + 'waypointPosition', + 'waypoints', + 'waypointScript', + 'waypointsEnabledUAV', + 'waypointShow', + 'waypointSpeed', + 'waypointStatements', + 'waypointTimeout', + 'waypointTimeoutCurrent', + 'waypointType', + 'waypointVisible', + 'weaponAccessories', + 'weaponAccessoriesCargo', + 'weaponCargo', + 'weaponDirection', + 'weaponInertia', + 'weaponLowered', + 'weaponReloadingTime', + 'weapons', + 'weaponsInfo', + 'weaponsItems', + 'weaponsItemsCargo', + 'weaponState', + 'weaponsTurret', + 'weightRTD', + 'WFSideText', + 'wind', + 'windDir', + 'windRTD', + 'windStr', + 'wingsForcesRTD', + 'worldName', + 'worldSize', + 'worldToModel', + 'worldToModelVisual', + 'worldToScreen' + ]; + + // list of keywords from: + // https://community.bistudio.com/wiki/PreProcessor_Commands + const PREPROCESSOR = { + className: 'meta', + begin: /#\s*[a-z]+\b/, + end: /$/, + keywords: 'define undef ifdef ifndef else endif include if', + contains: [ + { + begin: /\\\n/, + relevance: 0 + }, + hljs.inherit(STRINGS, { className: 'string' }), + { + begin: /<[^\n>]*>/, + end: /$/, + illegal: '\\n' + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; + + return { + name: 'SQF', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_IN, + literal: LITERAL + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.NUMBER_MODE, + VARIABLE, + FUNCTION, + STRINGS, + PREPROCESSOR + ], + illegal: [ + //$ is only valid when used with Hex numbers (e.g. $FF) + /\$[^a-fA-F0-9]/, + /\w\$/, + /\?/, //There's no ? in SQF + /@/, //There's no @ in SQF + // Brute-force-fixing the build error. See https://github.com/highlightjs/highlight.js/pull/3193#issuecomment-843088729 + / \| /, + // . is only used in numbers + /[a-zA-Z_]\./, + /\:\=/, + /\[\:/ + ] + }; +} + +module.exports = sqf; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/sql.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/sql.js ***! + \************************************************************/ +(module) { + +/* + Language: SQL + Website: https://en.wikipedia.org/wiki/SQL + Category: common, database + */ + +/* + +Goals: + +SQL is intended to highlight basic/common SQL keywords and expressions + +- If pretty much every single SQL server includes supports, then it's a canidate. +- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL, + PostgreSQL) although the list of data types is purposely a bit more expansive. +- For more specific SQL grammars please see: + - PostgreSQL and PL/pgSQL - core + - T-SQL - https://github.com/highlightjs/highlightjs-tsql + - sql_more (core) + + */ + +function sql(hljs) { + const regex = hljs.regex; + const COMMENT_MODE = hljs.COMMENT('--', '$'); + const STRING = { + scope: 'string', + variants: [ + { + begin: /'/, + end: /'/, + contains: [ { match: /''/ } ] + } + ] + }; + const QUOTED_IDENTIFIER = { + begin: /"/, + end: /"/, + contains: [ { match: /""/ } ] + }; + + const LITERALS = [ + "true", + "false", + // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way. + // "null", + "unknown" + ]; + + const MULTI_WORD_TYPES = [ + "double precision", + "large object", + "with timezone", + "without timezone" + ]; + + const TYPES = [ + 'bigint', + 'binary', + 'blob', + 'boolean', + 'char', + 'character', + 'clob', + 'date', + 'dec', + 'decfloat', + 'decimal', + 'float', + 'int', + 'integer', + 'interval', + 'nchar', + 'nclob', + 'national', + 'numeric', + 'real', + 'row', + 'smallint', + 'time', + 'timestamp', + 'varchar', + 'varying', // modifier (character varying) + 'varbinary' + ]; + + const NON_RESERVED_WORDS = [ + "add", + "asc", + "collation", + "desc", + "final", + "first", + "last", + "view" + ]; + + // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word + const RESERVED_WORDS = [ + "abs", + "acos", + "all", + "allocate", + "alter", + "and", + "any", + "are", + "array", + "array_agg", + "array_max_cardinality", + "as", + "asensitive", + "asin", + "asymmetric", + "at", + "atan", + "atomic", + "authorization", + "avg", + "begin", + "begin_frame", + "begin_partition", + "between", + "bigint", + "binary", + "blob", + "boolean", + "both", + "by", + "call", + "called", + "cardinality", + "cascaded", + "case", + "cast", + "ceil", + "ceiling", + "char", + "char_length", + "character", + "character_length", + "check", + "classifier", + "clob", + "close", + "coalesce", + "collate", + "collect", + "column", + "commit", + "condition", + "connect", + "constraint", + "contains", + "convert", + "copy", + "corr", + "corresponding", + "cos", + "cosh", + "count", + "covar_pop", + "covar_samp", + "create", + "cross", + "cube", + "cume_dist", + "current", + "current_catalog", + "current_date", + "current_default_transform_group", + "current_path", + "current_role", + "current_row", + "current_schema", + "current_time", + "current_timestamp", + "current_path", + "current_role", + "current_transform_group_for_type", + "current_user", + "cursor", + "cycle", + "date", + "day", + "deallocate", + "dec", + "decimal", + "decfloat", + "declare", + "default", + "define", + "delete", + "dense_rank", + "deref", + "describe", + "deterministic", + "disconnect", + "distinct", + "double", + "drop", + "dynamic", + "each", + "element", + "else", + "empty", + "end", + "end_frame", + "end_partition", + "end-exec", + "equals", + "escape", + "every", + "except", + "exec", + "execute", + "exists", + "exp", + "external", + "extract", + "false", + "fetch", + "filter", + "first_value", + "float", + "floor", + "for", + "foreign", + "frame_row", + "free", + "from", + "full", + "function", + "fusion", + "get", + "global", + "grant", + "group", + "grouping", + "groups", + "having", + "hold", + "hour", + "identity", + "in", + "indicator", + "initial", + "inner", + "inout", + "insensitive", + "insert", + "int", + "integer", + "intersect", + "intersection", + "interval", + "into", + "is", + "join", + "json_array", + "json_arrayagg", + "json_exists", + "json_object", + "json_objectagg", + "json_query", + "json_table", + "json_table_primitive", + "json_value", + "lag", + "language", + "large", + "last_value", + "lateral", + "lead", + "leading", + "left", + "like", + "like_regex", + "listagg", + "ln", + "local", + "localtime", + "localtimestamp", + "log", + "log10", + "lower", + "match", + "match_number", + "match_recognize", + "matches", + "max", + "member", + "merge", + "method", + "min", + "minute", + "mod", + "modifies", + "module", + "month", + "multiset", + "national", + "natural", + "nchar", + "nclob", + "new", + "no", + "none", + "normalize", + "not", + "nth_value", + "ntile", + "null", + "nullif", + "numeric", + "octet_length", + "occurrences_regex", + "of", + "offset", + "old", + "omit", + "on", + "one", + "only", + "open", + "or", + "order", + "out", + "outer", + "over", + "overlaps", + "overlay", + "parameter", + "partition", + "pattern", + "per", + "percent", + "percent_rank", + "percentile_cont", + "percentile_disc", + "period", + "portion", + "position", + "position_regex", + "power", + "precedes", + "precision", + "prepare", + "primary", + "procedure", + "ptf", + "range", + "rank", + "reads", + "real", + "recursive", + "ref", + "references", + "referencing", + "regr_avgx", + "regr_avgy", + "regr_count", + "regr_intercept", + "regr_r2", + "regr_slope", + "regr_sxx", + "regr_sxy", + "regr_syy", + "release", + "result", + "return", + "returns", + "revoke", + "right", + "rollback", + "rollup", + "row", + "row_number", + "rows", + "running", + "savepoint", + "scope", + "scroll", + "search", + "second", + "seek", + "select", + "sensitive", + "session_user", + "set", + "show", + "similar", + "sin", + "sinh", + "skip", + "smallint", + "some", + "specific", + "specifictype", + "sql", + "sqlexception", + "sqlstate", + "sqlwarning", + "sqrt", + "start", + "static", + "stddev_pop", + "stddev_samp", + "submultiset", + "subset", + "substring", + "substring_regex", + "succeeds", + "sum", + "symmetric", + "system", + "system_time", + "system_user", + "table", + "tablesample", + "tan", + "tanh", + "then", + "time", + "timestamp", + "timezone_hour", + "timezone_minute", + "to", + "trailing", + "translate", + "translate_regex", + "translation", + "treat", + "trigger", + "trim", + "trim_array", + "true", + "truncate", + "uescape", + "union", + "unique", + "unknown", + "unnest", + "update", + "upper", + "user", + "using", + "value", + "values", + "value_of", + "var_pop", + "var_samp", + "varbinary", + "varchar", + "varying", + "versioning", + "when", + "whenever", + "where", + "width_bucket", + "window", + "with", + "within", + "without", + "year", + ]; + + // these are reserved words we have identified to be functions + // and should only be highlighted in a dispatch-like context + // ie, array_agg(...), etc. + const RESERVED_FUNCTIONS = [ + "abs", + "acos", + "array_agg", + "asin", + "atan", + "avg", + "cast", + "ceil", + "ceiling", + "coalesce", + "corr", + "cos", + "cosh", + "count", + "covar_pop", + "covar_samp", + "cume_dist", + "dense_rank", + "deref", + "element", + "exp", + "extract", + "first_value", + "floor", + "json_array", + "json_arrayagg", + "json_exists", + "json_object", + "json_objectagg", + "json_query", + "json_table", + "json_table_primitive", + "json_value", + "lag", + "last_value", + "lead", + "listagg", + "ln", + "log", + "log10", + "lower", + "max", + "min", + "mod", + "nth_value", + "ntile", + "nullif", + "percent_rank", + "percentile_cont", + "percentile_disc", + "position", + "position_regex", + "power", + "rank", + "regr_avgx", + "regr_avgy", + "regr_count", + "regr_intercept", + "regr_r2", + "regr_slope", + "regr_sxx", + "regr_sxy", + "regr_syy", + "row_number", + "sin", + "sinh", + "sqrt", + "stddev_pop", + "stddev_samp", + "substring", + "substring_regex", + "sum", + "tan", + "tanh", + "translate", + "translate_regex", + "treat", + "trim", + "trim_array", + "unnest", + "upper", + "value_of", + "var_pop", + "var_samp", + "width_bucket", + ]; + + // these functions can + const POSSIBLE_WITHOUT_PARENS = [ + "current_catalog", + "current_date", + "current_default_transform_group", + "current_path", + "current_role", + "current_schema", + "current_transform_group_for_type", + "current_user", + "session_user", + "system_time", + "system_user", + "current_time", + "localtime", + "current_timestamp", + "localtimestamp" + ]; + + // those exist to boost relevance making these very + // "SQL like" keyword combos worth +1 extra relevance + const COMBOS = [ + "create table", + "insert into", + "primary key", + "foreign key", + "not null", + "alter table", + "add constraint", + "grouping sets", + "on overflow", + "character set", + "respect nulls", + "ignore nulls", + "nulls first", + "nulls last", + "depth first", + "breadth first" + ]; + + const FUNCTIONS = RESERVED_FUNCTIONS; + + const KEYWORDS = [ + ...RESERVED_WORDS, + ...NON_RESERVED_WORDS + ].filter((keyword) => { + return !RESERVED_FUNCTIONS.includes(keyword); + }); + + const VARIABLE = { + scope: "variable", + match: /@[a-z0-9][a-z0-9_]*/, + }; + + const OPERATOR = { + scope: "operator", + match: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/, + relevance: 0, + }; + + const FUNCTION_CALL = { + match: regex.concat(/\b/, regex.either(...FUNCTIONS), /\s*\(/), + relevance: 0, + keywords: { built_in: FUNCTIONS } + }; + + // turns a multi-word keyword combo into a regex that doesn't + // care about extra whitespace etc. + // input: "START QUERY" + // output: /\bSTART\s+QUERY\b/ + function kws_to_regex(list) { + return regex.concat( + /\b/, + regex.either(...list.map((kw) => { + return kw.replace(/\s+/, "\\s+") + })), + /\b/ + ) + } + + const MULTI_WORD_KEYWORDS = { + scope: "keyword", + match: kws_to_regex(COMBOS), + relevance: 0, + }; + + // keywords with less than 3 letters are reduced in relevancy + function reduceRelevancy(list, { + exceptions, when + } = {}) { + const qualifyFn = when; + exceptions = exceptions || []; + return list.map((item) => { + if (item.match(/\|\d+$/) || exceptions.includes(item)) { + return item; + } else if (qualifyFn(item)) { + return `${item}|0`; + } else { + return item; + } + }); + } + + return { + name: 'SQL', + case_insensitive: true, + // does not include {} or HTML tags ` x.length < 3 }), + literal: LITERALS, + type: TYPES, + built_in: POSSIBLE_WITHOUT_PARENS + }, + contains: [ + { + scope: "type", + match: kws_to_regex(MULTI_WORD_TYPES) + }, + MULTI_WORD_KEYWORDS, + FUNCTION_CALL, + VARIABLE, + STRING, + QUOTED_IDENTIFIER, + hljs.C_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE, + COMMENT_MODE, + OPERATOR + ] + }; +} + +module.exports = sql; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/stan.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/stan.js ***! + \*************************************************************/ +(module) { + +/* +Language: Stan +Description: The Stan probabilistic programming language +Author: Sean Pinkney +Website: http://mc-stan.org/ +Category: scientific +*/ + +function stan(hljs) { + const regex = hljs.regex; + // variable names cannot conflict with block identifiers + const BLOCKS = [ + 'functions', + 'model', + 'data', + 'parameters', + 'quantities', + 'transformed', + 'generated' + ]; + + const STATEMENTS = [ + 'for', + 'in', + 'if', + 'else', + 'while', + 'break', + 'continue', + 'return' + ]; + + const TYPES = [ + 'array', + 'tuple', + 'complex', + 'int', + 'real', + 'vector', + 'complex_vector', + 'ordered', + 'positive_ordered', + 'simplex', + 'unit_vector', + 'row_vector', + 'complex_row_vector', + 'matrix', + 'complex_matrix', + 'cholesky_factor_corr|10', + 'cholesky_factor_cov|10', + 'corr_matrix|10', + 'cov_matrix|10', + 'void' + ]; + + // to get the functions list + // clone the [stan-docs repo](https://github.com/stan-dev/docs) + // then cd into it and run this bash script https://gist.github.com/joshgoebel/dcd33f82d4059a907c986049893843cf + // + // the output files are + // distributions_quoted.txt + // functions_quoted.txt + + const FUNCTIONS = [ + 'abs', + 'acos', + 'acosh', + 'add_diag', + 'algebra_solver', + 'algebra_solver_newton', + 'append_array', + 'append_col', + 'append_row', + 'asin', + 'asinh', + 'atan', + 'atan2', + 'atanh', + 'bessel_first_kind', + 'bessel_second_kind', + 'binary_log_loss', + 'block', + 'cbrt', + 'ceil', + 'chol2inv', + 'cholesky_decompose', + 'choose', + 'col', + 'cols', + 'columns_dot_product', + 'columns_dot_self', + 'complex_schur_decompose', + 'complex_schur_decompose_t', + 'complex_schur_decompose_u', + 'conj', + 'cos', + 'cosh', + 'cov_exp_quad', + 'crossprod', + 'csr_extract', + 'csr_extract_u', + 'csr_extract_v', + 'csr_extract_w', + 'csr_matrix_times_vector', + 'csr_to_dense_matrix', + 'cumulative_sum', + 'dae', + 'dae_tol', + 'determinant', + 'diag_matrix', + 'diagonal', + 'diag_post_multiply', + 'diag_pre_multiply', + 'digamma', + 'dims', + 'distance', + 'dot_product', + 'dot_self', + 'eigendecompose', + 'eigendecompose_sym', + 'eigenvalues', + 'eigenvalues_sym', + 'eigenvectors', + 'eigenvectors_sym', + 'erf', + 'erfc', + 'exp', + 'exp2', + 'expm1', + 'falling_factorial', + 'fdim', + 'fft', + 'fft2', + 'floor', + 'fma', + 'fmax', + 'fmin', + 'fmod', + 'gamma_p', + 'gamma_q', + 'generalized_inverse', + 'get_imag', + 'get_real', + 'head', + 'hmm_hidden_state_prob', + 'hmm_marginal', + 'hypot', + 'identity_matrix', + 'inc_beta', + 'integrate_1d', + 'integrate_ode', + 'integrate_ode_adams', + 'integrate_ode_bdf', + 'integrate_ode_rk45', + 'int_step', + 'inv', + 'inv_cloglog', + 'inv_erfc', + 'inverse', + 'inverse_spd', + 'inv_fft', + 'inv_fft2', + 'inv_inc_beta', + 'inv_logit', + 'inv_Phi', + 'inv_sqrt', + 'inv_square', + 'is_inf', + 'is_nan', + 'lambert_w0', + 'lambert_wm1', + 'lbeta', + 'lchoose', + 'ldexp', + 'lgamma', + 'linspaced_array', + 'linspaced_int_array', + 'linspaced_row_vector', + 'linspaced_vector', + 'lmgamma', + 'lmultiply', + 'log', + 'log1m', + 'log1m_exp', + 'log1m_inv_logit', + 'log1p', + 'log1p_exp', + 'log_determinant', + 'log_diff_exp', + 'log_falling_factorial', + 'log_inv_logit', + 'log_inv_logit_diff', + 'logit', + 'log_mix', + 'log_modified_bessel_first_kind', + 'log_rising_factorial', + 'log_softmax', + 'log_sum_exp', + 'machine_precision', + 'map_rect', + 'matrix_exp', + 'matrix_exp_multiply', + 'matrix_power', + 'max', + 'mdivide_left_spd', + 'mdivide_left_tri_low', + 'mdivide_right_spd', + 'mdivide_right_tri_low', + 'mean', + 'min', + 'modified_bessel_first_kind', + 'modified_bessel_second_kind', + 'multiply_lower_tri_self_transpose', + 'negative_infinity', + 'norm', + 'norm1', + 'norm2', + 'not_a_number', + 'num_elements', + 'ode_adams', + 'ode_adams_tol', + 'ode_adjoint_tol_ctl', + 'ode_bdf', + 'ode_bdf_tol', + 'ode_ckrk', + 'ode_ckrk_tol', + 'ode_rk45', + 'ode_rk45_tol', + 'one_hot_array', + 'one_hot_int_array', + 'one_hot_row_vector', + 'one_hot_vector', + 'ones_array', + 'ones_int_array', + 'ones_row_vector', + 'ones_vector', + 'owens_t', + 'Phi', + 'Phi_approx', + 'polar', + 'positive_infinity', + 'pow', + 'print', + 'prod', + 'proj', + 'qr', + 'qr_Q', + 'qr_R', + 'qr_thin', + 'qr_thin_Q', + 'qr_thin_R', + 'quad_form', + 'quad_form_diag', + 'quad_form_sym', + 'quantile', + 'rank', + 'reduce_sum', + 'reject', + 'rep_array', + 'rep_matrix', + 'rep_row_vector', + 'rep_vector', + 'reverse', + 'rising_factorial', + 'round', + 'row', + 'rows', + 'rows_dot_product', + 'rows_dot_self', + 'scale_matrix_exp_multiply', + 'sd', + 'segment', + 'sin', + 'singular_values', + 'sinh', + 'size', + 'softmax', + 'sort_asc', + 'sort_desc', + 'sort_indices_asc', + 'sort_indices_desc', + 'sqrt', + 'square', + 'squared_distance', + 'step', + 'sub_col', + 'sub_row', + 'sum', + 'svd', + 'svd_U', + 'svd_V', + 'symmetrize_from_lower_tri', + 'tail', + 'tan', + 'tanh', + 'target', + 'tcrossprod', + 'tgamma', + 'to_array_1d', + 'to_array_2d', + 'to_complex', + 'to_int', + 'to_matrix', + 'to_row_vector', + 'to_vector', + 'trace', + 'trace_gen_quad_form', + 'trace_quad_form', + 'trigamma', + 'trunc', + 'uniform_simplex', + 'variance', + 'zeros_array', + 'zeros_int_array', + 'zeros_row_vector' + ]; + + const DISTRIBUTIONS = [ + 'bernoulli', + 'bernoulli_logit', + 'bernoulli_logit_glm', + 'beta', + 'beta_binomial', + 'beta_proportion', + 'binomial', + 'binomial_logit', + 'categorical', + 'categorical_logit', + 'categorical_logit_glm', + 'cauchy', + 'chi_square', + 'dirichlet', + 'discrete_range', + 'double_exponential', + 'exp_mod_normal', + 'exponential', + 'frechet', + 'gamma', + 'gaussian_dlm_obs', + 'gumbel', + 'hmm_latent', + 'hypergeometric', + 'inv_chi_square', + 'inv_gamma', + 'inv_wishart', + 'inv_wishart_cholesky', + 'lkj_corr', + 'lkj_corr_cholesky', + 'logistic', + 'loglogistic', + 'lognormal', + 'multi_gp', + 'multi_gp_cholesky', + 'multinomial', + 'multinomial_logit', + 'multi_normal', + 'multi_normal_cholesky', + 'multi_normal_prec', + 'multi_student_cholesky_t', + 'multi_student_t', + 'multi_student_t_cholesky', + 'neg_binomial', + 'neg_binomial_2', + 'neg_binomial_2_log', + 'neg_binomial_2_log_glm', + 'normal', + 'normal_id_glm', + 'ordered_logistic', + 'ordered_logistic_glm', + 'ordered_probit', + 'pareto', + 'pareto_type_2', + 'poisson', + 'poisson_log', + 'poisson_log_glm', + 'rayleigh', + 'scaled_inv_chi_square', + 'skew_double_exponential', + 'skew_normal', + 'std_normal', + 'std_normal_log', + 'student_t', + 'uniform', + 'von_mises', + 'weibull', + 'wiener', + 'wishart', + 'wishart_cholesky' + ]; + + const BLOCK_COMMENT = hljs.COMMENT( + /\/\*/, + /\*\//, + { + relevance: 0, + contains: [ + { + scope: 'doctag', + match: /@(return|param)/ + } + ] + } + ); + + const INCLUDE = { + scope: 'meta', + begin: /#include\b/, + end: /$/, + contains: [ + { + match: /[a-z][a-z-._]+/, + scope: 'string' + }, + hljs.C_LINE_COMMENT_MODE + ] + }; + + const RANGE_CONSTRAINTS = [ + "lower", + "upper", + "offset", + "multiplier" + ]; + + return { + name: 'Stan', + aliases: [ 'stanfuncs' ], + keywords: { + $pattern: hljs.IDENT_RE, + title: BLOCKS, + type: TYPES, + keyword: STATEMENTS, + built_in: FUNCTIONS + }, + contains: [ + hljs.C_LINE_COMMENT_MODE, + INCLUDE, + hljs.HASH_COMMENT_MODE, + BLOCK_COMMENT, + { + scope: 'built_in', + match: /\s(pi|e|sqrt2|log2|log10)(?=\()/, + relevance: 0 + }, + { + match: regex.concat(/[<,]\s*/, regex.either(...RANGE_CONSTRAINTS), /\s*=/), + keywords: RANGE_CONSTRAINTS + }, + { + scope: 'keyword', + match: /\btarget(?=\s*\+=)/, + }, + { + // highlights the 'T' in T[,] for only Stan language distributrions + match: [ + /~\s*/, + regex.either(...DISTRIBUTIONS), + /(?:\(\))/, + /\s*T(?=\s*\[)/ + ], + scope: { + 2: "built_in", + 4: "keyword" + } + }, + { + // highlights distributions that end with special endings + scope: 'built_in', + keywords: DISTRIBUTIONS, + begin: regex.concat(/\w*/, regex.either(...DISTRIBUTIONS), /(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])/) + }, + { + // highlights distributions after ~ + begin: [ + /~/, + /\s*/, + regex.concat(regex.either(...DISTRIBUTIONS), /(?=\s*[\(.*\)])/) + ], + scope: { 3: "built_in" } + }, + { + // highlights user defined distributions after ~ + begin: [ + /~/, + /\s*\w+(?=\s*[\(.*\)])/, + '(?!.*/\b(' + regex.either(...DISTRIBUTIONS) + ')\b)' + ], + scope: { 2: "title.function" } + }, + { + // highlights user defined distributions with special endings + scope: 'title.function', + begin: /\w*(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])/ + }, + { + scope: 'number', + match: regex.concat( + // Comes from @RunDevelopment accessed 11/29/2021 at + // https://github.com/PrismJS/prism/blob/c53ad2e65b7193ab4f03a1797506a54bbb33d5a2/components/prism-stan.js#L56 + + // start of big noncapture group which + // 1. gets numbers that are by themselves + // 2. numbers that are separated by _ + // 3. numbers that are separted by . + /(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)/, + // grabs scientific notation + // grabs complex numbers with i + /(?:[eE][+-]?\d+(?:_\d+)*)?i?(?!\w)/ + ), + relevance: 0 + }, + { + scope: 'string', + begin: /"/, + end: /"/ + } + ] + }; +} + +module.exports = stan; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/stata.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/stata.js ***! + \**************************************************************/ +(module) { + +/* +Language: Stata +Author: Brian Quistorff +Contributors: Drew McDonald +Description: Stata is a general-purpose statistical software package created in 1985 by StataCorp. +Website: https://en.wikipedia.org/wiki/Stata +Category: scientific +*/ + +/* + This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646. +*/ + +function stata(hljs) { + return { + name: 'Stata', + aliases: [ + 'do', + 'ado' + ], + case_insensitive: true, + keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5', + contains: [ + { + className: 'symbol', + begin: /`[a-zA-Z0-9_]+'/ + }, + { + className: 'variable', + begin: /\$\{?[a-zA-Z0-9_]+\}?/, + relevance: 0 + }, + { + className: 'string', + variants: [ + { begin: '`"[^\r\n]*?"\'' }, + { begin: '"[^\r\n"]*"' } + ] + }, + + { + className: 'built_in', + variants: [ { begin: '\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()' } ] + }, + + hljs.COMMENT('^[ \t]*\\*.*$', false), + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE + ] + }; +} + +module.exports = stata; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/step21.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/step21.js ***! + \***************************************************************/ +(module) { + +/* +Language: STEP Part 21 +Contributors: Adam Joseph Cook +Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21). +Website: https://en.wikipedia.org/wiki/ISO_10303-21 +Category: syntax +*/ + +function step21(hljs) { + const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*'; + const STEP21_KEYWORDS = { + $pattern: STEP21_IDENT_RE, + keyword: [ + "HEADER", + "ENDSEC", + "DATA" + ] + }; + const STEP21_START = { + className: 'meta', + begin: 'ISO-10303-21;', + relevance: 10 + }; + const STEP21_CLOSE = { + className: 'meta', + begin: 'END-ISO-10303-21;', + relevance: 10 + }; + + return { + name: 'STEP Part 21', + aliases: [ + 'p21', + 'step', + 'stp' + ], + case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized. + keywords: STEP21_KEYWORDS, + contains: [ + STEP21_START, + STEP21_CLOSE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + hljs.COMMENT('/\\*\\*!', '\\*/'), + hljs.C_NUMBER_MODE, + hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }), + hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), + { + className: 'string', + begin: "'", + end: "'" + }, + { + className: 'symbol', + variants: [ + { + begin: '#', + end: '\\d+', + illegal: '\\W' + } + ] + } + ] + }; +} + +module.exports = step21; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/stylus.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/stylus.js ***! + \***************************************************************/ +(module) { + +const MODES = (hljs) => { + return { + IMPORTANT: { + scope: 'meta', + begin: '!important' + }, + BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, + HEXCOLOR: { + scope: 'number', + begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ + }, + FUNCTION_DISPATCH: { + className: "built_in", + begin: /[\w-]+(?=\()/ + }, + ATTRIBUTE_SELECTOR_MODE: { + scope: 'selector-attr', + begin: /\[/, + end: /\]/, + illegal: '$', + contains: [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE + ] + }, + CSS_NUMBER_MODE: { + scope: 'number', + begin: hljs.NUMBER_RE + '(' + + '%|em|ex|ch|rem' + + '|vw|vh|vmin|vmax' + + '|cm|mm|in|pt|pc|px' + + '|deg|grad|rad|turn' + + '|s|ms' + + '|Hz|kHz' + + '|dpi|dpcm|dppx' + + ')?', + relevance: 0 + }, + CSS_VARIABLE: { + className: "attr", + begin: /--[A-Za-z_][A-Za-z0-9_-]*/ + } + }; +}; + +const HTML_TAGS = [ + 'a', + 'abbr', + 'address', + 'article', + 'aside', + 'audio', + 'b', + 'blockquote', + 'body', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'dd', + 'del', + 'details', + 'dfn', + 'div', + 'dl', + 'dt', + 'em', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'header', + 'hgroup', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'label', + 'legend', + 'li', + 'main', + 'mark', + 'menu', + 'nav', + 'object', + 'ol', + 'optgroup', + 'option', + 'p', + 'picture', + 'q', + 'quote', + 'samp', + 'section', + 'select', + 'source', + 'span', + 'strong', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'tr', + 'ul', + 'var', + 'video' +]; + +const SVG_TAGS = [ + 'defs', + 'g', + 'marker', + 'mask', + 'pattern', + 'svg', + 'switch', + 'symbol', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feFlood', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMorphology', + 'feOffset', + 'feSpecularLighting', + 'feTile', + 'feTurbulence', + 'linearGradient', + 'radialGradient', + 'stop', + 'circle', + 'ellipse', + 'image', + 'line', + 'path', + 'polygon', + 'polyline', + 'rect', + 'text', + 'use', + 'textPath', + 'tspan', + 'foreignObject', + 'clipPath' +]; + +const TAGS = [ + ...HTML_TAGS, + ...SVG_TAGS, +]; + +// Sorting, then reversing makes sure longer attributes/elements like +// `font-weight` are matched fully instead of getting false positives on say `font` + +const MEDIA_FEATURES = [ + 'any-hover', + 'any-pointer', + 'aspect-ratio', + 'color', + 'color-gamut', + 'color-index', + 'device-aspect-ratio', + 'device-height', + 'device-width', + 'display-mode', + 'forced-colors', + 'grid', + 'height', + 'hover', + 'inverted-colors', + 'monochrome', + 'orientation', + 'overflow-block', + 'overflow-inline', + 'pointer', + 'prefers-color-scheme', + 'prefers-contrast', + 'prefers-reduced-motion', + 'prefers-reduced-transparency', + 'resolution', + 'scan', + 'scripting', + 'update', + 'width', + // TODO: find a better solution? + 'min-width', + 'max-width', + 'min-height', + 'max-height' +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes +const PSEUDO_CLASSES = [ + 'active', + 'any-link', + 'blank', + 'checked', + 'current', + 'default', + 'defined', + 'dir', // dir() + 'disabled', + 'drop', + 'empty', + 'enabled', + 'first', + 'first-child', + 'first-of-type', + 'fullscreen', + 'future', + 'focus', + 'focus-visible', + 'focus-within', + 'has', // has() + 'host', // host or host() + 'host-context', // host-context() + 'hover', + 'indeterminate', + 'in-range', + 'invalid', + 'is', // is() + 'lang', // lang() + 'last-child', + 'last-of-type', + 'left', + 'link', + 'local-link', + 'not', // not() + 'nth-child', // nth-child() + 'nth-col', // nth-col() + 'nth-last-child', // nth-last-child() + 'nth-last-col', // nth-last-col() + 'nth-last-of-type', //nth-last-of-type() + 'nth-of-type', //nth-of-type() + 'only-child', + 'only-of-type', + 'optional', + 'out-of-range', + 'past', + 'placeholder-shown', + 'read-only', + 'read-write', + 'required', + 'right', + 'root', + 'scope', + 'target', + 'target-within', + 'user-invalid', + 'valid', + 'visited', + 'where' // where() +].sort().reverse(); + +// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements +const PSEUDO_ELEMENTS = [ + 'after', + 'backdrop', + 'before', + 'cue', + 'cue-region', + 'first-letter', + 'first-line', + 'grammar-error', + 'marker', + 'part', + 'placeholder', + 'selection', + 'slotted', + 'spelling-error' +].sort().reverse(); + +const ATTRIBUTES = [ + 'accent-color', + 'align-content', + 'align-items', + 'align-self', + 'alignment-baseline', + 'all', + 'anchor-name', + 'animation', + 'animation-composition', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-range', + 'animation-range-end', + 'animation-range-start', + 'animation-timeline', + 'animation-timing-function', + 'appearance', + 'aspect-ratio', + 'backdrop-filter', + 'backface-visibility', + 'background', + 'background-attachment', + 'background-blend-mode', + 'background-clip', + 'background-color', + 'background-image', + 'background-origin', + 'background-position', + 'background-position-x', + 'background-position-y', + 'background-repeat', + 'background-size', + 'baseline-shift', + 'block-size', + 'border', + 'border-block', + 'border-block-color', + 'border-block-end', + 'border-block-end-color', + 'border-block-end-style', + 'border-block-end-width', + 'border-block-start', + 'border-block-start-color', + 'border-block-start-style', + 'border-block-start-width', + 'border-block-style', + 'border-block-width', + 'border-bottom', + 'border-bottom-color', + 'border-bottom-left-radius', + 'border-bottom-right-radius', + 'border-bottom-style', + 'border-bottom-width', + 'border-collapse', + 'border-color', + 'border-end-end-radius', + 'border-end-start-radius', + 'border-image', + 'border-image-outset', + 'border-image-repeat', + 'border-image-slice', + 'border-image-source', + 'border-image-width', + 'border-inline', + 'border-inline-color', + 'border-inline-end', + 'border-inline-end-color', + 'border-inline-end-style', + 'border-inline-end-width', + 'border-inline-start', + 'border-inline-start-color', + 'border-inline-start-style', + 'border-inline-start-width', + 'border-inline-style', + 'border-inline-width', + 'border-left', + 'border-left-color', + 'border-left-style', + 'border-left-width', + 'border-radius', + 'border-right', + 'border-right-color', + 'border-right-style', + 'border-right-width', + 'border-spacing', + 'border-start-end-radius', + 'border-start-start-radius', + 'border-style', + 'border-top', + 'border-top-color', + 'border-top-left-radius', + 'border-top-right-radius', + 'border-top-style', + 'border-top-width', + 'border-width', + 'bottom', + 'box-align', + 'box-decoration-break', + 'box-direction', + 'box-flex', + 'box-flex-group', + 'box-lines', + 'box-ordinal-group', + 'box-orient', + 'box-pack', + 'box-shadow', + 'box-sizing', + 'break-after', + 'break-before', + 'break-inside', + 'caption-side', + 'caret-color', + 'clear', + 'clip', + 'clip-path', + 'clip-rule', + 'color', + 'color-interpolation', + 'color-interpolation-filters', + 'color-profile', + 'color-rendering', + 'color-scheme', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + 'contain', + 'contain-intrinsic-block-size', + 'contain-intrinsic-height', + 'contain-intrinsic-inline-size', + 'contain-intrinsic-size', + 'contain-intrinsic-width', + 'container', + 'container-name', + 'container-type', + 'content', + 'content-visibility', + 'counter-increment', + 'counter-reset', + 'counter-set', + 'cue', + 'cue-after', + 'cue-before', + 'cursor', + 'cx', + 'cy', + 'direction', + 'display', + 'dominant-baseline', + 'empty-cells', + 'enable-background', + 'field-sizing', + 'fill', + 'fill-opacity', + 'fill-rule', + 'filter', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'float', + 'flood-color', + 'flood-opacity', + 'flow', + 'font', + 'font-display', + 'font-family', + 'font-feature-settings', + 'font-kerning', + 'font-language-override', + 'font-optical-sizing', + 'font-palette', + 'font-size', + 'font-size-adjust', + 'font-smooth', + 'font-smoothing', + 'font-stretch', + 'font-style', + 'font-synthesis', + 'font-synthesis-position', + 'font-synthesis-small-caps', + 'font-synthesis-style', + 'font-synthesis-weight', + 'font-variant', + 'font-variant-alternates', + 'font-variant-caps', + 'font-variant-east-asian', + 'font-variant-emoji', + 'font-variant-ligatures', + 'font-variant-numeric', + 'font-variant-position', + 'font-variation-settings', + 'font-weight', + 'forced-color-adjust', + 'gap', + 'glyph-orientation-horizontal', + 'glyph-orientation-vertical', + 'grid', + 'grid-area', + 'grid-auto-columns', + 'grid-auto-flow', + 'grid-auto-rows', + 'grid-column', + 'grid-column-end', + 'grid-column-start', + 'grid-gap', + 'grid-row', + 'grid-row-end', + 'grid-row-start', + 'grid-template', + 'grid-template-areas', + 'grid-template-columns', + 'grid-template-rows', + 'hanging-punctuation', + 'height', + 'hyphenate-character', + 'hyphenate-limit-chars', + 'hyphens', + 'icon', + 'image-orientation', + 'image-rendering', + 'image-resolution', + 'ime-mode', + 'initial-letter', + 'initial-letter-align', + 'inline-size', + 'inset', + 'inset-area', + 'inset-block', + 'inset-block-end', + 'inset-block-start', + 'inset-inline', + 'inset-inline-end', + 'inset-inline-start', + 'isolation', + 'justify-content', + 'justify-items', + 'justify-self', + 'kerning', + 'left', + 'letter-spacing', + 'lighting-color', + 'line-break', + 'line-height', + 'line-height-step', + 'list-style', + 'list-style-image', + 'list-style-position', + 'list-style-type', + 'margin', + 'margin-block', + 'margin-block-end', + 'margin-block-start', + 'margin-bottom', + 'margin-inline', + 'margin-inline-end', + 'margin-inline-start', + 'margin-left', + 'margin-right', + 'margin-top', + 'margin-trim', + 'marker', + 'marker-end', + 'marker-mid', + 'marker-start', + 'marks', + 'mask', + 'mask-border', + 'mask-border-mode', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-mode', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + 'mask-type', + 'masonry-auto-flow', + 'math-depth', + 'math-shift', + 'math-style', + 'max-block-size', + 'max-height', + 'max-inline-size', + 'max-width', + 'min-block-size', + 'min-height', + 'min-inline-size', + 'min-width', + 'mix-blend-mode', + 'nav-down', + 'nav-index', + 'nav-left', + 'nav-right', + 'nav-up', + 'none', + 'normal', + 'object-fit', + 'object-position', + 'offset', + 'offset-anchor', + 'offset-distance', + 'offset-path', + 'offset-position', + 'offset-rotate', + 'opacity', + 'order', + 'orphans', + 'outline', + 'outline-color', + 'outline-offset', + 'outline-style', + 'outline-width', + 'overflow', + 'overflow-anchor', + 'overflow-block', + 'overflow-clip-margin', + 'overflow-inline', + 'overflow-wrap', + 'overflow-x', + 'overflow-y', + 'overlay', + 'overscroll-behavior', + 'overscroll-behavior-block', + 'overscroll-behavior-inline', + 'overscroll-behavior-x', + 'overscroll-behavior-y', + 'padding', + 'padding-block', + 'padding-block-end', + 'padding-block-start', + 'padding-bottom', + 'padding-inline', + 'padding-inline-end', + 'padding-inline-start', + 'padding-left', + 'padding-right', + 'padding-top', + 'page', + 'page-break-after', + 'page-break-before', + 'page-break-inside', + 'paint-order', + 'pause', + 'pause-after', + 'pause-before', + 'perspective', + 'perspective-origin', + 'place-content', + 'place-items', + 'place-self', + 'pointer-events', + 'position', + 'position-anchor', + 'position-visibility', + 'print-color-adjust', + 'quotes', + 'r', + 'resize', + 'rest', + 'rest-after', + 'rest-before', + 'right', + 'rotate', + 'row-gap', + 'ruby-align', + 'ruby-position', + 'scale', + 'scroll-behavior', + 'scroll-margin', + 'scroll-margin-block', + 'scroll-margin-block-end', + 'scroll-margin-block-start', + 'scroll-margin-bottom', + 'scroll-margin-inline', + 'scroll-margin-inline-end', + 'scroll-margin-inline-start', + 'scroll-margin-left', + 'scroll-margin-right', + 'scroll-margin-top', + 'scroll-padding', + 'scroll-padding-block', + 'scroll-padding-block-end', + 'scroll-padding-block-start', + 'scroll-padding-bottom', + 'scroll-padding-inline', + 'scroll-padding-inline-end', + 'scroll-padding-inline-start', + 'scroll-padding-left', + 'scroll-padding-right', + 'scroll-padding-top', + 'scroll-snap-align', + 'scroll-snap-stop', + 'scroll-snap-type', + 'scroll-timeline', + 'scroll-timeline-axis', + 'scroll-timeline-name', + 'scrollbar-color', + 'scrollbar-gutter', + 'scrollbar-width', + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + 'shape-rendering', + 'speak', + 'speak-as', + 'src', // @font-face + 'stop-color', + 'stop-opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-dashoffset', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'tab-size', + 'table-layout', + 'text-align', + 'text-align-all', + 'text-align-last', + 'text-anchor', + 'text-combine-upright', + 'text-decoration', + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-skip-ink', + 'text-decoration-style', + 'text-decoration-thickness', + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + 'text-indent', + 'text-justify', + 'text-orientation', + 'text-overflow', + 'text-rendering', + 'text-shadow', + 'text-size-adjust', + 'text-transform', + 'text-underline-offset', + 'text-underline-position', + 'text-wrap', + 'text-wrap-mode', + 'text-wrap-style', + 'timeline-scope', + 'top', + 'touch-action', + 'transform', + 'transform-box', + 'transform-origin', + 'transform-style', + 'transition', + 'transition-behavior', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + 'translate', + 'unicode-bidi', + 'user-modify', + 'user-select', + 'vector-effect', + 'vertical-align', + 'view-timeline', + 'view-timeline-axis', + 'view-timeline-inset', + 'view-timeline-name', + 'view-transition-name', + 'visibility', + 'voice-balance', + 'voice-duration', + 'voice-family', + 'voice-pitch', + 'voice-range', + 'voice-rate', + 'voice-stress', + 'voice-volume', + 'white-space', + 'white-space-collapse', + 'widows', + 'width', + 'will-change', + 'word-break', + 'word-spacing', + 'word-wrap', + 'writing-mode', + 'x', + 'y', + 'z-index', + 'zoom' +].sort().reverse(); + +/* +Language: Stylus +Author: Bryant Williams +Description: Stylus is an expressive, robust, feature-rich CSS language built for nodejs. +Website: https://github.com/stylus/stylus +Category: css, web +*/ + + +/** @type LanguageFn */ +function stylus(hljs) { + const modes = MODES(hljs); + + const AT_MODIFIERS = "and or not only"; + const VARIABLE = { + className: 'variable', + begin: '\\$' + hljs.IDENT_RE + }; + + const AT_KEYWORDS = [ + 'charset', + 'css', + 'debug', + 'extend', + 'font-face', + 'for', + 'import', + 'include', + 'keyframes', + 'media', + 'mixin', + 'page', + 'warn', + 'while' + ]; + + const LOOKAHEAD_TAG_END = '(?=[.\\s\\n[:,(])'; + + // illegals + const ILLEGAL = [ + '\\?', + '(\\bReturn\\b)', // monkey + '(\\bEnd\\b)', // monkey + '(\\bend\\b)', // vbscript + '(\\bdef\\b)', // gradle + ';', // a whole lot of languages + '#\\s', // markdown + '\\*\\s', // markdown + '===\\s', // markdown + '\\|', + '%' // prolog + ]; + + return { + name: 'Stylus', + aliases: [ 'styl' ], + case_insensitive: false, + keywords: 'if else for in', + illegal: '(' + ILLEGAL.join('|') + ')', + contains: [ + + // strings + hljs.QUOTE_STRING_MODE, + hljs.APOS_STRING_MODE, + + // comments + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + + // hex colors + modes.HEXCOLOR, + + // class tag + { + begin: '\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, + className: 'selector-class' + }, + + // id tag + { + begin: '#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, + className: 'selector-id' + }, + + // tags + { + begin: '\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END, + className: 'selector-tag' + }, + + // psuedo selectors + { + className: 'selector-pseudo', + begin: '&?:(' + PSEUDO_CLASSES.join('|') + ')' + LOOKAHEAD_TAG_END + }, + { + className: 'selector-pseudo', + begin: '&?:(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END + }, + + modes.ATTRIBUTE_SELECTOR_MODE, + + { + className: "keyword", + begin: /@media/, + starts: { + end: /[{;}]/, + keywords: { + $pattern: /[a-z-]+/, + keyword: AT_MODIFIERS, + attribute: MEDIA_FEATURES.join(" ") + }, + contains: [ modes.CSS_NUMBER_MODE ] + } + }, + + // @ keywords + { + className: 'keyword', + begin: '\@((-(o|moz|ms|webkit)-)?(' + AT_KEYWORDS.join('|') + '))\\b' + }, + + // variables + VARIABLE, + + // dimension + modes.CSS_NUMBER_MODE, + + // functions + // - only from beginning of line + whitespace + { + className: 'function', + begin: '^[a-zA-Z][a-zA-Z0-9_\-]*\\(.*\\)', + illegal: '[\\n]', + returnBegin: true, + contains: [ + { + className: 'title', + begin: '\\b[a-zA-Z][a-zA-Z0-9_\-]*' + }, + { + className: 'params', + begin: /\(/, + end: /\)/, + contains: [ + modes.HEXCOLOR, + VARIABLE, + hljs.APOS_STRING_MODE, + modes.CSS_NUMBER_MODE, + hljs.QUOTE_STRING_MODE + ] + } + ] + }, + + // css variables + modes.CSS_VARIABLE, + + // attributes + // - only from beginning of line + whitespace + // - must have whitespace after it + { + className: 'attribute', + begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b', + starts: { + // value container + end: /;|$/, + contains: [ + modes.HEXCOLOR, + VARIABLE, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + modes.CSS_NUMBER_MODE, + hljs.C_BLOCK_COMMENT_MODE, + modes.IMPORTANT, + modes.FUNCTION_DISPATCH + ], + illegal: /\./, + relevance: 0 + } + }, + modes.FUNCTION_DISPATCH + ] + }; +} + +module.exports = stylus; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/subunit.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/subunit.js ***! + \****************************************************************/ +(module) { + +/* +Language: SubUnit +Author: Sergey Bronnikov +Website: https://pypi.org/project/python-subunit/ +Category: protocols +*/ + +function subunit(hljs) { + const DETAILS = { + className: 'string', + begin: '\\[\n(multipart)?', + end: '\\]\n' + }; + const TIME = { + className: 'string', + begin: '\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}\.\\d+Z' + }; + const PROGRESSVALUE = { + className: 'string', + begin: '(\\+|-)\\d+' + }; + const KEYWORDS = { + className: 'keyword', + relevance: 10, + variants: [ + { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?' }, + { begin: '^progress(:?)(\\s+)?(pop|push)?' }, + { begin: '^tags:' }, + { begin: '^time:' } + ] + }; + return { + name: 'SubUnit', + case_insensitive: true, + contains: [ + DETAILS, + TIME, + PROGRESSVALUE, + KEYWORDS + ] + }; +} + +module.exports = subunit; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/swift.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/swift.js ***! + \**************************************************************/ +(module) { + +/** + * @param {string} value + * @returns {RegExp} + * */ + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function source(re) { + if (!re) return null; + if (typeof re === "string") return re; + + return re.source; +} + +/** + * @param {RegExp | string } re + * @returns {string} + */ +function lookahead(re) { + return concat('(?=', re, ')'); +} + +/** + * @param {...(RegExp | string) } args + * @returns {string} + */ +function concat(...args) { + const joined = args.map((x) => source(x)).join(""); + return joined; +} + +/** + * @param { Array } args + * @returns {object} + */ +function stripOptionsFromArgs(args) { + const opts = args[args.length - 1]; + + if (typeof opts === 'object' && opts.constructor === Object) { + args.splice(args.length - 1, 1); + return opts; + } else { + return {}; + } +} + +/** @typedef { {capture?: boolean} } RegexEitherOptions */ + +/** + * Any of the passed expresssions may match + * + * Creates a huge this | this | that | that match + * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args + * @returns {string} + */ +function either(...args) { + /** @type { object & {capture?: boolean} } */ + const opts = stripOptionsFromArgs(args); + const joined = '(' + + (opts.capture ? "" : "?:") + + args.map((x) => source(x)).join("|") + ")"; + return joined; +} + +const keywordWrapper = keyword => concat( + /\b/, + keyword, + /\w$/.test(keyword) ? /\b/ : /\B/ +); + +// Keywords that require a leading dot. +const dotKeywords = [ + 'Protocol', // contextual + 'Type' // contextual +].map(keywordWrapper); + +// Keywords that may have a leading dot. +const optionalDotKeywords = [ + 'init', + 'self' +].map(keywordWrapper); + +// should register as keyword, not type +const keywordTypes = [ + 'Any', + 'Self' +]; + +// Regular keywords and literals. +const keywords = [ + // strings below will be fed into the regular `keywords` engine while regex + // will result in additional modes being created to scan for those keywords to + // avoid conflicts with other rules + 'actor', + 'any', // contextual + 'associatedtype', + 'async', + 'await', + /as\?/, // operator + /as!/, // operator + 'as', // operator + 'borrowing', // contextual + 'break', + 'case', + 'catch', + 'class', + 'consume', // contextual + 'consuming', // contextual + 'continue', + 'convenience', // contextual + 'copy', // contextual + 'default', + 'defer', + 'deinit', + 'didSet', // contextual + 'distributed', + 'do', + 'dynamic', // contextual + 'each', + 'else', + 'enum', + 'extension', + 'fallthrough', + /fileprivate\(set\)/, + 'fileprivate', + 'final', // contextual + 'for', + 'func', + 'get', // contextual + 'guard', + 'if', + 'import', + 'indirect', // contextual + 'infix', // contextual + /init\?/, + /init!/, + 'inout', + /internal\(set\)/, + 'internal', + 'in', + 'is', // operator + 'isolated', // contextual + 'nonisolated', // contextual + 'lazy', // contextual + 'let', + 'macro', + 'mutating', // contextual + 'nonmutating', // contextual + /open\(set\)/, // contextual + 'open', // contextual + 'operator', + 'optional', // contextual + 'override', // contextual + 'package', + 'postfix', // contextual + 'precedencegroup', + 'prefix', // contextual + /private\(set\)/, + 'private', + 'protocol', + /public\(set\)/, + 'public', + 'repeat', + 'required', // contextual + 'rethrows', + 'return', + 'set', // contextual + 'some', // contextual + 'static', + 'struct', + 'subscript', + 'super', + 'switch', + 'throws', + 'throw', + /try\?/, // operator + /try!/, // operator + 'try', // operator + 'typealias', + /unowned\(safe\)/, // contextual + /unowned\(unsafe\)/, // contextual + 'unowned', // contextual + 'var', + 'weak', // contextual + 'where', + 'while', + 'willSet' // contextual +]; + +// NOTE: Contextual keywords are reserved only in specific contexts. +// Ideally, these should be matched using modes to avoid false positives. + +// Literals. +const literals = [ + 'false', + 'nil', + 'true' +]; + +// Keywords used in precedence groups. +const precedencegroupKeywords = [ + 'assignment', + 'associativity', + 'higherThan', + 'left', + 'lowerThan', + 'none', + 'right' +]; + +// Keywords that start with a number sign (#). +// #(un)available is handled separately. +const numberSignKeywords = [ + '#colorLiteral', + '#column', + '#dsohandle', + '#else', + '#elseif', + '#endif', + '#error', + '#file', + '#fileID', + '#fileLiteral', + '#filePath', + '#function', + '#if', + '#imageLiteral', + '#keyPath', + '#line', + '#selector', + '#sourceLocation', + '#warning' +]; + +// Global functions in the Standard Library. +const builtIns = [ + 'abs', + 'all', + 'any', + 'assert', + 'assertionFailure', + 'debugPrint', + 'dump', + 'fatalError', + 'getVaList', + 'isKnownUniquelyReferenced', + 'max', + 'min', + 'numericCast', + 'pointwiseMax', + 'pointwiseMin', + 'precondition', + 'preconditionFailure', + 'print', + 'readLine', + 'repeatElement', + 'sequence', + 'stride', + 'swap', + 'swift_unboxFromSwiftValueWithType', + 'transcode', + 'type', + 'unsafeBitCast', + 'unsafeDowncast', + 'withExtendedLifetime', + 'withUnsafeMutablePointer', + 'withUnsafePointer', + 'withVaList', + 'withoutActuallyEscaping', + 'zip' +]; + +// Valid first characters for operators. +const operatorHead = either( + /[/=\-+!*%<>&|^~?]/, + /[\u00A1-\u00A7]/, + /[\u00A9\u00AB]/, + /[\u00AC\u00AE]/, + /[\u00B0\u00B1]/, + /[\u00B6\u00BB\u00BF\u00D7\u00F7]/, + /[\u2016-\u2017]/, + /[\u2020-\u2027]/, + /[\u2030-\u203E]/, + /[\u2041-\u2053]/, + /[\u2055-\u205E]/, + /[\u2190-\u23FF]/, + /[\u2500-\u2775]/, + /[\u2794-\u2BFF]/, + /[\u2E00-\u2E7F]/, + /[\u3001-\u3003]/, + /[\u3008-\u3020]/, + /[\u3030]/ +); + +// Valid characters for operators. +const operatorCharacter = either( + operatorHead, + /[\u0300-\u036F]/, + /[\u1DC0-\u1DFF]/, + /[\u20D0-\u20FF]/, + /[\uFE00-\uFE0F]/, + /[\uFE20-\uFE2F]/ + // TODO: The following characters are also allowed, but the regex isn't supported yet. + // /[\u{E0100}-\u{E01EF}]/u +); + +// Valid operator. +const operator = concat(operatorHead, operatorCharacter, '*'); + +// Valid first characters for identifiers. +const identifierHead = either( + /[a-zA-Z_]/, + /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/, + /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, + /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/, + /[\u1E00-\u1FFF]/, + /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/, + /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, + /[\u2C00-\u2DFF\u2E80-\u2FFF]/, + /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, + /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/, + /[\uFE47-\uFEFE\uFF00-\uFFFD]/ // Should be /[\uFE47-\uFFFD]/, but we have to exclude FEFF. + // The following characters are also allowed, but the regexes aren't supported yet. + // /[\u{10000}-\u{1FFFD}\u{20000-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}]/u, + // /[\u{50000}-\u{5FFFD}\u{60000-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}]/u, + // /[\u{90000}-\u{9FFFD}\u{A0000-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}]/u, + // /[\u{D0000}-\u{DFFFD}\u{E0000-\u{EFFFD}]/u +); + +// Valid characters for identifiers. +const identifierCharacter = either( + identifierHead, + /\d/, + /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/ +); + +// Valid identifier. +const identifier = concat(identifierHead, identifierCharacter, '*'); + +// Valid type identifier. +const typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*'); + +// Built-in attributes, which are highlighted as keywords. +// @available is handled separately. +// https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes +const keywordAttributes = [ + 'attached', + 'autoclosure', + concat(/convention\(/, either('swift', 'block', 'c'), /\)/), + 'discardableResult', + 'dynamicCallable', + 'dynamicMemberLookup', + 'escaping', + 'freestanding', + 'frozen', + 'GKInspectable', + 'IBAction', + 'IBDesignable', + 'IBInspectable', + 'IBOutlet', + 'IBSegueAction', + 'inlinable', + 'main', + 'nonobjc', + 'NSApplicationMain', + 'NSCopying', + 'NSManaged', + concat(/objc\(/, identifier, /\)/), + 'objc', + 'objcMembers', + 'propertyWrapper', + 'requires_stored_property_inits', + 'resultBuilder', + 'Sendable', + 'testable', + 'UIApplicationMain', + 'unchecked', + 'unknown', + 'usableFromInline', + 'warn_unqualified_access' +]; + +// Contextual keywords used in @available and #(un)available. +const availabilityKeywords = [ + 'iOS', + 'iOSApplicationExtension', + 'macOS', + 'macOSApplicationExtension', + 'macCatalyst', + 'macCatalystApplicationExtension', + 'watchOS', + 'watchOSApplicationExtension', + 'tvOS', + 'tvOSApplicationExtension', + 'swift' +]; + +/* +Language: Swift +Description: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. +Author: Steven Van Impe +Contributors: Chris Eidhof , Nate Cook , Alexander Lichter , Richard Gibson +Website: https://swift.org +Category: common, system +*/ + + +/** @type LanguageFn */ +function swift(hljs) { + const WHITESPACE = { + match: /\s+/, + relevance: 0 + }; + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411 + const BLOCK_COMMENT = hljs.COMMENT( + '/\\*', + '\\*/', + { contains: [ 'self' ] } + ); + const COMMENTS = [ + hljs.C_LINE_COMMENT_MODE, + BLOCK_COMMENT + ]; + + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413 + // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html + const DOT_KEYWORD = { + match: [ + /\./, + either(...dotKeywords, ...optionalDotKeywords) + ], + className: { 2: "keyword" } + }; + const KEYWORD_GUARD = { + // Consume .keyword to prevent highlighting properties and methods as keywords. + match: concat(/\./, either(...keywords)), + relevance: 0 + }; + const PLAIN_KEYWORDS = keywords + .filter(kw => typeof kw === 'string') + .concat([ "_|0" ]); // seems common, so 0 relevance + const REGEX_KEYWORDS = keywords + .filter(kw => typeof kw !== 'string') // find regex + .concat(keywordTypes) + .map(keywordWrapper); + const KEYWORD = { variants: [ + { + className: 'keyword', + match: either(...REGEX_KEYWORDS, ...optionalDotKeywords) + } + ] }; + // find all the regular keywords + const KEYWORDS = { + $pattern: either( + /\b\w+/, // regular keywords + /#\w+/ // number keywords + ), + keyword: PLAIN_KEYWORDS + .concat(numberSignKeywords), + literal: literals + }; + const KEYWORD_MODES = [ + DOT_KEYWORD, + KEYWORD_GUARD, + KEYWORD + ]; + + // https://github.com/apple/swift/tree/main/stdlib/public/core + const BUILT_IN_GUARD = { + // Consume .built_in to prevent highlighting properties and methods. + match: concat(/\./, either(...builtIns)), + relevance: 0 + }; + const BUILT_IN = { + className: 'built_in', + match: concat(/\b/, either(...builtIns), /(?=\()/) + }; + const BUILT_INS = [ + BUILT_IN_GUARD, + BUILT_IN + ]; + + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418 + const OPERATOR_GUARD = { + // Prevent -> from being highlighting as an operator. + match: /->/, + relevance: 0 + }; + const OPERATOR = { + className: 'operator', + relevance: 0, + variants: [ + { match: operator }, + { + // dot-operator: only operators that start with a dot are allowed to use dots as + // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more + // characters that may also include dots. + match: `\\.(\\.|${operatorCharacter})+` } + ] + }; + const OPERATORS = [ + OPERATOR_GUARD, + OPERATOR + ]; + + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal + // TODO: Update for leading `-` after lookbehind is supported everywhere + const decimalDigits = '([0-9]_*)+'; + const hexDigits = '([0-9a-fA-F]_*)+'; + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + // decimal floating-point-literal (subsumes decimal-literal) + { match: `\\b(${decimalDigits})(\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\b` }, + // hexadecimal floating-point-literal (subsumes hexadecimal-literal) + { match: `\\b0x(${hexDigits})(\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\b` }, + // octal-literal + { match: /\b0o([0-7]_*)+\b/ }, + // binary-literal + { match: /\b0b([01]_*)+\b/ } + ] + }; + + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal + const ESCAPED_CHARACTER = (rawDelimiter = "") => ({ + className: 'subst', + variants: [ + { match: concat(/\\/, rawDelimiter, /[0\\tnr"']/) }, + { match: concat(/\\/, rawDelimiter, /u\{[0-9a-fA-F]{1,8}\}/) } + ] + }); + const ESCAPED_NEWLINE = (rawDelimiter = "") => ({ + className: 'subst', + match: concat(/\\/, rawDelimiter, /[\t ]*(?:[\r\n]|\r\n)/) + }); + const INTERPOLATION = (rawDelimiter = "") => ({ + className: 'subst', + label: "interpol", + begin: concat(/\\/, rawDelimiter, /\(/), + end: /\)/ + }); + const MULTILINE_STRING = (rawDelimiter = "") => ({ + begin: concat(rawDelimiter, /"""/), + end: concat(/"""/, rawDelimiter), + contains: [ + ESCAPED_CHARACTER(rawDelimiter), + ESCAPED_NEWLINE(rawDelimiter), + INTERPOLATION(rawDelimiter) + ] + }); + const SINGLE_LINE_STRING = (rawDelimiter = "") => ({ + begin: concat(rawDelimiter, /"/), + end: concat(/"/, rawDelimiter), + contains: [ + ESCAPED_CHARACTER(rawDelimiter), + INTERPOLATION(rawDelimiter) + ] + }); + const STRING = { + className: 'string', + variants: [ + MULTILINE_STRING(), + MULTILINE_STRING("#"), + MULTILINE_STRING("##"), + MULTILINE_STRING("###"), + SINGLE_LINE_STRING(), + SINGLE_LINE_STRING("#"), + SINGLE_LINE_STRING("##"), + SINGLE_LINE_STRING("###") + ] + }; + + const REGEXP_CONTENTS = [ + hljs.BACKSLASH_ESCAPE, + { + begin: /\[/, + end: /\]/, + relevance: 0, + contains: [ hljs.BACKSLASH_ESCAPE ] + } + ]; + + const BARE_REGEXP_LITERAL = { + begin: /\/[^\s](?=[^/\n]*\/)/, + end: /\//, + contains: REGEXP_CONTENTS + }; + + const EXTENDED_REGEXP_LITERAL = (rawDelimiter) => { + const begin = concat(rawDelimiter, /\//); + const end = concat(/\//, rawDelimiter); + return { + begin, + end, + contains: [ + ...REGEXP_CONTENTS, + { + scope: "comment", + begin: `#(?!.*${end})`, + end: /$/, + }, + ], + }; + }; + + // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Regular-Expression-Literals + const REGEXP = { + scope: "regexp", + variants: [ + EXTENDED_REGEXP_LITERAL('###'), + EXTENDED_REGEXP_LITERAL('##'), + EXTENDED_REGEXP_LITERAL('#'), + BARE_REGEXP_LITERAL + ] + }; + + // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412 + const QUOTED_IDENTIFIER = { match: concat(/`/, identifier, /`/) }; + const IMPLICIT_PARAMETER = { + className: 'variable', + match: /\$\d+/ + }; + const PROPERTY_WRAPPER_PROJECTION = { + className: 'variable', + match: `\\$${identifierCharacter}+` + }; + const IDENTIFIERS = [ + QUOTED_IDENTIFIER, + IMPLICIT_PARAMETER, + PROPERTY_WRAPPER_PROJECTION + ]; + + // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html + const AVAILABLE_ATTRIBUTE = { + match: /(@|#(un)?)available/, + scope: 'keyword', + starts: { contains: [ + { + begin: /\(/, + end: /\)/, + keywords: availabilityKeywords, + contains: [ + ...OPERATORS, + NUMBER, + STRING + ] + } + ] } + }; + + const KEYWORD_ATTRIBUTE = { + scope: 'keyword', + match: concat(/@/, either(...keywordAttributes), lookahead(either(/\(/, /\s+/))), + }; + + const USER_DEFINED_ATTRIBUTE = { + scope: 'meta', + match: concat(/@/, identifier) + }; + + const ATTRIBUTES = [ + AVAILABLE_ATTRIBUTE, + KEYWORD_ATTRIBUTE, + USER_DEFINED_ATTRIBUTE + ]; + + // https://docs.swift.org/swift-book/ReferenceManual/Types.html + const TYPE = { + match: lookahead(/\b[A-Z]/), + relevance: 0, + contains: [ + { // Common Apple frameworks, for relevance boost + className: 'type', + match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+') + }, + { // Type identifier + className: 'type', + match: typeIdentifier, + relevance: 0 + }, + { // Optional type + match: /[?!]+/, + relevance: 0 + }, + { // Variadic parameter + match: /\.\.\./, + relevance: 0 + }, + { // Protocol composition + match: concat(/\s+&\s+/, lookahead(typeIdentifier)), + relevance: 0 + } + ] + }; + const GENERIC_ARGUMENTS = { + begin: //, + keywords: KEYWORDS, + contains: [ + ...COMMENTS, + ...KEYWORD_MODES, + ...ATTRIBUTES, + OPERATOR_GUARD, + TYPE + ] + }; + TYPE.contains.push(GENERIC_ARGUMENTS); + + // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552 + // Prevents element names from being highlighted as keywords. + const TUPLE_ELEMENT_NAME = { + match: concat(identifier, /\s*:/), + keywords: "_|0", + relevance: 0 + }; + // Matches tuples as well as the parameter list of a function type. + const TUPLE = { + begin: /\(/, + end: /\)/, + relevance: 0, + keywords: KEYWORDS, + contains: [ + 'self', + TUPLE_ELEMENT_NAME, + ...COMMENTS, + REGEXP, + ...KEYWORD_MODES, + ...BUILT_INS, + ...OPERATORS, + NUMBER, + STRING, + ...IDENTIFIERS, + ...ATTRIBUTES, + TYPE + ] + }; + + const GENERIC_PARAMETERS = { + begin: //, + keywords: 'repeat each', + contains: [ + ...COMMENTS, + TYPE + ] + }; + const FUNCTION_PARAMETER_NAME = { + begin: either( + lookahead(concat(identifier, /\s*:/)), + lookahead(concat(identifier, /\s+/, identifier, /\s*:/)) + ), + end: /:/, + relevance: 0, + contains: [ + { + className: 'keyword', + match: /\b_\b/ + }, + { + className: 'params', + match: identifier + } + ] + }; + const FUNCTION_PARAMETERS = { + begin: /\(/, + end: /\)/, + keywords: KEYWORDS, + contains: [ + FUNCTION_PARAMETER_NAME, + ...COMMENTS, + ...KEYWORD_MODES, + ...OPERATORS, + NUMBER, + STRING, + ...ATTRIBUTES, + TYPE, + TUPLE + ], + endsParent: true, + illegal: /["']/ + }; + // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362 + // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/declarations/#Macro-Declaration + const FUNCTION_OR_MACRO = { + match: [ + /(func|macro)/, + /\s+/, + either(QUOTED_IDENTIFIER.match, identifier, operator) + ], + className: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + GENERIC_PARAMETERS, + FUNCTION_PARAMETERS, + WHITESPACE + ], + illegal: [ + /\[/, + /%/ + ] + }; + + // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375 + // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379 + const INIT_SUBSCRIPT = { + match: [ + /\b(?:subscript|init[?!]?)/, + /\s*(?=[<(])/, + ], + className: { 1: "keyword" }, + contains: [ + GENERIC_PARAMETERS, + FUNCTION_PARAMETERS, + WHITESPACE + ], + illegal: /\[|%/ + }; + // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380 + const OPERATOR_DECLARATION = { + match: [ + /operator/, + /\s+/, + operator + ], + className: { + 1: "keyword", + 3: "title" + } + }; + + // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550 + const PRECEDENCEGROUP = { + begin: [ + /precedencegroup/, + /\s+/, + typeIdentifier + ], + className: { + 1: "keyword", + 3: "title" + }, + contains: [ TYPE ], + keywords: [ + ...precedencegroupKeywords, + ...literals + ], + end: /}/ + }; + + const CLASS_FUNC_DECLARATION = { + match: [ + /class\b/, + /\s+/, + /func\b/, + /\s+/, + /\b[A-Za-z_][A-Za-z0-9_]*\b/ + ], + scope: { + 1: "keyword", + 3: "keyword", + 5: "title.function" + } + }; + + const CLASS_VAR_DECLARATION = { + match: [ + /class\b/, + /\s+/, + /var\b/, + ], + scope: { + 1: "keyword", + 3: "keyword" + } + }; + + const TYPE_DECLARATION = { + begin: [ + /(struct|protocol|class|extension|enum|actor)/, + /\s+/, + identifier, + /\s*/, + ], + beginScope: { + 1: "keyword", + 3: "title.class" + }, + keywords: KEYWORDS, + contains: [ + GENERIC_PARAMETERS, + ...KEYWORD_MODES, + { + begin: /:/, + end: /\{/, + keywords: KEYWORDS, + contains: [ + { + scope: "title.class.inherited", + match: typeIdentifier, + }, + ...KEYWORD_MODES, + ], + relevance: 0, + }, + ] + }; + + // Add supported submodes to string interpolation. + for (const variant of STRING.variants) { + const interpolation = variant.contains.find(mode => mode.label === "interpol"); + // TODO: Interpolation can contain any expression, so there's room for improvement here. + interpolation.keywords = KEYWORDS; + const submodes = [ + ...KEYWORD_MODES, + ...BUILT_INS, + ...OPERATORS, + NUMBER, + STRING, + ...IDENTIFIERS + ]; + interpolation.contains = [ + ...submodes, + { + begin: /\(/, + end: /\)/, + contains: [ + 'self', + ...submodes + ] + } + ]; + } + + return { + name: 'Swift', + keywords: KEYWORDS, + contains: [ + ...COMMENTS, + FUNCTION_OR_MACRO, + INIT_SUBSCRIPT, + CLASS_FUNC_DECLARATION, + CLASS_VAR_DECLARATION, + TYPE_DECLARATION, + OPERATOR_DECLARATION, + PRECEDENCEGROUP, + { + beginKeywords: 'import', + end: /$/, + contains: [ ...COMMENTS ], + relevance: 0 + }, + REGEXP, + ...KEYWORD_MODES, + ...BUILT_INS, + ...OPERATORS, + NUMBER, + STRING, + ...IDENTIFIERS, + ...ATTRIBUTES, + TYPE, + TUPLE + ] + }; +} + +module.exports = swift; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/taggerscript.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/taggerscript.js ***! + \*********************************************************************/ +(module) { + +/* +Language: Tagger Script +Author: Philipp Wolfer +Description: Syntax Highlighting for the Tagger Script as used by MusicBrainz Picard. +Website: https://picard.musicbrainz.org +Category: scripting + */ +function taggerscript(hljs) { + const NOOP = { + className: 'comment', + begin: /\$noop\(/, + end: /\)/, + contains: [ + { begin: /\\[()]/ }, + { + begin: /\(/, + end: /\)/, + contains: [ + { begin: /\\[()]/ }, + 'self' + ] + } + ], + relevance: 10 + }; + + const FUNCTION = { + className: 'keyword', + begin: /\$[_a-zA-Z0-9]+(?=\()/ + }; + + const VARIABLE = { + className: 'variable', + begin: /%[_a-zA-Z0-9:]+%/ + }; + + const ESCAPE_SEQUENCE_UNICODE = { + className: 'symbol', + begin: /\\u[a-fA-F0-9]{4}/ + }; + + const ESCAPE_SEQUENCE = { + className: 'symbol', + begin: /\\[\\nt$%,()]/ + }; + + return { + name: 'Tagger Script', + contains: [ + NOOP, + FUNCTION, + VARIABLE, + ESCAPE_SEQUENCE, + ESCAPE_SEQUENCE_UNICODE + ] + }; +} + +module.exports = taggerscript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/tap.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/tap.js ***! + \************************************************************/ +(module) { + +/* +Language: Test Anything Protocol +Description: TAP, the Test Anything Protocol, is a simple text-based interface between testing modules in a test harness. +Requires: yaml.js +Author: Sergey Bronnikov +Website: https://testanything.org +*/ + +function tap(hljs) { + return { + name: 'Test Anything Protocol', + case_insensitive: true, + contains: [ + hljs.HASH_COMMENT_MODE, + // version of format and total amount of testcases + { + className: 'meta', + variants: [ + { begin: '^TAP version (\\d+)$' }, + { begin: '^1\\.\\.(\\d+)$' } + ] + }, + // YAML block + { + begin: /---$/, + end: '\\.\\.\\.$', + subLanguage: 'yaml', + relevance: 0 + }, + // testcase number + { + className: 'number', + begin: ' (\\d+) ' + }, + // testcase status and description + { + className: 'symbol', + variants: [ + { begin: '^ok' }, + { begin: '^not ok' } + ] + } + ] + }; +} + +module.exports = tap; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/tcl.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/tcl.js ***! + \************************************************************/ +(module) { + +/* +Language: Tcl +Description: Tcl is a very simple programming language. +Author: Radek Liska +Website: https://www.tcl.tk/about/language.html +Category: scripting +*/ + +function tcl(hljs) { + const regex = hljs.regex; + const TCL_IDENT = /[a-zA-Z_][a-zA-Z0-9_]*/; + + const NUMBER = { + className: 'number', + variants: [ + hljs.BINARY_NUMBER_MODE, + hljs.C_NUMBER_MODE + ] + }; + + const KEYWORDS = [ + "after", + "append", + "apply", + "array", + "auto_execok", + "auto_import", + "auto_load", + "auto_mkindex", + "auto_mkindex_old", + "auto_qualify", + "auto_reset", + "bgerror", + "binary", + "break", + "catch", + "cd", + "chan", + "clock", + "close", + "concat", + "continue", + "dde", + "dict", + "encoding", + "eof", + "error", + "eval", + "exec", + "exit", + "expr", + "fblocked", + "fconfigure", + "fcopy", + "file", + "fileevent", + "filename", + "flush", + "for", + "foreach", + "format", + "gets", + "glob", + "global", + "history", + "http", + "if", + "incr", + "info", + "interp", + "join", + "lappend|10", + "lassign|10", + "lindex|10", + "linsert|10", + "list", + "llength|10", + "load", + "lrange|10", + "lrepeat|10", + "lreplace|10", + "lreverse|10", + "lsearch|10", + "lset|10", + "lsort|10", + "mathfunc", + "mathop", + "memory", + "msgcat", + "namespace", + "open", + "package", + "parray", + "pid", + "pkg::create", + "pkg_mkIndex", + "platform", + "platform::shell", + "proc", + "puts", + "pwd", + "read", + "refchan", + "regexp", + "registry", + "regsub|10", + "rename", + "return", + "safe", + "scan", + "seek", + "set", + "socket", + "source", + "split", + "string", + "subst", + "switch", + "tcl_endOfWord", + "tcl_findLibrary", + "tcl_startOfNextWord", + "tcl_startOfPreviousWord", + "tcl_wordBreakAfter", + "tcl_wordBreakBefore", + "tcltest", + "tclvars", + "tell", + "time", + "tm", + "trace", + "unknown", + "unload", + "unset", + "update", + "uplevel", + "upvar", + "variable", + "vwait", + "while" + ]; + + return { + name: 'Tcl', + aliases: [ 'tk' ], + keywords: KEYWORDS, + contains: [ + hljs.COMMENT(';[ \\t]*#', '$'), + hljs.COMMENT('^[ \\t]*#', '$'), + { + beginKeywords: 'proc', + end: '[\\{]', + excludeEnd: true, + contains: [ + { + className: 'title', + begin: '[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*', + end: '[ \\t\\n\\r]', + endsWithParent: true, + excludeEnd: true + } + ] + }, + { + className: "variable", + variants: [ + { begin: regex.concat( + /\$/, + regex.optional(/::/), + TCL_IDENT, + '(::', + TCL_IDENT, + ')*' + ) }, + { + begin: '\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*', + end: '\\}', + contains: [ NUMBER ] + } + ] + }, + { + className: 'string', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }) ] + }, + NUMBER + ] + }; +} + +module.exports = tcl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/thrift.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/thrift.js ***! + \***************************************************************/ +(module) { + +/* +Language: Thrift +Author: Oleg Efimov +Description: Thrift message definition format +Website: https://thrift.apache.org +Category: protocols +*/ + +function thrift(hljs) { + const TYPES = [ + "bool", + "byte", + "i16", + "i32", + "i64", + "double", + "string", + "binary" + ]; + const KEYWORDS = [ + "namespace", + "const", + "typedef", + "struct", + "enum", + "service", + "exception", + "void", + "oneway", + "set", + "list", + "map", + "required", + "optional" + ]; + return { + name: 'Thrift', + keywords: { + keyword: KEYWORDS, + type: TYPES, + literal: 'true false' + }, + contains: [ + hljs.QUOTE_STRING_MODE, + hljs.NUMBER_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'class', + beginKeywords: 'struct enum service exception', + end: /\{/, + illegal: /\n/, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { + // hack: eating everything after the first title + starts: { + endsWithParent: true, + excludeEnd: true + } }) + ] + }, + { + begin: '\\b(set|list|map)\\s*<', + keywords: { type: [ + ...TYPES, + "set", + "list", + "map" + ] }, + end: '>', + contains: [ 'self' ] + } + ] + }; +} + +module.exports = thrift; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/tp.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/tp.js ***! + \***********************************************************/ +(module) { + +/* +Language: TP +Author: Jay Strybis +Description: FANUC TP programming language (TPP). +Category: hardware +*/ + +function tp(hljs) { + const TPID = { + className: 'number', + begin: '[1-9][0-9]*', /* no leading zeros */ + relevance: 0 + }; + const TPLABEL = { + className: 'symbol', + begin: ':[^\\]]+' + }; + const TPDATA = { + className: 'built_in', + begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|' + + 'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[', + end: '\\]', + contains: [ + 'self', + TPID, + TPLABEL + ] + }; + const TPIO = { + className: 'built_in', + begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[', + end: '\\]', + contains: [ + 'self', + TPID, + hljs.QUOTE_STRING_MODE, /* for pos section at bottom */ + TPLABEL + ] + }; + + const KEYWORDS = [ + "ABORT", + "ACC", + "ADJUST", + "AND", + "AP_LD", + "BREAK", + "CALL", + "CNT", + "COL", + "CONDITION", + "CONFIG", + "DA", + "DB", + "DIV", + "DETECT", + "ELSE", + "END", + "ENDFOR", + "ERR_NUM", + "ERROR_PROG", + "FINE", + "FOR", + "GP", + "GUARD", + "INC", + "IF", + "JMP", + "LINEAR_MAX_SPEED", + "LOCK", + "MOD", + "MONITOR", + "OFFSET", + "Offset", + "OR", + "OVERRIDE", + "PAUSE", + "PREG", + "PTH", + "RT_LD", + "RUN", + "SELECT", + "SKIP", + "Skip", + "TA", + "TB", + "TO", + "TOOL_OFFSET", + "Tool_Offset", + "UF", + "UT", + "UFRAME_NUM", + "UTOOL_NUM", + "UNLOCK", + "WAIT", + "X", + "Y", + "Z", + "W", + "P", + "R", + "STRLEN", + "SUBSTR", + "FINDSTR", + "VOFFSET", + "PROG", + "ATTR", + "MN", + "POS" + ]; + const LITERALS = [ + "ON", + "OFF", + "max_speed", + "LPOS", + "JPOS", + "ENABLE", + "DISABLE", + "START", + "STOP", + "RESET" + ]; + + return { + name: 'TP', + keywords: { + keyword: KEYWORDS, + literal: LITERALS + }, + contains: [ + TPDATA, + TPIO, + { + className: 'keyword', + begin: '/(PROG|ATTR|MN|POS|END)\\b' + }, + { + /* this is for cases like ,CALL */ + className: 'keyword', + begin: '(CALL|RUN|POINT_LOGIC|LBL)\\b' + }, + { + /* this is for cases like CNT100 where the default lexemes do not + * separate the keyword and the number */ + className: 'keyword', + begin: '\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)' + }, + { + /* to catch numbers that do not have a word boundary on the left */ + className: 'number', + begin: '\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b', + relevance: 0 + }, + hljs.COMMENT('//', '[;$]'), + hljs.COMMENT('!', '[;$]'), + hljs.COMMENT('--eg:', '$'), + hljs.QUOTE_STRING_MODE, + { + className: 'string', + begin: '\'', + end: '\'' + }, + hljs.C_NUMBER_MODE, + { + className: 'variable', + begin: '\\$[A-Za-z0-9_]+' + } + ] + }; +} + +module.exports = tp; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/twig.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/twig.js ***! + \*************************************************************/ +(module) { + +/* +Language: Twig +Requires: xml.js +Author: Luke Holder +Description: Twig is a templating language for PHP +Website: https://twig.symfony.com +Category: template +*/ + +function twig(hljs) { + const regex = hljs.regex; + const FUNCTION_NAMES = [ + "absolute_url", + "asset|0", + "asset_version", + "attribute", + "block", + "constant", + "controller|0", + "country_timezones", + "csrf_token", + "cycle", + "date", + "dump", + "expression", + "form|0", + "form_end", + "form_errors", + "form_help", + "form_label", + "form_rest", + "form_row", + "form_start", + "form_widget", + "html_classes", + "include", + "is_granted", + "logout_path", + "logout_url", + "max", + "min", + "parent", + "path|0", + "random", + "range", + "relative_path", + "render", + "render_esi", + "source", + "template_from_string", + "url|0" + ]; + + const FILTERS = [ + "abs", + "abbr_class", + "abbr_method", + "batch", + "capitalize", + "column", + "convert_encoding", + "country_name", + "currency_name", + "currency_symbol", + "data_uri", + "date", + "date_modify", + "default", + "escape", + "file_excerpt", + "file_link", + "file_relative", + "filter", + "first", + "format", + "format_args", + "format_args_as_text", + "format_currency", + "format_date", + "format_datetime", + "format_file", + "format_file_from_text", + "format_number", + "format_time", + "html_to_markdown", + "humanize", + "inky_to_html", + "inline_css", + "join", + "json_encode", + "keys", + "language_name", + "last", + "length", + "locale_name", + "lower", + "map", + "markdown", + "markdown_to_html", + "merge", + "nl2br", + "number_format", + "raw", + "reduce", + "replace", + "reverse", + "round", + "slice", + "slug", + "sort", + "spaceless", + "split", + "striptags", + "timezone_name", + "title", + "trans", + "transchoice", + "trim", + "u|0", + "upper", + "url_encode", + "yaml_dump", + "yaml_encode" + ]; + + let TAG_NAMES = [ + "apply", + "autoescape", + "block", + "cache", + "deprecated", + "do", + "embed", + "extends", + "filter", + "flush", + "for", + "form_theme", + "from", + "if", + "import", + "include", + "macro", + "sandbox", + "set", + "stopwatch", + "trans", + "trans_default_domain", + "transchoice", + "use", + "verbatim", + "with" + ]; + + TAG_NAMES = TAG_NAMES.concat(TAG_NAMES.map(t => `end${t}`)); + + const STRING = { + scope: 'string', + variants: [ + { + begin: /'/, + end: /'/ + }, + { + begin: /"/, + end: /"/ + }, + ] + }; + + const NUMBER = { + scope: "number", + match: /\d+/ + }; + + const PARAMS = { + begin: /\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + contains: [ + STRING, + NUMBER + ] + }; + + + const FUNCTIONS = { + beginKeywords: FUNCTION_NAMES.join(" "), + keywords: { name: FUNCTION_NAMES }, + relevance: 0, + contains: [ PARAMS ] + }; + + const FILTER = { + match: /\|(?=[A-Za-z_]+:?)/, + beginScope: "punctuation", + relevance: 0, + contains: [ + { + match: /[A-Za-z_]+:?/, + keywords: FILTERS + }, + ] + }; + + const tagNamed = (tagnames, { relevance }) => { + return { + beginScope: { + 1: 'template-tag', + 3: 'name' + }, + relevance: relevance || 2, + endScope: 'template-tag', + begin: [ + /\{%/, + /\s*/, + regex.either(...tagnames) + ], + end: /%\}/, + keywords: "in", + contains: [ + FILTER, + FUNCTIONS, + STRING, + NUMBER + ] + }; + }; + + const CUSTOM_TAG_RE = /[a-z_]+/; + const TAG = tagNamed(TAG_NAMES, { relevance: 2 }); + const CUSTOM_TAG = tagNamed([ CUSTOM_TAG_RE ], { relevance: 1 }); + + return { + name: 'Twig', + aliases: [ 'craftcms' ], + case_insensitive: true, + subLanguage: 'xml', + contains: [ + hljs.COMMENT(/\{#/, /#\}/), + TAG, + CUSTOM_TAG, + { + className: 'template-variable', + begin: /\{\{/, + end: /\}\}/, + contains: [ + 'self', + FILTER, + FUNCTIONS, + STRING, + NUMBER + ] + } + ] + }; +} + +module.exports = twig; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/typescript.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/typescript.js ***! + \*******************************************************************/ +(module) { + +const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; +const KEYWORDS = [ + "as", // for exports + "in", + "of", + "if", + "for", + "while", + "finally", + "var", + "new", + "function", + "do", + "return", + "void", + "else", + "break", + "catch", + "instanceof", + "with", + "throw", + "case", + "default", + "try", + "switch", + "continue", + "typeof", + "delete", + "let", + "yield", + "const", + "class", + // JS handles these with a special rule + // "get", + // "set", + "debugger", + "async", + "await", + "static", + "import", + "from", + "export", + "extends", + // It's reached stage 3, which is "recommended for implementation": + "using" +]; +const LITERALS = [ + "true", + "false", + "null", + "undefined", + "NaN", + "Infinity" +]; + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects +const TYPES = [ + // Fundamental objects + "Object", + "Function", + "Boolean", + "Symbol", + // numbers and dates + "Math", + "Date", + "Number", + "BigInt", + // text + "String", + "RegExp", + // Indexed collections + "Array", + "Float32Array", + "Float64Array", + "Int8Array", + "Uint8Array", + "Uint8ClampedArray", + "Int16Array", + "Int32Array", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array", + // Keyed collections + "Set", + "Map", + "WeakSet", + "WeakMap", + // Structured data + "ArrayBuffer", + "SharedArrayBuffer", + "Atomics", + "DataView", + "JSON", + // Control abstraction objects + "Promise", + "Generator", + "GeneratorFunction", + "AsyncFunction", + // Reflection + "Reflect", + "Proxy", + // Internationalization + "Intl", + // WebAssembly + "WebAssembly" +]; + +const ERROR_TYPES = [ + "Error", + "EvalError", + "InternalError", + "RangeError", + "ReferenceError", + "SyntaxError", + "TypeError", + "URIError" +]; + +const BUILT_IN_GLOBALS = [ + "setInterval", + "setTimeout", + "clearInterval", + "clearTimeout", + + "require", + "exports", + + "eval", + "isFinite", + "isNaN", + "parseFloat", + "parseInt", + "decodeURI", + "decodeURIComponent", + "encodeURI", + "encodeURIComponent", + "escape", + "unescape" +]; + +const BUILT_IN_VARIABLES = [ + "arguments", + "this", + "super", + "console", + "window", + "document", + "localStorage", + "sessionStorage", + "module", + "global" // Node.js +]; + +const BUILT_INS = [].concat( + BUILT_IN_GLOBALS, + TYPES, + ERROR_TYPES +); + +/* +Language: JavaScript +Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions. +Category: common, scripting, web +Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript +*/ + + +/** @type LanguageFn */ +function javascript(hljs) { + const regex = hljs.regex; + /** + * Takes a string like " { + const tag = "', + end: '' + }; + // to avoid some special cases inside isTrulyOpeningTag + const XML_SELF_CLOSING = /<[A-Za-z0-9\\._:-]+\s*\/>/; + const XML_TAG = { + begin: /<[A-Za-z0-9\\._:-]+/, + end: /\/[A-Za-z0-9\\._:-]+>|\/>/, + /** + * @param {RegExpMatchArray} match + * @param {CallbackResponse} response + */ + isTrulyOpeningTag: (match, response) => { + const afterMatchIndex = match[0].length + match.index; + const nextChar = match.input[afterMatchIndex]; + if ( + // HTML should not include another raw `<` inside a tag + // nested type? + // `>`, etc. + nextChar === "<" || + // the , gives away that this is not HTML + // `` + nextChar === "," + ) { + response.ignoreMatch(); + return; + } + + // `` + // Quite possibly a tag, lets look for a matching closing tag... + if (nextChar === ">") { + // if we cannot find a matching closing tag, then we + // will ignore it + if (!hasClosingTag(match, { after: afterMatchIndex })) { + response.ignoreMatch(); + } + } + + // `` (self-closing) + // handled by simpleSelfClosing rule + + let m; + const afterMatch = match.input.substring(afterMatchIndex); + + // some more template typing stuff + // (key?: string) => Modify< + if ((m = afterMatch.match(/^\s*=/))) { + response.ignoreMatch(); + return; + } + + // `` + // technically this could be HTML, but it smells like a type + // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276 + if ((m = afterMatch.match(/^\s+extends\s+/))) { + if (m.index === 0) { + response.ignoreMatch(); + // eslint-disable-next-line no-useless-return + return; + } + } + } + }; + const KEYWORDS$1 = { + $pattern: IDENT_RE, + keyword: KEYWORDS, + literal: LITERALS, + built_in: BUILT_INS, + "variable.language": BUILT_IN_VARIABLES + }; + + // https://tc39.es/ecma262/#sec-literals-numeric-literals + const decimalDigits = '[0-9](_?[0-9])*'; + const frac = `\\.(${decimalDigits})`; + // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral + // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals + const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`; + const NUMBER = { + className: 'number', + variants: [ + // DecimalLiteral + { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` + + `[eE][+-]?(${decimalDigits})\\b` }, + { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` }, + + // DecimalBigIntegerLiteral + { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` }, + + // NonDecimalIntegerLiteral + { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, + { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, + { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, + + // LegacyOctalIntegerLiteral (does not include underscore separators) + // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals + { begin: "\\b0[0-7]+n?\\b" }, + ], + relevance: 0 + }; + + const SUBST = { + className: 'subst', + begin: '\\$\\{', + end: '\\}', + keywords: KEYWORDS$1, + contains: [] // defined later + }; + const HTML_TEMPLATE = { + begin: '\.?html`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'xml' + } + }; + const CSS_TEMPLATE = { + begin: '\.?css`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'css' + } + }; + const GRAPHQL_TEMPLATE = { + begin: '\.?gql`', + end: '', + starts: { + end: '`', + returnEnd: false, + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ], + subLanguage: 'graphql' + } + }; + const TEMPLATE_STRING = { + className: 'string', + begin: '`', + end: '`', + contains: [ + hljs.BACKSLASH_ESCAPE, + SUBST + ] + }; + const JSDOC_COMMENT = hljs.COMMENT( + /\/\*\*(?!\/)/, + '\\*/', + { + relevance: 0, + contains: [ + { + begin: '(?=@[A-Za-z]+)', + relevance: 0, + contains: [ + { + className: 'doctag', + begin: '@[A-Za-z]+' + }, + { + className: 'type', + begin: '\\{', + end: '\\}', + excludeEnd: true, + excludeBegin: true, + relevance: 0 + }, + { + className: 'variable', + begin: IDENT_RE$1 + '(?=\\s*(-)|$)', + endsParent: true, + relevance: 0 + }, + // eat spaces (not newlines) so we can find + // types or variables + { + begin: /(?=[^\n])\s/, + relevance: 0 + } + ] + } + ] + } + ); + const COMMENT = { + className: "comment", + variants: [ + JSDOC_COMMENT, + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_LINE_COMMENT_MODE + ] + }; + const SUBST_INTERNALS = [ + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + HTML_TEMPLATE, + CSS_TEMPLATE, + GRAPHQL_TEMPLATE, + TEMPLATE_STRING, + // Skip numbers when they are part of a variable name + { match: /\$\d+/ }, + NUMBER, + // This is intentional: + // See https://github.com/highlightjs/highlight.js/issues/3288 + // hljs.REGEXP_MODE + ]; + SUBST.contains = SUBST_INTERNALS + .concat({ + // we need to pair up {} inside our subst to prevent + // it from ending too early by matching another } + begin: /\{/, + end: /\}/, + keywords: KEYWORDS$1, + contains: [ + "self" + ].concat(SUBST_INTERNALS) + }); + const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains); + const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([ + // eat recursive parens in sub expressions + { + begin: /(\s*)\(/, + end: /\)/, + keywords: KEYWORDS$1, + contains: ["self"].concat(SUBST_AND_COMMENTS) + } + ]); + const PARAMS = { + className: 'params', + // convert this to negative lookbehind in v12 + begin: /(\s*)\(/, // to match the parms with + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS$1, + contains: PARAMS_CONTAINS + }; + + // ES6 classes + const CLASS_OR_EXTENDS = { + variants: [ + // class Car extends vehicle + { + match: [ + /class/, + /\s+/, + IDENT_RE$1, + /\s+/, + /extends/, + /\s+/, + regex.concat(IDENT_RE$1, "(", regex.concat(/\./, IDENT_RE$1), ")*") + ], + scope: { + 1: "keyword", + 3: "title.class", + 5: "keyword", + 7: "title.class.inherited" + } + }, + // class Car + { + match: [ + /class/, + /\s+/, + IDENT_RE$1 + ], + scope: { + 1: "keyword", + 3: "title.class" + } + }, + + ] + }; + + const CLASS_REFERENCE = { + relevance: 0, + match: + regex.either( + // Hard coded exceptions + /\bJSON/, + // Float32Array, OutT + /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, + // CSSFactory, CSSFactoryT + /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, + // FPs, FPsT + /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/, + // P + // single letters are not highlighted + // BLAH + // this will be flagged as a UPPER_CASE_CONSTANT instead + ), + className: "title.class", + keywords: { + _: [ + // se we still get relevance credit for JS library classes + ...TYPES, + ...ERROR_TYPES + ] + } + }; + + const USE_STRICT = { + label: "use_strict", + className: 'meta', + relevance: 10, + begin: /^\s*['"]use (strict|asm)['"]/ + }; + + const FUNCTION_DEFINITION = { + variants: [ + { + match: [ + /function/, + /\s+/, + IDENT_RE$1, + /(?=\s*\()/ + ] + }, + // anonymous function + { + match: [ + /function/, + /\s*(?=\()/ + ] + } + ], + className: { + 1: "keyword", + 3: "title.function" + }, + label: "func.def", + contains: [ PARAMS ], + illegal: /%/ + }; + + const UPPER_CASE_CONSTANT = { + relevance: 0, + match: /\b[A-Z][A-Z_0-9]+\b/, + className: "variable.constant" + }; + + function noneOf(list) { + return regex.concat("(?!", list.join("|"), ")"); + } + + const FUNCTION_CALL = { + match: regex.concat( + /\b/, + noneOf([ + ...BUILT_IN_GLOBALS, + "super", + "import" + ].map(x => `${x}\\s*\\(`)), + IDENT_RE$1, regex.lookahead(/\s*\(/)), + className: "title.function", + relevance: 0 + }; + + const PROPERTY_ACCESS = { + begin: regex.concat(/\./, regex.lookahead( + regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/) + )), + end: IDENT_RE$1, + excludeBegin: true, + keywords: "prototype", + className: "property", + relevance: 0 + }; + + const GETTER_OR_SETTER = { + match: [ + /get|set/, + /\s+/, + IDENT_RE$1, + /(?=\()/ + ], + className: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + { // eat to avoid empty params + begin: /\(\)/ + }, + PARAMS + ] + }; + + const FUNC_LEAD_IN_RE = '(\\(' + + '[^()]*(\\(' + + '[^()]*(\\(' + + '[^()]*' + + '\\)[^()]*)*' + + '\\)[^()]*)*' + + '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>'; + + const FUNCTION_VARIABLE = { + match: [ + /const|var|let/, /\s+/, + IDENT_RE$1, /\s*/, + /=\s*/, + /(async\s*)?/, // async is optional + regex.lookahead(FUNC_LEAD_IN_RE) + ], + keywords: "async", + className: { + 1: "keyword", + 3: "title.function" + }, + contains: [ + PARAMS + ] + }; + + return { + name: 'JavaScript', + aliases: ['js', 'jsx', 'mjs', 'cjs'], + keywords: KEYWORDS$1, + // this will be extended by TypeScript + exports: { PARAMS_CONTAINS, CLASS_REFERENCE }, + illegal: /#(?![$_A-z])/, + contains: [ + hljs.SHEBANG({ + label: "shebang", + binary: "node", + relevance: 5 + }), + USE_STRICT, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + HTML_TEMPLATE, + CSS_TEMPLATE, + GRAPHQL_TEMPLATE, + TEMPLATE_STRING, + COMMENT, + // Skip numbers when they are part of a variable name + { match: /\$\d+/ }, + NUMBER, + CLASS_REFERENCE, + { + scope: 'attr', + match: IDENT_RE$1 + regex.lookahead(':'), + relevance: 0 + }, + FUNCTION_VARIABLE, + { // "value" container + begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', + keywords: 'return throw case', + relevance: 0, + contains: [ + COMMENT, + hljs.REGEXP_MODE, + { + className: 'function', + // we have to count the parens to make sure we actually have the + // correct bounding ( ) before the =>. There could be any number of + // sub-expressions inside also surrounded by parens. + begin: FUNC_LEAD_IN_RE, + returnBegin: true, + end: '\\s*=>', + contains: [ + { + className: 'params', + variants: [ + { + begin: hljs.UNDERSCORE_IDENT_RE, + relevance: 0 + }, + { + className: null, + begin: /\(\s*\)/, + skip: true + }, + { + begin: /(\s*)\(/, + end: /\)/, + excludeBegin: true, + excludeEnd: true, + keywords: KEYWORDS$1, + contains: PARAMS_CONTAINS + } + ] + } + ] + }, + { // could be a comma delimited list of params to a function call + begin: /,/, + relevance: 0 + }, + { + match: /\s+/, + relevance: 0 + }, + { // JSX + variants: [ + { begin: FRAGMENT.begin, end: FRAGMENT.end }, + { match: XML_SELF_CLOSING }, + { + begin: XML_TAG.begin, + // we carefully check the opening tag to see if it truly + // is a tag and not a false positive + 'on:begin': XML_TAG.isTrulyOpeningTag, + end: XML_TAG.end + } + ], + subLanguage: 'xml', + contains: [ + { + begin: XML_TAG.begin, + end: XML_TAG.end, + skip: true, + contains: ['self'] + } + ] + } + ], + }, + FUNCTION_DEFINITION, + { + // prevent this from getting swallowed up by function + // since they appear "function like" + beginKeywords: "while if switch catch for" + }, + { + // we have to count the parens to make sure we actually have the correct + // bounding ( ). There could be any number of sub-expressions inside + // also surrounded by parens. + begin: '\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE + + '\\(' + // first parens + '[^()]*(\\(' + + '[^()]*(\\(' + + '[^()]*' + + '\\)[^()]*)*' + + '\\)[^()]*)*' + + '\\)\\s*\\{', // end parens + returnBegin:true, + label: "func.def", + contains: [ + PARAMS, + hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" }) + ] + }, + // catch ... so it won't trigger the property rule below + { + match: /\.\.\./, + relevance: 0 + }, + PROPERTY_ACCESS, + // hack: prevents detection of keywords in some circumstances + // .keyword() + // $keyword = x + { + match: '\\$' + IDENT_RE$1, + relevance: 0 + }, + { + match: [ /\bconstructor(?=\s*\()/ ], + className: { 1: "title.function" }, + contains: [ PARAMS ] + }, + FUNCTION_CALL, + UPPER_CASE_CONSTANT, + CLASS_OR_EXTENDS, + GETTER_OR_SETTER, + { + match: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something` + } + ] + }; +} + +/* +Language: TypeScript +Author: Panu Horsmalahti +Contributors: Ike Ku +Description: TypeScript is a strict superset of JavaScript +Website: https://www.typescriptlang.org +Category: common, scripting +*/ + + +/** @type LanguageFn */ +function typescript(hljs) { + const regex = hljs.regex; + const tsLanguage = javascript(hljs); + + const IDENT_RE$1 = IDENT_RE; + const TYPES = [ + "any", + "void", + "number", + "boolean", + "string", + "object", + "never", + "symbol", + "bigint", + "unknown" + ]; + const NAMESPACE = { + begin: [ + /namespace/, + /\s+/, + hljs.IDENT_RE + ], + beginScope: { + 1: "keyword", + 3: "title.class" + } + }; + const INTERFACE = { + beginKeywords: 'interface', + end: /\{/, + excludeEnd: true, + keywords: { + keyword: 'interface extends', + built_in: TYPES + }, + contains: [ tsLanguage.exports.CLASS_REFERENCE ] + }; + const USE_STRICT = { + className: 'meta', + relevance: 10, + begin: /^\s*['"]use strict['"]/ + }; + const TS_SPECIFIC_KEYWORDS = [ + "type", + // "namespace", + "interface", + "public", + "private", + "protected", + "implements", + "declare", + "abstract", + "readonly", + "enum", + "override", + "satisfies" + ]; + /* + namespace is a TS keyword but it's fine to use it as a variable name too. + const message = 'foo'; + const namespace = 'bar'; + */ + const KEYWORDS$1 = { + $pattern: IDENT_RE, + keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS), + literal: LITERALS, + built_in: BUILT_INS.concat(TYPES), + "variable.language": BUILT_IN_VARIABLES + }; + + const DECORATOR = { + className: 'meta', + begin: '@' + IDENT_RE$1, + }; + + const swapMode = (mode, label, replacement) => { + const indx = mode.contains.findIndex(m => m.label === label); + if (indx === -1) { throw new Error("can not find mode to replace"); } + + mode.contains.splice(indx, 1, replacement); + }; + + + // this should update anywhere keywords is used since + // it will be the same actual JS object + Object.assign(tsLanguage.keywords, KEYWORDS$1); + + tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR); + + // highlight the function params + const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === "attr"); + + // take default attr rule and extend it to support optionals + const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({}, + ATTRIBUTE_HIGHLIGHT, + { match: regex.concat(IDENT_RE$1, regex.lookahead(/\s*\?:/)) } + ); + tsLanguage.exports.PARAMS_CONTAINS.push([ + tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types + ATTRIBUTE_HIGHLIGHT, // highlight the params key + OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting + ]); + + // Add the optional property assignment highlighting for objects or classes + tsLanguage.contains = tsLanguage.contains.concat([ + DECORATOR, + NAMESPACE, + INTERFACE, + OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting + ]); + + // TS gets a simpler shebang rule than JS + swapMode(tsLanguage, "shebang", hljs.SHEBANG()); + // JS use strict rule purposely excludes `asm` which makes no sense + swapMode(tsLanguage, "use_strict", USE_STRICT); + + const functionDeclaration = tsLanguage.contains.find(m => m.label === "func.def"); + functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript + + Object.assign(tsLanguage, { + name: 'TypeScript', + aliases: [ + 'ts', + 'tsx', + 'mts', + 'cts' + ] + }); + + return tsLanguage; +} + +module.exports = typescript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vala.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vala.js ***! + \*************************************************************/ +(module) { + +/* +Language: Vala +Author: Antono Vasiljev +Description: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C. +Website: https://wiki.gnome.org/Projects/Vala +Category: system +*/ + +function vala(hljs) { + return { + name: 'Vala', + keywords: { + keyword: + // Value types + 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' + + 'uint16 uint32 uint64 float double bool struct enum string void ' + // Reference types + + 'weak unowned owned ' + // Modifiers + + 'async signal static abstract interface override virtual delegate ' + // Control Structures + + 'if while do for foreach else switch case break default return try catch ' + // Visibility + + 'public private protected internal ' + // Other + + 'using new this get set const stdout stdin stderr var', + built_in: + 'DBus GLib CCode Gee Object Gtk Posix', + literal: + 'false true null' + }, + contains: [ + { + className: 'class', + beginKeywords: 'class interface namespace', + end: /\{/, + excludeEnd: true, + illegal: '[^,:\\n\\s\\.]', + contains: [ hljs.UNDERSCORE_TITLE_MODE ] + }, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + { + className: 'string', + begin: '"""', + end: '"""', + relevance: 5 + }, + hljs.APOS_STRING_MODE, + hljs.QUOTE_STRING_MODE, + hljs.C_NUMBER_MODE, + { + className: 'meta', + begin: '^#', + end: '$', + } + ] + }; +} + +module.exports = vala; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vbnet.js" +/*!**************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vbnet.js ***! + \**************************************************************/ +(module) { + +/* +Language: Visual Basic .NET +Description: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework. +Authors: Poren Chiang , Jan Pilzer +Website: https://docs.microsoft.com/dotnet/visual-basic/getting-started +Category: common +*/ + +/** @type LanguageFn */ +function vbnet(hljs) { + const regex = hljs.regex; + /** + * Character Literal + * Either a single character ("a"C) or an escaped double quote (""""C). + */ + const CHARACTER = { + className: 'string', + begin: /"(""|[^/n])"C\b/ + }; + + const STRING = { + className: 'string', + begin: /"/, + end: /"/, + illegal: /\n/, + contains: [ + { + // double quote escape + begin: /""/ } + ] + }; + + /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */ + const MM_DD_YYYY = /\d{1,2}\/\d{1,2}\/\d{4}/; + const YYYY_MM_DD = /\d{4}-\d{1,2}-\d{1,2}/; + const TIME_12H = /(\d|1[012])(:\d+){0,2} *(AM|PM)/; + const TIME_24H = /\d{1,2}(:\d{1,2}){1,2}/; + const DATE = { + className: 'literal', + variants: [ + { + // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date) + begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / *#/) }, + { + // #H:mm[:ss]# (24h Time) + begin: regex.concat(/# */, TIME_24H, / *#/) }, + { + // #h[:mm[:ss]] A# (12h Time) + begin: regex.concat(/# */, TIME_12H, / *#/) }, + { + // date plus time + begin: regex.concat( + /# */, + regex.either(YYYY_MM_DD, MM_DD_YYYY), + / +/, + regex.either(TIME_12H, TIME_24H), + / *#/ + ) } + ] + }; + + const NUMBER = { + className: 'number', + relevance: 0, + variants: [ + { + // Float + begin: /\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ }, + { + // Integer (base 10) + begin: /\b\d[\d_]*((U?[SIL])|[%&])?/ }, + { + // Integer (base 16) + begin: /&H[\dA-F_]+((U?[SIL])|[%&])?/ }, + { + // Integer (base 8) + begin: /&O[0-7_]+((U?[SIL])|[%&])?/ }, + { + // Integer (base 2) + begin: /&B[01_]+((U?[SIL])|[%&])?/ } + ] + }; + + const LABEL = { + className: 'label', + begin: /^\w+:/ + }; + + const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, { contains: [ + { + className: 'doctag', + begin: /<\/?/, + end: />/ + } + ] }); + + const COMMENT = hljs.COMMENT(null, /$/, { variants: [ + { begin: /'/ }, + { + // TODO: Use multi-class for leading spaces + begin: /([\t ]|^)REM(?=\s)/ } + ] }); + + const DIRECTIVES = { + className: 'meta', + // TODO: Use multi-class for indentation once available + begin: /[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, + end: /$/, + keywords: { keyword: + 'const disable else elseif enable end externalsource if region then' }, + contains: [ COMMENT ] + }; + + return { + name: 'Visual Basic .NET', + aliases: [ 'vb' ], + case_insensitive: true, + classNameAliases: { label: 'symbol' }, + keywords: { + keyword: + 'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' /* a-b */ + + 'call case catch class compare const continue custom declare default delegate dim distinct do ' /* c-d */ + + 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' /* e-f */ + + 'get global goto group handles if implements imports in inherits interface into iterator ' /* g-i */ + + 'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' /* j-m */ + + 'namespace narrowing new next notinheritable notoverridable ' /* n */ + + 'of off on operator option optional order overloads overridable overrides ' /* o */ + + 'paramarray partial preserve private property protected public ' /* p */ + + 'raiseevent readonly redim removehandler resume return ' /* r */ + + 'select set shadows shared skip static step stop structure strict sub synclock ' /* s */ + + 'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */, + built_in: + // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators + 'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor ' + // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions + + 'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort', + type: + // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types + 'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort', + literal: 'true false nothing' + }, + illegal: + '//|\\{|\\}|endif|gosub|variant|wend|^\\$ ' /* reserved deprecated keywords */, + contains: [ + CHARACTER, + STRING, + DATE, + NUMBER, + LABEL, + DOC_COMMENT, + COMMENT, + DIRECTIVES + ] + }; +} + +module.exports = vbnet; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vbscript-html.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vbscript-html.js ***! + \**********************************************************************/ +(module) { + +/* +Language: VBScript in HTML +Requires: xml.js, vbscript.js +Author: Ivan Sagalaev +Description: "Bridge" language defining fragments of VBScript in HTML within <% .. %> +Website: https://en.wikipedia.org/wiki/VBScript +Category: scripting +*/ + +function vbscriptHtml(hljs) { + return { + name: 'VBScript in HTML', + subLanguage: 'xml', + contains: [ + { + begin: '<%', + end: '%>', + subLanguage: 'vbscript' + } + ] + }; +} + +module.exports = vbscriptHtml; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vbscript.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vbscript.js ***! + \*****************************************************************/ +(module) { + +/* +Language: VBScript +Description: VBScript ("Microsoft Visual Basic Scripting Edition") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. +Author: Nikita Ledyaev +Contributors: Michal Gabrukiewicz +Website: https://en.wikipedia.org/wiki/VBScript +Category: scripting +*/ + +/** @type LanguageFn */ +function vbscript(hljs) { + const regex = hljs.regex; + const BUILT_IN_FUNCTIONS = [ + "lcase", + "month", + "vartype", + "instrrev", + "ubound", + "setlocale", + "getobject", + "rgb", + "getref", + "string", + "weekdayname", + "rnd", + "dateadd", + "monthname", + "now", + "day", + "minute", + "isarray", + "cbool", + "round", + "formatcurrency", + "conversions", + "csng", + "timevalue", + "second", + "year", + "space", + "abs", + "clng", + "timeserial", + "fixs", + "len", + "asc", + "isempty", + "maths", + "dateserial", + "atn", + "timer", + "isobject", + "filter", + "weekday", + "datevalue", + "ccur", + "isdate", + "instr", + "datediff", + "formatdatetime", + "replace", + "isnull", + "right", + "sgn", + "array", + "snumeric", + "log", + "cdbl", + "hex", + "chr", + "lbound", + "msgbox", + "ucase", + "getlocale", + "cos", + "cdate", + "cbyte", + "rtrim", + "join", + "hour", + "oct", + "typename", + "trim", + "strcomp", + "int", + "createobject", + "loadpicture", + "tan", + "formatnumber", + "mid", + "split", + "cint", + "sin", + "datepart", + "ltrim", + "sqr", + "time", + "derived", + "eval", + "date", + "formatpercent", + "exp", + "inputbox", + "left", + "ascw", + "chrw", + "regexp", + "cstr", + "err" + ]; + const BUILT_IN_OBJECTS = [ + "server", + "response", + "request", + // take no arguments so can be called without () + "scriptengine", + "scriptenginebuildversion", + "scriptengineminorversion", + "scriptenginemajorversion" + ]; + + const BUILT_IN_CALL = { + begin: regex.concat(regex.either(...BUILT_IN_FUNCTIONS), "\\s*\\("), + // relevance 0 because this is acting as a beginKeywords really + relevance: 0, + keywords: { built_in: BUILT_IN_FUNCTIONS } + }; + + const LITERALS = [ + "true", + "false", + "null", + "nothing", + "empty" + ]; + + const KEYWORDS = [ + "call", + "class", + "const", + "dim", + "do", + "loop", + "erase", + "execute", + "executeglobal", + "exit", + "for", + "each", + "next", + "function", + "if", + "then", + "else", + "on", + "error", + "option", + "explicit", + "new", + "private", + "property", + "let", + "get", + "public", + "randomize", + "redim", + "rem", + "select", + "case", + "set", + "stop", + "sub", + "while", + "wend", + "with", + "end", + "to", + "elseif", + "is", + "or", + "xor", + "and", + "not", + "class_initialize", + "class_terminate", + "default", + "preserve", + "in", + "me", + "byval", + "byref", + "step", + "resume", + "goto" + ]; + + return { + name: 'VBScript', + aliases: [ 'vbs' ], + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_IN_OBJECTS, + literal: LITERALS + }, + illegal: '//', + contains: [ + BUILT_IN_CALL, + hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ { begin: '""' } ] }), + hljs.COMMENT( + /'/, + /$/, + { relevance: 0 } + ), + hljs.C_NUMBER_MODE + ] + }; +} + +module.exports = vbscript; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/verilog.js" +/*!****************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/verilog.js ***! + \****************************************************************/ +(module) { + +/* +Language: Verilog +Author: Jon Evans +Contributors: Boone Severson +Description: Verilog is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. This highlighter supports Verilog and SystemVerilog through IEEE 1800-2012. +Website: http://www.verilog.com +Category: hardware +*/ + +function verilog(hljs) { + const regex = hljs.regex; + const KEYWORDS = { + $pattern: /\$?[\w]+(\$[\w]+)*/, + keyword: [ + "accept_on", + "alias", + "always", + "always_comb", + "always_ff", + "always_latch", + "and", + "assert", + "assign", + "assume", + "automatic", + "before", + "begin", + "bind", + "bins", + "binsof", + "bit", + "break", + "buf|0", + "bufif0", + "bufif1", + "byte", + "case", + "casex", + "casez", + "cell", + "chandle", + "checker", + "class", + "clocking", + "cmos", + "config", + "const", + "constraint", + "context", + "continue", + "cover", + "covergroup", + "coverpoint", + "cross", + "deassign", + "default", + "defparam", + "design", + "disable", + "dist", + "do", + "edge", + "else", + "end", + "endcase", + "endchecker", + "endclass", + "endclocking", + "endconfig", + "endfunction", + "endgenerate", + "endgroup", + "endinterface", + "endmodule", + "endpackage", + "endprimitive", + "endprogram", + "endproperty", + "endspecify", + "endsequence", + "endtable", + "endtask", + "enum", + "event", + "eventually", + "expect", + "export", + "extends", + "extern", + "final", + "first_match", + "for", + "force", + "foreach", + "forever", + "fork", + "forkjoin", + "function", + "generate|5", + "genvar", + "global", + "highz0", + "highz1", + "if", + "iff", + "ifnone", + "ignore_bins", + "illegal_bins", + "implements", + "implies", + "import", + "incdir", + "include", + "initial", + "inout", + "input", + "inside", + "instance", + "int", + "integer", + "interconnect", + "interface", + "intersect", + "join", + "join_any", + "join_none", + "large", + "let", + "liblist", + "library", + "local", + "localparam", + "logic", + "longint", + "macromodule", + "matches", + "medium", + "modport", + "module", + "nand", + "negedge", + "nettype", + "new", + "nexttime", + "nmos", + "nor", + "noshowcancelled", + "not", + "notif0", + "notif1", + "or", + "output", + "package", + "packed", + "parameter", + "pmos", + "posedge", + "primitive", + "priority", + "program", + "property", + "protected", + "pull0", + "pull1", + "pulldown", + "pullup", + "pulsestyle_ondetect", + "pulsestyle_onevent", + "pure", + "rand", + "randc", + "randcase", + "randsequence", + "rcmos", + "real", + "realtime", + "ref", + "reg", + "reject_on", + "release", + "repeat", + "restrict", + "return", + "rnmos", + "rpmos", + "rtran", + "rtranif0", + "rtranif1", + "s_always", + "s_eventually", + "s_nexttime", + "s_until", + "s_until_with", + "scalared", + "sequence", + "shortint", + "shortreal", + "showcancelled", + "signed", + "small", + "soft", + "solve", + "specify", + "specparam", + "static", + "string", + "strong", + "strong0", + "strong1", + "struct", + "super", + "supply0", + "supply1", + "sync_accept_on", + "sync_reject_on", + "table", + "tagged", + "task", + "this", + "throughout", + "time", + "timeprecision", + "timeunit", + "tran", + "tranif0", + "tranif1", + "tri", + "tri0", + "tri1", + "triand", + "trior", + "trireg", + "type", + "typedef", + "union", + "unique", + "unique0", + "unsigned", + "until", + "until_with", + "untyped", + "use", + "uwire", + "var", + "vectored", + "virtual", + "void", + "wait", + "wait_order", + "wand", + "weak", + "weak0", + "weak1", + "while", + "wildcard", + "wire", + "with", + "within", + "wor", + "xnor", + "xor" + ], + literal: [ 'null' ], + built_in: [ + "$finish", + "$stop", + "$exit", + "$fatal", + "$error", + "$warning", + "$info", + "$realtime", + "$time", + "$printtimescale", + "$bitstoreal", + "$bitstoshortreal", + "$itor", + "$signed", + "$cast", + "$bits", + "$stime", + "$timeformat", + "$realtobits", + "$shortrealtobits", + "$rtoi", + "$unsigned", + "$asserton", + "$assertkill", + "$assertpasson", + "$assertfailon", + "$assertnonvacuouson", + "$assertoff", + "$assertcontrol", + "$assertpassoff", + "$assertfailoff", + "$assertvacuousoff", + "$isunbounded", + "$sampled", + "$fell", + "$changed", + "$past_gclk", + "$fell_gclk", + "$changed_gclk", + "$rising_gclk", + "$steady_gclk", + "$coverage_control", + "$coverage_get", + "$coverage_save", + "$set_coverage_db_name", + "$rose", + "$stable", + "$past", + "$rose_gclk", + "$stable_gclk", + "$future_gclk", + "$falling_gclk", + "$changing_gclk", + "$display", + "$coverage_get_max", + "$coverage_merge", + "$get_coverage", + "$load_coverage_db", + "$typename", + "$unpacked_dimensions", + "$left", + "$low", + "$increment", + "$clog2", + "$ln", + "$log10", + "$exp", + "$sqrt", + "$pow", + "$floor", + "$ceil", + "$sin", + "$cos", + "$tan", + "$countbits", + "$onehot", + "$isunknown", + "$fatal", + "$warning", + "$dimensions", + "$right", + "$high", + "$size", + "$asin", + "$acos", + "$atan", + "$atan2", + "$hypot", + "$sinh", + "$cosh", + "$tanh", + "$asinh", + "$acosh", + "$atanh", + "$countones", + "$onehot0", + "$error", + "$info", + "$random", + "$dist_chi_square", + "$dist_erlang", + "$dist_exponential", + "$dist_normal", + "$dist_poisson", + "$dist_t", + "$dist_uniform", + "$q_initialize", + "$q_remove", + "$q_exam", + "$async$and$array", + "$async$nand$array", + "$async$or$array", + "$async$nor$array", + "$sync$and$array", + "$sync$nand$array", + "$sync$or$array", + "$sync$nor$array", + "$q_add", + "$q_full", + "$psprintf", + "$async$and$plane", + "$async$nand$plane", + "$async$or$plane", + "$async$nor$plane", + "$sync$and$plane", + "$sync$nand$plane", + "$sync$or$plane", + "$sync$nor$plane", + "$system", + "$display", + "$displayb", + "$displayh", + "$displayo", + "$strobe", + "$strobeb", + "$strobeh", + "$strobeo", + "$write", + "$readmemb", + "$readmemh", + "$writememh", + "$value$plusargs", + "$dumpvars", + "$dumpon", + "$dumplimit", + "$dumpports", + "$dumpportson", + "$dumpportslimit", + "$writeb", + "$writeh", + "$writeo", + "$monitor", + "$monitorb", + "$monitorh", + "$monitoro", + "$writememb", + "$dumpfile", + "$dumpoff", + "$dumpall", + "$dumpflush", + "$dumpportsoff", + "$dumpportsall", + "$dumpportsflush", + "$fclose", + "$fdisplay", + "$fdisplayb", + "$fdisplayh", + "$fdisplayo", + "$fstrobe", + "$fstrobeb", + "$fstrobeh", + "$fstrobeo", + "$swrite", + "$swriteb", + "$swriteh", + "$swriteo", + "$fscanf", + "$fread", + "$fseek", + "$fflush", + "$feof", + "$fopen", + "$fwrite", + "$fwriteb", + "$fwriteh", + "$fwriteo", + "$fmonitor", + "$fmonitorb", + "$fmonitorh", + "$fmonitoro", + "$sformat", + "$sformatf", + "$fgetc", + "$ungetc", + "$fgets", + "$sscanf", + "$rewind", + "$ftell", + "$ferror" + ] + }; + const BUILT_IN_CONSTANTS = [ + "__FILE__", + "__LINE__" + ]; + const DIRECTIVES = [ + "begin_keywords", + "celldefine", + "default_nettype", + "default_decay_time", + "default_trireg_strength", + "define", + "delay_mode_distributed", + "delay_mode_path", + "delay_mode_unit", + "delay_mode_zero", + "else", + "elsif", + "end_keywords", + "endcelldefine", + "endif", + "ifdef", + "ifndef", + "include", + "line", + "nounconnected_drive", + "pragma", + "resetall", + "timescale", + "unconnected_drive", + "undef", + "undefineall" + ]; + + return { + name: 'Verilog', + aliases: [ + 'v', + 'sv', + 'svh' + ], + case_insensitive: false, + keywords: KEYWORDS, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, + hljs.C_LINE_COMMENT_MODE, + hljs.QUOTE_STRING_MODE, + { + scope: 'number', + contains: [ hljs.BACKSLASH_ESCAPE ], + variants: [ + { begin: /\b((\d+'([bhodBHOD]))[0-9xzXZa-fA-F_]+)/ }, + { begin: /\B(('([bhodBHOD]))[0-9xzXZa-fA-F_]+)/ }, + { // decimal + begin: /\b[0-9][0-9_]*/, + relevance: 0 + } + ] + }, + /* parameters to instances */ + { + scope: 'variable', + variants: [ + { begin: '#\\((?!parameter).+\\)' }, + { + begin: '\\.\\w+', + relevance: 0 + } + ] + }, + { + scope: 'variable.constant', + match: regex.concat(/`/, regex.either(...BUILT_IN_CONSTANTS)), + }, + { + scope: 'meta', + begin: regex.concat(/`/, regex.either(...DIRECTIVES)), + end: /$|\/\/|\/\*/, + returnEnd: true, + keywords: DIRECTIVES + } + ] + }; +} + +module.exports = verilog; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vhdl.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vhdl.js ***! + \*************************************************************/ +(module) { + +/* +Language: VHDL +Author: Igor Kalnitsky +Contributors: Daniel C.K. Kho , Guillaume Savaton +Description: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. +Website: https://en.wikipedia.org/wiki/VHDL +Category: hardware +*/ + +function vhdl(hljs) { + // Regular expression for VHDL numeric literals. + + // Decimal literal: + const INTEGER_RE = '\\d(_|\\d)*'; + const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE; + const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?'; + // Based literal: + const BASED_INTEGER_RE = '\\w+'; + const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?'; + + const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')'; + + const KEYWORDS = [ + "abs", + "access", + "after", + "alias", + "all", + "and", + "architecture", + "array", + "assert", + "assume", + "assume_guarantee", + "attribute", + "begin", + "block", + "body", + "buffer", + "bus", + "case", + "component", + "configuration", + "constant", + "context", + "cover", + "disconnect", + "downto", + "default", + "else", + "elsif", + "end", + "entity", + "exit", + "fairness", + "file", + "for", + "force", + "function", + "generate", + "generic", + "group", + "guarded", + "if", + "impure", + "in", + "inertial", + "inout", + "is", + "label", + "library", + "linkage", + "literal", + "loop", + "map", + "mod", + "nand", + "new", + "next", + "nor", + "not", + "null", + "of", + "on", + "open", + "or", + "others", + "out", + "package", + "parameter", + "port", + "postponed", + "procedure", + "process", + "property", + "protected", + "pure", + "range", + "record", + "register", + "reject", + "release", + "rem", + "report", + "restrict", + "restrict_guarantee", + "return", + "rol", + "ror", + "select", + "sequence", + "severity", + "shared", + "signal", + "sla", + "sll", + "sra", + "srl", + "strong", + "subtype", + "then", + "to", + "transport", + "type", + "unaffected", + "units", + "until", + "use", + "variable", + "view", + "vmode", + "vprop", + "vunit", + "wait", + "when", + "while", + "with", + "xnor", + "xor" + ]; + const BUILT_INS = [ + "boolean", + "bit", + "character", + "integer", + "time", + "delay_length", + "natural", + "positive", + "string", + "bit_vector", + "file_open_kind", + "file_open_status", + "std_logic", + "std_logic_vector", + "unsigned", + "signed", + "boolean_vector", + "integer_vector", + "std_ulogic", + "std_ulogic_vector", + "unresolved_unsigned", + "u_unsigned", + "unresolved_signed", + "u_signed", + "real_vector", + "time_vector" + ]; + const LITERALS = [ + // severity_level + "false", + "true", + "note", + "warning", + "error", + "failure", + // textio + "line", + "text", + "side", + "width" + ]; + + return { + name: 'VHDL', + case_insensitive: true, + keywords: { + keyword: KEYWORDS, + built_in: BUILT_INS, + literal: LITERALS + }, + illegal: /\{/, + contains: [ + hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting. + hljs.COMMENT('--', '$'), + hljs.QUOTE_STRING_MODE, + { + className: 'number', + begin: NUMBER_RE, + relevance: 0 + }, + { + className: 'string', + begin: '\'(U|X|0|1|Z|W|L|H|-)\'', + contains: [ hljs.BACKSLASH_ESCAPE ] + }, + { + className: 'symbol', + begin: '\'[A-Za-z](_?[A-Za-z0-9])*', + contains: [ hljs.BACKSLASH_ESCAPE ] + } + ] + }; +} + +module.exports = vhdl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/vim.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/vim.js ***! + \************************************************************/ +(module) { + +/* +Language: Vim Script +Author: Jun Yang +Description: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/ +Website: https://www.vim.org +Category: scripting +*/ + +function vim(hljs) { + return { + name: 'Vim Script', + keywords: { + $pattern: /[!#@\w]+/, + keyword: + // express version except: ! & * < = > !! # @ @@ + 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope ' + + 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ' + + 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 ' + + 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor ' + + 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew ' + + 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ ' + // full version + + 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload ' + + 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap ' + + 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor ' + + 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap ' + + 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview ' + + 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap ' + + 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ' + + 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding ' + + 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace ' + + 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious ' + 'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew ' + + 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank', + built_in: // built in func + 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' + + 'complete_check add getwinposx getqflist getwinposy screencol ' + + 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' + + 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' + + 'shiftwidth max sinh isdirectory synID system inputrestore winline ' + + 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' + + 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' + + 'taglist string getmatches bufnr strftime winwidth bufexists ' + + 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' + + 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' + + 'resolve libcallnr foldclosedend reverse filter has_key bufname ' + + 'str2float strlen setline getcharmod setbufvar index searchpos ' + + 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' + + 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' + + 'reltime cursor tabpagenr finddir localtime acos getloclist search ' + + 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' + + 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' + + 'synconcealed nextnonblank server2client complete settabwinvar ' + + 'executable input wincol setmatches getftype hlID inputsave ' + + 'searchpair or screenrow line settabvar histadd deepcopy strpart ' + + 'remote_peek and eval getftime submatch screenchar winsaveview ' + + 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' + + 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' + + 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' + + 'hostname setpos globpath remote_foreground getchar synIDattr ' + + 'fnamemodify cscope_connection stridx winbufnr indent min ' + + 'complete_add nr2char searchpairpos inputdialog values matchlist ' + + 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' + + 'argc count getwinvar glob foldtextresult getreg foreground cosh ' + + 'matchdelete has char2nr simplify histget searchdecl iconv ' + + 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' + + 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' + + 'islocked escape eventhandler remote_send serverlist winrestview ' + + 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' + + 'exp' + }, + illegal: /;/, + contains: [ + hljs.NUMBER_MODE, + { + className: 'string', + begin: '\'', + end: '\'', + illegal: '\\n' + }, + + /* + A double quote can start either a string or a line comment. Strings are + ended before the end of a line by another double quote and can contain + escaped double-quotes and post-escaped line breaks. + + Also, any double quote at the beginning of a line is a comment but we + don't handle that properly at the moment: any double quote inside will + turn them into a string. Handling it properly will require a smarter + parser. + */ + { + className: 'string', + begin: /"(\\"|\n\\|[^"\n])*"/ + }, + hljs.COMMENT('"', '$'), + + { + className: 'variable', + begin: /[bwtglsav]:[\w\d_]+/ + }, + { + begin: [ + /\b(?:function|function!)/, + /\s+/, + hljs.IDENT_RE + ], + className: { + 1: "keyword", + 3: "title" + }, + end: '$', + relevance: 0, + contains: [ + { + className: 'params', + begin: '\\(', + end: '\\)' + } + ] + }, + { + className: 'symbol', + begin: /<[\w-]+>/ + } + ] + }; +} + +module.exports = vim; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/wasm.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/wasm.js ***! + \*************************************************************/ +(module) { + +/* +Language: WebAssembly +Website: https://webassembly.org +Description: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications. +Category: web, common +Audit: 2020 +*/ + +/** @type LanguageFn */ +function wasm(hljs) { + hljs.regex; + const BLOCK_COMMENT = hljs.COMMENT(/\(;/, /;\)/); + BLOCK_COMMENT.contains.push("self"); + const LINE_COMMENT = hljs.COMMENT(/;;/, /$/); + + const KWS = [ + "anyfunc", + "block", + "br", + "br_if", + "br_table", + "call", + "call_indirect", + "data", + "drop", + "elem", + "else", + "end", + "export", + "func", + "global.get", + "global.set", + "local.get", + "local.set", + "local.tee", + "get_global", + "get_local", + "global", + "if", + "import", + "local", + "loop", + "memory", + "memory.grow", + "memory.size", + "module", + "mut", + "nop", + "offset", + "param", + "result", + "return", + "select", + "set_global", + "set_local", + "start", + "table", + "tee_local", + "then", + "type", + "unreachable" + ]; + + const FUNCTION_REFERENCE = { + begin: [ + /(?:func|call|call_indirect)/, + /\s+/, + /\$[^\s)]+/ + ], + className: { + 1: "keyword", + 3: "title.function" + } + }; + + const ARGUMENT = { + className: "variable", + begin: /\$[\w_]+/ + }; + + const PARENS = { + match: /(\((?!;)|\))+/, + className: "punctuation", + relevance: 0 + }; + + const NUMBER = { + className: "number", + relevance: 0, + // borrowed from Prism, TODO: split out into variants + match: /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ + }; + + const TYPE = { + // look-ahead prevents us from gobbling up opcodes + match: /(i32|i64|f32|f64)(?!\.)/, + className: "type" + }; + + const MATH_OPERATIONS = { + className: "keyword", + // borrowed from Prism, TODO: split out into variants + match: /\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ + }; + + const OFFSET_ALIGN = { + match: [ + /(?:offset|align)/, + /\s*/, + /=/ + ], + className: { + 1: "keyword", + 3: "operator" + } + }; + + return { + name: 'WebAssembly', + keywords: { + $pattern: /[\w.]+/, + keyword: KWS + }, + contains: [ + LINE_COMMENT, + BLOCK_COMMENT, + OFFSET_ALIGN, + ARGUMENT, + PARENS, + FUNCTION_REFERENCE, + hljs.QUOTE_STRING_MODE, + TYPE, + MATH_OPERATIONS, + NUMBER + ] + }; +} + +module.exports = wasm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/wren.js" +/*!*************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/wren.js ***! + \*************************************************************/ +(module) { + +/* +Language: Wren +Description: Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a familiar, modern syntax. +Category: scripting +Author: @joshgoebel +Maintainer: @joshgoebel +Website: https://wren.io/ +*/ + +/** @type LanguageFn */ +function wren(hljs) { + const regex = hljs.regex; + const IDENT_RE = /[a-zA-Z]\w*/; + const KEYWORDS = [ + "as", + "break", + "class", + "construct", + "continue", + "else", + "for", + "foreign", + "if", + "import", + "in", + "is", + "return", + "static", + "var", + "while" + ]; + const LITERALS = [ + "true", + "false", + "null" + ]; + const LANGUAGE_VARS = [ + "this", + "super" + ]; + const CORE_CLASSES = [ + "Bool", + "Class", + "Fiber", + "Fn", + "List", + "Map", + "Null", + "Num", + "Object", + "Range", + "Sequence", + "String", + "System" + ]; + const OPERATORS = [ + "-", + "~", + /\*/, + "%", + /\.\.\./, + /\.\./, + /\+/, + "<<", + ">>", + ">=", + "<=", + "<", + ">", + /\^/, + /!=/, + /!/, + /\bis\b/, + "==", + "&&", + "&", + /\|\|/, + /\|/, + /\?:/, + "=" + ]; + const FUNCTION = { + relevance: 0, + match: regex.concat(/\b(?!(if|while|for|else|super)\b)/, IDENT_RE, /(?=\s*[({])/), + className: "title.function" + }; + const FUNCTION_DEFINITION = { + match: regex.concat( + regex.either( + regex.concat(/\b(?!(if|while|for|else|super)\b)/, IDENT_RE), + regex.either(...OPERATORS) + ), + /(?=\s*\([^)]+\)\s*\{)/), + className: "title.function", + starts: { contains: [ + { + begin: /\(/, + end: /\)/, + contains: [ + { + relevance: 0, + scope: "params", + match: IDENT_RE + } + ] + } + ] } + }; + const CLASS_DEFINITION = { + variants: [ + { match: [ + /class\s+/, + IDENT_RE, + /\s+is\s+/, + IDENT_RE + ] }, + { match: [ + /class\s+/, + IDENT_RE + ] } + ], + scope: { + 2: "title.class", + 4: "title.class.inherited" + }, + keywords: KEYWORDS + }; + + const OPERATOR = { + relevance: 0, + match: regex.either(...OPERATORS), + className: "operator" + }; + + const TRIPLE_STRING = { + className: "string", + begin: /"""/, + end: /"""/ + }; + + const PROPERTY = { + className: "property", + begin: regex.concat(/\./, regex.lookahead(IDENT_RE)), + end: IDENT_RE, + excludeBegin: true, + relevance: 0 + }; + + const FIELD = { + relevance: 0, + match: regex.concat(/\b_/, IDENT_RE), + scope: "variable" + }; + + // CamelCase + const CLASS_REFERENCE = { + relevance: 0, + match: /\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/, + scope: "title.class", + keywords: { _: CORE_CLASSES } + }; + + // TODO: add custom number modes + const NUMBER = hljs.C_NUMBER_MODE; + + const SETTER = { + match: [ + IDENT_RE, + /\s*/, + /=/, + /\s*/, + /\(/, + IDENT_RE, + /\)\s*\{/ + ], + scope: { + 1: "title.function", + 3: "operator", + 6: "params" + } + }; + + const COMMENT_DOCS = hljs.COMMENT( + /\/\*\*/, + /\*\//, + { contains: [ + { + match: /@[a-z]+/, + scope: "doctag" + }, + "self" + ] } + ); + const SUBST = { + scope: "subst", + begin: /%\(/, + end: /\)/, + contains: [ + NUMBER, + CLASS_REFERENCE, + FUNCTION, + FIELD, + OPERATOR + ] + }; + const STRING = { + scope: "string", + begin: /"/, + end: /"/, + contains: [ + SUBST, + { + scope: "char.escape", + variants: [ + { match: /\\\\|\\["0%abefnrtv]/ }, + { match: /\\x[0-9A-F]{2}/ }, + { match: /\\u[0-9A-F]{4}/ }, + { match: /\\U[0-9A-F]{8}/ } + ] + } + ] + }; + SUBST.contains.push(STRING); + + const ALL_KWS = [ + ...KEYWORDS, + ...LANGUAGE_VARS, + ...LITERALS + ]; + const VARIABLE = { + relevance: 0, + match: regex.concat( + "\\b(?!", + ALL_KWS.join("|"), + "\\b)", + /[a-zA-Z_]\w*(?:[?!]|\b)/ + ), + className: "variable" + }; + + // TODO: reconsider this in the future + const ATTRIBUTE = { + // scope: "meta", + scope: "comment", + variants: [ + { + begin: [ + /#!?/, + /[A-Za-z_]+(?=\()/ + ], + beginScope: { + // 2: "attr" + }, + keywords: { literal: LITERALS }, + contains: [ + // NUMBER, + // VARIABLE + ], + end: /\)/ + }, + { + begin: [ + /#!?/, + /[A-Za-z_]+/ + ], + beginScope: { + // 2: "attr" + }, + end: /$/ + } + ] + }; + + return { + name: "Wren", + keywords: { + keyword: KEYWORDS, + "variable.language": LANGUAGE_VARS, + literal: LITERALS + }, + contains: [ + ATTRIBUTE, + NUMBER, + STRING, + TRIPLE_STRING, + COMMENT_DOCS, + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + CLASS_REFERENCE, + CLASS_DEFINITION, + SETTER, + FUNCTION_DEFINITION, + FUNCTION, + OPERATOR, + FIELD, + PROPERTY, + VARIABLE + ] + }; +} + +module.exports = wren; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/x86asm.js" +/*!***************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/x86asm.js ***! + \***************************************************************/ +(module) { + +/* +Language: Intel x86 Assembly +Author: innocenat +Description: x86 assembly language using Intel's mnemonic and NASM syntax +Website: https://en.wikipedia.org/wiki/X86_assembly_language +Category: assembler +*/ + +function x86asm(hljs) { + return { + name: 'Intel x86 Assembly', + case_insensitive: true, + keywords: { + $pattern: '[.%]?' + hljs.IDENT_RE, + keyword: + 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' + + 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63', + built_in: + // Instruction pointer + 'ip eip rip ' + // 8-bit registers + + 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' + // 16-bit registers + + 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' + // 32-bit registers + + 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' + // 64-bit registers + + 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' + // Segment registers + + 'cs ds es fs gs ss ' + // Floating point stack registers + + 'st st0 st1 st2 st3 st4 st5 st6 st7 ' + // MMX Registers + + 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' + // SSE registers + + 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' + + 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' + // AVX registers + + 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' + + 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' + // AVX-512F registers + + 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' + + 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' + // AVX-512F mask registers + + 'k0 k1 k2 k3 k4 k5 k6 k7 ' + // Bound (MPX) register + + 'bnd0 bnd1 bnd2 bnd3 ' + // Special register + + 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' + // NASM altreg package + + 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' + + 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' + + 'r0h r1h r2h r3h ' + + 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' + + + 'db dw dd dq dt ddq do dy dz ' + + 'resb resw resd resq rest resdq reso resy resz ' + + 'incbin equ times ' + + 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr', + + meta: + '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' + + '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' + + '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' + + '.nolist ' + + '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' + + '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' + + 'align alignb sectalign daz nodaz up down zero default option assume public ' + + + 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' + + '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' + + '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' + + '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' + + 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__' + }, + contains: [ + hljs.COMMENT( + ';', + '$', + { relevance: 0 } + ), + { + className: 'number', + variants: [ + // Float number and x87 BCD + { + begin: '\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' + + '(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b', + relevance: 0 + }, + + // Hex number in $ + { + begin: '\\$[0-9][0-9A-Fa-f]*', + relevance: 0 + }, + + // Number in H,D,T,Q,O,B,Y suffix + { begin: '\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b' }, + + // Number in X,D,T,Q,O,B,Y prefix + { begin: '\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b' } + ] + }, + // Double quote string + hljs.QUOTE_STRING_MODE, + { + className: 'string', + variants: [ + // Single-quoted string + { + begin: '\'', + end: '[^\\\\]\'' + }, + // Backquoted string + { + begin: '`', + end: '[^\\\\]`' + } + ], + relevance: 0 + }, + { + className: 'symbol', + variants: [ + // Global label and local label + { begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)' }, + // Macro-local label + { begin: '^\\s*%%[A-Za-z0-9_$#@~.?]*:' } + ], + relevance: 0 + }, + // Macro parameter + { + className: 'subst', + begin: '%[0-9]+', + relevance: 0 + }, + // Macro parameter + { + className: 'subst', + begin: '%!\S+', + relevance: 0 + }, + { + className: 'meta', + begin: /^\s*\.[\w_-]+/ + } + ] + }; +} + +module.exports = x86asm; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/xl.js" +/*!***********************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/xl.js ***! + \***********************************************************/ +(module) { + +/* +Language: XL +Author: Christophe de Dinechin +Description: An extensible programming language, based on parse tree rewriting +Website: http://xlr.sf.net +*/ + +function xl(hljs) { + const KWS = [ + "if", + "then", + "else", + "do", + "while", + "until", + "for", + "loop", + "import", + "with", + "is", + "as", + "where", + "when", + "by", + "data", + "constant", + "integer", + "real", + "text", + "name", + "boolean", + "symbol", + "infix", + "prefix", + "postfix", + "block", + "tree" + ]; + const BUILT_INS = [ + "in", + "mod", + "rem", + "and", + "or", + "xor", + "not", + "abs", + "sign", + "floor", + "ceil", + "sqrt", + "sin", + "cos", + "tan", + "asin", + "acos", + "atan", + "exp", + "expm1", + "log", + "log2", + "log10", + "log1p", + "pi", + "at", + "text_length", + "text_range", + "text_find", + "text_replace", + "contains", + "page", + "slide", + "basic_slide", + "title_slide", + "title", + "subtitle", + "fade_in", + "fade_out", + "fade_at", + "clear_color", + "color", + "line_color", + "line_width", + "texture_wrap", + "texture_transform", + "texture", + "scale_?x", + "scale_?y", + "scale_?z?", + "translate_?x", + "translate_?y", + "translate_?z?", + "rotate_?x", + "rotate_?y", + "rotate_?z?", + "rectangle", + "circle", + "ellipse", + "sphere", + "path", + "line_to", + "move_to", + "quad_to", + "curve_to", + "theme", + "background", + "contents", + "locally", + "time", + "mouse_?x", + "mouse_?y", + "mouse_buttons" + ]; + const BUILTIN_MODULES = [ + "ObjectLoader", + "Animate", + "MovieCredits", + "Slides", + "Filters", + "Shading", + "Materials", + "LensFlare", + "Mapping", + "VLCAudioVideo", + "StereoDecoder", + "PointCloud", + "NetworkAccess", + "RemoteControl", + "RegExp", + "ChromaKey", + "Snowfall", + "NodeJS", + "Speech", + "Charts" + ]; + const LITERALS = [ + "true", + "false", + "nil" + ]; + const KEYWORDS = { + $pattern: /[a-zA-Z][a-zA-Z0-9_?]*/, + keyword: KWS, + literal: LITERALS, + built_in: BUILT_INS.concat(BUILTIN_MODULES) + }; + + const DOUBLE_QUOTE_TEXT = { + className: 'string', + begin: '"', + end: '"', + illegal: '\\n' + }; + const SINGLE_QUOTE_TEXT = { + className: 'string', + begin: '\'', + end: '\'', + illegal: '\\n' + }; + const LONG_TEXT = { + className: 'string', + begin: '<<', + end: '>>' + }; + const BASED_NUMBER = { + className: 'number', + begin: '[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?' + }; + const IMPORT = { + beginKeywords: 'import', + end: '$', + keywords: KEYWORDS, + contains: [ DOUBLE_QUOTE_TEXT ] + }; + const FUNCTION_DEFINITION = { + className: 'function', + begin: /[a-z][^\n]*->/, + returnBegin: true, + end: /->/, + contains: [ + hljs.inherit(hljs.TITLE_MODE, { starts: { + endsWithParent: true, + keywords: KEYWORDS + } }) + ] + }; + return { + name: 'XL', + aliases: [ 'tao' ], + keywords: KEYWORDS, + contains: [ + hljs.C_LINE_COMMENT_MODE, + hljs.C_BLOCK_COMMENT_MODE, + DOUBLE_QUOTE_TEXT, + SINGLE_QUOTE_TEXT, + LONG_TEXT, + FUNCTION_DEFINITION, + IMPORT, + BASED_NUMBER, + hljs.NUMBER_MODE + ] + }; +} + +module.exports = xl; + + +/***/ }, + +/***/ "../../node_modules/highlight.js/lib/languages/xml.js" +/*!************************************************************!*\ + !*** ../../node_modules/highlight.js/lib/languages/xml.js ***! + \************************************************************/ +(module) { + +/* +Language: HTML, XML +Website: https://www.w3.org/XML/ +Category: common, web +Audit: 2020 +*/ + +/** @type LanguageFn */ +function xml(hljs) { + const regex = hljs.regex; + // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar + // OTHER_NAME_CHARS = /[:\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]/; + // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods + // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, regex.optional(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*:/), /[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*/);; + // const XML_IDENT_RE = /[A-Z_a-z:\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]+/; + // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, regex.optional(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*:/), /[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*/); + // however, to cater for performance and more Unicode support rely simply on the Unicode letter class + const TAG_NAME_RE = regex.concat(/[\p{L}_]/u, regex.optional(/[\p{L}0-9_.-]*:/u), /[\p{L}0-9_.-]*/u); + const XML_IDENT_RE = /[\p{L}0-9._:-]+/u; + const XML_ENTITIES = { + className: 'symbol', + begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/ + }; + const XML_META_KEYWORDS = { + begin: /\s/, + contains: [ + { + className: 'keyword', + begin: /#?[a-z_][a-z1-9_-]+/, + illegal: /\n/ + } + ] + }; + const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, { + begin: /\(/, + end: /\)/ + }); + const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' }); + const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }); + const TAG_INTERNALS = { + endsWithParent: true, + illegal: /`]+/ } + ] + } + ] + } + ] + }; + return { + name: 'HTML, XML', + aliases: [ + 'html', + 'xhtml', + 'rss', + 'atom', + 'xjb', + 'xsd', + 'xsl', + 'plist', + 'wsf', + 'svg' + ], + case_insensitive: true, + unicodeRegex: true, + contains: [ + { + className: 'meta', + begin: //, + relevance: 10, + contains: [ + XML_META_KEYWORDS, + QUOTE_META_STRING_MODE, + APOS_META_STRING_MODE, + XML_META_PAR_KEYWORDS, + { + begin: /\[/, + end: /\]/, + contains: [ + { + className: 'meta', + begin: //, + contains: [ + XML_META_KEYWORDS, + XML_META_PAR_KEYWORDS, + QUOTE_META_STRING_MODE, + APOS_META_STRING_MODE + ] + } + ] + } + ] + }, + hljs.COMMENT( + //, + { relevance: 10 } + ), + { + begin: //, + relevance: 10 + }, + XML_ENTITIES, + // xml processing instructions + { + className: 'meta', + end: /\?>/, + variants: [ + { + begin: /<\?xml/, + relevance: 10, + contains: [ + QUOTE_META_STRING_MODE + ] + }, + { + begin: /<\?[a-z][a-z0-9]+/, + } + ] + + }, + { + className: 'tag', + /* + The lookahead pattern (?=...) ensures that 'begin' only matches + ')/, + end: />/, + keywords: { name: 'style' }, + contains: [ TAG_INTERNALS ], + starts: { + end: /<\/style>/, + returnEnd: true, + subLanguage: [ + 'css', + 'xml' + ] + } + }, + { + className: 'tag', + // See the comment in the \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo-med.png new file mode 100644 index 0000000000000000000000000000000000000000..f18d99e6227c08d6a3033f1674112c55ff226734 GIT binary patch literal 3183 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/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/lmt{ + dup 2 index le{exch}if pop dup 2 index ge{exch}if pop +}bdf +/int{ + dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq {pop /AGMCORE_currentbg load}{/Procedure get_res}ifelse + dup currentblackgeneration eq {pop}{setblackgeneration}ifelse + dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse + dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + product(HP Color LaserJet 2605)anchorsearch{ + pop pop pop + }{ + pop + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/capture_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put + }if + }if +}def +/restore_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup known{ + Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put + Adobe_AGM_Core/save_mysetup undef + }if + }if + }if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: 1 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 +%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Print + + + + + 2011-09-14T17:17:28-04:00 + 2011-09-14T17:17:28-04:00 + 2011-09-14T17:17:28-04:00 + Adobe Illustrator CS5.1 + + + + 256 + 60 + JPEG + /9j/4AAQSkZJRgABAgEA8ADwAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAA8AAAAAEA AQDwAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUPqMxhsLiUOsZSNiJGNFU06k+ 2Txi5ANeUkRNc6efs9ozFm1C1LHckzAknNxxeR+ToDhJ/ij82q2X/Lfa/wDI1ceI9x+SPA84/NdH c2tvIsyalaxuhqreso3wHcVwn5JjjMTYlEfF6PmlejdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdiqVeangTy5qLzuY4RA5kcLyIFOoWorl2nvxBXe1ZxcCP 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 + + + + + + xmp.iid:DB8FD065152068118083E201C16005E3 + xmp.did:DB8FD065152068118083E201C16005E3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + xmp.iid:05801174072068118DBBD524E8CB12B3 + xmp.did:05801174072068118DBBD524E8CB12B3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:D27F11740720681191099C3B601C4548 + 2008-04-17T14:19:15+05:30 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F1174072068118D4ED246B3ADB1C6 + 2008-05-15T16:23:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 + 2008-05-15T17:10:45-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:EF7F117407206811A46CA4519D24356B + 2008-05-15T22:53:33-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F07F117407206811A46CA4519D24356B + 2008-05-15T23:07:07-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:35:43-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:40:59-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to <unknown> + + + saved + xmp.iid:FA7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:26:55-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FB7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FC7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:20-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FD7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:30:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FE7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:31:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B233668C16206811BDDDFD38D0CF24DD + 2008-05-16T12:23:46-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B333668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:27:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B433668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:46:13-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F11740720681197C1BF14D1759E83 + 2008-05-16T15:47:57-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F87F11740720681197C1BF14D1759E83 + 2008-05-16T15:51:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F11740720681197C1BF14D1759E83 + 2008-05-16T15:52:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FA7F117407206811B628E3BF27C8C41B + 2008-05-22T13:28:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FF7F117407206811B628E3BF27C8C41B + 2008-05-22T16:23:53-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:07C3BD25102DDD1181B594070CEB88D9 + 2008-05-28T16:45:26-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:F87F1174072068119098B097FDA39BEF + 2008-06-02T13:25:25-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BB1DBF8F242B6F84 + 2008-06-09T14:58:36-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F117407206811ACAFB8DA80854E76 + 2008-06-11T14:31:27-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:0180117407206811834383CD3A8D2303 + 2008-06-11T22:37:35-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811818C85DF6A1A75C3 + 2008-06-27T14:40:42-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:04801174072068118DBBD524E8CB12B3 + 2011-05-11T11:44:14-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:05801174072068118DBBD524E8CB12B3 + 2011-05-11T13:52:20-04:00 + Adobe Illustrator CS4 + / + + + converted + from application/postscript to application/vnd.adobe.illustrator + + + saved + xmp.iid:DB8FD065152068118083E201C16005E3 + 2011-09-14T17:17:28-04:00 + Adobe Illustrator CS5.1 + / + + + + + + Print + + + False + True + 1 + + 7.000000 + 2.000000 + Inches + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 14.999998 + 100.000000 + 90.000000 + 10.000002 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000004 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 19.999998 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 10.000002 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000002 + 95.000000 + 30.000002 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000002 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 14.999998 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000001 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000004 + 100.000000 + 35.000004 + 10.000002 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000002 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 19.999998 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 39.999996 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 39.999996 + 45.000000 + 50.000000 + 5.000001 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000004 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000004 + 65.000000 + 39.999996 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 39.999996 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000002 + 50.000000 + 75.000000 + 10.000002 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000004 + 60.000004 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 39.999996 + 65.000000 + 90.000000 + 35.000004 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 39.999996 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999405 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998795 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999702 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999104 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999401 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998802 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999701 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999103 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998803 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000002 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000004 + 90.000000 + 0.003099 + 0.003099 + + + + + + + + + Adobe PDF library 9.00 + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 +%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -101.598 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 101.598 li +441.385 101.598 li +441.385 0 li +cp +clp +[1 0 0 1 0 0 ]ct +14.7505 90.4185 mo +8.4873 90.4185 3.98047 88.9546 0 84.9165 cv +4.21436 80.7603 li +7.2583 83.8042 10.5947 84.7407 14.8672 84.7407 cv +20.311 84.7407 23.4717 82.3989 23.4717 78.3599 cv +23.4717 76.5454 22.9448 75.0239 21.833 74.0288 cv +20.7793 73.0337 19.7256 72.6245 17.2671 72.2729 cv +12.3506 71.5708 li +8.95557 71.1021 6.26318 69.9321 4.44873 68.2339 cv +2.3999 66.3022 1.40479 63.6685 1.40479 60.2739 cv +1.40479 53.0161 6.67285 48.0405 15.3359 48.0405 cv +20.8379 48.0405 24.7012 49.4458 28.2715 52.7817 cv +24.2324 56.7622 li +21.6572 54.3032 18.6719 53.5425 15.1602 53.5425 cv +10.2432 53.5425 7.55078 56.3521 7.55078 60.0396 cv +7.55078 61.561 8.01904 62.9077 9.13135 63.9028 cv +10.1846 64.8394 11.8823 65.5415 13.814 65.8345 cv +18.5552 66.5366 li +22.418 67.1216 24.584 68.0591 26.3398 69.6392 cv +28.6226 71.6294 29.7349 74.6138 29.7349 78.1851 cv +29.7349 85.8521 23.4717 90.4185 14.7505 90.4185 cv +cp +false sop +/0 +[/DeviceCMYK] /CSA add_res +.74609 .67578 .66797 .89844 cmyk +f +46.3564 90.0669 mo +40.7959 90.0669 38.2202 86.0864 38.2202 81.814 cv +38.2202 65.4829 li +34.8257 65.4829 li +34.8257 60.9175 li +38.2202 60.9175 li +38.2202 51.9038 li +44.1909 51.9038 li +44.1909 60.9175 li +49.9268 60.9175 li +49.9268 65.4829 li +44.1909 65.4829 li +44.1909 81.521 li +44.1909 83.687 45.2441 84.9741 47.4688 84.9741 cv +49.9268 84.9741 li +49.9268 90.0669 li +46.3564 90.0669 li +cp +f +73.2227 76.9556 mo +66.2573 76.9556 li +62.7451 76.9556 60.9307 78.5356 60.9307 81.228 cv +60.9307 83.9214 62.6284 85.4429 66.3745 85.4429 cv +68.6572 85.4429 70.3545 85.2671 71.9351 83.7456 cv +72.813 82.8677 73.2227 81.4624 73.2227 79.355 cv +73.2227 76.9556 li +cp +73.3398 90.0669 mo +73.3398 87.3745 li +71.1738 89.5405 69.1255 90.4185 65.438 90.4185 cv +61.75 90.4185 59.292 89.5405 57.4775 87.7251 cv +55.9556 86.145 55.1362 83.8628 55.1362 81.3452 cv +55.1362 76.3706 58.5894 72.7993 65.3794 72.7993 cv +73.2227 72.7993 li +73.2227 70.6929 li +73.2227 66.9468 71.3496 65.1323 66.7256 65.1323 cv +63.4478 65.1323 61.8672 65.8931 60.2285 68.0005 cv +56.3066 64.313 li +59.1162 61.0347 62.043 60.0396 66.9595 60.0396 cv +75.0957 60.0396 79.1929 63.4927 79.1929 70.2241 cv +79.1929 90.0669 li +73.3398 90.0669 li +cp +f +100.088 90.4185 mo +93.4155 90.4185 86.8599 86.3208 86.8599 75.1997 cv +86.8599 64.0786 93.4155 60.0396 100.088 60.0396 cv +104.186 60.0396 107.054 61.2104 109.863 64.1958 cv +105.766 68.1753 li +103.893 66.1274 102.43 65.3657 100.088 65.3657 cv +97.8057 65.3657 95.874 66.3022 94.5864 68.0005 cv +93.2983 69.6392 92.8301 71.7466 92.8301 75.1997 cv +92.8301 78.6528 93.2983 80.8188 94.5864 82.4575 cv +95.874 84.1548 97.8057 85.0913 100.088 85.0913 cv +102.43 85.0913 103.893 84.3306 105.766 82.2817 cv +109.863 86.2036 li +107.054 89.189 104.186 90.4185 100.088 90.4185 cv +cp +f +135.44 90.0669 mo +127.128 76.3706 li +122.738 81.3452 li +122.738 90.0669 li +116.768 90.0669 li +116.768 48.3911 li +122.738 48.3911 li +122.738 74.0874 li +134.27 60.3911 li +141.527 60.3911 li +131.226 72.0386 li +142.815 90.0669 li +135.44 90.0669 li +cp +f +148.959 90.0669 mo +148.959 48.3911 li +176.411 48.3911 li +176.411 55.6499 li +157.095 55.6499 li +157.095 65.4243 li +173.543 65.4243 li +173.543 72.6831 li +157.095 72.6831 li +157.095 82.8091 li +176.411 82.8091 li +176.411 90.0669 li +148.959 90.0669 li +cp +.953125 .761719 .101563 .011719 cmyk +f +200.525 90.0669 mo +194.906 80.936 li +189.345 90.0669 li +180.214 90.0669 li +190.75 74.4976 li +180.624 59.5718 li +189.755 59.5718 li +194.906 68.2925 li +200.115 59.5718 li +209.246 59.5718 li +199.12 74.4976 li +209.656 90.0669 li +200.525 90.0669 li +cp +f +225.576 90.4185 mo +219.489 90.4185 211.938 87.1401 211.938 74.7896 cv +211.938 62.4399 219.489 59.2202 225.576 59.2202 cv +229.791 59.2202 232.951 60.5083 235.644 63.3179 cv +230.493 68.4683 li +228.912 66.771 227.566 66.0688 225.576 66.0688 cv +223.762 66.0688 222.357 66.7124 221.245 68.0591 cv +220.074 69.522 219.547 71.5708 219.547 74.7896 cv +219.547 78.0093 220.074 80.1167 221.245 81.5796 cv +222.357 82.9263 223.762 83.5698 225.576 83.5698 cv +227.566 83.5698 228.912 82.8677 230.493 81.1704 cv +235.644 86.2622 li +232.951 89.0718 229.791 90.4185 225.576 90.4185 cv +cp +f +259.056 90.0669 mo +259.056 71.4536 li +259.056 67.4146 256.48 66.0688 254.08 66.0688 cv +251.681 66.0688 249.163 67.4731 249.163 71.4536 cv +249.163 90.0669 li +241.554 90.0669 li +241.554 48.3911 li +249.163 48.3911 li +249.163 62.3813 li +251.212 60.2739 253.787 59.2202 256.48 59.2202 cv +263.152 59.2202 266.665 63.9028 266.665 70.3413 cv +266.665 90.0669 li +259.056 90.0669 li +cp +f +290.311 77.1899 mo +284.281 77.1899 li +281.53 77.1899 280.009 78.4771 280.009 80.6431 cv +280.009 82.7505 281.413 84.1548 284.398 84.1548 cv +286.506 84.1548 287.853 83.979 289.198 82.6919 cv +290.018 81.9312 290.311 80.7017 290.311 78.8286 cv +290.311 77.1899 li +cp +290.486 90.0669 mo +290.486 87.4331 li +288.438 89.4819 286.506 90.3599 282.994 90.3599 cv +279.54 90.3599 277.023 89.4819 275.209 87.6675 cv +273.57 85.9692 272.692 83.5112 272.692 80.8188 cv +272.692 75.9604 276.028 71.98 283.111 71.98 cv +290.311 71.98 li +290.311 70.4585 li +290.311 67.1216 288.672 65.6587 284.633 65.6587 cv +281.706 65.6587 280.36 66.3608 278.779 68.1753 cv +273.921 63.4341 li +276.906 60.1567 279.833 59.2202 284.926 59.2202 cv +293.472 59.2202 297.92 62.8491 297.92 69.9897 cv +297.92 90.0669 li +290.486 90.0669 li +cp +f +323.848 90.0669 mo +323.848 71.6294 li +323.848 67.4731 321.214 66.0688 318.814 66.0688 cv +316.414 66.0688 313.722 67.4731 313.722 71.6294 cv +313.722 90.0669 li +306.112 90.0669 li +306.112 59.5718 li +313.547 59.5718 li +313.547 62.3813 li +315.536 60.2739 318.346 59.2202 321.155 59.2202 cv +324.199 59.2202 326.658 60.2153 328.355 61.9126 cv +330.813 64.3706 331.457 67.2388 331.457 70.5757 cv +331.457 90.0669 li +323.848 90.0669 li +cp +f +350.947 66.0688 mo +346.44 66.0688 345.973 69.9321 345.973 73.9702 cv +345.973 78.0093 346.44 81.9312 350.947 81.9312 cv +355.455 81.9312 355.981 78.0093 355.981 73.9702 cv +355.981 69.9321 355.455 66.0688 350.947 66.0688 cv +cp +350.187 101.598 mo +345.504 101.598 342.285 100.662 339.124 97.6177 cv +343.865 92.8179 li +345.563 94.4565 347.26 95.1597 349.836 95.1597 cv +354.401 95.1597 355.981 91.9399 355.981 88.8374 cv +355.981 85.7358 li +353.991 87.9595 351.709 88.7788 348.724 88.7788 cv +345.738 88.7788 343.163 87.7837 341.465 86.0864 cv +338.598 83.2183 338.363 79.2974 338.363 73.9702 cv +338.363 68.644 338.598 64.7808 341.465 61.9126 cv +343.163 60.2153 345.797 59.2202 348.782 59.2202 cv +352.001 59.2202 354.108 60.0981 356.216 62.4399 cv +356.216 59.5718 li +363.591 59.5718 li +363.591 88.9546 li +363.591 96.271 358.381 101.598 350.187 101.598 cv +cp +f +388.992 68.7026 mo +388.173 66.8882 386.476 65.5415 383.9 65.5415 cv +381.325 65.5415 379.627 66.8882 378.808 68.7026 cv +378.34 69.8149 378.164 70.6343 378.105 71.98 cv +389.695 71.98 li +389.637 70.6343 389.461 69.8149 388.992 68.7026 cv +cp +378.105 77.1899 mo +378.105 81.1118 380.506 83.979 384.778 83.979 cv +388.114 83.979 389.754 83.0435 391.686 81.1118 cv +396.31 85.6187 li +393.207 88.7202 390.222 90.4185 384.72 90.4185 cv +377.521 90.4185 370.613 87.1401 370.613 74.7896 cv +370.613 64.8394 375.998 59.2202 383.9 59.2202 cv +392.388 59.2202 397.188 65.4243 397.188 73.7944 cv +397.188 77.1899 li +378.105 77.1899 li +cp +f +398.175 32.2979 mo +441.385 32.2979 li +441.385 23.4107 li +398.175 23.4107 li +398.175 32.2979 li +.828125 .570313 0 0 cmyk +f +398.175 20.852 mo +441.385 20.852 li +441.385 11.9629 li +398.175 11.9629 li +398.175 20.852 li +.660156 .226563 0 0 cmyk +f +434.528 0 mo +405.025 0 li +401.241 0 398.175 3.18066 398.175 7.1001 cv +398.175 9.4082 li +441.385 9.4082 li +441.385 7.1001 li +441.385 3.18066 438.315 0 434.528 0 cv +cp +.394531 0 .00781298 0 cmyk +f +398.175 34.8023 mo +398.175 37.1103 li +398.175 41.0293 401.241 44.2105 405.025 44.2105 cv +423.479 44.2105 li +423.479 53.5962 li +432.536 44.2105 li +434.528 44.2105 li +438.315 44.2105 441.385 41.0293 441.385 37.1103 cv +441.385 34.8023 li +398.175 34.8023 li +.953125 .757813 .109375 .011719 cmyk +f +406.281 44.2105 mo +405.025 44.2105 li +401.241 44.2105 398.175 41.0293 398.175 37.1103 cv +398.175 34.8023 li +415.359 34.8023 li +406.281 44.2105 li +.811765 .643137 .0941176 .0117647 cmyk +f +428.819 20.852 mo +398.175 20.852 li +398.175 11.9629 li +437.395 11.9629 li +428.819 20.852 li +.560784 .192157 0 0 cmyk +f +417.775 32.2979 mo +398.175 32.2979 li +398.175 23.4107 li +426.351 23.4107 li +417.775 32.2979 li +.705882 .482353 0 0 cmyk +f +%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse +%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 +%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.1.0 %%For: (Jin Yang) () %%Title: (se-logo-outline.eps) %%CreationDate: 9/14/11 5:17 PM %%Canvassize: 16383 %AI9_DataStream %Gb"-6BoaO]E@CSir'/\t!CU=n?MGE+>[i7H-*:>b_4gKH#S0==VE+"@4pF/5jQ$79[F:2XaK3UcRLqth3P)fMd_is5F#.mLr/35: %++O(Tc.`cdDEn,mTAR2,BB*9bV`S\#q;R=IHi*+fh_/a"gCPQ.].Z)"KiIK8.j"!%pX(;q&+)T1rPSLk+$T_ie&SZLI/j05j1CAE %^An#bmSC#Nh#6:!DrI2;GQ7C!h7J_t]\C/IrUkZ/0/e;%IsZS?m`k:^Vt[AZ6X09u!j2@ep4p-G^A6k$n,MFmVk;lBJl)JOC@Rq2 %LSg_Er0tNPs5E9f5CE(b=4$*!DuT`!I/Q3W1&mR=rp%bkcS,Xg#ki94O8nnaIK'9sj_t.sf5JBOqu,\RY)Frpc!]olQ=usq=MuThL#aF)-6Xp],u"M5JPD<#+5BkYQ+7W'2KX_i1I`1 %oAMVMs+PdpAb#NOq`>V\*W1rK_>4m[44>\m?qR@N[I#o^N@eR#qLTU9k#\cjs7GRC[r4M/>e2lop2<1/rMH]iLK=3eNSm!Es,-g9 %Y/7,%It$uT\dfRbqo@:51u82l=8[[-r#Usd_s=ccAJTH?GB\lC>Oh\j_om?/P(\eqbiL'*nf"s0+8GP=e&cTd23$S9[j49XVB5pW?)aE;;n2Ieoo>E6@M"!?`)uiDVNX=UbZcV[V=u\/4 %NHL7OK^&>@cZtOr(3u582a>D/kMC:;\SqChm('9]f&.XOL#^).fFkA1O.*iD'uU'V(620lQtM,F`UVo*r.Lj*ouGtFF+iIiXG,]P %hn4i*,s8C/IXIpM!;9[f8(W^sa0Uf6Gi!OKGi[Y,loFfuhodV;H>sDm_)aP:`Cq6l50]kbDfL1")f%0Wj7mjopf[NSF`;Hb$cQr< %4$7T^#0(Q"@Dru#2XEG6$KHa+$XH]&GO?Kt3kq$E%=>6.U1<5t@kE*j\'E=kp\_olkFK`Ib\PLF_^ukmL[hk@G(.GYTt@`"/=i\n %qi'?gpC7/ll%VR:e(ZA!(+Brm+Qkb)^WA:&CQ4OE]YZqk&A^(GR\@rQd_"bb*Yir0&pdc<9%q %j_(pYDqb6hZeb38p-8SE0D9aI[/]sbE8](0J,Yl$&(>T)48d@hb+J>?rt".2@2IpC5DS9=F3H@WQiAs6pt"K7C!&/5pa?(D'p-2; %#.Cc0:VY4a;tQ^XUAr.hE_&*+:B1,8haaK)rrT&uhr-N8] %T%57k5DaMe$_*[(I+[NUJH+Xo/GMGYO8(gZVV)tqEQ;dbp/>`+EsqR?^-*[)s68DN940\K(#SG6#gsfDT9H$^BfBOQ2)n/6[bS(,0b$esPQ)BV)"/]'`?!GG'Y52s*HbJ%JYj01Gm+)+HJk;YL-1U+o>@t!du]\dS5rTNGs3)`?F'HPEPZ&XBa,"T?$ %'-'a=:cmVe+9p4CAAgj,AR8;io,%d4$Y#R+9BJ*e3jd>)Jq**->Xq$;s7#H/bXZGq599#od7ho.e74r:898n6'r*g@+YnC"VcY%u %&$re)^*mkB-HCX4a"kL1_=8Y6!fkdVZE=B$`^p^:HWh6<-!1OoLS!FBGV"YHXero-ZAT@!*j""cYZPiR<[K>'n1%?%HX'o_3F+:k %+LWC$T4:FENk!(*OnN+#7pZMeeK0400;oC8%lcno0VB%b=-T<29RD"qT_Su*CQX2K7MhS9gkXOrdK%.Y9mq&JedLLC[P%INJ56P: %l8mq44e:>rldJ;$ %csl+0*)q8Nj?b;Bf;<.GbC:\lel/TC:hsu!aDu/Us2kPTpN`C8pq7"-:#drQ=5Xh.;-%1u,ql=p*^fQ$_l/N<3rV_N/I5HG[q<$^e %]XdpaVq59C[C^qbO8o1@ld%f-q\oRC^V9R'mH6G&YMXg'Z\o85hnB$]k)R30LZtT5s7"M72o#7bl$[oKTna/.Gk:@`G?qNio(p6_ %GQ7:-Vsb[EqH*,lIsCqVNo7>,=)\*=hn4\(C2Go^'ofs'o_itf@Ish*=hNZZL$kul?M+*cn*d^RhL,+\qqIFQ(gOGl@&CB(>]BhM&T/2s0#BA:@sac*W21S+(fLR#]YCZ7aHhnMWWu$X^3Gbts;R5hXj3 %PeB4F3P#NS,pf1-_70JX_*fJ@#1cc/`bhF9g`?eW1-^%tffQJk"H`)9q1#%boH6Aejfogj64Z&Xlt;r=nJf79426PknAd4K7pYU- %KG[US6Oq(g:"Y2+fS;gR`[P))*KH=<`Y@U'l-R2)]=Nf1bR9TrniqU[Hf(pK@fID8o"-(g<_T?$W]"\T#B0a`,XNZtQ[[Z>dHuT(Kk/I'A-Uf+?(o %QB;srQ;SJ3Q]i5MQP:7$QaP0aep!H:aO8F(&;FLJ@SDP5Aq;ibiW/7/4#*QgV[TDt:"lIMg8>%;,HR)_l16^D$+cO$NG[f5DkLq0 %*?;[%..?2b^^PQfVkuRDaglrO\BVXucNbl=1;TtN(fVnCel:dp9*+j,CW[.0^)Y9-Yee1#_73qMi[2KgntrWHI'_So2fLAMCpCL+ %YU3ctC!MH!kR_tMr=EK>e:6h5huCFbfaODn]?VF`Y+P?5luh^%O\SiA[qRpBoKsQX4sU, %m\DC`_P.&()Z8-NZmbO?j@(MUZ8$g7.,.2D/]temSuf3RQ-*.M:<_R\X%7:'uu6nWun5U-GuK/>Ynj8D-Vg8_IT.M#+L$ %KPcZdN,aetN-1)'N-UA/N.$Y7N.Hq?N.le;7So50OjT:&&di(nj!8+\iMBp/j!J7`j!S>M0o2XTsll>FA72Ou-*]Dng=Yi,O&0E-asH"V5q>`TF2"8spsrKLWCq(4O&[/\hOs%+9WanWVUjT+oq8GS^.Q'g]WTGa %q`!EIJb-f]5CE8*c"E,Na3Wgb7.MlO'MF2'mLL&G'YtL&'Zk[Si]&W?68p,+-\@$`Wh#6KUYoGl!.rRf\V^DVBT(4O_t!e9-/taI %;5;h08Jp^+t.KrQ>%J0fc^ %AnZQLl.&CkA5FmDa^@ookt!Q=$4,4=B]Faj"Y%<"QuQ1S4E0&HY>u]Jfk/PSKcMWR1`bm\G'?bC=(L,YOO8pgl9t49l4+E#'Nc.r %]PNmsV3G.A[F>d$2J^tVj^>r6.*&U.XA"U6f7Um8.:j_/[,#]$F)jt'K,RDuc*[u8%D+=9QnHSWZ4hL.1-.Ml@Y.2WG[Lo?(2.65 %jruYKi>"7E0]*,&ruJ2^"r8XT:D1#KTQ^nB3C/]:j*4W9Gn1pS,9?BqUTkf9%%jCr7bkDh;FNTMB?XFF;^?-kVZ,'j,gA#(;;8<* %$>ds)[V,dpnZY9%Sq+a!?mG,J6Z6A=A_>oI2L9o9*GkZ\B\*8U_2btA#)GVN,*?8rK7R@E8hVOSoZ'-th"bFE=nY`"(JF+QOoJr] %`]:Rl/*H&kc3c=X5dR1u[soU]!?USI95>eKOhaJb[k/=?EVtHr'U\qoX2op4j"opc>lc#*!F+5:L(]mtRS.*;MQ13B^fL48GmZ;R %Ut*!LR$&Vj5SOF@7rBNP"kauU9%kR3?1/6]'c$$nH.Io7=oQk9"[oqY#AQ(.$U@T %b1,Nf$[/TZ[MKgTXVi*&2Lo'N^.TTW"<\luNZHU:#SR+X:*a'%T`mJ4K8:.k#(%ImFuO9!+T(WdKX1hG>G.09LbWlg$rA1\SUfH9 %JFDoV#B.sR#khL)/ffIK3M;!$51dD:*U!+#6E(;g:#/%EXqc>u8%1O$qk%8HXgtKI;nEf\3g@IolX(Y14\04VSGl>RC2J!=2?5JE]bg[$=3ml3 %hZNP]/bm0(TIT[BT9sFVFX6:qSb:@5flmn_n5/Fj`1CL%Ib=(u0J3-JY1>0pMW=#@hVC] %m0%knQIBbil2Rfn+5W+LOWcE1-)?OZ(Zosq1]IB`4)R>R/jP)%3.XIq&"lO&+pGcR%f@8,h9U2/%s2iI_tsAB5OA.AS^J/B>f6bY %M*l#eXs#12,.GK/1U4khX:UfX7!*QIe.h.\2FK_R&P]'e'@Fla;8u*49P.!SG`#m:eg(>5%,?Snjt$Ya'="'\;!s!-14bBN*/-'f %KIATAS:qf+@TUX2K>hCA0/\(F"_d()ZH"mkVrdhNbDVT7:=Xr=W1"Y=k-u=b)#$nDX';2rED=/"es3 %o=k?[km0m[QisY+3[&+0kbs8lclXY/CojLd4kEg5p9=*>/mZIV/1"d<+PZA&_^'q$9dE"#-n2 %[0Ml,0@"_RgFWrX>:.-.I_]-hT6s_rh?.nhqfc %R)mG;O+pAI5RFARD1=[LSpeWSqq:(ich:Ihla-N7lhgLfd6/@9auYCo7$5P= %@[250rW12kGi&#>i02@@m%=!X>8D8eU9_I72J5Z;qf5U*8spJA%4/I"<32AAMVgKRfNKUR+@1'G9/6t$d!tmZeoNU*Db/+7_E'DP %@^.5N*pN`$fW/pG:]InQ-/I,^AJ\nm?9?%^1a);N&S %=0^mWeseUes-Yq41t#-@f$JnU9dd:9L5tn2eB_NgP!mR@7;^i8"9,Q[2?.,S3Jn!u+BF"U=\lM9$eU7u5V3%Y[0jie)=XLZ%p1U' %Y_D#.gh^Y[jI83ScKh1`-t>;iMc,QVs;6ck6A01m-Tm#$%!R)+d.GOD2Kl-+A2cF<)c %GO!I43qN$)I*IAK\aT(.3g(8dMT/A6-!=28:DGOX8]s %eIp&>L'0A6_5`=2l;s:t=?:6'R7_'@Q_CPsUbZ%VP0"+88'Iu+amnY:=;GrbZMP#@GIFa6Z8MJK/Xt9g:.d]!,kVudI[UPl8mITX!:L!q\nO(2s69J` %Na4ZpdN.akg"$5!Q)X=SWD]$S=t4Bg`7;KYN/ffe(JV(nkDXo^I%n)4rF5Z;e4sI;R*0oH-U0f"r,R2-ja3fDG:DDGgf3e[C?Y9U %hLRkpG6+^;ed`4oI*G:.g"A]@*@Xd<1tU=!H&hf8K'2\ekVKDii+]2b[r+6HG1:^(#49p/nnG(F>#dgBcT3p'c>oZ+PJg"q81/?ohaL3M2+/orANlSQ=kl56&W9!8F*)"=kjpDTg@`n7J+$s5]M"tQSLf`d-_ %bP#Duou2k3]L'H;@GB!.&\e$uqCoLFL_."4nmJ,B#5('13c5T=`kf,u1F"6ou>.%&];BHW4o!V0sF'<25'm %OiSh2a:&YI8uctdca@:4V3Xh-m:WoaRB;jb#0Yh2-jsn?DE96&Oi#U4=2KnBiq-+Tb@444'!hAT@MXL#,k'GrT&.Cm>_>0C8K`@r %!)8i0"CRBd4Uu?Rg49;o!VC!Hi@l+CeF:5=`*fL4>;imd1'k1S)-[QpJsVkGA>]@jXR6gjcHR4!]HjQ"\C<1.fUnqDeC4S %;jcu\d1-uk&OR$H6WsDYGXJRr^^nn^ZD%loMco0t\59=`]p\2d*Q#5'>[R0-VSP_f4Iok88Ki>)3EA-C:G$s'iR<[U@J,H)Eq2aj %*[?f=V$jlK5,*OckpIq![.*?!>cj^M)HbgN;,$)[,XWV\C7@uY!\\7l^m6B,YR&ri/F]I?=e[C.:BlpT%5AsB%r %4Hfn2Zf&a?MZ=HEp2NYnc5UgV&dm2&m?^OKRLldj8k1Up#Z7]DQ\?jS=OqVZAF;;oG>_J$gHu;1M`CgWV\QNF5'qm.\?C.n.-dKm*aIH0n2Pa3g3EJo*.Sq9NW=W$HgiRFKA*[.eoLl %]Y%N!=#7Q6T@W[mg0RM.<4'>^(-6821#&a>Gn3%A.p$oJlD@g-_g7:9c[b:mc,5=cMQE\>\sON$@SS?\e3>qpO7jP(QkCh9;?:TC %is&DuE6b%rm/rmW#t8%WUrA%<6.5uj[m3K;If"0%XRh6\q41T/nAau\R17I-CiI*H*oi4HrmBi(_8#aLiQPq8S3*/a]Y'IU#`K"7X/)Dq[?8,#ZR*I)!FH/*QKbAmI./dSd$miAlW^jqS.q(#^c!$^-74K2c*dm+BQNhr@ %#0Z%bO[&CGA\M-&"?ilRFa8('gJ]srVZ+,*-B7Z(h^H1hWn1oa7@0msg3!_/[b\+/PDQm')-B%XDp9pZ0VY"7M^ %\nkSZR;K"J\$`Co?X(WZ`eTbG>S^el@qOq`_FYg@P_-m^4eh!\X]^aj:>P] %#>Y2iBceZGZCLH9o0"4IH\of<#o\2Ja*.`.MV?Q+<+n9Gqb1'QoP1RJ*m2>H7)^SZ5aMt`R5?8X6F6-\g;'(FEe@iDtF)FMt`8C<6IS'e(E^I[cFiqK1Z+L?$%[\$8qK[fq0d, %_T.\)WIU-6+El#XF%uiX2 %P%1(bl^uu$E5OKTGEcLelS%^N\D`k;449A2e[k7.eXqXmdlKZeUOhNKkB@^UM'W(n6)/k+EB4qJF'LhO`W-(`#j?;]!T\e:F@!4f %r6/c3q4d-6RbB+pH`e#@pA(Zq]q4gE^0K+U?e"!igok\b:5/"O='3"5_0"r.0&iJVXDO:?X/pOf8FNu&T?S+Y(W@Ukir1lrV!Sf(lL#R'ZF][DEho\T=)iS`iB^(r=rUFq78Aq('/hh %pI9$h5SmLDE4'^4!]mdTKa8@fZgr5EETKI/=!>Y9eoW:n/ks^!PeWdoX"1[DOtJo*OK5ghfpj[]q12F"^6qCs\@%FDE)N"2"n]ME %E\!!4hSdtqn>]frP,oE_W=rEe%E]kY@$YZ`47i1Vqn6Wko>DI&HaA$,Fn;bC?^^:g\GLZdr,B=FY[)W)?LOaP]sGn/)D4Z[FdLM]]e5#PgfKuoKH/;cMnTMi`^"#6kk':l&O%8fS\!m3I4R]E7kcag/Xldsja)eX!b-O1; %4Mo(Vguo(9W!4pNbrf)\]A;7?2!*'f?QIB^e>6$u5=[G@^H.ifqJn;l=5@1abdA0%AL0Jc(N]SV)bOh`oH0["R,K+*PJW-[2U9%% %Hu]g/]8UaBP*%@p1%f.uE;$0/1NtUV?_h5X?B93r%]"1!C=hipo%k'DWhd>od5O0eK/re&cGC,a8=nQ9S3-e.ZkH&RHH8R7L %\mLgWYPX].II:!6B/'[^VQH0&eLb^IWJR[RQ,M3_g?LD(opJHl9MJ==-_hGD4QMkNP=0Jh@Wpk^.jrE[c\TU`qu1/MXWJk6 %]&*_@"n$ABF\JfaUibm^E&/+bB#;;7@GHEqbS"(_6DU#GB1$ki&X"+?/K>p#UnuDEg07b<"0JMu2%6j*1G.+2Q:=U3YT0"uh`Z#o %mn'LFnX:urkIktAn$5?&Rf.@,1>e:9k!q*']lX_Bj]JU)-16Wb1aG]s-*mLhP`!31=;-G/,*dCobP]iYEar'eunAR#luLk1gts3X8WafP/t %Nh>FV/0>`k]C`L;S4`(SL[EMW^%1[PD!mJZ0HNH6Gl!gJ0X^K30sf7%H"WMCB9*=CUA*,0pf2^gTDo-Pp`J&]8+lLbjn+YNLK]QZ@!)@a;)0G\&BV %&e@L_nRkjYH8b\.KLiGZiHed-pT#UA'f-!d`Pjk5Zn-h4qi`iOdsX3hN2@W&QXsGcH<)3$Xq!WOWEn0>?s-i+IuGXl8KpY+g0Y`1 %36_""RaZm`gN'ETA:JA1N+$6894<*V3(pneA><9+N3$p=$:dQGjD4208uH=!IcI&lTDC>XB&m:gPf)X3(it"V50[YZmcSt`Q*Ud/34PQj3%5Jp'aoi.Q@r$^sO5;:im2U"(L(TYk#gfUcE<,9(fGdTnq1M360UV&"I;8FX28OmO@_4XBVmVC?FQ>3K?E3Q1\$1Ze#FIQA9-<\sPWdGWt00L5Dj_6UlnK/g7de+b!(8fo"92?P5T]VlA#PlfYDo\`Fu` %Mjna_A:VW'^/r7a0^$*k4g(g`1chpg$&PE=86k=>C.1o18126"LdDFR<\bXcTtj8'0+K8@$VBeT178V8HN`_4F?n7q9m]:1UrUOd %<*a";D=$qT]uI>A*.+gJi*k&L*]r3HV?6@j7,gE!Hm+%8!0aX[j-@=S0@=)hE.+UWe %d5K7D=k\ZMM%rP@g8]L]Y-,>Am>Wa&XKN6Z?"#$Gb;F15BX,_1F/\XHV+]!s&dGHJH*mF1klB3jXjWhQCpj=iXccf3'oqN:PI<-^'G:>Z1:f`rld)7uGEcE9>qqdo595kNj9,ca).b %oe`YdY"C"K]/&[gk10NrLS@GcXT9arSm;m%H!M5$ZL.n)&qG!dnDqCs'J8Ic'_H@Tpg\3%?[8<3Cb+n$Uj!qeVRb;lSHI)/drGP?4ohRFm+$WY)/D[t[U;Cs;/4Y$mM()g/U-'%*qIM+K$,IY/4?O!@C\aaH&PP+Hi- %m+Kfm5"/./B_4m7Q33P(4IL[=M.F+(F@WcR]?bA+i=:$!ZJk,#me%ul],CZRdfr6i-%Gi9om94Y:7T\8\pe<0i(<&k'92QJkm-as-\tS:i,W$VWNeHN0$YE+,k"P>-jkiHVhH]3Vh8;qhb^mA*@WLZ;Of %L^t[N<_GTWZ7fZ0/cPTL[@L9<4fQjieVK9\*)_XI*lM-"-YH@@Qd57l)X9?4b0a.KRQFGrX\3es:=Yie=81aSq?ubmS(=H_'[>0L %.%'9AA?-NnTq^t`i_cjo)QOG7<,**JOMj.X7C,mgWDq\`I.`&!QcKmrk=G^5jq^8G)EGjn,3W8VkEoHVSSR:+F,Q]4NLXM(l]]@C %!E_YjsD;N:p@<^bd]T%IuWLKj?]$ub>p?L&f=LECZ>tch[CA0iPi2F([[=5-p>O>tG;PplXfM\RbbaQXIc/<=NQt1_,6shocI)5)Zc1RjXc!,?on1^Lh]01Tb^N %]]hGb/_N/<)-p\YTV,;O7p#bjm,L6J$]k%.c?&>WG&Dd"J0Kbf3Ppm*>`f1/;!D!Jj*fIjPB>&SB@SK73bEjoZ$4E4]>je:)ORZL4^ %eH\j>f5>kII*2pTD9D/T/=kC1H"]4(S:"Fe@*N#*Z22pGD:K0J]?sG;!S'VEhFr7.*U3&E$+;85((t:XS4-j%79L=8;2f'0(-+Ga %YcO_VBoK*MXt$sT@d?b23HHCOp1!?VJ!gYICQ:k?L=]7=C1?R3(PVR\HrTl?rkgY$isuP'89^:/8H%fH1F]?hRZ3 %^SI9VTBs>0*_ICA<(#>`B?:%:_k]/C=g^gqJZK+A(2qX\=[Obdh&--P9X:eE6ch\E-Y:aC,Cc6\=iol)bC6R\(#\%"`SgRN3K&1> %k5N49<.,up#1+uQ.5O<^.P";:1%F^;%3_C/P%O?AiJVHM*OA6p`5T54G!N?/o)FtX2,VV7*j,7[-G=nnJF,WJfYP5pM're+YC,A"N+)!$q$'@ %F)/HsXK`e\P3@L6>(Z*hS4VR.AgeFXJdeSHHtfPtg1R5>=C\ %@WN3Zf/&Q4jI5ZG[ZY9.er`gJWZfGYdTuQA(;62+=`LjJBIeQ!eoVB!k6d$6jcEPNu<1$]#pN13O1T %k9>!Y79<\KV*d;a4Wa,E^N5-p5o0Vf"-[?o\;/W.lR_//l;-CjX)`5!3K%c[5,1crImVe1f=0V]k1%68,^HauMT>"?l7D]q1X_UQ %4(<4@nGS[p,E0&Rd3VsF+IDUrSG"C$hu9_8>)^#=Td\XBVrg9`LIXJMmf[WNk.[-@?&V9<`UDQRQ#TQep-f%6ZclK?cJS9De$+6X %T21p,*$UiW:n8bqb!L6'5UQh5b/,]4^\G$bZM'4pXu7P:T;i6LfFt5s6B>Zk]Wo;W%;igq)M%:D)gr9KQD*NHiWDL<&V<,bcE9f'^Hp"eKsRGg5]>d%sJk(>&YM'R^<8I'1FI.4`t'J71m:9PcY@[Di(L!49g %dcL@Y/qt11S*p__;=]:"l.]+e5#]&K$^"%ebgJ<.(]LIRE5g\=(QY^ir`i(6csj$3>WX*=c/u8SeH*:%"[eM*MflD9H6fbPmOBr4 %UQ5GKR+4l9HSeAIqUp;q.4N[:?Y"hHF+6nW'NTK3Mma50#9M67Knb.pj]/)oL7l>:RKn\R:Y-G3D/BeqYjpJG0S@EAo %Qqp=l`H33ERBjA*(/A/tXLHg([8YZkZX)$F.;=(@9X23%d4K654ElS?apj6AJp^CW=!d[8,X+e,gJZZrRT3;HAEGN)C6kfd;Ia>t21e:jIj&!naY=E5e&jEWH^Q\J1^J+m %phf)Qoc$ZCflHf,aT(M)1-]$f#q/$?QrS*NHneEBpnbeKWPR+Y)9Z8&IC>(uOE;@4.`%o40l3IAZqiBdP:KrsH)Nk4\srSi4*)b2 %DG8pB.*EfWEu0-M_0;c;^T6G2%WQ`BfYc`M*&kc)1QlWkKUtZtBr%=gld^g)WN)4`[HopXZffiGXn:,9s-^K^LJen!@hoPfgQSp` %$g$W$SP?)#c8ZnN]U-=\KV&sb!k]*=rbsUj>n51XT&/Db<\8Cgd]M9I?Xn`?3P068TUeo/k[]$m*.H]3;^=_f]UV3hu/RF]s<=S.G$qG\5YK#KU^P0#918d+leje3*4Mo7RPd$T!]^Gou@2H9;dMgbB-]@D7(CW\k^o.>d]/j\R'D,/M4 %/oT6ChP@QlZb;.DHF8e%O76Wdl,*V6XuW@&M(?i-ObcJ,VuH#.%[]ZV[' %4Ym#)Ag1R"&"Db,6en0UT-Y$gs %T=HK:Uc`<51Q.=HBqWd"R3lY0IhE6)T0EcnU&b3MNjlS!$,WQt,\^&sl&E>uNaOmbRZ.,f'#.P1V(RM&?WgCb;P/bfI\$gcs>@4R-'mp:\24NuQmgM0N?d %8^(W-m/)kQZ'6GY3MO-oP@]RdUGlNFGUhg8[b7Ma*7LVLbla9bdn=hQ>=WbrfN6B.\n1*8Yfj1PB&eb[G-K5+l;ViP3d^(\@8AJ^ %UQsE0NOHe.XkRS\C[J+GG%%p=(JVE11&$5sD7X>ubknWlpHgSnfSH^\k%Tmk1q;E#/_NO$bpIImCa.9-B.YK%Pk9cZJM`,fE,J): %X6$+nE=jHmoSCj7&;KQ-k,-&4"g;*PW\lYK5iW(FMcH*m[8o$pC&gPl8[O,\Aig`5cPT!u8&VSS$MnqCgTL/h$D6OPI)lt*F0/NW*dhVlC# %?h::p/f.CVb"):_.N&F*K=Q41^lj`MP[sH]jt[l!./d_k4]0T@WI8g:\`Vhur)]>?&*Sr9d\#7Y^@+-"r^L_d/rStkVD?kc#tU%h %RFJ#f<>*g&OIkbW3GPJhfPt[f&=J_lIXf]d%f<;>rKG^E3IAi^m+-VD#fq*h$pAR7f`O[!WEHo,jpC.G5m"0#5hqR)d;h$a2V#M. %ZSQY4Z^.5ok!)6MPGZ)WJ%\CFrU@JrOqa:\]-H:orU=H?+82^T&R;K\I(7CIfWqLEL2^hH %*L\K6*M+<@/gNA4fB"m&5*=g7KS;Wn3ku!L[$iB*H2UBLnET@N_.?O9j:%i;e3%UMZptSLln;ot]CiuVkKS.ge7q%:*!bdrG:hE9 %F=t+1cS^V!,hD:Wa"+":e^<[DdV+Q-`:NM$r?&EUkuri"T6:P6Z>@aJC0a]Zq82:Adn&`pf.UG?M-esMrD;_LQ''8PI.6^%K6:t" %q&!IF,Kj.NKU+eg_rR0moD-0lJ?%G%'Yf'bR?/g3H!-s.foH74bNn!u.Y,BU'nB&RMJ^'0rhl>\89cBuo%\pA1T %&e>lm!sRiJ!Ps.IA&ESr-W<8HEaI_QX;RWK`ci"sH39YhD5!=\`URWFshCi%bB;^i+_un\_Oo^&@Hrm>#Vpr3G@@r>4U_ %hr-Mc^\QFGc_'*Bq>^rqq"FUBhoSCHPf(PRH+o?b`]J,-""$OD0r!"^HrnbpN0/J5?j/^M1[,9a= %c$$_pqWf6[s8(d=f3%i]GQ/IYrP.;5:*I7QLj&&FD5Vo.Q\F/Z*:KYVC$rU8YccmN3UV-/qa]m2H><#*TI#4(pO.Q\^71fd_)`VD %k&6e;R.0q._)As4akt"&p+A_!VE*%#.a[5UhXY(>U\VVV0e %QXf!)!q[L'3R;XN-\(SX%O9E_![eWEN$8Q"nfG-E%p5%DrKN0]dAGRn":V$`%?)8IQC]2YBjU00Z]ft_-e;J60+E*u0XDP' %Jg6f:W@b>(&LdUa:@/[l;h2SU1V%-536O$&KFbk:W;duM5j'?`#nDE-6Ga>nq-`YW8t$^[CDnBfFa34G?=]jaYD/"V?f7` %!BYP/P^=*XmL"%?\BnO[$tKr'+T+T.-`;=(5E-VN/ETc`02f@X2sPq6]+@=5;NHD_GB:R0,6BCsWgl`!Fj(us$a0b.i"]q5@$>q>/8[g?b+&/L %"jSeL%PXumP4(,.@eVJUn711I>"a3IgKBIC+8am#m5CB^!*B?(7gM7^RCil#pNB$R/#7OG+m9er[sS6X(6Ak'JiHtHg+*F4G*j,( %=G%0t8!>)PODGl`b9huKTud;C1/5Kd(GLt-#`I%5U5oa+*TcGeQsmf^[]0dJ]!'SlpF/?d'm6S-P+EnKW.YX7j%Z2/LW>U?0f`XX %=32]gg&iso]9B5Dom0(>WtZ,)HCbC!3Ycn4B8OE2n17Ht,'4CQidMl%\=hR.+/DNB+G0QC'2Ff[YWiW_oOXR-UNWtr=d9q %G(hAXa*'#`m27un@k$87)"`O#%qXDG@3=OFeRr9^5l<,@=Z;oaPc&.^*Ftf`9?04a(>anCj83HH %;9I8E1GdjIT*)0>i2FfDnae<(OdcH*"p0nlFq0n1$B.uq3R!lpiMA;NrS7#8$56IS>hU\g3=J.5lj$!d@Dm_ZoM)P)PsO$nDTB`Z %`"QJCJCkm9;pp8HlBl=?$0SEB#]$S]l1fJiM:U('C)`)9r#!Ws"K%Po=aT"2@D]ShoInM#nSZ-&N%l>UpPcuRll5*l5X7D!A]OiO %>4"en%?d>N>#KnX%MF:,Q##!t*D9A!nn`/2RBaK*kLeLZXq(,+q6^^4A(Nb\jjuOJb-%(pf5^,J8j/>;#EZCQ9;FojLr"Gs-OIl" %#FZ`EisTh'6"L-0l@eM7JgqnM3!YL-/,@^ZbnpLGFpX7U_R\mB"KX*41.[`EP.BbB*>UaRNtMVP=0b(&ZfOr6(ulrM@5']?j>EPb %LbfNDEVGk3(GMITF9uPJe4>9"'5VUm=H8.S0Dkerah*4_i="p+i<..A^b&^L_Z8VT*`**?*8kaWGS1)*55L(Y6g#iR'p4=oJ1M=2 %TVLB68%a]^"U..ar90Jn1pSq&%8lY'"?8 %!DBO(r@G,a1gsL>rKcr;/8YCWSFFn!mubqDk)d;j*U0R^0b3?d+SuWs>6.:t,J@fA&+GM1DCop^+L:%L#'E&7.np %PMlS%KX!R,0Z+a]\"'a:-2+9$_d#A-[3n*Yb"k127r9=tX-DD7N.l<6O$`;N[lT+JHdu&Bm?LRsmF>!"o'sfhAtWKobm,R*]*eqN %!3LmU$C*),T4VM;*RtB$Ntdle"4eML$r!Wa8/uN)Fs-ZA&KYYP:k&Au'E8CQqO]?5+s'FKkecNlf@RK5YYU39Q>j^2E8E=;a:e":N]FQ#[,*-euP"s=/BHC#7Xd*k&dB91M+4gSsLB_?uiOp9]TlPbikh&0)$9pLQg++$B %Ss&X9flMfR'67CZnN9\s+np6R5Shjh"?b@3NG/B9`10J95sKRh]#',hCD0&#od(V?W;Y'mg.uQo0pWnMM$M(-&9[BU&LpU[!hQAS %T(8*n!5;,T3:o<6E@<,7R0%cUlcCWm01\$B(mk@S8.$=_.aUqdTrM?`5PN[:_LsGh7YL!kM`S;>IF/t]17G[O]HA"FCF:2)b'@<`+_NsYK'oN0:beo6gb<^iW5SNWsM;t]a4u*l@A2,5=_$5HP6t'+d)8n-6S[PU4@k&8:f:o"AbfJ:b=s'Gq]54*OYot*9q#@ %c2M2bs(=RMJ++SFd"&1j+.G]qYP'%8Kf=3Wd$/Pd)]3#0+INB],EQt5=HA=7?nrf$gh %$3]d":qs!L(5K4%S%P2#'JPo(=tMJr[!!-+D]9*M*\kA'AcP//2GKs\9`]kIW7B=&f6.p>qb[efLsE8Yd/\j*HU8@`[LWmknl2'' %"9f&n+KEb+$q-BVb!/jls.ce/m8D7nZqERRW4",5*SRKbJp""-]&t&J?r4k:p'#"6C0p-"L0>B--H65N&SbS7H%m4I %P\8Ll*RCZHB8kZNWY(DNad"^qUM>Nkj9RMH%%Q3H@cC0BbgKj#7V=/][r=bU#pH;:0""^r*[=C==dAqcgRW*)F^KUN=6:"7K0 %Q`)TH'$CHldB(^$L^FgC)o#Je2Hr?8$4@9BY(XG7)(eGFdtbp;X8"'[>i.MISA3WcP7.k9L1Q&aq[k^h_PF9 %e14(nCaW+H>Zo@8$3nUbN6BQ_r/,+P/2uUt9ik`BZrM0/hb2@KTmWD,cVdG/bW&0Sp?RA09,a;[4$jS$d4mTne7PKo>bbTsNg;4c04oW9jcRJV1_?TD! %KE$5!m=8W_l"]"f&lE(eB[`aPX^l#*VM_9*) %#FNDf@RDf(foZm6bZHfs`6SnB7WI!OoOA,J._d$ORW1OoD&l*BFoO9.^XheM9'cJm%'s.70[.<*p10k?k',s[9tC.jTABJ3s+J,m %3rtlWgjBB=$&\`3E"X(NpM/3K$i9^mdlCg]SFQN1k'quq)Bg6!\I<7s9.F[,_Pq@$i2!m?g>IPMg+^!sHg87ZfD+VO+X$'?JV!#CKA_j1mijAfrfTH_?(&7d%g#' %&/rH]"A"+q]!O^).Fn^/T+Wd]=eH@_QF5Cch2E+K"JSMGE?@7*o_FnVMk87n_dHlX_)'HkS/$iZ&qK!.TMlt;&s+2pF1MRto6QN? %"HbgApJBl",4bn"&)]3s9_>%(!'7;Pg*OQ-1V28A@_i3^F/Ukb2I(rFbg;atAQ5'mN`UlZp@g=ZADKa:JKp&KShc(r3V@th;;lV]0m@:T[B%((^AllYfq$Q,,=PD %^/mB@02=nQ&/SsH9L;1RoPhh!&HYf]7Bs^QoH3oo0m@%%1%5U]u@ZHPF<,=5N%],bPA2#\oVDP=5M&PNDJ-.loBA+CmLeKWIpHWe+42%odE@+9E9V07)e(s3k-c<05H8#8F;p3u$+LKLQpA$a1>,ScST3 %YCV1I3mg02([is5s+K*Ze"3:2:oH#+=R9G!HC/@FlfJ#iJGU,5^up&KF^E6=M28p59bTV@WugEn$ue7%B>Ap'CZ(Iq5!M+*5?Ds8 %O2>G>%N4cf4oofn$.bCUS1Q+eC"FL1T%_5XW'.uBEe9eB"9n0RAAC_4e"^AsoZ7i8B#YAqL['H3H5A[g_3oX&*Ve.jNi6TNZ6ZQ7 %1Z6j*M=uY'V*r`T#eUXAPMMOlR_/nmAB)Co"@b%"@!`(,`,$tdIC#Q(2E=4*43tiM;6WM%IJ)\M/G#"LVHIYh@-+m-Hl9-7iM2L( %ps9X$(&>,;pV_2G$Cdi&1-=u.dt,;'`sW#?B=0?"F?$^cc`/*qLFhI[oc0WOJ^7f$/>6RQ[HKH$FYcf1*ak`p;FVs?p?jKV\76=NTL58_^^W^R2 %rW/BBR1d1`0J"oqX*cQNA'G)@7@jEX%oM&^$tGqZ'h6s6S:F+ab2b0`3YJL"_]&C9n%!33<3JJf1K$k.hk#/oZ^ %ZN,&;WbF^?1Mm+G;O>07+\)iLo@_=QJs.Nh0C\4`7a&,tC9T-ZDb1,[`-=(!u"`*Vogf?2q %Gf@ZLlbcqN#.+oGkeL:\0r);#lO]e*+_Su2?LBC*+;&RQPKl-#G6,"L%==3!ec5pm;-hKgE:!)70\k=i$rL^D7J--ANZHsobQgH; %_Sl86#*Mn?Q)fcM^skg03gn+I9Ib7eGeh7HL7L7tY+'9G^uHp0JdE)V@*l$FrM0ndHDAT2.^]!2.P1kAq0LVKXhYQ]h7Ie: %!'7[%EHo=AP,h9_=RB&tb&f).Mk:N[&PA;&/;Y^bd7GO=$mZe*$oOj75V/q5'Tj&O^;+u4&QF^!dQ %?.ZmY&janoZHO'7BK$,WkgQ+\:\5t\0`WbA^Bj4r1$(kW?(\WX,egUt2-=jS5c=J_n&`3=2lTH=!9#c_/o3Na.`,eK!C><8L6RGM %2+uji2d;o8P6t72IHI,RP.F7)i.,;YK2[J7Eioa)/Fiefca17kK/Q_$3IC,nq$O?t_%jGL6Au`&^*A=nd7KF866l+2,dS(9f2S"R %@2ep-2NV10d73b#GpQjUjCBtFj(ROcVl %h;4PT)Ca+.)2.=eUr",@YH/0mQ,N/!Kkb7g6fi&r'RD'5c5&b)PdCa^Prju?APJMmR4G]$1'cKkUfRDVeAG3_[&;D+$j:=4Q*35+ %0*!uXZ0N5/3Q;qfOV`sc[Bm.lX+DRMP^Ash3U--p[G0WH=0o(=[&o %ChISt)46pHGsGuDc,RlF`R:E16U_+?R35E*D9aV)fj#I=?YH$!OY$Q8i,$QO"<17'N,DNgeLY2I!FVgu%91dg/83IL0i((cD,udS %jEPMA<`Gq]`EWh_oIA/23eUV[VO">&g]3e=GRa_MSEq1;ejW/YoLpSCkafH1f6nmh0AJ;SF[TX&G_M%)BN>U8e&^@1)b:Skb*^6a %)!f=!c;nWjJQ?t][OT&T`'MO.>`8Xq+ODKM($8&;5aJe_?HnDhEYK6!6lsTo'rmr[9UGfc#si3)KbH<$A_hSfo`Fcs6]q_"fP8eS %Jsk,'"2Q9t5Y\=?GJorq/IZG>&&koVR9>4O4;[U:@gj)j-6s!7k\$eYV__.1L7+0Q^Ci6"U82!o>F:$a6AglCJcX:$UW`gVPags# %d7NLI@1>tRY(k6$-j%Xn>QV.S.Kg;80JJe:]dFm\!BT&VF/,5$UTrNum#b#rJ;E1g*DKOsc?P/qhV5,26Vm[55h+0d&T4OuMJQ9L %_PgtFMkW1ec6_PIf96H@=a:WO\(X)j8rtKNoTb"kD[t9?Yg?IQRb`'$(c]WtED7'7-l^9N+#,Hq2F>#f!lk23oGEsWXUTq5i.e8G %_D%@V'!@W+M'@j=/q`PiF@N!umF",?Y*Z]8)ATYK`IP`aeBuRP2,MB:LZ`k,\6kCBgkCKQlmr0&h/S$\3cCm.:p!mV'J\HG-hmd\j]*Ne7.<1b*Ra"f;F %D&`*o>G&CDB^P1S[R$6kIFEgC"emihl5RV[&/u18+"Irt!mSVKSJWmCd\GR$EBWL]Z*a(Ho&47#iS3,DYUeq=c3UB';0X2r` %OFa-[1j5ObUU))P'1EW9osij78d(JAgbNXIF-U0s*#8o/3N9C7.[qn%`if9Gbic4\UsoNgVq)ofI%"pF'>YaBMY+!+^fI@9V%#G< %,LC141#7:q@%J'FW?K.NF9kCBMlJj:oq3-5;I'.]m;Q%I-78OJ+g5$)Msi'nLX.3EnmY %"?)NCecQ1c!Dlcr-m8E!';,l$[E4ka<*cN^'A_F^W+X#bkACEW(ppH5JhTKVGe":)LqsG/hl"n;;0?hd6%FJc3ZnK-)mE7D?mmpp %.gIK1>>C#te]T,'U0)!m3:3dQjKN[+PX44iV^#9Vfm84-1p.-Jg.hng]a%k`&D=f@bMYpCO]hGsl9p\FJA.fj*Y:D@2le %JC%,"7U>?e-uaME.:%G1A"[Q@*NOLr!R5j^?p;%EYUKZH&n`(A7@#AOEgKlIaJkkW.5J-)8*hoA6c2P[Psg1CQ6/;07bs!-A$:P@ %g8l4G/;4EbXHV',>_G@B;Rh'b(XRSRP*ZLEj5\D4$HQBgm %63J)"`,S[#!BT&of!-UVPcILHfY5E9^kp7cfe/kC:fqBY?sof_!n@X4A:.Db;sonQM/JJk-<5e^O[=S>eIFueD$:4aB[Kd^)#7_U %0^0H5Ye^]ucDi4dDD$TC%A'_F=4M;p0*A+qI[NVA7ms6;,%Ps4$1RJY#3;:qAGeYKer_-*fgiNtS98kgo/C+HHaNQYu;'YhTR$;\Xb %9L;@ARZ<=!h8GIbQlGOb%^0oq=N:;PjX5?%X8TY<%S1ZRUh$;=Q."3i6YEF0(=4?oQf( %'p0,M4mA=ID^5b>/%WBZoh=F!>A6K9kARGY(NE$YF&E.1q+/WpZLS9QXcDH%+9P38'>bu,Acdmdh9BE3p,_D'nH*J.;#i^X]M$fRZI#:+-2\YnKANrV5UI]R;M`p;L,8U %XZKQX'f@MQ_2DQ`/\Q*$03,!='JiAS`i4hY"F@77D+p'Q0\=4EOT0nK-0Xc[;jApT/I5@0Ysfl^P#+%@.LM'0M!A-D>LQZ6E9;/Q %%n0gdApqGJT3T,4(uM)V>(piQEPe$m>7G_L/UoLA97F>kt'L,'VdZ''>@Wn*][>TqGt`J0K>UF=cnglX],'A\R8fnH(G#?78IquPFb]njd$C0L7i=[1`>UkjY_US[TJaAXU2J\Z*mk7;SGt,DM$U'BHXY&liLNp&R+9; %Cq"FHX/^IKqkT]/9\rEJ:7=u=9snKYlT4)VT[:Yg^_]VZ(jK<)RjNPro,#=4X)n.r;SmG_;Sq0TBC-3\eoWUIBl)NTS(#>UiV7&3OoL=P5WIQF]e<(73H9=jed;\C>iO %S_9.uo#sQurLKuQj-A2u/p8_U@ESW^Su;OHm%K\IPGmgOlcuLZGG5egB_1M_8(nRi:/qfN3GfmC'rS-2m)WmKlSA&& %WTo/J'hb*R6eYQFWa9O-RAMHX/;>pAierJ79L42D%"f$L4gnkV\n%V#Pa=hpjg97@/O %J5c*Fm$%*RWG-XaYMBOcnXpY'Wggjl9n7AglBt(j:9U[$I0+EkF/M^&Pss#iHh8kj!ao'Z@\mK6J>Xm1H)pO20q2EL:>YcCW$c4: %c1Um?lglD:WS0HPMc*`ClDr^5ed;P\qi>7QZ2fM40m5WeR$--;bG/[O10RSu^Ci5S:^EJG%9tA!-4Q:u+Z:-^BsO$rO"fG@C'/bPd#9,j(qb(NBqnRZcAdaUjN %\A0@>7;Y:)3_oWP.0e-J5H6dfGC-0tVI36"X/EqZPtP-'$b'bVRWVM,eXdr:2U92pJ0&i'FUk`9.KQ;tlCi?.[WtI)94p?nU=$i_ %b-lgLaT6TJg180JnCfc:jb.JK`&p?#'C:0fu]VS7!?ParD&9@.l7J?=hZ$l;7_8b,$D%6:[]#@!2FB#+>pP %W;dDGe:jTk6A9'4_1'i*C49XOXb$r0,Ud\*TE]AK@^Y'*-McYP]AQu4#Te\ %+9m!MqjD_d[iO(7)GnYnA#hJ_YV8e>C+>.b^%Yuk"8Peor\:eahi=+%C/Gnkn,WcF1HB`lVK)qeqZHCN*0P^D/!_22jW*^nOa %fqcrp[^!CH&C@GFT1lrr]NDF[YOq=m\rBa'<2s([JlAiY"B3lT5rjedDC5[36,^RtaYnd_Sl\'Dd&Qjc((MF2Y7V&V6W.FAuDaPiMD9CVc%BZWk$$Io;li`)R_qs %X!c8Y[FOENX9NDB-63oe)78)Z3&M#%`h<7.:9R)S19;ACq`>UZI5'6dqY2Bl:jB@OB^?0gV)(qBcJh%5%AXp.,e_`1f&h8?6fBA( %G$F%=I&=iLn5)R;8duC!23+d-244kjGY!^U$Ec#'&cm[$*3'NtbG(QM/+A=8ij7c2/"4M %J/L4KIAb"((T4,Ze\oFmK'6j,-6_hhD*TQC`;-XWBrnQVe5c$2Qo*WcJAj_W7\CGM6rlTCX"NJ/rD3pQ35leq8)U?(mU[t^b\E">9U)Eth=UbXT_)g\=+Nro %SAp=]\:i3C9ip?.e!,["Tb[`="f5"OSbn75=H1:u*ii8L`X$2%f0[9Kqj+lSKh.&+D;rbjPpSPqbH2aDkUhL&l4];uW,[HmCX8T*IQYDl8*7L['MYrqoF1c$P]0hUXDBLbjqbTSI\f-[heSUN8et&_I2#t)<'eY0. %"m3\SY=]:$%5B;I:bs)k6.f3O$YQgGP*@I@F&5>uVuspWFWkPM*,TW5qTk`(^I@3-NTMBISn2)oH %+:q>48geE,!inf([VN579/Vc(;6OG,f\3.]WfBlRnn"qaJf,tVBFtb7Zg*IjQU4lX7a%NX#CsKYhmR,^U.Hodi5b,$S?&Wqm>:1e %F\u%L'38"lP??IjqB]?:fki,E!e3dbf>7^pm"+G7/>f,0V$j*S:b/`HW%%"A8I",n1lIP9BgEk8'l`&dQr_D+Gj`7AWN5V1G"M)rBso@:oC3>"4OqnhbYk\ae9"26c]5XcP@q&lWNK#H1^3(C=A:HW_:YF)d1R&+(O(K_!h %Amhr*@JIOb^#5=A:8Q](8N-!91e8(R.lBO&2_0LE8TMtR`l6HBU5bd17,f=kltSB`+F)2;@VY)Gb:B*+^l!_kdM0(pSE@rF#4/,p %W/6TUDi.Wg&dP,+#6Sdb;M>g:-_56-LVDpGZY3_R't]^UOcPW64kXo&[Yiqa\r,SA`XN%[8rpM\HN5tDU=_bC,=c?a0=hI?@tYM;:P6O&ocdMC[>%4s4^]L`J>Gt"$Q7p1Aq.:/j8MtQAC+D1i;5]K2lu8CS$FCG&s'Ib+,`:7!bL: %pT.Ib((>B]b$hFWdid";.THb)sqWZ>6LFEqMe\iYoemm@$8Ci[-\AZWdM`Q:=`Fds]_/6^BrV\rSlU@M1"q?,EQ. %Dq&[SG%W>Q)d[$AYQl'rin6lD%HJ:J&>rd,PNM.gTqS`5^oQ]8JL\uSi.D0&.bTnKOe3(j@;E55^G"AqD&BSJV'+nD^+8nb:X#]*sCJr0pUKN4!9`5C8<4\%X9;7C:nSiG0m]0;F4/M#51f_qOi5GI4#rfZ99`<(k2(:YDB%LU$g %$(sZglpDV2NQk0TPSkp,Y6d8JI*=SOB\,g.%.neo3HQleh^Y7`I>-,9M3XRp?r'K(t&0qE%i4JjB):5d8N+%eod9e/!8sGt\kX9orVUn3Ibu"\]am(TFeP&PV07b+2uRT7jRQ&a.OOc.gpG3BYO7i'MVM(YCV8j[Gqf@@g/K*E*FDh9?GWt: %@qmBgc9K1&K/qWdSGF6#8M0Y6mCqQrP!PuA/NLCLS\]AikFJB:AEKhn6PRB/V&5(p;P6(S,Ii&t8dlKiFOY]7IVu&(f[ZR->$CGh %d@P&k6M5pu4[=/Qoob.GJ>#$ieQ=pg9W=FGNL79=G]=Gj[ebI?(g[oT%_X[U0dpG1*LeGL0lTE1VU`0mWu!!`9_H?]/=H0=)`cCm %ZYrW9(PTio[9pVZMPQV,R%)V34Ok*0S/i:l68L[M`9*2`L(;]C<+hJp*_O.Y!Hor\:ocJ-.ckF=++(t?a0C8s@3uoe?GNhq:l;@= %bRn)Y/!,MDeTrIgH4Dg;QXq'"]n"Wegu::J%mfkSe!(04W\+*E=DTmp@,MgTh2?o;i:DaAZ7=GQs]9.ce$kQDOG&285`Wj>mkf %dS3,^aYc'e'YMs!J)*NfcIU^/GaZEK^dDk\g;c#-3Yj1XK^n %/>kL@Z/:^*3V5>OAM>k&&U=NEqtj7*>(QSs)*d01k_"$.HUa=(6+fU>20*[Dd@h*,Pg44uABd!\h9: %0Ph=!@n2j;:;5qRK&,/i%[oITcmg))Fe*Xi*cb>u2L()AEeSJ3cc %9-iQ6[f=fYDO6UB6'@2MmEH'*I"?O#7[RqL$>4#YKu7:1R/&Q"OnbB:`D@0NMb=4C;6[5UhN9=?)/7ih>jF[FG(.0pXcSdg?dli$ %A4%^6&qQQ8Jq=iFP?U&'mqW$bi^huG6boTPb\nOj!1Pg-$3F)^o!RiIQtDcUC:$8gZ'-'irT2KZ5WWt-"'1Vr?j#]S:>sSU>.T]b %JKX*"!FhE$2rM7rFD=?dS5)6^]e+qddA,29G+t%U^CX[i;cHd2+!=fd?TjlIYb9`Kgaim;G0s^%Xa[S8p4ts?%7FE$ehs7&[+kY8 %Jgski%MGg8A\F:RNf'aRJ-9PI96CI*<%W#.Itkj`8M+Rq^BO`O\[_`=CrdNVHS#?;4NSTU,lKMQYr!:c?_\'@R01*`CfZ>8(m@nJ %W3&[R('<51b\CS'+o#29-k_Yr2n,a[/?5+@+NeNiq#B#ofB#&R.o#XBn.,>V,OC6k>^j8KSDFD %rU_JPFihe[Q%cn;J7Oer1Z9[g=B.HO\Lue9ep1+)S?-4u5r(RMb=8E=.a`4@O?gGS!=<,]7PG"na5/-"(ZX'V)E!9lT]G^s5uY`F %(?/dY#m^F//(^'F.MQQIQ3s;.?-:Xg>.fM@`\)N'f,31PllLh?b*:!Oa++MQe"A*N?-9j$cOh5%+/E7r/P.)C?QqmE[@,-q2Y(@B %E6CT<7q*7Kd3c^tLZWJD;0^h*Zq32o=_EJE]XuJB6+C>XF %>>Q5"%(^FG1dP;QN?2>8-#*g8Eq4%_W$0ADa?nB.mS(0UH7^n%b\iS!L1r'M(J`Q1_j?'k#gr_$O0erIEN"4LliHYX7C#"LC?mD/ %\MQQZ;fj&iMTD"Z$+aerOej\q*-S.ZjS[@mY %,]"'8$r71k"+,lKu7'iInaY-r?bZ5*^c.`\DZ8X;dZ`QAc]^&/R]%<]m0r4`Oup_M%6g6eON'\o?%niQDJ+4 %A?Za>./"&Q%+5d!2e9K/YAb)rmfZjcjH?>OKN:d1b,aE.\XO09[N6j"VE %Q$'!D72>@uoFMW %>c?m1e'&c+(8mC3;r`*b6%jCeWULm4^luK6Md+iOK?t_Wj1Nk>>#>Ea3QFH=R7VjX+XK9)FS\8$^`84CgHes\K]=GEOoZj#H=N#f %.#C[FX!&n4:X>_pq)==!^d-S%?Xn[i&%^`i.Vbk69*%l2!%<]!Vi?L'><4jphq5?Fn,uZ2ESK)q+ %BZ3-Em>simnE*"fc%$OBQ.H$3R+G7c"m*WBS:;B2TW*q4K9`fR"N-KU_dQC6\7=G!q;&VJMR8PKpQhB[j`l_fT`IL1HTYX8mi)2F %/4TO:(Y77QE=_IUe`%UVK\'Tun(m]$5'"d#a@KI]/&Ys2Tt]thQp5B*"VXON^ChlJ)NH:@&M&E" %3J$*'!G(WSdC*-WI*4h\7]K:7bk&A#I9(AI;#.USU$'73WFcaBc8)UJ0RYit-P7-Oe3mt#(Q8>Ui+f4g4[kb/WoA.Z(&)9[7NieI %,%Okh'p]s-_Y12`<&>r#h0RX3nLBbBHQqfnomn;f3&(!@W6UF+37:9a%HHc><-,[HXMf%4^/:eT1E'J:qBXigPq>IU3CftpJ&ZBd/$a03U@-TUD!:>8u]c^PtZ445I:M9/u:DuTb_P=TRO?!7tE!13X;_ecDjmZH_W$aIe:1=Y3stkLB!O_G`n"V:)0%4o9N9841+H_o#_#U'`VACsgZc&>7c%qQ2(FTt$M=KR %=uUfZR6_i1DU>VB'j$0ih:]&`$EIeA,:CH\*a)'$oTeoN'I?VaVU(8`[A*+;6H[.s+0bSB1:Y)jMj==8r^8%@rC!UA'pR8@=ikJK %G9n'\Nf\8nW`_56Lo5]f!+nAE@jObicn&LqXq"W<9b@WA@?:KD..i4gEZue'iV!M.K&rms.qu+"N#Mo]6'k8"Xi+ZLmXELoT;3?Z %^a[dRW?V.)TgS!4j!or*P):8mL6;\$KUSD>VL^<4QDn_t#'9a=AelXD=@/l"PDuV>/L.A#?9O4)SEDtJ]#.KoOGc=b[USi&c'ZBnf>HDXUag %`g\=7k_]kJf53At79u@B@8VaEB8>K^n%%`3lXE.;h"9KLM#8,^8ot'e]%!aG7uW_,0cOlE[J&OCA#C-5D:K"\U/3 %9V`/(XG$ENZ`eqF&Nr]Cf_W/j7A'b.B\5/rrUOb;CktGYfd)2EZ.'EW %@Y,6V$IP,(]DR++Pf]1E1*0[f:+B"rk&s'1cf^K@q#LT(b,_bb>p[IuHIa=hY]ZIg:-`iqjJ"6l=;#.Rao!G'&8eM;7%fcP+,gR& %"(9Xrm+/M"P6+:R2W7&kN2hi%3#/SB=/aNRW%th)'`E`5:YGug,=.iYmNarjMm?7&qFY[uLm:7=4;2;=oo-p&GZS7Dg&he3Y\K=urrM`BrDNZ12S6kV4o\WTLZbngZFpmb2.eOn5gKTd-)MF1h> %`h)p*Q:3/n&]4PVc%-n`V)UOB*0\mp8_>E$%19P!EhVRs7/*Oi5fC9)kPSHK3HB3^B/EQ3!J[@p:dml(bK"N*MoC %2-]'OZ#\06Ti[h\0JFIuEWXUrO:GRp^aQ@A?*^V(6:nqW"+sBd($[.:4P]V9Z(T2SKRL,pLkZ+#?SJ9E'U\dhmEnl]*lR?AX+$@e %;2%'XU$oG1UfS0NN(GBQ>mlLB6;O(J>SMsh!VtOI?9BMI+m%XJ'>'&,W$]AI]5PW%N1Ytg:mC?Gc9(0/pPqJW6>'DGEa7[6>=]KK %oE-SORat&;2=0J7>(*aFX9c3AMOpo@/WjrKQmj"R_F?P&6!g@D4isjkl5B$q#^$Fds(YmIb@4o&NTmcICt+LKjV)&@MZ-\8WD(lB %B_YVdocK8XB_7T/DtGq9[[GY#o.1_Ufqj:_[*A:]tW<8u[O&A1X %\/JM6Y[G,3l-S:P^b3!"_,off&Ot5HWJ#4QotY,VoI/rrnrHbFpQ<".AjTR&J/PVtRsc(e5["JF'R;ce<^Y&on'Z2.6?Yet:k).G %1/=GV.*&[u*T)Q#<5V^UU#WIZ+>/[BdC$2&9qR.;Y)[rjl8DH!%MRtJKMl5j>YhP('sk-.dlr_6MG`(0S8>GP0A":`DtSZO76paP %8MWnOTgJ^.,Y2f9>D1O./"s/rHkjQU:NKYn[O:(.r!k4]4qsl/!%SqMUI'B7=9teM8kh#G %]hu\JF#k\5/&.pL@&egY@'ih/F#ofjF%KFc3bR"qLf!\h-LR,FcRMu9V\/>t8:sm?dipXllY!1@TYfg@JF0]D,N=0Wg/,@*@6,*= %T48:hmmfol=7/`ol3DG*:7el,jp&=Z22&pt>`$G%[CtK5D?O7VdqaGd)aV;OG[gVf+n2MXKN^?)bU[Zo;<,\GN/3W4]MIAhh<[Ej-)dK3N6-RjZ<@gK*<#C&Z!6>+=W#q,,+Oau"*c,d!N$M%QP:/#-J*P]T^D&XQCcb'rh@<4f-]88C:?% %AVhT>"fPO2G,!.OMBjU!X%p3n.;)#5$=Rcd=h-T'5g\R`Pu2DUR>bspmFOiN!>8g/8KHH`H$;(WUBBd(/!g[=h-Gsq@:a?,i`I7e %KW$BU:/i=7(@(e1d3sBf[cGKY6DDM]<=at.`+p\l!LD?H[r14$9b.uSY^T[T73]&A?I-Ta@'gZI,O2]C"o_Hdi5G)`SqH<27HMJ) %BK5S*X&)$R.&tCql=Ge3XYM:c'XqrE8%i(L>LG;C$Mu"=-,J/FbB/:=7Tk[G3iSF^mJt)*=3@(B[RFJ/;Dcsc!8hN?!Mpkq!D=*&$tkm)mmru/foX_);:6El2eFF4KL?e]Hnlm@U[P+* %`1.AuYu$rO.b"ubAN"s;>jJf%\.a\XW#OQ:P)'CU4fH5_\.Y"o`[niD"@Q@HYaEkhZSJ\$,V5Jll"JqB"'<"PWis!bF2=`jSkG95 %%sShE0n1X`D%AucUru3a=#"C79"nQVOUNNITDjuZM_37pK^#g`U-TWkIPm2aHkd>G_\M_pb"?-CG'(oC*ho1g,1G-Q-breZG04]& %/HOi`k1AoV1e*b.cUt"`8[66O@4^Y1Q+4sYNFKj2>0XF)T2G=O+di=nNf%C0'fNo]i2O?S3e$i*'\Cp+"Zi7A5jOY&;CI&1Sq?ncoMnWIB"=H-9^$-GlH-^e-`#Fj3_q@3%E<[Y:Cp`)ACs5?3N>b0:28-O-SI5G5(eP@k+lq]0TR,,jEGCho+bX^#-N %WUNgh]f5U>[3Z4/G>.2!k++ccYQp+N.Q&5c#Y:55M3,fuo_hXgQc9g-f.bVVY8UeDil\S('B*[[; %.2Rq@/PO$W?YqI6Qtm^1W=9/6 %9ds'T$Im1p;69R]fGC_b,t=bjf0T%fIm]T<>R$=k'<=s]Z*)dM=\:%+j9&[=VSaP[&!aT$16V*WHgoi!(T[RprfjYP>j'"E]bX:"@-r-3QOKX'OPcc-OqLQ;/ %C8((7<60@Wg$82O$G!r?8/"qiPTh`6\m\npB7pqZ*J@ZX>=ir/"!JN?Q-mNnS-D8ffi/#`#hl2]-Mnih2>5u]rQk`JQ0.%]!3s#5g[o1DYl\0R3(U$bfVD2-8$%t;d#TTE:WV.Qm***:'Fj(:+!i? %/>j,A@/'1lK-/F+RnC!eC5`_BKeom3^b3m3TM#r,.U4nGZ'OJga!Dit>:O1iogk0jZ"4Mh7bjU#jf\GK1oT.2;`fFUiZP5=eJJQ_ %QWqfCY.dBnNYh]efhkjjoqO2r1W]7pOO[[KX56\2]?8PG)j6cAd1*EJN*Pp[KN8,ab%F_jj[9%13-LuKLfuA@3GP*U3RCu)K'MCO %l?T704W`df->>u,?rWO*:^arf3@ap:FYQsr8_[ro<@o2anZIK?<%.P,=g*1_cJKLn*Kdbo[5pp,JL+0-ARuS_@>H_ukY[n.[7JU\ %6`C][`\>gd=_Wg_9qI>>T.S$'4k#%E6N+\ji_hp$$;2^3/K@K]M-)9Y?so@>7FUt=Kqf$&,'I-fetZ2BTp@3m+T7bk1AZ$a:7d_Y %*pu)&mCh)<]jqX/$$*+KjjD/EX[ej((`>.EDBlIeuI%gL:uOJ5r'e(:/XB2?Y^ %6*tohXL^37eiL9o'L:7\<+98qZ;bpC %o!J]Sb$#0Cd/R(HP^0YjNFg#8XgJcs-JHtq7P,d[WQ$Jg/Arh6\0U00T9[(*.MlM;N2[b['M!.7pl._*r8L@%'.+C*KfsAB>[H6FB<+R9)@NcSl&/Q(5F<[gG>naK[^lg#bf(#o=Kp*hp<4%/`7o,aW9.c/f,3ZgW,7J'#oU,2T %0f&B)i"Q&E8MeQ\a_!&3M>;u1G4Ou:+"Unu$OKm^g($SQ82`!G:U1jpZ06K\%V%rf^>KaV;,RF\b`q*\86+qfV2E405b/0N9<]%5 %:'*MK@#-qs0:]INKI+tm#JfD'NV*$$41>t@%"aO8(#TVQU@:Sq_P`Q>UO99
    :S&:Bb:4[9&iqB4dLT;de^VTrA0ZhY,+Nm(7^;BSdD:T#Otdia;\RPZahXA?4$JLA %]Li/gU_("g>iJ*[0pRdpgm,iW-$`ETeloTF<2lLt)Fat^S1jC?B7):1^Qd`;-I;PF8a9D\h6i>PSE0jJ\Ei>(C2mutj\cjTWr&q@ %d+iPMJJATRd%LU$ptHRQE=.W6!`;uWZl.!6`irEFhn8:j,#CE1E1RZ[HrMr@.',`$Q.U.Ek4Eg(`Q_)8F5#1pRi#i_50TU`[(Hb# %3u(eL*gK\XZLO,>",UN5^#Eu'A\DAB-H;DX>W[p\@E"NdMOd_UU'iW=N!E>b+u>4>_P0eGWRq""d3>NDF;.=kM1/hHCMBA4;$Uf% %+kIL=3Qq&;+^h7?//9#frY)H3()CIX5Tc2&L"cZC0^:9MRTcOSrIFAG9V3X)72?*&.]u_n=.t(.-o\$LArT,nO7/P7-3q<&eh<@rX.S\(GpDDuR,N.E\3\TMoBh4:H]/!o@D-EcoGjr#o^fec?i2pE>5Km]J(mS>W3BIfiK5L@V< %g<*B@2uBkC"OkSE>0)t4aK'&f?o>9uR[II+*3b-EZ"[s@-9a>.ckc3&(380`=`Cu.k"9f&1CnCIB5\s.n((1J`N6m*_m#Pe\<+2P %aDl$.6S;tG2R=qRq3VQ#RgXM5c&C!ifqXa)dq2?i1Olg#lai;q].8NBAD9$6EqdZ6/c!-*bi"1+ib$2M.ku=4^T?l^nsm0EU>Hu. %MlZ4/7\99>:A.$RFu.ToB3'8B6/KgCDl'9h1YA2-m`TnGZP<7JY5L[nIPZboRI.c)%+&MsB^uW!jhO8h29AFLp4EF4d\t/21%Apacq"'qZHVIPT %-A,ZhmB8qdfHq/G;%5ED$$YqV=?#=9&1B\DNgo@M:&fSrnHK??JlN(i#f[uWHa!E %\B07`iC[G7V$f'0)*pPXnop";/FS5_BqH_@a2/dYr@=*Qb]><:YjS3'B")i482d+-:(s/96j\;?<-7=,' %5CJ)sI0V9LS%sG2.t!OH^<&7I`(T"KYeQaq*j3jgI=KD6Il/$DN;G2ErWOAC-KflR3l"'.JVC*+c2%Q)CDiAJ#L*S^HW3qB.kf+= %1pi0$[*(WilU*5RP1[Md`NEqkan8q0bEsON`!qY!q.,6u0*+/MO:a=kO_[D**%".S@2TF^0i8Y!ki>V6*BpZ3>up"ZF$L*.(CD^,C%>Mrh.a#h\2JD",Zj %#dcSUk2^XoSic&5gS2Hn:nR,!<,7Z#/^^rmU3%@-hjQBA$^>Z@qRIqM %h&`A8K`J;JQ+'#Zf;.?:SZ?[[eo*kUfH^j[+r8Z=1e@t^#RfP7Sup'CRl#p/P_j7'`?l1,S$]FlnCXCc>bI'm;+rmi.$o`?Rj==P %2U%`1R2,Lo8]SA,h:\V"C_D?f,S-FWNA`4WQfq(H<2WGge-,p(#2*aTQ?@bq[7U,(6k$\%/[m=7C$8`RFYe'M1#lc0-#u-^2_n#! %a\up9Zo#*rR[GqUXI=k@RtY+d9HRMep0fi$)=W`BJX;RTUVZ`BJr[ZrMSjTO?7^bcShgS=!\,f4LX %'/q`&G3-t#jOc>rnJ3nSRTY*AFMOH8K-eRBR>\R2Dm@T-Ch5sdA55%g/=ZI&Mn,>E4O;b<65QptX%^uS:?p.&eLK0N>J!Z8D)9qT %R?tOI_qWE0D.a(Aas*uDNgmT$47ei?PikMNF?>>jQ#>F!b?i9K?HDkYAqk58O_Y%;)<\?moXD/>lV."tcMKqWr'E#a1[BK56bf&6 %hp2,V`=Yr:#rJ%TG-Vf=)%Cc\,W%LrRd:DT9FWRSLF3&=:9KD1=/*f%EB@;l'eO,T?nANn1mp3:3&h]K3h"hF9brg+@n;ehUs294 %aB?sP2eb%@/?l!.)-5Hr/@Y5Z1c\lc1WM=TAet/TG&Z&,G]"FY3",(5$VWWV:7e$S4VcREP81%<+Ojp@>2U^\_-p=5*As7IG-WMj %(meFU9PkE?3SdVt(M]("Wl[3MA>\)&@T>-h27Tn,GdNp0>79e&4.*Z-XC"\NYQZYa-LY'#Tkl*G=iGbHk=Ah8;d86fCU1>7@!&I% %hjQZI$_25Fr,YT0\m;+T,Q1o#-Z=Q7YK=Q2AEqpkl8N8SCiKV2n-V'5#b,Xa$d=>5/;R$7`#[Wj'->.?@q1_YZ,m.%jG[@%QY^\> %[TG$r(bXQZQqcG]SK++450a@Rk5rh>P7_maGA*1QFM^W'A1q4r3c2*q2Yg9qEii)]=doi&9t&Y#1[G0uljga4:t+^;g>K2PoA)=8 %EL0dLG;ASem(=ngh^7B%P9%/-,MZ`JDR'p/nJEou*k1s-RnUu:=I1OmjsHGd%c6@T7s'AXH@^?fJYfs"B>'N+]!,^(fX0DWgJ+"% %2P9_-gts>PG`,DrG4+mhVnBiY^;,-QA4^_1W@r:q[qOK"FRCa?pBF'6P=p?Pn,/D2^VONsaF)lUa`$b706$A=H28J=rX8)mX\&W= %RKC+e%np^Q1ohP%.NgRK,rEdp//;Q+Q"k!^FBGLAYYZjE=]Jq)!_'G!7C0/9NZ&auH5Uj6NU=S&gGLsZofAP,4a'g+W@N_1C5Xq7 %O>La=9T,Cq=pLm,1M*8kb!ID?B%<2ZI?tt^@&gdmXTC9d[:g?@f!Hs_[&`.B.d'Jum-*$#Mt)an[^p:95$=6HREH?q!EE-PRe;@M %C(W>h(,[T^2/=?mX!T^i.lD)s2=!.P<-VTF#1]dpeZ:L5<0+%Z];f#qC5[bJHsdkOXO(`=WjM*ViE`^g/b-#]EOD'6nr21;c2m\- %BNna5`O2)p=tFbi`k"(;h+f$(MDMHXY.)Kj2eVMno)#i)j_!M0LTWpF[nU_;e9"o:51aP;c`)D_,XK';KVm6d9p27*$&pG*UF&^` %!i8eYIVFA3Bd]lY9`W_3)jR"5BRum(rB_iJmrL3A.9qoF/Uk2MH_Br:A!j,n#!qCH>`!'VhRY7q7f=4*5 %fV!e3&k9=O-(@;eD9C",m$8@uArABbM-G&@_V(aNgkXUiU&f*DL@-0#SIgoA.8(K@9q,+\%FW`1V]:Var,YT0\f%R)_iW;(3U*-j %KpRh,e&%q^1X32*.1#[Tg&;MUT6m=9FFQ=1?Sn7%Q"P\%&@:5Ycj:[!?VeX,b_5MA)j7u^;qnK.LjSjmHsJZ8.V:k8!f#lKaT'`/ %#-;8/=U3!Q2Hr:h6))Y3Di#M#"B?]0'$l*6m8k+B#eWVITlWHX/HNg3h1YI!RM8WDiUADFB=DWs92XWeiL)nJ%E:=rpo%PrVMf%o@KHf7(U*=1reL'`W`Li,?G3mqI><9RW^ke>BqJ_F^3kA.e))g^nD%=j %HZAWd]sF`a9tE(HiV-ug/tTbhpqLb<)LJr++-GHfWr?jX@bS^9Dm'+\rqc!KhG\)he[N-cs)HeWs06\NT&*`PI.QXoodZ$5nNC`=JHA%bBKlZM&`lH'VIDX$>KH^,jnn#CCAPp>3B@jG,Ver2TU:0_\Uk:`R]mK=Q1[pX[fiK=SJ.Ib`!!>M&h# %0_\Udmeu,2c)Xp4B.k<5^%iL0Ich[1:570jgkk\TO1&J=8*,8Ep8Y^CWkm39HiE*cmH#5Bs"$luBa=':/H"Ub+'r6crp2Si%<^_$ %(Uf#uG9kE,cLZJWX`a#uk;.PPq7[3fau]+:*B3mT5@9qq\N5*523d:ZqN$)>s7POF`Ts_Hn6"MGZgVoucK7sTX_K;t[g@$of%-+S %(%FNcG/^V%>5m^D4V;nL)IMS8s-GZ+Sj(qf&$8dQ0me6,4EK"tH,nA*rkI"5a&3>M"0_*+iOd-M@7YC$bT5goRM3 %pY#$$R[3c(h]#I?]J:o#]0#HP6aluLSs"G5l[Q[Tlf=/.Itq;-Fj8a[k3B,X7l\cDJ%tl'A_5?n0%b#WcH\)G %04)Va$`cG]@`rc,J5Pq>QDQ^TFMKo1j+U/`3aqO&jfQ %Gpi$98A2T[q5:RscnB1IM!eXr?#(h=1H5%eO4IlnhtK08f>2['lY'Sq1;AjJ!W1S3h+%GEB(f:^q.5$2gj>IZffXf?XLP'pLnes6/J&1F_g?\>"T\mhWD0[-4eiAsQ. %*WQ\V[YsAk=7!LnNF+UaAo3`O:H6So\fu=le>g9V4hn.F\K;f'?&J:U%Wd0<*8iLmA8^gR+K`g5HJe%%AV^%DY+p-abBotq3=BW`laT.pj^HOfG@E?b.q=r.YSh=KK\+eGHPC-s=%D,. %bjb8ek3DL5d-63g20m`D>KG9q:%j80.bg[E]N+pT%?_hiOrdI)%L`Dq%m%4Bl@7c\N_Xl)UZG^6VG %2>(p]XlM`OQU:77&%&6:[Kd9/E1S)qZd8A.>F.CVK(Eea"7j!oB5:##]LRp1>l]gF`V;[AI];N*]60+Y@G@kqgS@h$N4!MlFcF]0 %\S]%h-EWUNf/LA\iYY.G+FSa>Pr/_VqnQQ5Zm&@qJaKk]!;nij?,DKH27<7l\j@F42gT90!+a\T5/WMg4Alu %Beh6.^"&5cZ)Z47Yca#]=\!XooNF=cAf]S!oNp5!Z?NrK&)#M-aKAk:"h2eDd_0+PJ%bdAip*^KBCEQ=foZ3eZK1.Rh$(IBH>U]"#ntE!LMIY0.Va21KD`rQjTuS,N.lqfR%^[/Qat0(3?"5A,mb?0AJD5GMqe3_;NQ0lS_h#PS*[JO`*"1jgeMcorfHfm].DBQdH44dE$khNS"D@ZZXWOs %i-.6WSIU+H:YiD`nN2SoM>^3/KHg0>_=.#1'SqD!l/6bHpmjTB2\1A8VHUHP^XM%?ma^_D3M5*H4ZLhI#:J6BW4Wc?C2Fi(?bRcP %^"bDH2dTLnDYME>iju13AmH?uhMZ`mB?[sc1T`ZbqTI2fqq-B.=4Y8l0+R7;l^==@VTXHqQe8L34CbLWokW[9=Cn#jSd3-_jm0[Q %?1,;*50).19;Tp91UY\TVtT8u=I1(Ui6GG/h"MlF)(V2=]5hP3+a<*qFd\#q5M*;K%N"?lVXb^OVcJ">+*a^7[^6OW;]h'EC7Q0q %(Vr,>A+tEB.-Q5'C)JV73YIe*RWIc0Sa\)pJ1m!GiB?r?eo_>WK5][$5Q($9@[5T=4)LQ.l3>ObQP\!"\)tDPR)SZ@HhM#V2)!AD %XcDaE5M"PN?Ol5C7l,'aIbNR;`;4&hb1^?0T;CNBbthuuDuP/m3rZKekJ8u:Qt?TPCen13Wk*:+buUtu*DEffQ[VpT\VFn-ZAonu %Z\)t80[1*)g&;*Nn&snk-f"Oc2ldipC&E'!s)bM-K6-CB>?R<"p!Z+lH`nK[YcdEeDn,'Fm(XHDor80I/P2)`P+"2^^[!NIDTXo'F %Dt`%*l`-\2L-IM/$b(/[iV;Bng%js?X$>KHXt4@tI.;VJo&o8[4cF3Tm'Pf\Oe`W4hS[8\_8QRWt3Yh %^3F_tQb8%/mQH1QA#-*Ys.82Co9B>(B#11S);%u5BX"u,%Z^07,SbL9U&.tBm&uq0ASiCKJH?j9GIG4L>?_m4_:R0A2@f(]J&^7N>CY[EQf[AR58&rZRNW4(2p9PlX`'!*ce<0&7%BZa.lh2mR%,rHLP3c)A"![tB1o %@.50F^+\!oqf:^dX&BN=-Jr*&^3(a'5HMi5Y.bo-^4XCKYkS\Dhne;fG3NE)XfroA[eSG8:d/!/X1.j6'G2GE2Ypl<2W"n[[(8ht %T2P,DGd/mUkl]gFf9H[^Y?B1kmpm.>S-Tn^V;fk %s4:\n9G(08`h1)TPj"$\t2*+-,XqKO!NmZ"]GGl&KGoVV.YK4C$6BBUgFm6&3.SmQHkgr`$qkO%!Sm51\mB=LB]Y5V7h\AEl %doVid0tZj,Y&YKL6>a99r4&d&dsdkdcfOhhrBi2T?*<59qM1(uh<@[?A%gfQlX88l1I#8l_S/#pgY8`1=2*sqrR7oTaVB*6LE]ZC %p[=a*`mV3LN@gJ'YHlWH(N_6YQ?,%O_j8FAk2d+dk8/>FU[,KDVB*11[eGd2[6:I8&#/KoC0;O`]nh9uOn&;Ib)XnW\UVG_[lrWWT?gD7Y\O+.LE[\$;TleT_6-I'IW`'FK)P"LRI/VOe`S---mX6R4 %:9`&omDq"'OnPj@#b&HWOW?E@[3gB1E\=DuROc9@;iS!SUcb7FRBR@is"g55LH`k>1A %5NIR3g)\":`PK:_hHB)c2>7JT"84q=2P'dGf&)?qO*]6,]+M4-DR.04ge!$BTZ0kF39;brm6PTjnj&^A.6h7K!`eJ,YkMiVB+[ %H$B5cc.13[h=Jluhn;.a^3mZj>@%Kjhu*@q8)<<)rnfs?IInlds).FpUCe@:cZf1Lrh'+Ts-#nOhY>?f2ZN7Gf57,>q7dpjV\9_L %8=O*&:;$8uk5)#lLR_VVp@"Lo%Y)V4)0`c\J:u.Y*mPp+-673 %dt\Jmj.A[oS_G-N^SJ^?-a>I>e(_Sul(`BjIpO37G;<9=2u71Q`Fr%f++/Ml`fn73@Is9l.%GCQcOJGip\VqM1cU+*P1u591gbAQ %_)o:IEl5HhDq^C=s1@1PT*t,`cm?=A:HDu!?JMHB^,lY;d>M.B3f?c4OQZE/j1IPG5?>tdj3;kiPFfA:V!$V0)#K<7KBo)c(j"+O %2f+NQ8a#ZGa:t"(b.1_*:W>(j9R8h+f(Nff;P&JNRkFtqi_@4Y)ba_ZE0ram0)lL:D:5#jL[j9^^"as`pDA@/@Vf@-O8!FfpF"OI %L_kiZA@ABfI=bV._qJ_I%R\C6mlHraL:sLe4,KZK$R_oLDL(*5[6/A5-gucQqV:a++%$k!mtHs=9[=Y?on23>qp%6pnd`."ceEs. %c-@[n[8/0qV;VGUb&>"@PQ06OreCHB]?tcHCi9'ls/)]p'*5:jBO\ad@5`VXK&bX`U!FC2'bf!SCIn&<55#;@bN4aDX>gg(gpd3g %b@c&`_7jf9"4C9HJ,dUi)`GJ0h<(@0KtH[6q?!GXCQDg"C]@&1DF`;KTDOe,2G^VGMc2f#9g2#5M9cj-pP@)/@:J$A^!6T0k7r/d %7)D.6!X\I!)!JMXC?IGV;'5?>ON:TIa+<5O!tP!61Rt6PoM%F.?T0_>I.-i##F?6V),'eQe-AW5(K9>V69k)fb."8(9W''0]Wh". %kZ6O\=m#<$HWjFPmi3DR\\n6^EIdW;\q(b=o9"U+"I[A;``(`<,RGj<@p!=FH[\qB4g3Lo^Pjbcf:+^Jda1+2pc%VN1)AmVU$HrJ %o#H%o$ZDbq6Ls1+SC=NVaCDh>N*Y'Wm!QHfI[h(#FVG`T,P0%)GmnMT"P:3/FP4\ekd^2(0tD"hfi1ToT0eB)Chm;%0s87"1`BLU %8ND":T79$#9p\AKb:W/;e)X<\e*,WJnB=$M %O6j4B`1;(8s5td0Q/CHpIuh:PqY,BpjA4r=p,&Cb0qLju4PoldX5'm+>4lgJ)m(#nq01?@Ms'!roo+mthgCd@jmVEUb6t]2e+o'f %7o?j72G]?Pb#N)jd/3aqS&sVI4VgeIDWp[?o>1.Y\*,>*IHrd;T-)cNE:ZquE%Ci*-Y&nhr/L)ud,@$(9'[/f*Ni2H&(l/Kmr5S` %NGpN94`n!,KOZ@tJ(GtdMKrPoIE%;T]sF2"7r?>)e#A<$&0)'fhUmoLDgEH8+75?s,BSB6]nZ\>3pt(Np`pAlggG!nrA]Dl7pA;E %n8lUBTimOYoR8S:qdboWI+S+TGCBtq*H[^0]"IW%T.ddt^]]isY]C_a_99"Tndqc#1jTaH_JD@+cfMnNq3%D?$>7\)5([Sj!hF.U %U'!4/3k_HW`ro&k1O1?je/+%`2q@]c1MfT!rG`l4"C45ck5iV1ejCdZOAEPB:.6L*F2!&L6^l'3iK1)c\Jl\6NoQ%b_Rre;DcX/k %0Y8GdOr]_@25)atV_k%feeQ:fgnIq,TO3EfTDm*f7XaSndFjFkpH$7ulqODs*WDCqP2IF4DP5_6TnKa-ZDnc1f %GMi=?p@H8\`J[X.C)0&0S*t;YJ&%iH7D$gZhsoU9B"3etkDo!/r#c*:1\!sZ8Nsoam`F/JZg[ngjL[XIrQL==2^o[Q/o*bfs4bNG %e`O>:0!bTPqVpVo?9IDkTbE1Oc[UR/m)?rE=4P&u*O>V?UDH.$?'Kj9Wq9g#UNsP@>CNs&lJueHg-N,LqU+]HGkB&8];NDKSA.?' %VF/6smTO?056:gs?YDreOB)]ZgiBiMtK^J2OV>T+A=ZJ'P+6&9HTdW+dgbW,=`Ku\A@Y8 %Qdl]"I^),Z%qQD-l^[=Jau3QiE8:L71nLLj472j-m&A.mL8U6m=G,q5ok$D$ZPn`\Zg!(BPrp+*L]]8u5$q)onO55nIPI7A>ZH,n %dgk',\"9_p^;j#%ql2j&V"\;7Zd(b4r9r]g+p2Mn=l8\eX=rLTT"(ipS\(J`&B3&&kcahB1Ujsob$H3rHLl!fY]lPj'lGDa1`QL- %l,B_W"SEi/_s$#>&QW7?D%W8I[nuaPQ&&-2HVrAr5moiSLeWU74>JYj6]$tEQ6i4sIA@Cu_W?2ICAt*7sqQ+;t %Ii=[(fF2a^+b$)5$?8jQo?,`o7h8YV:%9.O+s6Ehe:Kl.DuB(`q4[9:`_lIAI[T=t4\1d1'0d.@1%]X27mYQ.(Ik#sSh7>SMJJ,\ %A?;cr"qiZS`,c$;fI=dZ6aD9FPaIe#r>[q#$^1'a2N*`hI,+JL*/\k@EZ:uH`PXME_%2f\hGX-H330&F.6akRjM^XINib:]Aoi-U %3U9USbGVZn5N4^WI^j3Ac)9q+BNto(Go@KW32c%abmph&Co!^KkRtJfN+Eq]hrf/=>D)Z.SQrUl@6-Qgl-[%Sc^kU%j/5i)l18m] %R@'mDigG)[_U.tf]MB&b-]Yp=]V\AomJM$XG?M>Jq+_chL@;+hLocZ`S&(/'2l-+t]6TucC$Zj&:N[o'KnL,f3Hg16T*[->(ujb: %Wd?2OJ1S"7;[7lo,M!)E5)%Wbh@WNn]7TtEm_LOe]rsObouO,i#h-Slle9*!cMlN(PK68^GeqS<[#%iYV26o27?n %#h/I&eE4cu*2\pI6mJ]i6mFlDCZo(uTc;W9e`UEFX"drhZCZBjVWnmc6d0sO_$o\Db5)f8AV]&"EEi-K1LHUFp>/#^H91,`nE`". %a%qkFlFTRcag7u@rn$LXqCkFn(ZfX'Ui>#_P8D7+c6&PMd@EEq4Zp6`\@H'4Qu;^sLZmC2p,Hnohpl$\>TFT'1a!jdl8W1iC+PAI %$<_hk'h-7mP6Qt4E3]U.4?*;uU2bN1Ah%#l(5@;6dmJVlFP$%idL`^\(YJpII(KA72<5RZ7TfY+]U8U'SX=h+.^LH.3tlpS^9&t\ %#l\n[?R,a(R!b1[UI"q.HIWP-,3N#@S/;jA,1M_cD#%T"2.pE.1UHBb:pEe#m@>'SA*+;,D4*6Ie4oO?=$%T1:Zm;R?TmR6N[]TpUlE="r0b6_l/r1*4r:o;%.EkiB<-a,66=\ %f/j*iYF#1<+@EFtKm?M<[lkGBT)KqKDmP:6UYXEM1L&nRdm4_,3D8t6=X*pKcI"'%55/m2.ZUP^P:;VQ %77bnRmHa7!&d@IHA0"cG(bMD#\N%$H`td]T:/0<1cXR\003;GM^7`)[!U%(u&!LRr9b=g.BkVWBjH7s%!UlA+(K"ZdcY4TFUQ(lP %KC-YR_$=70gOa?;jh:'/;]!,qjA&M"j%&q9Ga9D]BHFcuT;Np;*-R`jfJln_/*%3b`L+%#=$H#@$ %_^uQArGX,L/dh?..7,Y*'@2amQNi;M._M5)OGI>o+]U]9(EO"I+9j %r04#n!"p8+f!C2mV42r'LjBIp@grM^@KP[["L_!1Lcr]+fMnL7U]\4[Neg %]X-l'NCgm/AB7!\9oAAlOIeU^f"%]('0WZ"oKr@24#fImC&TD= %4ql5&>9'8kE8KT,b\C1k]Ao(V>dl[VLNol[1IBdn"HH9a"h37#nZIokb6@3hO<7S+-I&n<2FC]@>P+04>DKT87DGgk%C^jRp;*1&4'9*1,@d_/"\(1*R3VuZA)^d_VDIbeIk4d&[as1n_]!pFl)G]M_Y3nh7T %D]8>!3/#$8k$D?$(/B,Jn(?:5*D!h=[3"n;X`6ejHR6M,b#c+V7JC!tqn;5C0hK'Pf%ah7JOHKNG.3%p52E$kNk5-6P=k74P=VUo %6U9q_rqehMfjZG1FVZj0WPdjj'ZFdYm,0"D!7mS]Es/)2[DE/gW@5\:2P]1PEu:!JIos %n>1t/(5SlCf+o#1bV2Ef=,+MpKf'jWo5Iej4+WGiJao)DH %4$tU5GKqc?)s8frpI!-BS[WL&UaA#l]7kG14>-?dDKnZh7<)VmqTaH;%ASDoTJJ9^0$o?N"sPGO*2"A:^QTq6_tVf&"d7o-*I3AZ %Nl/u#cQ@>%%07TnjK+"k&q!),%Q"i_P%AVn42W1'"%ruHSc-?*`!L_YD4o6Y#>PWA0$.hbdE:CDg"7bJ55WUhe&TJ>B2AA:q7LlHdc91IH?RC*XmhZ!n`9Y3glhb$5IVs# %Nj-bT6o+'dmt&[#h6[$S%^CssIPbiBbN[%hcol)YpS7u/JHOTR+Qd*86o[3uEgpbZ0u:*F.-n\712h06bLuWUr>)l:1@n<)>CKNM %*/Fu;F'S]2KQMheJ3&RNPPrW*.o:L*k)ojXOQLT@m:AYgqb)io!cBD%\`(AQ5SIZ[Kq/e&GQU;+'A%3SR4#a@i7Y@k=1^?.K! %5bgO[?F6q?ks^Ia52NK0Tk"!`4"@i@f(@lr[gK4I*R&0&F^XD7buYs64rri8#&Gp/J7)9$:7r(!DJcJ,+V1j"cQPNKcXYdW0:?YA %du:f<3$gYj1GUm;.t.MdCZL!4o7Q*cg>b?7l4\V#juMgUR`Tt])R>5$1QB2c'\Qc87"2_(1q3&3IJepiJr/=Qo5X5U`#N1e6'moQ %rM>?E(f6Yl':%ub%"*P]ZMk3[kA&NX`GM\ %KO_1mJrh^$=MfY=8F5ciAjjK[E5Zh=!(,,k)3'tQg6./T,%F#9I,B3AndP`]`R"](!PQ7GCfnRJ7$HNGE95mgHXZ&XQI-LSEP%(* %&C(c&CCt#gF;%P:,XqJ\Y>G#0qTJp>0%[;9')]<\?UYMr'oO(pWpY(hu=IF9jB>W*?ZU;P7CAT/tbJpP_MVMUu#'%SqM-Y]k7 %+WDg>9"c11Si'&@4/HL"nDA5IFE5/*@G*A>hfOu7`c-IJLuXa?HmqiTZCqMpNQl"akBd#,IGZM/r9dVMT9FuLBf!1"YGE+61"PjP4P:o<_&.gAQlbS`. %itD/,@Rh(dRt,RK!445ZU-Li)(5k.*@E7VjgJ`'0o@6%0k".I4e)P)lFma6s4?RqUglp(5FkOA-BJq+LAVG>9f-U=3GIT7i]TP!1 %0)L%bOWQgV!TO>_C+[_e\`\"iYf\:6S$m/HCZ?,L1MpIY]6EjNhU7+i>WU:;GL@Yi5dq7!"i+ps4C:MOQ%'/*>$_2Ug3;/&1uY8U %RB'S(1dJb/&srtlZc?fhT+LnX&2=Li[]>EYF9:16/O:d.LpD\BH_Iq)KE_rV:0),j1^WY?O^E;$M)61AD\V7p`T&/9a9TjDi8XrF %'EmP>ka.CYm)]j^^qP+akt!q7!QNdsOXK?QSjDSoJ^Y!8XR.GrV2HG"_#3/O>_n46>3:q2fS+-Nep&E.l\tKNo-.![/@&br=;-Q6 %P0!E>n%-S(fR/aA,2am+7+].GQI?Q/":$nLGrfo^5c:X/:BA?mR,[ikN]bR;(k&^>!`R?0rW;3Oe^LE^Y9N1mkaa1g0ke+0_>.S%I4:Rj4;HFXS(H+K:-TIgX=b:OBLC3T\(jrkQg`f\gG3j(YAE!)8OEk`_4SP(#RBI-!MT%^@<)a)NPij/4FQ(f/+;YBDS"`:NEd:&Gq,@[J/21f)pPT*T9GF1P'@V'ARaQLB %+pER'=GSLh+[6>gV@\[g87CJj'V+@\&i@_NqfNR,5qqZ!+k60K^rh_N%aqSmK`ESDbFukU[bY@8m.kB_9X8muq:.X+dm3:@4`7kD %Pok90h(I(Ha.?#r%oW*33=*ONd'i[+S[+^eUrP_QjT7ledX.5cc0KhD*Y^H^"2h_?h&Gr+8^urgh_o[4e4I##!L?ob_<<+A>ka>'G %>^jf2];Xaf4>Gk]%2$mfn\51&DiOe!mP[a$r9Nj5_>uj9-(+ah@AnfK%[`#C@0]+h5iYYnOr@(nhG8)(Fo@Cd"X=-X%OalcI_n4. %SJ">;C`MKJ-^>ef)4b3bbWU@V) %P>mTP]gB^*R)gEeMJJB&Q[\R4DGB=T9dm7"fY[]6djOR'pXD?SH@";AiH%FKp:ZCF.7P:]&rpfN;qd#/n\\\pUUMpq)s0X"H*9_iAYtji %0,,\E"mn:X/t_11p+ZneX+`FjAno4A>'UpNiQcnb&)pHWJ4,\@&U.):+^<`s,>l';3_eO6kmY+&5gW(%l0.mhB%Uk2`17*>]V09m %qs]F>d#h0IaTVpBEY8?uP':Va$f<(#M3.ITZpFD/5*s`q*ph9I35QGh5B.$T.UL.IB*46R;thRXRd/iOI:T)lFk[sV5uYWBm?3Z-@,['67pOU3(;M@gHQ)o3HBrF,2(SgujJ %V0eF58)tJ;piR/Z$\jh9/O=">92\6uLaN`PBHSRoB2V9"1bnLEoopgkMoZiD-,`Aa'%J8t-Rk3G3hl*W'pGH_*W[^hlsi*HN_$@Z %_WU1W9rY>P`W4SY?Ak^8[ZSA6]e@Gr9ZI_CB"fGVIF@lKl!nMa1K6&Rp;fB+_m;H1#@-9tfD+=NfIt>m(nD,Fj]j%;E>tj])fr=Z %G6nJhc'Nq0J1^ee+3dF;- %34'nR)M]!inbPc9[/jD5";(be0E;9;JITq<]a*bPs4m);(sa%=EGWd)>-CC@PBI"],UYaA1Ir?+rH$r:X9;%BOZr;[T0A!cLm_aK %"/S]HL1^?/e"8:dgC\CBE0eADA3lmnKooo(gpB?oK[bW$7>m+ZBNN=R3qt/5",smK#&pYTIh?Pg#MuP<<=Or??Rh %GJ9HB!QK4f3_5BCDSgg*)RCXH#]plV35f[#DYj"s(fiSTA=/*6>YsMTT#Nm[fq8fXB'_fN]/5RF!bikCDIrR79sF="52k5/b\u4f %&UZ>g2`mcPZSbI#^IOiHp7'uEU=PJK-qZV2Rb15.PW.2k6]OENHdcc0p)fu80G`V'Waj%Md[>Lh'KT=@2=\e8eS20E_:>%;)[L[ %>@SmTrC#"V+p"Lgg'OX>-ATtf`!:!!iTe21MB383r1u0)]FOPA%SXRtM<`9-S>QQ41YQ5UcG^Ahj&)dU,RSA/ef %/,Nrp;3i2u&Q9MQf0u>gRcf'FiSg,Ln43?bQ""\H#@Nmu7IITb*p+MS1Xu,UpWR4^CE(hQ.[7TA(3soI9I8>B1=&@XRCc'_e]4GW %1bVuU<\:\F\t*Ud9VT4j0OY`iDLDrSUWYERQq[Pd%Dm;..I^:PK8V!bkMUT?=1r+t9`sB6DqIY?(k`62$llE\16oP/<=kS&9X\`T %4V]p^N:#E`#6A$t#SVK4L))KPA8<*iFakfNkKRMsStc'os3s2[f(Gt(qRQGlZeb_d;oH7ic"lHb5imc$F=K,Dm/_3Z %YMLI'@,XGBJgtDmX)7=1H.t$FTV26d',r%,,GK3k2st\iN_L,[-uHU,XPCUDG@$(A':hNZ@l`e'5"\JehZ0l?a^XWEKVYqQ!=`7u %c&?RbFYYcN@I3E_nX'Jh=%"(,mkXP^H+b]e9DWRBp^$/`OQD"g0e;m]W+UYm)A-bQSkHP>ik'8P_&EaI&3Fd$b<4Y",#2H0<0*`1 %4dmd[2fdMrO89';F,[s+"(WKo=?'hTNjsE&+R4;sjDgj(LCQrT+b\ciRW-H7%nGqHY'qlc%H:&c2pYBQ+T[R4jK,5[k>(d!+F0FS %Uq#XH03#Ltel_J`:>ZMVHiW5aMIo#o1`4Bmk_M'\;2bRP8,_k9UM;6HC1<0'G#M0kn;pM<^+9>h5a$(/;MDK@%sb]GV?U[9*4V5V %[c=^"J]lsD'SoJ>V;Zkg,(FJao9hpPo1hTM(:>.R`R@>n]++i]1oOSD(]2cGSanmSQ&:o.P.:_0T=h5@cfaQlKq^"+%;4siVocM_ %H"hFMhK*Y=$K1JbS^1Z+CR#0-QbAoAmr&@nqV-O]Mlp%bC8kD[StP;Wj[\nOoL\?CKI5DN(Y89,I'(VZe9'rcBnFF97[G6@4"sfT %Yep7l+d;JaHj@rSmiX<'#T!f-m,C)LL:_8X.:4pU_rdHa6Kj^*NO$(9/!GpiPRC92rgpkR@*:j[R=*aY!1[4GG6;nCpGV+&62C\9 %/HahIq)1bJ;8IrfKqp>GnWrUrf.Q%!TH?TapVL-`b`raa)OEcKLHSMBJ@B.Te^dpVo2W`Br7'?0mq`'!Tl.]V(Z=kZ:1q&Mkp.&l %\IHW88Z=fKn*R3`L-SUU3+&#t"iH%A-Orsrf63CB47pSq?!7ZY0`Vh-K0I@;ni[*E"sbBEY9O_?eCT'9L%O>4QfNU88Ya;[DV(1) %[6WFqTBl464tYn0<*V&kisOBLm@[3SBu4\Zc3lXd,+,>Bq;hl?B6r[>6FN>mKW)6sBEp$Um$?gXbHX/'ku8:=8ra!Hom5b\51kL, %^(OWbqaegS!O?5)8EPe8cgX^#Ne5Obl$cCEh4\?;b=g%Ep%G.HQ]`k6mq\kI/60'$@J_kU7e[hbW-<59[Q; %9nfbr0-O2V$,3]i&rYL@]o<2%W=I$i/JbN9/CqbG8"NFqI29ldgc(ZJ4]8#ql0)jLLo6KA4S^r!:-FL\G=&=8?bgtC)e#"Y,)\^g %?%O#A'Op)#u'8kGAG8H)2T&^0L)]U*/Jo+E+#/_+[;X[Y:E$A1p$1M92\-J\9B2Zb[UA),hZfKH[RF4jq@*bQM< %4YnM>G5Ab8aWC$?8rGU(5/d/W\fV@PK3[p2@mk\79!m)%)eIKchWHh9!FLk(b3+&fp1tVGNKu/!^AGJWDeo=K5VCSK#dP5CPZ//; %\JY;/@[t&)+GlQ!%Gsq,#\tY1P&i:Fc'o[*46:Pb0oVl59#TM`rTqY>(O[Po3R2R3ORh]C2/eIOn#B3a=^hJ#6=61W`"!lLa2cNB33@::UncffGJLmT1#=i`)o2P"m:;R::TSiK@6SiSGDN %#fDMPdHBc`%<*SEY_O^N#',P1'"dKB8P=0b=WF7mcNF$-J'"J4O+Q'L0IGC)-m]HGZF'Y25WYj(X-k6=8@n'gEbCIg".*n3*"Lq% %dSbA\"H%%fm.D&/6oH@T\0ZG&93>N3_?m@Oa"Qs#62-2PJF&CqDQrX$S+)UC!D84?'4<,@[jtI*(len?;V`(JC#sPBY4R&^r(l7. %[dIit/r=XFPAsCXUI,cd)'&5MT=SBq__BkHs2KY*ml":D$1@o6"E8hc2g^MX/\c#uV^[*/Dd1$LXR>K54Ski;^3f_9q)@cF^V@=R %s7Y>5^A.6hKh-[illpA;MjM2ZDsK?G?m)!hNl&!j\,C71">_'G+?l>mcIMSbP"YE!#NkVP!.k386M8(hc*qr9-cF-?@q.JAqua$Z %c\Eq$F;"X/`1_+;T&fMlM\;]j49,Idj[4//,2.0-lX;^?Nfk5ca"EtU+og:3?L,Dqi@)R//LlV1_+_U6kmDb3^(>UYm#Fn5P>pm**CO`'t`_E$AOaaV)@3Ls10<4ICZr">E/6M)N.>I1L6$7ll".brna" %a35\LOn+GoU9Sd(S^:$bc,hn?O$'9=%5a?G89rXnnfp:i6%h?S=V?Obg4;6fG<8($BLrt]@$CE[.,Y0BPiUeRH&+5u"94HSJC,9i %a[)!i'YGu*E\WVtT'\)eFrbO'??D6P7k"C"ct>M>bQi*9MeeGiXQ3a^bb]l57e'??$jTafIN+2/TQi5A(:beL[*36D2%PHE>Y';$ %9gJM'q$AD&_%6eX(F!Xepg/@+anlu#6L3!B^qLXI:`OH*qSk?jG3=ZO9QnfRFTsCJT-K(5(Mr6Hb%2^araB@=EoKi2B]Be\,[+X4R0J^]IsZn9@sDERkak@k[XA->bho.H8)>Q. %<*.c5a,eNlhd$3Kk4KU`XYg*/G"Ka:5:kn(jYJV.9(&Ct+iR?X_?ALG"n-E#NtNXopX"=OL?pnnXJ^>'#4crL3\jeD\PE^,NiXGN %55b+AFbTk:="3fsdXQ!*,FD!7Tl"L(N?+R`!nFh;KKJ,;&3lp+Ag2>OCR+&-d(IT:qf&*G4^iu!CiOE9@t=Xha/ML$hBN.gVKk[gLbuMiW_^Oh#Bq?.kS9PsBoA*(UKEZ^s*?=K8_Z%\;(78gjBC %^tL\rQn8d0T\o1gK+B4N-tFIlhuACF.h55Z(d2+0Zm<_6l*rDW`igV5W/dl-==Qg2j%NITc]9&$f$UbDW=`2cOc@Dfq09g1!Br/Y %-i\CO7#l2J.o#hT=[EV=Duutl+dcie)EO(.G(.Z!$j)sVpL`Pdq`c=(t!,\K@Q;_%^+Yc>:Q_`mA,RqH:,NjD\0*=1$OX$1"`QM+$+TSR-4)PoUn;#2j_)-C#,piJ?m]7L*]/3YSaM\1e3=%O8r6j.Q9[?'QiCknRAY?>Or9%h[WNH:7\8\WKj_q@lOVe*1:CTbQZi %g%,ACqYKnZ5Fh..g'S"*Lu#r.I*1gpaR+c,0:\KWX?O?P?Dl,OWbm_0t9JZ_QR#,$&\FF3lM.1$p&5,E;LYinG*6fqaFTQ %.?o4sod'[Xp\6**(@+0U@Up#qST:nsZS0507rUd"N_GJcJTDYe,aI\hRc,Sa[WWo,YU.@7obNV_ij`Qu+H>e<;YUNK%_sBtDerQc %/V;Z6&D_.<+)91g-\?V3KsiEl8!c7b2gZ3$2EGX?8LEt3*%@J;Wf_3I%u<4%$Vb^A9&MRf,""=/:ni_#lQ*SrTiEASb7j^"4*Xc) %>SE8G2!1g8!F]!cdN^*CG"/WU#\Y5*aeGKE+l!(2!<;Y$=P8g":.nBA$b^"mHO?^gO%]I^sOW6L0ndt:MZJ^[#0Mdgd1Z.j?lJ-Q:X0bdB)WmKh]fonFc[fq%aXpOJ65oAPo %K/KUJE$&UPPk]p;F[0o-HrW5+*(p'eCF1\LGOCSRtU2IB[Zlhb@D5>$ZEO&ML_JDi\YS6X-4IS")QpREONITM`f]kq1Rb"=s5;jC]'V!!:'C %*D1M[,8-N&?JsBg\h0n:jQ<_5&NnDf%!eu-7u'DhI<#\0Vo'tSkKt(*%I$jpkb$r,B(Zfb4(9Vj\':'(qePPA2jh&(g473SQQ3\EA0-Ka%<51B_"0KIR>!UCRAG %G^3:dR-.\r';^#Tj9;;?&5*]Y7Gj#dNVl:*0Mr!$&!/l)mbYb*:sPf!'fg'P/Nnm#h"AeXeT:R5GdsED^dEl@k)2Blj&eHLTEF$d %JlG/kk)hU)Zg?R7AA+aN+p-iN#/C&nhNO@+kF0[< %>/s*#>iZG7'i\@(#9-Q(M5A%P]@pfEMjLduZ=Y$0X!8Zk`1+rX\FjnRAVSLc/Y$#da>(c:\mrcAN_8)$DkYl^)/t8VLV.q]a6,CG %+e5amnY'J=e8c&tOc2K&?NSodX;_b%i[nneO^2b$`ZsLOS>4"DMC5&`%(mD'6[U936-6^4689I\T.&C]k$>UqTS=8]kNR)p'XXd% %!I#6C42o>"M0H]^`]VNW>tmS_\1_!m3Glr^TTP(Q3+/#k8#oklH)OXqRK3%/S-`"E.j %V0M[o89AAR'%`F^a6EDI!Zl*j"5-%pC?\OtKIRKG\-&WdEH>u2m,-fZ_,=,:XP6KhPW#hB$V*=iP'L\%B=ZkZeK?!`!==%uKIP.d %97r/-:E/l@UEC$`U4N4BJNu6I8;q(k;g;fOf!RsrOBZ[iEjA__"qBL6t-2*(i"Q05:O@-tc$hP.MYII)K:Netm %b0a?^W)otM+MgK+EUa4Y'dZ-B3WoKk6$&*Wg.6rP**'p%-_)E,ON<_]*(W8I-S+7`PQh!co,&AGP!oU@OEqfu%RF%JEG%>Yq2^2G %O*poDbSk$(kM),%=$&1B:>r)5Elf#aEgB(B8ZY_c.k^D6^/0+qWcnM*2:1Nt`(gcaU"pX*LK];%q*I+ZGmL[SW1[3;i[EeuLdY'qFFCYZ=DroXM=D^s-q0Oh+h;cur;%MG=+Lpb&@m#Pf0mOFekkTNrd5rni70naU?C<^_KNgMoe9*'1W9=;)AR#\8nRc?T%:e'tWI2ub^; %$.l]ARG,2]QTc9c7(>e\etA=W$a4(g.G])_j_[9H25bmiPYiShAF>6s[!\Nu$\< %:mIHM>*'1"a.]D_=6/OQa)13JF=7JG)"\WIlm++1S,?EgX_&O%9?0V3h5-C$MC>]NJ7VN:DO0u?W%$MYBs5)80T %U*8kb-GLpRHP!mFqWfo>H(b\$qJ/!';1UonJlcS2cFR %:C9.hd'BW<)E_:U849_6Tt^j7ctZ)+fFgD,;;NIo;s:;76XEO+s %2ArNMNkcJh":4d_3%.(p@%J:b(F,G?]j]eW[%QVZN\lQm?iZ]KG)TUt-ln9-5kU^p1&S;=Arcp%KRbZMbFj3qUC`BL\d)cT>sZCg %/n.9-a:1XJObJEia]em[.B!I`;%JF-(FQj(*7ib#)]R76'^]nM57fgdTFoiXZVc%QG"%4l[DRr=74p-7-*O %rUTd-I'Br$&.lIS,6G8!N^2SF-"mm!mLl_K[hRSWSd3uBdcB$Ol1k+K,.I\oK+FHWm&k>@;6gmq1e"EcbG$i'6N]J&^aQ=9)XRWr %&r85>Y#,rGN@tD:Wq)`*QHe@r8!U[T#fZ20j'_\DUnm!_a]1!.Li7YGjQ4e(6fV2oX9:0N/EVBF.I*lGj^9+232nt#k\BH;Z_ %hkIs(Ns00bVa)b`WsF=a'uBY22(!8ikXjt>n%jR#9]:YbL78l-N%R-A&::7B*mc2<3gTpY(igNuGYN+"gfp(+\id(4*32`)ZjR&'p$'*)MJE70T$Kq1=(h["06P:=.dFG5nGjE]_#mt*/=.<7iO:l;jhb'bQ@GJ7MdW+:Nsi+W#D %`dnb+p5ThDr$Q?'0fpJii+N`9=T_#:ks597OM[=1Q[qRUu]c^9_W@fX/4L9a!7&D4aZ %FAY$@!4>5)3R545f3#m-3A;A;f^)PWZ#U*aYQ[r[dGU/3:SUR]n;[ld!4n.oO/BjX17hl)&@0ik@imA7 %D@i`sIb?J3KlF.j*uK)o*\K+"DLd]nr%Y8V4T*$WUDO4kBtR]8f7`Ui'$?&'!,l="YS@\Gpj?@sM^sb!Q"Vl=mhc2 %(O-]l)2[[$#VrX^E%E_Y?6:2_4qteQ*`+6V.If!"kr(b$NZ?bT>jsXV %j_lD2s54RO]A*>I_n!<]LFC`?q@I@6?UOkPkaLI9#piKC*$'V/6I.Y24WrttMrK'I3#lAVbg7d6l?*/DJ;EYG^1\a1&Gc)i^M/:^ %K(#YX&98?G8k7oL9VInTh_Tq)5aq,Bq54b"X&40dq0]-Of=6bW6\p?WJ@iT#6!ip5=]?$U]+nEn!gP)%huFcg`NrD^*N.$QG<`an %LQWc:ddT6h;VF*+n\CC"jL.0/Edh5L^q>jBE_"FF5Z-$IG'Tr@ZVL!0"AC[=N&/Uhle'N#a:9BDPmH3WU#VNPQaehO#,4'[Q;o2X %4?Qbo[n/7sT2qc`1W(S#/X(-n&nrHu9kb1/mgTt(,@hM!pRs8SVO4%-W1OfUD$=;PQc\sBHuMRW/Q3!q>#kqh<)7]Y*!C53+-R`2 %M"HbTbMQ4aOP!C('\sr_6(8]d()]4kqYWl!YR.88p'I<=jmJ+fR*IS=SVa.=`PGKuSf %\p8SsI.QaEqD6`'k,,J8.)8SN&Z*?Co2dSfjb2A(?RC"K>ars@#o=,KI$$_C;cT-d#H/VgqnNbPZI4M[5)MVC,t!G1eS[tn.Neit!S\6Kn%aiM%[?,YG6$,9+,EHK %5^g6(+b/'[L<-L[AOP`$`hK1=3Xf7QKY(R1&JE`DODn8+@E'Gs=)/n6e'('oTL5aB[:U!JU_6=K^(rk3`e2Tu1@("m112X5DFVe, %,\XGQ$p9JOQ(0rGlT@S\`uuAc/4td4"`+Jf+fM-^K5jH1PSqe2VK4fDkcBIZ%"B+3_E9Q(I\(sonCJ:t'?D-1gp9kqnq=cO4?_7U %%3^c:,#"nBK0e5B5a;@5eiBFL%4AGV %d>J.f:6OJWcR"d*eaVi]L3&.F_'Ms7\24f"1^&qM8drT7&m]G%S3WV-$605rC[\MDK**>4,.1^.-?V9lNpTc %i&/_.AM?H8[8RhQX0+u;8Kgng[''FYp>11jNFU]ara(,!:^.P._Hf<)\#1&GGeu0> %N'ep9KE/tX,*Ho.qoA0Y^KPFA*]*p)8aKrXF72\"<-Qr!HWYX^<:%^H)XMS.,]++8Q?o?)8shA1@Re^9K;`?W6C"+a&o&0XASIKe %Z2`eN$Im)2q(d&C;QES=aO@qe"D!tu>cA+OnkpOZJSINC"5)"u]FWi!2r?kDLuNJmAZJe6U8);;is"%QQ'@ %;6=f>&T!:I9s']]oHPZ2bg'oV.`sSg3Rs*t!^0a"aNXnh_ZN,KK?pAl64"W5Dns[(U)-6$qF)q@C#*6\oqW(9DQ:d00SgV"k=U7f %_gi;_TF>g1]8BYm8n)+LWET'.LH,>7)W1L`=3M,Uur9Lp)[SqGE99k;;&/I1u<+&h/&RM!G8*--(j:T"N;NYlq( %ABrb:%^F_oXR*MJU3(AQ^kddk65GmU/jc"@\:uT*Gr.W%;540cGO*KLEi!5bq!]7@;B^in:>*j--sIeU=4\2]<`"+#YS*+4%cX8n %N0q-=-_[2(PH>%T,fh`W6j\iAi_4_'HA;L8\3WcH":Cgt&X"Ts6sNjB,I\(+'JXM1pCk1Gpb_/!6FB`+&D&>BP$?2N`MQ>b0lCJ] %?"$a2>)NY_An=A-JlJ'b@ZhN1/>]W&_=08Ad4KAX9DBga&JRKk7H+`-43iROjs)%CObb6I6iu`ESPWRKORefc"CY*A/>^'7)6gB- %c-ei[WQ'N0@;a,^:?iLN,4[L>Tdl2P`S!dYI2Z&F(%up2_\HoX-r*/XBXeq#]9cClM"gurhkm\f,jkb^=,G%o.mpgM&g0_&PpS9r %>=haGr;.(XZ;?.>1#"&3@8h^bTRbre'_o97CWTXblEK13K=-JNd,`c2N^N\jN3$;h't2t%;.R2h`H/rU:u_5 %V6Uk]E\c,Q;)KD`(^e7d&k%Tu`3bYhm)6KOj2qlXVOL(6G'5'#!;`jt;S',i6T'So_MQ]kF.=-hY"?-4@(1nH)DS"B&Nd^o?qJX1 %1VSoL96>;'quf01Skr5$JVNcNf<21mnn_2l(HPG9cg,t^'7@: %*7L-a`%/Yd*Y!A6h749IjT)qZ8GSLPV7_Xu-Etq6q2m@K$+gI1a,AS_BHVGRLh_ZT<=do'6Ki1$n8el_&Gnc6!XfL(LB1ndZKE)3 %Oob?o;!Kj\\'1Pb-A%'B1W#JDCtS8o+u!()#7LcV'cN5&%G_-ac-U?!:9Hkkn)?6\1^p&j(SSpl&r$k1V!'a6,oG`3]rso\4/<(H %7'%P_aanU9HAk8]VKDGs,rSk^b"7dHIMZhD2qLcODki2s1i5sn1LpiOAl;h/u85@6K*.r-:Z!6dAV+Ug'-c]o_#-`_i@-` %Mc*.i)teT!p&N8V,Qt?.,R@mOLn,r69!Kb4+lF?Y*asslb_&!8MKGq+2Nm6V,1;3BNEPF %.u&>ih/-gYN>^Aa0kMDC!KnV!Lt;s9pK1tX,SkV[Lh9d$J_MrA1h(hZJPgqf)SN[Y_B^fti]o(]@2D&d#kF<27>]?W#RWMBVnhd6 %0K2N'U:i:`WAQ.\dfdI\&6sGo2JGuRJ2['MKfJ*P:6cX$pb92U&V.!T`VoZsa9*fJX+Y@XS9+l97ON7aF&"FnA %dhD4oC5an"=fa;4a-6b4Cf4jT;ta%ECk7P#A'\5_@UfGJ1/'YaHGQ?`7l@%rOb#.2-3V4b7*RANm$QlWP*q0;@K;fr/VC42:l#c/ %``D"'E%22e%ffSMnOH': %J64%*kBXg0Dh.86)\iQElt2i;*[s.'>*S"bY;$03-cBP8-.)CYE9CfqJHtKeVpCOQ5blFg-2GQ!d`?aO%>6+5^G%YSNW!h9V]KPJ %BYK+e)Iegs-_tbgaj-^qeK?ag1--0c5V1j$^c`?E]0jHe3HWJ:h4Ve&![g=DJ-)H:,[m?(0o.!J";q*ZaB9Z\!/;hnM^QJhA5eKK %Mg/?%#,\IP/.626A+hB=e3(a",m#rSoO5j2'SO,cTLlt_JkuK<_i^PbN"(b<0&bQ@!N:>D_tHdh3?'\>)&AiOr$@^!#6..=S18jjV(tRk>BZ4If\R;aO&b(,<.?+?sAtYFmkq)]G>@Kq01p((>"IP21qX88TSLLC>=C@)h\(R)&2W %JrDeu(W,&]PF"SF1,5Doe;IYkI_e(%6u5M4`(rc67g)EqS@"uQ6,[NX%lAkmVX$.c.?DS+7l)EuF9oMcRk>1.KEs>0%:D1,jptji)(nN!Ju]Ob-$>G+aW,2!k%PT&!hB#j$kEk#+pJ"q)_E!E8L"`DQ]r).S)bI'8d#fRH@*4+Tp*$sKJq6tq322XKBL %6W#PV6iut_8/.;S8;u[[@9,qB/+0D[PW0mc+i,IB.EH9'/.sfC6"(G1Ob,1W3I")aM_MGu"uuhaTgo]5Jq,Kd5;,?Akq5F3/@Oal %q,!#V."P,I$8hJW*!Kk#6-%W3[$%msN)0mD#5,EYGEd?]qF%h(A7bnFcG0JoGW&BLrhM'4m>7D(B"5r7.JAT]*I %+Z$B"/jSET;R'XrBb$rRQF8)EA:e)2G`=E]+ap]2OJ^B(U5W!3@P">k-e_5a>p@"&^'cA_S.25H.=:;oJP-ppVB;^nN/@='bhQ&( %3L2?$">(MMgn55cH=+VO05BncGuQ.P41*1>Do2EE*!hBHR!h;u#GOWe_KdB?90)K]#tIV]5uV)4;Pjj)m->3MI)U1>S&:"PFs2ES %Xp>hfC)$A1_9F`^(h,Mt+:WI,;/[7Mf.FFXm#&\,dHdQdF"p"sWbNBb@%,]Oo6?HlcjP %B@>"`\YD%pMK&jdML9Q?RdAt\--/=!it'm7pH+7o80(,ROD60tWU)<7^s^qd*b(6,JXB06XA%8=TAr#clWbt-B's!7V*9G!LSE)H@_TFN8-7)18W;l %0Y#9`Q6[*P66,PoJ_%i'S830F_DW1OnJ!`r)f[:sj\YKbOG/Xd+Unr7 %=JS'Zmn5Ys)S'Rtn3iH\=+f;)i'N$\%a-(CE6af3a9W8"MEBB*Pj-\1][[D@_-:DQ&&&5nH>Qd@p19@HH74ZK`EnT %lr8(:#VV)J64p,1L15pl^l@D@YehUO\2#]a<`/"Yp<,T"5q(9FF@6VT@Vtb3-?3`4.3u]^)7TbQABUHH%Y)'-+9L##NBt"0P2ZP^ %^e>DB:J"oG@&t(NJ.V@KJi=(ps6YiL_'+/G3A]Z>7k9C:4jP#CrL)1pA&MnDP_E2)@K,?2dg7e4U %i43P=K:`BnU0&**1AhD-:9<5<Fm*HlV!nMrg4M;2o3!'FW&WV5Q %d&e=e`B(GR=JI!Ji,G3g;+sIoac#tR0,>mTQbo+5'5"63pcP??h+)R(C_bpKR&cHY&jju2&I`X",3Xgk2%e@e)q%T78YQ"%(^:/O %',Z62&_Kq=MrRs?VfsD(5WUEtV`6,MoO+-K;2c#S3*s^o%8SS?E["l'".*P#,'!%G/iCQ:*<3!0< %fH!>a?_sG%i:&t[RZn!pC]s2\bUTSFP&ln&!?&hDHKsk:R0,-PP2XWd1:8Hclp^[TIF<TY\Oh<`(UCq %2R.YMd%AdL^@9+O/).ZUA@]!?%A)]r&>44n8GMNDYE,<6C/c1!5og %>j;bH_=a+?))0L;Q_;@].'Bc_fA["X(kBdb2[Mh^;RRN__DV"G0pN'IetK=eSn_DkPsrPeaL*BA-Irf;91_41&4F;ZHeH$hf\DQD %CU,f$r\5Y@bLhLKi!$#hp..NL'i*US*eJ:bg/Y%l&l7\,>X1kM)HU$90l`,YmJs"b.J(W3$l/U(HOKYi=52(_Pb?7q,/K*:;Tl1Q?X$lkcRR0qpIH,,F"Of<0Ycu9It,'\Gns) %@>8#D0p-O!WO]?unBHc&2VR;o6n&0+jh^%m"?dX_p*Z;0W*\`\,BA;?gK6eWR4m.IJpJXH2G2K4S;E %YGccA1F")\,Ort#Es2-@N*F-]pdb\tHZg^UK#%HaET[06Qm@7$_@)cFJ+4>[`Lq^p-.?o\i]X,8k1.Cl8/`TS\H#Z'eJlhC',$Ak %M>/YK$KPcTRhp<0TreAO:\"P#?)X2S%3P5AaVs13-%(jqUlZ$kOV1uR"Cn[o.2/&,ZZVFI/KS?6"+X/WclD0ku!`A6mHW"3]ZmmU40\@YB7e&l$%?=2Vo-M?_ecA-Jdk".F26sK2;9*2! %?nBN6WGWRSqRVXijW^R"8+!s?QJa:70*:#`@>?RW/I59&JhWq1.@IOCOX4*6^gMt]=U-@*&-cRL7@n%PALO8^+A.:r2\nSE.0.MQ %b.K+COuOS*5TFRD$BbbsjLmis(kto8*!V\c=76`aSRS %?S^s]6nd?l.,`YcP[4W#NJV79;ZmdWGdOhfH341"&5YX)0Q7SMb[6MeEJr8H_60s-#Gcd.HkD$/5jDbJ[><..!"=O06/Wp)9":TM %g!VjkhT4stGg%iil#93cYGp%hE4EMFc`n443M#gT"':X]bPq'j9$G.'L$fIgoPDJE@(VqRJ@MVDH#/\0o %]JuJCrj<"<7RDIp-cIZd,:J %?so_TesCdpUHaiG`Y13Vp4Vc=pfB^t#d.a#!!%AaDg;t/&.#mkXI6-)"(NSu&X\CPYTh.j6_etK-#+9-_N3'd"\pmK0,6:'C&7R4l&8_NBSV2FE`kkh-_3UNgPHYtIRM7Jq`:E\W?m]'8NPp`@-P`_E2Y.Z[e6t^=(!<)!2fh7i %8lB2Q"AV_H1c=8Wjlh6`LBh"_/f^q6563a:Z\[aA6E&h6UOp?JgI*$h[-]P:L$>=j8AYfidTD&)pd1C&F$7YkcqsXT?6[dI?D<0o %*@iB.g"9h?B7V&%\7-aO;CIYJE[lCLk_O0tA/+Qr>ap*44/\3[@nB^q=LhNOhYOh-7T] %=:$uH2;J>L7m8(s^:=**k\V+I.5*B<3[IM^i3uQ5q%br*n`%tTskIS.+J`',M75deXh$mLZO75-.:8V6r`(ul06Oi6O;'5Gu5U4E_[T\q<"a].qCJdd'#PR)l11+.M. %C$o+qdY&US4:EE:?LVLKLJfj_&/XU8U%n>+SAR??*^VA4%asqo^18Xe9'I[H8JAc;PQ!#mKkQcYU12UO`/a*G`J7!Q3s/Bm_'clkN%ZdREE`cLg,Y$g$0>p)A_cQiD#*D!LGZ0"q$N' %GZL8hGFH>_9S-ebEUD5Agn;+"Lk.$9XEg*Vh%RJWaO$hiEJV*e[71k/"R63WH`KF).h/1&U;I,nM<&3gh?JLqOfXj69ZP%,G52b;X"6;CJHlfUC'k#^'[_jiIQ`=5Za"V-G2_P#m)ITY^'m?9]1pG9I\@'oH,Rh$@C9d'U=E`BLqkN'>huHE`[@*%56_hD%n`'!eX_WXC*/ %$>2[N(bNQ0q*qUU<@5M<-.<(W<`XEE".;:tfcV9K=M9Of%g='o9BnK%/G-LgFC%4JA0C\2_.SUh6G=$=.Rp7e=YQSc5c#We9:Ih` %9#pF:5QEZ6RLV%pN_Dm7e@n1fae"$66Un:ZaS[7mAL(Fg74&V^%:T8NX$"0C4;u"%L/m42aEna:M+a)(KN+,:+8OiG#BpD9:<67M %W)1U:KH!&tSM?@1^b4QDbVFkPVi1';JDpai#bdX=5p1(KZ(U5hANAWO5rYVU8=K<$@o3Xi$jZqle&M:#%1,=ENbsR@p(jsDItkZKa@-XnE1Dk-A7B&_1@haC %k.\b:&]VWqlTR`Nim`Xr(#XCF>TZfoW#$dT[PYFg"JI!T%])RV&0Wb.cKdX;:6\A&6L(QN`i#L9%[%1L,8Us@0k9`.72I.$64#s8 %"0=:DCdjZB!21X:a4u@;MX4bO)+7@9LPU1a+hNC.6^!*7%08.2R3<-DR0J>Eo8WsN23@`Qb_$K]_6?JfP"(]CB1&/D6=Pf`S<0Rn %7ES1KVBq"]^fQqQ#-f'$He<%C?DQGrN?rQ>:d\4q3>=g))%0P`+F.Be&lR18"]UI0RtaD.A1W3uWpF1?H#/-`7l-gXV`[]K'YZku %+dSL7!Tq84K2>*hP9D)oN-:oX'g<96E8t=lg^mtWR,)Y40[ %[Yis%H@;8Qj!roU"Q>YLJ;@ATr=BM?J=RuU_J4>UVhBc0^I$>0ZJRhSB+1Vj*oL'-8+cO_?q %;Ek:dU_tIgi9+6]A'&FM'Vt1PYZVDtZ++Mp3o\k4nU!rK79R#f1+OGj0:_KAF2i4eZ\fk`E3sj0$=?>^8G0hs'.d5+oI)]#RF_aI %0#B!42TYP`Ar0&kEJ+1l4S<*>K=t2uH!#iX)/#IRXJ>grg,(3%.L,_NjGMn/fSg7"tYR?-t+)N5+D+K\-?ZO;Ql^*0I^7r5Z!;M_@Q/Z;+`*=b8]eH??6oTq@clD34ocgq-EG-9L!)&#] %P3P9.>.V=ZJn@g]4PQ0>^G&L.>=Mp.&n!C!m#ec2FN'1qA@SikbQtF0i;2:Trtj=1&2k[YIo %!"EbX`9n2g6=W"\MZtMU4jp^f)QO"I>fIsbggm?tgQfIRlrKOh(O,=J!^)>d$?'&mS]fiB4,_/PCL8;O!8 %!%*S]JI2f9K8,1qA-O>f@q0&N)!-J3"XVNd=9>'#`(G>B!CtU/P+_#0&L8W'"L!g&U %BaDop>oH":l(2m@M7?S;(FrT"@'PNe^*9B/WV[iK1aqn_5p>o0eVk2)8kb]fb[@hgdPX@1&GmZ_"$fmQ86U(k;?j=g7pc[*p*3L%3 %\Ihb:`+1@J"V:^)arge$;c+s;%505'Aaa__7O?F@<'ro,Eo#0Y!jrEBV4=MoSAtbfFD!jk?oXAofaMkP'Jb)+6cY>0A0j&7W)f%ZUj1m$1@Ed8#+O]8*U^b'"$Y+WB9c5?YkCS3VMoU#uj %(9.5fXU!?OKPeg[J]*'U!@4EAPVZ/31)XLOgio_FR"jE#-I*)mm7Rm&=?!.Do,YPa6GYdQWb\hnLgF7";[p6fj9k3`P%J,4^8Qp& %P`Z*)N+Pif3E$7J91^e;Aop8!\CT.:a,o`t(MK7nld,=D5G.)nXtU+gd*]p`9bb?5Ous^s#e%e!:Z8;f>APi3gE`\L,r^DfME9J* %"3kb$JafR]he@)W9W`Q(C"$SQ8n)gg=\-\$!c>mFXEFT5WalcX$7nGKT`4PN;NWZQ7q@O^M8XhH!0p^Fl\>NG7G(^]H&rF_i58h< %9!#JAi%1ocl[%mW=LT49aom%##sbL,"9^migDVk0Ju2%Y]gi>Air\>U+V?2_ek8C^U_TB?)+sp/mQ[=0q[!2?E$bht,OH1j8ZJ"; %!g6'q8E"kgGr[T):V_;7LV[+BWO\^J97eOc3CO(Uf\*P+QPh^d"tnuDJ4uTIH=#_@5oV^t:AH$^bQOra?+'MlH^g2SlV5kn<)Q*0@E<`^2dU3(]L9l@K]&MD)-KXOf.cj"j0XNQK`l0q11)C*5h0YppCg %"Hhaj[#FGdN_Bf_g(J(2(J5BB4"iieGCLn/nONX++V[fn$]9aC\g-04,a(_!b9X$kMVLJuK7"Q6!cpA!h-hf1-MI*U#"Ts'-&Nrf %NW9V0bOU`17rb'AU*ml>&]c._H3-N)'88i]?t<8:(CEAFodRF=9Et)sC*c`'/C5N/Lsqp9BhTI3G=L'>5TEDGcm+Wn0>ecmX&FE$ %4<,3;/K*3sNa[9oB#^Pcg*WQ),-]FIgr+MhkGaRVR)q2"P+05ek:*g]+;U2:)Wlo*bZ1>#9OegK_cXeH:dFb)(dbHMJGrL@.([bm %3Vo-a/>me)+Pi'(p`NrPpH')"8;KCEOGH8lpam>Q&g]gVZti!+ %70^0Mp^lDmM:hh6ed<^X.m")GU]gGs7lhg`YdZ-N++^0]&:):r5SF)6;q!_F)+EW@$oN)K@^lJ>4tGPf %_G13,9ZML^&ql!+%$.lnYtu<-j;Wa0E%f$G9I#0X*I0ng\@`B+.//-3Dl&-R4\NqAE3\?T"%0\9g@?VEO4Bkb*mEq:dB$=@J*!D-)g_4,#WBN^< %Ah$8Gm17&D@ldit+WMjQATq&=il-bi`1b-]EX/?gc7"@!$GBLb#(0elIG'NE8clt63E!D.6)P8aiap0#\P&:qbtqkR8c=S%LNJ#J %QBGC%7u+V(EQV[-+:2X"=Jok0_IB22&VaB5'=Qptl.&@99iuL& %%UESo_$'OUl@`/llW=;mi8mcGn8\g_`f!.fJODhM[3mVg9Ld0@"oUaI3uHU-^S^c'S]8WrR2 %m%U;udsru_#%S3=)/9ne+!+s$N7ghA5G8o03*$H//4-GFlKpoWL@FFRYnFm@=>A^Sm_IId7LbM,443PG:rgaf"[m^S+=\n(7sHZ: %$2:MHY!rEnHLTZ6gJ'0!CFC@^Tke0GJ_:;\09]pCm%KUpPoDlO^l3#?p82I+c?b>BO9BP9WgoqQf*V=.O]+4Y66`V$OH5c8W2VcQ %XkGJ0fXNV2@Ko,B>(o"H)$CDl*"8K.mULek^l.>G"Do)PP/N8(d+CIdjZ5+EPlt]=,lXc.Q5bCk]6%JDFX@GE/-a6">n%MZ]EeG' %5b@P"e0!PcJ4Ks"2seAs-q%06*6=gb"@b]*E(_8RJZW>rj:&ppB#7>C/(e@3<5Pi?VXfAm)GDH]K<(^H+]def\Q&sCLWu(qiK0`6 %A5]?M:)oTB'+YF2$#1hMmD,\G3G^R0,gq1'?qZ6K@j)sSL5M1[,WP9I-GJ]XNGS8Z;?DK9 %iioIga=112TL'AbYQG=c8Mh]_X4HhEK'Xf[#U0BpUaJ`gC%WZQgGC6Z[OB?j-Ess)mCR!V=:Mn^4H.`W!.,#nZDHohjo@\V)W2Yk %YY7hbg'K"e4?";I846=k8Kh4=OQquC$F-Ir*/eF^];AsZJq9>T<-_>9V2V3UJ_H&c!d?^tA;l1@>,+&+.q&mGj^XrjTE'\*$*V+@ %_!rVB'XB`YH+6UP`7PSCHEuV!]Q&ePUVr!=KZo+lLD+@b.1.?$;H772.Q2?V5Y#dfj*Xq`WraI%hqNklK$cTc'$+$UcdQ %$)DKoLY3oR)GVD.'])JB5%31RYY"n_@($(AeWG)1RHY(*[?u@&UnI?*,@DWB'(X#YZc0^:W2CE*#4Rlahs*iiMCJqDKqb!"&Oc$^ %A7LhYD?.Sl>=+Bbif80TOR5!+0PHm`pGFu]f/23jVPG(#.X.M-#*g,u/ll\.:X?W8S\n)"UjgmrS9>F4nqsKNbDDjSO@(7de?FH! %0KLCUhU;?;1;VW!X_,9FZL0pILO4ab$T@='6*o07\(e#SF1Y:f]*:C^[16P#s-1j@a&]e-p/(.a:ApjAHue()D"a]k.JfK7qW"[3 %)smKJVB(Z9X)'YS>Q$jKSLc6s2)X-P?F/=a/GFJHhhRB"SWhl]RFj-[@h%or;?8$)P];\U[1f;NZC'gi_=d8GPC\q7=3TRsF"4\o %nkX[[kiJXrX'31t;IT4lb(2X5DS54UlDMnEb&OV6fP7tu[JimD%0>\Hcg6-_Nl;Er&e$>k`%J$;63]>EXJBlAI0Zq]`j.0ZNu],b,,jfYq0.ARtmM4"'LX'E,bnVPe9:3LMk35oSY!na$qp"#a)JdV`/L %UrW*6J1F@&7gG>Y\(mJUq#_'3j]*50.BB;`[ic=7%lIXT)g*16`Vjjqp+?1qq?#Jk`kT/omF&G[A+!Orh3G[thN;E:T=\E)>p8^: %6ru(7Jh,V)(F$?i3XH1f'2Y8R'c(9f&1TLlPYS68=0gh=ZLYKF>)C,1qgY-Bfb*;*PdBqk,.S^I*hpj@Ft>S)')sCGk&;MuKK2Yh %$j)lcl4d9(/(!-@P$_a&opE'1,t(4=T]gJCPc(,6+O:BGj2^tSQ9]=BVGtNJm_l1,*(5W%ZaIkeA52;3\6Jk^?(I5D*0d$]ObUG^ %_V>PZ?="%45mW"Q"F"F"(p+b`PppQcAG7<==K5O%kS]7HGp'k9U'P>2e>im#NX>OjKG>Yr>`/X(2,f@#&L!.%_)4am*p^tq3b4Hj %K*&j:TclEa_njpi.EsEm]^p3?k/fj.-DbG(VQj/tkSj>j6q.,C-"kFkW3lJF&-L@1L-mgHmq4FR0(AF%X9:%#ZtEnQ^61Hf^QF@3 %ZK4S%bbV0<9,E[Vq/=GF;LS]<*)M/'$9f'EP(6j]aZh>d"(168BLX0jDK^V_)*K^[Pn6(:8Kt95e+@p;]k:Z31bLqS#DW9h:95T/ %I=U:DVLCG@oe`Y4c4Y^MC?Pqg2j=m*D2%CA&S8WI3tgu(]He&+f^(PO`q)f@a@O1R!f4KU&=XEM=UCQq?=9%hU\kZ/G^seam$(LM %$;79EIlf6P&\DJN7`=57?=:!>PTJ6&'f*SNk=TBE-XWWA#l@834M57,C`+Dt#sq9&e^4S&a88gF2236W %K7P0LNXSTZ.Odij.*I@ToUO2n?BS)`?BS#o;+9ZZ.*.`B\O\K6@RW"ASuem]h5P1m8h0KZad4:l7>lN$DC6uP,.qW9'e2f;KT&GS %,26VE%QZ*(_`*kl]*HSQXkms)S>^IOdV;`^HKY6jb)TC6DXtf*U<7\L$]FGl(/\ign5k(C^:q7g]!`6Q^o?d?Y'"[H5N0sBp[lOV %k>W_Nbbn`$1Z4bh5F/Nf^aGK[X#COFHD]L_SM>6[!Z-iV3-LC"JlkV.$"ri*X+57_L^]r0lkq`ZI"@YLA!FF %%iiU'@BSl0#6eO.54rWf^W.KD^Y<%@kqSrl\Tn3G^@VPW-[[?c,u!pU/8E-:n/54S %-qAkG84Z2&"W7d_`i:`2TNEHtHNlo$*fUoKMNA>+&Dn32EOLh3cQN'T@:*gV)@EOJ2RNB\XtBXsqO.<-"sWqMN)`nV$trt1%=2>W %bY2>rUE-"tORYD02SVquS4(&CmBt.h'N!KE4rhhc#NmP]l4#A20[K5%?Q)I#44"bRSn[Z@J"aDTg$8DEZG-EW[e` %HHK?SC6koq3qb!HAXF;oT`h8;B.CRYL/?:F4X7hU&bc[;RhA[<.*@<*c\ItQAWNOE&rDA\7)8Zi-3F0?r7Ul/j[Y&dY*XTAI!MM\ %''os%S/0&35?30o#?_X7RhE&1qE&tROt;_cWBdNU-]o2NK[PHKooeZ#A>C>P?;^h`3EMRH#$6(P]R`(GB_KYC1qRlYO=eCmJc@(D %CfZY@/6rq'!nuV6o\eD$3d\b54sXa]TR)cB1QiB%S&HNj/J*3E!jRLIDaHmb7?VIac+uM2N'rT0I7"1XC2u9_@NK6uW+';dPmWK. %KhBYkhB(nVao^S<"&jM5 %f7jI8jo8LP6J-T\8)b*3+2a^>gL9o+jG>SS#WDqKiX4^&EGjF51ZqJ%M?IA,N)N5g7\AlJ[2_n^/&"VeI4n*K9)ml2KBYc,Mc4 %0K_0QbZ@uk`kAk5E#YcCa2k>VE]N$;ru_)\gfrPNmPZ#:DQg?KDnN-Pe2s45n)gPWD^reoOjOVKF9):?).hq:+5TjUg+>sRGt9bZ %&3/MZb<3Lq:ln;:!Vu;"'FU2+"bK()R'G;_Db6X+4AfZT %M'(n\KY>MY(J"mldPF9jflX/"EMu;lP**^pNFrj0(Mho)5fkeI4ps[`R#cr0Nja:bq"12;W'dd-n0LJo,hdVnC'@4=M+#^@,lf\L %3FH@VR$'"9$in-GC.pIJ0Ec?*YU,ggP71K+#`q\'!fgfSM)j2g\\)6JAR^YQ]$,g_U7`hS3\W*$C8![_'CnUpc5i,JEj8`9K7f&>q!#bXUT*\>rk?IKjM>A$#A40!)fI`miaI/G._35Nhj[0Blajthh %3UM>_bdI\:eI]m6D\BYAKbcUcYn]Jd*eIM:*1HuN!X$h(YhnI/_^MdA(n7PY0Z%u=E+_$IkA2!8fj''J9&]*+Y7R]HA)XKAK]Wt: %BY0OWI_NZ.Y0+^n`S)Y,Mtm\faW;".QV8s!Z6uZc/C^ml7$Xt<5fmB+eYEfhNaORsr%MpqE-^S\1;uq<,le^2g-Rum %nWKnZ3o)Ls+GFTt$Ndu;M(mj(78Xs:6_,#=&g!MWA6BX?%l$pc>'^IJ3[@AD$]qJXFS+!rUkQHd&.l-,Z0r6[6InOYDeD0*8gWUa%2i+VTYI^S1&CA=L7JYY)o_A06R&9>[]k[_XA#]7GA/bkFp+e%n6\5d/gkeQ^,1&Bf-=\>Ua((6$EXRN"c\"PMl.MUB$3:-jGY70@N[7/C"?H`\Hik4\S@XHZb;d\sY/_!( %N-q[?j9$H@KOc$qk2GioOQ%l>pg(I"Vhe3-*]06m:1WRE"j0KT!3D,=M7$92UAQ`P=utM=&VJ5MJhgpRCG8W"mF'6'f5AjpOnOc^ %DPuE6P_:)#K`_#glqh6$MKuHnk$g/TXFsKqROgn;X5YD.!p3[=\=TcEaB;a?V=:h=h3iaM+:+G>6GkCeb,L\6E#`_QDIj&A(.mC@\"5:.]$YZ5`coH$-Gk,Ag7R2`UAVgA+huf'$DGj@.QbF.EX\Ml>rq %C'o[+\lNKnO_b1]!pTMnpao7_5Y,NYBO+i`&(3u_-D%Rf_#t1^Pd?`T5@NJL/pLW*-8Z5`fm-=.+[k__OUoHm8,Y&lX@+qg %BaU0XLp:E0]7@h\.ji#]O=)*.A,.,[X&M3i1i)-P<=c;)r:m#/N!Llcf*q77?!uZC5`.OL=Iu>;bk=4(VM&lJW/$ML;6\Jj$M^>o %P$1lMLN%OSdVG)#?A0H+6RKZga/!fH+=#Ys4N(,Yc5A6;>:>Bq'&!!$"iTAdIYX'ULS"#M]q6#NX<*TI!hX+)IK\hk(FATJ'e@1j %Q\:f#^#`G;^"4VB_:X)*1ehadh;9a@?oN(C81*7iZ`X`!tk8Jg/-9jn"4B']Z/Kb?L6O5Xb]`)N13r366PPTuAI\ %)oS*+e\Qp"=E"/+;%2U;ES\dj/^);"H?s+eeOGn]`YGX(C)#bAnUN_`/JT/FMjkMJ]HSk".Mb@JCJ1S<%?`!>>4,8':"%/'_&7>K*S)\O/n$Ceaa'7SJcYXcX?0VgYOp7\9N:,&K\BDdGiDAlPc4XV9opU;1Bm %8l:fYb>,Tu+Y[E,Y;X*;oicVsNiQ$5rhU=n8-:h3+bhu0.$c+d7O-cj)1<"U-5$F=#c9PFQXPkC"[ %!,;.K/^S)@Ong9GJs%=a()$\+dEN2T^!d=T)rfhYcu[&qM@`&5HU?WSHb-`1]r@!8&Ao8p>]lJ*H\s"e/]Of=,*t!O5[oGf7ETcZ %USe=l6MsW5e6(-U,AI?4&7i.)o-Y8k$&Hs"`')UHNOjsW=`j3E06+`dTI7NW\LJHD\o<$99G/9ERuJs#)=k].Z/P@,gdWI %aLk*\P8mJ2/B%?O;:8O/+`O>5^P&X]K'on[R%=m!-U[)#F`TPr3`KZmBgE@E+KucjCCm^GkXj]Mc?BYId]r<N#rcJZ^chYb6<^.)I[dgt]Ord*G6=+YaOX69iN2@W\t(N9KJmO3Pf1]F"C:'InDYAuZVmKUBssiW+cb5^UYLNoKC3PYhMc %1U8&Gc,WI(FHGdJN84(#`N.6&0&)&p?eI#@NB8HbS)jKDVB;?+d#0Wge5W-#dl<3"p4.#d]E`C='QLLrd7[(J6m@1"@D][;c2IG& %(`S5"OW#1^naX>bYq,<&GRSh)T<5W0_ErtIbmBjoFX,VZ"Z%J=]E+11\o`bnKJ%,I %bUX!uX,oWse$Sjgqtah7)(XE+OlXJ+geebb$FEhshg!/-3/E[.[Pg<1e"c95G[h!t>Q4M[:bSW6bljB[0L6mCLUc9`n\pSH,Nf4A %N&EI_^a&@jCC.L4i=PJ^q%j:)Kn`XT58U>gV980bER)!/8H%ktS!ZlZjQ#^4XikU0M_9URP"-])g^-\j9Z\5g3),"%[)mG\lSeZ8 %Q@#J9e?Ydm3$A`R>ETD@i\q-W-#AWli7dm%+ClZcF*a?/&:b*C29Pn^cR0kTJ?9N#9cM9:ZrNRhUV1%]9b(Fd,^!d]^%f/W>TD;W %)U@:U3/lFP@<)*m;^UqE?I-UKfj\q#>1VA3^qDo4pR5^TP7VE2B<6thncP"\YGYV)^%?V6rLidDQWC:?=`h[&FB:FSW3b$LU:P-bR'=<7Ii37^e[i?-mQUAH7!9Hj^V;EJ!rcZp[HlS7GjifSMLa"o?X:ToO8Te:T8gL` %R-u*m$\H*>l7[tif/Jng`]_qFEOnuaJn!SfY9)NEqe-lghQE"nAt$Ee?"[X`>= %0n!KIpY4G)42g4^5I7/jLF5'R&(lJU9+@uugP#YDhTHDc5Ilr@Bb%M@)Oo5Bn^p!BJ-a34'_XN[=;84)LII9N@H]h.KAk/rFeC7po*-VX3c0(ONg#Z>rsg_mU!Zn+CF:AR'baV]KQl&Oh+cU %E&e63@&W3@mX$D^HS[[YU#eXUC1E5f\[@]S3aF*PkM/;McJd5qUnteL62S,R"0I3(%PM^SL8:`12q'`'R;:r[ns@:].jdVmI<8VlG/'8PeD=urY\`@^oQ_4U+, %J)TgR:A=JmIlO^#P-\(@^3/7O,3Rcn-SiGTAq.KudhE\cXgT0oe9@fcX&G,f;C\XUmV8"K:)q$\gZl8<=H"&V^L;HhcCi@q@AVh! %2+e>AFq2i&K?HB'J"^n,ZecWpDT>b(1=D1U:qKGIdg^SY[8D4KhE#^V+B.YKC$K6a(k9)s[aQ/a/O!P!IasYB$8!eZ4Dmd'K<8a\ %l\+pupW"iV8PY8Qg,s.o%flXHh!IOf'd:D:p-aDu`]M'3Gumt!p=,]`LB,9`#UiU3j,O.=(u:q9I" %i)';+3j>=?jge\gp=48ZMd+jrh6B2(%Kufp]lE7sdHL=$=;HlGGMdLGNUC42e(7Z*rNg\G:\fk$WAha]`aO8S[eH*RU=7K4n%+V& %XaE#lU":#W)Adj4BMe+u\4S74XYI,c=5'gt=4e=qBQ0V^;42_NpS.rMAFG!HnanYLColD;S# %I,uA&Bfc9fPO?uK;85,i#SZ:#dnM.s^ai&H;7$(!*SDT#H23QE-q72XJo.lW]q.]hB %TB=6#DGBpl2u4NB1(hqIpn%!e0:es`1+*(F&mAhbSV%S+T/`.udf:ba33fa"NL=_#9BN1k3@aRZ3PssX`;)tg7jWUL@&,'4VH,oJ %^tB]mphqaIki5qoF&_/\k4i-+JPQrER!di+a18V\qm)(GBtL#!jpJG^T&pnu#pe0Sp5J2h2?HUIIJ;(k9O8R%$5#-BA]) %+J5,cjp1bQF0ipb5bFN/4s4.OQoXF)I$%ZIoe7KT,+0B5/igsnUrVB#H%^7.a5#fs?';M$JX$@k?BW(aBIj3nR(57u(/'#`k<$/D9,-ndfAh'SLn53A/lO68Wt><_0SqV:Z3!@^.I[CUYHQB2'f7:O`,GEL*$+.&JWCW1^MU8Eub %DYf`i5->@_i?s'[PqS/GO,V5J(7"'kO&&,Br^:QE^59)lA%/>Q/+%u""_;KOq9Y/p\HQMmXNrI@+->JlU6!m+5<",jC\XP_aiFFm %!@47(5Q7ha,G*XSk4Xl%&X4FLVgd]*0_XN`:5JdC_B>E(4[*uhq9uQpUqR.u8>&^QopZmak(\qXpH5&e53D&)h!jiB.6QJ-ld_V3 %55qZQ@QrX;1:MX9'&GF"If)phLQbIsCt$EpT9#KL;<3#BY<85em_cfCmej+X/2Ci;&"c[b5+P0?l)N@V?aJhlLF:W%PA@e^3,pNr %dVCa&+80D+2q3:MMS5!3+'O&.dl8LIa*PJgdgTgIE4T6A:;76%7\QsArQi/V_0qLS5E\]X90*Nh:ab5d2+?^!^-r$?spe034P'G&Oj5qa]!iI/jaEG,d?^D!]NeK170'CP(8UjmtX``CS?KGn7 %I5L/2RNIg/qeo-3J(756F_f]dU<.ntB7b]>IOU)H?WX7)Zt*tUN(=ZX+-CceR"+1)puGN#"l]Y]bZ0H*U#A47/0a,?;#F0BSq#m' %q;`@<`$>=(=%i`qL-'=*F=Bq$lILoRdeITNhDYV16BHhjmpk'lZh;&eAq[][.p'dcfb%prHe&&s(\Zk_%$<;j"E;3[.<+H-i!XUn[jG27K(QI_XD[T5`Ak2b"ZqrZB+blLIs*^cLidouLIe]b&9Mu&EZ]=H>S1pada"r?[qYLa_rrF>SSSq8G/)Gcq#)q4BcV[SQ1Dh;@B^i5`JHs#1?>o&"XmAcdcoUNiQ//?>6u>^?GcE %VqeKgRg4(HEP"I@:m7>08u2LCc4n6\afBh2/&9_YmB1,\iW1c`Id4ZCG5Eg<486NH0')B?F/I2gC/Qe,C^?-DY=mM %oU":(p$<3$kRT32o4J!tnfM2hO.AmBQbP*iaWJWHP-"6$Q+VJM)5S4MJc:b`nj'ao\s:V$NR\YW)gd%%G-L. %%^J][.embh:(WD5ckR">E60>J*c7*EBR\h5XHHp/d"f?5'WW@C[TQBp^;U)\4O$@=6*V;l[g>E41X--L65LIhVd.M%8l8N(Wc%#!:am9(c`*q5EOJ7<_J*EQ+pt %T!M=caI?9ZOT1R0ha4SL %*lBD,(eZBT1>3;G1AW%%2)j%-V<3MXeU0cm$+;slGn]PkL^$uqP#?XZ]Eu\VHaBp!^*o%0*+`>8-s*i[-)@m)l.:WdX]?NRj`sdd?JM5X&B)D&mh>04+G58^A+L?>]D,,ZiY_ %n+<(c2fcG%`$X'HB4jstP3uTM_Vs3nTbF:"-Pa%%hAgiFrqf(I("6ZN%7@a0!%\J?Y96mQ]ZT]l^cQ %Fg[BC]NR'q/]QQ3GVqQf/OHiONJg<,NRru@CBRR>*tDBDVmJW)Y%FQ88.BU$cn9!sS[A-;7e%rTVc3YHTo %-F35q(J='.)K%\5e+TE3#Mh:EoDbMDNH[?SDQGe_K+k.k\YA5k3s^&"Ygg:5mEVi!HDeYFXh0n-%Yt$1Df^C9%P+#up?JRDmorQQ %38b@P&!c6_&&4nLY1;VL9^dfJoP1jTId0\hebYrQYdf0Aqs?3dr$prYq#0$lNGmcr`fD'G*,8cWCLoKu5>KrR=.tNOJKl8jguA=o %^V?s>2.2,;Q.kf$#Ci?0?gkQIegIl`ZoP(CJ,8Ul_#1SE]E]_=l,VOQm-anf&c[+qrlnN0"]fLpF&\A`]iJ+*>i%DD:3Vn_\tWdfLjeP_n8Is2fg5)`8Cs)bfs29u)OmcfM\]qJf^QfDFX"`@f*ErD:+ %Em[u0ZoX!1n)hM,W,aQ2QU2W-lJ]_\lNkf$"7'1BqL[asda="eM#AL^:rM/9MZQ$.+DDhD@Y!7)?]6iCM1fkf/Iuo'sDY!7u %6\b0WDIs`SV'$).bbO`[/9bt/pdCW/Tf$0//`R_HAgc^ClW2U5nUCF^EL3Dre9ks$o]JWijMJY+acZtJkQC.p+-Sa,clG+)Bqor1 %Gh$R9QMH,Xb.ODi8?^#pn:BB%mUH%60A>a(D6Bl.-0rIELSN)$h\B5hidQGY5%m49T-q,plEW:d7[HJSA&EX[:j5HgE'#Sk\NYTfgo1JY#]ttX;o#[Y=&Ll/&1C0Bt*CHGMMMUT1RQmMLqc`)"lbDTNgk*0k.K5\mrZ&"+GGo$A$ap.iP#/id8<4Cpe*j4kM;KT\@K701*Fp>=_$"C>AdffW'MnlQ\sa)gp_!Z %N"1lou %2@jg-m2!1Rn/lkcB2ei="c7*]?WVK_mZs\q1HONbc!LFOacUr0Njen'i6mNHR`,Vne3\esZ@+ZTk71dEgWfH@qS3R27b>ZT<'/"Q'?Kje+\,:(@]\Uj[J(HjK]&HWH;8+C&ZCTm$hs?oM4Pq5eN2(6/.o'<: %KRp*JJVc%K!`&#m]A@8QRdKh&++sL6SCT06B")!8Au/:jV7%d'/O<[lkkXQ93_l]t7e;&7XkU*?M2,Elj,Huc0A_\@\nb1ggC!aK %S(RR=BD"`C*1"qIM7)r?1p)7eG3dB>*gh3PE9I2)S#HdMSaTk+(OdOP:Kkm+ogUb#j?_nGL/Zs@hX5Q6:PS;"amWe0TrlJUJ8&"< %bJgkCI:OcQQNn;bqjr#jE`2l][V3/,C%Y9W3lp>jVN2n7a(7e4+n)mW`3[[:MP%HUA&Y17pfK_0:YK*`&@\*@kO&7:iFgTQ(q=?b %2dpOY-8at@kFeEJj.eJ[.IiO_[5>;'`C9O&F4gD#^")F]9gn<10YCX(3Fm0WQPpb:2R]q]]!R,DrOmSAN.'!KdH-Csr"YtSgL\E> %]@lCkoX"mfWEWrCebn5tRhImg`L4]*g@QislgEV-2l#UZj^s(@72X>e>7S\NTNd2bIbe9PmkK@:YSGh[oHeNT\:q-&'A?%C`2^B/AXa>N]@4CkmqFm[/jb`\@hb:X6:q*g\mc0iu!dd=S)?jf8."Q7nX_ht=E3)[FF/Wj4 %La#s8biK^>*:G@J@AS@2%kE71r(<$oSc$Pc;sS7d`JsD&2;HnC]sY>l\+UO#Hq5g/)eR1NKn+%Ts>.7H3fWO6+#`]o_ %\!_!?4ERt3k9H<5De\phi?#!SFgP<;mgM*]0RKl/,=eY9aM*p?LLM,X`_1*YbD %T4sfJAYOF90V,1]0@am/rqUG6@i23/]%"r"Tc7p9[[/I^Rg3h5SK)ZPq=2JugK0k/hQ4Baa&U6d:Nhe&mH2W)S[uk<689G@._W`+ %InAGUg7m8mAc6qQdk+U`XQ?]ZR=s(^0u?iY][OB`9!\V2m-lK>GPN8/S1Sm'$jIpk\n?f](KBU*oS,hZqHUN;cnK'5k]RMH,T>7X %De[H_k2`KsWTJ2=jUG\f<9<*3GFJd'I)*>mh3c_pY@]ZHYE`Xj04YCtb]=4#s#6t<2SlI]ga0Y34juchRfH(j1qd6r? %(T\e0?j#`nK@\tf5%CVaWhoYUl*SOt*N7#$f!c0ZrRPuOU6.Q"lRgN84JH#>Ph_K4Nr4[AAk %je%VJY8I40D.:J5(48$8cHtf4Gmpq*h3)U+c^*EpZJN^iNAGP-CM%=RGkSa1rC3R2T/#V/kH*L\Cs(Vag;,X@7gmL[DG);)ai*-`p1Di#?]Vp#1 %l:]VICA$YON6['.H>hBo7_N+WhXlE"BD#a^mN-L(qJrdhP8Vf\ej67cZjn09O.a[\!&QL7YG0I)e`N!@m'(O"B4\L6[SlRGHc/'R %8-CjD-T9%GC7VpZ(gal;K$"l^K"U4L$QuWS9`C!:Q>c"*D(H.M6rhE13>=F.N#?c'Y+Tt1#ApSlG'5kDe#9.9cKecqc)rZ/U36j7 %EJ]GnQo05]0l+V4#"ebeLFGZfcdMBqD1o"#D,t>mpN$Qo[,^8LEi&8*?.JIM[MVEO".QDWRdJ@3n#2YfGhCptp6/-O4@Y5gB;?esXup3q"]QaB>N)la`E7om(dr4RX=RF!km?@9B"beqT5( %PuhT8qL57D)Rs09IOO_\^/p-W=o)3b%q\^3ZP"Pe(FO;MIc8LTW1Skg0C1eAD]d#6u`HmptAf"qd'qnVsoh9)KCk(L38`G\8C6i!#A[g-*SFjCjbt6`ZCh=U^<:SVJHf,MU %:&tJRT=YZ)0L^c/4@!f('&=8Vla'@(*JO-E[9M\a7H]e#bFZ7,(cMYB1Haclc$no-TZB%ZE?/+-dXUQ_>eI1!G`,k;Y@ltbS %0l*Gj#>Qmjf;pT)J!)9GAc4`DjLT`cI6U@nS3!hK3Bq<4AK\TrVgf]9#93>#S%TDIbNqqYEA2&"EqlRMmGtA"N_\KY0"K^"C_`-4 %PnkAgdqJZ-G3B]Kl_p'V4>TcfiBEWbG7LQ %VVib($80j1ff#m>;pM+11t"$/C"V`AO3reb^WWCm-Mof8?#s)XYHieU,ROXJlW-W[IO7>9=0LD;fNo&+76SpJpbSOU=$'LkS:7%g@[Z2-$Re3>;idNqr`qP2"+R[Pn&r92=e/8)piZX]'`Gcq,Y7NhK]@G\>@C9HhZepYB>$M %o4$bh]m)WM"/[X,:,.*TMSjA%=$GG5kKAsAG/478RdJ\JO(l'th_l!qR*$.D="\-//_:HPX:a4[pW]%B@CFtZ>TVJJbM_Oq'?=7h %;mKiT]>ahF-f*[P[W:Pk's)J'mIs5>knbnHnH!&\]?tg1?uU/` %;>eE/qJ,fegQc.#?b]lK>WqYL+&%(8QSq"4]a$4e(^O>e0lEeB@T<2(V?b]k&Y("c\2LJRj4C;2aJ%]j6Z.=_;hl**! %qtD0`0*Ye>?MX/r>km>FaNLhj$^Ut]Xr=@COQ$%^"1NU%p.JChgA_sh>ZqlH"6`PhpD@lO7,:t %#o4<:qn#'U?LBYa5/$pajo)gboZ)_=C[^tXK&p>!RCW:aT#omB=FK&`Fi.h+DVDRNGBg;k]3BLNCL03;;8(F`C"pm2l+u5rioAb! %#@G,L]9>^42_WL+Lqe1FCYbV$5M/-siLYPg`D:mKUX#V"d%gBe(RU@-ij\ID%`[b\b.F-_2c-ej$eFI1K\A %nVi+uQ2uCelVnFb=1Pakk %IJ:oDkP5\2WZ>9?5JJ^TQF*!):U:A^l`M:GY8qXGh.u=8Da4*Xr`bd6]Qmq*D;X.*>m\8m^AbXo4*_LrHhm@Sc;5.]HEisP>Batg %FOQjPLN9obj`/Vd8L>4V>$/Feqr.@1p!pKRnX`8Fh#BM,>4S7TnNlp>rLLdfb<+#TkMnoi16\PScR/Y'hIe7kETbtm9&EtZGJ*)#_u"^HA2s.rfQa^7s4hS$4fJ@cNh-#UC%^/_[Ouo6-8aETmI\BgX.NI"Y1J]*-_>U'E4B49 %4Pf&V3FNDhXL.#CDi8h[K8kZDY<:Y:io*EI()C1+R]fba]N]3`:VD4-'.34/m_/"J[s#,b_u8>\_3;4O&(:+DrUAR(&\7qCh`\!I %qQ1U4AbCgQs5k-DSef#Nhn8^6WS>O!2mL#%hL>7tqrcX&O+297=Q'1i\8giV@/o_5nB]TfZXtI=;.XB.***JX\##gOOh^2Jj6uGkDOT#&\(i;+Uq:e_Vt&,nip4'k@t477m7.]I %J:Ck]^@Sj5CUIIjU2-Bpb0K:1(Jh*t&([JEr%%VaI&eLBG@!I>>\QFsQ7uB)'`6?+hm@9TO*;-&gV[nHaL":r/B-9)1JaH:os1Qrf"T&pLe9?o"^gq$Ohpr//O?iudAYgh.A/As5qu)dHb*H^:KWkb`G=NPaoGT^4jLI@3,u&#H2Z3SA@6/Gb=JY9j_DaA-#Cb_P]H82p,p\MsGDDh_Ip/"Yj07mAW4Ru %KWT8ZDrG;WGfV(o^8uAqq:a"%Ff>g+f*dAhbs'-%J+o^0#9^XEDp>=76V`GrfRs)(Cu\QdR%(;SD_h69:MmbVFQ8efPk&DIN(WifedL-IIg_,b(==?@8uk5M3O>pqF65g$Q3'n"+,m=nTt$3)PhG7^]%44h$TJ(l7tHY2J%\ %e]aga@8Eq:=j&hQ:-3]jNjHqU;e4(N3YB3E]S[B(=]@ri9X,7DFh, %`Eh4_0'0[^dVR`J[cRSS,1@S%12GeFe9nNIoX_ec\$c$a':[U&X,4J0pn.R?>8`m0$8!fpQ(_Z@U2-K3J%,>jIJ)4$qmG"Yn_O(4 %Vi/Sj^:e+5Qot5ag9&7F)HSNO,8F^tgHQFVE[t:"p:mD+`4'c6^n]H?lHO8."0[>I^GnOHe^q3mgO$??X[`ojl!+[YduZ3Qc7Spi %og076k?*!>2P5$bh+*)N?p*)'26VqEe<"B:`E/+2SJN5Qo4crn(5;ZN/H(nRR_EROW4qY@s/n##J&]DhCt\%YsOl^\"70;bY(cMiGX?f(`)Z&Ob+/$ClR]>!X& %I]EhTq;1-%lYj7Vf2ll3Aq)3EHhT&:^,nR3oJU"qS/"*UW6N0YrgfOFg<#DJh7NXLao6atZ@5tt1V!'djk\,7::/n@.e`3l=B^/[ %H07EiXS>/##k77&T!gde,2Zk:^FuZ/:?.i5mHabW84qd*\*hqtleC=`epkk,Y[\d4J$JaY;]ee!)h.O^jm=FN^Ue]9f^g3"q(1VI %E!@B?3;8nEE_$%[43,&ql(<$[e(="aF^OsTmU!0I?e[e$#ES>gq0K#N,kIf)kP(%_2h,,iGuNUA+1Tqrepi&e\CNdEk,7gL!FoOm %D6J/EVQC]!fA+JkDu!t2gq?#,U,[N"H@EO)e`oHQgqIb%Q5YA2HgFf(qT[:YrUn_)HiNf7]q92%^[Vq?Id+6ZV;8bhZ%'X\FS#&O %IX]#BZuoK!I.,fshrRqh:Ajp6Vl$=W\+lt9^NEb]GJCci3#g2IRs.Ys5Q??*ltbXQX?P,Io^0O%f=\k=qWa3T`J+MVDo7iAkJ?n1 %W42V=[r95UV&QI;G?@K-QXBZV4MLR`\(:MQV[(8'msVZOI[-GUU:[<.$]D[&+5GP-TCUg7]3B&s2k6I'BXmm8rr-[(m*u3!g %n-bKVX"SX&IU7EYm^>&tgdUt^QYZJ)kGQk*S^jKh`O.e`QflQ>j5hB6)Op,`,N=ki-BAu#\H=_fh"L2c]=Y_^nJL"7Xc>@>_2ZLK %C3mV,\TRYEH``q?s4X&c4dfWs/)VI8#bf0.67SNOUm'XCkm=%oc^m@Jm43INB:'%=ce3`]i0f^D=j=6`.5*C8B3CT=9M+JO]HXk.PLJH`/Pn+ %Iu?1'LYf?Q.,snCYa8Z"V:+%kUFBX3kHtPIZkL\fjT\u.c)l'6A+b4N1h28DDq30+UK`l2UK:I*YC=A3X,Q3lBF#YuWK\k0jL_:9#-4url,MoKlMBre %fZLB>B%[>UYPOY*Dc_XN`KU#L[?(_Q;VfU(5tMlr&^0@g*\9MoI9Q'7bs#=KD2`VSE()qk98#sg!`d2Ngd^>XZ %kPFeZR]#m2TP%uco)#&_QN#F!E<#o3Ua4LG^!II2DQj(;Io3\ilAsWmUtW@$Xu7e;5Dpd,lJNJGIGDsqn't%^opqZ(P3/caLW>*\ %K7-Z#ub.#CIeRm7Dqkb$8V4$3:Y,H9jH\lA5@/%1!r"VK-SFp2Iq3O %qSR==\s7*f.)7L.J(2[%:@e[%IrgIV,%Q`IrFBV`[pIj>>G\iQ?-;o2fh>]R2b6KV;I]6UCc8Hge>H5n$VoD>Tgq_1+?$al8q,/k %^eaG:D74qd?^g5MQ:aq.iRPj3"?uU\*'aG:BWFQs>(!H$0.J'.VmP.V*>h[gfb]8%N*h!pP-<4sp@)'@#";KU=mNgScg[HX+[9n5p4SIN`JG6XuB/bg*qlRj&GA`g(cj#P.hT*Xm3R%+W[;YL67`jK)8C=*Cgqb8EZNG0W %\+U5g9[r7G0Ql5Wrql(_Ktf+=FC:q>Xi\[8he<6NBX.)-rV/A)XD^6DNpGHaF;),L\$URYb1FNiEK(msjfQ%DH2A,bnO_oOj6"2C %DX9(IN-ptq*+nZT69]h(Zo[(C)`(]"X]:-=k[OVujf)J@]7'TmhVWA2aCDlnR=7`6dTWhHWIL.RN=JPBo*UGoH+O!\r0ref46*a2 %h,gjl_t&8GItcPmA``K"mMP\NEmAsh1I!u]"N!Mp8>Z/4HaZkQ.':l6Nt$V,\+O^S3QdjFep"Q@#5-jgetpg.DEN(mBD#>Gq;%aX9Z:T,/CR4,H:jfm#+:BOP&*G8 %hQBlac-!lbDg?R!f=-M>-#(/p8+ie6_e2.0?@%c9q*qQ-q6JO)_is/HA!$KG-JG>PMGbiT@P"dg)k&\7JK?FE`D!T@HL/1IJ#0NKrk+`IWN=S:UiOuRge6scbU:)77N,?,X.;`ZV@)X; %M>O`5Z\2FgH`u=X@dA[5G5^sDG6H@&hJQWSrSA2.Bo7rVjitopj+M3@^^JD?1d#SmJEsNB.XG`(-!`:#UYK:(N;U%4SK'bY5Z1DK %bp8d5Fn=Qh^:kV;@H\;:0E8?+l/8C)9L:PgOin6ek0(PMc/m.#TDD4\-:^BmY46:5eQ3KE%X2-,`S]Fmc=KJMAfm'6U`*$YMmpiX %S+!A)IX@o:QTm&``aZgL2YmoiD231>H[T\,E7\=!FkHoe/%$l*_5N$b48.u!mhZ:V\(X^[jm@iP?#0AHAb7/@^Uq`i/(n`gS'*!X %+It)!leAt'87VW;0/]=Bo?VZ=i/HF;>JCu@ET6H6?X'p,\o6ZSQ.s/_V-B/P@+G&]/*p0mU!g.:RTAT.."&V3ZFP!s;O)a?\nq?- %onJ+lrpeTPaT)PAint^8msPoTCi`#ac/i!hf/epkN%_60P-k2e.Wl+8QWtbAW0Z:hSfa9JfgN/(QE&^EcdF]EBR?h>8Qa>=IhXAQr7f\%uPDO %j'S=\H'!'1ZgK0O5L\k#3nAFsOc?1OOO$?7;YcK`L*3>`ECi0%G4Gm2[8(^D,_=^[cA,^O':J(RSKg %.BQmO$$m^tk"ln7UL!(gr=]H^^Womq?3))@I7]I1OSp0b.FZ#sJR^naY-0uho"TP+RlfnK?"pL6'q>.piNt>P^1?Mqc&6I\Xg7Z= %Ah3G5NeLh$bgd'R,J_on]S:U@J+H41rlNLD?"[FH!Y(hk'[X(n:hg_!c6sO\))uqPC\pC %WIG[V,Gc\7K9ZuBg%p<(0C!_Vf>F*6lU,ll/brEuDqu17Okq_XJ_>1=[?+#L40>;?da`Sg3+A(=GGGK1[BR`;ZPLtkdR$#fj`_(R %8B&(16gCE)N`=))k>o,ppQ7'dDhV:KEUs"WE>pFWXR9nN+I*R45Jt^6#L\N7VYRNAC`t+F:ee=!q!'WHIFiU1g1k\7:\&OmleQo> %'R9/Q@@u")i8j4=oa[_@9[7DLK"q.k1OrHg:U!`PWTm"b;CMiK;>e0*[?+R^XJ*As@Q+*P!CXXC]rf9A^aKUq)boo"'Mhk/GVM$*Lc"E_)G?)+gV(=CoMFHGXo.MGhp0d6K*P:'+b)[7DnV7` %RGI4h8s#2^WdUsQKC\0FE::j_l1%B'pI)UA46@D>Uo=*CWrd?iQW\DLlY(:9h:oQQbbSO,Su-sC4cpf#*Ss!nUp9"A=KboPl-Aat %444V24DA]9Y.5eUh-P1j$9B'PT&-jj`uYAtg1S\hG3\KdGLmdX[tcn$Y"3L)5IUnrZnIVQrOp[S-oY:@0e %.:=<4n$WQfScg)]O)o:OU_bCPj8F>Z'reK?=H%1T'L7][g@E$.1k0`?SW.n=Qm#!J]*1a1O!=PPP:26W-!Z=EKXKZ/<1^`cV6SpM_M544QMt^?q7MT3`MChksdVhjF+co$;VCU%q"IesAP6L,iA] %eVns*oOQ!@8R_)!qUF\Mqhn72D3(lc %p2YNQA>DA:8I\Y>[jS_1_`<-R(X!I+4*fUFrc*:fBt8QXF6NGl/GWD*HU#3HQe)Y'\NIW&hTAK_:Hui(^MV;pT;Pred!@`=Z1$$$ %qQ8B$d&"VpdIZT\-`iqe;_7b:o6B'\qKb09]QKee*JEGd4(p38'qRDrF](iq^NicppX*f`/NVmYNa;_$PX %qc:.74VpRSrlDeTX"hr"X.$2@mZV#QoN,C[2Xa%.oi1g`4manl*ok75\AG>d$esqMX=ulMpeMLVRdke(W.t>BOnG3SHIHthNpkr* %C1t??,*uIp.-ULIei>XX8Jc$*IIbjWc`;!n@bolp_'Ft[Dr\hVo?[Fn%Mo.WS?B@/8:e(.if.r;?GH1 %=7/V5Mb?jA?pm1\LHe7hQ)o'iOeTsEnj<1H,8H5IND-$Gp8Z.Idc]`RKS>Y8s!CY#6!j3_c&oHKCe->uAG&Qi[1RYCo0c3`Ih/?Z %*X(s3ej9^RZ&SFr'.FK;,^:P&n)"dm/;aB+S,6;hj$c2.SWkL"i_rrM;>+j?dAQ3^B!nNTkfI3.6tC&!cei0f]D_X+Tk3-A9dqg, %D4L&"^*gYZI&Cb<.ZF27U2.pYdCi>*,B]$F!6oi]Dl>1Qjl9'j`0]0mL_"94P5;9UT?gT.0oEj#R[Ii%N-d@.$BTH;WRI-Isf+CZ6*q'"#L)s9F/tX+K__O9[Ip%Cb %Rbt9K@ql,ObB/!1%-m3<8;PBZ(s6D %nrMrB)Y80c(d*9SF*q,]a4s.?cKg;tZ,4goTCAbeZ3X#Q+(/onqU+p<'aqqI#-h29OZ:PD/"8uY33.0bLe`4s\q>'FWH7XSPio'5 %lF&q5A)>/0X.IP2lFCca<=ePtH=B1AgUQ)YdKDD=Ca7lDVL%$3GDk]h#(\r6PAfNiIrsDL5OPnj.)\:![[0sVGb"*H/f(2mNOE;, %E;[^iG;k?-Xds$O2o2mHopfMkZk]?*eN503la&gL7N6m>Zla!IDAi_(#F9Go'Q$Q!V"spPZOEBdYBrrArg/%89!q54ZoJ)MKOMNq %oNOPhAoJ7!aX!hF%ZCi)bRG8[4137qSWpaAAluV8QTD@9%u]V#^2o]Mo-\>qs1-9LRhQNP!Lbb!fQ!BUTGThcp^^&s'o8IB%2b_: %"XeS*s3U*FeLr\DEQbb&l`J3if-!#?hY<>$`eS;Pu0*sBp_6^N7Q21c!65kbu-)1AU[iSPBM':a\DK$ %>BW0s6EK"WAU&X71u?mY[$CMYH@NfAFO2=PLX)9u=>JY?_CFHpYmBprD):sNoQ;]/b[9\ogB+3kndN)K!rZiF/I&m.>#tgNELH&lU7[]=(+i],&X]XK$(2iE.c%E"\A%$A5C0@"AFr&AGiT%0i#Mssj_t'_>A*$4^n07;2lliDT+BClB[h6dtEUj:JUjeWr!ksY(Z&?-X %W]N2O"C/PU/jeP69A"EBA=^F($ctFR,i@@"&)Len*#t,qTi$E;c[Oq/aYo_`fF8eV0NUikY&+-kc12S-%H)j>7g;@VW_CW;ppkFt %<0+Ob/EmtIqqf?;h2@]\5"M!t=J%qqGf4BZ3`7A$VY$`;ddV$nV)SFEXu,X!G;)nGaW[0gV"0PpQ&\0mbo\2/8c&0/Cj^fk30@,L %NhFs4OUU3/_\8V:?HS$@s.KVfq2T%a9`$S62#;F:C%o7E'MJ:A3q/0ckY7fP2GTEE/7?c@&`t\g80;o?3\OhUW8fRR6$A(XA[Sd> %V@GPc;Y9bo*#5i7@0TN,UH#dgr@(3oGu'Irr7K9JflokPDa=FYYB[*PZrL=5GfYSBu%%S@A:3=*\Y4l4PfldXr),^;1@#B1Fq6\uc:$ArO*Vmg+_(G %M$Xr2S]c!ue3C,!Y]O)`4$7'p_sm:%mY3o(6Ba/H@e]9fI$RmB,L-h8AsI86?S8YOJ(E>/@\MR_@jVeGf89jrZ5?3ZIkS$Jo6?l$aYf.P54jdA8'2C[of/DtBj1T"\T_OQHbpi&#@RJXb"cRj&JCb( %*6lIl3.m#CGukChK@PKt#lB>EiEM9d@Rg8Z<2W''`.W*o(0M;VbFYho]0EGK$[iLU[bU((?MHOnMs!lS)t?7K^W!jrL0FkQG&tjn %3HVVCS'7OHA.22'6g((-7s+;AEp,WJOpjCtCr(ofFT*/"FLL*Y3HY6g=@L)`8S$p%V$i!_VfrY]fAfn,?,kkm7#8@IFrEp3GY %drVR&cCp^=>[%E'\[%SWLX&,:Nqd,#3HV\3aZ^SS#H=Si\*\SJhE)ClES)R*QWtcKp#(JWfl6ab9ue/tlGKiKVt]Ki*!dMJ]rKhh %IC,uKpA!pu!uk1fBdIP)=*q*KC#dZNP/2Gd^!iVsMLCQ3&"*AWXDm2EZ+cmT\^9AX7'7lu,s9RJdC\J%q%s[Ro';HCarHEf;USeu %?.3a4"gQAH6qa0k7lh!OSKDo9$kb^>lkM?(2hT?pYIZ,-r.c$qRI"NM#oPTS82qLLI+F+YQL*bAD.?p!"XUd+Y>>*U*%5[Wn3%1h %>FGaJ6Q1u$#$[sD3+2G)=R>+/bp,.Qb'XVqZQ>Qt(;3*c]p??m]_<#\81CD]pMDj"em\(%*f/pdQYlS/PG,=U^u;3^lNi]i[jS>6 %AuF:dC3dBrSloHcVrZ&($Zs!IkOJKSSUli`a7gF8s,sSiXh7T]]TZb$?0THen>Wh)KNG'0h,6)Ck:c<5I-=K3cRjJHdrkZ,k4'n< %TUZi`B!@n&7ppD]&04q9+'t?a;1JgkI!CP%"0=:V/20dTr#dSN2AO3tJR>R+ISmKrO\;LNf\-3*T@_O""bY%J/`(dJL %?]JAB+O)pbQ7!Q3s-4t:M<1"`+'BXZ*9BuJa!!uKm>Q:0o#FesY4oMXHX_?Z6mkd,h %$)4E`oG/!PLcLb6hCK3m,%Kr%/KYik`C1)_piOV1be[?(LJC1g0);,7%o/#Rl]Ul-NhRctX/.)d,9jHg+u1sG;?K^>.7?Qnhr>)8 %cWM_6QY2/r;!\)Ifcr6P+RO6],=3=&1_H.4Cr+dL173gYLragPU^#rD$'?DeY&XI.&Eu46P&iS7V/1 %j'eHhIcD]?#f-rK3JkL4o/XpCo27bGbpTFl6S#&:cLci_6_!WH4)J=YJ]p3e'Hqm@ioku0[U;p"9hpV7thSJ8YUt?I2cl"k4?3c\VP7NFNk&I9D59DNSrF==;_mu=i55:^n526Ql((p,rr(a390-:\!eh]p+LjV1K %)aQWN\>IT-Z^lh+^.HR2+3o0#W0S#SmsMX\>60Lbd#;b%Fc`BV=2n(T*!6Ta;d`]*.F!gIb+6lO1OR/#l %q,uO()EAopHT!p9P7O,\ODr(tOa'4?r%S7c%[gQ8-Q.L8/jp=daGeW(`Q'YUK7Hq9\R_LB&*B(n#%l(.1SAS@]i3G:FRmcgQ4TB-+$kY4FFC<4M2QQ?J/]YMCG).q_D,U[KL#[A=0;rnMP@n;1:2Y7;eQmN.LZ:3$7Wd/! %4BV04^%XhH.]=%ZB.d4F2km$c %c=Almr2jI0-?Q&6/Z/K0h:SG(WP'A1b-tH,SWlYRUq^]KA@F)(XKujF%(gttl\T_odsHH86JD%7a*2drNO5s7eab!SdLX*5kCrQT %Smb-$'a.PZ2>Ko.o5_qHGBr$/o(ACF6hLP_HokI(jSC2qNPRkEe#0Jd=i\]"]BnhPPMSQd`&[$d!3flV,:Gk[EqZXhP< %aJ-kZlhtl3P>15+ %9BUA-m#9.;RkE@-bTiV&N>Rs?5-Je6TM2NaACJ*NdWsF(Rsb<>YSMbtqI5SiDXssi2-Ha' %=dpXHimT#8fPSPCqHgRGVQX&[dA8Sco$"^PS[WeTN_\V>.MA:'.bRQ`@SUO.@hFk-C^CFi=jLEFEc`b3.L8mWcFu"j/\S>FJL8crg)l3mAjt8?^LkM2,ban1>p_UN2\]gV1q\E#l0&5U:n'2p@\`,PC=T:r$T4bDb[j+M[4-n&QFY415D(QEe5&F&?tpL4,e-7%&r8)qQk6`\-cGj3K\@E'B,deSmurU)p2s2VfhJlAR_"n1__WD %^j5FrVkF)ii;'Y)VkF)m\.d]t#FgS$#*8QgG"P*=;b3BGKt51*:-? %6\EeY$?pQjPS]]_'Wt?jXSG7rV7bL#d&4aO4YJ6XI`O>\mel@`@ZA"`(%/rqC6$tCZR==1%kKZ[C\8T,Ynhin]/d,MNfI/0DS!bi %BBGsKC]"J0$[5n*TqgFb7Gpk52^e$L5WEi,kM0XcXi1A#Giuq)P*f]Ef1_9HGu=.eh3+/h>u=Q4q$Ac,VZS7i6sRp6q\CrH.81@Q %C@0T_&uD[3Qo$/e+9Q)N(+=614O]\?kti8_^<:[u.a.'1;Agg<.CJm0FM=YY=.VoS@e)QGKXDJA/8[5an6F;uS`*UuLL]Og=lT72 %X-GWCThmHT5:W5g-2PbHJ?KFA:5\Hgg07'k9Ti'F[380Rci;IB.gU+=P!rl$11WqA,S&b'&MKb&WP;+%i7m!&uQNNFK!>g %LTOgn](!drbBPDn%KGk>XBd28ddWX*=72]F=H\_#2dT(#f:GNA/;qb[hK,bl.rfjoM);X5=FBeA_j7QhR[ICrJIb//6>B:j)l;V, %X,\=kaE#M#2m0mMON*GS?t[_E>8l@N1\ZqWn':3L#?!"5'_^hdR:Ec=72+gQC3C\?O0E)e(h%PUHNe\=n@I`Rt`QVYt6(iI:$s@9F-T!\1`PV//A()sn %proZok1rJ/ZKT]4M,RSQGmR4;8>ih(8\\#Ga,-R6$+-Q'3A%p/'5(eqlDej;T!`KC2^W=;9Xg5dfNTN%^(,t8hDXM=H/h=:*q"d# %&D9UgiT7;U4L^;QDPFOZ&gsi@Rk!+9IEO\"^"0ZP.3m%0>;S&BE7RZqhq61[V?SQ>l"5a(34?\9sjLB?iJdE6+'hj7A50#_Rs9"JF2:`qYG(e-++=`!C)o;UiOoX>kt/s#*h"TQp5BLrOEZ5W"YU;*-I6HX3KPM*+'C!AOhP!]L.C0#ljoC.MLVt]//6!+Pcft'5=b'q%!%6gK;6g2>joEgg*(J6U%%@>iU=N7U!SUYpB8,S4#9,6&0Ph4A %;Jc1\5`;65HGc=a'f?@QC_!,K7\2(;d%a5I3IpaNV:M9\;9`F30763s=c2cIA,1mKq'MgCs.h&M:dqhg']mea7f49kfo,F?OtL)" %gl(_tejo]U7JXU^,L<\E?`=Vh,#oZoqR7"LV'7mlM?SEkRUTU6haUg7K2.Kq,TM2LK"a#0nqSeV[!kOtGrVVH5Lg<\[f?`$1M5l#';ugp?lfUJT[hGdj %eFdlW8+aFD4?R%=B?IgB"[,:[5Q@4fbWYJ6lh^Dq\f.h_F/\Ef*u9lY"-lYf5Q@R_lRD$HlMA&f8QqiI>plM=ZZ>Ah+;\E@Vl %\pjV],Tc:llMC=tg?=`m;a%jr5EsOfp]AU[Ks&HT;dDU$MQ?M?c/tCllfXK+&9up;(U^E<^F,($*mCC^T9g!OS_Qf,/q5C)4)aI2 %#)Qbb>sJAfB)=$/l0J3!WU3qB:0Wc4g*$poH@0cF+1&!)m.L.j,V]JYhCs4U,?cN[B1D0&Fo?--m>7il>/nqUFoBN`.DNHg1Y;"eFiF:l5-uPhc*ag%W+4/f5LLrGcIbcKk7-mIZpI9\uMCS/S@rHqY;6%E`fTGlh^E! %FE5fqj125(-)Pe`.;LSF5#luEGC?O5UjqC#VlO0U+22SN %f=u4Q_inoJn=<-N#?@Z"\lVH3ri/loqVdit^[=%EU9`3RhVB7nM1a-4X&r78Mo([`gH7.W'Sg\5dh;)L8"V.JccRCAp?!>oXN5V873h3eUGNrrpT`A@Ra?)U-Zt4s^NASCF/N'1%Y&IaD3f^jHBNdP %Cbf5Jltj9GM\#uF4'opPiKrPq@jN"Pl%`7,+E;_\?!mFGQC?!enG8LHHB(4"-L%t$*#ek#rsF*t?>]FljeB@fJJF*"%D8mpaKiI %eh8GAX^Ck6Q7!RtOTI%V22$]fdJ0qKC,WS-"i.R7>Wn_WCSoij>AQLrp>'ui*2lPF?-\Ol@cqX]ClM`"]g%``Gd*L/*]u"(em_52 %;6=4hii8=m)odN4P4a?4>'[4e&,'/t_6$J@elpX>ZS801Dq4F.,K-_%Bn=b9-*f5QlPtpF_qg885QS;M>DA7>/eX6PgRe:J%m3rl&/&&B;r5ljch-=h\Z'rJ+3C$F=AkEj[M_+TMja5MsHfR7X32sr7'gZIc<+iG6sh4/fk.Z %#S2GsXQiaY\6g@pY;>_/8P*Rla)cu`ltg7kY:J1[oTgP:\TN%QK6_fki/PLC"Th#_jNf%PYs9:+pj$2o^\tfSN5'6^^3]uuf3(%X %m.6XC*o4j3]B3D]C59FY*@1<_I""^VcM=KW.kA5@\D+[R9rbRM7$OF8^".%J(#6<(6h`PKeOnMKiJ*jP0D@IMQ>E'k#H+49Zh9h<$EJoUr7ul. %]A*"nLP(#"YdVqYQ]@YQ2qs2_qI&R"j1M?V>M+bdhtd`^dF#@+!lj*BBR24B]Q?2"@5"@L7!?9ciRE+L\%rIS2O2-RijAdAjOn.)?[B.,t<:;5sr0&B^"2Ka+A0t %`['`7V[.+O__7;,/;L\q&^*"IY-m^iHZ4sK&PVB8(d5Q"P5B0CYalB7(8+\'dp?C1;KaIlQaF`Pl&c;3^ih.0!YDZ>Uk0iMuDu$]->EZ'?eI<'cbHu1V!)uT*!4I10@L7Um;Zp*+`7HWi`$HhFYFdY-F&RD2Qe.(p@^M[9N4+XQ %l$`RZa"OQth@lHuDk-7_fK9W`Z]M^EQ&F2&M$/l>:I2AKQGDE_W[;1j5'FLa?o)<#?DW %O?)7\rD26>jo/B*4XHr" %,&Hg1>LDtfK*Xfc+p.K#doh">MZgi;"RS\So>_t?ekp"i@!Ts7;Va&S;\FZbCL[u#+l*)6[tkS37T[cApgBkE0\.,RRb9Ded(Uq] %I[h6#-l-oCI.FQUEt;TP@[ZmsV..7[J@9e1!+>LfEoR9.ErTRX5%n`:8J'tN[TS>N@U4^Z=k2T.%-+-g$8EKK;@2J43t"ijq-#Q: %!2*7A/1!!a;@"2\_s3fsJA:qi'fqr1k'q0*lS(Yg&e-0\!/q[tm:sqZod6!K?4H]2ok(6caQRP#5M2LLrAZj15MW)IjK[Q300L88 %FbHIm^lufd6/6?5Zgq5`/Nk&60g?Nd*X`FOPKO1d#Ru:m_TlZ#EcIDu+F]e!!8t,d+M`C5(0>\[qWa>_SYSX=55.7r(>VQ=I3A@_ %J[p %aj#b!c/7eel2?!7,_rf^esA&Q814k17Ut1)jbguX*5Pj,E2!RS*I<\6Qu.2ge2mD.aKMX;/O(`kY$H3gd`cY/c);NIpn:>[RK)u\Z?9NHF]6/a)8j %(@n_q=K/UFZ6ql_rT:?9lh:=%>jjoUIJ831$g!(?jg_b,V24g$;uaD;OOnY6/2#$09W0a"^"[?b>IB()J(=CRgA5V5Nn,9:0?hBr %`U>((Oo"GTiq^'EFt=NW4Va1Nr8$sE4O5mGj6?7cO$>;)J;69qBo>%cFd#PLHc,,U,IcDfX7'lDNu^<5l@$.L7Uk,cUWq6NFg]`% %>jg)pS#=;rV(pFHp=LK0]s1@M8A"4q%u8qb3M'C0'B4^Dl4iut_4QT*7+)F\)Z.-@YfW1 %coPR&b@sX9fs9brS\\J7I3Lm1:"E^#nqs-Zdt+Y-58T/=/8<+Y8Jb$'A/nXYC&P5r?<.k$i$qpcaNnlF`O;n&Xmt1j8'jQ7S_rc[W=FB__[:;*@Trb/\#tDD4-0C&'9Q+bnWRFL1tOjLk4&h5ii4A"E)FU7:h2 %Z-7K3dEVMdnhR,V75sNSF58".AT,t5B/,^BpYMY!c6>8+1Y9-<.;i\KCk))mr2(e)&bA^E$NkcGAJXPWZ]QpZX.1qEM:7X6]VZc0Apr[tS`W?59TTsk-=:A2?/"4K:-Fs*s>EA&m@G$qQs %I4*6^O3%/BfRR,5"3ID.)@>](A!7&l%]r$M^T2dH#`d=>q4,X"W.P6Nk$^.5nnZ^Zgc-ciT).5!oJhX[#6\pt-.DcAm[Zr.Lu1@KonhjQSKa)mi^ldiml+,u7a` %oH&bE2LF/PK@L4-[RM\DA2-!kXrfls,qFEa`u6cf6n?%"XWCX[]=;iSNqMP!$tAJVl$3\268<9u4Et[3M,2TBR$,L'lXNl,ScC*^ %N0\]a2Pi]!LI$j!5tVq7o:n^LfrtHQVuAKG.,fA$LR*0h+7*%P(PIR^LRCnS?(%s0A'37hZn\-tV.!a/5u845FVk5]hF_ZZk`iu( %;d>>H^fYu2&OJ\AWVZ:]%Y,MSg&W%;5r2=]CN62#+&%STfaEQ]MV\Sr/#Up`fe?ZFg*%[;:.piEk=b8-OQBp>UK>m1qF9ut>eNT4 %%8IcX`78XVd,:.>6";8rA8#r)^n;b7$QC"S1,+NS*$I-uARH'^5=0%&b.sZm)cioai08dYZJQK_1cT&S&Eb?+BQ2,0?n>JpE6>th %.Jr'jK2VsYE@_\gK2ZXrRQ2J0f&/dG(aO5jkcM[NZ8%.LF""2@YVCs]*o#9(*&\"&5WN_els8Z7RGRh!-'Q\rg`-:liX=aO[J0Os %ds:_,D\ut#[/VlM5Q!/^M@6_Is2Q[Hf[tJ.V8)l1rQIS5.!&Ii%*/&8Vt#-6k@+/CKebQWmrhI7l3l\WrPb%U1j"A\K3+a0K0,': %d'^J&ZVZ5Q5Q=OG0:)Qh^\2/2;&1D]O;0'EPSO,",c`]u=&B\u=SRh0HKX4us2'h6pu;IFrj*^uln2Q!0FQ24ngGi(n;4Zja[J[a %jb<.?0,5e)05K*c% %.#=U.[YS`s@O5mm+Miu+oij#RU;Xqc7Z5%r%7X1q2HLSl%baorQUSh=-o/!b:cVib&-Q\*i(^b\a:+!A'pY%""R%_DrKe1B %%_lBOQH3Nn.Yp3I9J3UZINu\@!kZ5M/-^n5YXCq,Lr/b>S5VBM_)"MW&BKA]Q<+k^'n-667)#T*n=fY^#,L;fUI>fQ,/RD`=]gd8 %U*'PdaClFQ %=cuaWO2Mgm6e;/EK+_^OHssA^,t4ITn-U\^Q_I<@(aL(0?O#?fZ:HOmlSpkh`UQL)Uu4?kS>7>P14_NHqS#"FOs&s3b/SIoBX%DiWCWCYZNHo9:q_&T^"Ek)T0_LiOt[THnYaBpLe %em`)I^RAhe;5bmG`GtBj-='u:RbSUVoXQ%/IJu1qDC3e0e$OR02_@Ui=M(i!%2[G6K8fk^n>Cbs@d$"hE0IdUM$`Zj35rc)I*;02c %N/O#fEuIanWX/fu,L^'Z&P3#""(N-HJOgdl50ng1BKFT:r=i15QuA"ohI&0GNgpX)$AbfX'VNM[r<.`f7$^3^jqo.P*9b:3%,jH; %@0M>".\NaMD4uR,#=5SY#Ksol!ckR&`%j)%%B)^W@$"$tC&h,n79e#Ir31Kn2; %)-Q%I[]'W4>CrhP=H+u@(76'Vj9m*O1?_ft>Xeqg!tLI$IKF409bEjJJ5K:f$_3m,(kL*joDl"n$lEuGT^"q5QjF(R[U>*uHGPEM %9Jq@RQ@RS%PG>PHK0`ssJHt=6.?B#@=F?;iRoi]B15nKJ*fFdhC]Jn(U[r(#_WjZY?C$['M)Jei%a+oNNNYUF!<_,(gPjP9rjXqqpS'+YMC&JYb9hA$kX%gm3e(b%h^o3gNnb\33PJEkd %#5`(/PK=A2VQgOMR!Ee56sAc*(Vl^i)!VMV9LSF1/=f9g;%a;[9P$6+XU4nIln.ndA.*]Z*,l!:JRKf6*&*i\'"e^_?_ppoi$[M, %Jn'V>,W*UkE2lHQ^c=SNSD[[>64eO$7G+9t(ui;F8eYAl!N&Q_*CV'``>eluJ>s1.WLI^4JVPN!&I%>oF_sGIXKi3/&H*nXFDF35 %R-3`&--"hJn3i>U=(/E7`"0jXk5X7d4?tS%Aj]ZSl7EG35mM8fg>.1ASMlbjX>iIgui3C]mQ/-dX-ZiP)'ETltfWrZ[g6>QQ9d#B@JdVJuA@V#*m%3Qi' %"#tG>6tA-i7lUu"`6N`83/1:!ipRN-kCBIA1h'j"M;[Da0G[nP!3'?\J-(UI(_QTfibDFD>!Vfr?4)O@c"OjRH6P_):4a_8JN %oO1tmk_(\7Z:R1:CgJ3I6"3Zs*3R2n@cfKIgBbl5k!YUWiT(nMc#W#J0apRqPL0O4*[>B6_e9[>-3Bb?pPc28N7h%Cg#*!iShV,\ %>>F7\G9XMl#+/pjV.RMZi_`B@r.%5l7P$"+ULe&2VkU%3M.(pG-&bcbbm"S"!%0:KAA,k\/Wc_:+Q+@5+tqp_6P5-h %!6,n$;BT"F'I<#GL_l,%#j@T%%D(#>+6cL-QSm;')P&1/=tGQhG*(R#(um=hT#_`P;%&PKV@M.0EZe"sPHbfl6BEStE0UK"$8c/S %8*8&#ljo%FA0gI]d-;fu*ZDhN5Y=Rn9Lj=*n09W'P,PJl'V$s)(MJ)gdWlE@l\qpaL(%\P=^DW)QjglRqF]UlLI:LL+G,-K2X<;V %IQ6?>R8"I39JD1*k-/M%"Q:Vc>L6(X'sjl,-m0Zh)GNa'(>"A8eJK?.P?%e4;kHLR"Uq_j0f8qTMR)>*+sKnBc/1L;3ZD8+huXp( %4^>Yhpg:7s^hX:689&/dN^EdR&N:FL1$4S%/$(up.%5ccRiJkbn\M!3`TSiHkh%(P/15JD/G`dBI %@%[r$*:^F&!oOY`Zo-D2BQ=:$.!,_3 %F=i?9L'qA$Z]J9/:,;lX;ROKQd=>XmjD@lc`]G#S_'K1;.=+PIDr=2i+nMeEJ?"jM"$sj*";X.(FI!ba["1W_@O)nL-GrA"9p(Wo %-dl49]je^nl:+U("qJ4rp5[OpKnLH8OX,MH6ma#<;atU4dmo^2L::VK!5">DBch%`i:kABJ-H\rE0=UtJVi@gUGjNpaQTcL9,alW %UGA*Nm%uHTf9l$"Ij"#lG+;^.*A9.!l%!O0e=%rV#O>%ZjjI]+.st2g?t9D72IN&F8?n;Jd@LbP$F<+N159`m#7^uu7eMtt1!bclk>1IG6M?th_ %U+"MQZ6k46QQ^u.&PslqF`2eaO#W*X$,g&%jVU$j!mD9*"X6JmZ3IN8bW?jB#3:XenOh+ %BIIhc[tf2F5u9#E'fb^CH-T4^khW6QG@27Re!s_"$0E`pCt2l%Of4m]+mdWo`h2q %XD]@a[b_%o7$b6GO9Pm%)\M/c_":%kAF*I?%*OcW^u?$p%Ef&h_.@p*ZT'%EWk#8+eq!ke<.YslcK>Egh:5XUgWE&f=1'Om^Fa?S5)Z'nXNTo0g6l6!So=Wb@Cf2]LsaZC;Lco?lBC:'X4 %T=[#0T6kDQ&pgejl,lg%#L0nI0G"_Q%fr@`:*O[%67<56UhqnbZn\!tg-D"?Cln_4q5%;bor/1=/9E]lbcds7$9\!pHRfOJ'R`Bh %U^sUKGd=SK+r,crJ3FV2##KB6^PebK#_=\L.B-8cNZ;-u(e$@:XKI/nP'naYKcrOU24B?ZnM2Bb6&jZr:&i_oAAAFS%Dm#U@&!*I %kB+4m%U*/XLI@_KKXNlsa((TGf2cs_[`/Rt%EedRaT5F5#_3A#^cea#-I4lJq/'%b4e6RC&V+9kmLa;Ml5&'9q!$[cUDHXq^2\lc19non3j+M`S,PlO!bC$`&*0]P/$h!?u$j`a7b/RWf> %fnX<__X^4QWG2[I)F)R/fN+[W9-t/j?@1Me_u!MR(jd8dr(h7iiTI+'IMhg.iQ8t&YW!KpLV8Dh>Q6q?!hU=5-^0PgB'fNu"eAM7~> %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..261ca8cb573f5e2b010ec987c9e5cefe4cea483b GIT binary patch literal 5751 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg new file mode 100644 index 0000000000..17e8ab78e8 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-icon.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ead895d9d1700a348d9e086de797b2a1922e1de GIT binary patch literal 1168 zcmeAS@N?(olHy`uVBq!ia0vp^^FWw`4M-kt-CPZ%BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztuo!u|IEGZ*dUN-D-)$F}10V0-@Y`j}u&U}o%Mn?wrsa+? z0*?e=OjdaJLE?jy1HbF7Y2G)tZOFX!M(wP)X~TH`hG-JTYul)d`i!`8It| zI)ks5GVWA;sA$u|e#p5(0Zz4lIKzY@0Fvh5Z)yMFfS~RbRM`KmS$(4DcJ}p4*7s|q z^J~A?=B$tZ|9k)DGp@B&v(DN5*I8!1zc0(`tkpMnb32dxM}=DRZS|Ty2*@2`2HJ|C zK$de|eDj;3G<2y_`nq+CJvH5S`@iqjJYgjM^~15R$>D#CUp%*eeS=;2UeQ*qO}oFn zG&;9^wuD}D_HMJ!Mpuv4?CuTyFSE+q>VI{6`SW-Au5Hur%{x+5Bz3w>ICJwEtFr6; zmUSkbiyuFJk+ykFa{aH9$J+((t-7FmuV9H}pVjBYm#1rv-2PS{{(EEl^9xg}j;vl~ zw0}O&`ro3@D{k%+e0T2SujdzHFa6BFcOZGnu4s+e2Qf0YZv20FnE7WoPjCa!M;!bQ z8xho@<~OsLD|=2qD-Cbr319mE{&kOB{em}#IoD^-%AM%#diltTb;;4Z*N^V4*uObO z@K#vp70th!|9vw$d;i|UyY`lvMJrdFKlkWkiqz(xoBBUwUfX#6`R9uAt$p8r{V-dq zx0PSsPRDr9=gmKge_5z~4!!bK>GchN@y`-pAMU;XfA@_Kzm{%0^TBQL-5~3C({EaR ze)>FjPtnS+YsHFcl(#-t`XBQr`%QfQ{cX>gpmB=qc8>nToBzLMd$sGtZQd(~{r@f( z@%^5&`Ear3`PtWwu2_|1Bj?Ujzn4G%j>hXU=I*15PWb1<|0nSJ%>G~h zu1=4aajTepcG-y!NqhTBZy(cox?ia5vV7|FzZc6Qa?SG018!{J^shAhujRdhy6|+l z-LmJjgTLnN_r5(%GH%D0ze>*zy=6m6pJ-m%^!;nap_OCKz zjeNG~_3_((KYXwF^J(JZHD~Sk-`&^$ENm@x^kt6N<+EmPuSJ)_Jo!7eyY9VR zF1Y*e*2tyLAM+Q_51RRKX~+}JdyaeFJ+xdBbeMZ~tzME|&NoIxW \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo-med.png new file mode 100644 index 0000000000000000000000000000000000000000..808db99e7b1aff54cdc50493639ab3aeac9153d6 GIT binary patch literal 1831 zcma)7X*8P&8;!Ln6&1BqDxso=D(y=xT`VybM2UoMh#Hz#7g|EKrnQEM(6M{1iS1a5 zj+Tki8Xam&RbnZM7NcTqX_?WHe3|q8`u=^-dCqh1bIv{Y{=9T|w{uDgS_&{2ObO?N zCBR@3TrrQ6lM-Lm*#KQJ5Zzsgjv|prOwmZ4|9>xBxFi-=RoBJFB`z8m8zT^TXuSYs zHJLqfdOD~f-tc+(oE5RDN;tvI69#)3W4msOf|E-IXF}c68)Qy>6o<>+#$oM`?PSfvI7O(v;Yl!*(PUzO+TUi*K#zr9}yM*_38y#Wjg!$r|54g`py6Z5^{%FKO z`oai>MoGcoApqndxFKbR5RiW6+87)^6pg?S5wE>Y^HQV5!jhLTAYR|g>*KUYL|`!y zXt|2jOLGHrCi8#VqVg-E3MMIA-izGW(o!5nD*?m8QP$9aJRTUrs&XxS0*}-O{28VM zEts#0@{n z`}Z!S7=b}=Q!*BKX;sB}JCBorD3t-HA<8}Arh}?Dg(F@pIc-%3dC{O03rI65jIbL=d zF*-h0>M+V6!JAgLSzw(J`U?(L#*0h(`?tHpslp|yCi)ZH2ioPe+3YV!{xV1ie8Z^M zux`Ikw%kQ^?1P5WAF4y$B(t8n-c199cO6$cZ-JU3XdQWH`m?!HL#vlwo7P+61~2op zF5ac7hgKL-D$N1|3)m|@@a}QjGoj4k>_!0(n}^-<1Ru0_EARD)ou2=ZLkqI$oWVqS z84burH7$P!Duh2kD@Z1C`ZzH$CR{gG%>>ZznpFx(gBRWKHaI8DglD$d1B}|W=*(8X zeDtJ2{XU;0{A8{T96yiN<57)Vv8Y_+lg|k`K~Bq`^tWtlE#}xs^|iY7jm>v%ukx{l z#bLg&rb%r2UfBxHV{(JX)mtxEbScEiYVLORGW2GCZ)@DT9J8YO}D!ydBM&lm= zh3piHKdin}I71Ms@}f;=T1W+E`GVNmgPb(*xJt7q9mZ!@*{f5-@G16yaZdBA=_l<(IOV7zt$w9JV!UcdSXFC8)+{dung zNrpNu_MZq$N)5Vg368F3FRJBCxSlZCg#--b&MQi5@aspFKOTIj2n~El6cU@8dBZLv zzDT9~rv*V>eN9z>r}-=#aPhr5)mH%K_{EzzE+>o54V9xx9h!s(SNtiJ_F*{v8*F-h z7vX93)^-W*#OUFT6t|CROZ~vEEF^koRW>bWhmupzQM&?XhOCN2EWFG4@KQ>Yo}g_? zTQh9Ci)wc9jIajr+1Eqw^WSKdtVt9f&)2`@XQ*gWxy3gwNl9x6m5b!LMU=~<$xM6x z_^6Rpb5q&PFfD=g*25MPwn*DxyQY@i>ed8rkedsy`C zea_FfetK0`%p*!@iGqTaxl2S9Degw(POgWK#OM(q`%ALI^WvV>i>(%1{rKRj9o#n_ zwotqO^rECuTHcaEBds(a(Xgw{=(^_`9hBd5ssh}UwtE;{fT7VzwyFk-UDX+tzjjhC zX~tlBG$+2cSk#n79eqcs;d0rb(kIK}hQmo0g^z-d$g5*_dVj65`ipa?^6|i$c9>Gh zUcRv*2!qnUH4H|4i21if?A%4(C$Sfl{#z*8Ez=f`M+eTc{(W(dZrFNza@>Ca=YUX~ literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps new file mode 100644 index 0000000000..79ddf390c2 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps @@ -0,0 +1,6143 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: sf-logo.eps +%%Creator: Adobe Illustrator(R) 14.0 +%%For: JIN YANG +%%CreationDate: 5/13/11 +%%BoundingBox: 0 0 442 77 +%%HiResBoundingBox: 0 0 441.4063 76.5157 +%%CropBox: 0 0 441.4063 76.5157 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 14.0.0 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 14.0.0 x367 R agm 4.4890 ct 5.1541 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 24 8 %%BeginData: 5164 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8FFFF93B58DB68DB5C3FFA8FF %A8FFA8A9A8FD60FFFD0FA8FFCAB58D938DB58DC3FFFD06A8FD61FFA8A8A9 %A8A8A8A9A8A8A8A9A8A8A8A9FFCF8DB58DB58DB5C3FFFD07A8FD60FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFCACAA1CAA7CAA1FFFFFFA8FFA8FFA8FD %E1FF7DA87DA87DA87DA87DA87DA87DA87DFFA8756F766F756FA7FFA87DA8 %7EA87DFD61FFA87D7E7DA87D7E7DA87D7E7DA87D7EAFCA696F696F696FA0 %FF7D7D7DA87D7DA8FD60FFFD0F7DFFA76F446F446F44A1FFFD067DA8FD3D %FF7D527DA8FD14FFA87D7DA8FD07FFFD0FA8FFFF9AA076A19AA0A7FFFD07 %A8FD3CFF522027F8A8FD14FF7D27F87DFFFFA8A8A8FD5DFF7DF827F8277D %FD14FF7DF82052FFFF7DF8277DFFA87DA87EA87DA87EA87DA87EA87DA8FF %FF767CFD0476A7FFFD07A8FD3BFF5227F8527DFD15FF7627F87DFFFF52F8 %F8A8FF5253527D5253527D5253527D525352FFA7442045204420A1FF7D52 %7D525952A8FD0EFFAFFD2CFF52F827A8FD05FFA8A8A8FD05FFA8FD05FFA8 %FFFF7DF82752FFFF77F8277DFF7D527D527D527D527D527D527D527DFFCA %444B4445444B7CFF527D527D527D7DFD07FF7D7D76A8FD05FFA8527D7DFD %04FF7DA1FF7D7D7DFF7D7DFD05FFA87DFFFFFF7D7D7DFD04FFA87DFF7D7D %7DFFFF7D2727275252FFA8522727275252FFFFFF272752FFFFFF27274CFF %7D27F87DFFA127272152527D7D777D7D7D777D7D7D77FD047DFFA84B4B6F %4B4B4BA1FF7D527D527D52A8FD05FFA22727F821F852FFFFFF7DF820F827 %52FFFFFFFD0427F8F85252F8A8FD04FFF852FFA82727F8F827CAFFFF5227 %2727F8F827FF27F82027F8F8A14BF821F8F8F8204BFFA827F827FFFFFF27 %F827FF7DF82776FF27F82027F8F8FD25FF27277DCA7D5227FFFFA8F852A8 %A84B2052FFFF4BF8277DA827A87D2752FFFFFF7DF877FF27277DFF522727 %FFFF76F82776A85252FF7D2727275227FF7D2727775227F827A8FF272727 %FFFFFF272727FF7D27F87DFF7D2727275227527D527D527D527D527D527D %527D52FFA8524B524B524BA8FFFD067DA8FD04FF7D2152FD07FF2727A8FF %FFFF2727FFFF2727A8FD05FFF827FFFFFF52F8FF7DF87DFFFFFF52F87DFF %52F852FD06FF52F827A8FFFFFF7DFFFFFF52F8F87DFF27F852FFFFA827F8 %27FF7DF82052FFFF52F8277DFF525252275252522752525227522E52A8CA %20202027202076FF5252285252527DFD04FFA8F852FD07FF2752FD04FF7D %F8A8FF2727FD06FF5220FFFFFF2752FF5227FD05FFF87DFF76F8FD07FF52 %2727A8FD04FFA8A8A876F8277DFF272727FFFFFF272727FF7D27F87DFFFF %522727A8FF275227522752275227522752275227FFA120F820F820F87DFF %5227522752277DFD05FF4CF827275276FFFFFFF8274B524B5227207DFF21 %52FD06FF7D2052FF7D2076FF27274B52275227F852FF5227A8FD06FF52F8 %27A8FFFFA82727F827F827F87DFF27F852FFFFAF27F827FF7DF82152FFFF %52F8277DFF7D527D527D527D527D527D527D527DFFCA27524B51274B7DFF %FD06527DFD05FFA8522727F82727FFFFFD04274B272727A8FF2727FD07FF %2752FF52F8FFFF52F84B2727274B277DFF7620FD07FF522721A8FFFF2727 %20FD05277DFF272727FFFFFF272727FF7D27F87DFFFF5221F8A8FD29FFA8 %A852F852FFF852FFFFA8FD05FF2752FD07FF52F8FF2727FFFF2727A8FFFF %FFA8FFFFFF5227A8FD06FF52F8277DFF52F8F852A8FF5227F87DFF27F827 %FFFFFF27F827FF7DF82752FFFF52F8277DFFA17DA87DA17DA87DA17DA87D %A17DA8FFFF7DA87DA87DA8A8FFFD04A8A1A8A8FD0BFF2752FF4B27FD08FF %274BFD07FF7D2752277DFFFF76F8FD08FF7D20FD07FF522727A8FF7DF827 %7DFFFF76F8277DFF272727A8FF7D202727FF7D27F87DFFFF5227F8A1FFF8 %27F827F827F827F827F827F821F8A8A827F827F827F87DFF27F8272127F8 %76FD04FF7D52A8FFFFFF7D2052FF52F876FFFFFF5252FFFF2752FD08FF27 %2727A8FFFF7DF827FFFFFF7D52A8FF5227A8FD06FF52F8277DFF7D20F827 %5252F827F87DFF52F82727522127F827FF7DF827274B7D7DF82727522727 %27202727272027272720272727A8FF2727202727277DFF2727F827272052 %FD04FF7DF827527D522727FFFFFF2727527D272027FFFF274BFD08FF52F8 %52FD04FF52F8277D5227F8A8FF52F8FD07FF4B2727A8FFFF2727F827F827 %F8277DFF7D272027F8FD0427FFFF4BF827F87DFF27F827F8F827F827F827 %F827F827F827F827F8A8A827F827F827F87DFF27F827F827F852FD05FF7D %2720F82727A8FFFFFFA82727F8274BFFFFFF2752FD08FF7D2752FD05FF52 %27F82727A8FFFF5227A8FD06FF52F827A8FFFFA82727F8525227F87DFFFF %7627F8275252274BA8FFA85221277DFF7D522727 %%EndData +%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 75 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/ReadBypdfmark_5_string +{ + 2 dict begin + /makerString exch def string/tmpString exch def + { + currentfile tmpString readline not{pop exit}if + makerString anchorsearch + { + pop pop cleartomark exit + }{ + 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5 + }ifelse + }loop + end +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/lmt{ + dup 2 index le{exch}if pop dup 2 index ge{exch}if pop +}bdf +/int{ + dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + product(HP Color LaserJet 2605)anchorsearch{ + pop pop pop + }{ + pop + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/capture_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put + }if + }if +}def +/restore_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup known{ + Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put + Adobe_AGM_Core/save_mysetup undef + }if + }if + }if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: 1 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 +%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Print + + + + + 2011-05-12T01:30:58-04:00 + 2011-05-12T01:30:58-04:00 + 2011-05-12T01:30:58-04:00 + Adobe Illustrator CS4 + + + + 256 + 44 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgALAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A75+gtV/3x/w6f1wq79Ba r/vj/h0/rirv0Fqv++P+HT+uKorTNI1GC/hlli4xqTyPJT2I7HFXkX5i/lb571jzrqmpadpnr2Vz IjQy+vbpyAjVT8LyKw3HcZgTwyMiae/7I7b0uHTQhOdSA32l3nyQ3kr8p/zA03zbpN/e6V6Vpa3U cs8v1i2biitUnisjMfoGRjgnY26ht7S7d0mTTzhGdylEgemX6nsur2OoS6jK8UbtGePEjpsoGbF8 7UbPT9TS8gZ4nCLIhYnpQMK4qyrArsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVeR/wCI/NH/AC2T/j/TJId/iPzR/wAtk/4/0xV3+I/NH/LZP+P9MVTTyzrmv3Gu2kNz czPA7EOrdCOJO+2BXlf5o+evzD0/z9rFnpuqXsFjDKogiiJ4KDGp+Gg8TmDOZs7vUaHS4ZYYmQFo PyF5+/Me8866Ha32rX0tnPewR3EchbgyM4DBtuhGCMzY3Z6rS4I4pEAXT2TzZ5k1yz8wXVtbXbRQ R+nwQBSBWNWPUeJzPDyiD0fzV5gn1ayhlvHaKW4iSRSF3VnAI6eGNK9QwJdirsVdirsVdirsVdir sVdirsVdirsVdirsVYHq357flNpN9LY3vmGL6zCeMiww3FwoYdR6kEciVHzxWmcwTxTwRzxNyilU PG1CKqwqDQ79MVX4q7FXYq7FWL+a/wAz/IvlO+isfMOqrYXc8QniiaKaQmMsV5VjRx9pTirIbC+t b+xt760k9W0u4knt5QCA0cihkahAIqp74qr4q8b/AOV1eYf+WK0+6X/mvDSu/wCV1eYf+WK0+6X/ AJrxpXf8rq8w/wDLFafdL/zXjSpr5W/NTWtX1+z02e0to4blyrugk5ABS21WI7Y0rB/zF/5yQ82+ WPOuq6DZ6bYTW1hKI4pZlmMjAorfFxkUfteGUmZdpg0EZwEiTuhfJn/OTXnDXfNuj6Nc6Zp8VvqN 5DbSyRrPzVZXCkrylIrv3GPGWWXQRjEmzsHpXm780dS0PzDd6XDZQyx2/p8ZHLBjziVzWn+tl1Op Qejfm/qt/q9jYvYQIl3cRQM6s9QJHCkip7VxpXqeBUNqOqabptsbrUbuGytgQpnuJEiSp6Dk5UYq g9L82eVtWl9HStZsdQmoW9O1uYZmoOppGzHFU1xVJX87eTEvDZPr+nLeK3A2xu4BKGBpx4F+Va+2 Kp1iqVJ5r8rSWUt8ms2L2Vu4jnuluYTEjnoruG4qfYnFWrXzd5Uu7Oe+tdasLiytQDc3UVzC8UYO w5urFVr7nFUfY6hYahaR3lhcxXdpLX0riB1ljbiSp4uhKmjAjFVDU9d0TSvSOqahbWAnJWH61NHD zIpULzK8qVHTFVXUNT03TbY3Wo3cNlbKQGnuJFijBPQFnIGKqGk+Y/L2shzpGqWmoiOhkNpPFPxr 05emzUxVV1PWNI0m3W41S+t7C3dxGs11KkKFyCQoaQqK0UmmKoTUfN3lTTLr6pqWtWFjdbf6Pc3U MUnxCo+B2VtxirH/AM2vOFhoP5eareLfxQXV7ZzRaTJzoZJpIjwMLDqwB5LTFL5N/Kby3+Xuualf L531ltJsoIVNqVlSFpZWah+J0k2VR0p3xV9f675/8h+TbCyj1nWIbSJ4U+qIeUszxAUVxHEruVNP tcaYoSjT/wA/Pyi1C6S1t/McSyyEKpnhubdKnxkmijQfScVpl2u+ZNE0HRZtb1a6W20qAIZbqjSK BK6xoaRh2PJnA2GKoPyl578p+bobiby7qC38VoypcMqSx8WcEqP3qp1p2xVLdf8Azd/Lry/rMmi6 xrCWmpxcPUtzFO5HqKHT4kjZd1YHritPn/8A5y6/5T3Sf+2Un/URNikPYNc8w6Vo/wCQVuL6+jsp 77y0LbT+bcGkuG074Ej/AMonpirxj/nGvz1pei+ZNWm8y6yLW1ls1SBruVuJk9VTReRO9MVZb/yt TyH/ANSUn/SUf+qeFDv+VqeQ/wDqSk/6Sj/1TxV3/K1PIf8A1JSf9JR/6p4qnnkf8w/KGpea9Osb LyqtjdTyFYrsXBcxngxrx4CuwpirDvzQ/Mf8sNN8/azY6r5Bj1XULeYLcagbtozK3pqeXAIabbdc qIDmY8uQRAEtkH5D/Mz8qr7zrodnp/5eR6ffXF9BFbXwvGcwyPIAsnExjlxO9MQAmeXIQbls9E/M Lzv5H0zzhf2Wp+XHv76L0fWu1nZA/KBGX4QdqKwGWuEl3lv8wPy9uvMWl2tr5Wkt7qe7giguDcsw jkeVVV6V34k1pir3jAr5r1yy0bzr/wA5Daponnm+aDRtJhA0vTnlNvHKwSJggYlSPUEjSEqQzdjT FLPNS/5xm/LKe4tbjTYbrR5baRJCbS5lbmEYEgmZpWUkbBkYU64raF/5yM8ya3YaJoflPQpXhvvN NybL1lZi5hUojR8t3/ePOgJ6kVHfFQqQ/wDOLv5ZL5fGnSxXEmp+mA+tCaRZfU7usXIwBa/slDt3 J3xW0J/zjn5h1qN/MXkPWrg3Vz5WuTFaTMSzGEO8ToCf2EeMFfZqdAMVLzP8hfyr0vzxc6vceYJJ 5dD0u5Ho6bG7Rxy3EtebOykEcURQeJB3G4puqXs2mf8AOO/5f6Xe6xcWEc8cOq2Mlgto8jSRwLMC sjpzJZj9krzJ4kVHaitsa/5xf1a6srXzF5F1I8b/AEG9d0jJNeDsY5VUfypLHX/Z4qUF50jPn3/n IvRvLi1l0nyrEt1fqDzj5rxnkqBsA7GGFsVQ2naEv5y/mv5il1+4lfyp5Vm+qWOnROY1di7IDUUY CT0GdyKN9kVAGKrfzd/KvT/y5s7Tz95AafSbrS7iNbu2WSSWIxytwDVkZ2oXIR0YlWDdu6qP/wCc ltXTWfyY8taxGnppqV9ZXaRk14iexnkAr7csVTbRf+cZfJc/l0f4kN3e+Zb6MS3+qfWHEkdxIOUn prUxtRjSsitXrittfmn+Uvluw/Jc6dDNdCLyvDLe2beopMs5U8jLzV/hYsTxTjTtirxb8h/ys8v/ AJgajq1trNxd28dhDFJCbN40JMjMp5epHL4dsVey/mz+Sv5f6nq+ma3q/mFPLyBEtr9rmaJPrMVv GEj9JpmVUlACqaKRTfjXqrbxn81vJf5S6PpFtfeSPMh1O7M4iurCSaOZvTZWb1VKJHTiygGtev3q sw07Wb7Uv+cSdcju5DL+jruGzt2Y1IhW8tZFWv8Ak+qQPbFU9/5w+/443mT/AJiLb/iD4qXmv/OQ /wD5OzU/+jH/AKhosVCf/wDOXX/Ke6T/ANspP+oibFQ9M87eSNK8zfkLpdzfyzxSaDoKanZiBkUN NDp3JVk5o9U23C0Pvirwz8ifyy0Hz/ruo6frM91bw2dqJ4ms3jRixkVKMZI5RSh8MVejfXv+cW/+ pgu/+RV7/wBk2K0769/zi3/1MF3/AMir3/smxWnfXv8AnFv/AKmC7/5FXv8A2TYrSfeRbv8A5x9b zbpq+XNZubnWzIRYwSR3aqz8G2JeBF+zXq2KpV+Ymjf841z+ddVl8z61e22vPKDqEESXRRZOC7Ap byL9mnRjgpmJkBC+TNE/5xhi826PLoWuX02tJeQtp0MiXYRrgOPTVuVsi0LU6sMaU5CWS/mMv5Fn zlqB80a/c2Wu/ufrlrGshVP3CenTjbyDePiftYWFJb5ZT/nHj/EmlforzJdT6p9ct/qEDLLxe49V fSQ1tlFGeg6jFae/4oYD51/Kz8tfP2oz/pFUbW7EJFdXFlOEuolZS0azKOS7jdfUStOm2KXk35nf ktpv5ceWZPNvlPzDqFhe2EsXGCaZP3plkVOMTRLCeQryIPKqg4rah+el9Lr3lL8r/M2uW8gsbhSd YMY4H/SUtpG4bHj6iRSMntirOrf/AJxf/Ka5t4ri3kvpYJkWSGVLpWV0cVVlIShBBqMVtkn5aflf +X3lO/v77ytdPdTsDY3pNylwI3jYM0bBAOLqQKg74qwr/nE7/lHvMf8A20/+ZQxUvdcUPnvz5eQ/ lp+fdj5ukVk0LzHaSR6h6YABkRQkgHydYZD8zilNf+cZtIu7628wef8AVFrqHmO8kEUhFP3SOXlK U/ZaVuNP8jFS88/Lj8rfJfmD8w/N/ljzTJPHqdhdSNpyQyiL1Y0lkEp+JTy2MbDboa4q9Jvv+caP yd0+D6xf3V1aQclj9ae8jiTm54ovJ0AqxNAO+K2l/wDzk9pVrpH5QeX9JtOX1TT9Qs7S35nk3pwW VxGnI7VPFd8VD3nFDDfzl/8AJWeZ/wDmAl/VioeI/wDOH3/Hb8x/8w1v/wAnHxSWD/mDdt5o/PG+ svM2omz05dVbTTcsQEtrOKYxqV5fAg4jkSdqkse+Kpn+cfkH8o/K2hWj+VdcfU9ZuLhVaAXUF0i2 /Bizt6KLx+LgBU7+GKpv5Wikl/5xQ82LGpZhqaOQP5UmsmY/QoJxVE/84t+ffKvl9Nd03XNQh02S 7aG4tprlxHE4iVw682ooYVFAevbFS8//ADg8z6T5m/NXUdX0iQzafJLbxQTkFefoxRxMwB34lkNP bFLNf+culb/HekNQ8TpagHtUXE1f14oD1m281eWtW/Ii9sNM1S1vL+28pyi5soZkaeMx2Bjf1Ige a0fbcYq8b/5xc8x+X9D82atJrOo22mxT2ISGW7lSBGYSqxUPIVWtO1cVLxfFLsVdirO/yL/8m15a /wCYk/8AJp8Vd+en/k2vMv8AzEj/AJNJiqXflT/5Mzyt/wBtW0/5PLiqf/8AORn/AJOXzD/0Z/8A UDBioY1+Wf8A5Mfyp/22NP8A+oqPFX3/AIsXyL+aP6A/5WLf/wDKs/05/iz15f0n+j/V9P1q/vvS 4/6R9uvP9j+XbFKS2v6Q/wAQ6d/yuj/EX6J9Qeh9a9b0vfl63xcP5/S+KnTfFL6c/Mr/AJVz/wAq 1n/xJ6f+FvRh+qfVqcug+r/VOP7VKcabca1+GuKHyjY/8rK/Rlx/hP8AxN/gyr09L6x6fpb8+Xof ufs/bpt44pfRH/ONn/Kvv8LXn+FvrP6Q9SP9OfXqfWPVo3p/Y+D0/t8OPvXfFBSz/nFX6t/h/wAx ehzp+kvi9SnX0x0pipe44oeJf85X/oP/AANpv16v179IL9R9Pj6nH0n9Xr+xTjX344pD0D8pf0N/ yrXy5+h/94PqMXGvX1afv+X+V63PlTavTbFBeLf85H/4J/xbbfoj6/8A8rF/dV/Rn8vH916tPj9b jx4envx69sUh59b/AKR/T2n/APK5/wDEf6H5D0PrPr8a+/r/ABcf5/T+Knvil7L/AM5O/oj/AJVR of1b/jm/pG1+pehTj6X1O49PjX9nh0xQHuWKGH/nB6f/ACq/zN6leH1CXlxpWlO1cUh4t/ziN9T/ AE15i+r+pX6tb8vU40p6j9KYqUh/5yb/AOVe/wCMZv0Z6/8Aijin6W9Lh9U5cRx5V+L1uNOXHbx+ KuKh5Pa/4Z/Q031r63+mfVT0fT9P6v6NG51r8fOvGnbril9Of846/wCHv+VNaz+lKfoT65d/pH6z Th6P1eL1OXHtx+nFBfNHmf8Awl/iG4/w39b/AEF6h9D63w9bhXenHt/Ly3p13xSrX3+EP0tbfof6 99U429frPpep63FfWrx+GnqcuNO1MVfTX/OT3/Kvv8N2P+IvX/TXKT9CfU+PrdF9Xnz+D0vs8q71 px74oDzn/nFv9C/4t131q/Vf0PN9b+s8PS9H1oufPtTj1r2xUvMvOf8Ayr7/ABDd/wCFvr/6I5n0 frHp19+HfhX7PLenXFL/AP/Z + + + + + + xmp.iid:07801174072068118DBBD524E8CB12B3 + xmp.did:07801174072068118DBBD524E8CB12B3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + xmp.iid:06801174072068118DBBD524E8CB12B3 + xmp.did:06801174072068118DBBD524E8CB12B3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:D27F11740720681191099C3B601C4548 + 2008-04-17T14:19:15+05:30 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F1174072068118D4ED246B3ADB1C6 + 2008-05-15T16:23:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 + 2008-05-15T17:10:45-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:EF7F117407206811A46CA4519D24356B + 2008-05-15T22:53:33-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F07F117407206811A46CA4519D24356B + 2008-05-15T23:07:07-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:35:43-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:40:59-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to <unknown> + + + saved + xmp.iid:FA7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:26:55-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FB7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FC7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:20-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FD7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:30:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FE7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:31:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B233668C16206811BDDDFD38D0CF24DD + 2008-05-16T12:23:46-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B333668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:27:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B433668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:46:13-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F11740720681197C1BF14D1759E83 + 2008-05-16T15:47:57-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F87F11740720681197C1BF14D1759E83 + 2008-05-16T15:51:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F11740720681197C1BF14D1759E83 + 2008-05-16T15:52:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FA7F117407206811B628E3BF27C8C41B + 2008-05-22T13:28:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FF7F117407206811B628E3BF27C8C41B + 2008-05-22T16:23:53-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:07C3BD25102DDD1181B594070CEB88D9 + 2008-05-28T16:45:26-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:F87F1174072068119098B097FDA39BEF + 2008-06-02T13:25:25-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BB1DBF8F242B6F84 + 2008-06-09T14:58:36-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F117407206811ACAFB8DA80854E76 + 2008-06-11T14:31:27-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:0180117407206811834383CD3A8D2303 + 2008-06-11T22:37:35-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811818C85DF6A1A75C3 + 2008-06-27T14:40:42-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:04801174072068118DBBD524E8CB12B3 + 2011-05-11T11:44:14-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:05801174072068118DBBD524E8CB12B3 + 2011-05-11T13:52:20-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:06801174072068118DBBD524E8CB12B3 + 2011-05-12T01:27:21-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:07801174072068118DBBD524E8CB12B3 + 2011-05-12T01:30:58-04:00 + Adobe Illustrator CS4 + / + + + + + + Print + + + False + False + 1 + + 7.000000 + 2.000000 + Inches + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 14.999998 + 100.000000 + 90.000000 + 10.000002 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000004 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 19.999998 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 10.000002 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000002 + 95.000000 + 30.000002 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000002 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 14.999998 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000001 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000004 + 100.000000 + 35.000004 + 10.000002 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000002 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 19.999998 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 39.999996 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 39.999996 + 45.000000 + 50.000000 + 5.000001 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000004 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000004 + 65.000000 + 39.999996 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 39.999996 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000002 + 50.000000 + 75.000000 + 10.000002 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000004 + 60.000004 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 39.999996 + 65.000000 + 90.000000 + 35.000004 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 39.999996 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999405 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998795 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999702 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999104 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999401 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998802 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999701 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999103 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998803 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000002 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000004 + 90.000000 + 0.003099 + 0.003099 + + + + + + + + + Adobe PDF library 9.00 + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 +%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -76.5156 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 76.5156 li +441.406 76.5156 li +441.406 0 li +cp +clp +[1 0 0 1 0 0 ]ct +139.704 75.6875 mo +133.931 75.6875 129.41 74.3447 125.655 70.6699 cv +128.993 67.2773 li +131.706 70.1748 135.392 71.3057 139.634 71.3057 cv +145.268 71.3057 148.745 69.2559 148.745 65.1563 cv +148.745 62.1172 147.006 60.4209 143.042 60.0674 cv +137.409 59.5732 li +130.732 59.0078 127.185 55.9688 127.185 50.2432 cv +127.185 43.8818 132.471 40.0654 139.773 40.0654 cv +144.642 40.0654 149.023 41.2676 152.083 43.8115 cv +148.814 47.1338 li +146.38 45.2256 143.251 44.377 139.704 44.377 cv +134.696 44.377 132.053 46.5684 132.053 50.1025 cv +132.053 53.0703 133.723 54.8379 138.035 55.1904 cv +143.529 55.6855 li +149.51 56.251 153.614 58.583 153.614 65.0859 cv +153.614 71.8008 147.98 75.6875 139.704 75.6875 cv +cp +false sop +/0 +[/DeviceCMYK] /CSA add_res +.705882 .682353 .631373 .741176 cmyk +f +180.679 49.6074 mo +179.358 46.4268 176.298 44.377 172.681 44.377 cv +169.064 44.377 166.004 46.4268 164.683 49.6074 cv +163.918 51.5156 163.779 52.5762 163.64 55.4033 cv +181.723 55.4033 li +181.583 52.5762 181.444 51.5156 180.679 49.6074 cv +cp +163.64 59.2197 mo +163.64 66.8525 167.187 71.2354 173.725 71.2354 cv +177.688 71.2354 179.984 70.0332 182.696 67.2773 cv +186.104 70.3164 li +182.627 73.8506 179.427 75.6875 173.585 75.6875 cv +164.544 75.6875 158.632 70.1748 158.632 57.877 cv +158.632 46.6387 163.987 40.0654 172.681 40.0654 cv +181.514 40.0654 186.73 46.5684 186.73 56.8877 cv +186.73 59.2197 li +163.64 59.2197 li +cp +f +212.816 47.1338 mo +210.938 45.2256 209.547 44.5889 206.904 44.5889 cv +201.896 44.5889 198.697 48.6182 198.697 53.9189 cv +198.697 75.2637 li +193.689 75.2637 li +193.689 40.4893 li +198.697 40.4893 li +198.697 44.7305 li +200.575 41.833 204.331 40.0654 208.295 40.0654 cv +211.564 40.0654 214.068 40.8428 216.502 43.3174 cv +212.816 47.1338 li +cp +f +235.159 75.2637 mo +230.708 75.2637 li +218.189 40.4893 li +223.614 40.4893 li +232.934 68.4082 li +242.323 40.4893 li +247.748 40.4893 li +235.159 75.2637 li +cp +f +271.531 49.6074 mo +270.21 46.4268 267.149 44.377 263.533 44.377 cv +259.917 44.377 256.856 46.4268 255.535 49.6074 cv +254.77 51.5156 254.631 52.5762 254.492 55.4033 cv +272.574 55.4033 li +272.436 52.5762 272.297 51.5156 271.531 49.6074 cv +cp +254.492 59.2197 mo +254.492 66.8525 258.039 71.2354 264.576 71.2354 cv +268.541 71.2354 270.836 70.0332 273.548 67.2773 cv +276.956 70.3164 li +273.479 73.8506 270.279 75.6875 264.438 75.6875 cv +255.396 75.6875 249.484 70.1748 249.484 57.877 cv +249.484 46.6387 254.84 40.0654 263.533 40.0654 cv +272.366 40.0654 277.582 46.5684 277.582 56.8877 cv +277.582 59.2197 li +254.492 59.2197 li +cp +f +303.668 47.1338 mo +301.79 45.2256 300.399 44.5889 297.756 44.5889 cv +292.748 44.5889 289.549 48.6182 289.549 53.9189 cv +289.549 75.2637 li +284.542 75.2637 li +284.542 40.4893 li +289.549 40.4893 li +289.549 44.7305 li +291.427 41.833 295.183 40.0654 299.147 40.0654 cv +302.416 40.0654 304.92 40.8428 307.354 43.3174 cv +303.668 47.1338 li +cp +f +324.53 46.4971 mo +324.53 75.2637 li +315.488 75.2637 li +315.488 46.4971 li +311.733 46.4971 li +311.733 39.5 li +315.488 39.5 li +315.488 34.9063 li +315.488 29.6758 318.688 24.375 326.061 24.375 cv +331.207 24.375 li +331.207 32.1494 li +327.66 32.1494 li +325.504 32.1494 324.53 33.3511 324.53 35.4717 cv +324.53 39.5 li +331.207 39.5 li +331.207 46.4971 li +324.53 46.4971 li +cp +f +354.087 59.7139 mo +346.923 59.7139 li +343.654 59.7139 341.846 61.2695 341.846 63.8848 cv +341.846 66.4287 343.515 68.125 347.063 68.125 cv +349.566 68.125 351.166 67.9131 352.766 66.3584 cv +353.739 65.4395 354.087 63.9551 354.087 61.6934 cv +354.087 59.7139 li +cp +354.295 75.2637 mo +354.295 72.083 li +351.861 74.5566 349.566 75.6172 345.393 75.6172 cv +341.289 75.6172 338.299 74.5566 336.143 72.3662 cv +334.195 70.3164 333.152 67.3477 333.152 64.0967 cv +333.152 58.2305 337.116 53.4238 345.532 53.4238 cv +354.087 53.4238 li +354.087 51.5859 li +354.087 47.5576 352.14 45.791 347.34 45.791 cv +343.863 45.791 342.264 46.6387 340.386 48.8301 cv +334.612 43.1045 li +338.16 39.1465 341.638 38.0156 347.688 38.0156 cv +357.843 38.0156 363.128 42.3984 363.128 51.0205 cv +363.128 75.2637 li +354.295 75.2637 li +cp +f +390.494 75.2637 mo +390.494 71.8711 li +388.129 74.415 384.791 75.6875 381.452 75.6875 cv +377.836 75.6875 374.915 74.4863 372.897 72.4365 cv +369.977 69.4678 369.212 66.0049 369.212 61.9756 cv +369.212 38.4404 li +378.253 38.4404 li +378.253 60.7041 li +378.253 65.7217 381.383 67.418 384.234 67.418 cv +387.086 67.418 390.285 65.7217 390.285 60.7041 cv +390.285 38.4404 li +399.326 38.4404 li +399.326 75.2637 li +390.494 75.2637 li +cp +f +416.446 75.2637 mo +409.005 75.2637 405.875 69.9629 405.875 64.7324 cv +405.875 24.9404 li +414.916 24.9404 li +414.916 64.167 li +414.916 66.3584 415.82 67.4893 418.115 67.4893 cv +421.593 67.4893 li +421.593 75.2637 li +416.446 75.2637 li +cp +f +436.469 75.2637 mo +429.096 75.2637 425.967 69.9629 425.967 64.7324 cv +425.967 46.4971 li +422.142 46.4971 li +422.142 39.5 li +425.967 39.5 li +425.967 28.6157 li +435.008 28.6157 li +435.008 39.5 li +441.406 39.5 li +441.406 46.4971 li +435.008 46.4971 li +435.008 64.167 li +435.008 66.2871 435.981 67.4893 438.138 67.4893 cv +441.406 67.4893 li +441.406 75.2637 li +436.469 75.2637 li +cp +f +51.9624 26.9282 mo +.000488281 26.9282 li +.000488281 16.5942 li +51.9624 16.5942 li +51.9624 26.9282 li +cp +.36173 .282292 .271336 3.05176e-05 cmyk +f +51.9624 43.667 mo +.000488281 43.667 li +.000488281 33.3335 li +51.9624 33.3335 li +51.9624 43.667 li +cp +.517784 .428779 .407355 .0620127 cmyk +f +51.9624 59.2617 mo +0 59.2617 li +0 48.9277 li +51.9624 48.9277 li +51.9624 59.2617 li +cp +.636347 .559503 .528374 .281163 cmyk +f +51.9624 10.3335 mo +.000976563 10.3335 li +.000976563 0 li +51.9624 0 li +51.9624 10.3335 li +cp +.16965 .126406 .120455 3.05176e-05 cmyk +f +51.9629 76.0313 mo +0 76.0313 li +0 65.6973 li +51.9629 65.6973 li +51.9629 76.0313 li +cp +.697627 .675227 .638575 .739559 cmyk +f +80.3838 26.9282 mo +58.2456 26.9282 li +58.2456 16.5942 li +80.3838 16.5942 li +80.3838 26.9282 li +cp +.257298 .97525 .943297 .238193 cmyk +f +80.3838 43.667 mo +58.2456 43.667 li +58.2456 33.3335 li +80.3838 33.3335 li +80.3838 43.667 li +cp +.343328 .97052 .868589 .526909 cmyk +f +80.3838 59.2617 mo +58.2456 59.2617 li +58.2456 48.9277 li +80.3838 48.9277 li +80.3838 59.2617 li +cp +.574243 .753933 .672236 .776303 cmyk +f +80.3838 10.3335 mo +58.2461 10.3335 li +58.2461 0 li +80.3838 0 li +80.3838 10.3335 li +cp +.0256657 .974395 .923949 .00140381 cmyk +f +80.3838 76.0313 mo +58.2456 76.0313 li +58.2456 65.6973 li +80.3838 65.6973 li +80.3838 76.0313 li +cp +.697627 .675227 .638575 .739559 cmyk +f +108.472 27.4126 mo +86.334 27.4126 li +86.334 17.0786 li +108.472 17.0786 li +108.472 27.4126 li +cp +.36173 .282292 .271336 3.05176e-05 cmyk +f +108.472 44.1514 mo +86.334 44.1514 li +86.334 33.8174 li +108.472 33.8174 li +108.472 44.1514 li +cp +.517784 .428779 .407355 .0620127 cmyk +f +108.472 59.7461 mo +86.334 59.7461 li +86.334 49.4121 li +108.472 49.4121 li +108.472 59.7461 li +cp +.636347 .559503 .528374 .281163 cmyk +f +108.472 10.8179 mo +86.3345 10.8179 li +86.3345 .484375 li +108.472 .484375 li +108.472 10.8179 li +cp +.16965 .126406 .120455 3.05176e-05 cmyk +f +108.472 76.5156 mo +86.334 76.5156 li +86.334 66.1816 li +108.472 66.1816 li +108.472 76.5156 li +cp +.697627 .675227 .638575 .739559 cmyk +f +%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse +%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 +%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (JIN YANG) () %%Title: (sf-logo.eps) %%CreationDate: 5/13/11 12:16 AM %%Canvassize: 16383 %AI9_DataStream %Gb"-6CQE#:E?P)cp`JeE!#BOOp5hCakmA6JkH;#C[\0n=2N3@:mV.Z,h2aitO1`'=rl1._P:*[lX(oY[<(1n1AL,C86O"cen`!VW %D*S!on_870^Y=565JOl&e"*slF)lJJ.d!e8rl;Y.]_u89j5)/!U"XoefgB'C,C*samp5J9CB*PCO!!5-r:91"TAI6ZiJ66epRaYL %nB8H"+('N1qqK`[_)JRdroNPEpRhHFDYsG+Rt!A(D>lTopA"(SgZ,3X+'sGJ^@!?O>5-e=O71qTqfb8Rpp[`)iScL7f`.8Kr5TnP %0Ba2OB(0/WI.R?XDr:O43dpnm?[mU0J&!_cDs?_/hL>8%Y5olQ0Z`)-rla3k!sGQe^\ZR>]`%9S%pqN8rpoL+a8bf?H0"-ahg]nL %q;7nA"=6b5SXjEmmN:;7q#:6X05kQZ>]BGr%]1OoInDkK7B5s%R.%c_DS?K%hp!nIf59C$ro)\fs7dm6esgk*^O5n:p\_nCIeSSp %C@h8E2t-`1G]t"@2"CVDc#8&Ys7Z%KIXLknLP_\@:&jq9[r:0AfP:?k"F&,?%jhgYKY:]Eg-rn>Bh;@:(J0DEpPKfd)/8GIiOQK^\Q0( %[\uAV(\Af_aF3LU(&c/tL6qr2jm>Q)"N%J#hmS!2l2GV9ipl\:=J=oe5ccNUu!+Gl*!Y[X\4, %\-?k6H&r!GM#Wfns6k+K)E+@`2%s@]^KPesYI)peLTKI_n%\s03rC-ghl0 %#lhs>`nq'@GJ\"`D"@2&(;:UaO*-IQK^&?kaE`ek(3u58Ir+O.Yq/Gl@/^*]ZRVJ#n@mL]?rq17%FBo(2C.M?>hY`?/AA*Zr]hf&Cu(H/U^FdGr;n>l7jp=kARIkRZ7\[o:Mh\&6epf).,6 %+9%>/(r,V>GYYb#rf;3kmEAXhft)BPk4f7Ah29+-.uJ1'ElJg5"l1!+VEF<03hCJC0$bJs>ZX>NNQ7'eo]b-m\**5ULI]WOPHgP- %SEGWR378>tDqj[7`dFVp[I#N9VhY)-h2:q9s0-X`+l2C"Q$&DI3oGg9-F%]_%3;L0=.d\7E_C0qqSD&_'s7Bna5=8]r.?O/J(ei? %0jfXMOS5/n;W?$i2uhs_T6&RrBDL4spm^uHJ$rS\gj\jUq.dZW8GgXrLBE$D^\MNB5>9CCmI5U3=8o:npc#jXRs/p5*]Ft[qJVg, %^C>J'NUSUf4MnA2e0sg5+0j/j7,R>h=M&gZSbH5.^55h49&I\u1]Ol\%IK53P5e,NUeg6I^&DrZfkiV_r[%Ken(N3)2d[R*ReE4u %rZB]b+W_:>(]N8:K"uTmX)t!Qnht3S%c$4=pBJVM90DLSc%Pj#hs@2Z^7RK5C5U&WepfN&QohJ6pY7ehrbQ4m5(/kt>6.h\5dV4a %(4U8tRmaTkpTSiCC]Tl_=aN_er.ND"CVLC,KHE"!j&3a,93qVW/tdgjAP_miTK;no1!^f0a9i#)Q2[dh.s %@*WJfn9=A(C]-3;hE8Da%e(!XD_03MX;KM:_9k@cTH65OmC7()UR9afOMCHINa1I@hE'n*o3.[]LR;bh!^a2HIfY$HH=j4/mu-L$ %(_PLYofLgH1unK\"?T5V^iRfR/`5rn=eYU.hj_B'#n+t.j50[Zpqr`Xh_Xe]L(tY#/M+?'B-i"9qb?BKGQ;ZoNR/SncWaZWrE%m= %`W5UDES^:>&@6=nOYSX"qo*k`$Wi8?_cq/^:$,cdc#1GOJuot+hZnMicPnraq3gmB"J;V'Y/tUC\E6].m5Xe>GS>=^dXJ[A2r^,B %)BiPtc@G(U`3tN4ha\Sm1NYITQ8,SASBtF8UqNADZT9U*l310g6d.0]liJ]"e') %rmm?PF,T?3Dn^-$r0u8!;kL>LPr_jG2:Z;B_6]/Oj*Hc.M0n0+`PT,KrcSNO0AN8*[TF1AT-CaaR;96:-0(bEVS?dkPVUXUbNRcX %l[Yb(Fcr/c[>7>Heju4o9[-1ZAG,\6*S8o-B2.Prf67*7mGLQZf@8rqePM\94$PNuUaS;94tAPL*7;hYXVe`)N+`hTSTqV_I]fbHH_7\=qcDW$H!k,$7"*^2ru&Phh:=H %(Kt%?Gci_J_Qh8=e/c>C+ZPm3A;d"'j;k7IC:PCs=,oVdPU#L/oX(HmNm$7eYp)IcI`'5Yb5nBn-+%6<^T?q]XmR-u:&(6(c@M,c %Vl]Z>XEuBPp2tFOn'#:C>]?sO2UZ>_hGH0tfo'Q;?N!B0ZcR"8MlY-f$(`W2K'/D3J9ME!^Si["F"-FBR1m!Y'1kmO[l$3P7@FPA %Ta^%&n_Z0MG$IJm)>^g_,,0iL;p4'`j2bl(;f7Zb7XJrh=MfHka*!&T%h,0)bt9"@^?SqEMTGP)cFiJshU5D3ra!&Uo50d;.S&o. %9&tZ!p%\"R.e>kCD.%73:ZQfJeSZ'2V2]JS73\DUbROEWVs?Fm9]flF)mIi94:\"'k8dlIV3S^%?QD=ZMcrOJC\R&qWd]ForSk"F %IsV.Z48uD^:#C?ipro`Unh`oohYM[+oq"jS&_/%B# %hYdJhGn"iEqJNMf3dptgpNPBdDa/^J6g^(%Nr:^!iVpQ:KDOcWGMCG.rp]fsJ,&[#II24UWqJ&QJn"[CNG&0X)LVJ[O$#_+:Qc(. %-Z)%sq3-.4e3V'oaEC5:cW5T"jrp\!,SBVLQ3gQ11bs8DQTDr1T+r?],VVshBU+oDNEYM]As/3_tE]D6@A %Xnc$SR9u@r1MriPVEL0]FI\AW'q7JEXg^*N?mCnH1R)?7U9\"8KZ=OMG?2]F[XRu#"fZR\j1D@:%=p.u7ek`1,_d'Iq, %BUO;PGCC(ai/dI4"*LptKh.`_SEFADc+KTko6rmIa"RZig710V&46dbPctJKYRC>I#fep@ %41aWi,cKIOJhQ76k^!RLHp=GV6Ra^!)k+#Pc.ISZCq;H5k44b=cPVVZhL5(OmH#EoDW?P2W/&B[L5@ADqdt4=SXmE.?/",GtE!QH!(M,@XWD[K.II;"C^L[,K=gb@hr`6 %+qC7UoFk\m.:stSDW3SBi]\EV*+>Bh9V5,M,T(,]S\@ZAD4k^oNc_m'=@c[3#LbQn!50X+3>W5?[s=>7q#KMY-e7N"_dfnqL8A@kd)-257X4h/jhi@pGhG! %Ag;r*+`HC!D=b2P2r!_C\(ts5gEWB+h)Ra*)-/0&cn`heB"-U`G5L(re\leB3:$>154%;nR=3qYrFWh#n'D9E5Jk^NJC#?6/\od\ %R.G@N*4CXY@=L6VNju-OL*7Hjg#A!q/GkWO=HqjOcjlKQs/OhQ0CGVeJ*'0#lo"QF=5osM7ELHc(1h"RAl6!pZ'ISUkK^kC%OJ4s28sWANCntmDm%j!Q(drdUA\p@F2o[hs3Q=,"42sD&4iT\*5K5t.6,l7,6R/PNaN3R9#RLYh %P&ZYiP42@'PAuekPOXhkZku2/)CeJ2/B(7Z*4&Ni/r-29rn0rt8YL>anD?]-OclOd.8bu*f.=m6;5>QLA)P+YC%PQjr>=B3B*/O5 %(=`'kiAs?7)V$T6[Mm;?aE0As:G_o]BCYJJGJW,<@n*+E+^9_E^G0*op8Y^Y+/htJ$&"SmU8jjRO\YV`?;V[=^%VQ-,ck5p2Oh,F %FI2Rs"N7eCH;.]1F7r_TTbe?Q+beS6fkG4"4\u[cg?u#kX2=264M-+?_co)rI.QC=+5VGIH$9)oEuS8R"b^@,:tbf@U6d'kU6m-- %03]D$VGHDf"QMnS&43cs%Kk6^;J!;!sX("pAHAJe!lSn8h1K5jX?iktQ*X,"?C %%`X'[H/m:S%TA*X;^s$[g0ptTS?4U0/#"JU[51a2C(c\A(nIUDfG+RuAqDTQ!)#F*OA-CMQih0c*GfE]'ZmSq,Acui\p(CO-_O`M %+9aj\%N?N#)2L\68Y-C&49W-\SC8SW?ub@fWFsmWA\M85?]=oG)&_VunuS@NQT?Y<"D4);7D&L3&J+A=k?(n4H&;_g3k]C0+Go,# %Unu-8=B\-7KH$OT&*aMk#S5RVg%,1h1.*mb`(h"HaiK"Gn.5((A5#OpEUPV.6V`1\%#Bu"6s'i&).5CX37!QM'Me-t9?p %U:#%87hBgiSV0F7a/3o;GQr5HU3MbLIBp=;Pd,1.#2$3(.Q_]/"aM6#;s?Lc@A;9Y2N?pj4u_ %Ck7?W(e=]?,leDJ5cX0gg)`QRhnob5$[fCu+;9Pc@65F$7Wpio[lj`Kh#S&COHWrO%NU(]Hf,EH/J'#o`)DbZ %:37C7i&M'V-IU0K9c(NLU(^iU9'_?!iX[Rp*F+COmta@VW@gTI'9VdW$T\R]pVEk[lYVj+(K0Rq8gOBsP\<3Oosn,mq0n'l@T^PO %0A*kJW]'NcZ)0l+gq3R%_;Blef#d.e@jBYNq\Rk]BhL0cE2F3)5)_<0"*I_R[7l]PtO1XEfAE3e[ %.)?38OEpn,!Y[!_p2o6Md-3aA=am633uliGa8KG]hsZeqR-,Y?5YE(p'6=UC+VqU7esM:?#%E;-"=KqEH_RB.8$aB0)2MrM[@E%B %mYN\_8mjDiP/1'""1'5T2h:j'hEK9oUdn/R.#HkkI]gDF"4>V59?oK6HrX"4pL?8 %J>.o)7Q^FX%.\pmj_W!#>HIO*_M[Q"WR<@+n;eYU^AdWqgUlnWFD#%]=+DtFZdKO7!A(ELLm]YPlJZ1>NtZju-Mk[&jL4aNh%bbUnff](9`*``gsh!%k/N]N9-U6$2k?fhQ"gV3*lO!Y"&menY0I]B])2W)MuREGZA-K4KP,kj8==G3FgebX)Djucb+^sO*eJdUI\NXOb+to(e(M]YL>^DfalD5?93ISfphrhIWinD:-hjf(X(rW.:up^8mWr\ %;;tD=.nmocl)j`o@tUmpdK1%<(UYO;Wu:c15@co)_t\u)CbDe&@jMmpin5K*%2s%g@1Na-*=YX$,`a$=-9mSs^8IRuB1!;X+fg#< %)d4Li4cleaPJiJ:]-TVg;'ks"%;IEa4,8nEne29Qa0R&;ZM[QV\@\cObpq23:98AcI4*a,So7?35F(Y&[Pt8(IBUG(EkP*<.at^l %cgj1ko,u3q''38X7qFR#nA(PcIRiY9OQ;FB]-Wkn8+LsM=ks*'5TtO`!dZ'LgkjIc)S)H=]QEpU[_i?O3.3Ll=7O=8MNL+5=-`^d %"\=\7EGa^@FF_fFFHkM+EOdTSIP"j.nqg;rkd!',F:B9uAoJ"@?,`6O=`?dt;AlPfa^bU/Z6UV3 %o!lBSA!&UJ.#mVNph#].*9jCu'$ENJOTnukP9#ao$m_rH@AiP1:Fe(=5,o#U`]`q>Iqjc4RUWG#-KPU'&[Ub#EkJt'QGoAGm/B?) %SLlD&ClSEkb@\/HPEJ]K8NfOrT-aWI&f,$m_#"+`DOQRPIsV-[@oj/JFGK`s[^CX!AZC,XWg'?CQ:b@2EV43/USCQH7FQ%t3W3AY %-[Ntb0=F)9m3q[\<:47br7GKSjk.`;H_e]+1#2Z]<:Lc>BR=pk5TeXj)6-B]%ZOQ(Au0*[[ZFidbYo\0[Ik]>^jegeQd_VR]X#B& %<1.X[FQ2YcmG8<+WAWed;X(QgJ7>*mC,en-U%hNWrs*,\8q4Zns@l$2`+Fme:U-"nI;(Kk$]:T6`72U+A@e$%H8d@AARt,'IX2i %WafucJj3K'V`3/(3j-ED*[L5t)(U%WVU>l]PoB>BLK9/p:Yu#j2`9r!4iXOD\03ft8be1,J4hO]Qa7qhN&CBnj!:qK8sC7N3,Da+(X&s7B)L;HrM.NO`5D24gH%G\>g,'jDCL&>*GSii,O1DAEbpkQ %!6%3L&Vs>$LdiA@3ZqirU9GeM^qgaV!-%8qVMDj&,cF%^RQ,&b`QY`G\[C@fQ,"J?,Ce8gk.6qj/o"/Ak/Pai$3$Xn3=5WNj*t58 %ON%9;aRNPgJ2@\5%g8V7AlGIU3$,"e"LXViXVd>sI:Q06%[od0Qgc+R6jP6@d_2/ca\k__Rp+OlDS%]/0l7Ac]>IG\g8*PH;S"*, %WIM((),%p4V(s]^3<`!ql6D3i!7$b?CQ!Ia(OpTKp(Sd(m'-RJ@JV\\P@WruE"gV/'IX<]2cC2fklqJ%#9k'7&]?])h?d=L;@MXU %82$'[1UUUoJP9,o"k*c(&j:dWia?Lhm:ncN+q)1K-86;-!(\F:,6<<5rn!;Mlu[l%D5/9/2/(`fgIV&>:O80( %mS((RNJ):i-'WbSAo1SOP0-l:af6dt6],'/e<7!*O#$BO(81#.-*`6*9*m)K5,gs#@6.a^YoT(a*,c-kD?>3+e2?As$].&^=1IZ*K0E`CRMib[AP7]JmD_:l!nA^cnkK^?:u;%+[9<%H"# %+UU;sFWDcrHd0R$PZ?c;;!.AgS:JK*MHL+T4i'9dbYoG[RA*'1Wf,O*?C;B<9Hlm3m=*2.!)In,QiX7Bq3=NtZBr1d67W#>DlSI8]-`aZ7\lpTog07F[YhG;k0W^FG+b`@24W*G';VEGU %WE&hZ3)>j+rb!:05:Q"oZ"@_-G^LYE=FCZ$0&(0!\ZXZZjV^-j:DPs%?7=Db9O-h9YuVq5-ZZiB$,/*]m+#M$\Q5:):,V3,%A'<` %.C%hR8@I0iXW_3RL7!'0UV>k"#UGeA3g(5BVn;1qQ(1kD2oBod]2GeDHp^*"lP6h@R^T2/HgN?mfVi8f=3:"SH4!]Um'P;;\`SY> %)"4'te]jP<&#U.F9dt3>43kg8;Ac?^EWdHN3?BkcVS#P*Y_e>Y8."I#p7,n;E:tXnBo/#h2pWr&&U63<,#QO@Dr8$qAj?8957 %hri*t0Wh[tFDX.[);G+bb=dV?p)V#Ukq,qUoeO?>J),[&Tin %;ePL/"BsPt>"Y,R/(]GX@o=mQX>QIj]9[']ZEd2k$(S.hiFKN9>OsW)#Jp_&YX&s)PqO7?/h@m!EL`0F;T %0-.cKpsS-mFEh@(d`5rPrQjg!aZk8HnJE#pF%G %V7XK5mOmM^U:XI<`+=:ms&!9d&B`]?9*Wf%m_Q8"f/DP4U_Zn(!WIE;?^&&:Gl@k@q$h2\FK-,]FQ<.gN)]*\Mqli#M_6F;*`ZN- %r(H;DVU3\FML!4ek\"1,r4!iCJEASfHpniWMn)/K]iOjiMHNqj?WM!HX15!n'5dK$f)$^rFBo&Fje7Y$QSZ.TLdWo]V4Y?:(\Q47 %HKdl3oM_fWI_PdY(YI[S$%!h(0-om3f8r4=-.Iq9V8JW0?TNR^L]8*2pcjDRrC')&U*6/Wm"4$B0NhI6$.5_ar5"gt;dT<#h50SC %GGn[8.27B;G$&A%n*B<]XKc'51$GN.EKaa2f:H7:E(cs'LKnl@Bsmr^r=1cn=[&V)G.mnGIYSlr/>!NP4C>2u^KCGkkVTF%dkhtF %:3V/20p,#d%iR:YG8dB3;)ZH`]/'X&=@PQB)[mi"1scEJEq;)V1"&M>a#18#&GFm%DB/7H(OA7-;g>jKiBOVG"Mme3^=lVIjn\>g`_NApcCm'Q@h2Sb#EUhA4K8>0*fk>'^idYJ@2bYtD<*pnUYq%5oVmpjaXE[!1[$*VOj+r8rhh^@u74 %_Wp8h^V$`'Fa'JuLDu?:NbU@TLD$Vn]Tl,eQIhk0%]dA>E4Gbk>]KN6GkppF6sU_]rGrZop8bO!V(WX+ %Fk,l%`EZVe;-)+DE\Zal\tP?h9`O'3MAbhZ4=Q3pC[]sNP#!]>CmQl:=#/2m.]2(H31mm`lHGemlPD"YeYJl7<-je$RYg\@Ue(2DoLI[$%qF9NsZWX?L\3NiD9B %qde2CLkcu!A!1NN<6VLmHK>8iq&/_tA,edDH?)&pILgm^rXeO\F_5/a-U`,M'JIFOmg'YOE0LdFRO=G?%d5Yrf%2$FLthO@UrRo+ %j40Z@k4)%+."Cc$f"%!glXSfEQ?Aa=Y1J?mS8Na*WRd,nB&.B@c%JWE:hN.>-4uC\ %#q[,?6D11$[+\_fhZL!ZV)=cWd1S%\L6b;'kHGqmn)$9L'CSMlQgpLpmcV9*>OSj#F.3&LrA*8oEookFrOm:^iT41CL#847SA:.$ %bD"a?Wj-<79Z^N)>q'3WO,[m(-#N:^'&H*9Pr^jmXgG0,GGPFZ,l5uDNOA"Ima=(TEhSfd9Gpl@A'3N:g]*KG2VtA`ZSKpgkUZCB %5P5f7`ikYa2qG.u^'Ofi(,THNV5sS.Zgk?0F-c4BX4pD<,U0s17RQpESDL-V'L>O_=>ZqlBd^diiMb:F_Q41k-m?CXXQ[>4.t6bW'[i`2?e0/mrm^EMKO8@OGCS$*KN %5dE;/9'?+Z=djO:CC''rEB<)!&F %oJ2kYcsE#\p#oP4m(,7QbbTDjT7^^')>u:Q^a4gW$#"g"nDZ.N+)"C[2JpXF16VU<=YPSmBe4u"Ol7k]As&'^q(o=f,qBrQjcH[V %5:`:rRJMnmH@G/*:mdAl`D?KW$E^M]KiKpAQLE$q%cnrZ"Xg-K>MaE/I=B:R=Yfs)oBp)/muof&c+>Nagn&8=]Wfp %Qs%Q)bl[^!On?U`\nWL=X:b"("5bCTh)``BZAbj!*+aUKia.LF%DY1MNdk5-R!epR>rl)Bn?3RR:(/!arR]1\dkUcf1I@8#$$^HG %Hg-X,4rY\Y$i9YNJ7lGt,3>t@8,c#T!.!X=8rLVIOOI%O+h#P(HcD?DWUBshRjpB.4M]>d'2Wc\[KC!p79+Ml\?-Wq;$ET^23CF6 %c_HsL\nBQnF7225G6H %/94ZB,JA3o?`q9_lcP-.ji+h%@U48aY.RkT?[]-kOTqq.D=]o9`EOJI?4-uEbd:7Y.KSN=,)NiSsK.!:l/.:\g%P0 %>*5Zq=m/6HPM?eTB%e8$qn5ZtM2++504j8LR4jcZQfRs)(B38I_K]c_%q['Tp$#J'/u)[61=++19uQBg0%RdLqeL@>eB8irI4'>R %gWd"KDk10Zj'kRPJ]\Lh/I&'OBG+GH/?K8SeNkP(<25kae7/s\SXk5Vh3b(P)/5dsXlL&R1X(O8m0+"'-?.oRP$8jPIWQ`[]'qi@ %abGYNKgS<9(G6lAV%Gqg^ha/mQ7n@>ph;4"_tpoZ88`.[:N9;CPROeKRI:lqDGE3qEf[895E1])?:*Z8%MIChN`sh/bbUG14[^HI %""P6!UekGFJenZThM%bL,+2,[Siq[K-orJbO/>(7YPk/t^$;;*ohDpnWfB83!*)WA#,l!WheO+#BGAK- %]9.6d4Zgcs/pFG/IdMAcec/9dY-OAThGjcT]6@N5l4LJ[_J1[L4ffEOjXqVKZ.]\n=_qY,+c$`(qMU>K]A1_I:OptQ[&)%$BBRMU'QoBIC;SSdSN!]Dn!k#Q!0\@QEqd/?[#]\foP$9&mY-ubrr%m'3J7gK;8brY!5]?YP2*HSo"k;or0\_aK1SQX!e#'_E%M6`O"ngXe$l)fN"ohG#r;Sb1mnCnkaFb\M_1``3\b15HjB>:"I"n)RF1U=VtmKr*jtV9lI-oi4V%\HCrIQE[is$1rG[oBVgT9;cI]6S4cac5CB@XQfZ"5fNkGIe_'D'Z2V++sjbZ_R$Sh>&qbe)7N:&s$dlm^cqO0&1Zqfl/A%XRs!/#+_(Ujd>`(Gg(I^)6ZSA1d4bRJ;c+H6' %-XPe]kLo$D%Xp]q3%olRQZ"J^9c)C?I'CpQrOd7ITA8D@?C0F3E-41#lll?".<'KRfq&tc#$eZB>Umo^!XYT+/'Dn4F(Gr3?r"QN %c35Pb0>7BU(V$\MQH:Jl`GiIo[GA">cDg2ceTOh:f>I-[C;^>h&$)NJh*-7%2F,c]"cKg\70EG9Ae]i7<1KQOUhr8Qj7!j'mh=rmHA+Qq:nSR.&k$`JogUrMs1T?kB %g:GdoWV5W)k#G0H8Ih:oZau9d_2C^`@+B[YB[U5SS=QM*OfE9$2R.#eA@n44`mjF%+MgolT5+=(MmqE^R\`\pA[&")24-7bR@:tB %.&rT>AinaEJCL8r8"0t4",ihORj%&1lm %AW-]-aP04^gh@`:BtfoQSpV<;kF3ii:Ot)bY[=^uj-eIY(Z*Z%D+cbjS'WIY!")nPH%Z?_b!+S_\+"XGB1ek=ft"ZTXaZHWgddhU %jZ=ncl%uX-;o))A(+8YuS<=7oD-#fp^J1Kbf3Ppm*>` %f1/;!D!Jj*fIum.>&SB@9b-qj\QcCMSiEq0dV(JF7O1o@[D@^kg+A<(V^.pL;dOCHFC)SUdILR`o^cgM21+l4l;'dT5sEcr4+=\ZBS(fqGXO+d'WH`aMZ;Bk-Kqld5ZdRH@L:c@/JEe!1)BanKOD,O:Tl[cXdS$[Fk\JC?G%0%N8 %Cb'3JGpqdMD#.W%O)mN9)*M`fY8+AF4?TGW4?kr@1!eV1T36rLDa_bKg',hQYcZEnd4lLLadYmu-93'd8l>(cXN+eE.7U]Eb9QP" %#NA\IE\JMbnRqdVp8`X\o,thMn_JddgdZJ@Y55^B'f&+1-;eV/0k,1A"Go\_'."tu8t),,.=iZeAL(WCVA#-2 %#bC6aND@1XXi5ASEUZB=N)2@.Bs#b\p\]RR#(TUk.9-Ph?=P:]o2IE9o<3nG.S#Ft5 %'iE7GEh&gMVm6ZW'=71j53GEtdZ`N\])"uS758QrJ[6&%SYg3Q9`_8')Hl=C)l5$"FCh7!BqR"B>Kh]/Chkr3r<[mTUG+&p`XMC= %rfl&W-*3=Wbot.-;pt7K&K8a<=Or>XF_#7[a';pA!@i:cm@L,lM_JcG":\+=4"`!UEZ)!\027o+8 %Q"jHu>"5JTGd!$r1`Vb3AWjWh9.JH8L1!5.0G!R%CQ.WooGUuIF47gH-*=O]eu7t7 %=t%=Ti28$<8mKno!>q]\/bH+\r`E*TT)HRTD!-J_Bs^jq()sPmHZ^UVF:[\X+l*(^VGEZNH#::Y+l[q_.=RBNH7`+;Db<,LOh]r!^^S*ZZ'eFYZ>bG"1PeE25-h:5(kl_@2?\P+'CpS?U[eok+3G1Vg'H9F4ZO:%H;@QBo!`$KH(-e,!W %>#))GCreBS@i:>)_^)1C#eO/"cjjcph&mPpio*#\\;hqG@N#klb@$cgeY_rCdWhE5Y<7`HQ$QZf_;bk14GUU_GL_1DI:CaO %(nE8d/\.f_)Es574Q>oKmP>'qN7[(1XTIOZ2T%[8nsn[-)*ADV807)i?;H`Bc".sVSj%1G$nNd!7371=P>N;Rb$*$#!D?G@-(aU^ %[[_mT`\g[V(ZW_R6fnLVp.H8tDJ@$bE=P^m:b1SqE-*_Jn5+57,uZk#F55dfD>BS+p2LVDmFPL`Fk*,&=]XYF3-#ej %\9pc4SH"8Hl`P0>S'@pbh+@0NY8!&J(Y)[XJSo!LHZm?g&`E762'\'g+ONV].3Ou9;OmG07c3''E%Q`JkYMu[kYq)G\&0HEnhWS% %9K^l=VMk!.Vtb[e>C"ODe%UV\E0bTWjSV`SSqcX5q0_2/jq,q)L$B)O<#2JQ"?Jhn;ANldqSe4)PdM0:\D!%/IB"b"@S`ek#sFII %?;\cH?HKf=jW\\',!(^ZrNYe#"]a"$,Bnr,RQHe-.Kjs)R9)PE'DL:mdf=W+a.S0?-'*:,@/#Jk[Je!\bWr^'dXq-RD(7am5(Tn]b%0m`@O/>Ic8':%Ti!;Hh$;,jNjYj %$n\@Ac*\3?encBH;B;t\f5-8+A[.9hN.i/0`*?_ON>%ZG#3hrE<_W7]S10qcA`;-Mc?ai>>W[(&0ae3TjC4^aX2!F"cX^b=@.QS^hO`3k %e4a^2#@GZkQT94cKe*/*=-*qBnu3)#52U.d>o$:-eVh`N4[7j,81Tj-L7*U(16\ALqn6o[u"r %5gj3lW!_:B$[Gl>Nr+Qs-($WLJen!@hoPfgQSp`$g$W$SP?)#c8ZnN]U-=\KV&sb!k]*=rbsUj>n51XT&/Gc<\8Cgd]M9I?XefB %3P068TUeo/kN>_u.Gj6NVf9r+jd%5H%PI()bgdE#O]$^Uo\$;Z/EcYJaInO,Cce$"*etQD?)MkQND1Uq84#.or]o!qHr:_>BUL6"#lAK?o:);NV.1/hCZ`obXGG4]Zj$:QqNiR %Y$b?^=^HF6p8d`'d-Jin/RpF!1&1%UQMA'fK.mXCUGt0gUS38VMd]hr9Ror.0+toW>KMN>fP^:217*'HoTj$^q&np6$F$,=9VLfO %cL\[i?@RA*-FrliJTQl0/+5fH(sn7pT@Ef)r&q\u`^]n?Y&:%2H#Q;5^;1I#6!E:NWO(IpIesijj\p*[W[-ZSbd?o*^ %^Gou@2H9;dMgbB-]@D7(CW\k^o.>d]/j\QBgRP'H>i)Ee]LcmaA[BV(E4b8CbCqTT0APnVUQJ%=rteCGlUJ>]M1nZH`&aG:a4[@; %I]OFPY.sQ#gi]eXj7nf"AFqk?9=`uBLE>!0%5Go07fM-\$!#&,7hTJ17EBH8m,/('Re:T7Ue`GgS7l#UDRk<&*a\iYUWRG5pu\fB %gl)@D(,&G=j]q^R>drYKeEUc?DDe7VEl3l!-T=IWn`MVI/ha+@MRiZXmH&%&Y#n07>/`S19]K,BQS6#9/k2fYG1EaZil[e+)!0i$ %)jNF(9bCAO,E[o&>Pe8o2riF:/XTJ>7L:S(UR6?bb4=7*[:o!Xs0)mqCmQ0%kpSO&.il[ClBa0!?+lYKiE'6iQ=!61^@XB%2+D)Y %e9Q.GQkpWBa#pJ6lH)KcfDa;okO$q!4LR!hhW5EO*Z=uG1D);"LX#GQ+n!V;c]X'.1DpP:*BcTa#RsTT;r[-W$*cZ>$:]W(QnE]4 %hVORi2kc9go-TNtX!G0>/Z[[hWnL8/11c`oPYSoDR0"ZbRB$eu?ArKrX&aXel2i2Ok9ck)!`[CdQ%u9(*a[*$:7)*p=`,XN4-M0O %hl.4/''SZ+)O;Z(UYN%m+BS0JN*FcKBY8FAP's)'UoqY"nt:QX/3`'dJNf]:L0WeoeEi:-3a_(RSbem;F4&ga!b.\RIk$G'UQ[!*qh,8=QNg_,n-RJFrm(/R!rK\G!91"Ls7s&ou;fkP4F,8[Eij.LSCFY+\]c5]t!^%PRM-U7Q %R$$kbCH3,<7NSGdri$[o;/P">p\Jknmd6T:`:I_;@\/q3^(8DA.G]Bktt2QU"m#MZ>W:,NiiZ\QgDp=)Dj>%sP]BNmUG\ug._et1T3(RA9Hd=g6lEuug\VJB5V]FPs00,/J[NVKM_T%%3Uomom13VOJEn(LFNo0q1HS*ps$3GP-nt7bgTiBbsBV\lDPhU.I"1LPo\tAs&$_l*bs8o73I/\]p7dn,coJk+N-k(3:g>b+jl? %hX5ia%Nk8_(TKb=<]u9L/[1&;Q\@'!kb*-GcR1pPRTD@i\VQ\U515KhaY9Y1bf)(4Q?8q#,c__=QXkcBoU#CI6q(%Mp;p01c,$7P %Y;?P-ckk0-5IK$ihfg^NNS($ZMs7+91>7`p8<%;Ne>+j"'%G!aT'I=UC8^sUEGITHR?M-0J']8Iql=B.PLI6+HcWtgep]L_aE1Jl %4`I[Z"%A$F=hRGi$0A!N!j-'"glnheE\hbpe\1@V1NO&4QCk_M5=?6C]h"don@\U\'UYc0,N7Y\n7Qb`p8W-F>cu1r\BK

    qRO@9DrH%2llKi&fbG=:B)+Y(5 %H/&O9NuFDH04cNC[Gd&8k.5#:24[MQK67^+QX$`W8tlLrofD@-8niEj[!K8>g7fqaHotI07kI*>Q6H%$>sc4U)mc>D=-Ra> %Y^,jt;Yp=aMjHf*(Ulds'`*2gjK^cf]_pu$h&9oi`g>;uneD\/V2rtW3Te2kXPPc/cr?OTGsD8(Y=N3RhhIulN:]T@G&9=uMri0% %F1^;b^)QKY0ARZ:WTjq$P_juP07)00&E>7`,=5VK9)H*a>GYK20?MJN8!@0Mc=t3"ORc$]5IKD`K:e`g`GO/-8p'-"]gnjNeXD2NMOpl0L$^ %m+OD.bQ%\5gV"mYB]Wa[b9R_oKBRmXqk)cJ/46P9\`lct>;nQ$AoT %o'WR9reN4Ha7@2kpWn>bO8gm2q7ct*+*[>4hqn=ts-iAi-29_)#(A-crI?G+4'(:?*[jf/TXJ0Zoo22a"94tAF/&GoaEQV2h[0:O %.ueOu6hS=PJ&(M5ho>f3qg:Wi5f7b!#]qbD1Z6+9mLhVcC'8VY[.E)qE,5s"LV[Z]pPn/qS/(M">O*ulQ+t3Sgqpi+[e]i4s6e-u %GFq(5rqsgK?NTGp^4o7a"+?VeEVJA)q#X4dh;)FT\!oHBS4I$AMBFUqHd'o%?qlUS;_3AcRpth2 %0SkHBnE/r=o_]P%o4fY?SN-Ld@]dWHdU6\u1M^DL35TC#g&e;fJC6[Je1P`%c7kP5OaC,[ZQ)n1p]15H`Xag/$nf>_i8A5q,THj= %ch8EUUspN*kSm!U)(#!<.eb"h@J3N!7]7r17PKJ)$Y"L6sdfDVG.FCFJRjZO2B=6:=%@E1F@dUD*+Yqs$LC:?m]\`-Eo^[oaQtq_/$?N;uV% %.d%Fa*Abe6_Q*^d'u6"ro*Vj.YfT$ZQM.$pj[n5uJI1JW!J]-2ni\c.cZemq#DNdY_!Gc*9#bdHIafE4% %D\J"7F1eCkJt=]Ab9p\/!N?&ALpJDT?9p!D_oPZm)MI$3RLDbQZ>Di[RliV89a7heC%?\c)&##_YR!T=qUbd':i7Yr$k$[P=7%Eb %I@\)8:BA&+BNVC&N#Vjd-1h?sh?4blolq*)-3l*s.%)>GHbe``G;>Gp?I($/Pld[WcP(k!`rZ]rQ3dBlcQ\W!_>rODm\aKL$`]3H %6)rEB+ugW'iD_f?a5`gf08:mVQU5FK&ONknT1K6dU1_g:V<@8&XH;h#YZ7T][CZF+%hJ+h40[U9a!]j4olJ1,'rIKAqlru,BC(/.V0H'M0GY9cP[WU&I0]pV %:V]/FpfA<G]G!fUk9]%`b0]*'1Yn(`"0?b*W63EUF-=kjc%/._J]IpT#L&23hGq*HbaAXnV)!,jh"1(D %'3;hPg+,0D]`+G-*uK9W&I1eR2o/No#$oQe*>_M6-bS"2YrfaoU^-kJ1"?UEcq;?p:"B'$Q63&IT7!f\d7D*"Oi3p]4!MG7bM+(Y!$5#EV#t>I)8( %!Pf^=TFOdY^u+)>,Qsiin,_p2c;2)'!Y[]s=X9e.8%mrDGSLMl$@nH;d7(%,1,+eTQt12Q_#Ehu[g>HUHU)sd.mTE,Q_P4c*:I9A %-IOWan^F23bhZJ;$Xl5V".#pYkn//RS7732S4902E)[tb!V7@_2X!XT#q-GLLbS;f!32Xl=7C8,5BM$U9-a7>Y26Pk38cuW2Q6:; %cM7P4BGH5&S8nQDH;:2U"WVeRZIR9K%-?*DFV;]E`R]fnQH'9"0J("gMg.j[5(IlQGj*N;aCd\XaB5g0$rsnV?fn7/q[P#Y!D*Ap %!fiBoQO4/X2IO7@,UfT;!%KsR=:.;+L[mEP#.[J=1o.T':l0iq"VDJ57ghY?6d9tbp%'+L%eNp3o4W[[cA=Rf`$bMb6c1esL:Ckf %ZV,]H%aHu`a2l:[4>7\1J7P2F$+[@U$@\!X]T=fpY7!#s`p+8S$tEu.Elsu=fVA9OF866oT(I7U5P=(Y[=,!T;K@gR(575k]1A4OPdSr;*rOrY6dP %5?jLC4IA1WL!^d@B)r9*,,@=$5!)%+aoq3Tk]m..8/b>P!(405cBSdQRS4T<[:]RaOcs?B)*u+14q'i94O+O23^"^\GsqJ8Rq5_)OQ)0kB`qWapf8^@g<_sr8;+"Y@Io`9#f=mcOhX#aE[g)o15F*guHca=]!-Nn74I8V?,<]E\=I!rS3P#$570W>mRRa %LNMmUN^Kl2344O\]DNpH4?3%dW+uWu:k?b%n4`6>Pc$VEn7=r&U#u`<6SZ0p']:cR:K@dN6+W3AJLR7DUqfj%!prAoWlc(KF&.37 %9XmFV7#8Q@W+-2r(9J`I\pomS,t9KLitX %RXed4M#n/6+9bdZ&@=p;Tj!!-o3_RH3bnZq3RigD2uAY)r(hdKs560kU&e?_5;nEl?gU&XT^=MeIfL=]'q'R@o;oqRr/eQpN5YMO %n>8M<=3Wd$/Pd)]3#0(HNB],EQt5=HA=7?nrf$gh$3]d":qs!L(5K4%S%P2#'JPo(=tMJr[!i]3:E'^-*\kA'AcP//2GKr19`]kI %W7BJJV=tR-aTb9?ZL96m2.@oE&%YJSDf#`Ju_muYN"SG.[.1AF(#>onu@j%eq=8no)r1AXjk`C,YTgS+58$tbln'FB!*3;N8 %copPg"+r?=[4`q$;"I$"2q5F30JP1.O&4k'cSO'iTKJuumW_3T$-uH.6I.F:\=bN5/dO70gHrq6e?g>@[4E`8:s22O/C^tu]L"1X %astoHcuTQ%/-r"I_ZKE92(S(O4*"V86IW=Q-2Q.P %YN$$PQX]:a/K5-\`11+l7*A=>qN`Loe+MnGb %RA=c9"Z'j9\G!-2CX#'^oJu"f=kKBQ48@n>\dJKH"J[uprW7$>.Ku!cf6A7pI70nGp#eX!"IM^X##LlaN&TDG_%PHQ %O+rOBG=[*R?h'3P/o\BL;fAe*ZX$W0"'1?aH?=6&E.Bsm-oR$)QlUIISJgb=..M?`[8WU'')X]hS]WnO82K[HTWQ+9C#)"6Y@$Vh %;l+X:@"qgd@i4?87shO<47bQ*O/C_2eM$@iq1$7gKUmY=")^;UZ33UGC,cM/aEof0VLlNGk]@<%P;8`%d/6\$=!Ij$1m`c1^T+D2 %+k0,hoK-RY);#7`3O6PDV^5CU!5gob-cfd`nd0bsa\*N87L835i$')d5n!g&7["7l$9:'r=J/VTC_(?&-CG-#@F%aQ3i5DDF_48Y %![h%-5YW@YR"pqg5TH?ZjYBZFM*!sA4?E=Ih:-t+A3tZC6q\)8J7hOG1RLVgLi39sVhP"(EZ*B#jPe5[fc\`k`44A!.#?kaSV*!XDhcW>t%0@1Mi7q %5rg$jigMijJT1uW(ZWI>!=OcQbibO2IUH4`2FP_*+RSW(:H@![/3B_?l>M+TN:9I`%H`LZDJ#TV*LIe%f?B %kY-Rna3&Jg^uA],S@L< %C'VT@!7:^"f8#&NFb.-8jE4G4&C;TneMfb1`#[bRhTB`'-7A1RAo`T*K9\l_QJB%dpdX*?W,GKdXlkYb9mM`F28NF`!TEkBAWtS=aQP=RRV(N=I'M>jiX#QbjJ0At@%b(LjGE3q-O35)INWdi4*^QoKA$RK_ %E3d.:M/?#1N+Y9;=WsAnChV$emDNc?ZPbnQWJ)?dXH#"sM1C-=h7^;AGu/J"UPo#8*o% %HI4MRq4H64TRqi/GXg)l4[UC[6"mVk^@5mboF/6J^BX\nksYQm6bKmUrtB,\:.L126(tlGA"eOgl=$:_YF!R""7CM<".pZPeTi`N %&eY-dRjN6]=$=df);oV*c@Gd5f"`fRI"$22J#_^K+,.g[*AZQVI0/]f'f*OfaJq9^1@,Ma,"*1j1&X8ei %#:r$c!qQ^'J8c@sg-JbIYusR^B4usm8'.Q,jUb/s'm1,hGm.mWjGPmP@3#OGY^@*9Ymnc %7R>_/T>5RH;$Ieof+,qC'KFE)JOKfE?OROC@X^m$M11*$]*uV3B`rbS;AS>\o]QTX-SGI"B:_HnH6!\["A!l*Y)+-.[(Vf)-DITl %p)KblO)f>;6QjM'%)d3LGCXFEm3&*sKRn4'Pl\.8p/uokNiHeY+#E9a0N+7Q(*Q0[AFnmDEO1i]?n_$6MVaY3)qA=pOO93uA1&CN %Qt84?CRb#:o;&s[_YZ'FnUU@99FQl])NknsJk66>B6cEs-GL1tT4]%F$`jPhOo>'bMnh)4=tJ&d`>ppF]8bk"\D)[n"6OLL)!EIV %,iU=>7sZX)!)kr`cUjI4ZE,1#LQtFIfET/14?L$;%/R\IA!?TEXd]=Xk>:fi=?2Mj>ibPmJncHmjYJQNQ5ktlR)5XTNl54RXD5Wb %`7-j++=!oPGlWjFrYUAORt5WWg-H=!gtooLd7=eJ'pW)8u?W/E<2G]aBL#Jq+IN([u(DalkA`uBl`$GEsEaf;&;on#QeYp %]%Km5JZ^r#m&*`C+Kn?(!3ag[+IoX!:2C*"3U,D&;ZP1deW%HS:6o-rR`4QbnuPNO6Fs]*X;[d'q9,LGU)TXKP/onodEAT9Z$$\9 %l7#0_7%GuM=f(eOku9u6SJYpEI8$@U`nL[iXh7D%\?G3Z1V6%OE/H3G_A_g]?jCQ9=n>$W@M/dYde8UG^4[poEp:T^*CTFgjfQ@V %6NfI+06g:Lh7lKddKBiROa^`^\[`o#()RTnh/>hupfU/ikIK@$5"mG".JHCs#:4MXG/+.!r!lI:P0pfiaKW_f5bF3%$A16:8X[4$ %J:%N&ces[b:*IW8AD`NdS`h??25(V.#*RYqQYWTnNHlH;QZ`pGQF@=eQ1@P_'ZnI+!63F/_b/=ER;D7L5"&Y&<]%)3#?pcj[d6>uY5BpfH#VS4[78KgN2RUq(M'1^^o/0P:b:E/`M)b0$9p %hm0+Pf$'E5Db79O7T(ac:$U[d.b[g9(BspubfX"XRMPso;s4G*5`ThR@,M3`=RE3VbGsJk+m!$C-:Me/=M(,pN[jkI5hk";Uk60r %CuDlGs4"FW>SEbIHD7L(G0j'5_TN$g$$]3'20"R`A34RjaM@"]a_,/8g233n==an"3)h_RSd?U[hr_#WPg-T^'[HfQP`pLt`4@@r&"^lG!km&Q %q7:L_q1T'.^5`JX*Nr;%)U6F2dPPugjUS#G"RiFIe8nW4`:h[G-K=pXI@se()T$Q %Nc@c+749+sFWW=lGW%n#Acg!NT_'(gOKBPIul;D;E6ch]>`nX.lQ\3J:PS %7#DSWm>J97../-ehq*jS`C0fX^*q"^X99Q[;3`-SnfB:o&DLkW"!q.T0e2"("Z6EO\RGmC#'bH]FVVUJCqt9E,phd;W#bY8fdcT9 %oHj",0m.;r7:-,A#Z/&7[u^9.l^,>fi*fHS)^<Ba:W[0Mr=<"d>HUg1cgH'aeI& %EEVFFfP=H$K"4hG#ZO"4[ebj=#])qU<^^?!;c7]g9L0;k9*.e4 %nf?"q#KUDT4RLWn1"j^PlH[;Y9sYZ2:k:mp<=Fb2`a>_B9#2738Y=3l?^,qqQ5bB`;QBl0\7r]PneB)/@u,H08?D*N7ob6fZ"37; %H(CJbg!bVK&RD6`m&32pW#Kbpm4"`.0=`8\:F^"8k_m6R;Ta:c!A"5NWX8o?Is1tdF(K3ojrRNh.ej.5=pO_:=SU[2^cBVB=%koI %+A9B&#%YY[L"u,ql*[HN\?I)@^a^?9!NdBpW@T_;433ZhPWC@n`4G6q&55s&Z?;ZIJgA*%O0T+fAA\iSXCjK1,XWuit %!,T^;.Pi68cH\2Mlo9fDSJ.[VFgY]SicS6?(fd]NZA:T;7=;D+E>7dSri='J-.,bhqtdBq!pqZD\NPT0J5Ts2_XiaP4Z1Qu$S2X3 %8UHH.]+LR@WY/'bmo-3bAR95me[0<6m==2_\6n3oR$gN:M,VlCZ+c]01(84/T$uXu:AIMTZ^>gg7^/,V5t0C.OMb.j`M-S%]ht5c %\V%G%Vc/"+!`eD6nelWOLRk1!eZA'RWt!@Z17EdMgW$=N'Ue:/^moWo@?=gCjgD1&,'V^4,6BrV@njUl9DV@[&M3I7P5AhP'*>k< %PoqBN5jP1;Lm+n,8]`BT"Uh[S:E!h6E4.8?OM##V)e]I+VFnQ+ks2U:NfSf$,cONEO.;UE/a6nSDrWKNW>H@+9(g3'MEM)gY9RmXOTpp4iE"$L_2AqJ %GKHi,QAua)3*cE)ZmJ(/Z0aNEU'(&\$UceeK,XLi+t7WTc-Zl=cptZPGTR9Vc&K9W-GLU %OtGU*hoVCEm0nQ[;\GDMV>=:RofPTL&ZcIY&gYi*KZ-EO&D+LgO&`UM2!,-rDH:S@@r7*TNQN9hZS9ci=Hm(sC2uSiac+KXf-^Sb %Pa)f>$B<.V2Q*traN'Ro2r@Td8a0^_5[Y:iLoUc+"P.3cUC;^U3[Z9*CCtO:BbAeR>W'YK9i%Uoc]ar!EoiSsKSEX]:2)K7c,sg6 %Q&aZ91SpBm5l>k=#HJ_g0(;-e;Xo\r9S28:)$3uM50\XP9K"t>M %i0q'*\uc3f0R#2$:*u^!k@aUEPiqOL)(VrT\E6O[';#@0qQ,V#VCet7AKbR@*Z1/A9rsLJi9Z`:kfF/nXX`11:GA/*Y9KMSkGZk( %6D?s@i+4O+.!,_YF)G+52_dn[-9d>\Bq[(l'fTB6,O!G>aEi,D"/l.Dr:)c3E2arQD6%&EYB+Wf)`5W+;4!1Y+bZ#3i&dRhU! %K'mY_49h*C:T[>c660#t2$r(DnMf_'eib)-6BLNL69F*>I4Y8+I9:;hhX'R4k,NZ&M_

    o0Q0%Ffjqs7=S'nW`jfPEX/RBVC#m% %WH4+q_C>Ot<@q5i('&TZd[R^,h\F,LQ.hcF%'8@s(XgU@WegdF@ %V>MhE;[A)=RF&aGEadC88Jbi'k3:(>[O*'er1mTREZO9@HR2KI.0It=(%tc%*%E->Sr-M<,CP_uWcM&u3/278:25o(B4ZRgZ`HN7 %.LiD95)r/J?]KOHV:/)NWJdN40!@h[8RAK,ugMk!0YT")IGPcaXe>^Hrnu:0Eo#Jg;-`fjW-e_j"P1VW!_#YX9ODk&Aab@;`-8i:o?tR5:U8X[Xo0o %UI(A9+rSW(75V$G3__c;!)U55`(fG7W$#2J^SleI_BA,."O?;Lcr$LR1WNlfl$>3O1%A;\KkV/63@.K,\6bk4mk^.Y"BmrkfAct) %T^''a?)4^-,Z':t*IeZ'Wc_,Mfiq5#bq)JtRC=3+V@sLC4.Ue/?K,hBFd`LK1[s%3%4Ni%;l6#+ij.)ERS#,1Po-@e;*7gA'\4!@ %X`e#>@&^.G,Y?]UZfVI8>+s@+Z688cG$8i/g3!NaF]UJ9Hdt#TQN.(j2=m$2QeRE5482>XDl_W+F[i3rFX&m=MEik,XVI(aR-o-< %:_uM.*1gt&W9\`Z;Zs4[5@WU@1[ij[W:H-_X$'W:#-YYS[ao.nJ!W`0WCPKGog^Vl^)iTM3^6"9QF^@LQ-F_15n\b. %!3X\j<$:&f$t+84l4I?;R!(%2(9O#eXI><`Bku?*9El`qG-&K(2S8C*sb2TMdgBJ]qT#Bb>E,*HBZ=hVRk;:u1amAl:d %'Ea%Z$]E$]OAe1Be`8:Lj4lr%Ytd&XNFcsuB7;Jg7:N_pY01HMN!Z,W#[ODQK"]0d'tu#Y_$poHEDjX'-!;FB&=DYG6f7GG'FmF, %\#;iU%Y-TO?Cg?m9Y&"rHebr8LXF$t&hHM#Ze9*?7b.PqlF-OaM*!=b9iJ'KM_,+[-]KGrmq(lO.J:XTYf:CYYo#;snOf0*h3WZ2 %56ft0.:TAZ+`q\]'+0aBBTO7*MKO?tiGqgr%1YW?d)=("kB4>#"4)9d@@[0^,U$jVTW8teU;+&#QM-SoSN-49N@+A7MVXkHV[TX^'.'3V\d1pm>kQ>`JA`WL=@F86-f'Z% %e:+5VOF:7dMD/(n@1F3fTmB\!<(%#tRH@J1l/lDt:<*DTRf6V85tb>Y6#a>Z154G#6mqS$%2#Z)Rs7:RXT6+(]&0 %p#H3BEPVoBW%b2\N2nWO(uKm##p_;J-YD<0*5>fS')Y>=dFa-jTm(9m5.*"p>osl=VZFTh7'C;JrFu=&[T_ %os#cpE1SqFP8\.$+H0@5Xh$6 %%YDZn%b[[:o3HhSX01D=8-D"C:#@H%cQ%4iURK1%2Q=D-;+#c)'43<. %c`ccb8WU/F%(rHO',MUhR]BZa<"ug2bC!:ON)_1P"+@\C@M)`sfNgS_^>_s`4pU#?S&;6.ED7a85kS+eC^uY7>MYIC+*nLM./%Q1 %r-9#9am#DQ)JHB4M@,pBKC0V_r/&mNcm]Ni0ELJP#'GEjIY7?`X@-uONFB[9BW-`",9_8m>M)6/EeR8WX"V[+NF`)r9t(C-Gn'ou %,iDYDL'3CX\rjqIL>lt%W+mG->u[R,2V5/U#t.5maq?Rc.Rce#:m2_m"B/%Ga,H:6cKQ9=>\ORs$Df1#&1fccdYg[V@'1Z)W1RNU %_HSYY)RS-tN438+"L3WY*Jil3%SNSmcjrPO03PlsK;;gZ=P%9*QlHf2N8\0#S2YY3r[1@i&M=<$c2BQBfHL0&E.dm%GhBacV+(lqp4T=p$E3O%!MiT@GiX8Me:HKO0tR*8\TNV^2JWR\@X"KSs4E %0L-a2I@Cd:*TTgdV`Fm?.>a>=U,(_nJnIiDR+_J4?oR=2e/TKR-'F9IZ-sp!`Hn2VL%oYOgc%l?<*>0rZnRa.Pnus-TJ/6`j9*Y4 %QpmCm.RpVXdF=VXO6^CLq"_@43._V-0roB;*#oF;rg"$J^Y<:R7.kg%?YDFBjUC;aLeRO'0R?Hc?!]`a3FLO;_SI>se\CEARM%N[pG>/Z]B\6)OK13P&Rg_5Y$;VP#9('\%8] %,+-([6]m96<9JB,=79+F_.&moR]k5em;r??3\jE&.t/p.1(@!W?BD)jW:%<)16DWWY0M>N(/G?;C1^9eB!+.#*(@QC5$nPL(Bpg+ %DrNh_"`/>g<9.W#4n]G#1'?7,pH:30Y=ROYr[iJno*)dLa&pmmMKJF%u"4=bcbq?o8A%3)7[b:jp\IA\q^&Q@1/4FrSu9 %4GcUsqk-qDkH,.XP.Y57e/DCYK)#WTQ^Tu;@hi6Yah+`\ZO6&L6AZ*1Egt8R\+i %8p`SBJ3\i,BWt'E$YWl04D:0jF-qNGj!cH/Zbt?3kd#2oe"!a(DFpB]pGp7TA\tN=j:S?:n)*ul$KPjAp_fYm+0;O"1U;*3i[$(U %Oc*.o^A?1eVt[!Zf(?jKg!bJL@#)2)ZIbGALlRZ$]C:n5mj"U-'Ie+hu@RFpIiZr=d"`emEH'*I"?O#`]Vcg(!b/](Cl'd@-5e"8)auc %`D@0NMb=4C;6[5UhN9=?)/7j#>jF[FG&C[^<_,jDYNat"Z6>EVM*OfW5sYq4afQQ$pU(*CE?oL_+lH98ju8o$!1Pg-$3F)^nj`=o %Le/r+)K!hrlsrS3J,,H787ui.^hPV@lp-!S.6LejQ>WI1+G`$aJ/IFb*OotoSJkBGVj!a2hNl$mkX"JG4433M016W3'U@4e#7-[G %=3kIj/EjMVQ_]8%>r3C7X.QK'4X*]h"4Lb]o3hGb*'$QaXPP$s>$ %)kf>iM1bsrEn]%R`-b,q_,cU\eh54X*c>7\X#]GGC-7P-)CgJL8R+qZ_P4a?b-!;Q6@gB.Wre*fbOm^l5C7=W*(P$cMgb^+TjD7V %D**8'k/c@S"A$[W:J5G$9>.b#g,0ce"M8Xl6QZkMMu2gY/GJYTaJqd1('gK>/BK/fNgsSP@JTIB`CoE&m$s>a%?Xr9mQkNb9NaR; %(f16QkQPNF;`P3Z*9$EsTA.o^Ootjc,spZmMj_e&Q!Zue[k,c&8;mW$mo`[/W#T4E0NXJc/R(V/^6NY)hY7FMO*r5)2$H(8Wa[7X %irDbMlt+2Y4>L'KB5rq7_7]5Ij\p=:$Y/CIR;lhP5rp'WHpRS\^6aQ>]Q3fU[$$E,X@2jc)bduS@+5bMlgmN/-#Q[BPbJk[5@c]E %l,1jah[:gtal^d`d(B2VU`[\`A<0+6!b)\]%hL"u+f_tQ$.&/IACqU`8%g&9ErH1^1bm0?k@G(6nc@hLO<%Wr/"0&_poAH7"dT%J %8O/TU4bZakf6i2fc2@'q*DC&_&"e?'^j!ZEP.Y?rXUGpb$R?!%6EUC121<(5,F4BFRPE`_%B1Au:tI %jGZTV_#V[#g]fZ,`m=2XL07K[Z'Ia?r)konTp:7^a8t?&<*t`0Ppe6*"7'uA3rUPap)p]T00PE'`*AW>l083IUs!dDmHl_'`\mtisiSO43*V_#m=Lr#=q.J$:1JA %,96BU\q8PY4L8!oWiSO<9E<;7bO)"H]iso+a9:jM%hNs]Y`+#0/??0-WH$,BK^. %&.A)4!hn2_H(tBS?_EbEf-(5bCRrtmL[R`/[^@IY2lYSa&@@ODXE%uYEAWVraD(1VPFtC8hH`1"Y&_1hSNNk %N?fZ7qp<`bCW!H>/#e>C;5eN5W$)ZgLV:u"6#\&;V2WmMs%qsM'RDN(P$Bb(4*isNf]0hR-S+4kjo/[dAU6[@8sqko\uT?D=f*Qg %R9hLt' %\Ts8gmL=\ %AK'W=S9M8F.uF<^k?,eO1W^0SLEQJJ$m,`iQpVHph$ZkCk4iqmA,lqrf+g]F6)\opt,IWE1gcLn'tN, %mP;K85h"0l[,Nk_3RB[*:8*>fG.>=&e^pE>$6P,`U#LcoOcRqB5r*VHD(W+7j4uV4bKU_"ib7 %E0ApW*`tuq7PJ*0C"W03*]FLT+MV.4k9@$=lb033?.g:4<+peYoH)0\^k[ZZ0o>H!s+,Ih4M(jMokO",l<[S*D;]C5eV\UMPGsJ= %(G-a`>Wg16Mr'oa/$7ut\Xnqh=g,mn;\mOS7_.&bF`tUr'&BaEJY@gN$<+l0i)"S>GXVV#qf&bjc2bRm+TirX-nhp>YDf[0\JqJp %*)#M+2dE@C$Un^m=V2KXS!Htg(>mV4W%/ZX#'Rf4;#,Hq0Vhjjo5#t5f#$EfMgG&")oR"a]Kc"DA=;4Jp%n^f*]7$)[KM7_Uu7;5X)Dj=2eL%+"E]FKq\(DOK^iJMiM(KS!3).pFUJ"](<>6\E#aA %?W>Ve_AL.IXI$5t[9.E<*"+ji7J"\?Q*>9aIP;.fn\_oGj(emZ4A,7r$]Vb(jT3A:ZZ<0F]f7]>04><\>ofqgBDV`[XKH])SBM30 %^e3V!Xb:=i;9GoiptA$3(A.Pr86NIa!EpO0#5>U-@c9PM+&N>M*!t`;).b\>2J9Im\N(I2&!6?5'XOlR&5R^+!R)`<@jObicn(c\ %V@HdD8J)3=U!EbJ6"gWrj[_r1_rV+_!R$OX3iBA`0Wr_M%m"6YBpC7ci9kpun`;Spk;\1l0N9<).!0.H?sNMDZ%QT,WP0VYKM5*8 %##ij6$-U8q&qda/;DJW3'J(EVMTNk,.$fup!jAcG6-eL2,i)l[,\ge6J;>HAipk1r,d))XK+s>3@Nq$H#`edn\5lOCH%t*HH#9[: %;[K'r,+hI/<\=fN:5T]'86GR+-0/AVPR!T>ouaZ[?\YK$QEDL!.'Jd=A.Dme5u&TSKql4sQB>"]\-jjcI>tF!ISIo^,)PL8GZYC[ %r`Ii^P6t1LL.$4C:LXgg\m9mGZ-.P,f`W7$$d(m%(mu+,PN0+:Q_H*lqlm$9osK3fi('r] %1_ufnW#9CS&c5aia_IL?`H)*4*6p!CR5@/_l,/co1U[$NnLu)&<#PQ%RQ&k %00d6D<=:k;185ecNIkO6X=Po[1aBQ3CTDE2'h1AtG%V4PjB\*Xh1Z9lL*YeUhnt".`4P3dKD)j %5f?43&tD-t"p_kRqVjdhnZ'h$5JC0_5/["CA"i$?%J#$8*/+X9QL##33@DbjO`P_(,X(r1s!V!;d,4VL8W!CfZ51thj'g5rQ_#$#5%mVIcWQB2mrPX&=>V?GWEqd#mhY(WD:i"C&CE=at9 %agCTN5H0efcnh`8#YWr1Vq>&%>!s9p[WBe%j;b.Hd$AsI'4cL4r$<6mq,fA.5UjN5(_Q<@^oGfJV/$/\"cuPs_N?N#;&Lm(-sTEB %:npTZAc;a4oG@']8Jmh^XEi."/*/'oa"n;[!Z/oZA\-m-C7&(.\ %acV:_R4'X(d;l?&'3b%T4:Q>RVIdeVM-f@2E$[g$(b'6VF!cO,$'nt(,qKU`S>&*V %D;GS/aJV>?p/!A`IK7cDaXWDA^L;_k4L5c`C8!qqA@5cq3.?edG+o`rS3/He'diQMQshHdSOt_CiapO5SF'PqSg2iC*6iO+d'A`k %?$X4.Y)$AHY"6F"I[`8)hR,d#Mo]p_f@TkN-CYRd@c7n.%>;/t8;kPDpZMF+YqUM9X&iBi//t>iV5%>_QMVp7M%BHYb9L:#M1e3= %RmC9nLEHWno^sqc8k).i_(@`l&JItm$[ZU%b"cHZb"G6%[SPTFR*4;(IM<0L@cb^NOb[Kk[$WCr%YKb$Um6FK3&r+-aJ$kZdA;u;#:Gip]RP6_0X5P\)5d%[")'4e^ %':Fhr=_Nf5g.,W2g)NQ_^Y'c%P:7bF-sr(:2:pF]YX$[o+@oKZ@d(+6YXPV[V(4EGTN(J_C52jl")AMrN)_AhZo'/6$Z.i_X4,.# %7ajZ&KQ,T:^h)b@/*T[s:Td0*4`fkh#Yk*rN/5c[flg*jUm2K^OnUBX8n`MB>h[K0OBmtmPaCK`N8n\0P[jUp*M8$0'Z3piTu49< %+O1KcdC$2&9j\5&>opX=kSDM9)4$\G&5%YEEA]p`7EiV$n+LY';j>WM?t](N3*\T[^XX8E'`j:eK;=1I6A4o[S05@aD%TfEXb=,\ %o0j(7=00p\CV\HiIV"gj5I]$8<[lkGnb4.h\^H_=ebdd+C\p]dM=H+_"c7_iYd#7USWKoFOH4Xan"cFBB8A$I*^:%S%*_;tLs%;R`eA %(=tb5)2lD(Kq$knlKa;.j"t8I^Zpo`*Q3VC,:PA:h>S^jtD6=-09L4r)KJ'd.$'i"R<;F,t!=@Z,bIF4.b6M&H %0W&?8r?+;K60K3Q:n$-qZSqGfYq2YJh1t&XcAN1XFdsiR+fe\btPIOqbS)"AJWE),b6Ni>as%d8'Fd[ %ZGG65M/@A*!THQBL$jnW=g2%oL&:pe?V[_.3s]u5G"#M\*gIGe3N3HrE`t&+JY:DU,,[jq"A"3f8nu[Qc%gq6(_%#]=ZL"(mI%Vo&Q\$p/b\;SS.J\SgPP2?e3^]1.Z)$/ %CJ0+M/L5Xi?aZOd8$$6q'OZ37HHRL=4mAXA.+SnZTSR6h^oLJ?.i<+(l=>$!$T%^Yf"m4#;`k<8[=ZQkL!aktPo$,V5YtFTCW4KT %LJt#cF=9o=&-omP+BuBf/BmI9d$m]p7Z$Sa6umXW:,0Ibkp.e3QW?\NF72>?*<#-9s-r;j:iK_&T4$ %L+?!$QGW'?N*EKM42l#o1;@kW=??M1X/Q5d^6\sR8X*,C=X(STll8fUUdU5pjB.cm4)lMkije!3al5#LIYpY>A-++oAuCXpjT4$i %)df(?la@S0_Rk'f/i@HgP$8[R)1^]4k91p$T8bi/koLj?q'F:r$?9I4Ue`[ %%MuZ_`1T7Dq/VTB)+#H0IT%!t>Fsj\j(n7H#,1e^eC=)jZ_1D=1lIF;qH>2&[-9Tl^d;t\68:Wui/=GW#/'1.Nt?W!"+k.CQ:5.rq5e!P-5J/=Hu01g %eXn]3#!8W$AheI\JLs5C]u]1bJD.[!Z`M*Ao;PSol"qf/%&Ii55)D=4c7@NOL5k,d#'=576GmJ.^3r:HM,4o0cnAZ2&tq'//jHZJ %D-"YFXW,31%FgPT!C((#_daiD#/rD9`7ZL>J.8CV>%j!p?opBH7tgL7UgN0f<7aSgBEQ#(>7p*4!uQm6.uSG<3?;>Ulk#Ql8VI"l %JnM*em7Z=,d&N540,(Q&%rP\'QUFrn%YJ>d.i\"\bj8+?U8i5i6HG"7,*W<hV^W3Wn.aG28=*qkb`,Ho.@cotEgZ-T %"_g&qo+^dK6di1CP['Ym3a`WB<=VJb+rcaC#I,6e"!FYuS-MI9BHtPK?s8*Wg;'q[qKSuM4X2?Mr`Uj7(=f&EF(7kR@$I\>^(Q`7 %S2428f2AUi5?5l)f"qH^X0^!1"G!0o`B]\5i'nO+iu1;][WK9E%I6%%0]%>$d(@f@#Md2C)6ZTi;=H:mVuX %@*M3Y=M-DS(n!-[3mf_^%:Q8F)L/D[/4,cF11uAX.@I-X&*SBqrO#SWMbe4Og!)8b[#,*>BTAd(Q*-NK?Qk]VBkQF>&c\RDW*Y@f %#lUUsARWVs]HtT2k:"mT(%NU^^mQVENZJkfmdVg,bQFqG2KElZ[ihiZRQ<8sng1.[bHTZakA %)S%pLpu?,p@DUJ)6I3jub7?j=HYKX-6\4\U;i>H_G#E\9YB6N%P4r+X"ct6^jG9CZ91o\b?u*\`\c<7_VsP"AIX#?,=^Q3nbu(oCN"[(U&0i5-OlNKf[8.$[c1jiS_,G)^P\D:q`UfB-H^c8muQ %Xji^QT`brgA!aBA9Sq"\Tn07uQ).E;D5Ngh*U+uOUQiFfiF#gTIHau3g/tB+5j5d_\GWbb[B:htFHVWGMf**oghq4=\MA(87#PYX %AG#]Zp*02t)="m'<2&`BO?hDj&K;]_Y)>rFRanM;W\2l>ncc1#]lro>Q^fC1P5AE2%g[UD>&e1EeiK.O'L7ui<8u,@UoEQecI_K\ %-u1CS5lY?!;!-<.KPrLP+[a7t/K-1pYum>OW?RP.B_]qO %G.]IbHD>8p(GoM:OA2.*&YZXh6G]$gf@If*-s6p,4/k>-'i_$9Whch!ipU`LiY %U"&M39Ti9$4UO(>G3.GVA8YPb,-!C1CN1[ia!e6^qbOI*S0b`+GH"K&6+#X(QKPD/!cVGHpl>4`CB'H2!?+E]4,<, %;W&5U;F*(]da"^?@>Xek#OL[.+[0$)TGA0CpnSphXH76Z7mG+-,fZRZ'sS]-)TRG2'Lt^u=AiXdZV7As?^n)eN""3uE3KHqZ0!=9 %_\%XEErElF[q9%To]6NiFKIt-m#[cB$OKf\Ys-D`iAL><()"4LrR/*Bj,8\85f2e!9Wio&RL3TIa6#WYjj"nV9j`dA09'%&SlL'/ %)81-W2-=9_b$l.?b\F%Ymq&1I\e^/1/33'lCGV#_Q&nuP%?l+[""LQhC-tFq!Q.,7Nk?!W=B"C?mnpj$]`RSb#3&Rs]#n%d(I?t10 %mPhGe$3hm,Tt&>:[k(Lr&/K6hU9%+'23=XD@Au#sH.iWoTXkos4I$NM?I079YQh@6@`o(Gj3u*b2`!26agY=(`(19@DWTTBQ<.LA %a23_\UQWbc2EXl,+E/kb$N=(DQIE6P@LROt[F;W$96VZ %<_CUH3jKjmnd_\3kP>m%`6*r'#?QR-r8a:6Be8U2O0Q3]MmsSiO=Big/"2i/(eQR[+B=q3_`NKITiUZoJ];VMP*CcY1BZn:5ZCQ# %E%?\e:pTg521QbBfQ$Lj&d@&)=C$,COZ\4W"MW=f_ %m%^CNV%5(0.nMG>r25BVWJS9fAd29l>H=1Fe]\&`a;5enQ:^(G,6r'0?Yq!rXdoX)/n;%pf/<0h-?Af,o)%k""J![SX>13R\VLoE %MiA^sAiA^\k%$9kZB:2.Oh3W9kLn&b?'@E4au!ttUc.gGS%5\#=g@9JBM5dN1GB^dBCn1:[& %A>o8BRS45*X:PgFM'gim$sngK_kP7rd:C71Z=l)j2C>poRQMWc`fCFLO=$/^PB17d5=rh*dUYM/?q>";WAJm%eoJ.IF=n$ZQO/\> %-D/Kbo?8,=RLu;hKDT84-`>(cdq%@(@-VI3qDA"t-FeYr]L"1OU:"5p'sCJu!GR-;WQD6kjC"EaCMNE$2&Mu5fV0^[V4&B'C\at[ %DQ4)V/F9CN>Q>j"7;lcC/Q_PK[`8QF/%]>Ec\$61`[gK:Ck\S)B]M1=E:9YA5iJc/HuaEpY_e %q3h_@9t%eP/RY&5YXLG%j)&+$+MbRNt)'"Zjn$0tC\Xl3pk*oUeVOV&!Cbfs'Y]2Uh]:0etPC2:_mdMRHp]MgePJ+WNF5GtG %Dt9f%0WhNeAT&6lY@iQ-1<;Dbk,3IgRiM.rPMO+kH6W*E=nF@K`>.E^Mjo3Ja1oalhl%#=;+Y/il9M[>_:i&sV=$XU6Ge[r$?bHa %PnFPn@Lhe2&'aq^;mdn5(Sb)6c(_4cdB&I-QdZeYTP!;FR*"jsApooO[8cG&/'SDQm:n85atM!X %1"5f+R^HerY>S;mC7Eal<\!3Y3*6b'_l+_NJ_eiGO5VD`u-IPE2olgt-$2CGGrL\Hl1XJ>YuidphuQ9)rK,$AJbecjBr=$r3"hBSkI,rQ;O=?+Dfl><%oEnqk5r;uiI>oM!_5 %:(>pT-:-,aR8fApC4`1[8S?SL^1qXu9sJCiM7;&4FA:,-25n8>P->6ZYmL!+(/*?ZHtF&ABBoiRRcJ6_1i;P,h$3S^-;E7uV-JY% %Y";SOK@I%8i&.M)-><(@'R]XrohEg0N@4drA:[ClK(=F=$/lM*iJ3\6.rrNS%H7M%@[g]/8]97.D/9hI2Q.`GBHp^qP>*gT.H8Js %a^pA>F"MBD"hn^!EDB>S2JG@EKV3,&6UsP>9hNh_qU-/0Bp06RJj?_0[b@NgSY0q=d_/Bf__+m2/W4B_\e\`1$G"uSnZe6'Ej[*/ %A(/g&H]3+'d&J%p#@S]SU7o0/9Y5ESUrbdsFf %cu3Of\+BUNE=Q7J]hQ"VpLgeUsJ78''X(_^^'9kK@k%ZUk0N[D5*P6Ic$(t)q2 %C%IE[EgAQX9q"a('"Og,0P@lIs:W<"UA-H^'#W::i-?tBuE#;T&7nmTk %[4Fop`haG.;k(^>Q0tWn$T6$Le`<371/k;dZ)SYE)VeF.4BbJ)XU00R2,%=$eupDbfE@OCPBX+M:pu\7XC=@tj[bm!;k)cQCU1=L %@-,9FiO@q1_YZ,m.%jG]Ve %QY^\>[TG%-(bXQZQqcG][2bY\50a@Rk6/t@P7_mgGA*1QFMpc)A1sK]3c2*q2Yg;'Eik@H=doi&9t&Y#1[G7"ll*T@:t*Rlg>K2P %oA)=8EMlo\f.ubpm(=ngh^7B%P9%/-,MZ`JDR'pOnJG&@*k1s-RnUuj=I1OmjsHGd)W'Wh7s'AXH@gEgJu-'#B>'W.]!,^(fX0DW %gJ+"%2P9^`mdG]S]L=5t5PKEI;r6FgT3sj$ZD9GTe0hfY>;Y_!3qjE[H\3NVaX+]fGCE5VhdEd_AA2ufj>Zo,-b/o?4T,^YrsAE! %r%JYH;LU06)W9b!%Y]o9P,`c>LJjVf,`H6(8Q*p]hVe.k>S %[7-O,8=DD/`l1[?Xb5''R5.WFAYKf1ZYE.>^<;sK0NHqr=;`HVS\>@"[-Y,ohDXNDk>!EE-P %Re;@]C(W>h(,[T^2/=?mX!T^i.lD)s2=!.p<-Xk1#1]dpeZ:J_/G.gHo^/`au-GNoG>Acl7n^'-!l^"O;KUQe8cK@eNo2Y(J-:uQF5+s_(:m7^=IR9fe %r2<2N1dS+jUgKQ5C0F9q<"hO)W1kVPV4&)t9sUc*@]Lg^^B"94]meYELU6Rapf+);FQ9otf$$.)jL %Bkp;jWg:,]g;]Y#6WumArN/?u[uO1c,+`RIe4n7WG[F?mdlOg %2*'omDo,.;g1fMDX-r,&e`8L[Zs*H!VOr2_"E],Ti&@[T0BF*b$cFTb&itS2iS1WiAM[b>EC8`QA8:qk$#sLjcaWSf5fHD9M*q"W %p$$tsYmth7^Xg3*/>&IrGqMUX^KhHked8@;>a8CqPV(cR+\(D?9E,Emjd;J#gUq_iBi"?\WL9`FQit0[j!eo6L1,@/=mQtJ-=Rb5 %au5d$S3N)E7]^'Pf2(ZYP@W0RU\$5cEpH79WXV?UK;oG#Gak^ocbcCVH0:Kr7?fqB+MD!A%0o^qR#4jB*]NABV1->!rT?J]q#)9M %s8&pGeus_qeR*6t^Uq1h^:UoSl0seR[&iRX*;oJ2r'bc+Vsf-1e'!ZmoU(7qQuiJ%iW9reCHbqs`o3rq?6WGCN`mnXnDLB1_lHHKt0!isXb: %?G>GMs*ap$fZA(Q5(^L`>MJ[VFuqlM69A.*^EpX#]Y=8gG&-[!>MZ$GcS'bDq/1A>jRNOoe'3sRkPX]7pu^E*lh#VG2f%!ad(hTI %rmR]fDeHP"FO,Rup">sE4hLXbkL3LIDAt68V^pB+$.o*Y).1$.gZ72&gE5q>Yl0 %3ar"'\ocPV[ntCfhY"L]^Ra2O^-A7)0'c^_]OBDNhqq_pSZUTEL\AEXX8d0Z\Np=r(jf"^]&V#2SWB6[-A6)c,n5\Y;^AQ %mcH'h0C](=LTQ"!+.o1?=a[Qbp9p_:HY[PH>I:m5)Qhd-CX7ISf%unNe"kW'rq5F5m1Zi#AfL9PC$s6;[*V*r;Pm.f/LHmh6F0:9(grNf?_e#?_$,.2UFMNRi^es-(FXeSY$GJU`V8IX\m&\ %=-NX4l+=EC02A^3\W+4q9@$p2YNI!6YIE6$IQ_&1Gl8Hd`?pLRgDBe4Rl>93muF%0ZMtlOE/,5,Cfn[2GIMKccd'9i42%0Q4riJP %#X87@Xo%ehm+pdfm>HJoH?4L`4b(JRhY?TBgpE1k2qN!::-YJ8_i52`a@kaK5dR'<>i+98kANSk\NNmIqln24jfA+pr?nrU'BX6% %ekE:Qg#]\ST07:%2g[L;EYjMr2JC9W4#mfD->iRNfkpPW8(9i=]=GGcq_l&>*lB(Frd?s`^V1RRZ/c@]tp.;X7Mm*EmG %[>[!MP&/EAb/o:s%O1eoO=;Y%ZE9['75ei]^%5D)COSO7p09<@qc_"BVr,d'Km.PA?gOEm#9Ha>NSHF)nSR/C= %BRJoSkO.!FS%FN$"Y'#/o@on_d??Yf"Dt`[T&Nk"\I[=[L-F=bp:D^3:>5c6ZJEe_V=o_=m7.S5>tH4f2`I)D\*)rS1HSe4'Tl7r %0.p&`a3/YJM4orAB?oD+^:nhNJ*P2<]A]jID?Fa)6XJ)WaQm\\aKCquJ%<,gp#hgfS"Dn2OD2#Xeok_2HSV)Dr3VtGhoq[.)V\#) %Aqs.dHb2T#g6Sr7c-e&LH)],-af_c=SO;0rh44Gs.a)_lm*CDYmrS2()u-p'q\sA4gO:Em?=[8i,gEf;G3hcR8J["mZXXOo5G)7h %T3m%sIX-CNM)i7qj+G[g^X!B-I;C-0Dg_%DXoUO_qtOd64HG`FZb_[2p#qkmF:QQeAQsWoc#1Y+SO:^VhYqhHH?Oa[IXUsWdpI=_ %0Y0;>O.%)Vg^3:[+obiLr2N6$c>>H;2I?KObI;_ED>g'8);!e)ms26DZ>4gD$.;3@,2:/@m!&&"G^#7[A:nI"m2NiW(XU`O!4,o# %($+Mkfa&\lk2PrP'E$>@,7O&=D.70[H2V+7o4Kt#l)mO,ra2:icGk\g'DCcG2m;C'Dn+a<]X$.qkN(m\ft4;/lbO/*^f@j+Gh[,^ %aY9.=][s>?mOm@7d(",6p-oAVDW]\)2il=IffI6EgRG8>)^8ScnDKMRhbHD;0pY:AhVIG`7Y`$ls6sX^lo+fu)Lq?gD1)#oYFaG7 %H+bglW('(c]6uN"jRi<.lL`K&@<[ulmP+(F0O&/eS37`Dbl!dnReL;&L=m>dmuoD,31jDn%u4l0j;nsEZb]\Vm>',RJ]#]MafZXV %HT4]?>kW-(LM>gc94Bj<0H9A'>7ZL76Kc^ZJ]#]Maf_1%HT4]/<42r?UV7L'bQ^/J[dSK;"qEH(-+gVKmGT`Ng\Xk,0H2R4D;P>b %$lil.96P.Spg!?]h*LXK0Io(f?]R$u]>to#!E %;S3r']`#.(ZY[M1]PM1=I_T^5nn%E8<=AZkinrpchd)h&GdU\[j#1@M>dn[Yd?EAWJ):5k=l$>U45]H$e]g-!M;@0;R5oB$:A",N %=&?TSD<%5OAP_s(V\Js*G!.]T&N.[1X[%kOXGk5=l>q$+`=h6HVU %1#&Ei4fn>O..5\72Zr]Zp>P(\3-cT@hUpNNPetOaW$@t:]5KSgi:eDUI0b*?6N3M3YO2#sm6et,iTf.E&FsYC %Yda(=h]rBpqou(N7lP;XI,"@Ci:Y'Y2t,mqC>&<_@)M,SoPUn8!O:GZPFLlK*aI$0fue^RhS]rfQ^9YGc#)Y*`D8_UV8"+DJIcsJ %1RE%7hLXae[b8)K\nCJRHVC?l-M)a4[6^\-DXWbC]Au.iH,\Inhp_V9\9`A.VEeV(\]aXV52#l#2P"3PIr+1WXR:dg&#X[I[e%.B(*3S!:L*(2!h]n %:)n<3m/8hh^WkVRo2ug/Vh-\V4/'C$'C,I2<:6Cql7)=;4L#UYO)SCk]ePQXMVN8dCtn)+T2O8AZ+KONmQ%1'q1(t]q4;YB[lC;"s7u<[ %c#6s`IaRTM7'kRTp?VibTaC'Ao!co!Sm>IionW@!N=V((\)oV[c+-Y0jPO1U8@Er_hn47+pA>CniqE:r=i8[?# %.9Zf-1+H)3T(q/!gL\k#:q>K.SW`T*kJoQQ2egB]NTi/3-=sgB/c"eno`fBPI.bCdaNSSMcfaVVLK0Q!nqYhi^.,$?(LYYI*UV#< %SJn,tU27*J[VJpgN]K&W;fQQrDoge7Ylj.WXtB[e;r_Z$TsnT4p.gU\;e'%&)IJnHG'CLud./V(AoDQ_cgFO]s*A`@+0EdHcQ$G? %dmKl2O(K%2rHS24r8m>As*]*?I5YGT?FoI]rBdj\NnT&5\aB^fi]WUTQ$N],PNpKU5_2K-oaoS&UdPN=jjNb2?d]"=B6=Pdl'>5@=Sk%amu8/FL8F.OiheIs0Eg/Af9BrB?C %hVJ2+mP=#2]AuK;F0Fq(qV)3tdZ4*J2ouTb]3:]8`:'9%H>J$l[N%B[4ZVl]"teP=`u;(-oDlk'Qb6M>,Oi(X'R-s6p4S#3h%PiI %bf9MGK+t?qI,#hJQJ<7c`:rENhV?jGF)R8MZT%[Q#2e:qgDbNeK5Y\tN=RHDGTGfpJ92tRr(1P/kAWuiDMN4(p8Q*jJ!G&8tI`'iCS[Ic:=U7Xd$ %ZgEe#c1Z`@f,9Ob`F0R`!RA[b]R>#$k4J$NO'&4a7Wiqg!ffiCeFie)([KSC1CfQZ(X8ETEOrfrd-c7_#B7!dHh.R0U]Bh@J,ah9ID3P^]6`N2SkS^W)ljgV2sqFT:GM)mYI;(og@"""JpVq1nb&`l]!PP* %k'k5BGluhfIHbH8".gc%qBM$R^#lPCR=E/ZSDIT-rHrb%!O)AQD%MdP%?=Z$GN5("R0m"VSb^8W&\[^mXRpZPs*@uHr9O>V!B %\fpbZ)R='.B'TuR-OCj.]X[k,oO=BO@t/[icd%='i3rRMS?E'3q:RdC+oATeCQ4eM52)8"k-3]"]ko,gQEF!3ULqtJm)$cF(1$oXlaJ(+gLU.trk9PBn%eeRp)W0hl.3?00n-aH %@8J<$?Xs3*b)Z!,&=#AWKD0.PDVJ$GO2KWtaL6/;*'P7'NsBYm4`Hnip=3]amMnC0dff2hr.Ni(E6?18l*g$jLc8_?rpbXJOEV:s %T]T<[hF1HAA#A'7/Z%-'S%H+pG#[.DP5FsfhONK;]XZc%(Wj+EoA/Ylo>c(l*1D1.4-DsJs'[^Ejli;VUZ-TDIJ3CUg.e0o/3=2s %DXhknZTmj?fd"cuosJUKa,^BY+_(`c!<9Pl]mfij7MUdIRIHma[6]f;/li6k5A]J%`Dl/j4f"8e,!OI/_U6Fo@)J^]$jOYl(Ef5@"/3F*[8%o6Tr_LYL:YMq/RBgh^]&\$(ljh>/h@Kt40mS[`RR7ue90JKQ"9a43:.L=*ZRMFXETRi %D3)=a&]0g&^HFRU0m2jOs*9T!GeNn:p@S#H;KWbtr.2T%](?`;6N*k%nP9D[84D^s@eeU]eX=Bbq'GYk*r/R17F\S(MI)dk^TJ'2 %3U4$&$i/JedHdRW#+KN&rhqd'/WS-egem6DqI'+Zmu>B;3PF^1=d39^\!eOS%IS?&_n$n5lD'aGDAVkbi]c\>J/eGaVf]_6EuJc) %,NfKkR&$b2B]PX>`lH,6O%Oo'VSg<2H,kOY]%3OPel_D$6D_u8`\*K:l@S7:L\@Z&BiOX7W79"i=Wn5DheNY35LN`UYYZJP6.!jq %SNX:$@E]GjdA&d&l7S9,K^VrMk53O*1[[onUgcadgEWQDUcG%@S^nirlTB(Oe!*uV[dXQtVYb3L2;S!MotK[4g)FW7>Bf.6LDu7? %$tah@][f2_?'k#$hSdq91`h).g\86'Y>jQd*b)>J`n5!86X&H[ZYB52gtCA2:Q=>SR*^>;RI[skn'_6I`S^4cW>SuSeDd',r\n+g %m0L5HH0$&A#dsG#&fdcel=1`?bSZBo^4J1IB712U>UD>H@)cc_8Sq+%S$[sK*UMPC1E_+8rqFb2^OG_M5:lg,?`=@XI[*iI`lJ*7 %s(n`ChaMH^'2jmgYr2='OEO<_2G\a3ds.deU!l)fpPZVFl&RPnXHN`!`mjf09Ild6ldBC9V@#`=V&,4aC[6cTiEI>rnjCqL"m=rA %h5@_4T3`TK^U,q6cBg0-0+HLBOZ.$DfOZ*cEV9^E2V!NEp"`hA%5Dd?-\ldJU['a0ps9u^2a %FsM&tb+`*@3qhp5H?u$Y*kr+jOA7[6m-$f8+6%4o`h50b'11/fpS>N5sM5"ImkH+rqb/hVbB>L]2qQaIRPViR\83":-W&,ptT\nG^b1fXkF0ZB[aR0UHNJ,/KFFh+&aiaIeMG*caU4Ef&%0X %\nHA]9fmU8@IP3o`5ZHZ1R:7Yp=.VgBg(J44n\XA^:O0+)f2JG]8]Bc%W/-f@!>2chK/dF@9O.;QEa8/1jUlkT6ZY>YcMRNtHJO,J"E#9EAe2_fVbnD<+eBJSsoBu.EKNjVa)30cD) %1[;'uk/D0.7PGJ["(2PMoOk:WdiLKeHbaG0Fm;u0)"=F^oj$2 %N_qI*c*$YJO\3N]%\6I`VLC5OgF>d0L.cmQE$L)kc'7kG8s]0\j75L3qiHjUfBCQpl;.jmMI[_;cQo4?)/lk(1ck9q;`E'9lFB]G %f#qR*?Z[sF9C5%a*V6#^*hPUh#26o1Mj#+D5MH\Zf`C[B%tAourQhCVT)U$^5KZpTjJlq:je(h=pdDmG%4+D\g+Vq7"n@7[)>kl'EaYcVD/1WGqRfQeM.+f?ND4F7MiI %^>>/7o:5\6;)t8>^Nt?TGP^UNcX6Y4o[fp4T)H3Lp#=llBCG>@iu@d9F]2#.?\!2j;i=?N9U;b:k:(LqO=#j*6.ZbRQW[4SWq1Pu %ek'B'ZDi1qO0)%o2As,O+:L&r'P*S>:[a9ofb_RZ,I\Ao[pJS/Qa@=Q^+g\*MipAm<)*'_-&XBm\>G&Hl&S.lSS#U!rDH51YdF!P %X`-D0mS(6:dU$p+Z<2(QP(1CA^;iMQe+)KGDcFF/)h[Ft0f?#"\k`OC[VVGRLf[>uVB09pUYE4SB+Ir;41Ua"m[6$!o577u!`%p@ %F)(-q7<1C&\&tLjl=!/"lddT`I)sr7Vtn9bBeEIHRAeN;qpj2U8RHGr.uO;`f(,U@L8<$hHn7/gn&>j;1g:BY>_hB5S*1nUQ/,-Q %,PJ*X7Jp*15J*6hG%8ss#0S(A7oC[t@Gd-Z::N(4'`HZO[;u;"3iIeBB/^KU"QG]fcDY8R)=@(SYGtfnI0?t!qD92"+Jr0Ks"8aA %H7f[GEUpt,0f!BAUdqkr6_*9e#.CUU=.-T'rD+mul %Yd(41ck7!jibA"IPJ9uG/r^?HlAk%ZqOumqC\rB21=>VE:>]\3Mk/;Vq:Um,`R]$4.o(^Su0Lt %,W0uB1\fD[%r"17QCmE5Dqr.S<54nB7bAQ;@HU/S.`"F2SKAhIFlTdpT0uk,iXW3&6sHRp#JnI.4kXbkNZU>BGOX`Yg<0FoGF3W3 %d/31%Y.[E[UL1X'.ad1CP$P4MY]B?AMi/i#]uhBDXlq_QY3XaI(";T%fpGNe4J*h^ %:A#$j0'9SGVgA&:-1-PldX>k7G#Cf;=IknQm%T""ihT@KiT5p*a3TB`@Cp1Gq9-%$rbM3]I@6YmU]!gtI`cA+O$RGlb15P$@f8:d %&d!OV343j3#nnsde)GhSelUp>>+!sm4sh6i)HJZP)c5ZV.`C$k[KDC[I_-:D8ir5)Kq'rE$?ipsomr=(m(IYBAA;lHp#W**g8O8; %j'P.AP$R8(i)4s6!"[VX)j2CIIPu'Pp5!n9QupHG5f0OS3grfZ%EjH$[.V7m:%k[RqYQdXO#RNqPOAV.U^$LFGY,>/)O$O>23+!tAFdZ$-E^it>G&Vd^$B%P2US:.OcIY-FGAq;hQU'B %C4Kr[iPs`p%e9L.2JZs[pT;/kTPa#`"0rAra#*bCd*QWN^=0&<7m"s<4G30qp-Ck,5_^j0aA-51P*);Oh:Vm%k2HI47180UHQ8_S %nj'dbnng#=2P8L#fY/pd?96HiO`Xcj*mT;8AC,Mh4X=N^qTcGmaWA7SZVR,O?d9f`4ofL,bE86]%/DCX6M25NP@fA"qoNWZ`Sf^H4\n]I%;(/._7T9SVK*.b*;BA7s(InWK^^obsV**NAX5Tt$sR1'.;!65Zc-LCe.>YU01l#$,D7Il0o`9'G,4]tMU %3P;M(mXu)HH(*kb#@>HAGChN30#]aUMMaGOah4nsfYb-g'#dVb&cO6j7_Y)RUj/\^eW6A-l/R-1%:scc))&Oa+%LL;*PM(n.;Uo# %prhU*ZXcY][/(IFgXPf>/*^*t\d#jBS20H(P.ArW+c#sA;hi(j4e:jLpbY^n?%).(jWR+TT)77R,"^L&A3:j]mS-Y,!LD'tmC %%HSj0A#<61?Zh*L.CD1AkpdOPdQN3;,%s9mMqNW`]@mBXQ&0fo?O5IEe^Km %bYDB(>;CcYOVcheRO?8\%T;Rq=UV2V,ri^+V<:G"(s"KO89.qp26POcq`K+Q93[jkNM68\1\AV1X.PfDPApFNSJa)u1ZR#jH+BD^ %]<]i[1^eWr)*;"2N&K3\AN&`RE]CZlG0!s/@>!db#I?KaB?$+:nnhN)5K]pHoFO0V:AulY%9ql6R3[I7;+<.U\=3O!u795 %']V?g379?S]VWQL$iE&^1TW(6M[g&a5+Hg>ktohh:YRI3F9Vd7mM0**kmN%4p#t_,JN0>*^:+AboKZUQ4muX_l&u&ST2JH6g0P*_ %-JN4^1\lPs3[l$5/`U&;:tc+R/L\SlNtfVafVVl>S$@:;Cm1MM8lI %Fp[])O-0u&\#*Y1FhTf#InODh*C@-%nu[_2$'Mh,SpR,kN/N^PO4!Spg(&Nj+qK8FcE;)18Ju3#K@i.I4H9&o5sI@H&=Gf8H'9tO %E.APm3*P,ToM5tsf]2TqhRr3mbEjkDo-,c\B0)(!Og!H/q66@`8%Uc1N&0j@o[)Ekgml(X82k1s%WTff?1a=u:'<Ojp%9@EMRUWo)e/t:bf;XU2='qC^G-5I^/fh]=nr#*J9$,i(;0N*!=A)b9?t_T)]b>T>p3%8U\o?i6VJ;+[!df!qO+%P\m]knAlEtK!&aBa,BR%HO=9aqprk\k@o0 %7mu:]dlpR*Nn!2J1d,8f-g$W3&^)fZm(*)Uq=Gt!HB+c+YU93AB96HW42i+OYWW5&Rk@IkDL;*K6sp%3&W`O[^sKdRm1u\51jI,7 %/'c4b5q(+t`F#T02GisNN$Y)1HqQb\m.j>]&$DajZ")'J^fh_K-1!lsE1k(QUtE3AdttqJ--'=oT,uR&%TPZm/KC4E^_927iDNqN %4-F@jGT(Qr%V%j9bb!:1,\`FsS3:T\-L7PHee%a"H0nPG6BjRPJS6 %!tL*3"coL>1`9lm_6'[:6Bp/;O&C1VC'Imk,60b[bMbh]#j02h?n^iM<8`U5Ob&gh@hVrX<"i$&i'ZA9kjjuRp?`F'GSXu$0lb20T=PCbXoTD6A_KaP5$UF*/`5j8]P[+6'M!Erb,Z?.Y)/DJ^Y>KJtM#>"_"kC=Et5CG==,JUlN %.WJRgV.oeBS(Z9Ak6HcT__2+SahA]:)X-'%B8sgXfPpbNRulHLMVO-g;4k9;G*V_1!6APiN`uX2KWkhT:*laMi[?^B!Hnfn'/DCS %cR4rI_lsBe29EAE$j>c<#a.6eV&Wm$!C*X?[4G:#.:"dp2Tq8D]WUUc%7Xtp?-cZaas1YL34u;4n.&>i3MJ2Fgj'@VZ?*Og6TNEZ %7!9Be["7t#.=52b"'b=+HOF5kF4olV4/YPRR1)_YOAu:"15Zfp'9Y-0/bd#&C$nCmolJL&!tfe_]MR%\H1Q,;QP&H"9M"b)S_Otc %":+Z&_!a<[-]3i@<5H5allcTjAe.R3oJ]Ma.&3U#SfL40C2:s`%cgqd5#G+UFdcAKSC(M5=s/EJh"fZ$I&mFL"<`ujU@2c-nC29U %PY^0,e]E_ZV9R3HnR^FOc1>loc*Nc6m+i"Qq1'FPa($a,k>(mXP7fdA?>JKDs!VNU!s?k45gQ6j9ICG`E6Z'P1@!R2WBjNl5a'W0 %A$AWNm$qe$XXFoJ^l4RUCd&JsML<^PqcC*"!,t^qY5E+l(^$[I7;YB>`R;#2 %N/^#8c'4F-5Nf_B&XOj:3VGkUZu1#Z7-Fnq8"6\n-UBfU3_ClsT+a.u(oqa'721gG[F02VX_5+2([k)jICr^Uebq`rSW!V=#A?0h %i8Noc/C@rP+eT&E-#tKBlZ$ZL(A+SaO(DTBd:89HR]h89aKP"5.rYP5@.&n?Rq"O14MoVVmKTL3E9Po#n#[":0J!CnhZ-f0Z8KuKMQ8WSi+`X"mK&5ekrHr>"m %U^mT.B"B^oQ\WmBGJ53d;Q&s0&T)!IaAn7VEfu5'a,V%qPm#"j5WWC*cm;PQV$W?_B9k/7p0f,2nohp**WVP[D$s#=fdk,NeifEO %ahVjBo8=2k&Lja\e1pqi'B%4aj,S[SHhq/?1jkB&,F!O_i?Jl'(1'0u.9RoR#@E#'.!Phd5=lbA\;I^?;.;UsgEHqgRfkT'`[Z)(,sA_M7jWMsf/P7p]P]I6.:YF,aD7F!J?g%HW\sL+TpF?jpK)e'Jj6OO(&eRXjrT"VbR"Hej6=aZTHH>o:G:M1<+Gp`\$:;VW3;NiG=Ho;Q0]@a`9o`.WF]C %YQHo*6kRM4*#r9`MGuk-$Cht)hO%`8J`9OG=fRMW:Kf](Uc4CQ$?8It8]r)i."pH-7$tJ;3+Mcu!!VqcAXpD6T0tHM;e^234RHB %*+[)mA>TDpN^YjdmpkgVR!lr)-SE*liu@oF"U$:"_#f0%s'\&FZ]d,*qoojG,^Cm,i2Ks"cncS:^ot"bJ`XndA"#!<3T-4DoB\`> %8Fbl.8HbA%4N1m+JJY`CN2Opa&\^V[HC:os%t=U)<_g^:`7U1q6.r+Q`RRF3)$n4(HYLImg"9i&PCD*R3V!W.!X_qA\?A8 %ZAN9$Oc$)&Psan8nDo&lW6.L3*[uh6+A"'%(lk[@ZDs_W=ZUXlLp`E`TNN#+`!PH>#tQ"P5qQP*H>aV#$f[@/pul$(CLphHcH+1A %k(W,.VD6_5(0<2J?[cehBEt14KR2>gQZSnB6tQUopQ'=pHDBqUWTf-Gl':ULKJE015]HeX&R[=KmI)abW`TI'nXQW0$G+I#&oZip %O#Gm6=!'?b..Hu*'m!n\IVSd[>hFm_8N(BT;(YnU#+N%KZsnLfoj*#'DX3E.5k%"Bq#WEm%,?'\lRe2-r,^`l(ouk?E%K-bX]ms: %6G!YI,aUV0*=1jPq)NG)dX=:98<5a%dmiL4+#E7bTQH"eOG])Sr943m+5LOTUFF8VL(c%*W16D@5-<-56L$j1H4[(V&ACki&6>]; %807oVX*%nt6P:W3>!Q=Lm.K[-jX6qc,k]g&2mUbJm>Yfs?pgikK<.#o'V+ck4t.,!!-K??K3rf[L;tB+[roSZp8CX?"\!>&0W*,h %G-iKe@K_,Ge2Tc$Uk,>JQ(<=a^rTH!KP@nNh5Pfmd)a"mlAS\97PpP1(1d['GChi3^6Um)qQike08WY%mHZV7[%e`YU#!"ua+nQ# %*>3X]_1b0IfsN6ui3RCuR1B^)Pdb;&]sP(%f,[.`'%-5`fOlm7S-h:-hQ&h7_[N^ML_cR6Y-ej$XWDT%>nBUZEYDSr>9fZa$+)Cj %3.i^Zi\`%37`I,aWhVlZ.H5Lp!m(pk#$Pn(AWWV3!&l+J@&qAR\RgRhS8A8d3@DVXc'71;Pg<%&?8Zr&OQ;aX*YG$pJ/,F*po#m$ %"9S60ic.qZE(+*75RVd;H;`uqSpkB246Fho`7:\G %:-A[k)6GF!ir"=oYp^OYO+JPk2\9u+Rp[.4)IG@SKs`^n..N90Jgj`R;o6r5b[\@LnaNC]\nAXJapEfmrTlf"aMO6X^taNPIHi4_ %c=@s#P+e-`5051POm;)Z=Fu6na-l-D;c>,.qJbq]VC>/kW.hBPsqiB?1ijtFT]o9O*PN0Vp#$HaY0^P<(KS$JRa=F?3C-jE=S!0P:I_VS(tpE/Rs'ri:'f3Z161dBZ[Yh^WFSVHpMq1dX(5pSILC! %B/e"T\c^>P4@nA:.p?9Mk,2Pf!<*SMQ#Q'>c+SJ+'1m58cRA!GFjhP9D1pVd[>7k2(9(a %,=3pr\VdsESiW(]F[`PS,-t!2R/3;^^<,Pn)D>&k7oJ2`7qu57W'V%T>8Z]h5j]^6Ku;k:O,K&/U);R#a$JnpNK`'`keEBk_VnB6 %m'Z)f,&MdOcc,=-cdPht.-&+jF'=aQ;kp*h8:tNX.*abr#DFgb'pWl_drQPo)usrPgfQs!"[sjX*KcmJ68Ku*8O$*kLO@eq3.l"jpKZQ9=m\f$^mRu@m@fUiEn_8b8buiW+bc@sN;uX0l78b'-Mi[4m2\`.:g8Oso;-Ff %iGhJY'Mkck`tFJ^nteCZ3_l;R]U=ArE1K1B&[ZhOVIkSr4*t%D##d_8[f"O5<2p$bmF+`jlX[CD%0DEJEhj=*lL[a:4n-_Q`]Xdm %i(.ub,c+29X+Ss5Z9"i%;pUDD5))'Y"eT"O[kbYBCsO]JCQ6;5i1s+.IX36!6gX %Y]T$RHtNX]p=YD;[jdaT0d@"k=!Y,Wb.DBj=QLZ23Jlg\d'p9;JM0&n01fLll %k/,>H&`p<.cg'<5":RYfJ:89$nj/&;gV2VlLF%3RaC@eU3V1jG;HfWd(cYd&;u;1+._?pL-Tbs&9!dn0&j*!<6SJpdKVK[$4HF;h %P[0=qUZm'"S0**$5C"H$Gt96,>tg=snZn@djZ"j%[E?Cur4#85;h@Zc3;?S6#bm%%M$?\i$rg^[(Q\m0<$3h66/kiXZ7.&lAHrds %>m#"1jbmF8dk81N=$8O.KO'[,Io9:;uVP8p.4c+3*G9p1;`-ZUqF %)EZpp-,<9%kGenc,@-j:W9b#@QE3Llj-J==:^ECA73+K)KZZo1(1l*]"Xu$XLR=7Jo2HuR,k6D]GtPeCZEnf`pV_*P(=`a:YY^%W %V!+2n"1f,jq:H/78m*"'lr!,0F_Y0e'DpgcR[KKLp!c`[[<-P`%TSt)+[kMJ46\k`jVKr/`M87X8Ma5mLM<@sNJ]XMGn7-"pnkEX %2b_M_D;+cj.>)i(,OrL/rYRVkp]',`X/1ATt1cV15oNBE`:WIW@7d,H>ICt)t'jNR5H'1Ntr %[P^V42$ATaPh1u(Y/#t-+SVM[Q2;)m[TDf="ROWZq.D7'h.L3;_9LW3&c.Z$(%dZ:Q%Eg'-nX.O3d,ZN?bnA:+0+TojM>OkP5.j4 %$cTNb.]Ju@,Z7$f;LM1tb*gBdd)3[8Ub3+c7\P2G2Th%$:OB6sgCQb7<9;Ym"16ATb(t">TT)]V#PDdNd%9kVMfLq3:T$@C*5/"s %6jQ?4ZDXGY?m`$GP"6YYKQkLh61,+#\7ot#`%Xb1jiQO2J<^5<-TDp*iBY"+&IiEjl-d[J:e\BEM2)?dLX1Xm(:iB2'///JY:.bg %PQF&N9qm!H;HnpMQB38(?(dKE^Sg0Qs2=m83?6B!]^SH&1$1o$k.,uMY>qn1[J[n2mDn6jPV@#KZa_hKDYT"6rg %q5c]cNp1`i5TToq:bf,_p]6`6J/GdRD"._JG^tFOC$u3#D#i4BR-lj'Mjtb4;'N%G%\s8\=7tX!e4f-)*fn]VRm/`;(.m[T:rF/oB])-JT+sC>i!]:.M"8NR\EoE="Y:#[:%V=% %k>th3*tEZZm>8eT'*^OHY>;b8d]a!U!%YlI_$H1:@2Alki5(aOPrfE'Nho4-WJ[1$WTCl*deEB19lQ(X%*EqH=CslN+qOC?.*3H) %5nb9Io1W%T[$?143&!ASqIr3Jg'F#LLGL.qiYD`t@HnAb5?Yu@;;W6`3/BT)B(@`R%P/psoe_o/5?UmkdNoJ/)dMZq,]UaND*WN$ %,9=9uHq=rmTS*(!^gZ-@OJM;p0o1_,4hjMk+Cc-2h]N17H,It4S;2FlI\Q%N&Q$VA\q8UUd"RKhJk3L$_A;H^n@jU4O>ukPO[8^MEXsH>L0VhfO%:!GFk/?HV@23%(#F9Ul/+6Sj*dkb+u_RC^;DUj#s>DZ'HVH=*eiT7&,rk?QJ-.L8tF( %_P9EdYiK@s#5;]2:V*33Tb1E?+O\;->*=.a0Al-BR %g.I1Qh*U52kd!Pt=Zs*1"/P%%H(Zi);O\*m)G)_kH1:\aeJ/"FcK]p,GIgL_3Wg6tLM;14$bu"p5J='=/3)-m=d?r?,KA2Yq5k!YsTIE0U9#Kb+d!m)+4*=L* %5uXmFl=[+RI&MEpHNT@rTX:-;FY./RF<'S=O`scuQN6nBqj$=c!XbEY^$&=[cHES_3_nD)_@\b8]HZ,^OfEsc(0c-gQ#";Ai&fL=Pih6E%baCm %m%cU-?!p!'/fYOM-Zq/q#j689%Kj4)OnP(6IZ#u;\SM^k!q5q4's3%)7=2f;pfj[N/m:u"8Yu5J-G:[a/>Jhn;UV=&R,rq$FH$Md %T[-VM%?[0kSum>>If_aZP^VO9B0YBbLMV-,3L&BE7)]?n">ts3O.>"V('P^>MUHT''6*)(-MLK(DP(g`iMZL0'bJo^GReLe(`")W %8^61f%Nnoj(qcbj=Y;\-6+"0Xgn/@jVAJpV1;FhIo[SLE21RbtI7Q94&U=]n_>JjkhB+#FKF^B`]nI]Q+N6-Kl8qu#:"MAu6t;GF %.653W4WWjZI@:0@6jgjJ!\H!3B/`qsKII::T1]]l8-;4\&M.$$,h.ull=6N%/8T`mU\K9mTJo#&-j5[15m$F;G*cTJ8g/9<,>e,KOi*!L)E'#+oe+l %:;HSapsk$jUt4PrR/OFO#Gg3>5uo&#bCQ[Hp5L@kZpQNo&Wg37`QpDUTG,.(U+4f[E$J:%S=*6"MhTFpHcUj7"1AoeV9d6AP<'ud %gC(]8HA^`CO.&>d)c0CeP3!."25+$'N.iYQU^qFA;KX925Y-Q.9EP?l^8FVgA*o4;jq,m%$op\0_Luk1`!kp,K;%moN7]^6OXNTu %k!f]M_L5)R)d!e&8r@DcR*7hp_#OW[cHMTB^5;dakt_M\$`3M$?bF$Na;rbi`8?9hVJkE[8>%4UN_Kmr6q0Z[="R%a %@E'p\d:_5g8<'>$Tb2u*S^*PFfsEdhul*RnPp"o!0WJiZMRWYM7R(8c8:j5l/S`[TM3pZs1K22IJ1piJXk=\P86!7h@m %X0a*e$?]:V)GMpt-p^Z5,!&EZ6ATTaC!B(V.A.1D-3c(X(4fAfR>9UR6?9c3W^#1m?d[%7SohgZ@3@_@&W%32AnZbhtC2'@CDc22lEIl63]`Zt>[8oEdrm/,%AamS"$Y0_Vk6H%%li79N'* %NqdHHO?1E_I39"9Id=on.87#(2,(Q %?2dNtV6J`\pWr#5kEu5^k;+S4d-F["A3LZ]aDoos"LR-a=[g`/+".AYWh,@iN6X[^;0WdlbXsd6)bnZF':^42mKbk#*FD20LaLHh %Pu"rgj\V;U)!n>ie!o:SJsl`O*SQkjp101np2FFLGZtG=jgbXe>-pc*Iff`ENiqo.Mt<1.0/i;Fp6jVCoNuP=;dM?lA1F#R]7Ztp %dXW#Wljp/c$S;c5X*EX)K)N'=1I)5*g/2^7%qH^*#(]2hd#7YVWp6eOO8:I&J- %GV>_FfIe!3,jUH!HIOM1uF*UDkdHd6p)e6B %YGiuSk&$G^PM3@<$X5a(P'LUXUU_j7'bMS;!EjWnKIMTq;hI`?O$D]`7mRQV6Tt5G*+de0 %U*]-RP>cc)kQgU%kL^`N&q'^\!"9Hf00iGA^Z$5iQL''pMPIkF0WqtE64PWbM2N``/dVO[fA7*'#b&Bgr'`AoiM[r8\4e-13f.[p %^k(P[Gd:RX77e&;R)dPRO:g1KGnd6m3!;t5N\f-d:3%T[]BA2rAlbOjHTE185ID^LlND*OY&6q,.AJoq(UE^j^Z$C1ljKZ5Tm?rO %;&qg&$gcB97+nD3r*4JL95L0/N@FU>g8+"rtG/[EWlsD0+uq@d2>3]7ZdP_ %JQh+$4r'2P$QAfVIM,.!s5SBnIqW,$K3++ %6PNth*EA,=oHnegaRe\:,"4h[_si:++WhLJnFr(rg_)Br_](jP@ZkIl2C'8tQ3pWST8+Gr[;XHcEd(DJ64QF8\+Rr@@BcC93_RUO %@QU4qN'&nsW)"th5k5s?l%QqDL8"bs=6))I6Q/,W %o6'YXKh^7gBe+`(%&bkZ]P6Ag>DgjSZt54/Af>9s%rh.YCek`S@G`g84iuH2khXZC5C4VU:,>Qd/c`s"+*&9FT1")OVH\QSmO=41 %A)38BB65uiBdtbMd$<&Q(9)/:#Yj:OK$MZ0rW8O>j*ZlE[I`#Fs%_ %N*;l&*K4N!"e/sZr3;>a/ccpt!F,,]6214@+W-aX(QdHr#nc4-M#)WH2]RN?c4+5/mh(q`TH6M>-L=&_38nH4-u]T^',;T7Fs@@u %412J\INjEh_f6L!Qa$YNc=?bR5DZgf5\oTI)Tru_%u?6%c`hTZQVUE>NLdb8JCn-K&?%1"";9lG6&Q"i(O1,;VqAGegsHHD,/7D( %Nc.-`"?/^'i5;Ek\gs:RPSutR9p+`5ANkT_LC^br!.FhbW6s2$.=haLAJQQm1%R`YUPS=E@bDa80N;cpQVcIt)@jK1:J**C6SA0j %N_+OD.jCLANGNX!QepoSE:iht0+--d5+u0tF,=eN;'$T/Ks)^0r-Ng1k.ZF'bu14"^f?'(KSj.^H]8?e#n@S/^a!ME%k4$q;0S45 %L#+,r)IfmLPQSL-:]%H8#")-1,]ohRLI!/&&""baP]"u,ag+t'4MP(#B,'CZY^XZaJZnD9@6kPNJZ21J0``t_!%70DR+SCcs,@"+ %Od!XT7n4ul:6m7Kr%;YlaAn*'+%gNS7gZ?Zi(ccN!0qA^oc.i+XLbGrOuDqS#Uuh]IHfDU9rL1p %fLpc*e&_^n!G_tBlVYkHOA.3G$NU?4,H\0MRPcRH&/a,CK(%_lY]+%a-:[dQ&GsE6*`PTe@[Z6#-bq,DLkU5OE;36epl%,.6Rjdc %JYC)@i(fi]c[$op>6Z#[hUg+#J;[jQiu6J<@haG05uEXi#orgYJkQNH)5%`N2ohoJ1b1o47::sL*p4DEc*_hVj#ImZ8+qmr-%c!? %ENC,]!GoSO%+KQ5o2G)j._OdS(P$D`e>"0AUl5Nq$\W=Rm+B?QVX$%f'lVZ^9HdXke-?1`PD@?D8i=CR'E/j"!\XI]aAMR3R5?fD %PZNP,VUEM99(srcbchfio(R62s*u>Q]Tr8">2S1JjHAWa-ECP1'-)^bn\Hur-j(qgk5e6tGS=,N_^D5bO?j3j$tA-9iFP9DJ.r2G %ceEiai]-1YCFP)gR#%)-][u2'MH:UV6P@3`OrJZd'&5lej[B8aVNk*maGGZ9C'SjK2nq<'Z-]?dGJ#:PL=n.%la"o`[9@6-d58&rpG@m=&@&,E=,S=/WPEMD7Mc0`L9`=M-EG;m!hmnV2X=n&&F3qj`;SPphYcM-Bj"7q,n %r!SH`+r,Vh[RmcOM"tHG4!pE+3f*%Y$d]uA,U2G@O(Df,8CS;jV,oZ#7feH9):/8c\bAc@d];`&L;ZBQluRE;-&A:mq`6@=9enKM %H_cOdHki&A4_:Os+BR;hT86kaA=DJs+_2+:l81jiTeR1S]C1$9P+"k/Ge1u$.jDiG65r/U@7rRq6gJ&%pC#j01FT=E&QQ&m?r$Tj %NC/k2!._bE5so*P^[jUhq0X-AAKTU;bR]Je(E/-f=lMPLFf#jW*":$R6)(R*Qn!u4![^PPqE,2%X#Ht %j=hJ7I/t@6JDc$R]oT0I"c8j>53Z\R/7I.R!Oj5;u97< %6P?Q-h@j7aK!mpk;rkKd&G)],8MQcjQ:foJeOOoWLM7Y\"98ZN-#O?ifHTtTL1EnOQ%i0(4K%-L1NX65!J^`Y"DeW+:oM.])emBX %A_5?Jm:*HA6N)TW$jU/Y(e:cBo4URjHl.E8$BXjp?a5Dse^+C<$tM4QIo&J)eU6pq^D4MX1( %J@Q5-$2Fmr6?G7ieO0DZ_d)JRK(q+N(BNkd0SD:S\;0]EXA7pMmMN*q[K=uX6j6Qs(MW7-S0^B#*g]9JSqi"qguc;nY[1$]h,t<2 %0oIJPW_WC+7_r9@-`nm&O0=0N#!cE`A4kM0102He["OCD&P3$*(MR+-`*MWJWq*Dr_M'/W=A/#\b&Cd&F %GU!n%E-a%m'*,/>G7ZVKTbQ^\:l0&u<$-.3c%W\^'E^cYL."I+BO\i[@8n[q&Yc(cZA9?=Zc&'GE.lSH,I8Z[68.P%6BP3):#u1" %e5(K_5UaEM?o2qC>3Zis0EK)q19t$h;&f(Sg3D&gEn+74Z;q-/hf')^EBj!<@dpZVR5rGj:N:/;!GgtuNfp5"NkAe+&[sDg(J:gl %[^_?leWI+KLE-*O/VEU7^`ec#-U!okfi\7+&I@G/O-o&i;Y4/oEQN&RS;2c[diE!n'0N9":'c(e$mGdE$k50BpJO:T]F/-`_jPkI %.mZX\bhP+7`'6]^\np76\h\O.=t(&3g4=/\TGA %2IslG,&Vc'n;]82+>>_B2O'j:-!+X\Ju3pM"U*OUaZI`jX&i.kS(ueq>@[fQZmiT;Ws(\[L--HBXqN)cH^?=@"ih@^K>^KS"D;VX?)M=;6*[LGq.L@f[?I#5#G=5gD&+`8W.\,1KU>28lZW'nI"@X"IDi*eL@_6g.X%6bG=aJ,*/=mLJ9eUXR7D@P/`&=nh %N\_pR6BjH89?)Wi!U_u#9%$+N]U3YGmR,!0c-KeJj:]Y=.jI"Yf+2\Q3$MmAqcal?s_W],t?kr %d/4/`&`Z8A=4/>&$mQH@'aFCGS-\mHkX1XaZ&o%6Ra %-.W\#5*&.l"+h=A%[!&I,!dFc7nSWVe_rT`GS21]1ReZESH)Y^I3C:P@j.>qm-\b$b=o]XE,,:(&O]_J0;WJR) %q&"l;e<3XULJH381ZW^4KCoi?"!i>cb(c$t&$T7a-4d*biF,:X*7^jP9GJO?H?%opNt@5''"j0K1\$Jb'pJ\*Lab`CYM5,p!MAiR %"SLd%,ai3*epo3*I>f+`#`*.X67d(g.r'3TZ %H":Dt-NX:@bF0oW)]K`r"k4>QnF("`^'<"T.4i0K$" %)bNZiTc7&1MA,ub=..2`Q$!?]3-aE9a%[Nkd;=A#%7[.G/fQ`pPR>qZ*#.m4;jn;2"ES\7i"1+q<^9F_?j7e9;mr"_-A%UM7K]8Q %_Jggf+q,JF@\46`e0-$9)3PauFLqhkWsPQH+[e]a#7Cnj3*74+['7]Qj6!XcS0DqLDH?b,/2C=?K/.s^5EXj[n7?B-qLDc %LidS!(#X""F@1(h%:W9Q[lL6m#aMn*78B04CUbTX^O[lNi$R`;'uJcM26\?8%>dRbZjY5j,]G]=IhsT>_+IZVRT*_-E*gn1KAcu( %@3RB;:s6jPY'oQ5dMmUshu%HH0Of[,FM3"A"]>JDBgBLgoU\YX*)FDhaS7)#CsE$m5eWMu*]5(kOhc'98r6oMSkl@-5e)H"\2BBO@4V_i'.#c_HD28Y`BhQW %[Ksf6Gd42<>BR*21FEm!2M>hh,*/ZF)[\>I<8G$"Q0p#`E:>1Kp]C`*$T"*&H,n`XBJ5>_fP;6Y%W;>-&5^=2"P:7#fep$d8d:b9 %$R.9-#*Kj_cQk1On49;f2bKIqKh!+",q/,36QEB018QDhq%<_c7W8nU4p&S*.6rtRVDX?mMTdmXYUBYG*JI3+<"PBj]h4F330$q6 %K5t8`P9#P^K\$rt;7'mG]:IBA/RDAO=bA"'n;`SG30,?l.8@n@"Q9U"&ZFq#=?8=H(o/^fcn8PFJljo[PCY/aW!'Im`l#(EX')\c %Kj,EA*#cNK8;2P^6't1mQY-YWi@1M`QQTfijrfhKM0WKZPZ9;f*jJQ:&gE'0i!=9O$;+9UO@Vpl!0[a%g.m8,-)$eJ4&1rI#tYPu %MF"f9E_)UlO2:rY)Bq=588j?.E_s;rI"^N7*gI?*0k5Z(JPqm[1`e(;5l>CkD]Z.f0mYO-J8I/?lHL4W>FOhR@M6]Un7(GHJ>]eR %!@5Tg6Q9Hi@O#R"ZXTX/+9AB"-D#TMM5Z1Tr?amFW#0L2(CLam;b5Y5,+3rm,=:O<^I)pimY`#!#".`hSp_ZJ3J9qfiYo!T`.'.f %@W<^@je$MTA`nULlQrG^-BE]^Ob_*?NSc"@on3q`:LJZ\EY9;fiIaohZCT?i#;\6U+pgk4jUdTG9-pT-82Ok!/1P%/5\GXp-I?pk %7'1OoR"`.A7k"R96u2o%6^('XphW8-6O!cLk`Z%R_Nb,b9L-p!MXr5k21R@>@7_?(ZEB9>W-O>iWJF7>)"Npt_>r"S9G4'BjLk[j %$C2Ao#iH\_oXng-W$S?p+%M8OeajlkB@9a*,%!i+?a`4?.D.qXj7sI(6mU_Y %?in/9)_))GFQ9GP?a,[8@Ser&OTmtP_hPd-YV'&`F)LE\:Ag%7MT)OoP^C7eEAeqPRsj2*Y=O88?L"T?oG@03]J,] %Do/BXTgfMX#-%YJkJ@&sBJY:q6-87$)QFrZ"Hh%pmT-7PEPQZ?68:@)#1mc]QmK.g5,@h*OH8W,$ZXf9erbok]V8im$-8aY!iPD5 %rLFj84lQUkV63!i!'28hTF2r.i6m4"$&ejbFs9Mu"M,V:Ih0/V-s<<"d>:DN^jFNA=doa$moL!4iX'it&r'jQ7KC&bF?@",Kps!B %G&$33=@@PE'9qIT5QCt)a+e;>@EK^*[Lo@@S.Hp\LgKqb&8OhP.Dqg*F@@3SAi %@[TkH5oM;=MuZO;lXlsn`\WAE3;HmK/@#56.X$E&#T0U7M29R]Df"(D9a71s*f1$^?'-N`/WgRg;kC(PQ<2jA5q(\\A3b_o4Jj7% %RBsu\&-RENG_O@WU!LPB-2?.ED(L18mnnm=%S$RoKik+Jl/0I#2gmP.1*<,Z?:+R8Q6N^eV^nq-5m1E %8dVef1jC.G+^CW63^fS@/;3e0NCaQ#BIr/.&IFm\N[_"ZV]N2T@Rh&?\;6BS_R'<"1J5W@"f45@rl2;si?ArV&i"/1,m`b)on=oM %V@k2)*P.Ng(t1R<<[(hkPK"c-/66FB*('(inoM-\Wd+7c@*FEV>a_qp(BQ1,=T %7kho89FjOL!;,hOI$\m3it@B:j+F5A5bq'k#2%NNLA2,;+s_pSOlJdfgKY=CmaNZ=Mh50WbZNpOU.H@o_EO\nPS?Hd,+i79"N".@ %LFl^S#E/,^!.SurrGTYo6 %pCfu%'B'7g.h#u@dq/UpBL72.r0oD&U`"e^R)N>4Xm6.21,<7dW6(8f4+ZZDYn5q;+*cgNXJVXoEM::hQ %&HX'V">*4+CP=b/V1PYROdp3-s2$Z0amg'#>T;WLo&W\V_iTS2J05:3/m+o3Wpd8S+W;eD5jUn&*ERmKV4^)*Pn(t^-!nl`8B;&H %,)SIe0.)*n_-i%dA_Ng`.;/e$doj7rnWeo&X76=e!+T1\M0MQ2J;!tZ-1"TQ@gF*5&KVO^C5-2QKtrZV6*S3MPIM5X-F&0G;sfou %!eO7KOm!&fK#QI-78:ME,Z70`#r?N*%*1/ADE7XZ\q(,\LG]8r:6Z,&-jJh!M"R#)2>/>V`<%0p4K77uKZbacoRf,hG[?V&;FM]V %.)7`seR=U+#B;RN[h>YK"6.^BNFglN((meA&H#*cR$-gc>'6VB;%FD_)G0Ha\3HB40hi'PnJQ>idihOXZO3DK,TV_r(5;l&!hWIB %E\-l@+QoFU;Y:?M/"Sb87(,-f$<2c5pN@2%9IfSn"nukE5L_[-0"QJ[JiPZ,th"oMq.T;!_7t-iuC+ca5$qJ]8PC3t/GflAO_.B$*?XDPj!d %]5cs5N0n-8ZWIN;P=5*gI"X[d3taC[U56_h8M#?@-_Bh)U&CsWBFQSU6qOC]"<23P1Q1_;_OkAtA8s([Y^7_F'cpRVeWW8-B<9uo3=DTf<*r[MQ>(dA?_#]Qj/Dh'3kLfiBpgW$Dm9L4$>[!ia=nEoL3FYlsUPs.7 %.nb^&\/YgU^]DIg)B+SR(b5)Y&>].B4f_&\"&"FR7LA!K.#8aS1tmPf6S?-QHSDb%Q6^DPAf\3'9PKfeJqMsP&^Lj'@MioJ+k3:? %Jq4:dH/XU5a]W<,M-227j\Q/^YR%UR;%8$JMWQD]`:I%g7MY?$.5P/Ii+BiHWAgIQf3@NO^dt5,JdS-F\AC"+MsDp(gb$_),Rce+ %fl"/'=4B0`;C8bSLI)W#XCXt(('uiAf:J3DX!PQIP&2ZlLk(ocZ?O-i\LqHuae&,MC69[";A/3*#24#rSR^(R5R,"^JlQtfglU:U %+[:_9!^I2G3((StLa4!#a%`;d;V=_eJtrhVE3sJT`)!JM^Z_Vr9GP]Z+at$I#L`dPZPqGUoI+]OZl)_I$IU,B9rNeFVGeVD.FC#e %Ydi'fDeQ$a)C7;fQQj7f&rmlGM'l_em^a+B09)/16?rl072\h<`:AWkpJ1o-Ak53tM4C>6c(1,QDam.$d5G>Y8dU#$%k^X&kXg]e %T4hD:GbrlMa8mK$X[IOm(Tb4PogJLB[4@ZhBHXC&KXChC#+:Bsf7\Qusd<*6%g[/ %W3:[65'$aLTeHWVCrR-%E"FO#%?`mdpRr4t!<3o[C.pn4&JS?oH')tr!=i7RYs"ig6"p#j>h;[t;rrOV76WCeJLHK)t[_ %k55s],_6SQ/S-+/N0Jn%n2<[u&28nfR %e0M"`+WJ!:jgbX'3_6@U#LO<;d&/]5rc#t_iD-?h$\cl:+oXEbi$\ds"/ga:._:tr*AQBMJpSaR8*J(Ko`B,t+Hd`83gOt8>b*%L %&/S4354hW'&mD6-daB%m;i%M(!oG12$B@7M^;j^Q0kA*pBcrE=Yn3iR<[#X6PrT%L"BhI6Y^$;>b6VMp?2[UF-"$&!Yt1->cU*d` %@KlAIVdJ?&nk2-/&\>m2,Ki0:fkhiZ,EkMFUMqb\i7)_XV2W8W+G,P0A.%Zf_iRl=3$u#;)(,$])5:0AUV\R;<9BI.Nu:7I"e[P< %KA4Ak`toLjY/[ %PA8eX"K1;J8UZ`Kb-3#(@$>gR`=lAm*1]@X94ep?"%L5+=`T>NaN!(+*KSU"i%%>K!oGV=LR,Fc %7&L\a(fB+R"Bp>s&hF,m0LX$a!u+!+K8?j&Sn*sp.&%.n8q[?!$B:_n!9Ha_h@jFV%7h=DXTkgKVZ9!=l_K2B(_t;(;#,P4*[/Q1 %p>HKtItX!sUV_OR.hopTEFTn(EDIK`'N#**[M-Y87?ZSo+mgG^Qpr0!n8[UJk'Jf9Jt5i]GUb`*!jutkS1,%EOCf@&LGPTo)Zo^IY.VVG*;!1T\^@`02/nt6l$!10fOV@*!N;S;%V6q!jY,1U9sMbL4+[;Kj,W&gq&'B$A"p+d:?pJJ-#k7Q?Gr?+J8l> %$A]K&%Ut3-9+pB&;0FhLeWocWCsS4sJhRPQ(egA6nX0`7J^?%U4G6fC75Q>q)FrBuakQrYM$54$/Xbf[UDa4E\#8FMNWicbB77^C %";i))Q$rZTT6;Kp[0LlAHd3k&g!D<-2RTZ^g\\VuT %@p#H[J-!n36%0)DAZ2`h1PCQf[4T!$C[c9e.:*$>963S8c)%^`ns+f-JXD*YR(Wc %80M3RGD(SbD8DoXj>M`+'F,6C#[h_miIp5*a!r2pYUq.n'*MYc0![H:(E4P\-(Z8T6mm\E8Wj9#LUeFm+Xi"GM\SY7!8&W,?]M6" %PtJ9WVU?`k7Zo&d$lk+Lr'E(NXX0"GMa8^*XH7Ga.nZeYL709M3sBQbJe"$7a9_O0S@3-H`.,qW!R2,cZrCRhREhq]PQ,H4e7!?YNkkUqt_JtYl_ae`a %ma1Em7RDqXab[#rUk3Y./dB7]"fZCD090j+Wr56\$j%dt-"\JdV$*#5#G5:lC)o8j,Bb>Ua,('B,M9iC!m4 %`f;5['^-f.s("N;#d6e#qV[%Se3Z!Ri:B/aCe)A,8RMZViWYKq %:]b&CM\$MO(kuM=!'MQcgE[R,jWUMFni=rK7F:F6L]E_dGF"A8![`U*^-f$JXYh<&GUYBr*cWV7h.1-,0GVTL_VREV7K_3EUF=QL %)A1;8'>[RtF54GfV!jh8 %.7G69m[JFAFNHtqRV6;n.pJ@**cd4eTnL-h&h$4CV.1#N+% %H:+#^6C=TTL2q2MW.&;"F@C;=5Wk0.%,'A8YVMBc&nhSp1$:gAcqq[$)59T!"\4(\(&C/n]S]13!KQ1E8ci=!^ha.\?plJM+D/kI %7qu!H$HlKoMD./smh"^JEQj)r#U)Ll,iBCC.hr^LUb\rD_ZahI-_Qbr;o_.&do^Mi8!#A(4rt\s6ppGL68,nED(<&6l$/p&&(iV$&lTT`Os'/>S?H*P\qeF,X[;o2M8+@MhUIL %c%ZOhZ%=DNRY(NK"[QRXHBO]E0EhngraeE`0O'Q05mRY:V1esaE?QWcVZBK=P=*WO%8m2/AXZ@G"^M0+"\Pr9B9GM+nUP4S:fU!% %TZ\b%D5M6JKHJQ08YfnT$)P3]3SQr#,5qR2"O2K1L05NA,pOST\u`J.iiR/H7"Wf!N0%r\gKnLK)_24Q#e,\6=4NDZ6ZNUPiJZ6E %\GoA*U/j%h!FhbSXe>7e=sF,@lNnJ&A.nHm0MaDQ*JB"V"U6FcO^-VI\PkPD?NUA.;6G"s!B)\ZJPu@H`?fj4"qHL*;W7,+30]P= %2&)HH!&oT0;loNiPON5c$Q3!!pESL&80ffbFqR\EP('3X#9MY@oJe!]]qIdSX:e.tKIk,>?3.ZgUG>IR!h:m[f)pmHHm=;R-3\t5 %&Qh?D>9u5c"tqp3(.anhDoSLg,SgsNB4d(rJK#5.mKsPjL'04T#gs!0!-(#j^c`%bBhDZ_Mh@h!(>C-H9Iqrme&<"la9Df-ThmH& %:]sSqdNW+]#5r.+8;=WI)Sem`rs5o_h#t#>c<3A-k6hG!Grp"O!>NJBkDA!j32FB0LNO(Ag`rU4TJ0L-H)8.Q"p])[0G>p!r;`\7 %^;Q6B-OR"k:_YXVC(LdOZ/I1o!OjkM`VhUbKg78BG_+mcllbm;o9GH)AMs3.-AX>c-[qr7I.XIrme.ljK3,p`g+ %H$(M]P(X,:!,u95@!88Dne+i%"Y`+L7<"=sW#iL*R"ZE9O.!NiGnEXSq@6o(!FdRbHj0is8NiprKND[hX3)QJRQ*^R'+;i,$lG-H %N+`KI6-0OdB[&@V<1S4Y0Wfo%D.EF#J9ci;qNgKIbVL3XGpjr8#f-gML0%oSA3O1;3!jtt=_A;8_7bVp7`%UZ:#&hPQObrQ-':P< %e5W]'eHV0HQ6[Ugbt^OSLpC`.6qYJi8#49c7Zte]W,a]sC4+1QKMUPG<#MdUKF9IMmN$sI!h9Z*_.0h[4g4@C+FkC9$fZmXK?SG$ %paAh/b`P>10uXCA.e'H;'E'J^'rErCfdrUj_F/'j>T)8(,lM1GPnS?hJ4bAjJfXsqBI+amd1$G/(,8+O0NNH-g6+QHP$\Ee %&><]aon+Z"=A1"UKc81Ur*>,>YmgZM>]MJg]Fl6nN'A!HIuQ^Z#W/CdTPYFYEV0*I*f[4FF7Oq'9`@E/.d;_=!!)@:0bRO))a>W" %Pl2>SL6VZ1@5qaF/bB%P@_dD^AS!H+kosid^h?(uMFCch8%iphq"bCb_W:8TJ45n]0a<)um++cY"/6odO+GPji3D:=60j>B_o;(! %Y8(X!$H]Asgq@[@PJe?Z[Eg=SfYGnoE@?2X/L&^Q7np3m+g[p$Y\#pD@(?Q8N4k24*)()!Nm'p%F*AT1$_CAm&T!:L`/]Y'WfX3= %=XU:]i*.SJ/"%\-S],a"](4@'.1Z&HWT@P/,%d?bVH-7h!48No*BDU=d3oRIN^W`,ndKMkjR9kl,s4a)ggM!+,sFAM'XT$_aaH`, %:PrK`iq\K"`W>!j.TVFf2%ju,0_`GSc4JgIMP3&SZg'u"FlLb)_?#r0`?`u`9!rbbd0.^e#'dRd])BK20lIqB27S.P+L"5i(:"W1 %dZEG)ShMD)dX^Y1L\tLef0S&BQrJ@;1DJ'n(.S\-+E3luJP]]069hh[l2jBXieU>EC(O#^kWI54lE_ %'2al7#1;s1;JPd6fpNIOB#7qO@Im74QUl#X3:9_FKPC^od%*J9,0[8IM'hTO8ej._AXjA/@fiou^sXNNrj"@JB&I4l,82jef8-8] %%W3FFdc,q=8];*6C`3mrocG?6+$"&`M>IDI#_(:qX8RXS>=;`q`6mFK9!?2t&'8o^o3*oD_h2*H9R6[jL %-PR\B,Qe/U(qU5'm2DQMSl?8r,eS[?UG)i!L`FTX+rhd]:"\t-GbIr[^a0G@3MK.k#\(AXS6dDBQ'dIEX9c%4=K8P1Bm8ika;>@Y %r&[_GI98?O"cj;FjodJBm?h[K&0/X&M!b8)<=k><>b[J!lf?G0K2iYb9c(5tO8eK2_%qto6+T)1]SYrd(0)n/pjO*>&nuHJ'82d+ %6ujLqQ:Rc)jON=sO!9.Kd!m:.rUbc#a;[Fk2[qB+CI[J?Gt=n8&M8cR"a=k&bS-:9V7HXNJ5[=r5]%tX7C;#b,oQ'?Nm=R+>+@&J %BL[k`qH'>5@CDCV4:67f>cU`joBG5@aL$C4H.&KKHJoXePg6bag*PZU1\+W1h"!=Cj_fj=Eq+3Gg12Vr/Lc26%#=,)5"_]%c/5&R`3TH8@L@.1p?Xb2;$$5lF+'QCJRY%#>K\1+GOL"-kN\&6e&,90L*J %CelcmG"?@TC7rAR3OPCGn:_M_k0[.6K,$fHd]/[L^^VPj==9:h$Zkf+4L5l3?9Z]&WBQ9dInSo>3d"2IsUj[('i)@(6:4fHAl*#9TCb68NB>7N>S8; %%M5Nffn>gi$BQ(&s*U\?,Xh/7fcoEDi]^Ipat3&T6NMf`@OnrN8-TdtiNXVH1PtgJ5e0-#^cc`eM8S* %AjpaR7gKdg!p.*=&Lraj911>,'q<8^9)iJj5G(7=#l_e^-3sr'm1ah;b*5!iP"3VbiHe1C3ADdT^j=po_-&3)\Y4:A?72I-70JIP %Z`X(j))ha(/u5e'9V8qC@B&dNr6>j/N=mR)JTH@mG_0qjQ@qU/iJVCon$N4@oIuCE"qja@#'^\elkll/bd.o]Y_8cSl@4I]0^MuS %7(Es9UfG96Lkc6`#npT\8GEmUA.l[5$#3p"D\8+5@onM$U'`LT1QjCC/LcU'RFfZqLod4`^3K?MM3X='_!*)]Z^r$ %(TPY8QJk>GW]Z4f:';_2\"b!.#h[#m%Rhu_,#9m1n_R@S6:2oNa'2Fl %%oBSB)0n]S5pf^iQB;Q*@LY3/L.#RWHq!Pt&Zr$gMXtDW_.jCk2FJ^O<7)?'98j1*[\X<:d]h-/K7QjSHj'Vd`0le&"Rm*[@gYAb %Z#X(F@L$:5:^DYJ$fu.k!=M6HA-E:cf$&+q1a\;%dgCqa5S8Qo+q-B[LPX#F`TX<"6.hm-_aP-R2@1hEP@>=]:';mR/V]?K(eo!> %+XC%N]b3'X".SMt?49^E-sG_'jiRatJrR^lN]D0I0G0bI`3tj*(Ujq>ridq"ZN?0tEN.u__;7Ek#g]Ff%7Bak0XUo`C1C\jA"\LI %&C\HpZ,C&!g7e59KQ/+[aHI0':[*_h]e\RSD(P=tF9T1p&l3Zel&_=%%;75;s)@lQVDg,k.lIr"?s-]I3U+g[EmDsU.VBKj>iJHN %$@Ii]ZV!XrJ32QtgU+HcFA[>sfh/J'Foro]d-Z!YM6S5n$inYh:+A:;D#g\6Q5Q((,g=5'"_8.t4),=?B-M?L."eIX,"m#0$6X/k %1W#D)2I<0P]F#_f0R&9I8W5FiZ/)WZe"DB55jKX'YF[+Xa.^q^PK92sk^XYa`i+LrnE\R1WsmU:'b#VZ6Tr6.-(Gf*$5isZ$0B]t %]K@qe.<@'(%iX?AJ1bP8+JWlU,/nX;+d0bVlbnDU-03?/EXN%e'0V[-#uAJl8uau_aF\"hk2;Jt<`]1g+:D]'<[.ML`N[._@[L=2 %@V)Xt/d,emT3bul#gQPkHm?6*A!\&j8=&U1_tQG;08EPj9'dfiXVc>:k>Iji0:%"9-pU$.IX>V;8VM9r-)Nl@36h:$>2^sj>HPu&^q+F'hA;33UsVN68C %eh@JPL>a=4i?tW?lnCdViE*9rn:TC49I6oqX.fS;dq+@@SYGfLqTh/S/QP#7(sk!;D;#AQD^W:)H"S\`mKl,)Q_&$HX3:%%!bdYaSj<,ar<- %MLpNf#%fVgj[D1q16QeaC,9H.h!HAL0bRA%)oYCf'%Xj#4pLie$;ahHoD0sE*:N'Q68k_R&(`Oo)#F>%:R2ZX2_L5Y"f3T'!!>NLO=qB@/I&(<4cLV"!+2/`XhH'U.$L<..%3^F6.DK%2E".k"u&0P-1mQOmT=*4fm]+lK;Qb0?c/XZ7AG:s %N6GatIZ%9rHednOArqDA<,3SJZqjp'V=*O38\K6$hQIHkbH[\&O@(7de?FH!0KLCU5,S3-A:h(s=7p>"=k,Ck^[;tg0A*5sHM(#` %h/"uap!$[Jl'hFPe(B.Rs'7g(qMiZJ^T&A6]"JT#Yk@lbrQL/"s#k(?HMo=r$-V^ZF0JE?]%=#J4DjH:]1'#Xb@b@4fW!J,V56qb %r?(*.4!gj0'Agb#KWLLcc9EGpQQp?8u+>*bY!!.LU9TY*tQ2FY!;YSIAW %qOqLMEhfdi2naR\IJF6M++8^_GKrFEZ?BY\iA#PGr5Y'cbMJ@nGFlEHNa3f9Wb/!NHD5TaFVT0,4-#(t_b8@ON6u %'%--HG,t.Gl3L;@]$j85Q)"`#sGqq+P5'NQ"DL#1*Vl9rO7NW_*;3D=FQ4N@L)rn3A^_kfJcoU4XHA)/pDc)6p1;.fVC@k[qVYg %A%K\Z-W.YYTi*UW,?.e<3f!gY5/VpiPjYlG-l.(',I)nK-F@)i"hmkmB"sIG2i3-OPYN`b:rCA&n2HJ\aR0'm@iG'o%+it(<&d2MEN#NT<7Of3'R)+hp5,a) %L#8"He %-?Sf9Q@pBq1q&$@-C-5Ng`I\pWQ*PR0@2-%BI))q6_>ih1oEIki::QRb+V95jE3.1,eT7j8I?dBdHd-16X4k2B-AqM-RpdkVQsPt %kIP#^08F#!j:T@g@R`I_;8k%af3F`^kt.$k9/MP"ok`HE=k^f8e'KS_Oj!eCO\/$Ma-[lh:saZ(QM0'[ohqX?Cc7f:Eq6b<.kPs? %]:V`#:6<64)_[(@D`=Pjh2>d]W-LX4q8(e=dd#!?Ej,rg^:Ur,]Rg(h#Ca4]L]1pH%/oPMm]^c9G3[qamtK=nX:kd-bW&=qYA1?( %]52;3J(JBRT*sof"/sZ-FZkg:)?LLM=?rH?`hRdC]3t=:B)h,BA`";Trnc(92\Yu%=R6u=VG;,-&lV^caGah&328.V&'SG-`)'m0s,Jp;P5_>OA&[,s26]Bg^l^>91+\[*$#(Z_ %I9m]91gbWjVB#iI85Z&Dm_X#o]k`>BN7-_J"W[$K'DS-fV8/'EKf`50ok3,okb(0YM8UP&'L`e50h<.C_Dm/Hg5*(J:rH;[`'R'. %d`WTh])i\l<_rE,KGZ/HM[_s>@Ck!D(4XJD`Lg9tZesG$AAA"OQ'LtH1bZrT4YQ$F9O(uY?!URq=3:GkgEg7:Hi"`f4PN%qe\(h,BW4!a"1U,iXN//qggm`9h"IA`n*.0E>f=[J/>aJT<;DfO?i?YNPebM[hb!g2AD'!N %"^7H]$*QV$P88hONb#mJ)?ngbOqRQ,\[qDl#g(!`)jkl([`uHQ;cng,baOcWDJDkOnaRK60@Qn6t[=#%#F$3`ma6%rs%@1W!XAHBX(JLN^XZSM#SdW_Gh(a#=# %rq2V]r-Srh%B^Y609%]5Klfr(0p:(Khg,eAXkh_2.ZZ0NjgC`oXMneN;HXK1_j.XF?QGBOQMtWEbSr=s%EW*m=kJR\NaXWR'\BTM %o)o"\@Aic_%a*SRK>YHl/he$D6"sr-;*D)VlCD"YI5U0)#b5FT?>:K=l\3*!\=E20YMd`?e[sZ8n+3BDFF5;qnVa";;%(bK)'9:f %1-+fuiV8I?[&`b;e4*fVI[GUfacX5:CdU:Vip?:Hb1&Bt7<"!!P.-%'r$ksUS869IW0fmgfpQGh"pRg?^+KFj4QO!_)-Bh/eq!aGd8n:B-: %2+2L/4N]/L*6eha>lR>)#GM2F?=@q06W5:*'\NMo,]dntIp9oqpO>h^eG^+m#)i77Y9M1i?ElcD>83YP=t38PWXr[o01[iB\?,3O %@V0*:)[[uiB&.)c.)GCRf]-Y<#=))bS'c6^6j%UcW00Q::c0[!0)#prtF`*s1L!.gud]a3PcWR6,cO"E@K3>h)n16FiU-6e[j8J'L@Q%!CL<^miSJ.(F+ %"To5gdr(tB=TSSsYM>KFb^+_3mNL!S_Mi.Vab$sTn-JhD1QltQIAVB_!B/W":F0?gn:fQ(!,uq %5U+!/'FV!$\ahFHX<=C:E]/l\'EYdIcGhj`L2o0gi2BOe3p/#HL;Z(GE]0UO]b&m=9*i!n-+Tf?k]/t>P;EkpqgMD,>2l=KJj_q4 %Z[s`<@c8IW@7pt=+Uj,oaE[eAEJS@9=H0\C(CL;]&VnqQARktJe'SGb8He43BEeapOVAH5LE.8K+p!!_d!3Q.8(%W';BRlp-,UnZ];P-_;3&F0)EAWs,C976PNr)778T4KQe.W2bYYP`u %oP%a[1@$BWP>XsX$5Yea7IiU28F@4/%'DSp`!b-U"`Vt%l$QrI_?Llr,O6IQZ?2cW#p_n[0"kXnaDGI)PEqI2$:2D7'?OE/aZsrb %-VX*sQUXH<1:8IM.AX-Nq\#"'aAsTW)Y6=K)M7m/]',pUmFf[EAM0:$VSAN-UIk&(7H?mq$LO-Q6G_#T#(:Sa+JG;e&a;[d2Fg<6 %CC$oH=Y=k\DAYY"a-n29i8I/8[1V+5*^9tqlR[VSdOi$qN7.0f %_$j`rqh>iQ0$+*t12LF-;gtIr0O@pBhGY#=MKaZX@J8;\U0QE+RmjL9HmNR0C8HDiV+Q)r9fEFC!6UT1_.:c+gb29QP,MKuHaI,k %$O'DtTe,S!XcVEltkYLfFoO#(ga;/dIiD"mFH&>N$+EUP9YH>(4;-Zt"2.4"/7gl:PTTjBVcK9e(tU8G<6/-E/[Tc5Qt80ffeA5;?`D %TJ(TfZWZG+>k3&bb1^+k2O[Dr'0S/F]ZO2+N+PaeIH_G[U&DJt!!84c.'4iU<:3D[+StVldRa,=j,AbINV]QlnJ"b5#$M$")r"VV %-(AripKs49`u)Ff+&!s56.R5e\S6pFG+-f_k@-Ff/+,F'Unb^=4sV5*TWWc3aW<;R-@s6Oe): %AL/KU%0WO,mte8Zp,e]XK-?jpo0]6"ME4]$F-krK<^KB6Zc9D'%,8"!Anr^@,a8%=$AFeWdb"C@fa;a&da-7d>+Cb,&B^*9\h]Nm %Uld'!4D@/L#8g\pB/-636G0:&n@4LHX?8%Fk;aE3&47j`cqhWH_rf %<^p/k*aYc?nO8]\d8.'O)8^ea`MB5&[r#0qLG4]N#j0dk>+A@fIg.$*p2.:u:iF)oRd"e\Q9e3,\\_d0JgaES\dj/^#UjXn9si %WsgYnol%@3W)47!_unaS4WIY88K((sKo8bJ-B$6))p>34$^W02kT'F4)-J8r<^+>H<_ZBIfuIU`'9)]< %n:V3o-bFG];*r_0UnXQ(K8Ss7A>@-tb^:lF=9!-:]Y;`g"=c+YA@C]\10j#0%[#!iNq2l0PK\R?)@@`(.>2b4;dM.I(+#cqX\9JQ %!_\-B]S%`3CbSZu"EK=ZAV!Znp+$`b',M&;`%=.U_aH9L:ngWfK`Z#$dP:HJg1M=jnt&/jp'[W]l=ClsnqH$qr,FopWl,nK(0\i!5/e8.EDt/UYZ03"(g7:Y,Yb"qb!4Z4&*0Z=Yi%Y8H*n5aXQA %iFtZ\HS![9n;SX)chO).F8DI\mUC)aUE.:W72ZVAVYhL183Dc1[85ii-Hh0E0O1DIL+mpg!&):jh_!jSnCGM_(M9Z;R %/`cRD.PF#BCN'`:=j5kVQP9_eO>V\7O[]uqOD0p6e$.JVX#1O%)m'Dk]r?s6E1R!PnPLhKlSV=Db2all:_k8:'F)Q!3/HZr]670B %8c20j3emnF(VT/.2h7*Jdm+[]200fpmhsfN+Y6fnD&6/F+C#o$0gR#T)ZUF7`Ydb[5ZfR89B.)kS`+aFh"]Q:$kl#A1Y.FlXhXDt %Lj2E8XB=aZE)-=jO_()F*l@P@)9LD>rf!q(_d3&n/K2\7Y`%^a@-:,XCoEmu>0@1f3T$bk5SBoN":G6hC-/2CZOVc'\8`/#Gch.n %AXGeU//50Ch!B.dWMN(;@"LbsVoV\/8?7K511QkLFi%E6KWB_>%G\cd[$ck&2-05\/gR.rf(P,U8^f+X?$u%/hPqasHN&9?Kmg8VB %dcD?e;h5 %-ELa`0[P\F@dc7IUbJXXn&D.`73m7IMG^e[2As8G"6SAE8W)54*`m>UieBg^$P:(Xn:&2gO-o\(kVnu4e5J&Y7R"*C*^)W'j-!/g %FR2\EdR81F!"oSF=cjF-ZQ\(b:aMe_38K!P$`$a'S!$'g3L_l^6Z_m@=4If`R.'O-(P<]4_AL=T-sarf"O]M1Ef1PZT1I>;ATWMN %:Es$c'%LitBUqR-)7GLXq@IQK@s:W(WD=)(Ydc\2do%Kd3F!,)1;W;7SYdci(f%$V-;15!J;jn-5sn&p_)p)En=>]8*B6Sq/OO@el.C8lL!lVddbq"4&oO)O_m(^8_D3O6TZ'fl26V7dK$+\GTjZ`*M!\M&:WS(u2ff %FZ'hNY>2mHU)Ec.#ddYh3!q=)_-O098E$LiYoGC@pdRj14`h!5I!YN0)j$eZg5Z'0JF7%;@M+%4OHC]!<(qLiUOkO24Y3VFer0n# %e%:qYf3PLs(YIR,reSWJ6i"Lc9*o[SfQur]2Bq"iZ9KPkZcCrUik*81LlfqPI]Jk)*r5tj^3f,UM#(13PJbC'f:GhC@!_PXW;uLl %DcQqLEP>QbE)6EE7H!H#Z:L%,*AV*_k/f?Z--0dWUaMgS<)^S04JF@9_D0aGJg3eXKe_J'?=ElSBFQ'j)qGt`OrMdg(]ZUu41L.m %g&oNQonP8o^<1n%M\rp#`b6,=r-$lt4W)R!V!qU]$UhgkBG`/q"$22&oVe(l_Je!]`f/LF<`h>B,:^m(:L32p*)TsGfnepF1N-B@iF3g,?U/QiXMBdDi[UFIL6aUh %p=]<.a"+!u-,lhL#.lfeo>4P?lfu)HAh(_`;kH?,FfX=JfuX*95rZhJubV#u)oK@I!XprfY?02O^Q3s1d4` %;QoaK8d^E)Io^Dd&*oe7Mp=NG\'P"Wl.d]`\WU;\l-5N#r)Rt?*j'ap<-GGnerS+Y5Gfo;Z.?#M0!$/!4t-X>lgbd#*f/-g@'m(Y %`'frA@cS&IL&7pmSoh%-710eKK9(G`G&$FDn.][.(&b.:eWYjbZ$Is9)Nd9]NHSl,!V)3[PY;l-Q %L[C]!YT'fL=c71f%]mT!?I=F;mtS`X>;oYh9*\dH08i>jXFaKa+ngqkoG1AKID7.a;g042(1Opsu#F %[GqlfEG)pUDZeQ[jk4D/`(beV[8lYBtO,>?>DW6@,Lo;o`dt#TYJ]6FR/3lr;`j15mf#G %aM(YZPgEC;C$pu/(0s*M6&annrb3!$oWjkO?u42Dqg/l!k7T4nMm4'f*.N#[Y1<-?WR=K!K4mM,9PfGMDhPD)V#t"pHeiGdgACP: %O'cUC:R]hkjlaE@3-s?0:*Wj0oB\7-b=_`/hV.G4)#_XY]).ZF>?gLSTCO<<5<.;TYoh3h3<%>'blc;;QafX[`N:l%Ya:jID;VQN %c,/ %lL0hXB150N\*01Qh!uN2;J#c*g(\nonrGN9<.?ar2X"jDHs>63rCALn9I#"Y@`Cd %,#-uW9_?h>cKi\=nC_gTN`(s`':[%\k4/C\jM:MK#N/[PL1#I^E#ck?o:OYtra!D2^V],AC_BscUI^F+,nje/`7XS^*97cCa5f@T %(d#I@Ss+iUV"0SAa\Id8=1gqq+)Zp/N#`!Vr+DN#s%['ZR2A"4`f<8L7^d$Je<:Pra1kS5r`9puMT_QdpCi(t`9-SWT'$cVa5g?p %fK?ke^a&j+]_<)/a&OdTj@( %;0-4:QrlKMq8`K`9&d.`Vp#'nXYU[_8POl0m\43.6.^&f,&8Cb_dp0`dXGt'O`BEa2IK;".\Wi_oLh?T,9c+41>+6E:cm6+91CJ&uRtL&t'S##%mYV5^`Ml %/K`BYnhICsHq1DrTD0Ro5\keo"Q(CJ:J;ipU5]$=0R`^C_HOE>X8YhOIUW;F(dS'TL\o!i1-+,;#*AERi^7$,OZC %D?$gRi5bRHJ(TVR@q,H4?4o!riREp99#SG!/%S%GQl5?G4Jr%klBk3(,!KkM %EI?3YO""BjZ`t;m#qeuBpjmrJ!Y`NI#M;LU><;W3X2m0*dHY#i14)=1dO6e5XWc96L4hLWM(IU.L*]pYZ;0enS&C)QHG0"G52IZA %m=2PN,`Xu/p'r%>2W:fs4l?!JaYPh;gAp5V`5K%]6Q&,f'rGiWbXpgTLXu&J@i:8mRe2J=qS\me@a6m(?A>pfPNM5b;*l7`KuW+UFeVb"KjKNI]E[/br'@R %:t]RWWkJ8s9)YtmYE++lUU/kQkaXTGEn=;kg6hW-,=fSqc/P_)Kl9g*kh170BPk*qo#^gKa6hd2^#%*tX0)?oZ(A9(FWZUmAY[ir %/a]KcXEAhoBqI5Xn6^K>dp?=[ZobC9V[FsPV"[$5l`jZ2TFFu1h1f6^8Vs1VR,'5U4`b%*DOnnO1GRutGdqR=Y3re!1D0Zd_&Mnd %Alk,pHohK"Wm)`.:T\`m-`(VmS9M*/U=;7-h-AZteDl9r0uJpi#g87D(%` %Dtg<'UB0WKUtQZ1a'Q*[5Oa]ZmEY`;I*DT5:>GTH[!LHmI68Uk>1b4+nd.M_&i(6L4s%3p^%=;??#As^FaEsj(F9YcG+Z6J)]`"l %d5ihFV0KQ=QM?1JbahYL7VqG]c1oW/qcE3hPjr".5@S*YG,L'fV`&:D^D)G->g5V];j\<:J4d)gGH;Qo`BrA/4@CEXs-.XJ7(MJBHX;0h;A/5_9+5(R1EFSn88--_9^0@nK9=bn/ckg`65k9(+USaLl(]1Yn45[`cn47Kj*gMB<,C_A3KGQDk`lMd".aAW)1fRe-Gt[Tq3eo %+#X"qhd'/o>^o``c<6i9jGg8Ta:]#Xrd4kI[foWK5,0CU %^J+HQ[P3S9^4iXi*5a2*BVcGA)/ZUZN4t&Lbmh($Tt+T<2'5\46k% %J!WTXS^#]VnA"iF(?[9*V5ec*@'HVRgn?5.OGgan,PCqP>-%)C9>,L?/q])=1K[l=1?cBIOfNd'V@D-!qpNa_5u0[Jg27n=E%bPm %ic3<:qn5nr3_?BZH.qQ705fiYmBKBeZqjGeBI)EEn:cM&nNnU1G<_GDNd5^(C&-*P_Q,kd:50gO_e[7$j6nf=D&a=pHJ/>OZ/aDA %;*^LC;YNE7BYAMl>3ouMa_8(mYaWPcimDN2@'p9j`\bsNKi12ac-4nK3arq-*2C%R9^a %1Y.o1(A\:5YgH>a;N@91^m@5p-:Z""j.=O(L99[rG;^I>,HlM6:XchpE_6*E@a[j]ei %2O3fugC_cdLhh,]S8:T(k6EZ)g;c&*Gk.cWhiINc9t]Wg6Q9f23(df6lIFa(VdR'0qOotV\*IuT\:*biXlX;u`BUK8Q8\FAr[)Q) %IgbsC)o$Tsa6rE"SCXsc+^cBa9:ZQA8K1p8M_-p#-T]U)mFpg04-mTfJ?BhJ/#;#/mb)b'0M<-7rr[,b2m]lpfi?`J+- %9kb-T^=0WiGB;5aCR$@9B5_X/gWaK:mOC8G:I4D]<^(9/iG5(Z8r&u2l%r@sI?b[%GZK$dj/ZqHSW8^0UK6G&hgONA6_7*B7XjPK %B/eNt*D0_uV#28V,[!1LJH@ANb_OKf=3iR;fXkN6H"`@MUlH6Y*/,I/2iJ\I3G@B=?F(SfD2EJ>ah6u%;s0l'5h/Dqc %H];X4pNo)LqFXgJ?TstPhW[UG^"PM0Fa@A.UOAOKgKf=Odfn$H0Jn'8J7?'SUNq\<3% %r^*a@k=0O-;]f3:fjF:LHG?*9i65GEFa&>9G.R9_&S/4TXSQ-Y?gTE5Sl)\V0*Z8bGMq(;FEC]<#J+SVR^d&)0/G@dbputbJ$`R0 %%A*U^&q+hZ_sMs,lPKoS4SDfGIBd+`B/G&$\]f\QPtbMQT&IruEblb0;$5Q#He %8H6_R>g!OfQW[UJb2_h8K552-hL&;iXgDlHIJ(nGPqN(tDUmi+fA!]J'A?NmDR%%ojlaLVQ1H-'aD/WbF %+?+SR:OC>UX'Y'(q:7^Dnk!H!C]@H(SA=Qn%toYq;KE`prUR<&K3i9*r`d(87slVs@[Ur]4rI]Y\eg=>ke]h.iRPq6soVa+Zb@#dT61[d3pnqT3HXRkN?< %r&'6u%;i=XeC;9qV575)5@:6VMaQ(`!n/A]0]$bPYaG9`V8qb%8W+8#\eWF_7;(a_EFt*Wc`1I'S5\Uho"_mSD=URdF7bcuXaN(T %%iN7i%-[6nr7@dAN]]^>oC,*`%tQ13DJWX&%&EIIK.pL'KeCToi[udBPuPBf?qL$0*A)R%io.IVnI;/QL@"AMI48[O*N*kS\JG\` %,J.3^fBkG.pZ7B>_fadm1ZuLoO(nRlpY:RJ)i(Q4-1.=%OV>@),3)gIPZMZC1n++/^W_#SmTuZ4>Wk*^Wmp8AD2N>@CX(.@Xka%0 %(S7;fq).b2H;EHUB@cJ:caGpff[U?nmj]Bg;^d:jp>&BZ[%Bf!YRS2/^s>WnYl[L'tT[R8#nc)l1kBBO=T<;ZPBT:mKJj?FA6FDo\X4*omR8Rk?fE"tJe+`$O[a%Z*j./fk]"bj*7!c;Aei %eX*5i5M.Tk>A3[UC):);mdM([j(Z!j,XP+@kNq2\O=m0k(-PR,:Z %4M8ncjm)*PeJFOl%9($5BFngkZ*W?P%dnQtDO+BV'A:"\SF3fFfhh8RQQ&YESQ#GmajN(1W\3PK-t\%:8i3Riiil%m*XL&S0Mj]$LO&23?eYXFO024/*rn"X6#qZKAGSNDdYT,:Kt5" %*=/`PD7),m<+!NaWHHT;m*>8&.\1iJ]/a)A;r;Z]G.$KCcOVh$DdI7-\68[Q^H_tAePOU&`i0o[%[>%(B%rj%nS>A,/7fPh"3/B" %K!(*c:WAh*]X)?iNEjhUN?L*KGGa>-loVSscq?"Zh@`) %Nm""Bo^/aB^uSA;$u^b+kt-6jZ-t'm@r9kfe_fZ[pNafC\+S;$dNc67^?VIgR:1\GlL$]f-#gDhTD1GbMg)(SYbB?HIiU=n+5rDp=ecb %9)-T!jY+jtDl0C5%_O09@peq&S0#W'0Ah7]g8`A7TDd/H]t5@&miANY>eJg^4heUMBDQ^ek2HioBYe_b)P"gQ29aIqqFoLI@dXmW^lhcj7_cSqIfW0n`HikVt%s6G8m0Gln:;q+5A8gDLXWO>2R!l(%&cH3C<1e^BqRO]8askQtH[@_?Olej9/J,$skYfbJ&\+fLS %OT3%CJ*ij,le\,]Vc(3KBD#>ORD7cHG"_S3GPhCRk@c^TW8oD;mdJ)X/a%c$O0Glp8()dm7n?D17[A6JQR %o#`S?HDTJH&DD@%95SBYjid%VK=Rme=0'jj^F\-Qf.ZSU>1pU([.Uu\>MAkKp2"Hd&)?M)`?0<,\S(WnXhOc,_.c)$Z>'W1l)1=-G47/;cc..6&VgE:Rk3`&tk245giQYBas<\'n-j6TNfhij`X],SQ); %9hisk?9"KY>A9O;mn%WQrP++o6f)nAm^3ko[sC7lD*@-SNXk0t9GYW2S+sI`T2;uXcEXRZNMYTR3dm:Ef4M1XgoPn3YMQDLH1u3Y %e2s3_?@?XNWO;B%H#H#<*^WV6+Ct_o;#Fa47TJjQ5-ql$KnQeIVIpS?1R]5PNd4 %gUhC[S=c[Z[A0qWZO_#-1okXN?[mQ8h&VOa2jRc-:Mpp5]rXDJlgjAqnV!TWBA8F %mS?Of4sMpfL7cXK'J"Qm5OIUErt9fei7%K,.O\Me="W5YYJj@ajd!UXmUR&4m^Y+kePWQ6IqfjdT(h+e?buI@?a5tWrdOjb4KG,4 %)f-/Ai;2HiZQr722l4E*'Ll^CAb1:Ps!rK9n.;;8j$(VX3b!?ok29Y7X8d'\KB"dJ*"2+5s!M0=J,*Nf%9(`.F*W8jOumk[UriO9hCJD8s/2s'Ym]S)b6!s\o3V*Vb4(jb^772c$dquA %S8:/#qL(ip(ZP^BBW"U"knbg#l[ADgF %QRC8b#!6pr$Gt;7dXL2pX5uDJiQBUS?c1l)Q?VXfY?IF!QSs2OO&p8'cclmt[CN`5:7l&h`N,JVj\%f,q#/dqV&,EY%EL4Q>oaFa %N71$8Kama_+Df!f[F_UJiX\gkXZYk'qK:R$QD-kk+"od*o?tb&g9T>Z7h<3bl5^Ws[.3)0ReaH9^#ZYOtXfUZNk3S8SpiHH@QY/,@e/o+c0B;$J] %.2CJ'b<#*1J;m&nVciZRs$>nad*VE`rj:ZG["!GifA6>gb/9eF^o?@p^?7]hT+/R/j\Ig"$n3X2``BFlrq^Zsi:ZJmm[RTfnSdj! %apt5EME;rGKBq""lUPUTX*F$\a'70H#kpulg< %_cqW%GLG**LM[P#]-B6fQ-UP$\pO>R_qj-bAUU(k1H>8Rq<6LK-e`JYo_7]X=B[m?+8H:/p&C*m!kc/Ba%[)2aE*=6]=t\jBmaF) %IFV[?8a1M?l^l>7]_u6MqDJ/cR4P]@6n!t-o_IN;)LJ:DP$fRqN+;bhB0dN,@U/"`j0 %'jKMEh%R-(3('E0W8*0Yj*]@D"9rH7Dp;'l^`oK"dZJA`4fd1i\:p_XB^OJE(/mVi; %$gX8umbU8tY^6o:8m]-?d@=QJM;J';n*bY:2>YrT`T74b(G-u<#T)SC,YrMmJUqj'AngfXMtLS\O2\b7m`]_gi,A,bE6hVmJM %[qiraab_U\Hb)-nbo?Q:SK7T`mk3DO>18s\H?udWk3q.(9)[hi3lMDPD*>Od14SEMf!D"GT9$INlW`eOHgo5DY1NN[Ej2rl0K$Oi %Vu>t(.9]u&^KTB*hAd/pe1u;/IH1mfo]N_GpO%=%COHfL0J/>Drnbk.Vjs>2D7l>7Gdm2l3H-eRk*DL'Jp8NldDDDX1$c<=JF_[l %g@"n%\`&VGpV.c]8O!&dn`tg2^&J>]e`fu;GB,ZY*c9f^1,m0I*o$PQCO'coS_b@_PM'/im.XkLhlg_aoC?qnfK4'Pj0JBS@S@i[q3jTI"gtglFq`7pB?$XC^hq_D8eEtZ3ek4ID2j8$6kMQ*h=M4OjAWmd.3+59W&cE@N[C>V\VHJ2QoP/13 %lfd'4eu^bESokkJ;sN21>5P %mGRrkf%0Md"r>C7a8'N&eOl[]@U0K&m,s-[(Wm].4 %lcrN`SiJB=C\trqik>4:DqnXOCjFXQ]V<,fFJJS@3SaH+oqR3OiJgM'<5lM$\'3'F^fQO;5BlD5C:h"Els^pCi=jj)?$E(%RSsgT %V>XKN29AY?f5C"moTl*:R/Oll(S3hJ?eIY=mhC0cY%9EWP^d[pfKXlI&8qOE3@aCFgj:1Lmd93)0.R:lPNL$EXi>IorbL]Rg/>9M %1X2U\lc%+4>^:Oc=6;]J4FMNo:.-u>j^rdTeJuf7h-G@"F#K_1B&(MC2.m`VQL6E\l'#fBEO@eiErImSDS!+Kp^1Zum)met5?HWS %3OjY.h)XRZqUL&J]`@Z^Ig?biBHD^jPU<`sJCpLs)'H1pCQYFs>:LG0KnE0XIVd62[?BITHSI_@ekh><"\`!d0Bf=gd91Z10/H0

    c_:m,^LM:ak\Q3'd\;!4)QT"S5%RaOn %mE^R2a$1qY$BiisUQ_n7Y3b%!r5tMe?8\=(q-miJoCTFTHD*`tQ,gq)Y.M-.O'N-_G4!moe*5Nu^l,i!?F^Yp[_I9.r,cR,7?Y+B %C9)^K8*(-DD-_Y_EOGZ/j.D[!DdP/&d+K8Ge8.toVB2@Sh<*! %a(a62SX`]?B+fE?cE9'l^O4^:>^=!^ZFBDcs0(h%f2L:d^9<'6TS*<=\`&]<$8i.SUlZ&m/'1Bb$0CMls79Ro2j0YH/6`>PZd2bb %O_p(7)NA>uqJ"CB3naeofCt8J^Ui=T1oa8NpL>Q3K.0p_Zc6e(bCVUqfMUWCa^&fYD!_O0aHph:<6#6m$+GE9fQ>@CUG$#J]X6:O %++)K5o:tf7A5'?gdr.fTg?S,=l6"8lSI\<[o*uOkRrn>Ll;'a<*)GkLRaiO@OuI#Qe^L2Hp&$'sd>5G14.Mt22_ACC"8.oi,j?9>@)<4\^P[?'=*Z74B$ %[G*qC2(LeG?b(\)Io/^O;g2gWRl:''0YNs^t6*j2Hp&X6cC3KqqJ:eA55a6S9erK=_HD2:jCqQ,4FJfu9YJ[#PC+;Hk-OYaocWs`,C?)ur56]Z^OLFsP#+r_P]^'` %f#o1Gp!qg+61rRn+cA]XT(-S`eaKIc3o"UH$U9]aLUS/O*dr,5+B"V854n*U[0qfTMjH7`TPG@P:GiGq^3m'lfU_qTeDrr0mg:=6-OoYp&FbeK35kchr=XjpJlXWRF" %;B`KK?-2ZRa.(l0GA`++J.CU. %:O^Zq\oG)l,U,oG.>l---S3BKCo"J$UuJab2c-4SJMbk`F5q#W)CW')HJpB26qu&4Ya1j\&TeKogAZaY33<\j)%piWlTrFs-YE,$\ %>1tkFoLhkF6EnKOPCQT7Au#%h6+8`\-:S7LV?4R8"D;f%8HN8feliKK"c!bZ %QA(FmCFj$PP)]0gVQaF?iJf_ee+-ph[Aagq`=-#R$q"([rodDaJ+S.cPU7L+U[HHh"Y'(\o#7tk3'A6TcI"WI5g%;(XLhmL]i"?i %6"gJ3@2Nfb+E2nf,OrLtqZLPBI^rTCjYLlT+I6W:3N+EL%BOXN]2 %@oR:!6KSG;Kd]bbnSi*]t-.e*ppj2-l3%reu&Te.?n-?Wd*bu5O_Z#h<7r7?ZagWL^6Z^I<(@G0CPib %qh$B4DSWDEV`"N`QpU+nIr+Ztj61USM/kotfG$&>rA+6E@5M389^GONmJ#jhDp\IXo##u>7'l99js/R]bf$&"[=b[$JQB;KpT?^V %s0+D8>j-QMeniU:S%rW?d$dmDat)nc"J8F=fA\h!mD20UQ9=]j#R/nCM>h3eb6,W!p3_/fkb$!hY=EBkO.bO&uor)6ll.+ %"Dq_204I4PCKl"Eq.ink4>Z7Z5R@+S=-g(ZmDO]TC^`!1VZ"\M='SG1i15lFUt6;4'C?kqFta!YSb\L.89i47lO,8Z(DQ/C;8r)8 %h$?9jNF)PI%STjj`iNZbB<$$MIm>U:dm>1EU%p6kHU=$C@a).>d^,+m^?QHD@eM4>h0tuPka*E/Sumq%K/;g0I]su5[jQOQ5?d*R %R5j*hZ&I>jMWKbqo11X&/UqZX1<6k-/GK,EO.Q@c@bL#B74`Y);iTnL,Cq@_FjcY).9=Q\8Rl1V"HBI29%t`> %AT:K\!'F$I\M4,;P"X>W#@$h`J\FB':9hf@9%HDb'+g>.)6f63F15t,$=b?"1Lk%!lV>u% %oR?FOFFWFI[%TUJf(U6oSjXZ%Na%XAMl]WPr]"^>]npXHd\AOh*-i2\jmT%UYeF]_N?iAHj&GFp:E`nf:Noa.RQ"(mF._8&hRn1R %YC(56GbOfSLB^9EH'9Vt7e&_gRP&"_LH6lSjo9kCMI>AcZ8U*,B-RWD0+6'C]7jVB&0R2sh" %8%e`Y1I+nXcA5AVgG=YWVG]%@V:,+eO%n,iA=`)9ki$s:V@_SJb"@)9pE]UFrHq?bg5I:Y`:V'_G@*:=&*(TTs4j+-=X@#G?28A` %&^>3@Xd2-dI3UnFGFZNc5j,Q9Z`p7Qcb5&Mci^G\ejQ[6dF\6$&7.PD<<1sokEfJlGPrI(p\!uZ\Pn#,Z8\,d%8`[;h %U7H\c`Sg,nC!0n&mJaH[+F:ZA[?Ne7Lp":E7ZueVZTj]#]6OFu.R.hHD;F#k.7E9No(cI=U_0_L7r&VR-AqP5SUK>o?/PH>3^39` %HEiSFWC.9o(F&$2'PW$\0$dfcA`@$E*QJ\[rStNE9\P]o!PR,K\WQhDMgD_k0YAU+J*F=l7ofng=3S&GI@U3Z4'n %H>:AG'F*HcE7`j"*q3I7t?W0=-**gF9he.7EW)mU?$YpEk4apZMEA;ahL"TRt9LmH4^R#*4o`fbfEVkE;lo %HlmSGspM^'*TkA/6)N@f2VTN,<+$?E-9>H3n_fiH5aEa %hIUf'HQ@RmWZ?&C?1,9?)#NOZ9#3Q+;t'nbkqB[lDY&5g_AF>V_=%o)j_Lq/>% %97PQQQ"GCAXPdQ+I+Wpd7h#9ghgLZYNG;e&4q?2D:HN4epD*)[44ejT:@4r8RNGLIFd;MTN598;@^bT@?ZA5oshn+puMds*>GD4T%([BIMG-ERFTCu%ZCtMNh*0V$`nX!RGo!R1VD/N[?or!:;^RFKCbNt!uSGqL- %lSBNmllB=>]UnFmY+#;/;4h/BHc6j#l$[]&bN,&2oB520Z9j!9GB3Q/Ud"ai')'W;V_]=iriDG.BjX5kc8J;EV[%fQ^7fU!q(h/> %ZtNgM``Dj&f;MJ\]19Oup$%%3*TuZ,gPlLiRJJ(s1Z!\17kEn0agqWAdoDjL-plNi,LpO(<:I&"35g,dItqAfDQLHS[5Lai,g %i#BuOjQR43U3NID;W,UP9L6)+=+T5#9oE>Ppp&AmJ9Hh%7apNehP"gWnOV(TM`i'f;)s4*S3(Y`;Wj?<'GchG]ZV?@qhdNW.T*S6 %^!MSLP!l,Sn<"$_lLE^761f;B2.70;f"XXQFKlWbs&Mo7?Oifu%ea4#Z47(W#umYOqPOl.Ih8^]8"1q!`R39B.T'UC=J?Htej#F5 %,`1mfGON7``X7/_>:D%!CfAtSdG/r-75dTh0rfZH,`dEm"-KS<^4*E$pGi*mOE7&bVO[F0XPKBL^/oV>jNc*fHdLsQ>shiA9\nn( %2r`+C&YLT)V^"R>XBt8'Apj+nZ(A<%.K?2NgP3%pFHZ(\Q[^c[5?X_e2Y5H8@-u4gS.O_H;%8dmXeRXapf94-<\YGia!1UbN %!R%p)p-@fLIe8t3d3hb;Hc>`.2/3#1:0Pk2bj<8o\Vd=BaR256C`>)TB_(76'W`L2G.M:+8%74^F\MGcFOeJu/)gaBjpk#*,lS#T %jL*H0nnQ[P[dRrFfqbN[$:OV:-`"12,*(dm#@a!O[X=J1*1?R+SA@u7F %0T1AWL0-W^c[q9^5*bYRH[kA2WZj"RDDGuP+%ihT\T4dm\n!\dJ&??aPODo7g_u?g0^"/'>OB4umh%UeS>mqmX*Ph&:=UReA'LNrj**cb&7,hl8t:<5'P-3cp)_W@Zt7j/3l"gCPQ66#ok/p'`A+9C'UJGAHVdABu*s*3'"=67'm?rA^^'a=h2p!dlP%W %od?*F)(TNH88O@U-p'L9YDjYTN)fOuWoHX5\hGkkN:tG&c.l$lb>KT'ApbPR-dD/3PLnT>D)h3q#IBGFp;6.EUri<2Ffdbd2ql/Y %dQs)\#+[brOX/ZeJsYqA=9R=TNY*6VI1;)Gj4?9h[]@h&H%F*j"q9mN=ijX2F$U,e/oug"W3#%J`.[A#C"4fZZ)>t^3Teh)+ku\M %N5Ib.UD_*p;BF.u*BWt%TKQ"&B96`PH7mR]hT^Bu5`ZK][eHknCr_l#/,*q1=2Hu?qL7eT82ek]8^$6*o#/FeV\0.`^_2V%fJ&o^K/,adrQU?n1/+GUF".0f[R='^@?U7iQ<=s<^9%B;rI'"l;@G+;YVFsB.g3mKgm5Snlhe;T2YF5>+]Qtu?[EVK %CsClt$g6dL:jd;FrHFB(5)gR55A%/rEN7cG]d-uda=6ObQ8QYO(ZL>G=`dF."4S.M'_h72K;2'^[;iV\M-hgm^`AS\\&L'Hl\^dO %+#kisMGkK7P(g%N'?M*ics`(>F=uO.28!@C8a`Gq9V'At*8q?gK3nY'#bP(a)(kQeEil=*\5+C7(T%!m5b#BVL#P:P/]"\UQR\ZH %CCk]#-:oQVVBaOYj"RLIbWMmgHDMU!9SOH%#kg$HcJ(JNE*&8Zk=*$K5IN %Z[KQun654L];!MROAHfHhWbhmeNF:D]G4E^@e+gA9/('(ab;Z&n>Q.9GnK1bS;q-ieeibnH9I235eRrVS$ZrcF`Njq_QSRn7A"^W9\ILLE1e_jO %Co0A'(*&*\H58^HJSUr=e?5A:i-Lo_mYp+9O50qDfeR$eqH=1'b9H8h\JdeKIM)IK&CPIoI(Z](GB;"Ibp$U5eCF%LP^W!BK12%W %DVs@OHEDm0="uOHiBpeTWu.jL&c8/u`EEZ4?c?tI*qm9K/XH-'WJ>URoNr!2L:R=iGVsTEKhq,b@S?qtQZ=&Pko\5m=N4P/3':ao %_k>]b:EuJT+^(4CfR:BB=X7&8MXs2HMp?47>on(As/`U=a-b(VF!M>4RR[Kj=^[]]5.d^-i9++f-Z[1FSBfY1W^PdO4b;)*]eEFn %q3bfn;CF/.\OQ,`Tk+9E.iB[8DnNa3[SRian&C7YYTB`ub/BR)_q$Re,eu,\S;BNlK8<"fWPB4#eLRCgp5\V# %>?rEsB)J7";2c,B1V&GZ=eE;!H<)X=%6Qc]@gk%pDYt9n&'gbU\ZL.C&jtiCTHhj9MdYcH&TeM`DZL9;5D%13(0gi,kDu;-5mrFad.npM0NrE%(cq]k$uGUR(qQ,llTig"T#H9u3e%8Q[`o9$k)N=A`jn:U>Sf %qLABD5sZ4J*hQeNro^NBgGVe[.1#90pJ:`H*!gCao0!NAE(tu?OI?R%i'7XU %lIJ<_]m*T+gtnVn5=-4p@Z%F/7uXCa@,E#mjgCFlfjh@^Z_5+mVu#E\PJFYoSqgq@fWf0fbq:IQN3JQ%33YZSM]'Po%6=S5!lrn# %_S7?95q=uQN=LR12l105^o+Wt'=:6rGX41NitlqET(s):CVq%+oGg(r*1o8!_Sl3UKCa1GWbcATd?2-65sqN&W@V02ffA1'YV+#% %5aWsH-Z+i$(WW%s?X`E#PBS'iC:Xo+HQ]lOCtY5Dn#W!i:%`Sr\>;Drc;b%EK$UrJ7J<\>=a9#T5L7'M]?0!t=WUq#ZhN$]G4oSa %\BcSK;+8j^-nrrtXVu"P\[b2nM$mWs9U!JC=s/W*E0)7&)j3[h1l;r*,PHR'\OZ_ER:48PGKBg,PK8]0j^Uf`O(XLDVlLI8Q4l>) %1eI\Y+"k4di@=)X;?/t"7dJD5;%q:+Hk(L>T680.o:9WWrS7u#hP%jRga@p?k0nZBU`n`<-0QNa1*YalOopaRN=s*]5CAp\SBSgM %Qk,f7egC3b:(IQJq)-9BG=TIas4&8abD=4Zi/#U/VprKp?=AZ2(jgW2n=5d:_WiD=^PcB@W)U!oEYtRA@c=/>_gR$RrK/!(1&q:CXF-6Q`bPG@V3C+\Lg3Pg<9J6b^ %D9`7MjSFH.AG#(`#l*&rd03=Q?kBInoV'sk'<2mNa*:q:(KX*l7t$K9_*QF8hb0u*fh9t`^.7ikBC@$5AW."fM0Z!>9NhoI%T-BK %R6#g[>kn3:k/"r\SUs'(?8`jB!LuRa4Ik:8e`GcK:t0g-)9@>`o=,Bs$K@Kr&*Gn]AU]hH2BL.ln#28&>;dNTnrr[p)'rF#tV4eP70Wfi.Em* %!nYg%@^G6gM-Ms''@3Z8[@%]SWS`5WE(rZ6[--RdO_JK]O,0aOU=0Z'o=\2E992rJ@HWDg)Z!RrLu71h78H3Rc>CA,SoE/6Jk(QA %Q3)`@(>2`n^j>3G!`O!cU)gS3]b3[jmXI<^@j022n(a=*627c-38D\eq!/h!7!*a:N:%\MqY4jgSE.%KJ1/0,'VJ)&Jo %0n8(DKO;7i'TThY#_V+8'.BA@<8g&l_Kj2B)#^e$T4(9j!qQ>$5N(!PorKXdNUT\iXAT=CMc^L9TrL^Y&OhES19-:^ZX$*@B',98 %YaZ"')SO%uL#[A=0;rop--rG$$uU7KlL(Y'iOB[/1HOg+4P96AAW=lYd5/cBVmn:M]JmR-\kgkpla0^E3b*p*&/2CBRKn(2H&p-DGHsYa]b+hQemM\fbDNZldq[0=Zg!oC6[Fdh$\C,4R0ZmqH1=4$V6J[m.`I %fPXWEY."2qY;Du%s*T3,2fte%j1>M\]dj2)j,$7tb_`RAUC%[ckV`?NaS@mWHQ-;[ktqW)S'l_CWCA=XWkW0tSLrO4&3VqbUiLn[ %j^(d^@`JmIDOhPZG+eTKYt&oI3a<0%-hr@p4).+.A+e$l,[t-)Vboa8;hNA@khbV\1Wap=*V$XjP, %$urF'.#FJ_\NY1^$:l@2m@RJ:\"I7VXSiOP28IH.TKFI%]@7V;+3-QP)LZoU,3j/Lec^*oOktB1FS!I[_P6;-quAMhkOQuAN;(4@ %Lo0d$$+faAcn2)>d<&^7BdC6*1nE7nH(9Um&5D>j.PRdi>\H0eD7Nn.*BV:W %6.pa$QQcHneYp6dp\lYdV?7J1kEG:$GDhG\U[uBdA]?Z$`K]L;0VX@?ZZ)?p_hR\WFLQ4X4!"26OQ_^AoB>@V$27\]gR#SQ+L:#Y %%[V?,l0$DO\`_!'5hEG"XR\s=jZs4c[%rj;`$\=2]Z,7-.a:NQoTg,G#ZXqbjb))?%:P:>p %V=rU.DCF4f:ZM(o:10FK1_^3q^j0n]dnik@i;#+idnijYgPKhJK?[Nm/Hts[pf7[C.-P^m\2!i=oe>KNor<^*flaQY)2N'r6*bh] %KnHYs\2#C=/M.3\)d%GAQj)&I%$l)f+KB6,M2\]u6#0Vf)7aof=kWLXARN5R^GFATZWk!HM)Td5g=I"9SY>J45F6sqZ#2`8Db8/R %eXA*@K-Fm08M'XuGr"1Nja0EVm_WVHA%gD4Tq<)*f&$G\Ae*(4 %AHp^PA\htRKZ2a098gfN&AIYT'+Q&NSh"'l*-u\gNX/V1;Xg2H*1JSs=:ZD[lN/e0K!(NWl12^LgV#jGjK9n/&@n3C %\=O0I#_ojTRJ2[Q`l%pf8o6`&4],Z'@t??p3uJSk[B$UQKaM'NQ3?XW=ENKr=[u)@/-#?&^;!B#U/*Zb0B6dQWFn"hROta$ZlIAkmD4'0><4^,#9R4T;0s8Im[#SQKTUpcj %Y0\G+e?^7:eVF4!JS6LhoM!^E+l8YlmHQ'+fde+K5XmEn@#CiA,KdhIubuc9$0S$\l^(dBJ+@@RW<'4O??K/")+h;Cn %T9]V3W"YUX:+<5e*^S2-Em1>gn%QGj7ZrSDm[S>.(gbgRr?L!B\9U[i.OUD-EV8"F_7C4u:Hh/c.l*Z/j",39724p5;k"81V46\Z %?QR&$.lu']mBZ.>f`bnfd."*9@P%8m6.P/rD?sqH.=d`E35W9fA$Yq#el@60u3cm0G=b+:VQm69nW&rVUP7+&3!`!Fo %>`,c-PAAVtD#^T828\1'cE]uTd`a-lpO$C]HDjbGOec?Zk],U$9`f0'5Gr)"BBF$393p*9bA5DJle61#PkePjW-b/qlK`s;lsjm8 %QT'*Y0t):1pgiFUSGT#]P/2pp?H`0i.9joW/?Dcqk,fD;a1B4T\@M^Cak/p[i+f3NAq]NC9I14*)mNs"G`+*/JAn^q="GI2XSGH?DFf/[$sNq3L2lu5-PC/dXuSN/t)WK+jM,F$tZWN@-9k$U.kfh=Sf"k'^P,FLl,XL(gu*"Yhb %iEon1I^.ouCY[;_ii'Sr>><>qOANa='a?'6H-_`d'JLr3EPVA&47BA4@%\"90Y$ZlHY/ZP;-?^2SWk(!lVj3e'+ %(dQ$Eq,)Z#5Q180'4Vam"iuQ%[!^rF:k4cWc!UOnrCXadZb9O).3En+[RHAM&UjHcPOcsd(&jDmHpJY'QBRP/a,Kd4.#TJ7M^1He %_PJXAS'@#l?R4a.k=8ij;EguUQ&?pL,GPUE;)5OV#)e)+_=XgXMr+tdY`-2f)"[SYh$pc2?9b0"9=PpuQIdeF3Mh#mqY=dsS*Or? %O1]r@;'BjR4FCI"DrL<$)etDGI_h2[N4aW=-UXuVeUi)FJrj51$L%=uont(_"a$_hrVX:iMI"Gsf?_j+RB1jYA,u/Dlf[.KY7mr- %jRr+t,Pp52cH[8=Uo``bcu\:@o=t+Eg(RgIYFk8M=2Cri'(YnpLP8+O5in3]cem:G49[l'.7%!:C"ShCSUs>I]cbn6XZMK^:)7Tk@qRNIHkKN5S\?d\B4GC-4q?>kbQ]ftH5HCD&aU@8(o071g+As#ulY#7e]O]E4cdgfr %rVROh/_DB1p%+Sej%jYdq=rP=CLPN/(Q_CP3?R-FH2XgJ4JttW1ri9r59JZJi+^qpfXu\4Q9;bK?l=7gBP[CnlqZPfpal\khV:[2 %RYF+RrVZDZSYlbUcg0cT[bG#V2]lD:6Q5TEHqThj<`ZuSoC9)9R"B3oQp%J^/esutOh+Y$5=]+.-EEc!(g9&*T*:MNb:C/C?9`oq %LE^6%oD88qoiq4B-6o_OK!@MZ]RC:!f-TMNo?Z\<3Zm6a-sW+ISB^@Y58^!5l:4ZR.'MNE.%/iMg9:8*0[NQQF)&06]XD3-mffQbOTK %Zcfaur]?=tqq^;$Do]JHhs$^P]C3IknEY?I=].2IX%+PPkG@(^cisH;qX.*#;#K;QCs(n""r7DSKKtak-"Krc.2s.c(-2 %EkRs)Wdj'ro>AoIYK`PFIlfggI8YNXURcs`*4nDk:9B?:L7J0_\%eQ'^*i?EiI-43R/7`T=h\]Z>f@''a.8Uep3W(\'N7(uIID-9 %X8dH*i#;1Oq.TE%V+5%gH@MH0P^DFgn*\[l>.1bA`VajECh[l&p@bsT)W)'&Z8jM1A#j6bL]_"qESGffG$iODO@*l]J402YVpBa2 %D0Mn#i5I7k%-[+i'oe-]&u5.8,9#%e<<"dpFk\OP$qA54WZ\uL'47rJ=+hh^0YsHfC$nJP7d&<^"rNO@gT@s>8T(C)MZ*M&U!mQP %ED7P=g1c6@c.VVfU2-FQ]_Gd&b!Y4e7R!uf`cm<(c%DSHpiW@7,sG+?f/qt:Y\d3SHsPR`ml'90&*g_%2659V %B;YLkVh1S#S]@:\R.^opc5NQOc#aMWY4/FfCF;V?pQbt"&3 %rCGSQ^"bLflkf$oil]9qY5."/[iRXMChmjhfk!'Q[-fk&3T:XFD:I$b=V%$)K:^q4;4fY]_tYl5^rABqrtMpqA+8[GNa;Am%`(D5 %4bm?H"7Nk:B1.'.(0$Ef;h:>a^q8'Z,(`>IJAam;05$fM%s9=WgQ9k),^qc'E"3atp8/^?ff2@@`r2h\)AWtYHB(K,^jbp)g[&?u7.og`@=Ph2mgZZI>/GK$_Jf__"]AdTW %GBD;mXo0S9`8XkT)PSOd\;E>=[e@[*gDCqpl)u7'$"8lJedOE7T73K?;L'P?*3MW`^92TuG>YjNBq8iS_=bO)$&-5fbr)%+$N:=] %r*:*2"Vcrm:%Hqm^q'`<.Q<);CE-rF]g,CWhX4Q]T/3;VM4lAVTHg6hcC*+3.@s;\+u),!V2%KR")!(qsmiq`]LE' %X&Ij*=Y1*KKY`Geig&=ZI!.^$/YsuU'[cYStOOH9GtD_=cib %U8s0@S'tZV$E2l-m9ifOb7J.$hV.ot5*?U]2stoeERc%<^[>su1(]AEJmS.)IM+Af9j)k4337^"b"-q3]U`3Vdt;Ks_0eO_VpSJ# %UIQ?fD%\;POBL>K?L+'Rb*HG(.f,\FYU%5bL-#Dl8rd\Jb;=sp`q2!I`cnI3[YgWQ6TLji2ho:Z`q %HO5)Beq#4bc-rA(><;57W.%(V)Hh\!ea\@4KR90pfo>7PM8]PJ/KS&H"a;2r(J,5uHItoigqGt@9Ruhu9Me3G$%=F->9R+Q?25L% %cLl%PX!=/A##R0(3$&\['>.EIlh+mf-RpSnT*>[V.?AO5>>4OKK;'sM2mHerVR'[;f=A4jORB6@hgaFluFK#a#e%(ua>#>$F;4O5[-noa1gc8$*N=*8O-dE'D]+'lJ[2".lbR%kr %El&lWEP-9nEP,@XZT0?[:]g;g48ZX2E70XO87liZ.l('88buK(0.LJ"`FWkF,%EDDfJ;Tl,0qC/N]+DZ;09n34JS&!64G5Qna0Qh,VJ%AnR6d.Y$&8Qh=X,cS\.inX %N"#NP_CRsg1aD(&\t:pPa/O@E1mGEUHGg9K5668*F25a9&-';:5B$1/`U,S)'HX[+8g.\tN]R')gK?:Lff:Kh.cR$LWZ1oWbTGcq %]3ISRqbe(WZ,r'e*@Rk]=6A:2EuekDCuQ/0X6NT\HrEqluqhAokeiOQY6[7;cB+Cgh+Rh&Ghg7fTj %-:bZ!aq7K14ZqCZfAk0?oMJ*XeW!r#5rh#3,ja?E9mrA+"%'E+O+/%"gj:R9&N;k)qfu=0^*XBNVrA[`H)Q'KXoBT>[\$iV#dmh* %@N:)KP>"4?[Uf$lL.bnpif(.?nE=)P1<((i3.Q`KhL&pX!SP)1"NgIu(Q'=)doFb)\FEh80K*C)V*YMr)IN]&@5]C"tgKsZ@qB8D6bUFT:g&luiT.>)J1['P:WmJ8`aqtU36&OdA@W%,kt[!4e5lAn\0+)`6RBJ-S&.IQWqr8ljZ %=g>3B\dn&E*ha]J2._NCq6rS.1,jgT1>$)P>9mq,Y!$L[11]q2E#ce5,s#Q@&W> %+rne?'U#`Ve*C9j-e'eYl/js\rp8h\$%:^ZF1ViN_:K=Mrb-4Rb9"'oX,$SW$eH_gp=sP%7?Y(E^&Ih&EW!7JD!p.$sU[Kp4d,XlISkSbSku6Vt3C!(lL)ZpVWrhcfP#ASEe\#8lC^&M\s.VilsiPS^r %d0KU_[.["'1[ZoC@'KQ<+gheLD9e#;LP..:#e-sckbMAK,H>H44X)jW=/`jAhKt"(J %\h3$O.A^sn06:@?CJtT+jJ?]dl#k;P5A\d`^Pk[_bJX8(-3;OZYM-kZ>SM/)i=3[:'rK2L"\L%W75I2$8cs/]%8%4QQ,n %4p$Rc@VfGkN(ok&mrN7lWT1=KKKYI5SL!7*NTX%L^3\=>)hi8FKa;>&_UYa8%XdH5c@SQL"aG+7@)8ti!b6;4A-/.M5tpK[*nr4W %n%O%sAcZpA$a(L=qeC9i-HmD1ZpQ&tBn_PQ_8B+c3kkltUM^Bj'edAiD4H97hd)X,7MV`T_.Fi[8>-i7pd5\i> %@?>2OUG?89Q_TEcb-YPfj_94gYY@9e8*d*_(^k4Ka#omUh25(bXJ5<'=2?bT3\QL6nU!oX42epUonV\?9?-HQ#E-[U`F**llVA:4 %_cLY_)7pe+^]8B_UlMZ0[9m3+U&m`P:;m[^8a3[HTWr.Mc!]Qq0eIZ47WRSIiYAc56eiApCEf50=[`Q.au:(KPSc>KITd,WF6 %LIF9S9a:R4;^FbD^:R&3-IU-;dLpbjn0X=mrmDF'Qgi#/p\rSRGF'k@c0d61mk3S?.qKZU]!2r@/u-FZ4XE7c8F.i)-[SHrZj6%L %r?lqaqQ0%G6/MWL:C/+:-?kaSP.kiSgd\R1?!8+h(ui8'B+)B-LV_;"H-K=7eO %TRflN0"MGj^\K64NN>k5f1CWG-sT>DKd^#aFD]r]#EMJ"c(uW"_CPhE>i*=&eR4KNGYbVasEZ %'FHTC9@<2601uJ2'*P@l051SYji+/H(,SSrTKk,K6:m)m8jO5gkXu&l,0H&cQ1tF$bAsrneHf!X$oP'hT%AL2EiG_Q!Yi]Z9i].\ %VTkAOWrVE^9$eH@Hq/gmAS@$'i'`j>$RDtWSQ>5MAs$>KhQ-.+;Lh88<)O('Jgq??&hifQ8M(2LZjsg4Q%G`D.On=!:;ID%$TnZ" %cjG@S"/V/Y.$[CsZm6>RTd10QC4RmT.djcC"?_lm!Hh9gW"Q:'AOK-BiD/s,<3cl':3&HN_L;a"VkJ;Ki%*fs.MS\A,i`W>S\qCi %.Yo!XV9B7E_2;Jo8j!fE"\r)EgeV('<^;5U.oC)$NPA?"J[>iU1#IND8cjqje>`d#fe.e=_Ot>[<`'0l/#%6`!iLliZik1s+\k#S;#SaZhQ?_8P9t1&77/fU*0%"4g2/"n*h;RU4`YROJ+F\(NlUD_@PPncsR\0oSo^r-0W(Y$O$tB:4sdU6jY8- %[l"_:ZfM5nSLqr0U+<1U)K1u3.WgAsO0(ER(6ge?5RBQ%/Wg+\_pCr_e-`hi,7/`Ujh`Jq!TuFF %`#fjc-@]7+/H:=Li1j:G!2^/?.p7QiIReAW"V"=*AOV,]aTYgJ2,c@!Am3'PBa"eth@s9jL2!ed$![Y;JTR6/X@YkDTV)@a5\2C% %Wj@>EOC3Yu!ca*$D$I7E2,55V_%:R\kR2T"6Sm0g%'tltj^hITdm[IR3Q(roY<]@\dh`i$iZ`C]DbXR>FI\(bLPSnl%t?)55q,B+ %!ON7\6'+B=X`jnBrtlHSXM>OW$REY1oSluTlC/H\JKTjPoNC<)->1On#,HO]X$R,*m#,K2hpt63`R=@2]Lri++@,Qc352FBSun_X%]8(>e$b?nKbj;"Q&8s%5hoPT9XSIYm9dLicW'(F_'6 %1o)>_[hN?KOWV.Q6*sFQ5WhJtcpMu=Tn`ac1aimjZ?-MDq%@XscpO6/iZ[elOi[%rZuh^^843dfk!,Pp6k36a5p>n4H4*]PCagQj %!s>:98[]fEg+%j`=GdC(#hEnH/eX7$0Bl(?Zbe2r1m(dIC*HW6J/#[Sl5DJr/HrRnJDj@%O=arXTcRkndFL]dJZXd1,$P`*0\t5H %LhRbTOI?G0TVUkq:00kt<=h,_dFdhC?Y465,20WaPeXRRi)lXXH44YaQ.-(hQ&W1m'2B`Z-[>iK*(:ta?s^_:f6"&_23`h$nfs"(>l_M<_BlGaXeM+e"L][9CS;$%_r-&)MLZTR\QNCH5XARJd"h`7 %AhY\H0oL*r5>5Nm75drs/13mhAe`g"f#hBcaLWjQcb\1eAJL70eiY/?/I`";dWNX%JD[$t7)^X+`[[Y1d)]G[aCpR^79cr!KWrCi %O$F9_fM;MQ#t,MmVl>VD,eL9c7O;ON[0sc@d1je?ZO$1QLZD].Jr/&JkdCia/8h'!M0?]Cm\PU'EMK=@Q[k5!e(QF9@A\s=1pE[, %bTO.`9,nioE2'R>DAJmOK/"ZE'(HHR?UT(4U#JKpa-@987UW74$j/eHmL)SJbb>m@5.J:h;?39, %p:^,Xp]S70O1npE,;THU&;W#t=3QuG!1$SY,tgMA'g]e*=%Z!nT]`7jYW@=Q=Yg#3VX\>r:okH9A5:7@?%Z-b&:'+7779dVBp-l. %pF*?/G@jD4&X/%#=,MCn3.dWuO81jIClo%_Fj#q_l6Os6q4"ACZ++eeF'4H#;q&emim+crWc3.c\UK%=`EUeFYu+,g7D %"u_tu)pHjaFfU>^[(Bs=Va8M+,4_c$:1Mg!gI2b=4BTNZ]@UWqd;-)0?<3j7;M]qa=_+X)p4otC$8R96A;s3SUI6q%4Gnq*@8Tl9 %h=dBgZ5[5#3*TpSL/ig>/(-Vs.'Y%^m*S'Z(o^bL1e_AsBUD6,BXh2_N5h]<[*sh?Em^B.L`B-%U,U\det*pdXUSTV">l_]#dot; %OHgSsPs`JnA[Y\k+5QlMU9.gCi6\J(G)D$KY2E%uD2i"k*8!CtJuu8qMI9a[6(*WdBFNsJ^b?q$b:%(-,oWk`RYFGYY@^GoYPpdS %90AUA'!t;`GmM'7+.Rpp+u1,@%[PjFlUt?D;'a_1J5K_'8!]Uf8HcHS''gc1?3Vn]A-UabdSLb`IL%DSR@&+Z09bIZm3rBo7A%%] %>#kri.*DZXDRRL_$FPDN2&Z(Q(M)T=Tc[YlQcP;pGcBnT0cC&XQ!)P@8pI^:l-n#WbbN8Y%PpDg&T/)(5_Au&KG=p'5nUq(dEFLV %Dd+@)J@A-e*hXfIPH?!pAddsDrkJrlN!T\>LSY7<.+jdlRe=b9"Qp"I8,uj\6\>EJ!j$4$7YmgsS-,_H(+cf1(-_%?O!:JeMI=s? %H5j@,RQ7CL_?,N>6e45VCkF$q-:(;5bQ;#HXH,K$*$P]d",^<(GQAWN7Yu^AfZ:[iOmXDs@*>?;d?ZDk`0N[S1QN`X<.`)F/5F+e %=HDuK#biY[==e_(RSPcWQ:jnL&IA1f9*c]J^@Nf^0:CCh[VVBq\)kinN[9R+a(L<$q4+a);]_?OTYmKRVsbFL6Zo[UA2&pFFqKP( %^mB#&q4U<@r?85AZp'aP^fZ]?Asc"T1I)^%7Gmkq5P-A05@dc^eu-SYQP>EqL06o$"+5+PVb5D0.'c'Je=/@3("=VfDM;mA[Ho+, %,JeuY**r:gZTi":;=d_Kf:uUS43Sn#*@P10$P#bt.'c&_Q)L%7P!&-Gp"Q80`u!AVDr^9cqU+_=0V!54r?$7sI2hk"PMrG^*PW-b %5pc#Wq0Ff!4/kaL5C$k&B`~> %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..45767830953c96b9140e0b3469513fbf46f46754 GIT binary patch literal 4135 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 k%D(I~4> \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c07d5a838874e625b0dd2c5a7efedd454c48c4df GIT binary patch literal 17396 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 a2w`8(@$T~%lZqSfzF&Uvi@*7&-~BJ7xIydy literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.png new file mode 100644 index 0000000000000000000000000000000000000000..505d39f45acf7c236a6b90d0b2de9674b63407f4 GIT binary patch literal 37920 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 WWy&_6BFinIn%s_g9j!SMboDRGVULOc literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg new file mode 100644 index 0000000000..55a0f055d7 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg new file mode 100644 index 0000000000..d26e2f39b1 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg @@ -0,0 +1,22 @@ + + + + logo-community + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg new file mode 100644 index 0000000000..1582354f76 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg @@ -0,0 +1,41 @@ + + + + logo-community__breakdown + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d89bfe296fdd7db4b37ecc7dea72c70041a1f226 GIT binary patch literal 16452 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg new file mode 100644 index 0000000000..3766bc8911 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3f80840e49c02cf5a77ec27c0f7662aa09a86520 GIT binary patch literal 16805 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 bm?;0A!Z$zsSh#W%Y@MHe@{_;*$KU)f>3;Y< literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.png new file mode 100644 index 0000000000000000000000000000000000000000..300efdda48896a0865d16fd60a06161acdf9865e GIT binary patch literal 39406 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⩔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 Lc&6&~)tLVS{<&X7 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg new file mode 100644 index 0000000000..a8b6c78ef6 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.png new file mode 100644 index 0000000000000000000000000000000000000000..303eecf4be9295faaf9af24e707388b0b30f3fd2 GIT binary patch literal 76649 zcmb5Wby$?`);=sKN+`-8C8-Py2$CWlDj?lRcXxLyH8c#J(t=30bV^HimvlG7d^h`j zo@cY)cmEFg{y`4F`(D?z&b8LLYM@dQA0DAUL%(z9&Ld$VewjOWP?PT5L9#`?5B%iw z_=Fko&pm^;;&1QVDGJ57)Izy)hwqLs|64gnq|IrxSR(nV-M#LJB#N&{pNhZoxA-HO z^Zn#uCOAs_X^ry)tJMt&1y9xTEtWz}rybJUJ@gkKoO}E&9o@RcSej4M1Y1>E-ZJq0 zx+lccp&Py9aS9S^>duJC-Ikq3xF^SNujO;Ba@WhMsma5SbF`XksK4-~As?*txafcQ z(0&EQHP%9>`r?WFhcEn;QiMuezUh2fD9XypS%aP~KYsl1m>M5v=Nb%VbVPY7#fS8V zFTPJ0)^t&cG-SvWysoaUo(Zy@Q62QH?%7m&tm%YuAGfN;IPm=88UK1sF{Ko&%rjWQ zYwR8_y?Tv#C~GMz&H;ivDz{>vKnuX$}Ze9HyC3CEQ6* zcrA7ISeS0y;R~4%*O`Hu+VuRRM~@yqJgn}c{_`DCg~=n)7r=&-nYWA4!*pdP2L`O4 zpB&s5WkW;SpI~-zcFtd{%g;knsk)6|Xc%k*!cAXr70!?`aA{+IO-~aGvc@Hum=NqO z1=_51p9$q3aHibmNktg3wjh_s1R8S4W@cveJ6l_|zF*o_vGIi=aIpeIW8-sqo-X!+ zTRjRLc$7&WzJeU`*4EY$IKkET3r`a&#HY@Jgn-?8X`b1jSCv?P@uA?K&;V%C3;CWg zhGLt*)2}bRLPA2|zy+Daf0I1EYl@O(yUS=o`SaHJl=A29weGl-P^@~g``l39P_Bbl97Z*TAX#>n>z zWZ@S(lBvZ!ou7nVFf{5N2cNXsuKT zC1SVU?~Y?0%~13cpt%jU;yq(Vg@Z>vl~DZ}8L?+VgPdd}T7nEIO=oJ(o~<+P(FD>2 zFy7)x4-YUb6p&G#C>CkA{*0ngP;Y835k-?xQMuU5%E}59Rm!%z71q5yg(1RJ%7R%a zm5IHLLFP;`(jP*o?A{w28#@be#Z8ZmRaOq!soV;ot*DMpN!o|1Zw{`N#~JJmn~fx& z2hT}ca35(@=ypUH=#mWHzlEEUi{f*WFB@rlSt#!b4(%s=V_F%R5n3VOS&V24Cajkv zYX9&g@cAtsL=^@D?z;op5%*HqvumxUFgx3T&WwXL%ibz3=`jlniyBB)tS#*pAZXA; zrc8QBxp;s>-LPys^Yb_5Y=)JNj)|tYcn@yY8aR0hN5!-){WeeP1)j7?yMVx<;cMzB z0w>Z!tGvKTd3oQyai*oFYN>TwJxjQa6_+8$gf9&vK<|@2})uBI4 z;Kv7&?D<>ZSS|;EvHZl|@QkV8ld5N*cLcUAceBJ3^8Igl78xX%L~iM#*>Rzk%TDbH zJKH6rejpIu23L9#PC{aJUcdQsNb_2M%CMHfaWVaooWW^->Cse@vaIYN4*O396=h}2 zz*|bfbS+6)h0-o;dPrENxHs~(d9Re243to zE3PrC`IBd7Kd(II<5^7V2$aNpZ-G^*RsgDUR;!bT9vDF++~>rXCmslQ%DN9hj{9vR zBO@gXf!+SM;0(FaU$UMNnkC@i3w_DVTt-c<|7^6xSMXtf%J=;IoEiwu9syvI=0B5< zr(b1|K5*m=gj9@6;u)Ho*ZCRrxt!BTb2FC%mc1Q8Au9L*C#vxlo3h%@eIEezTpwmkucySy6PDOVD>rN?K z8YB8GfMfjhYfhWsq&|v0#jlA8=hsl;z*yfM;~DE(3GHrdJ3G4%Z(hH?)Tq)fRKLa3 z)^RK|VC!2hDm>nN007m%c8R<#w0a&;@7QS<7njw1AZF-}e`dUMi)ZCx1CU;?p1QyK zl5e47REVpJV)U$wkrWE~kf&U>Uf(5MVfXUSaZj!SK;!Tc@KwINuN&ihLFLkGu4M{X6@0a|9%#O)T2XP5@y zj7P_{ull6F6ct%9mZ*m`v;x_epzpZ5#sZV*gQh9Y?!BC(C5j zHQAT1dRcKR2w(wfb3UJl#-(Ne0tCxbD-KzWaDmKfHu7ZG`t)=igd9zg9;FLC~Cxw-t;wz6iJ5SMrj%2sf4DMUg0 zC58CL))w6KC56h@KVP#a@^!>A{=%1x3{E@*bnnx($rZ7hmYEE{EH5vQiK&*^xJ}@~ zymqnaDQ0?2$k%y6xU2PjS&t?G$VXKV506LbNvb89ji1npp)+(-9EP}2MDAU_s21Uv(9a_OH8$q>oPu5? z`%qVeVqVwY#KgpZ@K%%n3g9pTKNCeh{SJB3;mGJ{eaMAJ+mt)t;bK`W)ZceA-iBK6 zl>>yg1c1*wxk5?tJ^g;!9S~lK-rCzWdkm@Imz0TaJ&9rza*R^!2J9RkiV$PgP>X zIvC|2#OUyVB;waXL!;8oH{|}zeZJBH5P12GH{JLV8fIB-Z7uKS#zw;Ez`*{>*H5C) zW2t4cOmhkfJcwh)m15rQL2-mVT;s1|lNG&iGyY8Rq@u3Frd~x%R{!_!-%}uaOO9F2 z#+P&m#N*Hn5m^@}V~5mDjvD%U9?9Q z;KrrPt@k?K!8VRpctOQQtH*r`6N>=$1>-BrtXPVT4eR7ELp<=gVQq$;q5?6;_2##aEXZ!mwt5`VE)p9R|GkB4i*6%I zFS-TUX`u!{mI#mN_=;bv%L)=Pr#!8-F>GLtJ+T*@a1_Nn(6`2=D>=Z6;Fuw?**$Eu zjPQ2npA8OVm$(g4_Ll@)*XcPJh812T)%BZV)EW_?O4v|yBsObgWOT-HVpl~MlX(VM zzYX`EI*Cp980paDq>KD5jm`D?)<+?6LH?r4uE`A=YMQ$SC6{JV920_WZg3}nYE2@W zi4@~QArQv(ZWmFRxTxFk8*e^wfzl?yNO{k2kzTOp4j$n>D8b1iQl86Gr4s$`RONYN z(H15qoZkKX?&7LCI)P?C9IF9O6S`c?S3kbZPI`;5PQ~!WlRW9+&jnZ&I>WmTxs}=% zqi25cq5W?##{sUI1U7vAh(!Ze!^G6ICe%B`L4f1}^;~m%AXD_jpG)F4NrpckaQCPj z&%Zqnv$WRK(3lNw;bqEs6LwgLr*{=mJR2_;R}|Td`eKwJzDvHSg;|Q|l-C1(egp+$ zJ(8=tO}R%d1jrC`66BeI8l+UkS50*mxw*M1M3Y;B$d1#tH6jl8%dLk}1e4M~ zgt|kP^M%qk?{&G}T`{0gOcuC>kC5}{6Za`?*3Y2*1r+q|$WQf@I&{i!6`#h($6H+U z$k48#!%gdzp9Y2&7Q8h;Izg=!62vwXOfDD{%VaW=$16ybo_dQHMJhIgONcy7Ze5Rl zrSc}4KQsYayNL#A43!4BF5nj?n|v@%I@4B<8DVTT^oW!SxD6H$$>8)fw?jt+MLKy< zPuMLK(Fq1zUff)X%quh!7C^eH=!*`o(6Ge;zTJyP+m_(R3g}iam+q#`m3f_VPlGp~fvEQvt&RjL@ zQh}aWFt&>YSpYe7SkW)w z@lLv<8{Bay%y?8yqP%W9dPhhT5_ZJ;XiNs3weYQuEe=d2F30xP5UzmRk zTmij&@Z=&`Oi6?dZE9zIZS8FNTD#~7-Mu!$S23WIp73_})6OWG`e#l-zS(~^fUsg9 zQKG(U@cmS;D>`@?^pcf%qK!u>(9NVqJmHO5b;Otz?0=h2L(gVq&tvSuz$4P!oz4 zx3^10J5|8>HaIys{cc&|$sm)0y^F(*vqBO?jeCo2PG+>IL}1ZbzDr+FP{5m=n)-Y_ z{Czpfk1Z0!vj~0nMmSA5H{Ke2G(I7rFYxu7W|=>eLLp(maAiLASQh~)lM27*e zP1inch0c$$*>S*fFRpbvv0e3>bYYfPyTzXw?T|G5fs46{%H%il(Ei<9m@Nnw$j!aq z(&SVM1mbSZ3=i88n>p+Glx`r_*VomD0phO_J@NisJ8gu%GPH_rp%NkRse8UezvtYg zh4ESZEx7V0K*eBxC8&UvQH(O(-oE_ytP0we&S99HSoRwh7Whlit!vi8wx|Born{2v zd5*!y5jvfxB{{bsT8tP#fj8C#@@Y&6{Cm-wbLZRl?{3WVwjZ9zNIwtbV$Lrp*ueu^ z)qMN`Ap+{ z0#*F8*ruq`Nm*ivpvD?>7vTs2$7xW?re)rO9JRazVsX*2 zn70)RD=U320HF9^?xb3dPJaCRZJa_2r^7%cDLMS4Nl(#pDc0}n@x!b-Cb<;ZsMrw( zwOYgeG`O{LL)7R~8O494pjnP6~Rl-=r%l zk^NfmNnCqo2v3Z}8Z?Td?%THwzp)XDk7+2k2s!+axn;YwjR@0w{O{gw0qI2DyV6yC z@&z@)GyIqd_Oha)y<@drr4@pAOdkM>$9clsNz@rO42!kJ5@t#vvZmCyMb7jy58!&b zE)hC;kWtSE-u; zIGTWg!RjtPdCP?X_+0gwj_IVfHaObg zM@L3T#1rcSxkrc=T_&sTHr!bNvShHr<{@m5z@XK122Q@L&WKvk7`HlgV?ea3zPkk% zcmupadm|h@5TbgXSy$)&vZuNV6yHWgTw>IoL`+QV*EW(Y45PGz*;>D};wDisoos&} zl(NXg*=~wR4829=tQazq$HijS?^fhIOsu;_cU9*WPTdp@aO&mf-(IBYwZL)! zX3shhTT7Gr7Chu?0NC|TGLv3swBkhbvWXz$M2AcSCuKWmkk3lffv!U+2JbyFIu6 z7C|8Dg738a;8Yz)lT&{p3ivNRm%nlL(eoWdX{v4iZ3|7OhG%H8XRAKq1l^ zZTGX6*@%M&+pO7@ZZV_MFbB}shvthkSZF}@u~`pf3o5`k0+F;Lir>3;t?%gUY^;Ic znvQ}ev-BzG1v6gXD6W!NZlK>iVnI$P(cCD-%D;lc(^pT9hlM~qdA~oE<2LX#fR14! z6!OW-|4*8jab2oqkjD5GaOto(TP9~ZKW+G~cqAE&DH#_h+ z>KhN7mcR0jazOVUf+X{M?A%xX(vsHzMp*Z`{V{c2l3dRwIdL=3K$38j0sH?GC2Ocd zS+aSVFT-jYmO5apuUS}<#6V3k5%jgR6g)AaQ&VsE+iAL_T>xO}xTe~?v~!3_zv5c2 zNu)1U4{N{dy@i*TLIzYP;%SQ0ffi;t(DxOO6f<2zYJFu%giccU@`a;=aa~*s?4T11 zsd>af+sU1My|+vv$X;ir3h4EuTdTF5-NJ|lfTj`HO~*v&Et#tMbxeGNhW$8O$~7nO z;Z8Gxa&IYjxhp1=%5GUvJz!BhGoLl(9MJ95;NZdRjbd7u8WPXNMG0YT`2Q>8A10TQ zg823gsV7S;=bLKZm`&Ky+mT3hIv;$$ zPHvyl6&)_R#@M+36}p5JJVobgleoeyAo3U~XY|X=i2RJs5~6=1o7d^RF^@bQ-u-d@ zatJRS;pF7x55m4+Jq^o;C(uj92UA)$p(E?1ZI zznwpsFra~mq0+o!R9cmC(@mfqpFdBwn^Al(%r(DI5Qb1|EF{7C;|kGY%14(H((h&@9+{O{G=)`VcW6AA8bsVWse*FwdIkDP(wWwOC^5gE;RpQ|~wSiX-AIOQU#VkVNscNV>wmwZ!L@1k}IA zm0A$YuNoL&yi3orON0|0sRkdNAsR=mHLq|mhYHXiY-Jis3eDsIlRL1B2cps%sdjVw zJgO2@woWmBJAq1+)4Y@H0xO5`{(mw#NiJ8YQSvLjh^NUGf2_k`o7H*sumLt4Zd!ZvJ7`Q?70xr*CH&h-&tNA7anWF|Q zH95_Hrx7UR&UD4Br$bHa>+0$X%qL3M+%eaAnoA{J``ZYx9yGvvdU{BKULSW-d%{8x z)5%vwQhS4HsNLM%Dth^`M8~6|C4wnlRYf!kmG$>vJ-9)KamkDSi_kCVC>$Idn3>}a zHsFKy4jXx$Isvc!I!sx zfs=0r86d@QC;FuurkjIiIkW6Y2d{}lCz=Mc=waL-vt$WCq~@QnP-R-$at*H=<(uET zq{=#BIPXXy7}!_FJP#o<{{>@Es|ma2)f8EY?z++WIp0Jv z_@Pbw$GOPaE?bVlbfe*L{wlDhTTlxu3*1@!@c)YPB_8E8d@#WXv7G3_G@lW#aBnjI z-~6qC?w**~7>ZPm2Id1RG18Z%>e2AWb&mC3OR$UBnPTnMfN-B^`Hrq|u6|y?YA`B2 zhzGOsDx%zHgWVAXPzb5mw^!hGF8|@UM!N4DAgT&nKNF>s6X7qkf&XRTBUi@LhUU@h z%K*##;+IIKr8o7rL@SkYkl3pT@&X$8i|ny3(#TQ7V(ha@WyZq>XYx%RvNJe<358Nf znG4{&UFZlE8ak!<$eXT(%`{UPX1S*)fnMX-SFp|%q3USQ)lR|;gM=q z^}0#zs~eE!^Ku28e}@9?@|p0nQ_BeX-PVh`$Pu#R8%2EZ8^VU z?7T4jq^BH-Y=rKe0V|34>e&}A6$DJ;YAX98qeqH+!h>Qze56ST#QBH&7-7(A)VbbU zjWXAC*i50)z*R+RYO3G9WV5kZzfY!0gAW+HN2~%}^kz`} z%bUOaFqi5_a!$4Cc9m|etSfr+V#&+^7d3#}o9>GF8$`UU8Zep3@3QDw z`h&QF_2lbhUob*a;(6RcnusBnn=9FtV$D%8G4u^olx4b)f@>zyFtr2kqhI3%jD7@k z(*^!d9P#SJ{{8zmTVy|T^UtE0oA2lIO1#!x+{?H@M^kWigD8wLNxh&Ug zZ=u!YF^__Kfp-R`tAt)o`@RZOQWbO=bHa%&22n+w^o&;iFNladZ&-Empk6P+{Ksi| zX*G`>q4RqGkiz)qXV-uI_dA!hj`MD4lAh zWq~$&*M70MxcK7`0%raDZikCNUq)r~aAPQ#kab49zD{@2rga9Ec%TqrGxO1uy_HrH zamegem7i};2@Kie$wqhmmw|?1aD!7CjNRaMRs4jh%1xY+v0vX-3GG)f=6Z6++i4Ya zWj44^8}{TX&|r1twQ|n^YMtzB3IrODWV0oit$z|0!Na_NMB-v;Z+S z65n-oo$V`U!fM<0rK=bM=2%QP=vR5zt0ByDCIM^#r82fE1StN_b_WD$gd2&eWqxJu z;dqxa5JIS;qQaXf$NhlV_LoznorTQuvJ9q~VuLN4n~e(H0cYq<;QqxG8|qQmMo(V! zVvEC1n0fxQeYOuwg@Snt_*b_#H;J0xstIv)v;-^qG1mfV`l~K>vf5N2dS=F zh%cU7qTvNxe)!ZHok?|GoCWlVFoGPdj{aN!1*S);ViXSoyjTN@>1a@y=0;S432=)Y-^&-V!mNpN$+9mm)!To z$b-T`uEmi{Fch%@)IJ*AiC=*0-k`S01X3%ORsnC&AIa5Cf3^B?mIK4tO|9W zF(1@3r|9h`;hp%!sn^*p#m%_JIQ*R}`fGT$j9s0kzkc^Oj)BY~vG3b5Q5V6uxljK; zE*p@VuL|%+)UuBO);($?b>hV&pQ2bsl-R3T9qjEh%cR}5mZ}EDA+dTpm@SEDk7d-+ zf3h&;-`vgq`g~V0>j!?VzI89gBPMbvWVG1a!yzmt(5)JnE|YDq(Z;a;FWdwm1Zh;^-#eq?zo>d3Sx5S?c#O{fk(v>8PACU-%I3$24PMe7_D?V&>0 z>)kS-6o`%-)`zZXBp+}<7lo_~hRCn-Sd}a;Q(LYr=!N2KDB=L6lIV4$yj|c>t*?jL-$K`wkY0Z~bC9eg0AFD(>G1o7RF~agy zvK9Il{>O@R46ONF-THl6rTG*!b^tn|nqxguXu(N&X*S&{sv7yDo-@!Kxw<)uj^NvKg;jYErYx0+*iv=&y%M&^5jPV|{XG=F^(=5$7de9M; z0)u*qa;WI_B1(PM*_uVve#;glEXG6gr_ppY(LiKKTE@VDy1 z_f!RczXQFJ&|A;-v=7cKa2L^VD-A36#=g&%$l6jo{V>6qL?6-(c$2Ls2WJsCPW-ni z@`WQOX0w0&`2wVpsCd;OxNCTa!|mO2_<%Jl4Ppq)ZwK zS=_?7Yn8hoG`CBa1^k-JZ==IKN_1yRQoA`Dk5-X^2li;3`nTny34p2-2_R-`2Swv9 zW89s&VM<~)EGB&bIJu41Rf zJ)*tds_d~dGO!|3qkhoe9_DC`2Zi{p-u38aZ0G9zNuOQZy(qS`Qp{Pf9KjK~EbIHX z`SC4d6w;4roP96#`A36J_qHn+L%7GMbLl0wI7dW?W|!NAxH)+?JpTTZ>qIb&0-!M> zLn^8qOB}_=DWX7?AjkSWG`Gi=g~&EU-+KAl5v?UWx@;S=4$7G2lElBo`gf)YeD{?8*YGe)^{Gq*wU>=9aYv*s z^-V#f=&l8!BFz^U8E72WX%FG{yqg;sOY%zVNGU%zWC=DXWLfD4BI3^ZNATEwRh z_fncl8N0T|o?R%?K@YL%NbTP8n9bJ~(xsdw{YT{giz<;3AoZ36i)Uq|iLMdzx?idZ z#AqY^hYTM989E#K{P7Sk_U2$fBc3yCeO7Y6BbUiLyyGQ1)m0y`+j#~~nG#5A7QRgB zu#3GypvA<+y`ANa?Fbp8Gd%wStaS91mzJt_8NN<0cj@@Ap)VZGlFmT);d39-CGljg zajaCG-w$+?V%7b}Z%|8)d)7}9W7TQ)pu zta78P!?z4rHRx@Mbxt^mVBIMX8Wp|PVW0x`zyfMhCqF7tVx1>n{SWKq&iZiA{l-ku znC)#+{B<`1{_uz<*zS z6xrNz3{5JY+2?;e5#R9jGV}P$hTnJNb3eR(UGTYO1^8#M!g6R@>btw zXy$Miv9PcJicpt8UX^A2p!D1M`?ULT*QapT(fpO*(<6`?Yx2M|1e*jkN!S^ng>sT$px7fzoKfGNM{>@*OWPP_?IB z_(3;<@8`cES!0jBp}%tzLI3V${O|Ah+O9Ku!v_(Oh0t(tUE?8g-4yTVj;`3Hu^4ay z(fH^nYfKC5LWs`^*mAr0N`&`n%``QX;AqMA{1_$%r}$p8+j%AMZfLIst~f7Hnemqz z<$m0`Fi{#m$vMt1hW{V+{Ywa`1bO05wyze zme4Qx5%3GH-b*kmif>$@0ly~$e@~7U{%qsIr8*>G&Q;yKPDp-nAN&Vjd`oC}G z>$uJv*qxklnASVYf*2SR=n=XnB5nJhdnw^4jBSq|U%^O(#RKE3P6>ILumiSNLi^ct9L#EU?+#1WrT_39C; z5eBDh_8z9@=jYc0yHa|9g=j$Lm-gk*E2REQ zZ2w<~@}dGx2#k6~pc!9J_6qShb^Qz{PZ5R2FmNY}b>L`pqDDy0OpK16e4zVrAR8g6 z{!BEm%C_e{Fs@YsUG*z!;n$YMATLV96Xk0AkN&~`z0GSom3roNJ|L&_YWZm_;L42G z5x;=R40`2yclbCLk6%WBTNi;W?t0r-Up7e~0z;Vhg*nrmT*H?FCcB6^p^yas`6B?u z9%OBS0U#XOf=}yNA!I}*k-%k1Uc^3A1Q|E~uam}{csBvL#NLL~t2t?AwMKgEb zciqylLd>fAy8)~yBF_u2m-S7jDj9=};mBF5dpuL0Pv-b8tR>y=?@qujth-O{g*F>B zl)F{QUm^^$E}BB`iemk+19Gb)bX&J`6mhrabBQg|kIb-IUxSm!8;>VnSpaGQP;Klx zoVTiS@W90Pi2f__M;G{SNqCjrDp^y^`b@5vW@`Wr`A$9Js)S8=-#wlLGqQG>ssX9h zBCf7MIG5B$vmdsoozv3>-GTjXH~C7II7YSh$gix~@3DswzI1j5j!GOd4pqZfk$D+I z1B&6-bnVNlE;6yvz^*epTG*Ehdx@X!oY`?UvCs@y^VsOQ8)gYdATktVx2gsL9WD{# z;f;2ifz&5z!g*o?1SwUOSeM~G9NUXmeMCA_?8ZZ1&wyeNT%qX*tWMPa`~&FZv;~8% zkWbqvc>Xl6Vb@Rf;fA0-)%k<>_&Bv5KZ{lu!Aet%x((qqV>2^Xv@;dVP$%5y#3VD# zPsHZx4E>VgPuZ5QNc(&i7iJmCU}C$3$=~9=ncU|}+kGDqhKzS)W+3icfX4OAaS&L=`#vO`xu*-Gk1GgfkPV+c}0^C(1I(_qXvDyom zeUme53W~W2h6e|+Bm6quRDy@ymoZ-)pEuhl_w^RK`<-lyo+6&i7(6#RRibVonQ51# z{9=iCupZZUHKnFB2AMzI5@@ORK&M2(>8Lv)WosvjIAC%iud+J@KJ5i}4fU@ln~41>q5tm*9MUJ6dBIkH^8H5SUm(|pu=T-VFJ z_Q%V*=BH(&_xPL8!r+R$$BPJqeMh<2QxDt9)haBmnQk}yqSYMeY7>3KoBgR~F7=*8 zzb1HjyDH`8&h-#o*9MMLdJ;=%)r-mKD8YFRR*$Po%U_&ccYD$D2IobgXtv^t1QgQ>MUKY7s?g$q~(CJWp({e$x7A74bZbGYwTg zo6M0kbdmeedZb6Gg*{Mb32*DQsPfJ#_tyiVb@aiUREhH~tGZtrEm!LJjCNO><0bDw zA{vh0K^8$o4BRWQnGBfe!#uChilT1q_@ZlZ2^be7Mn0apQpCxGT*eo2n(cFUR#7uffx?;uFv2KQk ztVrBKJ3F`3=|d!>%3;4bW)Zc42i?@2>FQnSPn7!+9vd<)@Eckqb}`%aR#xSOkCKr7 zz3Y{s;}pc@sx9W1EUd#orN@{$j_bS2CR@G1b7jQI6IUK2e)Nj=v+ll0>K^- ztY#ChgHDuBBiz~P>1OTwgr|6Q;e0f&qwTj*k25?y20*Cf?%cZ#cm0a!NUjS`nDuzSDOUv-~7LrC3U=23cjp-JOZ=wFRnBCgVc zC#yxc`et4@Y5lDE&2OO*nCyTtquz<-i>(Ne({8a&R2aw10sSi69d~j`Vb4P-GI$=> z-MC^4WApKMU`r7r1?QD1>D7tnUCc_SjmM~+B#_A*6X?Ogz5P;n0~5;0v-R(l8Q2qt z8hZOgg~}t%-yXQ8ib>J|jk1>Y;cubo=gg<7Za62;&kk~Q{C6wGDt0NBtV}hUo<>N0 zWQKccSZVawpPuLibQt?RnX@_ND>t&xjb=U*bG&*|l64F^^6N{*Zf<#FkDYL3qG(Xp zgi3dk`7sBD2AC_Jspy+IuX7_mnYUJuF7;(=%A^ljGNa}8{KoiQfKoc6bQT5 z_}iIxRh3YSk_TBaRlNJs0pz+;U;e9YwP*^JCtE`EYG<`b%(kR>hDGq{5S+1=6@fs7 zP$u%1y5k2Rqd%nJvsT?HtV|E`~Ynh2`59^=IGW(5V#AU{qb*#A>u~dZl(3lZ` z#MS*zlxjw2`6elK^V|^HgnQ}VHI!|mIqi=%nw$v*@uBnOz8R+s@5bwyKj`@9{=^?E zr_)h$6Ao_$7qgXnG&st<@WD|+-C5LeB&~;POEf}c>+iJgv9`eBKwU_c70729(3Mv# zTtnaw;L;;zp!@_y-jwJ&bu_BlyxwE7G6X0@tY!*C6mt@?JnbigsW z+Z>CiIHQHN)s$M{3`QA6)_xZ&$DU_i2rxsey7awi@7h=jj2^gD>2pgKO7T5_%&W@N zb`-Fe#oDCe^Y8niIps&}DziLyO^BB)Ds7F>6M zALafgn3#29v`Kh-@pS(Hf#CYF^u4616s5_znd5b^vqWZn^K!)ikp$cKmAo%=XJQr1 z=>7DaPH1_mgoXpc`7%{~cq4jrG1zrKxuNaPQ#G}>ML)0_2)$d=JZG#Itk#++H45d& z)AB{ucKf>AviEQ#SQd@*lF8jQZ+>uf1G?qA+hxt;GI>@{KcaZH2^7;jd$lfjlicAb z8+vu*>r2WBXb_dmQ|%&XOS7alH?u-b?5a-f*{ez4!0|Vi8LE@_XHE**4;~b;%{LBz zNSM%uW{(?e%KBs|n}@g|Y;l&5`k-mQiS z%G4zrw0ijGFdi6f%2F$u(`7ev7>z=Iv`9vqH-A^63@Jr@wE1} zEpcAKbM_0a^ZnWy3+50-nnyvsm)+MAS}HSDouj*xr|uhkwEcSI$A$<}lqhkY1HDeINr&D{>FV0~Ax6CO z#l=ddTIlk1Il~BbXn3fXaSi-v9Q`G;Zn8C6T%jyN!v21nywsqK8M?aV(QH#=Gafr* z1$emgK2>5;Mc5Ik#GO#$x#dsEY2qF$-eaQd&!g8&1aXH>Un=_Bt;D@PAkJgmS#n2+ z7%^>Zo$sn=aF3GO{(4&Io!Hu1Cvc11O)AzDXt^$i z2u?=ZbnnGkgHv_`dl`W}9gKPzF&ZP|)s^jaL>JrH)wWtsWYnmV1Mj=Ml+fquBPH(T zT@MPAxurrJ$JFaSIlnLN7y>qk^^?Z*dCtJ1!jM4RR}*f)$Ex7jY4+8MB<$=Ei8Vw`QneN(hf)oR-{l8w;<-k99pMdmM{KGBmR zcXfsQC2UZxy4a_U9g$yARUh}bkC$f>H@X>n+Uq)_^3p9{X^C01tgnMcVie_FuTN0sDHVwhO6F|2Zg z?r5)tNndR?iR4UV;tuZj!5A+vFu_d)vLe=tEq%I7dCf6f0+1(9PLzG!U8!R*m8B!* zzGvtnU+9G}`mYfq=jTI0&`WlOA^RMr-3!-1TPC-Arb{>BEX>a~wvg&cM zxwkGX{Bw77T=x5VW;L;aew?C2d^AVOq@@brM#tN;UmRiEWMF}hw6`G^ zWhp_Us(ftMs_Og63>dRvuVWm;b#h7~`W_MgDz*gvxczvZjqZRvVQFq(cOPw4owu=S zw0@bvL%XE#)hUe+H)|1cAeDb#ll-OyksLpko>JsdS@Mw`%f@<%2+p04yzT3!GQ%;t z+<-g5_}C{}-2I|6zH3hwAB8o5FlOWoJ7$C(9H9B|dY|a0!k4U-x^BIr)k(osNkPr? z!!^l5@`Fq?Y)Y^E1spU;Dyh*#EcrY)lm(7D*9`jrN=0=kF;P`{O1C+}T*6QG!@#i)@rs+#4f{V-fV%fOrq5}6PMePxmAi>}o zc1k|?d{ycTYQ~~xfxvW@5SeK+P@KcE&y>S2730gl_JKz z@I6jGf$PyknF*o^E%d|(+o+0Gp_}V)uvt|G{E(W2u1xm#mK(UR6t}vttCix3FQp#* zf~bRXKE6oH7M9BuC;TIH?A%=y+WtXU)lpEDI|^^x1kL6$5d7RuS*HPH_nIblASC-b>`@F@gJy#`ZGLrR_W(;~wy zYQxx|<@(_Fm3rHO6>2Q`Lj?!RABASlS+XFJ)!U^T>Eai=JoD)V%ZvY-W{Z5Mxp9`; zrBt!XT>IszouFbn{>-R`{)GqL&K9}I(^+wfTu8R@?~ANN{UDPp>rIc4xesXtA%R+> z{gzj0R--mi`j{bc&iE{wc$qn`DwNOtj&`Ca6MHj(>R$`wNx4=|ig!T4xL~CB9nwxX z_{CJiu1@vp`yN6%tJGbMn7*MQe9NzORY(|(3uDUIODFY_7bKcU*1P zjv6$!jfrjBnb=m-G`4NKvE8I`W23Rt*!IN6H_yA)_X}p$xzE}6-k0{n?2&Xrl4IbG z!q?5uCAIVE%m?MxrwQ!gW)q&W+IquQN&_>-N!Ys0FohL^lyAgdKmFM4YC}VdGm?S! z@Ra$7E2v)6-EN=%VUcy-z&P0B?eg>^)FNziki)_FZz=3<;V`#7 zip3NLYb!1qYwWsjt+KID)dQ2@yYLhG%&FDFp4vAacPO?m3Coe^wI%cZ=4j#a$X-;5WJ*;sszBHhQm6AH@z%o1O5 zuX_JD3Z$>oi>iqWi~?#+;M~}i4RL{oG1o6&sU6(_xwqKd%i z759=X$NqM~Y~!AfpCM(*dZx28d7T)Rh*hPo3bQ=mvhyslIIRIBhKh41VlTQmNHQl6OS+n)@>sqVqF z1w-uD{-)>Owr2qbOs^lMM&;EkhLDRJsEsI}$)n@)=d#2Yqr&}clH>o2@wzVE|HuZ* zF>&NOxY{scm@9+a$T^O@pE?oJ-4%ZagwGA0Sn95cnDjI_RdA=>aJ|_xTly{j_f2Vp zfQhYtGvm}hDCLlQsGs*;-APcsz2N+_XH@;CTT6qK>xlw~&akZd4mqzd_XExEjsruk zO!ebk;-A>(d*;po5S)U=8uXpE0;%(F`cwqluc@w30{?rE-4Ya>!t!_Ud@v(EKHTXEZ(RA1GDoaFg^h!*QMuPm_jTfgYNrRw+Vn^M zN3sv7>@HEn(jPg4FP#pRuixulo@T@403kb1|H+J3E=KQ1gS zk&Z+>T4mlEhfH5Etiddw{Ic>EnrH9MX-y+O&s;N7xXCl_Wj2p^`d%ggOP_wUbp3XX z!orgXY|h);7K#vc$9{)?pk&?^=IB9t z^>|9Vk94~uwk7S6sG3`Kzt=j02iPt#58lI;31xI5lcP0%QOvjS>!kMW;~1U4Eu zLj<%j+QrdW7bm)-2Pmd5w*9ozaUj1KvBX~-eZ1!TU|4;dFgUC|^kVf!*Ydc2-qe{y zk@zD-)Kb6YBXpZ1yx@!dv0CQ$uu|U9zxMr>UNrDMDdcIVSFPEuwleUrWD_PQ4@_%7 z2}5tDN?R67$F=7=7q7U_Y-TX`vD5N7h5Ma180cAb6aZH)ofc4aBZ^P79~{zei5HEF zU^#gI8^A-LtaINc$im10Oue-D2{$|MQC*LluMlJYBJ=NZOR9Yb#KZAAaDaKxw&Z%0 zDS&&lIT`Ej3albq7R_9;HD(qtFttcovVZ@x`@r(dYYs&e*`0EKc%=9-R@vK)2ofl} zUHYxxf~Opy$s0_?k@GM2d~C8B^aCeSlMeL0pU8h=L2DWsgZ{dbkOuMj5S znb1u=Emif+{ee}HMcYvQc3P)O!w&b0xCKw=lOJ(aG!Ksf zqh5I_|4ZMg8Htq+BL31^vMTu?gLBoL+qB2<(SjJ1lwpV+&*si%yvd@RFZ_bLj;q%e?>1`spQqAs zCAXISX7rZN+6_mbemsV`$@?pBc8fr=IV^v8wL zLsPuu{+aR}pqm&zvl??7NnhmkDit7lqLK``qJjoEFlcLbqfN5&^!gEc{0WB9W_Olq z%e9CMq6kBG9Gek$=2RURo&H5>%Miww3gu$?dhUj4>jd$3xetUR`$n`CR0I0yW4X!? zuS!26u6j7jGZ8bQ>>NHK4uk|5581$4B<^Su>R0z-;7GHZ5vyUnDdWrHIyAuDNeuEJ)0*R5#K zt1JcS&`@rAhTSO|qX52r?AhF*k|j>c%_Aah@QOQwmxenpqiqvJ0`3ALs6%FLi>+)*t^}lO&$;{dr0*8nI9m z(K`x(Q2iu0>g(FLbAg6T1FuhJi#>xqjBA=*X?OhorZB%5>N)AUllhykn%Dhj#NcvG z`sH>4nRN*un{`=MvK-CC!L;&DC+YBCTpZmAl$cxd+3(2_&pB(kw_-9EXeJh)w(pD| zwRrs$KaZz1orQNrA~~XOd5M%o1brUP1uXRu+>r4x}aBh;$Oz2bJtq_n_WEZAEu_$Pd<%Kk<%6B z@1*m6v$~&kio&!UO#kS7u;gEqr)CH83g)YK16y-hqKS7(d_NX*iXn=%1S6D&STg;5 z<70T&YQ6{$9i95P3+datT$#_pWpKpO5)8%Nm(oRx!XgAuZ?Qt1HNttdEhzU0j*?cC zp$iU=#9626n`DX{WeoYHLtPsvf(LfI|4g=puD(oekjct8Dd$)8^xkaqT)x{5a$R#@ zD*|&@!QQH~(^EaEZ?7%92%m3XzyDOC1rIZF_f>R7=WF+Mds9t$Ct|zLl=Et3#@C<9 zt)JwNA_pH@Wm;uJZ#}UmrX&s>6PT#Q9eyEpX%f#47dS5re?l?4-w3+DO=c0U{3Ryb z(7U<|Z1*~4E91(jKJbTr6jIJ-YPXW!_L1Pd#x=AEff=;gK%i1uS6l~MY=+7`nCf`K zU449(k8XYjL*x$`?^~>f(P6z?B$>YUyYjzIyUhQhTy$Q6?TmT+d^L+>8E{epXB%E{ zEr+XOMt3V^vQra{8|u4?jbfwCSCDtuV)uLqCw1d>kK-$F46xvT;W*C+xSJC`3$H$o z4t{MaAX6DWn);K2%G;eoJv5nPvP0uPfBg5fiK}OnQ{=rZ4Tj(?ZPU4AMRHz@Q09WWey)*TDC`h>=fRlcb>-; z^M6_#NoEyNFW+!&YN(u<7icA+6dNC-I`A8dS~vfu^+BpnJ;~CV$s1?3*hXFOA&SK|3W&pVt9TZWcy7 zyS3Ti%k2rAPKpp4+$3`5)`~S4lhOZ<=+$Ll%$@DnV5mITQc0Z?`s3;5EPI{HLECba zbnb7D+6jBvYv#w)=VPP&XYPp@^K*UBQG2}5!?Kc~$Tkb5j<$_%`s4QC>Lw#c-sj`D z)%*jLoe#91h>w;^PX!--ksvGZxRHVLspQxt z1q+j{hgupY5L1D$c2G3JH1w#*HD<8Ju<;l~GE+0?#*`bzMgqo)RQ zHVZz7f4sXmJrurtYgM({tNfU%KEQ7RuU@;)vKVaFZ5~|j_nTB>@&&P1mZIO7_xigX zuq2w`JRXK5*nP}+7V9%@DOu#IMG?K_A(rX_T$%DOWNueJ%FB(e#7Yt0=wltt`sGSJ zTprejxqtnf4m@kk&v{>zTnXm4tv%u}(Zd+_I3M1a@L#tw`%ZVk@BSYQRSwKu#g-5h z81D7gSCj*gcP_CHrM|sm;UDEngZ)N72>f0aTn@Z@o!pixREzb-G<)vK+Y#$JDR)EW$M>rPw1=7vRscP7=`b9QQm- z`PYDkhGz3?*725P+@Y4a8H7U|!L%n7l$azXJ;g30NnoJ!2yH}}0!kh{+f8)+ZDET)W{t_| zyDAh6>_SR-GI?DgF6Gtsd#{O_zNcqrK6?ghEV)O?Ah&LWFy)zD&)_acvi45=JOgWW zGM1DD!+`y_u8PEh^R$KmIpfWa*S^K(0WFP{GZ@1$kQ5U9?<;Gr$TT;$Ja5`nLI1b|+yHXio`0Iq0^&`i2$fs19{6 zoZT?o(ov(IG*l$_SI13~2UL1_pcoc3VLe|?LB8j0q}~)sBwpnJ!b^<#td|pHAb8HQ z;k5LQjbm2=)br{HWuPE9)j))#z?Y-DMwP!RVa!(Tv}__m=J(ksat% zo@bfeUOU*^V)y};WK#tx1ZjvHpU1t3_ z>j$1T4bqfSk>(QnM)6YU8i!{ExLF?oWB7u z?uTo~4ui38YcnaF1a$N;3p-Tw7Hft2y1JQz^;NleFSLYEzFXrwQ_2lO^FH6uA&!iA zzYC5%Za6}3c_dJ5Jb$A`l1A>bC<=E00-9RPjQQOHHL)>0hw?ht==#uTaua}&Lyv#h zhJOIC)X1?Qr9{ykk%HKV_f?&+g6`4Krq#dge2@%B3FCdSLbK?A7V0FQAuYay6u#Ls z72OwTNX>1rAgEG7%MkYSW@`8_PQAIA^6M`+qpN2JJ52n86*cS}7Va+p;P4|gTUgECfNmb? zW)$hxm|WfXXOjpc(-G{AjAJn+aYaB>pgnCeZ@)&hQJ0<;Poy0+8tZ4MBlXiG6)BKf zgoNY3F&PnQY-@O#uP1B^cts-S8Q7X65Zy0BWaIz6K!QE}hg3lRj}9WjGvL&zBZjK| zp5qPR>Vg>Ei+T+fvhGq8?j-~4OLDir9eFf9&FGND@-jS>V!d;=S0Rg7XC9>kN=Ty+ z0quik$S4O>WsP8HL4bMgcTNY%IF&?rl@{SDhMeV5{%(bw52Kb4`Bwv{nsiWW_F6)z zGBPFW_o*B{?a)#=(gKcaO^Zt=%YFb!Le30=z$e|jgjam5YYLYd^|a|-u7l7%I{twRhHAHi2p zyNX@kp(=*=dO}}fzxt3n%&X+!+(NTL85<+N%KRQ}kLBtp`rI-iXEp6V!lbVx<%eV* zxO-QT`BbRf;f8s?Cgwi}6NmV>;dEjpHNmd$oq$MbKj0j$)0k@HeE$OmlL6V{AEe)s zTJr~-QG!KW0naT38BldugT2CEdUFJlQdSrp$PmiSTM&IgQw-#<3C#Jj`meN?#D3tb zdLeNZT}ysZ3qzyY8Le_hM-HmB%#DO$Vv_d}^lAjF`yD@51pxJE+Uv~zSjqt20QJFV zXh`vSFa!d0*tq;_I72UtmZUOGp^_pHIo(2Gw#T`KUK7doM9I(zonh%7aiB*bof)&B zkrN47-I`9q=lbH`B$g1SYobi|QVW+D0~A37xp6uCF)U4{`*%{bjKIFo)bjLt7ZDCw zH95NfYG46;lbC2Oa228`U_&ObuNA2@dvXsY5V-5u{SC7;k5dGD-G#fVvq>2j4=h4c8Pu-jK zDjIyi)6L1b&xAAqo1JA;4y!mmnevB&wU6=N7t*+1NY+N>9BawerD8valP3xT} z1}27nyRlQGIB4$ofIpatAcRf19HKTXF6Juk@T-lO`iE;!_XCL##CF)C}R;f zf`}0*nAR-cU`kB|i1{PU4@mpWF+2rfNYfV-s}n&%{9)#mV*LaN_z|tJYNAInUJ`7w zwsNX{bvc0?c-aNFo}H#JKrd&q6AbMZ*1-Nn6M|1D{`UFe@3jH&8*KkB)3LNNz~*9C})E!!S#WoCJEEYxezK&mKPls(~;ufvcBJw3mE{SYM=$Z1+66f~-> zu1>WyFt+#G+ULp*!Obqg4P6BLgG$V8v&pQ5%FqFMstX8kK_^5B*40vkoZn}hZFA<) zwr#~F;KeM)n=lIw6s-*54XddvA-bc5=1OlhiGdUokg)X9f!BQK4JvaaXk@5^m7nsc zsxH!|KW(914OWVr05tS>lXTTXaB3|kAR<%MP`BzN^M+;PGkcg$2piqS&)~pOu1r1{ zf4S$c=bd&yq*5%Xprd~~R50FI3typ{-gjBIhQ7L3wxd9<-l;Z0`Ymo;d5H-NBgb(G zr$}KC>*hG=LCg!Ou(Q@AK{S!i4kXRD&wEHSj?G3+{F&r%_Elkg58-yw*!*9S+Lr(q zsT=Z=X++o{a*6N>bH``#Z&vq%F89u{2yWHOtdCi}hkubB&T_@Y3knOxV99vc8E<=< zm(61KqTOJz@5Q3~7CZ2pw&Kow)=bJ#0Co^g2es9n;{M1oc?oYLl39eKAcq-dtTfEs zk5^C+43ULTlePcV6+!w`j^9ZR-ac3Ni6@d8aU{}FR#|qTOq-4J=lanq5*v0l;RH}Q1#P4ku2(tf@= z1w}GC?bO<>^o-S^lFM6go}&!z*`pVmW$Nh-7gTkP6PlZ{1~c=!=ZdZZe#IO16rgMN>D6_&$Cx1NXbFRnBvowvjg2dO z9NvUB-%3q*Y{;q_{`#WZ?{!S^sYuvjCNF479Y0VAxyus5m>5Vj?R0Y%5*;0Fy1zuk zQiK7*aT2}5XhGYPJwgSYk&k?sV%>14Pyy}gN!cqzVhD>b)qKTIwBBb6?CQ^0Cl|t8*-vi(j4C-4rKnKT0XTO46^qWHd6QDT>F9hGfs*4eMlC`K94zg1{Ey5nZFJ_+zDIL0Ol#D+VAltu)T#4wH| zn-Tx8Q5yf`pe4tVNKH(gp&_7?d%c>#u_9eW8B@uX%GiPA- zBxc6+dAUCW_(3hATsfQBP+jQ+Px8zXppEJL@8-r32UjRx3+~*h-AQja>A$uFRh0(H zrG3e_XRbz3At59v6rx647R zuv7={v~3~Y`ozGmv`dve!e({f@#1kB)T9jcXDiP@{h7xyb|BodfH4p!tb0v?P{(Fn zy#AaiFH9CD()^^{<$uE>aKqhn3Z9%qh1o(gQKI5V7**_VWl4h_7Ic~nvthd{=kuq? zN~i<~dtC&o%Th%Nd{ryv33^dBH~PTFQo88SOic;1;;zP zyMBJWTb8yb^Ub^(ikG-?+?B>HQi{Vk+S4v;0%=LjhUL%*fn)Mr%cASXR^v{!aD`|I z^VYRB$sbrf{R;YW`2zucX39O*l#vb_UO_jG7&?*#SzgI%{<^=_iLyal${PYwtSL;X zU4TgD!<4(iQJ!p)|J_ftQ0SBeK)?qCNn*T_ObA^rUHQBdHF2~JTYs4g2%Dd{>?VL7 zc|{;+XhjS)06vFNdFwsiV?0x^kNleO^Vi9Rh*BcK7@JUBs zYOVnb*P`Ue>xE+bDmC=;MV=VA2-jkw#V6Oo{-%b`7&R8h-yz_j3zu`(QYl z$`#1yfRih*jp9&$eyLx7i>MaK080z*Ltv4AIF(&9P`k}`Ah|1&8(J{HdZk5m3PiOg zq1bw-N$rlFn)&a_VB;F#c$~~pFL2wYrm(M40dis*wl$_(uE2YWYyvQwh^z`T6PZxk zKDAvx1>VIz$M0qPxnYh_##YndOM!rkqlq6R2}gdO$u~Eg4|_faN9XgH`j7^X)Ujk6 zNueqayq!jh;3jG?C0GS9Ag3d0XD|Tm9;qbB+-HpIVlFVT7}u+g*lh?-?2a{6 z`g|mquUGNKt(q^_1oxrHXnE>O@AsurqO(Hy|DjB1&`{WHSF{8;cKEcJV zMA4K3UKo%P6?s=*(=p00tbU-?niZBtc)?^G+|p|(mlYSF#!K{Uzvzd`-{#~L@*+oM zg!)4J zvqj-D5IPB(kb#a^{RXMbuVU?VEpj5gw_R_{Q*O$wnTB`vm(5&xM@^)Jxh6B%_L{(8 zj?hFGPK4wo)6Rr!e9|aQ5 zEH|%cOF?8?gDYpi)1Nl)tIFW~5%!E{Gk$}gHLw0(CrQN{Q})_De%IE1lCXz6nUE@Z zp8)|T8xC(z*KS}|G~15QrCWmG2}NkCnW#VC*)w4o%hbZO_nL6K!yJ!5wM43=+|z1$ zH`fsDi(erEs*~aq;gqGvj)6P!5^k`RT3(wo*|du7-<>F-rdO0tWjF_8zu&3kV8HPgR*w}CJ={gK8W^HVm5cDUkRj^| zi&4Kfa+kvdU3VKRDR+>` z7LJInc;$cD6j$0bga5fgQ}eo$ z%84G>-6<}Dj~);s-91a!2aTA*NLlW#K>fCIX0&{L={wSK8rq!Bc%D<` z)+Yj141=#IWSoNs{b$FS1oL=mV)Fs*Rg^EBs?qXp*75Gv;1KR|_ zawUwK!;N-$!fTJ56F}UDtU&sE@S~oVHnw6*WL^~uifwUR{QqYGB+KmimeTHyq{b+# zfYNz=-k7TA(|QNV9;kpRp16b8->JlMly6Y_DI@rEAby^~0dMLTC~Ni-m4ut$t4;5f z09u!0H2Ld$La%|2$eClI=Nk-5-p?6DKCc}eo~SKfP;z-$tnm!&cOwc?ckom?)6)?QOf`ey)Dt@2Q$ zX_!!=wyo2ArA9No(`JagMrh?tP@k>g66Z%85rY|Z&(g`Sm6n&nBky(1;!_l(Z21wM z?0V><95_!8AcDB#KQ4hKF0S8x0$*h^$ZkTF)Ny`_R+d=(9W&xwBo;sIpyRY?>#Jgu z%|GnS5X)T&?KsYOVv}Asc}S>58I?$Z6AcWi{DL=!>v6f>28cV8O3WY)jIEN}+%rGU zulZW;>?IS}u(ITH-pQ7IedkZ>z!+Bm&l?>$F;|%4NqWkYX{s{^7a|qFjsWo>hmrM~ zQIZ*l(>(p{>cyzpiX0TjSnAx@QTIzGfn=C9#V3+K2Zn{O+P@AtWEZob00q!zdY7wq zN{GR?78P@GPj|nA){QyEec(7pKy~a7Y>j=?{s!z`f5}u>+Mj1$SP8Q7xCDEe6?*5= z9#+$C4x@=UtYyl==p3rA90OC6SUDBTN~`^*+!1azH~Zbrp@**g;x*A<`d&3tyu(Vv z1SyYQR)raJ&16w=0*W_(Q`XvZ?SOv^({|>u&cJNdET6`gKA16cix8(&CBq#m1z2{SE|yk@w1XtX z78*9%m3-a$B!Q5t5C8thVU@9{MvlltCXI5gEvjO}5sk4mBVQW_D|H-;M1MT(=0$u= z9K;v4ZsMQem3OK0UsC^=ni5<0k5N|PCr!hN%V_mD?uzD7dAXHg_Um8--_(a+LBIG; zmBnT>=Pu1hH}83Ad9B7}PuD(@y~FVh?(EBMr~wH1y=xQE3hWUqNhM1eK+AfoA*9#c z`I$yh^z>Rxt~)L)C%nENPHs>y%j`i*qm-dwN--mb^ zn}b~_C|>Q!%63MB6@{PF5&`KQfng)y9(dEmtl+Vt&wP$d8|{J07nj}xZL^>dM<(@} zx8MzS@6_T14|PgR-CIobXO-2=seAv_ph#3gTBXrk8xC9>?%nyyd=!e&QXQS7R|Re? zU#_T)Jh@o`I~afK4Tnd~7sj+4gv1O&D8gmZCi+!++uhw1yIvl}zeGZ#41| z=Jz#|^K_{*!kcJ6f<+F$d2{aKE6Bnf}#c5JwQ_#`;dsvk@j!Rz5%Qz zP9)G&R;A;yP9&!AH}Nof^xOlDU?@_#aA|iUVBD&zQM1zH0d9Jd(VQ$ki>^72fKVEx znfgr8Tf12^BcXWt1LK-yWQoklLnbn%*{yo1BXoLD=gy^KM#2YUnE4U<=)BbDtnIG%+>R(4*Y*9gQ>a#2z1Z&x`{RX zvKA6P-ROM6hSluRJ^s~m9wiJ7y$3WCGR_6KY~0cMe2@N`pMAY{or9xORkb-GWaD=@xT8yZNGb1wDxitjMS>=pO;*BuAz5T{}iZm9g^FV zYL0v1Rm`hn%H*Z|7g}gaYexy1j6!V0bfq(O|>Mp;<;x2HEFOTV+zH6IXoJC=4x{)0rR1VJ!BghcAMs8#V)#FvU z7ne`i0g{mc0b}El?vl|L=+4LVfcnDRT-BRo9w#WpjnwzbwvKAfYtPBFMoQztg`7e8 z$_zAG7Ul5EBiWBT5r&i~N!2^TU-MBBbCWV&JOp&}(3B*+NAbZ)e-M-t_64J_u!s+1 z9EH8|9Z{!faal7O^F4Ep$_kX5q$-T#+;*k)JQI=yUsW&)6I20hHCS`Js?bb zMsmFOKvcZ4`U@?wRKWteN#KWW3f|1rJ-1vf6Vqt{sHqG0P~^tHAF0}AU}mPNGz{Y5 zy~a8sg{gQh$9bipAAx%xTJ@UNqP=>XH?rNtX4us;rLWH+*+UCXg^nXYG<=O{Kzb12 z-^mo&%y(SZqIKkgxBCWi#LkpZQI0suL>^cFg7HlBk%Me1%d=tL$M<26emo4arK8U2 zU01XdcV;6^>mNV($88L1uV> zwzibKaTEg-A6oB@wfsNq##qHmW`)$a(Y~?*`*iHork|k)#l8^8WoM+b2o~${S0cTx znC!|14Hi+h_}-a93CnLFXZ6@hhhJc0riHCr>7uh~ zf-Tbfp8ghxqhDOjxh2F926>QBCtULlc;jhFEMn}kDH95yy+5iT>Aip?(yz?SU2bv1 zFx=&tZTW>^aiiX|ZxKl7xO555^lice5G(jDImzgrO>~B=>i-9w4$SCj8g0 zUjgB!;4n7NXOc}8BxFo$I`v2P0??fW;=T_upP_EwvCe8Akfx3WhG5$t@tq=|k%_^X zQys-#B?5DeukcNYLbQ#i9whxz~$eNbmM>@ z85?*<$gXxe8|yT;z%0@J{lK5}$%W2%SfkP`)S!k`HkqVf3|sgS44=c#I_)0@xj?~v zH0&i&)LDaAH6Y~{YG3z2G;WKFP%eJ%IJg={LFN-8Y!wuL*T?ZGbB-5$>&HkXzJha zlEH!15MqW6a#VvM=!Spyf91m|5Gc{>2E}-9{Q)hAKJakgsHqU(BCCB=1Y6tMWk~tV zlG1va4OhZ-it|+-sSe$m?|a5J>`r*3TJ^~+pO>L3Y0Z9QsX$4v`^@u zjL-_=b=B3?-Fwnojdn}Us_Tt*+lgfUI|dXK!mv}(WXDfJQkTSv}H#fJx=+Ubg zk!l`Utc89aWia!f^f+C*b#wP;iX3I;qrEZ!_P{j!?xg)IUYx1}OTLO1z4ve<{c)d9{IP;_ zze_a&GhsXUpD;=BU-S!!=Hqs16ls6YkyH3V9&VSvs30OIn~cFa{dlW9`xKA|`s_=! zFJ6(Dp>FB=XJq3&Bw7v&Do1Jh zxNGmr*I-1BTf=ZUOLZ71@<1Wt5ifEy4u>fJF!Mn(2i3h8DdX#d1qonvQTigkV|QT$ zrhb~rgPGHhUf?-$ZPy+H)2x$t0_EPSS%fo&!pFXZLd)W4gi7ah3hv}fGLySMG2{{) z1537L6ALF4ewxKBMWQ!5xYd)kONd560P8kZZyLJIpcg;&4L(@~xuuIK;k9Rl}TTb zgJ9L6)TIrwlFa0pN{iuBIiWh2NV8!evU^)y2p*)g_c@!fM4Eoi9B!JcIh1PVz_Svn z|4jA|pP{Blrb{?=+(kFwcY3`--i>7v-!$Ak#W5Ulr|T=d5QIk6lD+OtI#j>&+B8>< zVk9_VkrTkJf`-QwdJ1!l$2IAvJmt&~XevK*($%JsN~C2Al3773r*Df?lKRi5mWE)Ln*fyo&hAWsxkB#0edDYNYe@6AO7Wd%ahMD7-I#~65JKj5 z?kG6j4(h_pkGZm#{~@ZRFpA62{!f2!AE#^hQOm@C$gPluu}(y3u55eri6hpCTAr3rffLXAV)?P|hx#P@%?hszKjM(xnX_ znA8jG5cU6Nta>v>>O7dx$&;1&P~t6mOE^E$r8n`M#gq^nY8FV?g<#LH$uxW|S-(x@ zw#Ye?C|lZ(rx1N+J9O>$Sszg4(qsg)fAH~vvj+#2fLMXtg4LwHe`~DN#9}QDp4uQ< zC}YaNIBz^lU16AF+G(cP@A?0B_H9PGjM_L=*s=s|ALv`-Jb58EtwS78@(OQjz(__y z;Bz$5-Cn0q#&1jWY!h)qtf~|RX0oJ#!PsgEm)V3p;RAq_W53sEZ8vZ7=)_vWTNwv& zzO#w#AIzKJ(XvaTNRCYZjHC4=S!z|7XhcX|%iu@G#658sSx!w2jg0S06lfO=$qO?1 zAxq{-Y*%s_4#%v`>&3z=QrLcy8lhpAPuF`blRI8_>~t8w5G!%&Qcwas6j=0P$jXrwtcH86d%4FTo5&B8+m>lQyN=6yUG zIA~gCQ8MY1)_kv|ewPZoChujuG^h1QK%>z2=d+v7jefWE>j;G!7qdD~j3*Z07jc}N zm_yhHMKJHPf#y+=xZMyb6~IA*r*fcv0rh6Ere8;kbf?49!?gx6B)hPwHv79k93%~v5OMx=WUSWuz=H5x!-Y@6qXb6@+os=UHa@)E)a_!2=>85BB z|NT2KiJ2~(XZ8m(ihmu!iu5$9Rf{xgsI8QEgd;&*Kw#u+`TmwWelYh`C+e3AjllU) z32sN5$rQo$s{2o~cG#`*7&+2^Qs|Dzkf+--?tyf=11CjtwKFXVVc3l zA<_@}A_7BGuE^6SQ=i+eB`#S#7VD9!)^iD#UA!1*djKKjV)zUgofdFmsFP49bPoDV z_DI1Ga5^wVtd?N|R9`Oo3RLm>Vrazyz6eX z;W$Tcbi^YvFb9L22Pxo0risY3N_KS^c_hg5*8fgm zS-BGC=n>Q!1M-H$YRYCx0yMqJ9nh5Opfh+;oiqT~ z(p9g``9Nh%OX{%aH;3h&akD3bu>(BSbby0f5#u$3Lw)0r{D!XEXa}iCDN{(`!h(_G%?1;A@7OY#-SEi?T5=U6Sme(^p7~JXPCMWQ+ zojalGgSfh;*;ga@ugt(g@w#!hlgqi&RSdjX1z;RsQov%BeUYz>`U(XJ`=?Z5{xOL7 znaOsfK6He?lXe{3_y|}nD%5Rwe=>gbC7B0HJ#_1+UmDT${VM0?_5GBg z;lKmNEEqZ%e#q%H7de|Nm~H*~`3zJQM_Ark3Bwnp4&sFs!!|YUPf&eghMoGhr~AeS z4flEIi@fulNHvye6hu(*{`%-puy^ip9=8Hl{EW2kGoKJ!@*JoMB)LkF-oqh*Lh9|Z zRQutz^)$0SLZwt%`XBQu$_!KC5{qm*b15Y8eQHPnluiS+9CM_?djm$sw2;iaj=>2G+bP~DQtwED56oqJgzyZ9Ld*5PQXZK;UgK%cACbY^{SrsJ4DkaB z#GThLYYukyOPDrvuK{qYz(}gZMRslW5a;pA7opj&vRFw8ffz37LKzFBV(VhH1IT+c zr7z#*-|pVBSLp`T*R2_&`5mGCcU|>#0?8I1k}1-f^PaBLI>D-5H`FySBm2hZ7te*F z=Vl+ml|@ACz{O^|m92&g<(w*vw2ZE~UHw&+aT5@KX+!g_=8yUf2ldOHLSBiH>Iq2< z?LeDB*JzA)v@hV%n-aRbhvQgck&d98(S7@4?iu`1^l{W6B*$NPa zXgh+dkLjW$%Tw}m04R8{-Q+PD*u{d;i_fb8OfoKmtuX(_gW#U?EAAv4tD_u#pM zz+B8`zNf^W2IUSbMgVUp&dRmdwHz@JYs~V;kI3;C7{)SMumYC6Eu#S99*#%*mS6cG zUI6}dff!6`*kOI~^=o(&OI&_5_%GM>k0o`zekV-m15QgW@%Nrs3K? zDE2|(F-1~l^PN2eM-h1G2J$}p>LJ=!CcU&62KQsP?ULtBRyE)LK}Lmt(RhBbG^A5| z5FcXKIE!2^=JTT#BcJ_RDqHyMXbhlenzZu(pFZs#U437_tS{6 z%ya#Yp8ZY}*P7>JoHe_2On!O1Vq#JvprZGr%g}SkQES9KZUMcg$~ybC~H

    -VrTv-yng3mFxB_CisW>80D7HTQkpFgl0=}+!v zjz4*RustaOs6Ot2Nh1APwfZQyiW*992ndHwjAr&9Ibr$gKIPNpLtkC+F6IrR#X1NL zz4$83?ka@}FU5-Cif=~H{X+flmL!+bU{@~e7& zqEK|%sNyZS)mSG$u6tPeS%jyvu#nwekLrULS+Z^VlcM)Ii6_HV+_=YFu8nA4Hmx`- zqe>SOE2}jf{4l{E?=2^aEqUya*jI>4qu~wV2MPnY?e8330lEI)x_#k?oPoce z@yi5QsimQCAf)#~)`_UGuw)TLdKoWuJ`h}rN7$BJVv`Bo(Q!ANWR}ws4Uhku?jI}*8RztV*i_x*W5{o@Q zt}_UL@;tY&+!j>$H9GhuvJyH5Z*iuiL%wU_jMV+MzWDGMgHhs4`4cFBG3SVk7&72K z;nrt()vVduoa#&#n2p~HB;Y(S->A5R3rZ0)0p0=YR95}4@Q8S?IX}(ET1XtJJn@D` zC`SZNXl-Vrqv5rpSMp;<39S0|Pr42--xlAuTXKB|i!-M&4hYNOI2lY|jB8bi6I*Oy zez+dHVuf8VM2r|4n&cMlICtWhLy2`$L6uM@V0E@FQH}8S(~NFwX^_WIWfJljka;At z4~8OQ(#1|DMl;u{sO_T`2h9<2BTrFA5|10o#4}>6_y+q2=%GiOEH}}Q*F=QOR2%e} z8uEfielV;WNUn)~C-w(52@C)t0DDNt>u2Iwhs)?tqlKN>Lb)<#IV}LX0$z9`_-WlU zlaC1I9ev@Zp9&AD@j1}4bw>H-N$6P`*OIgc*RC$jOrKm`Fd72lekfy+6@+qab#K8T z8c(hgAB5;mHxK{zzo1?I$o9A9{q31CN0)>BhB`;dH&1g^k?F57#sX~7D z;|M&+*85w=jlGd-SBj7Vl&4eGkHfn|jMa>hOPIvJIrdMPEN1fMddTmr>FhJPztY|K zJO}reSYPKYNf(!%O`yI>U4Y3 zMhivvHzx6ciyfsko$5b2o~OEHk<$W$97wsD?n%9s%;EJ}T}bgF|D>Q1Xmoho^1{;a z4?^w{_YP-V^t!Ga9hF`-J#;%NriW=!75@gm>Bah$^r_3VxI)6@ zpQk$^qi9I^ZT+;szZ#1Ss=kK;u4LUwN$LxY8cg+?k5~)t7uwmXRO`M4^hK>rEmpb_ z4${ewun_jW{(Uh7Ru}b1JeS`DEONsmNZV_?^6R{vR2)1CWLnCBpdo=tOE1Q&hsnf? z21wm)aXhogk{%?xV~m>e$Kf#^)cbB({xm27fP=kpJzVXq{{c@Xl;JiyEPtB{N-PAz zy0PX?0Ex5x;)B^xSm%;FXxO@!ASC#%QPimR8daoUPMvcTr!dZ9R=$@S| zHgXCddaLdVjOhN5^iAqJhQEy*LbOPqj$uyrm?K{bG8&&oXD^IOS5{k?P@gLsMTDRA z9U$}XcZ7)2zN@V{mQijSH1cD8on$zX*}TZ&2Jd!949@(V%)y&Evc`aq9hzxzfZF1& z)cXzu4k{rPG%>4Pka-ctY`oP@#3Se`PNSM(WXNYm1T@Y#5kP7L|9R-~w1Ys_uvL5m ze~10k93ZWLM&$rwC+_5e8XVKVUbtCQ`O7Fgd4^gR#=OWT8&CU(;?qU#XrF$>3*s-f zTOkgt&-xmd^4hVaen^$W)^vnzPDj_D_ed5@e$;J6BZ*tZ<`3ngdjH**|ia zne1U6>$Zg7PtdQi_>#C5PDC88pOOt-%Qb2eix@)!)M^3)EcCu^c)cpUd%u<^bq8$b=mN~Z|Lk56m$k3 z+5u$|3;S#u{p^C@z#8NgQ`#xf3Y}4)#T>>$(*k4$b*)k^b*!7KRaJP+cp^jebWJ6S zvja01n3XHOiYAyup&nkr4BPU(&rj5IH;8Xn9q#D{^GOav%nRdjSacXA_N;tgnL0s^pXd+jl)SG3gM;CFbs+D@5!RPIu9aZ z{=naP^+})DdC>ZjV36_k*m1N8hn1b4Efo|qse&5X`vN!4mjnS{BLkAO2iN_slY@_o zAL@y-tm=A8v9`7K13Rvr5dEb`{W*y~<+@$&Pg#X3vlsS9IrM7{UfLFNT9{tW1y`?vakhM`34oG-B@8MH%#kZMzP zbqPK4YWPU&tUESQ8u4SdzHh(v$-LZcPlt7Jon;}?l0@0agSw`=hmWNxhugkxP=eZ_ zeQL(gy4Z(amu!@=R$R!!<}F_*qjq4jlX-gqq3xdOfe$^n zXp@kl1F)M#mYY_@y+e(?Z+iQMUn$L2Kwv}v!SHVgcatgWI#?2aB*14ro_MpX$w+Cov8 z*4{!;XT!dTyo^qf)fO!ASQdMdo{Zg4C7|&jxBXRgs%beZDQ=@q4c{3{Cve^%!rfb0 z0sdTos|s0Z0>uN41g!TD1_uY}gOV!(SyBy!FO3=>X!RW7=X9^mNpDG? z0T;A$U3!&-FcUVNAGWMRLe$hykZ1rtA*qAG)DUMp59WANf4v?U19$+~#Ms1W&fFtV z4EUnZwSN}0!Ua9yt-^9#@X(?Y{Mkx^>_pQB-qrgNe%{OhQwC5~S((-v0h)Iqyqg$A zQDMwOackOx!2K@@S>DkmBnZjo{Lao!v~}g?dy+j*4>7R;9w+mz6kS|Cq_1*izz<1` z`n|)WApyD0X%k!LD2RO_%)45|IEmuc4?^Zslh^d`g~ZwYVcFMNUa|A;p&ny8FQOnJ>%%BnNif>wB6Z1IoVv=14a)O#W+8MLok87ES|{ z4=}=}XIjn=&|Ngknja`rRUw_trGjTKX=RbWL-3V7DKMBcL(uB|oHNRd z64*p5+3N*p{}F{*o1u5uS!+Xcnm%It*ZVhP(46+`uj1s6W^g$gXZvucRG}6cYJ>2( zoep^to7^fi(ZpkN1+%r9Y)AnSq{qj-3ia`i&OrwXZpZ~*l-Ppt(?NOjW{GAvNXch~ zn5g_RaB2S6ILI`J?r&-1r<+~>v+ zRt=s=EHLNae=!*dqrfuut2KIu_GQ)tw%2qtL^JCoPA|g8R?X|Z&(i+ac&tbeh2M2~ zM=xg?e*0WbA0iGKo(#`79GjSmu5N1E6$$S=_eER1!z|u@v5Vj+S&R|$-M3FXX;#nF zXaZnpTp6uXr$PH&1!Ff>(vYlg%^I%U2sCYkd~7yez{z2I4tr8`X54{RQ=g@GcJ#_v z+f?Ckxcj0g6W?mFas0%H*sHCRLUsz&M!3}PX#ep=& z#wLoQP=vWACW5|&4kg=qW>JVS=*(b>dRAt>)5}3mAJt!>e1t!86ca?%H;IGAj-x-G5S7jV#4MW+gMNJf5?K3~Oy7YX_U2i*eV#t7VC-%QrBBb3k116lH4((D%3 z*Ug{};qSPIt=&_* zY&&i`N@7PMeyZcjqw40|S&L05N;?n!kL2-SQPjxXI+ANNG)UCsk0>SGe-+M9KKCw6IA@~$Bm zrq(*Lvda$q6XP6#{{R-gJaY;tul;atH>1hdtu&fNAQmK8O6P2n+hTRG`&idk$*Un+ zoT^-4G7zcgOgJ51HXBCyJ;8`qEP_~Re(&25M`Y=9X!{8cbXzxF23`hyd6a(;YpN7% zwoiBuaWrM^wv@o+MCdLi<{A^LK(RH+EOZu68*fvFHH&;>|U?-g9C?(lj*b^~m7HGuI;pt6-3j z`T|J|$Z6B0og<)v(Gq`JMvN&E;vzjxNTSb>nhQ8Kc36;W#1g! zxB~BWmr&Q*`=e-(H$FL{a35xKxAT3Y=k6sJzYKdIni~8 zXmtFJ95GmIz}?nTwkBi&UAaCndKEr)@#nVP3>4WlfvnbxwN*XOn)pJi6UfUqUa!*W z?s*c`3Jkk@4`v8}iQ6SFbL1VTk)WNfQHEjhBtf{K>FkLnx$ekBuMbabMc~bp8OIh>9a}gEtOl7+3^Q!pQQ;Q@ zWD{-jV)E%SYJSX@k}8s%BL@Za(@W>LqsTGzl&_wMrfC$2wBe{m*(Ql~IAWYlDRTyn z9&39T3;8{Dhb4gy^>vfP+J#&8f==U86d{t=`IV9}1-^ZJ(zUqe&yv;N08y5ySMdke z$La5=x?G!LBHJl<4Bq2T*?FEPRSW{hYqX3TLoBi;UL7VJ39`&u8&>9+f$}sbl9zv~ zvb@=B#{WAW=D)cqg)#Y+-s1@3OlSwzi9a8?i_Ii-+U{c~7pdqaL>dg79*A<78pN-L zVysYvQO1=${>6V=oJb=R+eo@E*zzeu#Suuh4=zx5A2>||DlyqU3!xW`4BklBM(&aV zgPeaV6iLcS3OL{zow?X~}!fM=6?cS`kpZv|2j#_NP!G2a?5rTK0x0gr6 z;d|fs_nEC6WXk34@b}D`9;D-D;dAXsLifF9NT|e|22Q*el!GC5H|%TJTac^d3qM(! zp}bA4BM*~WJx1rfC(8J^S8v0<6l^ZGi7u{QL0?ty99jtAnc1;m%e|ciJab26ahq@y zgDZ}+A89)_frt7BBV35QG7S`Y2!ykE;#rp&Z_NSXa}fnBvGBmvkewTC%th}dyzHZEP2=E>fXR9fj+-+UkZ7{>Cb zgz{erFisjPOINn;aWW)_W*Yr>SatEdJ`lk}N{xqEh>`~P*vSxnStt;eo{-tFzsp|m zk-Y9}46&82hDHndu6(b;1DgS!kl6ulZ(ILJyVCYk*%KG4zLbo{xh0JAL>X6Z;`Lc3 zl`lb{Y(nbKH~vXVb^G=5L`Z7PwUHqmJ9eB2mWSF;%P6yfoddbLiibj(sd)LC%Ad1~ z(bZ71y|raHKMh^MalXS7M>3AdxeKJR@0-(p#Dq{@F)#wJ8qATugAY$pa-nNi&!?wC z@ila>>FM!@2~Dt-jW@hnUBkYS4=7D5f7aZTBluAVPOTcy*R~JP^yBXv;nojj4OI zAI9;C=RWXmdl-|4H)}>W13uIF@nI(hZi;^ut6c8x#?7RIfne{?`f7e*bA>C<3hUViFT$lNg!#GqCjdXof~&K zxrw)Ymz5pnR2NgFD}#D`@IGk{J6y<5Ed=p)*$K%am3ESDq~wVa9vl_-2s_xvW6^^Y z^+y?Mg1hLNN%(6Go-fiRm#Om&2wz{E>^aeDGY%YZsTT`TMvtGvX zM9q9-c?W{+#qNf$;~nC+y`zj9kOfkqZ>4;;>l!8%`(r#Wb1Oo3jsipb4Tg+8*VW8l ztAIl0U**dLkL{=epU13qgjow+LtC5PxaVa(g--GASTNx7HSR=X^?8Y{^R&J3DDWl3 zY^=$=v))VIBRnN0I_p6Hz`cxko8U0S<+FW{WYa-%p@9;IgZNF5HozRUYB@b|*du?Y&yeaX8HV#^S@6XqG>R{H0`Z==>j1cOY zT?$B<#hnt9uwbYN9qmjtcgZUUsdZqMewdLvk2eW!dI=jHk^Ju5_sSlo3w1>JX0O}q zJ(Dk$-k2qv)#?ZFs0#7{cLAA@8roT)?#J&aDQHA7KV(NFc#1)kh23=Y+;WNFS&gL2 zw}l@@Asgeq_S)Y(6!x16Nnbd`!!S{pDPd`b^8#MidvW>@mV20H+Jia~k>?~pKu~er zPQD&x5|ysyaVr(rnb!#Ir;W7oKQ%khaPdPaHofbz86%=oo)TAGH-;Sqoh|`r9hX{G z%{h$VUY_`@4n^ z_K33WDE$VP?GqHC3GERSr_}MchI=fv^S&^ii2w@VdCcpJf|)NX;Yq5ZLd$ zt;x}O@D46+%qjDhzCCLnm*rTyAHN43;UxJJkx%`*5J-5VKUEGBSm<6)b|UiIGt#fK z%lxn>;%PsduzCj?EDGf08Wi37Isyw?p zgVrh0#+dFlZshD1m@l#?z3fF~%n%%!VZAo5YIdjX+JpyE>GMcSD9j>|`wM-fR#GSZLKhLR3^;$cPra85Kq>27^G>k%-j3E&nphG_PW!Y$Sj7t6N z@~~$Au!JC#(V`sHd(F`B58y_5Kb1{fPv%HiPJgU}zII zQtk6Df=(5e9H#3#RuCLNj)u4oE6Cr0;kYyN{Gy6fL7HgoUGvU#DG!YYYlb1*`c%Y9 z2aYJCD-31?qH|RLu9af=#FV5p6Y0B#3ArOxP-kxFMpzoX%OqY?IH-b(5(p&eMj)lE z{!5-1J9#~Y&FPbRQ^1*H$8AoUjJAp+k!TCqN64gIh_04|N>)%>$_-BZF&Q$Q-YV31 z*J?d0$FY{oy<_;sh%8ijm~ef?ntI7yM+&0zFhLX)y3URKVs4{9eL&nlKQH%@Xi77p zd5obgRX43aEX}#XdCt-d%{+G^K^5lWmdJq2n)G%tdQL~(V^fbsvAf?1j0(?Vp#??m zM1)q$qlhvXmjW2ZY%`h8|AuUPq+*;j>W}cg%(b>Rjx}*w^`v;u+mTNAo0tr|DgTyH zh-9;$41yvbXyPR*+ekb=yN`@pw!uYX0F*L8wW7XgzT6H@Mc$j%22gNQ6urx)x2(su zf_UVo$xY8qSPrAktzI<{b6NQ*@c$E0z&z}Gw;YFS)XCO7dsu?2sJ5wCcyCwvTGO)i z)RM#hJ_{5_enBb~tI4Qmbhpc;T1qqR{LF@zX41dzpC805{A-fwie)Wu(pqENiU>9_ z!xYchzKC)6u zgRIj0AL;QLFRpUAqN%f#L5yVQVBPKKNJnB?wzZ*fnpy8c+J!?!CmXn)QG}r=qJSM) z)%{^)p16a(&7Q!n%{8w`_Woa_Ozk{I9E8%kdw8O0e4Z|Qe_9-4km9poXUB_tH@O1; z*2XCnC0G>$^xA({g)}^5=f%P_yXInZtUC9c=Q{o>e?4I(vB`U(x%;e4fX zP}Ka9o2~9Gum!LjKxxK5lJY1(<;WQ9xcGQ;Foww!)6`d{h zLB+8Rf+?WFh9C>4jQ6lhYglPl1Cu}oYroE0Q1oqBq-Y=FzmR3G7WhI z#BKja`+TC|A5yiqliz#8<3EsvY-2-iqq<`dx-ag9<~ET6CT59K^@;D7a9eg;M{! zk;4)FhrytZ?t!4OfQAZ-Dsc5)_p+OAZn{?l-#$4CX=EL3G-LW+Zj6_EQ|w3*d;e>; z)*g%;mhhY?$SbwK86n6OMTFN%^IE=X0Rb_$@ZSww4zJKvUQ!~r`zMpfGS|h1B0XJx zP_HU4n`9YEuOK{6UcpQc}oZKoh)ONlf^k{@rzMlNSb68MjQc_ZS?cehn zvga>bIJ$*XtHe1mctU<&zm7wxXvEQo1=pDTxwj*AJ3Op~JM75zPTA+u^+aiYDeM{Y zf3IQ}lC*FW@$*mL1qP!RTYt`pVmN-_jownJ*GnoSUFa9p5k_DO4x)0~uE`|@@i2&9bCyVzB!2f=9_16wm z9e!u0SoKc7cM5YzKh)ahb2?Nws>gt~1EX>Jygal5#sf&Z>kt7}6SFanpM+3c0f#FL z*X!IvvJwC^k5ZB^>~mfIs4u}!5v+i9I@CcN#4S8Ruxa;!HnTlsM;8zOi9Etl+N=JE&A zhcESWNBQJsx0Hxb6HbEOU(KX903N+2-7F8rLF~rm`^-3B;6dE94}3@}3epT6r_%0k z+*3rX-AX5+P(PMt5>GPdFV@UQ8(r_X>-hGfd|hXC*zc}j4%_vfOV3<-d5yGB63a#_ z>oGS1);mte$sD=+2w6#mD>ua^s!#uI5EWD$F>1uD1^(A=KrQ@eM?^9ZQnbh-7|b013%EJzrew=UGyV2XvKmPAPUF`b_rQ z{gVLVkj$OUcpDG|X1Z(IYG=D=kLM(}`vdBD;9ruZfz+ue8Sb9pz>aPI6Av+i{FYKn zZ}P4KDXXV1n5m_vY#OAptf32gF9?JM#DuEpYch54Y-~uSinMETA0kEM3Rn zxv>Vqu!BMU{z}QX8{J1iLP^j)x#@dIVFgC>#-27fj3)nUZBS7mS47gh(3l!pjF(_P zSdRGzVALkWSdQ-vFDBYy+hp5rGSO0OMZiDJDr2){E(gu< zEYy{Z+!Ve$zFn%(XqEO^R|7#TLt(f4OQIjfm5|S{-w#!W*gk~^M<*$G_1URCiq^;`fcd7DXd_TBX#8KPt;A@@i5kp zkBNov^0hetUb_+|Z$oZAOk`Cd)$g`2vz$#07R!c3wi}(bqqbu`$5VVQ!`zkv_~h3Z zoaI^#0uH95-KbC{a>pt2dLL>Kk+pl$jye<+Ob-(%<<`KeAsTgwy4s`+`3YgW6(KMRi)(G?6f3L zoFrGxa43fGE|l&?+fPA{SZ63DDRZvFm(|o1BUHvAL7PyF(e(^ZuUi%0Pb8Omup;1x z>Tksf@igc##(v1ErbQxcnj@Xrh*%7N5@S{|i#{Jm%Hh;KBM&yYiC*=OI_i7>=fR|FdNdLbk=)tsZolYxx8tKeW*X53NXa2!r9 zjGca)XUpJj2|{lt_{AEKVNOQpXwxwq4o*PE^8Pa^9=|SywN)ATGSk(vZ2;M26MoD^ zAA0ZjkqG+-ZW}yVLKtCrtLadeiVm}-+UNLuo0X>4tue8MPK>DIxkyrB66YYrU((|k zP$nZRq!`OA<3A)O*99EGH(p6NdcC^^7xblss`nS7H1@_IU1om3&=I?bL0kcPbjdvKxL{vrlevz~Iz{JYN1uw_9s{)fq&& z6xbJMkwEllPV=cbl3i>J8vKP|+x+wY@7F&Nc;QX}D-n5Fq(yYxJ*%+|_R*0)=0qq2 z8J}cq?DcNdmUstRd0JVGpxU9^ldlNlZS~=;btC9HF%2$OfV~JK4kwe+QIlgmVQ@Bx z+uxjMs*c-&4%KM^L(zpB=ubC-h~kh!0cUQ+(mCsL+ES>`bWr7zEO14|VPUiroc>D? zBx!VC!P0DE*U^vjfUxz2r10v7B=&Ce3*)*cIm;&*E_{bJ2OE3g9?4i$#iwh%u`Gz) zt?qO{puoGCuNaQv{|`Bpphft$`a`0lmMz*E4h^|bmn)Xrq^{AP6TUQZib3$K zH=wMEWbQc540zq?x5Vg~v6l7$R-eQjj2yt!^oF$1q74+o?iohPVzV2H*Ex_acLKt> z22VOc?S`^3?tzVy4;&AP>r|}qhYWl(Q#AbJUG7D-0^s$oH^+{TkC%?o*7f8;J7`8M zUpsu!m}BBeKFW1Aq%p}k>d$qq4Z3!RXiOi@uYS98asA*`?0F@gDBn)OU=WM1-J z{qHD6E%K9@h}Z>=m>*UnLcr{7j)@){_em*s{n=CpB=3~fgptWSRNkn#ge(}8+owj2 zMFr*bATx9iM&Ip=@GxNlZ(-Sa^WNuXe()rFc{=$)No2igZe{g?V;uQate%mD^xgrs z^exsV0!gxr4De&%v2chjRpXA-yr4f-Cy3I!gb(c-;c8!W6|X?xeH*5c-6%x5u=s_= z`aTTt6hW8LKF(^La>OjynOM+R5dr_kSB{9L?I#yV$(DkSl=3TYKMLKNtIk#Fzt@F1 znu5jeif++l4rR#kj>3zzh9J~&&A7Yn6XjJ8qZFvhe%gZJ3P! zCIvXMy%Atpbb3AZ3}5a7B0$%|4V$q@Ud+jfT9bqioue~UP;y;z9h_eGyO2AP^gsv7 zB89&*E}bp@TgmW>SV32pot@w2x1IDq72sUCg__`oBIrG9pukC{WmJX=V^cyv3e5YpbBYL{&JE zJkfuz&L-l)))`M1P6(?d%WK={VR-Vyt1UW-zUY;?Bjxb6LU{cui{T8`H8C+MFEiTh zg+4`WB*?+&L0FC>y=(u^*Lrs?rRAEf@R<^U5D#<*9XMgMotE_JWyshY^|xH-R?5mC zA-Do%P7J0h{=aR=CPK}|5AArJf{ettQ$SvJSby7&V9bc+LFS3(Z`DXladiwp>w|te zL;lR3p>^7X{k_rD-uFZRwo-0(j20c^8I&w(m{e(8NK-{xNg+=+IwKtZ35d~lg~cz1q9N+)JN4}@ zEqdoU^Y8}T9ous~F+f78UzwOFP_0~92BQ&?^lExk+-abGhC?_H!37c437oATUU~$1 z;E}KPib{5oNzN`4m(4n{lv_cc4a6k|zGD}juyS!Lm4lilKOjF^Iuu|mgR)&2bUnJ< z(17;u!QKUR4t$d(hJnTZTy+1Tbi6!*tiGZn{|B{ z1bA9%o(6&vvtX|$hgtT7s#91mQ|9GHTX>nNK8YOh=lbBLs|QI%zfcs%s;0)qZ?9{>87Al;r{B2Wh9ch?ZoRv4GSMwAp;!7Gvw7xsdjEuMj z8z?&{l63zlRg8~GZ~?Ft90B?9s01^1U4TaV=}X4}64bacSjNo{GB|6tggx@ahVG>8 zD^zAwjx+5RTY!@;)|tPLa)cU}sw`S4s=q;B@Wda7G5Y&0{MI=Amp&xuCMer?ThU_S z-w7b!7vG`$+}&FmwHMCdJHr5}R%u#JC?r{2{A|NUxr@yi^HE_@!DBlhIWoX?DK_ir zjpc!nX+n!zI@_Jc*&xYcg<%$YteLxI^``;gh_9wzVy@ooLZD=m5&M-l!G6$|@b!@S5s(Wz>V9~AowfBi+U^IIhvJcj~|L3ps zv1-fya%=!P9BOpEC3b0?al^<1^rE!D=z3R!WN$B=CyFifzvInfjA#)6ug|Bu!1 zD7|ZE{CBHC@{fs@s55sB7mp zL*~>Ae~2gtd|WSQmcqNaVg8!~^Vt(~MAC0GMRQ^y`DCp>b?H8fK)fJR3>3a8H4vu9 zY+uwyp4^-b(M%Rq+EmRpST4E~*;sj^uRN>|qy?6$vcvQjl4eAZF6-6t#q1Ec9I!lS zqoP&ukGmnQ9ihir#l;q6Mi(UTWL+kf@jq@i-+BELy2O3=7c@%m;p21NN(7-pe~PW{)~Cz3$b`>U|0wvURsTj;L zvMVcX*u+nL0gLR;k?w9}r(Wxz``4VHvEL_p*d~K!MT4O!HdPp;OQWTnXxTQgNpY1? zf^9i-S$SL2DXrEZzt=F1a%9VQ(WNeEJ%JB>P@?3iYb3eKX`*{G@LZ{{I z78xm(^H|65wf273){XqKshNBqE0`QETCbT14}Y4cnJ9!12a`d&8UJeRH9w4o;Xwn( zDc-~1$V$b-JqPg}Ao7c0ADG}-Rh;sCdLxu5PNAGBXI)xV7LEEx#RV2p9}n_L16;jh z9@8jSmGMJ+hzfz^K3Z|+Uiz!nzGIbrU%!Z6n%A`(HZJVUxq)A>9=bRHi!f1cSXtE= zL3c%t)^^m+&pRw2Qe`YH$;tWz>+U1bX^;+|E&0LJq2L_BqaB65S50}`yOme z!c3o+7gcv^Q4~U=-~?Zd8}4Q$kbq48#P|Mkqh(Nh+DBAG*TEJ$Xkk04qe;O16xi;F zv->cvc%?!omYt2dsnZ%M)M1VGq>>Qu?T`h=BPKOp<754QZME#Yk=&8AcUte3f?7LG zVN#`6kBEkon(MU*?Adv8=jT!U<*?}1Kifwb81VTUdp7_cy9UFD!CGw8*#rz8o3d3c z0(666FT_7Qt@pS?92Abf8uH~8&8yOAZfV*9F0KbbVN+Mr<$X9*L@8QFdU_8)laSvp_*KDh(L(z>MmhYG|5=w=ZUYToLKMX=~(=PkMPJ z@;A>d-pBc=GaLoC@pelg!p!G4qw%Cz)BBf zLF?P%She3^$v`J8*{M`Q_vkxfyezOiS5@9p;;2mGE=H0>)6lt4Ft39VGZ5yi-5zf; z!d$Yi^4|Q=u$Kp-v_|{=E*1e1h?$l9M_|_9gEc9G$)FcBo;b>xGwkjvED=B(Qt7ZQ z4JyVH^A|KR*^2>8*kblyFN_s(UULdSl>Cr7fC#yhtmG<<&dllhF9B?K;clb?6bd$~ zJPXlze&Oy^8N5q1@zz}|dq$rIIpzz#`#+A0B&$@j4nmGo zSh{XP-13zia;t0}?QMj)Rn9fBd7Ip-*xL5Orq>rD={TXJS8YzsGU<9O_~$t7)J>Mn zos2gE=XInPRcA@2+rc`I|H+Xyk)W3PWNJcE3=y3i1*z-@=~;^~D6P0GrglcVY}Q)& z0GE;()x@;YX1A4H=*Bo3f6~7_wJKJdjKz)=E93He_{30hVOl2uGmIsT?tKO^#kjOY zoE*fG=0@cH=2;dYmbKuaqMm+o!kpB zOpDsZGrx{}SQ(t8E1<)VRBOa!$_+vviGVQKA8C)H6Fr($u!4=CREO7kYauuh`JjIAfi$-feZQ}SoLQDNtUW`@3%TVj zuc%0x=f~}%QVg}I$?9JoTwyjIMokMdUp;cvQVVu4ENpIwR2cm4Ia?CzZp9}$Hu~0P zh~+*S1>_BIkuq+4tJx>Mi?FIu{tM?J-Uv*-+JTD5TXs2x-X;7ELViuN=+IH)pUHs) zz>AqIX*E<+tjbNKt2M2*^L8oZc{%|C=u zNzNk%2tUj-(RM4ZO!l~R(yyk&C;OZB1GhfKT}aLH$Zk;r zElEE(W!%Ny!n65yt_VK~RAF+mhIAFet6r3V`tU_qiCY*9ZXtIeHo2^%vdj13_3N2) z%*{UgD5q8!Zf$D94<3;)<9@#x2@f1cPK=qj9*EfCYSx(Q`;S+K7c-DkCBoae&^GyP>d<6d&$r?p|ojvTQ4lX z#m7wm2YBFpre~VN1%W)Vvw7HbaaUZFgAyfj= zye$Km^3l8SM8BPVxTJrY=bC25EW&u;m2{_Zq0GdZr9E}`>SO)&AAGwGSQjvUJ)t+< z8vL&rWl_A#{`6_?s2}!twC)fURU}5Es?JUjCjxr((Q52lvFH6c*k1G~rgr1t5ggRi zVsn?%emluaSo=fe-y^LrC~sQw^;vKyP#yq&lKjqI#isDnyxnl;P zDFY)8s$Fb@S6?3wvRn-XPG_hMN-Zp5svr6D-dgf+`2rVpfG6nPI5tx`zgzBft0fxV zd1-efA&N^#yaeNR9RVm+M82A#P{O9S{wKDhUPx>8v17qcaaj-ZF6#O7tR<)XgaW*Y-QZn8O*mY7YNIU=RCtr^tY_*J*_)u{z(>!D-J&`d+?de@TB_p)}2S z4O}%QLG~drRPthH{mQ3%PdR#gQ*iCNKp;1pdsb zlYLEBSY3k=TQ^zL9fFJ9oF9_->!qkCzu5G+{pHm$qvVISTD%w5L3S2S;+38G>pT%3 z`5r3NlF+10Rf0c4$j+*{Oy|VAH_N>&*j+C=@J^~;UCoptb%qoR-)f6vx`tu#2K&Ob z1kidC__z)Y&vMXeJeuAf&xbsKu;l_w023J3UJJ<;-*t?UwwpY~dFs--G;-d74`FV; zMHma0$gb7YC@+k`?=a~sRJQ-YjM8ZSfG8R?#9%M%-03gxdo_UNEA+Kx0m0t^-aq3# zeJ3tzb=I2c=RsbOCH+-&27RL}ldVA^knot0#E~g>I6a8UD<~8rJSYnO*l8vp_KgbaH&OS{^3eZrbd^z2c3o6Z zL_$HjQHi0u`vn#0?rxCo29c6RhEC}&>6Y#gq+_U|hHjXF`5wMMti@XVVBP1&K6{_N zk22q;8*0{)bpeZFnQ>Po?`imJL&h~x<$Qdj2oF3wn*nW6B1@tON zvNxl#h+pe*XRYkk_Al}LV~CSTf=D3+h5phk4uDX-MZquH7~6Y6K8m>ZA4y-}4x(A% zy!7ada8gO+gb0B>)i4+#7&Nlqf|vG+ii%X7gq$sz-yalc`1N*vNq2F@gtd3s!fOr<0mDFUwnWf;dvu&niL>!v6?g!WY~25m|1r`I38yn3G- zk%yYBCGq!$5SRJ>QN@mc5Eu6&8o}F-Mv-4M(g`p^XhWtXBS;8PNhHB}FTQjQcOXw% z*7_BiEj&-gCejv9#3ol3+k{;wPW*}v6S;Tg(|&(*algkk$Qo@E+wI;k39)umzVMw5 zpKB2_uu5U8!y4Q$2uRx`Rxb)n-3lK(^RkUxG*9M%mf05KpJN#uW)2A4hx3*hFeJi) zhQXk4+r~};Wr?7^7Yj}G*oNi%(*=0ga0uO?y)zT#nq#JVx`I9PJbmRP-A^j0y`J9+ zNh{u0VWEgiCWU;ZLVTetRLlYz+;ppAxoj9oY@v7i4R^&d(DcHoFY(|iB$!@?iunR1 zzzdm{_`>GXYR^Yis60SOVia9Tez$=NF$VC@#kD-!8i>&wYfRY2ANGX+!7s2reM_@) zgI|S(bi~Ay&3E_jme-6E4+V9B<~T@lcwKIZQdMGg%!L#iQU8T$N3^M^G4)-gmwNO^V8r$p zt#6QE>#8k$IUWPw(+oH3*7FXzEX;%xngIo$6j>Kn{87>2LQQws+y-z@#{$*CT!SJ; z^^n0~O{}3FQ?VHuf%3cmf-=(M04np?J0-hjHl&f3Ia66V`*^Xb@(3P5d2$7V=-4GS#fK$O>+snV;{ zGOxf;cPYYh*(R{++JC@&W`UCB2!v{o&@1Kr?Y4?#rQ)B2u)Fu_KNdt|>g(iPffl;l zJPDS;R{xS0u9C@AtI+Y7$f=Rxxm5+V$rEi*e#@}B<}udD8u2mf4z~b*Cbe4k!b$)6 z$GgY+R}C8Sd@_TQcQ5I(iuM_QNjRV-_<7|wy;4yZ!wy~dbP>N!Qt{xHv>V43-(&Uo zeldx)ssKtg)R1vT82yt4x!XevLSn7x?~>1zY{#67k`$+Vcn#3Vw12gf9_7(SL6+w3 z&uC|CmC7q^f(t>0=?k3WfAXmw$h!z{=&7vuF?9C}$SJy1C4i5@P%mK$TGIdcrJyZd z(ze>L`F%N34<1M%usA&&cx!6Cb}RnZ?L5|=u2vTG-g{cO0&IsUd4{TQJ@QEo6qKIP z9koDQIM;y=yK4a)c4YeB`tN<-(#xmTBnIZ$%*H`)7@2PDZhXG|Y{wYQ!sG;f##8hq z(f;HLF5Q-tC%))xxD5O|kjVZw%1q|gu5r;)Edtg+JAGh5=5KSfJ)NgHX54j2+Un$+ zIAW!DJw3cgsQl|0Dh2+VbfBLKNfL>-d?ry*`8;f-m!&B+mXljFHb1mgSlbh?jfl9n z5!ck1)JpX(*iVXB_^+F9THpCE5v3V2#Dh$M1sNv8uRk!XF0|4G{`wng%iHyj^utlSQ7&qy0;mcV(-`R9?1L%= zhxva@%MbJS#89)#d=l+X&W?-A5PBmBMYioD?K=v^QVAhceUi4w#A+oP_qmHEHpBMY zTb}6&fpK|upOh5Jty6-pZU&^RI={DHZLZXd%tb@Qlc6)U21!{*C!_&-4o3%YkwC?k ztRiFGYqu?i>EYS+M8nFVTI-^{>uJ>IErG9)_TUoVN zBg=jS%Es9u>L2b2djxnj?2XG)+K^|(&+uPc}2Ku$x4;@EW(o0V4 zo5pXXQkoYkb<3Jx`j>272=0DZX0vxFGm`7o6q5PM%1sFzVTmAp45ts=ET!KBhy8d< z>&f0z9^%_}zZ-_8diu`w?lEV%ksvu`Y#sV2vdn#o2*aPjTutE-K1n4;T>;_X`GmxC z;qT4@62He7Dpwnwi${#Z4ns?9{cO|?O^@rwjbaUht zW7$?Mt!7+7AUF6&DN78@Y$+@PO2K5Y-AbMg80y~q>KXPvj9QzjB+98A3<&x_RE27~ z$OP3x+axrm25a_jmSK)}8pF#hzj$tz&nR@Z{_71$U>mN2dU;#ByV8rhmkh~^1%GOyfTw1n9(3(tsIYN^q5`&Ez0s6^izs8P0M%+1r$H6sa`vG`&|plFPEhP4g)z; z%gvcaL9{QzfN((kxsw)|f(A=6ePwKeFCS;{2Gh?p;7GQ%L%de$s7kp+rvQYogJyfj z(m5@!f3r%@@6Irj-hyd)hOBB^y)W`w(#1JCSmp0U9p!sc+HmRZ)qwE|ctTG~^+>v?;O!rA)mTTbDG1xuO2c^#ok zWaiVk&Tw$ES94Vp2vh|Vz-#(pQ8-onDt7r*z zGuO)UJ-xOS&nQHc4$MV=+~rUGb4sZ0@Jc`IkfFEMUBs+08Z)>N`Y)Os!g`p}8NZEj zL?*YXJ$J=Acgxa*G)>wE2O0c%o&Nzc#-b~NF`7(H=edDrpe0)|69`aulGB6C1}xu~ z#0Dy@4G#6A;blua2i(Lvxu3FA4KqwU&@0hCxvDkdQ8YeeX;x@Ev(G427~gNKxLFeO z7ADv*f0>XWQ2vF7a?Prw#brQQlqTYTf7zF=f1=Q?PURJSM}4S3W-~VGI1?^K_mL^P zBIWb_YT@uB0=E5tUKDYhjkT-AN$DxQ>|^LT>N$S0!2Z#MOpe0#UL7tDWl*1&n@tvv z-Os?c6>KZCu`spK_$n1e6aigasW1CppDKjKfm%%H^{=u)#F@8FQ;tg z>+!sw0f=!Hp<=7IJZPKUGEJJX?4j*9l1#28u%rF!J!o%vG``_b0d>pU8eok+>KZ{OISuZqW9;(u{P zNeVfZd6)Gu;n!6=3`mvt;4^IToB9EBrEH zt0{f9$$PfP@YB>>laZXQtw3kxNqOZ}Je~N$=A{4flF#hXS2?|lZ*v;<$m+p$L3$%M zL@EuOpWgtoRsU15rmV&Ls4;1^v3>zQq?hr=zz;!$b7gyMQ0{y*TIfEjRsOof-D3H_ z(Kv{uvzn`%ZNo*Cpue2ja*;yiun|m;o7y3Rho99})cx*EFKhZ=d)YkeKocK-^>S;O z`(Tlf{-@}p&9(GKcX&>epZj{1p7R(0;#O*gu7W&Kh=M*b)I1|pyjH03ssx~y}^XReAh@E{=;^{Tn{=%aRf(t}K1`7luM!-4J$0=Db=&qXX#4Yiz ziCTnL^{f2j-p(uZLo?6yh)tT?N~A9t=R`U$OhLU}Fugv`cyXY0jor{H%iTdfA0bmT z%r`%9f2lW(o$Vbc+BcqyZpQv`&lLUQBI4q7$P}vUx;(iU(6l{#>}cA;^7}UZhdnBx z;so79E$;vk)3M>?*}njFkfZ%9 zVFIl~f!x=%xm>qR(lKQ26RDhLc(%?BBH{t)o=`HilI>=NyIszXT@prh*&jP=g8;vg zW6?4;U>%;CSr&mdIR*fxe)84@6H)A>NDmhO$it2#LD9R=SHxor^ZqoIo64k{iFqup znQTg3&*%3C22tabbF-@rG$LXNEXc7sE;l^enLU z=^st~TRF}?a({_8>s?7S`|}OOYSXZ*Tw8+$=Q_z~WB4L`(c`Anv{4-d<@eQVe1QEp zdeaEkWzMW096|(>R^@-#L|1*i)JLfN?v)50{`2Jk0X9JvSZYb4a2!cqCGBEuj))oH zz`Z!V?*W_`=(HA}ecI~8a}<4=ek#=yDoT0_R{c2kBCpf;EbOVBB$TO?lPSQ53u>TQ zj9uL;|96-9RK;4qLUB~(>oaYP2e5=WilR%`1nzx#Opy*OwWBxGP|*S0&iJ70I6C@i zmsao5defZyK$awt|MDSoA?i{rRohfh?uWae$guC1i5>@>l;YTvO@-z!Dcj8T@=pEH zq}+V6Tz^w%Oz&G{~A2mGFQ=H*SXj@}){IaXV59)QROS|6hh ztfCxa0Zv&TsCV!c&oMmI&c} z%6{C|;UD+?*Iu9hp(LY8hgM79@go2nGCKm^BHk^0wh=}HJA3_huuTv?YP)#sfVFHy z|%Wk$WL7f@r^4s3d+2kzmCgWQ?_{y@(iRN^wx;+`Gd?5cW zou^g2qmqu{%*+eUz{%fnWz!gEA7|4Q8b)KyjF_|3qjoNzc6A7YP2BquF^J$|X8 zD0*~FMD*L3_^|P<$>JaRh8G<$XLY?T-r70j$7j1qTq_#>QjD#1e-xPGL z$61ZS63o1q5|D7jTb5zWn7mj(SW^B6fC8c^kh3Y#(Lb%0D^iw+%Wt*?ww^Kl7qa!! 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg new file mode 100644 index 0000000000..e63d3d049c --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg @@ -0,0 +1,12 @@ + + + + logo-meta + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg new file mode 100644 index 0000000000..e426e87dfc --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg @@ -0,0 +1,32 @@ + + + + logo-meta__breakdown + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg new file mode 100644 index 0000000000..b707cd4ec9 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2f2c8410631d5070a758a872ee8d602ef939bd2 GIT binary patch literal 16850 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 z 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 M;S+}{4)|aF2bQD0@Bjb+ literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg new file mode 100644 index 0000000000..fd3b1c6fe2 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg new file mode 100644 index 0000000000..46825a8a39 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc8969f9fa98ab15bc7e85809304a35085127e1 GIT binary patch literal 74599 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 + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg new file mode 100644 index 0000000000..2f6631e1e2 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stacks@2x.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stacks@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d283cadf344dad03fc55021c65772a31dadc28b3 GIT binary patch literal 12207 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg new file mode 100644 index 0000000000..6247da7911 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo-med.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a48626c7f526ab841e5de2641bbf0deacc236e GIT binary patch literal 2393 zcma);c{J1w7stmMT5OeML_5D3I}{3%O& z1VRAj*9l@m{46_p9>oXA&e{>nCy&RIl9K%2p;15ip8|gSe+GYwuXI2{HT+A;A@(*7 z2t-_`>7taU_JDHPr#QRd8x5wNQj6N2H$K@llqm-fXh?jQK_J8u@Rnwd5gzj_Gid~3 zn_&6vSc=up<#NIGXOI8 z27NYnB)#X+&363E7t?exb8{m6JoX`FwRy^8y=|_e_(wjg0sU#86+~@Na_2g87=;b2 z!I#G9O0S$4GR`3@ii`sfwG6%=fes}eR)Yq(caD~BH(*(F8TkkGQ&3+AbK1s>eH5S@ z#Y7IHZWOzsx;{8enehL-54va^)tbW0TZznyAwOH-uXC<*xvLKpumPVF=k^qQY z(F)RIiT2c77Jc!@I-*8H8ccWarlE52fl=n6O#Y7ME5dr33boo&1Z03zV3Rn4Hr z=TzXYyTJ0yqDE{C^^tfU>R_(r9vw1)j5;H+|6Yl+!r1EjMgLq_WmNHu)3Ixs80~X6 zDXW}u$y0%qMWw*packPoU&2<))>lmkKEdi(Pmh|kaAV_QBT>T#_P1jl4&r2U--`9+ zQ(jr=)EutP0JJ5Ck%2)r^}yP$1wY_cd}KP)qgGwBu8l<(?Utc+Ig(T_ZOVWnUGulS z49AKJQphMh5KIpUmQPd}B|B$7y?x=qmLn7QbAb{{*h3uc&d+I{th{xfZccsm3ACQ} zjgdztm~hwRc%aq8A$YcD)FSWgD-_E*^d1!rnspO>UO}GR1j}FJM-Q7>SU3!rCyDh< zp@TXt=qJcV0)8f7fFGjr(C)ghT6QXXChw})~S~FC8^_%&fXGpZ0-IK#QkUmxo4lV$CHZSw8 zt((`^D#(1`MIoUQ-`zn|M~f{yTNc z9V}_ckJc*}7LS)Nc?9UePts2m?{rhx^#3ro52{o4TF%Lm+SpA)K^qHb+YUE8Y14^x z1ia^-xIn)88{lR}mK9vnzzM(Dyp9g78KC(lbc*Ck>YIlEvlC{atSBcr#x z*D&JuW(E|y+Tb)3Dp|cVJ2IU!%=YJK!*-c#pFuZnmg9~8ywguU3 zZ7W1{P+d=$8g3nf{?!|}84bB{O5IDxVz$GN9skHcsf9_`lh{hN@|K6@q+qYB0jM9z zXlcTyXzg<~l;erK`Vvy*JOA*HFQJ^-lx0Mg z{1^Y!?fq3}W>u($Mlv?b#PgyGL}W3i?;Dx)!yG$spsg3E<(}kHb*BzgP-3J)Tzc ztvfmd%VAZ<=ewZD-sQ0G(Jl(v##&U)2zd`!w*Q5%MU#)Kozvr_SHkFvh0Iw$!E8yV z(e|?|zITDTV*&+tt?5XQwu2MDF+o?H``*v0T%gDHtVfmdCZ1B z$t4UUz3a=)L|_tIWoj64*|d=p7OvKT@*u14 zI+IMoIiPhb>ne>5nF0ue7ee$8cs?%tIsLWyC)i$C@4uad!M=Wh;NkKvQ@(RS;ITHA Jcg#H#{s9CIcVPek literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps new file mode 100644 index 0000000000..886ae257b9 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps @@ -0,0 +1,6050 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: su-logo.eps +%%Creator: Adobe Illustrator(R) 14.0 +%%For: JIN YANG +%%CreationDate: 5/12/11 +%%BoundingBox: 0 0 443 98 +%%HiResBoundingBox: 0 0 442.2369 97.4356 +%%CropBox: 0 0 442.2369 97.4356 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 14.0.0 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 14.0.0 x367 R agm 4.4890 ct 5.1541 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 28 8 %%BeginData: 4962 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C4527F827F82727FFFF85366160FD74FFF827F827F827A8FF5A613636 %3685FD72FF27F827A8FFA8FD04FFAF5A3714A9FD71FFF8F827FD09FF3636 %36FD71FF27F827FD09FF85363D85FD70FFF8F827FD09FF84361485FD70FF %27F827FD09FFA9363784FD70FFF8F827FD05FFA8A8A8FF84361485FD70FF %27F827FD05FF52F852FFAF363D85FD70FFF82027FD05FFF8F8F8FF843736 %85FD0AFFA8FFA8FD17FFA8FD09FFA8FD0BFFA8FFA8FD0BFFAEFD09FFA8FD %0BFFA8FD09FFA8FFFFFFA8FFFFFF27F827FD05FFA8527DFFAF366136AFFD %07FF7D2727F827277DFFFFA82727FD05FF7D2752FFFF7D047D5227F82727 %A8FD05FF7D2727F8277DFD04FF5227A85227F82752FFFF2727277DFFFFFF %52272752FD04FF5227F827272752A8FD04FFA8522727262752FD04FF7D27 %27277D2727F82776F8F826FD0AFF853637366184FD04FF52F827275227F8 %F8A1FFFFF827FD05FF7DF852FFFF4BFD04F84BF8F8F8A8FFFFFF52F8F827 %4BF8F852FFFFFF27F8F8F82727F8F87DFFF8F8F87DFFFFFF52F8F827FFFF %FF27FD08F8FFFFFFA827FD06F827FFFFFF52FD08F82727F827FD0BFFA936 %611485FFFFFFA8F827A8FFFFFF7D7DFFFFA82727FD05FF522052FFFF7DF8 %2052FFFFFF272052FFFF7DF827A8FFFFA8F827A8FFFF52F8277DFFFF7D7D %FFFF27F8277DFFFFFF5220F852FFFF5226F82727522727F8A8FFFFFF52F8 %27F8522727F82652FFFF7DF827F8272727F852FFF8F827FD0AFFA9363736 %5B84FFFFFF52F852FD09FFF827FD05FF7DF852FFFF52F827FD04FFA8F827 %FFFF27F87DFD04FF7DF852FFFF27F852FD07FFF8F8F87DFFFFFF52F8F827 %FFFF4BF8F84BFFFFFF7D7DFFFFFF7DF826F87DFFFF52F8F827A8FF52F8F8 %F827FFA852A8FF27F827FD0AFF363736AFFD05FF7DF852FD09FF2727FD05 %FF76F852FFFF52F852FD05FF27F8FFFF2727FD06FF2627FFFF51F8A8FD06 %FFA827F8277DFFFFFF2726F852FFFF27F8F852A8FD07FF52F8F852FD04FF %2720F87DFF7DF827F8FD06FFF8F827FD09FF84363685FD06FFA827F82727 %52527DFD04FFF827A8FD04FF7DF852FFFF52F852FD05FF27F87DFFF827FD %0652F827AFFF27F87DFD07FFF8F8F87DFFFFFF52F8F827FFFF52F8F8F826 %F8272752A8FFFF52F8F8F852FD0427F8F852FF52F8F827A8FD05FF27F827 %FD09FFA9363D85FD07FFA852F820F820F827A8FFFF2727FD05FF7DF852FF %FF52F87DFD05FF52F8FFA827F827F827F827F82727FFFF52F8A8FD06FFA8 %27F8277DFFFFFF4B27F852FFFFFF27F827F820F827F852FFFF5220F827F8 %F8F820F820F852FF7DF82727FD06FFF82027FD09FF843736A9FD0AFFA17D %7D4BF827FFFFF827FD05FF7DF852FFFF52F852FD05FF27F8A8FFF827A8FF %A8FFA8FFA8FFFFFF27F87DFD07FFF820F87DFFFFFF52F8F827FD04FF7D27 %522727F827F87DFF52F8F8277DFD06527DFF52F8F827A8FD05FF27F827FD %09FFA9363DA9FD0EFF27F8FFFF2727FD05FF52F852FFFF76F852FD05FF27 %F8FFFF2727FD0AFF52F8A8FD06FFA827F8277DFFFFFF2720F852FD09FF27 %F82052FF5220F852FD09FF7DF827F8FD06FFF8F827FD09FF843636A9FD06 %FFA8A8FD06FFF827A8FFF8F8A8FD04FF27F852FFFF52F827FD04FFA8F827 %FFFF27F852FD05FFA8FFFFFF27F87DFD07FFF8F8F827A8FF5227F8F827FF %FFFF2752A8FFFFFF27F8F852FF7DF820F87CFFFFFF5227FFFFFF52F8F827 %A8FD05FF27F8277DA17DFFFFFFA9FFAF85363D85FD06FF52F87DA8FFFFFF %512027FFFF52F84BA8FFFF52F82752FFFF7DF8204BFFFFA8272052FFFFA8 %F8277DFFFFFF52277DFFFF52F8A8FD07FF52F827F8272727F827F852FFFF %2727F82727522727F8277DFFFF52F827F84B2727F82027FFFF7DF827F8FD %06FFFD05F820A8FF5A363637363636AFFD06FF52FD04F827F8F820A8FFFF %A827F8F8F827F827F852FFFF52F827F8F827F8F827FD04FF7DF8F8F827F8 %F8F8A8FFFF27F87DFD07FFA827F827F8F8F827F8F827FFA827FD08F852FF %FFFF7D27FD07F852FFFF52F8F827A8FD05FFFD0627FFFF855A615A8584AF %FD08FFA8522727275252FD05FFA852272727A87D2752FFFF52F87D7D2727 %2752FD06FFA82727275252FD04FF5227CAFD08FFA852F827277D52272752 %FFFFCA52FD0427F8527DFD05FFA8522727F827277DFFFFFF7D272727FD0A %FFA8FD21FFAEFD07FF52F852FD1FFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF %FFA8FFA8FD0BFFA8FFA8FD07FFA8FD35FF52F87DFD7DFF52F852FD7DFF76 %F87DFD7DFF52F852FD4EFFFF %%EndData +%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 75 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/ReadBypdfmark_5_string +{ + 2 dict begin + /makerString exch def string/tmpString exch def + { + currentfile tmpString readline not{pop exit}if + makerString anchorsearch + { + pop pop cleartomark exit + }{ + 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5 + }ifelse + }loop + end +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/lmt{ + dup 2 index le{exch}if pop dup 2 index ge{exch}if pop +}bdf +/int{ + dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + product(HP Color LaserJet 2605)anchorsearch{ + pop pop pop + }{ + pop + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/capture_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put + }if + }if +}def +/restore_mysetup +{ + /Pscript_Win_Data where{ + pop + Pscript_Win_Data/mysetup known{ + Adobe_AGM_Core/save_mysetup known{ + Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put + Adobe_AGM_Core/save_mysetup undef + }if + }if + }if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: 1 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 +%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Print + + + + + 2011-05-12T01:27:21-04:00 + 2011-05-12T01:27:21-04:00 + 2011-05-12T01:27:20-04:00 + Adobe Illustrator CS4 + + + + 256 + 56 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAOAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A43+WXkZvPPnSy8tC9/R5 vFmY3Zj9biIYml+xyjrXhT7QwJfYP5Lfkt/yrNdYH6ZOrfpY25/3n+rCP6v6vb1ZuXL1vbphQ1rP 5ZavbPPqOlXxmuOTyiEKYpKE8qIwZqn7s3WHtKBqMxt83n8/ZU4kzhLf5In8vvPd5d3a6Pqr+rI4 P1W5b7ZZRUo577DY5DX6KMRxw+IbOze0JSl4c+fQvRM1DvHYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Hf+cYf/JzaL/xivP+oWTAl9xYUKMd7Zyzvbxz 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 sVf/2Q== + + + + + + xmp.iid:06801174072068118DBBD524E8CB12B3 + xmp.did:06801174072068118DBBD524E8CB12B3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + xmp.iid:05801174072068118DBBD524E8CB12B3 + xmp.did:05801174072068118DBBD524E8CB12B3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:D27F11740720681191099C3B601C4548 + 2008-04-17T14:19:15+05:30 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F1174072068118D4ED246B3ADB1C6 + 2008-05-15T16:23:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 + 2008-05-15T17:10:45-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:EF7F117407206811A46CA4519D24356B + 2008-05-15T22:53:33-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F07F117407206811A46CA4519D24356B + 2008-05-15T23:07:07-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:35:43-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:40:59-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to <unknown> + + + saved + xmp.iid:FA7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:26:55-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FB7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FC7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:20-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FD7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:30:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FE7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:31:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B233668C16206811BDDDFD38D0CF24DD + 2008-05-16T12:23:46-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B333668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:27:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B433668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:46:13-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F11740720681197C1BF14D1759E83 + 2008-05-16T15:47:57-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F87F11740720681197C1BF14D1759E83 + 2008-05-16T15:51:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F11740720681197C1BF14D1759E83 + 2008-05-16T15:52:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FA7F117407206811B628E3BF27C8C41B + 2008-05-22T13:28:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FF7F117407206811B628E3BF27C8C41B + 2008-05-22T16:23:53-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:07C3BD25102DDD1181B594070CEB88D9 + 2008-05-28T16:45:26-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:F87F1174072068119098B097FDA39BEF + 2008-06-02T13:25:25-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BB1DBF8F242B6F84 + 2008-06-09T14:58:36-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F117407206811ACAFB8DA80854E76 + 2008-06-11T14:31:27-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:0180117407206811834383CD3A8D2303 + 2008-06-11T22:37:35-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811818C85DF6A1A75C3 + 2008-06-27T14:40:42-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:04801174072068118DBBD524E8CB12B3 + 2011-05-11T11:44:14-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:05801174072068118DBBD524E8CB12B3 + 2011-05-11T13:52:20-04:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:06801174072068118DBBD524E8CB12B3 + 2011-05-12T01:27:21-04:00 + Adobe Illustrator CS4 + / + + + + + + Print + + + False + False + 1 + + 7.000000 + 2.000000 + Inches + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 14.999998 + 100.000000 + 90.000000 + 10.000002 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000004 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 19.999998 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 10.000002 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000002 + 95.000000 + 30.000002 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000002 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 14.999998 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000001 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000004 + 100.000000 + 35.000004 + 10.000002 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000002 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 19.999998 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 39.999996 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 39.999996 + 45.000000 + 50.000000 + 5.000001 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000004 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000004 + 65.000000 + 39.999996 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 39.999996 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000002 + 50.000000 + 75.000000 + 10.000002 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000004 + 60.000004 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 39.999996 + 65.000000 + 90.000000 + 35.000004 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 39.999996 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999405 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998795 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999702 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999104 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999401 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998802 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999701 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999103 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998803 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000002 + 95.000000 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000000 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000004 + 90.000000 + 0.003099 + 0.003099 + + + + + + + + + Adobe PDF library 9.00 + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 +%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -97.4355 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 97.4355 li +442.237 97.4355 li +442.237 0 li +cp +clp +[1 0 0 1 0 0 ]ct +gsave +0 0 mo +442.237 0 li +442.237 97.4355 li +0 97.4355 li +0 0 li +cp +clp +19.3945 78.6338 mo +1.10938 78.6338 li +.369629 78.6338 -.000488281 78.4453 -.000488281 77.7852 cv +-.000488281 .947266 li +-.000488281 .375977 .369629 .000976563 1.10938 .000976563 cv +19.269 .000976563 li +20.0117 .000976563 20.5059 .288086 20.5059 .947266 cv +20.5059 5.67773 li +20.5059 6.34082 20.1318 6.52832 19.3945 6.52832 cv +11.2407 6.52832 li +10.2505 6.52832 9.88086 6.90967 9.88086 7.56982 cv +9.88086 71.1582 li +9.88086 71.8184 10.2505 72.1064 11.1162 72.1064 cv +19.269 72.1064 li +20.0117 72.1064 20.5059 72.3867 20.5059 72.9521 cv +20.5059 77.7852 li +20.5059 78.3486 20.1318 78.6338 19.3945 78.6338 cv +false sop +/0 +[/DeviceCMYK] /CSA add_res +.722656 .664063 .667969 .832031 cmyk +f +61.2715 47.5186 mo +56.4541 48.9326 53.1187 51.7578 53.1187 56.3857 cv +53.1187 69.7813 li +53.1187 79.7783 43.6074 78.6826 31.749 78.6826 cv +29.897 78.6826 li +29.1528 78.6826 28.6621 78.3984 28.6621 77.7393 cv +28.6621 73.1162 li +28.6621 72.458 29.0303 72.1719 29.7715 72.1719 cv +31.2544 72.1719 li +38.2939 72.1719 43.2368 73.7148 43.2368 68.0557 cv +43.2368 55.3477 li +43.2368 51.3828 45.9575 45.9131 51.5151 43.9346 cv +51.8867 43.8389 52.0059 43.6504 52.0059 43.46 cv +52.0059 43.2725 51.8867 42.9893 51.5151 42.8018 cv +46.4482 40.5371 43.2368 36.7666 43.2368 32.2339 cv +43.2368 17.71 li +43.2368 12.1411 38.2939 6.52344 31.2544 6.52344 cv +29.7715 6.52344 li +29.0303 6.52344 28.6621 6.24023 28.6621 5.58105 cv +28.6621 .95752 li +28.6621 .296875 29.1528 .0175781 29.897 .0175781 cv +31.749 .0175781 li +43.6074 .0175781 53.2427 8.46631 53.2427 18.4673 cv +53.2427 30.6313 li +53.2427 35.2539 56.5781 37.8975 61.521 39.5947 cv +63.3735 40.1611 64.3618 40.2549 64.3618 41.668 cv +64.3618 45.5381 li +64.3618 46.4814 63.4966 46.8555 61.2715 47.5186 cv +.6875 .140625 0 0 cmyk +f +37.5352 33.9375 mo +37.5352 35.0093 36.5659 35.8877 35.3828 35.8877 cv +30.5371 35.8877 li +29.3525 35.8877 28.3857 35.0093 28.3857 33.9375 cv +28.3857 29.5508 li +28.3857 28.4761 29.3525 27.5986 30.5371 27.5986 cv +35.3828 27.5986 li +36.5659 27.5986 37.5352 28.4761 37.5352 29.5508 cv +37.5352 33.9375 li +cp +.722656 .664063 .667969 .832031 cmyk +f +93.436 78.7432 mo +86.458 78.7432 80.9902 77.083 76.4502 72.5391 cv +80.4858 68.3486 li +83.7671 71.9307 88.2236 73.333 93.3521 73.333 cv +100.164 73.333 104.369 70.7939 104.369 65.7295 cv +104.369 61.9746 102.263 59.876 97.4741 59.4365 cv +90.6616 58.8281 li +82.5889 58.1299 78.2988 54.376 78.2988 47.2998 cv +78.2988 39.4385 84.6924 34.7227 93.5205 34.7227 cv +99.4063 34.7227 104.703 36.209 108.405 39.3516 cv +104.452 43.4561 li +101.508 41.0996 97.7251 40.0488 93.436 40.0488 cv +87.3813 40.0488 84.1851 42.7568 84.1851 47.124 cv +84.1851 50.7939 86.2036 52.9766 91.4204 53.4121 cv +98.0615 54.0244 li +105.292 54.7227 110.255 57.6035 110.255 65.6436 cv +110.255 73.9424 103.443 78.7432 93.436 78.7432 cv +f +144.054 78.2178 mo +144.054 73.415 li +141.111 76.9072 136.992 78.7432 132.369 78.7432 cv +127.908 78.7432 124.208 77.3438 121.686 74.7256 cv +118.742 71.7549 117.484 67.6514 117.484 62.6729 cv +117.484 35.2441 li +123.537 35.2441 li +123.537 61.7139 li +123.537 69.3115 127.406 73.1523 133.627 73.1523 cv +139.851 73.1523 143.97 69.2207 143.97 61.7139 cv +143.97 35.2441 li +150.023 35.2441 li +150.023 78.2178 li +144.054 78.2178 li +cp +f +188.787 74.9883 mo +186.602 77.2598 182.902 78.7432 178.697 78.7432 cv +174.158 78.7432 170.372 77.6094 167.01 73.1523 cv +167.01 97.4355 li +160.954 97.4355 li +160.954 35.2451 li +167.01 35.2451 li +167.01 40.3135 li +170.372 35.7705 174.158 34.7227 178.697 34.7227 cv +182.902 34.7227 186.602 36.208 188.787 38.4775 cv +192.992 42.8418 193.835 50.0068 193.835 56.7324 cv +193.835 63.459 192.992 70.6172 188.787 74.9883 cv +177.435 40.3135 mo +168.437 40.3135 167.01 48.3486 167.01 56.7324 cv +167.01 65.1152 168.437 73.1523 177.435 73.1523 cv +186.434 73.1523 187.78 65.1152 187.78 56.7324 cv +187.78 48.3486 186.434 40.3135 177.435 40.3135 cv +f +206.359 58.3916 mo +206.359 67.8252 210.648 73.2412 218.555 73.2412 cv +223.344 73.2412 226.123 71.7549 229.403 68.3486 cv +233.521 72.1045 li +229.319 76.4746 225.449 78.7432 218.385 78.7432 cv +207.451 78.7432 200.304 71.9326 200.304 56.7324 cv +200.304 42.8418 206.781 34.7227 217.29 34.7227 cv +227.972 34.7227 234.276 42.7568 234.276 55.5107 cv +234.276 58.3916 li +206.359 58.3916 li +cp +226.961 46.5127 mo +225.362 42.583 221.665 40.0488 217.29 40.0488 cv +212.922 40.0488 209.22 42.583 207.619 46.5127 cv +206.696 48.8701 206.528 50.1846 206.359 53.6748 cv +228.22 53.6748 li +228.058 50.1846 227.886 48.8701 226.961 46.5127 cv +f +266.062 43.4561 mo +263.786 41.0986 262.105 40.3135 258.917 40.3135 cv +252.863 40.3135 248.987 45.291 248.987 51.8418 cv +248.987 78.2178 li +242.939 78.2178 li +242.939 35.2441 li +248.987 35.2441 li +248.987 40.4854 li +251.26 36.9053 255.805 34.7212 260.595 34.7212 cv +264.546 34.7212 267.575 35.6816 270.522 38.7383 cv +266.062 43.4561 li +cp +f +302.311 78.9346 mo +302.311 74.8984 li +299.451 77.9248 295.415 79.4395 291.375 79.4395 cv +287.008 79.4395 283.468 78.0088 281.034 75.5713 cv +277.498 72.041 276.572 67.9199 276.572 63.124 cv +276.572 35.1216 li +287.51 35.1216 li +287.51 61.6094 li +287.51 67.584 291.294 69.6025 294.739 69.6025 cv +298.19 69.6025 302.058 67.584 302.058 61.6094 cv +302.058 35.1216 li +312.992 35.1216 li +312.992 78.9346 li +302.311 78.9346 li +cp +f +338.937 79.4395 mo +332.045 79.4395 325.821 78.6826 320.271 73.1318 cv +327.417 65.9873 li +331.033 69.6025 335.747 70.1055 339.106 70.1055 cv +342.889 70.1055 346.843 68.8428 346.843 65.5645 cv +346.843 63.377 345.667 61.8643 342.223 61.5273 cv +335.319 60.8574 li +327.417 60.0977 322.54 56.6533 322.54 48.5771 cv +322.54 39.4951 330.531 34.6167 339.445 34.6167 cv +346.256 34.6167 351.97 35.7959 356.177 39.749 cv +349.449 46.5596 li +346.925 44.2891 343.064 43.6143 339.276 43.6143 cv +334.903 43.6143 333.052 45.6338 333.052 47.8213 cv +333.052 49.417 333.73 51.2686 337.593 51.6045 cv +344.485 52.2783 li +353.148 53.1201 357.527 57.7441 357.527 65.1455 cv +357.527 74.8145 349.286 79.4395 338.937 79.4395 cv +f +374.848 60.4336 mo +374.848 66.0693 378.303 70.1875 384.441 70.1875 cv +389.231 70.1875 391.59 68.8428 394.364 66.0693 cv +401.011 72.5449 li +396.552 76.999 392.266 79.4395 384.354 79.4395 cv +374.015 79.4395 364.092 74.7324 364.092 56.9844 cv +364.092 42.6904 371.828 34.6182 383.184 34.6182 cv +395.375 34.6182 402.268 43.5332 402.268 55.5566 cv +402.268 60.4336 li +374.848 60.4336 li +cp +390.496 48.2422 mo +389.318 45.6338 386.881 43.6982 383.184 43.6982 cv +379.474 43.6982 377.044 45.6338 375.861 48.2422 cv +375.194 49.8408 374.941 51.0156 374.848 52.9512 cv +391.501 52.9512 li +391.417 51.0156 391.169 49.8408 390.496 48.2422 cv +f +433.992 47.0654 mo +432.309 45.3818 430.886 44.4541 428.188 44.4541 cv +424.831 44.4541 421.128 46.9814 421.128 52.5303 cv +421.128 78.9326 li +410.192 78.9326 li +410.192 35.123 li +420.875 35.123 li +420.875 39.3271 li +422.977 36.8037 427.181 34.6182 431.888 34.6182 cv +436.176 34.6182 439.206 35.71 442.237 38.7383 cv +433.992 47.0654 li +cp +f +grestore +%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse +%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 +%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (JIN YANG) () %%Title: (su-logo.eps) %%CreationDate: 5/12/11 1:27 AM %%Canvassize: 16383 %AI9_DataStream %Gb"-6CNCc1Pp#o2n/pqR,4)g@A-0h?!ks[6;9rD6[Om2Ecd#e9L4\ij,jqnYSo1u"g0]?U'9B5r@MMIK4>mMFaZ9SJOhedn#Npdo %^0'3@^3b'Fp\jCV5CU"ZBjpD'+!(:EbSOXa\!u8^J""lsE6/RYrP^a("T*+Oi.(Y-,DO%ph[KM/h:p]1n#jE[TjPS3c$T6^'7MZb97MG4rU9f."f&=VK(X'^ %ombK?!)P,Zps\]8^VBU:nF>f&k5OdurDF^4nc$H'X,m8bbr[=@f.Usto65\oIfJC#lJ\1u@;m%#![kbZ;sM1L;OoIrIds7YrF-W' %U(YhHq!cPQs+,BL&Tf&nbMW6soBl4k5Mk5SS.d;je)0#s]=s!(jn?=@X7,.MTS)eg %=89\`a7$2R!5\)A5N=$eC(^+FYSM/[I_8.Wnbdp@5$["DiVoH``-1*c])\?/Lo;=h;P_TD&,7)BI\>5@\QA,"HdJoc(LW6:L/n-9 %j3@3e&S>d*[eoc!/_G51HB(BV&%mI:#/Nna&ZH+Z6\INj9"/bOH$CQJL)/USrD(Mhtkl'q6fpdY$3f"j;^J+:3p-FbYA'E3o^ %n;ZpEm"sn^HcA"]J+:5B2a[&*nOn9Tk]uMW2L[]I>h;M^n.4*epVVKc-XK)fC]9>q %%"Db=Hp:nFSeZ.$mt^r&-[\!^J,GX'NY)+)CZ50L^V#G_,s8C/I!h[J!01=S8(W^?a0Uf6Gi!OKps"*V3-$&V5F6`Jp#6ndK6?\N %'Jo:HYVj0QIuEcNs'dS"DgXd@'5ia.@NBhXo7^Y^mN%lZIKF#giiqF"@N1>t0njU5pP#b!cT@2JB:Y[m''']%_;@p$Xo(0! %hj!$rK7"&Vb&@86?OR$(b&@7s8,cbBo1t>C3C\F?Pb7'#^F?qnB=6aFjZ!4,0/ac(Pi)DFh=Bb"Rt&$I_t4r#%fbX5jj3d[J&D/o %IbbNPgdV2are6t(^]N9;m5AI8+3XE%\D%J9@"%N0[sa&7e8`*+q%iteFO4b/p&&M#AV(g9H_EV]*TE$bk&7&>q?ESY2q2Wp[Y_[. %[b#HA(NlciJlZCJ-`mRm%@/6@U!DTSYms:Z5213`"+/gC0-cJslZ>dG=*e48b'PN3]dhpehqR]BXN[]D9gAKd*nM#o2/[YD390Kn %C^n]/2mcJi?<@TQLT(PI0a& %^*g'-pWe3Y;h,4nV57V=nt*L3]3W1G2A(De9'L/$+'@EJ_;B3KSn7nUs.VH2q6-eE^GiRQFG'`Wg[I4:%B<4]leBOm-cDWP.03lug0S7>83YOI0"0D5?VeB=esVn>FTY@$BsOnYH-T\=V\);i&b&\mFM;[gcQ-n4mVIS0L]ir0uXLugsW%d^9C %]k@md/r1GpT?[',CY^:j*m!Pb`R^I&(Z$F`DHC9%+:`C^-*B]`IGqg.T$Sk$H<\6Tl*4UG4K%0J*E-5&Bu7'>6;oBU %1`#@\e$>FKP^-fmU#f6r&,7%:*Ubg+@p)O%9KT-(n1@;;\=U4"BO,iXI7]l6Psn\>jH6X4KmjDBWLdD=Y:>\*Ic`f% %gGg^ho2mE/hmnlaS8[WSGJ%WP0s.7!KJ($@6>X*W8@/a\a]);J@7^KdO_mrJ6lk5$ZVNlMRc-ISDE=jY]!1Y*r\[VDmkbt4H_9W\o2%Vle^%LnF/`n,5NfWHY.jr8qW$[! %(uY)[j]e,@b>/Z#+)g[$5$bolV=nc%hAh4JUoQ9LHA*I<'Vq=ag*Nur;Ss5Dr-iT&J#CXf(cnegrX %0(/-LhHbVT\_LM?p$)28dgmdX52:Vdo`""@F/btMJ%WM-I/eI!2LG,hp\i-Vhd&TN2gbs7,gVl95(PfQHfZl4tit^)[A;! %s1,l@rd*Q"%P-GR)>r[g#[IeA9TnlqL9Y5pl7]OZKc!PaKKIXV)2^A=agpRa\Jk3fj.o*_"T`?.:YIC7Q[d2lYHNJqP?`5$G4#AehrcBWGNU(a;50OUmgD\mmm!JOal8d3Y!-)h %T+=0QW9-%L_ZB"N:&;U%nd%t^@BmDE^AfRVbJ72/"n-s@!JH0Gmf@BMqb&a@%"+pZXFM7XcMZC#$mC9Y6msK8_^_b*->]CB %@%AiBT-*#`0[,&*=#6^n$"Yusa3D+7GHd1=.Lr>VNs##06A[G9AR*2sgr(e/?0YhJ*5#7Cn6JC";bSVle&nIDPYKl/*FOMR7=t8g %ko5ohSeIHI/[rprEjOORGCV7\(D55o?O\i)btI7Nn4V97+>6"?a3iN!Y=B[/1\c.W4E)27hRM<;k:mnn1_"^F?[bL0ZG88O[ %6pi;*]Fh#PZWFT!ZC;W`6(QtAGrsQqm?Qp35:M,r#61YpR$;SgihWAA=W5&FPguS2-Y64K:"Eu2EEPk99A)kh9%e1jSJ3Tn8YJ(O %r8f\)d@X9.P`hgnV6$JoV/3@Q7"&6M_D]Cm`]1su`]D+$`]V7(`]hC,`^%O0`^7I.,H/])aQQ/##mE&HEK[Sin5:s(EKdYknWP[a %)+7@@.SWkq`Cj&JZVih:gRT&Xfgo7=Tm&<^cVdAu&uCObJeVLo?Ab)D85C5F^crjgk_%+V.D.b7"r;TV:u>c9lN#Tf<6HE;.OYZK %e"XJ\&`dI=D8Te+,W)%%4KU'SLC6h+MPD<;sI8Q]uMT4 %]gU7BF9n_7mCLa',P@_5eL!r&._O'MZ^^8Vf5R>Vk4@E,lN`MagWqR_J`U$".$b:,h/>)q.=s"+.?`5e`NEYGKPj75:':qJ<,3XO %42JTS!;&U!`[h<>Te/T0%*Ja+Q&(cmX9Up^"p7^Oo#[VhZB2:'aDq]2^E4jZ>%J4o\680g&eV/($;"s!qW=SV&[k5c)K"10hi0n0NBs]o&?h* %KgFS[\;W(&OZ+JZZ\'nlW3h6_.qkBEP7bAFTOSLnY^HcJ]nQ8h_hp!ROWmqie_&R+).LpudKc5uNt3uAKMb\N9ZEgSV0RSk#C %>n0LFj_UMCT+Oe[XIP^D;j3;"_rsL:_lcP72+Q;n"(6t@"gVVC,\@E'Gmt^=$(EN`"qRrcHg'=[O!N)T/WbQAD20DKLBp9l^a/XY %7KG#&R@O3tqe0u)MofVbA#2CnL:S5t,rB-JDT_:l0$7e.6"Hus[=;*bi85=eG0$*^do4:!l0P9/3g %i"7$7Ps%9-+u;W.8aJiBPoNB#(]H^lJrC"M2=X(hrWo5V\s$Q#k-=.^ %%N[l@GKSQ_JaNF\6.oTk?Dj%>WN=SlPb6OLjQ.j![`]&e&K.:D)&sidJ6`c$$QunM5XZS341b(p,lA+A863Mn'+ACS&S1q\m"&-h %Fgp(Um(\)bc3j>_JjGD>`XJp)!&_'_%_1mAq!K&Fn.O)*_O_.NV0ek:%d7:*I%3u-J>G6bOj7YCnI\PZ"USm5Vi`R&K7IPXm9J(] %iS0?6_Ae:iR)/6`qN"emL+J_18r>a^_WImViG.>[aN('7UL:c7\_`u!CmdmpgL5`68oeNTj$V!.<\e] %XqqWC*2a*5MY8hqgo61DX,_Whp21C\k.]lNS\Y!VAcJ6@`rG2`m[@sD%"U@)6HVCfg?a!%`o$.6]+rE.$&Hq6-]io/"/ljr8-,rg %"94NZpEQ6jHTJ^T@=>K:Cc@j.>%rh=.:N@c`$$umViVR$OXjn#O]^U.X:Ue-7s&l@e.h.\1djM4,+;%S4/.iVU5Vk\R*;(2n/T9[ %bXi!i(k?:jKObQZ/t#[VKhO+U7#jST4cr2XN*@H_9Fs];L7[$4ZD/:JStUaWhdp?d%O,ug<+KUY&b@Hm %Ikid/F8t%uZ]W3khgBotrU=b8#X&F3fPBG$(G>`+eLn#tV#^),/5_Yh^[@6/_2.80eF?L8:[;0:=*6XLo_2JfIlK0@hRqfY'm/M:>ITOF(@/F3E+kWM!h %qQA8T-Bd[ai7Io!\e``1HI6Ln\t8nBTYH;DFfnpA]YShnEoPmI8e?@lD[1=\jt/#>nVE/^&bmR8)BcEMe\Y&t1S?_GmV$g596! %2V;7q/Kd?#;+i[XR\=*b6e6<6N%[cHk/'/6P1WWD %\"lOJWT:de6*3P(:SaO#a\Q:U3M%OBQK<=b_-L]uD,cq[<+:7flmpIioR(_crP!@aZFuY@mV;uLOm?#I=.,X+HC!_sRKm!PO=8G, %4=[C/L'Qj7niKJ4M'R;0gF^P6CQd:>P1:R,!Yj'a+J=c@S3'SoAg>n8Q.HNGbBEZ:'rN\HnLB!3:,2=[p8#!>U]BX6H`g(JV@HF+ %VN+PI3\FLQd''Fl0ZF*A#Ce!g8)e %V5D1&)(-^eAZ1K2AXLJscWBP/G3[;\kKZ$Pd'rJhf/iNRNdSg"YIO&k`nHOj22fICFsU9j6r+ON#E^93EYMYR,X`@S=/'V-7O5bl %C=cd&4r*cjaA_V("ZmIaSCf3q(=m"NmO=%G>#l"^V\p,sS5fo4-P`s88dZt`K6n/aU[l<74ZY9-pap%B"?UWOunZbrM]"*QL=Vjo-'s:Js91 %rEr;8@I/Br@esZjb/Faaa,;WVpfLMc7qu^aG4.[d%5@T30Qe23%g"V7[RaU"$QC=OKPpZ,E_;ncYg(QR)WTCdO;hD?m0fc %:h3I'0O@qtot)Q@`Ad35(V#1#d1@33[K8n0M?QlH]!LnepP"ktk2TH%XENkq\$r[ab8 %hIN8D0G>tKQ,)!cXR)(:9%/GnC=GTk=ug,Co&<0Rb[HRt0qOrR%Conk_H361>^?^flm8WIaMF2_-P7Y*,3A1RgNmDl5CSlE-FCgXW@fAZ/f@SWnE:AI!8:uf\=;3);;`sSdM:^j-9"&Xq% %d>/f?#:'^K'UD,q34K"r!,d5AoWZr,"BB,3'1^<4R(3ha2])BJ'DQ'XjNh)L>ST%r7EoQ%>Tt;7("c`;"JLmTG='lA'E^?XdL5-p9J)W4 %+Oa=__/r##6qneW31([_3u^sWaTBhu#n37b!0RZ(8-#<;s-4i6CYddOWATr,00=F&dFq=-[aC3(*40R`D5@&Z-[h3ZmRXeNV1`il %,a1#.-*`5O)*m)K5,gnJK6.`#)oX?RR,c-k@?Cc_L27-NhX6["T%EBu#Ef4_-WCJ2Le9*0^*Cd`c %EQfC]bp#lS,FX6Q@mpuJP*'^cQ,kt$d;lH/AL@OT-UH'0pi,aI!;/\U\-+&>NA24U"Y7(!Uh*P`&@/H2759`,;5NWVKd^bAk&lo! %mPRYH=([HH:$E0)ZNhD?=3N5ji!JiA@\2'Dn$L!,NB6(7pa8ZHd5t!pFEl=E#-5_m>Dh8E"71r[W%%K47\&5?d_/g[M(krO))L0W %]&$gJ:]nH$rC*qX5GRP8enEfJ']7ic_I5]9)J@c"CZP2h[Q^A/I^WE1bcA-ZVbSsm&O,Nm1s %;ZHA`nU&4q.+V)Z)c&-*!OL,2j(3@*0rJ#5]t@a.m)^HLbTl3`LPZ\X0]pNArC"qT3PcLYPJ%n$/(_qW^o?R4Xem["g0-QG"#d0HX];[>LRs-`1HTGs;pMp^4iR;r6$5!H %iPT@uAlD;Bc&Qj%V\B@#mi?s`H]A>)kpc(!!c2?+##`>;O?MdV#+YVu79\]Han7e$9rA7FJWKoPmF)ZRc4eq&1J\kGRIB``2E9!g %_=?$"N!$Nc-^WEps6_t%1S:(TmW_bmVo*p9P*oc#XYQJLb`$VcZ1=j/AfbqEhb0%kkNPkZgNpQWGe_IK_+]8c.\@PV3Q>k^9)R58 %e;*G@PZWgb*XPcKKXhLLF*VLIWG"89n:c?u48c'=9M[<2reP3OnQ7LYoJBq;jj?)*:Y#f>r9%%IeC)ZhUXWJJ>,.>t?(*fi>p[j$ %FQW([?CH!HoN"cARR!4bRC%>36?fE;UAO>8!MZ%2='@3@c]ST %Pp?6"%e4L[2j4$2:B%Jiro&emB1BbYC+l_>q*UGDJJ17]g4t]E/8'@gHk/d+?K3bhL(7SN0j`lp?K3bhl?J7(8Y%i)MX\$kf+).L %I$kI?9L8O)bbb>b*BsA`+"88KG'KWBFrl1PF*pC]eD,aF!?!8oGc!6;56$^[o++QIRb],4i2\H`1j10&L8N"QU(IcGUJ#`ZOka6\ %cUE&[Ef&!)5l[t+*$LQS-_q$B_;`kL7]/0&,bu2SUB1@?oO!fn(3ofj:&,ZDg2s>b#'B#&T8chA)2m:l)2jM'igs+U48_V5n>t!` %a,5/YcKJnI?2V&OU4DATXF*JRSVoKo9g)Q9LPhL"AKOuic`=RPQp#<\N7N>/>'+'S:?Aa>m`.,nc\OumlD:,a_cQNZX*X#1^%>7( %Q[Z[Ir"%H=.g^PK@BUsC-eFGEFsYY+jgE"X%UV;FHADM8FSJ(Qb5G=-^8E.C`nh/F;aY2'dNh6XRdim`5#6IgB6BQT]&"TCaeqr@ %^=m"a3PV`'I^I+0[RR$a:<@X-?!4?dniJRs>oaI/,Mf*hchS/Yg$#=P.eH>19m:Yf@ %(0tT&MU1YFITGl#/!hKf=!OsH/%WIcF_?"P!rBKGN80;@0!=ErC?8%jFDTJ8&N]Jqjm*J4R0,$JKcgV(;k7U&1dNcmrc(!CY2#mH %](FcEY1b48F#mXI7nV)%AgStbk!D-+]e[8QT_>dT>=l3O-FR*/Qh=gUAtOIbL8>`(;M(.E@Jou2^2eVE:?]?f6T&)4,qbJf7rokq(a41i.\k->\$G:@selVcBY?'S_XTb;HU8kg[n %SL^?'o@i/=LT_`t?$5p7-XJl^mI7O$a#a,g;FALPp(7tsO!%a=DY@D_!t"VGC\U#'dsMK0b!6R0^#gtoX8-?a070`[hN%B*\!k@b %]^2c__p5p]Xlb'h070`[qJ/9%ZDk02]s0Y7@Fq5$lITnmBN06dfonSk^VR]3:Y:q0E]k?.ogq/BI>fPE&a[d5IR!^]"J+0>8"*ZNF?_h3B?B93l%\uJFC(@,(RD7^Z%OftN %hk0GO5NjSH.#lE_GC/V4F,+haB@==oP0aaFh]h7?M?A@qH0SqNa`RP:KoE-X%V;aP7q#A1Pr0e[+0$9l3!C2R%0bZ:.?gg %\B-J]-AgkY`U(aF=&+j@T+R,KpA\'n-`>GVpY]]J&+L]DB1>pE6=cu^nP[U*N_j-h8'0\iH#i`CJ1?1\ILTb?\38/3H+cH;:uql./q!C4.IDf);U- %0[S6<>4!',n!7#(dMhhdBHo+YP*SR3kHGrHn)$9I'CT8LQgpLXmcQ`V>OSp-Aj?1Wr+3ThjhQp`qKqQI_W.n''>H3L3.^IWQ6Wrt %A766mRdf.8G&ee)_9C2gnes0j[(9JR51k\`g!l2\,Rln/A+h_AnIbPd9#a9Ie#(T %KjQ>D0)/,>>DVHYESJoGHbYJ\Cu5Mtr6@kV$bQ9/ng\m@oX@qYtXTN9'sR":UOb*ZnkjQC8hbX$=9fif7sP(TZgrOeKG"I6=H %-d;tlVG9o'dh>376IO)rllH\P4W[r\2le"B*BB+S4WZi2QWZL,G'<.d4ZSegCCeUbLO/(@dAnra?>eodIRCj(ODY^dB4!%WLh(@o %Pg9*>XB]&tKsg9tb$DEne]M'p'!j%gb=n_4>-?!\<@(>hJlF3[/s8Y.b-kKMRSjeA/__O'o=DK8/+uPJ?Zu7-UaOL %IK>6"%%UY=ksZ"&njT'7,^qlm,e9.\.2R'.KY]0C@?J&[WjY-u9%8LPrusk"aUQknP.I8;rEM'O@,EXu-h!C9OC3L"VIHP9qj5]p %KD)[rX%*[MAEVLZ#:?hcqeRhLe*)jY"AVO!90henK-uGBqEVB:YUNeZPa:[>b_.^X9OfP'[gZo,2j8%le";rV9j(oJ.%>V/oiZ#/ %bZ&NYrUWs9L;Jo)1Oem"T] %D\gE$NMNaIdTIgZ;iQm")#0+ol/l-7P\FD$nL49E&bf2IC]OInE;][?a5lQIo?tH3KR^/W6XiS"ks&70RZ?@I*"\8Y9u*esghV]C %ot_2"S']3r%X=j4-W9AcG3".;&s,VDVR/mQ#BC`?EL0)1 %*4feEWdX7rF]*>g'2ID=g:Jh[3)56s3H\'?n2\`?+bls<2.Y&8qfsI(n4;s0q0^G"lAWKRro`<4?fg!C\b9%+I?eSTjk %>"3i*n@r4`YL\t?lcQ8Njjgs5C0c+mY5Et(Puh=s='r15?a+$G^&!>oqLZEWJt:j.p)9Xq)PQ^?U%0+qnf"4m)PQ`?#aJJTaK%nn %2'9]YPh19gYPA`9o-(d/6R_-H^S?/^J,7:"Ist/mV4Z$WDq/UO/?`pttin&p@N1Q@1B:om9J949q::)36 %-Sj))Cc]*Q@*Z.6T(ZrfRM$-PP$cAU$Sl'7\Sm_qo2tdC`sC_%&NuSB][iunmCA0r7`mhA@hoZ_*k>DQMX@V"rD5/RU\F0>SS^7) %3kor`jc,HIeH[Qg=LMn-riJb"qD5N/ZrRF",a44"\l)<]e5phi7X&@"ntr7;%^qNfN/oY+T!oLu&=C7q4%RY27/P@@dF3g4,G&_= %LfucKUuBB@,j.#DV^.Y3JVN8bi!-p]'&Bd@kSfV*)Y$a2(C*P:Qu(+CMHJJk1!Xg#PA3=CNm(friogjb=8@k[d8T\5P@-OA,)$+L %)7H>;?mUC@#EmepUimsH9SK&qJlX;R+DHh4254^2@q5hEY-HP9f)!Bij&gD`[FVVQ0W?pjQ0tp)51]SN=p%pn+FWTN<^UIf,cQ][ %-F22kf%S2K+'E;'9r!rSeWO&i$)M;^CYe&p[4BrZej/o&D&PjLZkPA1.ur>k)Xh(Kt>u]-qiDoh=?$TcRD-hS>6dt=iCACjM]oN/nPZA2h`Up%Y1-3f2[QAX] %l`,'9dIo=Ct%QgS*i/^qD6$q>GZ]<^*7Cq>>N>+g4E/I'[0h!S[[*CM^:b%a6S,=;)?CY*a@T@KM5X(uBAX&3<:WR\Ak %`W\4Qke?30h6f?!clE:+B[G#+`eJYZe`9Q %jf*7`82:N^$IR.#`JK7=k(bF[/IGuBKiPtGk8A_+'0\H+%<7@0B_"&/DN],pM63\Ailh@"-H!9J1XaeL"- %>0NQekj`]ca.+0bnjkLAi("3#m$i:M6o/VP3GPNZ*%@_Cj %QrDmJ_^6B^lE#dfU1#D^P7/`7p-pSqN]:`#pXs@SHmci`Tb2rk'48Xr135qb457se"_%tSVs+DAcmM-.^(Q]Y8n["e4.U)Q/h5q.(;;;F+c1g %AahLiJ;=()p\^ZL@ZEJY:Lj+Nh5M%C\At-IE'10-&qI %@)Cl#qgVRr$ZfmJCdMA8gUgJ/mAf9<>&IFo-WP1MCsT+NHk>hPRdsmPI1^hSim45sb=OSRP:E,%NVFpE+dK"ntch[CA6MHi2F([[=5-p>O>t?;PplXfMX%8b_jM9c/<=N %+C7D?#`J3N+7F5#67W5$FCR',a[b?JBZiMX:k/7PU/TE&M#n1N74XSPq[:aCNs"o`$BC59C3dS6kSZPCpj2YjP;5KO5 %=ok>Ym4D8>1_,6shpW$15)Z3!RjXaK#IY&WIZ#[b-]i@5kc+S=>eX^IZ&A*r1Jtlrc>N+JJ$!':g(g>`p8+1qOCb_H*"l5,mqUXET-=GipU7`/LG*2A7YBHgsg- %\?:mOMV-FR26gNPFgbW:a?)H@.qp_Na4t`B4/YqkC(3_2L=lcXc>2T"C7d6_:$^edK;nIr3K9p)&qfXc)pHunO&g`OWm1CVHIj'm %4.s0`b8X$6[jE,e-,CA9g-buoMR+_TU*tqO/;g\``$/i,!LD8XCQ3=6d8^A%>&6>p3G8&=ellm\o.O&$FjABJ`,L%r7]H>`e0Cgb %Uo;Ve5c2RV];DOmOa1U]#:)&Gh,%pP&:^. %,*Qgl@oHi8dU$)-`Q0-VIV(?]jKb1(Ad5bn:,.!BGfaE$[_';\%TVDBQ3"?#TN,BbWJRB[1*2UFR@\M@3"D@Ni5&NV`C*X`B`Fu# %imSCUqp]1m.K\W@pq:NVrSIB?JC!5eWT9h^)Tip %,`**_e[68t7Ie<3o7Sjk.oEGVT$?]ei&g(fkXJ=>iJ.R[(V`(0Zc+)OYHC+ni<-d<@Eb\71i;NuHqZHP-/W/<$7V%R^2Wm&kUQElGYAHCLo-H'J\ZZ0jUkfXs"fqU=" %M.cMY`25$%9UX%aYb06Er4ASL!&:QLP;&d6qQTq"/gB6k8TXU5T1eKKI)aK-QAp%4m=@tr7I1r %_$:kcq*I,nFp/&U=TNdZ2[K_]'e %IIYhXGL^-,^0B&,qW"qR"cTX6;QrLBE:jN,KR0AsY^S=ZM[kPpFuT#Pf"VImHkG]K>!Nn<^Bf#HRs+B\g@cc`3k2D5h1^&eS7t3i %OkYrW6m4Gl5>Ug7_Q;l-^bCI[U1ZX[a.,Kgi#e7s4-$8/7SD9WYp#=>-V'nQ(U,M^_X1-:qQ(S'kN9Bp,46h@i`f!X=/*Z:BhcG9 %O+pq!_=Y\UIa8230pi\c)%7fUm*Q58ZNef(-GIcm?1MRI`k5Geb&65#AI`N7Fln3[0mDcB4tC5n`g+?HLRh$/3f#UUl_6*`I2nD3 %UA7$Q2TL'[#\25MerF%NYI6+_Sl2'T*Glm^eFYYRj.Y_8eE25-h:5(kl[p5@F.#-gmod8[LB&.="PpE.uac@o#eZ@>,eurD*4u*^iS.TG+JSEeL+DR %>W)>iHD@KmWFcPbO]jk2[lH2)\Ja`,>Y$=LP%H2%^fu8FJ6^%T,"g0o,+$D/LCn>Lca^&$UL'9SOI`2ZXIUnW2iBNQC6?nEr7\9P %*%kE]Mq7,:d?9EVV;QEQbq1QWiBD*$9m\IPga^ZWC=Cs:,L:),RDInpNT@&KlM2\cfj*Ygmcc;>Lqn$8[)g-]H8:?[7TkXP2diW5 %G`4"4Te0nbJoUJ5c@sVdg5pc:"8f?^-Kd5FV`9GYC8_keGW7`C_!k0B[4,!7UdNqt$#TL+,HM' %KXUeP&19shCDsdZn`]lFI=>CGcS!Y[#U")`n\iNEZW]L&gLp-RKPo'YU*pE").KTs<&Y))K(,QeN0-MFCA<._+]>`30"omffmF8JQ3(l]sDlD/.KXRF=O?c4o=gf.D)%.Qc7[kW#; %pdu]2/)-rsi5pElal)pA_4)nrr&P3SPAmGu.u9YHV<2qE1E2eFB=*tbCuR,^$cfte@q*cOQnep05bfb/%O5&WE/8Z;A %?K^5#E#P@=WNG7>.p;Wk`suj'eiM]kYflk;Cq`91cZpQ/mpfGV=J^8RX,` %<_\U<)68^s;5.Z#Nh'>8#T>;fKkQ_ua%1/D.FUQKC!M8-+NPng[uio;D`HtlQ@hCkIYX-0pinN?T_Q0/B#3`r`B:'gCPP,OLU3C( %VR\JIC`.@3>UV %>N_?&`"#RaG2]qrgS+VlpF/O/]__hi0`QWkRZo4PrU/#5r %Vm<67/C+'VFCsN5d^YTBES0s'Jhn2IQMU]Br%WO-i5qh,!RU1?$HSq%O'a_E]=O6jIuXI]ff:GjgdiW>g%67Ef"8kGQPf0L(JPD/ %2LB.INb*MsJRQf6H)ZYTYM1!`:FerEN&e&]i2\4uipSo;67\/*i`LPgL'hB@L98ZV!C@R88FYVT-''B_43t+O*7%J[>EXj*K;9G8 %^q(J2$>&[8m/-VJqU6B;ah:4TUhd>?GrGk]!Soa1:?NQ090eN%2F<2A04#(DY;`4RduN0I1,&.9+^pTQ@%j4V`/?bDpk(\fduaCgobqdEoCN[$Ptm#CSXi+s%sHa]TI';B44^Z %YtjK=EV?r"+*31Je$"-^FPU`X3'O0!&Nrna;D'riTgs6eFSs"Fl=-!Z@9;hW %.B^nRMc'2N]MY(AjqLZq1(q,g]VQ-GHIH2[;M$pjC6W/hAe^H47[[S0UDD+^qB&`]S`R/P2B;rkGE'3mYPRe4BP26qSbUatXQ@K# %M,-8E>)cCK/%'RsK+o&^<.kj/R#:e<>*(,>AS9oLa8**OHR9>cZS@a %ATn)Oh;[!_>WF^qF+\?Jg.gq>F-bKf`\Q<$Ai4_23GP,@@>3ldSC.idp6/[B6i[he"sTgmXubgrc#]8BEbq1LoQqgus*\ %QnrQs-Pc6ck-#fNGBck@OWe?Nfh+/b_5h3#-V0KoLjXb1LBqj:7.mVBUV^m],`qYS:`U+9m+pg*_ncqg>'6i&3GLh>#3q+HVgc$S %1(e7$6(M"D_?`h,/2HNslR'Jj&YnC)b>om#dtkre*T6arSi4cJRgCFD6:jnZlJnROd\G7L,ak?o,U8_gmI(!:i[8HcF6%8PJ7jdc %XMVNe*(ZRijC2H(]:Z"=a#rpHC/BXb:SL2_/E6#-6PWe3eN:JA4eI,HWuA!C7)^YuksqdbBN,E&kS4(r3`8n>fo)LS/EllG]`K77moT0;N/SbC=E %6iM)7p4GXrVRg7#Oc.I*.7-_Qlr>ge.'FX(BJotPL1H:,S!gU^DJYl7R<+a\r6.2$+hF$TrT3#(7I'5pLXh`e^bjR^#tOH>5EPcH %K3C#6aj9m,9&;r(0SW?03.GVnSlS+=qmANW)Hmr1IgC6e)2S<2uSs!Vn5\Y2#8YMn`&$kFX8r7TL!5+8A!4?LmThac(e+pqUYqB#-E\0`C'(bd$USpJ5I%>A+V6mfp>.n/ZD,HjK545`VUR!649,%5% %/tnl&V3t5`'1t;jfK?_e.=M!f`T&,hP?Xb'$[k2nEnMEB?@Hq!DN6Mkj3)LSq2C*Ue46I**-5XsB().8Cb#/=]V#5P-R:IIDo:"F %7X?:[\[J't`H%id\R"ZA?T7_gVs4cd1$]9o/#ei>$5BK4P1*Y8No$Kl=.4MZe$p8)Z9'$cj7_!/76)kAA[Pj1'XDf%\lra!Gpe7? %43jI5-a__9Q0X!hp_ns,JYnKS>)K*XVK4Ps*h/tDK20?MJN8!@0HUhXE#u,Q()/tY^?$bs*cGr5YR"X9PaHFn %+hp6N[d/XEQQ %lnG*Ym^PgH@`6@"0>@CD0E&%cW%jqIT^O*ulQ!`GXY2K?' %jin_!Gi6.$T4I$HWQ?*2Q4-OD(Hj>?@Y>?df(#5;rmn6)#p1f?Cr:r9rW9g@M[2]8`^$_jJKB;fb:f'K`f$).=%4:Y&+EUR %JUnHldR7`PlW<3Mb`XRVaCu)ksf^>8oU)+8dHMhhpD-a`dkl70IAdS %fa\>/!:>,[!E.?J+E-KZnR-"qHGGPk*4eT0(F]hWX_8PZV^c'`m8CM\JS($P0YiAXq(n+$]R]K)1ME#W6jd(&%")N^$0K990ZNL=(,N]d&7O):lTJ#/HhrFUor_,#a(m0$s!e=E@BpY<#+NtTFqVHha[/HCf]ZUi=Kq+[_'h*rM=JTjY'rL`> %!TG%!Q2jpF.H!6VOS=H1"/[T!-bJOV.(*HHHWVid76eqY\<-h_QkK]AQ@"H)Qn5LgQ2nF_N[WN-&a+TimtK$#Ha2BRPM-,i_!2Lu %O&dS\"2fg5;=s.k"mllnN58^^!@ngS"TUiY9dB$?KE=4D$q76`#i;>uO:b$l*RMtVp'!dH!GnUuHsNqr7*Zo+_@VMe(4ZgXgBfRN %Jm%G?4,S,eV_?@pJ8QhTqp-'\Z%2IVe&VNQ;R_/_\`Vuk-EMU+ZmTm7Gl9fqh_=U0,7][.YCisU$p(#).kX!iT(#ti`9mX1,sCIiMQ(3TE8KB&YibkJMLXfOBH8+kp+^iZT7V?@ %^bc0res^eqR'>uYiu?!?GW4P#`gF39HUQh7oS%>gTLV(3B#jrP>4#M-%?d>N>*=F;%MF:,R;;!3'h_Mnnnd\]RB\rTk1D_bWXb"i %q6dq9`NJmQQ!`jq.(c'G?H'$^.eQ21h1N'D?QpMr5RcKW57'T@4ja+8.!u'@1oP3j662/YFAN-o(?_@DMiqEfdtf1*m>q=94.M4T %8AM50>Qu'D5Vi*)ZGV@Yi_^m#nHp$;@^J6g&7\u.1CPV.)gKW>#i^e1!r8TGCs0ml;n %-@>g("1TXmHl)k=d0&Y6Plpq)*1hgKZlf3rG!kFShA$,+4TJV1Ud.G`j,\F"#mq#iQMAi2WBWj[+9Q&8`N]I@_iNZ7++alG0-H976dMp,;!PaN(bP0H,duA=WE$\[&pVIL[L5O>&&c$SW45neAnK@qabAb$L=bU\YC?q)$TmoQVcKe`7dZIAj5F %EfVskb*>0t^!FTr#_!gp:%<@*9(@%'57blV,J+nGIap7sQoOFb,fg%o%^midaooBsKlpBp+!`sH==O_]q[h`*Pj3n>iOZi`A0329 %,L$kDYFfUiT4((dUP2:XK;fMi(nKW#(4\(a6HTDgZNI#L9E79f2%KZe8L)@\@&Q!:5'$a,P:cp>enb=3Ej@5E,=m(9LOgk9a#QIX %Ve-&gO!pX_8iY:5f211^l[aUS%5Y6X>`Y+G\Np6qllZCa+7(THM$sD\aa!Z`3C8H,3DY0M*iY?bHTZTs$`Z/fT'X&*1]TUl(fTZb %5?FXA_h=Io(IIH\+Vd)[j3T8::@2K\/jG1*&!"=GlIpt;A>$424B$ShjXEt*I-FIHW-JI(:^A[0"o+&.P@]?Z9Mg'<[EY&YcH>Wn;o`7;Kt@PqV@ee9iFSZSI7jbrDMT(,Nk2D;G(OmJ^ON1k)Z3N5h_;H=`44FVe"(h0S18kdU!K@O:f2<7nL^/#+bU+G9e0Z<"X*\+G %r-;Zf\i'T*'*8K4C'&tn,mr:lJ/"AF5gUG2L26mRc]%rrl_saejA8'o^=[odirA4Hq[Xa$!ZH%.raV_%o[WpC!89&br_;fN[KZNBaP[KE?^O-Ict6Z,PZQ_C!SU)$MkZT2J=o#McF9ru_llX__T8!8;8>(*fFjbE(4OMiPidXodh^ %)S6M$%D"_<]+:IXclASC9EJno5,FQKXAB3CCVs3!p6<_h",B0#4mV1E_r4j!=b>o^rY1*ZRY.P&^G$4!jt$I.?2dX:5'0=QpWt)6 %bTkl:KQlXQILar&>3MDrW.@5PLYGu,,Aeo,a:gTi]"_AE`=f=?7=r)cgW*t8QKUNWj7\ODtjV)Aa:c=G#='QreKLniRoLuSXbp"o:.(cMNQ1V-"^ZH&A(FgoITmiWs9/&9uJo"'l:7r8pN*n\\\hJUj>P9]*hRsTkd3lK&7fI#mnaiY#[%A>OiOWA7=?QBY?iFe(6YZHnkIjX4kOcs3 %""Fc@c)2&6'+*ce5/I=,6dI7ORhcF."Z'j93;5*3/'[MkqOI,D/8W\5*W5I1\dJKH"J\/trW7$?.Ku!cQZsJ076m[`p#eX!"IM^X %##Ll]N47Hr_%PHMO+rOBG=[*Z?1CF4(HC67WAdn;d7u4k"Y5<14hA@R35?MG'Pg1kb`9?`g9c!LPk_eAgaUNP)LOUHS]\G/80dP8 %TWQICC#'lcf?\U*WRAA-1!Qf^0f8L*UYT.Q[JA,GdA4`7I_#6?rs=/eFoj]`\G6ua&et;Di?Znqn&_Li-M6ssVfTYD1#i!8c2Rol %dm?;jEtR'uS(qa#6ELqp^GhINJXqmj,<@r2>&jcI0[(2PJijeoT>>_*H"-ug0b!8$huXhD5n!g&7$A%j$9:'r=J/W/C_(?f-^b6$ %@F%aQ3i5DD[:`,E!]sHA5YW@YR"pqg5TK1UjW[O6N]TKF4?E=Ih6?qbOpUYU!A-Um!M1mbc_))&,JF2k-((/3f1dnVjM;[77sEZd4_fO#nL?)W\GNt<_^8ZirP`/B[#I0=]>Md$756$,W_'*(1Q?0(rT %.TSO8cE8?8nH$'i\Y,H'-ZMkNaanF<3Z$hqHN=M3"O-$LBmsGk#rVq0(a'i\UEot?(M/%>)F(pb[AZW,F93TulbWsj,U!.7MgiR0 %&VoFIl6)cE`7)M0/EfcZ5f_#glG2Cd#jf)Tl@<2l4$_DjkS\26]n\k6\i2og%$)#D$*rdC!Zcq;G7]0=GVR8@NBjkPNK3.Oi\6QD:Ol;mGij7/,S1L:.7OJ&>a'ilFVJ^2k\0[R8$ic[ %JI6aI!71.8G!jkABqHT5/$(d6=eoHIX]p?pjUHb:%LT*+lnQ%" %Y7\>m3%Hcb>X.E[N%VU.]AP1n^T:7JlCbWX1[nFOTXTP;bg?R/!A3Fc8kSm3$-;M_(j'>c/eFFj8C_b,ide`DL,bPY:#\oVDP=5M&S`LkfCpR&PguCuP$Lo+XL;r#uG.\#5S&#a=+3-JpGStT7RGA*dkI8M!7%PUUkFDo4-"+.O'ci[f&@.fX %6<5B]AO1(h%of\,+9E9V07%4Ts3k-s<05H8pF'43B.0Q<#`Ua`(Z%iS*WXgZkJ6!B:\89@ie?LkT2;#]5>j$ajl]_:7[**?K]&Q?*'a8@ed:XP]_D34tC`'!lhci*Y"(0%uFSI9F3^0nZSVm>If6cMg,_^Bh1RT9YXQ`".U>lE/#A:Fs %$Zu/]*M6=t_![u1Doh)Ah$\TG,@q0%9.F!1e8C"$/nj#9]babTPaF3>C4# %Yp'/XpT>/#Vou/=-S+RG^N^(V#6Lrhrl3@LdrLgs%"3W?PLlsJWNG]I/#+9ZQLge^;o]W,&aO08"';/*,!35`TLC!N5 %-uoTTp4?Ni3Q>`Z0;hK3=f^pM6A$?@ka[AmP-Gm\kBQCpe_&TlLl)fLp5)iT`9,oH!QI=%V?)+hZie*7>lpLK*!MGK7k]qhSTFmZ %JPTA>[QNTYjFr4o&q^!ehMmQ;DZoG(?H2:8G\8]P#S@=UkP%"C:go]Q: %'DiAb?Iu`&[^cL$X/HCQ9E]p[DVaMJGCWb/0bDX^UJ>V0VLI%.S#67ZS]_t-(S!%eau#=46,d/u/qnCeqd)-H %Jb#-2d6nd38L0FLA>>Jmm6g;L8?/R%OV;lO^h&e^4/Pq$qWWYUoBO4Ag0qX":uBF]Zj[ar?$g1M#TB3WbEu^lG%7b/[e?eJU*h[P %!FRDS7;1S7.5t_9`l&l#nX\dD_2:S_3o)H6:Yt)]S:B`-@F..oNkmSHQJM'LL,21)ob(F]k]kG7FT#%YBW0[KCiP]FchdEj?O4EO>;@ %P]ULuS,454`+&?#8/qihn9YTAlBTAhG_FIO@iA?0d]#Ykae454VEL9W'\=W&JYtEcOt+Vb]Y,P$1fC,:1C2TT6%q>W?Vrn(.Z*+! %$JE][p6htT;r@3ACaW-m-pGlb^#*3+QEOCOdm3:MMsXEIS:AQ<]F %OE.N\1Bq]'=M*skNb\3SJX3_68-O.nfR`@7r);2OE(tjlkR"Oeg-J$p%PJ??,N+$X@hH`u7^fWYM$sefQb5h#XkaJX*@=F3"qD@W %S7dFEn[C6Q0P+b^J:+&9&k05/@"P^6!s<@1;)5^X3E<>C@0D,JHL2iENaP/*%Z>T>>%sah4=%s_#I'pX"Y/YDd%sf`DU_`)ZJ!a5 %RPO7ISRM":ub%"0-.(b/jc+uPgSH_kH;m`HOQ#o.#FA."9G %9Y6a]s:#))8%5r_243*d+K^6TJ;?t!4GaY %!5\mD%OoN`ai@,+::Kaqk[pi.X:?:AA:o%JU3K!p;jF.'*b'9a2Cd8(;a5FZkhGhUge\4nfs5:E;9)]R7<&m09?9].-4a37o-BK: %[=d\-+B/4%)[1TF*2r74TeBP+]BLk#Y`g*fMBn'U2NmAi@c61t#jmKU)#&[2@phV]GL0t'\'O=i%"me"i>Pj\8@#2]1>%IV7jK#, %0?piiHC5_RO\o=^$j[jMr3g)d*@.r]iV=K#m[%GiGC;bPG*W-$mPr$.m_Ip?&L)FsL2b`lV3,fH!aqXE*#[>;"(.TBP:0BC`f%iC %+!qZXo9#lr8@>82TgqW2A[Hkd']hK50WUR30k.\A;O.s6h1P(k]()N)-ihUA`L%L-THcFpOs=/e@n?`2$ghQ!A?-hBV&M(]L*.pH %9EW$1SfW2`75$V^@(__e&p/3E%Xc?6Q2*K;&pVro3k!/)0*,\gaBX>OLC:cf9A`e>E)9)7bjO]Ff*&P&cVZ4q=*IL#1!sK)fahr_Sf8P6T!+>.L %5ubFZeC+S@,Da:'3a_qbKe&#d@%cmJjf7Mec9Toj34q?&jUOW?o_Zc(n-ITMJ0D7E^\+ %Ti7un\[Z@g7Ih/45[t(GW#/[f7?>Ru7q0ToJb(o_ag7lO73fB;X4^@&7Z]Q>?eSFFWEO=2@-gk<(=[_0;8_H<8=m,N=`k/.-a!p)8$s,<0F<-(Gb.-W8[g0rUGUA>#CXTeVttW@Wm4],1[Y5Q4%[Dl?IpoB)k:DL1]sef%8d]d0\;M>3UoSU+MFSo %CK\tOm]r6M%.*nO2=VkCl$!Pn?m?aB\R/B$+jetM$.A#OBRN\`Z#dH=.2bR]@"B*R8V^UaSF&oS,]D?+#24WcWKM0c3Y8ERj5V6a %8ZEH@,A1TiMkjY'@a+O,(d[]o.kdRhH\=FA7\0"Dc"WHt(Pl5M.N1&/T^5om=Dn>Dk/hA%Nbi<;3[^(SNn(/p5AT]OECl.pjG9N. %P)"EqMc6g;X&`<,-<'N/[[&mpTo=003K2Lh(tQ%^%9;cciO1D7iZ-KrPTR:.OQdW)+q^3*ar6MtL>/WM;k7UXZ"h@YRF)HbjK`Ud %I2ROW9#[HjOg6o@ol-sZ<]uE`:=Fis_<)[I'#Bie`("lcF^bBr"OD&tPT@gnjjL3;#C$?kTO^fHa"\?3uN!3[(YJ7j#'Pc"YB: %!aW"^d"gBj"WN^gJnJMdHE\g0&6._@XHR@fH`p3HJg`,m)AO0S;f!Mu8g#3W8mcsE>pZ>*o`Kb29Hl)2j:RcOQ&RO%[d'ABZ %]hXKI*p9h+*bkJ!_!,"2N8b031gpU6FbQq2(@!n7W[p0^6+D8k]nj!sJJ!MpA1OY39F? %6ere#PuJc,-',ju.r3Or'm?$G]Y0nE0TBC.3\eoWVb)S1NTS(#>V]0T&A72]Yd/2a.!:IC/2!cUZD;'eE1r5`3jU'sjd@,KolnXV %N&Op%]@a+HL-5W(Gb0q>?k9B\RRC^?=Ed_=\J(eN7[n$$4ec6km!\Re-n(*ijAbf6K$t4(

    {#if data?.metadata?.description} -

    +

    {@html data.metadata.description}

    From fc0ae439ad507860e3d7bd73c0a9d870b3752da0 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Thu, 16 Apr 2026 14:45:34 -0400 Subject: [PATCH 167/257] fix(docs-next): set pagination example to page 2 to show both nav arrows Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/pagination.md b/packages/stacks-docs-next/src/docs/public/system/components/pagination.md index 23dc9546a7..06cac8e4f4 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/pagination.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/pagination.md @@ -69,7 +69,7 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod
    '#'} /> From 14b1b0376d0ce40557d8be3e87bd4f03d0eedd9d Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Thu, 16 Apr 2026 14:46:32 -0400 Subject: [PATCH 168/257] fix(stacks-svelte): remove hardcoded pl24 from Pagination nav element Co-Authored-By: Claude Sonnet 4.6 --- .../stacks-svelte/src/components/Pagination/Pagination.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-svelte/src/components/Pagination/Pagination.svelte b/packages/stacks-svelte/src/components/Pagination/Pagination.svelte index 83c5823c2a..7855a0ad4d 100644 --- a/packages/stacks-svelte/src/components/Pagination/Pagination.svelte +++ b/packages/stacks-svelte/src/components/Pagination/Pagination.svelte @@ -15,7 +15,7 @@ let { i18nNavigationLabel = "Pagination", children }: Props = $props(); -
    diff --git a/packages/stacks-svelte/src/components/Pagination/Pagination.svelte b/packages/stacks-svelte/src/components/Pagination/Pagination.svelte index 7855a0ad4d..f6f4842a38 100644 --- a/packages/stacks-svelte/src/components/Pagination/Pagination.svelte +++ b/packages/stacks-svelte/src/components/Pagination/Pagination.svelte @@ -6,16 +6,20 @@ * Localized translation for the navigation aria-label */ i18nNavigationLabel?: string; + /** + * ARIA role for the nav element. Use "presentation" in demo contexts. + */ + role?: string; /** * Content rendered in the pagination */ children?: Snippet; } - let { i18nNavigationLabel = "Pagination", children }: Props = $props(); + let { i18nNavigationLabel = "Pagination", role = undefined, children }: Props = $props(); -
    -Un\32CD& %T^(&GPUWVQa'pG!.DA?/8(S,FNF=L@VoNt^S!T(UP4GhCG<%5r"&l+qetOLb%PjmGK^OKf46lD!4W`6B&G*_)45^g$/Ghh`==@A0 %kju%TXE[R"0%CF06qr2SXm2($Hm#@jT(*L0'SQ$`-OX9)d1eRGLc!J%d5]m6[M9ei,B=&.WIUd7f%XrDHZhWFO2:K"TF %1+&j).+Mt@6*1k-8*'CIT"C-\W1_1]b.4/P_&&/ %$@>Hm%M]QZ:IQc/OZl>ueN(_k*()V_-+1h#UU!,4=lpkfPm5c-+%IT60?:e_dV6i/SX@P]\ZAKGA/cUKAgL0C'T!2+U/KJN<2&@% %5F#[XSarPg"(JZ>Z>0dOQ+D?HbZm/>ot56j#)5u&2.Z(lJo0I/*!>D%GEh8EC8V[u8uUU5!K8p3Bmcq>-bX3#n6KU0^_F^$EsGuK %Q$3eiO2IcM6WTiq?oB\QK*]cHct*;H*:e3NrC=inaB!83oSom-LVR5%(b.#" %Gifk04'f&L-RR\"\1g@',,YS/!7u#-f)*N6$\;>Sf(o)k-`DDF<#7!b.gZoAJhQDWYfTVWe6%^e/6(1,&1+ %i]9L1MA^YT[Y?%CVC>Gb6QsBb! %B[t=&VI"-nPiM(@-k>/R.[^X^4.ZJs:7FD`;\%7d.GLRsF,*c9;;JT:CkF3M:S9=TYJkWe %%FbXlqHft1cu+d%<$sL@KCT7iH;,TH@Ei,l^LL0p#@m/-O)GR3KguN/`nleU3Wmpn/FMQR6--<+10TZK/Y6Uh:Y`q1DMqbdc]f7[ %hIdE];aU\7N?_)D9dYK#*g5M.KG(QM/sqE#l8/HeY%o#!G9hup72h? %>b%7W<"g'P$DJV"RY8>?[0*8T*Tt=TV_Q5$cqq\3U!n*j!Z(eQGQXdu+^9ZI_1>B13.aGKm-%EMl`1M^SZ6FD!5a7I<\=b6fN^/- %dQU0bORYZA@i/bW%XlkEW-7pWo1,N*/m&J;M]r\Z6I0\o5]K;i$[jeN2""P%gZ^]%kGZHbH70FEJdj@F2MMQSiACIsY6Km2H'f %ETZWq9rrm`]05IT)44t^8ig[/&X:_Sm$ll4M+'0RM`_7dFXtm;qi1/3p1;2k_N73@IaH^VeY@Gd,"ai91oGq!2%RCDU+;0%6dcZ/ %#TT#Q/U9(N1cQ`iQVn&12lc]_4%SJ7:"MT"=OdJ,-d=sA+(]&0PE2`T)frcFZ%\Ob=(beJaRJK'8TjXM;qi2jbNoQP6HoRQ@2r>q %#H3C@PVoBW%b2\V_)7;02PAl55+6_+qnsa?5)?4A@;r %b[Cm\)YMgfNN+Y^4>KLAMFh5lK>(E1HpX)OCOHo@5`%iIn:33UO*6QCd!1\.P=EPb3W<.M:;Er;]mDq!p1dKeGYC' %*OO_O9([ki(a^5RL5L46&on5^KH1J,bg9++oaQ=8@i9eudk(W$T#8>K#rkqj+b:iNDBs5+Tt$OHWZ6gf(Y.`$of4Qo!g/UtZ:%E\ %8jSSQa@QdgJgi)5A&_,+kO]3/Y-`jI%B1a)&1fccdYg[V@*BdGW1RNU_HSYa)O/lTN438+"L3WQ*Jil3%SNSmcjrPO03PlsK2K=n %YccH20f^YD(rO0$ERZ6[oWBJGXCFnTM@1DWQ&Q!d_qAN_%XJ2N@H@bXEMTd^I3]2)<2(P@qapC.%$L)S98\cG$QoLDi-MSH:^CZ+ %!$rOk+2T2`f\DQUR?<[-S=fu0a.*fnG+I^25`\F+6g&d?WZ]-k7,uh`+*0ShRD_[KN_s;hLoWUSn(>Sq4&sCj\n.]mNf/*/-@8:@ %>&kl2+FB=bJ_%UEb[W@_Z]Ajj`M=C2*C;F&>7U,\iR8D@?-^gUR0ohio."fqe8p\! %.?PMp4&D2!8SA6LJ@?V(:$j&NoU2dJs%M[50Mdh3PQsr^BLN\:7"5eJ.?Sq95UZCQ28(>g.#p%g%T\Yd+_OEAHO8aM(!";[#hCaf %1u`,nBI'>@'g1Q5&b/[FrGQjSetJf#XZFIDfuWHT2[6?GEA0mEJ5`'Bhl4SD^Y_!J5VgDk^ElDEX##"Em_%SQ-CJjMf--#ZqGI_j/gsPef+FOd;^DX+D)uFG;EqYh!Nbn61bJ+p %ceb-Da)PAMU/-;`kWas/:E708@o[CE,!jZ9]4kJXg"P/"is#Se5m^$uF?kpCpXA$terZ0ISV=6/!-Ej1LCJ3rVOZ9-X`"Lu7DDN[ %'/Bn-IXhjiFi$P8KKb%]E\\4#FWgV44F1,*8EnGm>LHH[)ZI03:o4rU/O*oLblF? %GmIa-+!OMLHm\PBX@$9N=9HH.*[c1<1'UH%'7=t-QDq*5Ct-7@,:[8+-ETm"YOV]\ncl\TS6&4KpO:We8n,$T9o5+ %0^7IB;Yl)aAXDa=^;8p%?;[g#N\&",]-;=L^itDiTpX.h;hBm[kO$&;]Zd]3iXnstrl,7aFB-FpKU.&+GR`hfVNP^bA4b/\K1sGK %YYaJa')WIbiJL`QdGe^E!LiZ(F,r7P1cfCF$?=n2g06.DP#D#@\KNVnt2ND!lk+NO*!RSAf[[ %Fg.OQn,,XPOQEg/: %^E+5@/igDSOGlj*Aekb]+KB,M-Kh<]6]:Cn%2Qg@s%PTgVfXRi8Q77&$=m!feeU,`756$*H^(fW'P-D(H`d]I7/fd`O3E?=e4U(8 %4G&_53\+2jkhObp#fMkD3JW-e0(>?W;8=(r;LoDYQ;^r4+h#hX3G=%)Z'?@Zna`q"+kbZK!2F'WG^s8Y.6Uj<9@`6/R+**'6DSnr %")QA=$'H!!0WtHb_Huo#CKUkN23U5uu\^<=Num58Vg5=!NWZ+[#l5qKsnA.nV4 %<0rXr_c8,S"^3C+%X0?tdqS=b3Z+@E[9Z.1Qa(lK3\"&T#93gq+DuNpg$)K(P^AG[G[2uil>98t!WNcUnqtC[B!d\e;8Omm`?0q6 %_"p2/Q%@'Yb(k\P1g/WY1@d#P)eA!P-p@9\@+SBEKIMeDA;gUE7:!)Q:?R`Qh4DRu$%dH[kfTgi-l-uChs65B6OV?4&G-A$a7d2! %g^m2A0p2=q%hRA- %m74i6ng&^:%[p.'D%h%#S,<KiIcm)Vt8qm"QdD;3?.?O.[8Fm]se' %+MqIXJl1?eiOdTR".WboWeHcJ/I6u0cl/'hS_$->(T&&^ElK?<@"@>E[t0mepo-A`Qphl3lT*J4TB3[9oQj=F3Ij;Dl3jo#dV0)" %@"X]@j,`2:%l3%_g]N]c()f24+d,YZfZSV1cY,SSi?SuJ?*jZpXp[,ff7mTQ5UC\u=F.N@JDU-Q`cpuY_U7kc8@k8r40:/hKFK06 %Di!UYk7I;5M]5[t0X1b!ct(olY09T_i0$8h$c3S`,-)^BW)(rS]WUbJ;LPOW$5G;s0V?V![uL#p``jT"Y`TtLmdsp*8,4]SXZC'J %U'U3HXZdlP$E9sk7pFgW=UTnmc.f+2>F?7('IuZfp$sS9)X<^?pieLo@iGU9KE2GJ1.;e.ML-_H&oD/FWfN%Aj-_X[/9AooaC$CZ %AD$8;.E[_EJd#0p?E/Hs$`m.inZ7X'[]jOW$P1fr`f %q07cMkcIQpj>B!uaZjV&AkHfHU"0hh.S*QPA.&d52Ni_%m6aCEXprQ@YGr`kF1Hf.XAp&Me;L@M/U!'2^+fc?O.(bOo_DG!+i:7]&@LYgN\Ue)CkFu-4-^ABf2U&Ur %21%W,A\N7%G.N`LqFsps3BdgZbl!"(2[P6iRg.:+0%-e4YO`BRqsXX'5n9mR!^h.C24;"0;@Asp2r('3i:A)4k'0FOO8qBd<+Xl7 %>Z$4Q!'N\C2U,F/Kt,ooMm83>i5IZ>*SNKa)-^,C+%$=>87e6a8t#=]>$k4s4Pp]l$-)9.n`d %OD3j:;2\@F[Ae..ll\VVKN*1+0&T@ZWPpIUiB_.=ZZ4jcH7^NHaIH``Qcp^>5i9#]?g.!1:k:V@+h#(i1^M,ta<^pZkk2k8N_pFY %TLV@GOItr.%J+KXesmt_T>ePd5D'&4I(bkV$+\7GM?D*u44(:ZGiV-EbW1@imc&2:/#k6e9,0W'_aDBN;im'oJjD/8P&9:$ZUQJ5 %_/4rig57g"@egF7JQ@%*OH4ZIQ;UOCCuG4Y56O\tbRZ8#%3l]BA/b0TU;n8V+3A8YqRXQUC.15SirG:'CtCW-GjF*,/.[L>#5<1#4;!f+Dj %_(,T.gkUMnYlOQrKa`o>Tt\bB^,!E'E]6hj\BCT/hJoN,&ZX.)ZQ_*;2D$9gB&D*/BF>W8!'B+R./Z52fVVfjo5#uGo&'pCg."NP %[*1#D05JGq[2k$Rfs0OXG-?5?7$pt2-E(4]ei<1Lj:ckcltl3B/64_aoYIKON[?j9#+5q=Qbr*1lg3oE^/a@dn:'=. %&XhKNpXQ%rGL_OC5]4&F?05/TDg@@+*\;XE,-8M8m2m6HJ#.?2"oKhF!GYKc`;TLjsb!Gd4lC/q2C#[+tqY#Tjf1D$^JKO%N'!;XE:Y)8te585m/ %$erPE6GiY&X#bEDXX)AZm[NGdC_KHMG0)].^F66*KO*?8aEfEW>D`l&`3HO$;)LS[W.^E\pd#L(j+h\ma4Ce>H)K'AW&3ole-EKs %h9*.No]j52]nSDG\2m=JcAicA=Bld^3@P1)^e,6608-6t.#Fr]^37l&'n&:Z;AO/!JCOmd_>SCSXS`=b,77lC7RDO+TWH/b8nKTB %/%OS]Je@A^JS7ME&rl]`cslU!F^D,9aT.QQHbQ/3anR8Sb/1>V@K93b5O1,o-l-pUu=V,gA"G %:8'jf$^*.W3co6nY+f#LD78IuT9B7YTdD.>WFsD-ASPGK_-CZQB>2L03^L?2\J %LNq9=**q.SoXHLL-*']!50U$GH#9/op`3FA)@KCre."p7-XULNCU?V@??qqJ[b59YF]1*X8F"g2,D!>,@gN+/<<< %.E62m`U)cAd"T1Fk&Z9>%HD5((s7Na5tI.5jTbpjC-dWD+PK]HW/XHB-,Q`S1QoA[[Kr4EA`Q3j[pUUFhK@N%S]S*a4!YPr*!L,! %313;XRTKjg!N6R((0W?>TFVmXSaq=+S=O(GkChJJ,^7iq %i^SP^`a6I@68UDYbA %6Y>`*ReKj[73bD:_Z(%hJK<1GEFgA69N!B&@FrY9OKgs5$S;l3\h@=m)ZFqScm1F%n>Kq;e3[44'o:nj.:B'[8q\G\&m8X8+,(SE %jQJG#fb,rrQ#jA?SambST&F@F'7cC&[-?iX#&urqP&s,*9)>Z+(qaXb:`#8WmOk]&),3"4m';=81c,d?N$6H?^tbRN&&ps++;V.5 %g6jlh'l$6oY$(1V:.]i[-]O(,.3oN5h/*@9H+YBGUR:DTh_(gef47f>SK4qb;Pf)J>s %Q,spP%A.Adln)XbHrImfg'kN,11YVhMHn2me:CN> %>H&\O>Rdc+Qn[Bukg82J^b3!"_,mOs&Ot58WJ#6CotY,VF=V'GnrHbFpQ<".gn7TH)uFB_X,XTc1(k$QZB%!c`3&MCsSdC&1HCn)E9M6*ke_B:(@`+d< %.K\,`qTTf6_22,;2FEoiWe'+@l;'oZbIGYD2Ys&@F3Zd+t\$R4*5>S/nek[tX2j4aV&Q:Z^.W5Bf:+NnQ",+ug7eUVMD!$gKPYuji6 %,%3NCCnG2GNUI'BG*C6G&aBI?oo?2_S`U-dY,qu9;n*Bs>AJN$/)1EAFJHnU!&oL]bOEI@g.^F)mKo_/LmT"SUQ$T[NAQ8Ir %(tpZ#Tb-sd.c9AP+Q7Zq)&H6ZE_sl50c`@B#PDd@_T6,?gtYAi[;G@Jb;(QtI7Pu$8K:U$"u;,?M2H).k&go,K";\*&]?9?e8B`8 %0[5pO6^o6a,1J8:3a9(6Xdi+:R%[PkK=*QLq_%(;W#%U/\hbgJ_.Jr\_@P`"2.4"iUncSed@AO\7U;hsc@8?[')L#;;1q+8'f4'/<1-LD"PI_D-oWsDCoC5TXK<\i7gBh9)I9>SW$Qd8lp#W7rL1peRlA'>LGk %%Z5$:PnPsKiP6tI6@FBYW(,C=QQZj:9!@GTS@38nkg^$nP*W@LfFOZ7\VuJFhZ8T+G,\4k^/@(\L#,iqiCY,O)#kPiEig$))*`6T %P$5"!(rY:l9>q#^ASR+.9IEqMPf7UL`Hp7:Z8rn1CLM;#4$&YV]5"E+Xt'Nl3rL$qZEu[@1UaL?uj@OGMr& %:I`:ii;:V;0dd*!//5"B$M=F/R>nBbf6SmimKB7DC'OF',U1*C&#sTV>`$Q]6PeS+"!YrpQqci)>3T*I&=/?0Zo'LrJ]h;.`D^'g %\R8oUa/)B!"2'N/OM;LcZA5+fdc$qpWu/3V3FArL8;7b5O5D5"Cs-l>@=53DBFr1^:JF!e3X`6YiA,ZpAL0'24.>7g%oILlOm27f %'B"d!)eHK.V>tTPoBkWZ)PYC7CF.EoUtF\40]r#$6G %\'Kj['rk`rp.JJ=6mrRK4SK4)t@%Slq[eZWc0a\aGGHte-@C;_s#f\dXHu#PR&a` %$JQ2h9/BZ47[s3&JtAHXR+e&6ko6Mk<:`j-BikI,09qt9fEA"m_+7+-@s\.tejEpIA/1U*J4LVrjHp*E$W(0a1+]:b?4'i]a@X+\ %'^LcJok/VcCb?N_;H5Uj_E<`&@qBa6V<[SL[G5[L*$@k-=SP!iD?`6GFEJC*;!nEf?C]"l^/f3Rl9ud&Ka^m%0SjfL81AA/8\\A6 %L,%<6M,G9*WgZhcZm\`uMaju6,@QqP15-R511!&i1]@hlWaQf6Y"l&bS](q8D8G/A@g?eh.72;b;kGp9u$5dJ>^,B^&NeJB\)$pQ( %]F["H@Mo(q.#XeDOCB/$+[7+0ZHI#f/^RLfWMM/$GXbTJZa6lWWWZsH_2LY20@_\N9NH%4/$knrEb`^*&UNJ8fQ58(kM[P$2*W3( %q_fj.6/1T*deYDH\ea$ocD/u,]76Hp"\(fsR!bcAEA#`Mo27RnS9XBCjN?.JU8&5)_$I6'-FRDC&;lH"Voomn[]g94@ZBddHPb[E %/oN+`0T.W'-W)*lq:]88)#X+Q+g%0om:8K[+U,2d"gFn?OXd:gV,/8\Ao=/O.#]biFF6B\]HORS\+D@bA`YFH/f!X*4?!Z,kk1d> %+qUM="e/Xi7`'^-V[sAHpYf)(+4',69!\LiN"Epq1Tm[l/tZ-/QU\hMF5;en>*`[^Q[foiY*:*Z,=1V6k"3o:EI4^P]4`#.TItF^ %l1c9UK;9+rI39YDNOR/d'Y$^G3a!oe7s9M %60gq]JY$Th<$0+\pG:(Zn^qJ38NTNIUWA+=>3KP?;;'9lK=O6Ag.##A9&Tc0G6QKo5f"8gH=lQ%hiZkh>7mg0?bl1HkLUe-?C-0#b5N0P;#__SK1iM7!Bj3elm"1i7/634Q1_@](M`4\@#3C:QG4 %d]RRBUX'nEkZS;TiN1MWhJ8*R'l";REIR`;^m*J&<#W8E=BIV\fF-dLl:?,f3_IMp*tFUU1$64#YO-A\)@/]/$CAN9\2KSiK0cgu %V!+,coQFlZPq-F(+BgV2,,T6$HO8a]6F5+q9nf;^p=A$'fT %8-*g\5Tpnt,>1HA-"":9U9(21!<%tt8sr`fgS&GnIVYp9%#Hn([8BRfBrWlq'alb=5L)h\j(frZYfK6M$"M]u8W&-[-[\Eq#T5Dc %9@7/#NlUOZ&apWp'aE6(dU=$^C:/$/#_Ipei53n%CXl=@ %K9$:!YhBB]O9RkDHl%_MSJLug]1f8nASGe`KeURF_uVs2G)-[k4t),<.mC*@,7>cdQ09UKN5Sh?\KVMN7H6#\("H/Z!1(iri_2mC %b%mi2`5k1a#mX,-&6hm23uh[b4P)5+J#`irTMIIrdBsnWo0[\=.3ql``qh6mKU:?K;Fp#opIj+AN\;H>!=<[c0Y%01=t5W1+"Mo* %_OWh.RQ_N8?Q(R`SeZODJmQ#&%9D/G7*ItNXEKp&?5>S79;/B$R_q>#eoskea7ARLK`pG[%iE5Z %[sG.lV^>FsAYGm1n+m%/rC.Q)`o%+C8e@#tAYBur0T-;MAT:&+JLkXD9BGuodp=1!`O,^/)*uJ:77.L#'#\+44XXd#:T'<1beuK= %hcaP(,;$ihQ"qZtYJBjlKa"/?+k;3]Gbg?bbH\]Tn[EhNSut'eA&na)S]7M1?qV?T:9%OGJJW@HK;ns7RDoJ?<[YH-CO,;T&JSM3 %#UPU$+#&MY1f'gDK/=a8CQ$r;AU:s"0GIUN$B/Qn$!1%4ZSEr%O3tAPD1OM\FdGQlX\tiV5^3LQf+Rs)$\M:k="9<4:`ggE)rk^t %7Nmb.Pfp]R;M6tn+H*q!RN6M237R%1<;4K,.Fa1('0-Q*#abA/L$iY+loC+]]9fk6=6u$log&tSQr;T!AFr0&33.dX#,OXgBLQk2B%qlqQR8 %h3eR/R5J)W(fk\i-h8$'3KDX+aN;ZJC6iEW+*/WMF!Ar:RM!+XHZYKd>0TX@k-%g,?)Ou;f4E=kCti]2mYi.BSF9\,%%bNaY%A[* %&sGi]bBe(QcZpraqSU.T\B(8EjB5:>A5D9)=#7PAAq_$=jOIN,>$?50K>!`>5+NM)P!WO#[@bO`YNG=UZi)8=!NI[P^'C6iA-BTe@aBF%UK$0t4H8<X$o)DC&"]]i%C'6q?\V^`#UFHAo"C"ch=fKQ[1r7aBj`RRW %5Y\IO9e]4?3N1O"<>F:i'c*kW`iKJiXZ@!Eh4.aqI]k47=HtbFatQlX,$W)lpnR1KS.` %>K^>S@ChrGT3(..X0V:r)>pLNIl1EF3e:[uC9YiP\9]l=D';oc^2I8^&hWZ*'Na;>Hqi,GQff0k`l'ar@`$*>?CS.V1iEog'p>M/6"IA5+eBiVh='-u3Ut %P]^'-'jBnQ>Ul"GW\n7_lcE+AceMg&VEi[4X5C!Xb5$"\+s*cL<9s!PC\:ZmqFjigR]%"/6+N\/]cqki[C4I\*MiF&f8aSm#jRa2&'=0FC#^IYC\$9Jl$98I&t=cFuQ&H"SLG/6FA<=g([99 %3_Hl4rN/[*2aJloTqA@ue]f5Eb63&iWk8XA]da3Ch->@A[!j5,^a`LF'!\)nTLqP\6s04mjk>=AYY'O-6((iQ=0*#hek$g]"HO9I %a9gSA)T?6PN,jfcZ:].?A&DPES6:A\WcXaEe=BU.cRL+%>4U#Pd:ef.FGdf>7Whl\7@bPtXcTYcBiuf3>cVtM;oGo`e8ialP(p,/ %=LUV72e7<;A;OQoLas>hF7N;13A&eJQYNBk261=5s(3HVVk2L=blCq6/Q?6rS$uM^37bAY-Sd&"=dITcbfSYbHCjKt?^aPj8`qpmQUf4>O1)9::_jL'9W7ETZt27fAI>t_Z0jCM-JE)5PA=#7a\ZH2\@.N.D"g$.s,Xt;H_ %=**4Go&D*BuIM\ULpNi33CUl^j&LdPCP#'Wb.0CGcF&DKCW-'LjTh:5'!(S`<>is1ZC)HO %B<*"d'7=OnghToU[Pa"]"oDMh-Z4N7DM!A@b#Gj1e8CqoX751EE9^I!pSpo8CK^VU%"L4<^^4>`$3t")X`/mFE.S7ub*TVm>B.U! %=Cl%NGZ %i/h6^2[aA(4]X'Q[WT==.Q?c0Msacgh1D3,7cR]ar2m7,f4fnRN5JY=i[Gr/$-qQl5B<#\Goc3k_9cHKEaHZ\4Q;1"YXqVE:J\2o %=8ArLEaNIFljB5*SU%iidTu&-T#:Lin:]C!`UDq106t\jI-)*dk>di?.\HP_pNhgr]gh0k,CZgm`)jM1fCI4JWUhWVp63_po)XMRp;L0CR28kk(tq@=7I,-"Wh-7VhkX&W-b>-+]S0rgR;(=lS?bctE* %UKXjr>1mCk'p,_18?KGV!KqiB7Uh\GUC42pn/Z*:=VMPXU'@ibUQ(t?:VP`WUeS8/cX'@6=d,bLkK96=`D1sJ,EkHZ6 %XD1]3CJ.oL3L7=plaFq:pYfL_>k5kaR,r'6FB->l3k*pK*k[(\YKF",ai([2g/mD1X)Z=bL^P98$=VaG[@L4E/^aB!Wb&n:rDP!K %>/r!IVB2b#'\uJs<0/2%Bp'ekQ)aIL'1>Q18Y&HTW#A[c"KbXgJuVFD2*l%Y-,HV0APH!:mS/"g0'b*"rlaW*h6Th#kt!n\>\YS6*4qYkE)2tbIgH#.4!gQsqZ4IZ/:Pjq"J6iLS]d]?3##\Z`Bh_$iPcO'@$7MN>:7?0 %qgDe:*s366D'T/?5&Sjd %9DsU!qlbX$nV9=]If-B2eo-*.e_dO5^:QD?\imh)q='Kb[&hG8*;o1_r5CMjVsf-1o8E3uoU(7qj^/i(EU]kJs8);)f<I6>?2sPHc;&;M?GF*u %S\FRWopW9C2"1sVs)dMmgY&\Kh/i$ZII`_+:G.+njlD\pgW&j:l,kl#_DV@?`YWR:2L52fk,3D>B32!DF*iIVSN4XbT)7A$P8-'d %4[5LM4aV0ip4(tr:7/eM0&:[=/[TSgGP1Cpn#*WBn'C."bOUsGDqNV5pUB=pVe`a@Tm^kDl@5C4Cs]uF4nmf"/@iV8< %Xa7c_F*rE3g\'=mgGt2S97-a(@;Fd!Ve9X\(>nP^^$TLRhV-`@(@A6;8h7Bhg@J[X[J/hG,UrF'J%ImoqoJ-;fgbmWRX;ARmG?XQ %RsTL'Df>(2c+Ug$pNXrr6i0so^.he:jX-ULF=,lL/_Ur'0A/Weceb:"I/hC3lg*HCmb$--V>BTHlXsl!cVO$r)ebf(9b2>tP0NmC %cHgiTdSC\Jeu3&iX%E?ejPAS"k9j>,\W+4q9@$p2YNI!6YIE6$IQ_&1Gl80\`?pLRgDBe\Rl>93DP',PAcHshi=7I7fs$@Cmr%!P %S=Y.YH?(atI5nt*!IXgO>PHn*l+;k;S*0hNmJ?,7CAs/r^%))+\S3:LYHQg>SpWpNLE#]qOVcBJJS%'Y^::oQO5GFqF*jdqpL07G %b?+-kqG1c4-HtB)XdNSkZHI105'n-8B(g,LjXq%lCs\L8G&eSV:"o/&ZeP%8&#b,.GC=p_qbl2c&)iR3qd.R+Qa1>oO?W:rK*`X] %4P9@p_M3iirlfadb@m(^agQ!i-TC4t^KdAdc4=(Fd\\_qf_]fNKi'Z3QYru-oW+J=&@^1!RD1]\q@Hm&r2I*D:KKHmDuZ]IrJ0P6 %"QJn+3H4lOan[uQ``IV4mZ+E^\XRhFOqg^h?kbB/5h`MNqg'4L?m<5?EZUYF@5@WjB8eO.u^:ni< %F*@7AZ_KsM&K19lVlj@?)p[1)2ULSFjRrG*]\_e*m$`e,fB\p`I_!2&rqXGAR3qfJD25R-8$eW. %:WqG^c0WiTZ0gUaG5,aT[i=D1D>?f]/=g7>Qhp'7m+PY#3Q1=Fc.S_kZKu2KrbSP*5%fAQJIe6V^VNCRm75Uk7CMkZdX2F8a,Zsd %A5RS,3sK^&bK8;bfu<\u(MBY8R+&)phYWi?a6\o8a#7u2`d;Xb)N[n&O)L?-o0>l0)shfRO1om-kKrQu[e8h1m$@"l3V;\9m;Edg %Ve;?/=10Y8W<6#Q+[NUT5Pc7^e._*;3f_!oY,-AH^*fDggoIqAeLmWnlss4,fECn,`*@8HoLrH`qaL)V2L.sj.#:7duI^:Sd% %*XkmU>]Is#\*`=:%$TAhHi2 %HTrnuAqO[$m2Nj9J]#]Maf]I\T.BoI4(t2pB'#oUl[d&p(Kgi!JBI7LiQK%Y^?.`VEZad90Ah3+`[?7]oo(kW?>\gXRAD_+c4T_o %H&LfHO*62akYW/!hMW[b&n"qq9T3T7,5sg8!KMpA3Hk5Ps1.ZSJKN %C9o>d,MUd]2u^-OMK^;"[pM%7Q;.660:UXSh_1J&I+`mQeUkLss7b3cG8DVK?>Z"p\;clAcn*%MoHa2/5;iL<(3f,nc?F>QH+f5/ %@^ijRAe*Y"'>;'W%9,!%gUJVWfb;'c.7HG#?&stC`6MC]&8H7Qudf7$U^Sd^]VEZUQ>H5X;ea'P#k?$j<"3YDj %3BOd"[_XX5GAKE.bdQ_3pM2oUM#6jBZUbi2g.)AVJn:2l3Jfmk1bk*pjEEn+%"h>O?]Z;CV0O5 %q[i=9\@Qi?KKP_Tm-VES2b=&JIP\"ld7mh.hmRqTG^]SRc+EeJ>./i0fW[@X]c1d'5YTm]I!q:(K<+f">Ij4ZS+tt/io9h/\a@$h %s7r#9o_67%nDVZ1k43BD4-2ST2VT!;p["Gg&*\2jA:Er0DgTgbrO6Y4H/!]&UdYgVH2F>T@37meq=a!@Za6]NPD*uLmJ5;uo:N5$ %I=H]oEH_6Hc.VE$YA[1=I\+76p+Enh9CA"0=#\n2Hh'DaQg\hD'M'c6GJ4"4-X3+sVR)3QO,^f2`>oKOms0(O#1uT4Nt6r#H,dk^ %9@70lC!&YT^XEChqsE`,.@)p=s8?/"@5mZXXPW^Pn[M:t\ZrVRou=ZUnWPa(\NB7)CZF9RUbrY.0Ar#Iqec%US%[]kn$h!ID>&FJ %^#.rn]GL(cYhqp?397g,qec%US%[_AZRT":"_Fo^6@F,,eG!EOm[tB]1%T$?Z4u5XE*_hD0b4bOgiI.FgZC2^Z!kg92!-SPCcR9j %r.aPu1q"$d])@EIr=h0#G=1Kc]9Di/_5.%_\N`1Mr)4]>"Dmne\`]U=[^5S#m'LUo5;t`?G3.rCo1j^;hf$]C]CC.63N"e2J-UDr %So\YU32aLjjlH+-mpDfM6/2 %s1_K*^CCA(j%&bs=p!G6.Z_35ptdj^A^g"mKQ$!Jana!K6_)GkZt-njoFM@nn]gEdr-nWk"#uuZIK(m>o3:k1fm;^fd3QF'r\^XX %dAcX>=L<9B]8Cs5`i#da>AUM1RT6\h:6"\H3&ThWAFJ%#!V:NeQN,g@n[7)tgG17*VoISmZ)pc\YKSi84kTgKq%sRI2`E+^[jMuA %]0;jJf&iH7Nj6=_^]Zab!*B3lr*k9_ %NpaIP(7ot8PhCJoA2CF?(?[^(DoiePGdc^5G^O$l)f5(lY+n(J\*#gK6;-aoEZI#-ZR[BY?I)\(YI@`>O-PFa %Oc_QhWJeKte**FmDLQnUO`Z4]ng!S5=*>qhD$)k68,U#hjG3,.X]8ZdS&^($S)95Xa,W$<%Qh*bMtYf.8h1uG5V_IKYL`1K4ROoB %D5j-jU*)nraJ0HUYs/%-`G,Js2FrBF[fnDS]t(U2pNFj;gLT^<%DKNl[l=*U#2e:qgDbMbK5\24n/)VKa,nK@m4H&c %`OE>Op(lQBinI[bO4E5O1loW7S9g&b3s-7r4Ci^ZG85HcCuG1Oo*T %Sp*&&cZnu:)M[fJ4GrNAcel"8gXr!RUtm&_?=-spr5VSL-`=_.]3s%ZD^VIG[ibTZ"/#);gCG+lIGAl9rM,q2f#P)%2JUI=/Z'>O %Lc_u0*iDO#;eUKch(cLo?EiNP_crjU4FTuYgXi2[ls_iffbf7Kmr%!PS=Y.YHErBV0Y1t:9mf932D'0bjh&Bac2$S*i4_A9ZOLnl %s7,d4gY7p7P'p>D:C8aWq!mEkRh'@pjugun_:mJ?*aK@>&;`pGpWoNO7T0ii5J/+0$=dViH/GuqB/LJ\6L %qU3:I97(eqY:e)uL@8[Ugd-AQECL$O,sM/MNnM,.Y]lLb`3>ceSDXX?r9TrW"Dmne3PQa7ZZBoARdE=(2a(pL8*;*V3d8UT]s#ko %NOmIQh_]La/ABmEm*J.FXAhTKSpY]g,&_\9Ld!9oZJA^=5<%`/hDMu`-V9UV:XZ"MdnB&E`blQOr3uB(QHX2$rAK/_d*$W@I;SkA %n`P#[g[uDuh;'b5PNo?_!-`"pp^2gL*nA+(2'fZu.)j6cC_L@63Bdop%EZZ(325iO9n31XZ>%&XCd6'jqo:X.2_WHp[_YDi:tpKPb[WZEkM`ALhHc]O %@u#5k7lSVOg-r@C3p,+fp[d_PkF)-L[^2kB"Yh01#7LV4]K*NKqdr;4M=$`"O4,3AOXU^nmL&b,%@8j_nk5ZUM"iNe+Xq:J%E?Rpk*q,q!Q&E %alW?a`BR,CYC=(^rJq3PdXRb*h[]ofc&Wsp5Q7;IbPt/.h\Ub3f>[des##_d8c%I3%M%5<'4#8fLF+!dlat-t6$(O4epETkp;dCV %(,$1.+Z)B;`M)rpdCBb(Q(),%4T-^OllZ4LKhcm+q"a(5om'GX(<6<8^;bs#'rF7pR)ROH&%X"7Kb,$;cb;8r>9)d4g>7$DYq]k< %frd@#U32A90+X"'lE.N'rE6`eg8!.%T5KVXW-;NL4?Yh57nr3q#OB]]DgY0Je!n'oMu66@$>\Bfr- %`JsDd0t,&\EuO;4UC\F$R&$UaB]PX>`_W5(4Y$E8Qk&jLjp_iIgXHEj[Dp8>/PPG7n,1%iUS`24im8c)/rb_sJP!PFRan:Ok^/4R %O%7dTY$IDQ%7+d12[4cm9u*,8$t;VKR+,Co]a3M4g6qCss3J2.I?WnVFMC$q2GKXoM)FE(QP4E*A?ojlODb(2:hR]X`3%i[/;<>Cj_.:mFifJgAWnPP]'mA9E/cC %s1nZ4Ai,K'M`ZC`:V+-i&TCs1-3ftOB(=Iu3)&5ZGA2R^@j8Y^'%1lmO'R[cj\eGcAt4Z_C0S:'V*-s.?n\S,JFm^ThnRV>qSaQU %\G5U/;A5Z"VPi"(O8jA%fiGi$l(UsJ83NE]f&9!NZt#Q3H.jL8`]Ga]S).R_>a14AJ*bV%3^+ZpQTCalBa+-N?.uC/<.UtUkli?< %f#OJ6pssu/r6Y(+D$YHcmF0fa9X!n)^U/3!cK?gEQaU2(,]p;.q7=rG*Jr3QBc#gdDge)#kuKVk/W(hFBl#q,-J(,8pOLcOFQ:_6 %l*mOfO,[kO^^>\;UaG+Omi.FC,NI0'.iit_:cpm8e;.Id01`"02h(CmW=SMXDI[H5q@c3IE;-/`Fj_)_6kP.(&)D;!\%4crm8>l$ %@C`_nY1!)R9_d1)BP;0T)b/l8Yt5R5itg\.*h/i$b1">*:M\1KQr7YiBt;9MqXkR$l8qYPO]6q`;XYQoc?LCkeCBh54\eZJ?O+/? %rp]"AohT4Yj-,CZo:O]?Z$:Tdmd2ZcIpQJ0_[FX3D0S9oGOS=jHDjDBgplOL5BbAJG>H*apWPb)0>]Mhgl26m8,l2*0E((5pJuc> %a%Uf$RUsgo-5Y]^1p+e]YEH;54#3hMGr=g+o]<:?A'\JrqX0%$kIu5,PiGhed\R7RXQfB;og+gSS&M]9Ci73ud!%[eHSO7'`nS@- %ht14>A_t`sqr.?O2r4%o>+[ENhIk:IhVp6a*?/JL1\_j2+$t>>lDN,QET`qiCjBAnrQ5R-eFMG@,qXm1e@*?aP*Wds>3prW3C$`e %6FEAjMc'@f88?SXFEATE$Y*AdO>q/>mKOd#OoueHH;NCPI473p8DitB*b^nVPjZ,Vj%^,NKYHX8N5:8r8Q*XA`OO)qgWG+l>o.e& %a+3oWagAs^"Wt3Z*=hHTlhsSPNf=94InM[=DFF!$`Kc-=BrQg %qDW7sI>cr(`W9AlFT$G(Yj3U;A(1m#ZYSQ&AC<006YFoFW?3,R[R-.G&^m71gk[+I1F9`@OJVp."Z_BThoZNE.NNh/*U7'+OfZCX %R3].$j)*Y_8r'!el3@+'4H&INHL]M=kKS)B_M0t.NdG)MO&$gC")VH)Fd!d.^Zl>J`<#Q.%tB'$r@]P5Sc)L"+8MmJnr_hB_QNe? %GI4FI2udU:^RK?%VDJ$Ds#<*N=T%.2H*V:)cYi`%opXWh-(eeGr;"IbcPL6Uhi_TJJ,9JNqd,i,I@L99mG\X>s0hdPc6`-qqP?dZ %o2@;:.\+9FV7urWF`TRh*;SgOfDGJXSo]B).d,9e=3jWZ:L="]frMlZr3g^hPJ?anT)\]SoGp,7Him`dDQ4TH$ZKutC9]4t6N&lrKPH:>O7;D;BMLT+;gOkqo#744WF"-PJ?UG/'HV1$K'3I77F+\@!N[JSe %QtAFn%fWF68\QcZ6`h@lgipjIMWG)=Dko&/rhPY^?DmFA9/3%)ROU?EHa&6r'0k*q\)Ia!)7*8#=k?,$GT(AG-*HdtF\=XElB%PX %$r]Ii9Z(BQ=&_2Nfj0kdM`,5Z\e\"\`j0gGS"=C %\juZVm.g+'EsHXO4(%c4apq?'&UL)Je"nup4SkntW=TNA.Ga*k"&#(9/hW<+=CL]PNJ5r)j?aqg(DXEVD7a6.M;_Q+,N4X3m^*N! %AMXqt:.LB#a8q.)?XPlF8l=;O$m&"b(YQ23i8H[[(^hoRATMBfm.a^hH9$c9S<_>Iif32bBdt"s#h*mO_PWBh0l2p!cA[Q^+,tN8 %XJ+[Y%8G/DW%RHYR#U>eOSRCgmSqIcl=+X8)beSlWh_f* %pVq+r1?WstB.=FlL3\7@E^c.q1EE%b%=)8*UQ[H=X.S;dd7YO0J1'JV% %\,*m3;t`sK<3fj_bkh7d6Z'2Pf'tD1+-KnGg#+W5\c<8kV]1dCR"&.SD#Ft5QsJ,dP6)&k''a-kXXu(/r]0G,A<%RlNfpb,kV'>J %IF"@%]![78,2uW+2U[=35:18h2R[F$2B@Drk-WO6:JG%8XOq(0R\mjCl1BM4+?fNQYYAk/:Pb?J$`#NAP,61GP*eq7:<"P9$uYC[ %Q_o!*#]15 %eBDIE?SW1m(Mlm9rQ-*6:fBQ^,;*i(h&m1IYYE/eD^10ASp\:\Wr2^h<4=IkQn!NmD\;U0dZS>'$=()4G1#'APKXpnp`acOT7,,F2\mq_DL&d@IPd6+WM %0Ub8EFE)-h%Pu79HQ(-jTDC#sSut+9I7A,="AVHn(Ilk9=WVOD;V12;83Nrg!F@EB:SPusT$flegD[7%^$Wc$_>@HjdXnY2jX6Ok %a"D]8`#Tr/:S4F=j$ij`7J#$BfM/h\hWSF;KfFBk,K9(`Jd7@@3r#!$Q=^[Ybs#[)koTc$@EaP$^VE>o\r>*=qo*iA+Wu/ %*M24nY3dN'dbn)Xk2J@8%t?f?TkR/>0sZ]^blYde9%PmO^Wor48NHmBH='g.cReE(BSu$f!>"j,?Q6D#-+\O86e<@u9HL2[c$FTBTec#u#)i6&]oI %o^]Pj`NkN';)j4I*!q$iYae+d0\FAu+l;9.BqTKN3p'*LHft46FB6d47&rms7?gK.bY9%e#PsI#d2h4V1qf*]6Q_?0K-H)ioaNQ' %"-%:3]>03"Z`u:L`s2\j'Bm$k"JZ8.(dX3ED_$J>al+?A1jr8D0DbC]M\hA"Sef]egPsOAYM#Il^RP!g]/_=!1[T1@d+tSSS:1<+ %2eS$hif9@[/l&u<&]EJ:3RuAgQCr?C-f3rNA\)8U&ZPs)b-WZk%NCtHa%cD!m%&YI\4)o)AfRos90O9!jEj@^V!Y_Y]NFa/8:J4i %Xm+2?e"EC)<:4ib;;nV?!ISZ7qaLXq6W1H^@jZ)!IAqb`6I3)F3e#oG(OMsCP.-(=mKC8oT!74icnr+U-gihXm;N>QiQbS#[2.^) %p?(#[`AK'ULRJaQf=#ZgUiWAd/X;?:$%^Bk&G,>^P\[)/:MVj+<5;4#+5L3&]S@HU]+L;=18s8=1bIrkW=)8qRD7$7QOJ"7dF+4g %R(,(/\;4FSDK)h'7'/"ts+nfbrHr#US2IlE<#e)p!:XcBD$2^89DhiqZ9S&$Da0Y[\huJ@,M@9A"f1i'.COofD^5oBC*$]N>m%k*s7oUU*!pb%,UT`c]_L0B>d\?n4%.6("*ZJQ(a/u8[/>6RK1jF.96WT'\l^]OcL %&L!5Z0PoD7a]NYcA!_)]8^RpC-;PQ'JAYf%_.2^kRZ'<%i79^b+mSFd8#\T)@Kq1.,60bcbMbgJ#j1>3?n^iM<8`Tj*OG*L/Uce'`@:i6CV&l\gD5Zf7=&aGK?iL^*^".p:p%1fbTGj!!'#(ioXJ0QICoM(g>M]6=6\f>3$:2jf)kkfANE[n%&XHp'kRt:TJ:e$Jtg#"g-?N%2>?a96`.;gSE-!klc:I=8[V=b$A1-< %CInn%0T\BR#)\I!+I)r&P$IVgbm^24Q'Lp^>J<+HrmY'Ei`Z""D:@oUqm:E??L5"B$Z+ofDR^dL\\t($m2&GgfOT<1K/`h*S<3g\ %4EgcgP>X0,83F[FpWgk*QHi#/WWEEgUgB"r4Gg:`VWkO`<5]Pa["_J*SsO/J@pZ<#Dq[j(-fQnp3h>i"r3Ia\Vo<*DKo"f9gB1:e %-+iTcAG#u]Sp"B;=hCqS3A%;6?8c)?S^Ak3L\lOH-l+P03"O`/PPP.c!W-`M`<2 %)&gNGZWj0gmS*8$\634ah*=,mMul?OBKG_BiFtP.d:4CETEb[tj&G6hj4)("kYi:eF<,Bd]%#?>qc]17HlIPSCk4 %>WG]nk.Hd<75O@!AA6"j@iEh!UQM)lPHM(ujIK'"[7qGRLLU-iW;9iRRm["9mB %!CnhZ-f0Z8Ku]X@8WW6!`X[YW+JNs0n4D.ZO?O4TRH_^D]tF:pF63`[,#VGBW+5a\-,?3M`Z5.Wi&Z$5qt=2ZWAUj;S8KlT5mK1%$o:t8""jDW %PP*:3llFId1,tBFG"12^%^onM[?6"_8%rb$V<\?&jeBeHIXo#e;-kaRGbRe(TtA_sM4H?c3Qhtl-9Ko!0*p0aIVT^.5r9fA53+a! %-5I4!A[YYQ3J)1dhR./tMK?(u:psh#a_PWN_l\TH!b0S3%pZCP)e-!Fhoif.$MSY42,+0=LEqgn:drf?;/.t])O*rTbW'C"K6Br; %+Q2.^Qc*i.#[u(7bMIK,0Rg6]_Mhccgj*`TI,m0Z4;s.*A5>GFLkZEqkEKut/:?N0Zc^IH.A_rujPXf^E[i(Q\PWt'm+Y>jnEH*7 %!kt6]OKIFdJ`CQ.6bfH(+XXjRAfL.=a(0fbA`-'Qau3D6lmG)DeQ^)n8DcB^E*K8_ka?N&\t78L+e8t+oG?,BRis[H&1[j%8csUI %9!]oW5GZ7D:/feb7cNtMI'V:;T3:b:=fLf;(Y1J3BmeW!H-s39]BQ9\>S"monq3*sgU!Z<^#*TFQ![k,(u1?]3pt()T@SP_!Z8<\ %Hc2qVEqRG!TRmX>nbp(T,bsXi>A>=l.hH;N6mn3 %-4,$Lf].^j8Ec?[F52m&5TUC?_>lld,Rhd&SS^jgFYINm$6u$2JEMd%Ye=sHNtH;"#/aBd/J9bMVpkb(76i1cq!=U/K\U*6DGLK( %PljT>i@/n'[PWe&Tuh9`_U8q,@u+,:&&BukpON1<#<1]t6r_bnpIiC6@hY&T)_!%FXJ`iL!CgLI*?nRRJGG9pL6R&:7/"-fj+GX, %7mSF^m9OKfo0>3Oi6>J%qeYJ11DSUli"LI$]q!bmVeHTm#F<*>'P!5r5T+k/n7cD`$Tb)"[fokMVihKpq*$2X"HS=8$4VR&T%%Xf %d[g\^G>`g`*5&)N^tasAkp$5fUjR2"k::%cb_lOQIiq_4[>[C>[lZ"e_6/gO-c7=(5'u_G4F;PDT"4XG4b%(94cdj4n,Jh>QM7r_ %I^HjF=e9i6CE$Y>Vd,!"B)3p*AX]<:+Z@dr1\jp^)1-jEp/egTGZ#p@jT3U@1+RIL:b9mG1H,"V7^:B>/QmAQUjlkpUaeO>iV^)# %aY"]GgkmiS.0hUK+/B:&1!W@e%PT9V+[N'B[2Zpl'GqKP+FeEN6q\t,/Rhf>`0g9gJPEQeO+PR'1rOlA]/_(KJK.^H,sf`^n,hPS[65LWXb/9(]-I2YLApE^ %>ZntZ"(c!Ps&S;$`Z%ZpGXLHOmbr\4JU1`eK1B+3LF$AUJj;TKDj(4P+15f#_(!lUIpVbQ518Su2fS7C#-2:Em=Hi$lqb%D8X!AN[(g7edJ`l$9jD)?(%6/=_e(Lp8*jK!J)S`8rp\O_0X"KNi(fQON:kHHLdfb8c&%Am^S]VZjSogk1f2R`Mk70;pC1(IZX[dTLM %A#RZ#(RD:oZ0>Hfar(]+[@dIRBL[.?&[u=>E(.HlCgR]j6Z)MS,(UQ,1#t_'Yp0.qdB623Y!k:+o*c+Q6_R9KfF_hk,838(_[Y8Y %8Nl\5`HKXP>D;248&d't+ %3\>?g\4$JIG!;Z:0cYW6Mq&"$aW#UDSj0X&]g/-N(JiiXd(`+]YfA;t?l$NTf)!c(^]4Z5ZnF&r5a.&K#!D>rjT(7bhXsdu$lRJD %g!^4:llCWA!;%MO@`Pjj_fRD<)+_^SVGo)0ZI%]X,G0@jq7^*^fVG8bhMG9taIN7:ph@7B'E=53fS6,(Y[eb4m7:p0rWqf$ri"W' %,=@">IphjOC>^O[heB:g5W8,XH1,7E@`6*faM65BNCXFo"Qi6-GqM/)U5/C(`/R@_NI2s6iouskL5>VlA%r)A6emApI$!;_#LM;j %2V1#`5uob2:as7P,";@8?3Z)4K.cCSVuf6Z2?Q9JRt`)7#V<15N?&n"(s18/ihBkb?QU^]0c_X@a6('tI=>sM9Z$iL3_^W*]eQGC %S1fjnO`1H%MbkDQZ3.Rapi-^H2iM:.L=BL*jCSp4lHEd/#6HAuTT>W^7jrpFOE@q:Zd6'6ndHSulE*a(g=QrnZ=QdR7Of`0R`p2@ %Z3'\\_43o#9--1l=XMI]6n5)-op,^6SK\fBh6M5P[`pQh,k<;:cjisrY!n2&.)P(YhD7i&h_%TLBk:GM4+b*jU>rSacX=F+f/Ore" %C]h2g3<9V--@l7s4u9$]Q/%KoP+Vc"7!r#;80LUP<*"=/uOV]Op_qgTLPWP#*?Wt^*\[+D:+^$'(PSlp.u"_U`J;gk''bg.noCaZmRBBFhECjS1 %FHn'Tb7)6>=+Ar///*Tf(+>h^kfPlQSZ5e2iF8l.m-=)62b]QP^te&]q^*9b9YkRs4d@Rp]G<40+u>8$EfE&M!_7RAS@`kd#B,qu %l]al>-c6t0+OAZd,_fT@9kC[q*@BHao@1;5.*^F.GL'VQ*Qj!%W[BX&)fR](bZe.3?1%niITcWH5YB`?3&Z$D/^XM2kMR12\aja: %aZY%.16s:9%Y*RR.hA2+QWP08,06D*UKR3GN`k6$!dt!;ndt@d3Z?Up4D1oi@3AN+Y(\=u*`tm+a+r %Q5MlQ71CX(11_d-\-g)FqR8>po/'EOZ:FbX("u7/Ud1H/#dI(DP\Y-D)Ap]MMlS9mOc"WG.nn'nVaX %Ku)%:e/knm3#k-S\GGD3l8j+CE=f^6`_#P@o\[eFiGcmLNn-'mO]GfEF0YW$o.6.-&f`lWc>)oqC317$d\,8DMXq;6601aJ73ru1 %o\;\m#6:8B2qF[iJt\EfL<*+-Td\QsSA@&uHS06-XS/H"i68+1p/"9g %\a>7B,^hBQ/;+.b0*Bp1^CpFgB_]"TcS43Dt\PFo%s6%esZ)]0-Vbi(+;W,c+8;bCe?UZ9"i%;pUGE5))'Y"eT"O[rT.s[cRcSOb`!HE)o() %JO)R]8?cZ<:B<3!-2U>\Sm`@7mn@>[ %El!ZPFCnaH('b&W']1nY96m-c+e!8<$HWYK7(NF(R]0M,F(+45LiW-=Cu92p_ihY9jKYMfSG?q^.BOai %$llG$WI;U%Q/.S7PF]#hV:kP_&j*!<6gGTE#Y./sA01Q,;0G*cN2Gd#$$#=brT&h-jWToMF`FP'LmO[6290FNXVDo.ji9LiSe>:3 %0#54/7h@8B7Q"i\AtU%M\UYm&V-YD8iDA+1iWLmh)4[+'Y`3G5OFUQGL_=E8D")+oI!Yh=`s&H%"t[HkbcuW8sTb@)neaj %2+)Hk1Q-al-k>lm2B0M-EZXPM'lA %SV694bg8q(57UUGq^>mO[QJlsa!=/fG&sg46Be34Q4peG4cLKPM\9DF]lV_XB9B>l-rb?p=ARKlN,_X0%k**(R%ad+$:8;M4,^E1 %ab&"X_a@,>jY@Rm)bE/"BqCKkP3d"V_EG/oRROKu#V8s5.k*OAm!u6lF1uDoE2>1G:\H1p:MjiOZ4m,58MtQB%-jf4mqV+P4rpX[ %C"p'(Z+cFIK33SbF'Uqdpms;U/Ua"GZ=lqpe"([_.u/%8gN^]uXP'J90:O_Af/OE3qWNuk;lVJ^,V)OlWW#5)./LcR\EY>j,\e)Q %4?4F7VN$[%Y56@Y>1:R1adWVC>oYFkU\=R-1(\-m?W79d;%Y\JO&*^[Y;,FN;LP972X7\9DcZ[YXGR#NO:i$1cgd?l*:` %\'-LGI#p`J+U1'E!(k!oknrF!Fi;I3(*=#i0s_?q4R,90gBDJ15g\I/Ju.#-c_un9'>qnN!7u6 %T`_Vl3Y,C]HuXoO%]&`"D8QO)iSJK7rF/E)p;t;U('X^bH7=dD/$4pE#;MeC`8Y>7K:T_8VVM>g=G/,RPn8RWKZN"hMuPtsi6.q= %*KFjS;PV<4`D+;#o%s]:H[;V;\AfZr'dIHE1EdNr#=hUT#ffkZM%2U8-E/5u:PL"q6=ENCb3ga-[s,F;!kBVP(r!LO0&NU+YpZTTkX^"gd<` %$Nn?NO`jNR/O&[^]nD3'3:n2P-,t]4.CouT6U2%>3.ZU=hp[464M@>i+m<$m\TI$[2_n+H-kt;to'?MQf+[%IjCRj&PERH54M1g] %@MHE:%n*KSBs0$+_D11t%r,.HjUSUI4h-J>UEdFT!HB[2eU_Dm;9Os\F^Y8>_CC)EN8^[T*%N[oe#^,XrW.."dOGR#f[uf[I<'Z1 %md_IO[jS\o4SXKF-.SH6=@rTdHX\[nY="488t&Qs#`r0rW8TFI-,f-;U%3MOfjX5L4nEUpUucc>?n`6lRiM>E8Ma[unG=lh'`O6? %?YU#ro$Zen4HEZ5bL1DP3Z:@SUJkY.>el=B?:?Ns6>-cD&l"@ZEERSTkA-%B#kp\3M7oYt$PZq":+ZP9%RH_Y$D]__8H9'PgT`6-,^J:bX48HH\a;e9_;?aY*%c"Sb>>5g-r"lZr#QAkJ!5coua)ha3$:d:r_V)Tr@@kp:%S)>usfOqHfl4;VP)CEh++]i:DB6uj&h[dF1oC#OW?m$$(Ap*21"aCb126Q'B$<,BoK:idKH %aN8;d;:)#1-r!&b!G?l%jIV+SmF+chr%*?&!M]DlcXBNT_h'*]W>Ssj!@004KD5!jcNP[ILc/=hqf=@5oV12h#'`Lf^-(nq#&lr2 %&'6.X,#?#uQp:)`qh(]0n3Ml)[r<]ll'fDZBP]Fe,q!r3VdmEH:G]e;8:fD[TV]'Kfc:hZ@EMcXc_UkFUk,5?#Sns2 %&o'uqNNBUcoq.9:%LNpd1EbPWA%t7e?(kt?/&pd>.umU$M2"Vgc=m]NElKr;ct3ltqg_!r-GG+pfe:j=E=Lj>2M %J2b]7"I4NX;ZD1'/K[k)Lk@PbSI%8k*#O?2LQUTlj.Q8p?'RDOkn]^E?;,Xm%hZ[3H:5EKkp*0NoJ)S>k/0Qq67G[9ZJu%Yo_%=. %rd;9bBe'n3+eB%%r@*.r:Yn8\F(*[rM:FUq.HZ6?m6jq2`_bZ9=WHV4[H?d8@r!>L-`FG!%,H(%6iT5e[an"4bf+qi4YGl %mN%ljI)EP@]GMLh2lCb4c`G7Xl4IXTJ`N!SF5RDF#t`ZiW1^U+P(4RpnS8Gt8?KkmSbQt<%nOB\N3#-.QNL4om2J]aBSU!h+s=?M %MP"\45UV//6rgH?iC9_+3&&\,0 %+fJo;Vck70B45N[3F4=pBUj+FCsQDh;M.M#JPRXkT63_("i/iCGa3G_9;-7gC8Ob7&kNI"kq=M9\$YT-ElLNBi8h5nrbT2(X<8\eN!q"e(gbDJc#%n)38t&??abD#+\8NYeMXUZY(_5e,"uEcK %i'd3hWJ8f;8Ne=XO0oDFJNdM`CW/Iue=Gi-V\jd7S0C0=hdX5A]rItc\]`l[B6V0%na37"/U'Tb2S:aR50^3sk8(6Y6ZH/4ZcN#t %Z^n`YBQHP<5ak#m,lo\&9?p3'!pEcteYdg%-S,rqU3lFC'>dkk;MSFOX,[m.ih:qL//bI\]u(5NbMt8j2%sO95Vn259LurM'!e1M %UpGt5[1nq=lgFS=ll=W,id=4,"F?X'K?e,H&-Yh@LO_:q1oi%9 %o)n*);Un_:K$bHl.12-1mmP8eDPQNcI=a6Xa;mQZDr>CZ+482h>ksUG=q5\ckupX_Qp"\V"5Xdp:dm"R %OVY(*m,(&n]qK3cio3)^k_gHDM7l`TJc6$P@*6[4JP8KG@<^'T9cB*:!L]U@**"#Y(1[X-9SLq`e*BIFr8EQ\:KEuHQaHe>4>nDC %RY9%dT[Fb4fT=*E`!`0leL$\j4Jb3G/Q:P5*,t?jbaaa5V:U,J1N^Ul_Wg'2*.pAS)g8;mX2N]`*i^72kXP3W:UAY3]RN9d_Z&g@ %DbrH3Qg3PGQKA,^j?)F`&CTG&X;o=.LK>6\O-*BJ1Yf_ihiK %KQIgZ[DXPOG=SeT'$8s^ZH_6&72_n.!KmXl,j=NL9YBJoF4(35>mbobLcnV+*Gb@G'!95t7HNI7:(@%EP/RMF#Gjm1=X#_u4Ka\a %M2i!2UDkdHd6p)e6BDlG2hk%u?A8K6@1Ke8m$ah4pMZWrccM?o=.J?1hG_N_otWPKn0 %`ujlkUEC&nTq;/^JZq,#aF7Z[;Ku42iJ/-<8McBk=E!Je"/qo(d?8Viaf.COoK@H3-2*(m"Q05*!(003$d]U)Y;f$5:Nes"`R/!^ %(fr/r+MgK+EUa1X,p>P3g'>J"6$&*W^IX)5**#B9-T!$HPK9&+3KSUs:KC#e-jdI+jtS[mA;'YA*d,t>*.k&+a-l0S-TMfi4nA+R %1TQl(Sk_f<:Mn1k3ej,qWuFuNb#o5Q[:4RDY;jTJqa0OfW89,1W.?#A[-Z;87+nD3r*4Oi>7;,JL>86f!0]+Bg?&?5GDF0OL.dhD[G]W9[_XAn^&YT[)6-hGjoQ*0(t+/TK@]unk`JhV%<*6?LHkm7''bf#ME %5"K`aY]>b5fLG.C_*QgH2((<\O5[^4$68,6,dI`N1OsY.+SgKh[Dpt%V-"<57Vou=XK^rbn%tTf3'\Tr'PGFDcSJ6(4*&fNa\'(] %g!8Bs%D28SQm*#/WfmXplj%b])p-j3@k0,5!j+KU';>sDi?2&d$t8/u^b2#t6DSoum2?Yb2Og9?K&"4.m5R>,Y@l]5&;oJj\l!iLi8A1.]'J*3q.H^OaJnBVh"*r/;#K %MQ]q7G6`cW_3cB>X+\3DqS^hk,jun>?3i+N-p$:^,*0nddcc7SYF?mjCs$os>60[q5_Vek9bWlK;O#I:4_p!1dkClQJ>:G!H_P0Z %qi8ee8_tLVn!9R@fc.2:RUH8;!C0]\OOM;J,jH$th#].s89sP2l]-'JUSADs1U9hB=%_4O7r@icBF;5XOTb_H*9?^G=aur$M`X]A %3YT]BWC%Rd*@jZBZ%3M%#Qi@h8)2`0dl"D_+`UG:W@^JD8@>i>V19H3nLbUaq[HiZ&4(P:MFS5t>^.k`\c*VE&IcW_4G=#7i"\08 %Wm;]:0kpt*hApT4Jm,uQ25Dlp30-,<^2I[Nd@kl"&6D..3*U29[6RSM(s.=92K`L(@j.sZ!]U_m[cB)ome),t0NJMsOPP'\&`^BW %qLBeL*/-i,%:UXP&X]Df*^mpn**P?^iFQ[NE"&*I'd"]E,7ar>[5F;",(hJaES$&6YlWc8@f0DY&96TXehGH.Sh\_:&05DT@2miP %T:X7G4*q25Z+Dt<:g;*T8=ZFX/L&DEbHpe'`O;Q)N]*gIq/UU;?@K$_Y!Ce#_kpDE9:T.L)FZe`Om;RM;*MM+#C9L&;8*6LZk$tF %+Mp[;77fbg]Fa]`U3hi$2MWq*Q.j)$'XsilK=!IJqu[Ji'5ukSD0CU0DT$G79kUf+A5d %4[)uXYM`+G'PJe3'k&ei,5@23`WY]4#72F/*G@#8.@ea]GEZKihBg2\@]raq"1i#=qf9IV6V\jOFJMK`5pL7XQmcpgPJTs_7k!UsSgPTW/ne]E%'!reu/j@bL!+rHllFA %KbKY(1!3RPfI(k:ed/Pnb7nkY#"G"G/E@b(_hY8.$egsXWKn\:$oKpGGA8s`eha#Q1>%u`^5afH>RV8ef9h:7@fX/T%HVht+L$?h %eOe^N"4UMkc#IJUc&,P@&QiM,a*EPCF)>5"G`K2a,C;nt&j^s#E3(#\"`2"SCoR$Ik,7&^<-Z;,/ca_IWCK>88/Z>S/.f,;Z""k7 %\Y^1A/)G([R6nDaW"0.9(srI-a4Q]Tr8">2M%?EliBBP?"jT %0oeT?pg=tIPQ;Moo)L*J]Ep+8iFC:"TtG-K=,$mu;ReiRLBXO@1c0A-h%&aWHY*iJ>]= %)AdW6:tg`kCBr^+@`N.Il3MY3:XN5PNq>:L>FJ"i-2!CGV,fYPMgDu:H#W;!*JJ![/bAPk&-\X*QLfVfThR,216t],_q'r;)j:Zd %L5Y\_QI%j@"SqJOTDA<<>d[9?o1OLf[%o@Ks)<))n>_-SWDJV0^j`!;S;e#?FG<5(STAV-0PXY8.-]rW*0aQ&El[*a2+-03NB5l#[rdigm-2Mr`m#QAJLBSLHbGFLG<9E;5bIR(UtU/Mk(cEiZMsC!fKI>Z;s(I5R137CK*13DR02q %05pQXap7Sr4AMHs-;Hq`1CGhG/J!j-hc:pT+!cNpOE3N\'K):aSiOuq'0HL#;b[h`N7->sp+loY6V)>Gf!_Go39KWTmS#Ke-k:fB %'aYrm:DTR>&kkj.'l!ZkhFUJc^TECU();[RJI^^.-r6S%cQ^(ggG59M13dL)gsfh6RU-&A:mq\h)r9enKMH_cP/s.?t`D.qt^\qT$+^jf2?i-5lVoha1U49,FFiHW5l`,USE %!\5$!O[RL:oAT]B\(99F>HNIm3B2!u4m1[CXJ3;3`m1Oe_??Pt4!?D,QlJ6l"ATNSjoBW29[&BDgn1nj&.\[Z7'$D%bZ-J! %g8L0;BtZ&BJo1^CM?N(gCLIGX;B88l5h/5YF>["n)jX$\oo+90#1nJ.uU*8$Ym#c[C)49%e::>tgT"Kq$N!gD$, %JujV?5PMa$Bd^^^HkFctd.#.oSg=a0%@P[N$;qdSYp:d`ppLG82TBt=^+uqf-IBU0L^QbNKYpNh3`_Omar$,Z&eM9>M2enGj3EfE %f$?A:!7?UD@khd\V#8g=+S''[8SO!>&crJ.I7_DI$Ls11[fS_od$e&AOb4646)XgL(e2RDO;/`f_M)D$.#L#1'g9s_`2mBJ)7YJH %09f'@)0<4(Z6U%n@=j+_AkCpd*1]\93I;aBnf1s6*'44q!+UT./>F)(<(LF!L^VA(ZP$.$oXQZ]PfbiK/':hkJuBd5#RbW:q.;@, %C.f>fEg+mh*RSs/Op$**P`g/QR?-7BK!:`:'?.gdKQ=i:?h^85[6q=,)J\(b_6'B %V?r=+J.hu*#a6Y:P)'dsi*I`U`OFc;M'R,&Z4b<9aOIrC#lHJ`f9r"g3AfCQ9Iea=Jh7AOQ]s9$T7i)pP6SkGJOCo59dS@?FN;fL %@BojkjbhQp_"fbXHr?A.-+;:G21[anldT:b1elr.5Roe* %!R[ibXV#'"+jHOC!:(jUTk3CD"r1\fYajst0Ths/Lu2eH!8W3Q]YWbd.A>[ZX#K&$,>j4/iqj?(`&)56a9>Is2`EU(!>\cAo_B+b %c7gBZihpT:e5[hQ`3/)7JJ-/,/lTY/JuM=A(*J9&kc&tJ%n;f*mH7-XCZ7tg#tBTNc6EoI[d$ %AA$Lk$s$(T:3KnX_)]#S?ou:=+U]gm(Eon:>f.%84PCa6B[=KhqfV$f\Pf[l69'o4)%a_%Vj(aFQE:[uX7(pq/*OQ5=Gb-H#BA0\ %7P%bcO&/ZKV,lVJ;PXUWU3g(+37C^oh(^T:IaCt;nH!F\1'4`N&rPf %.u``BAeFg[r/)mpOgG`ibhI_/V9EZp$pPsWr??GdU+W^2T_AU@&g%[tE%XU`*f1"o6l`2%&m'kW`8X@APg=.iLiri!.1:jFJ;o8! %Q:2ug2HT %N7%ho!l2KXb[AqtlQ:V"Go0[0'_C+4:n*8d_ec1_H@]90i_4++TLed^aD^HW)CGat]+VlPgo$9*OGJGV+rm%:'/2Ye9;Q<$!Y@VUh_FI8U#Op-`,bqAPXqfGX:,q^6B07^h.A]H&p5pfba4FR %70uH3<13rjPeWP`8,An4*!D`F[%:<;j:ngL^.66__KiD=d0!M`rW.L)J:1R\@j%idSfQCY&n$EPG;,dRjT2-ibba<>B+JJ$(TOW3 %ecJWB7[P?d-9r5SJ[RgqaNt#^dhk)?S0'krr('/bH":DtVZHjkbF0oW*uc0""Z-oCPQlNpeECjG_?0m]4d=?IffG(Zn&=ii:)7%% %6Y&ueLGS$>kh$8rEPb0Xd>QnF("btg<07/^i0T*#)bNfmTc[>5E[cLdX%[)kauY1i*5$7Xj!IN[kdJ7$"s_P^Q]7Isab4C<%LW!+ %.F!Z)JiPk1E/=C4/#&pB0S>b`.9fGj'1#;7UOg`9A[i@r&Vc;^EQEr$l4=9P$qZ?uqqZp]eW`qo&>C?AK7sIE*%VU&>$0n/1D1W/ %b_)V=B:(]I6]4YA&O0f60CdXJhml_5XV(dS$dpL_,2F2a"o+Q!h2n.SK,E.XD%:7s67"6NOcq*f)X^/DDkK]V\;>N=NGs)4%4k(Q %6fO4Qm/lns$/Eehhh=[=YS*4Y-<&PLS/4$;@!KLbQjQLie?Y+6Wc"r(<5n!QSZnJ"ZVN,P`4jp\JPe9`(u;$18J#tu/3 %Pk[-$q5!9VKKDe_>8'R>`f_0#;8SN5+IXHM*/#;?Ma5L=(Q40XuN8PA?a1]+9@[;,alLD9F@NpO#/n;PEZA[Gf5/1K#0-"`"C`W;i6a"0+m\j!XF;8,9Ufa %!X*dY=u0ejA>TZ`75:1u-u@>)K",X^UaTnX:ZH)D!%^GJpl("Y<5:BgVeG#X@g<5YY%j %d]&qZ+D#OZ]5/o(@bG9c#,YY!'$p[t&'&"TB#Vb0DIo2SB_6m$(&hnO@3V[UOXUQjVhCLGMNBR55pRTeo=t>TX',]j@^5DK,RgZf %&`?Y'Pc,?@OcZLB-5@`3]`o-C68poJ]HkB-Or-G!K6#<"O>0*EK`uKR,^P?0h@f5:TQ:'c#fgF;.O3^h@t%"#;O\mf*[pYOr+euE %T!/DRH8(&'D)G5Vbm"Y^Rd*^Y;TAM$@cQp5VmTS,,fEqT)e"P3,A=cs@\NiF!N.n(SpWf&W.uYs-:;IJ)"93n$P.2T8D?WYR>;D! %6KWR.6Z7MCM]3B86gSEVI0#`rKLh?e)Qtm6J#@s/E@&unT5s,Vk9u@qG5NDj&*E64&;mYeMkP.?4;q_.Nf%:2%@o %R2TOs"=7T!#g(Ag'%J*M)DX>h'sK3]ZbS^;BtIlLei@ir_VLl['ETX+[K-<#8L.kp2PGm\K*)t_aadOQ8cWr[U1YjkH/p^ii(J;s %;?j#"/*%%P*b/e3,1?UJI&2EKJFqek657DOQ_6pdP(Er?SAU2TpC%A9jHKpU_RNN-s'^7$9iW\6FV5-p$RD(U)[&H%1>rE;<*\!o %::-d11?#UdKXAq[V&=_pEokceJX\8-i]EZ9:fCgp:mNfQGU,MUdT027isguDAO8Zmj9c)L+f0(n8YieWW'c<\$P6bM,"uD>+@.?* %6j_i@Netk#>T(^4..s;N\6lI8&eWkrQgbZFKF`V?"=J&f*"Z/qplPb5>'b"%6#]M<3LV,M&qi^_Gr8DFp-bLFA5m-$Hi^k"f %BT:BRJXTH2gMg"VW3SiW9Vs#A-6n/rbS'7"FU5VdS'K"l37 %eFr^"dMkM:V?\Zl@:ND0190o&L4L]rIi8^-Z:jq9Aq]i5'0qnqqLAV1KEQiYM#;cr$e?UX!a+-4,TRQ^G"hlulrKikNQ+Aa+sd'R9)4K#C74\_a,.)fcA,40TCm"0%0r;YY[(V0E\GHPl_fK(ujT;HY'M$r\LS,#r3]6X=>M?8di;:@1P:WG_12d %;ODYsU7ek]5.!S#Z=7!DEE>T6KGTaO$(c*+5uodSOe3eSL,SQ?RFgG[K83.1L`VIgO@,N[HBdnGM"hVQo-31[mUDEr@Z.CP#0#e[ %''TOo5SFRA;*\"lA>*T#i.dDn0P%0uEu.P-&n$q9A1;6^5[6[d4RmQM4p+mmn]Mi7(mE?L`%*&F1h.L]<``$ZBH>$OUr73a.:\'G %!>9%.M%'hbF!U^,Zn:5\'?Ce@CCDMFl'i-9.tsi5-'Eioj!_<[d9cD.''P>H?+=!Q5)c1GiMERY/o=.HU!48_POKI5]MOPDQKSCg %.N+r6TFhKV?c'`6C@7..<2Vc=[*)lr_Yd%$#PfU3@R?psU.#32GpC$r3Uh"p-d(sF;dL_IV@3RnlOZEMKlRcg_hZ0l1im0p %W(k3>SADc\9jOhI41KBhm8*BL_tMLVNZt8e8!*s?%0\)B*>SoM>5QW5$o1%tZC-oA#s0S1'99\&ii76s`kj9k&J5,*=dKDk/V33h %2_(Id3_h5#;jOXN`=4=b^X[k;C83Xf#XF&\Lqns/@n]X`PL9e.,019m_$@u;@R\@R %.WpD3$5%PCRqVu"GD!on:`f2m&V5`EZ\d/t'bCEh!X()HjD0H/'P)fo[>CDhErX!7QH8S11L(mX-h?A$@De1\N.<#[%k^t[!ik\s %"X+d5BgD#QP9!_WgngZ/Js?hh,9pMIPXrju%O-cl/ejL5]jS(^/26HfJeU$Rior#M[.m6[V:>\M;1LAQQ:*h\%_tD]R1aZm\hSku %`<_N\=#FKm_a<9NL*0T,O\&da(K76inkArBT7A&KBd>_@L1%8EH;Tm01eeYs@,`0]!<]Xfbq4]8>rN=Gl*//M]2Z=[JRW"n$)a\3 %W3J#$M$6.hGr!2T$("GNlNb^,4>0;>W?Mlf'OVk>F]]@SJP-d><[*f;6p*N4Z&BX<+p(ddJj1[i1Qn;4X,^.%lCe8^,:OZ>pEu.N %VMX7\+X:lM3^i7H,MWbL0A0dP448sMI:s%(9p=SVFd^U\X8Ba9FB4O:V3-N"-#k!jP<-s_%8R$LWNnYS"*&i&Te]&@_sSA"r@3^o %!/LTBetakF(aF9\@91K:OdrIGq8_.4/5Ttk&/-&AfYm?O5_#@8 %n:`O8?eN97ONNhGHCdPYU79&_+rb*H"'Jc!/AU@<=9T0oQI*uleA+nEa.b!2kNH&+Z5m%6/20ZrImS]rT[@9X:(Oo5V!c(?QM@'iB#=^g/&;su$M1nceAd\eqd,]m.;C6%M;9,q:*6Y#aoqdp.3BT]IXY06EWI#0igqt/LB.N8e;"Zl/hAc@rkSkSB7B3,\iGb %N`$MS]11Ln=e0'N#XAU02M+qP7,3m]l7kMXgB'VL/3$#7BoF;X36+ani)86%0nQ21!H>D_THm45^q]*3Wm-gOS.NF@k(Dn!ZNZ>( %7sYl9&T("%Q\)Tc>na9tPj&n'CeAeD-nK8C_Ah4.KgppD$`-BJSV3b!/I<]hcsN+@pSDl87OToUW@4NuQrr44iVogl_@.l,/)\%I#O0CNm`uoGcn!^K,^ae7[!Ug?j2?:21 %KT$GL)&!&3$qX`ToJ-JfUJ#9)4GY]Q"8+M[h.J?j+;UgsJ^"(nk;`4AH,Mg$XgAA^%!(#+n;L^Lu2+)5[KcO %H%D:qg+"6:j;d+4KqTsBW54RaXaG9c=M[,kl.7l"r3Ci`K`81baRW).O;N)BFL^;-q>cYJKRU%7)Aq> %2-:#B"T\,M,UEl:W+ZZnardYX#WYYa%sMFY,FjE('a@W@Tcb\@)q2TYHdX%3LcRN$SM6'QOT_irBofgD2#=_:O#-eohh0;lm$pD^ %1Wd0CWJ)#E9W;]W1rH7VS,r#a\tkKBLWQgN@cSg1%0Fc+8Xe7^H;asZ0]`KM=W"fkg]6&I'P'g(5u84&a9LTkC$1fkqZP:S[lt// %FX(H4!_$V!aj:_&"UH/$m?la$5RR]/&2+G3`"(7^Us.GbltWc*/*R)fSs)tR@2+eXQo$DS1DKllTjJ@U#dG#"BM>ikNik=(\O?N4 %$VKto1=9l,2$P%+/:8/X8LVe %c'0W+Y&^aWJp&K@`2bmA9o*bj_MKI!(bg[Fq#ugN*/b*=/c-&on8Kj+FTJbdBa?[(r;X.\&ndb*ZbX@ET5?"R*(GE# %]1a>^N"(I#$2@ReD$[:UO8o9-`,>elBFkKL[ag%2TRS\ZL'RoM@9aCTXJ&KSjq9N[1>t`:jT60cAsKZ\UD5s_7QXa4RFKu_Bn8`9 %0OB`C*^p*$qaao1ha4Rpgk[A_.1+Kp+^;j.KS((X_4bK%2MMkZ#8-V7?us_RY93^ZDeG/>U!J_3iQM@FLeS'UCJ5YL/@:P]U9-g;Jm['gi%5eAsj82 %.7XV"5=)q$Fh;SOGB%&jccr*#0.lg8%0cWZN2S4.Io %iej#>8?kR+aJg#0U*INpO>Fd%Ec(6kn!k[jM'^9"XAYjGEuck;`0`u]Cj^+,Gq4HE.)J?M,bNLQ(C^_,70;o/-mL%gfUnpAQq(F6Qi.qT+S5jY`GdQ:@3!EUI8T^&I]"gP+[;FU,[g-UfMn__J![-)T_D:$Eg+l9NBs_A/IA%6kJ.<46`M*;pJ!Q-D^(k@?AS$ %JgXbdP_h\Z\Bl@U`OEnJ*6rj"&3>qnOHh1&,r$9;8jBioRbn:A$lJL70NS#U+Voo&+2D#M!#?hUH787qS/r,Cd4!gcC`XrDm"62/ %Fu"UuiF%S?5*#"u3'@S,5XrCW&eIYX/7T9$!YFBoX;IUCKQ3L"JtY %"ehF0lkX6NQql:\+M_[+RU?guRSbh0#q-qKBW=]m62Ba.WmpQ;fA %g8?U76#E#%"'&6#o.3Ct-[H;cQqo0j&9#m1N@7U0e.i*gUhsL2+9c5/0t@i6EMZ581B&:"=/SkFOG/J;E"MN;dK"Z-K],i3`t4\+ %hu]\XAr;>J;DJrLZrC.(dsqH8.+0'G)A'b:m4soQX$H>.qk,U:_Z\tUUghF&#(Vu$A0RCLSI*YJY"V3#\b4Y([G'$)5Pg^,5T66bnqUQHN-b./F!<0#Eung6'e`eetp %kI;em"";tt:.^0K_/'<[)\rh5?'Z!7-tcT]P %=phhBp5>/?M9hu[9&^H-ZCn3kKL(r%LtbV\8dR_VMipWQ-kK!n;0'+%VF:=_M?oXQ,n.+@-;$`oP''oMOi1J_9Lo;],oE?&#e%Fh %]Jik(C_1LGFB:>]cpMg^_VpF'Mn&dh!2e?D[(0*rL0k#aW)9^>L]KCg %'nK84kq&-A@S_Ug#i(ORH\@O;80]Fe:4c!)JQhZb_mV%uUjpg;%8(aKk.ib)k]%tPZ4?LA^DP_K;q+pcU&JH0[MT"mJrj(UtgJr>8W %TbcB/@n\F/U!psp8]V)>32'/&i_TbS!R`0#O9YYq8k=]H9,bT6EW6lbYXSEHm,qDb:eE//QG'g*V7 %)5&Zcid%BtrriXH)DMmT4oGAW]22tZKG+Mj2(4?L:Gm/ZIr)VeH,/gkj`1;/I3F]1+Coe`dD>1jB9_pM$YAbK8J,GMC-9@ %$#M3.oqAlZ&hBmsk"9eR[U]N7+g2BP7$8*)*rsUP*R%9A8R=aKWW:%OYm:i&!Atu9&[O0$nM)g9+tmC36/M^E1I>nHT$ID1,?_gH %K^alc?r\(4;A4hAG[fXAKE4G\K+SOn0IW>4&?V?hKW=X("K"&>Zu&Kd&M^Jn8DfRnQ$HtO=+inLM@c;>B6ZkB8`lcoLQfMTR<8_= %);KSkBd?rZhSbC"E;J?qCu/e*I3:N@::97\jQGImg;Q@jH>9`%"85TI-Hs:&#F:6']8Y9Xk(DiSHjK,f%N` %&->>5d.7U:#m.VVYTRh>1!!$IM3#LVarFR&(/oUrX9,Rt2)3=M>%*ISWgpR\!E=r@'%AUb07sY+V]m9"JoOGR<)H8LA5o/C#q/Q5Stfc2U`+iErcK4-kQuM;'*hMj.gfpK6ZW+VlS4T5qDd+ %N,DJ=Z\So;K!o,h??ek3kWaN+Mc+k)t'Wig&`3Ac.sXs(_bC7%c8?!,\e3NMAFS75V1,c,g@] %R/D`<3H!9`IRhFccTG9dm_]RJ^K3uj@!8B8%iphK_c*C_W:8TJ45b[0h,T6m++cY %"/6pUJ:Ys[i3D:=60j>B_o3]OY8(X!)Tf'Igq@[@PJe?ZFiZ%afYGlIE%"$r/L&^Q7np3m0sdV4Y\#pD@(?Q8F?rZC%]2(!8*2"N %\_AFIJnNV^"C!&VYnQ,hC1Jf(ed3iEpbk_68nNoJB5s-BXuuAbMM&T@C'@^pL`'iqWDugr!:=HJ8'Z4(1l2@@,E]^94@:)3q)e(4 %#u;08GM%UYM2uh:Ji4l3GpoZQ8b'th]MR#32ul9:`Cf[*6"6u*k$FG()58'Q0f6p>A(Z4Pcut3m%Bg,[__F>R>DS6F3$BV_j %l\T5SelX5cj`2,nWmXXH9foY?H+.lbP&Ml^gG=P-YZWZm#rtoB7n>JI1\R*^,hQXY8QHrF_/PCL8;O!H!%*S]JI2f9K8,1qA-O>f %@q0&>)!-J3"XVNd=9>'#`(C5#!tH1Ka%3CQ/lF`4h&q!0C1pPKd@,PelZ"ckh=7'ranD[^^kelq"r.N'BV>3SM-& %lXgo4/0Xe;)2s_lFH./jR=dnJ,9`@DUG1cZjK_PoJYCG?,FSN&KM'<)6-hJ!/ja>Ck:_*OW";0#Uctc3<*H1(*s[DP6=1^R7M2=.-lq$kEpT' %,-hld!LU7DF3.VlnJE-,1k8%M_h"#ea%1j6S0i.2_0#LD(@`F7-A*"c"B[,f;&u?Hj.$=[Kd)"U,]M@ul9cfs@dn*b.DYK[Mh:Ja %8J;_nmAA:dODpLqKrkq1X(84_.]B&V8m#Xh$KNb]+usKgQY54qaY^")g`hL2$G,!MS.T/@#'r'aO/W\+OicMZH9hF.fTs/_8.::d %5VafS36Zk:3^g&YHUP"i$GY5ij!qTieH77%]\O=e>G')03D<+\Fp+,UmLiN1u.+;n"kLV#=-=RCXT=\dZ#p"%0gmPNX_ %H1PtgJ5e1Z#^cc`eM8S*Aju:(7gKdg!p.*M&Lraj91:D-'q<8^9)hoZ^Q:bY#l_e^V?dMRm1ah;Wg#UiP"3VbiHi^m3ADdT^j=po %_-&3)\Y4:A?72I-70IV_fiJ'pN#Mj$(K+C$VCu2fYge=mIV/qS7L9a%^c=Yq4Ma"+9>[BSnAQrDpKE,0#+.pi!stn["$?iCFput( %k1PQ?=MiH:ofp;?(j7K:U>1S-dOJZV`']3A`2Tah30Bd,iYkL6%F[:#A!Gf:Cu#D]Quf)n'%Cf!R1LKsjVP8/&R2 %U2\h3!@%C;,F+<;![ro!O?+m?+suJJKMR_$-35Z]TZ/F$#6bP,AXEhKj[=73RHtk3l9buA7+=km82qRi+O8.#O;94pB!UV,ED?\C %Lle3!OjQQ?&M9A0("J#TO%+OimLYSuI$cq9O)>+>jAL!/'02%d,O!Edp)AfTW>^'cEZX;/6ZR=,O.1n,,IJif]&,5YYL/#*ZpVH) %1fjeqR[BRH&+Cbf;@54JVH*1#(u[TR+i^i` %#YJU3Ybd0XSeI9R)8c,WFdY9.IUo<*_K]<8#XQ$Bp$b8_(@HApEet?QJft_]1@\R&32K6!,\YeoUl#RqX77@MD,[_>&Zc^?$s.ll %^dne$%?>NsiaHb,1-Yh/nKII`!IuHp0kR6OMDL.2[i&tu5f@V1Wd#l->Qka*3\t2j",T8]X1ON9FG-2S6CEl.3[G&kKbtkLafJ;V %-KH"t'F9qe*mJ@LKNgQ(brTIt)7]s>@!,[C/cpnff(^-rOZE5pi9M%[;\9`\b"dT>(jKnR66rP)-(:/;'DcN<'bI0LUN$M@Tapl* %#(27`-%-*X.:U:2H7WRf[LC+b^m(K'"MGSnf>[k-KWrQ*&tZ4nj*#*0+>]l0&dNt3!r#)"Co.^TOdV'R;u;3O6VE2m+G=SM;g'P- %/mb%T9H74E+a5W/if$2pW6fmf@_`4,0pK?gAL(*Zb)si3$T\H\LmK-'jtC-e1h2AZ-1rp/+4C*r=\<90*Za62upFe"$an8bH4 %Ge&J@j$b\T5SBd'g6%^L-7Hg#"`j@7H@0Vb)+^$/[NZX2W>,VP[@.VG0rFi$=9j:omoR)j(*i?P39C+>6mV`)aK2D34;QpK)i&IG0#L)i5jKa8'D %"$*`I^aM_lmcYlK4s'%M0n_!U^O%bH.M8SM5*0F47sc6kgB+'TtRW6o<*4,m=Yg%*W7Xb):9cAL-Z#e7Qo;\D'S!@jIku)9#0-$# %<5(be %YCD;aMk8N*K4_Il1'3;a$p1U!lIBVISE73HYp<-tO %(XL1rT\""'.P&2=pHQa8G!](7-=FGnC,MY"aT.8r;hd)[bt`(XaB;jI#0"@W:#\mi>aE.pk=jf%je)DAaNI3e=1*?sXMXc$eNJBd %?$kDle;p'qQ,?pV^X_u:m)&)T)WK&MTD&3p=0`Dt>)+(K[lgjGj*0`jhQu;ijZj1$FQ)bZDoT7a,'oe@f %XX*pnTeEQTm#/fh^]kmXM,5@s@e0ehe^ZZfm(A]a9_9,cRt8"jou#:9NA>i$Vm=nj$qO'33;[+jO:3ojm]A>!!W?&*bOT]a^^h,$ %PZMSRVMLNMeq*nS0\.dDIaiN0k''V2043_Rd2/a/BDgcrCR;IE*qQk_Isfqur#JphkP8?Da;4oD8l,]?./:[(EZnm1TSfrbWW:$5 %;W2SRJN\]2L=0cnnOciP;HEej6n;-ep\u>UCOYgWQ'Gi#-I:g,1,9ZljB2CBjng8fb2G+5$#5]l(kaOuT.+Tb:4U!VUq4WgkV5Fp %7R2o74OMbK#YkIn1nGLC7Z6jU/V0-q9WE]PYsTeAQ_+q8A=XLL8a]Y"H5E"Hu3$0B=q0K(p( %i_it.aQ5o]YY9-3d19bV%phdG+HPZ3sZh"`rC %nJ%U*PHo#WVMS>Lko0Gk-H#i'9#[0Y:heJG+@[XRN(7VZ]$G#`>S%U13!i;QBt_Rq6D\MBIjX,%Q5tjCD%DYU;/2o8,4=Tm/YP6\L=MY!gXXP`$fJ-rq$8dpcIS;7*OilZUG!-D$]]<[!K6#0;Hs,-jA/m%Auop3UXf^Ur+!eEZFE %b=a8(+'OZHC@@tuTsEb`qJs&S/>bl@&@49''!m]D71Ci.FC %;%V&IdtEIU(0eMr`]!R8]sdI)Ug>a*.P"lX,IsNl&4)!Rj=+J!8jKopAoD)NT8[(L6P8P*Q9P2V^^%m=cnI7uL4b)NUla<:f@Fe4 %6#XCh^1=<(V%RW2=h(b@1=i@361L8GAsR#Bih>nV9Ii,%L-)T^(RO'7+(duS9JaO'6_Ss:#(%\OMW<]?U:HHZ2[(3Pc6fZE%8$hb %PYmceW<>se,<>.LZA>CRnoHYT.%j"d,"6^BT$->'.m7L/(:P^MJrbW6 %$NLeKNOr)M.L]:+Nib"NqbosI%KE#6R&77>[OX"MYgaDW*:fCg_EWcB1V>PVuZ.[d`+8qj.+S8^fI"S5f*5*7]mA&Iu_F^F9=F %Pr(9?7lSA=NpdjJfo>c/!76tOa[i*f9Pco@`#sOS8$=m$6?Kp5gYp=c?':"E+Q'QAC6DQl %bgPB?rfcKt3_BQZSNdFa5dZ^j`2\jY^EFLaq=9[]pqjSQoJ[&tj5CrEG_NTNU-qp^a+DK$i"ek$,#)2DEQli1&1VE8%`n_=46i[-XKa_]=M)>qq&PSUPiD"m!'+\Mcf`!3uLfko>("MHi;oD3t.,-[Y@%:hZP9M?3%Yn&CCqWY]jVM:[+s> %r0I!2-iq=XkB2%J'e@%$_ch]Y`Y;'Ub$H6^P&QB@2<;7'"(Q,Un\<4VX(HK!W^RlPXOM!cd<`I6&V]PGo%;+B/WU'F7_CI$lnf)3 %n]q[LZO:anRo;Q@:D@t5s5Tb'N]fB$S*9u1nJYB0XgRFabsA]1ZEpaSHl.F`r6Hma_fiBY[fDbYrp;$0)4bBS?i5>OE\3d;Ld:m4 %Vgm1t1k3Y<,CiJ5qIi"iUZ_$E@N;f'(Tnhr?^B7BW7)j<4,rCj>('6)IC-H[[!k,o541cGuj!TjJ(PZ];!GWt@[G:Xo/+k>pDi,;7/F7c=r0.J+JjMIYu/63Z% %KVJO6!!@UZ209;T>R6Cr8j5bO67g_QP/Di!J;I>E*R)l08J=O9!%l=KS&=-LERr%bOrec@7$YS4Te38M1K@7(ORs@;V0PNIJ:@a,QthppaPFp4 %9;lGFfr;7o!1$UF)T`V%3S4=+ODu_s4?Z(E7jR[;?5mLe8J8kX98Jta&./tNC>=^I^6om&Pke$,C?g3cYafeedL;6YRUK/VHX8LRF@=POCf6eq@l@:P3[foUWON"bK;S(S9o!W5: %'-B=XJi(XJR1Y8U,>g"rhW2hs.'\AkQE'a7_GUZtAi1[nHl/mZ>_&SAU$8)N(`F%IgoL7((A'q,]9?KJTgBQq>T'LdlQ_4gb/NDZ %[O*8W`Mh4np?h8k3@q+[G-=P(i%j;@:7*%dt13&+b?qLR/Am_@ai>CMdMaDpm#=P=Yi=LM-ktfT?j]#)=3:_%Hcp9@.q/;Ff/j %5klm.`X!;JT^G?m`2"MfEmWc`.(M1]k-"r!P49OfLS=C(N,#G20S/*MA4ON]USPB: %4W4T[HorYZ,PndSB:8FWbXn3J"GMc)nKPrD9dTN@2?qbQ"6'K"S,kTanoR&JPd!HngW2Ep8sV(D,E[Z#_ke/$#e>qrD:4T1?QgoM %Ft-XQ,oMNAm?C1k_ofnGeE/Xl3JI+5?s`tu(YPhL87R*^:d^>::)A>A^HI&aZHPi,[#UX%nj'be7 %PXOU7hP7si-PSu1L[qecGl]lN9^*G8\Ot#jfS.c2YpW(%0tpb*PNs"ig5X^;(dT]IX:-d\\rj&\#[E@PX94,O!-X"jM6'^C(Fs#K %7f$76Mdf.d.DfA%e"R1OBanNpnq*fJAC[$`X%)8an^WEqCQ\dZ[d6pf[GleuBKL;d5:EPKl:PTTjBVcK9dY\Q7/$g+-E/[Tc5Qt8 %0ffeA5E7Kr1mGYjKfjEa+aNrJASiT9)pP:JMk2qU?>ZhV7WToYTlc1!d%Ms)JA6Pd[8j5\eg>6[=FO]HC*$ %,qf6Ze1_,(?4o'C5ZAX#:+/3d^QSgU)"Itk5:1]NX>=E2G=eK-,t`=knN2S!#an2`"Y0<36PIZf-(&FQ;R-5D?4Lsq.@8ZL!^mo*UdqJPj-orYg;jCMlQNmr37LA3WkTTP-.bo/? %3+i@:_C`Ym/>J])Toc[m@?Fb:P?teM)#MbM3&0C51P$bAo)]!@UXDNfl:f?]i*6SOe;dLJ19;M3>qA=es]q#GT@? %A!.6f`sV's;]H^pBS+Y6!B7uRj"?Xb^g^>@KG^^uhJeH`4EY7]X"q\-=MT1#iD0Xkj?K23h@-G(`/YYa_/bSrDZ-!P#8Yj0h9+D& %bK>rJH>Jks`g>ND-X9Hs.*,';d)3ONGWZ6U!P6[p:)X!H:H-J1<.o^n\A %4@V'ALu/80aEVq"3sQWL,i)6C)EKgUW.%DuC;SECB6%r#hj2CM9Dq8O!g?@@Mp<`gFj]UofaM.aXQP[U#!CL6+JD=\S3*21JhaPZ %+Y@SKY$;`F&i:=L9K?[ZOch,U6_l,gKN`G!M81-5/s$aUr"'8Ml,Z5k12W9`W9m3tfFM_hRB%#bKg6WD7YB461aEeD,F%u`@RN!] %IOIZK;6KoPn19ip<1GG+4+o-#el9k3_PB-G)L52/g6W.[j=,O&MDjVh(.GTG-D`cM3e:9L(:a9G)&B'cTMmINGg"%jX%b3;]iJH8 %U1b6rIj%6AdGR\nL`n6+Z'%AgBJb&nVoF;C`1VT"_/t;"19Am%&6eTF-KO(iM^Ct(_<*=sa[S5tO?uap!c8,J=\\Gq-Q04%0tFJ) %h82^M3M#ZH+kGHUod5']#k'QX+OloiTSpG;S(_BX0l0G,6^K=<7jo"2U/gRoH%O0/@203;.$Gg5Sf5BPnNR](@S+CpL_)7&OMRAZ %Bh"i'!D88qrPm"'&)nL46ZF0R\A0Bo69/Qc@7[3A"9`8h,kj,H[btmp`9p*1_F/V#[&R",)ThGP`&h8]5CQ19"'1$B$&L!P"ONfd@<"m][@A_7NB/:9ra=i-AC3"-CQ5A6h,s9G!kg)"0e"jWJ=t#OFin0q-)(KP9kYRX% %_H/)Ip;C@/T&^:b6L=ff<]XVdHN^.[+rC%_oAa)O$nJtJG_efLR';`o#c)=]IMn#..hpnZYZ-@a'\(8B(`4Wh %DO^A'qO)#;,KA;1l0%,0N/uPS&KMtbM)cHG2rQPc@`:rBAm_5VM"s%S"b;L49W$%_-pF4n8M\(!,O6N#'Y>VL#>ad?aIOB8phB>S %4#SCr=*DbTj,V4E->>T,]E\[*e6rb<'iaDTZq2HB4ehZOmf>BY73$0kmZOCM;+;ZiQnkiYF$I2r-AGrLUaF*%EkF&GI6]_Ze^J9$g@'rMKH[G=Qm7Z^n(e'XMf_'b9 %*ku\dVa*:d-9God3[+W^"GNqq$AR5qD+LUgckDr;+eo2rWiL!YTYR)BR[Kj4q74]6LB5VCI*%:4%PD1K@n`,iA5E?l?QcmJM3Ld^ %B\P:'6'J2Y/WbeR2HI3,,)Zk67W!R0[t:m>dI&-?uHQaWZBP.^[<]WMEps6;l/q1YK\#)j1nGU1b3/ %P3S(c7aXjXa#\?fj-`_q*FeHjg>qIf*]X1V2[8Cg%rqMk(66BR.HCr6?cNNVla1h`p`\"F^="T+LZKD^NMaHbMY,$GcT- %T2G^N?(\2$E8u>O)W77a1Q'!0NF\Fu!BXi/_Te9S>YC1-BM;2eiM'hnI&.:XL(G&iQmOpa%km3A:GT %>^,ZP-aX,ENU%*R5(/jtU)#J#UJ0&d=SV-l"aVkr>tEqPl5,8.S^9&epa:.lhs!]aK8#r!B1s2Fc-*b\A<)DqEW1='545nu\2M4Y %iEUeaC[PGeKSseS-_XX]N`L1gK.padpE-#,5fo:0Y=-eNAG1Y@?J':oKJ#5D^=R&Yj;mD2TWn"LK&5n+P]0CC!ci*DOq"@ah;G:b%q%%O2*9/]Or8i5$ %`;fS<]jI7g5u'upnaB9>Sbcd$=*`BO8,W(KJ#f(W7DDq2/'!9rb-U!krnio>Y?.b'($5;6RJ!IWjXW7Cote33,M"6=^h@#f@`ef@ %Zj.rD8k2Q1q1N+-cT32k(jU8k6bV+8%QiojnJ,!&DUjf;^#jd_Du]7Gk*`E<$;T&R*=Z[=YLl`sSMM@Q!PF6VSITuLF!B9S43CrZML %Gs>Jk0g9@I_()fu).`=V^?`cCg#)+f3lmYu"/bI0hlcksiF6&nj?1pia&fI_Mj=3)(obI]LW`>`6h]b/3HV1+W-nH3g+!b2DcY76 %F1I8K4[[8Y'aEhXjtE4be';1T?o`1%*RH(">3a+#H+``E<]ZbtRcY`R_DYs;e:AU;(.LfS6u^P9pi@Gp^OK#E@5PBEPD/A^e@uDA %'>oC<:^-q=FD)9q"(+q%*<\!SObE#K`oE7a7OEWTC\ZH,19"':>X`DTXc&:>YI`kBSGi@^&?4B0\F7D2jf))R=W<(i#r^gmEO[kc#.Z;X=]ts>aHtlHsg2R/-[8Yq(9cdb\<*lN4 %Nr9[5<;T1S3Z6Nr?gat3[0D"OaOdnnp#Q$:$d3jQT@3/cA[BeW1A/B]@ht#B@mLQ+I,NW,bN8g^\C*6>3L@[a]I9KCC")u!V(K9+ %.K[74q!bW>0nQ[#1gk(bK)^2YOLg7l\`FA,,Q>$g2;d\qb$=%3l%TI-dooIl#5NM"K4#hQ@ %oj4]GPD^\4,OT+dMRF0DB1eq3_`(B*S\?k+EpbN+X/K;Z0J)I7!g"\$o0uSpn>3]WsNKc5cB0!:jo< %5^L(pnF*=33^Q+i&0;T=mN2!*(L6[?oDDP5o.tF'S?gERCM[HDI@Z/"A,Qd!egDp<0DekdoJ6qjZh&!_s,0u(DRMqcGDS`(f=")1MiGpA8;I4u)*TR9hrRQ$hkUR+L5DL+/Ei5l#7Ai>^RniWPt4D)Y1bi\HK!$:QDoA7f0*gaQ. %d][MEb\S=F1H`R!HmY%I3&>j(9HKfN30'_H#4M>RM8oQ&MhaldN!ZQ@7EFma:!f_-9KBG(bUah8r8W0:nX(?_ %1Q0<:=(f93+9'LFES5-GIW]F:B(Hk-ic'YDpe4/P1/'N'MPW6mf&hj %L@^d84hc[BHtN&=*U>M^a(O";c&B_R[RACqHC1mQM9KcWUGG$MH$gZs7m&SQbY0(M:IK@YE^F4TUm\%agfZ$)8E7$Y%VCHVY>IXc %G8NMAAo[sq.7c=f.nm'PnMA)'bjb-;SE_oJa6Zp#)*U5G[f*CKoZdjes5YKcZEJ/&bR>R<1]1;s^Aa[hO(;kuQruU:,M457_\c"= %[:*I;:Q^cPVN7oX7fIV!5!kH@X]o<`s.i(J1P![X+TIhHI:`JI*UY]caCf_n-=<6DIqJ_jCi%IWi8a.3J(PY.j7AX&m*,A^1Ojd) %#oS>6(+(1Nim;9qAK3rR8(l,QnaDX"rtT.,/2U4m#cbusGVctPbjP!9T'A,Da6[o?fff<9SL=3t]_XG%a!EANo@5FTRGhWig+rh[ %HksmqCpT;dj&PF/\6W3#3-u$9&t+iu]J[urY9>TVV)Ql-jQ!/`Z#=6FO!'UoD4Ah:\Y_HP@'4#mB[kc %JEk41:RkKp,/3p&\+i2N[f*jSkj.K]-X8.h$Vq?m41]&ppXaY3>78ge:57+n7%54QZ_RC2O7"Y`e\UV9SfQWoj3\lYE>!8./-I*5 %O(LoVm-+GeU\bEHCn2U&Z_RD54M%l;"W?,W2G-=](=L]E@Ng_*4?LVs#Pf_fjBjkUea+EN*TUSj6(Y^"&s:!.6(ULtq-RB4Z\/25 %H]ZumAdA>Dd&'AGR'?/>_HZWX?qLArJ2#9A$hWIPa+!s.>P=3ib!1)]rS*@3?K6ZVd">Z2g%hq7W\7!JZX`.-o9O&YOkuQb=(-D=U8Y+04/8:bF_qqZ[eAqq'_j=]_mgmpH\&JI[ElV %RN^[?_8M0b_"C)mP,1th_?C_[W?$Q,ql*-8aK*2X^lX?;(>O/`0]un6=qd@e<2#gD[moSg!q,0'F0E49k %#_H69/@=P32+\RB98M&X_LI$YRk^Pq<;>(HQZM3n&49G@+2ip6$b/OBp]Y3CL8FKE/sLk1d[?P'4lCWX@'B'49p@5?REPMcECjcW %JeaK1d7i-@q:5Q2^F-Vdq5]eZqQ^(*HV@AVDQV`AGZcr%$(:6KAgW`9l]B9fibC!I\+6QmkY[eM2.9e[J"$DWs51:YO+.&snc*@+ %]?rM6cKph@40@N:[jce+3rIgMmpZ05YMsbQq"t[&n"(W=C]!cj*M6,;2%ZG=FL %>V#DHYMSLcFF-NEFiK\QGd6;2kfb0!np,ZAgX)W;eHCTNZ/;LhS(kR$S%XQk-a$)]8,fkmDtp2h(b0mg6%.,8?#(MTRa%gMI!GK, %+.i#BQi=Rr9,id1o].FQ\R%J-[I>aT,<\,L>Fjs5Q@,u_nPT%)FDil,c?a-E3og$;!t59>3tj*Kuk)em3$D7?d:?;R@5/nVkU:JP14ZWh'clc`&5k8l7Z51K>=s-\^ns58n3&$r=XJ,Xm"\D1"u^$]kdhZRRt %CT&ZS:'Du']^'%9RE[Ck^%R;=C(%10?$24oNU*JQUA8.#Z/96hb(]NbrnInD?E%?XT'u3o %ps6?l0E#6,j8&\ga2GXXc]+::4`?S]Ep_,,et?.q`#A=olgFp-'YBbdX?GBb;L-sN0.N=3GFIp-hdlMG)>fV*E:^gIV8(OZW98Xa %,C`g4T/;JPQiHQ^IctpT])6E],_VeP\rB_XqN@b#Tp+m!c%=(Os3J?cX9J$(W>PDV)63M,-[1?RJ8ECuC8H=2BW\)o+KHcdK!1L+ %7*3@PIF76`(BOZtd5ItXjqj$'.tsf#]c./ZA`S1G8\%SO]oF&2jH?L-88i>JegD22):P<468Fuj!JMJfrIP1%Y^_.Wk:CWoUG#&EjYPi %-J#cKa'LTcm[X0kdFri=Q`p9..Vd#:54Z)Yk?[=PmjlFg&'3^Pbn&hV1_`);/78(Us79a@YJ%5lY`NJrs5M.Hfk<8+CSg9+[&f9;Y\2DnPYa %`akU&(bf5$.,CH34&#+fnN4t[R5b\Sjth2',L9F!))rFTLVdt4.\?Or=QF,o-'t8`]sM"0l3j*(FNa')kAA)D3YkIK+gU]lk=Y,? %)K#WPe#P]np:>+Rk5Rdf)]s'a>h`rC#9UU1jboR_rZL!6_L:A:[6M-$l^\Oc[,G6Cg)p-[]ZpI.g93X=UK9\NIt-^jN]djQqbUG[ %p$bW.i*0K)_#WdHc,dE^-u&a,V7Um`D,Bf^#+K93!cIRF-Va9n,4>+C`aO1>UVk6J";Y=BDQgT(25=QT*R@Ib %a1e6[[j3NcSBEa7;! %G7IE]Sl^3o4jI^0g:O9-rRT(fBmAK1L-eR\)hKC@9tsc*8V7@,I!OuO8rX24cZ+A_Ir(Ajeb^H/3ncgd%`W86gT>p=Xp*Nugfi&b %b"Xs'1%icZ/tp[XPnPf1ji\cbgtS`r56-KoD,9uJrd3/_pchi.ms;+LP9=5Z[>4)8pF)9OmJ&QmHr]&KF %\TYC0hu17FlS&'&OO&BdlL4CT[BmMq9"e!)(pkUfO^J.8dHLoXke)I\j.b5AaN3F"054kofm`=rGlF0?oZ]$!^].lKTARD(m7WoI %s)B=.R3Q^FrjV1l_S!t,5Bg0.8K7X%mhajGW;8HVBQUFtdNG.:9tFm2u8h$bhW# %k&&I`[i5;=ZT&@0P/J(jnu3:MTum8F:L4.A^H&JNIpAd&J,J,NM-[cUfJ#=h2udUZPE+SV*biU.H%rVH+Z*nT?EZOL@4/ZX\+5u; %F2)a$n[&enFU)4ofPDT;T(Q9BXj0AH2YkQ5E;/tNHdt:D24CSM]D_,`^V?NBmNro2#B^?%ptsefrK$?UOrMUtZFWYnVqFd6f@$^3 %qdFoWent3U21(D8qY]Zd&*@iK5(2)R."=f'Rfc<$jm %iK/3Z_">\Z9K/K-/>ciejj@43dddOGD@JC#e!YJaSsf0AZ`;Y7(Y(ON3\p/8S%R7r*PI_aB4$YjA&e!M"1gSts)hnL-P+VW4T<_' %6XVD0cX0t"%&EIYK.pI&R4c]bj]tt0/#d^N_34)U3a2+(q87@#iYt2,NS32*LJl-d5>L04o.M""7Wu=IYahYFYW< %4Jqe,=4Ka23Sm!kIr9H_go093$bopt3Q2ZNka1TU+86OS8+jd^6JGj>(TKIYWY`UBnEcUWTn)I7F6\Y(GX_cRW;E2>REWsWp0k&V %`/+EHh=DlFD]O!nQZRIE78E3@MN"IX;,OTFctYMcr\Efiqg5H];>p:VW`#`R[OJ*(DR=`uNG]!*>^1ksB@e[EkrjUHS6ED2^X2@V %A(T'&]WZS<:SAcV4*3-8fA_34.2bj-e[Mbg5@4,(_0WkghR;I^UQ5dhL@eBu`HDb6OR4ioc&4^EVec?8\$fjVW!,sroc"giE(RT' %[HY_\K=!ZEh/fUh9#0/%W`$F`X7uI'm5bDVqq*!-o`ZfU&%;)qQu@24$6"0 %Gg^MVM3*nT)8#[:1K`:J+868VS[16OEIS!EQp3n5B.o2BJj1t5^?.8%AZ'OYk'rF.HK,5C-%]hg%khsFq0I@-%>EnX__eGB)T:lY %m-XQDUH@=+RjD+Y7J?]uVgIH;+kK4&7t7%O?4JK/M3^/M_#6DB8'Dk:_Um1ns4f-6FHE#4fp7Umf=^>.:S@[/hB/#jSl[@fkF?Mj %q4XI%`[*cgUn)Zt2b3T?j?TFP&LJ;TI;r>KZu,*1#?gB*l_J`LrfuO0k]Kf2\/qimJE?]7kLM`TqN=IkmD^5\/5Xo3FS]VZWNS*k %[EFZ.kpK=m%q7Po%Ss.sDOFg[U/#L0*+1!i1:9mWA2!CO2#Z?I%orU-Nj_+!MO[hGdla]Bm4,"TV&`u'3MT@(i4uJX9qFQ=3,Ut1 %pRAjZ).[Kad1b2-'<:u83,ZX$H??T"B*b!@6MJ!0L5:.)#6J\m4.R?)2:SiXC7TPUq_NZ1 %9!>p7GdU@ne(jQ[G(&9Zc_%ARHLpM!:Y.,3LZbV/\/Iun_)-;Pf7=Rfb&*V@"b$pSPa/mjA]4B=8^OjOqoMfY5]Bo/XbdFsW%hn] %$ViQA9RV[s)10IcgAge:V2FBHm4XO<1Ub4u'5P)'Y1a.F2Qbr6@.GC %HfXjVb#B>RX8;;0VdA@r*OhLgUCB=u3i9<\ebRkc%t%k^`n0jXcGp8'^84l#7K4(ZIs1M@br]k3I_Sj3Hg>ZnoiZE[\bG%G_sP@e %2ifo3\TR<:>-#Bas3A?-\8JM*?@Mk2hUD9!mEM9;J%FDsBt0/qn7aq%iqQ+Wo[eOt41l;U\%MA)_N!Y=[uU@/r?pR`h#-`kju9ud %dc81/iPQJ$bBMt.X'4iW]uJdC_Y8g!TA&)Xn_\D')tUPpNt2G1^V4'7J#qL13U1MUrGW61gq7:'S8>:Ghn<1k[Jg&n\bWXci:5[R %Q[S&&"1S6gh+oP*[>""s5?b46qu-)VNuRPSDtb'.DQ_fa5Mi1@+#`kAe%LTirS+I.@boA6H$]3goi?.Am@GCk%sBkoQYVZM>^qkA^_]!qP+\uk8Ggtposbkindf,![rY&8W.o>_od@e#5Gq%d#!Rh,5,I2);12t(V=d=9ttZi3@m %f5@_j+tj=J_FK(>^("u:]=35>>e>K1=5WW3m[^3Q?[qj=1KcQe^[KijU0mGUIAg]?efq:[X2q(lU,0do)-,>e!7$ho!?*jhX=_>cg:\Arq;]U-cHY=WZ>6>5CXZe/8['4*p+-Edp5%[ %[D'uWoWPB(^No:jdMnSt]QnCDIFm90?B*i+hH94=5.lno5CIUF1R'5gT(S:kj4;K*DYE\s:l]_34RW#)ai*1=F7W$`n"*e==DODV %i,Nels4;mr-1ABWpU\O@>D$iq[N5rS-AQVX-;3Bj:]/u(2^mGOkLa\\Xd/Er3dI,N2m-FL^0^\E?iIRL(YlR+f'N'I"jQ4SQ\pO= %E"mr0q-[e.Z/KH0;uL8048$_4g7r"\?1u!+B_q#'UF.S!]=a"j8raBV2Q6,_2#IRUIAT:mSh`VLR?[;9_fW1k2mAia+-bm0]eX;m[*T?hOGF,eoeRu;7hmUbMQ#YjLg;1r+5EFS#0/ke4 %YCH.ph=,&pVs1ZiZ8_JYSULG7j2aqnHMWB26m$O&Df%B"qGDY1`c(4Qhqbqhf1,](b,\aiSQ`)e@NSnQ#$&+_Sih:#h70e_>j#JA %Qbsa_WP8%IH%*1"3*\S;:LBR(T3nci=24QK4hUdMcSb.jA5Yf1OObghW<5*#APYkPuk*CWG]5A](Ro7rUG+Q[U^-nn-:MiDLP#ZdP1=#OAPbPWL67Nk<1m %U[ka*K0$G>kN7[G]K=]h@SC[#^>f-*CMLb"q:Dm4lF[Q"?"q9:bj)n#Wb#b#`6+=HZ;e4#H#\)M,*flYE#e]-M[jm/%;2g[%_83[ %N+;DGHd`HiG-0DcT=,.g+YmMNM@ZqN05YI,5NBLhpkt_)]=i1A&+EpN^%\gtcH==__^AclHu_>m@B=9^5Nuu8)tS&erk\Mb>sB[X %2-Z5<:0u0%g"7<]h,mtjSptg&IJ`ELr$nar,QYA*T8KPTq[.<;&$SNlCb?iMEI*dAom&B3XBik8@rR4*,4"Qo(4.NE55e>$Z#JA9kfC,2)edc$Y %?S/^X^[kq+qJS6R\"iHIG@rEnVlE()o4;KH\3eS#dBMN24PO!8p!%BVorDA'3]NQmo^_AYj2^6;0@%8dn"OgPTmWYFm&TjWiN)lK %esCeZRYAFPfE:QD*EKB$QOg`bmeu,K[:eCK52=qm/[k*']rc?53_gp2a@F#3(H.#*YWp1NF7B)NLYmS<\cUp.VQ>&KS>Ct1VGpg6 %-gQ/i!M2MlHd-"Js,TePV1rS(Rnme56i/f$IbDE$XZb>!re!Q:BCMZ06ln:$C%US%?i6UYI[IF%l]'M[s %Wji-d3OjOPF7nR-qoWdRr;O^$NV1T=0B%;%Pj7Vm\b4e<]@8\r+0WD'^?ka&F7b)7pa8/p.kc?r[CrhgI6[bLE3XVj#4CNnhXb.H %aklPa7io-"KKjqXo2>JTdl4aShKuK=S$/pf$[r9rSudBgHIIfGcOYbWp,4HR5HfMEms[(j6X^6+DXS[T"'d$7@'kD'>!'C:2s&e\ %rFM+UIOK-jj+S:.mr-g-b'&)W>[qq9,m#Q):4H+DZ;QX>6+E=Or1GH[Qj9ekgVLm*bE6_f_eO0PNuKe8k-ObNpY`Cn@u?^Zq$HBd[%*3?pW^Yfc(BL%GkSOb&(^16$2We%JnmPT4aM:thdRg^`t._*Z]jTC5L_@`lSib7K@5`:>^':Bp:DiiV9?@*r75%4Gdqt- %I/E;#q,MHEMsd2(c->k"^2n)1530=KGIQ-3Y'E0Yd.$Z$j3h-&pt7"5$%$5>^4NY0mE*r.Dhjs/g[36;J'm*PDLFJ-]O*bQ>!&+@ %?bb->HEr\bYIn(X4E"RK':73(GrYiO+/ml%Y.sbLp<(tK1:CUlSS\4pCWjD+G-^]:jl60lXe4&E5N?["pj"rH++LZl %DEllY?96BUACn10k/Gqol&4th;_,,qmJ[!sh^5E%=Bu^qQ]l2dlW;TQI^0aEd,6fg2s&7JH5qp$_$eZ+BD*mk+N`4=YVLbL3Mnhn@ar]lNe2n))B^epm[Ad%ChgE]bEPf(W3` %>aq4trUa^oDImVLl8KrGjo2%7[@:p-dUf[4LN*7aVc+AP_^c\6Q1nTQ>^l=rT4;ZG[Z\L>.':bns5q&%/X9mMp_WEA6q&k)%L+22 %MHNp&TGWsq,i!J8Qi#OpWh.]rbR?j@qn17#cJ$]&e(%`0\Z<;+$^HX%XId,)_GftD-$YsM9),>'Dk2go#;,Y'!kNGl %oMU/6<`AX^"cOu:;Z?I_c'#i1&FM]pM\N(X],-pO9cj!,P[Du>YAu#\&Q'KCKC*F4lXuK96QPe#X,gJ1Rn'=A?2%(cJe]ktaWj/3u0p);L=_Xd;a;(OB?S(ZR^EO?^kNaB'\@Fgk=dgc]m&cR=>1sj-4#K39HYRWBoba:H;Ii,E^prWp-^=3lOc-t\\9>\XpKu9Y4t-'[Nt\n`jN"6Qlj]$%Qgi8Xq^pJ)^pW1E %mIT%;/Q02^J6kF[eB=UVoc@-u^J7H7Z:BapZBRR)B9(lY.B:WaWEqFo:J"pu#n_,&nm>q6EN?-(?g:j7dXICO.34#mjf2Oa6)^5gLl&A_jAB3qf3W6Kqe:Hc]q8/St>N0`Q$GVV>[d1>5V-5:^YpL1!9@F4h?B5rh/uP*M$&T2_e61.'J]9M"S\>R,!$Y %L.3NLo?SP*?/6@l]1$.5"A]7bD9=4RYC+A)OJ&#a=7OV/PC.ZEj`FJYO2\-/%D&J))\p*@ho%@ON&LCH#3>_;=Q>UbCW"DKe]la_ %g'c>7Wc4DO":b2)c-kTrIlq36DJRu:IaI6Z#0QPVk0ZP/>^^qV^6-E[F#3cL-Dd8NOV7]8k8GBcbi^Q+L[/(e]4je %ect6r+nZ&?0hfZX&'8nJ%n\n7Koc9'?k>T(P&Z-"f6+>I[c4AseX6#!4qqlF^)8:17aWK?i>A)8Cf& %[otc5pGWV:NsfK&nen`%0YJ^pu97bgsDjjhWa9>;2eS_+NIeHbAWWPe=U*LkucMVf.:](bUp0UDT1m$Bfch)!ut>eS^7lou("BsNd)k0:lmj+KK:^sggkBlI85"k.*#7.e<6OUT?fNcM&&&^o.:e3&#u!iIqTeHd)r %^\RLQ4><.\RbpaIA4(c'O"$WZ*m85NUMRI?K8D>iXGIW%TV;*PSJ31]<*G_+e1>-C&4;D4D+E5h50Xl$/u\F>PmYAN#a4;>n2apl_p5.6KjLHW[0EQ%_T*!fq5sO+;?#7\@*A:_pDiu* %k?n%dd2C#`P8E/lO):8gbnR9Z2en>dQ&_(8DlB"c[/]YC?)1[`>U>mmB&A)Eg?\%YeH!Tm`u<\V>P\W_7Y+p0MlcdE4-Z`#)KrHk0U+S\\Ml-^O"ZWA[p %rE=tQBJOf^R;ruKYait[P>ltD;ecIq/9j(9Bp]WuIY7<$7XEFaV('4khJfYUoTSjPaD+'h:s'1W!JVmN[JSZT^`QjS.S9dR(P?nG %DjD+6%f(M-5tq$%7VB5+4sad[(ZsC)]%dkq3!_P>!g^[."f3t5hen5/ZXc2,K %.sf=t$K)G]BXmW*p[6AMYl-f-K'aZVm`6+g`Kg-.Rk7jc3$9WU!mn/Ept+BU5J?SZ+38@((oXK4!WfEGpP.:pIFnOrPQ*9mGGgn[6#dB$&SAXmg3t?2tVbE*iYe&5Tr;\R2@+%X%Uq`*?!,-9qFX\l4;6^r$5"'@8!X98gSk:KJg!Co0^YK?G/a9U%Gp=l %!;.8+AQ8P&=Z]^dqTO>J0aM=3o]$>'JhLfeCnm0X)`fJL`7hU1=Cu5/$^$k(/ZpsCadi,O-[.4* %=XKV#9I=u@7m-di$/;AI]_UL8r/3\iicd%F`U^'5qlHulmBk'?9Ija>jcV]3FD]LrYhObdfTh,!V]_eiqSNk($WW%(OHEjNHiLBda %VZ([81-lpr@jD^sip-pe57C/f[C^D:pu.rMh6%$5N9N6TK)mq/%]=eO45glT/\kVS2mK/=Tn@=T3E$9_pXSSK1AA>Oi>X9EZ."a> %6[nuu!7cl&[(hOO<_2%:\N;4"/'5]KXq5,Xm$[$GF;Vk-^h\MiE\9%Hg^RKhIcYc\Ilg)%/'!t4G %Hc%(C]%VgjnctAlrffb^k=`=&K=giZ!7Ocaa]pF1@BBor9W<$lel)g&f"RNg(?^i$>n%&<.%^)PG8paNNjl`?`7\H,EBEt,=@ %8o&4/2b,(N8sd'qXW+-@P`B$^\m#'-XT.co-Z22;lK`NI!L,js_/=3YX5XQ&_662(tWKK*R+DFpE=m8VA:'^XDo(D6CdaI^//A[(a`^YW(u8 %Km5,Yp!l11JUAJm08fSWg0(Z:haeFr,T%'!OQt[P[(o*T=N6i[6!*#HtG%X?%LR)j!.?mdI(6\rXi>NqLWBIG'q2a/lPYa)iHWbnmtH)>Rc&RBsjepiJGkLuor$M6#,poo:c]%Fj]59EN%&"pCO %k'XKsF9d,R^,pT(VFGGg@9q/#GIK]tH?<6G07!XN0pg:'`>rW%D1)?6Gu4iDcnCEi?8gH--dZHW>PmsmHGEeZq7IZn:^"T%`\/F: %SdMV+^=qs"4Fo[[(.M@H5jnj4MZn %eAG?X9S3!W+K\2h8/mO<^<>"$)T^hgPS4S^E3L?cG0bY.<2f!"8u14(/U+7?t?og0S`.B!R!oQZ+:rhAh\Ve?ULLN8b(0K %K^[Kf.KI^(-ZnWZ:F/8G?"0(`"2Wq_of/rP]cV+ZgI5O,\Q.P?8"eO,S_@W'Eb",?!3M85TE'[r*IR4n[CP^CSn;e(`Hnj-g"7W: %q;#YX@@QN8m830)&l$8;$@R&,om1_k(IA;G3Noo!fn79f2CKQ4(.NBn? %Qgq&5=R5lUEcmqlVbWsPY,oD4V4X^)]01qI56L`V^+O^o*K:akG9a^ah:i4uO0:%2)TH$RO1#Plp=G&e:Ciii7PZEQ4e>9,8,:q" %C-ACJ#1!fd:H%=X[-Q>dd1%%UmG?^[e't1S#H9An?o?@fPSFtBlZ(pdF?M_"/\:<>G5;?teQ`'S7>EcYS0_Y9gBuiZ.YM7[ac>#tS\j,Rg+&th3a'JG;YKZrl %oZuBo#K@rhV_=CAnBnDne%oGTnW_@l`a\^"1\m7cmN%o8^[Z#]Ot-cka7!I35$GCdkPF`9537?hR)u?#ofkkDB`;-`SN$_>e<%?` %C."#8'*h`X3)r/S$E#KucGQX%Q]#hL2Eo-q:=-l]?h<2Q,lX8[F`TXX:Dh?%T"qZTB+L9".(Fl\A!H.2&<8QmoedEeM^Hu=q)'%`"Glq?S^+g+jTa6WcYl6e98o&,=GJ&I7I=Tn9 %9q+:XT.@/q4Fs5$dI]bDaoO=5Z-@E0_m-4X$L@otT)>E<`6n?+d!NfK>mKhF]X`@$'+WCL@/Td;Tqhk;fnp.$SiA#Q?8b\9.P([O %Q-b9?,D\'.CN=gip^D+hR*u#fAbIZf?&u)oWAC$gT0(^+&Jr,4l(_pa'k*c)]j*eqEo@R(#el[Sn!53nc^G._i>0'67:86eAN!E` %;oP)J>P&6??7o<9;#c&VZn1?<4_A<>I'W9X]V83RN%)T)R=-e&+o`Z>fUN+lX:Jo>:?FTbSO/teEJ"9N:Z1C?#-,ZLCIfA`g]fWX %)jE4Um)RglMYs7.;iA1G_LWWJ)dk$h7lpJ/N-=>hk-rMT1d'rV(aCg^s0SuQSh!@_O5IX`31RF+WC*4_1nP!7BD9BP)/^buOVN9B %C?Iea*i6iQ+j6dib:1@N$:=.`=j1[RpNe1/ZKR17$_aXCgKorlB?.XmhQn!SFU9igju^H\Oob66)mVa(d%[G'qJhCab$CuB"#+BV %,'pUeYLdMO<7o@lY\&'p]-FP'Yb<"I0"@t;*KTPl3ADR!gJdmn/KHa?^g.+lhuaLpmD5'-c`-I#>6g/@Ve0ZuD/si9do!fPnW;?f %Qu;f+l'Ra8`@RI-MJnSZ\Vnj9Wc(rP5peE;@4HK_N(q0VChTSbVL+KZYhSI81?E7p^D:!0)OgsdYFDd90.hTe&l"7XjJ5RaV9Ef' %c6g+X\B]nik;lkoa`m.&`c"\foAdE*Q/[4Q[7jRug->F;Bq#g#AC9@;4dRr=Tb\@BdA7rl7([DYHhEKnln&%j9C>K6C\-.Nmru9K %Y'?`0]2(1^N4E&!Y"N5KI(<%LmoU4t\iK8F[6[5W%FJ)(pQ?j2P[8?)fs9;J:gXrD^dX>#,gE%tj>(rK2g*b>'(@]'?%@ %XmlNJklBT;Rb*Yl(=.^Z5uu@aUdLUqlG%e69R`s81[0LphnW2k]KsYtFS6>a1r!Pc\B#/`d?uZ4cSS4K[X\a4fiX9_e>FiAJ(Ct+sPdUJBad!k57NAq3XhLI\ %$1@L)\?SI;o]8:4%N7h+QqM>\&.1&f&n%-)\p06dKHb;$R3i)h%)cjac@qHrCiAnROiBG0gf6cXY9/JOHua(&d["ES`aPGsaYrl2 %*SQO=8$`6c#\r_"K3RrS@GJeV#D7OG[d$)QcjYPq?NAI$&mkUE[j1tSo@oY_htNYumcNbB!0i89&#qa4fF$*e)3^B!*p_kSL[XT8 %LoT%k4!Xon$g6[IGkpEMp6\p)[2"oi6P4fYc,AV5D@cMOJ1P[@AG,1.T6<[;%*i>,IfQ[!H?OKg*4%ZFj\4h]dFQ9&iO(a+5#*dDth4_;M:O;9Al-=V[f5Lc8SP:QL`Msb8eoC %I^^3RK2)\$fq$P%-C!@,!hb$.[%5G_Rh%7&JqZZfa]*C([OblXSkTaKD-;3Zkp[ZHg@I72ssrZYU3D18Ct]/fo`PG/c'_P=pGPr&BL+p8(cpC=?-g-t#8_7rm2.O?IU3cb^YmHF\*VfkW?gQ@9k[Zg0b12X]qU^-alD&pbX*BZhI)gH1]lQb;7sO1TSt9fE+*nfrY9I$"3l=j68ka[LV,1'[sM?LCsaq %31"S0Fj60Gi1G(5IHg2k#MP>rjn'7mla?HoS^!T$5dBWj<-K33:OF2c"]Gno_'I7SIU!>mR77jI/0tION5jTb %[-bM%mDk];r(V4pD?B'=`i,M2X;Ye;V8k4Tg@/icqq`ID]3e2IcL(.qO#9@W=h;taPUTUakbn>?DhJ\e%fW;\!)(ZI>:!\KkMG8CuIb\rc,J3dJk?_sj0\N9ap=2(fgt %%HGrNpC3[I.2HJk9,D7M3X`lf!A%O?8t6Ysn[:79/U$jRW`hqp+j4p:Y^;"nNTSk2nA&.fGd>rHJ:/_8o'Q&dXPTA#M,DE+I?JLXMBF\- %b+J8EP[bYS(?RrCXN,iBK0`-;GCaBg@chK4`Y2q/YqiHo:+PR!cO.6[A2uMhk!30%kidnt7;D&a/*K5C0;XEK^Ojb+>&`UB\tj6J %SQRPS?k&Y3:q_J+ZMG?;U%>I\Z`40FX.f+f8h0$eWs*.;U%>I\dkXl=YG(Q;%kE@#;+'MS>Xnsg*edh.L5tDnaU1)GPuDG]lj:ej %AT)umCYL?EhRaCKs#^+>>U$j/)hVj]gH1s.J9iXp`+3E7bT"Ygfa*`Q)CX#AGWM6=QeZqKmj'q?djuo=S5hJU>#B^#4V=n8//\F` %p,tU3c;MiR+8RYiQ#je)Q^PiHJW]BQbR$6Sf?2,_@5+;sH'HN5._2FpNe>HB[(?Xu2bM(.$G"YF/Qmb:f+pTcZ'bVaM))`UMdL.P]dScqMR&E1YlYbs0*J %cag?5<^)-SmI#<0BppLIbT?PE#8;qhURY6g:"WslCtZ;oe,i*le\0t.e*?$7?+>%8&3+QmNu+nkcP5dgmB-\:@R="`]nt+=O0e"aMK-Vd %lGf'P>GcR`rTNXV=R3%iepH=cU/Z%('q3nqnb.7@9AHE75!ap!5!PdZH]-9;p7B?uc;g6d%R8.555iQd28@eRh2^RaLRjC[Nng+) %'l0Ii.OEs_IqB!k\@YAe=e.@&/\EU.4ACc;m4fH@Z`#ask,*nsG!Ck$/;tqr;Uggp1cM#]_E/5?YiifKPJFQJ3<(.)rX5$ubnQ<1 %)%o0'(A"T2Ris!9PFWbf.*cHrcEfTUg&7Thrl_LGr@'p9OGM+5Ha()+QJ-f7L^\EHMjN2f]t\MS`pi_2Em_k,[_*e>,eG:G);:Sm %)1/caqR]RUYYg-5&Wq(88=`eR2fhB!1Tnl_o;WLrSfg@Wlb!b-Z>m'^>Pb2]!T^Ye,?59.@f@6J %PbKCDnOuV[<^#6F3<+$aiFY3%CsI@:M(Ek'q1/q(_bo)`<(5TJlf%2M(o&9mg%B=` %VZ\QO*\QMW&a,Eo3EJB!KJ2JmXb3mCKf8.rHEjLMX97WRP!atVfTngD+t'ZAk2ZF&ioTh]KE>aP#3a)eema1N?L5_k4O6,.S."Ro %rf'p(1`dT]'05R2-!JbV+Qcj&@,>JTcA!rUH!%pAPmna-kT9--Kigr9eFCV9.P/euQ+P3gS22V74P?rZf:'1=e?['phb.@pH^&))% %74Po!/u'Vu]m?%Q+Rc1.Ud@;(b>#*F/C:@?;b,m850Zod)Z1H9M3-:V?6:#uKDn-a.>OMP-]=0'Y``!1dl6`jq8=mDa,@p%DB,kod`GS2XF=ie]!2eX^2dEt2S^?=G>7"DL %ZZOsm.X&GtXKWY&T/KjLm[L!(NCb+9!0u-djg4`q=0^ME$G/Lj2HRTED=+4b#rK6Fah2oL@`@^LG)g%@'9T&?g.T59;0g'jlIB&( %L0%W/Gu`K'EM!TMeS72+$'_D1CnGqPQ.@.r;>J>G_X>gTfPOpb#$O)o]5[hIn)K)PZ?uNZK:K/(B_hcMc7W>=Y-0U*.I`\>?T'<">AT1ps]'a)S-!,+!c3 %h9i2^=5JQZ:!"alOQSnb<-LZ?jR]AMe85nsq#`SDTpPe<' %1Gh@.eT>]:F=ua;/Qba1 %elD2jkb-IJF(s^'X6JF5Bf',+b\B2JfY?P:0<:PeXd1S1DU3.LFDe@,ik6tPRa/V7FkP;eDT7[(41_e63k&9Rf@/juWhsjgf^O7HQEY2W^[FKs/$CcaaBpP0\EuS]C,<62$(H\E;)MOt0WX?19Yd4nFm%Msf`"OFGI1oNPpT %bEN'7F#PD>\3K/!5Ah(PBc#SWI*E[o0JhhlH^&b$f0&49oUMu]_:%U"FuN2!'u*L>;1bca`YP`=koU&N`A$N)I?t0Hl%7^"j%H!L %QLjG`JIbdP(G,;>'U_j-kafX(]Y742oo;u^"8]gJ#_o)7J2_;8Hr&<,SUC;b\r!be]_6]V>V.c#KaLd;eG8[@U!B!m%Aq4gU&g(9k$o4GgqaYh"7kZ,SdW)a"%&3r#\)fNDoF]7oF>d1)Xd %JMP+lh;sL95M^u3.fJg_ouj$5CG"tuTS>AV9:ELVER,Wik3StWqb;?/]>=!B\&93o073\P$itX'p_iju>5uacXi-sr6tu4Vijj65 %8O%:GF&(S%2/u%S]X)Y8P;qSk4:VQ%:rj2qLDOg2`'bb9oQNo=9$dkA&oP3(SqYK2GK[PUDQ\>eB>3?M]CKqJ=*0ihgb!tR?4cf: %E`:gmlB6P`\=7&1hFDqAF\)W!6fu&?cMP?-e78u'q@.X7:Gp0S7F11/$FSk0a5@[S*rP-?\sK.1DMXT7c:PqnBtMpcWJ*g6ZV<=ba:oa1^m$FoRpXTb%.EBg(_UmC\\j& %a/;lH8\c;0hE=YLn3428b8r0FVRT'GO/@N3`*i=B"K?AmAY_T!eNmqTSbX5@2Aa$o(0pdK8%^+n:jLNiSu55gQL>]0NiH_VojAY* %9XaebG(XFlR<;/T_(H\S9(X`Zj];2Sg:@PYau>SO^/1.Kp.NBKF/`-_*afoLH/DF\OY?V$o]VIu*k#\\ldi`jDEE4bMYLFuGIi&d %PEN$h0"LY&lrA]d^*b,Zi>sS7m0-_N[=?*El:]\A-r[f-SpCC%ej9sQQ'eoOn&YfJ/Zho9SbK@*-ANpE?E<.]&1h)$2mth`s&NX$ %V.kSP'C/qW#>hk<^7BJn=`\_t?-f&*X^C2I2cX`dlnNkS?gm!k'Bho\qu5RY[-J#T'H&AjVq7M]AL^3Z2%Q?Ph0+(;'BlD!<7Ap( %KJiE'OM>m0hjdesp\2,ohm;Sumi$b'']LLoHb,Y^81mB0_78%cf>QK@^2`/FS$qo]RnQ_Xb?;F6CW_`D8CPj; %JWW,pQBp>#3p?pNm_%SuZONlqo"Ht+YDm0M2qBUa1;/OhlW1%SY\!"11Zb;ce+TV.h5bg=>gQb=YM`H8\A&&>3"3$0rD6Y6/e:YC %DXmMS6Y5dtTQ/4>\#b4SCV<8LRE?PP/E7R\X8r`50/h?r_9T^"["?6:*(_@qY32mTD6Gkqk8[IicO^g%YO_`Vk>gGEtYJt<\?G%j.CE&G=r[#/)ofVC[J2L(4 %Bd->eJPnbF]_=&?Zn*Nl;SX^tnH;rYUWt'pF.$@E1UATEc&[e>&)LGIkd\k%>+a*;?N*"o`hqV]'7>tgZCln*k.Kbf+cH`!SP>=V %HWZ&V?fnKm$sE`Mll6Ya/crVUT&+7U._q]7J>"u@f^buUo;MaI:H4lF$8?-&?mri8LD>>tV.eI_.2#'J]0<#Y+IX5AMA6^d]F/R$9(['QHlE3Glo2:o^Bfs5J.n+E.n:MGB,rG675EN@t:B1'5dlfT?)Eq@64 %\_#00*7=LsW4D?hRmtNC\_#.j+Ck`]bo0se?9c1s/iGI2VA/f35Q?,.:h5<2Y0Xe1r_p/Z?b*tcIb$cMEbr>)r)D[A;i1Z%H\f1W0Z %SGW)YD5`,RFK_G-tEXp2rp\O](78al"$f1.3go%EH&9b4Hs'@qiKPRn.#>Q*c, %XqnS"cQ@`!9`$-klfY[Qg9#fs\W:[omVoE-p_H$3_n;%Kn[\st>Q&06k*Wg5caW=N9"++,p\O^ClK9.8T`FfF(PqXh!=,j&_%74Mr*d_D\s[_A_cSf5U.r@?9`b!P<1[GHYi\. %rVZ8<2(c93]mbMd[d^tZm,+-U_5tIDo;$*T@_/?k4Wn"h;A%1uJ31Z$MB)%+lDS4I9%L1^m&5KkI::'3+jp$Nk\AQ>He"d9n"pTSB%@V!P][^m<*d/#daNE'u+HF?RF=a@4_/brnUsg,!Wl.K>I!<8N:]s3t-2Lj0.OpZ]Jh"b\iH? %?=EU"O1,n,WEIr1`l"r!h;%4667>aB.fNc:Z_KoKW=#24Z,5&_cuupkIr/L3($a5r;,S-QG,sp) %fh:RYJ#uIXaq\.&MFQ'>(ES+AMW+P,/6P_:`mn1>Di_"_Ci5S'g0#3ejgb1dH2d_ARI'TZRX;-NUmPuq2iTkI*A\nfpbaJDS_ba/ %gK`!bbo/sXY=4:(`+2:[:4<8aniccYR3Y"JREpl=Eo_kl1S8H:\AYOcNM4g>Bjg^5`Q%"[oc38,gpQ\aq0-.qu]nrNhp. %];A\45Dr_YM;/OGdPV!2:C:(b)M@j#;k?M^7:?\",Gi%%Z!\jdA>Mq'&#VdYfMP4>T %3&7@8O(*_&0:pRIk6f`!)WeV$J&tL]Vq'87&Y@X@&)Z^$Um+H5H5*YEfoPGr7LN1EUc+FTm,6L).f4,O)A(!;JOYpe5PUmC;RoYb %jlABIL,?'Xm3J[>p?Gs+g.I$7@`YO@`NRga.[taG];Cg&Ou`?D?@)H!]K"u5k.Mh!bEd]3'pdd?XYjSqXP;JaI!q5'ig?j]$&Gi2 %Pg945D2"[#7Fc7=VhPQ0b&SCaC+1\_+!+4crpe,po/)M]IM5#V_h\CsM7'$9N2Y'G(m;\6Ib3@Y$ju)kJijfEj %&Wn^deIP5>_o6/q6Mu1X@IUYEf&b^$bf3T^A*kHGZf-I"A97c>CWN@JU)Lcm-Lui?Mgr9j2N=>hH;;_Xb6+:c@tS,H`*S^,n"ag. %<*4hbcUR^+V60/llQT*8coXdH<#co(9C'2)4e>?Md,nePMmk5`d^H`UgT>1Eb[@?8TM8WE*Pb:HC7[)(RH^l3=[r_Kf-c9@C%^k@ %`$gP4YV%XD#\@$([aP)neh%9j>Y_Q3LQ(@kO>_&j/i-\crU>r)DsrDbcT[@?P1$.;<1Di)pNC;`qH7+3cKRSEA/-2nlt7)%bmD'2 %nlL[VEA5?Ad'S&m6QUn)GgA5;SPXC!=eVH85h9Kd[S58V0YH3qXAs;i\%8Gtk,Wbq)fOed:*!i`pjm-)f'bDqJ"";>7'dNffL^#P %ena`\fId'qkX8Bj7u_+G';3>g.V),` %:dAY'CORB,b0.ht3YJqW)itQ8(1CR*HeF:2JjHYa9B;J#KNMmcm*:4noIY@[nP;()YeEBD\qJh=_A'fJXIi@Q?VEmOU %Tu`tW?p%MCk"$uaI1/kMOpn(Q<[/Q:iuMWKA9MN#?&^Dq %L.['&^s`S+)fB/i:'Ag^$h?cQ&#,3P_TlR=WHBr:M7fquDBU#c1btDdNX>_?Gk%[q#+bMe0Yq<9U^3!HQ;]W&LE>HB!+YMbQ5j]? %C"FgSDu#[V'^!MWF%')kAX@>nUZKVN>l'W:i/!QEEI_faoN@C=#i[T2,9]):*Q$;<"7eH9s+q(6GrA.(&_3\,Yj %h@bO+kLW3!?nZnF6.'/P\9Xh9]fm_lFnjrti1B_=ZXb\2b&U9ZYIX!ild$1?SDLfO"7B4H3-r%_gX:E,Hfs`3"#PlI60N^u!cq95 %rH0p:5+a_ngsdOQ`N4XbMiF<,? %F,RB_rk<`TKnSno'(R7:7OkiM4M*^2_`NNl:'h(JQ"94l%S3CSS-`>Z"/oh"fl+XG8bNDDC$_hco3$K7$[QL0W4uEnb,6OPVAoAY %koi\DSTY"#7p&R7eK!fCC&oe7(9d+RfV]nmM:Q`[;Sah!?bbIZ2\OkIS:/`DLAh[t0hA6dnCLimEXbf7#Q>`b&ao090C%XhUKB%W %bAHb(@sqJB$fu/h9uX8VD!Es<2#SloKrt6KSMgue4MA&P830^LkWhqZiA^skgMgk(E/`\qkPKY %P*iZ_Z:aKThKk*]=RS(\K@U/cE!^s2iSJl>S*/HUJDen*o,^]#o9otc\-_DVrS8baB5;fULIC8/>+5KZ@\9P]eE;--XD7#O`0L+ng-S^.3LB_k1ni+Y[NK;[!OL9'G %AF1?6jL7PhJ8%,k8Bu;+,=aqZ&$I@@qc< %GZaYnq"nm0rsb3!]8?+u:T$_ZTWUL4PIXGdO*Xn/QJ:DU^?.B6a"e]r-Q$QmAG4oi9_WTAoU\`5NICNToja5PYB!B>C\IRVBY)#u %=PQL'k2NiY%iF%)74=HOn8_E;lhPWg-dk^)Cl4#.*?a1I\sC#1F=pD?:WC-%VpZs7*^o^9b\-@?ko3&nhOpQ5A7OcIA_`:nL0Qm\ %f%B:,Lk;i1(NA-$0B<``.-->NIt`Yc?4:uCb1 %Rtr>:i*N=tPpEu:G^VZ(T;@M:@5Vi[KV:.tJ/5omX:rX7Wg0GhgK#VE5a^Z"&4JX^F7NB!"`9I<3-2A#5DP %&BLQ$Yn(&2;3*-H[CluX+osL5,:P6bmXFqD$kLWcnrqsJL>h;ehWk!#jS2)HQ!c%,p;FR3,'P`):*DW1)PL_N.Or^*YoU#jCJ6>Y/@F?/+4hCt5K+*Y+]mH1to:4SX^@K)Lm:.(0*FDFEVdVXA=3E;>J2';3l %PkSL-_P[(]\n2Ct]&5,cio4=+CH=Vdg&dPl606gBNjVOjSVTAPXA8J[CBdLN]Y-/V\Rfp3m6#>JFcV/tla1rtY8;b3TeH!"=^"Jl %^][=*H#7*kI,6Wu?Omq.Fbi7mdb*^j:Ha"0o8d)Kb1#<2H*oJ82i&^k^B\jJ6"JIk:n/m27pm?"aBh*+E07oeDQsi %^5]bN"k#>UMn__OHFnY5V-oIRFS26F,Cg.*'`pAQ]]P#Ygo;)jD>ae"L,\qB%Za4nY\8h.1_aqj\Q[e]OC %Wt)_sMsgV*b.[!.GP>aWZFQ,MSHPZjC.)k@G[2ETDEY,gEGg=h6VKPppQ`q(N'`*2q?+CI!3I#1h%c"cCW0o3_/fW %"*E,4BHnMS4q]O]kn;gX1s6(#*T;Y,E4Wj"KN!ZXol/o7D*U/ajQ;%'/ue@JV.HZfNs9TooS@;iBe`!uXg];3 %ra\5p[IcLS'V!qjnRhI/rcAgbp.*/U8lR!!2e,ChFcCFLZtm>_@$m(m?[Gae+t^N\kt-YrUeH;Ml:Hbse5@rdXsY5nOsC_m?V`_i %Upi[KqC"0b($X;A*\%QOUVD!Ee;^0C'"+L4DT#GrV.iFqh$A(ie;jM7fR;4s;hBlEPa3G*:mu4\?i0WEXsRp^^\qYd0k8?\4l2:V %cr6o#?%)LC:\VAgd$#YF2Q:SIK4lHSek")FSnEIOC$QqHp*8;PopD'BfH#F<8/t;>.I:eMf3i!(@cm_k`^,@1jS]^$W,@C?!WA`E*JbcF^A]KMAF`T\c&`K[9C?4OeP)fIQ_-hWa4@uCE0me,DN4k/D>k9[I0bXk_/r>6sF<]ZQ\*lj5 %A1H?S=pLEe`XP]k],9;6W,L1".S1i %ABm3@0-!8bE]DqXaddT`M1NW-#9edF_7F=Q(SO:'I<##I3Jq3SGT?L&@&9!3G0q0[`_s5=Z,r8PY/\Rh56+EA$NSF(*&N*7keS$# %;0gS1>11i?)Lff5\W^?EqA;%glA:%01]U957>qBGI69F^;:9,f]CGr1tLs: %,^Lh"kR:-'o-'58^M1=c7\qJlI?#+JNRf>nXr>=80]CbTB/[ke>0PYgGHf_7[,-S^oQ5?XBme2lf\2HhAf!\l"fF'\]5\&M0>XP@ %?Cc-GVO`+@[Pj+0\`'+076#VhISPrte+(uiPXbAa7&Tpoa;@`WG2=#\Wm9dH;/+_Z),1ig^3ZaL4/VB*R97,*H^LSaV#:Ko/O7-o %7sTejN-)F^o&SNjhfkN5*o1Oe>)n-g@9mM+9t:c:Y[n/V53$-Tg.NepABfgV@9>KRLY3+ID.KsKqe3q-+J&=RMHYo/KZ %Weg[I%5G#DXbunWe.@gsBY')rYLF,Q(c/1JVpu=tGK.3/qg+P=LEaq*EE_J.(/\'2EoetqmJ2*o_\uU"JlE5T[q/"NLsrP_`H>!s %K>UH13Z27R-B6)HnbQ[m"iEQ*:H$F)ps=h(B;-[O5`b#a6HJnG$.H]g8XLh3jgIA#1-PS:>om5=kP=5e!OL9seD*dat@g95@9)R4s^QM`gRkUn+j.p)5gq'SP;Hg,%+H->AI8a\OJ%6-[ %'lG$T5jLl]OCgW**brD.VK@THV%5=Y[FXKJdtZGMGBr"--0d0[e5].7]FV=>4V4D"tR;>K6to[3PM&,o_b %`2;k<7WYcGZFQ^CqZuY.Xi+U(bTjb0O5dZNo`udi"IOlS]5milp]LL=]3RC$k_NB`igptSIDP71=8TVAp[ci3?g[U`W&OLlpq7D_ %+,g]JR+1dnn7*R>p]F7j=V4[E=)RJpPnsRQ(*[\0KVXl8I-(2S1a`64&I"$C*^RGh;?FS;\Xb\8(*S,Kmb13]rWC=W/,]$gM.&gZd(s^b-lM6QHBeK+ %WmV_@4"Z;Q?\+9L!Qt3X%4_C5Cd,FHM(hj3(jkI`Aa6a[5XPuaiY5.0iio.15D%rHJoSkUPP'uYGYTgrZTg&G&Eth"Rd>k1XKDOD::sMY;2TWHI>\@5!NW=2R'$V2`Ufp+lgKG'5P:mcP.JbfjQ+^2HV:ur,/0jlj-8qn!ZU@UA&,>OP+?i`ZX_3"f11GUThenY`\23*6Q %PCQsX0&7[g>kNCo/HY[iZ6I?:&f?#o]WK,0`POEu3G6$&)rIL9N2DYY@,R_Ue1;fJO,2VT::j\#Q8-2gdg/N=SMZG<)%7e9a$=)c %"0!uTOi75L7M8)PB/V83jjD0-=G>@D"HfIJ)HIO(-_R#!di<=FZ9EXF[+'i?Ymj&6,*%4NN>>daF4WnXEt929f60'q$K4SG#$<>h %er1p_CM;(N,1"XrEbi!FSJc@s5\Lk"rDAOg@-W+5_@11lX/o'!!Nn<`5nT9dB7e-sLQ>:r.J9Gu:5=R#JgQVG8K0 %;1K9ie\2GED>L0=-DQ&%R=[hd?t/K!i!\X%DbX_'BT1S*\=0A8h)]BQ06eh'-6UKotVdN4ID3"?e(_"+THH9G+._\3u0TI9qoTWOf]B2I+Ug-8qgB=n&+f.<^YP %D&,m.5UN^%dC-`.B$AU7haE.@jP;C9,>@*+(B$ZoieC7+H*^>:fa%qPI&M*i6,q--id4F,'][>Cm3$[_0J0[4$&46K!t`5SP.hA3c:\Njd?0%1n$3!m?ur=o8aM3kYRe%`bW_3@3+J %!)]g74_doK`AE+6%4*!].']MsKUrKhS%r0$clfBHVW&:)h+Oc!^b1>B-=fqAdJD7[^nDL)`PG^>"Kas&'lHI\MYS4&J][LGB/P6- %"]C9X#_'*8Y;L8Si7r&IOig9E3K,;(XVd'PN7fCfGY.3)H\J)N!`#,5R)&sSIp7^`=tI=Rhrs[l-29.gDq&\8*C'u]`hHTqi>KmK %2c*s7\qT@laKCQ*0J]fN$b`=pO5R^Z1H/mj8"&6hnAf_hjs0d;Z4@M`40dP4R;pfl*u`Xm@W?=Hdo`e!TPUOmo(cX-7@Zh %.:8CRp=^I5lN>Uj>8Y3:c?RhZ@^id9<^Vfl*]q:'XulT;q+-:Cr?]JR1Dg22:dZYDoK(ggcCaOrkcbM5s(dfs2W6LO&u%dE7DSDbN9.GM,#9&j]F9&UO"uX*r3hI'CKdO#T]->B_&O6E[DdXW@5n._=n/-3ZOf46T&qpC]QJl+LeV"8Z8H?a9XD%ScKg]Hc %eS8fO6mVs3Kf<39^++_OJT=7X=R.omYTP0kRk7Nm_<=gMDNQYA#(?%^V[uU3TcKe8E5qZU$GiOsIFW.JKHr6r($Zg,$5)4/QiUVJ %S%f+b_t"42`FokZ%$j"C+(gE>.)XsZW(R^S/5G=21e,9h!eb&6ar1GpP!ND@"#%`GE>HJ?n0TW-*c,c[\'2Z\4bosO&jeO(O>1'?#. %$`0dQI]HkH'eNdX`q!e]AmcOulbVp?L&Q+ncbV8Yk_n>7T^ %8d\"@b4>S4#hNK@RXIRl\B8il\jR,oZVcKTGHa>gS.X-<0cRnVQXq@D'TBa.H%OgJ<[7]N3T(Y42rR\h;^Jc(n>R[hAcqOl,bo&) %]/5"Q0F=*-_D`bBg2)A$_+)4#K28M*=P<"*J6Ga/;M629XGu8+Kq/*CGZ$-()BU+($ckWYCJ;]"N@?^".(1NmrQQd&rdW6EC/ChY,>u4t^:lpJlX\&p]>uhUO*_X"07b8_,!uOeKO:`$^V[0Rs1W5Gd-*mUX%He+^fm60,YQmcc?uuFoC_.8qOO/O- %9,n]_S9ou,80,b+ %03Rb:)'X&G>bXib@Po!Q8g1Nt)NKbS<)h\BN5]I(Y"s#361rUjbMbl#4+%fM<5;iB*u&u4=79MX71D/DGR0l0+q.mO]U0OkfTl$? %/BKU`+coi+6&LU?dGQrN$b2+@$`emJbQ)'C\lE,r!'L^gIt::Q-:,^,15d7=SJZHa_QddD@u2.C20!#.0J^\<]pK6E,dYT0NS04R %>j$c:SM5R9NWiaUOo)q38$;_9"&MsJL^;@a$M4MAOUV@L-=3V %=Hp`Nc-KX`o]]eB%Nf#oND4JEL2CBp_QmOmM43lMW$(dA#Y>\8+H0kU/3-PV6jdET7=bDY?jhUL+HZAMXO7R/EZ%RQXqD"'ZPO[X %\LP?LYqEOoMCZgf;N'Rc@RM;l'1pcMAc6YJ %L4MfFCR>ccSj8?@Y978YS8<SL9FInLtYb[HV[=dbd.C],/G%FW1QN+@A@^KF^%X_s\N %1kh(F5@@54OUAE$9FkGriJ/=X@#4'+\KrqT)(ZYn1E0`q^hFFb=\ma50KMMS,9[7#LS4oPZs5YZLr=!N33m>:Oa4`8i$"c0-)9p_ %$UM529K=M/"@Mq*0$HG %K'%!+!nATM!n#J+'Nn.])?Pcq05p%;^_rjM[I"qN_gg:m!:p:5=OD6#J]UkTK?78b_i<6"$J_N$VQn%4WO#LhL%Ui %1oCI4@9$13)Gh7n8H\K#9pQ[AJR7G_qs56rk&*F"7$SZaYRHlm[Ir'JC5.=;L)$b`BK(qM8a]` %kR*%i8&tbcpDcPD=cD7a+j`SaZ8,Go&([X0_)FLEf#d\o:m`6&%M7PLfa?ffN$mAB5a")P:sb@jFrNFM!a6%r(?<8-oHk]#7NqmT %5qBm(SnnIn7a-"d$)\/Zi>b6S94YiR,0l<]'^NMB:)kZa"ZY"V"/\CY!OE0?5mL<+]qKJ?(#L6_"ON)r5LAs"B8n;:11mnNW:dX4SAYnu/L1FHDaq3J7TL+Le]PWep+R%*CqM!j>E0^ptG_I:P/84#1@45QI@1N51'-#X?.$`[#W4.7LP%bi=-g)P@.LM5u:Wp$j87 %crrPtQ12_V,hY`.Dp6O<<5Obe$[BQ=.U'-Y`Y6o)7oLT&"&"h:)fV`"fu(2R_0c;UF1?L)blE_/'%iSuXh^-;#@:Ffiu!c%'%k)> %F0&&Y',<>N&8s\aEJFHI=Fm\6P>uOG-?EeH1:Q-!1]meR=-8.HN!An[7#lYj2o4QcM1eqqO`2F]0FNEM8P185#(LFa>;5(GaB0Jc %rMjJuo9cA+SqW!+'2q"-p^/es78,/hW!84!&BimG!EB-K6W/F`TdaPNV3>p%#P(=W0*VqUAdQ:@%&(b$MIMGD7JQ?>3,5Z8/X!Z5q?cer%G@tKpth>0nJ1'Al\(i%BTrn2SXk$K#FZi^Wot#DS4Xea=UQU8>`fJ"Ho)To3*9KM]rIP@=!pK!^GZep#"'u@j5Qn %+FI'tB*_Xk_u(:;W6lt>@`("GW$8j_>!WAunePd=mdT68K#$=TWZmi>M4h\I(+J!3?nd^I[bfuZ:EZ''\4_EK]@d1YQX_iYD`"-i %NdHQ`_ePHX7#k_;Wj0K3"$co,$E2'm"iI/L6[T7J(Y3Cf0-6Vq1/#=&^i*]qjg04%,5W1oKd+-^E$5F6_"&Js8$if%I*iq+Cp+WF/Q=I>V1Gjo=kg9WJ"K]%>oY;F@,%.L)l%.tW&sqJE9_.dXgc$oo!A5b&516j[=q.tnLYRW<1O9_-M %@BLu^R9L=Zid$]k%3Mm=imNGC!*C;#/H?W13#W0Xh#X`&o+og54BYR1@W;te8BJ)?i_Id.$DIG]DSB*B4R35E"#Ceb^nc.Op;3ahJF:)\p$-A#!$_PId:;Kg)j\X60N1 %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e85927f74f701538cad6ce60b30e2281be7acb60 GIT binary patch literal 5111 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.png new file mode 100644 index 0000000000000000000000000000000000000000..d080b7e9aa93a119aaa7a411b68e7952e8c6e249 GIT binary patch literal 6270 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 I*RYQK7uqsy^Z)<= literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg new file mode 100644 index 0000000000..8ef01dae5b --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b504bad0d124aa2a9bbf92a6684ef7090fcc5e7f GIT binary patch literal 14593 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo-compact.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo-compact.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4f4990533c3c92d4bf4a491360f5b1a9457c3d GIT binary patch literal 9798 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab76e3d7ee815f6a7373325844cf16c18f2d90d GIT binary patch literal 16625 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg new file mode 100644 index 0000000000..15e2166cab --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/open-graph.jpg b/packages/stacks-docs-next/static/legacy/assets/img/open-graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b7f35b4c8bb576cc04f654f809f286922518587 GIT binary patch literal 101740 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 literal 0 HcmV?d00001 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg b/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg new file mode 100644 index 0000000000..0ffe820c47 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/preview-long-transactional.svg b/packages/stacks-docs-next/static/legacy/assets/img/preview-long-transactional.svg new file mode 100644 index 0000000000..848c1db52e --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/preview-long-transactional.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/preview-promotional.svg b/packages/stacks-docs-next/static/legacy/assets/img/preview-promotional.svg new file mode 100644 index 0000000000..69b8c5ebb2 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/preview-promotional.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/preview-short-transactional.svg b/packages/stacks-docs-next/static/legacy/assets/img/preview-short-transactional.svg new file mode 100644 index 0000000000..c64f26728e --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/assets/img/preview-short-transactional.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/team-avatar.png b/packages/stacks-docs-next/static/legacy/assets/img/team-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..55e774a8e069dcd8238d73471ffe0bdf3d21d077 GIT binary patch literal 516926 zcmV(lK=i+fP)-PDpGoaJ;t6u z&k*lahAFW?^?Y@YT&c?3JHp*eKO~6H|L6bv|NsB_Nay>H|NZ}T^nd?F|NEc*_h0?r z|NP&-`S+jb?+^U@XLbMl`TO&Ke{z1>zyGQK_4jl3KRx{Y;vfFsPrjdzzvBG+&zxWV z_j}bp#P=Kh{SH09;_nYg>lfco`tMKtdldCE@87x)>Hda!O8@>1-=FyR2km?Ye)8k} z*?fPZ^!<1KF5x@O&-8r=^DXk(<_q38XgqO#srrKbJbrxr`I67md!A+etJ7bE&q4RM z=8y4v-50SJ4F384*!LZL%b1_d`^)E-+)pKZHqRQv@>_4AKF``#s#RU!s(Q!2Zo*K6xg!c9p;GUa{-TW}V;d zqk|Ld?$&qP>V1rSdajkjM?GI>t^5CaXy?E7?;K6;f+JbrTHj3R;0mP^I>x5rplxH0pzR|#}_VY4>jt?^u)`KA1U+MCqR zNrFpT+#~Nz@$=|d|8!La^}3%5>VN;h@>3}Ab^q6)uU{`~{+ds=)j7{neCog~!nJgN zRv6mlkbiwPKUc|FyX@C3T)*P1%CuGmD}j`A2UP@qY2A-Jb+A6yX&~=6dtASQ$HI@F z@b_Q-Ikivz_t)-n`zr|M*GT(l;Nh$Le>r`8o`U)o8QOowY(EaJ#{YeE=`I)jJc(4t z<^09(_x*kHb(uN;T}u6zzvX}bp72Uh<+CEsU*RP`E8O=e?pxvCRqnZ#-l|S`no@tu z`*!(tl;88?HP09HT~B(eAMaN=e?C9d_t)KzH(zT0u)Dc(J=FYUUXT*LviJR(4?idS z{ZRHU4RwDRALFW@%-Z5SEAXB{+6U;pc6C3`uj6mdHQ`-U1#lZS&+;?Z*L=77hu^nz zo}`U8(!a&)*nLVcou~Sr4W0|k+==FmXsmkIJIyEbb7Ia@Rmzd?<#w^?zAmQ5Vh^>u zCcN2iP0m_!{$v_F*VE`9HKmkaEJODb8k

    RjQXgD=N9lh`CCo>iNG@(Ks{3BlA~* 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

    E;sKzdncHfZkd9;w3kH9Eua|!{wN!mJA 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

    4zFa^H10R>#mGb z#0}iQHMO=u8#ID;&!SVAAj(8%?9JO3QiwNJ9PAPD1L+1V1WMp#`vF5z@D?iM8<8@C zOmGvCFV50Bf~-A4vhrOiYF?Mtulz0#q3kRE`VxI3{XiyAB*1TCIy0+Y1wa@njdx~H zh_h+wEA*17Y1e|0PE^w-6T1k%)KqbUj{+al8E((GcK)%Zb&V){Nm;-$Wyz5|jxohRN14WkOC^VJxi{Lpa#8Ma+l+TW1ew^o-^GviBAOwq za!;_H1t<`pV|$51!WO_aqCQT?6TI1H9Osv!&ICX1eoSB%7tT1|PMHzbSpwt_g90;Hvt^0O2tA`+ra9r(-4$xwflLJN z*b#+iE#y2@OIsA2WH@nw$T5ZB*+Cz(wv&uD&L3~rD@3`^dK~%CFobhX;N_B@P)g{@ zYC-9eu!4^w1eAG7)0%v_I}$R5oW~*xFb0pm9y-&19=|A_3pyB4nWvW2vkWmarBF3b(&g zALyV_&55^Rv5b^_&05WPp58$mggBLUfA`MO5aV9&5@ZIaGV-!-|+(EF{r85!RR0 z%&)I~Aho`^yHjprP~DE>92aL)6wk%cq-Xs&{TK83JD~ENM;n*vYS`vNShZ4s zHK~Gz+^^sRHeOyW5QDzSe3BOey^G3tDNuELDWwsz3Q&j|1Ku3^BL`lzgaBU_^!%Ah z0y&f^%@^d)$o$xvT`p3wwxXNq_BjdQ@-})<0Yzg-BEM#MMAyMXqi6CpyHs&fP*)aU zAhYzA_{upIP#@zW0|XxdXw5Rkf4Flj6@dMFY|fo3<|3lrCM%C3T=cA-GnIQ(%Bnrd zYXqskS461&XX`7+1L%k^*7H$tvHEWN4H9hTzExChJnaM(yH+|Z<2r3)bE6gE(omxf zOU+W{)#6-QZYjx3wEUhe^xF^&A~F@lhMk#%{s%f%d%NQwa$%ZlU;~I`l(IV+sUWJo zuE3oCNYx`%nuO2Onl>jX_h{g!o0l~b>aD+R9yu*d6F3N?2WK1`==tA>kQo0kY4dp< z$Zhy|k#eYrdleLa*H}-tWN>knwJ3&YQZiP-J^n;7bb%B^4$6EPw+@0hM}! z9ya1JjvEgzU=WX~5Mjg`x1<8GVz~j4#K+@xl4wECAqg`y%$GJq8;~1NaO6mwGpun| zz(83D(*ZJl)|0_=_j)k2C&h!%UPy18k8&J1s@ydvGDtyUuMkh_pHme%ya`J(S$LYL zbJENk0F$WkB14~-+BQ`9?nJ=L2_6!1fw1@@G1zY|%ku;#7b9Z{5hAV%W(1QhOFReo zB;M>*^)-$m^56Nob|vcw&|pqi{k6&?L@|jif2s=U#f$zTDFsU&|7KrZ8xt7iB3=4b zqKx7$Y{qj<{>#{xYd*7(T@D;RQnHOxcu5a&OdjyBzwyVW_+R6utG%;5y-zJgrfKTF z%p~+|ymbJ&4j*RExIxTQV9gvE%&^<#)$(q!`8W0vG(>j5B&kg2y76u{2r_~x1yO{! z!Z3abV%yPk9g<(hcL0h+Dl@oKX`$nC0m|teSVurxE||tNzAF;)u}P)3-`pR5lDW#4 zw24<96Gj9RkhfmNi<(Gvhiovuw~S~5VsZ$Uv0D9GsC$T%T((*T^;SjN&-w@7FDP$tE!E% zN^plR*+naVT$jQc#Rh+)0*nZ~nn~_LhS_gT zJV{h0j z^1k>dz#Pq1FM$zg*EDVthsE*>TYY_=M}TYrS;%ESM43kLvw zS1p$YU0RFD95~LUDEWSA79-m^EeFo-3Un7=XrTy{Z3P;{;{sxs3TvBxiX$Z4t7hH` z9Z~d&Vb_;~Kq@>8D5Cn7aLpnV^Zy2)am#Y93{u@#({Tg2>X8|WG2@-wQ{6HKB zJgY7+^{^i&&Z_M*v@`ZqfhO9l38QhuT2x$qP=H<_oE#0m@gip=C1i7qRgI<8IgI6q zLTNx>@VT7f5HZ%=VoERZwM|boi{t~Pd{brC*|0AIhZ*2BQl~fcnJ89o76FDTX}6pz zWh0DGoz}0gYU#4s%xAGw2uJcwOEv%vMm?;H0zN+5Tnky@t6j58&QC`11E7=^UVD@p zQQRM%c%OUI3jeX;ebg5liJBvQ;!FW>KEhehqo_gFI^GtO!y{040r6x3F;U{ZnSH{Q zs@kMtrpi&zbst00;0=m)IFxj?e`icAQ+GwEXuQ1<39Ej>tFzhs)=K7(Y#}c&bdS<~p z1j%GBD_1-=_b5qS33pyuU zLR*OxLc$i>ZPW%y$Oe2mfvWh5g-K;&VsP~9juOEQolR2cD5Q}9*ZM?=0IJNE6AAY5 zYSX4cDzvKV$Y7g`OkDFc{?`{`Zgm@qf5T;JWTyQEDqvlMGjcr=x}GH~6G!?cCIv%p zXkUoO;0m7mmBB(;ClHFJ6pzt`mYU19?Nq4vRgWJZH=Zmzq!>mNQ7U-1c)7Mw^qM9# zypd=LynYm=@g>@3l<<%BDNVsPPufHktT|Yc7D&7!T@D$GlRUSRVVYgB!YETV%_+*Y z*0eR6MrhpnC6@Uu>>nDo2~p`C2`*_{sD1zCdVF>YM-reCo&wlcw8h4cM2%_nv+L$% z!$X*6DWQPkJzm0H)#-gDp5KRZ8gL~p6LxbkEavN&M%d%|OZ93|YKG^n^u#L?viNlk#-!o{p7S^V;-`FN|1x)g$b`{& zC&y{j_*_H?2pSz3M7Jbm#X436rqbt=nriu^p@^y2$>9(U9@lmnAuL0!{L800X2?6_ zX;)1z4dZlxR{RCDgG{~CW~JlXnmrN--*KcZtfNNoT3mUjsqN%o9KANnE6^T? znngi2*ve7FJ#4A>iSU_G=53cZE9%d+d$Onv8#_;8au^^K1rOnXdw%I@m%7=|A0Xi1 z+Sr4(Lhs(qjp94tVfmhV)l-nBf2Wjc2q?Y|WPy@#IhL3?U#wozW#$T6x5N4ro3N6_ znqQXtsgXHEOEcMq+OdS-5V2UHL+UK zpOsHaRSGveNvu3&<+T>XaaU}KScNI4){25?JE)r;Y^>$Hg>$&RN(!1SkJ|slBWKvx zueaaq@}{5sSnxFD{E>=Q6+{fgplPOdNJHSPbFmbA!h8YfhxfKmQ#W67gz`}s7MC^xY7O9ROSry9iz!VXFhaC)F5#3?0rN{+s=HYk1wPt2sqHGAMD-W#}facN#RK>G?R`6I*yR#2!su>@5J?eB0( z+McN`-km2wyD7H#M*7pK6Ko|+pQ-dLlbou_(xKE7Y$}kSQ#5beMENFpqoqbnLC+}p zu%auAa(_n$`2WmZ(;YvLZOO-qhV_c@W~q;Cg&=^yEKsxXX zx(y%^GfKP1-SW6df@i@P<6f>0;Z1@dc#)LrY9tE~V?O;krOTR~ z=ME_cEhprJp-NE+zC>#!K$0MjZ-$U)0tPV)7W=#hl3}B^Wp>g4VNO$Kzr_4f>z3Eq zuK-Z9zN3Qs_b~w{dfCy?6DK7M|S&E2k7J*F|Bd&T@MM*Bt#RO7v z9e%2WwNati98<|$0~G0TtsxNUcuEdizw4}pr{8z~6Je!J&kGcZAle)SGx@CaMRizO z^N$Z69cvbmcP5cviM4A!3rhx-SVBC*VGZFqu#%3%qR~{&k>pYtx?!1WWjvFAVsq`2 zU{gJcM!v*k!}%#5ov;FV_!VRETTUZ+WU%=;0j3e{PAw~V3EES$uGFpESk8P{F1r)< z;mP*Wx5`)a=`_H9=03j{D;FRbY`OGF{(yvZ5LH%f=360isX5FL4bi$Y_uzqsn0uaG z3J-Pzq-^RfX)!Z358g%tdSJjBztd=aCH(qz?5>O4g))RnW)VxAA@oHkYbSC7t@4lF zc~jbHG#+-RgkTj$Bt@X-{5dwQ*?I8PzSO}Gg19?lhFwG;iL20SphgqhGUrE! zC?;_MFHfV^MYE!Vp3F>w=ViUMCpNfa|1w{r;QDs3v!n)K}eQHx>?v*59(PB#zOjm#hVa z0KAY0Sph{T?VfmzM(bpHj_&HiskhBj^RG*Z7BCFAiElaKkWtyEW+aWV^&3$5YMfR` zSQ6sUcTD+bNoxMm#&K(Gc@k=QD3bJv5>~JDu&hLB>y@xMZKih^6O%fRR4VslgVIfDjhk%od24EA(1eAJfaR+_kvDtL3FUzILWu9-^z#i_EGHo@fzgr1fH8ApzuNM=>>i zVPx5%YMGf2N@l}}O^h2efq@i;cOX^X-ItN2n;?CB&;IN!nZ#uoHNC#&MUr4~=M}I5 zDkO7EE;M&eZwB-ydLW^k9idg_dbU#p-sO~4{vVlC2M3VvWF|QlkeOq~oY#EP#DJ6t z3G4u-KG+GPMLX&?meg~t(KxKh|2!{9<&KWDU0JQ|(#>MwD1pu0OF^P0T?v47Q~_82 zA~v6Tg2bt+07f$jo9yexvU*4&wy<*cS1yxoXcGnz=nzNA=Xs&XUNl zLf%R)s|2DB!9de7;DY1qAvAv^P4_U^>vJg$$C#fCu+O+?@!**vC3II8nSUI2si(f0 zl;f)COvpK`lQ`}kN~@C=4j$PQw`LZKaznucJBakb@*{My_wud>isX2*n3T0(D&S)- zY>9Ake~}T(Fya|J|B;2JViRcn)Pw_?+GNBN`D)fBavMpMeOB@BaQ37&YQl8n-GRzBe zQ81Ef?E>2Iuc}YBg+3vQ(^XKsZ4#nB4AufcHHPTe?>|%5-vX$c1E3*8F&WQ06$eT? zV#yyVc`EaWM`147KhFldVEVTnVqqK6+Mwh;aEuw>MywaXkkc#~NrUH&g6v79nvxud z)>NTgQ?|MDpMfOOnOM3Cu_KjBX0Gv;jl$)LSY{P8DDX?ilB>J$0iSyF<76Z!MTp?% zsx%<5Jk<13K2c-(jS8*;ch}#*9c#0C%$xHfO}N5?0Zi0x0>U{4o5zkJ(>YxZW<&d= zte|Z`>4nxh1ViUbjXqefqmQQ9>Q=tJX3LWV7G9JnTaVh*RojYq z(NDQJ?BXd@CQ;HM=A~%c{+?ATfoi{~_%IR0V$UH$(@$APYG1?Pn~15OeB=iknl$7F zbF4q8GHUMOfHec}9B{HVstHsDjrfIc56^xctmf>Ijg{NPx=@}AW;3`XV2)iW| z4lBN(a)s--Av5F*%vM8#(nY0*Awr1DeVtIEQs$Josj?n@fI_JJ-d8b*V28)!-}wl9 zgERd=O_!`=J^^UZ0V%|%c*PoOr>3hwJtnv|6U_6|)ttOww4v@2@IPzWG{NrX^v+=_ z1?Oq3>|!0TUH?pvl{xW^K7;!nL&apC+nK8hhNc-a^ATSq`uchtio~(4nARA>k1lCr z5EZ5Uw|P5;Z!%95Ny9;SsP}%)bW{j2`lkf zX&u`xBpI)6FVrHIF*6AA%sz+~DunQCKYY}f_wX0h&=<0Md%d5JE@q2vkjG>M)Gg60 zpivCu=h*e@iG~lU)?D?HDJA1@Wu{{4MB`|e=O$tuXEd@_lsi;=|78O|rl9iOlV@(r z`aW}Q)9wj2*yOG`ux*z7po_TmDJpULEFkqPLX-p2i8h40(MZ5iAA0o728mSNX<$SN z{iG-Bai{?>i5R%O(KsgKS+Jq`4rNXa%litAn{Bt1%WYvF8?Vxx$=BGvNr3s2_W7>||At>D>VhuBIAP%hW(g z9X+0xP3{{D+|*=sBbkG5Zq!T@i|qv;b}oz)M(i?JSkn8WB9}T-p}N-;W3`s2e~B{^ z^7?UaS|LPm?ZGl4UdeZuOC_`f`)#g7P~FD$Sm0n~bXJ4fpTv**@OOvRbWMmBeN2?g zIxNU?EWLkWtWk7B!A+veguQkyx}#7~dX?lj28f%e+UDYyK<_)(@v`(Z{947Dr(4T* zQLJfa1S8eY=ra zPWrh?@{YD7C)0(ZXo*MC`x^g!!8TolvJQKt-z zJ%1^|2166B=Da;F*9AqS_NrkSFWT`{qD)Rj$pZGWNO_?8!;nJis?2N7O+TwzG+Qp%6mS`bJh4K%zR!`uvz;4m;l` zv_?8d65vW3-PSa+GL#CblIox}nR0arqgC3xs-P7ow&C1(OBfR&GP3KO&4U?v<0zg4 zHo~e_2vjMzS&wNr3UDC0Dkr%pU}`K75;W3SFC^2t-yAhj-egiz%Jn9T4`I%UcD>l4p>vXbJRV>j8@rX-ZajgG$Pp;oPYWa2>##uI^V zgIry)x;ZuD7h%!bV9rHmIH>-`D65C&KeCA}f$RO@mkU}HN;hU5F|r4@ z@-NwtusN2%sTZi9tz1$UMC7Y|(b4+`lq4BbIdq6hM|HUz_pQ>BzbhRZ9 zEecKg9>dc$(%Zd~BB4OU%-m{2vR~a39(!__kaSE(AoU~ZT+dMD`LVUJN@F@eQV;mY zjO8)d!WN3*BWMF*jMU0xHc0cXiaUH!w7YQ2{nD*wQV7V3n(eZfX@qC8kDM94u9Y@vz<&fTW9;*UH5D*dakcxP5SqK$UY+6T<+;+&d+j%jJ6WkIna(BUJV9n$`9G40^ z&<#WcP5mhFw1+jT8+j*Bo%8?L>U$DJE|97595ntPP2ZqkNtA3`wr$%sx@_C(vTfV! zvTfV8ZQC|p&7FCFaB@eU9T_VY7N$UO$BP`$t945gz=t2s^FjA5l?5i=YRbzLMfxK;J-qx#3YzXMCTQR})!vf~WiZV`B(C}^Oy_KbrVv3owJCH_ zW>p*KpK4J|+(V-KES@|H2dS{Bl{{NK31ptvJ*{FiUtH3mwUM=9(mD~TR zHMpPyt6G?=UrNM)$UR6WYGB6+4aC)~ZYx^Kk1x4h#-oL$Z#%m5K8Ob!h9RqIgjGv& z$|{n1JFEQfv`V(@9mtqoLl%6kPjL=I$^8Y|LxLy8;Sh3;wwSuat<-FVH^_5)N$1&P zimuV)1ctoXDQlLDzpRm<19r=Tf1zKMq>5qO0zIU5{X?WiT{dxwpu^A{S2DKDa9I^g zT&XQaYD%jgM>#3mASLKKnGOWRb*WihE{T0j)Zm z1D|J_s-;Iau$Y}f*=?s9Y5NaX! z%qV~{9l5>UyKNP+neV;VRVcW&fOP1D{0m@=B@rbha}}Y1N=5JqHGs}0lrxf0{%HMZ zkX=XCEBt6Cpsh}#J^AF>9Xoe02~iLkzIIyhlqN#?}PLZ}Qf<;uJ?!3pJ_M5?6_5tJYV^BA;Jn2?(wZ33jaGD9r9~rARHR!*#f*< zVj>-(P#vpRL1g!}V`z{sC}>&Y+~kc&xE7(4as8Px`_pVJ z@emQD;W;fmE+`iv81KJ%2JSF!@=_l)_sux&>h^7}Ea-5VYI(jYuA=GEVb69Yl@S9> z`{|N{RyA?!rITR_)*i0MP&2%C%6v*wRtc;i{wQ$5e+Z}&7TR1k*Q>7Pc$#U@v4&>_ zT5`{d*AV=&POnM1ZWELjbp~bqGJHsRYapsQ&r zkE>yeP(@O4O%gIcMra)5j0#-7E1#X#y?GSD<)_~zEEIom2-l^`3lb%v2hHWKwwt$M^`AFmJ@`o(i40iciZ( zeRv*hiK6+N7bv6~^mpI5?Gs|Y=qoh(XOzz^L01zH(>~Sx&m_?nbjXtQ3B-vLp)R(e zQ0T5qvMo1CS|xpr4`B@ZI9h+zx9V8|C_G#yxp@;pAa)%$&_sL*JdNJte7q{CLlTFQ zVAhZWDC5B<1-bwEgJJnyvD4od`AqDMn@np~;|+MIdL@J~d3RGa!K?Oy;dCl6bI3CG zeg!(Yye9Mx?T=It=~z_<&jERa%J;xAqrmA}ELT^OWR;~;;N!h0akbVY3Xk?d)e5*s zBGl!Zfb!49b|~f z03eJJ%t9GaT3tg*G0HNSecOXi2fa8Os0+Fja=19_=jlGWB+9X~oRYx?G3}+m_aO!& zjPsHr07KfBTQ|H>{)jeWvu3;^0>L#%RfGld^~J4NBZJIRCflG$h`ksJNkXmgr>_Ef zDxe)%{6QB7Q(Qd}|NzvvDME>hPEjwq0Y=sv^8)dqx=I|5u!a8#c{(aphW2oYq;( z#nRrk4O1|ymJ|ea9*ok9;60QyNi3H{Rb7T|s~IX`reUV8L|uk!uFAu1DuJH9OU+44 z4lf`6A#!)my;g{+KpPu3cu_Piz=?AQKppO*+{C;nUk}wJGCzsHxIdi>lDbW#=_S^3 z{`HIl=%Pxy90*R7U2{fuf)oB5P5e&nJd2y3AIA17gMKnZ@x&hX0fSJ~MFpqDi{CC< zx+8{D48S@ESe*m>f5-1!b3*KAe$*@i!wM27V9Rbx#oYM0BdtTeX;?a57Y8Q1at0O= zv9oC_g5^Bjq>BGK%teS>nU3nzA@)ksdA@4Iv_julGMW2*lV82mZ-T-qNC*a5J3_zjX?AkjG788uND zoHHP{e2R%<1X8CMs9v_J^Zo(DH9&k4E9 zW$XjzficWQCk~RnJcAo%bK>F+4^CahhQKPJ^0RWNT^&cQ;v~ag{{qZCs95xz^#yLY z&_FszcD=P8d3JjUOLN;hGV-itKiZrh$ZQahI))w>0mOaNopeY+?k~B&u5oDfCfI2o zr4|vO?s40EsDjG&bXe+jv~&tGd*hD*hQ>Mlo6LI(;}W*~zWBMyX!ISYSfhmVLui)XN22A&op z5Y}3b>Gta_&D$CCQ2xIQzJeJb3Pk3-pcT7A!o62QuXy+dM%88( zmn5%+?-;6Al!T=1X+A^6(wiOd1*0<^h#wc4Cd*S|H$MoMGz?|G zg;j{KAPw++f@G|HHMFd4_ANSr?=*7x(rFxmfk&XX6)IW~ z{SF|hDp)nPR5d`86!46`@Cl?iXfq-#adR|kRwj}~85^G1?(^bvIVux`ge>YcpFRdW+U6Los~*I$lx_xMM?-|y;|8<--&VC1JF+L98=!4?2IaM$0t zj%Y)kl+X;2MHpBSPJ%&-i4pQRPTmZ=i>0vph9`O#qA158TmWuoPRuJ%SVI^k$CINm zKq)Z2ag@M{UXI_Pwg}F^PC7u)W<(@E-+fzq{Z~B3)wS}EpUbBTk9^sn->b)PmY@9m zH&ndhB5aR+zI8fuaBq&Y$a=$LEv|*zDCC1fb95j_Ht6A1#T%SFK{(1N=n%b?RNwMD zL{0*OC2nwTDrIYwr}|&!9cQW){0}lmDDj9Hpv}@c#pj}X2wd;(K*ZHk&7L@TFUVLW zs=a+EE@${LQmrC5TK$Ch%u{=>l_9wVe*uSl)(%L=-mLY>@p6(GLUA6PJQLgDr7;3n zi;H=y{ZXgs=B%mZYmRjD0RcD}&meaECtGMy5W`*fgO~^xbfKEH|bMjq+ z*5P8$v!`c>T~vijwcF?C9uc#_9|M&>3;?{)vi{#|Kw>>}b(qdtmrIiFZlUNjOnTQb zS3hLI=JMl|an@x7c#}|jjVSyL2wB0?Q;2?)_=I) z^~aDnP7i96kB}6Nzs}3hHrBM>^xnHUZ7I!i-UW6U zZqtEbG8EdGuy(&k+=5=;hicnqjgq5I%*6%1?CD`ENZ(=Xy}&xW5oV@8gI{-cy_Sq< z2Si5D)ou3Iu%xx%Hy;NeuqjTRSFzAW&kDw)9$}9fC@%&5JHCAX%hfidB@2bVJ3l}YL9>H-0W~KYkt=!vfbPSfBtg*E`<|4EAV46Y;vF8xtFrY%M9@g)- z3PVMP=k_m=>bIY^pFUitQ)N$g{{=C%y|CtdYA!;%hX7Ng_lGEA2d`9wQt#lHDYJzh z21t|UA+hTZg){Ns9oAV|&%<&MFh!@_%bSa!dsoG8!?tiw{p`mc_EbP4pj~p&I$Avn z-I((dE8iZg9l9F#%ndZMv%?b(U{t0a*3x=7>PBdV`6o7|!%iMUw*xV40jBrkGki|v zGl;05hwxeGfHBUUwY$^)Ct{w57I!3ud%Lx)fjz z^(lLZSyVY%gmo1jwd5VxHb25N(DT*9;Q;By)NZ4H1zX}UM^0Hv7o-&UgqZ;QS1-z4 zfL4JZ*7|EYYK0KvF3jyAQ%3Ug@I77RpOx%l*|}bC;aH71Y#={s*}Iq5%E{f8#dnb# z)puNQHq`rpE392#;@wWXO$^cgPX7oO;J*yXpR{rSn^`kYLw?`d9Q=EpJo!~EunkXJeAwMlAdeqV zN1vUXS?E{Y0~k894MrH3RXS?DMsTB|65Dv;Fh5FKsS6*p3tccCkDSvNe`wFZ1Pi{Eszu z5mI(?7^y42$R*K|PO7Eb<5%Kec@9+EU9xaS`F<o-38UU@%X#BL|(&7@KoWuDNN$y=ib`L z4<@F~{QrA~OTTM9=9Kw%I&nGk&yFWe;!2dpb+bT94lCbr9KOVTyJR0*&#{Qeoit{} z?9h%2hM)OxHQg#(rN<<&xaK5@){c>}&-)!!z@QhN8yhO23qnSNX(){N$R)jS?A$FIv72 zZ`~bRHS4oPir<`|EL$tfSSe}TSat4d33>Z2nKwzf!!W-cYL44+Tc&62gjTO-yyihq z(5EO_qs&m3L8+}Q#?9J;1LL!n2M#^=Yn;9k!wMOOZc@!5kfWeX`rG z6chl5`R?uZhQqrnlv2>8_qBPQOyK-r-dxA8o=1>t39$SrpzBi=7Wb*mX$1@+Z-1JK z28KTw1s}L0L|40fD*NLxKY48YOa5FVp>H?Lq5TaWUAYg6Q>zIIvKPZr`@V ziJN$b`9dH@^Zy%34$$`-9GS;D91F8)_AI}PzW+i_&L{Eyy?pMiR4Q2szT^A2+N66k zIC0I461gpD9IlQ)WZlUb>g%`X_16mz|HDqRB&MAGHfChcN+~RM-Ov)@LGb%lncglp%WYW6&P)#gpCvd} z^WdUA-Zv9F7tE;JkB5V&cq7y1e5=@LW7*0Rq!W>NmMq@R!I-wiO^yErG?~QB=N=~6 zi{OweYu(`o)xJ?4rw}0hIK{(oyLi0&$%1>!*MFBEInBD}^3i`cU3WBih*G3(a%T$5 zb|q4<>3xj5eMI3P02XjP{gY=rOAeGFb~!n?e>8mHdIvsCUsubHxz&G?N-EZrLwlHg z_--G27f%rG=roKUp!!bJb0Q1LO{j#@%X>^w2&@bv-T$JG&j{U3keg_i)b&B?5NBsq z8x^>#3+Y%(YwIdDr@+r7(nQs&zh>^D3c$iSZ*7u}%H1#S*yqtFz>K)KE0mmH0eg|n z`fAKEObMfk_lTdnd*tQ-j*BU7G~j#KSJ!==4~1gclLP)&B;k7v8VwaWlM6v$2k@1` zeC;~rzbPGZ)8KoTWQIcTXO()xIztjgUSoZ`HA4UwFp;9%{BZbLioQ#S>YYch$Iaje z$9wiB;N`I=-VKd&%LQxb5q!ytm4l|SNPK(*cLTKB9)`DZjoRD}73f|+(^l&0+CCE2 zF;IrliS)+Dx{;+To{Etsci}J`um8;X&r4fzn2vgZyaSw`UvxOhz9vF1t$@${ysu_< ziBWo)^jMUC+K9dbVgnCc*E;qz_CUlNk$$JeLI3aWn=|+g$^RDfUI4G0z7~HyhPZ8u z)wY+!Bp)>%KTfB0d*JkwocTbz@w(j5iN0?bm?Mm^H0BUP$wQlP02Wa2tz|{%%C1{2>I6SO}$h@ z=x(EGJ)cO|^_Shc?LUvaFt9(zaxRk0$PR#xn0>SB_KMV~K{()TXXD@=@alr=8Toe2 zH~NrD?Y8!`Zl%nCe%&YqY;T~s8PM~6VGWiIc9w(RuFvqdJy!erm$V$B3jK^XBCn8= zHIsv%EZm?%@!W2&)KrZv?CE4O;&_62wFB3@^0fK@?mo``R2ts=5ANN@b}2^Stux+* zBb4po1G2aBJ#NU}^U}v`!B`ga6gKmQ6~Z(mbOyv`?AfQ)jmQQeCWZ3!3ZuWP7_FI($@+ zxM`u$eVfX?JxPoKkYiu{>Se2^1~)TkG;@+Ma_Y2M^uJ-RbZEf{=cZ553f^5eBYPLb zts3v<=J94`tu7SUvu?^sc+XSx;tmF<=X(t7mZAS-q2+|s#RHS9D=EfBL6Q(oDKFs; z5Bu$qn*$ad{n4F178{}HMOw%a!YicN+Kk8q%lhy4Z*WNc1PsO2ki4#YuRo4*$w=1k6(7dT^%g$EnS6P)W zx?5Z(=uDgGRr~@TUkW};E~l^2RZoVGtyhqJanu^W##isuX(E?P{rW>E-T~9-|lT z4zy97HpPsw><00A1Ar9Z`fB=Yy5P9&BjwJUUMk^Yrr_~98?wKjA`eIC0_*-kt!@B^ zF4%kh`E&zb`d{xpTXK059#Z;^8De&e-JdY6(;3N~Rhxz9+5CRhiE+U_my^}h!BDlm(CJ<~F7|Qk*0T$`q}tcM%_?7#s=F};TMb#w z)|Rz#OF*}4D-{lNod?hUq)Unnc)-V7EUSI&!o+jA6sjy4A~o#d5!B`nZG`Csv#Y@H zgZFj|Y38|{ig z1!(;*FIxK)j6Wxgc*fRlczd(Yb2adz!sZ75A+2U=2_j1uXjgNFA(e!B@&#yT_f@sn zzzh}q(!D4yjYqbmB6pNvoR}=uZZ5o5QD?Utlv z*a^8{o=OzrD!}`)zNYOPCXuI0i4Z5=09d&bOd`m;s3r2X?a7FZcv>c!iAec{5gCrH zp#t=Ka4LcWMJwg{869=P#R$)WJ8PU*C?X>bp+-BzZQG(LR!mvo3+Z=(6%4-mLQ(v4 zib2yUXpM!^SQ1rd5AXQP3;bsg%kAc|s2SXVOW1~9-&uL&61iJdH0KHf&ojNAsriA^ z!`Cb$;07P4loc=&tNPy~@x;aJ3ovl6!p}03&i;Ky zn1j-zlHO^kV>~FDAxF+2=a+qYh77~EBgsya#Y3Ww!M%@e_O;P*bf3Br%E#~KvQxBn zgabD*P4nK#Z2H8zsne?q_MUT9uG{HkD#mYnV7+dnzN^$-?Lkt{60FGp!@&_u zN^+mhG`XtD4^33}#xoPCZ0Wh;ODi8bcD$NrrGT{7G2X*6k*Mqx1n=Bi`+XWhf9}hL~J7F2;rOK^Ph&6fiphk`8XFU z@)Ij!cTWvZB4>p$a%2(#Iba6Hqj#lD(YV9B?1HVlP>1WaQZr%?W=D|p8DJQJtMAc2 z?0Ib>0DtQAzp&7g+wbQvxJ`ztQ8RKr9PjTE(Wgf!4&nnvcEn7Fu^y7@eVNQFJL0js z&f7mj21G2N%3FCyKfw5T(qa_J4SBfR?_&n|`Wh1h;OqSWznZ+@i(dRUJxJp2VO%eM z{;wDM(7f&-r|jyNWzaKx3KIg7=C67z1n?#yH9TQ_80&sL?YXXiEAf|OYhe_6&0Z1} zyES52v$O}6I0``GC2qk5=7~yek9EPJ%_LZYt7MwaZGY){)*8$ykVb{~JT%3ch0x*D z1eA2!_;ACrr2g}(%XJ5Yn)BMV=i03^bNBC^dNZnVbYX}9LdY14w-Q}j5>l_Pi|ddC zT(x^w5*cjiBs5#RLMZ3DUoX@lD6jFt(K$>dL(C`6g!dL%#&hfFs&D$~#*T)ac6 zc)|CxNW%y5dM?yZij+i@RmEV=Z&rHmqyGUAH*~?UH*PnLUBdu(aVAE_BmL_Ki!QO< z51tTJ3paw{_s!hoU=N4mv4gd@=#x&fc%3)p;Nr@zY*98oNuk5NEP%gj$$9U8gS z*UFf9ZN#~&KCl6oPz_%nroo#Q4GH*6P?4pU2MRF^xK|plrf~D(TQ%~I<125ekZ$Qt z@W4TNRNU+U_^entwy&c*HiNF-<%}18Wt;Q1un~IYYoLx_zF6)APnLwvU{ugOk{=k1 z-j?+@{3Zp=)j!kE!dLi6d%pw!aaM<8?r?@-(jKDpv`Y<3!-A~;sys84`R-E<-ZXaW zBYykOyUKr}`}_s+s(=h&LeI?Ri*bPijE?L>RpLgf82nu2DV^NGvjQrMp_&vvikqLvI-WM+TLoo-6A|z;s z(y1aL(0=;B({Xu_5Bq}zSn6jVC{SjTia0rLwc-HhzEn0F0516vaJYN;D6y43$;%Fk zAL&u8B*+Of8sf*esKB3NCxaYPllB9V{mJri9%_H8R>E%uac`Chyvn`#w5nqYe?JyW zZ6mVZC(zcMG=>9pQ4sX!%~Jgg@w;@M`junIs!z3oD%Ep$fwf=uvVs@tSKiF&f~)TR z@_pYR`@LGls#3Ygj4 zs4%v6Q4fQMT?iFvU&lZV4hHl3Sh1oK-_igRX|g~_?S4kTuN1fxk!d?E`R z9pLx{2e#A2F2Rz_07guDW=B7?>bhC8Kd=si(Ob{{tlINjPRB2R+$gUm0-VrsqXuF# zBYX@rDpaaneRrM>OioM7sqMiRw;?)ONwVEQIQWJ_=StX)1o8I_;P<)MLIj67$SqGU zr{?)VrjV@b)&oie1={jxvsk)9zR`@>|9xvpuDx!GmV4Ne>Y5GRIAkhJ!BH@BupM#T zRnXLmB~Oo?!Q8E=kDvkDuY6u};O|x`o$W$_*7ulRgd3~AG>QT| zLHZ~RV#^kYs`K;-6+!nNQO|#6>Y3<}Gd@Y1CKMqP_$dr82JA?9BOnp|%WRvJ?AHpu zxar`D(WM39b4ziQ1Rv;3PMFS(Jk7hj=7JcuDx@_ddCm~2aVsX2nsEbo-MLvmcGkn! zNMPngYM3%@(MCKfj9xAuZ<4J0LwF=GtGjHI2M`!TSGq>Ld=+wM%l7Bti(HUpeYH9< z9;kkqj^kQTzw4hbX6>EtqZ;35$cvx5m!8+eo1TyBl^)gPOZcCcy^I=uudgTgpRXY` zy`RI3nj7Zl0x*F2nkSQIu&4y}8R0bTQedv8W3+%a4#?Q%rk2ddVEG!Rx_5PWugUDp zI2Cj@nrXRy=f(+$etG9Ys_A0XU9P`UJ6El11lqlsJh_;SY3Ro zocu1;7s3G63}TPnp7S7uyeP2BOtJQ)I;}eGEgq$BI6>hDbPJC@gg}%u(N=1d!kkc@ zgUDla8BH6T^7~Oakf(OAL}Y!mIzP zFu}~SfG)Q-+b@>eoMiwmB9eY&{T-SP4DRI%D`qO?;l12XSEag6kUN%ntTeM>`;#tI zTV**qGgHz*xWt$0F^J7m<*9+oXymF5HR07w^K*)FH(lAH4fNz}<4y^huY^~EulRR> zfx;XU;EzQywbug^B>ZMS`a9sJ;%P#NO9pQKg9QH^FWdUOZ1{ed_INqH_&#rqu>I_O zZtYZ=E(2G3-wg?V>iK>RvHw=AqGlg<-m=>hfWIDU_V7IbsHjs)xzB4Jo0r0AIO8u2 z87z5baUI@HEVx%)|460o&doD2Km%_5b~0;!M^#E#z&USAY4>oMai5Jj%fE}iN>OG> zfGuDFPxbR&fs$bfsVfExYu!GxZC_S$aL7^|Q$nwuop2!OWc*9j&t;$`OFMN5xj3wI zQ>JgzM`ui0m)b?!PVFTc$tSVq$=sDBONzxW`;clI*GmFZj0$dq^n@IzEy4QTos4`z z%VnB@RBL7aWTJWdi5w`N+qno9Em~!U0TBIeh;LIX^ezZwLMQ^K0nZ>0bU57rHtG^Z zuAMBQ!GHlI{->Ze2@8LT^I!5Ygvi({@M#fvXjGI3=0Xn9k!KAaZj2RM*JPD&DW}EE z6l28P7D|%Ane`36Qgsw(mpWJ`R;*!IB3qsiwB+(xVT=ZR3~2iKp()v0xOo9;d>D8t zmV3!ESC1#l#{vzdVZ+q;!@tjx1YDwhkOBTv9?$`H<7JA?O8Dl#3zIm)IUcVV#&~=c#pl-~dzKTU<_d_PDS6vqC zbUG`4G;eB#oEutHJ0GWAfDbOOIl zpTTPd^Q&bpDY}(*C4crmSGFnDq?&;SmeGoy z?f7U8rf?JY4vDfY^F3AoNoY*27ztH1D+82^UqpYSyCQSg5#TcbB@Tel#>}m0madjz z6aP74-pt!15=Ip*{JRI7b!KFH&XOz1N2D%v0tzAOlO9B9Kr7`!mTiqK3#z_~1EmIt zER8ciTmPcXhMgO<>wqmJ!sMCgdiZ4s!O^uThQ7`w)8e-z%doR8ZzSj*BT&tUmti7m z$U}o#SXN>emGEcc2Bc5(ZLhDf3QWDX<*E0jW)65jB4q%%1gIiVqoH0-=u8m}HT(SaMN0;%7*-tS#`s)J} zrs3&et~n83!m2Q)FuD2dsqQBI9gj=-TYvfhEm_bZty3!t%_bR|{Y=M3!jSioDtY~D zm+*Jt74?f**iXI<*z6<8?#wwmh{(7#o`70JMOwfG{4K~}?Z%pN`0{b#z#n;{&_f<$ zcOX{`65N?@`K0YQKbuGPHKuZkXo)jWbP&r6l+kj*lSh#3(#`T_}CWVMMs!EnCO z#mz#^h%EvKkIn24T2l1&15AdyO#08O!9V%-5{9Mis|N}<-FJYbGuoo8njycp=;Xm7 zIB91oGYp${WDaSbDNH9defIk$n6OURiPQ$)tRD|6hBcvX?Q@b{GmO^8B4 zkmV|e|7?qUV*Vv%+x{GW#Qyv=*!Fx?{5-a->i~AYf;{$o@0a}EdKdIN-S1$wHfxA^ zx}6JS;>(dqIL`%*L$XG0toLZ6n$!t9XcR(sBDHg?L{Lmnn zlMEYVwYH?ullJXmd|WU0v}-&VN65Y7|%hS06AZYxOQxE?iHJv!s!dEexB-?{bQKi+S3v| zU4y|~(LYag>^{452;{MqRZWT))me$YW^^9EB%EGn#j>54^M}O5XrJRY!f!jJHFqj~ zq?Ii8j5S%GRu=!Pg%a1cnon%R!(AnsUzQO$I{zci>P(>`oSdMsX{{ir_3}EVcP0v* zhxTsNSLSxmW|7ou7>0Iaa_8S?~%Iw%RzhpasIm6`T5H6+JX7b`B{7UdCl0N*nit6 z*YiQS^!Zu}&GC8ItElOIy(h2hQQsw_?8jHRF-n68@XE}bt~rCS#wuj%%oI4k)`TNJm-x~45#xtXPoBRdErxvQD zBjnqtm#IQv=e(D$lxKJyxv%%jx;M2b)S{zm>9wcN_2+Z3 zqN|*KhFp?Q*2zy|LJzXc2m$%ery4~a#W?Ira%4j8)C5WJ%KVKH7!Kk-aMkMnS(AKE z)PNVA$nmG&{p`nfe?4#L{eZr4GqMbz>-jza@BfU6A^oW7eLiA$diyi(Es_QDzREw7 z25Cf5-YMS zGl4duk#S+3X5xZvE6XpsS{a6v*XX1eX>C)>FKj(m)q)dTdPC6|7NzB z9qZ1xbQ7a`e<}tqQ(B>#M7tn@O9LA{?}4jOKvoMbpBg}?$2cHq zI<*JMh6L~OBM?C&wz3@3B94>R`XxANut;eSLoJb&EUN9}ucxwf+*Z5A8OS)?4lU0) za#^%9spC@2&*geW>$hQ1Ki5)mK&j`zN^HIccFST2Ov%5NcUH9LMvBgw$}d%ARd4)? z8K*0LdJV8~OgzvccJOoZ>G`uj7^D7yJlW$(j~s896(y+XR*3q2zYDO3%o+k^6B~Tx znE+~B<32vihpMU+T3XKn)j4N!K?rT)5&V|VckF3n=j%75<9vpX@fF|tTkmtp_cInz z5WvmzV@%HXeTaSM^YEgEPs7n?35d%2Hd5Pq!t_Sgyz4}Gu4qcFsY8`<_qX8zd`b-K2t$>vPZ9y)|EyvOvgAV50r|?hl36ihz4c7?`K9;#tpM$S1Gw8b51e{&4S0` zWkh8t3Ji~hQ;FN4C=FhBN|3vBA{;~G~uYo&c#whIwK$?%H? zx&^K-cAvz_mpiesLK=${6_SO;TeFmn_D9|2`OjGCIJvU5eH#XdNV$#&Akk3}N-b-= zpi!2a#QQWdfx%Ns_)1Mp15}aa-YE#@e4f!IN}p1;&iJE;V5>&wfK(}_*%D*gNW^O( z!)?T4+gd^{q$~Eh z%3!qPKbyeg@oiPQBD4cjJ=E1m<&5yI`IUghCIT=e)7^6-A%wbxlv(Co!L{$k4C0oj zDbNmGiUpwoC@+UGL=^B;B``puTN(v;^-t>V7&`i@)cO?C9Gxgo2`jtIGcJN2P1vRT z%mj4E))(4M?WB`34F#!p5C18v&*uA*-p^9WZdEMoH~;%H`hSLTiF1a#0ks^>j~t#? z{@(~cw?t8^xq<=H2*cxLFyr%6qudhC#^J9x7djsPczbcM&XtMN9q$b;Ufo=)9s!{< zwn*Z2GU8Y^{Q>5=3x!f#oa1N{^h9qdOVl*Su`s}Y_6;xx&diEr5=o6f#@daQ{%Gix zqzJf*ty&bYO&{20pXUGviM^ZRlsVc1(bI1E#@LZ~P4|igJEMr2Aa#VUE_PbNc`$@6 zVfN2DFvhiTo~Oac?*ZWbIPvY4vJNkVb$*)x<%(u?3w`yai0EilANi2T9e@_+v>SuP z85MKxi-dxXF*XcF6>EHl8dhNH5Z7tuP0GyDPHS;Y)731(?%E&;D(i8_L$Yw*wexj> zWVI=Ka;-U^v+yYW2jZZO3b`S1=E)FQl6vx5=DK)LTZvT8iBV|#4Wi)VNeM9Y1EtA@ z1X$sxGNZQ@ZE|ntB8QHQ;cYtR=)4CKz=gx_Mys$KfTew) zCXK`YXS!&4(bDs=_49z<;}PfneF{GNb4C9>ASNm28Rb>@==Crb|4_hvqNeBd1smex zD-o!FmS=4=OLx4Km~Z?d%<9>m!W!jMXc8x$W%z}*x0em@eTvoVMPFfrDf7$_$$zCA zX&bt1GIT!OOHf|LT*QRZZ0&qAekF6Zd#}je?gD|Dj6#p+oZLuegxFn%2qY6A_@bRr zy&v+Lmo1vavwi*P@{p6=K?3(u?jFnu%7)lEiT9A?=%N|vj~)S@sfTO81rF6!EvwU! z@z*px*r-6vH7lyTF`^29{&)xjl~Mre7UFc9hc`)K1kYN&9}D6NWWiK!OFRft?to#X z6QU`_qF>$%p?swH+00St1iT2M^y%no+xXP{MZIEuXQ&4ot4@QDN-yubW@qHpe{$0{f6`mU5o{j4@%gA?T^|o z3sK!Z006W70sXoT?EG_}KYwc5DAU9e>O7;^YtbrtkSX z2R*Ljx6Oj=pOOrSD_bbHNS0w2g4P^5dFb8<=`N0}>7*_p(XIu+@A6M(x*hA9q}szz zIk->0AkOi_qxhGd-=iq?FC2rmKl>ASzNP|<+p>K|LX}d`u6xz=x-uO{C8M2Eh&Rgu z+46~2t)aJ_@SWTYMkF%n*9_~0te-hqioy(UWy;qBKmq0hkCNQXO|%nYsEZO)+*_1t zFnRyaz+ZM}=uY5-qkyK^lI73*Rh0R-aexFo7)D)^DJFRfamcc2%!2oulLA5+sJ!-D zC^r4DvornbBcXC{S>qDTV)Zu!v~D>l51%`D#S_w!0&;c}3y~>}+yS2FPf3uuC9G=? zk#0F4dw7o73I$e`oox&vFctRDgzelxp0KJiuGhbyl*_Mt2xo$-+V>iOJ6Ln5dQVQ{U2|5b6q&1w zp6X-~d%M^2!VexMS(Cc`+k|-^3S{c?C}3A-FU=(-%Wpu@BbXfcRj_A z{5&(dRdjCO6F%i01>}KNaW{}PA%~ogjcyf!1Dj8NC4Xnz1gA8t8Fz5NU zrsT`Bhp4o@&NNBpf*)5m9eVJo6fMh(lI}rD_g3r78c`>B$gF4`kWY0;7e2Lu!Ws!}kon}xF;|wY zf3?bMp)_Ntm61`+*kTh2OEKw*z7UYO8 zc6!?_JSH(XmJV^j9u4SR#8=s-!Q8SB<)9~TeHu2`BRb)hsO$e{w%JK3ACo9{_uvGliIUN&lkW73 zkJ>*K0I$Y!CMPa@EMN}3{Y3{}?7w1qK3;skD?-74X1c#9w!fZszMIGhyS<&x-T*Ir zANDRpjzYJ+DoPd}bx{BT7CHU8wS}4#nf`@FMNQ$*Y*X7j;eDLK{Q?vS zrauX6H3G;^6VSxE%~T?Hs#Vt^-)6A-S3V&u6nQ>bS*ubF)iyR^8bIw7)wPCVrV)g? zrMUUcTM&-PzMTuK7?SOoOvB8tv~JWCc~e}LjAltJRcxpw8>P$oMGw&=;B1R>3KxiH zx)T_ArSuo_$`-Uf5uez) zbe56TlehM+5{ao$O_Y1tz?#C|XiKJ0Nkj}THRL=s@6y`;CI1?xOGQspQ7LKFS^nLY z8h0#*;bt+wT3;#)21>22zWb%3^?H!1DS#NsYPeVziR#9cLK?|Fn4t}7?BoT9n%Zjr zyq_hNmfYk@wao-I??cFE?fP0#2Y!poATI$umGvk^m`(Abg~=MUnTq5XBTlnEvXm5Y z7?qnr-{%+!$$jS}^$O(^6(JUE>KvAKKr+``?V`Rvd3%7|>-TN_-9P^0M-Tpw4gQaa z|L4E_?uUOP1W3Gn`0$Co|LF05^Tk&m7;j486#D=TiZMPYhJSBAn%GRBG3ztRzPwPS z;{?;1X-g$v=S{WF7;qs6i#kdo8}Iem697s`Q}um4$dVhR?Eq7TaM5F?y_iwAcgtWN zixRoD0%*q6oZaqCRM*phPz2Dfmi6|1+!F&Vqiv6Jmx0P`?^%;5PjYl!*7<>Mm}Rg% z?JW)Q2Um%0NF!WfZE!PGl&k{Av?>xhi^SG;kgF8W0yXSQg(lDz3_oco+4nXqHo<2o zV%j9e;zAFU#JL{Nbe3F$4pypg$`II;1Thw9`>E+@&y}P(e8r;tL`8_Ak zBV1CViLv%3K%YWp+n@{g>H{}d%11uQ7zIaN1$W2SR9M#%2hEIAV_;13ALVld&GhgB zVbp5Y7qLee2SV+pMe*bOg(r`+5YJPcb(YbRJ$8h~Ur{$4naZO~uUk))@zlFZLPPAs z#6+)MW?M8~!!NoUm%;}h*{!xbQ~_Tq06MeF#+#E2Cw!?E1yGn*48)xSaIfE&Rg|7T z`tBD$|Ngsw|L4E@T~OV9zxe7CrRS4o_lIA+eepr%Zbre6<L}ZFN~Zu^M{{ zjFZS>p&6JGw*)cGa1iQ*27p!$gT@e#>Z{xC*)=1@Af-EP%MY6rx7;=(fnmiE=1k|k zHeE!}lCpGKuDqxwLaSm2_69AyL$gGy?G7E9G@ZMBV%&j@3JEHn2ptKlOnn*Lv>hV* zbazDS1G^Ub?}wYDqM6@QJGnbZ{^36#nnYI`c6DN@U{_V0gt);#9hUN{P&p+X-vsK^ zqmGl1!UJi|WhAo{q35RRjU|r+Xn`oa4N0F1DJm?=v5kMrB$Lh2uNF}E{UJuIlKmWI zq)Rn`C_EVA2PdL3Sacrx!POsEMoXGl*89$IJS~GwpB|VqCFS#I^@PD^Ycma$krD&ENjD z0e0y9`>($KDBpko?YAF3we9NN`y8xhF>VvtJae{m{~%$*r}xwJ?yamzXr|uJ5!+IS zt?dv{pe*x<7)-={V1+WUHGV64o&kS)aezNs4g^FlW;^t@_7xSuOHkx9{9L1VfNbl` zxPSr+oju*b)Q_%e13}wLYLp}`tH#zb;t!F=A6G5q*=mT?y2;U+DO*7|z_?w}%p?k) zYlIm_G3WqUFz_+dT=WF@n4=NO%rC?W&SOplfuI$FIax{u0~e~>`Jpe$LqYiWrjF=L zo+wz@Y?y@T=8t?N_MY|C)d^JC{aDl18RR0na~7alPR9sHRr(N&;)$k=Q1Yf_GVBP- zSwY{f_YdBax|Wzt*%o_1&FiD+5;y#;Q6N3iA4Xl)xL_k4=z7o8Jc(FNeTgqgS2;Vc zLyM6SY+=wR1yP;XpGFCVvU`L*XN`sk40|UD4}~DBioJ1W10024K`PZ;-wcx*+wC>?`C-!3Qav-*PGA3%3| z3sS3;0UWhGpdv4Gc7;()J^(=l2zYJJ^QF!KAR{){w+>=F_o45+l|y^9xO5@l5fZ-5GDU53?k!5tqB5 ziT{cU4+w=SQ3RWzV3kKk5!)G*&e1j@jrM5V%X7Alu+Wr!YNCRf7C{1Myxi0e`;`Im zdi^i>`pdunyH5cBcYpNVpZ?MJ-~abN|FzA=?zfblZ$B1qef!P(Z@zi=;eD-+m$Ao3 zt~E&K))-bQC9J?wt~g*at&Vt;~fr0Z-9_Y>6(zk?33x$S%Vb8>vRy#-Ne@;ac)L##b#!j{ETV zoFiJiDK%I#WJIygTid-lM4gz)5*M%pF__|D5Xc&xx&|%C%U#jr&ybQ-qB;z|0Gtg`-qqP9dSa;Cn5=Ci= z*GB_JCLOgJ5fl}$+KCRuh1q{)G?Vm}x8uoek?D3hekN8f4u?+=+vUa&G&fdS!gAkr zugA;O5qVAN8IU7VU;>U+^)dm!UjJ)IdVcwfpMC%R&p%1||Lkx6DoQWjz5nXlk9wZ3 zzWMt7r=T9`9k_hV+2Qg({YMq47s(C_YU8Ms=|#enmHc zPNNa0b`Stkf(M*Z=)`HqgDyF3MX%St9sfW6)pG$LmAN19)(Y1&n@nRS$(4XTZ=-^T z>?hi5TS+pa&^GZ!nw}8@T7;Re!2I*12(gIi8Y7~(DSAZuuydkI?IxyOZIrq9UrrJ7 zK$bmPZ9UZ_>M*U}k%dvU;&m&M^X|QJ(7o=S9AJ24<`1KtP}sc9`j1jvx9#fK<1zFh&SRoal9SyLMZ| zaL2cZU)+Rq?|P+n8|0eV^L4bCD?3Ol3JPa+X~zt|Ua!}Gh}Uob`+JLnAc{I_CAJ(&61z#(PvTU9@r-K*!zu6*+aq=RJk+dUSV+gQxM<}_gaY$ogBnem9`K)LIom_Kw z3~ptqr{+mGqd{dx9My;IriuvmF4ah6HHQa~!;z8}xI(Iw>5^+R+ch8%=v7VMNKv?v z{ZoKWRLIEo4kLWMewYLZ?e(ZVVzX>B=WKZ%v}yKP_hcW61Z8*GqCGaM6tiQ8WkP?1A<4{1b7R?oHbRDc0$zJ* z+`j4u1Ez`x8vCGF3M?J2jOvu(D{paJ<>UnUn_U0gCg}Mq^Bm%jT08t|Tcgf-6uOw(+7zu3yPKERyRuWxeW3JKZx#ST@V*MtA{`kymAm4ERUzxku@e(@=q^AAJ+pZ?k3{567VKHi$A zWcMS?|NfhA^-fwL>x?S&3Ea&NK|aSS<@UrQlP>G7)=2%UaC3G139+8o#|PIyqBCLm zN>73cX+9>Zm(x`(N}Mf|MQCw5GK;%GwW@a09Xoqyhhf6aE-f}@$XI>j1L5eAyUgDlSQ zsN5k})vQDFEKe&dcML}i44Cl#nK@D{PiXCygR7N~bw=$N?%~JOBPcP}3J_3ReF#Cz z1ReE1y@}=-j#8B~eT5M6!eFNoBy@-TxhF zO-xxbqgrCr9-lx|3T$^8cZo+5JcS=lohXtv%`+v4Ix=F|Jos3gq@6yKrj&}G5uDa2 z{2Ic+2n92QLI@YSI(<{}GB+WM3?@W%E*3573e5dg$fsK-_=Tb|B0-33g%)#H8Dzli zvkE8#Pp(zPKJZgl37zZ`(yi+;-|&y}&3Qe`U$6fGlAb^L^)G*RNqWBf`7eL*cmMQH zguLI1w?3+Re)?(d|H;>3Lc%ye3U_Mpz-X~tCn1&fWEe#0!6r1YoR$LUNJB%rOwt(Y0f@Hzy(V2Nd#1)|p{{0E(>C$ath zSg5!0xyp@y=PnVy$$Dihx&WHUo7C zfmfHpBdsAkh3i0|;E1q6{FR9oUHY-t>-G9~dj0i3{QcXk|2Fjhw?F&U?|%P#>Z9LM zdK%;Z!vb&~lv+Yi;Bx}MOnhXr0Txk~T)`A+_n>X>GVC<{h)-`a^=-mrAykGbV)`qF zo&~o&1N{b}^0x%)9DhRdr5jjP!2G>Cth6-rmcQozFIoZkak!u?*hbQb|5xIrNO_!c zxD0^`ifBWG_iGmPf>@5rkDYluOR!MbFR54-t*JfiF$CX??58*nkF7}*Oz5;7hf^L) zXI>}ss&^(whi}E&uSmRwHBq??yEyv!sC;*{AlMS}8oh4!in58vO4|VSctcQ3kh)h- z9D7s8*^vMr6Q3Zz?tX~~nLYErv9yNjL^!T=15gwYtJvG73L7;JwosKt?^9P5mp=?Q z3z~S8Jku4G_D0Oyl_MwjW)9T2_|5|Bb@a!|A#MNxuZndY6XCzE?`dZ3=Z+OK^S(40 zxw?&>Avq%5y<|m2;9(_l=Gacz>q)Ar+FIE0&n@5~yCRZW0)@@DK+vuzIWZ}>E`0r} z+j<(jws%`XTdt=?IKCQufZp$TrnMFrpkW7s?Ws8U>coE`sgEYS%2jw;e!~tpZ`-xW zAO~p6_^2Af$!@}@Ba@r~W=o!4uh;9#Uf=!YZ{BA8Pm-SRe)U&>k*9!W-2dj||E>4$ zgW^Jbg`YDk3lH@W6R&>qp}ew+k#YnPRM{sd!!f8f*#lXCI^|3wJ;!Gug9vr@(r}U=Iixk8$g$hQV=oEpvCrh!H|P#YX8+rA!vmD z0Xae~&$^D=G*}}=nu~DRzYP7Vl;m|W%zA}y(la~XvvM&>rP@X!FlLVi3l}BhB@vLW2QpK&$k>?b?EJAmF#s-FLYI$I$WP5?wIH^* zmC?Ii>y&dufexKl@mYKOGBY6(L~)L!@hiwIjpHotRms#F#T(e$+;lJ8{3&t?%Eh;~ zU44CoL?&iqI|STJq(%>JJYDE*zGPSi${NbvF%f$p@Ixl;eh z@q&-c`IDn7I$86{F8bh@y`@Y@Iy`6V=zhI^&`XF@W$H{uxVs*%f#h#<@L129V-Dbo zTT#Cn^UHn&s{%@MB*F6uj6dW;z}=d>EfEXw!v zTI$k-sti&e1r3|3;%D<{DdYu$n-1x{F9l_gal(cb0R)SKD>GN04;e9^4H-2h$yvzN zLwE&I8_i4zRi6vR+c9~Q#^0rxTkVmz*&T+z5BCdIckOOTE>)Frwz_F=oah%fD*oX3 z$cJ1jXMfdVhC#n?s!^V-i+fvb>|o_hOR|DEJZ%}W=X{gxAk2dd*M7RI(!wGj0E*L@ zk*sn3=;n~2r8$VHiU}jTs^juW3%tiIw2}&_Z%(}BzTkP+s2LS8)_U9Rg&%0&(y!O+ z_1V|o{^LJ>n)N@9`#=Bw7k~2WU;WGPf6pWH{ZD@K)yG`Uk3;{*82+!mQixDD+Lx$O z-L+^DTop=OJTG(G{|s0~=q{e|g)#lE&rWd;iMuQX1c!EOaf&DgR~C?$A~-LfZ`zDR z6k$%JGRgPgEE>z3i~z4DV76JkUSGrk)_@G69^^aWAd`zVG&(e ztka{iO6jci;5TG5W=u7+YxYV*{43M9tD?1_GFt5;nAxy^wFc34M1OF+)7O- zqXNplo_eDE=V8W+oJM!&mWiyp@)4|vF%;aG@w8nZ0l(uU*3$)T(v)KaSDtzJF&-mu z&{zZmchN396A0x7Od*}*&><{3+9ZS`ohG#9$D^153Gnv6eDGGk)IBjxX(H}(HNSce ze-G@KGP*ZpLhGWehlff_nt~zTnEd`ka#;sy}0C!|U~WeSCfQm%nL% z|Brw9{U82U?w{{IrS!c2=IgJHq(|@H?Nh<`BaT}9IOrBWiad?DxT9}t$6T(n{oz@# zAlQH97C6Zbfyyg42j*r|?o1p2y*bMrhsOGfgXLD{Sd3eYYy$x^%SXO*?5mp~_EiA# z<7fXny;Bi@x4?cby`j%Gm@CEbqe|&d4k~YdOSko-ZjWediv_Ypa#H^MSi$LAf9iXu)LflaryWNvNb?C0Z)shXbLzU4{1W!fNZg*U?T{(3cm+$VC~cRX*iMc$!aO2K3j zR(-f1pZ;jabv9{{ zK@?B88-e2`zoEb_`^E3@S(hbPW#vEf4kSe{Qh@;^6Ovy>?rvE@DG3UkN-egS?}I`n)tu@>eK)HDB{k<%#KSiHtx-JYp;Va8JWc?!}OM*e(5)#4?9OywfJM8;da_&GJmU2MRd zI_2+9u_AfU>GN7GH?bF`e=8pdk2vV-^>2SEBj!HGY-ixoCZ_(?%R}jJnZW0}S+O3x zEF1o-2>&1~csE#T4LQk=IaCCj-zz^68n?Tw|GKkYb6Hv|HSVMoc!203?IR)Zdw!u8 z0Sz-+!e|7-@OOg%%#;1cj5)8H_y{aOqbloAY z4LIqkd&qiZmR_&_ZC-!-kN@!I+5P!1zx&xQzyIT3eg7}N`yC!IA0<5>J_7t7ox6XS z_}~BJtNS_WxWyRX(G;^*Za4p}mPimM!!(qxK)|O*z?!Fhx4hqV2P{DS%;N4xgYZ1e z! zJMVyfNT}Dj?YsdWzv=Da!csiMQ6RSkO6CQ{`T>{Svgf}2*ev1OZ?XT%kZC6dKTEr& zxZ}LfG5P`ga;AMO{t>NPMK|N)WU@hlr#-6j%@5~s?dB$t^VAj^ZGlkjwI^G1DZi;l zy#VKp=ze>g_q7L)S__r;(p!%gVd9BVKm18}G(Bs+Vft?jfX|`1fRG1j>HgD*b_dsk z3VX925)g54t5=m=X}ztxH`N;3}mXK&!~KECOT$Dh{uIepXopb|^LE#7DU z^^7D=-)gZtF;cgH*s7gU@2BmsAjfCv+x?dsBAIleOLe{rBU-SFO>`WkzAfB$!T{qnE=@@L=w zqLcW)`^(>~&HR&L_uH@jFz$c*%~u~&dfwH3E?TpE!nH_TLRE=V)?PdBgUkLmQDSma z^7QThnQshWaUgJIcM9#@0NaiHm_bi@gk?+5?KZ6aeJNkCpw&}-_ns7zB zSf9c3I<#@Ujjz`a-vBCydvEwE`9f6yN*l`oyCId$MvU@2Bdi zC{lu7%V4ty1C#-&?1vfP0cmnE2jfio5(in|g0b`rNN*gHsUbJ|r7{%Mb&Cdas+6DR z;3X7yE_jXDh09d8w=_;m7(NtN*BBoVwp49WtlK=p`5{&>ww4k6H5(1LGVO^gyy2~< z4QqO*$i^x|Sq0oNi!5Z46$gryso;})w0DP zhi|`r{|V#&!@qhGkL3_4XNtVyK-YbC2{v*~DwW)(*@UH9S=!;JQUqfv@=)$=ms$?U z8{l_WM<~*BKf`q2WuJu}z1jY5DA8~bL)>U}jgTJFAq@~o@z%Xw zKj;OLe~*T>&*6BEdCHwuMP2J#%tuN1S`MVTG%&gw#nw07Y3>QOpDg#Y20KN|pS=i| zjfRwe>h&Kd__^3Gr!4|n62DYb+eXz*IYE`DFzB&-41bfBL7N|ME@2|BIh}_uU`=`ul(WDCwE=@ZDEmy=Cyf z0sJ2&J&pwOTbQ)aQ&EpT@;-)v9_=SS?e)w`ek-8r{UB&%jV*RzkZX3h-Hf#>1lJ#{ zJsIbNq6cw5fe*>5nJjDn>d&CNgAI=cf=g#~1?d01vMUxXolxzY$S2}ICs6&mG94)@4JMk|A4v)2f?dE&_2iSeC%bnktC*)w z>q1C^kB>)l-`#TApJElW{bv0Tdmi1J%z?Y~^k##9xMB9$EO^5>IvUfr(JllYvvr_M zN^!eQ|La2mbL}LiyavuV#%c&p5O@qWZ`vO39HKzs^B3Y_~Di)>L4?F16#jaNH(Fw+Ofnk=An{->b-|jp4f#ts+ zNO~~WKiuM|%ep)6ZwWim?HTrr&JfmKz0P95o5VLCNQe#i?mfB2XU92jprHxf$o=kd z$Yb3%Rl`k)305>{L3Jk_cZ)lP_j>)W^7`dp{pHWU|L*6%`smsHFW>#*yTAC&@8fFG zTO8-d?yXNl|GRhZ?|4+Y{gzS7N!+WRRG|zKKT-46E!KNt=i^2zjLvape)nLO-xS7cOK7WhjljHJrt~x(J-0Zx>0;GWS>qBfEmFFccWqVQ%(KCe zZhCDssVIoir`^P_8|nu$0Ck^!aKLNbQc~@v%-Q{T= z8@YM#zx24GOxo^oVkdKCXWPmwR}>*8yfOt+6E@o3)Sx(%3wm0;QqEFQyeftPy91#x zwPu`R$i*onx|KU*Li{wIK-GNxsSh^?uyb;pFXepjsG{p)0XfzxuOfZ(a5dBoY3@En z-z&A&>Uz2yR&PK>5=GvL@oT@yyQ2E4GI&XOlVrF<6!+xu zrU&QGUs?Z4&I{CC<+J}TQUZc<{mk?(wfV}Z1@dPkv{+Rkuh+h3CgmF$wrX*Mee-Sk zmN6BJ%9|NH3L9?&Sf>qoK!x2SaA$;^YA~ix^t~QX=4qdv34v76>*@a={`I@x|Ng)I z*{?sz_phLyzy626i)-WEyPtgf)Aygo{ja`#lk`yHsn2C(J;V>|ZZ0o|BHYy}^Oc|? zB@5tNA~2qXL%v&#PuZeH0y+g7ubymq2HK>@2A_gn=gHrOo}HdNqUK(=B*=PrrWjE1 zMy%31We6e8d|zgYnX)kD5d__|!zOb-;mdlcm3qB?7z2>(I!M}xi-_pCn>0(O`9*7K zWdB=WSKhIsc`-zIXrKBwRxbCD=eo(QF;3TGiAY%!dKi5LnUm1flstLx-Z?=&B&zFq zY+!CifCUeFn_Cgr>GCS9>j_PIM@%lYttTYEFkHEA!0`-hYOh7it|$i5Jj&S$SJP_r zplJ`!YAw_0P13F0G&FF?oL-h^G{RQqBeLjfwg(wY6jE5Ze+W;O4}dEo+Qq@OIX~K) z$8^i_rbm}6I}?)h5P7?vTYmiD?|bLNA`xc$T|QU01G+CbdlEC|BR~3C<if5G|6>yWufF^3KmU$5#k;S*`s&+n-+%p+58r4;hZ@~*|DYFuhOLNcMCuQ>8k+C((5+~ofXMiBI*^o$&`}gIqye*?+NYC6ap$O2GXzkd0h#QaE#3|U`;NlA zUSG}vtXXE)v96@1rH?T!i>tY^f(L$*uk4R+-+E6UF-?ae#{Kkl*8I)L(l|*3JB^U` zwJj*O?R`aQ@1F#~mhQ{0A6k)9X6(;I0mQx`Y9D-~$>^}zF((FVhuvd)0{3;&gOw&# zoMWdlBIPD)bfmf#dq#Sr9OVnE3iQy@eA8ke8%p9Ny2wVvsprR<8&KC$ZzWUB7<|N1OBLwz6%x1sRcUo47x3j|FGiXv#}=0YmaGtrT+S9K}YP4N}a> zR+iewCbJAHcO{N?NX~FEo)KX7&a9ER#d^1@$E~EV@HX8%1gV%Jh~*~?k_v;l98($} zi(ej99*=zZWyR=BN5YN*UFWhZ=6mlg=XRbhY0jJucW<$Go!BxD@PqS__{ZVyn|(~{ zCf+#56UKR$Uc6ra(_Vk}H-G)9XZIIB|0wDC?iYXY=V8(-efah#R}BBx-+uV%*Lwec zW%I@12FmeP6o@@Fd~a`*JxcCl2hJO6h__s(`_W7hkv7Seqj}I+6Z)|VI&|wI&E9!! zab^ORdxrKJ2kzcO-#{W9IHS+;Q&NuxR!sVr1VmySvl3k3V0{iUuyPh$>(&sv^N8Nz zj(P&KUav2i|05PB5Iq#UlMi3km!Y_CVL^Lv*ZmtWclYN)awpdOcC9=ll1s6-9uEC)aacKuMIme0EA$9BXO^c*D z1?X)c(^JD{akF zTIsT1&+_^4IN_bo;8yszd$88~w&D3FYse+D@w0MVN+>Iz#E)2n6u-swlibrc>vn4F znlq>f@%)=zT=rrXp~}rDp?-T^$)(UFy`nw!#0#GTEMSj&u1H`uH>$BBb?TO18^1e# z(>p)LaIz)Acqst>hrfRR```cf-~8Ffe4g)q@n1d;{lEB&zyCY#Y}g za6XLok~2|n_xOm{>xYm3sic3Fk_(R#ZK}WaT)=Di4j5q|(NSka-(<+W0_MAuU3GU0 zWMQP9GT;Ligy7hI$TLanz-K}y1aaWP=k?s2GXx&%?smw=gC8#tv}7}G%X0{-Knw0d zgP>Nq0YWYrZ~J|=*27z!()BI{Fq`q-ehX#8 zuu-$Yby@ckznje0w>pN2jO8KDzP`Fam5|xgZKZKN)ugE?GZ?~0`^3?Wu3ZkY@nAe# z@9R;aL~))U96y#`B7pxvuYdUMZ-4&FD}(3*uR93z@Q~i!shN?yHA?3w)hSp4D@N-UsH`Uugwsrbomy2t?iqtCs;Xb5?OYQ3qFHw{1CdF z-`Bc5O@x!*!vIupNc%TgKXIOMP_pN?nxE6dBapWGEK&&Xz^c#I)|17BbpuzT-bs6B zxG@qB#L6=9X+wY!LM!cJ%vvrv;_i6&>gg%I>%{I!SNGM+!TxwH_JsEm1$X|ZHQhK8 zviuPBy53;LHMgt4g&qx!m;b~n%ya#b#&~!hH!F zoL1wbV9EY@m6 z)C#xJs=^UKgq*GnA!Sg_xi*A@>&{vvZl=U>J_oC>jF(+Bre}@E(nwUr^O&B8#|#r! z6l9|H!wgt`K>$CJ2MC9aB0PIW>f7F^C-llI+wm?F(AGp?9J5kty&a$0i{jSGd-8e} z+rlU8%MUHq*S+Qq*u8aoaj{w7j%)_e1bK7X&U6ta?e+lk=R8&b2-e-GCozTeB$4%P z;N0;zHzP+5A;hNdmLWy)r`JFmI1a9>(lb`OLUu^~-MeW&qhQ}*4r#jb&MpjYb6JXG zDzQU))bIR<%D%EEcW+yIxArDK8%TI|XtcT#i7jf@_*k_9wBCM^NZ|2loQPkko5Nh6 zO_h4EDd&5iXn0&?m07zFqAMotDc_)a-Y(XkS;rH*oAsG8wB-;qiKq=~veO)|2{+ zGH4g_Q*gS5Gt#+7>0X)rdi^^{dOpJZzx?hm{`PO<;r;&ISKoYlW$^#>O6ge&^?qb} z!G1S5yo2-``PL%e9Mkaq#8;MatSgPj#m3{EIzO(;s};S+f^fW?HkVl72No!8u3YPx z_jbr18R`;E^ZvTm65L}DSM-9GK@g=i>W0F5=eeGnaq6yAd~!<%_1d(F@2MqgyqF?i ztpsJCk^r7XYuUgf=QaQT7#`qG1#2W`iP+H9Ru3MPfGJny)eJz*EoXSF_F(iFzwvOV z-=xkfBt8Z zIqyGwcvJ9y_~|zvzW(O@*I#LjgD-`PuK2;^X~OkC8_&LKvKQ1w)_H)@{|86OXqFudM?2}9YqFonzv@=PTS40&Vl z9TE08uIW*SbL$+A9JAZH^6*i%AGmHxS7sO`tKKMxp8&N-nDE5`e);f^i`b49#!<%9 zv-b7=I9p&4Z*bR2RJ@*PN2cN+qq&scl_7MmHuos5$#Q`uYdK-EE|Z z%Ztmp7XjUp6%XabqB5;+(3rk_JBy-9x&F0GKhINEjjKlf>7_xx265iPF(}}4RjqoC zm=9N+Nro=gXPZyrsO)3<<1jFZIC$Ee&r#B1t_mXIr6{v*6b;5d3J{iwQR#_4W3YJs zS6{~E56f_%j#oXlTT69I|9qmh_uyEwb|#WV2r7kHwXD50A|Th3HYf24J+7hM+5i$(xUPMsc!1%j+K{>omYF9VSNw8YC z->^F2M$6BfVLKEr;bt?s@T%+4DSXPEUI}Rg9I`?Qv}`_$(bFwyWPmiq!tj8>oYO>L zJG~3LeS`XDfv}_p3D!1v>27~FH*(#i4zJe_ef{76@BafSh(3J%sdDS%#Q*hI-+c4# z{Rb0|SISQ2h|b*D+J0FAVZ7iodv6QFidi{;8>YGvtN1;kws-eFE2+D+?tar5or%8l z-i8bvNJoGUm`m7CXrq2#%K4sw2txO>%jE5q}*X!S?{mJniZ>=CEeb~uyeQ2pz z&jBB6Krp)N3)ZbJeqC3!?g-x;h9I3zTF_PF>6Dt>5z=!~iQ2-`DLiN1l?$M_zkJu* zOwjp52k-UNR7M3X{qScMJ`tFx)HnJjRbnIfg%Pm9D&+=#+@j~KA(nCOR6fUPUd^BF zI+}EPRqv9>C8xPE$9tZOT<6`;?yaX9)4HT>r_@YDnSptarAhtdJWKM=gtFzss(x_J zRx77r>&tI7SCtX_v?OO}qn4>5+iYNbcFI~5|Ftt#yQ_?(5jUYnzHEnk9>!x7fu(y- zUNQM}yg?A}Fj#aU*7L}@3aC0I*4dxDnIPpXj#D5E6P`w~uq_G-1!?HOWT@*FQleO~ zyz2DK)^$bxFhpP8IDERDB3dm~Net4dQ_|CdvxZ2k_FBB7JSNYf>4>0*#_e|q3sIv0 ziI}FeEn{l$g=?wWo_=O(qhGHd{`$#JzkUDpH(&kq((%{3cgYw}m0gSoZqb@PYg}2L zLh-In@VVP}Z_=_HEq6O^C~8*p8`M8e17FzS@U-l1Z8{?FWRTvk{NxdYdX<_x~4bf6NWmXw1s_q;4=)m9ipoaQ$Kt5^nH&u$&$z{8O!tVa;&Ng%>NJ@9i&Lb^HxY<}(ktzE$gKhl& z_C5%5lvIMTGO>rI^J5=))m!KY510q>* z(|W+C2HP66E)j1{2H+ypwnNh8=#Sub+i+X~jnodgF-ocqzv5VlzZBNls+JS&r z0RpjJ?`6-m>a0||q>Sn$cLm%+_^NNwU>LNciBmSWG_0#adH3&XnweDy3U(yjVyiw7 zJB^LRIcl90vEVv8fzN)Z<+$p~qG8nnv3u~5KRAG&>JGZh(c{KC7e}5WxU0`Kwk%V= z#($l_Im~ab*AIUEAOF|?8G;HAsDH^Y_ynEPKY3mf0U0M}h`ei^3ABxaOs|_3E+ltE z3#IfEy9e+GOL{)G3zO~^l|zOyc@{!~sUFC#qiO;f;(<{YK`}Jo^nn*{b*&J##bknS z=_XF;R;vnV+-T0*#Ne6Er*%0U3tIS#vqzotV>$CRZtaKs8_EyNdeUzjeGS`ZsRy?F z_4?sU0DvjdY*~JkDA;PObL25cCSQ72Zw5TATx;y?7l25qL1y*e%qO3X^iX78FKs*} zbS+{w_LdQo%qTvOA8(cPh$9^7JyGDtpEY-gSf1r|vES?f^b@QKg85)DmT#2@Z^Jlb zHjwAAbuFzsQRag!4*wI1O%#y3HX9HMh@6P%DpdwB^hKKmjBo48g^@6|MXS~f%FJ4y zg}Ru@)K9{oJ2~+0(nl@hO*hJAdeOZ37nK~CS2N@iu=X7%)OW9^@=<8Wej=B(8sY4! ztai<#zEG*resIvrBUHkGcl`C2m?!*sG4F>WB^_>^iQ)Cx4`em^;w`c&pW7T%OZ#ry z2yl+D(?Oa-=TF-$^7n3p85`A-M4vgdsBwh~?Ezd|v5akrZ2C*5w`FfSou-Z^IRQKhL* z2FO)e_wH8`z!%>ByQ0BGQh2Wlfu=eC7H(*9OSI0_z%EqIux{15ugZyQgls^_q>?Tm zOA8KISpDoDL%&Po5J+LY4_I!r>xjR~By=?e7Y;)S&tc^?-v`2uGMG8aT$L|zk@0&@ zGOvr14)m|nH$FAv0Ku1O=cp)mVzO6t*W14_TT$A>$+LSMI90p978VLp1K$W)K3EA-fQ0N<6l10hwk*1s3x>-)f(sNZX|H8 z)ZXjIy^geVIa)qE!Z|kcw>Zzyc_>q+cDCW`f7%EC*6hh)Zd}W9RYWD&%;Ih+RSF4j zgEi)8SRThqlr9cia%J?o@1yF{NKeXBtb+GAh^3U<`ML4;+|^+Ge}iyVc&!z|Cghr}a;3!@QnRU9P!p_lk?UPVUh8dE7I> z$ZCx)?l?vbsI>p^S;Nneo#B1bIh|r+x&y@>GdCCWdw9bXmKWr6t*rUU8ESF zaqAo}Z;$)3b_^XKC*@`lJP%_qxCX+7VnehaG{y_v7i?o3%dRt3(W7#Z!1IXmivs+T z+uy>+v`5zm;hX_EYolG9YOack`5ag?FNExL#4Hzp=Nv>Of zky8Wl(9U_?x})nrGEYDH`}Pit#@i6my^Lq1>R7ZwGRn2Zh$|t)j&B%ZA4k4M5oi9? zVRbJMckY-7UnD4y3K$)Y`?_8L;=KB%x zh6CDKC%EaV!8Rofo}aF@GeierU-!GICrch!ZiY+|CR?62*-N;SjKop`?Lt$p-p0yw_YiLUp@c?VHiPm?saxZ zUeQTsWGP%cfRY`a<5NcP>wzcqROfkMx}hI&-1pz>r${8`OLNZ7F+?Gvq6GIOdT1|@ zYWlk~O5#m(bs&GAzKv1TxF(_!p(#H#-FWTH22yL;~TlO&O@Q&6e}3T ziq~7M^aC_W=*H@Ocv*mXYO_^gqcMUy52RbAhqSJvAXS5eLNe+=Ob`H{z0AG*pX2Iv z0DKw$7wz)&zI!BLe5w?>g+vnBav&ht&nWm`fX8 zKF|q1{A5Dd$?8x$_7|CmYFFym(&6&)ZGWeE2+sLS)yw69HauW*t#Z~Gk>(OV^pcz( zHt)vBQ%f;Z_Ih>89gcGkbftT+de7pxV#aTKf%k6w{SC)b7DD6_L53I4+5vi9qAn;1-3W$eSvFnwm8DA8aredyI_X(sg9aiQ|{q zajMhsCrA)SrK{Y>58NU&??-sw!Wq(8m+*jR?Kfs-Xn9-#Q^I5Z*oqO@N z*BS%5YMu%xxr9e{SoVBKQwD&wzyNU(ik~qRU`KZrumd=l{agYys=0p$6D&>+!kSSH zRH=dn><>581J~!(cR9kXLulS_*xL$q4Gb^;|BqDwj&{Y&ay6cl6FmY-e6qYDnsDBa z+%4zHinBZ*I4;haAca(lOxFmA^qNdOcVVk#X*)W|KEIQ(U7Y3Ilbxtgn!&nMkj14H zvxQBSVH(IMjU_5nD!MtNM;+mWZrSxd z!Aave92C<$AaJ0VCNxM|@C@i|#;8_MhB#_63OgK3$DP&ez{sya0g+^ioiMHIqW-6) zRH}E^aRi9wTo-55N6*Z)n)T3hMc8;GwLSyCu)sE@ikV!&7Yz%>sajyjP`cS$zl=c` z=FnT&<~f@Wou)|W)|?ANGInP>48@ICcZu0N*L7~$BUU;zdPo9fHj^S$W=e$b<5f{5k@@X#ek!rL@d4eEkeD!$kwdQZ{1_$_u$0U5~xPX4@dA`_+mtL$YFQD(vF+>Hd04g=Ob-f4RjQV+aGwc?6btYeGs0Kswnl!?Uo#CmK5c0;n)LXpw zfcjv`7nqMYY>k12i35RcX>LDz4AxUkSB!XyB+wB4ULRZoe~MEs>+GR&(dI;JC*I80 z>RGp13v{Mh<-^sGzF_N2IbLrXJ#Yc8vyV8ZXY??*Q*e-W7WJj$=`wnMjoZ>JT;y=5yTxnE8(yz3g8)^bw`o8m(GY?C zoxg%Z-%GzJ=-51z8qGt^O?x?%bZfvJz-B^0e-HaawR3EC!ee6w z>`-c2qqKn;bMURuyAJYmAbY`AY!eo`;`)y1W7HEY(Q70Efg2;^X>rJbf1|@=9zix_ zD#P7XGzD>7okw>$bO>tc4f3xYGsbn$AaPqB+JQMP*MNDspFK0i$UTllaOQEh9bg1A zA}Udno=(m9IsOjM=1Fj#eLqve*nLL-{&0W&ze(xL#D37lVl!o~+_eXEtYk7|Lx7zAN(ctJ_&)%s6Ju<&{<#uMINE)4@g5A{;h@3Fyc$d-$0ukKUR?skE_eQi^%HKlk)oX{jIP~sfMH-Utm1f}ilSK|f^G8*|{ z$DE`-(OpSdHVvX(Ub7reF~;HK29kLO0~7Zck)9k6P(~wy!LERcCYP@H@5U*mIR2Xu zZ4d;Z0D_Xafh{(YW*X@0^+hCrF;>2P;2QDE)PYX@l+S5i1Fp_GmW>eHD_f}sv9$%U z$(iSn^u3#8$x*EM@;p0Fw(e+&-OFXB#k)e#GCLEN zB8(@llZM8~{udA!Bc`bJJJ+STk`h#Gs%lmg)iUr-sE<&R&CDjw%%#50kK)A#$ek_c zQwq>zbM~#J;m|uiNr$#Q%ISz&9#nXu51?M1F$>f$NO)JpfA9?&IXWZCv&pE3LS0;X z3CnKH=i%r~u?io-c)B#oZ+^LX>Yq(*IX z6CHI(Dz)<=Sj%npJ8B2y$(=gM`6n@F& zgk`_;e_$9qA$uNUZYL~x0#uNCmb=(7FkK%<3oV9GEki@78UN&Yq8}(2X%e0$fr1X) z5k>oY{Xhgz&cNZj?nq;BXV#6Gix1^~XkE0e zq!9UP!cpuwXrvRXrX4ugw!hZ_@MQ#`H(AvecPC#jk~SRa6x?5l>2MS)1UnvS!R zELrVx?0Y|QsAq>g`jQ~!dUOCJ@0tG3Kl;r6jY>_jpaZt8LIS~cojPkt`Akbje}L~J z<7R%gf;9Ks)TbYab0syCHw7Vy*;H?g<#PI56z#RGOoWufOiPi%?qv>#llp+9Ma0$X z-jkTo_b#49M;_ms0jK#^9t!yn#a~<@TWD61^)=Bssft{v3Fsd}GAvF|N}5X2@F~4R zq*B40c(ouOX`>O7)r(YNf^u?gzMhLX9Ona=W4CWRdpFCW&0~bDov+7%K?x8dy0 z$gz68zI+Ink`J52J%N}>cJe&^bYv(Rm<>q7wR$40&Ifh!Dlqh%(iudG7_tU58W?^f z9-PD}?Y~qWgRjTc)1b4ABEfm6wKA58xY@IJd5Up$zRkUiRq7;b@tdy@?n_!V`H7yy zi9SbK^LKu6;0uOQ$r#Q&FcccPeDm4EoO_AyR;;+X_c6W-Sh%zYEA9od~dTugcJ z6t<$>sQbA`5!S<$Ms7rBod870ji|Z5KKnxi!O@t~Cni@S8Zda`Rejr-pyGKH8jq$m z4;JA2AR0`#qCe0R z`QPTd>+aAz9%QOnGM5Xq1di-%JW`H~d|{zIg&g`h(}bv*4OQS{hu4!I2CazfOn zS{YD6AJc)W^oBjEz|npJ8_SNMHwERCu#XJHXl#r2a3OzL5odZcJepx(bLyY6qfaM{ z24U$mjHG4Vlh}wMB)#VUFP8rp(^^B)M&s?eu#{zeCJx(TcGnnBXYP)%kIf&)>NYX_ z@(9GyHqkdqK5M$FY2eS3T)?T&E7NB7OQ`DyyE_B7Pb=4I=5DmKFI?s%srbX>V{HkMTdxK-<`<=({~aAJcr-d!TylgpY~|^Et3KY1U!YQ?#ptZ*@`p+gY0u}69r5C0z;Pv_f z_`emd4Xc>lE)BVL*CIX)h}(G43Muy6D|$kG#hCc&JZKzqCo9Z0!et$Gl43o`;TKAM_m^b_CKB{EVCp-7>`~;y!ra$rw}D-+4k8+lGm@ z*RdVV(z(NXa2mG+)u~qbI=>(G@sP=pUrliW69x>!Z#nMsCo*SLSnFcRuLgXJcEpZAj9o^@hd-`_z zy(@}Cz1p~1`FgUoE9-cP$@Rt7B=mt|O^b1t!Jvq$xXSlCvdFgyk_l#Cq4t2I@5SOAp5v9 zCcE7(Xz|9XJLP8+62Y>@YmKy`WF-aLmIzmzGZi`O4JAt>rpi{PuzFDR24~l6`2R8U zKbt%UV{swvH^lvyGZfDo6^-DKi6~RH3wK}_i#2J7(3{>2Su6<3{yggqNs=d*(s*!; z1~lUTqP3{MzhZf|QCT!9R)L~~GRH=zkN*fS(HZD!)z=J!la`c*6dI29OcJ?rxi|jkl)i-aW1Bj zr#Jz0Go1!%bxjYwVRAr#Y(YCCL)IOLZSSxriP{XMf~e_;OjNa#`j0p25M9pxqBD1% zh6|0!?+g)_Ke1!_dgB@`^#VxGJFio~I)BL&OH^tEyH<2SIzuBPHjE0XzHh_HBH=XQ z;^zY6s$%H;rjJQOJQ-(b4>T79(Z=KHBYoT52Aw!63GcD&OsVRC`$4(9HpwE!KFyEk zw+WHz+qZnTvW}F&aFKGFto5XBxABqShsG`0MzSa>;L$ni7J5F8D#qOmJFAjgHLLFD zgb$O+eP@pMk%iRqW^<=U=Z0rwhjn%ACTyIyshhDIA;KqBy%klcW79l0iSlP5nTcj< zcBVRHAPQG2-n-yzV#yq?=qx8b*}GPxPa*g9i0zoY(o2euTFLBMI}>OtR~H9Op%s>qPequBO3ujU!kHQZs?x9OP^LgmMbdrUl_%ZL3m)TRJs zn3e_}PSYWz$ve{sWop`_dv$K7@g!4GsHpL#6k4qzh7jrHI*pH-Mwj8>d+5zW^C_;K079=lxM-kBOO< zIC*+uan$e*5F4p;`@J|c;B3>R>49?Z_89GkQ-zAdqbd>m5$8RHdzk|;)4?47rLQb( zFMY`BpvIGDGIhpRNmM&N%5Y*})hHUj4*)5qlIzU+8r(nV)8QC&l8EPtY99Nb z{P?_l*AP3%fzW@sliN(F76BI>%gO>U%$Yz+L_`lh;P7NM!z(l~$O4@J7_SPXB)SD|ijJi*UrV9raZ zJL&|e76dr_nlZ{vs8ANL_n8siU&ahoUUzL+)OE_w8FPL|1J7(qX*$k(mv5Wt>+%1^ zBH*c4i$2|~+QDVeF>1Zh4GDCTttHg|Dd6IpQ@CdK>;8|h>EV*|?zgQ`9=Dx-cuB0_ z7Vo`6#6jErdZX=KLeAK=E~PsgHfH@RgXBgu1kqCHUNLS{PxGg_m;}~f_JUuo3o+@B zJQ;$9gt%}vdd{tLww$HHVP~oos!ZsnrqvteaTG*0+1YHyJnh8AAFgR+Do=^o(ffrz zYiPt52=K)lfXk~Zvt<<{Htlk!VxM!XTMoc|4ZA95HAAkHxtLD6hZ>{m|DwsHhjLp~ zk;XiHX30*n>5zbq^FyNhSs}vQH&aiaTpqhk0X@5}Zu3h|kHG{CHsH#!v++n_FK0u@ zS*DA5o$8o2%5+A*L^<|&oM4n0QQ(C)^bHg_0_jAKTz0p1Jw95`#}WDvWWReNas+u6 zBF~i>3?04PV>R92%TP4@F^7#qWix;!bMA@!w72B&PPY;}1fi)bZ9l%1?{J2X!W%gz zk-RyBsm~NP@@u5wUsVz4=4c|uMW|F^<#!~Soh+@lAIV6*t(jC&UY?xxihY{8 zucoc>xiXOGaxosdrJvP&tgo>^VyQ-N$d(9fz*-9vpG6OijWNjt&!c4Gm-C>1ctb z;AxNVQoun_FYoAe<9kGjBr)*tgazxEcAM0R^}?NhQ0xx!>{EtR%Kc+t1-KTAw;^>@ zUEazRD*}@GlTc=dMf%RTUmF_tIId?49ko}jHhFl{(Y_*NSqvCU+G0d7yr!bX^~xn? z#MC<|)y?8$D2Q6G(d!=Wm}307d{d81vg%kj#=7q5X$#s~fa9qCU zP4qx-{fUVe99{eU=w#?E$s2)W65~DEAcJzDPGye2(|AV@2|}dfA=hdki%wCA%4Z}o zqAVFsE74P94v7Db*ZB;;;$_=tC=#p&+v<#MmQ3}+ik;;O&6^Z1jW~&p&6;v+Sa6QzK^^*CG&(i< zjpDWz4kNzcw2P;MkLV`YwXRvi1ar~2w>^XUDkP6xg0QwuPY()gny!^14F1GnEIkjM z8OsR0c*^1tzv3b~0X7u{h@DD}=rzWejMbVEg=(|Ik-H}3(m4_D@cyb*?{g`ba!W&2 zmu;=cu+3oCS?umXl%(?=5j13TLN;TMB^?|&A9iG8ssrZ(=RF&y+9JVbSatD-!sbWQ zk($C{RO;@Jc|)t{$y4(&V%2cuQ>{D_^&kpw?Xv>cBs$)h_b9^n`qWr~E_t)Ve13<>jA;`4?Z4b9~^8`Y5dcFyo z2DgfSlDWoecS#jytQjSw4rBBz3Ye9Y@T(b};+F>aN5KD1ji|fT+T$frMZ?dqgI6+v zn`f3_9-0d) zIDEcC8&V0Zlm9}^n3Jr5mF=X;dfOHF7-}BjsyU(I$9Tr%UwXZM!2aJ)CPolKw1F*8 zu!A5b4spCO5ESa`#tYEhNlfcC)z*qdUX$j}0Fje3*ped{2E`}CG)G=1P(!J+l+3cz z`TjzP@MI2MS;ZmsFEpqyD154aYP8$vQIU4YyuBjXYvR8~RT$2tv%dw?W_~EJ45LHc zjPBG75}H-RqMZ1RK-8jSBd`FF{v)2m^he z?eol1j8e7n4Gf2Y+0BG&#|xTi^2{Aop2uI2GdR+Qg|7-W4`*3lN(S+$zoI=`ifPy| zN9Pl5hC{q!@4tkmnzqE1g8O>?Ut$+?hpxeiJYe8Oj9!JXF$D3cp`X&m++D;n_UlUvjGLEFFrOP2O59&pNRs7= zZxVD^#b7v7q(1-`!tT4e176tBp&dZZ zBTIk;OvQ{9_vOz9>>?o6kWlLgMiDfR=Z*wo_^<@gpbJJ?(XOhsSGPL`b$kf$X!Q`? zm8lqtgmfvIKXJqGo{SXtsoa58;+TxMDmyDuk(^6tA*yCsK$Wt)v}BJ^tA7AT6LEjC zR*rrg3FIg-)o}z(v|Qc(A9QBURN=|Qxfs77n2L^#&>x)uoZ}0fhBSmRYkrxE(GYa^ z{8dnssC#?|A5=za;geESK}?h_S|(bul!*|anY+GmSf$Q;y?+dz3*pL=3ziHt@-k!g zt*dcRnD&8Ka#P{K2ZUm^F**m^_0Z1`PLmVB8x}mPn?r;g8jbK!o?ec?G~%$h)!FMj zsd@bjPYFKFOzsveg%KDE4OFH6hs;iF1M0LK2Y^;sZ^mxi%Ws4iSVUS~1B-U0z(^#=_pVhSR!d1(6DJn)(d+di8Gs4}92&9c zbh)xW-TXYSx7o2zaS#qlrJe`f-)EeIkf3Jm6Y_%!au?>b3G@;h0w>NbucPVKQpAhJ z^MoAvezMKM66qMo>V<`hnThobz&T(|bQ$X4bHj#8xDATSzZ)Rn7*yIu8NRlu; z6oOtLmw;>|I}YO+ufoisT48?YmoXHt6=gIHPgQIWMz>oOtM!9P&EV8a0`x@y03cC5 zFC?7#y_ut)ZiL7u0G}e-mI9$Ex)2fC%pW%e&+ZFbkl?(%1jQ2kt?GnbBybHNQBa{M z%8D=rqAkZuS3%u#-$ot+fBsDWfVvZFHY1W1Sg1U}$;`kVbvRmLv-b<%7I&>e1P|*k z+Z0C{;r7_LJZ5XRv>zvnqKaw^%?x#5$>$|e&`1t%@@kYX6;hzh9jzxLEipjkyC8rp z);ScU9oD$Fuy~WrSb6SbO?LxiP`-ud+r8_5=N(LVgkhAmcsj6Y#c>B@P1}KNB|!_P zmZopm3(`#xtxUqyEwt*?wh76LhCrjZ4cPCn)KLZ<1p;nGXzOvks@?kYMy~J(1G**S z1QE4ewLNx~6FEJFqJ)dtSZ8mVmh9^EF=jMHvQz+Kz)2Xe9X9);k?5ra)zmDgz#ZLP z;kc>9r+Flnu}l?+X~+AIvjpwKfG9GVYzVADx-I)!=NIfaE6N3%>u!OmsBmRIMgXliaRYSdJ_pg?z>QRMduPLQLk1j~TGz&iOE( zbM^9IcQ||>0)ikHNbWG5(=_@L0RBh{P{*dao0k!%)4fS`o8!*zC$lPYG^isevLF_# zH2bVA!~(NO$wfeWUZsVO@NXPNtyh_6Q>|!jX(f7(4$0`Xi20TCG(4**haF(DTU~{? ze+YU+g~%utvuUv!HK-^6fM<|hP!2aInqJ6!z?0o(8!KUk6TfY6#&hmYQg>w%TjbTl z((jltXNUxBDA*M>KGz93z>GTi;Oi?wB+$dRm}1=T_m!N&BG|?{bB~*u@KjZN`f=a6 zgH=2s#R}ORvd@*{Boy1j$IfhfnilPJp0*K>Z>E>b3G$uE%9)u8AX`JwwGjVyrH+!w z!X}(aAP#ZCIr3fMduHuKv6-S;Ymk7{NkQ#jz~~{D90@+{8#iNvgvjhITfwC&#q9|0 zXC7=V(6JfHGf-&tr_V5vW4hYeu2-LzjgID}$GxaQ^+IWnD$9afo2Q6o!9@+p)O|O6 zCr@b6bu;OBURn@rN~sGWeY4Y}>y6Xl*nax-0qmgwjy;uq2uzqhM0eB_$FA4wOE`do zK_5(^V~_{?L6O!O9wQB!arRRjL`7i2!7~a7S^A1I!C^T$tHg2qvsA7rDy5%~EXSl3 z0!j}VflzlNC_ousYi0s*RuU(T0_@OUihzXByE3gOp?Jj_?2&`c&)RN$%|q3l7uZqB zDtN}mWZmw4QGGCBd??p*F};JW%fXK*Xhg-wFM)F(Mqvok25k-zJfW=~ofJZk+%ap# zAi&qn`~~|zKIUTxWazb`@mW;A0o=6emb1GVVN}ME2}0>)5cNGT%ona21fGfzO%VL7 zyv!g$OK{#{Tx$_;q;Uk#!>H!DSfRQh;6M6R(h%*{bF5vR_^2x;&6}B>^KrtG-1(4b z=0>^Na|y;vX_8S6a^FcS#S-73IK~$p7se+B!0xcDmg+~lG_)|Fj16xH z5HsIs?TS<_1j^ZHrn_R_n$^jp5h$Omov>M>Q53zKvtH51a$tgiw3EUSA>silp|_A6Z3?d$9QF542VoCRaeg;m?Q2 zmWjI<0+(?!HJNKib$YPzX@?J)qLv0%6Ru4-a^*#hdJk2GW_%C^qT`x6YDA5`DSKZk zG=WJ@M2C*LZP59I;VGgBUV)CMLpuVz?3)rn0O7p%)IK4SOTv!sR)EQyP&u-TNI;twQC{SYQ`g!$2`un4NI=OkTJ1mqGv)*&PSVzVK%^eQb~D+~eL7$mGb% z@O+wW1u2$K&wV!yY)X)|ee1?Z{s9|Nbok7Zb>Sr8F!sp;?dg2v4ZOh);J*B%>c|tvo6J*x z2?#q<*g?v+|2WRebGpj}7Dx2gf~2T5bK1x+87Fdi6k@hEfGZi{(?F#PKH=~g;uIo2 zKYRooo-5>C)kL?5#ZI#hO~?ew2e>$vH+Ou=NalazmD;5;8e^s8$iz&!DqUlmlsVj! zLX$Aq?~_n9>)9p(X~}_JWIX2~eHs7fSWHZr$jOU4=;XKwJnKm#%A}Qfw=0DK8z-DS z7JwoobIt<3iNlO%I}7HNh*^aGM27(PRo6fiQ?@>B<}hG0G_&7^NflbTD0BG=a4B$o z2e;KKyW_POabQQW4H-ZgeOo)Yrh4@u1nA)k02l5vv28}$&WsfOu(*op7T8;B^M`g zeknZ2(NfOe#X~n*6S$u`L^RpouFnpe+m(l&o|gdjr@d z+Kju<$ZjKMacWw7TMG!@$aOjZfiug$_sATuq>xRc=Hx>1G#M<$p5Pb#_hW{CVX+)9 zJlfuC0=(h9={~?w_Ov)KjsMX=El1XK57sn$!~LnaF>RD9MYu&*{7f#eSuxHTWjg6h zo2q)q>G-pYb5~wr6r+S%C<1lSlv%VwvA`F5Ez&fa5fzkeivWN7y3QimkU||MEsDUAtQx@qg-=-x%-MDow~F!>Jfk z1`ApfyG}&eaRjXr+1c_}b@jOdV8U#wbq<0DDHt(u7?Cb`xpAaa4mEY6Wup4&apx`-!@>1l2)jlTd0$=N-J$`RLz z(6(U`!pYlas0j9%c}ff%D$tY1?NO4J- zd=qk=^HJ+fRwOY9PvSX&6W6$c0XtXJe1Ix7y^$6-{CUu?U{J)(fFv*(M_B)Sv}Nu^ z02wIJ{P=qPZ~$Oa!G30nMNz&#MW>2A~Yv#_0Tn}+Z z74jy=1>adGS~+zRWNfVo8T1!_YuIdiaSV=)nd@&&N{56&q_d2pYGtO&Ohg0b5H+U6 zH14f6<+I_x`k^_k%l2v;Zd^XBRLDO#{ToXd40jC6zB(r4ij5-?Ze$xzpdTnUvhXZe}Z1Ox{HHH1PDh|Ylr8uCFzJ7dGQ zyD9HL&|unY;Oq56G(c$-Gv7t(J|1_cUO44r!fnGT&U$Va>6u>pMqN0 z{V!cK*r1UZIeY>>)m8Q*; z{;r6+v;6ohc)k8@CxDI~cnqodzyfbq33sDeNQFwKu-+LrLqg@AdVykWN z)!>DFEH7(9V4Hw=`*?**R?a?=H{eONKfp+2B-br~Z$dZvmcxl5fPEG;b9_$-tKzgI z4}Y?lIdM&%i8SDT2oP6WHy@oY7L`-)>@m5*9#LTthFpfjmm=`n$R@fmyCcM)VahkL zMjXxuRnSNt;8j19$6)1cTIGO}ON$b~B9c_>@VZ@TAOFs~(lUk>9cZEP0x5EG@J~AG z8TfKokI6OH+5*d63dYJ?YBDTvW30+O))NsF?3Q!IpT`n-fsD*ow!2*y_qmezAQ*Sr zJmEa)t_W(4%Vquz9*^uaJ-3H%nHN|{9gs$(6vH-@>Y=z81rvrK=bcL)$wWmyO2Mxy znf!6?c{~m=8?4LBbXiZ0){I?s*BH*_IDBF~lx29(LZdq+NC&qa+)ecy-(NH!Rz3_! zB5q7`_qgCz4_(n~{QttIf7F9?m@ZNM+j=FigX`_jkXA4KU1aN`l(h6Wy_msJKXs`*DVd}5(o4#;J7A5bISiJ=r<+2F-=M*@89fl z?Acv$;PdN%A3zpG4BQMWZ(vl=kz#2}Uar=?YQ5T`DnDqnBi@p#*_s5$HZaHe#cgV7;h6L0LVbhC~Qy4O%Vs$d$re>-@R4g*KR>kc6n({r)X9Q;*teW70 zkxtSxOXfWJ;nSWgQc6_|n^HrIe}3Y3$Cu?8z6Gx|#utvxPR{c_*(&yL_I+K7y$Pqa zIL2A=%#+tov8ZG_mco8$Yuyj+{ZUOa29p_mRICUD8LPX?d$4e*z425$WU)&bEq0!d zie#i-&g1c->`x1wR*io*exSQnU6Gq9$HP+L^&2UT5RTxGDz%u*WV^(HmJxB5!J3DsiOlp@8Ab&Tw^fUi3CN@(PqFjseWC z0HA-bEdbGMD@Zy}!kJ))=V>%W%u`qp|Ne~Hk}%U z{G%M%(>c6o{*eI*g5|i$RZL)hxFDxgJbg1%DU!SB{eg=(`h!;$W!<(k))FFeWlGT; zr8GQdEB3RFrSnSvN2ZtN{Z`?r=`cVC-2q{E+x}o%1EFo?{8yY00IA8QzFuF#{|%tq zDt2&4?eaDImf-BuI__&fr}pr0T^W8xTWWFGKWKLO!X1@j)&@s?&>}{s%qK#t?cUo7j6b&7k3UUQH1ktS~qjy z$n*lwLS=?$jz)mVa0;~nBTAP`L@{o$|F{F6B{uePNVR9okwNe?hVv2Gan=0K~Mg-Xst2~k#97=?yU?Vrg@R6*KQ;e2qu z;i0JrJ`eB^;}AhcC^zx;8yqE;r$Eo--7b%c!k6-T{TKl7jt6B2VZ`oDFm~j@5jSs* zWF`TLTdp?^RoE)o%4KcTfA?(^9%9ae#gH+u!h$ZT!=2sk{h3d5%f3c;dukqc?lP7r zW}+*jx(sZpRgqocOZn)HIEW)-6w6&!k7B{%TaKjgP|7|}hfzWp1;Y3cdIq#&t9KX? zCwV=SIN}pkJ?;%#Jf4y&`NaZ$IrJY-v!TKbue=dNiRITz-z{#PjK6 zuf(?B(!Y45v@AyZX%rHABgekasil9TbCfqo*NsK{$9?k8c3tBJt>E+PhJ9*_8qO^` z>SrFs`HKdOtwu#1_If|rCL>MHn}EPK8Vn%_Pc6iRHU@88{Z{b@wAK-NGgsvi5W3d% zoCEgKekrki!ymZwFcWk@r^ADGsE@2zuQ8qy0hqhdLu^W&tHI@v1AIi1VxEn zE&U7No!P1?!`de7(#5tKDIUZF&I#=V=YBp*Ocl98co*0zlm?9$5TgvjPiNMGBpFH~ z%_FCbGYj#ZxCP8$PnMKn`K$f0RR;EHwcGI{FmEmLHlqlD5`Gw+1P=t+3`xSC#*}NY z?{8H_fNX^lDMP;T#5D`=awo1@J034TefA^6q0G%>EPzxyP>6Mq4c;ywtY2%umrnqd zmt{QY_Q_ooqeyXxb@YT7=IE%Etq5e0a=_zU9w7*xqN&j8th~G-7l8KR2br9cn`2b) zDMhHCyNxtTFdGc=4*6WQD$jk@zNrKPwRg3U=0lVc8+B~lS z?b+qgo2Ii)edrvLsXQ|+YF3Cbwr*=f2FlYap}=IrlH31@)`E}jsZq_M3T_1 zW1)Yb=8{4iQ%+p>$1C5q1XB;PdpX8|;oLM902fJ&cq2JNA#7bpE?G)_+D^-rJmsC_ zTq>Fy)CdYTCSs<%Yo{am|7Y*rmK;lRTu~za|C=|?nUvfKfLzL~%zl(?Y^=LFDneTF z3kl*9WemC;X>=E2JRg*R!3Fq(Qt-Rf%7bw$y^ zb8IyMz%*~#cs=e(tm)2*Gr^A{uLDf_?3snYRv;UFOPe4X2?rd^zw3(N)>Ja#-_B3r z@?tChPz#vhl;}xmKzTW$D>hCjii?bHZ&amL`=W-9k!Z&d7Oqd9>-+kW0yr z$gbPyLLgOkQat|kdp9b%1^BV}NPyXA+$uOSy$uY+ zdDGyT?SyV0AUkS()9}%S4%Fe72i44IYyr+X*uxHm2H+#w%IC0`E&U9!T#Ri3a)!Q~ zFx9aLC@}1$MxHSOo=y?h**lX1HV7`0I@B0Ld(xJCW=u6)lzWjKu&Ku+Ah_?+AP(* zmvUxx!LKVImpf^=GHu6au^aU$1xW7F88Se)Y5{*-Z%G3gwPSe^DIxK+)-AW&Sf(C* zxKIy_h~I5=oPAHhG#Krs#sWxpP8)$jA2n>~hyA|Rqd_}{)mpz>z>x3~o0VFdn z))}#!zp>-YDTvGG#Q2}YWwU3;HPp9xRxlwR!q>UVdt4s@@u#Es61D-$dh)QajK24l zU|uo$cQAVC_|=oU2$UatSSBFjcerlYMt^yu4Np?U4Kj{6m5+a4|G5RQkRC5*VPoM* zRnayz;MEdO&y?(k@s#9BW>M7!zFrNXn`HWd6XrZvCvh~onhv$dN6fx)RXl=dJ|~n> z1@b;EeC%Dhjp-!OET$z(-wvz7trMu6pfVx6Dmp0$PU?&B;N@&{H&Z>7c4Hq(_Xyqi zHsps#GAncoYlQN%BacA3qQFplZnCP_1>6qTANnfa;22%e!Gm`i&%zrw5u5`cIgEJd zIyl_2Oex}Z_PkElax*BTa~c~3w74>jkIGp8eKb%id%G+rhAnlZVi^7C;(|ng7KQO& z<7Y5h&-uxt$<7N{4_0K$^wcq6JRa)hy5RsE4nzS2*Xd3` zBEZzK1srYSW6KPFqk#W69RPe^X;v(Kd}f+CNt>PkmA183B6CA@Mz|O}6J=KI*tSbL z(CA`Y!6f7{3ponrevch3442Lm2v7jyO>06860Fam_nZT)&n$N(b5Q;?E(h}6E>dO= z7zF#a#H>l;(dkjMetAqJ>k%>IcMSNi)4v<9#&H^#qG=d_Wm8#NTH zv@xY{yb$Y<<5DmUU`1G1*q8-ze>2vVf6;uygh{9%32LcbwBrp^GCmb~IV(s-gpbf1 zHkESr!*wWri?P)KFSu!3lH%j3du#Y5Y$~pJOEI&m8uEcI?b9<>gwXGa#T?)c##f04 z@HY;VRmNbLvf}1i8U74TBUQ+brh2EyiFsDm2D3pu+RP-qFwLhn(}uX_mz&A=ytY{} zD^ur;q6H7f*gBiS*|TD}^=XR?v%C~ZIQPMK2V9d&7iMumNV}7z-d!-rG_K-ogh7)# zuQ@dwr`Y0m%Vp%#iY16_hL58LgC|$MGKGkro+x`ex3EK@i!2b;Xr^gX;1EK%#|NXy|)H_9#-qYfNXgA-%1}S}-AamRP*+@^~S#9H6T6e04 z3oDtKwUTXAL+L|*(#va4#<_u3+_oF)0p!rnfeekwA8^j=gvOv*Je6|~{qCarSz#1< zF@Z5Kgxuu_F(|VT3iqK(i>aoFe0zX@Y5R2}&;FJPjaqgOD#e#IH38*7F@1m_zXx3K zvWX4F*5DA6L_gfkiFf#cz}^kpB1YY48=Y^x9G+VG+l3DU&ZD-wxF15ak>Ynb+Yk<^9X#{`Q zB5OGZW?JvN0qCVQg`Ug_$rYPFB^j|ZdbnJDF=rjO1Vrbd3T@7f$>r&Yv*Pc84DogCi6KM& z7>^ubtG67O%$bEag3%=Tgf~w0SifVa74-{Jd((-)F;8vGddr?9-S=tp4l1AC)KeuC zn*dipsK13@8NmOh2nahi`BH?c5A%_KYTM?}&qRC}7~5!c)#0%^CUofq5xL+|xa&$J#ef1I8o%LR@0p1)Edr&rq~K9MyOKPBHa{z>Wiq#3&9*x#fcP|U%0 z)^SyvW0ak5d_X-geI}Le!UsGdekW3C!15xyd{Bc?v?RHM7~~g4S5Xf%e{ZrPN#0~3 znCDgdim~!pY)-5>0;NOq-S?7~e1;WW_fU4+v)_UBqQHXPeVC#; zQX5Qj4A;(eN5yz;d3#$EObg)2_6{5x?GFn-l|`e<+b&1&QTe#y~>=SK$47UTiI1@(G zeiYJAy^p5IJ^2m+{YLFw<24*-UZ+NB$ewmmsA2ws*ykbO0Iq7zU1#1O zE9^!$WQrUz3~Uoc|3WelE@|0V`@3>WDy}p0Z~y8EnLx(Y1pI3-RUUHu} z<%RWJ%+x$Rwx)fhu0^3AHxYs^AE*{~(DjtmmV{Gl3j{n=C3iG2Y0eID+6KW|xjkVM zG^F&JYQ|?_`N@E-Xyep%oUtA)jyK}m7GfR%TJuI@H&v>VvahPaEG%>rM76Wym zU|(0nG0brZtOBJmZu2&y0lLcq3bUQY`yU27p1CZpFbf@%VM~Cg@~{^DG*jdIs;+JY z2y0odNA&k9|GVqozazK=o&yh4=t?=VE8uV=yV9|TiZDU1qV>w0Lt0oGS%S+da^-WA z*pYkEx8kYPP~8~)iAfhkckalUp`Id8o1^sk$VOUzJL$1nrS8l2jG#^f+pr~cfwduv z%afrbn>t%E$PZE>P=^4hg*j$j$2FX8I!DJ-!K2^4{GY$x{;zft(e(3f{3MK;4i+gj zsT0b^b()ZXUVBOgNbYv$%k2R*4974gdajrK982zQ7Li-=<%S&2WRs-3a*O1gghWrX z#hgr_6yU~<;fB8eCIrH0tzjtvD7Lt|0gkPL?2pYFnCT98>!gmMAL0#4+)X^81B6UW zz}o*?e@ZP%qLsjoTg`6-&)-bnk3U?-XBQ;pafq)~j(`*X4UMn4cK8F(->^dFRV2UMhQgrW^?oJ*Xofh{ma{1pWX3}0* zK|){>U&-jT0oB~V>oSAI1@roo`E{_jH2isW)7%@X0R47+hrayg7aOq;+_RrawS&2y~fe z;C9j0!dyx}R;#_UnqUMB3ylM*%r5&S!V8FFBqI6rwck*#l z=NW}7*73zeqQfeOQDwi8Q4q7{xjS*SVsaSq)C%I+ov~%hq;VYmdoa+$wPR5M%n}jH zQ-}(XHcrg=M>8#m`$+K?HC@Dp4(Z!K$ULH|`k4S2E0__>cA#fiEd9VqNg6^qY^XOD zD5tXdnFqZQnx3jM{Ylvcg4F2Q!7)W(a)1MyYJ2J-j_82{o+}wG1iSHyq6RUmAO~7C z|Bee%$0+Ch&h;z8qTU$Pv`0|(t-7jFSEI_@%B^ZM8saP%8ZnV(5Q{>YnPK=!<&A>| zT{0o(BnBn~2H-b8pR93xu{`)1;yKCm`})%sfRp35l)<~Iq|ys(IO$E77YyAYw?oUI z@TFFKr-CkgV2oA<-JzSjbcvYc@>asyvpKmo^zy&84HTp{LJKU|>bJx}vW!Cb;}95B z3*_vM{=YrhRdWRIVnHW$OuX6l24(Vs%H9kvj({gnVFlU3jLG`6Zw&B1%>PC*5g%GB z@4vBXWEi+CpV%u5#HqvY(v6hLKcbpKZ=%W7`S*#;=ARcsy>FXUwNF^;Rp@aQo;eRB zhvmK%#hx0W$jXrg7q z;IZ#sXIsnc16B*%IT7+Z810|iJmMW1w(@BmD?}8Hv&C7Yh+}9sV!84J8_5~cpZI(b zqs-2hicd!m$2#QZ-^X_n=)bGR{-`5`%0fW(}@bN;Z-zJf6@8Am`c9)-8@67hzFx8^m6&HXJ zC@kw43u8boa~YjO-Y3?}YSj)%HVxOCP=^fGf^23cE}VzJ{*23q8EZ1`@22Ia zfh_SxCJ1JzV1xb)TOPk@VSwyNeq#<{#$9oH1PgaW)uuDW0Za%kl_^fwDJs>vNw8B-D!O*o{l(sCATLy1shYt(Z=>$2N`HkJZT%#(Px&&V^ zB1nzQT$@ivkGr@$W7H;~uEj|7St9ADB=a~x7c3r8*v&f~Bn0BgLVwXlQILjG{*2CU zXpMt2nef2ld15f$ngk|J z203fts>An0P7P)D;swh{#x2y)q{a(2s?;!s1U0g!Zv_#So=+JZ`thda=`sdHE?Z1^ z5X0&g&xD)Ymwlb zs&`U2Csn{#;>;Bj=lYy$&x71N2hvXFly96DgGotu3*)qqvIq_>Z?SUXvU1`8_gQK1 zM~{y!&QS}w?S;)-0ks4i>n`Swz36Eg=hQxNJLNYtyb&J0figp#SG~&c%;5u-o>rcs zrxsB6g*WY5jp3G*iK3>3PUv_r_%YNikNYDuwncG18UV*SCU^-{7vKSa@{%352O27@uPj0Af~elQ4?{4?*Da zhwykXdZzLy=`}aGq#B8>E5)w);>N1y!1UX;OIgT#Y)~17piHnZTEFNFKb(5pyJRl< zrRX_qee1u7monbxgo~`xzD8R5#S@0~ef?JmaKnqB@n00>?FsSbViL?Yh)rBG~F(jcyv2AOLdx5XC@t>^Aqf#05T!D z+}&a#U(n?6rYJyR70Yz~v>*ofS~>1SsCfbXsMh}AclYeoTGg;Cv{iuL0(IZl-|YUi zIzV*FtZCFgj{~gu|DJXdV&FBD7vZ?IT4$_@S`hIiX^eO-=iQ4b0e)npNsM? zMKB>)j=w)syvlsfR8qhwxW}1<=R+HlHs)a}xAeI~pP%{8?m*LHp!dJKP8%537O2Oj zaL=}3-)%E4ZSH#}RejWaZ`cSYkcp{(MS**FHq`D)j1itlIYn#6vC25|4rj25bclR_+^YvJ0f{y=263c*ql%Zk(f&!vI8(=;qGJcr4)IBB}@L2k>{m-S_n$Cje`8mxYPc*klg;oym#v z_*!wdTZAKc$mEQ6@6g1|ZVL}ECUpl=9lyeEZv;A-iSNTDX13*vVtV~Ic|FyKsA=Ar zcmU?Hzn$l%+Rx(9V6HAi5Za{}gp!Yc4|nfAsWb8u-0*3*k&~r?&q{flVg%&Q5OI7JB}gcT%zzxN-bBOwXpdtvnW;P>>q>SC@{!d{AA zFJTtjH|`s@n+sh19=Vu+?Xv-)4w7r{JOA}R^SqUb0#|7F7T6T_(G!A!U00>Y?tcA! zUU|%LFnH8B@c{dwCw>g%fBsUpg2DRqv71URRTL`Y+RB51)!l?!owi(r1_{0XmmlROEXC)Cf^RKx z#$0B&;`kcH$MMrhC*x#lsF%;4wuQ&{Nr4H&j_Z*r+v}`D1;ZHnMG;vo=CJi75iQ4U z)AAwF`+i@W0qBL;l|YL?MwE@Xt(qQ>FOf=P48VcH?Mx~c3m=Cz#s+`{h}9~p&2B;C zj(n#-B6-lGY28$Isc&~Y#Uhl`(In?X-+TX`@BU~ix%F3DLyrsym4N*d{(Sq-EOkC0U)v(w_}F(Z zT%Azfyma8uiA8(oInR?x{oR&sZhWx~Xa|4Lw(!JR@v&e#gyX6GFL%?V1Ap0B1+Sai zH&uR#JD9zRD-yMlYJFrP2iak%LPCU)XCj`gP1hchlf44O??KY_^Ax4ellgJ{vJ7O( zI3;i)_-E7%6~+cX_cwCfm=Bi6Tj`JARsa8m#g3=;+}9k<2g>MA7%X-dyxzQ8=!N`1 zB7D3d%w57tJ*L^?TmhJ4uia(n@#YBMoMCMe5g16##BX9Bc6Kza-`y^!MQ8Rnt3zTtJfa%(DJW{UMRwD>jw|1tsCSnL@7|KI}j zsuS6A!tmiVdpZZCm_|@I;gP(^LiBU+Iq-;lEu#&Xl;{(tg`GfWR>D}i*4jAGb9Q3> zZtFegBeh{*is`R#1&=y8HN&$c0d3X!?cA|nPkXrY8p}K^gDPi-$fF+L9sfT)0r*@& zaLJYY?RHiv8P{fY#!F9sIBsvuZ*w>dI{X5O57;+W7W+If_yqWymGvVtrk-rB|EOif ze$-H~3_&FEM7bb`UnG_k_VA|M%@~3GBe9IZ9n}S&%V@ETB5Tn}?nYpzI7zq%dykO| z-p4(Q!$RI=5`YzF(EB_1!M5Bm%b)?Z>P@_d_U>60d;~&W{=l_)jq%m>z2VYb?x7fq)SkiZ76kqb$Zh`++^`lkU*m{L;b2WXv}E7cU(Nx1SjW-+^21ZcaLmS6XE_Xy zuQ|=0XFDHY-7*o{I=#QdfhG57YCh*~<)9kcGA23D|5;HyksCkg-PbApijv?{C4&{u zO_Dwy-_Lyb>O45l3RIZic+SB+l&p~hmU>|4is2cM!umkyytNOV=$0*}sP68hFuou} zY&C5ezidGHCrzHM;H3y7qi^6-=Y*&7u|78F{CN9*7*st3*zxm6#&&n&xhufK+~80C z^LnQ~jSfDiI|o$&%l}c)Q7*)W-<10^P&Gz@_}DYFU*1U3=3{H|sb_e4Cnflb4kGm{ z!!tTkLu$1IHV(P?t#2kp@;mzf-(LG1D^>~L^_=4U&|u$Ct0gY7xGcX_ogyAPe1^w3 zlM$cF(1F76GY5A?*+2I`{P+()LlP@v_jy~HM3^}uAU@LYZ|UsUEk9hQs6AZd>8o53 z-;3Jv0bBXd(sS$R_(37}ef=@O9Cz+hsj$s+SkKkGz-quBpjs)A8yP$_+exfIY7G)# zl*A1uae>LOnQim=ioCVpWNv@NWD$9N+}(KgLW0BgaMf+n4g9fv%s3^UjPSXgGk!|X zGNTENAB4MDaG5a~c=(#|03Cc_K=2P-B-S$Qu~6)f@UyHBZf>63ikBxU|8rHx)#(!p zyt|{kAO6aO{GT?%1GJWVk{{cENh_+212@--0?Fj#g&ip*_1p>I53Y6wt@e2ben7a$ zWmrurL&ne}87cSz0sjU7tUGJ2`41a}+X+0Q zy`s!r7pnR7Z`gcE^eFanaIT}h26LL?a(t}==egYqPxtaCm$D#Fejv$wI8X4qmERdW z4`(d@;CA50dTDE)_yEv67L7B|BNo*S0N7YPd?-gz&*l*IaA4NM8mRqzlPs!N12A{X zQ^zn@>stMTkHuwrIc+XI&u{$^40xdWBxj2rlP74DiHe(E6TcI^k@xSv|wTQ6cC8m~3w zM}X}6`h#5$J4^A~(r_!Q@py*h6^{pOb*WY*BW!WQ=} z$sN&~?K3{2jpP%jap`2@z?_{wKOCV?ryR4>KrOp?Z6NtzYJz8?$|pP?wf0M^$_UO4 zoi_1LTI5v~$xkzIiU-<{RqgzUDCd2K9sdsD9UsQFg z4{KUf%Ud!2VO>UU1^4>icQUe5Hx-*-9`IIa-4z(CEL#7ksRah!KPxJ1`&KtU+?B{= zkKC;rdQOV{j?bnmD7LPjCif0)LZ|Zw<^(NT!`bJ|TJQ-IeaKSzzWzJ>&qbtkCpLJv zP~DXxF#>dsWCq`0OGCkiKK`~st?iV18eDuHZgky@Pf*zh70NOk;I2%-2H?3KjP=k3 zVZrj3`=Wm#_gUrIb`aO2 z?X%q}AFP?`cjj05&6;lyKQ-#u3)yvkzGZcQ-{^#F(FSsOB0uY!;?-$+i9) z;YDW7fM+=kp4*`h92+g|7F%N4E?$i&gTRST?a<@iucsq!%x(BkZ{LU_J{PwW*!|2= z&jP7`)lW}7h{w^SWw^*4X7>;mTsFH{?uf4jJgt*fjdohFRX6_S1IDst%H(}a?S*KL zczW03xhq}9G}zE7Wa(^I1=8Qc${j8R-7}l=kg1#p{^q;7dO60s2^TcJ(*uOpqo8Y7Do4*;id|&?o_TA8ieM0-u zSK#sHw(0?PzI}+0=Rii+cWX!JHfAN>m&lXEll7YrWynqRP@u5>tfct9{sRy&u_5G* zvtl$KN}UgKj=kah2RyhjD^& zpTdRd5=KhK@JRYSJdK(Gk-aKD8!kV>^GwKN`4W9f%ppZP6%pgG;tKt6SsPg~PRD0H z)HBGM?YzmKwim*RnK_EAzY&$0I{aR=e-hJ`134bVL%2DI6u#d8620K&l+5%+{=WVO{5xq- zPqk)S9D7EDVey8Y(ClIv2i>S^vEUlJ0mz3)fqGE>a5I-6(o;VWuN;hUubZn}@R~kdY!xCNszfSwm~h#9dVrYW6txj1QYH}JoJCWr#gFwAyFK1 zSEhf|0)%s{HdX)6j^8Fu%=Cbz{2HC=ldCW|Xan*GJl6$l zuN8Soa62<@%_{1F1NObi|6u}fHVOHRoV^)6>>{30e%=0*Q3W!K{-+Sxl50{%K&buA z>}|m7w)Q0 z3LZ)j(m7y}xr;OJHS-5fwk@`n<4@c>!WZb4eS{g8GKxPW-j6Wt%~(nx$_{@lcp7R9 zWIGDlVYNlg;96+JGd5*A~U{Xsr{> z5c^`b<%d!D-fDm;>V&VJRaT2xcc1SNqhTeSC z-u7siP`Ob{gS0T{QUgJ`7dDCO=MC37lWc|D-`7TGc`+Krmp``t|_-qY1!E%B0zFD|%-^U^IBftbvfpc^rIJE7zAAe&mMYm;LnaQbIUteJ=Ny?@mkU3Y7rwb8xWjV`XpM#*fJJOR@c2i3VUv?m zi&vVdyf#9H{ORND`bT|LFW^1`eLp*QaqzC8qc$vIN0X~;J)4Az^0CtF8WI?;O-z6< zXj&ii+_r$dc!fIw(U0P&;BaH@K`n*wVZNFR>u1bxIgZ+Bp5UqudOX?a#tLdc$-J$h zlPr9$kh&A{^86O`(;)mtmC+aMJ4Sf)TdzNW$1z+fdltqp@{l&JVQ;9>r8NiXS1KN6 zS`|$pjTAC63xckD)zKDF49$U2)mH9<>90zCKD5>j_N|L>0#pB#{3yyV$ATHmbxbw? z=^D+aBhZ%5ApEm*ff}NMR|6wAJbjE)(ana^7p`fc?rpA_V&B()fB?DR>-2@qS^~W2 zZj=r*ATb!XiZZ@<33GB>y&Qvryo$8o;IgXiUl~kTaCG>_QKWh1#~_!t=0;Vp(E@X+EKFuBq>f*6Tq`YHp@%HHq(dx_(6@{wRP5*Sng885(_ z3q!m57=j&layZ~S1o*q+{~^U4piX5u?%7_;G#W72y?qqOP~80<4#>nQD2R#89}i~5 zaRX=rxK`a=K(1rn-nU6OU+JfV4aGRCU2bL}VuWVwhUj4L4Di~Pux6qkJAa#pYG=vi zhUa#1$JTZt9b%ZkhHz@FAIs7={sq(N)s>hROvOfqhxC=J+bHh4I7Ohx$Ee+PpA%f%ls_ zPxxdIQ)Ihal95U#W<&l!LXZ9A*nBuSJ5Vb_jG40dm@!1F%wAIjI|0etPSNMTkTbVh znu4Yu&{YIjj#N~hGW}W6P=OCvh(W9rw3r-i1DX(pauv$=^%wBps=|LuFmFr$U`v20 z>C>)}Su_jx{PJlou92!wv7j;Y__J(;!%qjm(ow2U;E^Wpdt54>cWn$gh#X|O-7b7k z@HFI?rv8#wn{z`}ZBZK{7DR2h>>IgoOl2kquM>t-jdde^zw3EHa-L36RiF?R;{CfL z$IB-}#tn$%XCV6-V`lNY_y1}C^B_}h{T%!|yVk1~%-E(nuR2hU_XOP;r@`tBfhnsi zr=QhBwohJ;QUF+20!1jWEaOGY_IftB3}X%`x<;qeqdvWk(ZqcN_~l@6tXhT#x0HZ= zoT|R^!3IlT9Z}a^eSIT_`KM9q?~^o{Y)pal`%@s`0xTRTe{HiSO?1BFh1L8+4JXyQ zWYK5Suq3*fi%>?7SBsCXS4RXon2TF1aA@9!AF$xSipP zgyFs)NeViiGfEWR3!TK-4_L@{T)O01sk)>v)u6D=$-{swX}n5RYbU^1CA^|uhpEBs zBSRRxH;+~AIi z_-eqgAJ|mt;P^RpiKz`FV=&m6@MFA@6F#Qs^@A-E6#yocG5}51B6q;O{$t z;F=HXA2uFhcm=oLgpslvU{4m8fTGw`zS;XUVx&;Zl1H}$`YF!L>>S@%jcYDlaPk30 zEt2<8#)v-f4KDvJK}vQ+kK8#UqMneJ~=fLt3trCWCyP zMHsRf@~ICtEOov~+ojGfITa&hFu3G&nwkjhXMX{3b=Sz*9pz-;{eV#HgD`1dJy223 z_=1XP^!Q;!OiW6}y9k^-eTegefbS5N5Z=6%wrRwR11Z%ZHL#7*Q6Tz8{-OZEFdJiE zcvs28Q>TsEBVi5$3Mp^9U&Rn8r#Eug8bryf&r_qx+b?!!NdUVNi}p-g;qyl1maz@W zUFYSrH!-gex!`kkAo#-XDu5TFQwkbz1+o;*4@E)WYGw+MT*~7|)~Os>$W z$Xw!Kzy-cbIojluHV|PC<+@m)c-MSkz`uL(-qLimN%AwC0E=1r8(K`mj;*7o6 zciNrgBXS5v#nW%5>z5LU`?h1iXn6AN9k7KQ-Aw#qI;G&vMXnJvir_b6S5v6dHoVlL z&P$}zeivRh3RP89n|CM6g8kxc2)IQE4yLnF2#@pJRyHQ(Q*DsLDQH+HCZ^_f<)3YBbBU5w_v4H3VWQj%nlU zvsQ<_Ub#*ZgG|URf%yK!`%03+1rO%A7|sK@?3{>4J%#7}v`OPoi0%Dol0s9Pnl27) zvr2#WQMd;zVr+V+1;W~ixvr(f!Om6E0X}B=Gvk%C*$`tDs+xcG3d6xWSji9p(+8ij zygc=phVXJo$o&17#4VAdkc!tgF*^Gc!2=+e}6Bb-Ug(}^Dp<^M@bHt z{Q~o=nwzEay{ldj{_v2l(BH6dfqPywiB%ku0DThFr*X$oXG|oz9NWA4;CYIquv55m zOaL~P5!SJ_F-q2go4TOs6Yz$o!5)OPsnN#+OajhP2CQ?lF$Hz72@&WJ;VmE=2QX(e zeknlzh5*utjM7!|%#0W&Gpb5AtqSP5b;xcu)?qtW5K#0Qc7@l7k-k*7*D)dZ;%hua zg*KA1;@V{g4&SB6wb*K5OPi(i9#ha7XH>$h1+vn@B)SBQ&6s4qXD~0K#(UN$c524c zpwa7>@XV6YAHCOu=zRF9ZD{;vPl=;E7L?s4qH5C`>zLsWW6^~o7RZ=|XP{(A)~(`gC}bR&u+J%K z>uaTaOkV(N)qefiA4tAK_jhBqW#vBO4b>8_G6tZwV@;%mF6XzT12?7MnI528=Rp ztoMl+hj$y!noAjt4nbWoHb#V<-F*ayIQV`MVg`9zbR53H>O%h|0Q@5mD2KSaon0;- z!mXidjQZkS;{e#;)M3*C>T%EU-ZZHIiz4^-8`P#V(r}Q8W)anUON&dar*P^Vr846C zxwJ3{u?9iV+uYUyg?}34Bss0sU}-1wN)1UVLv+=fMJ%A6GDfC<@vg1{f^P7qW&jXw z>Mm9KwQu3E!Dy04V9zcXX+#)(y$!BLJsK8&U%wv!PVX9|LkkoJHsL&-eAZ)i&bmsD zks9TAP&#$|ep#$k>aW9DpcRFs3R=Z|nd+Kw% zAWUMVMN!==*y;rq0)f88;Thy`I_B2sSZhlEpqMtbGT<_$x!q8AHDxj#9e{vIbt>0< z)!H#KoRaAG3L#?ZNBxLKL5Mup>-bLdO2Z|-d!Tb9p z$9O2aGSfCNG}Jy;=ScJUzW!+ML$AD;{f4(R-^GG@Ni=$X9gKKdoz)`AG9s^i_K!6|W8qRi+39L8YR z`T||hgXO)s9I>Xf z5Ff(UZyCM-k6fV8E6O-vq!-ZdM(BE5;IJT>qmP1i3sTm3qB8EHd4Jd+d2^&PJ9RP+ z_oP!>$x8{x!24^nL@W=fwUOLa1%xM~=s?lYyiJ9I_6SU7c(>Zr_6FAc$;6LLP$y$w z(24I>@?9?}P<6x@qH!laiKNA>X`r@EM((>!4x_9&h5EZm1AHFz5=vpzs7k84A~q8C{MGlGuhD=?=s$4RUJ3Gpp6Pli$*m zT$pmOzK`X@`&kUaWw6;YMBiOe)B?wf7k>G5T|}LMVhayZr!{U9;F^aSOz3s10gPdN zI+{W;SdjUi8?AlyFc7c*5mL#)FM7{vr~O`kxt7yo1O1Dh++}dsuM9?6r?&iN=O0Ii;cEoaHfWKtTP!)4SpwdM_=%()#du~*U%PiiM|A3PjxsrWBzV!hnh)_%uW5|v-O6q{NfK>{m zLt7+X%PT>o+CNB!uAzgaZXOt|NYAdy-i0Q?Xs;!sR?L|z`Y#fL(g2B6VOX6#gSU-`ahO8ga+~!KGDi4*E_MVmo1@gc8wu4}@@o<9`^KmRjNM0#a#DA2nzX>) z1igV5Xb@N93n#}(RzYR>NywninLtnZ9H648?#LOv@+wx$=AIQ0#HE>tgTz@%uhIiJ6H1WL{r^PY9zej?U@|6d>HTAIme)m_a8$j7 zV^zll+o8~sr#bIGVhEq*Y-~dPIXG{3iZqpMpP~0NM8mfehRH-*%7snSy8n`oL3SgK z4Xq8oDA!|y!kxt_~PTpA5(tN0hwa+lLHcS-@8Y5d?9(H46re`sy7-=j)NCyu zL0k_|Gl{aSNg;nDWT$~c!nCT zLvEh!MJ-owy7c3kLN$TG1p|*E3j}oLEo|6`;Vnqmmdchci zb4bHD^wl;tK%2&NTL1xFA)lIqDRs}93&=uzLQ7bb-Ecs@iu0s)()R-?dRZ}Ytnql}@>XdXx47`8c@FI>B6~b6? zB>h$%6)s?f54fczk3VB#_fWce4`A!sbg6DDfaBiTM>pIILu`t0_)+L;2r>- zTdt=>&51*CO!j&4DmvtN7%Ws%{8Jhbn=k5Veko50BAveH%9)1XvZmN_ooaIIZEU%u zbb0xAk_c^@AlEG;jg3v}zdF?O?NNGhny_aK-_;;a<3Gqzh2O9XF6shKH;m+e5VP^<;v&{bz8OrBmS*G7{XEs!p-ei3vP)3Gx$^@0Y)^!?w_l9x&p z{vnr+%zOH%D!JnR|{1Sz+)eps4|Ws@->SRteAatZ#B4eqDn!ru? z)HT3Pk!HtESO#YEWf1se2--SeC=-`EkEEM&Dk-IAxf@@A?KjSQgsY_*R$dd zFAeR#bh-hsX*TR>EVamPjw3xG4|dFpz@`(~6pw)r=nJG7DxwORsCDTV(SjtM%y1f0JRFsQSv4QSu zsQd1z z?QkrYdSceh<>A{F@O?hJ@iB}Q6sV3;tY0TP8}4u7J(OPC{0__KIYtL=&yPd(MF)gH zrI(ZrQaA>);emc(JLMVVNsq&(-*2jnSpt zDBN`K0wb-mb$AfJBAcspUe&nD6JuA;I6dqP6$!uRf{rjLTv&B;lvv0km!pn|-=hZzs(QOH z;|jjd^c(8LLI!>tQHmX3#MP81*@;SV1{Q+<>4-E9H8a2~qnN(0Ki~f_B9=igL0=JM zEz*kId{aipD4B&BFZ>eB;FBQW%^Yqfw-kRyU~B)F2BAkbG%VfVj*K`_IVcj(gPoc8 z@sLVsmSsUVm{FSqte~~OLC3oYA3Rjl!&BIg`}SmT?*MCZF1PQZ(lF;`SRmrz^1BVg zC0R=Ft35zk29}i~D2FVsO=U-<_p*a{3X2}<)?jzY+{7EPrN6wYBhkHexGoj59B2T` zGO#GR1t@q$yY++{_y51UAM<)}zzpiA+e0jzaYNsHHz7>SF3JcqIxpAVfzxOCtd2); zb3Z&1l+}BgkZ`plT?2&U|DyO8#E&1RcqKiC+U#v{Sp{bOq~Y~fWNL#$H>0+3w`g-; zbVWCyzP+}fj$IBgN@iU4&Z`kRlNqu5qq(~x=@YzRos=Rw>eKgQdJ7P_c-%S{Y#ca! z*P>N=t@^n*2i2<~l*wK7cy6n>Ia@R%EF4Nl|4?f;bN32_6=LXH9f@GlnQJq84XWVP z+I#+WoW;Q}5%}L`06A&+5xVr2)+P-*KF504OW!K}X3+OO$(EM@3IgkoK? zD-2>())3DDplYhi`vJ6An#tSF!ACni9mLQ$CxMO6e&$v+eFPHgSt$-m;&>jf~{9VL}h+Rn$0$!%}}< zG1BD?H{xfe{@z73^&6&8=b8D6DWRA*!8nwqIJ8JhctaXaDGEv;7xAN?hd2LC0=UG} zKqjGH^0H*L;tn=wdN=8;?pnbzalI>gM%R{gBSP8cyDClRpc{Nw6x9XQFW#4#h{jm% z@gjm3QkS^}$+o#LLqE_@nSN87#YYL}l@#jw+uoZpSd=SYhds2hhp^mwnh6b2Y6~Qh zF6K#!*UG-LF>E>GPRqWN7(`om{WWFA$L9YKkiL@AjP;~JLk`8yxzod&YgE^4K}P;G zxyE5nHIolIxFPym>iLMR&6fOLB1RjFD%BL8!}@*w9RwJ$(`tZKRbdHDioupp`xNH~ zEI_x)?7|(#xDy|ps549+tJKcHQb#JX#$YljTxrWuVnI&TMimUZ0sw1npl$<})Wrx- z@n-ZW`jme|MxH__E8p<>b)YugG_TDZNe9ft$yaexx`^vsi|AtE#%G#TigJ26JfS~) z+crB%5HlZh7s8veaNjS~Q|=yRiZ9*(%FD1f(h3UWYwk_N~d0P zg9 zR_}h6(se0X9y#U?l8?~ab==m?V|g=0M@n$XwvG9d4$$+J*6Pr(HB`X$x6@|{r>xwC!y!MuPwF7JGAmm4Gw!ti`G zS=>;%u?!^Snyeg-!w~i!ER=ZKnIpOIBIDx=1&zGsY^P3u;}9K?(eX`hwXTj?dOm}W zlOTFC)31Cn_%t_UXzEbuQ1p@?y52)(gXvYEoJZ7>mv*?I=cHnNGeG}mJRl3BZ`OYT zHOS-31fo7?AM_nWT~KN#+mY^Ya$PFF?ASc?c%7Ng+|jFZRfP{l-Bb}t)|OZ3IhF|J zOClFXE^)iw2*dD*uwd#Vs^c>mF{jsTq#@L|$uu(WumrxlN3q{zmHFP544GDs#MXJe~z+uKSZtajDF%*W-1;v_f0j$%S@9PhD{?!NeH4_Je zkwzQB6OwwfH{S_uk~&!m$@1dC-@$|s?C-z zHKFMCwmjfCd~A3%FW0*LbPB)fb?V@e3By;Oqii~^7z|u1HSd|OS&6vs!6dVm>t?kh zWJqtp={>$Mx+F;rSi8?r2ch?fb+U$cJ(NsR*@uTg!6;Vdxmr>XA z`TO<5(=1IvFSg1QCauQO%F=*_ESEJ4==T);#oU3EnVqISMbroMUj@Xf2G?E(v#-Eq zYIUoCCLIYohqXvQ8cVZc6zZVY82@_qeB4gl19foeKtYB}jG8IyET{~x1WovMNot)Y4`GAy($ z{s&@F57m8oyDuoX)b!B!m>UP``u$f?av*S8!Um;=xhDHr>h-@tbJE=y%lm0Tw5B zakNqwaF5mOSrcrCXnGC{a)IE2-vi+9I)LLM>uXxpk4OTpKd&T)Hon+ek*3oLLVfD8 zX5%nZEZq`}-7Xk}hgPtdgP4rw(%ei&m$`9NR!`a8@kGc3S4}EGM4k^iQx5`oNWTP# z*6!L_s*|`NCY#HZ=Pux~1y#1x6m}s#9@pd!1Z=bOZZj^hsORK)gU|x0wL?#hc)LKt zywN=?QGiI(_i~h92yV0G9Mh_5qh@uTqp|4esbJH`oAsn7-oaWcSmN*b+oxr`cmC0*83gyj#S8h*ED)M@`=p?1J24Q?wdXizrX zVAyW6Z(jNPG&Yr9{_G~2nuk`=C94k!ZhV2L^&PjzaT>m)8nkh4#+|Z;>`{W3nq-BZ zD!%>wsk&++sReFMhEAbl=LAVmiS6)rFN>bOKDmv2Uw_yG*!+epMv<+wR~;&M_n`jD zG>G@jd|?wKb$WE5{=@jJVT%#kbE!hzhpG+3*>?ZEe!czBi4xtXSrGAXMagVNgreCzOHD)TWdkRGG5HbTZ-B6tuF;y%1@+Y zN(4PRf8^3>566KtB9~fLQ}moHr5{}4GOxK}hYwNR3NICNk-dFi|AhmzO$98S#sXga zwg=Nvr>*!JL6SBQ#(;LuQNMr)59E@*^i~-jcPlOF$*fSSAtK89w!fFUjw@!R#ps=G znZ`Dw6+EbPXum2Ys#j_=PDCkWNy$xt!YzTot4EOAPIyVU13-#%XHVqB3H8ieHRSXS zMWfwynsg**K4F%M;dAz`t5wTSHRad7$`KH2)yz&62nFMP3J`XN^)|Zfs0lM|66Dhz zIoR>?RUp+LF&pA0ikC+n01ZCAg`VXZjsR;Q#XXVAxdSWWM zrQf-&lD@j>*-Y=7gzhg3Lhgp^o=O;4t?g!i1%u)tJEJ;9L91j%jykLoi03-TINAzm z)_Ro| z28@TL-%Vo_Xzpi~ju+ z3&1&)N~sf%UTO$AA{&Ad8fG1@?zQj$Dp%)RzZZCSZmFM(5kN=URR?R!SPqUN>yg(O z0U)G#v)s_kGIZcM7-C8DKqV^VkUf2t68JJdMKYl#Wu!j~jw%es!46T^NhadX_o6vB zLp1mHY|H25`uHd*f_|gJ%-G%X6A*bFG&@tA<RXCKXr@Rf%Q+pTV@O(@%*QdK~P;P6mgH7nE5)mwC`?{!E=!9splox9C= zOJH3?32V+6_1+ct(d7y6t^N9Td5HOk5q5?7G)(P~n?MP=(#!{YUrl(ya7}o{@?U_*sj=~Ni?qNwfMq`k4r_Ot^g<-h$H2rvkN|Z+Gkt0@N=6Y#p z5UxOsLPwUtW%XUmk`>!YYC?()0WzD^(Y?C(9n4m>g@{CYJ9mx%I+_g`!q<@m$q)a& z{tE&)v#-PjOl+&`ghVP8^^UjSv47>TTzR@<2cyGtzAygLiS)Ae-jNuB<99R;sFlyoH!&qxi4$;8kyc{sjz^m zPg1eV)Ltl5@}#=>h_@m%@?5Ha4|%p}h%{QFF2JxEmVqTzm??!Nb=VKWOeJFh1!+@{ zrtb;xFEBtPiuS07!qqS{lan=j{rHj2P(o*bgx|DaG*YR}CI#hSy_SYe0hRs0YotYt zwc=QZCKn3EfPz|oK=g1qJZ$g zIuDaB-WFp>=O#%t4LQ(wSfKAtMx&K~gxywcBo7W$SjXS$uuZova?!nc#+P_;u*@`C z!`ZLDUn!QtS43!!;kf#rPa$e7QrGu8auQUg8lAOwVFO7I z5qZX!0`&J+fAm-0AD3c0?zMeM8Zu6zu{I^N($Q+eciuBA)eH%GQp(LdgX|mbVIIFq z_|f~?rB!Y=B?J31W)8%b+wC-LG2k*BlrRMIlI>^v_F0QEzS`n6gH%uH}J_gUo%{f{krPa%n;3k+cy* z0;BGL?U*AtQU~+Gr(uG9H_xnv9OpBmejqGXQiv|y|G{H389H`#Z$(JO&C|AK;Ujil z5F%01IR%lWReLcrNbe{bSIEeql!QQtNHzLSwdJ%V<)H9goL@6xX??kBwasM5zI9sd zuHzKA!Of&-(ZJ@8G<1WGuACv3mFf&q!>A5!m}M?Y&A;n$!Of(8KZI=awG`rI{CPMQ zOMSF;`A|^CGPckC@=tg+E+JRambII=!3C}}GbrZ@-W=qiSL`u?S$<2RQH5WDIwRnV z{{2f2AV!T=-o=cb78?s#a_B+b+Pde`fMFSO5}E^b1urF;X5j#>^Ki?*&;}fn{_D7P zD}t^G*q2smvi*&^MLPsgFH13@5oX;Isz^QJ(~^OaGOFPRMz=|eQ&Q}1u;#Auee_MdR zsQw{VS6%e?X-n1a>wjLVMH%yy#Hd0+#>}w9ZGXG6Ja_=yoA#DeSHlPgD7%M$C( zI%R?zHGO~MO_idDu7Or2m6zR`pa>b(P?fxxfD;6^5bi_cmi=*r_1;*da=+ExQ68_& z8cC=Rkh_k*iCgHDE-LN=gQG4rk&+s7YPz2?H~XV~5`qLtMdeFBe49OERQ=ZeYHnxi zy=*;Mn1n~Ojk{H#4BuOSdfzHri zSdgh(2>Vi_6j6;s>M~WuAnMYH$t2YYbUuxL_+U2H0+o~0WADU=)c1^jms#xN95P&82K>aV$d~?}0DrUnnF~t# z`-;?20gapxL@D^oY`)ZP#X@;S4lIs1tVEMwK$~S+18PY^^BGomE8$HDNuaI0j#>7V zD#)MX=?$nH{TJ^^%|p!tz;DbU2k1lKI#@tC8XBxD)z_^P4DyudzV^n4u)Y~&Jny(! zA|C}u z{DyABT=9mNlL2x>oRS}cUeEd=`rtdz>~5D4(&AUo{0Rj)u6IX{TzHaz#Hf`<=z)49b2LR}AL=uvc5VYb z3d(E+J;#q_z;MZYhHx7dy48Ax9!LhU6xc_MP6*D_55E|`ufMt{u&(Z+E>MC_hqE?f&9AC;rYu=ZWEYlS%9U?dGkKM$>_JT7WD z6EWon>Wo*el7g^)$2_N5|F>{B+)*GVS5;pU;NR_hGoYyk?`X-SupLed0oAksDgrBm zDo8sQRW4=iAq8FZ+pyd(JK#Chyt!8|>2gX6lE`+ldY?Wp84%02pAlRysab{r8fWc* zE{Mg}3{0DsARDl(NP-5U-vcAPSGH_I3c}(^xY}_c_=XKingvkM#i8;E0kVg)s}MU~ zG1OLUU0ookjk;iR7$RdLIwizRW3B22YcbEURSI)&ylVAp1Jh>{=1!5W9=X{;<>?n2}`#FdYEBi$64y@3$H{tIFmSdnGZ ze3F)(ODb#`zv@@%FbGka!Bdea$aTOW$-`q&4ka3eLeRn~SuWfZX`=ebB^v~)STkxQ zejU)wtexUERVHM~-Kzs4Smr0CDLn?>G+SYnLzGwmmg!8&lLk9t6gI-rlaAD3tBjRJ z^+O*(ix(R_#{2vF+af@$C<*0)0D{X34gLQElD)y__*_PaslXbgghnGBNFnyzBYOtR9;hz&v&K*TzR zz>!#jKWzg1ef_5a;MDA+8)sZ}OjYj=(Z{#L*)vC!@LjIx-*0RC_W7pwD&4MwT%u$!$ygJyw$>Bw!O@$e{`=346Ye=R`5RL3qsr3)TQ&ort#ug|Ff~34yE^f9=2jnV;BBRi8O40mbQl7l+t$YcjbW~yI6=2D_D-LN zIE~8aYOxO-CW%atRg1Rw%iF9lKYi7QNGeb|^?qOfsrnbgOf$2GQxXlCqXRHBHwq$7 z(GCi>n*eV9d|5FnvIR{m#TyEzwP+=za|w#d4fR1DPJ^m`e;puHes8(PETs{GtkdUX z_K=Sk@+CV(CLkct;}}icz6|WZAZ^SDSSYcAL~6Ku;32FGt@l7i`Y@#gz*8>IEp&WY z%+Eg~L`>-Evkq$6Mnjz$`Qkzgk=lsgAb|fxFJL{Dp}3F7D`e*7HEMCA7~D8)y6E2U z=W_B0ge|k6qaqMOpEKd2h}srOL_cwo{g=)GgLQ@=?v)k0)YPjjv!)&8-5ji|pc3be z+lL4sDC!4ud@;WjF-f3L{|HS*=;Kk(H*m1|DdfPp`{)4o8M(q~6{b2vOCO1Zt*@rk zPCw*ev29LF7TgXJwN48m>Aa^~n@Dk~t*XGs@2}>^Ob+h&(yVtV40r}@-MwJUCr*A? z=ICsFo3&7vTX|r86J=Tt5L$wZVFOO5f#+<6ZNw6B(BGCZbINV=k^B=apbLxlTWnyW z9`kL>O#X0cT!>E3hST}nN|S-K;tv#xutta&BWX=Q`v}BJZjQk-P_yK4pQY2cT)3bC zN!|YGK{cQ?RoPlwl`#eB79Rr>i274A2;Az-3!O4E0@9PdW$a*7#cvMqzd?Yg%*~+B z%L01eYP!TsJvd;^uUn2VX4DC((fHb2Px)G5DOsPo-rc7SKQUzs$v0=*8m4} zkl2a`CAuFv(#98<%xMQB;e6k3`Ty4k0R2*qcDmg4YT(nhq%R&fP5u3x&-E`fzU5-7 z9&I6fDlsMi@IDgCRuBl!%X-PF9jAeh=@i{WCDpC-KIwpLiKkweEqKN?J;56cWuEaGj01|=Q=fP6G&^=9Jthn zY}(o|5?(53cGDaCWL5S8_+L+-}q~Ane|HS?fAdNnU_Z!AE11mDInE7#-G%DgqzJq_r8 zVsK)=um7;~y+UYemb(B~jVg`ChKKi=Ic;+fZg|BHWP@RQ$J=I(c|{yDFnPMT1)R?X zyO&5y*| ziKxeDe!?}rW^31`)2SB?dR{d89!JvXiIookZ%IQC04<9ZFbncub-%mFg2$<yn3JhP+w7{ouRq-SX0uZ) z;i^}{Sk_Ns%-m|5##6C#YMuAe4UumCR-4+r#>Cj&R_rvwvCM^62uOwxB=oQsW}{9# z`~?ZtZolJfq19|R!Q66bC;WsgtA-8mg*urTMwYY6^MG+;RZ_rRM_r4oF0A>Y(ScYV z=RT@`1=^WjMzaoXN{jF;INFKv0cjdsK8y@{iS-N$A@B4!+V&NVmRPONY7#nXI%O7r z*tNB6uR*5t!n&nd8M}CUO%>S}An_bXVz-B{TrmnDpgu<^bV9KxODLmCz@p5>4Artw zYrnqXlw9fpiV>cWvM6>#kQ;)YCr~P*!AP4^L#vS_&l~ayWhsYB+2&0~M;00)u*k0E zW4`B%h~pIoJk(Xcn~HunQ0L-5sJ*vZGTO2kSk`gN-}@G5Wrt- z{!!`+onxT#DCf|6W1g;ts`e>$ic!>9STWok!;Ltk5zJ z^GXXas29PV1_;co#|Z@2M35@!*mM&WBqxMvi~|uy-ggDMP0ib~uv0z*eNq1a$||82 zB$^-=-r^YQ$1)y&1*;8;bhG_~9KAmz)zE#KSnFM({dB@Xb09eTyl~e+4i#k6?Dgz!N$bn6<>b?N@YO<5YMTR0l69D5FLC5BuT~zXQDroT;KCOK$Q}CS^#1p z*$py%cHfwvf3Fe`ZmYk$6PV4@_3u5_yEOD%SWf{c!Y{Wp$pSIdS6)?NWMFelY^rRY zP=gPRVO;d)@KBtakzY`By5W;H)%2*=qnkGqeAY}UBk6TK>}^vE?HOD;$X5Y#98ym3dma0ez()o78ThLF zDcN85O5q?j=y5Ur`E7h86-3sP&br-OL!(LtH@SoAWxmeu0r1!Jzp6;s+Im_V9TrS0 zH=F7oGhw==D@J91RV$YU7VbK#=_K3#-`3}Ab|fJJN}ARCD`e? zdi9V=&4F+x&Ycczb}iONh>P~t?BMjt0WZFs`Mw04O0Q9#d0dBHxy(xb0M@wn{KXI| zP+_=>#^R>-8np%K|Dhy;(CkW)t)3`E&P6p^Q9X|&8gbAjIOeQyOKD0>^y`?`g&0-y5?Ww6FK@p* z&#mtQLes(QZWOi93(4~&kC6fmYd&)xPS+Kc-0(9dn_YTrg#;~ap8XMEA-W4 zr^gyu6;^^ab!h=Ndnh5zKx3HW%^CX(UlHKnw*WAHJAKZGFqEJo$JQFwIJa*8`JHhc zZ_i-8$H=uLm(dGb!tLMB58cJ{lyNJQLV>-cfT%j41*YuI4;CI~rchl4_iC+!URRb| zNp_x<8V{>0v`i71rP`a^d4jSNz9Wqibax@sJi$yK>9d|OC%>6TjQN56{}hkzLkA2c zchNvG9NY8(`ZT6b_1|$Tb5DgesPzTz-`)Kj-MzmdB>sUQpgK?TL<~1LM*GdbAd*9JsRK z3k>weGW#e``)ds`RFHY@ZcSn+Etn4wYZe|NBU*3 zN%u)Fg? zV2s%vWlS}+&EBD&)HCCtPfBdzH4r~9N!aCx1M8qx-OF!7$W!r{L7B7%5ZXj#rFplX znt(F6DuJbXd@_@7EHr`>FDfWBn;CEhBbqx}%>#hiu%cExf-d5va*2%-b)8W)T14;* zDpsQN@8Wzm@= zyexRvk>RdLA53nSz{$JOQ~70NL-W_iI5R19%u~O=>0xxL0LzXU&CjCN!6Mve>r>xl zHRPmbXNu3C4-y7c1xAFamop-M_K zZh^{8Mb_x9iwSAD0)$Fcq1u@GvN?hmsC^xt5{-&@)C|DyUJ;Np?DRsHyaV;tZ+I4l zy^6lsCyY+C0QX7hFB{Nmr5gKemE-mOwK#*@3-3FZmK>{; zt%a^1%HN_vKJLJO&ijM019t+0`2LUqbi$Us-^ZZ`X_;|}Ml|+esi~@02GWZf6YWjo zqq_rK`+Vm;^3A|Ko&r#N%>#xv^w+FD$W=ZJS+!qFe)M7vx$+s*_^g+j|96KoY8@3&N-Za>Bz}jdN&@=oNWQvu*8rPnkvfF>R06J8gCXv-S+o zQtM97e<5~8DQv1!MMc2-WZn{P6sBi%^^gQ=!c-}8)ajloozL-g6QS==>bw2_egfdb zscRkB0H7Of?y|MUV#fkGO9WJd$N%(T!Kf4v@lk16Uvq33 zRl9_bUk@XVM|bKCPN79E<4}wFb∓acxnPA<5ZLU9OcVHXZ*PUZMJ1xAX(ZWH$kY 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%0D|4pkXm0C={kDX|ATIhr6FCmmiWssTD}3o8_5O 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 z zpiVJnj=`?U7UlAwOqErlt_gV6p%L?IS8(>3FSn-7x|1>Dht&TvS=Wr_5JCe3xEQ3@GXO*^c?Z`x_HA;cn1q6t~dcIs-?~+61~sWt$Qn3 z*{Y(*&8nBR3_ACxvhj%iINa|eHHF3%WwTMuAANNI&vXT5vGo>7Bfh8M(BNK+hZ5}z z8E@8pGkzF1w1cUKD2#ko^w{6|476KufS!!sQQ7kLMvT$tG$E;*AZ>^f915}V$59xl zM!`F!a|KEHUYw4jL6^4Pv5H8{kPfqNK_gO7Wc$@P_SvbJ|I|Vob&7ErXMilvP8a{H zeR>PgOajgK136~hZ(RB3)sC?eQ;W7@(K*m}V&1sv?9v{@(cv%NeJ3cco(JtO^{8Z%jrhcQGubMUsF22h{NiEQFxE@uUo~qm}l7dqt<_&D{r*bh^dX7yMzxqh7Ni0TdC38Qr4k#I0xNvDl| z65Z2W8-+KLMXaAtkDDJDfiM3C6=)8tfb--e6%Y`$a$Y~-FCC`Wx>$WGSpJ}UoUh~n zuSD6S5YH&t3F=+2rMPC+g^f$CuAoOEGcB~cqrMq7DA#5E_oaDbd2wFQb~`ClA*TxA zjAL3=$c=Y7^`%}0nKzb3L`IkV}d~kJ1)Od{g81bF6zMFPJ>ryD3vta^MNlVY*2^7 z=UZ_LpN9F8&g{QzjvR*D_=CBl_Hlbwr#N)Yr9Q;CA4y~`X9d4vEL~_qZHD0-5pqg$ z5wm86!_uYp=KMk+L?N|w@eD#Fzaupg3YLhYOK2p*BTfdl?&&9)$|wos^rPfxcM~=< zf{GngWMxCpKvjr^~o?u}yT zyZ+ESaA>-`oe!#3{xYm_E9Ξ?HfWx#v}K`U;txnxHTwAL>lTjF=3akD7X_&Lv&E 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

    s$2NJxjzfB2e}1#tX4^GsHq&k$r<@q3x1 z7IX(pk^by!^!11Ce5H>&Vv1#Tz8$%)@K;l@I>M+HVQcR{;YYQ6ruZ!IhX|Rfdx+_f za(iy(@*>XRZu zpC+rBKV+|~;;W$zh>mW`D3#@(yBQyhPC>qN!F8e0fF&wkK$9(oXT?%?W`En}>WIi{ z0*Up#i()Djy{>FuY`I}3V|2kq;0|(A9W&e|OogD%mq3{>_*u`EWdVqrJNYu8S4m$; zgA84P6`hQStf*hSj+a#@W)=07?*zLouwmUI7Kg)FM+pW3ijCGsiMrn!>2*dJD+c=T zP*!>}$!efrO{JFWLo;>NT)U`qxaYPL0sYE;t7D$Z%8J{hEDX@+$lVBEoB*B=0BEv{ z*XT^p#_L~16QJUm>)cQm8v4?gyC!u(ZGRVGGw%2VNz5&=rT(YjY>OR~ezhu8Lq2#ieTfT3vJI@|rC9Kv zT89fA|JA)YRQpp8MZ|UM43G4|QH0d{y!je;_3g)HzgE8rm)3_pYbHvZC_6EAN4)#di&PN?^7r6M=+|kF zGnL$iQ`0dqpG#f(@D-T^@l-Pi zbQ#kGV%mN1KtP@lbcaMRHtm|T-Li@kV_)S^p;T5FC);1)crfD9Jj2p=&CWR6LakV>3d0u@SwZi7ESj9UucfM4V znP^8cib~oL9bH`_R!f>EUol^BXXT4@d6xDXih#a9=sNgF_#y?io^o`ntXm`;W(h1C zD$7JqrB!TlndtJz#syr zC5Ro)k=PmZ$)C3surwi1v@WW`41XmUI^i}v21@Az{hXUB$qzgzf|FHve&3%3Kiv2n zzHQ~*5OKHOhH*hs964Y9>T?BdDb%*FvJG1!eK~LISt9sXG1F%&-}qw@zXJF1lVsjP zAkzx#p{Hdn!4rK^LLuL`txG0B=b|e5GhnC9r)Ow@8}Rl-NYTewc}=eMI8HLo^>ga7 zH%xs94&8Z3&XR?2D$$o-pAAArerx=x+>D#;nd`j!+Wn>o>(ZZG$dFvmfy*PMtJpZo zv%1W6Dm|)H`JrMYj7Q z6w1JywqqXL<`&|wnc{sRB`Hhd-|SNCz0+y;&aGbk?hru80E3)mLq)S11G$_?IYj#M z&Xw0rbwauHa^jDtl2zKglC-GZSyJFK5{ z(Llkk@w6{-#muTZk6Ib_q8{%`Vmi9SY17FZ&TAzk7>Q02H*v}O6yx-s0=I2 z1D=SRua8BSI(6W5jnyT}2i;HU_3xGIW#ueAU+0g|+%)@;ZLeh|X}H}Fq0IV=kz_N* zC}QB0cB_m8&&MvY#+nO}5ti=5XeDzSkMf#VDnpErHQIlxiMhWg)+Ar~8|MBRohf@O zzcZY+Wzts{Nfm2<3NSo3x6d(AiTzpqkJROBwb=q1Fjb8L(f!P+JzZP_G-1^Xw-JYe zBB%Ujpm9u1s`yGJBIUvb?fM}b;bZ&}s{rh|g2@R-OSxLO!d^`#&Rb`D>z zFjj(E@nmUF*}{Z(<4Oj$+{>qLq4TuytIQSiS#du_sA|{~c_SCNvTw9$O5|zyg!KWe zo``v$zs`I4a;QbZO7y;6S@`^3JgJG7P;RN7)?60YJO`${B|_w`hwYOK+n0ba@;4(- zsUWmS0=*IxBHlv`2?K&$?aE}uyu;vs7a&w6J56>{_awo>(W4mL`RqG{tGWh znP|)E-m%iozzJ@K)ZsW4J`}7kGJ0r}_t|@sVMQM{KUGh>cbdeE(18%6)K>ECR-+40 zY*yS|vi4zZ(ajBd{H5>rm#SzJ{}h5xs^%`@NS-_QZW60X`39;aN<5abVbVl$n!!*4 zL&u9R>ewvKQ@oD|)OsqsT+}EK;pacvm0jtw2VDEISWEZ1qN!jMlWE?Dis-@Y*-0&O zqYjF`6u*5JTM^Jp*Yh4_AG$M`j$4f@EyHtXYz~vJ&KLGG$@H0Vz_=kM^(4ku$o^;K z7n13=lXj*T@r^5SZoRt9F_C!V44Pl`7r8r_vnqHc7qmUfdP$tEIeX(`&(x16c30$ ze`aX-51X*ML}5n{WYMVRT0gmgV%6)qsHJ;!Zs#<>0#l`?ub3%AOs}>4G51WB-C35E z3$DxRTobl@@+&=eGfy@Thru@H*dVk7Oig;|)S={IxNr34(Ve9ZA$s+4B$ z8>BqS&W;ozIZW5N&3@YM1*MRqDv*k&VwYn`Ikas}F_cWmhqei(z86R2VEJ()HUFL8 z0%g0!5z2tk3Hu^p-4Z%F@nEi_f$>wCn{N@{41$dQ()4l*0^V$;;PX2&JAs4u@t<_`16GbgEj50WTD})h-rmwPPyA(C)m-|IO zyzK|$FDA*sy%*Zca+2NLHgBTSaU#kBmf!QSNhP4{xVE`sv8uk>nZBBIqFxU`g{)(; z-~J1M5S+^h@+310s%S@A>^p?O$?YvJ zutY1+y=}6UAjVBA2!F>BY~`frz7b>hQdW?vE#Q%{_@>L3d++@d#hLB&(ib7qz`U-S zL*Bys;9bpPSN4dEkjFg!Tn2rralplYotRiYvLn%$~Z<;kuEtOHlTE z_gvXPxtq~LLM#&xa3w#UYSl?EX@n3Yj!WNyFEj4O0hRk%iLH{1Rd!Un#*XJpaA-4g zl1PA=L-=t5)MvF-@w;3q06}y&=x(QSf^C!K=rb9#C5EA$s`B^Hmhz)k{w}Vl$4!hd zGyeVl5_fr#PV=w7Jv^n*+jAqaRnbkj_lv#rG#*kerT#Gbiw6n|F4IGxG(gZ%?WA@Y zKHgy_htRg3KDZQNFI~rt2#%nV_c(VIrq9)7u`gx;%)GyTpAn91nJiRoYpy8Lm?Gs9 zY(0?%?gHIQi1<8RQUr3CJ}&-sP$jv2mG4;YPYJrgF} zU_NSxheU8nB@~%4_R2@{)~!_>N)u_!8I8m?JSyT=aD!F?h`V@%w=Ph#eZwaP2BP?l zvN(T=nf#{;T6lldA82b{jrbYEOo`ZP+Ar{Moj3c6#*?f=qYsMT{E@s2*@i=+?Z}); z-Nuy*exaPfODo^8SuhiS%0l3~h*h2|`eT)iFlEGke>N2$DtHgQ1D|Ou`|GonaK3wE zw>!sOj6t{}EEcSN(b}WzWbnmv0y9%qX;smu4T0I_;d&|5VSf%yPQAy-rHM!Zb&xrI zNS9yFf_>ML+}eFEZf%+(t*TQ=5s`w&-mR|3g1r{ZBJAftq1<`6gGS?A8D616xE2 ztyCrEk)z3Puw3$KC1WwrNSJfpDP##+B4nn{`?<({l}EueRs|q_Gylt`Yy3Cot}6B8 z%pU?0G*_-+mag1bIG)AZD_NpdCZC?n$tp{Mn9wD*WILXt0quiuUlQyVW~i46jV|Rx zv_0&5p~y8KRMqNgTi2aTHKBe!^SAx6R^e&MM4vw-yT4DA@(AT9VaikK2Oyjj9bGG2 zUqVrDB{sh}gVfc=*yEH}b$Mi;rDJwbN ze^gCrF9xd9UJ_a7>3uQgcv~M4ZFcs%DbreSm*%9%lk{$`X1F)@y>?Ma2VL!Z(^rSd zK;-NzS#|QPn+_$nK6H3XMM|JV#}@`0r9{eOL3|xv)<#haO*x4U>-x|C_Gfc=-ttQ; zC}!(0o-)*88ErAi@7w!g?_v0gNp$zFL;K}tUDmm5A`j7D0yS@+_HR5w)T=)$2LtYs z7MUwG2w$HgN310#m*(CPO^{_VA7Xe0xOy8eHfBzttML-%tkBxaL%IU*U4uyP$Hvwc zNrg%17U}6SU(R=?zA_IA%aXKc^hN%wG*5vd2(dnL_#h`Ve6Y~F1!a?1Z+WDA;J0^4 zQrf?qS;aB0tlkVf)v_fqL~=x^l)Y#J(RS`|2uM*`chwmlT;HmWX{plNma3LqoV!Tc z1uQdR&b5Tq=^PtP0lxwmIfEcOL(0(f>ttj0u{(te9zj-jDIM$3C84>ke*Rc%^#(7p zuQalpeYrnR?F@Q|g6~mMTh88dI@)z`)tFMB$MX&s>@GIze(G7+edjM#80CvS0Msb< z!1k^vnjont0CzUZpGTz_;v+bl2~}GfKnh49NQl++=jL`)5IzOv_ z>1DzK1i$Q<=RGy9c7|)Yn0!t3?GznkT@c$`B}0KYJL6Bl0K5cnQ^?&^JFO;c{FCRdPRiE=5!v=q5J(hoP*#&Wby%>>?Bn!lx~{2C-x z71C~ex}0#3E=atrU{a2u&ebG3u-QJhBrPd^ore4a#d1oW^~jTLe^FSHZ~h50eRo9h zJtv?W1@9kTXA6;EEa96TjZ7~ zY}$iFmsg?0MX%#u7#E;hddKJpmAC$g-RDji|BE&%QT@!@%&z7E=O`#;4CVU?n=N<9 zO8@@}d%JW=mL<2&Q9TukgP|To&3`bEx+~qVU>?<^KDL_oo>R4VW`w)_01N88h2PeW zYdF*38`w$~vUdRHO9oKplu9kO@MJ4EU35sF7A1eQvg!Eev$_#u&UD#5kK{DbT0&L5 zfu??#^!Ilb4-;Ov_jgyReyg0dycRQzs+r&U6$D-rK%Y9#;#ap=yHm8U$qtOFm!yzK zOnPS0zkfIjfoXVX!|;OZzX$S@142PONBEYhOmZ<_JqLd5&Z0q}Zl<%wvGuC8`pzys zC!%%^^@wGhu%!o4v|4#QY}Q7Tb+V0{Sd=SCXLMLL6g3YZuC^AS(oO#_ZK+I+{8gtH z)UV1=)A}$I`969IRK!3d-Gi5={1S#J^Gn%1`)Q%EG2I!T+wc%1s0> z*iBxEE91Sg3gJq*0F*17OnEDfTWAPN6}5$C*N?Q`Dr_vRMG4wcVq10g zbqVN&D9^b!As5q_E7@BB{P(~40d4Ge&C;;le?*KS?+c1hx%5T%^2Xj$HI83n(>m_# z@k5GsB8FV;q&#t%Ddu(jZj-2ZKxc{d@jp$#UNxM&5!w+B-t%e1)(%+swE+5Y#@wr+ zHsl*hczPqQ2#>5A-l;FyJ^O}kn@)v`=>;z+nojpP?Pm~lPR|f8&MNXjT5|AXwn_y4}e9ytG2PW1=PDdlOf3tw1~|k!zBhMzyt; zo}FETL2bgFpdGvewV?!*@6HV?hBdZXFgoutZHC}FOU<-QUgvP}^;dS%ff!GA!S+o4 zRQbP+u-vW;9MC}e4N%8X1UTIgnf)dYrKhW|-x4Mf5n!#1R9$xH=#8!k*r(Fq6hRJ( zSs6l9T&H)oU9mJ}eeo7>`40K6Lp`b_OepVU*bF8=q5AD*x0~!y9Jh?+Ypm$y+`8l3 zqE)~x6NtnVYIs93Tj|kGD0}Rtw=L3zT|PsYfbrWi3Eum&h2M5p<_JG-)N$=b2QCf| zuEW6keQCYhXqRn+(hR2!X%D|YXKDE6_We!#-QIMSb`J{P3CR;~Z0V^m&*o1jcDGeh zD`W0{&jJ{<0c$GiAD0QI2awm+hxs2z`07aP&*7G`E9_*w-s7Rd06rbaJ<}rdHb}@1Gr^I0u=^QpKM!$Db$8cOaC-{5Tk!K=Aub=d`ob z+uGbF#-$LPkflzux%TX3cV7hI`*KAd^Xm$mG^*?)pB)zm*~?&X>kQP#<T1)XV9yX-VoM(+Ic~mKH{>U7E>%vKUA%> z0lnxO+OaxM`&W)A{2AVRn!o+mZb|DxU0FT&NaX?xD7ICV1WFfo!G4z8L*4U0j(OCX zt^FoTRvg$fgHQkZ@G!)nv7Zf$#iF5}1Z90}8+!6zlZ3O-&Z1+CV(ZhqpK0~}-e7=kLEfz16Y2pbVi;|I zFrinQpb?`JwEvZPdGnYY!}?`2mx6W;%C1~*@y@DycPW^6LSfeT_qRt?RFG*7IAPnXJfpEF)eK3j+W+2E{$(h|j1!H+F&uM#?ZT+uNEHxnr5u@W(?3!NEt@-JcFcR~$~2X29+oM@~ zIBLT_j{IV?rjGFwH>b!vJp3mpc2o(-{t}W-s~!4MH`?{Z$xq;;5A7bVxVmaMYX)(n(|&)m$_gx8#LXsS zGk~D+F%UppuvOx9!9;F97Oal-^jT;Vj0V&*ocM~eM|=RR?vpm z80$u1ulNErmb~+waA2P0`VeP+_qcNBtaG7};^Pk%k3Z_nHPA&esG|I@@B#|1lmXZ+ zhOH0VtAOvg+^*SS!DMo62m|qKpk4x`FpcAqB;%8=mYi34>E@fAcuA2Hc=WTRn9wsL z%$ysK(LJ~@=3QxtlxXsQ@HUO9`fBZVX451^dCzM*eNUBpAGL=UOGi0+F04ewAn&od zKog8z_SLmdm^oy9#bvpynH8iDtTsFT%aO^C8m-5Mz( zNXyv;u0W3!mm3MfRp2F#Uj?vn{faFZYvFN@^|`=kYFG7=W1Vehui=gQ0bjZ+!6F`u z@Odn{rKn+)?7^a+y2&I_=<*wdhDoL=R3K+9xw{^d!`O(MCJE~VQO&pDIof$^k>p|P zx0S+W%UDLc_IbKBi5J;ToLswlD&7%rh%6=C1UdHe5jwgBiaqlEDTuf&R%yR1#PJC|)~FB0F9GNk`&G6PuI$6jk_nZcrs3h+*6d~g*>{v}mPx-V z_Tnro{z!7+wARkc?HfGWIR`ln@^o?T4B`#CYW@8`cY<*TuvtaU-a@V~W+BKJ=nhr<>U0I3i9@t{5g&M= z>fK7+`#B@;aoe36!O00#jOk}7EbnM4KHwReTb3yrQQJ(W;j?V_Jt+*s{Si)c9=fOr zBW@IqPl5A`WPlI~a2P{}K>gbGk#vUkOK2UDXUq3Gq+~uJ^z@G+sD{KX&4={)j)yYB zYtldJ^1s_069#LVC7@aEou@dqaP)dugs&ixGDvzBpfiPtTk)vjBqcY(kFQ?JXr90f z1Y>S~kt-+tEQ;6xKT3s4u`_4%+R1PIsfT8QtMGRX-NgrgITo?mL)y`~{~AqKfR(%q z+dg&NT#(L;uK29Z|*-kDRgpeBEeSQB1k)o8xUO0(EO= z>xJ4Qj9(eDsa(@huPxSjBT8!v3+`JxSX5)!EAUWlnGX2q4)u~I$A)XlUZ{&kTZCh9 zkOtogK~u^JQfW24z*k%5B068}GA)$$sTFM&Fuxs)Mg~~nZ}S8UU&~iAb^OHn`r)U| z((67lC7C#n`)C2eGQ0qLw zLdv0PJ9{S>Id8~FOi73ba$?^B;ZYSTE`a*)k8}qqOg#-Yh8zKa<~{SC4w&XI&_sNz zw4X9nq-|DwsgAZeR7&CRLG{sknLuQEd{k3UrEN55-HZ`KzARH_9IqIB*3GM7iF&kFcFL1EIqd>qo;~S(SA)tW{s>idOzCP?d`q zeb08MnYo!<2gJhmpcR^Z!`5%*F@xuscwB`mAszWgX^-}=ME@;{C8{X`7oJ&u$L5G` z&x-QN`-{7cCQ4K%bKkB$B->73+T{$KDx)fLTyoD5(4G%FMi)y2gvyC-4o{Ma& zLx#xtsyWZq5*W<>dsc7!pu88=JRUPuR3UpS(y~>;r?&Z>lveZ=%N3|P5szgb3we5m zBwm-QLaV7T1$(DD*iYPh!>l5Lp4vrlL>B4vCn;Fb1nOYWn>*6exOD7T2S4#f|4hif zSSfRVt@#M^CAc=>B_hPGzA`rG#zls)icATm`&7tg@q-q#f_^p17tg*c7r+!hq9Or( zWFd)k)DV|zko<`~u+~5d7B;;qqBzw$uoFCz>Qkl&e44`UB%=!%GcD}6spG7aiB__l zvpD*hEJy{5&tfepHEDN)z>Z}#IZDN(SlfiDk&T29cNpTY4IRE0#wt7Zca(gx+^wbMa zQ#*@KLxe51MIPYA%7(BTNXS~jt*_*20i5B`$ zvx=UGcv58F1iNHRwo~GYu}FX5kJRY6NcsHjO@p$!)^_)hN3lR*bZB`E77gOwJz`L= zs30m0CX65mwE>KbYP>f#*vf`zYM4V+73s#b`ZNs39{ zQf1LG>*2x-4Jkq~`gsK_vBp5Z6pr=pi)OWB4VpOnEV|;!Tq>3hXoxEdQX!GJ`ijcP zNZMQ#Be(f9Ng$W`G0c;cOjvJjD~lzBF2KB#OgY^^b92Kds?)`8DqgE1OXXe;{6jqY|xt&b_(-ZOc;l_WzmRtX!CSs8*kT%L1xnv z4=Mg&i6;!{@?LuSH6rUY!NAtJ=?SB$NV{6i@e?nd>s?{Ga@>HU!@fPwxuK0dJ4ab1 zSx?!nD~I&5XEgbBh774k(e@)S%;gfGVMAZqE zO8K|M_6lts8fT?>^2L!6-;tzyhU)yl3w8C>0q?sAx*zUA-4+kA2&+L$);KXG%?{3k zD}nRU*?T8at7dudpx_pH$eXA42_jcUMbf%n+p)aK#deDJ@Eq(c*(0uO_sa>O42w~k z08q_GDP(HgRWs)fR$cU`3^X_`euHn`nw;|Br^%eB1r(Z->NMkdZ{j1~$HK9iSf zNM!0YMc9+H7YOj!3B8biyU-(2eMXsk7*_#pYdqD8d{R)$N-IZ<=toiqWW?(&h)v;f zAp%nE3`eBy@ncx=`XSct_kKr=Hev0_wQCT2D{T(V;67?arNpiNIpGy#BWX_e)9BLW z*Q!CTk%x1FRa)zz@q@zV{?qCD5TQpViBx>u!_22nLFUj-s%8XRpUxSG8zLxyB5B7N z&`56JwvZ)Vg8xR*RX8zTw5i|t^r9462sdw_;Q2zfwbG_6k7CWW@<<%1(rjKYCbC&B zqJS#tPhMA4&K80kPb3>P6>jd2v_J1@R}Z%#hLp~3@1BHaqSNQfP!hFvej@YHb+jFI z9Tkk~Dj?W_Vip+r%j8JNZH=mt=2COzT$|D(-+Uaj2hNRgKikHHRxvR+q_wOZ?)5PA z7|Py_y|`7IG=YHhv-J-P0tgg9sC;POT-oWaIT!cj3`)l=M5j%9YY4vyfoCBIGX#kg zB6Y_LlN{<^DeDn!DS~Qs9txj#RLE6f5*Y60XJj|$V@A4;Vf-p2S4KUfy^KK#Gqo&k zj(rU)k2NVBqP14FD(B{C8+{XYHHyFN;pe*Y>cub2765O6a)}t@HY{#BYa7o<`oRK% ztrny5!U(x4yTGM)dLqqQ(&IFMW&mBiYpm%$&r=Q57dg77J_YkN115cE z1pyWv@?{d0We_tfN+svNAX5l(O=ZHkK+=->SXcfu)b%1N57?|yXFbGg!2VBd(=X~z zMPc%J5OoV=WDHrohO8Ypc-p{-(!rBMm4E9`inp5ixzpE9iijC5H;}*6YM%9?Nc1|V zpf0DOgyPCjfy4xVgq%7}ojRCTV<@ZJ0b@ z5;08;wz0GH_{M>ElW$bhe-8x3K`d-Wu1{;q!Or58w&oIXH2CZ;M(y91 zXOxMIVuVB(*@hy0MD0n#_~feHtSr)0Df7onrEEo$Gooi^=(NDp(xWBaZ>LGez&B z*k>ELD&0KlfDC1k*Qo1ZJ^0O6Zqm)%T~nd6VP_*W%HTQ8i2FwOcr*+MUopm;mIxbkgTny(6p>5YUugRL|e4u#?Pg6S5un0EzXwcDJ+sj%UmKScwfL< z@oER#*@z6k$`@sOeqT)g(RO%L8J6adw^i%Ub_<^jyWw2oo8qXs{y(fW% zDPt(pCE;=kCb2C05;@_^8rkuQGEK~yH80L^KSQ=MU=(%*>P>1q)&Lk~)rbbA68~SFBR#d1{17vDa3NKOiK;V2U#85H9@42d`vS%kEQf_J&AM-9h~jrB#8< zbpxu2ycrXf+p>*gi2nB9E8OWx*B<|)1|;8}p^JP82uSao^Kr{w#V|;xDgj3r9exG` zgD0Cm?>gh{nuZ<}RXRWt2qq5H2MItrTZOiWB8rxNv9|L;9zA-dQ=4!PJ1~p{#2Aty zF=po;5O#Di_0soco-27dGbFfRS_WV)eyTz;L;~*Q91HIRY&zm#=w4?tpqG0(Fiq%u zDt}AX%N{)TO1YYqZY1RbAifFxzqyZizQWwE3Fl3%gBNUObQG?gVrt)DI(xy>LAw}1 z5u+$>8i_d=J}?+g^Wh5*I3$UmgN!Rg6u@-6%p6cYda{;dIG-pg6&2=6Ds-no;cYP( zD4RFCh38NKP^sDb#EU5!cluqapH<3ha+I{ju98<^Ym#z8e!?;Z64VselexmrlHwPt z3+Oa306jp$ztIscx2|eCd^TVZb>+1#)5)W#Dne&tSmXRmE>p#mmt|5U?@-!mdpCAa zL(sS`(aF$hQDmcdp(HVprdm#<(?~PZJeu9Mx>~BM26FG6*OFXF7)}dN;4zT6mb2{C z9v92PYTfZfzO>&FpCZK$P;A(n!z1E0)E|tiHq}hgo2Wp@;c$%s%F&S4;nbMp<{2W8 z^!YakY=N`XpyqSpQ4{%q*Xh~0-jz3Wu9~pcgm+KI{fMBVxraw4(6?JiY8a#)3&MpV zpvW+o^u-L+XLFNgJvwzYuZXK*u^pD`!>5;RsX;0?H^XNVfvr<&K+qUeOHj|$Q@k^W z{M1e|*`%{gK)afEP;hFsF7X`nM6gsXx!Q33>rICc^BO6HBL#TeeC#)LM#%C|2IjC$ zQN2@sb-ZOI)g*q~ZErJ}VmXj(!X!)~k)|0=&%07lv4Ok+GE__uQU`~$g2DlSy?W?F z&DvPjUyLbkA}DI081=F{%+K1H(?aWI<^j|2qJ(!K>r|MNt0QKx0EfdfFnI2T&d!zy zVylHRIft*k!lE|gS4qR}PYr5N^37BMd1l*r0TK|~VmGg?A}G3!F`+$BPu;Z?r*e}h zCAci}jRzYoq_Zx9jr`do$a2{WN??Wyu?k15ZTMW5H+ zJxCdKpi2TsgoeMdvg#y)Qn1Fatr_5YNg*aB6SvmrA4R+JZ9~~zCk+kT7>{ikf6P6( z5FAP@X=M4=wTZ2qRWpB;q%N!?28UG?NuoLipzbQ^R{Djb)fi7b2n$lq-5_i*pP};r zc*kiJ3YUO)kmiOI=t_QW^VN5YWQ*d6M9p&7)O$3due6&j7;v!W5 z^R#?NvsyCI9Ds4=|C^1YSefVp% z1H$s{jK^JVo4xg8F34{79ussT7_lNbzI|HgV84{Du^LUf>ZTsu;^nt1LAuw>TuT+Y zH;bo;+5%ND&<6pcO1`b{&Z!b&q2S5dGjXu7VW?I_1v?V)FP``E4oNs}hb8AQwr|D& zM~K78)Npd+Oz}G_9&rVa6;L-vzrSmAfoj?jcZrEl9V&d(4LVetKg0+_G_oA>NjE=Y z>hp6MDBpBOhik*)@^29u5p3K1JpBuqyA=o@VK3CyUq^@YaGPdz?P zk*mz9Z)Ow+*}SO#Z(wX%#60h}S-94*gX#N-Y^OQYL&ur}Z&HB(;Oi7DO=vv^TB{wA zi$(7neW544PqY?qlp=vRc_v-Xm05Q{O!1dybc;xvP!TU$fBj7>rvkT;#O?)7{jC6Hm6HnxkCL4YalExqd!#$!CLKohOyXIhC8q-MS5}{=BxLrb#$G4Pr!|8+*F1H@=Y?x8tM?n#o2xoe(-mo zY5Ys1C96{!@O!6Z3_X{>AfoMZCu_$4vJeXT8~-RH)T#E9=4NU?A;NHt?>lQ z?o5GhmQOI$q(7=GQ@ysAX=Td^(Hdv?lrOW4v|mWkXMLmNYxSnrJMkn*fzoDxZc&Vh>IK!>>Y;>i715{gcovx8(r z5XA2h_n&e;89BrwT-|PkTb?+hAF@nQ6byh(dk%P>IU8l!QWUq-+Od}5ux-emPJ9h+ zo*A>wA>E)u$gxLecmUNl?Hd*&5o>wGLI=MSIuWv6CwBC2F}OwUp|8tK(ACLGs8^JqnGhO4nG+TpVyLv{G9hI^5HpUA z9XKup;pE8)U;wuk&m7GscLIok9FukU1{LdgT2YxKn zXMzH^f#4KNr*66{VdY(k&FQh-D*3^}O*&Q)qN*}#*AmwY+Nobj*r{16r6Z+#MWh5q zJm+I4i#VIYO8G?K3IL^VA)PrfO!$r_WJVMNwYzOPR~*6|qw|nsxfLI*qN z>BLN?)!cS}D?yFApeRcnhAS?Ct^!#%bPCUT6L5R_7>)QS`IO4Yr6eyJ$S4gbSlvjs zt57k4gX4;PP|M{`g8c}03u=C#5ySUH@p(E2-KBH@mpp$#7M3htwTvKd@zv~eh z3H?v9?Z)35eC!ftmcHje$wJE@o-wX0Q4d}?<-i3E(W$gk!d%$C;Wim&+K z0~}_wt}tbc9S)vMO1fk^O1D#$lKP3M1fnb4Wr4 znm)$Cvg9kgU1jhg_&|%N+?p%+{g7IYw8JY7%fYIkOA4h{n6#4z#;*r$Rx4T}UvQu< zRbzV83i?r%(D0QCoO`4qEJ9BO4#fj+AM2f)m0-s;w?Bmu4KDCx^m%T?io@6x{@!uV zom`%^d4bx<**3%-Goz%R?p#qRDe#WTcwmM@bY%bkPw_|0qRrVW%#E(f_2BsQwMQc< zJ>bV0LHDGq`lMO)N3I$mp%w=(LO)u)gYugOX1wiH$>LSTh)SG{Wo>)?^RA0gmKVD< z0;O>RMf`}jGP709f%@+J zy8wsX=`x-sXw7T+&qajrxhhRa0kLZ8s3N2~OVkm6WdJan!0itE`L9i-d#LO`SL}Sx zKOwh47+{p)RLqgkbw2Ez=XP69)53~Wd!VGGWB`e>fwGvY6lIbt-K&-7Cd`*UPiT5v zws-LEW{~UTH8T37P_r0cTt0A#`h=y}Fb~b0$VrjQR;;fx1i#&$-p*L#HmgRpu4b zj%xGlnmp*1@=NR=q3>^ljq>Pbg zMhCb5wV6Qtw{HJaDIsW}8xULDeNE?218D}>C*dQ;e`&qd5O6+%vcmF;py6$-1^yPR z8}2u}9FwYE79(;97^(7sOmv_)rc6q%Bqx{$tk`(YS%Y=Tf!8>-YPA&xR#mTkF z=aw7i)ohM@K&{}?3{@|_z@cDpFeu=gYK{gHWUM?_y?Th6;cz6fko#$g)AMi#u;9xV z#UM@mR)wn4^I&P+PX(XogO{OhXSdx22ku z*)MSXjb)4hR^SnWMH74y49PA5Zyq0UwV_karjg@ew&r>kbXt&mU;QgAa4B9e)DYr* z8H($T=;LftR0SUNp?+>0K(Dy%{aeKoEu@+*EUJVK5@G;)8G!ktDNkIvLlA0;bTeITu*MkslikjuQLgsFM$F|XJgyYbMI|e3HIpT1xJh&CD}B#` zTNbd-#0I-FG({4yCu68G2mAKD`)sxL=0G9YYJ}v1)g^ql(KpCQS%C`^-0h93jA@@5 z4*{aTT!dO?p;D;s;i&`@tAZFYN&cwv0DhcP%XO) z8V>is?a=Zynk8*_X1`=I;`QpRBC8EoxvGgWQ;+mt7|@%(aY4FTLybZB8H@>RXGez7 zaD+@aXWZwK<^?jlj@=u$%V_%I)pVqQL!JVi1D}}}4?(lbJxw@XJ+U)k!>y;l-fWImKDYMW-Y)i91j1kZYhd zyV`BgH?SA=r5WOdD$&y6Zm1_KUcfA&d;EFp=2ds4et8Dam!Hv0B7T44w)byN?_%dD zr>}Qfbx7mlh(Kd*kI&5NjEQm`W{ZavNv8LA&gsI=;d8}5dHr*`k?N7C7|Q3#8%W3D zm9f*%7%%s&fgVC|pr(KHs>5y{<7i#)c+hHUe^M#!;iQ~7NetG)B^0Z|+yX}y3Z1kv zrOBUJ@^9dWAiiEBag2%>J8EqSHHoLH_i&N zfDdqe)(ema9eOH4kRMZ3+JZ<(66owm6;F$?;YG9R3}%AK7>lEGJ%`y306;ZbOla~8 zQ4l_8LfL1Re&c-3N^?o*lSha9U*GDV?1&ACm$A!b@Ce2EmKnV%85*OH(6q#2K*;laZhz2E0j;v*Zzm4TtGL*csDy zP(RCo@7W9!zIw#rOKBzf&>bZV4~$IOkY;7FrwuSw-g~4#nq}TQUo}ZyhlO(@GMI6E zpvOYZIaC}xvw1!}(CkhWjZhd%-pr=rf*nnjDShPXoH=(r$n^97uhJrXwmajTa?>yj z35kAiH8+Puep;qV3WdjJ7U!3f7^>&gBOPwK(r+nH6(oE|WMuuWM-4#X1Wq~ZL^K2F zOG;=)Ng}sYHSrx+e}%m4fSdxix7MK91Z^H5gG9oV(3jTis_hy- zP_|An1AgD6a9 zLB_KUaqYDi3^KLOM@aY`KA{_@4!osCNm3L{OsH?VU+VybL~=XyygI+5%X(XzO>)i}5?x z2t)7$b=N4yu%_TYttN5`q?(kc=oXtf?3lRHr<=OOe{Fj{cZcDrP}3Iq&SrlU>?;Gr zkv-7QwAVLi7{)pcTU+h1)6aa5!K^!>j=UdC5CsF^A(?0;atw1hD)Mvo3NNAI*ksTz zPY!6VXl49m=BKSh_=AnyCAUo^g**2NI-s1jIut}IBcp`HV2waTT|u#H^XlA$^Va%s zD?Sy-{lNdILW{xN6yfq~MSV4(^|W;*)6Jp2(lWC17N1;TgY_C;!=m7zbzQfL=`h=zgu~{q{_MDY|OFN!)n$SzRdviWKK^@;|pL znAkrOoPdWtV7sOVjs)440;gx8y+GAZF-nwr5ig=#NZKgU(a>yXSVJZ84EPpcA1YuP5 z7EPX5iL)Tib;&qGoze)`htttJ4;T>pW!hmRx;ab0OAbU37k zqu-R84;#I+1F%hMuFKD$`u7Y!(Rri^LQgAB3Q5h?QYELeEn2^;@D!&Fg6(8Aj|9Pq zEv^>H!IW|5;ZsRZrm}Th6J~r)(1<6%3S&`sh2f#P%|Ogv!94Tog%5rfexJTun429p z4-$i~X!U*}aq{_;ZkrI#(tS!v_w)#3Ga9@0s!_OR*XRMDnXt#7Watc2OsDZ=&#mED zUEpH!c-epC`dV=W#J zq9Pz_@ut+`cvJi8IgJ1P}?Oikk3OdyLFCRqev*aR6lf#Z9k5;!VFsj#bu^ z(Rw7PPDoFZXp2u;u0zopI)cr8!{Ue>U>gKk*WDbiqdu@WEj10k^>9iZVPr;|PZkR4 zG$%0WYxyvhy14*;tPrX+4qj*vZ;PH(lOxP5j;PK;>X|X5u8$u^F;*~X=AcXbg#!4% zIdhi(+`!KRAf0djF!aYYY>q~3RFxD-{LCflF`Y2OQ%iX~>ktgk!v+Q{S{!bW%J9q;}+qia$&!MCV??5#G@Ix`yA+~S&T%%ajp@u5b z$(c=vXlZXVnpZ%?0cc=kD5IHWPGW_=8w1>QPwHIywyQdjrH$3l)Utx4TdQr$vXM*m z6cLA^up^@y5}QtW7ZMAdyNG$2BT+}hU3t<(gYw@bV21e;_LclQ4!>qlT)6laQgpC9 zr{z8PvC~Qr+HPiihN1p@pw*tQ;4*{`y)HCOE(4Qi4%GR^DRfACD`>3&z8mL*?6RVq zor@&0`O4%PH6{iT?rGRe_AHpOl2{Z>nuhi?rVB?~l{IKxsY)Pu{sR!~ZUmFn^Ch?B zsytm*K``_HSrPrqvIjYfK*@K=rHZLAePoGpkmv5@Xt@*IaRU5QaXv*n-m2A~F{pQL z8hI<|Y{`}8;)&jN620sa&a2|(AOxaR(W?S>0#wC7*94}H6kJU)7%5RrE0W=?!WHld zVIddom&Ld0qKyU<-TG)vzIgzjCHBr@S<>@tj zZgL+oCe_h@EGa8k8MDErkxrEGxY%?3LR;} z-8F!gnd!|-jjdA56LU{yydE8@?v&K#SD0byDVTZg(haQ5U+YsQ_K|E|O5E+h-3^g* z4bD#UCN)d+FghO^E-#O57r6F}!c|LBBZJSwnGx?yjDm1?Nyys3{_}d+BHl`-mbdiB z?Kmr&vsdznIA)+T1sNsz+$|YTA~(5tDFNQa7G(lNAl|nUl36ZQ3~P2`M@2qP_|Pu` z%B=z@V;JVDa9VpUvVJ?c%h0}lyHVNv*LUy-Qv@N=yf>IokgagHr8HH*16HS}sOdz5 zIrbp21a>G=nP6R;^!b{@@)KSb*+XH)+=3NW(UEEMx6S-Ih>0t4Cg-*+U%e8hk%r42 zWtoLXnW6@*_h9%ns{*w#OQwv`C5sLY3^eblUhY8HM5#K47Bf%f#G+FqckNz3jf}?w z7hEhYSs}s>6eU$jMlSM_Ma-u%J(0YvAQ)R_G;DV}ubYMCL?WE{yC>mm@jygKN+w!hzs>(Dw{E&{ ze5zytB>p8`w&a4_E!G*b+a?@(km{J%i$E62c91kf&>LfS-4`Ajd zWQ0+H+$X{h?9P4;znLR3y9(09U)BN4h>{p1a-EFc7FH(y{uWB+ZDp>?6MXKn-x}WE zNSe#(ICd##WpJhbZo}Sr=7uMNdCBo&P=d={|5pQ&HIrzw8peOfaE*Y<9(pROYu%h+wp^T20{rMP zCL9Q{w8Lv2#g^wwm|5mRdzFBBeuhz5CwF87CR(2Pxti|{9ZgCv%MR44Cz}-uJ`7>d z?Ch}SMkvn-L@iBJi4{ zPrX7o<006j&;m7)9N=2O-sZkwPb7m0wJm7(86g%CVedh^Y297-6fbj2)diQ5WUV z9etU(y;MJKrdv=YX|&%u1Z5yx9DletQ1D91E%d?Qz)FbW!aR{HiD_7iz7B+yuH78e z_J%9;@J!srV3NTS5tH6TI@C2Ya4dg3@&6<)VIVD(7xsZRq>~B(9d=uu;%hGJ=pDkQ z4+h0t5F7QvW9GpF=P;-ps!;i!kQ}V|8AT7Nbg%?>J25q@V|imD*6y{eN1BJ8WVk~n zBGjSt` zJ_Y`yppHH<)&mgF4?oCrF{gM^Ag?n>3nG8gE!M&qJ!`bHv!Snfc^Z{-o^QbtZD(yS z9P_QvCf!+%CNMq06*M{~97VMdbyfLk z#JvIWE&#tBj+8@D)~T~2v*a4etpG>tu-%xR5pPgqUP+g7dp;~wS&shcn*AzdI7v2_ zN8wp@u*bRqa;{zJ7r}72jY4p)p#HF)Bk=+WWu4YGmb@pIi}Or}CSQhsslp3I$YJ?* zO&06z(SK53ye9{a%v%DD#YDsgM8ROGa-C^xI^Oa2hFBue66dtP3(K}Umvo&)dO)iz1>?wAZ1yrw9DS~r3BeFo z8s{t^=_#3#ka9)6(xGAaWMG{t+y=87aAx&*zgSCd){HoJR6MXG1scumltyJVJ&pgh zW*7(`=1FE*$H9kxoJlS-1z#!@&3eu05}V)|w|Y-A512JIzp^XUW{PwtgWC(_sGr$J z3sb^$&zJ@g9+6E+*2MA_IaTJ>u;;wouDs)d*#K52f@&2fAhSu_Sabw0=<|SqX)j3~ zIkLUvw3UsgT%LpHOpTm9a>YH192dIKnHNQ|b0uNSbOq{m#RLK?9`?~L{)L98+M_=$ zovOG${fOxfLr@$#c}$(!NLoaSYBASx)BIg9d)11w*9h0QXF{i#{A(Rh%e7efDB@q@ zLkx^f-Z{cOJUI@C1^jKG6210RFn&tZ4s z_)x-x_#lZ;0%vX&H3&b_9|$ff({r{ux^o38BE+xyZm}axM})!^9m~iPW_Vttl77NQ zrFAZwf$Cs$J|wvj9SjXqDppl;%le^Y*x#5x5i^MOS7XT`%fY-5cl(BVIue5=XKX=Q zL`wo_u_?;n3Ej!Nj1kR>dxE6PZBLFz+7wlqYj7b;ftqB9WG?esO)Tb`xo=P z&#M9v=jqG!Dhk^Z9l}3I5NO+(5Dw|XU}b6lFy7>|*nz^4jSwfyRErp9 z4wI`@(vfqRHbyIus}a{|fS7a3j1+{3_bwDyTzBwKVpov zwP+ifs6H8ouLF24NUW)uB!g%k-zc&1sd9tEW9V<O`U{&}ddGVT)yV zUK=X|BzD&b@Qa)e{HxVx%=L&@86EzT@bhfN=iQGdgZ*yw8WbTSL3^%o1kX^?_?*#0 z!Adcp;bv3;?~wFQ)*4z=wdH7ZXQzV1XGOu^JGG{$x7i@=8u8?aY+DkUQDZoGy4*D18DMJTbIl^ta(1asZl`p}~3+?*NQ&ekKl_ zt(#MJj`##i4AIrBe+4nQ+gQVKW;9b(4m*??r~b}rpV21%&|i|2q-(V(GP|Mp2x90r z5d6FSIc^1t$Yix^^?D9262dyQW&0@8#(rQBI^Efp7xg-4Bcl(*tVTKNblV6(6gRFJGvl!`0D>|Qkv32_IJOuO%%^N2QKsX+?TFj4 zQCMhks5#am&pwQih-b(pg!s{b5&enkY&Y2{p3K3!Zy89(eB45CyZ!k8n>JyK?4U^2 z=*f9xeU#d0En5>?Y3~svDOhoa$9RI#-9ZqDPrs8s6u)@uagk@s`$%RaIMxZl#5%ZXK&W1myE0S1yGF;X+`e z2k8`OS}0CtR7b~*M$@S>`4jUacnYHzE)?MGmw|+?Txj^z7p-p;>>iAEYqGh=P%HAs z79IG?$8*kfRVY?wC}A?m>Prf2E~jlmW*yxKnPi|taVHfK5~Z8+*$wwu%iXIfVG84h z5t!h*$h&VVQ^F`*=)X_RB`rvBvsL5Un#q&h?^ z4iG5O0H^c_g2VI~SYPt-1+FJ`O{=QMbl?(W1@T2~MV#bn-2HNXjA;QL*BmM&}(l7=68j9%fvZyFs5{nB6O$XzcSk| z{TkrjohQeXn?$0(UHGW(J)^A~H*m*crJEYV@C-&>6E2%_R+M^1D6I&6yfvRj$L5G9 z#mKGkIbV0ZNdg6^)9qUvIUkly9_fZdX`+JGSM3fdSGtjTf!xvYB18gwLzUAh)H+=9 z?jYr)#dVONpwhzJdCV~4r07(FA1c22PJTH6^L3VRQ)Rv}4R+RKicy%V8ozc&JMo(* z(Krr1ay9yAxq{kF#oihkr6y>f1DHJ#yIOE?cvmV+f-W)N7oYuf8!(Dsp^nV~6l4Vg zYh25s*lA`Ij4X3P*Ww|Jjnt#ENKTfsc6gNp@x%!cGFXqIs_fwyD7{{eaYL+qLJMZ` z4fa?OU5F6J5A8UHMzq7Jd;LRs_T|Z1`nHJ;!csz|xSFH>Y?12w-x{du>O`q|IEmJ11=jE@F11r85>G@)0#vDWwDE=0QLR zwh?kf7iyXpCxL{6dc^pUYu~D|!3OEDuwtaHq-ydp;hWOqSwX^Ku`sO%&K@NGUR{t} zG?YXNJQ|GvUCep3w6I#Kx($U(S!nAV|BD$4=+*@D9`deVnt52D-Dy5~Y~Bn$dUWXn2`b z#3Sk(E4>&ifF9tV@`U}K?>2@jIA{B8!C8PYCgYM3i1+nh7jNfkQ z-ri%37pA@GT;Z9YS&8ruh{5iby%zAE`ErVR&rfOeLvT1l5>_hs@l%Frw3A;U5%j6& zq|!?|(+5!&NQ9`xPA-6h475xCNk-@2iFLUj$E%ttbH#`mZJ_}nZT(n=W+d-NPbqgy z%zt7)IRZoDXi=^9_jM{YP9%-FJh*k@z*Vl2+Gaj{>C8+d=>;|>ufE;#$gnzb#4i=3 zR!Udu7!TGT;bCfy^+BFz)@y@C^((T1*f;a|{2juC5|9mv5bn~>{n*GDpW6rxM+W5? z0yDT&Yp|T7z!;jLIHkhq-Ux|4!lYiRVMFK;cq~Gm$ZVO*GnYw^WwvkmgZVmyc(_15ILQ;aF|H8!GHw~dbZO^#o3}>2a;!Ozx^!Zv7X#H@ zqbBRmbaNnlFuSnXTFW}!KNv7py8~)R3XtbkG33S;m#N}Ur6|L42G;wGl+FcATaWt; z$b}mTJX13nLT>>*cyPFhv2THpfQC7dS?2N*5q!nMWl--D3&Hc}z$QgCIL)>M&KQ5d zB1@}xE%~m-Gon@Qm&~w$#T#X2do9eBsh_|}CYjvjpgKDZw}wDI(Gn*^j_=`ho^UwG zUC@%<;!7FPemSIB@fh}Rp2=h2B+t3v0fnNRg_N6!rD&5pIhEa=@|^s4)aVHQjw=;LapA`i{Yi zGmz*Yi~?nDs#KJ8YybZ{riH>ujvdlj61m6+ak#7EGXDPYe`-+gHMN(~68698boq<5 z?rW7=p?I)GG#v;TpXKFrR*2&ESgnucB)46vDg!D2=oPJI{&)tVA8JIWxzTCF$r2!p zZp`u?B#2<50(96!>4CQ(!SFLY9WyR6s9yB$_bXGSC+g6eVrZUfaiVu=Gj(;w%&Uqz zPvXnpLBtJW*T>es)gZ8NDgz_TS?{pYMdxuU&qK_Xm{AR%_*we&!@!S2E3*dTtkjOp znP{vpeR#4}X`wFbkHP9MoAiNMGo>U*)FEYZKLb>Q2z7yrc69gV7aUMU z^@)SV&$z;qSiv}o=1A0pWT4(EZ||uPt&EU-M^M8PFf!TiUwlsM`(1vRtg>8-tA$nL zw92cgBfep*)>k{`l_&NCnR!j9#jYzzJB|Ck_eQYyXJ5|(?tq0YIPwMzs3%#tI*2hS z;D$pYgaY4aGBSW$hg#TLs5(KnILbnrNz{r3rsQjCkJ1(0oynxPOnfqPQH!>r zQ^)0l)72^H{KJdj$acq3JN{x$JwwVmr;Xn}NPm86zsZ5`pi7<#UgI z1zSXO_?Qr>n%U4?zMxYFa9bGpqfcyT%RTT&n4{fP!p#7w2Lvz)#5lYPo1uds(M|>J zW@qN^G6yU7+*8+oYOa_7`Px!1R&UZt4c*z>tyA5i~xnBC2EAH?QA4@R*dzS z_2*sasgSoBJBvyY*R8~pEeMb^kq5k&PnV-L3weYmfq&X%_tt5EC_Y*ZY~0j}(g~DA zWJXf`{n!3PD_EwHIZ#j9L*f^Q$T)RwMhn?jJ0T_<`UdHM!CuZgY!dISetMi!*ecA2 zvxwt19J9TAQbi{t0OPUlIY@B+@0-aYol<6VL5UApG(itoEOk#w+sJ`Jq$u$_saEMW z=KBnLH~gQ1>i)y*59RB=6Fh=$jg3qQBo=}0tO`ZWSBf;u;wBty!rW7& zVk%_Ib3|SF&;_nYZ`jDy#?9PvBr7f3HVo%7chCar1_4&Y^`19x_pvD=>a9`}+BGqR z2#VLmc^NFA@qj1Sg;BpFvV#4UvBeqCZf6@~nN#sdbJmRK2^De@Vh)l&tn9IK<2pSLxG~W9fIMI+l|;dcJUt9 zihHgJ_pESwD;yA76kE&#xP(6CY!HU}H#ZrkSv5j1xmrdG`w~f&5z4k#1aIZ<)e%j!iR$Bk zZe?7G&hTiJjb1yNPj_NsxuiJF9r2-?j;T`47fe&`KQ*|_A$pn!yc^|V)&^II+4%T|W5LapUM|&)?Zs=>%UEK^EZ5lb9U3qob?%C)CT$>Pd zFN%INQn&E9GYJ4WiIZ5%%xe<7&DCkN%V5ScCDmoK!%R1yC7T<20sXh4&qf08&gbl) z-(pd`2fCoGIJI;;j|YDy0vB1~g6-u>!!9+@C$g@`tLA;L7uqLiM8zc^X|p4n_R*qh zMm#zo@KP%ea${Z6pt)&OUxp*mQ*hP&@c{z@d<1^bT)B{@NB>YAge)j8_6HW zRyQymFWT*+s_eNwma*F+5J4OIklflD&2k-Jt|DP@XX`!Fac8JH8i>RL4a z#2bq)(-BUiG|#d`;s?n0<}5VU)ZhLL4~4(W?Z^WFF7IbToX^JfiR1MnkjoA%{zIh4 zCH$0Y=kQP(7R7W+lmeNU8@NR;e<_bKWAL_538)E;B^TiI`W0LRl!LC3X`rRta2}7I zf@2YCgh!1l3nF2+fo|ou)eDON)Uy>N$Db5M?){;F6i3Z2``ogW1wnM0IF6{g5N@Dq z!~d4mN(;@}-7%a~I#9*~s1!$6#F)dM(0;U^2rGivLXoO(lZqq6>9c&M-*a0@Jn@ri?tUjK=`j*vZDVj`#1GMN14?xp-m4dFloPxK@~=Zg4pseX`>hB^z%(?(E`P@B2f+F zA?U#L6O0yTgC!*AN&YacKoDby&|K0!D6O}c_U|11k9Q;|d9*bWnM$$Xo;4t${xoAJ zDikmx1mce*thDLacw+V&q3`TG8T27|mqk;7Tak*V)7c4VGv&@k@N@kugur3Sph9H& zoF%^2=@b(#pDEyeesI~W`VZ#qYLW}C4JCAYA+E7|xf{$wfBu5?dm3!WQ4>gOI`GSt z4#%iF{hc}r+=~@A#1ZTYUkwpFv_Gg@PUS2bvjkqjojZVX>=d*}4|d}eZG`zUl@cyB zvZ?*3&&q+*9oQSjjB!zzV6sof5W>s2MAFC!oMsf8x%gb&@zYoTBBmp$XN-N$1Wh`E zW1DF3Qo5?NP_>kc5LoT>%Cwufnb|V{SE|t1Tmvura>IXT&yY3Ldt}7O&a2_ec-HJ8 zpJO*MgokX_o!E-4WT_!hgyS$h3yT94<=A?D)LOE)F0Cn~4$YKKXYb;Z+|6Wi_@nND z;>Vc-b4Y%)x+y9gZ<)Izv)1Fzw+god5ckMAiE@_?x+x(yFj?j!@h+kNKICaZpJkIV zA#*h+>K(#aqXzT!L1B6*jso0ltjGA2UFLYinSyWRy0r7mdmo<|2b37-^m^j7Hd`%3 z0(Iad{@V0b6hdk=0)2{Ojf?+DAw;D4*`NRb8-by8PM6C?4 z4AcP!&8;Ie;Xr4D26RU{hF4=)YAHJ~g+`KVO#gGuU=s&u$5>a)r2x^KKjC5r+M}7( z!NTX%I*y7i)#9!(_Q+mVlrOlZwBRIXVq5hL)-*{2&TkuDqX)ooL zn%UE6{F^dTx1FX-Qly^2SR>hU+h4GKXjM}5bC-#R!NA&!cd(hr9yj}j2Do^{AVB-6 zR~#}&M;5czP%0}1_%R^fl28&evruh@;OdhAYV!MPQkw|`81MrPUt&c(e_6R=FRdPj zNKDJd*B>dImdfFY&ovUIEnR8|iQyhx6<{tOIUS&=hcsK1-jb}d1L8{o{P{MqCYCuM~3 zM(Y_vAb_vI`?w&8B-(=m2UI4j!>t;#Zl(Y^?AdcYxc4-HS5e3R@X8#?VNk zmow)q@~qYt>7pZg1b0m5nI1$R=a0Lv$ERU9gADj3Nt6R zGpc<6g%JBDwcyxD^?CPg++&~d(A4Es|HXypgRQZM@5mROA)5(Qqw(hgN!9cy2Eqdf z=Mrfr00wY;F`ZKaG9&^AkuiB5D#T?Oz;o2f)sblCo^(0$6oSnCyow)*VeQIc)?i$4 zva57Uqy9nY{wz4Ih=Lv9A4txX?>Sy?pNOZRC;Lfn&1 zs^_;wx4t1Lyho6AmT7>WnTj83!KpJMR*KpgdCE(JEuB61)s<*FLW>%1{F~n1@&$m9 zX#jW6H_LEu&Sw?aaY``= zbRKdO2Yi2KGc&thpttO~gCf ze&RS~GH1Rbb9GrJwnMglI zK0y_iZvBAA09NG!M{Y9%Mpo`sKU>70=G+WaGUyaHB<5`WF)PBCwx>>YA0tQ7h_9nt z%%dxP+{6I_wwP-{X5THBacejG*}SDz2p`&qMU zM79lWbB!4aOYS|dx{E=#DJ2KaXnNA9An~|jVi7G{As2j6oZmbv3$>>qPh9GfDF}3KX&BgS4{}JU8 zquu0I^+JbA@Nf(K_$cPulXu3F+FbxiK(@ar0gKeS^{Zv7L)v9?5}1MZIu?0g;^^E( zwHLwS?_co;f-MhuZtn_3rI&(O31#B6tVO7auA&Fq!Qa)44VPLNe(KNV7M`gUhYTH7 zf|{7s-(M923RDH>IZ?fOKxgg42nQlsNh~|X2N=b>%1vw4ymcqldHdd$IPCPjMo?XT zO1E#)%%3cu%v}1W#E(n5YN^*=%1)(O?X0<2Hm@h$?H;KOPd8i=3~xR6XpTGs0}-yK zuzA^8GwkOh%mK;NG|u-Ra*x?GQa=+TReU@Nki03~h%o)z!U{pwMqH+!o^Ex7W^`qv&-F?3*BaRMSsX+_(zEn#{XeEi$i5J#>a!+TN}kf%km{ zJ^%4P{-6I9uZlkIi@kKy*R7(~TQ9PHnR-tpO`dIG-Dj)bA4Q!hC4K(DO1&tZkBa}) zxtKMJ+!t-9s4EW!$_pog(p9J)K?#+G7YHBr5~SD{ejxrxw`ed{()Edpb^V_ z{E%Mn;_ScsC7_d{9xCnPZ`5X6jLV1S<@G70` z@`p-viTLc#yP2Q$t8G3VMTSyMTQ_~Jbh@evD@35`Ah$B6pSy)1B56`;FU@&A^Wf@| zC5}y6S?lWsEUozt4A?L4v+_Cp2Orf;@o@4E*H>&BuPARlA(iH_9$FnjzPab5oDBNi z^Zb+RK;8eoP7S^4sh=P@eYnu5EGnP$^9(#zDf|>Vi#VZDT}e92X}{kovIMr?rS1;t zJPjCLVX2Nbni)pk9b&z;oX}SXK2;yDDrVg2#RGj^0c!x#%nUvcO0&>aWx~Tm5cKX@ zfYy3m6MjJo6jd&tSpBRL#A#5UD5tnqdvj`x8P<5NW-a^ndxPg;e%?(*EAw8Cp)C4N zd9>faT(R4c37wS67JsJVTaSI-Lj?!qeFdHOK$qGsjbHLN0CUMZh#MLug0y^%<2XV12Nr0)xiH6Dg$KA#1}Ap>UVqCd(HeFVauWl4cmNxN<+ z+>(L-JuUwHs(&i7;H{*Vv{qXq_kL^4qfwcNf&oZ2)&39_OVI;NFuhO8yTja}-(UO( z63m7tEYa@s26Tly)Gbx%VQ2izfBMFzPiNzrE-j;LU*v8T1>ypt8Nu>UZOIQD8kFLMaEdC)Fly7Ib1O}msX1(4;;%ci_oiB zhHym^^QzjN=e1oV>31n7+6NAu-dfv?#)XxS2TlAi@_-sYWDeiBMZ@QW zZ)EWm3zRT9cwl}Nr>!?v`v?^fA+8D-IVmn&K*1;yrtHA$Mt2=Uul9waaqZ(lFbS90 z35a->!S|ca{Yd$7ea+Y5+Mgj^)~`q^z8>NCNQQM1jj#san{qr+2cj*ndcV6$KM~rn zx@vz52SyAd%LMJ>a*g#O0_j^9N`18z$nCIqb+DFK#-7BbZ#_CCVXQ>vlmbzO(DmCf zKB<57GLKgww(5f?lb}cikcZAltcBQyl*7Ab{`GV7Z5b;Xrtv=&+52gbp0aM9zT9eAoVZx>YkL;p0^Yo=j_FbpJDbXf7V)-uUQCNVc?%taqDX|&5A)< z8O(YvfbmpyBe4@6wWkOi^fD`>KVAJ}YovdEym~Vqx~Y2CKRt5fU+(_o_3kSuN`0$` z^+!tQ`3;`2$zvoko|+8spK;pfL;l_CY5iU6J<>myW7xC%AAfs~K#r3tsgdKWAJqOT zrM*(xYlO^6PR-q2pZWKcN6#tuekamDKG$Aqoh2IFBd#^J+b+wue%))=6)|MfEM4cyNL?0nd$>u0O?^nM3>;tVi24`4lVpi)aiS7@%bWcrMb?^KW-J! z9u2NP)qUpp`)Q~L%;*zN@o)9;OX|= z10qIBccJs#LpmRZ=zWM$+#hAE-W%ju1!xt|(#NCX{>@e2a>?%WQQxeFtU7Dd z(t17*=by@8W#U+MpnN*C_g(^UX>8ZKisB;gzhM zI`a&imR6p{N~B(qv8O!?ne!o({bN-kJGmdY4S9)HwQifOLiZvMU zzRZL-^YdMU99^djdjjNK4ST8I|BPG}?~%4R8A|ax+_5+#jzw1mx9YvVKSWOo>QEnN zdQ&&n4^+!If~1p&PUsWDNg!CzX>JF5jCXH}42{^_p?>d+x$cd^ESgGRpBBYp38<(A z_M+O?B_(fiSGFRo&(y%jgS>0)l$)GgL|EpN0sw5~b(EqPBF{0CDZ*|(0vJcR^oqZz z>AIUgD0V6U)aZS|ZmART=N28Ro)AZA-u#OAd4dr9lTUA*_hFvblr)z!iiM1KqRWb$ zC6SrkT?cN@X`rQ;(jqIY&7mUNwY`o>(wdK5?gu<7BeV8(I`N0xvaSon$+xV$FSeeM z#JNA>ys=KKhg3wrs_#P;^tOe3s}!$ugWb@bfc*7^C!ko*)t4u~=a@s(QJ{4r%g0Nq zoRa~^^eBB0Ky{6vdcu11;2_d-{pryWEl5PJ&onK;;vM8W^KCRXoglH#ssmSGC)q!! zMO83@CwuN9r7$&Exf5{IN=vZafRZ5c#d8Tf=!$E5ZnO!)@hXp+|xLe(cXnu)hUk)*s|TI*~_| zq+X1`W}v;I+qMlgG*$mv?R=StfZ}|%K&n>#A44qBBk+A}bJ%wIRS^oQQ}>8)M$ zz4{oN4ao4BjCL}tK4yz=xB1K(>%JD1IQj}d0|~=#uYQ9KRvr2I;cVgf_mb>u(uUen zU()CEWo~&s+Q)+Ylv8~M>Js#x6~))|M^C!(njS~g-g`xVyo0kw_?Na`?q5mNvi#%t zeC=}Qctom6G7(W{=d|Ci|fUmup9V*N|k@UQOn`viT}^IzstEj?$SHd3#h z@eJwvm(}^##kVh!8tjzQ!(F>t75Z56iGP(Pztn|ki(qv0-dVb>W$qVYqj_K0v>@!{;XG* zj|8O4^&mVE+@I=-r&t|zKKK)YJW2Ye>Y-&$t*@v#+|#5ROYRU64&SHnIqeRsu%oBxT`^W#YsbBiwWN2Wy#Mykhk33d{U0uskNf}Ye=if) zQ<^}J`tgzK!(YV<<813#uQha@3Bze<+rLG6Ez?*VfBiS@#i<5PALC@5&jwXnpRff* z`uB(Y&l>sr`1qHq;XTThV_N=qmGq^0YUjr4k-5s)raFI3c~-5aT>|~9a(G)?J-^T^ zMf<1jaX~Lm`}MyiG%xj`Kh;Mv^v^T!nLVZY*VCgv$B>YW@d2!8R)M;_>yZR)(I*L> z%d|Vcp7o`}sRd|9zCDDA_vrgF^`7%d_xgvz^F5#R?=yi8Wa;CYd!`Bg>O%hw;CPrN zDlgSP&ZoCbhdNUKZV&d%cj<4Ral;-pYNIMEq^}3fe!95-M!@5x`_+Dl%+q{*KmSTj zdOJ&feU{RBZl%6k{Y<8wvqoRi!3m!D(zHn*C%JZ^E3cN>Uq?h9i2wK>|NDPEzo55b zl@04zFb#e9mevvMM-RUd9Pd2);bSaU+P~C<|5{j7H#P;6&yp&uTW5V1)z2O9Ug7>0 zF7G!)r3g6h_}==cd)~Fi`YEM7?Ov}$WEdZ;o3gQ=r#97j)+t)2fIeqX6N&eea?To6MJbLJ#PQUS@hW*yxT=?ueObTxmlk7 z=pj1PnY_l`OOSoOrUUx8p^yDxAN%ZS|9d*wzZw~JHS_t<<))IV-J?71Y=~TaKHi7n zs$-=6D@bx5cJBo-9!z}>a4SUV>-+r&U}vo@R4k<>eJNYczl+X2)gOuPCqVEYR=O@Z zvi{L$SD=5agVrxc67)hE&;}5F6@%p`}AsNUUuAn zKgQJu=1VuF@n6-!zn^V=uq%zC{j=KnuN;8-fdCNrNa=xk=nC#PncMXbZu@U)6fcfy zXGw|GOktEOsb2jDYr+0bJ?nZ!wyc}wZMTlBPw{!6B$dfPuBbVK*MkpY*}a`sRFfAp zRD}|IE>YvKS)?5pl%|_2u8|j9qrO|jA#}*07QsCNbc78%6sS)Div=bXf296!-F~{s z@u6L*A1C`Ap4Y?vR{tTfEr*=_#oRX2?$vo4xoY%TOU^UkQ}4pHjXmfKMtOR^EJUM! zJ`78efItOqr9uy5Gh>E19^j!6$CLmc;~Q|@USb$8^XBa13y@_G(j zzMws{&n^5_Iy>=v&lJJ@8VZe1IM({)9b@ao^Q%5{@2AUe4X*L#CErB|>wAWSumb&m zoLyU%B)5(u>aOK(#y>N&|HWXAU6~Pl0F>JP@Nu`RGUFjpBnSdULnuAomM7&jw$3Cz zW&%}$7Mu;JcZlVk07Mp1WVZLMbuSY)?CVMMSRy6Q*axfSz|sEm-~auqBV@%wxXlKp z{?-sdTH8=VSh?^PbNY+YlVPO|S|G4BB~Yf3kOwV*6M9y3T|(8?l~B$w6w;}&9YZx@ zA)!vee=TN@P>sA-ycwRT(o~^Yr2__5p*}8U2GS)5T@aV8Yr=s-O5(dib{il>J23E= zXJIx@r(OY~&m;{PrQ`IRSSCtK0Zr3+WHZpJ4ubSmn`2pdpsNgJ#XzWD$i(aec7LEu z0%Awp`&t(LYb3|*Iz&@g$g^tN8r`qnlx3j^2pQ;In%0#AiXMfh1X)DfXzG;d1UZK$ z-;tg@fac!J&W-8_K+l@P#UzVwMb*}5@q9k4D)#`>)G9gopJ@&@+;YZ?b%#1&22`gn$9je{;K=k0sxCqO+Mfod8t9c zpz1z0^&}!>o8O)|>PSn|nuL8JKaWDrD_X-m-p+!c$D6Dac#FdetglN}gZ2l<_9c^0hLj3f*3+XiWm zk;U9Q14N~fQZ5x@oZ~?@iwZf#MrCtTt+rU%MxGU9U=%%sSG6QzVQk*rq#MN}Od6D( zZdp7N8tVg(`TW;J_z~Zzb?DO=LcK2_S!F!lC6CO}aFoc-0YJ9O$Z%-`o|z@a&<#`5 z#v00l52*DzvQuzQUNHd_vFZvQb2b6e%YXFw$4jYSJ>S5{`MwINv>M4 z{;t60tF}K9sTUdl2BJP_{S*-2Gy7MEqqwT%-eVo;|HyKrmK58%YMYvc+4A~sX9&M( zKqa~Jbi|ZpN0x=kcF;##gl`uEQPE_it1QC*U&jmPU0>kCw_Wixo1UrMq?yllkkw%Q z=<#6>MvJwYPMQ}g#?gY)9X3< zwSo$cB%5Qf`)jAvjNggj-O{_SFR;Ovd!ElRe7P8J;=yR{+QE77mF5q#xaF&RNRg4W z_w!E&0Ly?jY-t-C1}5rl4isF1TTMi|MxS+QUl-L-BZe>a z$N=n`&WO7Rs$eK3h2aDHz}~Fg%9!x&L`=nsb|G^Ol{BMxnaYijLth2lA1z$yo(?oR zjw!E%!?wzp~T=}nnmFx z?0;7e6*S3_Wa9v{lob+*; zV5$-?2Ol6P58OMs-&f}6Jh3z66&MY9#6V3P2|@)=nE*noml>-fh!Z>CKIAm4=nKKl zsY3gc{QmPT0EVK1>hmC_-B9`uJwcUMpe_!_6)DIebJ`=68dSYP@YJ6Yj0-VWA&&4E zei_2Z9s0fZY#x|%@vHV(Hc%l6ws^4^ZvV z!V3Hgyg&p&nXg0FZTeX1>yNtC~D{hHi5+*Gvx(C%4f*z65{u+ z3SZ5!s(QFBDj~U?%43@{%=Y6WO=XGGLCw(K#K39_3n3ob*F_caqo&qiV_!g6lm?CF zW2objgPugg!)wr|gsDO$a154#QR*r94I9eD5dZ}|bHabQwmO>&L zUBfMrpWeES%qVG>!&f^b>acGVY7Sh_I< z=3xNC%&6JEpb%X?&OJkL1_($im(usgdkr6!^0S(oe*~j9_2%a$>W@ksQ%@}$zWn+W zeM1l5ang3iu+tcb(g0TKzPSy>B z9}*1vf`a0XPvVBC71^5OspH7xAU2vyPv0IKGzqm|kX8!|cj6H!D3+6`gOaQ?b7pL6 z5=Jxs^=+c+Ci`bB4uvjJgp%X|)y>W-o$8$^AIT`=c%MQw=aF`GnLF&HuxDC zOw*0&_fQFtLG4sfb%x*Z!Dp=fS-MI5J}o3Nltt^zsGi93$m1}woTfY-3bCgTk72TH z-!quZ2WyvbsDbq5;qq741R6Fb#ZX)}sO%(3Q%#P?#a7}l1uo{9PGs_DIwzUEp|a=T zFt?eUpvvmuJG_kctg>!-_U&rHm&HTyRVZPdIKi8Wl(zx&ZTc|nnpBRKW#X7$Px5{J z)GR)nJr>~|axL-snY^d1qEioy6484-(Sci|G%3AJ#<)}lkQ)*0E2?)HB9#$$MIinNQdmzm4*Z}BZ zVXHh4#)_7Nlp9Qia7VTV_G5vOMmJcA3ej{DHT(`q2{2;IvPD}IoMM=!l`Yn#++Zvl zoq%^tGbT%ZNZkoTt4qT<5R>Sk0qMgtZ>>!zHN<7E9ix#lC|jU!@rSY|afA3`jbo!8 z#infV&T`GEzNVPj@b#w16az1es&31H>`F=HsrNq_N<+NzO<$+3B}M48PJ9vu)(GQR z*+?yZRNPbt0vB>$O%h9FgPY*ztI~EL@lAyWhcB6fcnI0!|BISVpF9MQNAB_RuC%1F>?2EB-l>7;6#k zd?;gP(eqfu`CJ~q0!~GWXwvsTbzFi4^lf4|ZC;D-Xzd5sZAQv%ln`6$jE){8v9Iq{ zK^s!iYJ*Ur2B`HGI8*!t64~A~W#h8KZwc@3TqQQA7Zy3m4i$@=;s@D9O_aZ-EZTHq znQ&#VIMI=S&!l96nqH6Zl^W=wMS08_-?blkakbEOc2QNnkbx>3OK_+fgvQUsGKUzQNq1>aMdheP087 z<6h48gz_w>CikOX@Uge=zx&LNv!ed;39uw~U=0JTPN<`W)zrU3Vj$^3Vf+wZP08dx zUYlZHRbmC+Dq$8a>4bb>JmfAvs?l^#8&-}QyUHLQ>Vth+2k5&B3c4Pq&qiz8)r9#8 zLCjg@xk33w1G&%g*+pUYJ4s&-xlsu;9^Km>F%HVjHl!i8gE{558>y&WKo*r8rzKW6l0kikIS0 zNwCQ=eEH}mWAVk9#ZLvnOIweF9*J@MA&rT@#^U|BWYH*2p*TP6`XHIjih6_M?fR0l z2&_#GinALU7)gmy>2al={Ci9zMd2b|Kk158^)AL6A)cO>uzE6LZd^S{&310#ULdz$g zVix;?k;;+9WGm%nK`1+pS#-Q5;!Tge3l6=-ep@5G6@YO`FW0l2K&Ytd!+c>TEq3NB zK^6b0j84-sW(r4%0os*+@<1mPJEr8dEQbe1K?rm~r~v}B01#k}AFOG*Zidr@bN13P z?HFcc8TBA*ODSuNK=D!#QxK|wCQp+4GGlWL>9ay}@fArrh@&4pZ1T;f%E2~H^PbxL zL*n|q&R0n(5zpAvT>5dHAZ#WKBI^!u!R%1#{H%fvPHn>ET!Bz)mX9Y8r(%5w4>(Ba zvgl|~d5uMfiH*c4o3nVqM>>nou9`nQfHEvAblw1WR@NK_ibV0;*5p+!6^Y)1fzKV2GhcdqBQf=)2v}l__+Oj{VqbUCN)<`st+2LIIq-5pK9+jQj=_ zfKhGycLAa}|K>pS)rMRA?ik7lwP)6$Bu>HW>2LO|K5K5{VQ*eN#C6vb!UYRRYLBP@( zt&d_Xy@}m&YWR`m*YnYcG%di^R$>L4*z2n5h4y-`ea=WU-Mo1EW>B?z`xDBG<;Vw! zG6nIf6?{S%tI}K>^H91GXzLuAj$V>WiQGfD(vVJiK52?BE2aRd3EpHYBBZn7|ks1=I(!lZBAOv&XP>uRycTM=l^6&*(|msV8f3D;LfZvlhT0tmZL zg^t3|Uei*l%X7u%bAI(Hi!fgvJI8P>T>in;Un;{Zh~>SAX4J*31s?MNYZ*&zYB!K= zKpeVIIfzy#_6;RJ*1(T;*(PTz$e3&vJK%T9woG&g!dTB}k!>1F9woeP z0+c+n7CEeo@9hg0Lbpt7N&4`D%Ugw04D!o+=+c0Pmbhpa1HBz^Wq{SzGY;>?y@jEZ zyA5Nw6Nj&_ss1{Zk_ktquQ)`L)XzhD#eQ*pXozkVXPzytQWx4)(_ZoQ-hpsRyi@D8 zPgq8%>s>FjfZzu^urId6H*EcE>I8ZEK>YsmBVrdv?=>{V7NfmKUzBGraeV!q9m3vy zi)i|MFzvrAb)v{EFjK{XWY%!a1bDDP0d{kzk5-(hP<67ltcRe6>i69`8#LUW+&*mH z(a@L^sR#)&Qg8r|S*oIh0B#jvJ3J^lOYg^UkpNe)0ShGd0`02)LHvoOqI}m-;0mG< zDKIhJ2C-7$?wDJ>>DYY5PsnOYl|d;~?%#N`sO>KZgjf_dkT&wH-4qC)s>EC;vZ@%W zX0|+cIg<$S?wV`N`>hlnFAZ6cEpW+$dNvNb>s&LRpKdZ8ye};cq+JOUI51e37_Et_ zc9LEzIEw#66bSH97r7+CbF`5-x1)EK3PjC`CPDdzp zFG<10R))RthmWIn4APw#ndq`$KbeZdF|pA{UD*TfZ88*n41iRk4XCR*w=MeK1E7fP zQnc$0WmU*UlFYaWq(C{t#~6Mxv@p+J{ApE|%#BgfL@Ch|WumdKSyquXsjlu>uf*=J_P(8FO-HFg%grlrR@$!}1Jkx3&+)7Go!dS{xwBa5cYsKe+G z$r>;pg=_dwrg|dhg}h~Du#IfiPTMOj1V)WF4HRZlI5uYuagpE%bd~)z+4+Mgs99kh z=FhzIsc;2>Nr~Zv2%#b7IlzUW68(ZT!j%Tr=j|}7t5bb@g?l)PMmm`0ci5D9*c5{s z)4PtZF?vuJV=8Uyx$+E3q4W>sjvG}OSwsb9S{d1Fhr@Gv-i1^^VYT9J*dkSLSpkDK zX=L602(fvSP-myCOXZwgKdADf-!V*F!aGGqzwHW^no=Ex(kt`U)d-_a68)L$u2hIw zMy5Lar{4+84&+ge&4+_2^nvxq=~02qA*a~$dNHLVtiaFV!$(x}R7S0NJ>tSq2SbfS zx6Q!Wa%%7;M=_UAwqAFTeJ8s^O#v*zE);c=LJojDm&0fiy1B{tCJOLtTBP8W?p!(d zpTIYV<_bN!k>Ft}93B=kA$oxQCALdej;AH*oNpEb^(?uy-D#A4%$WH~QnW`kVKB6= zF-yuRX7(7*lje+1JuJb%nuBPldYa>&gue>skeO*O%*3(eNh%3k_I0M#b4_sJ^Ct>? zG}^=kRc&_L93OrfX`q%Pa}X!^JZ`Dlm|1~=p__pVMm_|yOM};uVeGgeoAyC1ZH56Y zPe)!uI#>>wHT5edJ9y=A`Vu-d(3 z9cqNi85pK>0$~&bLj&u>-70RYULQ-8Xy+=sze+Svbrk%hhI(GWqDAtV`V&jfxjMkS zWqi}TXbvKfz2&}<;XHA(=s1_%Jx{%L#$&donphLM(7vjlr#?m%I&W1s;ENLjWY9g7 zmdPx8Cv{qQWXDNqZ`td9yoSD8{%6?J@Hm%Ddez=WC3Kbd6^{b0s_ymWJj~po6)LbQ zYuL9ehfhhzNq~InEP3Rd=&D_dB5X4~6pIKH$wL6z-;^>F7z&kA$)N#RGc- z?2K+`e^6M)3^dJP-K!{5o(%=*cvx#Av~EBfMVjw16rU%?{Gwaixngm(Tqt~KBE)0E zHbb`lGf+Y22)VIbqU6E92ukYg6%~$|<&1GFZKyTJ@6{*{W^Yr@fr#c|0|LkMe-d{& zggV>kb0-clVjCx6KUQW*7?AKwNQF3(>wG>HnfQd|&nP#&Dd@A?9VueSu4yO~v+wtB z0H-p#p;VQlQs>*}(C2j= zBIPKc7}JonW|-$8$N|Bi%Doi8+j^^sW2@hzoQ;VwhZ+_|?LatG@?tnYqE7JZl`FTF z>SsRf^hpry5D5EDhv5Lbz2p>Q;c3P!!cZJrb7Q5TbETNLj+DVu&?}7d>4d6bj!URp zo2H_r(-Na<895}U8=E-bTKf89kr)UCusI0;C_2Qz2eq{V#9=Qn5kRqDLZ#8+janP3 zF%2DAS?dx>b+T491={Vb0UgJCK!=Y4PJ_jq93ktpfccM6%g<)@vEllhNKt9D6C<|=y3wQ5s1}5Jt zFLI_8?I2BcF+=cP**bvs3Gob~lENn`>?9^g_KjKP!_Sx3Fqo@WD%L#}22Y&}fv-Pl z(PX45GM921=8rR|hNaT-)Tt;f`#5<;QK4%!rzd(U*84e3v)Zv*;9&$$)}haj*KeA> z!HQTf&xEz_fgwIRhE2t$Mu$A@=U@cX>;eZ~O)7+-%M8-TFSRQXezqqL$aJM? zoTgdm#d#pkVTNfhU|^lQ%@zw6V`}7fY8;1u*OIe2&Xri1>_(Fus1`4b1^@Y*A2?+d zj?R(F3`o-u#7oPzrnbBAQ@(u(6z%O%=L(4)%lgA|Y^qF{gMUL%>aLX(#AY?XwLX@% zN{=`|tP|)oC|z!o!H|iUPHVGzfckCnoUe!J`c0*92?i`~eNbcT`?B#tTn`V$cnCCA zR;~;U!&@IVq39wANbdVF@tmbs7!Yet0-(y2Wp#9DN)oX3E0v9??ES4hhts*jSr23p z@l^BEBjr40NOV<)NjqqE(DqwyBO4MLmbe!O%oq-@LL8)8%i_lt@aw6uUdELQTg$q_Nq<){8^2+PFL9p=KzEJ0CRM1mFik5y8{T;8!}r~oq; zx}H1rMjsnhu>i8<^R=|(5kZ1PjsCjw^lVWohL%Kek{&E41fwJ(8zveOrOPRklS_Pl zk*d_;62>t`@>=!@iick^W9~Ko8Qp7c+`T_g&L&a^1db{ZRDv;%|5+uxNsT>`^%tul zqqFLhXI3i+^Hd>YZKZPTf^_dcjMZ8)lx+v>L5l(GF+4If%SU)95Nn%fDHLgP-^+uI zqW?pwpxhrWWeONle~RJu^OEC|K8GGIQuDfz-ycTmGfu~BP-1G;?Tmu4o?Q*oGLT zfx?p@7AN~@)gwl=0TOLJnw0n`nW``(eF33}CId*eWd>EhNXjxYtfxJV{+r1>>tUGD8LI{G~A-$ur!BHI^#F@e*8A|g} zKoS~e@EM0-9~7ZR4Y7|~jN{zd6|+&-kX06n>>k__ii+Y#7ccK99!0t)Hm^~4fK0w= zCb^f^db85-o*sWN^T*j$B86Xy6UIb4au!yNAD2TT_wVsyF zWRLOKK6!D2ZU=3js`^3*n(~HTof+e!eo++}FZ*=RBs4Z}#jsj!lv$}O zn=|^MGM<7yz7Mca47qOYY|u`cq?x^4+0NDBNG;^Z=m3!fi()}clF~QAwBuy*ow`VH zZi!G0I*8n_TsC_OD9N<;ZXnx3Dr@39M1DvyiKaRTZbG7*lIa*tHnZ;qK9bs2aA$5* zz3)f=6iSiBOcOCQw_aqwDp86#bS`&1#5ipacU(JHvo4^0yg$(*Bc>}Sw_qPB#Ht0%Aw(Dh59LC{`6n6;P z*wqzv;Sb9Y#9V~){L}y+!)OUd!|6c@KhWoWrh~VU3aG-*b{eS+mnLXby*J$C^f{@z z^j&JC-fER?niJ+qvUp2wYB6l0fQwpXfmt9{AC5cX{_p3}=8PldFYb3&Gb+BdG&WGF z22zCg5M5fzt&m}5bYS2k1+u|j>N;l>5FTe|)=i7KZj53GVF}(;g05K; z9|i&wL*%?dQn1~3WY0xv?FxozkxjR&azarF+bFQqm>P+6C=<5tBzCRoh}SGmv%a21zE3982yP9o^^ zP5a%f*I?)3$-{H*xgxk1T6?h<3~lW?QseuB-0Ea;setQ%wL@BhxQWJrYP^rg7{X)oQ~`9ZHVReh9Md-_28kd3D+t~G&E+I@XP7kyozK<7 zI$2LQnJZDEk~3++35%Uaet$T^e~VHYVfo{%OQF}fo})A7>y!zvor!90YVR9)$~M6Z zE!+}A13s3FPziG5Iyz$*>gwb{b1d+T#A(R{p=l-qQ*>gPTjku?5rZOo6^@Mn^z;5- z4U&$%(s|pX`)qb*+70fhG)|Vhx9P?Ad8+jRuphXXy#jP2Fz%@VnnVw2kS=b(-yGr> z=c31&pXFcd%wUViI_EQeSP}MIiR^jC6$pmOKSxCRQJIiuT!wyxMPlm)s)kqIyL;+{6@Oy(~R$23wxf`%(AS_>zARtx@wuE4ojB*pQF_nfu%)U z7tF&A0>P+D)u^YAEC_xZHG~IN&W1eq^J8#wnZnM`Cy+GEBCJd}r*ey#R@cWd=Xsdw zJ($MVO&4y~@Nd-%%BSQ&oFmwp1;=_Hp)1O0F?WbJ$a$6erAfuslrx6MgO?W@v%QpCGRkxFzR1&x?JkmU^G-~ac{en>Cl6Q z69xgXMU9*UaD}l2;d+!WG6kj(O|sFHqqbwwC&?!<+UJu3PUtMUIVQm|F4xnnwIRoa zUfv~5JnXrLX|)ycP|_^wO9Mf`mj1 z{LY1;89BH?#CAGjfg7i8_W=L`Ey6Ob-FS!fhT2eC-VJ+UBqAX7-ml>z>G&e&3+*Fm zPDjHox{+|Lo!9{|Q+H!p=0wrWYF9qDI)#Zc47VO#WZTxHwqRg@7&@(*HS*#fZi!$k5^97Um_qjO?PXUh7JP%5P+He*XLtTokx z?Uz;tEuJSHIQ&~f*;DEC|6zVfHDbRVnP!Mr0B_`3STw91X|54n*!^>WU}S?(BclJr z4?ViF+TtkE#S{rYARi$8%oiQdO@+c4GNcBmx<=D{SR5V%z0-4uxxfiV19V3rPCC-8 zoIe_EdzBR=IhsK#np9<~l1z3TFw~KxF(E`@J3x01OrCnHlNSffA@Lf8NHz4_MVVS! z9Nxa3c zHYPNTibIWgAQIUal%dQi7p9WV_#(EXAZ4 zD(EA$Y4QWx%MR3}z3M6r!|W6uYo{R% z{@s1REYvZ;xDa#d3}cQPVU0(Yx@ZS3g~Ssz$*df7+AGq!>y#5Rk1CttMXZu*he%dj ztMIA-snnG`*-WD5d7sLm6{!s<8b%sZGRY^cxa& z3pzj}J)4Jaw&W8kTew{yAJSx7j*2! zS%M0`fB}ZAc0p+&VguOJQzpmjGumoSHUS%$yiUpYv7y9ngApe>t#b&#S{>6vf@OKU zks9C(mn<^8s~twD%cR^0tC4KE?nAR1l}9nMvyLy!5{T>4mHYs#P$x|=6gXN62ow~p zcd@Lw*p8F*Y*ua=Cp3QsQ5=i-@4x%mkXT4mV^($3Is&fGCHhO#wvb+BW3_5K!1(kP z9>*CB6cfURI--fnQb?eHZmMgjzELG%09Ddj1{UDqPN>t`Ub!wNf^o;l;=z3-aBLDfu<|uhUQ~Nkh&bSA z0+3v$>`$G8EX_6fd)4ycA|JwVU+Es~(8!c@S;Sc)7Zbe3p%Q$Ufo!L8Iw2B1g;TG_ z!wh$=sp3e(4Q{0QTxt{*^9U%*7;thxNUaGUK%OZ+)SoW!j`>w!%M`@M`fVqmJuZQF z&gqkjqRw`9dC+4`Sb``u*|}{6;6(uw8GajnL4w0&*;2Iy{5 zNzNrqbtz|MI;( zq74;+J2aH@l#^iZD%5rq_>R@zJ6r{)#=4@2oLNZoLWDzI9R1+9W3LCu7$yeoq zvTGgT`HX54^;y4IZ`Z7*yxA2sD7sb;<$@={a z>`hP)eLYMnDorKQZ9u_pE{q|{1cn@Zv*&-eGMl3h<(ZitUD7hIp8~}-{7Zs6_sQ?B z0c97O=%V;pKqdtu%K!wB!K{3zwag%JC>CsXN!P`aR14+%DL*E!%(w!?@gw&YRYlD4 zB40Nv=LvjHQB0x_y9wRWG1~LvV;Bw!xm8Dfo~mXigJ1G87`n zxHzDS>WbEAX8@Q!3*>TZ6Pq^8OR0oI5}{Fzg4tw|M3xzO5|7HL^;y#N5KZ=Ed{o~!!c@2#gD`${3f6 z)q58~q~zTdww)PBt)EA{p>=k&!dF+l5qR4iazvFzI!crHiiRhBLeaIdgl`tWMGx*6 z0FU3K1b*DvK%X#+pdS(RD9_-^_mu1?2)$I@uF!DFF1(ej_y~6PS}fk;18&?}{aO&` z^IOZ*l=yaB37=zr| zz85yxP3E+cCuXr5#8ke5#vHJ&P@0N;fr^Tl6MQbYbcQj$)JE((!FXRj$=(-ycc774 z%R`o86;El$b93V@7+}0~U~AUJ-Ox|hyjac@utFT*!N1*U8>zLURl?yFGHI*n7o|uO zMO+0&7Ie23GRNsWDnkvWpx!%ts0o$6(CYsw5C>*JkQX4Y+>2DGG56A3XTfe&a@=wr z@0LvrsHH+Ny+-LMj~>1|kS7;3;S*5`qW;pZEa%kUzx&hCL;)$cN6ex!+MrbmGy*bP zeUL}c;43q0nJob~%rTB_!iL=4IfH8!Y(%NqX(a($ zRh$*`jDwJiVip_24cwAau-!_H2$pk9FZR^f{5C&^*5XDM&f}Uzr6|QylZ9Hv_Qux1 zuSul1W3j%Lpf(~%B%DPQYSpCiVauT41*mzd9mOLreDJ^&l{qGkuIx;MzzXY zQ}_XBhx<=zHU{)e{k|hoGj0QFDDccF3#nmVzq1P^DZr7EDDtYDdZ&RuG-} zckl4gc2?S@?qU&!0xU#dFc(xjTW<(c0{y;5KFDbwZ-Q4^-ql)n_Ab-{nq*JJ*!}1XxaJ~5_gSXU& zHhdd|v!xrwSeWa%l}{$Ik(*2e#yatu3=B0^3?U~U(`A^tIzk-kE3FK2DmO(I#5JZR z$Q%tAV)su8u5m9+wl~L`sfUAI{iAK_j@bOE?sT@GIHxVWi9iVTyagJx8Lc$AO)@dO zyEVxI^6>WKAWdDnbL~6KvtkxE*qoX9MQ&ksxn5w+b`E1yqmn-_r0owgjcyPLuk4$!_U;BYClXij=6*&Z$bz*?)6$87!4thFN5KGMrZXU3*g3c&!j5i=5* z3fnm(^n_(E^%;45HW;c(3MK&=c3wBDe00p5UOwy+IFXnE12_GIQLA@9>W)=2)P!_2 zZxoYh#GiOh>A>IG8mevIr4km9^`>dlq_=35e~d%>(1NtmgBXUHeR4y$dLSh6xad<> zIs<4r^{b+uc3`UEV0cjqX>|p=z_$rZcwfvsy>SN}7DxdG(Dx&ny+E7k^1$)%ckq!^ zD6PzsLjCtmgGKPlsKFYpehWLqC)Mz=sgxuR;e00x+^PzM>8G~EMI`Rc*k#scORA{$ zrNVQplZ0;E^*xViF?_RE5mu@(i%$=9&*v>LD8YD{-6O8N;_i5#WU5KR(9J1G%ZQ~$ zy}PCU5Ex*C4ZWVp%1Z56dbqmLF^guT|K4VKU7ddQ79f$W@WWNG zi7exeRigS8y7|zgJYX*`3_x-KAPxISr9)f%r4f=lyl8~V>krYVm6w>MHAfyrQ(Esq zPEjm*hsk0QH#}S4tvi$#PwC#Q0Sd>4a!-SSAr&ZvHG`)EzYW@itJN?f*wQ!S@_Q$M zHg3DFFi#sJ)nm+=F^@vT;ibBdBah~s^(YG?V%~*oWwH9K$R= z!MMS*Jp^F!N7(gM9Y8PaYoNUXaf~@TyI)b`;i2cg9nxjMEIC|MUxXMIr@I&4g0naO ztJ!<2U;24pZEh>W)Q(8KX6`vXG;m@e3Kyv%ys;XD!@jjfw+ZHbhteE4kpcRqJ&kZ} z2@929l{E08DN;v(D6`xSnOLQ@h$}rMnSy{OrP!;r=Sl9)AA7oYgh{Y|812OQEZlE9 zNz|3$Wb%Qw63~YSu2Uagv=bnJE_wE}mLOg4V)j|MX5KhCRqX+AxybP?k9pG!e@jHVezOuJ&1c-2f1-C*zAW6AR7Y-z0AfTx#UH<#MBYRNd&&h)YUt_5cPC51Q*X!3|o59}T=XX=KI_ z&4}~Z83wDVm$tASfYvHph&yN<9Ich@P8 zh@G#3w~5?m747D9W(olq9DSILhv9FBHK7{a{vy;Higq<${e?Yl$tW4BRiOz@)rxMq;px8Hofdo!KWmrchz$b5RUFsg9YD7864Skqvf#n08)7ECcT zi|=n=6$cGnwDgN8l^mgvTJ(b?ZyX?dSeUlhpd=#f01RZff$#TX&Df0Josf=iXms4I z?Rhaqsf{kZ52*@Pqpx5h$h=5igVtk%6A*HpkD;^I`1sHutV#OG3Y9or*V zAVqxy*Dx!{yl+C!yg}^hMW0^aAYuu!6SjP#fnh5x+PAF(&) zE96*bIF}*ghP41C8|$E{PeC0oTmVa=)3w=GVV9hq8pF7{v$kX?nV_?gp$fZ$cs3P$ zNCiN`D9}y=9PC2nj>4w_IOUipOMgZ3t$Cgr{7G03*tp--Oo5sX^bi$2{8#%Q? zsH4RSG#Lk2Y_;E(W=-NRD^i<;=cpbOA`f!G0(mA`{KPoV3Rq$moCqB+A`gsS1aym| zC+H@BIwTMmr-JkCUN%LBh`66sH$&FAL0xL(6xWPcrzozvfY@6H+1$t+dlYBTuec7WVO`A*E!hPVS%op8 zoxr?ZMrS6wmd zc_I8jdIkk=b7cK9uM+$mex;vKgay$zqUFC(R8dZLDD;375AwZ ztwdRq2KL_01vyY`z|hT#?PD55jkcP6;#Oe=%(mDU>w(?Q~x`kSRvxSH}|RlJr9lW+wP*TNN|S5N7FMYqhP zaq`riobd!LYnloTzo;qiy`V_VuyoI`ZJR@vT%F^`smh%-^xI*T3hhp@(K+&odljn9 z^SDxG@;qn`LWJn8o4F>(G^G$$23oYiKB&BZ7LChIEi>ErP>0ofW zFW(NS`6Lbh`%ZTfkc_J80{NirIH-p!PyJw6W23$+<@f zoDm%;B${qXj}AZ{VQ<6zoTAh-CV&3sC+z(1tbe#dTp5#aKw9HfAE{t9#6V{rvQ1L* zLPC){$9bxz^f2(K3xs=?BqmSdn&L1yZMGVw1`&({hBJG3-|wERIPN|tL_czcWi!xM zBA-4(^;dJ!wN9xwJOgs318|-rl?uZXAi*X6Pj9yqv;^OR0a44&J)&h6qcT5 z7qj-*>h=Ml0QHR+`+!zF@4>ypDysZA^&$=^eyFr{q0pO*gu)G##e`|0yWoTx((Jgb z48qoRIX#?3?*ad^@vCPX=M>p9X#abtzyxZP1&`)}NuKwU+DK$-4s(5o&q!&&Uyuf{^g{@kXq$LW} zlR3?tf-nmeJ}-(3AemvV*a#j|9P#=nL7!U;*O+~bojJ^{ekn;VH z#Z^aH%~?{hAzAV=r;!wXW0Y-^Feu@4H{=14>C=to%uC*9Qy5}dKQLFvLKqY1!5@HT+>;dJC{0KP?fZRy|Esc`SxY zLab)3Zl?WiXxa4Zjfzpt+0$5G984UX3`nWMyl-&C>~!=WV0eqfZ;N}E+hS!a4%;)t zWWvCnHMqu`IcvNVOR#2m{fJi$LzR8NuE|;SE)Rc+k%h~BJJ5-zNPxNMWu4?bsQF*9 z0J;Upm_sr%q%h31pZbBD6+&4e#u#_IQB1*>v0xnWHSMx3ZJ4XyiN?B@j6TKtmJEt07ARIL&Oa`c*st zbMJw@R)AIdMrI@1KC)!TbP}N+RlWc?&v)4Pl0Da#g-H% zisZgB3TROx()Ma#T46ZV8!&O7qJv+)Zr@fj5hMPf467?lyNf;xl*-FkabMLpyK$b`lrF<73QF7;wl;@Gf|Q64c&_S+U@uJ1XlOu66woLk>kdATX{49Y7* zm92}ahm<2s9|v?13CvMzKt9oy?yg_n~uCx;O)Hf!m={!bq_fa#oGgoi6eS z5buaf7oICqC6w@9^J^i*p|TwCFcXb)*(~RlEGI4rON;2tLg}GW>umB|Sb@)jIWr_P zmH#ez+EWDB4mD$KbcEp@9)J}uo5n%Q*2PAB92oCH8#o=9FvHB4-9ddaQs}M9^LoI2 zD#=W5U_LdtTA^~ptApF?sttG1;^Yz)d($rwPn`%XFVb1YRkqa**~t&o4n!s@hQGTb z{J$5a^DNC&)l9)X!xJ=T+30|F)1N { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../../node_modules/@hotwired/stimulus/dist/stimulus.js" +/*!**************************************************************!*\ + !*** ../../node_modules/@hotwired/stimulus/dist/stimulus.js ***! + \**************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Application: () => (/* binding */ Application), +/* harmony export */ AttributeObserver: () => (/* binding */ AttributeObserver), +/* harmony export */ Context: () => (/* binding */ Context), +/* harmony export */ Controller: () => (/* binding */ Controller), +/* harmony export */ ElementObserver: () => (/* binding */ ElementObserver), +/* harmony export */ IndexedMultimap: () => (/* binding */ IndexedMultimap), +/* harmony export */ Multimap: () => (/* binding */ Multimap), +/* harmony export */ SelectorObserver: () => (/* binding */ SelectorObserver), +/* harmony export */ StringMapObserver: () => (/* binding */ StringMapObserver), +/* harmony export */ TokenListObserver: () => (/* binding */ TokenListObserver), +/* harmony export */ ValueListObserver: () => (/* binding */ ValueListObserver), +/* harmony export */ add: () => (/* binding */ add), +/* harmony export */ defaultSchema: () => (/* binding */ defaultSchema), +/* harmony export */ del: () => (/* binding */ del), +/* harmony export */ fetch: () => (/* binding */ fetch), +/* harmony export */ prune: () => (/* binding */ prune) +/* harmony export */ }); +/* +Stimulus 3.2.1 +Copyright © 2023 Basecamp, LLC + */ +class EventListener { + constructor(eventTarget, eventName, eventOptions) { + this.eventTarget = eventTarget; + this.eventName = eventName; + this.eventOptions = eventOptions; + this.unorderedBindings = new Set(); + } + connect() { + this.eventTarget.addEventListener(this.eventName, this, this.eventOptions); + } + disconnect() { + this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions); + } + bindingConnected(binding) { + this.unorderedBindings.add(binding); + } + bindingDisconnected(binding) { + this.unorderedBindings.delete(binding); + } + handleEvent(event) { + const extendedEvent = extendEvent(event); + for (const binding of this.bindings) { + if (extendedEvent.immediatePropagationStopped) { + break; + } + else { + binding.handleEvent(extendedEvent); + } + } + } + hasBindings() { + return this.unorderedBindings.size > 0; + } + get bindings() { + return Array.from(this.unorderedBindings).sort((left, right) => { + const leftIndex = left.index, rightIndex = right.index; + return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0; + }); + } +} +function extendEvent(event) { + if ("immediatePropagationStopped" in event) { + return event; + } + else { + const { stopImmediatePropagation } = event; + return Object.assign(event, { + immediatePropagationStopped: false, + stopImmediatePropagation() { + this.immediatePropagationStopped = true; + stopImmediatePropagation.call(this); + }, + }); + } +} + +class Dispatcher { + constructor(application) { + this.application = application; + this.eventListenerMaps = new Map(); + this.started = false; + } + start() { + if (!this.started) { + this.started = true; + this.eventListeners.forEach((eventListener) => eventListener.connect()); + } + } + stop() { + if (this.started) { + this.started = false; + this.eventListeners.forEach((eventListener) => eventListener.disconnect()); + } + } + get eventListeners() { + return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []); + } + bindingConnected(binding) { + this.fetchEventListenerForBinding(binding).bindingConnected(binding); + } + bindingDisconnected(binding, clearEventListeners = false) { + this.fetchEventListenerForBinding(binding).bindingDisconnected(binding); + if (clearEventListeners) + this.clearEventListenersForBinding(binding); + } + handleError(error, message, detail = {}) { + this.application.handleError(error, `Error ${message}`, detail); + } + clearEventListenersForBinding(binding) { + const eventListener = this.fetchEventListenerForBinding(binding); + if (!eventListener.hasBindings()) { + eventListener.disconnect(); + this.removeMappedEventListenerFor(binding); + } + } + removeMappedEventListenerFor(binding) { + const { eventTarget, eventName, eventOptions } = binding; + const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget); + const cacheKey = this.cacheKey(eventName, eventOptions); + eventListenerMap.delete(cacheKey); + if (eventListenerMap.size == 0) + this.eventListenerMaps.delete(eventTarget); + } + fetchEventListenerForBinding(binding) { + const { eventTarget, eventName, eventOptions } = binding; + return this.fetchEventListener(eventTarget, eventName, eventOptions); + } + fetchEventListener(eventTarget, eventName, eventOptions) { + const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget); + const cacheKey = this.cacheKey(eventName, eventOptions); + let eventListener = eventListenerMap.get(cacheKey); + if (!eventListener) { + eventListener = this.createEventListener(eventTarget, eventName, eventOptions); + eventListenerMap.set(cacheKey, eventListener); + } + return eventListener; + } + createEventListener(eventTarget, eventName, eventOptions) { + const eventListener = new EventListener(eventTarget, eventName, eventOptions); + if (this.started) { + eventListener.connect(); + } + return eventListener; + } + fetchEventListenerMapForEventTarget(eventTarget) { + let eventListenerMap = this.eventListenerMaps.get(eventTarget); + if (!eventListenerMap) { + eventListenerMap = new Map(); + this.eventListenerMaps.set(eventTarget, eventListenerMap); + } + return eventListenerMap; + } + cacheKey(eventName, eventOptions) { + const parts = [eventName]; + Object.keys(eventOptions) + .sort() + .forEach((key) => { + parts.push(`${eventOptions[key] ? "" : "!"}${key}`); + }); + return parts.join(":"); + } +} + +const defaultActionDescriptorFilters = { + stop({ event, value }) { + if (value) + event.stopPropagation(); + return true; + }, + prevent({ event, value }) { + if (value) + event.preventDefault(); + return true; + }, + self({ event, value, element }) { + if (value) { + return element === event.target; + } + else { + return true; + } + }, +}; +const descriptorPattern = /^(?:(?:([^.]+?)\+)?(.+?)(?:\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/; +function parseActionDescriptorString(descriptorString) { + const source = descriptorString.trim(); + const matches = source.match(descriptorPattern) || []; + let eventName = matches[2]; + let keyFilter = matches[3]; + if (keyFilter && !["keydown", "keyup", "keypress"].includes(eventName)) { + eventName += `.${keyFilter}`; + keyFilter = ""; + } + return { + eventTarget: parseEventTarget(matches[4]), + eventName, + eventOptions: matches[7] ? parseEventOptions(matches[7]) : {}, + identifier: matches[5], + methodName: matches[6], + keyFilter: matches[1] || keyFilter, + }; +} +function parseEventTarget(eventTargetName) { + if (eventTargetName == "window") { + return window; + } + else if (eventTargetName == "document") { + return document; + } +} +function parseEventOptions(eventOptions) { + return eventOptions + .split(":") + .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, "")]: !/^!/.test(token) }), {}); +} +function stringifyEventTarget(eventTarget) { + if (eventTarget == window) { + return "window"; + } + else if (eventTarget == document) { + return "document"; + } +} + +function camelize(value) { + return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase()); +} +function namespaceCamelize(value) { + return camelize(value.replace(/--/g, "-").replace(/__/g, "_")); +} +function capitalize(value) { + return value.charAt(0).toUpperCase() + value.slice(1); +} +function dasherize(value) { + return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`); +} +function tokenize(value) { + return value.match(/[^\s]+/g) || []; +} + +function isSomething(object) { + return object !== null && object !== undefined; +} +function hasProperty(object, property) { + return Object.prototype.hasOwnProperty.call(object, property); +} + +const allModifiers = ["meta", "ctrl", "alt", "shift"]; +class Action { + constructor(element, index, descriptor, schema) { + this.element = element; + this.index = index; + this.eventTarget = descriptor.eventTarget || element; + this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error("missing event name"); + this.eventOptions = descriptor.eventOptions || {}; + this.identifier = descriptor.identifier || error("missing identifier"); + this.methodName = descriptor.methodName || error("missing method name"); + this.keyFilter = descriptor.keyFilter || ""; + this.schema = schema; + } + static forToken(token, schema) { + return new this(token.element, token.index, parseActionDescriptorString(token.content), schema); + } + toString() { + const eventFilter = this.keyFilter ? `.${this.keyFilter}` : ""; + const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : ""; + return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`; + } + shouldIgnoreKeyboardEvent(event) { + if (!this.keyFilter) { + return false; + } + const filters = this.keyFilter.split("+"); + if (this.keyFilterDissatisfied(event, filters)) { + return true; + } + const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0]; + if (!standardFilter) { + return false; + } + if (!hasProperty(this.keyMappings, standardFilter)) { + error(`contains unknown key filter: ${this.keyFilter}`); + } + return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase(); + } + shouldIgnoreMouseEvent(event) { + if (!this.keyFilter) { + return false; + } + const filters = [this.keyFilter]; + if (this.keyFilterDissatisfied(event, filters)) { + return true; + } + return false; + } + get params() { + const params = {}; + const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, "i"); + for (const { name, value } of Array.from(this.element.attributes)) { + const match = name.match(pattern); + const key = match && match[1]; + if (key) { + params[camelize(key)] = typecast(value); + } + } + return params; + } + get eventTargetName() { + return stringifyEventTarget(this.eventTarget); + } + get keyMappings() { + return this.schema.keyMappings; + } + keyFilterDissatisfied(event, filters) { + const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier)); + return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift; + } +} +const defaultEventNames = { + a: () => "click", + button: () => "click", + form: () => "submit", + details: () => "toggle", + input: (e) => (e.getAttribute("type") == "submit" ? "click" : "input"), + select: () => "change", + textarea: () => "input", +}; +function getDefaultEventNameForElement(element) { + const tagName = element.tagName.toLowerCase(); + if (tagName in defaultEventNames) { + return defaultEventNames[tagName](element); + } +} +function error(message) { + throw new Error(message); +} +function typecast(value) { + try { + return JSON.parse(value); + } + catch (o_O) { + return value; + } +} + +class Binding { + constructor(context, action) { + this.context = context; + this.action = action; + } + get index() { + return this.action.index; + } + get eventTarget() { + return this.action.eventTarget; + } + get eventOptions() { + return this.action.eventOptions; + } + get identifier() { + return this.context.identifier; + } + handleEvent(event) { + const actionEvent = this.prepareActionEvent(event); + if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) { + this.invokeWithEvent(actionEvent); + } + } + get eventName() { + return this.action.eventName; + } + get method() { + const method = this.controller[this.methodName]; + if (typeof method == "function") { + return method; + } + throw new Error(`Action "${this.action}" references undefined method "${this.methodName}"`); + } + applyEventModifiers(event) { + const { element } = this.action; + const { actionDescriptorFilters } = this.context.application; + const { controller } = this.context; + let passes = true; + for (const [name, value] of Object.entries(this.eventOptions)) { + if (name in actionDescriptorFilters) { + const filter = actionDescriptorFilters[name]; + passes = passes && filter({ name, value, event, element, controller }); + } + else { + continue; + } + } + return passes; + } + prepareActionEvent(event) { + return Object.assign(event, { params: this.action.params }); + } + invokeWithEvent(event) { + const { target, currentTarget } = event; + try { + this.method.call(this.controller, event); + this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName }); + } + catch (error) { + const { identifier, controller, element, index } = this; + const detail = { identifier, controller, element, index, event }; + this.context.handleError(error, `invoking action "${this.action}"`, detail); + } + } + willBeInvokedByEvent(event) { + const eventTarget = event.target; + if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) { + return false; + } + if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) { + return false; + } + if (this.element === eventTarget) { + return true; + } + else if (eventTarget instanceof Element && this.element.contains(eventTarget)) { + return this.scope.containsElement(eventTarget); + } + else { + return this.scope.containsElement(this.action.element); + } + } + get controller() { + return this.context.controller; + } + get methodName() { + return this.action.methodName; + } + get element() { + return this.scope.element; + } + get scope() { + return this.context.scope; + } +} + +class ElementObserver { + constructor(element, delegate) { + this.mutationObserverInit = { attributes: true, childList: true, subtree: true }; + this.element = element; + this.started = false; + this.delegate = delegate; + this.elements = new Set(); + this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations)); + } + start() { + if (!this.started) { + this.started = true; + this.mutationObserver.observe(this.element, this.mutationObserverInit); + this.refresh(); + } + } + pause(callback) { + if (this.started) { + this.mutationObserver.disconnect(); + this.started = false; + } + callback(); + if (!this.started) { + this.mutationObserver.observe(this.element, this.mutationObserverInit); + this.started = true; + } + } + stop() { + if (this.started) { + this.mutationObserver.takeRecords(); + this.mutationObserver.disconnect(); + this.started = false; + } + } + refresh() { + if (this.started) { + const matches = new Set(this.matchElementsInTree()); + for (const element of Array.from(this.elements)) { + if (!matches.has(element)) { + this.removeElement(element); + } + } + for (const element of Array.from(matches)) { + this.addElement(element); + } + } + } + processMutations(mutations) { + if (this.started) { + for (const mutation of mutations) { + this.processMutation(mutation); + } + } + } + processMutation(mutation) { + if (mutation.type == "attributes") { + this.processAttributeChange(mutation.target, mutation.attributeName); + } + else if (mutation.type == "childList") { + this.processRemovedNodes(mutation.removedNodes); + this.processAddedNodes(mutation.addedNodes); + } + } + processAttributeChange(element, attributeName) { + if (this.elements.has(element)) { + if (this.delegate.elementAttributeChanged && this.matchElement(element)) { + this.delegate.elementAttributeChanged(element, attributeName); + } + else { + this.removeElement(element); + } + } + else if (this.matchElement(element)) { + this.addElement(element); + } + } + processRemovedNodes(nodes) { + for (const node of Array.from(nodes)) { + const element = this.elementFromNode(node); + if (element) { + this.processTree(element, this.removeElement); + } + } + } + processAddedNodes(nodes) { + for (const node of Array.from(nodes)) { + const element = this.elementFromNode(node); + if (element && this.elementIsActive(element)) { + this.processTree(element, this.addElement); + } + } + } + matchElement(element) { + return this.delegate.matchElement(element); + } + matchElementsInTree(tree = this.element) { + return this.delegate.matchElementsInTree(tree); + } + processTree(tree, processor) { + for (const element of this.matchElementsInTree(tree)) { + processor.call(this, element); + } + } + elementFromNode(node) { + if (node.nodeType == Node.ELEMENT_NODE) { + return node; + } + } + elementIsActive(element) { + if (element.isConnected != this.element.isConnected) { + return false; + } + else { + return this.element.contains(element); + } + } + addElement(element) { + if (!this.elements.has(element)) { + if (this.elementIsActive(element)) { + this.elements.add(element); + if (this.delegate.elementMatched) { + this.delegate.elementMatched(element); + } + } + } + } + removeElement(element) { + if (this.elements.has(element)) { + this.elements.delete(element); + if (this.delegate.elementUnmatched) { + this.delegate.elementUnmatched(element); + } + } + } +} + +class AttributeObserver { + constructor(element, attributeName, delegate) { + this.attributeName = attributeName; + this.delegate = delegate; + this.elementObserver = new ElementObserver(element, this); + } + get element() { + return this.elementObserver.element; + } + get selector() { + return `[${this.attributeName}]`; + } + start() { + this.elementObserver.start(); + } + pause(callback) { + this.elementObserver.pause(callback); + } + stop() { + this.elementObserver.stop(); + } + refresh() { + this.elementObserver.refresh(); + } + get started() { + return this.elementObserver.started; + } + matchElement(element) { + return element.hasAttribute(this.attributeName); + } + matchElementsInTree(tree) { + const match = this.matchElement(tree) ? [tree] : []; + const matches = Array.from(tree.querySelectorAll(this.selector)); + return match.concat(matches); + } + elementMatched(element) { + if (this.delegate.elementMatchedAttribute) { + this.delegate.elementMatchedAttribute(element, this.attributeName); + } + } + elementUnmatched(element) { + if (this.delegate.elementUnmatchedAttribute) { + this.delegate.elementUnmatchedAttribute(element, this.attributeName); + } + } + elementAttributeChanged(element, attributeName) { + if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) { + this.delegate.elementAttributeValueChanged(element, attributeName); + } + } +} + +function add(map, key, value) { + fetch(map, key).add(value); +} +function del(map, key, value) { + fetch(map, key).delete(value); + prune(map, key); +} +function fetch(map, key) { + let values = map.get(key); + if (!values) { + values = new Set(); + map.set(key, values); + } + return values; +} +function prune(map, key) { + const values = map.get(key); + if (values != null && values.size == 0) { + map.delete(key); + } +} + +class Multimap { + constructor() { + this.valuesByKey = new Map(); + } + get keys() { + return Array.from(this.valuesByKey.keys()); + } + get values() { + const sets = Array.from(this.valuesByKey.values()); + return sets.reduce((values, set) => values.concat(Array.from(set)), []); + } + get size() { + const sets = Array.from(this.valuesByKey.values()); + return sets.reduce((size, set) => size + set.size, 0); + } + add(key, value) { + add(this.valuesByKey, key, value); + } + delete(key, value) { + del(this.valuesByKey, key, value); + } + has(key, value) { + const values = this.valuesByKey.get(key); + return values != null && values.has(value); + } + hasKey(key) { + return this.valuesByKey.has(key); + } + hasValue(value) { + const sets = Array.from(this.valuesByKey.values()); + return sets.some((set) => set.has(value)); + } + getValuesForKey(key) { + const values = this.valuesByKey.get(key); + return values ? Array.from(values) : []; + } + getKeysForValue(value) { + return Array.from(this.valuesByKey) + .filter(([_key, values]) => values.has(value)) + .map(([key, _values]) => key); + } +} + +class IndexedMultimap extends Multimap { + constructor() { + super(); + this.keysByValue = new Map(); + } + get values() { + return Array.from(this.keysByValue.keys()); + } + add(key, value) { + super.add(key, value); + add(this.keysByValue, value, key); + } + delete(key, value) { + super.delete(key, value); + del(this.keysByValue, value, key); + } + hasValue(value) { + return this.keysByValue.has(value); + } + getKeysForValue(value) { + const set = this.keysByValue.get(value); + return set ? Array.from(set) : []; + } +} + +class SelectorObserver { + constructor(element, selector, delegate, details) { + this._selector = selector; + this.details = details; + this.elementObserver = new ElementObserver(element, this); + this.delegate = delegate; + this.matchesByElement = new Multimap(); + } + get started() { + return this.elementObserver.started; + } + get selector() { + return this._selector; + } + set selector(selector) { + this._selector = selector; + this.refresh(); + } + start() { + this.elementObserver.start(); + } + pause(callback) { + this.elementObserver.pause(callback); + } + stop() { + this.elementObserver.stop(); + } + refresh() { + this.elementObserver.refresh(); + } + get element() { + return this.elementObserver.element; + } + matchElement(element) { + const { selector } = this; + if (selector) { + const matches = element.matches(selector); + if (this.delegate.selectorMatchElement) { + return matches && this.delegate.selectorMatchElement(element, this.details); + } + return matches; + } + else { + return false; + } + } + matchElementsInTree(tree) { + const { selector } = this; + if (selector) { + const match = this.matchElement(tree) ? [tree] : []; + const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match)); + return match.concat(matches); + } + else { + return []; + } + } + elementMatched(element) { + const { selector } = this; + if (selector) { + this.selectorMatched(element, selector); + } + } + elementUnmatched(element) { + const selectors = this.matchesByElement.getKeysForValue(element); + for (const selector of selectors) { + this.selectorUnmatched(element, selector); + } + } + elementAttributeChanged(element, _attributeName) { + const { selector } = this; + if (selector) { + const matches = this.matchElement(element); + const matchedBefore = this.matchesByElement.has(selector, element); + if (matches && !matchedBefore) { + this.selectorMatched(element, selector); + } + else if (!matches && matchedBefore) { + this.selectorUnmatched(element, selector); + } + } + } + selectorMatched(element, selector) { + this.delegate.selectorMatched(element, selector, this.details); + this.matchesByElement.add(selector, element); + } + selectorUnmatched(element, selector) { + this.delegate.selectorUnmatched(element, selector, this.details); + this.matchesByElement.delete(selector, element); + } +} + +class StringMapObserver { + constructor(element, delegate) { + this.element = element; + this.delegate = delegate; + this.started = false; + this.stringMap = new Map(); + this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations)); + } + start() { + if (!this.started) { + this.started = true; + this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true }); + this.refresh(); + } + } + stop() { + if (this.started) { + this.mutationObserver.takeRecords(); + this.mutationObserver.disconnect(); + this.started = false; + } + } + refresh() { + if (this.started) { + for (const attributeName of this.knownAttributeNames) { + this.refreshAttribute(attributeName, null); + } + } + } + processMutations(mutations) { + if (this.started) { + for (const mutation of mutations) { + this.processMutation(mutation); + } + } + } + processMutation(mutation) { + const attributeName = mutation.attributeName; + if (attributeName) { + this.refreshAttribute(attributeName, mutation.oldValue); + } + } + refreshAttribute(attributeName, oldValue) { + const key = this.delegate.getStringMapKeyForAttribute(attributeName); + if (key != null) { + if (!this.stringMap.has(attributeName)) { + this.stringMapKeyAdded(key, attributeName); + } + const value = this.element.getAttribute(attributeName); + if (this.stringMap.get(attributeName) != value) { + this.stringMapValueChanged(value, key, oldValue); + } + if (value == null) { + const oldValue = this.stringMap.get(attributeName); + this.stringMap.delete(attributeName); + if (oldValue) + this.stringMapKeyRemoved(key, attributeName, oldValue); + } + else { + this.stringMap.set(attributeName, value); + } + } + } + stringMapKeyAdded(key, attributeName) { + if (this.delegate.stringMapKeyAdded) { + this.delegate.stringMapKeyAdded(key, attributeName); + } + } + stringMapValueChanged(value, key, oldValue) { + if (this.delegate.stringMapValueChanged) { + this.delegate.stringMapValueChanged(value, key, oldValue); + } + } + stringMapKeyRemoved(key, attributeName, oldValue) { + if (this.delegate.stringMapKeyRemoved) { + this.delegate.stringMapKeyRemoved(key, attributeName, oldValue); + } + } + get knownAttributeNames() { + return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames))); + } + get currentAttributeNames() { + return Array.from(this.element.attributes).map((attribute) => attribute.name); + } + get recordedAttributeNames() { + return Array.from(this.stringMap.keys()); + } +} + +class TokenListObserver { + constructor(element, attributeName, delegate) { + this.attributeObserver = new AttributeObserver(element, attributeName, this); + this.delegate = delegate; + this.tokensByElement = new Multimap(); + } + get started() { + return this.attributeObserver.started; + } + start() { + this.attributeObserver.start(); + } + pause(callback) { + this.attributeObserver.pause(callback); + } + stop() { + this.attributeObserver.stop(); + } + refresh() { + this.attributeObserver.refresh(); + } + get element() { + return this.attributeObserver.element; + } + get attributeName() { + return this.attributeObserver.attributeName; + } + elementMatchedAttribute(element) { + this.tokensMatched(this.readTokensForElement(element)); + } + elementAttributeValueChanged(element) { + const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element); + this.tokensUnmatched(unmatchedTokens); + this.tokensMatched(matchedTokens); + } + elementUnmatchedAttribute(element) { + this.tokensUnmatched(this.tokensByElement.getValuesForKey(element)); + } + tokensMatched(tokens) { + tokens.forEach((token) => this.tokenMatched(token)); + } + tokensUnmatched(tokens) { + tokens.forEach((token) => this.tokenUnmatched(token)); + } + tokenMatched(token) { + this.delegate.tokenMatched(token); + this.tokensByElement.add(token.element, token); + } + tokenUnmatched(token) { + this.delegate.tokenUnmatched(token); + this.tokensByElement.delete(token.element, token); + } + refreshTokensForElement(element) { + const previousTokens = this.tokensByElement.getValuesForKey(element); + const currentTokens = this.readTokensForElement(element); + const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken)); + if (firstDifferingIndex == -1) { + return [[], []]; + } + else { + return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)]; + } + } + readTokensForElement(element) { + const attributeName = this.attributeName; + const tokenString = element.getAttribute(attributeName) || ""; + return parseTokenString(tokenString, element, attributeName); + } +} +function parseTokenString(tokenString, element, attributeName) { + return tokenString + .trim() + .split(/\s+/) + .filter((content) => content.length) + .map((content, index) => ({ element, attributeName, content, index })); +} +function zip(left, right) { + const length = Math.max(left.length, right.length); + return Array.from({ length }, (_, index) => [left[index], right[index]]); +} +function tokensAreEqual(left, right) { + return left && right && left.index == right.index && left.content == right.content; +} + +class ValueListObserver { + constructor(element, attributeName, delegate) { + this.tokenListObserver = new TokenListObserver(element, attributeName, this); + this.delegate = delegate; + this.parseResultsByToken = new WeakMap(); + this.valuesByTokenByElement = new WeakMap(); + } + get started() { + return this.tokenListObserver.started; + } + start() { + this.tokenListObserver.start(); + } + stop() { + this.tokenListObserver.stop(); + } + refresh() { + this.tokenListObserver.refresh(); + } + get element() { + return this.tokenListObserver.element; + } + get attributeName() { + return this.tokenListObserver.attributeName; + } + tokenMatched(token) { + const { element } = token; + const { value } = this.fetchParseResultForToken(token); + if (value) { + this.fetchValuesByTokenForElement(element).set(token, value); + this.delegate.elementMatchedValue(element, value); + } + } + tokenUnmatched(token) { + const { element } = token; + const { value } = this.fetchParseResultForToken(token); + if (value) { + this.fetchValuesByTokenForElement(element).delete(token); + this.delegate.elementUnmatchedValue(element, value); + } + } + fetchParseResultForToken(token) { + let parseResult = this.parseResultsByToken.get(token); + if (!parseResult) { + parseResult = this.parseToken(token); + this.parseResultsByToken.set(token, parseResult); + } + return parseResult; + } + fetchValuesByTokenForElement(element) { + let valuesByToken = this.valuesByTokenByElement.get(element); + if (!valuesByToken) { + valuesByToken = new Map(); + this.valuesByTokenByElement.set(element, valuesByToken); + } + return valuesByToken; + } + parseToken(token) { + try { + const value = this.delegate.parseValueForToken(token); + return { value }; + } + catch (error) { + return { error }; + } + } +} + +class BindingObserver { + constructor(context, delegate) { + this.context = context; + this.delegate = delegate; + this.bindingsByAction = new Map(); + } + start() { + if (!this.valueListObserver) { + this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this); + this.valueListObserver.start(); + } + } + stop() { + if (this.valueListObserver) { + this.valueListObserver.stop(); + delete this.valueListObserver; + this.disconnectAllActions(); + } + } + get element() { + return this.context.element; + } + get identifier() { + return this.context.identifier; + } + get actionAttribute() { + return this.schema.actionAttribute; + } + get schema() { + return this.context.schema; + } + get bindings() { + return Array.from(this.bindingsByAction.values()); + } + connectAction(action) { + const binding = new Binding(this.context, action); + this.bindingsByAction.set(action, binding); + this.delegate.bindingConnected(binding); + } + disconnectAction(action) { + const binding = this.bindingsByAction.get(action); + if (binding) { + this.bindingsByAction.delete(action); + this.delegate.bindingDisconnected(binding); + } + } + disconnectAllActions() { + this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true)); + this.bindingsByAction.clear(); + } + parseValueForToken(token) { + const action = Action.forToken(token, this.schema); + if (action.identifier == this.identifier) { + return action; + } + } + elementMatchedValue(element, action) { + this.connectAction(action); + } + elementUnmatchedValue(element, action) { + this.disconnectAction(action); + } +} + +class ValueObserver { + constructor(context, receiver) { + this.context = context; + this.receiver = receiver; + this.stringMapObserver = new StringMapObserver(this.element, this); + this.valueDescriptorMap = this.controller.valueDescriptorMap; + } + start() { + this.stringMapObserver.start(); + this.invokeChangedCallbacksForDefaultValues(); + } + stop() { + this.stringMapObserver.stop(); + } + get element() { + return this.context.element; + } + get controller() { + return this.context.controller; + } + getStringMapKeyForAttribute(attributeName) { + if (attributeName in this.valueDescriptorMap) { + return this.valueDescriptorMap[attributeName].name; + } + } + stringMapKeyAdded(key, attributeName) { + const descriptor = this.valueDescriptorMap[attributeName]; + if (!this.hasValue(key)) { + this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue)); + } + } + stringMapValueChanged(value, name, oldValue) { + const descriptor = this.valueDescriptorNameMap[name]; + if (value === null) + return; + if (oldValue === null) { + oldValue = descriptor.writer(descriptor.defaultValue); + } + this.invokeChangedCallback(name, value, oldValue); + } + stringMapKeyRemoved(key, attributeName, oldValue) { + const descriptor = this.valueDescriptorNameMap[key]; + if (this.hasValue(key)) { + this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue); + } + else { + this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue); + } + } + invokeChangedCallbacksForDefaultValues() { + for (const { key, name, defaultValue, writer } of this.valueDescriptors) { + if (defaultValue != undefined && !this.controller.data.has(key)) { + this.invokeChangedCallback(name, writer(defaultValue), undefined); + } + } + } + invokeChangedCallback(name, rawValue, rawOldValue) { + const changedMethodName = `${name}Changed`; + const changedMethod = this.receiver[changedMethodName]; + if (typeof changedMethod == "function") { + const descriptor = this.valueDescriptorNameMap[name]; + try { + const value = descriptor.reader(rawValue); + let oldValue = rawOldValue; + if (rawOldValue) { + oldValue = descriptor.reader(rawOldValue); + } + changedMethod.call(this.receiver, value, oldValue); + } + catch (error) { + if (error instanceof TypeError) { + error.message = `Stimulus Value "${this.context.identifier}.${descriptor.name}" - ${error.message}`; + } + throw error; + } + } + } + get valueDescriptors() { + const { valueDescriptorMap } = this; + return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]); + } + get valueDescriptorNameMap() { + const descriptors = {}; + Object.keys(this.valueDescriptorMap).forEach((key) => { + const descriptor = this.valueDescriptorMap[key]; + descriptors[descriptor.name] = descriptor; + }); + return descriptors; + } + hasValue(attributeName) { + const descriptor = this.valueDescriptorNameMap[attributeName]; + const hasMethodName = `has${capitalize(descriptor.name)}`; + return this.receiver[hasMethodName]; + } +} + +class TargetObserver { + constructor(context, delegate) { + this.context = context; + this.delegate = delegate; + this.targetsByName = new Multimap(); + } + start() { + if (!this.tokenListObserver) { + this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this); + this.tokenListObserver.start(); + } + } + stop() { + if (this.tokenListObserver) { + this.disconnectAllTargets(); + this.tokenListObserver.stop(); + delete this.tokenListObserver; + } + } + tokenMatched({ element, content: name }) { + if (this.scope.containsElement(element)) { + this.connectTarget(element, name); + } + } + tokenUnmatched({ element, content: name }) { + this.disconnectTarget(element, name); + } + connectTarget(element, name) { + var _a; + if (!this.targetsByName.has(name, element)) { + this.targetsByName.add(name, element); + (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name)); + } + } + disconnectTarget(element, name) { + var _a; + if (this.targetsByName.has(name, element)) { + this.targetsByName.delete(name, element); + (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name)); + } + } + disconnectAllTargets() { + for (const name of this.targetsByName.keys) { + for (const element of this.targetsByName.getValuesForKey(name)) { + this.disconnectTarget(element, name); + } + } + } + get attributeName() { + return `data-${this.context.identifier}-target`; + } + get element() { + return this.context.element; + } + get scope() { + return this.context.scope; + } +} + +function readInheritableStaticArrayValues(constructor, propertyName) { + const ancestors = getAncestorsForConstructor(constructor); + return Array.from(ancestors.reduce((values, constructor) => { + getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name)); + return values; + }, new Set())); +} +function readInheritableStaticObjectPairs(constructor, propertyName) { + const ancestors = getAncestorsForConstructor(constructor); + return ancestors.reduce((pairs, constructor) => { + pairs.push(...getOwnStaticObjectPairs(constructor, propertyName)); + return pairs; + }, []); +} +function getAncestorsForConstructor(constructor) { + const ancestors = []; + while (constructor) { + ancestors.push(constructor); + constructor = Object.getPrototypeOf(constructor); + } + return ancestors.reverse(); +} +function getOwnStaticArrayValues(constructor, propertyName) { + const definition = constructor[propertyName]; + return Array.isArray(definition) ? definition : []; +} +function getOwnStaticObjectPairs(constructor, propertyName) { + const definition = constructor[propertyName]; + return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : []; +} + +class OutletObserver { + constructor(context, delegate) { + this.started = false; + this.context = context; + this.delegate = delegate; + this.outletsByName = new Multimap(); + this.outletElementsByName = new Multimap(); + this.selectorObserverMap = new Map(); + this.attributeObserverMap = new Map(); + } + start() { + if (!this.started) { + this.outletDefinitions.forEach((outletName) => { + this.setupSelectorObserverForOutlet(outletName); + this.setupAttributeObserverForOutlet(outletName); + }); + this.started = true; + this.dependentContexts.forEach((context) => context.refresh()); + } + } + refresh() { + this.selectorObserverMap.forEach((observer) => observer.refresh()); + this.attributeObserverMap.forEach((observer) => observer.refresh()); + } + stop() { + if (this.started) { + this.started = false; + this.disconnectAllOutlets(); + this.stopSelectorObservers(); + this.stopAttributeObservers(); + } + } + stopSelectorObservers() { + if (this.selectorObserverMap.size > 0) { + this.selectorObserverMap.forEach((observer) => observer.stop()); + this.selectorObserverMap.clear(); + } + } + stopAttributeObservers() { + if (this.attributeObserverMap.size > 0) { + this.attributeObserverMap.forEach((observer) => observer.stop()); + this.attributeObserverMap.clear(); + } + } + selectorMatched(element, _selector, { outletName }) { + const outlet = this.getOutlet(element, outletName); + if (outlet) { + this.connectOutlet(outlet, element, outletName); + } + } + selectorUnmatched(element, _selector, { outletName }) { + const outlet = this.getOutletFromMap(element, outletName); + if (outlet) { + this.disconnectOutlet(outlet, element, outletName); + } + } + selectorMatchElement(element, { outletName }) { + const selector = this.selector(outletName); + const hasOutlet = this.hasOutlet(element, outletName); + const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`); + if (selector) { + return hasOutlet && hasOutletController && element.matches(selector); + } + else { + return false; + } + } + elementMatchedAttribute(_element, attributeName) { + const outletName = this.getOutletNameFromOutletAttributeName(attributeName); + if (outletName) { + this.updateSelectorObserverForOutlet(outletName); + } + } + elementAttributeValueChanged(_element, attributeName) { + const outletName = this.getOutletNameFromOutletAttributeName(attributeName); + if (outletName) { + this.updateSelectorObserverForOutlet(outletName); + } + } + elementUnmatchedAttribute(_element, attributeName) { + const outletName = this.getOutletNameFromOutletAttributeName(attributeName); + if (outletName) { + this.updateSelectorObserverForOutlet(outletName); + } + } + connectOutlet(outlet, element, outletName) { + var _a; + if (!this.outletElementsByName.has(outletName, element)) { + this.outletsByName.add(outletName, outlet); + this.outletElementsByName.add(outletName, element); + (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName)); + } + } + disconnectOutlet(outlet, element, outletName) { + var _a; + if (this.outletElementsByName.has(outletName, element)) { + this.outletsByName.delete(outletName, outlet); + this.outletElementsByName.delete(outletName, element); + (_a = this.selectorObserverMap + .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName)); + } + } + disconnectAllOutlets() { + for (const outletName of this.outletElementsByName.keys) { + for (const element of this.outletElementsByName.getValuesForKey(outletName)) { + for (const outlet of this.outletsByName.getValuesForKey(outletName)) { + this.disconnectOutlet(outlet, element, outletName); + } + } + } + } + updateSelectorObserverForOutlet(outletName) { + const observer = this.selectorObserverMap.get(outletName); + if (observer) { + observer.selector = this.selector(outletName); + } + } + setupSelectorObserverForOutlet(outletName) { + const selector = this.selector(outletName); + const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName }); + this.selectorObserverMap.set(outletName, selectorObserver); + selectorObserver.start(); + } + setupAttributeObserverForOutlet(outletName) { + const attributeName = this.attributeNameForOutletName(outletName); + const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this); + this.attributeObserverMap.set(outletName, attributeObserver); + attributeObserver.start(); + } + selector(outletName) { + return this.scope.outlets.getSelectorForOutletName(outletName); + } + attributeNameForOutletName(outletName) { + return this.scope.schema.outletAttributeForScope(this.identifier, outletName); + } + getOutletNameFromOutletAttributeName(attributeName) { + return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName); + } + get outletDependencies() { + const dependencies = new Multimap(); + this.router.modules.forEach((module) => { + const constructor = module.definition.controllerConstructor; + const outlets = readInheritableStaticArrayValues(constructor, "outlets"); + outlets.forEach((outlet) => dependencies.add(outlet, module.identifier)); + }); + return dependencies; + } + get outletDefinitions() { + return this.outletDependencies.getKeysForValue(this.identifier); + } + get dependentControllerIdentifiers() { + return this.outletDependencies.getValuesForKey(this.identifier); + } + get dependentContexts() { + const identifiers = this.dependentControllerIdentifiers; + return this.router.contexts.filter((context) => identifiers.includes(context.identifier)); + } + hasOutlet(element, outletName) { + return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName); + } + getOutlet(element, outletName) { + return this.application.getControllerForElementAndIdentifier(element, outletName); + } + getOutletFromMap(element, outletName) { + return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element); + } + get scope() { + return this.context.scope; + } + get schema() { + return this.context.schema; + } + get identifier() { + return this.context.identifier; + } + get application() { + return this.context.application; + } + get router() { + return this.application.router; + } +} + +class Context { + constructor(module, scope) { + this.logDebugActivity = (functionName, detail = {}) => { + const { identifier, controller, element } = this; + detail = Object.assign({ identifier, controller, element }, detail); + this.application.logDebugActivity(this.identifier, functionName, detail); + }; + this.module = module; + this.scope = scope; + this.controller = new module.controllerConstructor(this); + this.bindingObserver = new BindingObserver(this, this.dispatcher); + this.valueObserver = new ValueObserver(this, this.controller); + this.targetObserver = new TargetObserver(this, this); + this.outletObserver = new OutletObserver(this, this); + try { + this.controller.initialize(); + this.logDebugActivity("initialize"); + } + catch (error) { + this.handleError(error, "initializing controller"); + } + } + connect() { + this.bindingObserver.start(); + this.valueObserver.start(); + this.targetObserver.start(); + this.outletObserver.start(); + try { + this.controller.connect(); + this.logDebugActivity("connect"); + } + catch (error) { + this.handleError(error, "connecting controller"); + } + } + refresh() { + this.outletObserver.refresh(); + } + disconnect() { + try { + this.controller.disconnect(); + this.logDebugActivity("disconnect"); + } + catch (error) { + this.handleError(error, "disconnecting controller"); + } + this.outletObserver.stop(); + this.targetObserver.stop(); + this.valueObserver.stop(); + this.bindingObserver.stop(); + } + get application() { + return this.module.application; + } + get identifier() { + return this.module.identifier; + } + get schema() { + return this.application.schema; + } + get dispatcher() { + return this.application.dispatcher; + } + get element() { + return this.scope.element; + } + get parentElement() { + return this.element.parentElement; + } + handleError(error, message, detail = {}) { + const { identifier, controller, element } = this; + detail = Object.assign({ identifier, controller, element }, detail); + this.application.handleError(error, `Error ${message}`, detail); + } + targetConnected(element, name) { + this.invokeControllerMethod(`${name}TargetConnected`, element); + } + targetDisconnected(element, name) { + this.invokeControllerMethod(`${name}TargetDisconnected`, element); + } + outletConnected(outlet, element, name) { + this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element); + } + outletDisconnected(outlet, element, name) { + this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element); + } + invokeControllerMethod(methodName, ...args) { + const controller = this.controller; + if (typeof controller[methodName] == "function") { + controller[methodName](...args); + } + } +} + +function bless(constructor) { + return shadow(constructor, getBlessedProperties(constructor)); +} +function shadow(constructor, properties) { + const shadowConstructor = extend(constructor); + const shadowProperties = getShadowProperties(constructor.prototype, properties); + Object.defineProperties(shadowConstructor.prototype, shadowProperties); + return shadowConstructor; +} +function getBlessedProperties(constructor) { + const blessings = readInheritableStaticArrayValues(constructor, "blessings"); + return blessings.reduce((blessedProperties, blessing) => { + const properties = blessing(constructor); + for (const key in properties) { + const descriptor = blessedProperties[key] || {}; + blessedProperties[key] = Object.assign(descriptor, properties[key]); + } + return blessedProperties; + }, {}); +} +function getShadowProperties(prototype, properties) { + return getOwnKeys(properties).reduce((shadowProperties, key) => { + const descriptor = getShadowedDescriptor(prototype, properties, key); + if (descriptor) { + Object.assign(shadowProperties, { [key]: descriptor }); + } + return shadowProperties; + }, {}); +} +function getShadowedDescriptor(prototype, properties, key) { + const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key); + const shadowedByValue = shadowingDescriptor && "value" in shadowingDescriptor; + if (!shadowedByValue) { + const descriptor = Object.getOwnPropertyDescriptor(properties, key).value; + if (shadowingDescriptor) { + descriptor.get = shadowingDescriptor.get || descriptor.get; + descriptor.set = shadowingDescriptor.set || descriptor.set; + } + return descriptor; + } +} +const getOwnKeys = (() => { + if (typeof Object.getOwnPropertySymbols == "function") { + return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)]; + } + else { + return Object.getOwnPropertyNames; + } +})(); +const extend = (() => { + function extendWithReflect(constructor) { + function extended() { + return Reflect.construct(constructor, arguments, new.target); + } + extended.prototype = Object.create(constructor.prototype, { + constructor: { value: extended }, + }); + Reflect.setPrototypeOf(extended, constructor); + return extended; + } + function testReflectExtension() { + const a = function () { + this.a.call(this); + }; + const b = extendWithReflect(a); + b.prototype.a = function () { }; + return new b(); + } + try { + testReflectExtension(); + return extendWithReflect; + } + catch (error) { + return (constructor) => class extended extends constructor { + }; + } +})(); + +function blessDefinition(definition) { + return { + identifier: definition.identifier, + controllerConstructor: bless(definition.controllerConstructor), + }; +} + +class Module { + constructor(application, definition) { + this.application = application; + this.definition = blessDefinition(definition); + this.contextsByScope = new WeakMap(); + this.connectedContexts = new Set(); + } + get identifier() { + return this.definition.identifier; + } + get controllerConstructor() { + return this.definition.controllerConstructor; + } + get contexts() { + return Array.from(this.connectedContexts); + } + connectContextForScope(scope) { + const context = this.fetchContextForScope(scope); + this.connectedContexts.add(context); + context.connect(); + } + disconnectContextForScope(scope) { + const context = this.contextsByScope.get(scope); + if (context) { + this.connectedContexts.delete(context); + context.disconnect(); + } + } + fetchContextForScope(scope) { + let context = this.contextsByScope.get(scope); + if (!context) { + context = new Context(this, scope); + this.contextsByScope.set(scope, context); + } + return context; + } +} + +class ClassMap { + constructor(scope) { + this.scope = scope; + } + has(name) { + return this.data.has(this.getDataKey(name)); + } + get(name) { + return this.getAll(name)[0]; + } + getAll(name) { + const tokenString = this.data.get(this.getDataKey(name)) || ""; + return tokenize(tokenString); + } + getAttributeName(name) { + return this.data.getAttributeNameForKey(this.getDataKey(name)); + } + getDataKey(name) { + return `${name}-class`; + } + get data() { + return this.scope.data; + } +} + +class DataMap { + constructor(scope) { + this.scope = scope; + } + get element() { + return this.scope.element; + } + get identifier() { + return this.scope.identifier; + } + get(key) { + const name = this.getAttributeNameForKey(key); + return this.element.getAttribute(name); + } + set(key, value) { + const name = this.getAttributeNameForKey(key); + this.element.setAttribute(name, value); + return this.get(key); + } + has(key) { + const name = this.getAttributeNameForKey(key); + return this.element.hasAttribute(name); + } + delete(key) { + if (this.has(key)) { + const name = this.getAttributeNameForKey(key); + this.element.removeAttribute(name); + return true; + } + else { + return false; + } + } + getAttributeNameForKey(key) { + return `data-${this.identifier}-${dasherize(key)}`; + } +} + +class Guide { + constructor(logger) { + this.warnedKeysByObject = new WeakMap(); + this.logger = logger; + } + warn(object, key, message) { + let warnedKeys = this.warnedKeysByObject.get(object); + if (!warnedKeys) { + warnedKeys = new Set(); + this.warnedKeysByObject.set(object, warnedKeys); + } + if (!warnedKeys.has(key)) { + warnedKeys.add(key); + this.logger.warn(message, object); + } + } +} + +function attributeValueContainsToken(attributeName, token) { + return `[${attributeName}~="${token}"]`; +} + +class TargetSet { + constructor(scope) { + this.scope = scope; + } + get element() { + return this.scope.element; + } + get identifier() { + return this.scope.identifier; + } + get schema() { + return this.scope.schema; + } + has(targetName) { + return this.find(targetName) != null; + } + find(...targetNames) { + return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined); + } + findAll(...targetNames) { + return targetNames.reduce((targets, targetName) => [ + ...targets, + ...this.findAllTargets(targetName), + ...this.findAllLegacyTargets(targetName), + ], []); + } + findTarget(targetName) { + const selector = this.getSelectorForTargetName(targetName); + return this.scope.findElement(selector); + } + findAllTargets(targetName) { + const selector = this.getSelectorForTargetName(targetName); + return this.scope.findAllElements(selector); + } + getSelectorForTargetName(targetName) { + const attributeName = this.schema.targetAttributeForScope(this.identifier); + return attributeValueContainsToken(attributeName, targetName); + } + findLegacyTarget(targetName) { + const selector = this.getLegacySelectorForTargetName(targetName); + return this.deprecate(this.scope.findElement(selector), targetName); + } + findAllLegacyTargets(targetName) { + const selector = this.getLegacySelectorForTargetName(targetName); + return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName)); + } + getLegacySelectorForTargetName(targetName) { + const targetDescriptor = `${this.identifier}.${targetName}`; + return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor); + } + deprecate(element, targetName) { + if (element) { + const { identifier } = this; + const attributeName = this.schema.targetAttribute; + const revisedAttributeName = this.schema.targetAttributeForScope(identifier); + this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}="${identifier}.${targetName}" with ${revisedAttributeName}="${targetName}". ` + + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`); + } + return element; + } + get guide() { + return this.scope.guide; + } +} + +class OutletSet { + constructor(scope, controllerElement) { + this.scope = scope; + this.controllerElement = controllerElement; + } + get element() { + return this.scope.element; + } + get identifier() { + return this.scope.identifier; + } + get schema() { + return this.scope.schema; + } + has(outletName) { + return this.find(outletName) != null; + } + find(...outletNames) { + return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined); + } + findAll(...outletNames) { + return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []); + } + getSelectorForOutletName(outletName) { + const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName); + return this.controllerElement.getAttribute(attributeName); + } + findOutlet(outletName) { + const selector = this.getSelectorForOutletName(outletName); + if (selector) + return this.findElement(selector, outletName); + } + findAllOutlets(outletName) { + const selector = this.getSelectorForOutletName(outletName); + return selector ? this.findAllElements(selector, outletName) : []; + } + findElement(selector, outletName) { + const elements = this.scope.queryElements(selector); + return elements.filter((element) => this.matchesElement(element, selector, outletName))[0]; + } + findAllElements(selector, outletName) { + const elements = this.scope.queryElements(selector); + return elements.filter((element) => this.matchesElement(element, selector, outletName)); + } + matchesElement(element, selector, outletName) { + const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || ""; + return element.matches(selector) && controllerAttribute.split(" ").includes(outletName); + } +} + +class Scope { + constructor(schema, element, identifier, logger) { + this.targets = new TargetSet(this); + this.classes = new ClassMap(this); + this.data = new DataMap(this); + this.containsElement = (element) => { + return element.closest(this.controllerSelector) === this.element; + }; + this.schema = schema; + this.element = element; + this.identifier = identifier; + this.guide = new Guide(logger); + this.outlets = new OutletSet(this.documentScope, element); + } + findElement(selector) { + return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement); + } + findAllElements(selector) { + return [ + ...(this.element.matches(selector) ? [this.element] : []), + ...this.queryElements(selector).filter(this.containsElement), + ]; + } + queryElements(selector) { + return Array.from(this.element.querySelectorAll(selector)); + } + get controllerSelector() { + return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier); + } + get isDocumentScope() { + return this.element === document.documentElement; + } + get documentScope() { + return this.isDocumentScope + ? this + : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger); + } +} + +class ScopeObserver { + constructor(element, schema, delegate) { + this.element = element; + this.schema = schema; + this.delegate = delegate; + this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this); + this.scopesByIdentifierByElement = new WeakMap(); + this.scopeReferenceCounts = new WeakMap(); + } + start() { + this.valueListObserver.start(); + } + stop() { + this.valueListObserver.stop(); + } + get controllerAttribute() { + return this.schema.controllerAttribute; + } + parseValueForToken(token) { + const { element, content: identifier } = token; + return this.parseValueForElementAndIdentifier(element, identifier); + } + parseValueForElementAndIdentifier(element, identifier) { + const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element); + let scope = scopesByIdentifier.get(identifier); + if (!scope) { + scope = this.delegate.createScopeForElementAndIdentifier(element, identifier); + scopesByIdentifier.set(identifier, scope); + } + return scope; + } + elementMatchedValue(element, value) { + const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1; + this.scopeReferenceCounts.set(value, referenceCount); + if (referenceCount == 1) { + this.delegate.scopeConnected(value); + } + } + elementUnmatchedValue(element, value) { + const referenceCount = this.scopeReferenceCounts.get(value); + if (referenceCount) { + this.scopeReferenceCounts.set(value, referenceCount - 1); + if (referenceCount == 1) { + this.delegate.scopeDisconnected(value); + } + } + } + fetchScopesByIdentifierForElement(element) { + let scopesByIdentifier = this.scopesByIdentifierByElement.get(element); + if (!scopesByIdentifier) { + scopesByIdentifier = new Map(); + this.scopesByIdentifierByElement.set(element, scopesByIdentifier); + } + return scopesByIdentifier; + } +} + +class Router { + constructor(application) { + this.application = application; + this.scopeObserver = new ScopeObserver(this.element, this.schema, this); + this.scopesByIdentifier = new Multimap(); + this.modulesByIdentifier = new Map(); + } + get element() { + return this.application.element; + } + get schema() { + return this.application.schema; + } + get logger() { + return this.application.logger; + } + get controllerAttribute() { + return this.schema.controllerAttribute; + } + get modules() { + return Array.from(this.modulesByIdentifier.values()); + } + get contexts() { + return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []); + } + start() { + this.scopeObserver.start(); + } + stop() { + this.scopeObserver.stop(); + } + loadDefinition(definition) { + this.unloadIdentifier(definition.identifier); + const module = new Module(this.application, definition); + this.connectModule(module); + const afterLoad = definition.controllerConstructor.afterLoad; + if (afterLoad) { + afterLoad.call(definition.controllerConstructor, definition.identifier, this.application); + } + } + unloadIdentifier(identifier) { + const module = this.modulesByIdentifier.get(identifier); + if (module) { + this.disconnectModule(module); + } + } + getContextForElementAndIdentifier(element, identifier) { + const module = this.modulesByIdentifier.get(identifier); + if (module) { + return module.contexts.find((context) => context.element == element); + } + } + proposeToConnectScopeForElementAndIdentifier(element, identifier) { + const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier); + if (scope) { + this.scopeObserver.elementMatchedValue(scope.element, scope); + } + else { + console.error(`Couldn't find or create scope for identifier: "${identifier}" and element:`, element); + } + } + handleError(error, message, detail) { + this.application.handleError(error, message, detail); + } + createScopeForElementAndIdentifier(element, identifier) { + return new Scope(this.schema, element, identifier, this.logger); + } + scopeConnected(scope) { + this.scopesByIdentifier.add(scope.identifier, scope); + const module = this.modulesByIdentifier.get(scope.identifier); + if (module) { + module.connectContextForScope(scope); + } + } + scopeDisconnected(scope) { + this.scopesByIdentifier.delete(scope.identifier, scope); + const module = this.modulesByIdentifier.get(scope.identifier); + if (module) { + module.disconnectContextForScope(scope); + } + } + connectModule(module) { + this.modulesByIdentifier.set(module.identifier, module); + const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier); + scopes.forEach((scope) => module.connectContextForScope(scope)); + } + disconnectModule(module) { + this.modulesByIdentifier.delete(module.identifier); + const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier); + scopes.forEach((scope) => module.disconnectContextForScope(scope)); + } +} + +const defaultSchema = { + controllerAttribute: "data-controller", + actionAttribute: "data-action", + targetAttribute: "data-target", + targetAttributeForScope: (identifier) => `data-${identifier}-target`, + outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`, + keyMappings: Object.assign(Object.assign({ enter: "Enter", tab: "Tab", esc: "Escape", space: " ", up: "ArrowUp", down: "ArrowDown", left: "ArrowLeft", right: "ArrowRight", home: "Home", end: "End", page_up: "PageUp", page_down: "PageDown" }, objectFromEntries("abcdefghijklmnopqrstuvwxyz".split("").map((c) => [c, c]))), objectFromEntries("0123456789".split("").map((n) => [n, n]))), +}; +function objectFromEntries(array) { + return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {}); +} + +class Application { + constructor(element = document.documentElement, schema = defaultSchema) { + this.logger = console; + this.debug = false; + this.logDebugActivity = (identifier, functionName, detail = {}) => { + if (this.debug) { + this.logFormattedMessage(identifier, functionName, detail); + } + }; + this.element = element; + this.schema = schema; + this.dispatcher = new Dispatcher(this); + this.router = new Router(this); + this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters); + } + static start(element, schema) { + const application = new this(element, schema); + application.start(); + return application; + } + async start() { + await domReady(); + this.logDebugActivity("application", "starting"); + this.dispatcher.start(); + this.router.start(); + this.logDebugActivity("application", "start"); + } + stop() { + this.logDebugActivity("application", "stopping"); + this.dispatcher.stop(); + this.router.stop(); + this.logDebugActivity("application", "stop"); + } + register(identifier, controllerConstructor) { + this.load({ identifier, controllerConstructor }); + } + registerActionOption(name, filter) { + this.actionDescriptorFilters[name] = filter; + } + load(head, ...rest) { + const definitions = Array.isArray(head) ? head : [head, ...rest]; + definitions.forEach((definition) => { + if (definition.controllerConstructor.shouldLoad) { + this.router.loadDefinition(definition); + } + }); + } + unload(head, ...rest) { + const identifiers = Array.isArray(head) ? head : [head, ...rest]; + identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier)); + } + get controllers() { + return this.router.contexts.map((context) => context.controller); + } + getControllerForElementAndIdentifier(element, identifier) { + const context = this.router.getContextForElementAndIdentifier(element, identifier); + return context ? context.controller : null; + } + handleError(error, message, detail) { + var _a; + this.logger.error(`%s\n\n%o\n\n%o`, message, error, detail); + (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, "", 0, 0, error); + } + logFormattedMessage(identifier, functionName, detail = {}) { + detail = Object.assign({ application: this }, detail); + this.logger.groupCollapsed(`${identifier} #${functionName}`); + this.logger.log("details:", Object.assign({}, detail)); + this.logger.groupEnd(); + } +} +function domReady() { + return new Promise((resolve) => { + if (document.readyState == "loading") { + document.addEventListener("DOMContentLoaded", () => resolve()); + } + else { + resolve(); + } + }); +} + +function ClassPropertiesBlessing(constructor) { + const classes = readInheritableStaticArrayValues(constructor, "classes"); + return classes.reduce((properties, classDefinition) => { + return Object.assign(properties, propertiesForClassDefinition(classDefinition)); + }, {}); +} +function propertiesForClassDefinition(key) { + return { + [`${key}Class`]: { + get() { + const { classes } = this; + if (classes.has(key)) { + return classes.get(key); + } + else { + const attribute = classes.getAttributeName(key); + throw new Error(`Missing attribute "${attribute}"`); + } + }, + }, + [`${key}Classes`]: { + get() { + return this.classes.getAll(key); + }, + }, + [`has${capitalize(key)}Class`]: { + get() { + return this.classes.has(key); + }, + }, + }; +} + +function OutletPropertiesBlessing(constructor) { + const outlets = readInheritableStaticArrayValues(constructor, "outlets"); + return outlets.reduce((properties, outletDefinition) => { + return Object.assign(properties, propertiesForOutletDefinition(outletDefinition)); + }, {}); +} +function getOutletController(controller, element, identifier) { + return controller.application.getControllerForElementAndIdentifier(element, identifier); +} +function getControllerAndEnsureConnectedScope(controller, element, outletName) { + let outletController = getOutletController(controller, element, outletName); + if (outletController) + return outletController; + controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName); + outletController = getOutletController(controller, element, outletName); + if (outletController) + return outletController; +} +function propertiesForOutletDefinition(name) { + const camelizedName = namespaceCamelize(name); + return { + [`${camelizedName}Outlet`]: { + get() { + const outletElement = this.outlets.find(name); + const selector = this.outlets.getSelectorForOutletName(name); + if (outletElement) { + const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name); + if (outletController) + return outletController; + throw new Error(`The provided outlet element is missing an outlet controller "${name}" instance for host controller "${this.identifier}"`); + } + throw new Error(`Missing outlet element "${name}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${selector}".`); + }, + }, + [`${camelizedName}Outlets`]: { + get() { + const outlets = this.outlets.findAll(name); + if (outlets.length > 0) { + return outlets + .map((outletElement) => { + const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name); + if (outletController) + return outletController; + console.warn(`The provided outlet element is missing an outlet controller "${name}" instance for host controller "${this.identifier}"`, outletElement); + }) + .filter((controller) => controller); + } + return []; + }, + }, + [`${camelizedName}OutletElement`]: { + get() { + const outletElement = this.outlets.find(name); + const selector = this.outlets.getSelectorForOutletName(name); + if (outletElement) { + return outletElement; + } + else { + throw new Error(`Missing outlet element "${name}" for host controller "${this.identifier}". Stimulus couldn't find a matching outlet element using selector "${selector}".`); + } + }, + }, + [`${camelizedName}OutletElements`]: { + get() { + return this.outlets.findAll(name); + }, + }, + [`has${capitalize(camelizedName)}Outlet`]: { + get() { + return this.outlets.has(name); + }, + }, + }; +} + +function TargetPropertiesBlessing(constructor) { + const targets = readInheritableStaticArrayValues(constructor, "targets"); + return targets.reduce((properties, targetDefinition) => { + return Object.assign(properties, propertiesForTargetDefinition(targetDefinition)); + }, {}); +} +function propertiesForTargetDefinition(name) { + return { + [`${name}Target`]: { + get() { + const target = this.targets.find(name); + if (target) { + return target; + } + else { + throw new Error(`Missing target element "${name}" for "${this.identifier}" controller`); + } + }, + }, + [`${name}Targets`]: { + get() { + return this.targets.findAll(name); + }, + }, + [`has${capitalize(name)}Target`]: { + get() { + return this.targets.has(name); + }, + }, + }; +} + +function ValuePropertiesBlessing(constructor) { + const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, "values"); + const propertyDescriptorMap = { + valueDescriptorMap: { + get() { + return valueDefinitionPairs.reduce((result, valueDefinitionPair) => { + const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier); + const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key); + return Object.assign(result, { [attributeName]: valueDescriptor }); + }, {}); + }, + }, + }; + return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => { + return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair)); + }, propertyDescriptorMap); +} +function propertiesForValueDefinitionPair(valueDefinitionPair, controller) { + const definition = parseValueDefinitionPair(valueDefinitionPair, controller); + const { key, name, reader: read, writer: write } = definition; + return { + [name]: { + get() { + const value = this.data.get(key); + if (value !== null) { + return read(value); + } + else { + return definition.defaultValue; + } + }, + set(value) { + if (value === undefined) { + this.data.delete(key); + } + else { + this.data.set(key, write(value)); + } + }, + }, + [`has${capitalize(name)}`]: { + get() { + return this.data.has(key) || definition.hasCustomDefaultValue; + }, + }, + }; +} +function parseValueDefinitionPair([token, typeDefinition], controller) { + return valueDescriptorForTokenAndTypeDefinition({ + controller, + token, + typeDefinition, + }); +} +function parseValueTypeConstant(constant) { + switch (constant) { + case Array: + return "array"; + case Boolean: + return "boolean"; + case Number: + return "number"; + case Object: + return "object"; + case String: + return "string"; + } +} +function parseValueTypeDefault(defaultValue) { + switch (typeof defaultValue) { + case "boolean": + return "boolean"; + case "number": + return "number"; + case "string": + return "string"; + } + if (Array.isArray(defaultValue)) + return "array"; + if (Object.prototype.toString.call(defaultValue) === "[object Object]") + return "object"; +} +function parseValueTypeObject(payload) { + const { controller, token, typeObject } = payload; + const hasType = isSomething(typeObject.type); + const hasDefault = isSomething(typeObject.default); + const fullObject = hasType && hasDefault; + const onlyType = hasType && !hasDefault; + const onlyDefault = !hasType && hasDefault; + const typeFromObject = parseValueTypeConstant(typeObject.type); + const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default); + if (onlyType) + return typeFromObject; + if (onlyDefault) + return typeFromDefaultValue; + if (typeFromObject !== typeFromDefaultValue) { + const propertyPath = controller ? `${controller}.${token}` : token; + throw new Error(`The specified default value for the Stimulus Value "${propertyPath}" must match the defined type "${typeFromObject}". The provided default value of "${typeObject.default}" is of type "${typeFromDefaultValue}".`); + } + if (fullObject) + return typeFromObject; +} +function parseValueTypeDefinition(payload) { + const { controller, token, typeDefinition } = payload; + const typeObject = { controller, token, typeObject: typeDefinition }; + const typeFromObject = parseValueTypeObject(typeObject); + const typeFromDefaultValue = parseValueTypeDefault(typeDefinition); + const typeFromConstant = parseValueTypeConstant(typeDefinition); + const type = typeFromObject || typeFromDefaultValue || typeFromConstant; + if (type) + return type; + const propertyPath = controller ? `${controller}.${typeDefinition}` : token; + throw new Error(`Unknown value type "${propertyPath}" for "${token}" value`); +} +function defaultValueForDefinition(typeDefinition) { + const constant = parseValueTypeConstant(typeDefinition); + if (constant) + return defaultValuesByType[constant]; + const hasDefault = hasProperty(typeDefinition, "default"); + const hasType = hasProperty(typeDefinition, "type"); + const typeObject = typeDefinition; + if (hasDefault) + return typeObject.default; + if (hasType) { + const { type } = typeObject; + const constantFromType = parseValueTypeConstant(type); + if (constantFromType) + return defaultValuesByType[constantFromType]; + } + return typeDefinition; +} +function valueDescriptorForTokenAndTypeDefinition(payload) { + const { token, typeDefinition } = payload; + const key = `${dasherize(token)}-value`; + const type = parseValueTypeDefinition(payload); + return { + type, + key, + name: camelize(key), + get defaultValue() { + return defaultValueForDefinition(typeDefinition); + }, + get hasCustomDefaultValue() { + return parseValueTypeDefault(typeDefinition) !== undefined; + }, + reader: readers[type], + writer: writers[type] || writers.default, + }; +} +const defaultValuesByType = { + get array() { + return []; + }, + boolean: false, + number: 0, + get object() { + return {}; + }, + string: "", +}; +const readers = { + array(value) { + const array = JSON.parse(value); + if (!Array.isArray(array)) { + throw new TypeError(`expected value of type "array" but instead got value "${value}" of type "${parseValueTypeDefault(array)}"`); + } + return array; + }, + boolean(value) { + return !(value == "0" || String(value).toLowerCase() == "false"); + }, + number(value) { + return Number(value.replace(/_/g, "")); + }, + object(value) { + const object = JSON.parse(value); + if (object === null || typeof object != "object" || Array.isArray(object)) { + throw new TypeError(`expected value of type "object" but instead got value "${value}" of type "${parseValueTypeDefault(object)}"`); + } + return object; + }, + string(value) { + return value; + }, +}; +const writers = { + default: writeString, + array: writeJSON, + object: writeJSON, +}; +function writeJSON(value) { + return JSON.stringify(value); +} +function writeString(value) { + return `${value}`; +} + +class Controller { + constructor(context) { + this.context = context; + } + static get shouldLoad() { + return true; + } + static afterLoad(_identifier, _application) { + return; + } + get application() { + return this.context.application; + } + get scope() { + return this.context.scope; + } + get element() { + return this.scope.element; + } + get identifier() { + return this.scope.identifier; + } + get targets() { + return this.scope.targets; + } + get outlets() { + return this.scope.outlets; + } + get classes() { + return this.scope.classes; + } + get data() { + return this.scope.data; + } + initialize() { + } + connect() { + } + disconnect() { + } + dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) { + const type = prefix ? `${prefix}:${eventName}` : eventName; + const event = new CustomEvent(type, { detail, bubbles, cancelable }); + target.dispatchEvent(event); + return event; + } +} +Controller.blessings = [ + ClassPropertiesBlessing, + TargetPropertiesBlessing, + ValuePropertiesBlessing, + OutletPropertiesBlessing, +]; +Controller.targets = []; +Controller.outlets = []; +Controller.values = {}; + + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/createPopper.js" +/*!*************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/createPopper.js ***! + \*************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createPopper: () => (/* binding */ createPopper), +/* harmony export */ detectOverflow: () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__["default"]), +/* harmony export */ popperGenerator: () => (/* binding */ popperGenerator) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "../../node_modules/@popperjs/core/lib/utils/orderModifiers.js"); +/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/debounce.js */ "../../node_modules/@popperjs/core/lib/utils/debounce.js"); +/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/mergeByName.js */ "../../node_modules/@popperjs/core/lib/utils/mergeByName.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + + + + + + + +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; + +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); +} + +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(reference.contextElement) : [], + popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_4__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_6__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper), state.options.strategy === 'fixed'), + popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_5__["default"])(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref) { + var name = _ref.name, + _ref$options = _ref.options, + options = _ref$options === void 0 ? {} : _ref$options, + effect = _ref.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; +} +var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/contains.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/contains.js ***! + \*******************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ contains) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js" +/*!********************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! + \********************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getBoundingClientRect) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); + + + + +function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } + + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; + + if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { + scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1; + } + + var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window, + visualViewport = _ref.visualViewport; + + var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getClippingRect) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getViewportRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); +/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); +/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./listScrollParents.js */ "../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); +/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getOffsetParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getComputedStyle.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getParentNode.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./contains.js */ "../../node_modules/@popperjs/core/lib/dom-utils/contains.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + + + + + + + +function getInnerBoundingClientRect(element, strategy) { + var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; +} + +function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element))); +} // A "clipping parent" is an overflowable container with the characteristic of +// clipping (or hiding) overflowing elements with a position different from +// `initial` + + +function getClippingParents(element) { + var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element).position) >= 0; + var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element) : element; + + if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__.isElement)(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_10__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent) !== 'body'; + }); +} // Gets the maximum area that the element is visible in due to any number of +// clipping parents + + +function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top); + accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right); + accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom); + accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! + \***************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getCompositeRect) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getNodeScroll.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isScrollParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + +function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_7__.round)(rect.width) / element.offsetWidth || 1; + var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_7__.round)(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; +} // Returns the composite rect of an element relative to its offsetParent. +// Composite means it takes into account transforms as well as layout. + + +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(offsetParent); + var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent); + var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent); + var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(documentElement)) { + scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent); + } + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(offsetParent)) { + offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_4__["default"])(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! + \***************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getComputedStyle) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + +function getComputedStyle(element) { + return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js" +/*!*****************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! + \*****************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getDocumentElement) +/* harmony export */ }); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + +function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getDocumentRect) +/* harmony export */ }); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScroll.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + + + + + // Gets the entire size of the scrollable document area, even extending outside +// of the `` and `` rect bounds if horizontally scrollable + +function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_4__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_4__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); + var y = -winScroll.scrollTop; + + if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(body || html).direction === 'rtl') { + x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_4__.max)(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js" +/*!*******************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! + \*******************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getHTMLElementScroll) +/* harmony export */ }); +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js" +/*!************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! + \************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getLayoutRect) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); + // Returns the layout rect of an element relative to its offsetParent. Layout +// means it doesn't take into account transforms. + +function getLayoutRect(element) { + var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! + \**********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getNodeName) +/* harmony export */ }); +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js" +/*!************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! + \************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getNodeScroll) +/* harmony export */ }); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindowScroll.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); + + + + +function getNodeScroll(node) { + if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_2__.isHTMLElement)(node)) { + return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); + } else { + return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); + } +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOffsetParent) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getComputedStyle.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isTableElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getParentNode.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/userAgent.js */ "../../node_modules/@popperjs/core/lib/utils/userAgent.js"); + + + + + + + + +function getTrueOffsetParent(element) { + if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837 + (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).position === 'fixed') { + return null; + } + + return element.offsetParent; +} // `.offsetParent` reports `null` for fixed elements, while absolute elements +// return the containing block + + +function getContainingBlock(element) { + var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_6__["default"])()); + var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_6__["default"])()); + + if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); + + if (elementCss.position === 'fixed') { + return null; + } + } + + var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element); + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isShadowRoot)(currentNode)) { + currentNode = currentNode.host; + } + + while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode)) < 0) { + var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; +} // Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. + + +function getOffsetParent(element) { + var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js" +/*!************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! + \************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getParentNode) +/* harmony export */ }); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + +function getParentNode(element) { + if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_2__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element) // fallback + + ); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getScrollParent) +/* harmony export */ }); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getParentNode.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isScrollParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + + + +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node)) { + return node; + } + + return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getViewportRect) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); +/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); + + + + +function getViewportRect(element, strategy) { + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])(); + + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element), + y: y + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js" +/*!********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! + \********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindow) +/* harmony export */ }); +function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindowScroll) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + +function getWindowScroll(node) { + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js" +/*!******************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! + \******************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getWindowScrollBarX) +/* harmony export */ }); +/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); + + + +function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! + \*********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ isElement: () => (/* binding */ isElement), +/* harmony export */ isHTMLElement: () => (/* binding */ isHTMLElement), +/* harmony export */ isShadowRoot: () => (/* binding */ isShadowRoot) +/* harmony export */ }); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + + +function isElement(node) { + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; + return node instanceof OwnElement || node instanceof Element; +} + +function isHTMLElement(node) { + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; +} + +function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***! + \***************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isLayoutViewport) +/* harmony export */ }); +/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "../../node_modules/@popperjs/core/lib/utils/userAgent.js"); + +function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])()); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js" +/*!*************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! + \*************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isScrollParent) +/* harmony export */ }); +/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); + +function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js" +/*!*************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! + \*************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isTableElement) +/* harmony export */ }); +/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); + +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js" +/*!****************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! + \****************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ listScrollParents) +/* harmony export */ }); +/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); +/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getParentNode.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); +/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isScrollParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); + + + + +/* +given a DOM element, return the list of all scroll parents, up the list of ancesors +until we get to the top window object. This list is what we attach scroll listeners +to, because if any of these parent elements scroll, we'll need to re-calculate the +reference element's position. +*/ + +function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_1__["default"])(target))); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/enums.js" +/*!******************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/enums.js ***! + \******************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ afterMain: () => (/* binding */ afterMain), +/* harmony export */ afterRead: () => (/* binding */ afterRead), +/* harmony export */ afterWrite: () => (/* binding */ afterWrite), +/* harmony export */ auto: () => (/* binding */ auto), +/* harmony export */ basePlacements: () => (/* binding */ basePlacements), +/* harmony export */ beforeMain: () => (/* binding */ beforeMain), +/* harmony export */ beforeRead: () => (/* binding */ beforeRead), +/* harmony export */ beforeWrite: () => (/* binding */ beforeWrite), +/* harmony export */ bottom: () => (/* binding */ bottom), +/* harmony export */ clippingParents: () => (/* binding */ clippingParents), +/* harmony export */ end: () => (/* binding */ end), +/* harmony export */ left: () => (/* binding */ left), +/* harmony export */ main: () => (/* binding */ main), +/* harmony export */ modifierPhases: () => (/* binding */ modifierPhases), +/* harmony export */ placements: () => (/* binding */ placements), +/* harmony export */ popper: () => (/* binding */ popper), +/* harmony export */ read: () => (/* binding */ read), +/* harmony export */ reference: () => (/* binding */ reference), +/* harmony export */ right: () => (/* binding */ right), +/* harmony export */ start: () => (/* binding */ start), +/* harmony export */ top: () => (/* binding */ top), +/* harmony export */ variationPlacements: () => (/* binding */ variationPlacements), +/* harmony export */ viewport: () => (/* binding */ viewport), +/* harmony export */ write: () => (/* binding */ write) +/* harmony export */ }); +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper = 'popper'; +var reference = 'reference'; +var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); // modifiers that need to read the DOM + +var beforeRead = 'beforeRead'; +var read = 'read'; +var afterRead = 'afterRead'; // pure-logic modifiers + +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + +var beforeWrite = 'beforeWrite'; +var write = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! + \**********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); + + // This modifier takes the styles prepared by the `computeStyles` modifier +// and applies them to the HTMLElements such as popper and arrow + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); +} + +function effect(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect, + requires: ['computeStyles'] +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/arrow.js" +/*!****************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/arrow.js ***! + \****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/contains.js */ "../../node_modules/@popperjs/core/lib/dom-utils/contains.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/within.js */ "../../node_modules/@popperjs/core/lib/utils/within.js"); +/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); +/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); + + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_6__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_7__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_8__.basePlacements)); +}; + +function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.placement); + var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); + var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_8__.left, _enums_js__WEBPACK_IMPORTED_MODULE_8__.right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arrowElement); + var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_8__.top : _enums_js__WEBPACK_IMPORTED_MODULE_8__.left; + var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_8__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_8__.right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_5__.within)(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} + +function effect(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.elements.popper, arrowElement)) { + return; + } + + state.elements.arrow = arrowElement; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js" +/*!************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! + \************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ mapToStyles: () => (/* binding */ mapToStyles) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); +/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getVariation.js */ "../../node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; // Round the offsets to the nearest suitable subpixel based on the DPR. +// Zooming can change the DPR, but it seems to report a value that will +// cleanly divide the values into the appropriate subpixels. + +function roundOffsetsByDPR(_ref, win) { + var x = _ref.x, + y = _ref.y; + var dpr = win.devicePixelRatio || 1; + return { + x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_7__.round)(x * dpr) / dpr || 0, + y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_7__.round)(y * dpr) / dpr || 0 + }; +} + +function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_0__.left; + var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_0__.top; + var win = window; + + if (adaptive) { + var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper)) { + offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper); + + if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__.end) { + sideY = _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__.end) { + sideX = _enums_js__WEBPACK_IMPORTED_MODULE_0__.right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper)) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); +} + +function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + var commonStyles = { + placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.placement), + variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js" +/*!*************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! + \*************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); + // eslint-disable-next-line import/no-unused-modules + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/flip.js" +/*!***************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/flip.js ***! + \***************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getVariation.js */ "../../node_modules/@popperjs/core/lib/utils/getVariation.js"); + + + + + + + // eslint-disable-next-line import/no-unused-modules + +function getExpandedFallbackPlacements(placement) { + if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__.auto) { + return []; + } + + var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); + return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(oppositePlacement)]; +} + +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); + + var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start; + var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.right : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(mainVariationSide); + } + + var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/hide.js" +/*!***************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/hide.js ***! + \***************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); + + + +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; +} + +function isAnySideFullyClipped(overflow) { + return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) { + return overflow[side] >= 0; + }); +} + +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { + elementContext: 'reference' + }); + var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/index.js" +/*!****************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/index.js ***! + \****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ applyStyles: () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]), +/* harmony export */ arrow: () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]), +/* harmony export */ computeStyles: () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]), +/* harmony export */ eventListeners: () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]), +/* harmony export */ flip: () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]), +/* harmony export */ hide: () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]), +/* harmony export */ offset: () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]), +/* harmony export */ popperOffsets: () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]), +/* harmony export */ preventOverflow: () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]) +/* harmony export */ }); +/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); +/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "../../node_modules/@popperjs/core/lib/modifiers/arrow.js"); +/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "../../node_modules/@popperjs/core/lib/modifiers/flip.js"); +/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "../../node_modules/@popperjs/core/lib/modifiers/hide.js"); +/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "../../node_modules/@popperjs/core/lib/modifiers/offset.js"); +/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); + + + + + + + + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/offset.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/offset.js ***! + \*****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), +/* harmony export */ distanceAndSkiddingToXY: () => (/* binding */ distanceAndSkiddingToXY) +/* harmony export */ }); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); + + // eslint-disable-next-line import/no-unused-modules + +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); + var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} + +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js" +/*!************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! + \************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "../../node_modules/@popperjs/core/lib/utils/computeOffsets.js"); + + +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! + \**************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "../../node_modules/@popperjs/core/lib/utils/getAltAxis.js"); +/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/within.js */ "../../node_modules/@popperjs/core/lib/utils/within.js"); +/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); +/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); +/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/getVariation.js */ "../../node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); +/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + + + + + + + + + + + + +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); + var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.placement); + var isBasePlacement = !variation; + var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(basePlacement); + var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_3__["default"])(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.top : _enums_js__WEBPACK_IMPORTED_MODULE_0__.left; + var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_0__.right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min = offset + overflow[mainSide]; + var max = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__.start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_9__["default"])(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_4__.within)(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_4__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _offsetModifierState$2; + + var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.top : _enums_js__WEBPACK_IMPORTED_MODULE_0__.left; + + var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_0__.right; + + var _offset = popperOffsets[altAxis]; + + var _len = altAxis === 'y' ? 'height' : 'width'; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_4__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_4__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}); + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/popper-lite.js" +/*!************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/popper-lite.js ***! + \************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createPopper: () => (/* binding */ createPopper), +/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers), +/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_1__["default"]), +/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_0__.popperGenerator) +/* harmony export */ }); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createPopper.js */ "../../node_modules/@popperjs/core/lib/createPopper.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createPopper.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); + + + + + +var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_5__["default"]]; +var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_0__.popperGenerator)({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/popper.js" +/*!*******************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/popper.js ***! + \*******************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles), +/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow), +/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles), +/* harmony export */ createPopper: () => (/* binding */ createPopper), +/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper), +/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers), +/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_1__["default"]), +/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners), +/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip), +/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide), +/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset), +/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_0__.popperGenerator), +/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets), +/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow) +/* harmony export */ }); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createPopper.js */ "../../node_modules/@popperjs/core/lib/createPopper.js"); +/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createPopper.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); +/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); +/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); +/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); +/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/offset.js */ "../../node_modules/@popperjs/core/lib/modifiers/offset.js"); +/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/flip.js */ "../../node_modules/@popperjs/core/lib/modifiers/flip.js"); +/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); +/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modifiers/arrow.js */ "../../node_modules/@popperjs/core/lib/modifiers/arrow.js"); +/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modifiers/hide.js */ "../../node_modules/@popperjs/core/lib/modifiers/hide.js"); +/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "../../node_modules/@popperjs/core/lib/popper-lite.js"); +/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "../../node_modules/@popperjs/core/lib/modifiers/index.js"); + + + + + + + + + + +var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_9__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_10__["default"]]; +var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_0__.popperGenerator)({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + // eslint-disable-next-line import/no-unused-modules + + + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! + \***************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ computeAutoPlacement) +/* harmony export */ }); +/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVariation.js */ "../../node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js"); +/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); + + + + +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements : _options$allowedAutoP; + var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); + var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_1__.variationPlacements.filter(function (placement) { + return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === variation; + }) : _enums_js__WEBPACK_IMPORTED_MODULE_1__.basePlacements; + var allowedPlacements = placements.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements; + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/computeOffsets.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! + \*********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ computeOffsets) +/* harmony export */ }); +/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); +/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "../../node_modules/@popperjs/core/lib/utils/getVariation.js"); +/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); + + + + +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; + var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case _enums_js__WEBPACK_IMPORTED_MODULE_3__.end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + + default: + } + } + + return offsets; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/debounce.js" +/*!***************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/debounce.js ***! + \***************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ debounce) +/* harmony export */ }); +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/detectOverflow.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! + \*********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ detectOverflow) +/* harmony export */ }); +/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); +/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); +/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); +/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./computeOffsets.js */ "../../node_modules/@popperjs/core/lib/utils/computeOffsets.js"); +/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rectToClientRect.js */ "../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); +/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); +/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mergePaddingObject.js */ "../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); +/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./expandToHashMap.js */ "../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); + + + + + + + + + // eslint-disable-next-line import/no-unused-modules + +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_8__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_5__.basePlacements)); + var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_5__.popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_6__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.elements.reference); + var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_3__["default"])({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__.popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.right, _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! + \**********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ expandToHashMap) +/* harmony export */ }); +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getAltAxis.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! + \*****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getAltAxis) +/* harmony export */ }); +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js" +/*!***********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! + \***********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getBasePlacement) +/* harmony export */ }); + +function getBasePlacement(placement) { + return placement.split('-')[0]; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js" +/*!*************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! + \*************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getFreshSideObject) +/* harmony export */ }); +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js" +/*!*******************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! + \*******************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getMainAxisFromPlacement) +/* harmony export */ }); +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! + \***************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOppositePlacement) +/* harmony export */ }); +var hash = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js" +/*!************************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! + \************************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getOppositeVariationPlacement) +/* harmony export */ }); +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/getVariation.js" +/*!*******************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/getVariation.js ***! + \*******************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getVariation) +/* harmony export */ }); +function getVariation(placement) { + return placement.split('-')[1]; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/math.js" +/*!***********************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/math.js ***! + \***********************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ max: () => (/* binding */ max), +/* harmony export */ min: () => (/* binding */ min), +/* harmony export */ round: () => (/* binding */ round) +/* harmony export */ }); +var max = Math.max; +var min = Math.min; +var round = Math.round; + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/mergeByName.js" +/*!******************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/mergeByName.js ***! + \******************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ mergeByName) +/* harmony export */ }); +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js" +/*!*************************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! + \*************************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ mergePaddingObject) +/* harmony export */ }); +/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); + +function mergePaddingObject(paddingObject) { + return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/orderModifiers.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! + \*********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ orderModifiers) +/* harmony export */ }); +/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "../../node_modules/@popperjs/core/lib/enums.js"); + // source: https://stackoverflow.com/questions/49875255 + +function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; +} + +function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js" +/*!***********************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! + \***********************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ rectToClientRect) +/* harmony export */ }); +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/userAgent.js" +/*!****************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/userAgent.js ***! + \****************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ getUAString) +/* harmony export */ }); +function getUAString() { + var uaData = navigator.userAgentData; + + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + + return navigator.userAgent; +} + +/***/ }, + +/***/ "../../node_modules/@popperjs/core/lib/utils/within.js" +/*!*************************************************************!*\ + !*** ../../node_modules/@popperjs/core/lib/utils/within.js ***! + \*************************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ within: () => (/* binding */ within), +/* harmony export */ withinMaxClamp: () => (/* binding */ withinMaxClamp) +/* harmony export */ }); +/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "../../node_modules/@popperjs/core/lib/utils/math.js"); + +function within(min, value, max) { + return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max)); +} +function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; +} + +/***/ }, + +/***/ "../../node_modules/algoliasearch/node_modules/debug/src/browser.js" +/*!**************************************************************************!*\ + !*** ../../node_modules/algoliasearch/node_modules/debug/src/browser.js ***! + \**************************************************************************/ +(module, exports, __webpack_require__) { + +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(/*! ./debug */ "../../node_modules/algoliasearch/node_modules/debug/src/debug.js"); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/node_modules/debug/src/debug.js" +/*!************************************************************************!*\ + !*** ../../node_modules/algoliasearch/node_modules/debug/src/debug.js ***! + \************************************************************************/ +(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__(/*! ms */ "../../node_modules/algoliasearch/node_modules/ms/index.js"); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/node_modules/ms/index.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/algoliasearch/node_modules/ms/index.js ***! + \*****************************************************************/ +(module) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/AlgoliaSearchCore.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/AlgoliaSearchCore.js ***! + \*****************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +module.exports = AlgoliaSearchCore; + +var errors = __webpack_require__(/*! ./errors */ "../../node_modules/algoliasearch/src/errors.js"); +var exitPromise = __webpack_require__(/*! ./exitPromise.js */ "../../node_modules/algoliasearch/src/exitPromise.js"); +var IndexCore = __webpack_require__(/*! ./IndexCore.js */ "../../node_modules/algoliasearch/src/IndexCore.js"); +var store = __webpack_require__(/*! ./store.js */ "../../node_modules/algoliasearch/src/store.js"); + +// We will always put the API KEY in the JSON body in case of too long API KEY, +// to avoid query string being too long and failing in various conditions (our server limit, browser limit, +// proxies limit) +var MAX_API_KEY_LENGTH = 500; +var RESET_APP_DATA_TIMER = + process.env.RESET_APP_DATA_TIMER && parseInt(process.env.RESET_APP_DATA_TIMER, 10) || + 60 * 2 * 1000; // after 2 minutes reset to first host + +/* + * Algolia Search library initialization + * https://www.algolia.com/ + * + * @param {string} applicationID - Your applicationID, found in your dashboard + * @param {string} apiKey - Your API key, found in your dashboard + * @param {Object} [opts] + * @param {number} [opts.timeout=2000] - The request timeout set in milliseconds, + * another request will be issued after this timeout + * @param {string} [opts.protocol='https:'] - The protocol used to query Algolia Search API. + * Set to 'http:' to force using http. + * @param {Object|Array} [opts.hosts={ + * read: [this.applicationID + '-dsn.algolia.net'].concat([ + * this.applicationID + '-1.algolianet.com', + * this.applicationID + '-2.algolianet.com', + * this.applicationID + '-3.algolianet.com'] + * ]), + * write: [this.applicationID + '.algolia.net'].concat([ + * this.applicationID + '-1.algolianet.com', + * this.applicationID + '-2.algolianet.com', + * this.applicationID + '-3.algolianet.com'] + * ]) - The hosts to use for Algolia Search API. + * If you provide them, you will less benefit from our HA implementation + */ +function AlgoliaSearchCore(applicationID, apiKey, opts) { + var debug = __webpack_require__(/*! debug */ "../../node_modules/algoliasearch/node_modules/debug/src/browser.js")('algoliasearch'); + + var clone = __webpack_require__(/*! ./clone.js */ "../../node_modules/algoliasearch/src/clone.js"); + var isArray = __webpack_require__(/*! isarray */ "../../node_modules/isarray/index.js"); + var map = __webpack_require__(/*! ./map.js */ "../../node_modules/algoliasearch/src/map.js"); + + var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)'; + + if (opts._allowEmptyCredentials !== true && !applicationID) { + throw new errors.AlgoliaSearchError('Please provide an application ID. ' + usage); + } + + if (opts._allowEmptyCredentials !== true && !apiKey) { + throw new errors.AlgoliaSearchError('Please provide an API key. ' + usage); + } + + this.applicationID = applicationID; + this.apiKey = apiKey; + + this.hosts = { + read: [], + write: [] + }; + + opts = opts || {}; + + this._timeouts = opts.timeouts || { + connect: 1 * 1000, // 500ms connect is GPRS latency + read: 2 * 1000, + write: 30 * 1000 + }; + + // backward compat, if opts.timeout is passed, we use it to configure all timeouts like before + if (opts.timeout) { + this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout; + } + + var protocol = opts.protocol || 'https:'; + // while we advocate for colon-at-the-end values: 'http:' for `opts.protocol` + // we also accept `http` and `https`. It's a common error. + if (!/:$/.test(protocol)) { + protocol = protocol + ':'; + } + + if (protocol !== 'http:' && protocol !== 'https:') { + throw new errors.AlgoliaSearchError('protocol must be `http:` or `https:` (was `' + opts.protocol + '`)'); + } + + this._checkAppIdData(); + + if (!opts.hosts) { + var defaultHosts = map(this._shuffleResult, function(hostNumber) { + return applicationID + '-' + hostNumber + '.algolianet.com'; + }); + + // no hosts given, compute defaults + var mainSuffix = (opts.dsn === false ? '' : '-dsn') + '.algolia.net'; + this.hosts.read = [this.applicationID + mainSuffix].concat(defaultHosts); + this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts); + } else if (isArray(opts.hosts)) { + // when passing custom hosts, we need to have a different host index if the number + // of write/read hosts are different. + this.hosts.read = clone(opts.hosts); + this.hosts.write = clone(opts.hosts); + } else { + this.hosts.read = clone(opts.hosts.read); + this.hosts.write = clone(opts.hosts.write); + } + + // add protocol and lowercase hosts + this.hosts.read = map(this.hosts.read, prepareHost(protocol)); + this.hosts.write = map(this.hosts.write, prepareHost(protocol)); + + this.extraHeaders = {}; + + // In some situations you might want to warm the cache + this.cache = opts._cache || {}; + + this._ua = opts._ua; + this._useCache = opts._useCache === undefined || opts._cache ? true : opts._useCache; + this._useRequestCache = this._useCache && opts._useRequestCache; + this._useFallback = opts.useFallback === undefined ? true : opts.useFallback; + + this._setTimeout = opts._setTimeout; + + debug('init done, %j', this); +} + +/* + * Get the index object initialized + * + * @param indexName the name of index + * @param callback the result callback with one argument (the Index instance) + */ +AlgoliaSearchCore.prototype.initIndex = function(indexName) { + return new IndexCore(this, indexName); +}; + +/** +* Add an extra field to the HTTP request +* +* @param name the header field name +* @param value the header field value +*/ +AlgoliaSearchCore.prototype.setExtraHeader = function(name, value) { + this.extraHeaders[name.toLowerCase()] = value; +}; + +/** +* Get the value of an extra HTTP header +* +* @param name the header field name +*/ +AlgoliaSearchCore.prototype.getExtraHeader = function(name) { + return this.extraHeaders[name.toLowerCase()]; +}; + +/** +* Remove an extra field from the HTTP request +* +* @param name the header field name +*/ +AlgoliaSearchCore.prototype.unsetExtraHeader = function(name) { + delete this.extraHeaders[name.toLowerCase()]; +}; + +/** +* Augment sent x-algolia-agent with more data, each agent part +* is automatically separated from the others by a semicolon; +* +* @param algoliaAgent the agent to add +*/ +AlgoliaSearchCore.prototype.addAlgoliaAgent = function(algoliaAgent) { + var algoliaAgentWithDelimiter = '; ' + algoliaAgent; + + if (this._ua.indexOf(algoliaAgentWithDelimiter) === -1) { + this._ua += algoliaAgentWithDelimiter; + } +}; + +/* + * Wrapper that try all hosts to maximize the quality of service + */ +AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) { + this._checkAppIdData(); + + var requestDebug = __webpack_require__(/*! debug */ "../../node_modules/algoliasearch/node_modules/debug/src/browser.js")('algoliasearch:' + initialOpts.url); + + + var body; + var cacheID; + var additionalUA = initialOpts.additionalUA || ''; + var cache = initialOpts.cache; + var client = this; + var tries = 0; + var usingFallback = false; + var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback; + var headers; + + if ( + this.apiKey.length > MAX_API_KEY_LENGTH && + initialOpts.body !== undefined && + (initialOpts.body.params !== undefined || // index.search() + initialOpts.body.requests !== undefined) // client.search() + ) { + initialOpts.body.apiKey = this.apiKey; + headers = this._computeRequestHeaders({ + additionalUA: additionalUA, + withApiKey: false, + headers: initialOpts.headers + }); + } else { + headers = this._computeRequestHeaders({ + additionalUA: additionalUA, + headers: initialOpts.headers + }); + } + + if (initialOpts.body !== undefined) { + body = safeJSONStringify(initialOpts.body); + } + + requestDebug('request start'); + var debugData = []; + + + function doRequest(requester, reqOpts) { + client._checkAppIdData(); + + var startTime = new Date(); + + if (client._useCache && !client._useRequestCache) { + cacheID = initialOpts.url; + } + + // as we sometime use POST requests to pass parameters (like query='aa'), + // the cacheID must also include the body to be different between calls + if (client._useCache && !client._useRequestCache && body) { + cacheID += '_body_' + reqOpts.body; + } + + // handle cache existence + if (isCacheValidWithCurrentID(!client._useRequestCache, cache, cacheID)) { + requestDebug('serving response from cache'); + + var responseText = cache[cacheID]; + + // Cache response must match the type of the original one + return client._promise.resolve({ + body: JSON.parse(responseText), + responseText: responseText + }); + } + + // if we reached max tries + if (tries >= client.hosts[initialOpts.hostType].length) { + if (!hasFallback || usingFallback) { + requestDebug('could not get any response'); + // then stop + return client._promise.reject(new errors.AlgoliaSearchError( + 'Cannot connect to the AlgoliaSearch API.' + + ' Send an email to support@algolia.com to report and resolve the issue.' + + ' Application id was: ' + client.applicationID, {debugData: debugData} + )); + } + + requestDebug('switching to fallback'); + + // let's try the fallback starting from here + tries = 0; + + // method, url and body are fallback dependent + reqOpts.method = initialOpts.fallback.method; + reqOpts.url = initialOpts.fallback.url; + reqOpts.jsonBody = initialOpts.fallback.body; + if (reqOpts.jsonBody) { + reqOpts.body = safeJSONStringify(reqOpts.jsonBody); + } + // re-compute headers, they could be omitting the API KEY + headers = client._computeRequestHeaders({ + additionalUA: additionalUA, + headers: initialOpts.headers + }); + + reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType); + client._setHostIndexByType(0, initialOpts.hostType); + usingFallback = true; // the current request is now using fallback + return doRequest(client._request.fallback, reqOpts); + } + + var currentHost = client._getHostByType(initialOpts.hostType); + + var url = currentHost + reqOpts.url; + var options = { + body: reqOpts.body, + jsonBody: reqOpts.jsonBody, + method: reqOpts.method, + headers: headers, + timeouts: reqOpts.timeouts, + debug: requestDebug, + forceAuthHeaders: reqOpts.forceAuthHeaders + }; + + requestDebug('method: %s, url: %s, headers: %j, timeouts: %d', + options.method, url, options.headers, options.timeouts); + + if (requester === client._request.fallback) { + requestDebug('using fallback'); + } + + // `requester` is any of this._request or this._request.fallback + // thus it needs to be called using the client as context + return requester.call(client, url, options).then(success, tryFallback); + + function success(httpResponse) { + // compute the status of the response, + // + // When in browser mode, using XDR or JSONP, we have no statusCode available + // So we rely on our API response `status` property. + // But `waitTask` can set a `status` property which is not the statusCode (it's the task status) + // So we check if there's a `message` along `status` and it means it's an error + // + // That's the only case where we have a response.status that's not the http statusCode + var status = httpResponse && httpResponse.body && httpResponse.body.message && httpResponse.body.status || + + // this is important to check the request statusCode AFTER the body eventual + // statusCode because some implementations (jQuery XDomainRequest transport) may + // send statusCode 200 while we had an error + httpResponse.statusCode || + + // When in browser mode, using XDR or JSONP + // we default to success when no error (no response.status && response.message) + // If there was a JSON.parse() error then body is null and it fails + httpResponse && httpResponse.body && 200; + + requestDebug('received response: statusCode: %s, computed statusCode: %d, headers: %j', + httpResponse.statusCode, status, httpResponse.headers); + + var httpResponseOk = Math.floor(status / 100) === 2; + + var endTime = new Date(); + debugData.push({ + currentHost: currentHost, + headers: removeCredentials(headers), + content: body || null, + contentLength: body !== undefined ? body.length : null, + method: reqOpts.method, + timeouts: reqOpts.timeouts, + url: reqOpts.url, + startTime: startTime, + endTime: endTime, + duration: endTime - startTime, + statusCode: status + }); + + if (httpResponseOk) { + if (client._useCache && !client._useRequestCache && cache) { + cache[cacheID] = httpResponse.responseText; + } + + return { + responseText: httpResponse.responseText, + body: httpResponse.body + }; + } + + var shouldRetry = Math.floor(status / 100) !== 4; + + if (shouldRetry) { + tries += 1; + return retryRequest(); + } + + requestDebug('unrecoverable error'); + + // no success and no retry => fail + var unrecoverableError = new errors.AlgoliaSearchError( + httpResponse.body && httpResponse.body.message, {debugData: debugData, statusCode: status} + ); + + return client._promise.reject(unrecoverableError); + } + + function tryFallback(err) { + // error cases: + // While not in fallback mode: + // - CORS not supported + // - network error + // While in fallback mode: + // - timeout + // - network error + // - badly formatted JSONP (script loaded, did not call our callback) + // In both cases: + // - uncaught exception occurs (TypeError) + requestDebug('error: %s, stack: %s', err.message, err.stack); + + var endTime = new Date(); + debugData.push({ + currentHost: currentHost, + headers: removeCredentials(headers), + content: body || null, + contentLength: body !== undefined ? body.length : null, + method: reqOpts.method, + timeouts: reqOpts.timeouts, + url: reqOpts.url, + startTime: startTime, + endTime: endTime, + duration: endTime - startTime + }); + + if (!(err instanceof errors.AlgoliaSearchError)) { + err = new errors.Unknown(err && err.message, err); + } + + tries += 1; + + // stop the request implementation when: + if ( + // we did not generate this error, + // it comes from a throw in some other piece of code + err instanceof errors.Unknown || + + // server sent unparsable JSON + err instanceof errors.UnparsableJSON || + + // max tries and already using fallback or no fallback + tries >= client.hosts[initialOpts.hostType].length && + (usingFallback || !hasFallback)) { + // stop request implementation for this command + err.debugData = debugData; + return client._promise.reject(err); + } + + // When a timeout occurred, retry by raising timeout + if (err instanceof errors.RequestTimeout) { + return retryRequestWithHigherTimeout(); + } + + return retryRequest(); + } + + function retryRequest() { + requestDebug('retrying request'); + client._incrementHostIndex(initialOpts.hostType); + return doRequest(requester, reqOpts); + } + + function retryRequestWithHigherTimeout() { + requestDebug('retrying request with higher timeout'); + client._incrementHostIndex(initialOpts.hostType); + client._incrementTimeoutMultipler(); + reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType); + return doRequest(requester, reqOpts); + } + } + + function isCacheValidWithCurrentID( + useRequestCache, + currentCache, + currentCacheID + ) { + return ( + client._useCache && + useRequestCache && + currentCache && + currentCache[currentCacheID] !== undefined + ); + } + + + function interopCallbackReturn(request, callback) { + if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) { + request.catch(function() { + // Release the cache on error + delete cache[cacheID]; + }); + } + + if (typeof initialOpts.callback === 'function') { + // either we have a callback + request.then(function okCb(content) { + exitPromise(function() { + initialOpts.callback(null, callback(content)); + }, client._setTimeout || setTimeout); + }, function nookCb(err) { + exitPromise(function() { + initialOpts.callback(err); + }, client._setTimeout || setTimeout); + }); + } else { + // either we are using promises + return request.then(callback); + } + } + + if (client._useCache && client._useRequestCache) { + cacheID = initialOpts.url; + } + + // as we sometime use POST requests to pass parameters (like query='aa'), + // the cacheID must also include the body to be different between calls + if (client._useCache && client._useRequestCache && body) { + cacheID += '_body_' + body; + } + + if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) { + requestDebug('serving request from cache'); + + var maybePromiseForCache = cache[cacheID]; + + // In case the cache is warmup with value that is not a promise + var promiseForCache = typeof maybePromiseForCache.then !== 'function' + ? client._promise.resolve({responseText: maybePromiseForCache}) + : maybePromiseForCache; + + return interopCallbackReturn(promiseForCache, function(content) { + // In case of the cache request, return the original value + return JSON.parse(content.responseText); + }); + } + + var request = doRequest( + client._request, { + url: initialOpts.url, + method: initialOpts.method, + body: body, + jsonBody: initialOpts.body, + timeouts: client._getTimeoutsForRequest(initialOpts.hostType), + forceAuthHeaders: initialOpts.forceAuthHeaders + } + ); + + if (client._useCache && client._useRequestCache && cache) { + cache[cacheID] = request; + } + + return interopCallbackReturn(request, function(content) { + // In case of the first request, return the JSON value + return content.body; + }); +}; + +/* +* Transform search param object in query string +* @param {object} args arguments to add to the current query string +* @param {string} params current query string +* @return {string} the final query string +*/ +AlgoliaSearchCore.prototype._getSearchParams = function(args, params) { + if (args === undefined || args === null) { + return params; + } + for (var key in args) { + if (key !== null && args[key] !== undefined && args.hasOwnProperty(key)) { + params += params === '' ? '' : '&'; + params += key + '=' + encodeURIComponent(Object.prototype.toString.call(args[key]) === '[object Array]' ? safeJSONStringify(args[key]) : args[key]); + } + } + return params; +}; + +/** + * Compute the headers for a request + * + * @param [string] options.additionalUA semi-colon separated string with other user agents to add + * @param [boolean=true] options.withApiKey Send the api key as a header + * @param [Object] options.headers Extra headers to send + */ +AlgoliaSearchCore.prototype._computeRequestHeaders = function(options) { + var forEach = __webpack_require__(/*! foreach */ "../../node_modules/foreach/index.js"); + + var ua = options.additionalUA ? + this._ua + '; ' + options.additionalUA : + this._ua; + + var requestHeaders = { + 'x-algolia-agent': ua, + 'x-algolia-application-id': this.applicationID + }; + + // browser will inline headers in the url, node.js will use http headers + // but in some situations, the API KEY will be too long (big secured API keys) + // so if the request is a POST and the KEY is very long, we will be asked to not put + // it into headers but in the JSON body + if (options.withApiKey !== false) { + requestHeaders['x-algolia-api-key'] = this.apiKey; + } + + if (this.userToken) { + requestHeaders['x-algolia-usertoken'] = this.userToken; + } + + if (this.securityTags) { + requestHeaders['x-algolia-tagfilters'] = this.securityTags; + } + + forEach(this.extraHeaders, function addToRequestHeaders(value, key) { + requestHeaders[key] = value; + }); + + if (options.headers) { + forEach(options.headers, function addToRequestHeaders(value, key) { + requestHeaders[key] = value; + }); + } + + return requestHeaders; +}; + +/** + * Search through multiple indices at the same time + * @param {Object[]} queries An array of queries you want to run. + * @param {string} queries[].indexName The index name you want to target + * @param {string} [queries[].query] The query to issue on this index. Can also be passed into `params` + * @param {Object} queries[].params Any search param like hitsPerPage, .. + * @param {Function} callback Callback to be called + * @return {Promise|undefined} Returns a promise if no callback given + */ +AlgoliaSearchCore.prototype.search = function(queries, opts, callback) { + var isArray = __webpack_require__(/*! isarray */ "../../node_modules/isarray/index.js"); + var map = __webpack_require__(/*! ./map.js */ "../../node_modules/algoliasearch/src/map.js"); + + var usage = 'Usage: client.search(arrayOfQueries[, callback])'; + + if (!isArray(queries)) { + throw new Error(usage); + } + + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } else if (opts === undefined) { + opts = {}; + } + + var client = this; + + var postObj = { + requests: map(queries, function prepareRequest(query) { + var params = ''; + + // allow query.query + // so we are mimicing the index.search(query, params) method + // {indexName:, query:, params:} + if (query.query !== undefined) { + params += 'query=' + encodeURIComponent(query.query); + } + + return { + indexName: query.indexName, + params: client._getSearchParams(query.params, params) + }; + }) + }; + + var JSONPParams = map(postObj.requests, function prepareJSONPParams(request, requestId) { + return requestId + '=' + + encodeURIComponent( + '/1/indexes/' + encodeURIComponent(request.indexName) + '?' + + request.params + ); + }).join('&'); + + var url = '/1/indexes/*/queries'; + + if (opts.strategy !== undefined) { + postObj.strategy = opts.strategy; + } + + return this._jsonRequest({ + cache: this.cache, + method: 'POST', + url: url, + body: postObj, + hostType: 'read', + fallback: { + method: 'GET', + url: '/1/indexes/*', + body: { + params: JSONPParams + } + }, + callback: callback + }); +}; + +/** +* Search for facet values +* https://www.algolia.com/doc/rest-api/search#search-for-facet-values +* This is the top-level API for SFFV. +* +* @param {object[]} queries An array of queries to run. +* @param {string} queries[].indexName Index name, name of the index to search. +* @param {object} queries[].params Query parameters. +* @param {string} queries[].params.facetName Facet name, name of the attribute to search for values in. +* Must be declared as a facet +* @param {string} queries[].params.facetQuery Query for the facet search +* @param {string} [queries[].params.*] Any search parameter of Algolia, +* see https://www.algolia.com/doc/api-client/javascript/search#search-parameters +* Pagination is not supported. The page and hitsPerPage parameters will be ignored. +*/ +AlgoliaSearchCore.prototype.searchForFacetValues = function(queries) { + var isArray = __webpack_require__(/*! isarray */ "../../node_modules/isarray/index.js"); + var map = __webpack_require__(/*! ./map.js */ "../../node_modules/algoliasearch/src/map.js"); + + var usage = 'Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])'; // eslint-disable-line max-len + + if (!isArray(queries)) { + throw new Error(usage); + } + + var client = this; + + return client._promise.all(map(queries, function performQuery(query) { + if ( + !query || + query.indexName === undefined || + query.params.facetName === undefined || + query.params.facetQuery === undefined + ) { + throw new Error(usage); + } + + var clone = __webpack_require__(/*! ./clone.js */ "../../node_modules/algoliasearch/src/clone.js"); + var omit = __webpack_require__(/*! ./omit.js */ "../../node_modules/algoliasearch/src/omit.js"); + + var indexName = query.indexName; + var params = query.params; + + var facetName = params.facetName; + var filteredParams = omit(clone(params), function(keyName) { + return keyName === 'facetName'; + }); + var searchParameters = client._getSearchParams(filteredParams, ''); + + return client._jsonRequest({ + cache: client.cache, + method: 'POST', + url: + '/1/indexes/' + + encodeURIComponent(indexName) + + '/facets/' + + encodeURIComponent(facetName) + + '/query', + hostType: 'read', + body: {params: searchParameters} + }); + })); +}; + +/** + * Set the extra security tagFilters header + * @param {string|array} tags The list of tags defining the current security filters + */ +AlgoliaSearchCore.prototype.setSecurityTags = function(tags) { + if (Object.prototype.toString.call(tags) === '[object Array]') { + var strTags = []; + for (var i = 0; i < tags.length; ++i) { + if (Object.prototype.toString.call(tags[i]) === '[object Array]') { + var oredTags = []; + for (var j = 0; j < tags[i].length; ++j) { + oredTags.push(tags[i][j]); + } + strTags.push('(' + oredTags.join(',') + ')'); + } else { + strTags.push(tags[i]); + } + } + tags = strTags.join(','); + } + + this.securityTags = tags; +}; + +/** + * Set the extra user token header + * @param {string} userToken The token identifying a uniq user (used to apply rate limits) + */ +AlgoliaSearchCore.prototype.setUserToken = function(userToken) { + this.userToken = userToken; +}; + +/** + * Clear all queries in client's cache + * @return undefined + */ +AlgoliaSearchCore.prototype.clearCache = function() { + this.cache = {}; +}; + +/** +* Set the number of milliseconds a request can take before automatically being terminated. +* @deprecated +* @param {Number} milliseconds +*/ +AlgoliaSearchCore.prototype.setRequestTimeout = function(milliseconds) { + if (milliseconds) { + this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds; + } +}; + +/** +* Set the three different (connect, read, write) timeouts to be used when requesting +* @param {Object} timeouts +*/ +AlgoliaSearchCore.prototype.setTimeouts = function(timeouts) { + this._timeouts = timeouts; +}; + +/** +* Get the three different (connect, read, write) timeouts to be used when requesting +* @param {Object} timeouts +*/ +AlgoliaSearchCore.prototype.getTimeouts = function() { + return this._timeouts; +}; + +AlgoliaSearchCore.prototype._getAppIdData = function() { + var data = store.get(this.applicationID); + if (data !== null) this._cacheAppIdData(data); + return data; +}; + +AlgoliaSearchCore.prototype._setAppIdData = function(data) { + data.lastChange = (new Date()).getTime(); + this._cacheAppIdData(data); + return store.set(this.applicationID, data); +}; + +AlgoliaSearchCore.prototype._checkAppIdData = function() { + var data = this._getAppIdData(); + var now = (new Date()).getTime(); + if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) { + return this._resetInitialAppIdData(data); + } + + return data; +}; + +AlgoliaSearchCore.prototype._resetInitialAppIdData = function(data) { + var newData = data || {}; + newData.hostIndexes = {read: 0, write: 0}; + newData.timeoutMultiplier = 1; + newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]); + return this._setAppIdData(newData); +}; + +AlgoliaSearchCore.prototype._cacheAppIdData = function(data) { + this._hostIndexes = data.hostIndexes; + this._timeoutMultiplier = data.timeoutMultiplier; + this._shuffleResult = data.shuffleResult; +}; + +AlgoliaSearchCore.prototype._partialAppIdDataUpdate = function(newData) { + var foreach = __webpack_require__(/*! foreach */ "../../node_modules/foreach/index.js"); + var currentData = this._getAppIdData(); + foreach(newData, function(value, key) { + currentData[key] = value; + }); + + return this._setAppIdData(currentData); +}; + +AlgoliaSearchCore.prototype._getHostByType = function(hostType) { + return this.hosts[hostType][this._getHostIndexByType(hostType)]; +}; + +AlgoliaSearchCore.prototype._getTimeoutMultiplier = function() { + return this._timeoutMultiplier; +}; + +AlgoliaSearchCore.prototype._getHostIndexByType = function(hostType) { + return this._hostIndexes[hostType]; +}; + +AlgoliaSearchCore.prototype._setHostIndexByType = function(hostIndex, hostType) { + var clone = __webpack_require__(/*! ./clone */ "../../node_modules/algoliasearch/src/clone.js"); + var newHostIndexes = clone(this._hostIndexes); + newHostIndexes[hostType] = hostIndex; + this._partialAppIdDataUpdate({hostIndexes: newHostIndexes}); + return hostIndex; +}; + +AlgoliaSearchCore.prototype._incrementHostIndex = function(hostType) { + return this._setHostIndexByType( + (this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length, hostType + ); +}; + +AlgoliaSearchCore.prototype._incrementTimeoutMultipler = function() { + var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4); + return this._partialAppIdDataUpdate({timeoutMultiplier: timeoutMultiplier}); +}; + +AlgoliaSearchCore.prototype._getTimeoutsForRequest = function(hostType) { + return { + connect: this._timeouts.connect * this._timeoutMultiplier, + complete: this._timeouts[hostType] * this._timeoutMultiplier + }; +}; + +function prepareHost(protocol) { + return function prepare(host) { + return protocol + '//' + host.toLowerCase(); + }; +} + +// Prototype.js < 1.7, a widely used library, defines a weird +// Array.prototype.toJSON function that will fail to stringify our content +// appropriately +// refs: +// - https://groups.google.com/forum/#!topic/prototype-core/E-SAVvV_V9Q +// - https://github.com/sstephenson/prototype/commit/038a2985a70593c1a86c230fadbdfe2e4898a48c +// - http://stackoverflow.com/a/3148441/147079 +function safeJSONStringify(obj) { + /* eslint no-extend-native:0 */ + + if (Array.prototype.toJSON === undefined) { + return JSON.stringify(obj); + } + + var toJSON = Array.prototype.toJSON; + delete Array.prototype.toJSON; + var out = JSON.stringify(obj); + Array.prototype.toJSON = toJSON; + + return out; +} + +function shuffle(array) { + var currentIndex = array.length; + var temporaryValue; + var randomIndex; + + // While there remain elements to shuffle... + while (currentIndex !== 0) { + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; + + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; +} + +function removeCredentials(headers) { + var newHeaders = {}; + + for (var headerName in headers) { + if (Object.prototype.hasOwnProperty.call(headers, headerName)) { + var value; + + if (headerName === 'x-algolia-api-key' || headerName === 'x-algolia-application-id') { + value = '**hidden for security purposes**'; + } else { + value = headers[headerName]; + } + + newHeaders[headerName] = value; + } + } + + return newHeaders; +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/IndexCore.js" +/*!*********************************************************!*\ + !*** ../../node_modules/algoliasearch/src/IndexCore.js ***! + \*********************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +var buildSearchMethod = __webpack_require__(/*! ./buildSearchMethod.js */ "../../node_modules/algoliasearch/src/buildSearchMethod.js"); +var deprecate = __webpack_require__(/*! ./deprecate.js */ "../../node_modules/algoliasearch/src/deprecate.js"); +var deprecatedMessage = __webpack_require__(/*! ./deprecatedMessage.js */ "../../node_modules/algoliasearch/src/deprecatedMessage.js"); + +module.exports = IndexCore; + +/* +* Index class constructor. +* You should not use this method directly but use initIndex() function +*/ +function IndexCore(algoliasearch, indexName) { + this.indexName = indexName; + this.as = algoliasearch; + this.typeAheadArgs = null; + this.typeAheadValueOption = null; + + // make sure every index instance has it's own cache + this.cache = {}; +} + +/* +* Clear all queries in cache +*/ +IndexCore.prototype.clearCache = function() { + this.cache = {}; +}; + +/* +* Search inside the index using XMLHttpRequest request (Using a POST query to +* minimize number of OPTIONS queries: Cross-Origin Resource Sharing). +* +* @param {string} [query] the full text query +* @param {object} [args] (optional) if set, contains an object with query parameters: +* - page: (integer) Pagination parameter used to select the page to retrieve. +* Page is zero-based and defaults to 0. Thus, +* to retrieve the 10th page you need to set page=9 +* - hitsPerPage: (integer) Pagination parameter used to select the number of hits per page. Defaults to 20. +* - attributesToRetrieve: a string that contains the list of object attributes +* you want to retrieve (let you minimize the answer size). +* Attributes are separated with a comma (for example "name,address"). +* You can also use an array (for example ["name","address"]). +* By default, all attributes are retrieved. You can also use '*' to retrieve all +* values when an attributesToRetrieve setting is specified for your index. +* - attributesToHighlight: a string that contains the list of attributes you +* want to highlight according to the query. +* Attributes are separated by a comma. You can also use an array (for example ["name","address"]). +* If an attribute has no match for the query, the raw value is returned. +* By default all indexed text attributes are highlighted. +* You can use `*` if you want to highlight all textual attributes. +* Numerical attributes are not highlighted. +* A matchLevel is returned for each highlighted attribute and can contain: +* - full: if all the query terms were found in the attribute, +* - partial: if only some of the query terms were found, +* - none: if none of the query terms were found. +* - attributesToSnippet: a string that contains the list of attributes to snippet alongside +* the number of words to return (syntax is `attributeName:nbWords`). +* Attributes are separated by a comma (Example: attributesToSnippet=name:10,content:10). +* You can also use an array (Example: attributesToSnippet: ['name:10','content:10']). +* By default no snippet is computed. +* - minWordSizefor1Typo: the minimum number of characters in a query word to accept one typo in this word. +* Defaults to 3. +* - minWordSizefor2Typos: the minimum number of characters in a query word +* to accept two typos in this word. Defaults to 7. +* - getRankingInfo: if set to 1, the result hits will contain ranking +* information in _rankingInfo attribute. +* - aroundLatLng: search for entries around a given +* latitude/longitude (specified as two floats separated by a comma). +* For example aroundLatLng=47.316669,5.016670). +* You can specify the maximum distance in meters with the aroundRadius parameter (in meters) +* and the precision for ranking with aroundPrecision +* (for example if you set aroundPrecision=100, two objects that are distant of +* less than 100m will be considered as identical for "geo" ranking parameter). +* At indexing, you should specify geoloc of an object with the _geoloc attribute +* (in the form {"_geoloc":{"lat":48.853409, "lng":2.348800}}) +* - insideBoundingBox: search entries inside a given area defined by the two extreme points +* of a rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng). +* For example insideBoundingBox=47.3165,4.9665,47.3424,5.0201). +* At indexing, you should specify geoloc of an object with the _geoloc attribute +* (in the form {"_geoloc":{"lat":48.853409, "lng":2.348800}}) +* - numericFilters: a string that contains the list of numeric filters you want to +* apply separated by a comma. +* The syntax of one filter is `attributeName` followed by `operand` followed by `value`. +* Supported operands are `<`, `<=`, `=`, `>` and `>=`. +* You can have multiple conditions on one attribute like for example numericFilters=price>100,price<1000. +* You can also use an array (for example numericFilters: ["price>100","price<1000"]). +* - tagFilters: filter the query by a set of tags. You can AND tags by separating them by commas. +* To OR tags, you must add parentheses. For example, tags=tag1,(tag2,tag3) means tag1 AND (tag2 OR tag3). +* You can also use an array, for example tagFilters: ["tag1",["tag2","tag3"]] +* means tag1 AND (tag2 OR tag3). +* At indexing, tags should be added in the _tags** attribute +* of objects (for example {"_tags":["tag1","tag2"]}). +* - facetFilters: filter the query by a list of facets. +* Facets are separated by commas and each facet is encoded as `attributeName:value`. +* For example: `facetFilters=category:Book,author:John%20Doe`. +* You can also use an array (for example `["category:Book","author:John%20Doe"]`). +* - facets: List of object attributes that you want to use for faceting. +* Comma separated list: `"category,author"` or array `['category','author']` +* Only attributes that have been added in **attributesForFaceting** index setting +* can be used in this parameter. +* You can also use `*` to perform faceting on all attributes specified in **attributesForFaceting**. +* - queryType: select how the query words are interpreted, it can be one of the following value: +* - prefixAll: all query words are interpreted as prefixes, +* - prefixLast: only the last word is interpreted as a prefix (default behavior), +* - prefixNone: no query word is interpreted as a prefix. This option is not recommended. +* - optionalWords: a string that contains the list of words that should +* be considered as optional when found in the query. +* Comma separated and array are accepted. +* - distinct: If set to 1, enable the distinct feature (disabled by default) +* if the attributeForDistinct index setting is set. +* This feature is similar to the SQL "distinct" keyword: when enabled +* in a query with the distinct=1 parameter, +* all hits containing a duplicate value for the attributeForDistinct attribute are removed from results. +* For example, if the chosen attribute is show_name and several hits have +* the same value for show_name, then only the best +* one is kept and others are removed. +* - restrictSearchableAttributes: List of attributes you want to use for +* textual search (must be a subset of the attributesToIndex index setting) +* either comma separated or as an array +* @param {function} [callback] the result callback called with two arguments: +* error: null or Error('message'). If false, the content contains the error. +* content: the server answer that contains the list of results. +*/ +IndexCore.prototype.search = buildSearchMethod('query'); + +/* +* -- BETA -- +* Search a record similar to the query inside the index using XMLHttpRequest request (Using a POST query to +* minimize number of OPTIONS queries: Cross-Origin Resource Sharing). +* +* @param {string} [query] the similar query +* @param {object} [args] (optional) if set, contains an object with query parameters. +* All search parameters are supported (see search function), restrictSearchableAttributes and facetFilters +* are the two most useful to restrict the similar results and get more relevant content +*/ +IndexCore.prototype.similarSearch = deprecate( + buildSearchMethod('similarQuery'), + deprecatedMessage( + 'index.similarSearch(query[, callback])', + 'index.search({ similarQuery: query }[, callback])' + ) +); + +/* +* Browse index content. The response content will have a `cursor` property that you can use +* to browse subsequent pages for this query. Use `index.browseFrom(cursor)` when you want. +* +* @param {string} query - The full text query +* @param {Object} [queryParameters] - Any search query parameter +* @param {Function} [callback] - The result callback called with two arguments +* error: null or Error('message') +* content: the server answer with the browse result +* @return {Promise|undefined} Returns a promise if no callback given +* @example +* index.browse('cool songs', { +* tagFilters: 'public,comments', +* hitsPerPage: 500 +* }, callback); +* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation} +*/ +IndexCore.prototype.browse = function(query, queryParameters, callback) { + var merge = __webpack_require__(/*! ./merge.js */ "../../node_modules/algoliasearch/src/merge.js"); + + var indexObj = this; + + var page; + var hitsPerPage; + + // we check variadic calls that are not the one defined + // .browse()/.browse(fn) + // => page = 0 + if (arguments.length === 0 || arguments.length === 1 && typeof arguments[0] === 'function') { + page = 0; + callback = arguments[0]; + query = undefined; + } else if (typeof arguments[0] === 'number') { + // .browse(2)/.browse(2, 10)/.browse(2, fn)/.browse(2, 10, fn) + page = arguments[0]; + if (typeof arguments[1] === 'number') { + hitsPerPage = arguments[1]; + } else if (typeof arguments[1] === 'function') { + callback = arguments[1]; + hitsPerPage = undefined; + } + query = undefined; + queryParameters = undefined; + } else if (typeof arguments[0] === 'object') { + // .browse(queryParameters)/.browse(queryParameters, cb) + if (typeof arguments[1] === 'function') { + callback = arguments[1]; + } + queryParameters = arguments[0]; + query = undefined; + } else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') { + // .browse(query, cb) + callback = arguments[1]; + queryParameters = undefined; + } + + // otherwise it's a .browse(query)/.browse(query, queryParameters)/.browse(query, queryParameters, cb) + + // get search query parameters combining various possible calls + // to .browse(); + queryParameters = merge({}, queryParameters || {}, { + page: page, + hitsPerPage: hitsPerPage, + query: query + }); + + var params = this.as._getSearchParams(queryParameters, ''); + + return this.as._jsonRequest({ + method: 'POST', + url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/browse', + body: {params: params}, + hostType: 'read', + callback: callback + }); +}; + +/* +* Continue browsing from a previous position (cursor), obtained via a call to `.browse()`. +* +* @param {string} query - The full text query +* @param {Object} [queryParameters] - Any search query parameter +* @param {Function} [callback] - The result callback called with two arguments +* error: null or Error('message') +* content: the server answer with the browse result +* @return {Promise|undefined} Returns a promise if no callback given +* @example +* index.browseFrom('14lkfsakl32', callback); +* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation} +*/ +IndexCore.prototype.browseFrom = function(cursor, callback) { + return this.as._jsonRequest({ + method: 'POST', + url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/browse', + body: {cursor: cursor}, + hostType: 'read', + callback: callback + }); +}; + +/* +* Search for facet values +* https://www.algolia.com/doc/rest-api/search#search-for-facet-values +* +* @param {string} params.facetName Facet name, name of the attribute to search for values in. +* Must be declared as a facet +* @param {string} params.facetQuery Query for the facet search +* @param {string} [params.*] Any search parameter of Algolia, +* see https://www.algolia.com/doc/api-client/javascript/search#search-parameters +* Pagination is not supported. The page and hitsPerPage parameters will be ignored. +* @param callback (optional) +*/ +IndexCore.prototype.searchForFacetValues = function(params, callback) { + var clone = __webpack_require__(/*! ./clone.js */ "../../node_modules/algoliasearch/src/clone.js"); + var omit = __webpack_require__(/*! ./omit.js */ "../../node_modules/algoliasearch/src/omit.js"); + var usage = 'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])'; + + if (params.facetName === undefined || params.facetQuery === undefined) { + throw new Error(usage); + } + + var facetName = params.facetName; + var filteredParams = omit(clone(params), function(keyName) { + return keyName === 'facetName'; + }); + var searchParameters = this.as._getSearchParams(filteredParams, ''); + + return this.as._jsonRequest({ + method: 'POST', + url: '/1/indexes/' + + encodeURIComponent(this.indexName) + '/facets/' + encodeURIComponent(facetName) + '/query', + hostType: 'read', + body: {params: searchParameters}, + callback: callback + }); +}; + +IndexCore.prototype.searchFacet = deprecate(function(params, callback) { + return this.searchForFacetValues(params, callback); +}, deprecatedMessage( + 'index.searchFacet(params[, callback])', + 'index.searchForFacetValues(params[, callback])' +)); + +IndexCore.prototype._search = function(params, url, callback, additionalUA) { + return this.as._jsonRequest({ + cache: this.cache, + method: 'POST', + url: url || '/1/indexes/' + encodeURIComponent(this.indexName) + '/query', + body: {params: params}, + hostType: 'read', + fallback: { + method: 'GET', + url: '/1/indexes/' + encodeURIComponent(this.indexName), + body: {params: params} + }, + callback: callback, + additionalUA: additionalUA + }); +}; + +/* +* Get an object from this index +* +* @param objectID the unique identifier of the object to retrieve +* @param attrs (optional) if set, contains the array of attribute names to retrieve +* @param callback (optional) the result callback called with two arguments +* error: null or Error('message') +* content: the object to retrieve or the error message if a failure occurred +*/ +IndexCore.prototype.getObject = function(objectID, attrs, callback) { + var indexObj = this; + + if (arguments.length === 1 || typeof attrs === 'function') { + callback = attrs; + attrs = undefined; + } + + var params = ''; + if (attrs !== undefined) { + params = '?attributes='; + for (var i = 0; i < attrs.length; ++i) { + if (i !== 0) { + params += ','; + } + params += attrs[i]; + } + } + + return this.as._jsonRequest({ + method: 'GET', + url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(objectID) + params, + hostType: 'read', + callback: callback + }); +}; + +/* +* Get several objects from this index +* +* @param objectIDs the array of unique identifier of objects to retrieve +*/ +IndexCore.prototype.getObjects = function(objectIDs, attributesToRetrieve, callback) { + var isArray = __webpack_require__(/*! isarray */ "../../node_modules/isarray/index.js"); + var map = __webpack_require__(/*! ./map.js */ "../../node_modules/algoliasearch/src/map.js"); + + var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])'; + + if (!isArray(objectIDs)) { + throw new Error(usage); + } + + var indexObj = this; + + if (arguments.length === 1 || typeof attributesToRetrieve === 'function') { + callback = attributesToRetrieve; + attributesToRetrieve = undefined; + } + + var body = { + requests: map(objectIDs, function prepareRequest(objectID) { + var request = { + indexName: indexObj.indexName, + objectID: objectID + }; + + if (attributesToRetrieve) { + request.attributesToRetrieve = attributesToRetrieve.join(','); + } + + return request; + }) + }; + + return this.as._jsonRequest({ + method: 'POST', + url: '/1/indexes/*/objects', + hostType: 'read', + body: body, + callback: callback + }); +}; + +IndexCore.prototype.as = null; +IndexCore.prototype.indexName = null; +IndexCore.prototype.typeAheadArgs = null; +IndexCore.prototype.typeAheadValueOption = null; + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/browser/builds/algoliasearchLite.js" +/*!********************************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/browser/builds/algoliasearchLite.js ***! + \********************************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +var AlgoliaSearchCore = __webpack_require__(/*! ../../AlgoliaSearchCore.js */ "../../node_modules/algoliasearch/src/AlgoliaSearchCore.js"); +var createAlgoliasearch = __webpack_require__(/*! ../createAlgoliasearch.js */ "../../node_modules/algoliasearch/src/browser/createAlgoliasearch.js"); + +module.exports = createAlgoliasearch(AlgoliaSearchCore, 'Browser (lite)'); + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/browser/createAlgoliasearch.js" +/*!***************************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/browser/createAlgoliasearch.js ***! + \***************************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +var global = __webpack_require__(/*! global */ "../../node_modules/global/window.js"); +var Promise = global.Promise || (__webpack_require__(/*! es6-promise */ "../../node_modules/es6-promise/dist/es6-promise.js").Promise); + +// This is the standalone browser build entry point +// Browser implementation of the Algolia Search JavaScript client, +// using XMLHttpRequest, XDomainRequest and JSONP as fallback +module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) { + var inherits = __webpack_require__(/*! inherits */ "../../node_modules/inherits/inherits_browser.js"); + var errors = __webpack_require__(/*! ../errors */ "../../node_modules/algoliasearch/src/errors.js"); + var inlineHeaders = __webpack_require__(/*! ./inline-headers */ "../../node_modules/algoliasearch/src/browser/inline-headers.js"); + var jsonpRequest = __webpack_require__(/*! ./jsonp-request */ "../../node_modules/algoliasearch/src/browser/jsonp-request.js"); + var places = __webpack_require__(/*! ../places.js */ "../../node_modules/algoliasearch/src/places.js"); + uaSuffix = uaSuffix || ''; + + if (false) // removed by dead control flow +{} + + function algoliasearch(applicationID, apiKey, opts) { + var cloneDeep = __webpack_require__(/*! ../clone.js */ "../../node_modules/algoliasearch/src/clone.js"); + + opts = cloneDeep(opts || {}); + + opts._ua = opts._ua || algoliasearch.ua; + + return new AlgoliaSearchBrowser(applicationID, apiKey, opts); + } + + algoliasearch.version = __webpack_require__(/*! ../version.js */ "../../node_modules/algoliasearch/src/version.js"); + + algoliasearch.ua = + 'Algolia for JavaScript (' + algoliasearch.version + '); ' + uaSuffix; + + algoliasearch.initPlaces = places(algoliasearch); + + // we expose into window no matter how we are used, this will allow + // us to easily debug any website running algolia + global.__algolia = { + debug: __webpack_require__(/*! debug */ "../../node_modules/algoliasearch/node_modules/debug/src/browser.js"), + algoliasearch: algoliasearch + }; + + var support = { + hasXMLHttpRequest: 'XMLHttpRequest' in global, + hasXDomainRequest: 'XDomainRequest' in global + }; + + if (support.hasXMLHttpRequest) { + support.cors = 'withCredentials' in new XMLHttpRequest(); + } + + function AlgoliaSearchBrowser() { + // call AlgoliaSearch constructor + AlgoliaSearch.apply(this, arguments); + } + + inherits(AlgoliaSearchBrowser, AlgoliaSearch); + + AlgoliaSearchBrowser.prototype._request = function request(url, opts) { + return new Promise(function wrapRequest(resolve, reject) { + // no cors or XDomainRequest, no request + if (!support.cors && !support.hasXDomainRequest) { + // very old browser, not supported + reject(new errors.Network('CORS not supported')); + return; + } + + url = inlineHeaders(url, opts.headers); + + var body = opts.body; + var req = support.cors ? new XMLHttpRequest() : new XDomainRequest(); + var reqTimeout; + var timedOut; + var connected = false; + + reqTimeout = setTimeout(onTimeout, opts.timeouts.connect); + // we set an empty onprogress listener + // so that XDomainRequest on IE9 is not aborted + // refs: + // - https://github.com/algolia/algoliasearch-client-js/issues/76 + // - https://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment + req.onprogress = onProgress; + if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange; + req.onload = onLoad; + req.onerror = onError; + + // do not rely on default XHR async flag, as some analytics code like hotjar + // breaks it and set it to false by default + if (req instanceof XMLHttpRequest) { + req.open(opts.method, url, true); + + // The Analytics API never accepts Auth headers as query string + // this option exists specifically for them. + if (opts.forceAuthHeaders) { + req.setRequestHeader( + 'x-algolia-application-id', + opts.headers['x-algolia-application-id'] + ); + req.setRequestHeader( + 'x-algolia-api-key', + opts.headers['x-algolia-api-key'] + ); + } + } else { + req.open(opts.method, url); + } + + // headers are meant to be sent after open + if (support.cors) { + if (body) { + if (opts.method === 'POST') { + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests + req.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); + } else { + req.setRequestHeader('content-type', 'application/json'); + } + } + req.setRequestHeader('accept', 'application/json'); + } + + if (body) { + req.send(body); + } else { + req.send(); + } + + // event object not received in IE8, at least + // but we do not use it, still important to note + function onLoad(/* event */) { + // When browser does not supports req.timeout, we can + // have both a load and timeout event, since handled by a dumb setTimeout + if (timedOut) { + return; + } + + clearTimeout(reqTimeout); + + var out; + + try { + out = { + body: JSON.parse(req.responseText), + responseText: req.responseText, + statusCode: req.status, + // XDomainRequest does not have any response headers + headers: req.getAllResponseHeaders && req.getAllResponseHeaders() || {} + }; + } catch (e) { + out = new errors.UnparsableJSON({ + more: req.responseText + }); + } + + if (out instanceof errors.UnparsableJSON) { + reject(out); + } else { + resolve(out); + } + } + + function onError(event) { + if (timedOut) { + return; + } + + clearTimeout(reqTimeout); + + // error event is trigerred both with XDR/XHR on: + // - DNS error + // - unallowed cross domain request + reject( + new errors.Network({ + more: event + }) + ); + } + + function onTimeout() { + timedOut = true; + req.abort(); + + reject(new errors.RequestTimeout()); + } + + function onConnect() { + connected = true; + clearTimeout(reqTimeout); + reqTimeout = setTimeout(onTimeout, opts.timeouts.complete); + } + + function onProgress() { + if (!connected) onConnect(); + } + + function onReadyStateChange() { + if (!connected && req.readyState > 1) onConnect(); + } + }); + }; + + AlgoliaSearchBrowser.prototype._request.fallback = function requestFallback(url, opts) { + url = inlineHeaders(url, opts.headers); + + return new Promise(function wrapJsonpRequest(resolve, reject) { + jsonpRequest(url, opts, function jsonpRequestDone(err, content) { + if (err) { + reject(err); + return; + } + + resolve(content); + }); + }); + }; + + AlgoliaSearchBrowser.prototype._promise = { + reject: function rejectPromise(val) { + return Promise.reject(val); + }, + resolve: function resolvePromise(val) { + return Promise.resolve(val); + }, + delay: function delayPromise(ms) { + return new Promise(function resolveOnTimeout(resolve/* , reject*/) { + setTimeout(resolve, ms); + }); + }, + all: function all(promises) { + return Promise.all(promises); + } + }; + + return algoliasearch; +}; + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/browser/inline-headers.js" +/*!**********************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/browser/inline-headers.js ***! + \**********************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +module.exports = inlineHeaders; + +var encode = __webpack_require__(/*! querystring-es3/encode */ "../../node_modules/querystring-es3/encode.js"); + +function inlineHeaders(url, headers) { + if (/\?/.test(url)) { + url += '&'; + } else { + url += '?'; + } + + return url + encode(headers); +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/browser/jsonp-request.js" +/*!*********************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/browser/jsonp-request.js ***! + \*********************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +module.exports = jsonpRequest; + +var errors = __webpack_require__(/*! ../errors */ "../../node_modules/algoliasearch/src/errors.js"); + +var JSONPCounter = 0; + +function jsonpRequest(url, opts, cb) { + if (opts.method !== 'GET') { + cb(new Error('Method ' + opts.method + ' ' + url + ' is not supported by JSONP.')); + return; + } + + opts.debug('JSONP: start'); + + var cbCalled = false; + var timedOut = false; + + JSONPCounter += 1; + var head = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + var cbName = 'algoliaJSONP_' + JSONPCounter; + var done = false; + + window[cbName] = function(data) { + removeGlobals(); + + if (timedOut) { + opts.debug('JSONP: Late answer, ignoring'); + return; + } + + cbCalled = true; + + clean(); + + cb(null, { + body: data, + responseText: JSON.stringify(data)/* , + // We do not send the statusCode, there's no statusCode in JSONP, it will be + // computed using data.status && data.message like with XDR + statusCode*/ + }); + }; + + // add callback by hand + url += '&callback=' + cbName; + + // add body params manually + if (opts.jsonBody && opts.jsonBody.params) { + url += '&' + opts.jsonBody.params; + } + + var ontimeout = setTimeout(timeout, opts.timeouts.complete); + + // script onreadystatechange needed only for + // <= IE8 + // https://github.com/angular/angular.js/issues/4523 + script.onreadystatechange = readystatechange; + script.onload = success; + script.onerror = error; + + script.async = true; + script.defer = true; + script.src = url; + head.appendChild(script); + + function success() { + opts.debug('JSONP: success'); + + if (done || timedOut) { + return; + } + + done = true; + + // script loaded but did not call the fn => script loading error + if (!cbCalled) { + opts.debug('JSONP: Fail. Script loaded but did not call the callback'); + clean(); + cb(new errors.JSONPScriptFail()); + } + } + + function readystatechange() { + if (this.readyState === 'loaded' || this.readyState === 'complete') { + success(); + } + } + + function clean() { + clearTimeout(ontimeout); + script.onload = null; + script.onreadystatechange = null; + script.onerror = null; + head.removeChild(script); + } + + function removeGlobals() { + try { + delete window[cbName]; + delete window[cbName + '_loaded']; + } catch (e) { + window[cbName] = window[cbName + '_loaded'] = undefined; + } + } + + function timeout() { + opts.debug('JSONP: Script timeout'); + timedOut = true; + clean(); + cb(new errors.RequestTimeout()); + } + + function error() { + opts.debug('JSONP: Script error'); + + if (done || timedOut) { + return; + } + + clean(); + cb(new errors.JSONPScriptError()); + } +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/buildSearchMethod.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/buildSearchMethod.js ***! + \*****************************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +module.exports = buildSearchMethod; + +var errors = __webpack_require__(/*! ./errors.js */ "../../node_modules/algoliasearch/src/errors.js"); + +/** + * Creates a search method to be used in clients + * @param {string} queryParam the name of the attribute used for the query + * @param {string} url the url + * @return {function} the search method + */ +function buildSearchMethod(queryParam, url) { + /** + * The search method. Prepares the data and send the query to Algolia. + * @param {string} query the string used for query search + * @param {object} args additional parameters to send with the search + * @param {function} [callback] the callback to be called with the client gets the answer + * @return {undefined|Promise} If the callback is not provided then this methods returns a Promise + */ + return function search(query, args, callback) { + // warn V2 users on how to search + if (typeof query === 'function' && typeof args === 'object' || + typeof callback === 'object') { + // .search(query, params, cb) + // .search(cb, params) + throw new errors.AlgoliaSearchError('index.search usage is index.search(query, params, cb)'); + } + + // Normalizing the function signature + if (arguments.length === 0 || typeof query === 'function') { + // Usage : .search(), .search(cb) + callback = query; + query = ''; + } else if (arguments.length === 1 || typeof args === 'function') { + // Usage : .search(query/args), .search(query, cb) + callback = args; + args = undefined; + } + // At this point we have 3 arguments with values + + // Usage : .search(args) // careful: typeof null === 'object' + if (typeof query === 'object' && query !== null) { + args = query; + query = undefined; + } else if (query === undefined || query === null) { // .search(undefined/null) + query = ''; + } + + var params = ''; + + if (query !== undefined) { + params += queryParam + '=' + encodeURIComponent(query); + } + + var additionalUA; + if (args !== undefined) { + if (args.additionalUA) { + additionalUA = args.additionalUA; + delete args.additionalUA; + } + // `_getSearchParams` will augment params, do not be fooled by the = versus += from previous if + params = this.as._getSearchParams(args, params); + } + + + return this._search(params, url, callback, additionalUA); + }; +} + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/clone.js" +/*!*****************************************************!*\ + !*** ../../node_modules/algoliasearch/src/clone.js ***! + \*****************************************************/ +(module) { + +module.exports = function clone(obj) { + return JSON.parse(JSON.stringify(obj)); +}; + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/deprecate.js" +/*!*********************************************************!*\ + !*** ../../node_modules/algoliasearch/src/deprecate.js ***! + \*********************************************************/ +(module) { + +module.exports = function deprecate(fn, message) { + var warned = false; + + function deprecated() { + if (!warned) { + /* eslint no-console:0 */ + console.warn(message); + warned = true; + } + + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/deprecatedMessage.js" +/*!*****************************************************************!*\ + !*** ../../node_modules/algoliasearch/src/deprecatedMessage.js ***! + \*****************************************************************/ +(module) { + +module.exports = function deprecatedMessage(previousUsage, newUsage) { + var githubAnchorLink = previousUsage.toLowerCase() + .replace(/[\.\(\)]/g, ''); + + return 'algoliasearch: `' + previousUsage + '` was replaced by `' + newUsage + + '`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#' + githubAnchorLink; +}; + + +/***/ }, + +/***/ "../../node_modules/algoliasearch/src/errors.js" +/*!******************************************************!*\ + !*** ../../node_modules/algoliasearch/src/errors.js ***! + \******************************************************/ +(module, __unused_webpack_exports, __webpack_require__) { + +"use strict"; + + +// This file hosts our error definitions +// We use custom error "types" so that we can act on them when we need it +// e.g.: if error instanceof errors.UnparsableJSON then.. + +var inherits = __webpack_require__(/*! inherits */ "../../node_modules/inherits/inherits_browser.js"); + +function AlgoliaSearchError(message, extraProperties) { + var forEach = __webpack_require__(/*! foreach */ "../../node_modules/foreach/index.js"); + + var error = this; + + // try to get a stacktrace + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, this.constructor); + } else { + error.stack = (new Error()).stack || 'Cannot get a stacktrace, browser is too old'; + } + + this.name = 'AlgoliaSearchError'; + this.message = message || 'Unknown error'; + + if (extraProperties) { + forEach(extraProperties, function addToErrorObject(value, key) { + error[key] = value; + }); + } +} + +inherits(AlgoliaSearchError, Error); + +function createCustomError(name, message) { + function AlgoliaSearchCustomError() { + var args = Array.prototype.slice.call(arguments, 0); + + // custom message not set, use default + if (typeof args[0] !== 'string') { + args.unshift(message); + } + + AlgoliaSearchError.apply(this, args); + this.name = 'AlgoliaSearch' + name + 'Error'; + } + + inherits(AlgoliaSearchCustomError, AlgoliaSearchError); + + return AlgoliaSearchCustomError; +} + +// late exports to let various fn defs and inherits take place +module.exports = { + AlgoliaSearchError: AlgoliaSearchError, + UnparsableJSON: createCustomError( + 'UnparsableJSON', + 'Could not parse the incoming response as JSON, see err.more for details' + ), + RequestTimeout: createCustomError( + 'RequestTimeout', + 'Request timed out before getting a response' + ), + Network: createCustomError( + 'Network', + 'Network issue, see err.more for details' + ), + JSONPScriptFail: createCustomError( + 'JSONPScriptFail', + ' + + +

    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/bling/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/bling/fragment.html new file mode 100644 index 0000000000..d88244fd17 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/bling/fragment.html @@ -0,0 +1,772 @@ + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-bling + + + + + + N/A + + Base bling element.
    + + + .s-bling__gold + + + + + + + + .s-bling + + + Gold bling element.
    + + + .s-bling__silver + + + + + + + + .s-bling + + + Silver bling element.
    + + + .s-bling__bronze + + + + + + + + .s-bling + + + Bronze bling element.
    + + + .s-bling__activity + + + + + + + + .s-bling + + + Activity bling element.
    + + + .s-bling__filled + + + + + + + + .s-bling + + + Filled bling element.
    + + + .s-bling__rep + + + + + + + + .s-bling + + + Reputation bling element.
    + + + .s-bling__sm + + + + + + + + .s-bling + + + Small bling element.
    + + + .s-bling__lg + + + + + + + + .s-bling + + + Large bling element.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + +

    Use the clear bling variant only when its associated color is already present in the component, such as within a colored tag badge or alongside a filled element.

    +
    +
    <span class="s-bling">
    <span class="v-visible-sr"></span>
    </span>
    <span class="s-bling s-bling__gold">
    <span class="v-visible-sr"></span>
    </span>
    <span class="s-bling s-bling__silver">
    <span class="v-visible-sr"></span>
    </span>
    <span class="s-bling s-bling__bronze">
    <span class="v-visible-sr"></span>
    </span>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleClassDescription
    + + default bling + + +
    + .s-bling + +
    +
    A general bling shape used for reputation, notifications or other.
    + + gold bling + + +
    + .s-bling + + .s-bling__gold + +
    +
    The "gold" award bling shape.
    + + silver bling + + +
    + .s-bling + + .s-bling__silver + +
    +
    The "silver" award bling shape.
    + + bronze bling + + +
    + .s-bling + + .s-bling__bronze + +
    +
    The "bronze" award bling shape.
    +
    +
    +
    +
    + +
    + +

    Use the filled bling style to represent a specific achievement badge or to display the total count of badges a user has earned.

    +
    +
    <span class="s-bling s-bling__filled"></span>
    <span class="s-bling s-bling__filled s-bling__rep"></span>
    <span class="s-bling s-bling__filled s-bling__activity"></span>
    <span class="s-bling s-bling__filled s-bling__gold"></span>
    <span class="s-bling s-bling__filled s-bling__silver"></span>
    <span class="s-bling s-bling__filled s-bling__bronze"></span>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleClassDescription
    + + default bling + + +
    + .s-bling + .s-bling__filled + +
    +
    A general bling used for information, status, labels or other.
    + + rep bling + + +
    + .s-bling + .s-bling__filled + + .s-bling__rep + +
    +
    A “rep” bling used for general reputation points.
    + + activity bling + + +
    + .s-bling + .s-bling__filled + + .s-bling__activity + +
    +
    An activity bling to signal real-time events and draw attention.
    + + gold bling + + +
    + .s-bling + .s-bling__filled + + .s-bling__gold + +
    +
    A "gold" award bling.
    + + silver bling + + +
    + .s-bling + .s-bling__filled + + .s-bling__silver + +
    +
    A "silver" award bling.
    + + bronze bling + + +
    + .s-bling + .s-bling__filled + + .s-bling__bronze + +
    +
    A "bronze" award bling.
    +
    +
    +
    +
    + +
    + +

    A bling component has a default size. To change the bling’s size, apply one of the following sizing classes along with the base .s-bling class.

    +
    +
    <span class="s-bling s-bling__filled s-bling__sm"></span>
    <span class="s-bling s-bling__filled"></span>
    <span class="s-bling s-bling__filled s-bling__lg"></span>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleClassDescription
    + + sm bling + + +
    + .s-bling + + .s-bling__sm + +
    +
    A “sm” bling.
    + + default bling + + +
    + .s-bling + +
    +
    A “default” bling.
    + + lg bling + + +
    + .s-bling + + .s-bling__lg + +
    +
    A “lg” bling.
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/breadcrumbs/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/breadcrumbs/fragment.html new file mode 100644 index 0000000000..9190f63bef --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/breadcrumbs/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Breadcrumbs

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/button-groups/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/button-groups/fragment.html new file mode 100644 index 0000000000..64bf1f6ec0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/button-groups/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Button groups

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/buttons/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/buttons/fragment.html new file mode 100644 index 0000000000..2fb62bed6a --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/buttons/fragment.html @@ -0,0 +1,1936 @@ + +
    + + + +

    Buttons are user interface elements which allows users to take actions throughout the project. It is important that they have ample click space and help communicate the importance of their actions.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-btn + + + + + + N/A + + + + N/A + + Base button element
    + + + .s-btn--badge + + + + + + + + .s-btn + + + + + N/A + + Badge container for the button
    + + + .s-btn__clear + + + + + + N/A + + + + + + .s-btn + + + Clear button variant
    + + + .s-btn__danger + + + + + + N/A + + + + + + .s-btn + + + Danger button variant
    + + + .s-btn__featured + + + + + + N/A + + + + + + .s-btn + + + Featured button variant
    + + + .s-btn__tonal + + + + + + N/A + + + + + + .s-btn + + + Tonal button variant
    + + + .s-btn__dropdown + + + + + + N/A + + + + + + .s-btn + + + Dropdown button variant
    + + + .s-btn__icon + + + + + + N/A + + + + + + .s-btn + + + Icon button variant
    + + + .s-btn__link + + + + + + N/A + + + + + + .s-btn + + + Link button variant
    + + + .s-btn__unset + + + + + + N/A + + + + + + .s-btn + + + Unset button variant
    + + + .s-btn__facebook + + + + + + N/A + + + + + + .s-btn + + + Facebook button variant
    + + + .s-btn__github + + + + + + N/A + + + + + + .s-btn + + + GitHub button variant
    + + + .s-btn__google + + + + + + N/A + + + + + + .s-btn + + + Google button variant
    + + + .s-btn__xs + + + + + + N/A + + + + + + .s-btn + + + Extra small button variant
    + + + .s-btn__sm + + + + + + N/A + + + + + + .s-btn + + + Small button variant
    + + + .s-btn__lg + + + + + + N/A + + + + + + .s-btn + + + Large button variant
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + +

    Stacks provides 3 different button styles:

    +
      +
    1. Base
    2. +
    3. Danger
    4. +
    5. Featured
    6. +
    7. Tonal
    8. +
    +

    Each style is explained below, detailing how and where to use these styles.

    + + + +

    Base buttons can gain clear styling with the .s-btn__clear class.

    +
    +
    <button class="s-btn" type="button"></button>
    <button class="s-btn s-btn__clear" type="button"></button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + +
    +
    Clear +
    + .s-btn + + + .s-btn__clear + +
    +
    +
    +
    +
    + + + +

    Danger buttons are a secondary button style, used to visually communicate destructive actions such as deleting content, accounts, or canceling services.

    +
    +
    <button class="s-btn s-btn__danger" type="button"></button>
    <button class="s-btn s-btn__danger s-btn__clear" type="button"></button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + .s-btn__danger + + +
    +
    Clear +
    + .s-btn + + .s-btn__danger + + + .s-btn__clear + +
    +
    +
    +
    +
    + + + +

    Featured buttons are a secondary button style, used to visually draw attention to something new or temporary, usually as part of onboarding or to announce a new feature. These should be used sparingly, and permanent placements should be avoided.

    + +
    +
    <button class="s-btn s-btn__featured" type="button"></button>
    <button class="s-btn s-btn__featured s-btn__clear" type="button"></button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    + Base + +
    + .s-btn + .s-btn__featured + +
    +
    +
    +
    +
    +
    + + + +

    Tonal buttons are a secondary button style, a grayscale visual treatment. Used in layouts for the least important items or currently inactive actions.

    +
    +
    <button class="s-btn s-btn__tonal" type="button"></button>
    <button class="s-btn s-btn__clear s-btn__tonal" type="button"></button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    + Base + +
    + .s-btn + + .s-btn__tonal + + +
    +
    +
    +
    +
    + + + +
    + +

    Anchors can be rendered with the .s-btn to adopt a button-like visual style for a link.

    + +
    +
    <a href="#" class="s-btn">Ask question</a>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + +
    +
    Ask questionAsk questionAsk question
    Base, Clear +
    + .s-btn + + + .s-btn__clear + +
    +
    Ask questionAsk questionAsk question
    Tonal +
    + .s-btn + + .s-btn__tonal + + +
    +
    Ask questionAsk questionAsk question
    Danger +
    + .s-btn + + .s-btn__danger + + +
    +
    Ask questionAsk questionAsk question
    Danger, Clear +
    + .s-btn + + .s-btn__danger + + + .s-btn__clear + +
    +
    Ask questionAsk questionAsk question
    Featured +
    + .s-btn + + .s-btn__featured + + +
    +
    Ask questionAsk questionAsk question
    +
    +
    +
    +
    + +
    + +

    Indicate a loading state by adding a .s-loader component to a button.

    +
    +
    <button class="s-btn" type="button">
    <div class="s-loader s-loader__sm">
    <div class="s-loader--sr-text">Loading…</div>
    </div>
    Ask question
    </button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + + .s-loader s-loader__sm +
    +
    Base, Clear +
    + .s-btn + + + .s-btn__clear + + .s-loader s-loader__sm +
    +
    Tonal +
    + .s-btn + + .s-btn__tonal + + + .s-loader s-loader__sm +
    +
    Danger +
    + .s-btn + + .s-btn__danger + + + .s-loader s-loader__sm +
    +
    Danger, Clear +
    + .s-btn + + .s-btn__danger + + + .s-btn__clear + + .s-loader s-loader__sm +
    +
    Featured +
    + .s-btn + + .s-btn__featured + + + .s-loader s-loader__sm +
    +
    +
    +
    +
    + +
    + +

    Adding the class .s-btn__dropdown to any button style will add an appropriately-styled caret. These should be paired with a menu or popover.

    + +
    +
    <button class="s-btn s-btn__dropdown" type="button">Dropdown</button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + + .s-btn__dropdown +
    +
    Base, Clear +
    + .s-btn + + + .s-btn__clear + + .s-btn__dropdown +
    +
    Tonal +
    + .s-btn + + .s-btn__tonal + + + .s-btn__dropdown +
    +
    Danger +
    + .s-btn + + .s-btn__danger + + + .s-btn__dropdown +
    +
    Danger, Clear +
    + .s-btn + + .s-btn__danger + + + .s-btn__clear + + .s-btn__dropdown +
    +
    Featured +
    + .s-btn + + .s-btn__featured + + + .s-btn__dropdown +
    +
    +
    +
    +
    +
    + +
    + +

    Adding an .s-btn--badge to any button will add an appropriately-styled badge.

    + +
    +
    <button class="s-btn" type="button">
    Badge
    <span class="s-btn--badge">
    <span class="s-btn--number">198</span>
    </span>
    </button>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefault StateSelected StateDisabled State
    Base +
    + .s-btn + + + .s-btn--badge +
    +
    + + + + + +
    Base, Clear +
    + .s-btn + + + .s-btn__clear + + .s-btn--badge +
    +
    + + + + + +
    Tonal +
    + .s-btn + + .s-btn__tonal + + + .s-btn--badge +
    +
    + + + + + +
    Danger +
    + .s-btn + + .s-btn__danger + + + .s-btn--badge +
    +
    + + + + + +
    Danger, Clear +
    + .s-btn + + .s-btn__danger + + + .s-btn__clear + + .s-btn--badge +
    +
    + + + + + +
    Featured +
    + .s-btn + + .s-btn__featured + + + .s-btn--badge +
    +
    + + + + + +
    +
    +
    +
    +
    + +
    + +

    A button’s default font-size is determined by the @body-fs variable. To change the button’s font-size, use the following classes with .s-btn:

    + +
    + + Note: Avoid using icons within the extra small button size. This variant is designed for tight spaces, and standard icons are too large to fit without breaking the button's height and layout. + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassSizeExample
    Extra Small + + s-btn__xs + + 12px
    Small + + s-btn__sm + + 13px
    Default + + N/A + + 14px
    Large + + s-btn__lg + + 17px
    +
    +
    + +
    + +

    Each button class has a selected state which can be visually activated by applying the .is-selected class. When a button can switch between selected and unselected states, it is important to also annotate the button with the aria-pressed attribute for accessibility. A title attribute may also be appropriate to describe what will happen when pressing the button.

    + +
    +
    <button class="s-btn" type="button" aria-pressed="false" title="…"></button>
    <button class="s-btn is-selected" type="button" aria-pressed="true" title="…"></button>

    <script>
    toggleButton.addEventListener('click', () => {
    let wasSelected = toggleButton.getAttribute('aria-pressed') === 'true';
    let isSelected = !wasSelected;
    toggleButton.classList.toggle('is-selected', isSelected);
    toggleButton.setAttribute('aria-pressed', isSelected.toString());

    });
    </script>
    +
    +
    + + +
    +
    +
    +
    + +
    + +

    Stacks provides additional classes for cases that are a bit more rare. + +

    +
    + + + + + + + + + + + + + + + + + +
    TypeAttributeDefinitionExample
    Disabled + [aria-disabled="true"] + Adds disabled styling to any element with .s-btn applied.Ask question
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefinitionExample
    Unset + .s-btn__unset + Removes all styling from a button and reverts focus states to browser default.
    Link + .s-btn__link + Styles a button element as though it were a link. Instead of transforming an s-btn to a link, you most likely want to style a button as a link.
    +
    + + +
    + + + + + + + + + + + + + + + + + +
    TypeClassDefinitionExamples
    Icon + .s-btn__icon + Adds some margin overrides that apply to an icon within a button + + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TypeClassDefinitionExamples
    Facebook + .s-btn__facebook + Styles a button consistent with Facebook’s branding + +
    Google + .s-btn__google + Styles a button consistent with Google’s branding + +
    GitHub + .s-btn__github + Styles a button consistent with GitHub’s branding + +
    +
    +
    + +
    + +

    To maintain product consistency, buttons should maintain the following layout ordering:

    + + +

    Most button groups should be ordered from the most important to the least important action, left to right.

    +
    +
    <button class="s-btn" type="button">Post answer</button>
    <button class="s-btn s-btn__clear" type="button">Cancel</button>
    +
    +
    + + +
    +
    +
    + + +

    Sometimes the layout dictates that buttons need to be stacked on top of each other. Again, these buttons should be stacked from the most important to the least important, top to bottom.

    +
    +
    <div class="d-flex g4 fd-column">
    <button class="s-btn" type="button">Post answer</button>
    <button class="s-btn s-btn__clear" type="button">Cancel</button>
    </div>
    +
    +
    + + +
    +
    +
    + + +

    Sometimes the best place for a series of actions is in the same area as the title. In these cases, the buttons should be pulled to the right. Within this instance, the button order should be reversed with the most important action to the far right and the least important action to the far left.

    +
    +
    <div class="d-flex g4">
    <div class="d-flex ai-center sm:fd-column sm:ai-start">
    <h3 class="mb0 sm:mb16 mr-auto fs-title fw-normal">Write your response</h3>

    <div class="d-flex g4 sm:fd-row-reverse sm:jc-end">
    <button class="s-btn s-btn__clear" type="button">Cancel</button>
    <button class="s-btn" type="button">Post answer</button>
    </div>
    </div>
    </div>
    +
    +
    +

    Write your response

    + +
    + + +
    +
    +
    +
    +
    + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/cards/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/cards/fragment.html new file mode 100644 index 0000000000..1b6855e9d0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/cards/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Cards

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/checkbox/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/checkbox/fragment.html new file mode 100644 index 0000000000..7e7e0d4d73 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/checkbox/fragment.html @@ -0,0 +1,745 @@ + +
    + + + +

    Checkable inputs that visually allow for multiple options or true/false values.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-checkbox + + + + + + N/A + + Base checkbox style.
    + + + .s-checkbox__checkmark + + + + + + + + .s-checkbox + + + Checkmark style.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    Use the .s-checkbox to wrap input[type="checkbox"] elements to apply checkbox styles.

    + +
    +
    <div class="s-checkbox">
    <input type="checkbox" name="example-name" id="example-item" />
    <label class="s-label" for="example-item">Check Label</label>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleDescription
    +
    + + +
    +
    Unchecked checkbox.
    +
    + + +
    +
    Disabled unchecked checkbox.
    +
    + + +
    +
    Checked checkbox.
    +
    + + +
    +
    Disabled checked checkbox.
    +
    +
    +
    + + +

    The checkmark style is an alternative to the base checkbox style. To use the checkmark style, wrap your input and label in a container with the .s-checkbox__checkmark class.

    + +
    +
    <label class="s-checkbox s-checkbox__checkmark" for="example-item">
    Checkmark Label
    <input type="checkbox" name="example-name" id="example-item" />
    </label>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleClassDescription
    + + + .s-checkbox__checkmark + Unchecked checkmark with a checkbox element.
    + + + .s-checkbox__checkmark + Disabled unchecked checkmark with a checkbox element.
    + + + .s-checkbox__checkmark + Checked checkmark with a checkbox element.
    + + + .s-checkbox__checkmark + Disabled checked checkmark with a checkbox element.
    +
    +
    +
    +
    + +
    + +

    The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to checkboxes, there are a few things to keep in mind:

    +
      +
    • All inputs should have an id attribute.
    • +
    • Be sure to associate the checkbox label by using the for attribute. The value here is the input's id.
    • +
    • If you have a group of related checkboxes, use the fieldset and legend to group them together.
    • +
    +

    For more information, please read Gov.UK's article, "Using the fieldset and legend elements".

    +
    + +
    + + +
    +
    <fieldset class="s-form-group">
    <legend class="s-label"></legend>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="vert-checkbox-1" />
    <label class="s-label" for="vert-checkbox-1"></label>
    </div>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="vert-checkbox-2" />
    <label class="s-label" for="vert-checkbox-2"></label>
    </div>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="vert-checkbox-3" />
    <label class="s-label" for="vert-checkbox-3"></label>
    </div>
    </fieldset>
    +
    +
    + Which types of fruit do you like? (Check all that apply) + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    + + +
    +
    <fieldset class="s-form-group s-form-group__horizontal">
    <legend class="s-label"></legend>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="hori-checkbox-1" />
    <label class="s-label" for="hori-checkbox-1"></label>
    </div>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="hori-checkbox-2" />
    <label class="s-label" for="hori-checkbox-2"></label>
    </div>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="hori-checkbox-3" />
    <label class="s-label" for="hori-checkbox-3"></label>
    </div>
    </fieldset>
    +
    +
    + Which types of fruit do you like? (Check all that apply) + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    + + +
    +
    <fieldset class="s-form-group">
    <legend class="s-label"></legend>
    <div class="s-checkbox">
    <input type="checkbox" name="…" id="desc-checkbox-1" />
    <label class="s-label" for="desc-checkbox-1">

    <p class="s-description"></p>
    </label>
    </div>

    </fieldset>
    +
    +
    + Which types of fruit do you like? (Check all that apply) + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    + +
    + +
    + +

    Checkboxes use the same validation states as inputs.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + .has-warning + + + + + + + Parent element + + + + Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding.
    + + + .has-error + + + + + + + Parent element + + + + Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding.
    + + + .has-success + + + + + + + Parent element + + + + Used to notify users that the value they’ve entered is fine or has been submitted successfully.
    +
    + + + + + + + + + + + + + + + + + +
    +
    <!-- Checkbox w/ warning -->
    <div class="s-checkbox has-warning">
    <input type="checkbox" name="…" id="warn-checkbox-1" />
    <label class="s-label" for="warn-checkbox-1">

    <p class="s-description"></p>
    </label>
    </div>
    +
    +
    + Which types of fruit do you like? (Check all that apply) + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    +
    + +
    + +

    Checkboxes can be styled by using the :indeterminate pseudo class.

    +
    + Note: The :indeterminate pseudo class can only be set via JavaScript. Use the HTMLInputElement object's indeterminate property to set the state. +
    + +
    +
    <fieldset class="s-form-group">
    <div class="s-checkbox">
    <input type="checkbox" name="" id="indeterminate-checkbox-1" />
    <label class="s-label" for="indeterminate-checkbox-1">Select all</label>
    </div>
    </fieldset>

    <script>
    document.getElementById("indeterminate-checkbox-1").indeterminate = true;
    </script>
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/code-blocks/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/code-blocks/fragment.html new file mode 100644 index 0000000000..81bf0a8e8c --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/code-blocks/fragment.html @@ -0,0 +1,416 @@ + +
    + + + +

    Stacks provides styling for code blocks with syntax highlighting provided by highlight.js. Special care was taken to make sure our light and dark themes felt like Stack Overflow while maintaining near AAA color contrasts and still being distinguishable for those with a color vision deficiency.

    + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-code-block + + + + + + N/A + + Base code block style.
    + + + .linenums + + + + + + + + .s-code-block + + + Adds a line numbers column to the code block.
    + + + .linenums:<n> + + + + + + + + .s-code-block + + + Adds a line numbers column to the code block starting at a number <n>.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    The following examples are a small subset of the languages that highlight.js supports.

    + +
    +
    <pre class="s-code-block language-html">

    </pre>
    +
    +
    <form class="d-flex gy4 fd-column">
    <label class="s-label" for="question-title">Question title</label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-title" placeholder="e.g. Why doesn’t Stack Overflow use a custom web font?"/>
    </div>
    </form>
    +
    +
    + + +
    +
    <pre class="s-code-block language-javascript">

    </pre>
    +
    +
    import React, { Component } from 'react'
    import { IP } from '../constants/IP'
    import { withAuth0 } from '@auth0/auth0-react';

    class AddATournament extends Component {
    componentDidMount() {
    this.myNewListOfAllTournamentsWithAuth()
    }
    }

    export default withAuth0(AddATournament);
    +
    +
    + + +
    +
    <pre class="s-code-block language-css">

    </pre>
    +
    +
    .s-input,
    .s-textarea {
    -webkit-appearance: none;
    width: 100%;
    margin: 0;
    padding: 0.6em 0.7em;
    border: 1px solid var(--bc-darker);
    border-radius: 3px;
    background-color: var(--white);
    color: var(--fc-dark);
    font-size: 13px;
    font-family: inherit;
    line-height: 1.15384615;
    scrollbar-color: var(--scrollbar) transparent;
    }
    @supports (-webkit-overflow-scrolling: touch) {
    .s-input,
    .s-textarea {
    font-size: 16px;
    padding: 0.36em 0.55em;
    }
    .s-input::-webkit-input-placeholder,
    .s-textarea::-webkit-input-placeholder {
    line-height: normal !important;
    }
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-java">

    </pre>
    +
    +
    package l2f.gameserver.model;

    public abstract strictfp class L2Char extends L2Object {
    public static final Short ERROR = 0x0001;

    public void moveTo(int x, int y, int z) {
    _ai = null;
    log("Should not be called");
    if (1 > 5) { // what?
    return;
    }
    }
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-ruby">

    </pre>
    +
    +
    # The Greeter class
    class Greeter
    def initialize(name)
    @name = name.capitalize
    end

    def salute
    puts "Hello #{@name}!"
    end
    end

    g = Greeter.new("world")
    g.salute
    +
    +
    + + +
    +
    <pre class="s-code-block language-python">

    </pre>
    +
    +
    def all_indices(value, qlist):
    indices = []
    idx = -1
    while True:
    try:
    idx = qlist.index(value, idx+1)
    indices.append(idx)
    except ValueError:
    break
    return indices

    all_indices("foo", ["foo","bar","baz","foo"])
    +
    +
    + + +
    +
    <pre class="s-code-block language-objectivec">

    </pre>
    +
    +
    #import <UIKit/UIKit.h>
    #import "Dependency.h"

    @protocol WorldDataSource
    @optional
    - (NSString*)worldName;
    @required
    - (BOOL)allowsToLive;
    @end

    @property (nonatomic, readonly) NSString *title;
    - (IBAction) show;
    @end

    - (UITextField *) userName {
    UITextField *retval = nil;
    @synchronized(self) {
    retval = [[userName retain] autorelease];
    }
    return retval;
    }

    - (void) setUserName:(UITextField *)userName_ {
    @synchronized(self) {
    [userName_ retain];
    [userName release];
    userName = userName_;
    }
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-swift">

    </pre>
    +
    +
    import Foundation

    @objc class Person: Entity {
    var name: String!
    var age: Int!

    init(name: String, age: Int) {
    /* /* ... */ */
    }

    // Return a descriptive string for this person
    func description(offset: Int = 0) -> String {
    return "\(name) is \(age + offset) years old"
    }
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-less">

    </pre>
    +
    +
    @import "fruits";

    @rhythm: 1.5em;

    @media screen and (min-resolution: 2dppx) {
    body {font-size: 125%}
    }

    section > .foo + #bar:hover [href*="less"] {
    margin: @rhythm 0 0 @rhythm;
    padding: calc(5% + 20px);
    background: #f00ba7 url(http://placehold.alpha-centauri/42.png) no-repeat;
    background-image: linear-gradient(-135deg, wheat, fuchsia) !important ;
    background-blend-mode: multiply;
    }

    @font-face {
    font-family: /* ? */ 'Omega';
    src: url('../fonts/omega-webfont.woff?v=2.0.2');
    }

    .icon-baz::before {
    display: inline-block;
    font-family: "Omega", Alpha, sans-serif;
    content: "\f085";
    color: rgba(98, 76 /* or 54 */, 231, .75);
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-json">

    </pre>
    +
    +
    [
    {
    "title": "apples",
    "count": [12000, 20000],
    "description": {"text": "...", "sensitive": false}
    },
    {
    "title": "oranges",
    "count": [17500, null],
    "description": {"text": "...", "sensitive": false}
    }
    ]
    +
    +
    + + +
    +
    <pre class="s-code-block language-csharp">

    </pre>
    +
    +
    using System.IO.Compression;

    #pragma warning disable 414, 3021

    namespace MyApplication
    {
    [Obsolete("...")]
    class Program : IInterface
    {
    public static List<int> JustDoIt(int count)
    {
    Console.WriteLine($"Hello {Name}!");
    return new List<int>(new int[] { 1, 2, 3 })
    }
    }
    }
    +
    +
    + + +
    +
    <pre class="s-code-block language-sql">

    </pre>
    +
    +
    CREATE TABLE "topic" (
    "id" serial NOT NULL PRIMARY KEY,
    "forum_id" integer NOT NULL,
    "subject" varchar(255) NOT NULL
    );
    ALTER TABLE "topic"
    ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id")
    REFERENCES "forum" ("id");

    -- Initials
    insert into "topic" ("forum_id", "subject")
    values (2, 'D''artagnian');
    +
    +
    + + +
    +
    <pre class="s-code-block language-diff">

    </pre>
    +
    +
    Index: languages/ini.js
    ===================================================================
    --- languages/ini.js (revision 199)
    +++ languages/ini.js (revision 200)
    @@ -1,8 +1,7 @@
    hljs.LANGUAGES.ini =
    {
    case_insensitive: true,
    - defaultMode:
    - {
    + defaultMode: {
    contains: ['comment', 'title', 'setting'],
    illegal: '[^\\s]'
    },

    *** /path/to/original timestamp
    --- /path/to/new timestamp
    ***************
    *** 1,3 ****
    --- 1,9 ----
    + This is an important
    + notice! It should
    + therefore be located at
    + the beginning of this
    + document!

    ! compress the size of the
    ! changes.

    It is important to spell
    +
    +
    +
    + +
    + +

    Add .linenums to include line numbers on a code block.

    + +
    +
    <pre class="s-code-block language-html linenums">

    </pre>
    +
    +
    1
    2
    3
    4
    5
    6
    <form class="d-flex g4 fd-column">
    <label class="s-label" for="full-name">Name</label>
    <div class="d-flex">
    <input class="s-input" type="text" id="full-name"/>
    </div>
    </form>
    +
    +
    + + +

    Append a number preceeded by : to .linenums to offset the start of the line numbers.

    +
    +
    <pre class="s-code-block language-json linenums:23">

    </pre>
    +
    +
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    [
    {
    "title": "apples",
    "count": [12000, 20000],
    "description": {"text": "...", "sensitive": false}
    },
    {
    "title": "oranges",
    "count": [17500, null],
    "description": {"text": "...", "sensitive": false}
    }
    ]
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/editor/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/editor/fragment.html new file mode 100644 index 0000000000..5501b11457 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/editor/fragment.html @@ -0,0 +1,391 @@ + +
    + + + +

    The Stacks editor adds “what you see is what you get” and Markdown capabilities to textareas. It is available as a separate Editor repository, but requires Stacks’ CSS for styling.

    + + + +
    + + + + + + JavaScript + + + + + + Figma + + +
    + +
    + +
    + +

    Because of its size, the Stacks editor is bundled independently of Stacks. You can install it a few ways:

    + + +

    The Stacks Editor is available as an NPM package. To make it available in your node modules, npm install @stackoverflow/stacks-editor

    + +

    Import via Modules or CommonJS

    Section titled Import via Modules or CommonJS
    +
    +
    import { StacksEditor } from "@stackoverflow/stacks-editor";
    // Don’t forget to include the styles as well
    import "@stackoverflow/stacks-editor/styles.css";

    new StacksEditor(
    document.querySelector("#editor-container"),
    "*Your* **markdown** here"
    );
    +
    + + +
    +
    <!-- Include the bundled styles -->
    <link rel="stylesheet" src="path/to/node_modules/@stackoverflow/stacks-editor/dist/styles.css"
    />


    <div id="editor-container"></div>

    <!-- highlight.js is not included in the bundle, so include it as well if you want it -->
    <script src="//unpkg.com/@highlightjs/cdn-assets@latest/highlight.min.js"></script>

    <!-- Include the bundle -->
    <script src="path/to/node_modules/@stackoverflow/stacks-editor/dist/app.bundle.js"></script>

    <!-- Initialize the editor -->
    <script>
    new window.stacksEditor.StacksEditor(
    document.querySelector("#editor-container"),
    "*Your* **markdown** here",
    {}
    );
    </script>
    +
    +
    + + + + +
    + + +
    +
    <div id="editor-example-1"></div>

    <script>
    new window.stacksEditor.StacksEditor(
    document.querySelector("#editor-example-1"),
    "",
    {}
    );
    </script>
    +
    +
    +
    +
    + +

    Textarea content with tables enabled

    Section titled Textarea content with tables enabled
    +
    +
    <textarea id="editor-content-2" class="d-none">

    </textarea>
    <div id="editor-example-2"></div>

    <script>
    new window.stacksEditor.StacksEditor(
    document.querySelector("#editor-example-2"),
    document.querySelector("#editor-content-2").value,
    {
    parserFeatures: {
    tables: true,
    },
    }
    );
    </script>
    +
    + +
    +
    +
    +
    + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/empty-states/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/empty-states/fragment.html new file mode 100644 index 0000000000..18fad26fc6 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/empty-states/fragment.html @@ -0,0 +1,289 @@ + +
    + + + +

    Empty states are used when there is no data to show. Ideally they orient the user by providing feedback based on the the user’s last interaction or communicate the benefits of a feature. When appropriate, they should explain the next steps the user should take and provide guidance with a clear call-to-action.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Description +
    + + + .s-empty-state + + + + Base empty state style.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    + Typical use-case for an empty state is when a feature has no data or a search/filter operation yields no results. +

    + +

    + If the user is able to address the situation resulting in an empty state, it is appropriate to include a button for them to do so. +

    +
    +
    <div class="s-empty-state wmx4 p48">
    @Svg.Spot.Empty.With("native")
    <h4 class="s-empty-state--title">No questions match your result.</h4>
    <p>Try refining your search term or trying something more general.</p>
    <button class="s-btn s-btn__tonal">Clear filters</a>
    </div>
    +
    +
    + +

    No questions match your result.

    +

    Try refining your search term or trying something more general.

    + +
    +
    +
    + + +

    + If the user can’t take an action to fix the situation, it’s appropriate to set expectations. +

    +
    +
    <div class="s-empty-state wmx4 p48">
    @Svg.Spot.Empty.With("native")
    <h4 class="s-empty-state--title">User trends not ready</h4>
    <p>Please check back in a few days.</p>
    </div>
    +
    +
    + +

    User trends not ready

    +

    Please check back in a few days.

    +
    +
    +
    + + +

    + If desired, both the title and call-to-action may be omitted for a minimal look. +

    +
    +
    <div class="s-empty-state wmx4 p48">
    @Svg.Spot.Empty.With("native")
    <p>There’s no data associated with <a href="#" class="s-link s-link__underlined">this account</a>.</p>
    </div>
    +
    +
    + +

    There’s no data associated with this account.

    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/expandable/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/expandable/fragment.html new file mode 100644 index 0000000000..050a37e279 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/expandable/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Expandable

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/inputs/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/inputs/fragment.html new file mode 100644 index 0000000000..aa5fa60720 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/inputs/fragment.html @@ -0,0 +1,1065 @@ + +
    + + + +

    Input elements are used to gather information from users.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-input + + + + + + N/A + + Base input style.
    + + + .s-input__creditcard + + + + + + + + .s-input + + + Adds a credit card icon to the input.
    + + + .s-input__search + + + + + + + + .s-input + + + Adds a search icon to the input.
    + + + .s-input__sm + + + + + + + + .s-input + + + Apply a small size.
    + + + .s-input__lg + + + + + + + + .s-input + + + Apply a large size.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    Inputs are normally paired with a label, but there are times when they can be used without a label. Placeholder text should primarily be used as a content prompt and only provided when needed.

    + +
    +
    <!-- Base -->
    <div class="s-form-group">
    <label class="s-label" for="example-item1">Full name</label>
    <p class="s-description">This will be shown only to employers and other Team members.</p>
    <input class="s-input" id="example-item1" type="text" placeholder="Enter your input here" />
    </div>

    <!-- Disabled -->
    <div class="s-form-group is-disabled">
    <label class="s-label" for="example-item2">Display name</label>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-item2" type="text" placeholder="Enter your input here" disabled />
    {% icon "Lock", "s-input-icon fc-black-400" %}
    </div>
    </div>

    <!-- Readonly -->
    <div class="s-form-group ps-relative is-readonly">
    <label class="s-label" for="example-item3">Legal name</label>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-item3" type="text" placeholder="Enter your input here" readonly value="Prefilled readonly input" />
    {% icon "Lock", "s-input-icon" %}
    </div>
    </div>
    +
    +
    +
    + +

    This will be shown only to employers and other Team members.

    + +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + +
    + +

    The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to inputs, there are a few things to keep in mind:

    +
      +
    • All inputs should have an id attribute.
    • +
    • Be sure to associate the input’s label by using the for attribute. The value here is the input’s id.
    • +
    • If you have a group of related inputs, use the fieldset and legend to group them together.
    • +
    +

    For more information, please read Gov.UK's article, "Using the fieldset and legend elements".

    + + +

    Labels or instructions must be provided when content requires user input. For any input field within a form that is required for successful data submission, provide the asterisk * as a symbol and a legend advising the meaning of the symbol before the first use.

    +

    Stacks includes a special .s-required-symbol class to ensure the symbol (asterisk) is clearly visible.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies + + Description +
    + + + .s-required-symbol + + + + + + + abbr element enclosing the asterisk + + + + Used to style the asterisk indicating that a specific field is required.
    +
    + + + + + + + + + + + + + + + + +
    <abbr class="s-required-symbol" title="required">*</abbr>
    +

    Required symbols are not necessary for areas where only a single input field is seen on the page (ex: sign up modals). For more information, see WCAG Technique H90.

    + + +
    +
    <div class="d-flex w100 jc-space-between ai-center">
    <h1 class="fs-headline1 fw-normal mb16">
    Ask a question
    </h1>
    <p class="fs-caption fc-black-400">Required fields<abbr class="s-required-symbol" title="required">*</abbr></p>
    </div>
    <form class="d-flex fd-column gy24">
    <div class="s-form-group">
    <label class="s-label" for="example-title-required">Title<abbr class="s-required-symbol" title="required">*</abbr></label>
    <input class="s-input" id="example-title-required" type="text" placeholder="Type a title" />
    </div>
    <div class="s-form-group">
    <label class="s-label" for="example-body-required">Body<abbr class="s-required-symbol" title="required">*</abbr></label>
    <textarea class="s-textarea hmn1" id="example-body-required" placeholder="Type a question"></textarea>
    </div>
    <div class="s-form-group">
    <label class="s-label" for="example-ask-members">Ask team members</label>
    <input class="s-input" id="example-ask-members" type="text" placeholder="Type a name" />
    </div>
    </form>
    +
    +
    +

    + Ask a question +

    +

    Required fields*

    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + +
    + +

    Validation states provides the user feedback based on their interaction (or lack of interaction) with an input. These styles are applied by applying the appropriate class to the wrapping parent container.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + .has-warning + + + + + + + Parent element + + + + Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding.
    + + + .has-error + + + + + + + Parent element + + + + Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding.
    + + + .has-success + + + + + + + Parent element + + + + Used to notify users that the value they’ve entered is fine or has been submitted successfully.
    +
    + + + + + + + + + + + + + + + + + +

    + In most cases, validation states shouldn’t be shown until after the user has submitted the form. There are certain exceptions where it can be appropriate to show a validation state without form submission—after a sufficient delay. For example, validating the existence of a username can occur after the user has stopped typing, or when they’ve deselected the input. +

    +

    + Once the user is presented validation states, they can be cleared as soon as the user interacts with the form field. For example, the error state for an incorrect password should be cleared as soon as the user focuses the input to re-enter their password. +

    +

    + Similarly to using for with labels, validation messages below inputs should be associated with their respective fields using the aria-describedby attribute for accessible behavior. +

    + + + +
    +
    <div class="s-form-group has-warning">
    <label class="s-label" for="example-warning">Username</label>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-warning" type="text" placeholder="" aria-describedby="example-warning-desc" />
    @Svg.Alert.With("s-input-icon")
    </div>
    <p id="example-warning-desc" class="s-input-message">Caps lock is on! <a href="#">Having trouble entering your username?</a></p>
    </div>
    +
    +
    +
    + +
    + + +
    +

    Caps lock is on! Having trouble entering your username?

    +
    +
    +
    +
    + + +
    +

    In addition to using the "error" state for a field, be sure to use the aria-invalid attribute to indicate to assistive technology that respective fields have failed validation.

    +
    + +
    +
    <div class="s-form-group has-error">
    <label class="s-label" for="example-error">Username</label>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-error" type="text" placeholder="e.g. johndoe111" aria-describedby="example-error-desc" aria-invalid="true" />
    @Svg.AlertFill.With("s-input-icon")
    </div>
    <p id="example-error-desc" class="s-input-message">You must provide a username. <a href="#">Forgot your username?</a></p>
    </div>
    +
    +
    +
    + +
    + + +
    +

    You must provide a username. Forgot your username?

    +
    +
    +
    +
    + + +
    +
    <div class="s-form-group has-success">
    <label class="s-label" for="example-success">Username</label>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-success" type="text" aria-describedby="example-success-desc" />
    @Svg.Checkmark.With("s-input-icon")
    </div>
    <p id="example-success-desc" class="s-input-message">That name is available! <a href="#">Why do we require a username?</a></p>
    </div>
    +
    +
    +
    + +
    + + +
    +

    That name is available! Why do we require a username?

    +
    +
    +
    +
    +
    + +
    + + +

    Stacks provides helper classes to consistently style an input used for search. First, wrap your search input in an element with relative positioning. Then, and add s-input__search to the input itself. Finally, be sure to add s-input-icon and s-input-icon__search to the search icon.

    + +
    +
    <div class="ps-relative">
    <label class="v-visible-sr" for="example-search">Search</label>
    <input class="s-input s-input__search" id="example-search" type="text" placeholder="Search…" />
    @Svg.Search.With("s-input-icon s-input-icon__search")
    </div>
    +
    +
    + + + +
    +
    +
    + + +
    +
    <div class="ps-relative">
    <label class="v-visible-sr" for="example-creditcard">Credit Card</label>
    <input class="s-input s-input__creditcard" id="example-creditcard" type="text" />
    @Svg.CreditCard.With("s-input-icon s-input-icon__creditcard")
    </div>
    +
    +
    + + + +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Name + + Size + + Example +
    + + + .s-input__sm + + + + + + + Small + + + + + + + 13px + + + +
    + + N/A + + + + + Default + + + + + + + 14px + + + +
    + + + .s-input__lg + + + + + + + Large + + + + + + + 18px + + + +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    Input fills are used to visually connect input text boxes with related content.

    + + +
    +
    <div class="s-form-group">
    <label class="s-label" for="website-url">Website URL</label>
    <div class="d-flex">
    <div class="s-input-fill order-first">https://</div>
    <div class="d-flex fl-grow1 ps-relative">
    <input class="s-input blr0" type="text" id="website-url" placeholder="www.stackoverflow.com" />
    </div>
    </div>
    </div>
    +
    +
    + +
    +
    https://
    +
    + +
    +
    +
    +
    +
    + + +
    +
    <div class="s-form-group">
    <label class="s-label" for="min-salary">Minimum Salary</label>
    <div class="d-flex">
    <div class="d-flex ai-center order-last s-input-fill">
    <div class="d-flex gx4 ai-center">
    <div class="s-checkbox">
    <input type="checkbox" id="need-visa" />
    <label class="s-label" for="need-visa">Need Visa Sponsorship</label>
    </div>
    </div>
    </div>
    <div class="d-flex fl-grow1 ps-relative">
    <input class="s-input brr0" type="number" id="min-salary" placeholder="e.g. 125,000" />
    </div>
    </div>
    </div>
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + +

    An input can be nested within a container that has the .s-input class applied to display styled elements as if they're within an input.

    + +
    +
    <div class="s-form-group">
    <label class="s-label" for="tag-selector">Tags</label>
    <div class="s-input">
    <div class="d-flex fw-wrap gx8 myn4">
    <span class="s-tag">
    svelte
    <button class="s-tag--dismiss" type="button" title="Remove tag">
    <span class="v-visible-sr">Dismiss svelte tag</span>
    @Svg.ClearSm
    </button>
    </span>
    </div>
    <input id="tag-selector" class="s-input" type="text" role="presentation" placeholder="enter up to 5 tags">
    </div>
    </div>
    +
    +
    + +
    +
    + + svelte + + +
    + +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/labels/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/labels/fragment.html new file mode 100644 index 0000000000..b5c1f503fc --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/labels/fragment.html @@ -0,0 +1,584 @@ + +
    + + + +

    Labels are used to describe inputs, select menus, textareas, radio buttons, and checkboxes.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-label + + + + + + N/A + + Base label style.
    + + + .s-label__sm + + + + + + + + .s-label + + + Apply a small size.
    + + + .s-label__lg + + + + + + + + .s-label + + + Apply a large size.
    +
    + + + + + + + + + + + + + + + +
    + +
    +

    Labels inform users what information is being asked of them. They should be written in sentence case.

    +
    + For usability reasons, if a label is connected with an input, the for="[id]" attribute should be filled in. This attribute references the input’s id="[value]" value. This makes clicking the label automatically focus the proper input. +
    +
    +
    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="question-title">Question title</label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-title" placeholder="e.g. Why doesn’t Stack Overflow use a custom web font?"/>
    </div>
    </form>
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Name + + Size + + Example +
    + + + .s-label__sm + + + + + + + Small + + + + + + + 14px + + + +
    + + N/A + + + + + Default + + + + + + + 16px + + + +
    + + + .s-label__lg + + + + + + + Large + + + + + + + 22px + + + +
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    When a label or input needs further explantation, text should be placed directly underneath it.

    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="example-item">
    Question title
    </label>
    <p class="s-description">Clear question titles are more likely to get answered.</p>
    <div class="d-flex ps-relative">
    <input class="s-input" id="example-item" type="text" placeholder="e.g. Why doesn’t Stack Overflow use a custom web font?" />
    </div>
    </form>
    +
    +
    + +

    Clear question titles are more likely to get answered.

    +
    + +
    +
    +
    +
    +
    + +
    + +

    Use status indicators to append essential context to a label. This pattern supports any of the various badge states available. When using this indicator, display the full word 'Required' rather than an asterisk. Note: If the majority of a form’s inputs are required, prioritize the asterisk pattern outlined in Input Accessibility instead.

    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="question-title-required">Question title<span class="s-badge s-badge__danger">Required</span></label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-title-required" placeholder="e.g. Why doesn’t Stack Overflow use a custom web font?"/>
    </div>
    </form>
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="question-tags">Question tags<span class="s-badge">Optional</span></label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-tags" placeholder="e.g. Why doesn’t Stack Overflow use a custom web font?"/>
    </div>
    </form>
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="question-title-new">What is your favorite animal?<span class="s-badge s-badge__info">Saved for later</span></label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-title-new" placeholder="e.g. hedgehog, platypus, sugar glider"/>
    </div>
    </form>
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    <form class="s-form-group">
    <label class="s-label" for="question-title-beta">Notify people<span class="s-badge s-badge__featured">New feature</span></label>
    <div class="d-flex ps-relative">
    <input class="s-input" type="text" id="question-title-beta" placeholder="e.g. jdoe, bgates, sjobs"/>
    </div>
    </form>
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/link-previews/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/link-previews/fragment.html new file mode 100644 index 0000000000..906436812b --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/link-previews/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Link previews

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/links/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/links/fragment.html new file mode 100644 index 0000000000..2851382e95 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/links/fragment.html @@ -0,0 +1,785 @@ + +
    + + + +

    Links are lightly styled via the a element by default. In addition, we provide .s-link and its variations. In rare situations, .s-link can be applied to n button while maintaining the look of an anchor.

    + + + +
    + + + + Svelte + + + + + + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-link + + + + + + N/A + + Base link style that is used almost universally.
    + + + .s-link__grayscale + + + + + + + + .s-link + + + A link style modification with our default text color.
    + + + .s-link__muted + + + + + + + + .s-link + + + Applies a visually muted style to the base style.
    + + + .s-link__danger + + + + + + + + .s-link + + + Applies an important, destructive red to the base style.
    + + + .s-link__inherit + + + + + + + + .s-link + + + Applies the parent element’s text color.
    + + + .s-link__underlined + + + + + + + + .s-link + + + Adds an underline to the link’s text.
    + + + .s-link__dropdown + + + + + + + + .s-link + + + Applies a caret for dropdowns and additional interactivity.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    <a class="s-link" href="#">Default</a>
    <a class="s-link s-link__grayscale" href="#">Grayscale</a>
    <a class="s-link s-link__muted" href="#">Muted</a>
    <a class="s-link s-link__danger" href="#">Danger</a>
    <a class="s-link s-link__inherit" href="#">Inherit</a>
    <a class="s-link s-link__underlined" href="#">Underlined</a>
    <button class="s-link">Button Link</button>
    <a class="s-link s-link__dropdown" href="#">Links</a>
    +
    +
    + Default + Grayscale + Muted + Danger + Inherit + Underlined + + Links +
    +
    +
    + + +

    Any link with adjacent static text cannot use color alone to differentiate it as a link. If a link is next to static text and the only visual indication that it’s a link is the color of the text, it will require an underline in addition to the color. Reference WCAG SC 1.4.1 for more details.

    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-anchors + + + + + + N/A + + A consistent link style is applied to all descendent anchors.
    + + + .s-anchors__default + + + + + + + + .s-anchors + + + All descendent links receive s-link’s default styling.
    + + + .s-anchors__grayscale + + + + + + + + .s-anchors + + + Applies gray styling to all descendent links.
    + + + .s-anchors__muted + + + + + + + + .s-anchors + + + Applies a visually muted style to all descendent links.
    + + + .s-anchors__danger + + + + + + + + .s-anchors + + + Applies an important, destructive red to all descendent links.
    + + + .s-anchors__underlined + + + + + + + + .s-anchors + + + Applies an underline to all descendent links.
    + + + .s-anchors__inherit + + + + + + + + .s-anchors + + + Applies the parent element’s text color to all descendent links.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    Sometimes you need to give all <a> elements inside a container or component the same color, even + when it‘s impractical or even impossible to give each anchor element an s-link class (e.g. because the markup is generated from Markdown).

    +

    In this case, you can add the s-anchors class together with one of the modifiers + s-anchors__default, s-anchors__grayscale, s-anchors__muted, + s-anchors__danger, or s-anchors__inherit to the container. +

    + +
    +
    <div class="s-anchors"></div>
    <div class="s-anchors s-anchors__grayscale"></div>
    <div class="s-anchors s-anchors__muted"></div>
    <div class="s-anchors s-anchors__danger"></div>
    <div class="s-anchors s-anchors__underlined"></div>
    <div class="s-anchors s-anchors__inherit"></div>
    +
    + + + + +
    + There is a default link here, , and another one. +
    + + + +
    + There is a grayscale link here, , and another one. +
    + + + +
    + There is a muted link here, , and another one. +
    + + + +
    + There is a danger link here, , and another one. +
    + + + +
    + There is a underlined link here, , and another one. +
    + + + +
    + There is a inherit link here, , and another one. +
    + + +
    +
    + +

    One additional level of nesting is supported, but even that should be exceedingly rare. More than that is not supported.

    + +
    +
    <div class="s-anchors s-anchors__danger s-card">
    All <a href="#">links</a> in this <a href="#">outer box</a>
    are <a href="#">dangerous</a>.
    <div class="s-anchors s-anchors__default s-card w70 mt8">
    But all <a href="#">links</a> in this <a href="#">inner box</a>
    have the <a href="#">default</a> link color.
    </div>
    </div>
    +
    +
    + All links in this outer box + are dangerous. +
    + But all links in this inner box + have the default link color. +
    +
    +
    +
    + +

    An explicit s-link on an anchor overrides any s-anchors setting:

    + +
    +
    <div class="s-anchors s-anchors__danger s-card">
    All <a href="#">links</a> in this <a href="#">box</a> are <a href="#">dangerous</a>,
    except for <a class="s-link">this one</a> which uses the default color, and
    <a class="s-link s-link__muted">this muted link</a>.
    </div>
    +
    +
    + All links in this box are dangerous, + except for this one which uses the default color, and + this muted link. +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/loader/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/loader/fragment.html new file mode 100644 index 0000000000..18b2abd62a --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/loader/fragment.html @@ -0,0 +1,533 @@ + +
    + + + +

    The loader component indicates an active wait state for a page, section, or interactive element.

    + + + +
    + + + + Svelte + + + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-loader + + + + + + N/A + + + + N/A + + Base class for the loader component
    + + + .s-loader--sr-text + + + + + + + + .s-loader + + + + + N/A + + Necessary to render the center loader block and renders the accessible text
    + + + .s-loader__sm + + + + + + N/A + + + + + + .s-loader + + + A small variant of the loader component
    + + + .s-loader__lg + + + + + + N/A + + + + + + .s-loader + + + A large variant of the loader component
    +
    + + + + + + + + + + + + + + + +
    +
    + +

    + The base loader component displays three animated squares. +

    +
    +
    <div class="s-loader">
    <div class="s-loader--sr-text">Loading…</div>
    </div>
    +
    +
    +
    +
    Loading…
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Example +
    + + + .s-loader__sm + + + + + + + + .s-loader + + +
    Loading…
    + + + .s-loader + + + + + + N/A + +
    Loading…
    + + + .s-loader__lg + + + + + + + + .s-loader + + +
    Loading…
    +
    + + + + + + + + + + + + + + + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/menus/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/menus/fragment.html new file mode 100644 index 0000000000..1f958f6d5e --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/menus/fragment.html @@ -0,0 +1,714 @@ + +
    + + + +

    A menu offers a contextual list of actions or functions.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-menu + + + + + + N/A + + + + N/A + + Base container styling for a menu.
    + + + .s-menu--divider + + + + + + + + .s-menu + + + + + N/A + + Adds a divider line between menu sections.
    + + + .s-menu--item + + + + + + + + .s-menu + + + + + N/A + + Applies link styling to link within a menu. Used for actionable elements.
    + + + .s-menu--title + + + + + + + + .s-menu + + + + + N/A + + Adds appropriate styling for a title within a menu.
    + + + .s-menu--icon + + + + + + + + .s-menu--item + + + + + N/A + + Applies styling to an icon.
    + + + .s-menu--action + + + + + + + + .s-menu--item + + + + + N/A + + Applies link styling to link within a menu. Used for actionable elements.
    + + + .s-menu--action__danger + + + + + + N/A + + + + + + .s-menu--action + + + Applies danger styling to a menu link. Used for destructive actions.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    A menu displays a list of choices temporarily, and usually represent tasks or actions. Don’t confuse menus for navigation.

    + + +

    At its most basic, a menu is a simple styled list of contextual actions. Because they’re contextual, it’s strongly recommended that a menu is contained within a popover or a card. When placed in various containers, you’ll need to either account for the padding on the container, or use negative margins on the menu component itself.

    + +
    +
    <div class="s-popover p8">
    <ul class="s-menu" role="menu">
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="…"></a>
    </li>
    <li class="s-menu--item" role="menuitem">
    <button class="s-menu--action"></button>
    </li>
    </ul>
    </div>

    <div class="docs-card p8">
    <ul class="s-menu" role="menu">

    </ul>
    </div>

    <ul class="s-menu" role="menu">
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="…"></a>
    </li>
    </ul>
    +
    +
    +
    +
    Within a popover
    +
    + +
    +
    +
    +
    Within a card
    +
    + +
    +
    +
    +
    No container
    + +
    +
    +
    +
    + + +

    + You can split up your menu by using either titles, dividers, or some combination of the two. Titles help group similar conceptual actions—in this example, we’ve grouped all sharing options. We’ve also split our destructive actions into their own section using a divider. +

    +
    +
    <div class="s-popover px0 py4">
    <ul class="s-menu" role="menu">
    <li class="s-menu--title" role="separator"></li>
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="…"></a>
    </li>
    <li class="s-menu--divider" role="separator"></li>
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action s-menu--action__danger" href="…"></a>
    </li>
    </ul>
    </div>
    +
    +
    + +
    +
    +
    + + +

    + Icons can be added to menu items to help visually distinguish actions. Include the s-menu--icon class on the icon to ensure proper spacing and alignment. +

    +
    +
    <ul class="s-menu" role="menu">
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="#">
    @Svg.Home.With("s-menu--icon")
    Home
    </a>
    </li>
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="#">
    @Svg.Inbox.With("s-menu--icon")
    Inbox
    </a>
    </li>
    <li class="s-menu--item" role="menuitem">
    <a class="s-menu--action" href="#">
    @Svg.Settings.With("s-menu--icon")
    Settings
    </a>
    </li>
    </ul>
    + +
    + + +

    + To create selectable menu items, add .s-checkbox.s-checkbox__checkmark or .s-radio.s-radio__checkmark to the .s-menu--action element and include a radio or checkbox input as a child element. When the input is :checked, the corresponding menu item displays a checkmark. +

    +
    +
    <fieldset class="s-menu s-form-group">
    <legend class="s-menu--title"></legend>
    <div class="s-menu--item">
    <label class="s-menu--action s-radio s-radio__checkmark" for="…">
    <input type="radio" id="…" name="…" value="…">

    </label>
    </div>

    </fieldset>

    <fieldset class="s-menu s-form-group">
    <legend class="s-menu--title"></legend>
    <div class="s-menu--item">
    <label class="s-menu--action s-checkbox s-checkbox__checkmark" for="…">
    <input type="checkbox" id="…" name="…" value="…">

    </label>
    </div>

    </fieldset>
    +
    +
    +
    +
    With radio input
    +
    +
    + Select one +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    With checkbox input
    +
    +
    + Select multiple +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + +

    + In the case of user management, it’s appropriate to include radio options. In this example, we’re setting a user’s role. While our examples up to this point have all been simple unordered lists, the s-menu component works on any markup including fieldset. +

    +
    +
    <div class="s-menu" role="menu">
    <fieldset>
    <legend class="s-menu--title"></legend>
    <label class="s-menu--item s-radio" for="…">
    <input type="radio" name="…" id="…" role="menuitemradio" checked>
    <div>
    <div class="s-label"></div>
    <div class="s-description mt2"></div>
    </div>
    </label>
    <label class="s-menu--item s-radio" for="…">
    <input type="radio" name="…" id="…" role="menuitemradio">
    <div>
    <div class="s-label"></div>
    <div class="s-description mt2"></div>
    </div>
    </label>
    </fieldset>
    </div>
    +
    +
    + +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/modals/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/modals/fragment.html new file mode 100644 index 0000000000..3c8b84ab14 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/modals/fragment.html @@ -0,0 +1,1707 @@ + +
    + + + +

    Modals are dialog overlays that prevent the user from interacting with the rest of the website until an action is taken or the dialog is dismissed. Modals are purposefully disruptive and should be used thoughtfully and sparingly.

    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-modal + + + + + + N/A + + + + N/A + + Base parent container for modals.
    + + + .s-modal--dialog + + + + + + + + .s-modal + + + + + N/A + + Creates a container that holds the modal dialog with proper padding and shadows.
    + + + .s-modal--body + + + + + + + + .s-modal--dialog + + + + + N/A + + Adds proper styling to the modal dialog’s body text.
    + + + .s-modal--close + + + + + + + + .s-modal--dialog + + + + + N/A + + Used to dismiss a modal.
    + + + .s-modal--header + + + + + + + + .s-modal--dialog + + + + + N/A + + Adds proper styling to the modal dialog’s header.
    + + + .s-modal--footer + + + + + + + + .s-modal--dialog + + + + + N/A + + Adds the desired spacing to the row of button actions.
    + + + .s-modal__danger + + + + + + N/A + + + + + + .s-modal + + + Adds styling for potentially dangerous actions.
    + + + .s-modal__full + + + + + + N/A + + + + + + .s-modal--dialog + + + Makes the container take up as much of the screen as possible.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + data-controller="s-modal" + + + + + + + Controller element + + + + Wires up the element to the modal controller. This may be a .s-modal element or a wrapper element.
    + + + data-s-modal-target="modal" + + + + + + + .s-modal element + + + + Wires up the element that is to be shown/hidden
    + + + data-s-modal-target="initialFocus" + + + + + + + Any child focusable element + + + + Designates which element to focus on modal show. If absent, defaults to the first focusable element within the modal.
    + + + data-action="s-modal#toggle" + + + + + + + Any child focusable element + + + + Wires up the element that is to be shown/hidden
    + + + data-action="s-modal#hide" + + + + + + + Any child focusable element + + + + Wires up the element that is to be shown/hidden
    + + + data-s-modal-return-element="[css selector]" + + + + + + + Controller element + + + + Designates the element to return focus to when the modal is closed. If left unset, focus is not altered on close.
    + + + data-s-modal-remove-when-hidden="true" + + + + + + + Controller element + + + + Removes the modal from the DOM entirely when it is hidden
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + s-modal:show + + + + + + + Modal target + + + + Fires immediately before showing the modal. Calling .preventDefault() cancels the display of the modal.
    + + + s-modal:shown + + + + + + + Modal target + + + + Fires after the modal has been visually shown
    + + + s-modal:hide + + + + + + + Modal target + + + + Fires immediately before hiding the modal. Calling .preventDefault() cancels the removal of the modal.
    + + + s-modal:hidden + + + + + + + Modal target + + + + Fires after the modal has been visually hidden
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + dispatcher + + + + + + + Modal target + + + + Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the modal that caused it to hide, etc.
    + + + returnElement + + + + + + + Modal target + + + + Contains the Element to return focus to on hide. If a value is set to this property inside an event listener, it will be updated on the controller as well.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + Stacks.showModal + + + + + + + Controller element + + + + Helper to manually show an s-modal element via external JS
    + + + Stacks.hideModal + + + + + + + Controller element + + + + Helper to manually hide an s-modal element via external JS
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    + Modals are designed with accessibility in mind by default. When a modal is open, navigation with the keyboard will be constrained to only those elements within the modal. + To ensure maximum compatibility, all a tags must have href attributes and any default focusable items you don’t want focusable must have their tabindex set to -1. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + aria-describedby="[id]" + + + + + + + Modal target + + + + Supply the modal’s summary copy id. Assistive technologies (such as screen readers) use this to attribute to associate static text with a widget, element groups, headings, definitions, etc. (Source)
    + + + aria-hidden="[state]" + + + + + + + Modal target + + + + Informs assistive technologies (such as screen readers) if they should ignore the element. This should not be confused with the HTML5 hidden attribute which tells the browser to not display an element. (Source)
    + + + aria-label="[text]" + + + + + + + Modal target + + + + Labels the element for assistive technologies (such as screen readers). (Source)
    + + + aria-labelledby="[id]" + + + + + + + Modal target + + + + Supply the modal’s title id here. Assistive technologies (such as screen readers) use this to attribute to catalog the document objects correctly. (Source)
    + + + role="dialog" + + + + + + + Modal target + + + + Identifies dialog elements for assistive technologies (Source)
    + + + role="document" + + + + + + + Modal target + + + + Helps assistive technologies to switch their reading mode from the larger document to a focused dialog window. (Source)
    +
    + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + +
    +
    + + +
    +
    +

    You can wire up a modal along with the corresponding button by wrapping both in a s-modal controller and attaching the corresponding data-* attributes. Make sure to set data-s-modal-return-element if you want your button to refocus on close.

    +
    +
    <div data-controller="s-modal" data-s-modal-return-element="#js-return-focus">
    <button type="button" id="js-return-focus" data-action="s-modal#show">Show modal</button>
    <aside class="s-modal" data-s-modal-target="modal" id="modal-base" tabindex="-1" role="dialog" aria-labelledby="modal-title" aria-describedby="modal-description" aria-hidden="true">
    <div class="s-modal--dialog" role="document">
    <h1 class="s-modal--header" id="modal-title"></h1>
    <p class="s-modal--body" id="modal-description"></p>
    <div class="d-flex gx8 s-modal--footer">
    <button class="s-btn" type="button"></button>
    <button class="s-btn s-btn__danger" type="button" data-action="s-modal#hide"></button>
    </div>
    <button class="s-modal--close s-btn s-btn__clear" type="button" aria-label="@_s("Close")" data-action="s-modal#hide">
    @Svg.Cross
    </button>
    </div>
    </aside>
    </div>
    +
    + +
    +
    +

    Alternatively, you can also use the built in helper to display a modal straight from your JS file. This is useful for the times when your modal markup can’t live next to your button or if it is generated dynamically (e.g. from an AJAX call).

    +
    +
    <button class="s-btn js-modal-toggle" type="button">Show modal</button>
    <aside class="s-modal" id="modal-base" role="dialog" aria-labelledby="modal-title" aria-describedby="modal-description" aria-hidden="true"
    data-controller="s-modal" data-s-modal-target="modal">

    <div class="s-modal--dialog" role="document">
    <h1 class="s-modal--header" id="modal-title"></h1>
    <p class="s-modal--body" id="modal-description"></p>
    <div class="d-flex gx8 s-modal--footer">
    <button class="s-btn" type="button"></button>
    <button class="s-btn s-btn__clear" type="button" data-action="s-modal#hide"></button>
    </div>
    <button class="s-modal--close s-btn s-btn__clear" type="button" aria-label="@_s("Close")" data-action="s-modal#hide">
    @Svg.Cross
    </button>
    </div>
    </aside>
    +
    + +
    +
    document.querySelector(".js-modal-toggle").addEventListener("click", function(e) {
    Stacks.showModal(document.querySelector("#modal-base"));
    });
    +
    +
    + +
    + +

    Not every modal is sunshine and rainbows. Sometimes there are potentially drastic things that could happen by hitting a confirm button in a modal—such as deleting an account. In moments like this, add the .s-modal__danger class to .s-modal. Additionally, you should switch the buttons to .s-btn__danger, since the main call to action will be destructive.

    +
    +
    <aside class="s-modal s-modal__danger" id="modal-base" tabindex="-1" role="dialog" aria-labelledby="modal-title" aria-describedby="modal-description" aria-hidden="true"
    data-controller="s-modal" data-s-modal-target="modal">

    <div class="s-modal--dialog" role="document">
    <h1 class="s-modal--header" id="modal-title"></h1>
    <p class="s-modal--body" id="modal-description"></p>
    <div class="d-flex gx8 s-modal--footer">
    <button class="s-btn s-btn__danger" type="button"></button>
    <button class="s-btn s-btn__clear" type="button" data-action="s-modal#hide"></button>
    </div>
    <button class="s-modal--close s-btn s-btn__clear" type="button" aria-label="@_s("Close")" data-action="s-modal#hide">
    @Svg.Cross
    </button>
    </div>
    </aside>
    +
    + +
    +
    +
    + +
    + +

    Sometimes it’s appropriate to confirm a user’s action with some confetti. You can combine our confetti background utility with some extra spacing by adding the s-modal__celebration modifier.

    +
    +
    <aside class="s-modal s-modal__celebration" id="modal-base" tabindex="-1" role="dialog" aria-labelledby="modal-title" aria-describedby="modal-description" aria-hidden="true" data-controller="s-modal" data-s-modal-target="modal">
    <div class="s-modal--dialog" role="document">
    <h1 class="s-modal--header" id="modal-title"></h1>
    <p class="s-modal--body" id="modal-description"></p>
    <div class="d-flex gx8 s-modal--footer">
    <button class="s-btn" type="button"></button>
    <button class="s-btn s-btn__clear" type="button" data-action="s-modal#hide"></button>
    </div>
    <button class="s-modal--close s-btn s-btn__clear" type="button" aria-label="@_s("Close")" data-action="s-modal#hide">
    @Svg.Cross
    </button>
    </div>
    </aside>
    +
    + +
    +
    +
    + +
    + +

    Most modal dialogs look good by default, but may need some combination of .ws[x] or .wmx[x] classes applied to .s-modal--dialog. Additionally, the following class is available for modals:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Value +
    + + + .s-modal__full + + + + + + + 100% - 48px + + + +
    +
    + + + + + + + + + + + + + + + +
    + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/navigation/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/navigation/fragment.html new file mode 100644 index 0000000000..03aa69a33d --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/navigation/fragment.html @@ -0,0 +1,1157 @@ + +
    + + + +

    Our navigation component is a collection of buttons that respond gracefully to various window sizes and parent containers.

    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-navigation + + + + + + N/A + + + + N/A + + Base parent container for navigation.
    + + + .s-navigation--item + + + + + + + + .s-navigation + + + + + N/A + + The individual item in a navigation
    + + + .s-navigation--avatar + + + + + + + + .s-navigation--item + + + + + N/A + + Applies styling to the avatar of the navigation item
    + + + .s-navigation--icon + + + + + + + + .s-navigation--item + + + + + N/A + + Applies styling to the icon of the navigation item
    + + + .s-navigation--item-text + + + + + + + + .s-navigation--item + + + + + N/A + + The element meant to contain the text of the navigation item
    + + + .s-navigation__scroll + + + + + + N/A + + + + + + .s-navigation + + + When the navigation items overflow the width of the component, enable horizontal scrolling. By default, navigation items will wrap. This should not be applied to vertical navigations.
    + + + .s-navigation__sm + + + + + + N/A + + + + + + .s-navigation + + + Tightens up the overall spacing and reduces the text size
    + + + .s-navigation__vertical + + + + + + N/A + + + + + + .s-navigation + + + Renders the navigation vertically.
    + + + .s-navigation--item__dropdown + + + + + + N/A + + + + + + .s-navigation--item + + + Adds a small caret that indicates a dropdown
    + + + .is-selected + + + + + + N/A + + + + + + .s-navigation--item + + + Applies to a navigation item that’s currently selected / active
    +
    + + + + + + + + + + + + + + + + + + + +

    Horizontal layout shift may occur when changing which item is selected within the navigation component. We recommend including the data-text attribute on the child navigation item text element with the value duplicating the text of the item to prevent the layout shift. See below for examples.

    + +
    + + + + + + + + + + + + + + + + + +
    ItemApplied toDescription
    data-text="[value]".s-navigation--item-textPrevents layout shift when changing selected button. Value should be the text of the navigation item.
    +
    + +
    +
    + +

    Care should be taken to only include at most one primary and one secondary navigation per page. Using multiple navigations with the same style can cause user confusion.

    +

    Forcing a navigation to scroll is an established pattern on mobile devices, so it may be appropriate to use it in that context. Wrapping tends to make more sense on larger screens, where the user isn’t forced to scroll passed a ton of navigation chrome.

    + + +

    Use the default size for primary page-level navigation, typically placed near the top of the page.

    +
    +
    <nav aria-label="…">
    <ul class="s-navigation">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </nav>
    +
    +

    Full width

    + + +

    Wrapped

    + +
    +
    + + +

    Use the icon variant for a prominent, secondary horizontal navigation bar that directs users to main page sections. Limit use to one per page and do not use it for in-page filtering. Icon styles should change with the state of the item (ex: selected items use a fill icon)

    + +
    +
    <nav aria-label="…">
    <ul class="s-navigation">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    @Svg.QandAFill.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Content">Content</span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    @Svg.TagStack.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Topics">Topics</span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    @Svg.UserStack.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="People">People</span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item s-navigation--item__dropdown">
    @Svg.Settings.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Settings">Settings</span>
    </a>
    </li>
    </ul>
    </nav>
    +
    + +
    +
    + + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__scroll">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </nav>
    + +
    + + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__scroll">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item s-navigation--item__dropdown">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </nav>
    +
    + +
    +
    + + +

    Use the small variant for on-page filtering in space-constrained areas, such as controlling small lists. Avoid using icons on the small variant.

    +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__sm">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </nav>
    + +
    +
    + +
    + +

    Stacks also provides a vertical variation with support for section headers.

    + + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__vertical">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </nav>
    + +
    + + +

    Vertical navigation items with icons have a larger padding.

    + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__vertical">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    @Svg.HomeFill.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Home">Home</span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item d-flex jc-space-between">
    @Svg.Jobs.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Jobs">Jobs</span>
    <div class="s-badge s-badge__xs s-badge__featured ml-auto">New</div>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item d-flex jc-space-between">
    @Svg.Bookmark.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Saves">Saves</span>
    <div class="s-activity-indicator ml-auto">
    3 <div class="v-visible-sr">new activities</div>
    </div>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    @Svg.UserStack.With("s-navigation--icon")
    <span class="s-navigation--item-text" data-text="Users">Users</span>
    </a>
    </li>
    </ul>
    </nav>
    + +
    + + + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__vertical">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <div class="s-navigation--avatar s-avatar">
    <img class="s-avatar--image" src="https://picsum.photos/32" />
    </div>
    <span class="s-navigation--item-text" data-text="Humson">Humson</span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <div class="s-navigation--avatar s-avatar">
    <img class="s-avatar--image" src="https://picsum.photos/32" />
    </div>
    <span class="s-navigation--item-text" data-text="Samson">Samson</span>
    </a>
    </li>
    </ul>
    </nav>
    + +
    + +
    +
    <nav aria-label="…">
    <ul class="s-navigation s-navigation__vertical">
    <li>
    <h4 class="s-navigation--title" id="nav-section1"></h4>
    <ul aria-labelledby="nav-section1">
    <li>
    <a href="…" class="s-navigation--item is-selected">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </li>

    <li>
    <h4 class="s-navigation--title" id="nav-section2"></h4>
    <ul aria-labelledby="nav-section2">
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    <li>
    <a href="…" class="s-navigation--item">
    <span class="s-navigation--item-text" data-text="…"></span>
    </a>
    </li>
    </ul>
    </li>
    </ul>
    </nav>
    +
    + +
    +
    +
    + + +

    This component can be used for in-page navigation patterns, using button elements in place of link. When doing so, it may be appropriate to annotate elements with role="tablist" to indicate the dynamic behavior.

    + +
    +
    <nav aria-label="…">
    <div role="tablist" class="s-navigation">
    <button type="button" class="s-navigation--item is-selected" role="tab" aria-selected="true">
    <span class="s-navigation--item-text" data-text="…"></span>
    </button>
    <button type="button" class="s-navigation--item" role="tab" aria-selected="false">
    <span class="s-navigation--item-text" data-text="…"></span>
    </button>
    <button type="button" class="s-navigation--item" role="tab" aria-selected="false">
    <span class="s-navigation--item-text" data-text="…"></span>
    </button>
    </div>
    </nav>
    +
    + +
    +
    + +
    + + +

    Stacks provides a Stimulus controller for interactive tab-style navigation within a single document.

    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AttributeApplied toDescription
    data-controller="s-navigation-tablist".s-navigationWires up the element to the tooltip controller.
    role="tablist".s-navigationIndicates to accessibility tools that the navigation element is a tab list.
    role="tab".s-navigation--itemIndicates to accessibility tools that the navigation item is a tab. Used by the controller to automatically connect mouse and keyboard events.
    class="s-navigation--item is-selected"Initially selected .s-navigation--item elementsProvides visual indication that the tab is selected.
    aria-selected="{true|false}".s-navigation--itemIndicates to accessibility tools which tab is selected. Used by the controller to track the selected tab.
    id="{TAB_ID}".s-navigation--itemA unique id for the tab. Will be used by the tab panel to refer back to the button via aria-labelledby="{TAB_ID}".
    aria-controls="{PANEL_ID}".s-navigation--itemA unique id for the panel element corresponding to the tab.
    tabindex="-1"Initially unselected .s-navigation--item elementsIndicates to the browser that the element should be excluded from tab navigation. When interacting with the control, arrow keys will be used to switch tabs.
    role="tabpanel"Tab panel elementsIndicates to accessibility tools that the element is a panel corresponding to a tab.
    id="{PANEL_ID}"Tab panel elementsA unique id for the panel. Used by the tab to identify the panel that will be shown when it is active, via aria-controls="{PANEL_ID}".
    aria-labelledby="{TAB_ID}"Tab panel elementsRefers to the id of the tab element that corresponds to the panel.
    class="d-none"Initially hidden tab panel elementsSuppressed display of tab panels.
    +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    EventElementDescription
    s-navigation-tablist:selectController elementDefault preventable Fires immediately before a new tab is selected. Calling .preventDefault() cancels the display of the tab and keeps the state unchanged.
    s-navigation-tablist:selectedController elementFires immediately after the new tag has been selected.
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    event.detailApplicable eventsDescription
    oldTabs-navigation-tablist:*Contains HTMLElement | null representing the previously selected tab, if one was selected. This is the element with role="tab", not the panel itself which can be found using the tab's aria-controls attribute.
    newTabs-navigation-tablist:*Contains HTMLElement representing the newly selected tab. This is the element with role="tab", not the panel itself which can be found using the tab's aria-controls attribute.
    +
    + + +
    +
    <nav aria-label="…">
    <div class="s-navigation" role="tablist" data-controller="s-navigation-tablist">
    <button
    type="button"
    role="tab"
    id="tab-question"
    aria-selected="true"
    aria-controls="panel-question"
    class="s-navigation--item is-selected">

    <span class="s-navigation--item-text" data-text="Task">Task</span>
    </button>
    <button
    type="button"
    role="tab"
    id="tab-answers"
    aria-selected="false"
    aria-controls="panel-answers"
    tabindex="-1"
    class="s-navigation--item">

    <span class="s-navigation--item-text" data-text="Answers">Answers</span>
    </button>
    </div>
    </nav>

    <div id="panel-question" aria-labelledby="tab-question">

    </div>

    <div id="panel-answers" aria-labelledby="tab-answers" class="d-none">

    </div>
    +
    + + + +
    +
    Review the following question
    +

    +
    + +
    +
    Answers
    +

    +
    + +
    +
    Potential Duplicate A
    +

    +
    + +
    +
    Potential Duplicate B
    +

    +
    +
    +
    +
    + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/notices/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/notices/fragment.html new file mode 100644 index 0000000000..b40cabc7dc --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/notices/fragment.html @@ -0,0 +1,1892 @@ + +
    + + + +

    Notices deliver System and Engagement messaging, informing the user about product or account statuses and related actions.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-notice + + + + + + + .s-toast when rendered as a toast + + + + + + N/A + + Base notice parent class.
    + + + .s-notice--actions + + + + + + + + .s-notice + + + + + N/A + + Container styling for notice actions including the dismiss button.
    + + + .s-notice--dismiss + + + + + + + + .s-notice + + + + + N/A + + Applies to child button element within the notice to position it appropriately.
    + + + .s-notice__activity + + + + + + N/A + + + + + + .s-notice + + + Applies activity (pink) visual styles.
    + + + .s-notice__danger + + + + + + N/A + + + + + + .s-notice + + + Applies danger (red) visual styles.
    + + + .s-notice__featured + + + + + + N/A + + + + + + .s-notice + + + Applies featured (purple) visual styles.
    + + + .s-notice__important + + + + + + N/A + + + + + + .s-notice + + + Applies an important visual style. This should be used for time-sensitive, pressing information that needs to be noticed by the user.
    + + + .s-notice__info + + + + + + N/A + + + + + + .s-notice + + + Applies info (blue) visual styles.
    + + + .s-notice__success + + + + + + N/A + + + + + + .s-notice + + + Applies success (green) visual styles.
    + + + .s-notice__warning + + + + + + N/A + + + + + + .s-notice + + + Applies warning (yellow) visual styles.
    + + + .s-toast + + + + + + N/A + + + + N/A + + Parent of .s-notice. See the Toast section for more information.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Item + + Modifies + + Description +
    + + + aria-labelledby="[id]" + + + + + + + + .s-toast + + + Used to reference the alert message within the dialog. If you are using .s-toast, this must be applied.
    + + + aria-hidden="[state]" + + + + + + + + .s-toast + + + Informs assistive technologies (such as screen readers) if they should ignore the element. When applied to .s-toast, Stacks will use this attribute to show or hide the toast.
    + + + aria-label="[text]" + + + + + + + + .s-btn + + + Labels the element for assistive technologies (such as screen readers). This should be used on any button that does not contain text content.
    + + + role="alert" + + + + + + + + .s-notice + + + A form of live region which contains important, usually time-sensitive, information. Elements with an alert role have an implicit aria-live value of assertive and implicit aria-atomic value of true.
    + + + role="alertdialog" + + + + + + + + .s-toast + + + The wrapping content area of an alert. Elements with the alertdialog role must use the aria-describedby attribute to reference the alert message within the dialog.
    + + + role="status" + + + + + + + + .s-notice + + + A form of live region which contains advisory information but isn't important enough to justify an alert role. Elements with a status role have an implicit aria-live value of polite and implicit aria-atomic value of true. If the element controlling the status appears in a different area of the page, you must make the relationship explicit with the aria-controls attribute.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    <div class="s-notice" role="status">
    <span class="s-notice--icon">@Svg.Help</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__info" role="status">
    <span class="s-notice--icon">@Svg.Info</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__success" role="status">
    <span class="s-notice--icon">@Svg.Check</span>
    <span><a href="…"></a></span>
    </div>
    <div class="s-notice s-notice__warning" role="status">
    <span class="s-notice--icon">@Svg.Alert</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__danger" role="status">
    <span class="s-notice--icon">@Svg.AlertFill</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__featured" role="status">
    <span class="s-notice--icon">@Svg.Star</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__activity" role="status">
    <span class="s-notice--icon">@Svg.Notification</span>
    <span></span>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +

    Used sparingly for when an important notice needs to be noticed

    +
    +
    <div class="s-notice s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Help</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__info s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Info</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__success s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Info</span>
    <span><a href="…"></a></span>
    </div>
    <div class="s-notice s-notice__warning s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Alert</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__danger s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.AlertFill</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__featured s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Star</span>
    <span></span>
    </div>
    <div class="s-notice s-notice__activity s-notice__important" role="alert">
    <span class="s-notice--icon">@Svg.Notification</span>
    <span></span>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +

    We recommend using descendent anchor classes, typically .s-anchors.s-anchors__inherit.s-anchors__underlined for notices containing links generated from markdown when you cannot manually generate the inner html.

    +
    +
    <div class="s-notice s-notice__info" role="presentation">
    <span>Notice with <a href="#" class="s-link">default link style</a></span>
    </div>
    <div class="s-notice s-notice__info s-anchors s-anchors__inherit s-anchors__underlined" role="presentation">
    <span>Notice with <a href="#">custom link style</a></span>
    </div>
    +
    +
    + + +
    +
    +
    +
    + +
    + +
    + We are phasing out Toasts due to significant accessibility barriers. Avoid this component for new features. Instead, prioritize integrated alternatives—such as component state changes or inline messages—to provide accessible feedback directly where the user is focused. +
    + +

    + Toasts are floating notices that are aligned to the center top of the page. They disappear after a set time. + Visibility is changed with animation by toggling between aria-hidden="true" and aria-hidden="false". + When including a dismiss button the .s-notice--dismiss class should be applied to the button for toast-specific styling. +

    + +
    +
    <div
    role="alertdialog"
    id="example-toast"
    class="s-toast"
    aria-hidden="true"
    aria-labelledby="toast-message"
    data-controller="s-toast"
    data-s-toast-target="toast"
    data-s-toast-return-element=".js-example-toast-open[data-target='#example-toast']">

    <aside class="s-notice d-flex wmn4">
    <span class="s-notice--icon">@Svg.Info</span>
    <span>Toast notice message with an undo button</span>
    <div class="s-notice--actions">
    <button type="button" class="s-link s-link__underlined">Undo</button>
    <button type="button" class="s-link s-notice--dismiss js-toast-close" aria-label="Dismiss">@Svg.Cross</button>
    </div>
    </aside>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Attribute + + Modifies + + Description +
    + + + data-controller="s-toast" + + + + + + + Controller element + + + + Wires up the element to the toast controller. This may be a .s-toast element or a wrapper element.
    + + + data-s-toast-target="toast" + + + + + + + Controller element + + + + Wires up the element that is to be shown/hidden
    + + + data-s-toast-target="initialFocus" + + + + + + + Any child focusable element + + + + Designates which element to focus on toast show. If absent, defaults to the first focusable element within the toast.
    + + + data-action="s-toast#toggle" + + + + + + + Toggling element + + + + Wires up the element to toggle the visibility of a toast
    + + + data-s-toast-return-element="[css selector]" + + + + + + + Controller element + + + + (optional) Designates the element to return focus to when the toast is closed. If left unset, focus is not altered on close.
    + + + data-s-toast-remove-when-hidden="true" + + + + + + + Controller element + + + + (optional) Removes the toast from the DOM entirely when it is hidden
    +
    + + + + + + + + + + + + + + + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event + + Modifies + + Description +
    + + + s-toast:show + + + + + + + Toast target + + + + Fires immediately before showing the toast. Calling .preventDefault() cancels the display of the toast.
    + + + s-toast:shown + + + + + + + Toast target + + + + Fires after the toast has been visually shown
    + + + s-toast:hide + + + + + + + Toast target + + + + Fires immediately before hiding the toast. Calling .preventDefault() cancels the removal of the toast.
    + + + s-toast:hidden + + + + + + + Toast target + + + + Fires after the toast has been visually hidden
    +
    + + + + + + + + + + + + + + + +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + event.detail + + Applicable events + + Description +
    + + + dispatcher + + + + + + + + s-toast:* + + + Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the toast that caused it to hide, etc.
    + + + returnElement + + + + + + + + s-toast:show,
    s-toast:hide
    + + +
    Contains the Element to return focus to on hide. If a value is set to this property inside an event listener, it will be updated on the controller as well.
    +
    + + + + + + + + + + + + + + + +
    + + +

    + The following helpers are available to manually show and hide a toast notice. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Function + + Parameters + + Description +
    + + + Stacks.showToast + + + + + + + element + + + + Helper to manually show an s-toast element via external JS
    + + + Stacks.hideToast + + + + + + + element + + + + Helper to manually hide an s-toast element via external JS
    +
    + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/page-titles/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/page-titles/fragment.html new file mode 100644 index 0000000000..b11c32a82b --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/page-titles/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Page titles

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/pagination/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/pagination/fragment.html new file mode 100644 index 0000000000..83ff0cef19 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/pagination/fragment.html @@ -0,0 +1,484 @@ + +
    + + + +

    Pagination splits content into pages, as seen on questions, tags, users, and jobs listings.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-pagination + + + + + + N/A + + + + N/A + + Base pagination style.
    + + + .s-pagination--item + + + + + + + + .s-pagination + + + + + N/A + + A child element that's used as a link and labeled with the page number.
    + + + .s-pagination--item__clear + + + + + + N/A + + + + + + .s-pagination--item + + + Clears the background and removes any interactivity. Used for ellipses and descriptions.
    + + + .s-pagination--item__nav + + + + + + N/A + + + + + + .s-pagination--item + + + Styles the Next or Previous button with a circular background and fixed dimensions. Typically used with an icon to indicate navigation to the next page.
    + + + .is-selected + + + + + + N/A + + + + + + .s-pagination--item + + + Active state that's applied to the current page.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    <nav class="s-pagination" aria-label="pagination">
    <ul>
    <li>
    <a class="s-pagination--item s-pagination--item__nav" href="#">
    @Svg.ArrowLeft
    <span class="v-visible-sr">previous page</span>
    </a>
    </li>
    <li>
    <a class="s-pagination--item is-selected" href="…" aria-current="page">
    <span class="v-visible-sr">page</span>
    1
    </a>
    </li>
    <li>
    <a class="s-pagination--item" href="…">
    <span class="v-visible-sr">page</span>
    2
    </a>
    </li>
    <li>
    <a class="s-pagination--item" href="…">
    <span class="v-visible-sr">page</span>
    3
    </a>
    </li>
    <li>
    <a class="s-pagination--item" href="…">
    <span class="v-visible-sr">page</span>
    4
    </a>
    </li>
    <li>
    <a class="s-pagination--item" href="…">
    <span class="v-visible-sr">page</span>
    5
    </a>
    </li>
    <li>
    <span class="s-pagination--item s-pagination--item__clear"></span>
    </li>
    <li>
    <a class="s-pagination--item" href="…">
    <span class="v-visible-sr">page</span>
    122386
    </a>
    </li>
    <li>
    <a class="s-pagination--item s-pagination--item__nav" href="…">
    @Svg.ArrowRight
    <span class="v-visible-sr">next page</span>
    </a>
    </li>
    </ul>
    </nav>
    +
    + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/popovers/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/popovers/fragment.html new file mode 100644 index 0000000000..8543bf3973 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/popovers/fragment.html @@ -0,0 +1,1806 @@ + +
    + + + +

    Popovers are small content containers that provide a contextual overlay. They can be used as in-context feature explanations, dropdowns, or tooltips.

    + + + + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-popover + + + + + + N/A + + + + N/A + + Base parent container for popovers
    + + + .s-popover--close + + + + + + + + .s-popover + + + + + N/A + + Used to dismiss a popover
    + + + .s-popover--content + + + + + + + + .s-popover + + + + + N/A + + Wrapper around the popover content to apply appropriate overflow styles
    + + + .s-popover__tooltip + + + + + + N/A + + + + + + .s-popover + + + Removes minimum size constraints to support shorter tooltip text
    + + + .is-visible + + + + + + N/A + + + + + + .s-popover + + + This class toggles the popover visibility
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    Stacks provides a Stimulus controller that allows you to interactively display a popover from a source element. Positioning direction are managed for you by Popper.js, a powerful popover positioning library we've added as a dependency. These popovers are automatically hidden when user click outside the popover or tap the Esc key.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Attribute + + Applied to + + Description +
    + + + id="{POPOVER_ID}" + + + + + + + + .s-popover + + + A unique id that the popover’s toggling element can target. Matches the value of [aria-controls] on the toggling element.
    + + + data-controller="s-popover" + + + + + + + Controller element + + + + Wires up the element to the popover controller. This may be a toggling element or a wrapper element.
    + + + data-s-popover-reference-selector="[css selector]" + + + + + + + Controller element + + + + (optional) Designates the element to use as the popover reference. If left unset, the value defaults to the controller element.
    + + + aria-controls="{POPOVER_ID}" + + + + + + + Reference element + + + + Associates the element to the desired popover element.
    + + + data-action="s-popover#toggle" + + + + + + + Toggling element + + + + Wires up the element to toggle the visibility of a generic popover.
    + + + data-s-popover-toggle-class="[class list]" + + + + + + + Controller element + + + + Adds an optional space-delineated list of classes to be toggled on the originating element when the popover is shown or hidden.
    + + + data-s-popover-placement="[placement]" + + + + + + + Controller element + + + + Dictates where to place the popover in relation to the reference element. By default, the placement value is bottom. Accepted placements are auto, top, right, bottom, left. Each placement can take an additional -start and -end variation.
    + + + data-s-popover-auto-show="[true|false]" + + + + + + + Controller element + + + + (optional) If true, the popover will appear immediately when the Stacks controller is first connected. This should be used in place of .is-visible for displaying popovers on load as it will prevent the popover from appearing before it has been correctly positioned.
    + + + data-s-popover-hide-on-outside-click="[always|never|if-in-viewport|after-dismissal]" + + + + + + + Controller element + + + + (optional) Default: always
    • If always, the popover will appear disappear when outside clicks occur.
    • If if-in-viewport, the popover will only disappear when outside clicks occur if the popover is in the viewport.
    • If never, the popover will not disappear on outside clicks and will only be dismissed through other means, e.g. data-target="s-popover#hide".
    • If after-dismissal, the popover will not disappear on outside clicks unless it has been dismissed some other way at least once.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event + + Description +
    + + + s-popover:show + + + + Fires immediately before showing and positioning the popover. This fires before the popover is first displayed to the user, and can be used to create or initialize the popover element. Calling .preventDefault() cancels the display of the popover.
    + + + s-popover:shown + + + + Fires immediately after showing the popover.
    + + + s-popover:hide + + + + Fires immediately before hiding the popover. Calling .preventDefault() prevents the removal of the popover.
    + + + s-popover:hidden + + + + Fires immediately after hiding the popover.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event + + Element + + Description +
    + + + dispatcher + + + + + + + + s-popover:* + + + Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the popover that caused it to hide, etc.
    +
    + + + + + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    + + + + + + +
    +
    +
    + +
    + +

    To enable interactive popovers, you will need to add the above attributes to the popover’s originating button. Custom positioning can be specified using the data-s-popover-placement. In the following example, we’ve chosen bottom-start. No positioning classes need to be added to your markup, only the data attributes.

    +

    To promote being able to tab to an open popover, it’s best to place the popover immediately after the toggling button in the markup as siblings.

    + +
    +
    <button class="s-btn s-btn__dropdown" role="button"
    aria-controls="popover-example"
    aria-expanded="false"
    data-controller="s-popover"
    data-action="s-popover#toggle"
    data-s-popover-placement="bottom-start"
    data-s-popover-toggle-class="is-selected">


    </button>
    <div class="s-popover"
    id="popover-example"
    role="menu">

    <div class="s-popover--content">

    </div>
    </div>
    +
    + + +
    +
    +
    + +
    + +

    In the case of new feature callouts, it may be appropriate to include an explicit dismiss button. You can add one using the styling provided by .s-popover--close.

    +

    In order for to close the popover with an explicit close button, you’ll need to add the controller to a parent as illustrated in the following example code:

    +
    +
    <div class="…"
    data-controller="s-popover"
    data-s-popover-reference-selector="#reference-element">


    <button id="reference-element" class="s-btn s-btn__dropdown"
    aria-controls="popover-example"
    aria-expanded="true"
    data-action="s-popover#toggle">


    </button>

    <div id="popover-example" class="s-popover is-visible" role="menu">
    <button class="s-popover--close s-btn s-btn__tonal" aria-label="Close"
    data-action="s-popover#toggle">

    @Svg.Cross
    </button>
    <div class="s-popover--content">

    </div>
    </div>
    </div>
    +
    +
    + +
    +

    Dismissible persistent popover presented with a close button

    +
    +
    +
    +
    +
    + +
    + +

    There may be cases where you need to show or hide a popover via JavaScript. For example, if you need to show a popover at a specific time or if you need to hide a popover from an event outside of the controller, Stacks provides convenience methods to achieve this.

    +
    +
    Stacks.application.register("section", class extends Stacks.StacksController {
    static targets = ["help"];

    showHelp(event) {
    Stacks.showPopover(this.helpTarget);
    event.stopPropagation();
    }
    hideHelp(event) {
    Stacks.hidePopover(this.helpTarget);
    }
    });
    +
    +
    +
    +

    Lorem ipsum

    +
    + + +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et metus molestie nulla luctus sodales ac luctus justo. Aenean iaculis ac ante sit amet aliquam. Duis dolor velit, imperdiet sed mauris eu, sollicitudin egestas nisl. Ut vitae nulla eu risus iaculis semper sit amet vitae tortor. Sed convallis lacus quis libero placerat finibus. Phasellus pulvinar vel nunc eu tempor. Sed pharetra magna a felis egestas placerat. Sed imperdiet dui a sem fermentum, eget consectetur elit feugiat. Phasellus non condimentum orci. Nam id molestie elit, ut gravida metus. Vivamus vel nunc risus. Maecenas posuere sit amet tellus vel laoreet. Nulla lacus mauris, rhoncus eu laoreet quis, mattis vehicula nisl. Integer efficitur quam et nisi luctus scelerisque. Mauris efficitur lectus ac malesuada congue.

    + +
    +
    +
    +
    + +
    +

    JavaScript configuration (popovers)

    Section titled JavaScript configuration (popovers)
    +

    Situations may also arise where popovers need to be attached to an element after the document is rendered. For example, a button could have a contextual menu that is too expensive to serve up on every page load.

    +

    Popovers can be attached to an element after the fact using Stacks.attachPopover.

    +

    This method takes three parameters, the element to attach the popover to, the popover either as an element or an HTML string, and optional options for displaying the popover.

    + +
    +
    Stacks.application.register("actions", class extends Stacks.StacksController {

    var loaded = false;

    async load() {
    if (this.loaded) { return; }
    Stacks.attachPopover(this.element,
    await fetch(`/posts/{postId}/actions`),
    { autoShow: true, toggleOnClick: true });
    this.loaded = true;
    }
    });
    +
    + +
    +
    +
    +
    + +
    + + +

    When a popover is intended only for display as an on-hover tooltip and contains no interactive text, the s-tooltip controller can be used in place of s-popover. This is a separate controller that can be used alongside s-popover on a single target element.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Attribute + + Applied to + + Description +
    + + + id="{POPOVER_ID}" + + + + + + + + .s-popover + + + A unique id that the popover’s toggling element can target. Matches the value of [aria-describedby] on the toggling element.
    + + + data-controller="s-tooltip" + + + + + + + Controller element + + + + Wires up the element to the tooltip controller.
    + + + data-s-tooltip-reference-selector="[css selector]" + + + + + + + Controller element + + + + (optional) Designates the element to use as the tooltip reference. If left unset, the value defaults to the controller element.
    + + + aria-describedby="{POPOVER_ID}" + + + + + + + Reference element + + + + Associates the element to the desired popover element.
    + + + title="{TITLE}" + + + + + + + Controller element + + + + If aria-describedby is not present or valid, and the title attribute exists, the title will be removed from the element and be used to create a popover immediately after the element. All content will be escaped and inserted as text.
    + + + data-s-tooltip-html-title="{TITLE}" + + + + + + + Controller element + + + + Acts the exact same as the title attribute, but inserts the raw text directly as html. If both this and the title attribute exist on the element, this attribute will be used.
    + + + data-s-tooltip-placement="[placement]" + + + + + + + Controller element + + + + Dictates where to place the tooltip in relation to the reference element. By default, the placement value is bottom. Accepted placements are auto, top, right, bottom, left. Each placement can take an additional -start and -end variation.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event + + Element + + Description +
    + + + s-tooltip:show + + + + + + + Controller element + + + + Default preventable Fires immediately before showing and positioning the tooltip. This fires before the tooltip is first displayed to the user, and can be used to create or initialize the tooltip element. Calling .preventDefault() cancels the display of the popover.
    + + + s-tooltip:shown + + + + + + + Controller element + + + + Fires immediately after showing the tooltip.
    + + + s-tooltip:hide + + + + + + + Controller element + + + + Default preventable Fires immediately before hiding the tooltip. Calling .preventDefault() prevents the removal of the tooltip.
    + + + s-tooltip:hidden + + + + + + + Controller element + + + + Fires immediately after hiding the tooltip.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Event + + Element + + Description +
    + + + dispatcher + + + + + + + + s-tooltip:* + + + Contains the Element that initiated the event. For instance, the element hovered over to show, etc.
    +
    + + + + + + + + + + + + + + + +
    +
    + +
    + +

    If the user doesn’t need to interact with the contents of the popover, it may be appropriate to only show it on hover. This will make popovers feel like a tooltip. To do so, we provide an alternative controller, s-tooltip, that shows the tooltip only on hover.

    + +
    + +

    In the simple case where no markup is needed in the tooltip, the popover element can be omitted and automatically generated using the title attribute.

    + +
    +
    <button class="s-btn" role="button"
    title="…"
    data-controller="s-tooltip"
    data-s-tooltip-placement="bottom-start">


    </button>
    +
    + +
    +
    +
    + +
    +

    JavaScript configuration (tooltips)

    Section titled JavaScript configuration (tooltips)
    +

    In cases where the tooltip needs to display simple text or HTML, the popover can be configured using JavaScript. Plain text tooltips will render characters like <, >, and & as is. HTML tooltips will render the HTML as expected.

    +
    +
    Stacks.setTooltipText(el,
    "Plain text tooltip",
    {
    placement: "top-start"
    });

    Stacks.setTooltipHtml(el,
    "Tooltip <i>with</i> HTML",
    {
    placement: "top-end"
    });
    +
    + + +
    +
    +
    + +
    + +

    When a rich tooltip is required, a popover element can be configured in much the same way as an s-popover controller, with the most notable difference being the use of aria-describedby instead of aria-controls.

    + +
    +
    <button
    class="s-btn"
    role="button"
    aria-describedby="tooltip-example"
    aria-expanded="false"
    data-controller="s-tooltip">


    </button>
    <div
    class="s-popover s-popover__tooltip"
    id="tooltip-example"
    role="tooltip">

    <div class="s-popover--content">

    </div>
    </div>
    +
    + + +
    +
    +
    + +
    +

    Tooltips and interactive popovers

    Section titled Tooltips and interactive popovers
    +

    Hover tooltips can be used alongside interactive popovers. Tooltips will no appear when the interactive popover is visible.

    + +
    +
    <button class="s-btn s-btn__dropdown" role="button"
    aria-controls="popover-example"
    aria-expanded="false"
    data-controller="s-popover s-tooltip"
    data-action="s-popover#toggle"
    data-s-popover-placement="bottom-start"
    data-s-popover-toggle-class="is-selected"
    title="…"
    data-s-tooltip-placement="top-start">


    </button>
    <div class="s-popover"
    id="popover-example"
    role="menu">

    <div class="s-popover--content">

    </div>
    </div>
    +
    + + +
    +
    +
    +
    + +
    + +
    + Our Stimulus popover controller handles the positioning of popovers for you. Popovers can be positioned manually for various legacy reasons, but we recommend using the s-popover controller's placement property instead. +
    + +
    + +

    Popovers can also be positioned manually if you aren’t using the built-in JavaScript interactivity. Practically, this might look like adding something like t8 l8 to .s-popover.

    +

    By default, popovers are hidden and positioned absolutely. Adding the class .is-visible will show the popover.

    + +
    +
    <div class="s-popover">
    <div class="s-popover--content">

    </div>
    </div>
    +
    +
    +
    +

    Example popover with manual placement

    +
    +
    +
    +
    +
    +
    + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/post-summary/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/post-summary/fragment.html new file mode 100644 index 0000000000..b46e1e6528 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/post-summary/fragment.html @@ -0,0 +1,3560 @@ + +
    + + + +

    The post summary component summarizes various content and associated meta data into a highly configurable component.

    + + + +
    + + + + Svelte + + + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-post-summary + + + + + + N/A + + + + N/A + + Base parent container for a post summary
    + + + .s-post-summary--answers + + + + + + + + .s-post-summary + + + + + N/A + + Container for the post summary answers
    + + + .s-post-summary--content + + + + + + + + .s-post-summary + + + + + N/A + + Container for the post summary content
    + + + .s-post-summary--stats + + + + + + + + .s-post-summary + + + + + N/A + + Container for the post summary stats
    + + + .s-post-summary--tags + + + + + + + + .s-post-summary + + + + + N/A + + Container for the post summary tags
    + + + .s-post-summary--title + + + + + + + + .s-post-summary + + + + + N/A + + Container for the post summary title
    + + + .s-post-summary--answer + + + + + + + + .s-post-summary--answers + + + + + N/A + + Container for the post summary answer
    + + + .s-post-summary--content-meta + + + + + + + + .s-post-summary--content + + + + + N/A + + A container for post meta data, things like tags and user cards.
    + + + .s-post-summary--content-type + + + + + + + + .s-post-summary--content + + + + + N/A + + Container for the post summary content type
    + + + .s-post-summary--excerpt + + + + + + + + .s-post-summary--content + + + + + N/A + + Container for the post summary excerpt
    + + + .s-post-summary--stats-answers + + + + + + + + .s-post-summary--stats + + + + + N/A + + Container for the post summary answers
    + + + .s-post-summary--stats-bounty + + + + + + + + .s-post-summary--stats + + + + + N/A + + Container for the post summary bounty
    + + + .s-post-summary--stats-item + + + + + + + + .s-post-summary--stats + + + + + N/A + + A genericcontainer for views, comments, read time, and other meta data which prepends a separator icon.
    + + + .s-post-summary--stats-votes + + + + + + + + .s-post-summary--stats + + + + + N/A + + Container for the post summary votes
    + + + .s-post-summary--title-link + + + + + + + + .s-post-summary--title + + + + + N/A + + Link styling for the post summary title
    + + + .s-post-summary--title-icon + + + + + + + + .s-post-summary--title + + + + + N/A + + Icon styling for the post summary title
    + + + .s-post-summary--sm-hide + + + + + + N/A + + + + + + .s-post-summary > * + + + Hides the stats container on small screens.
    + + + .s-post-summary--sm-show + + + + + + N/A + + + + + + .s-post-summary > * + + + Shows the stats container on small screens.
    + + + .s-post-summary__answered + + + + + + N/A + + + + + + .s-post-summary + + + Adds the styling necessary for a question with accepted answers
    + + + .s-post-summary__deleted + + + + + + N/A + + + + + + .s-post-summary + + + Adds the styling necessary for a deleted post
    + + + .s-post-summary--answer__accepted + + + + + + N/A + + + + + + .s-post-summary--answer + + + Adds the styling necessary for an accepted answer
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + +
    + + +

    Use the post summary component to provide a concise summary of a question, article, or other content.

    +
    +
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide">
    <div class="s-post-summary--stats-votes"></div>
    <div class="s-post-summary--stats-answers"></div>
    </div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm">
    <div class="s-user-card--group" href="…">
    <a class="s-avatar" href="…">
    <img class="s-avatar--image" src="…">
    <span class="v-visible-sr"></span>
    </a>
    <span class="s-user-card--username"></span>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__rep s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    </ul>
    <span>
    <a class="s-user-card--time" title="…" data-controller="s-tooltip" href="…">
    <time></time>
    </a>
    </span>
    </div>
    </div>
    <div class="s-post-summary--stats s-post-summary--sm-show">
    <div class="s-post-summary--stats-votes">
    {% icon "Vote16Up" %}

    </div>
    <div class="s-post-summary--stats-answers">
    {% icon "Answer16" %}

    <span class="v-visible-sr">answers</span>
    </div>
    </div>
    <div class="s-post-summary--stats-item">… views</div>
    </div>
    <div class="s-post-summary--title">
    <a class="s-post-summary--title-link" href="…"></a>
    </div>
    <p class="s-post-summary--excerpt v-truncate3"></p>
    <div class="s-post-summary--tags">
    <a class="s-tag" href="…"></a>

    </div>
    </div>
    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + +
    +
    + +
    + + +

    + Add the .s-post-summary__answered modifier class to indicate that the post has an accepted answer. +

    +
    +
    <div class="s-post-summary s-post-summary__answered">

    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + +
    +
    + +
    + + +

    + Include the .s-post-summary--stats-bounty element to indicate that the post has a bounty. +

    +
    +
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide">
    <div class="s-post-summary--stats-votes"></div>
    <div class="s-post-summary--stats-answers"></div>
    <div class="s-post-summary--stats-bounty">
    +50 <span class="v-visible-sr">bounty</span>
    </div>
    </div>
    <div class="s-post-summary--content">

    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show">
    <div class="s-post-summary--stats-votes"></div>
    <div class="s-post-summary--stats-answers"></div>
    <div class="s-post-summary--stats-bounty">
    +50 <span class="v-visible-sr">bounty</span>
    </div>
    </div>
    </div>

    </div>

    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    + + + 50 +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + +
    +
    + +
    + + +

    Including an ignored tag will automatically apply custom ignored styling to the post summary.

    +
    +
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-tag s-tag__ignored" href="…"></a>

    </div>
    </div>
    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    + + + 50 +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + +
    Ignored tag
    + + retrieval-augmented-generation +
    + + + + + langchain + + + + + + llm + + + + + + vector-database + + + + + + ai + + + +
    + +
    +
    + +
    +
    +
    + +
    + + +

    Including a watched tag will automatically apply custom watched styling to the post summary.

    +
    +
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-tag s-tag__watched" href="…"></a>

    </div>
    </div>
    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + + +
    Watched tag
    + retrieval-augmented-generation +
    + + + + + langchain + + + + + + llm + + + + + + vector-database + + + + + + ai + + + +
    + +
    +
    + +
    +
    +
    + +
    + + +

    Include the .s-post-summary__deleted modifier class applies custom deleted styling to the post summary.

    +
    +
    <div class="s-post-summary s-post-summary__deleted">

    </div>
    +
    + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + +
    +
    +
    + +
    + + +

    Include the appropriate state badge to indicate the current state of the post.

    +
    +
    <!-- Draft -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--sm-show">
    <span class="s-badge s-badge__sm s-badge__info">
    {% icon "Compose" %} Draft
    </span>
    </div>
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show"></div>
    <div class="s-post-summary--stats-item">… views</div>
    <span class="s-badge s-badge__info ml-auto s-post-summary--sm-hide">
    {% icon "Compose" %} Draft
    </span>
    </div>

    </div>
    </div>

    <!-- Review -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--sm-show">
    <span class="s-badge s-badge__sm s-badge__warning">
    {% icon "Eye" %} Review
    </span>
    </div>
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show"></div>
    <div class="s-post-summary--stats-item">… views</div>
    <span class="s-badge s-badge__warning ml-auto s-post-summary--sm-hide">
    {% icon "Eye" %} Review
    </span>
    </div>

    </div>
    </div>

    <!-- Closed -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--sm-show">
    <span class="s-badge s-badge__sm s-badge__danger">
    {% icon "Flag" %} Closed
    </span>
    </div>
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show"></div>
    <div class="s-post-summary--stats-item">… views</div>
    <span class="s-badge s-badge__danger ml-auto s-post-summary--sm-hide">
    {% icon "Flag" %} Closed
    </span>
    </div>

    </div>
    </div>

    <!-- Archived -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--sm-show">
    <span class="s-badge s-badge__sm">
    {% icon "Document" %} Archived
    </span>
    </div>
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show"></div>
    <div class="s-post-summary--stats-item">… views</div>
    <span class="s-badge ml-auto s-post-summary--sm-hide">
    {% icon "Document" %} Archived
    </span>
    </div>

    </div>
    </div>

    <!-- Pinned -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--sm-show">
    <span class="s-badge s-badge__sm s-badge__tonal">
    {% icon "Key" %} Pinned
    </span>
    </div>
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm"></div>
    <div class="s-post-summary--stats s-post-summary--sm-show"></div>
    <div class="s-post-summary--stats-item">… views</div>
    <span class="s-badge s-badge__danger ml-auto s-post-summary--sm-hide">
    {% icon "Key" %} Pinned
    </span>
    </div>

    </div>
    </div>
    +
    + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + + + + + + Draft + + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + + + + + + Review + + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + + + + + + Closed + + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + + + + + + Archived + + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + + + + + + Pinned + + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + +
    +
    +
    + +
    + +

    Include the appropriate content type badge to indicate the type of content the post represents.

    +
    +
    <!-- Announcement -->
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-post-summary--content-type" href="#">
    {% icon "Document" %} Announcement
    </a>
    </div>
    </div>
    </div>

    <!-- How-to guide -->
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-post-summary--content-type" href="#">
    {% icon "Document" %} How to guide
    </a>
    </div>
    </div>
    </div>

    <!-- Knowledge article -->
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-post-summary--content-type" href="#">
    {% icon "Document" %} Knowledge article
    </a>
    </div>
    </div>
    </div>

    <!-- Policy -->
    <div class="s-post-summary">

    <div class="s-post-summary--content">

    <div class="s-post-summary--tags">
    <a class="s-post-summary--content-type" href="#">
    {% icon "Document" %} Policy
    </a>
    </div>
    </div>
    </div>
    +
    + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + Announcement + + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + How to guide + + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + Knowledge article + + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + Policy + + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + +
    +
    +
    + +
    + + + +

    Post summaries can be shown without an excerpt or with an excerpt with one, two, or three lines of text. Exclude the excerpt container to hide the excerpt or apply the appropriate truncation class to the excerpt container. See also Truncation.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassDescription
    .v-truncate1Truncates the excerpt to 1 lines of text.
    .v-truncate2Truncates the excerpt to 2 lines of text.
    .v-truncate3Truncates the excerpt to 3 lines of text.
    +
    + + +
    +
    <!-- No excerpt -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content"></div>
    </div>

    <!-- Small excerpt -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">

    <p class="s-post-summary--excerpt v-truncate1"></p>

    </div>
    </div>

    <!-- Medium excerpt -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">

    <p class="s-post-summary--excerpt v-truncate2"></p>

    </div>
    </div>

    <!-- Large excerpt -->
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">

    <p class="s-post-summary--excerpt v-truncate3"></p>

    </div>
    </div>
    +
    + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + +
    +
    +
    + +
    + + +

    Post summaries adapt to their container size. When shown with a container smaller than 448px, the post summary renders with a compact layout.

    +
    +
    <div class="s-post-summary"></div>
    +
    +
    + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 1 + answers +
    + +
    + + + 50 +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    +
    + + +
    +
    +
    + +
    + + +

    Answers to a question can be shown in a post summary. Include the .s-post-summary--answers container to show the answers.

    +

    For accepted answers, add the .s-post-summary--answer__accepted modifier class and display the Accepted answer text and icon as shown in the example below.

    +
    +
    <div class="s-post-summary">
    <div class="s-post-summary--stats s-post-summary--sm-hide"></div>
    <div class="s-post-summary--content">
    <div class="s-post-summary--content-meta"></div>
    <div class="s-post-summary--title"></div>
    <p class="s-post-summary--excerpt v-truncate3"></p>
    <div class="s-post-summary--tags"></div>
    <div class="s-post-summary--answers">
    <div class="s-post-summary--answer s-post-summary--answer__accepted">
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm">
    <div class="s-user-card--group" href="…">
    <a class="s-avatar" href="…">
    <img class="s-avatar--image" src="…">
    <span class="v-visible-sr"></span>
    </a>
    <span class="s-user-card--username"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__rep s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    </ul>
    <span>
    <a class="s-user-card--time" title="…" data-controller="s-tooltip" href="…">
    <time></time>
    </a>
    </span>
    </div>
    <div class="s-post-summary--stats">
    <div class="s-post-summary--stats-votes">
    {% icon "Vote16Up" %}

    </div>
    <div class="s-post-summary--stats-answers">
    {% icon "Answer16Fill" %}
    Accepted answer
    </div>
    </div>
    </div>
    <p class="s-post-summary--excerpt"></p>
    </div>
    <div class="s-post-summary--answer">
    <div class="s-post-summary--content-meta">
    <div class="s-user-card s-user-card__sm">
    <div class="s-user-card--group" href="…">
    <a class="s-avatar" href="…">
    <img class="s-avatar--image" src="…">
    <span class="v-visible-sr"></span>
    </a>
    <span class="s-user-card--username"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__rep s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    </ul>
    <span>
    <a class="s-user-card--time" title="…" data-controller="s-tooltip" href="…">
    <time></time>
    </a>
    </span>
    </div>
    <div class="s-post-summary--stats">
    <div class="s-post-summary--stats-votes">
    {% icon "Vote16Up" %}

    </div>
    </div>
    </div>
    <p class="s-post-summary--excerpt"></p>
    </div>
    </div>
    </div>
    </div>
    +
    + + + + + +
    +
    +
    + +24 + votes +
    +
    + + + + 2 + answers +
    + +
    +
    +
    + +
    + +
    + + + + How to reduce hallucinations and improve source relevance in a RAG pipeline? + +
    + +

    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +

    + +
    + + + + retrieval-augmented-generation + + langchain + + llm + + vector-database + + +
    + +
    + +
    + +
    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +
    +
    + +
    + +
    + I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/progress-bars/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/progress-bars/fragment.html new file mode 100644 index 0000000000..b20d1dac34 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/progress-bars/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Progress bars

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/prose/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/prose/fragment.html new file mode 100644 index 0000000000..fe8c0c7e98 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/prose/fragment.html @@ -0,0 +1,1274 @@ + +
    + + + +

    The prose component provides proper styling for rendered Markdown.

    + + + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-prose + + + + + + N/A + + Adds proper styling for rendered Markdown.
    + + + .s-prose__sm + + + + + + + + .s-prose + + + Decreases the base font size and line height.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    We modified this test document from the folks at Tailwind to demonstrate and explain our design choices.

    + +
    +
    + +
    +
    <div class="s-prose">

    </div>
    +
    + +
    +
    + + +

    This example includes the full kitchen-sink collection of everything the Markdown spec includes.

    +
    +
    + +
    +
    + +
    +
    +
    + +
    + + +

    In ancilliary content like comments or side-discussions, it may be appropriate to add the small variation.

    +
    +
    + +
    +
    <div class="s-prose s-prose__sm">

    </div>
    +
    + +
    +
    +
    + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/radio/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/radio/fragment.html new file mode 100644 index 0000000000..babd859c2f --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/radio/fragment.html @@ -0,0 +1,848 @@ + +
    + + + +

    Checkable inputs that visually allow for single selection from multiple options.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-radio + + + + + + N/A + + Base radio style.
    + + + .s-radio__checkmark + + + + + + + + .s-radio + + + Checkmark style.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    Use the .s-radio to wrap input[type="radio"] elements to apply radio styles.

    + +
    +
    <div class="s-radio">
    <input type="radio" name="example-name" id="example-item" />
    <label class="s-label" for="example-item">Check Label</label>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleDescription
    +
    + + +
    +
    Unchecked radio.
    +
    + + +
    +
    Disabled unchecked radio.
    +
    + + +
    +
    Checked radio.
    +
    + + +
    +
    Disabled checked radio.
    +
    +
    +
    + + +

    The checkmark style is an alternative to the base radio style. To use the checkmark style, wrap your input and label in a container with the .s-radio__checkmark class.

    + +
    +
    <label class="s-radio s-radio__checkmark" for="example-item">
    Checkmark Label
    <input type="radio" name="example-name" id="example-item" />
    </label>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ExampleClassDescription
    + + + .s-radio__checkmark + Unchecked checkmark with a radio element.
    + + + .s-radio__checkmark + Disabled unchecked checkmark with a radio element.
    + + + .s-radio__checkmark + Checked checkmark with a radio element.
    + + + .s-radio__checkmark + Disabled checked checkmark with a radio element.
    +
    +
    +
    +
    + +
    + +

    The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to radios, there are a few things to keep in mind:

    +
      +
    • All inputs should have an id attribute.
    • +
    • Be sure to associate the radio label by using the for attribute. The value here is the input's id.
    • +
    • If you have a group of related radios, use the fieldset and legend to group them together.
    • +
    +

    For more information, please read Gov.UK's article, "Using the fieldset and legend elements".

    +
    + +
    + + +
    +
    <fieldset class="s-form-group">
    <legend class="s-label"></legend>
    <div class="s-radio">
    <input type="radio" name="vert-radio" id="vert-radio-1" />
    <label class="s-label" for="vert-radio-1"></label>
    </div>
    <div class="s-radio">
    <input type="radio" name="vert-radio" id="vert-radio-2" />
    <label class="s-label" for="vert-radio-2"></label>
    </div>
    <div class="s-radio">
    <input type="radio" name="vert-radio" id="vert-radio-3" />
    <label class="s-label" for="vert-radio-3"></label>
    </div>
    </fieldset>

    <!-- Checkmark w/ radio using .s-menu for additional styling -->
    <fieldset class="s-menu s-form-group">
    <legend class="s-menu--title"></legend>
    <div class="s-menu--item">
    <label class="s-menu--action s-radio s-radio__checkmark" for="vert-checkmark-1">
    <input type="radio" name="vert-checkmark" id="vert-checkmark-1" />

    </label>
    </div>
    <div class="s-menu--item">
    <label class="s-menu--action s-radio s-radio__checkmark" for="vert-checkmark-2">
    <input type="radio" name="vert-checkmark" id="vert-checkmark-2" />

    </label>
    </div>
    <div class="s-menu--item">
    <label class="s-menu--action s-radio s-radio__checkmark" for="vert-checkmark-3">
    <input type="radio" name="vert-checkmark" id="vert-checkmark-3" />

    </label>
    </div>
    </fieldset>
    +
    +
    + Which types of fruit do you like? + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    + Pick a fruit + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    +
    +
    + + +
    +
    <fieldset class="s-form-group s-form-group__horizontal">
    <legend class="s-label"></legend>
    <div class="s-radio">
    <input type="radio" name="hori-radio" id="hori-radio-1" />
    <label class="s-label" for="hori-radio-1"></label>
    </div>
    <div class="s-radio">
    <input type="radio" name="hori-radio" id="hori-radio-2" />
    <label class="s-label" for="hori-radio-2"></label>
    </div>
    <div class="s-radio">
    <input type="radio" name="hori-radio" id="hori-radio-3" />
    <label class="s-label" for="hori-radio-3"></label>
    </div>
    </fieldset>
    +
    +
    + Which types of fruit do you like? + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    + + +
    +
    <fieldset class="s-form-group">
    <legend class="s-label"></legend>
    <div class="s-radio">
    <input type="radio" name="desc-radio" id="desc-radio-1" />
    <label class="s-label" for="desc-radio-1">

    <p class="s-description"></p>
    </label>
    </div>

    </fieldset>

    <!-- Checkmark w/ radio using .s-menu for additional styling -->
    <fieldset class="s-menu s-form-group">
    <legend class="s-menu--title"></legend>
    <div class="s-menu--item">
    <label class="s-menu--action s-radio s-radio__checkmark" for="desc-checkmark-1">
    <input type="radio" name="desc-checkmark" id="desc-checkmark-1" />
    <div>

    <p class="s-description"></p>
    </div>
    </label>
    </div>

    </fieldset>
    +
    +
    + Which types of fruit do you like? + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + Pick a fruit + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +
    + +
    + +

    Radios use the same validation states as inputs.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + .has-warning + + + + + + + Parent element + + + + Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding.
    + + + .has-error + + + + + + + Parent element + + + + Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding.
    + + + .has-success + + + + + + + Parent element + + + + Used to notify users that the value they’ve entered is fine or has been submitted successfully.
    +
    + + + + + + + + + + + + + + + + + +
    +
    <!-- Radio w/ error -->
    <div class="s-radio has-error">
    <input type="radio" name="error-radio" id="error-radio-1" />
    <label class="s-label" for="error-radio-1">

    <p class="s-description"></p>
    </label>
    </div>

    <!-- Checkmark w/ success -->
    <label class="s-radio s-radio__checkmark has-success" for="success-checkmark-1">
    <input type="radio" name="success-checkmark" id="success-checkmark-1" />
    <div>

    <p class="s-description"></p>
    </div>
    </label>
    +
    +
    + Which types of fruit do you like? + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + Pick a fruit + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/select/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/select/fragment.html new file mode 100644 index 0000000000..aa53ffcffb --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/select/fragment.html @@ -0,0 +1,859 @@ + +
    + + + +

    A selectable menu list from which a user can make a single selection. Typically they are used when there are more than four possible options. The custom select menu styling is achieved by wrapping the select tag within the .s-select class.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-select + + + + + + N/A + + Base select style.
    + + + .s-select__sm + + + + + + + + .s-select + + + Apply a small size.
    + + + .s-select__lg + + + + + + + + .s-select + + + Apply a large size.
    + + + .has-error + + + + + + + + .s-select + + + Apply an error state.
    + + + .has-success + + + + + + + + .s-select + + + Apply a success state.
    + + + .has-warning + + + + + + + + .s-select + + + Apply a warning state.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    <div class="s-form-group">
    <label class="s-label" for="select-menu">
    How will you be traveling?
    <p class="mt2 s-description">Select the transportation method you will be using to come to the event.</p>
    </label>
    <div class="s-select">
    <select id="select-menu">
    <option value="" selected>Please select one…</option>
    <option value="walk">Walk</option>
    <option value="bike">Bicycle</option>
    <option value="car">Automobile</option>
    <option value="rail">Train</option>
    <option value="fly">Plane</option>
    </select>
    </div>
    </div>

    <div class="s-form-group is-disabled">
    <label class="s-label" for="select-menu-disabled">Where are you staying?</label>
    <div class="s-select">
    <select id="select-menu-disabled" disabled>
    <option value="" selected>Please select one…</option>
    <option value="bronx">Bronx</option>
    <option value="brooklyn">Brooklyn</option>
    <option value="manhattan">Manhattan</option>
    <option value="queens">Queens</option>
    <option value="staten-island">Staten Island</option>
    </select>
    </div>
    </div>
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    + +

    Validation states provides the user feedback based on their interaction (or lack of interaction) with a select menu. These styles are applied by applying the appropriate class to the wrapping parent container.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + .has-warning + + + + + + + Parent element + + + + Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding.
    + + + .has-error + + + + + + + Parent element + + + + Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding.
    + + + .has-success + + + + + + + Parent element + + + + Used to notify users that the value they’ve entered is fine or has been submitted successfully.
    +
    + + + + + + + + + + + + + + + + + + +
    +
    <div class="s-form-group has-warning">
    <label class="s-label" for="select-menu">
    How will you be traveling?
    <p class="mt2 s-description">Select the transportation method you will be using to come to the event.</p>
    </label>
    <div class="s-select">
    <select id="select-menu">
    <option value="" selected>Please select one…</option>
    <option value="walk">Walk</option>
    <option value="bike">Bicycle</option>
    <option value="car">Automobile</option>
    <option value="rail">Train</option>
    <option value="fly">Plane</option>
    </select>
    @Svg.Alert.With("s-input-icon")
    </div>
    </div>
    +
    +
    + +
    + + +
    +
    +
    +
    + + +
    +
    <div class="s-form-group has-error">
    <label class="s-label" for="select-menu">
    How will you be traveling?
    <p class="mt2 s-description">Select the transportation method you will be using to come to the event.</p>
    </label>
    <div class="s-select">
    <select id="select-menu">
    <option value="" selected>Please select one…</option>
    <option value="walk">Walk</option>
    <option value="bike">Bicycle</option>
    <option value="car">Automobile</option>
    <option value="rail">Train</option>
    <option value="fly">Plane</option>
    </select>
    @Svg.AlertFill.With("s-input-icon")
    </div>
    </div>
    +
    +
    + +
    + + +
    +
    +
    +
    + + +
    +
    <div class="s-form-group has-success">
    <label class="s-label" for="select-menu">
    How will you be traveling?
    <p class="mt2 s-description">Select the transportation method you will be using to come to the event.</p>
    </label>
    <div class="s-select">
    <select id="select-menu">
    <option value="" selected>Please select one…</option>
    <option value="walk">Walk</option>
    <option value="bike">Bicycle</option>
    <option value="car">Automobile</option>
    <option value="rail">Train</option>
    <option value="fly">Plane</option>
    </select>
    @Svg.Check.With("s-input-icon")
    </div>
    </div>
    +
    +
    + +
    + + +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Name + + Size + + Example +
    + + + .s-select__sm + + + + + + + Small + + + + + + + 13px + + + +
    + + N/A + + + + + Default + + + + + + + 14px + + + +
    + + + .s-select__lg + + + + + + + Large + + + + + + + 18px + + + +
    +
    + + + + + + + + + + + + + + + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/sidebar-widgets/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/sidebar-widgets/fragment.html new file mode 100644 index 0000000000..8c37763a46 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/sidebar-widgets/fragment.html @@ -0,0 +1,366 @@ + +
    + + + +

    Sidebar widgets are flexible containers that provide a lot of patterns that are helpful in a variety of sidebar uses.

    + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Description +
    + + + .s-sidebarwidget + + + + + + N/A + + Base sidebar widget style.
    + + + .s-sidebarwidget--content + + + + + + + + .s-sidebarwidget + + + Container for the sidebar widget content.
    + + + .s-sidebarwidget--header + + + + + + + + .s-sidebarwidget + + + Container for the sidebar widget header.
    + + + .s-sidebarwidget--footer + + + + + + + + .s-sidebarwidget + + + Container for the sidebar widget footer.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    + In its simplest form, .s-sidebarwidget is comprised of a .s-sidebarwidget--content section and optional .s-sidebarwidget--header and .s-sidebarwidget--footer sections. + Together these classes create a widget with appropriate inner spacing for you to put whatever you want into it. +

    + +
    + By default the content is a flex container. If you require display: block instead, add the d-block class. +
    + +
    + + The examples of s-sidebarwidget--header are shown with h2 elements, but the appropriate heading level may differ depending on context. + Please use the appropriate heading level for your context to ensure heading levels only increase by 1. + +
    + +
    +
    <div class="s-sidebarwidget">
    <div class="s-sidebarwidget--header">
    <h2></h2>
    <a class="s-btn s-btn__xs s-btn__clear s-sidebarwidget--action"></a>
    </div>
    <div class="s-sidebarwidget--content">

    <button class="s-btn s-btn__tonal s-sidebarwidget--action"></button>
    </div>
    <div class="s-sidebarwidget--footer">
    <button class="s-btn s-btn__tonal s-sidebarwidget--action"></button>
    </div>
    </div>
    +
    +
    +
    +
    +

    Community Achievements

    + + Track + +
    +
    + You’ve earned 3 new badges this week! Keep contributing to unlock more achievements and privileges within the community. + +
    + +
    +
    +
    + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/tables/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/tables/fragment.html new file mode 100644 index 0000000000..a316320ccc --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/tables/fragment.html @@ -0,0 +1,2086 @@ + +
    + + + +

    Tables are used to list all information from a data set. The base style establishes preferred padding, font-size, and font-weight treatments. To enhance or customize the look of the table, apply any additional classes listed below.

    + + + +
    + + + + + + JavaScript + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-table-container + + + + + + N/A + + + + N/A + + Container for the table.
    + + + .s-table + + + + + + + + .s-table-container + + + + + N/A + + Base table style.
    + + + .s-table--cell:n + + + + + + + + .s-table > tr > td + + + + + N/A + + Table cell width in 12 evenly divided columns. Replace :n with the number of columns the cell should span.
    + + + .s-table__b0 + + + + + + N/A + + + + + + .s-table + + + Removes all table cell borders.
    + + + .s-table__bx + + + + + + N/A + + + + + + .s-table + + + Shows only horizontal table cell borders. Good for tables with lots of data that can be sorted and filtered.
    + + + .s-table__bx-simple + + + + + + N/A + + + + + + .s-table + + + Removes most of the default borders and backgrounds. Good for tables without much data that don't need to be sorted or filtered.
    + + + .s-table__sortable + + + + + + N/A + + + + + + .s-table + + + Applies styling to imply the table is sortable.
    + + + .s-table__stripes + + + + + + N/A + + + + + + .s-table + + + Apply zebra striping to the table.
    + + + .s-table__sm + + + + + + N/A + + + + + + .s-table + + + Apply a condensed sizing to the table.
    + + + .s-table__lg + + + + + + N/A + + + + + + .s-table + + + Apply a large sizing to the table.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    Tables should be wrapped in a container, .s-table-container. This provides horizontal scrolling when necessary in the smallest breakpoints. The default table style is a bordered cell layout with a stylized header row.

    +
    +
    <div class="s-table-container">
    <table class="s-table">
    <thead>
    <tr>
    <th scope="col"></th>
    <th scope="col"></th>
    <th scope="col"></th>
    <th scope="col"></th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <th scope="row"></th>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameUsernameJoinedLast seen
    Aaron Shekey + aaronshekey + Dec 1 ’17 at 20:24just now
    Joshua Hynes + joshuahynes + Feb 12 at 18:47Aug 10 at 14:57
    Piper Lawson + piperlawson + Jul 5 at 14:32Aug 14 at 12:41
    +
    +
    +
    +
    + +
    + +

    By default, tables are outlined, have borders on all cells, and have a styled header. Depending on the size and complexity of a table, these can all be configured.

    + +

    Shows only horizontal table cell borders. Good for tables with lots of data that can be sorted and filtered.

    +
    +
    <div class="s-table-container">
    <table class="s-table s-table__bx">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    First nameLast nameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    3PawełL.@pawełl
    4TedG.@so-ted
    +
    +
    +
    + + +

    Removes most of the default borders and backgrounds. Good for tables without much data that don't need to be sorted or filtered.

    +
    +
    <div class="s-table-container">
    <table class="s-table s-table__bx-simple">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    First nameLast nameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    3PawełL.@pawełl
    4TedG.@so-ted
    +
    +
    +
    + + +

    Removes all table cell borders.

    +
    +
    <div class="s-table-container">
    <table class="s-table s-table__b0">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    First nameLast nameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    3PawełL.@pawełl
    4TedG.@so-ted
    +
    +
    +
    + +

    When tables have a lot of information, you can help users group information and isolate data by adding zebra striping.

    + +
    +
    <div class="s-table-container">
    <table class="s-table s-table__stripes">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    First NameLast NameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    3PawełL.@pawełl
    4TedG.@so-ted
    +
    +
    +
    +
    + +
    + +

    A table’s padding can be changed to be more or less condensed.

    + + +
    +
    <div class="s-table-container">
    <table class="s-table s-table__sm">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    First NameLast NameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    +
    +
    +
    + + +
    +
    <div class="s-table-container">
    <table class="s-table">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    First NameLast NameUsername
    1PawełL.@pawełl
    2TedG.@so-ted
    +
    +
    +
    + + +
    +
    <div class="s-table-container">
    <table class="s-table s-table__lg">

    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    First NameLast NameUsername
    1AaronS.@aarons
    2JoshuaH.@joshuah
    +
    +
    +
    +
    + +
    + +

    Table columns will size themselves based on their content. To set a specific width, you can use one of the following table cell classes to specify the width for any column.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Width +
    + + + .s-table--cell1 + + + + + + + 8.3333333% + + + +
    + + + .s-table--cell2 + + + + + + + 16.6666667% + + + +
    + + + .s-table--cell3 + + + + + + + 25% + + + +
    + + + .s-table--cell4 + + + + + + + 33.3333333% + + + +
    + + + .s-table--cell5 + + + + + + + 41.6666667% + + + +
    + + + .s-table--cell6 + + + + + + + 50% + + + +
    + + + .s-table--cell7 + + + + + + + 58.3333333% + + + +
    + + + .s-table--cell8 + + + + + + + 66.6666667% + + + +
    + + + .s-table--cell9 + + + + + + + 75% + + + +
    + + + .s-table--cell10 + + + + + + + 83.3333333% + + + +
    + + + .s-table--cell11 + + + + + + + 91.6666667% + + + +
    + + + .s-table--cell12 + + + + + + + 100% + + + +
    +
    + + + + + + + + + + + + + + + + + +
    +
    // Example 1
    <div class="s-table-container">
    <table class="s-table">
    <tr>
    <td class="s-table--cell2"></td>
    <td></td>
    </tr>
    </table>
    </div>
    // Example 2
    <div class="s-table-container">
    <table class="s-table">
    <tr>
    <td class="s-table--cell3"></td>
    <td class="s-table--cell6"></td>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </table>
    </div>
    // Example 3
    <div class="s-table-container">
    <table class="s-table">
    <tr>
    <td class="s-table--cell4"></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td class="s-table--cell2"></td>
    </tr>
    </table>
    </div>
    +
    +
    + + + + + +
    .s-table--cell2No Class
    +
    +
    + + + + + + + + +
    .s-table--cell3.s-table--cell6No ClassNo ClassNo Class
    +
    +
    + + + + + + + + + +
    .s-table--cell4No ClassNo ClassNo ClassNo Class.s-table--cell2
    +
    +
    +
    +
    + +
    + + +

    The default vertical alignment is middle. You change a table’s or a specific cell’s vertical alignment by using the Vertical Alignment atomic classes.

    +
    +
    <div class="s-table-container">
    <table class="s-table">
    <tbody>
    <tr>
    <td class="va-top"></td>
    <td class="va-middle"></td>
    <td class="va-bottom"></td>
    </tr>
    </tbody>
    </table>
    </div>
    <div class="s-table-container">
    <table class="s-table va-bottom">
    <tbody>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + +
    .va-top.va-middle.va-bottom
    +
    +
    + + + + + + + + +
    .s-table.va-bottom.s-table.va-bottom.s-table.va-bottom
    +
    +
    +
    + + +

    Text alignment can be changed at a table or cell level by using atomic text alignment classes. Columns containing copy should be left-aligned. Columns containing numbers should be right-aligned.

    +
    +
    <div class="s-table-container">
    <table class="s-table">
    <tbody>
    <tr>
    <td class="ta-left"></td>
    <td class="ta-center"></td>
    <td class="ta-right"></td>
    </tr>
    </tbody>
    </table>
    </div>
    <div class="s-table-container">
    <table class="s-table ta-right">
    <tbody>
    <tr>
    <td></td>
    <td></td>
    <td></td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + +
    .ta-left.ta-center.ta-right
    +
    +
    + + + + + + + + +
    .s-table.ta-right.s-table.ta-right.s-table.ta-right
    +
    +
    +
    +
    +
    + +

    To indicate that the user can sort a table by different columns, add the s-table__sortable class to the table.

    +

    The <th> cells should include arrows to indicate sortability or the currently applied sorting. In addition, the column that is currently sorted should be indicated with the is-sorted class on its <th>.

    +
    +
    <div class="s-table-container">
    <table class="s-table s-table__sortable">
    <thead>
    <tr>
    <th scope="col" class="is-sorted">
    <button type="button">Listing @Svg.ArrowDownSm</button>
    </th>
    <th scope="col">
    <button type="button">Status @Svg.ArrowUpDownSm</button>

    </th>
    <th scope="col">
    <button type="button">Owner @Svg.ArrowUpDownSm</button>

    </th>
    <th scope="col" class="ta-right">
    <button type="button">Views @Svg.ArrowUpDownSm</button>

    </th>
    <th scope="col" class="ta-right">
    <button type="button">Applies @Svg.ArrowUpDownSm</button>

    </th>
    </tr>
    </thead>
    <tbody>

    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Listing + + Status + + + + + + +
    + Site Reliability Engineer, Generalist
    + Sydney, Australia +
    RunningSansa Stark50213
    + Senior Product Designer
    + New York, NY, USA +
    RunningRobert Baratheon90015
    + Product Manager, Developer Products
    + London, England +
    RunningSansa Stark31
    +
    +
    +
    + + +

    Stacks provides built-in functionality for letting the user sort a table by the values in a column through clicking the column header. This requires the complete data to already exist in the table (e.g. it is not going to work if the table is paged and requires a call to the server to update data on sorting). See the JavaScript introduction for general information about JS in Stacks.

    + +

    To make your table user-sortable, do the following:

    + +
      +
    1. Style the table as sortable as explained in the section above.
    2. +
    3. Set data-controller="s-table" on the <table> element.
    4. +
    5. Set data-s-table-target="column" and data-action="click->s-table#sort" on each of the <th> elements that control sorting.
    6. +
    7. + Add the three icons for showing ascending sort, descending sort, and unsorted to each of these header cells, hiding the first two with a d-none class. Add the js-sorting-indicator class to each of the icons, and add js-sorting-indicator-asc, js-sorting-indicator-desc, and js-sorting-indicator-none to the appropriate icon. +
    8. +
    + +
    + Note: Using js-… classes is not really the optimal way of doing this, and will probably replaced with something better eventually. When that happens, the js-… mechanism will be deprecated but continue to be supported for a while, so you have ample time to update things. +
    + +

    By default, the data is sorted by the content of the cell. If you need to use a different value, for example because your cell contains a human-readable date, add a data-s-table-sort-val attribute to the cell.

    + +

    If a column contains any data that is not an integer, the data will be sorted lexicographically. Otherwise it will be sorted numerically, with empty cells being considered the lowest number.

    + +

    If the table contains rows that should not be sorted, but rather always be at the top or always be at the bottom, add data-s-table-sort-to="top" or data-s-table-sort-to="bottom" to the <tr> element.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + data-controller="s-table" + + + + + + N/A + + + + + + table + + + Wires up the table to the JS controller
    + + + data-s-table-target="column" + + + + + + N/A + + + + + + th + + + Marks this is a sortable column for the purpose of modifying arrow icons
    + + + data-action="click->s-table#sort" + + + + + + N/A + + + + + + button + + + Causes a click on the header cell to sort by this column
    + + + data-s-table-sort-to="top" + + + + + + N/A + + + + + + tr + + + Forces the sorting of a row to the top
    + + + data-s-table-sort-to="bottom" + + + + + + N/A + + + + + + tr + + + Forces the sorting of a row to the bottom
    + + + data-s-table-sort-val="[x]" + + + + + + N/A + + + + + + td + + + Optionally use a custom value for sorting instead of the cell’s text content
    +
    + + + + + + + + + + + + + + + + + +
    +
    <div class="s-table-container">
    <table class="s-table s-table__sortable" data-controller="s-table">
    <thead>
    <tr>
    <th scope="col" data-s-table-target="column">
    <button data-action="click->s-table#sort">
    Season
    @Svg.ArrowUpSm.With("js-sorting-indicator js-sorting-indicator-asc d-none")
    @Svg.ArrowDownSm.With("js-sorting-indicator js-sorting-indicator-desc d-none")
    @Svg.ArrowUpDownSm.With("js-sorting-indicator js-sorting-indicator-none")
    </button>
    </th>
    <th scope="col" data-s-table-target="column">
    <button data-action="click->s-table#sort">
    Starts in month

    </button>
    </th>
    <th scope="col" data-s-table-target="column">
    <button data-action="click->s-table#sort">
    Typical temperature in °C

    </button>
    </th>
    </tr>
    </thead>
    <tbody>
    <tr><td>Winter</td><td data-s-table-sort-val="12">December</td><td>2</td></tr>
    <tr><td>Spring</td><td data-s-table-sort-val="3">March</td><td>13</td></tr>
    <tr><td>Summer</td><td data-s-table-sort-val="6">June</td><td>25</td></tr>
    <tr><td>Fall</td><td data-s-table-sort-val="9">September</td><td>13</td></tr>
    <tr data-s-table-sort-to="bottom" class="fw-bold">
    <td colspan="2">Average temperature</td>
    <td>13</td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + +
    + + + + + +
    WinterDecember2
    SpringMarch13
    SummerJune25
    FallSeptember13
    Average temperature13
    +
    +
    +
    +
    + +
    + +

    Generally for a checkbox input that’s placed first in the table row for bulk actions.

    +
    +
    <div class="s-table-container">
    <table class="s-table">
    <thead>
    <tr>
    <th scope="col" class="s-table--bulk">
    <label class="v-visible-sr" for="example-checkbox-1">bulk checkbox</label>
    <div class="s-checkbox">
    <input type="checkbox" id="example-checkbox-1">
    </div>
    </th>
    <th scope="col"></th>
    <th scope="col"></th>
    <th scope="col"></th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td class="s-table--bulk">
    <label class="v-visible-sr" for="example-checkbox-2">bulk checkbox</label>
    <div class="s-checkbox">
    <input type="checkbox" id="example-checkbox-2">
    </div>
    </td>
    <td></th>
    <td></td>
    <td></td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    Display NameFull NameEmail
    + +
    + +
    +
    SansaStark + Sansa Starksstark@company.com
    + +
    + +
    +
    RobertBaratheon + Robert Baratheonrbaratheon@company.com
    + +
    + +
    +
    Test Developer To Be Is Not A Developer Yet + Test Developer To Be Is Not A Developer Yettestdevelopertobeisnotadevyet@team-mgmt.dev.company.com
    +
    +
    +
    +
    +
    + +

    Used mainly with data tables, the totals row increases the font-size for all cells within a row.

    +
    +
    <div class="s-table-container">
    <table class="s-table ta-right">

    <tfoot class="s-table--totals">

    </tfoot>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ListingViewsAppsApp CTR
    Site Reliability Engineer, Generalist + 6,8711875.02%
    Senior Product Designer + 2,24219616.46%
    Product Manager, Developer Products + 3,46922914.9%
    Totals12,58261214.65%
    +
    +
    +
    +
    +
    + +

    For tables that include inactive or disabled rows, such as inactive users or teams, .is-disabled can be applied to any <tr>. Additionally, .is-enabled can be applied to any <th> or <td> that you’d like to ignoring the parent disabled styling (such as a persistent link to reactivate a disabled account).

    +
    +
    <div class="s-table-container">
    <table class="s-table">
    <tbody>
    <tr class="is-disabled">
    <td></td>
    <td></td>
    <td class="is-enabled">
    <a>Add</a>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameEmailLast seen
    Aaron Shekeyemailaddress@website.comjust nowRemove
    Joshua Hynesemailaddress@website.comSep 28 ’18Add
    Paweł Ludwiczakemailaddress@website.comApr 17 ’19Add
    Piper Lawsonemailaddress@website.comYesterdayRemove
    Ted Goasemailaddress@website.com5min agoRemove
    +
    +
    +
    + + +

    Further control of table behavior is possible with atomic classes. For example, you can make non-table markup display as a table layout by pairing .d-table, .d-table-cell and .tl-fixed.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Output +
    + + + .tl-auto + + + + + + + table-layout: auto; + + + +
    + + + .tl-fixed + + + + + + + table-layout: fixed; + + + +
    +
    + + + + + + + + + + + + + + + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/tags/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/tags/fragment.html new file mode 100644 index 0000000000..bbf14fb8b1 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/tags/fragment.html @@ -0,0 +1,758 @@ + +
    + + + +

    Tags are an interactive, community-generated keyword that allow communities to label, organize, and discover related content. Tags are maintained by their respective communities

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-tag + + + + + + N/A + + + + N/A + + Base tag style that is used almost universally.
    + + + .s-tag--dismiss + + + + + + + + .s-tag + + + + + N/A + + For a clear or dismiss action icon. When using this element, it should be rendered as a button containing the icon and the parent .s-tag should be rendered as a span element.
    + + + .s-tag--sponsor + + + + + + + + .s-tag + + + + + N/A + + Correctly positions a tag’s sponsor logo.
    + + + .s-tag__moderator + + + + + + N/A + + + + + + .s-tag + + + Exclusively used within Meta communities by moderators (and employees) to assign unique statuses to questions.
    + + + .s-tag__required + + + + + + N/A + + + + + + .s-tag + + + Exclusively used within Meta communities to denote the post type. One of these tags are required on all Meta posts.
    + + + .s-tag__ignored + + + + + + N/A + + + + + + .s-tag + + + Prepends an icon to indicate the tag is ignored.
    + + + .s-tag__watched + + + + + + N/A + + + + + + .s-tag + + + Prepends an icon to indicate the tag is watched.
    + + + .s-tag__sm + + + + + + N/A + + + + + + .s-tag + + + Apply a small size to the tag.
    + + + .s-tag__lg + + + + + + N/A + + + + + + .s-tag + + + Apply a large size to the tag.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +

    + Tags should be focusable and navigable with the keyboard. + The various tag states (Required, Moderator, Watched, Ignored) are visually distinct but do not include any text indicators for screen readers. + For that reason it is recommended to provide additional context using hidden text elements with the v-visible-sr class. +

    +
    + +
    + + +
    +
    <a class="s-tag" href="#"></a>
    <span class="s-tag"><button class="s-tag--dismiss"><span class="v-visible-sr">Dismiss … tag</span>@Svg.ClearSm</button></span>
    <a class="s-tag" href="…"><img class="s-tag--sponsor" src="…" …><div class="v-visible-sr">Sponsored tag</div></a>
    <span class="s-tag">
    <a href="…"></a>
    <button class="s-tag--dismiss"><span class="v-visible-sr">Dismiss … tag</span>@Svg.ClearSm</button>
    </span>
    +
    +
    + jquery + javascript + Google Android android
    Sponsored tag
    + + javascript + + +
    +
    +
    + + +
    +
    <a class="s-tag s-tag__moderator" href="#">status-completed <div class="v-visible-sr">Moderator tag</div></a>
    <span class="s-tag s-tag__moderator">status-bydesign <div class="v-visible-sr">Moderator tag</div><button class="s-tag--dismiss"><span class="v-visible-sr">Dismiss status-bydesign tag</span>@Svg.ClearSm</button></span>
    <a class="s-tag s-tag__moderator" href="#">status-planned <div class="v-visible-sr">Moderator tag</div></a>
    +
    +
    + status-completed
    Moderator tag
    + status-bydesign
    Moderator tag
    + status-planned
    Moderator tag
    +
    +
    +
    + + +
    +
    <a class="s-tag s-tag__required" href="#">discussion <div class="v-visible-sr">Required tag</div></a>
    <span class="s-tag s-tag__required">feature-request <div class="v-visible-sr">Required tag</div><button class="s-tag--dismiss"><span class="v-visible-sr">Dismiss feature-request tag</span>@Svg.ClearSm</button></span>
    <a class="s-tag s-tag__required" href="#">bug <div class="v-visible-sr">Required tag</div></a>
    +
    +
    + discussion
    Required tag
    + feature-request
    Required tag
    + bug
    Required tag
    +
    +
    +
    + + +
    +
    <a class="s-tag s-tag__watched" href="#">asp-net <div class="v-visible-sr">Watched tag</div></a>
    + +
    + + +
    +
    <a class="s-tag s-tag__ignored" href="#">netscape <div class="v-visible-sr">Ignored tag</div></a>
    + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applied to + + Example +
    + + + .s-tag__sm + + + + + + + + .s-tag + + + css
    + + N/A + + + + + + .s-tag + + + css
    + + + .s-tag__lg + + + + + + + + .s-tag + + + css
    +
    + + + + + + + + + + + + + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/textarea/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/textarea/fragment.html new file mode 100644 index 0000000000..b1b57c69e0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/textarea/fragment.html @@ -0,0 +1,730 @@ + +
    + + + +

    Multi-line inputs used by users to enter longer text portions.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-textarea + + + + + + N/A + + Base textarea style.
    + + + .s-textarea__sm + + + + + + + + .s-textarea + + + Apply a small size.
    + + + .s-textarea__lg + + + + + + + + .s-textarea + + + Apply a large size.
    +
    + + + + + + + + + + + + + + + +
    + +
    + +
    +
    <div class="d-flex fd-column gy4">
    <label class="s-label" for="example-item">Question body</label>
    <div class="d-flex ps-relative">
    <textarea class="s-textarea w100" id="example-item" placeholder="…"></textarea>
    </div>
    </div>
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +

    + It is recommended to follow the same accessibility guidance as the Input component. + Including marking Textarea's as required via the .s-required-symbol class. +

    +
    + +
    + +

    Validation states provides the user feedback based on their interaction (or lack of interaction) with a textarea. These styles are applied by applying the appropriate class to the wrapping parent container.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Applies to + + Description +
    + + + .has-warning + + + + + + + Parent element + + + + Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding.
    + + + .has-error + + + + + + + Parent element + + + + Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding.
    + + + .has-success + + + + + + + Parent element + + + + Used to notify users that the value they’ve entered is fine or has been submitted successfully.
    +
    + + + + + + + + + + + + + + + + + + +
    +
    <div class="s-form-group has-warning">
    <label class="s-label" for="example-warning">Description</label>
    <div class="d-flex ps-relative">
    <textarea class="s-textarea w100" id="example-warning" placeholder="Please describe your problem"></textarea>
    @Svg.Alert.With("s-input-icon")
    </div>
    <p class="s-input-message">Consider entering a description to help us better help you.</p>
    </div>
    +
    +
    + +
    + + +
    +

    Consider entering a description to help us better help you.

    +
    +
    +
    + + +
    +
    <div class="s-form-group has-error">
    <label class="s-label" for="example-success">Description</label>
    <div class="d-flex ps-relative">
    <textarea class="s-textarea w100" id="example-success" placeholder="Please describe your problem"></textarea>
    @Svg.AlertCircle.With("s-input-icon")
    </div>
    <p class="s-input-message">A description must be provided.</p>
    </div>
    +
    +
    + +
    + + +
    +

    A description must be provided.

    +
    +
    +
    + + +
    +
    <div class="s-form-group has-success">
    <label class="s-label" for="example-success">Description</label>
    <div class="d-flex ps-relative">
    <textarea class="s-textarea w100" id="example-success" placeholder="Please describe your problem">How do you know your company is ready for a design system? How do you implement one without too many pain points? How do you efficiently maintain one once it’s built?</textarea>
    @Svg.Checkmark.With("s-input-icon")
    </div>
    <p class="s-input-message">Thanks for providing a description.</p>
    </div>
    +
    +
    + +
    + + +
    +

    Thanks for providing a description.

    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Name + + Size + + Example +
    + + + .s-textarea__sm + + + + + + + Small + + + + + + + 13px + + + +
    + + N/A + + + + + Default + + + + + + + 14px + + + +
    + + + .s-textarea__lg + + + + + + + Large + + + + + + + 18px + + + +
    +
    + + + + + + + + + + + + + + + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/toggle-switch/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/toggle-switch/fragment.html new file mode 100644 index 0000000000..3de1e47ddd --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/toggle-switch/fragment.html @@ -0,0 +1,331 @@ + +
    + + + +

    A toggle is used to quickly switch between two or more possible states. They are most commonly used for simple “on/off” switches.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Modifies + + Description +
    + + + .s-toggle-switch + + + + + + N/A + + Base toggle switch style.
    + + + .s-toggle-switch__multiple + + + + + + + + .s-toggle-switch + + + Used to style toggle switches with three or more options.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    Toggle switches take up less space than an “on/off” radio button group and communicate their intended purpose more clearly than a checkbox that toggles functionality. They also provide consistency between desktop and mobile experiences.

    +
    +
    <div class="d-flex ai-center g8">
    <label class="s-label" for="toggle-example-default"></label>
    <input class="s-toggle-switch" id="toggle-example-default" type="checkbox">
    </div>
    <div class="d-flex ai-center g8">
    <label class="s-label" for="toggle-example-checked"></label>
    <input class="s-toggle-switch" id="toggle-example-checked" type="checkbox" checked>
    </div>
    <div class="d-flex ai-center g8">
    <label class="s-label" for="toggle-example-disabled"></label>
    <input class="s-toggle-switch" id="toggle-example-disabled" type="checkbox" disabled>
    </div>
    <div class="d-flex ai-center g8">
    <label class="s-label" for="toggle-example-checked"></label>
    <input class="s-toggle-switch" id="toggle-example-checked-disabled" type="checkbox" disabled checked>
    </div>
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + +

    Two or more options with icons

    Section titled Two or more options with icons
    +

    Toggles switches can be extended to choose between two or more states where each state is represented by an icon. Using the __multiple toggle instead of a radio group and making sure labels follow their inputs in this case is important.

    +
    +
    <fieldset>
    <div class="d-flex ai-center g8">
    <legend class="s-label c-default"></legend>
    <div class="s-toggle-switch s-toggle-switch__multiple">
    <input type="radio" name="group1" id="input-1" checked value="value1">
    <label for="input-1" aria-label="First value" title="First value">@Svg.Icon1</label>
    <input type="radio" name="group1" id="input-2" value="value2">
    <label for="input-2" aria-label="Second value" title="Second value">@Svg.Icon2</label>
    <input type="radio" name="group1" id="input-3" value="value3">
    <label for="input-3" aria-label="Third value" title="Third value">@Svg.Icon3</label>
    </div>
    </div>
    </fieldset>
    +
    +
    +
    + Search Style +
    + + + + +
    +
    +
    +
    +
    + Export Type +
    + + + + + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/topbar/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/topbar/fragment.html new file mode 100644 index 0000000000..dd92bbba77 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/topbar/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Topbar

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/uploader/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/uploader/fragment.html new file mode 100644 index 0000000000..bc116879f2 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/uploader/fragment.html @@ -0,0 +1,15 @@ + +
    +

    Uploader

    + +
    +
    + This component has been removed in Stacks v3. If using Stacks v2, please refer to the v2 documentation for more information. +
    +
    +
    + +
    + Deploys by Netlify +
    + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/user-cards/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/user-cards/fragment.html new file mode 100644 index 0000000000..be958635d8 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/user-cards/fragment.html @@ -0,0 +1,2435 @@ + +
    + + + +

    User cards are a combination of a user and metadata about the user or post

    + + + +
    + + + + Svelte + + + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-user-card + + + + + + N/A + + + + N/A + + Base user card container that applies the basic style.
    + + + .s-user-card--column + + + + + + N/A + + + + + + .s-user-card > * + + + A container for column elements.
    + + + .s-user-card--row + + + + + + N/A + + + + + + .s-user-card > * + + + A container for row elements.
    + + + .s-user-card--group + + + + + + N/A + + + + + + .s-user-card > * + + + A container for group elements.
    + + + .s-user-card--bio + + + + + + N/A + + + + N/A + + Container for the user's bio.
    + + + .s-user-card--recognition + + + + + + N/A + + + + N/A + + Container for recognition by a collective.
    + + + .s-user-card--rep + + + + + + N/A + + + + N/A + + Container for the user's reputation.
    + + + .s-user-card--time + + + + + + N/A + + + + N/A + + Container for the user's timestamp.
    + + + .s-user-card--username + + + + + + N/A + + + + N/A + + Container for the user's username.
    + + + .s-user-card__sm + + + + + + N/A + + + + + + .s-user-card + + + Use the small variant for space-constrained areas, such as post summaries, or to establish visual hierarchy for secondary content like comments and replies.
    + + + .s-user-card__lg + + + + + + N/A + + + + + + .s-user-card + + + Use the large variant when space permits and more detailed information is desired.
    + + + .s-user-card--group__split + + + + + + N/A + + + + + + .s-user-card--group + + + Inserts a separator between each element.
    +
    + + + + + + + + + + + + + + + + + +
    + +
    + + +

    The Base style is the standard variant used to connect a user to their content, appearing most frequently in post-summary lists and on question pages. This view is flexible, allowing various metadata fields to be shown or hidden as needed.

    +
    + Note on timestamps: Hovering over the timestamp displays a popover with precise dates and a link to the post's /timeline. For authors, this shows the post creation date; for editors, it shows the last modification date. +
    +
    +
    <div class="s-user-card">
    <a class="s-user-card--group" href="…">
    <!-- Note: Default variant includes avatar size modifier (s-avatar__24) -->
    <span class="s-avatar s-avatar__24">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username"></span>
    </a>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="2026-01-09 12:15:39Z" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + + + +
    + + + demo avatar + + SofiaAlc + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + + + +
    + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + +
    • + + +
    • + + silver bling + + +
    • + + +
    • + + bronze bling + + +
    • + +
    + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    +
    +
    + +
    + +

    Adds the User badge indicator to the usercard. Use this to signify the official role, status, or origin of the account (such as Moderator, Staff, or Bot) directly alongside the user's name.

    +
    +
    <div class="s-user-card">
    <a class="s-user-card--group" href="…">
    <!-- Note: Default variant includes avatar size modifier (s-avatar__24) -->
    <span class="s-avatar s-avatar__24">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username"></span>
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="2026-01-09 12:15:39Z" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + +
    + + + demo avatar + + Community + + +
    + + Bot + +
    + + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
    + + Mod + +
    + + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
    + + Staff + + Mod + +
    + + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
    + + Mod + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + +
    • + + +
    • + + silver bling + + +
    • + + +
    • + + bronze bling + + +
    • + +
    + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
    + + Staff + + Mod + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Size + + Description +
    + + + .s-user-card__sm + + + + + + + small + + + + Use the small variant for space-constrained areas, such as post summaries, or to establish visual hierarchy for secondary content like comments and replies.
    + + N/A + + + + N/A + + Use the default variant when the user needs a more primary focus of the content. This style features a larger avatar to establish top-level hierarchy like question and answer authors.
    + + + .s-user-card__lg + + + + + + + large + + + + Use the large variant when space permits and more detailed information is desired
    +
    + + + + + + + + + + + + + + + + + +
    +
    <div class="s-user-card s-user-card__sm">
    <a class="s-user-card--group" href="…">
    <!-- Note: Small variant does not include avatar size modifier -->
    <span class="s-avatar">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username"></span>
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="2026-01-09 12:15:39Z" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + + + +
    + + + demo avatar + + SofiaAlc + + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    + + + demo avatar + + SofiaAlc + + +
    + + Mod + +
    + + + + + + + +
    + +
    +
    + +
    +
    <div class="s-user-card s-user-card__lg">
    <div class="s-user-card--row">
    <a class="s-avatar s-avatar__48" href="#">
    <img class="s-avatar--image" alt="…" src="…" />
    </a>
    <div class="s-user-card--column">
    <div class="s-user-card--row">
    <a class="s-user-card--username" href="#"></a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__staff s-badge__sm"></span>
    <span class="s-badge s-badge__moderator s-badge__sm"></span>
    </div>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    </div>
    </div>
    <div class="s-user-card--column">
    <div class="s-user-card--row s-user-card--recognition">
    @Svg.Icon.StarVerifiedSm.With("native")
    <span></span>
    </div>
    <ul class="s-user-card--group s-user-card--group__split">
    <li></li>
    <li></li>
    </ul>
    <div class="s-user-card--bio"></div>
    </div>
    </div>
    +
    + +
    +
    + + demo avatar + +
    +
    + SofiaAlc +
    + + Mod + +
    +
    +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    +
    +
    +
    + +
    + + Recognized by AudioBubble +
    + + +
      + +
    • Senior Product Designer
    • + + +
    • Vancouver, Canada
    • + +
    + + +
    Developer who believes in clean code, clear coffee, and the occasional snake pun. Automating the boring stuff one script at a time.
    + +
    +
    + +
    +
    + + demo avatar + +
    +
    + SofiaAlc +
    + +
    +
    +
      + +
    • + + reputation bling + + 1 +
    • + + + + +
    +
    +
    +
    + + +
      + + +
    • Vancouver, Canada
    • + +
    + + +
    Developer who believes in clean code, clear coffee, and the occasional snake pun. Automating the boring stuff one script at a time.
    + +
    +
    + +
    +
    + + demo avatar + +
    +
    + SofiaAlc +
    + +
    +
    +
      + +
    • + + reputation bling + + 1 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    +
    +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + State + + Description +
    + + + .s-user-card--username__op + + + + + + + Original Poster + + + + This label identifies the author of the primary post (such as the Question asker) when they appear in secondary contexts, like comment threads.
    + + N/A + + + + + New Contributor + + + + This label appears on a user's first-ever question or answer to signal that they are new to the platform.
    + + + .s-user-card__deleted + + + + + + + Deleted user + + + + When a user is deleted, we still need to show their name, but we strip the meta data.
    +
    + + + + + + + + + + + + + + + + + +
    +
    <div class="s-user-card">
    <a class="s-user-card--group" href="…">
    <span class="s-avatar s-avatar__24">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username s-user-card--username__op" data-s-tooltip-html-title="<a href='…' class='s-link s-link__underlined'>…</a> is the original poster" data-controller="s-tooltip"></span>
    </a>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + +
    + + + + demo avatar + + + SofiaAlc + + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    + + + + demo avatar + + + SofiaAlc + + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    + + + + demo avatar + + + SofiaAlc + + +
    + + Mod + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + +
    + +
    +
    + +
    +
    <div class="s-user-card">
    <a class="s-user-card--group" href="…">
    <span class="s-avatar s-avatar__24">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username s-user-card--new-contributor"></span>
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm s-badge__new" data-s-tooltip-html-title="<a href='…' class='s-link s-link__underlined'>…</a> is a new contributor to this site. Take care in asking for clarification, commenting, and answering. <a href='…' class='s-link s-link__underlined'>Check out our Code of Conduct</a>" data-controller="s-tooltip">New</span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + +
    + + + + demo avatar + + + SofiaAlc + + +
    + + New + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    + + + + demo avatar + + + SofiaAlc + + +
    + + New + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    + + + + demo avatar + + + SofiaAlc + + +
    + + New + + Staff + +
    + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + + + +
    + +
    +
    + +
    +
    <div class="s-user-card s-user-card__deleted">
    <div class="s-user-card--group">
    <img alt="…" src="…" />
    <span class="s-user-card--username"></span>
    </div>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + +
    +
    + + deleted avatar + + SofiaAlc +
    + + + + + +
    + +
    +
    + + deleted avatar + + SofiaAlc +
    + + + + + +
    + +
    +
    +
    + +
    +

    Use to display a specialized icon alongside the username, highlighting unique achievements. This style is additive and can be combined with any of the usercard variants listed above.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Name + + Description +
    + + + .s-user-card--recognition-additional-bling + + + + + + + Recognized Member + + + + This label appears on within a Collective question post to signal that they are a Recognized Member.
    + + N/A + + + + + Awarded + + + + This icon appears next to a user when they are within the top 3 positions of a Collective’s leaderboard.
    +
    + + + + + + + + + + + + + + + + + +
    +
    <!-- Small variant -->
    <div class="s-user-card s-user-card__sm">
    <a class="s-user-card--group" href="…">
    <span class="s-avatar">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username"></span>
    </a>
    <a href="…" class="s-user-card--group s-user-card--recognition" title="…" aria-label="…" data-controller="s-tooltip">
    @Svg.Icon.StarVerifiedSm.With("native")
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>

    <!-- default variant -->
    <div class="s-user-card">
    <div class="s-user-card--column">
    <div class="s-user-card--row">
    <a class="s-avatar s-avatar__24" href="…">
    <img class="s-avatar--image" alt="…" src="…" />
    </a>
    <a class="s-user-card--group" href="…">
    <span class="s-user-card--username"></span>
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    <div class="s-user-card--row">
    <div class="s-user-card--row s-user-card--recognition">
    @Svg.Icon.StarVerifiedSm.With("native")
    <span>Recognized by <a href="…">AudioBubble</a></span>
    </div>
    </div>
    </div>
    </div>
    +
    + +
    + + + + demo avatar + + SofiaAlc + + + + + + + +
      +
    • + + reputation bling + + 1,775 +
    • +
    • + + gold bling + + 8 +
    • +
    • + + silver bling + + 12 +
    • +
    • + + bronze bling + + 4 +
    • +
    + + + + +
    + +
    + + + + demo avatar + + SofiaAlc + + +
    + + Staff + +
    + + + + + + +
      +
    • + + reputation bling + + 1,775 +
    • +
    • + + gold bling + + 8 +
    • +
    • + + silver bling + + 12 +
    • +
    • + + bronze bling + + 4 +
    • +
    + + + + +
    + +
    + +
    +
    + + demo avatar + + + SofiaAlc + + +
      +
    • + + reputation bling + + 1,775 +
    • +
    • + + gold bling + + 8 +
    • +
    • + + silver bling + + 12 +
    • +
    • + + bronze bling + + 4 +
    • +
    + + + +
    +
    + +
    + + Recognized by AudioBubble +
    + +
    +
    + +
    + +
    + +
    +
    + + demo avatar + + + SofiaAlc + + +
    + + Staff + +
    + +
      +
    • + + reputation bling + + 1,775 +
    • +
    • + + gold bling + + 8 +
    • +
    • + + silver bling + + 12 +
    • +
    • + + bronze bling + + 4 +
    • +
    + + + +
    +
    + +
    + + Recognized by AudioBubble +
    + +
    +
    + +
    + +
    +
    + +
    +
    <div class="s-user-card s-user-card__sm">
    <a class="s-user-card--group" href="…">
    <span class="s-avatar">
    <img class="s-avatar--image" alt="…" src="…" />
    </span>
    <span class="s-user-card--username"></span>
    </a>
    <a class="s-user-card--group fc-orange-400" href="…" title="…" aria-label="…" data-controller="s-tooltip">
    @Svg.Icon.AchievementsSm.With("native")
    </a>
    <div class="s-user-card--group">
    <span class="s-badge s-badge__sm"></span>
    </div>
    <ul class="s-user-card--group">
    <li class="s-user-card--rep">
    <span class="s-bling s-bling__sm">
    <span class="v-visible-sr">reputation bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__gold s-bling__sm">
    <span class="v-visible-sr">gold bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__silver s-bling__sm">
    <span class="v-visible-sr">silver bling</span>
    </span>

    </li>
    <li>
    <span class="s-bling s-bling__bronze s-bling__sm">
    <span class="v-visible-sr">bronze bling</span>
    </span>

    </li>
    </ul>
    <a class="s-user-card--time" href="…" title="Show activity on this post" data-controller="s-tooltip">
    <time></time>
    </a>
    </div>
    +
    + + + +
    + + + + demo avatar + + + SofiaAlc + + + + + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + +
    • + + +
    • + + silver bling + + +
    • + + +
    • + + bronze bling + + +
    • + +
    + + + + +
    + +
    + + + + demo avatar + + + SofiaAlc + + +
    + + Mod + +
    + + + + + +
      + +
    • + + reputation bling + + 1,775 +
    • + + +
    • + + gold bling + + 8 +
    • + + +
    • + + silver bling + + 12 +
    • + + +
    • + + bronze bling + + 4 +
    • + +
    + + + + +
    + +
    +
    +
    + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/components/vote/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/components/vote/fragment.html new file mode 100644 index 0000000000..00b0c01bb0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/components/vote/fragment.html @@ -0,0 +1,747 @@ + +
    + + + +

    The vote component allows users to vote on the quality of content by casting an upvote or downvote.

    + + + +
    + + + + Svelte + + + + + + + + Figma + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Class + + Parent + + Modifies + + Description +
    + + + .s-vote + + + + + + N/A + + + + N/A + + Base vote component.
    + + + .s-vote--btn + + + + + + + + .s-vote + + + + + N/A + + Vote button.
    + + + .s-vote--votes + + + + + + + + .s-vote + + + + + N/A + + Container for vote counts.
    + + + .s-vote--downvotes + + + + + + + + .s-vote--votes + + + + + N/A + + Downvote count.
    + + + .s-vote--total + + + + + + + + .s-vote--votes + + + + + N/A + + Total vote count.
    + + + .s-vote--upvotes + + + + + + + + .s-vote--votes + + + + + N/A + + Upvote count.
    + + + .s-vote__expanded + + + + + + N/A + + + + + + .s-vote + + + Expanded vote style that shows upvote and downvote counts separately.
    + + + .s-vote__horizontal + + + + + + N/A + + + + + + .s-vote + + + Horizontal vote style that arranges buttons and counts in a row. This layout does not officially support downvoting or expanded vote count.
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +

    + The base vote component includes an upvote button, a downvote button, and a vote count. When the vote count is zero and the current user has not voted, it should display Vote in place of a number. Otherwise, show the vote count and truncate large numbers (e.g., 1.2k). +

    + +
    +
    <div class="s-vote">
    <button class="s-vote--btn">
    @Svg.Vote16Up
    <span class="v-visible-sr">upvote</span>
    </button>
    <span class="s-vote--votes">
    <span class="s-vote--total">12</span>
    </span>
    <button class="s-vote--btn">
    @Svg.Vote16Down
    <span class="v-visible-sr">downvote</span>
    </button>
    </div>
    +
    + +
    + Base +
    + + + 12 + + +
    +
    + +
    + 0 vote count +
    + + + Vote + + +
    +
    + +
    + ≥ 1,000 votes +
    + + + 27.5K + + +
    +
    + +
    +
    + + +

    + Include the .s-vote__expanded modifier to show upvote and downvote counts instead of the total vote count. This modifier hides .s-vote--total and shows .s-vote--upvotes and .s-vote--downvotes instead. +

    + +
    +
    <div class="s-vote s-vote__expanded">
    <button class="s-vote--btn">
    @Svg.Vote16Up
    <span class="v-visible-sr">upvote</span>
    </button>
    <button class="s-vote--votes">
    <span class="s-vote--upvotes">12</span>
    <span class="s-vote--total">20</span>
    <span class="s-vote--downvotes">8</span>
    </button>
    <button class="s-vote--btn">
    @Svg.Vote16Down
    <span class="v-visible-sr">downvote</span>
    </button>
    </div>
    +
    + +
    +
    + + + +12 + 20 + -8 + + +
    +
    + +
    +
    + + +

    + Apply the .s-vote__horizontal modifier to arrange the vote buttons and counts in a horizontal layout. This layout does not officially support expanded vote count. This configuration is best suited for scenarios such as comment voting, where a more compact design is preferred. +

    + +
    +
    <div class="s-vote s-vote__horizontal">
    <button class="s-vote--btn">
    @Svg.Vote16Up
    <span class="v-visible-sr">upvote</span>
    <span class="s-vote--votes">
    <span class="s-vote--total">5</span>
    </span>
    </button>
    </div>

    <div class="s-vote s-vote__horizontal">
    <button class="s-vote--btn">
    @Svg.Vote16Up
    <span class="v-visible-sr">upvote</span>
    </button>
    <span class="s-vote--votes">
    <span class="s-vote--total">10</span>
    </span>
    <button class="s-vote--btn">
    @Svg.Vote16Down
    <span class="v-visible-sr">downvote</span>
    </button>
    </div>
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + + + 10 + + + +
    +
    + +
    +
    + + + +

    + Use filled vote icons to indicate when the current user has upvoted or downvoted the content. +

    + +
    +
    <div class="s-vote s-vote__horizontal">
    <button class="s-vote--btn">
    @Svg.Vote16UpFill
    <span class="v-visible-sr">upvoted</span>
    </button>
    <span class="s-vote--votes">
    <span class="s-vote--total">12</span>
    </span>
    <button class="s-vote--btn">
    @Svg.Vote16Down
    <span class="v-visible-sr">downvote</span>
    </button>
    </div>
    +
    + + + +
    + Upvoted +
    + + + + 27.5K + + + +
    +
    + + + +
    + Downvoted +
    + + + + 11 + + + +
    +
    + + + + + +
    + Horizontal upvoted +
    + + + +
    +
    + + + + + +
    + Horizontal downvoted +
    + + + + 4 + + + +
    +
    + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/develop/building/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/develop/building/fragment.html new file mode 100644 index 0000000000..df2f9d8cb1 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/develop/building/fragment.html @@ -0,0 +1,165 @@ + +
    + + + +

    The following is a guide to building and running Stacks locally. You’ll need to be able to build Stacks to contribute to our documentation or add new classes to our CSS library.

    + + + +
    + +
    +
    + +

    There are two common ways to clone a repo:

    +
      +
    • Use the command line: git clone https://github.com/StackExchange/Stacks.git
    • +
    • Use GitHub’s desktop app. +
        +
      1. Download and install GitHub Desktop.
      2. +
      3. Login with your GitHub credentials.
      4. +
      5. Clone the Stacks repo.
      6. +
      +
    • +
    +
    + +
    + +

    We use a bunch of NPM dependencies to process and package up Stacks for delivery. You’ll need to install them.

    +
      +
    1. Install Node & NPM
    2. +
    3. Open the Stacks repo in a Terminal window.
    4. +
    5. Install the NPM dependencies. npm install
    6. +
    +
    + +
    + +

    That should do it for all our dependencies. You’re now able to run Stacks.

    +
      +
    1. From the top level of the Stacks repo, run our main script npm run start -w packages/stacks-docs
    2. +
    3. Visit your local copy of Stacks at http://localhost:8080/
    4. +
    +
    + +
    + +

    Installing dependencies can be frustrating, and we’re here to help. If you’re stuck, the Stacks team is always available in #stacks. If that doesn’t work, try opening an issue.

    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/develop/conditional-classes/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/develop/conditional-classes/fragment.html new file mode 100644 index 0000000000..e20162fb8f --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/develop/conditional-classes/fragment.html @@ -0,0 +1,246 @@ + +
    + + + +

    Stacks provides conditional atomic classes to easily build complex responsive designs, hover states, and print layouts. A limited selection of conditional classes are available throughout Stacks. These are represented in class definitions tables by a green checkmark .

    + + + +
    + +
    +
    + +

    Many utility classes in Stacks are also available in screen-size specific variations. For example, the .d-none utility can be applied to small browser widths and below using the .sm:d-none class, on medium browser widths and below using the .md:d-none class, and on large browser widths and below using the .lg:d-none class.

    + +

    This is done using predefined max-width media query breakpoints represented by t-shirt sizes. A common example would be to apply .md:fd-column to a flex layout. This means, “At the medium breakpoint and smaller, switch the flex layout from columns to rows by applying fd-column.”

    + +
    + Note: Our font size classes, .fs-[x] are automatically adjusted at the smallest breakpoint. +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassBreakpointDefinition
    .[x]N/AThe class is applied on all browser widths.
    .lg:[x]92.25remThe class is applied on large browser widths and below.
    (1476px at 16px font size)
    .md:[x]71.875remThe class is applied on medium browser widths and below.
    (1150px at 16px font size)
    .sm:[x]48.75remThe class is applied on small browser widths and below.
    (780px at 16px font size)
    +
    +
    + +
    + +

    Resize your browser to see which classes are applied.

    +
    + +
    <div class="d-flex flex__center md:fd-column g16">
    <div class="wmx3 fs-body3 lg:ta-center">

    </div>
    <div class="md:order-first sm:d-none">
    <svg></svg>
    </div>
    </div>
    +
    +
    +
    + Stack Overflow for Teams is a private, secure home for your team’s questions and answers. No more digging through stale wikis and lost emails—give your team back the time it needs to build better products. +
    +
    + +
    +
    +
    +
    +
    + +
    + +

    Stacks provides hover-only atomic classes. By applying .h:bs-lg, .h:o100, and .h:fc-black-600, you’re saying “On hover, add a large box shadow, an opacity of 100%, and a font color of black 900.”

    +
    +
    <div class="ba bc-black-225 p12 bar-md o80 bs-sm h:bs-lg h:o100 h:fc-black-600"></div>
    +
    +
    Example
    +
    +
    +
    + +
    + +

    Stacks provides focus-only atomic classes. By applying .f:o100, and .f:fc-black-600, you’re saying “On focus, add an opacity of 100%, and a font color of black 900.”

    +
    +
    <div class="ba bc-black-225 p12 bar-md o80 bs-sm f:o100 f:fc-black-600"></div>
    +
    +
    Example
    +
    +
    +
    + +
    + +

    Stacks provides print-only atomic classes. By applying .print:d-none, you’re saying “In print layouts, remove this element from the layout.”

    +
    +
    <div class="ba bc-black-225 p12 bar-md print:d-none"></div>
    <div class="ba bc-black-225 p12 bar-md d-none print:d-block"></div>
    +
    +
    This element will be removed from the page while printing.
    +
    This element will only be shown when printing.
    +
    +
    +
    + +
    + +

    Stacks provides darkmode-only atomic classes. By applying .d:bg-green-300, you’re saying “In dark mode, apply a background of green 100.”

    +
    +
    <div class="bg-yellow-300 fc-yellow-600 d:bg-green-300 d:fc-green-600"></div>
    +
    +
    This element will be yellow text and background in light mode but will become green in dark mode.
    +
    +
    + +

    In addition to specific overrides, you can force an element’s colors to be light or dark by applying .theme-dark__forced or .theme-light__forced. This comes in handy when showing users a preview of light or dark interface elements.

    +
    +
    <div class="fc-dark bg-yellow-300 ba bc-yellow-300 theme-light__forced"></div>
    +
    +
    This element will be rendered with light mode colors regardless of theme preference.
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/develop/javascript/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/develop/javascript/fragment.html new file mode 100644 index 0000000000..88db256e33 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/develop/javascript/fragment.html @@ -0,0 +1,214 @@ + +
    + + + +

    This is an introduction to the JavaScript functionality provided by Stacks.

    + + + +
    + +
    +
    +

    Including the Stacks JavaScript

    Section titled Including the Stacks JavaScript
    + +

    While Stacks is first and foremost a CSS library, it also provides commonly used functionality for some components via JavaScript. This functionality is optional. If you only need the styling parts of Stack, you’re free to ignore the provided JavaScript. The converse is not true: The JavaScript components work under the assumption that the Stacks CSS is available.

    + +

    Stacks JavaScript is currently included within various Stack Overflow projects automatically. If you’re working on a Stack Overflow project, chances are it’s already available for you! If not, reach out to us and we’ll work on getting it setup.

    +

    To include Stacks JavaScript in other projects, do the following.

    + +
      +
    • Include the file dist/js/stacks.min.js in your page. For example, if you use the unpkg CDN, add the tag <script src="https://unpkg.com/@stackoverflow/stacks/dist/js/stacks.min.js"></script> to your HTML. See Using Stacks for more information on Unpkg and installing Stacks via NPM.
    • +
    +
    + +
    + + +

    The Stacks JavaScript components are provided as Stimulus controllers. Stimulus is a library created by Basecamp.

    + +

    Stimulus allows you to add functionality to your markup in a way that is similar to how you add styling to your markup: by modifying HTML attributes.

    + +

    Just as you style components by adding classes to the class attribute, with Stacks JavaScript, you’ll give components optional functionality by adding data-… attributes to the HTML.

    + +

    The basic functional unit of Stimulus, and of a Stacks JavaScript component, is a controller. Controllers are identified by their name, and all Stacks-provided controller names are prefixed with s-…, just like component CSS classes. You give functionality to an HTML element by setting its data-controller attribute.

    + +
    +
    <div class="s-magic-widget s-magic-widget__awesome" data-controller="s-magic-widget"></div>
    +
    + +

    Refer to the documentation of individual components on how to configure a component’s behavior.

    +
    + +
    +

    Creating your own Stimulus controllers

    Section titled Creating your own Stimulus controllers
    + +

    A side effect of including the Stacks JavaScript in your project is that you also have Stimulus available in your page. This means you can not only use Stacks-provided controllers, but also create your own.

    + +

    For general information about writing code with Stimulus, refer to the official documentation. That documentation generally assumes that you’re writing ES6 code. In order to make it useful without ES6-to-ES5 transpilation, Stacks provides a helper that allows you to write controllers using old-fashioned JavaScript syntax.

    + +

    This helper is called Stacks.addController and takes two arguments: The name (“identifier”) of the controller, and an object that is analogous to the ES6 class that you would write for your controller, except that it's a plain JavaScript object. All own enumerable properties of that object will be made available on the controller prototype, with the exception of the targets property, which will be available on the controller constructor itself, i.e. statically.

    + +

    With that, you can create and register the final Hello World controller example from the official documentation like this:

    + +
    +
    Stacks.addController("greeter", {
    targets: ["name"],

    greet: function () {
    console.log("Hello, " + this.name +"!");
    },

    get name() {
    return this.nameTarget.value;
    }
    });
    +
    +
    + +
    + +

    We prefix our JavaScript target classes with .js- so that changing or adding a class name for styling purposes doesn’t inadvertently break our JS. This allows us to style elements with any chain of atomic or component classes from Stacks without breaking any additional JavaScript interactivity.

    +

    We also try to avoid IDs for both visual styling and JavaScript targeting. They aren’t reusable, visual styling can’t be overwritten by atomic classes, and, like non-.js- classes, we can’t tell if there is JavaScript interactivity attached at a glance.

    + +
    Do
    +
    +
    <div class="s-component bs-lg js-copy">

    </div>
    +
    + +
    +
    var button = document.querySelector('.js-copy');
    button.addEventListener('click', function() {

    });
    +
    + +
    Don’t
    +
    +
    <div class="s-component bs-lg">

    </div>
    +
    + +
    +
    var button = document.querySelector('.s-component');
    button.addEventListener('click', function() {

    });
    +
    + +
    +
    .s-component {

    }
    +
    + +
    Don’t
    +
    +
    <div id="card">

    </div>
    +
    + +
    +
    var button = document.querySelector('#card');
    button.addEventListener('click', function() {

    });
    +
    + +
    +
    #card {

    }
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/develop/using-stacks/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/develop/using-stacks/fragment.html new file mode 100644 index 0000000000..3f86120bff --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/develop/using-stacks/fragment.html @@ -0,0 +1,174 @@ + +
    + + + +

    A short guide to Stacks, a robust CSS & JavaScript Pattern library for rapidly building Stack Overflow.

    + + + +
    + +
    +
    + +

    Stacks is built with a unified goal: We should be writing as little CSS & JavaScript as possible. To achieve this goal, the Stacks team has created a robust set of reusable components. These include components like buttons, tables, and form elements.

    +

    We’ve also created a powerful set of atomic classes that can be chained together to create just about any layout without writing a single line of new CSS. Further, these atomic classes can be used as modifiers of pre-existing components.

    +
    + +
    + +

    Stacks is currently included within various Stack Overflow projects automatically. If you’re working on a Stack Overflow project, chances are it’s already available for you! If not, reach out to us and we’ll work on getting it set up.

    +

    To include Stacks in other projects, you can install Stacks via NPM: npm install --save @stackoverflow/stacks

    +

    You can also include a minified, compiled Stacks CSS style sheet that’s delivered via Unkpg, a CDN for NPM packages. This is good for things like Codepen or other quick prototypes. This CDN should not be considered production-ready. <link rel="stylesheet" href="https://unpkg.com/@stackoverflow/stacks/dist/css/stacks.min.css">

    + +

    To use Stack’s built-in JavaScript interactivity with your components, refer to the JavaScript guidelines.

    + +
    + If you’re hotlinking to Stacks on the Stack Overflow CDN, you are doing it wrong. You are setting yourself up for breaking upstream changes. Instead, you should install via properly versioned package management like NPM. This will keep you pinned to a stable version. +
    +
    + +
    + +

    In order to use Stacks, let’s consider the design you’d like to implement.

    + +
      +
    1. +

      My design uses existing components

      +

      Identify if the design you’re implementing uses any existing components. Great, it does? Grab the markup from that component’s example page and paste that into your view.

      +
    2. +
    3. +

      My design uses existing components, but has some special cases.

      +

      E.g. background colors, border, and font sizes. Awesome, copy the component’s example markup to your view and add an atomic class to override its styling. Practically, this will likely just be adding something like an .mb12 to a button, or hiding something temporarily with .d-none.

      +
    4. +
    5. +

      My design uses a new pattern that doesn’t have a component yet. +

      No worries, let’s build your view by assembling some atomic classes. If you’re doing this more than once, you should help us identify a new pattern by requesting a new component.

      +
    6. +
    7. +

      My design is super special and…

      +

      I’m going to write a lot of custom CSS from scratch in its own .less file that I’ve included in the bundle. You probably shouldn’t be doing this. With atomic classes, you can build most of what you’re attempting to do without writing a single new line of CSS. The Stacks team would prefer you use these pre-existing classes to build new UI. Every line of CSS you write, the more CSS we have to maintain, the more our users have to download, and the more bytes we have to host.

      +
    8. +
    +
    + +
    + +

    Need help? Open an issue. We’ll be happy to help.

    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/accessibility/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/accessibility/fragment.html new file mode 100644 index 0000000000..f89bddf86a --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/accessibility/fragment.html @@ -0,0 +1,1019 @@ + +
    + + + +

    A non-comprehensive guide to accessibility best practices when using Stacks.

    + + + +
    + +
    + + +
    + + +

    All Stack Overflow product UIs must conform to the AA conformance level of the Web Content Accessibility Guidelines (WCAG) 2.2 with a few exceptions around color contrast documented below.

    + + + +

    When high contrast mode is enabled, Stack Overflow product UIs must meet or exceed the Success Criterion 1.4.6 Contrast (Enhanced) of the Web Content Accessibility Guidelines (WCAG) 2.2 and should conform to the remaining AAA conformance level rules when reasonably achievable. This only applies to the subset of Stack Overflow products that provide high contrast modes. Note: not all Stack Overflow products are expected to support high contrast modes.

    +
    + +
    + + +

    Stack Overflow product UIs MUST conform to a custom conformance level of the Accessible Perceptual Contrast Algorithm (APCA). This custom conformance level replaces the AA conformance level of the Web Content Accessibility Guidelines (WCAG) 2.2 for color contrast.

    + + + +

    Stacks aims to equip you with an accessible color palette and has been tested against WCAG AA, WCAG AAA and the newer APCA color standards. Most of our color combinations meet WCAG AA and APCA levels defined below. We also offer high contrast mode which offers a greater level of contrast.

    + + + +

    Contrast is the difference in luminance or color between any two elements. All visual readers require ample luminance contrast for fluent readability. Stack Overflow products must conform to a custom conformance level of the Accessible Perceptual Contrast Algorithm (APCA). Based on our custom conformance level, all text must have a Lightness contrast (Lc) value of 60, body copy must have a Lc value of 75, icons must have a Lc value of 45, and placeholder and disabled text must have a Lc of 30. These numbers will be negative when calculating for dark mode.

    + + + + + + + +
    + + + + +
    +
    + + +
    Robots
    + +
    +
    +
    + + Do + +
    + Use luminance contrast that meets our standards as defined above. +
    +
    + + + + + +
    +
    + + +
    Robots
    + +
    +
    +
    + + Don't + +
    + Use low luminance contrast that fail our standards. +
    +
    + +
    + + + +

    Visual readers with color vision deficiency (CVD) have problems differentiating some hues and therefore these users need help discerning differences between items. This means that color (hue) should never be the sole means of communicating information and should always be paired with a non-color dependent indicator to accommodate all visual users.

    + + + + + + + +
    + + + + +
    +
    + +
    + + +
    + +
    +
    +
    + + Do + +
    + Use an icon alongside color to convey meaning. +
    +
    + + + + + +
    +
    + +
    + +
    + +
    +
    +
    + + Don't + +
    + Use color alone to convey meaning. +
    +
    + +
    + +
    + +
    + + +

    Some people navigate through a website by using a keyboard or other device (instead of a mouse). A focus state should clearly let users know which item they’re on and is ready to interact with. Stack’s has taken a hybrid approach in using both the browser’s default styles (smaller interactive components like text links) and a custom focus ring.

    + +

    Foundation for custom approach

    Section titled Foundation for custom approach
    + +

    + The custom approach adds two different outline rings on the inside of the component. The outer ring color uses secondary-theme-400 + + + + + + theme-secondary-400 + + + (matching the primary button color) and the inner ring color uses white + + + + + + white + + (matching the background). +

    + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + +

    + The outer ring color will always display as the theme color even when applied to a muted or danger styled button. This ensures the focus ring maintains a 3:1 color contrast ratio for any adjacent colors (WCAG level AA) within any theme (assuming the secondary-theme color + + + + + + theme-secondary-400 + + + already passes the 3:1 contrast ratio). +

    + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + +

    Both focus rings are always 2px thick. This allows the focus state to meet WCAG 2.4.13 Focus Appearance (AAA) standards for High Contrast mode. Whenever possible, the rings should be added to the inside of the component so we can better ensure that the rings don't get accidentally cut off by the surrounding layout (which helps us to meet WCAG 2.4.11 Focus Not Obscured AA). However, this does result in a padding reduction within the element, surrounding the text. When choosing to set the focus rings on the inside (inset), the component must have at least 4px of padding at the smallest size. This has been applied to buttons, navigation, and pagination.

    + +

    When the padding amount is not sufficient enough to support a double ring on the inside of the component, the rings are placed on the outside. The components included are tags, toggles, form elements (input fields, selects, radio/checkboxes…), block links and the editor.

    + + +
    + +
    + + javascript + + + + + + + + + + + + + + + +
    + +
    + + javascript + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + +

    Any component that already has an existing background color that fills the shape will maintain its original fill color.

    + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + +

    For components that have an existing border around the component when not in focus, a background fill color is added in addition to the focus rings. This ensures there’s a strong enough visual difference between the non-focus and focus state. These patterns are maintained across all components for consistency.

    + +
    + +
    +
    + + page + 2 + +
    + + + + + + + + + + + + + + +
    + +
    +
    + + page + 2 + +
    + + + + + + + + + + + + + + +
    + +
    + + + +

    Components without an existing fill or border will only display the double rings on focus. Since the inner ring matches the background color in most cases, this will visually appear like a single ring around the perimeter of the component.

    + +
    + +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +

    The exceptions to this pattern are the Clear button variations. All buttons display a background fill layer when in focus. Clear, Outline and Filled styles will all look the same when in focus. The fill color was chosen to match the existing Filled style.

    + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
    + + + +

    Some focusable elements and Stacks components currently do not include custom focus styling. These elements will instead render the browser-default focus indicators.

    +
    + +
    + + +

    + All Stack Overflow products must conform to the WCAG 2.2 SC 1.4.10: Reflow. This requires that our product UIs support viewports as small as 320px x 256px without requiring the user scrolling in multiple dimensions (unless an element requires it for usage or meaning). Very few users will ever use a viewport this small, but it's important to support it so users can zoom in up to 400% and still have a usable experience. At 400% zoom, a 320x256 viewport translates to 1280x1024, which is a common resolution for many users. Supporting this small viewport size ensures that users with low vision can still use our products effectively. +

    + + +

    + There are some exceptions to this rule. Some elements such as tables and videos may require horizontal scrolling on small viewports. In these cases, it's acceptable to require scrolling in two dimensions. See the WCAG 2.2 documentation on Reflow for detailed guidance. +

    +
    + +
    + + +

    + ARIA landmarks should be used across Stack Overflow product pages to provide clear navigation structures for users relying on assistive technologies. + Landmarks are inserted into the page explictly using the role attribute on an element (e.g. role="search", etc...) or by leveraging semantic HTML (e.g. an header element is given automatically the banner landmark).
    + Using semantic HTML elements should be preferred over using the role attribute whenever possible. +

    +

    For a comprehensive guide on using ARIA landmark roles refer to:

    + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/color-fundamentals/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/color-fundamentals/fragment.html new file mode 100644 index 0000000000..e7a71d8bc0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/color-fundamentals/fragment.html @@ -0,0 +1,3973 @@ + +
    + + + +

    Color is used distinguish our brand, convey meaning, and invoke emotions. A color palette ensures a familiar and consistent experience across our products.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    +
    + + +

    + The neutral palette consists of black, white, and grays. The neutral palette is dominant in our UI, using subtle shifts in value to create hierarchy and organize content. +

    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + black-050 + +
    + + + + + + + + + + + + +
    + black-100 + +
    + + + + + + + + + + + + +
    + black-150 + +
    + + + + + + + + + + + + +
    + black-200 + +
    + + + + + + + + + + + + +
    + black-225 + +
    + + + + + + + + + + + + +
    + black-250 + +
    + + + + + + + + + + + + +
    + black-300 + +
    + + + + + + + + + + + + +
    + black-350 + +
    + + + + + + + + + + + + + + +
    + black-400 + +
    + + + + + + + + + + + + + + +
    + black-500 + +
    + + + + + + + + + + + + + + +
    + black-600 + +
    + + + + +
    + + + + +
    + +
    + +

    + Stacks uses 5 colors with 6 stops per color. Colors are used sparingly and intentionally to convey meaning, draw attention to UI, or create associations. +

    +
    + + + + +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + orange-100 + +
    + + + + + + + + + + + + +
    + orange-200 + +
    + + + + + + + + + + + + + + +
    + orange-300 + +
    + + + + + + + + + + + + + + +
    + orange-400 + +
    + + + + + + + + + + + + + + +
    + orange-500 + +
    + + + + + + + + + + + + + + +
    + orange-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + blue-100 + +
    + + + + + + + + + + + + +
    + blue-200 + +
    + + + + + + + + + + + + + + +
    + blue-300 + +
    + + + + + + + + + + + + + + +
    + blue-400 + +
    + + + + + + + + + + + + + + +
    + blue-500 + +
    + + + + + + + + + + + + + + +
    + blue-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + green-100 + +
    + + + + + + + + + + + + +
    + green-200 + +
    + + + + + + + + + + + + + + +
    + green-300 + +
    + + + + + + + + + + + + + + +
    + green-400 + +
    + + + + + + + + + + + + + + +
    + green-500 + +
    + + + + + + + + + + + + + + +
    + green-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + red-100 + +
    + + + + + + + + + + + + +
    + red-200 + +
    + + + + + + + + + + + + + + +
    + red-300 + +
    + + + + + + + + + + + + + + +
    + red-400 + +
    + + + + + + + + + + + + + + +
    + red-500 + +
    + + + + + + + + + + + + + + +
    + red-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + yellow-100 + +
    + + + + + + + + + + + + +
    + yellow-200 + +
    + + + + + + + + + + + + + + +
    + yellow-300 + +
    + + + + + + + + + + + + + + +
    + yellow-400 + +
    + + + + + + + + + + + + + + +
    + yellow-500 + +
    + + + + + + + + + + + + + + +
    + yellow-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + purple-100 + +
    + + + + + + + + + + + + +
    + purple-200 + +
    + + + + + + + + + + + + + + +
    + purple-300 + +
    + + + + + + + + + + + + + + +
    + purple-400 + +
    + + + + + + + + + + + + + + +
    + purple-500 + +
    + + + + + + + + + + + + + + +
    + purple-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + pink-100 + +
    + + + + + + + + + + + + +
    + pink-200 + +
    + + + + + + + + + + + + + + +
    + pink-300 + +
    + + + + + + + + + + + + + + +
    + pink-400 + +
    + + + + + + + + + + + + + + +
    + pink-500 + +
    + + + + + + + + + + + + + + +
    + pink-600 + +
    + + +
    + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + orange-100 + +
    + + + + + + + + + + + + +
    + orange-200 + +
    + + + + + + + + + + + + + + +
    + orange-300 + +
    + + + + + + + + + + + + + + +
    + orange-400 + +
    + + + + + + + + + + + + + + +
    + orange-500 + +
    + + + + + + + + + + + + + + +
    + orange-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + blue-100 + +
    + + + + + + + + + + + + +
    + blue-200 + +
    + + + + + + + + + + + + + + +
    + blue-300 + +
    + + + + + + + + + + + + + + +
    + blue-400 + +
    + + + + + + + + + + + + + + +
    + blue-500 + +
    + + + + + + + + + + + + + + +
    + blue-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + green-100 + +
    + + + + + + + + + + + + +
    + green-200 + +
    + + + + + + + + + + + + + + +
    + green-300 + +
    + + + + + + + + + + + + + + +
    + green-400 + +
    + + + + + + + + + + + + + + +
    + green-500 + +
    + + + + + + + + + + + + + + +
    + green-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + red-100 + +
    + + + + + + + + + + + + +
    + red-200 + +
    + + + + + + + + + + + + + + +
    + red-300 + +
    + + + + + + + + + + + + + + +
    + red-400 + +
    + + + + + + + + + + + + + + +
    + red-500 + +
    + + + + + + + + + + + + + + +
    + red-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + yellow-100 + +
    + + + + + + + + + + + + +
    + yellow-200 + +
    + + + + + + + + + + + + + + +
    + yellow-300 + +
    + + + + + + + + + + + + + + +
    + yellow-400 + +
    + + + + + + + + + + + + + + +
    + yellow-500 + +
    + + + + + + + + + + + + + + +
    + yellow-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + purple-100 + +
    + + + + + + + + + + + + +
    + purple-200 + +
    + + + + + + + + + + + + + + +
    + purple-300 + +
    + + + + + + + + + + + + + + +
    + purple-400 + +
    + + + + + + + + + + + + + + +
    + purple-500 + +
    + + + + + + + + + + + + + + +
    + purple-600 + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + pink-100 + +
    + + + + + + + + + + + + +
    + pink-200 + +
    + + + + + + + + + + + + + + +
    + pink-300 + +
    + + + + + + + + + + + + + + +
    + pink-400 + +
    + + + + + + + + + + + + + + +
    + pink-500 + +
    + + + + + + + + + + + + + + +
    + pink-600 + +
    + + +
    + + + + + + + + + + + + +
    +
    + +
    +
    + +
    + + +

    + Color roles describe the intention behind the color. +

    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RoleDescription
    + + + + + + + + black-400 + + + + Neutral + + Use for text and secondary UI elements, such as buttons +
    + + + + + + + + theme-secondary + + + + Primary + + Use for primary actions +
    + + + + + + + + theme-primary + + + + Accent + + Use for UI that either relates to the brand or doesn’t have a specific meaning tied to it. +
    + + + + + + + + blue-400 + + + + Information + + Use for UI to communicate information that you’d like the user to be aware of +
    + + + + + + + + success + + + + Success + + Use for UI to communicate a successful action has taken place +
    + + + + + + + + warning + + + + Warning + + Use for UI that communicates a user should proceed with caution +
    + + + + + + + + danger + + + + Danger + + Use for UI that communicates the user has encountered danger or an error +
    + + + + + + + + purple-400 + + + + Discovery + + Use for UI that depicts something new, such as onboarding or a new feature +
    +
    + + +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + black-050 + +
    50
    + +
    + + + + + + + + + + + + +
    + black-100 + +
    100
    + +
    + + + + + + + + + + + + +
    + black-150 + +
    150
    + +
    + + + + + + + + + + + + +
    + black-200 + +
    200
    + +
    + + + + + + + + + + +
    + black-225 + +
    + + + + + + + + + + +
    + black-250 + +
    + + + + + + + + + + +
    + black-300 + +
    + + + + + + + + + + +
    + black-350 + +
    + + + + + + + + + + + + +
    + black-400 + +
    + + + + + + + + + + + + +
    + black-500 + +
    + + + + + + + + + + + + +
    + black-600 + +
    + + + + +
    + + + + + + + + + + + + + + + +
    +

    + Stops 50 through 200 are used for background layers +

    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + black-050 + +
    + + + + + + + + + + +
    + black-100 + +
    + + + + + + + + + + +
    + black-150 + +
    + + + + + + + + + + + + +
    + black-200 + +
    200
    + +
    + + + + + + + + + + + + +
    + black-225 + +
    225
    + +
    + + + + + + + + + + +
    + black-250 + +
    + + + + + + + + + + + + +
    + black-300 + +
    300
    + +
    + + + + + + + + + + +
    + black-350 + +
    + + + + + + + + + + + + +
    + black-400 + +
    + + + + + + + + + + + + +
    + black-500 + +
    + + + + + + + + + + + + +
    + black-600 + +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    + Stops 200 and 225 are used for decorative borders and dividers throughout our UI. The 250 stop is used for input borders such as text field or secondary button. +

    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + black-050 + +
    + + + + + + + + + + +
    + black-100 + +
    + + + + + + + + + + +
    + black-150 + +
    + + + + + + + + + + +
    + black-200 + +
    + + + + + + + + + + +
    + black-225 + +
    + + + + + + + + + + +
    + black-250 + +
    + + + + + + + + + + +
    + black-300 + +
    + + + + + + + + + + +
    + black-350 + +
    + + + + + + + + + + + + + + +
    + black-400 + +
    400
    + +
    + + + + + + + + + + + + + + +
    + black-500 + +
    500
    + +
    + + + + + + + + + + + + + + +
    + black-600 + +
    600
    + +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    + Stops 500 and 600 can be used for text. Neutrals, blue, red, and green can also be used at 400 and will meet APCA contrast minimums within these shades. Orange and yellow should not be used at 400 because it does not meet our contrast standards. +

    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + black-050 + +
    + + + + + + + + + + +
    + black-100 + +
    + + + + + + + + + + +
    + black-150 + +
    + + + + + + + + + + +
    + black-200 + +
    + + + + + + + + + + +
    + black-225 + +
    + + + + + + + + + + +
    + black-250 + +
    + + + + + + + + + + +
    + black-300 + +
    + + + + + + + + + + + + +
    + black-350 + +
    350
    + +
    + + + + + + + + + + + + + + +
    + black-400 + +
    400
    + +
    + + + + + + + + + + + + + + +
    + black-500 + +
    500
    + +
    + + + + + + + + + + + + +
    + black-600 + +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    + Stops 400 and 500 are for icons, while 350 should be used for more detailed illustrations. +

    +
    + +
    + +

    + Colors in the neutral palette are layered on top of each other to foster a sense of hierarchy and create associations. +

    +
    + + + + + + +
    +
    Body background
    +
    +
    Content
    +
    +
    Component
    +
    +
    +
    + + + + + + + + +
    +
    Body background
    +
    +
    Content
    +
    +
    Component
    +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Background layerLight modeDark mode
    Body background + +
    +
    + + + + + + + + black-100 + + + black-100 (Teams) +
    +
    + + + + + + + + black-050 + + + black-100 (SO) +
    +
    + +
    +
    + + + + + + + + + white + + + white +
    +
    Content + +
    + + + + + + + + black-050 + + + black-050 +
    + +
    +
    + + + + + + + + + black-050 + + + black-050 +
    +
    Component + +
    + + + + + + + + black-100 + + + black-100 +
    + +
    +
    + + + + + + + + + black-100 + + + black-100 +
    +
    Component alt + +
    + + + + + + + + black-150 + + + black-150 +
    + +
    +
    + + + + + + + + + black-150 + + + black-150 +
    +
    +
    +
    + +
    + +

    + Emphasis determines the amount of contrast a color has against the default surface. Emphasis has a range from subtle to bold. Bold emphasis has more contrast against the background, which adds more attention than using UI with the subtle or default emphasis level. +

    +
    +
    + +
    +
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    + + + + + + + + + + + +
    + +
    +
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    + + + + + + + + + + + +
    + +
    +
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    Robots
    + +
    + + + + + + + + + + + +
    + +
    +
    + +
    +
    Text
    + + + + + + + + + + + + + +
    + +
    +
    Text
    + + + + + + + + + + + + + +
    + +
    +
    Text
    + + + + + + + + + + + + + +
    + +
    +
    +
    + +
    + +

    + In Stacks, a component will get darker (or lighter in dark mode) as they interact with it. These progresses happen by adding 100 to the color before the interaction happens. Example: Blue-400 on hover becomes Blue-500. For a disabled button state, subtract 100 from the default color. +

    +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + +
    + +
    +
    + +
    +

    Light, dark, and high contrast modes

    Section titled Light, dark, and high contrast modes
    +

    Stacks supports light, dark, and high contrast modes. By using Stacks, you will get each of these modes for free. By using a Stacks component, an atomic color class, or CSS variable directly, your theme will switch appropriately based on the following methods:

    +
      +
    1. You can apply .theme-system to the body element. This will change colors based on the prefers-color-scheme media query, which is ultimately powered by the user’s system or browser settings. This can be preferable for folks who have their system turn to dark mode based on ambient light or time of day.
    2. +
    3. Alternatively, you can set a dark mode that is not system dependent by attaching .theme-dark to the body element.
    4. +
    5. Adding .theme-highcontrast to the body element will boost colors to WCAG Level AAA contrast ratios in as many places as possible. This mode stacks on top of both light and dark modes. The only exception is branded themed colors remain untouched by high contrast mode.
    6. +
    +

    There are also conditional classes that can be applied to override assumed dark mode colors, force light mode, or to force dark mode. Forcing modes can be good for previews in admin-only situations.

    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/colors/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/colors/fragment.html new file mode 100644 index 0000000000..5b2726f393 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/colors/fragment.html @@ -0,0 +1,4596 @@ + +
    + + + +

    To avoid specifying color values by hand, we’ve included a robust set of color variables. For maintainability, please use these instead of hardcoding color values.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    + + +
    + + + +
    +

    Theme primary

    +
    + + + + + + + + + + + + +
    + theme-primary +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-primary-600 +
    + +
    +
    + + + + +
    +

    Theme secondary

    +
    + + + + + + + + + + + + +
    + theme-secondary +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + theme-secondary-600 +
    + +
    +
    + + + + +
    +

    Orange

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + orange-600 +
    + +
    +
    + + + + +
    +

    Blue

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + blue-600 +
    + +
    +
    + + + + +
    +

    Green

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + green-600 +
    + +
    +
    + + + + +
    +

    Red

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + red-600 +
    + +
    +
    + + + + +
    +

    Yellow

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + yellow-600 +
    + +
    +
    + + + + +
    +

    Purple

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + purple-600 +
    + +
    +
    + + + + +
    +

    Pink

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + pink-600 +
    + +
    +
    + + + + +
    +

    Black

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-050 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-100 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-150 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-200 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-225 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-250 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-300 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-350 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-400 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-500 +
    + + + + + + + + + + + + + + + + + + + + + + +
    + black-600 +
    + + + + + + + + + + + + +
    + black +
    + +
    +
    + + + + +
    +

    White

    +
    + + + + + + + + + + + + + + +
    + white +
    + +
    +
    + + +
    +
    + +
    + + +

    +

    + Please see the brand guidlines for color use, these should not be used without prior direction from the brand team. +
    +

    + +
    + + +
    +
    + + + + + + + + +
    + brand +
    + + + + + + + + + + + + +
    + brand-black +
    + + + + + + + + + + +
    + brand-off-white +
    + + + + + + + + + + +
    + brand-blue-light +
    + + + + + + + + + + + + +
    + brand-blue +
    + + + + + + + + + + + + +
    + brand-blue-dark +
    + + + + + + + + + + +
    + brand-brown-light +
    + + + + + + + + + + +
    + brand-green +
    + + + + + + + + + + + + +
    + brand-green-dark +
    + + + + + + + + + + + + +
    + brand-orange-medium +
    + + + + + + + + + + + + +
    + brand-orange-dark +
    + + + + + + + + + + +
    + brand-pink +
    + + + + + + + + + + + + +
    + brand-pink-dark +
    + + + + + + + + + + +
    + brand-purple +
    + + + + + + + + + + + + +
    + brand-purple-dark +
    + + + + + + + + + + +
    + brand-yellow +
    + + + + + + + + + + + + +
    + brand-yellow-dark +
    + +
    +
    + +
    +
    + +
    + + +

    + Each color stop is available as an atomic text, background, and border class. Using these atomic classes means your view will respond to dark mode appropriately. These colors are available conditionally. +

    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-theme-primary
    +
    +
    .bg-theme-primary
    +
    +
    +
    .bc-theme-primary
    +
    +
    +
    .fc-theme-primary-100
    +
    +
    .bg-theme-primary-100
    +
    +
    +
    .bc-theme-primary-100
    +
    +
    +
    .fc-theme-primary-200
    +
    +
    .bg-theme-primary-200
    +
    +
    +
    .bc-theme-primary-200
    +
    +
    +
    .fc-theme-primary-300
    +
    +
    .bg-theme-primary-300
    +
    +
    +
    .bc-theme-primary-300
    +
    +
    +
    .fc-theme-primary-400
    +
    +
    .bg-theme-primary-400
    +
    +
    +
    .bc-theme-primary-400
    +
    +
    +
    .fc-theme-primary-500
    +
    +
    .bg-theme-primary-500
    +
    +
    +
    .bc-theme-primary-500
    +
    +
    +
    .fc-theme-primary-600
    +
    +
    .bg-theme-primary-600
    +
    +
    +
    .bc-theme-primary-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-theme-secondary
    +
    +
    .bg-theme-secondary
    +
    +
    +
    .bc-theme-secondary
    +
    +
    +
    .fc-theme-secondary-100
    +
    +
    .bg-theme-secondary-100
    +
    +
    +
    .bc-theme-secondary-100
    +
    +
    +
    .fc-theme-secondary-200
    +
    +
    .bg-theme-secondary-200
    +
    +
    +
    .bc-theme-secondary-200
    +
    +
    +
    .fc-theme-secondary-300
    +
    +
    .bg-theme-secondary-300
    +
    +
    +
    .bc-theme-secondary-300
    +
    +
    +
    .fc-theme-secondary-400
    +
    +
    .bg-theme-secondary-400
    +
    +
    +
    .bc-theme-secondary-400
    +
    +
    +
    .fc-theme-secondary-500
    +
    +
    .bg-theme-secondary-500
    +
    +
    +
    .bc-theme-secondary-500
    +
    +
    +
    .fc-theme-secondary-600
    +
    +
    .bg-theme-secondary-600
    +
    +
    +
    .bc-theme-secondary-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-orange-100
    +
    +
    .bg-orange-100
    +
    +
    +
    .bc-orange-100
    +
    +
    +
    .fc-orange-200
    +
    +
    .bg-orange-200
    +
    +
    +
    .bc-orange-200
    +
    +
    +
    .fc-orange-300
    +
    +
    .bg-orange-300
    +
    +
    +
    .bc-orange-300
    +
    +
    +
    .fc-orange-400
    +
    +
    .bg-orange-400
    +
    +
    +
    .bc-orange-400
    +
    +
    +
    .fc-orange-500
    +
    +
    .bg-orange-500
    +
    +
    +
    .bc-orange-500
    +
    +
    +
    .fc-orange-600
    +
    +
    .bg-orange-600
    +
    +
    +
    .bc-orange-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-blue-100
    +
    +
    .bg-blue-100
    +
    +
    +
    .bc-blue-100
    +
    +
    +
    .fc-blue-200
    +
    +
    .bg-blue-200
    +
    +
    +
    .bc-blue-200
    +
    +
    +
    .fc-blue-300
    +
    +
    .bg-blue-300
    +
    +
    +
    .bc-blue-300
    +
    +
    +
    .fc-blue-400
    +
    +
    .bg-blue-400
    +
    +
    +
    .bc-blue-400
    +
    +
    +
    .fc-blue-500
    +
    +
    .bg-blue-500
    +
    +
    +
    .bc-blue-500
    +
    +
    +
    .fc-blue-600
    +
    +
    .bg-blue-600
    +
    +
    +
    .bc-blue-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-green-100
    +
    +
    .bg-green-100
    +
    +
    +
    .bc-green-100
    +
    +
    +
    .fc-green-200
    +
    +
    .bg-green-200
    +
    +
    +
    .bc-green-200
    +
    +
    +
    .fc-green-300
    +
    +
    .bg-green-300
    +
    +
    +
    .bc-green-300
    +
    +
    +
    .fc-green-400
    +
    +
    .bg-green-400
    +
    +
    +
    .bc-green-400
    +
    +
    +
    .fc-green-500
    +
    +
    .bg-green-500
    +
    +
    +
    .bc-green-500
    +
    +
    +
    .fc-green-600
    +
    +
    .bg-green-600
    +
    +
    +
    .bc-green-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-red-100
    +
    +
    .bg-red-100
    +
    +
    +
    .bc-red-100
    +
    +
    +
    .fc-red-200
    +
    +
    .bg-red-200
    +
    +
    +
    .bc-red-200
    +
    +
    +
    .fc-red-300
    +
    +
    .bg-red-300
    +
    +
    +
    .bc-red-300
    +
    +
    +
    .fc-red-400
    +
    +
    .bg-red-400
    +
    +
    +
    .bc-red-400
    +
    +
    +
    .fc-red-500
    +
    +
    .bg-red-500
    +
    +
    +
    .bc-red-500
    +
    +
    +
    .fc-red-600
    +
    +
    .bg-red-600
    +
    +
    +
    .bc-red-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-yellow-100
    +
    +
    .bg-yellow-100
    +
    +
    +
    .bc-yellow-100
    +
    +
    +
    .fc-yellow-200
    +
    +
    .bg-yellow-200
    +
    +
    +
    .bc-yellow-200
    +
    +
    +
    .fc-yellow-300
    +
    +
    .bg-yellow-300
    +
    +
    +
    .bc-yellow-300
    +
    +
    +
    .fc-yellow-400
    +
    +
    .bg-yellow-400
    +
    +
    +
    .bc-yellow-400
    +
    +
    +
    .fc-yellow-500
    +
    +
    .bg-yellow-500
    +
    +
    +
    .bc-yellow-500
    +
    +
    +
    .fc-yellow-600
    +
    +
    .bg-yellow-600
    +
    +
    +
    .bc-yellow-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-purple-100
    +
    +
    .bg-purple-100
    +
    +
    +
    .bc-purple-100
    +
    +
    +
    .fc-purple-200
    +
    +
    .bg-purple-200
    +
    +
    +
    .bc-purple-200
    +
    +
    +
    .fc-purple-300
    +
    +
    .bg-purple-300
    +
    +
    +
    .bc-purple-300
    +
    +
    +
    .fc-purple-400
    +
    +
    .bg-purple-400
    +
    +
    +
    .bc-purple-400
    +
    +
    +
    .fc-purple-500
    +
    +
    .bg-purple-500
    +
    +
    +
    .bc-purple-500
    +
    +
    +
    .fc-purple-600
    +
    +
    .bg-purple-600
    +
    +
    +
    .bc-purple-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-pink-100
    +
    +
    .bg-pink-100
    +
    +
    +
    .bc-pink-100
    +
    +
    +
    .fc-pink-200
    +
    +
    .bg-pink-200
    +
    +
    +
    .bc-pink-200
    +
    +
    +
    .fc-pink-300
    +
    +
    .bg-pink-300
    +
    +
    +
    .bc-pink-300
    +
    +
    +
    .fc-pink-400
    +
    +
    .bg-pink-400
    +
    +
    +
    .bc-pink-400
    +
    +
    +
    .fc-pink-500
    +
    +
    .bg-pink-500
    +
    +
    +
    .bc-pink-500
    +
    +
    +
    .fc-pink-600
    +
    +
    .bg-pink-600
    +
    +
    +
    .bc-pink-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-black-050
    +
    +
    .bg-black-050
    +
    +
    +
    .bc-black-050
    +
    +
    +
    .fc-black-100
    +
    +
    .bg-black-100
    +
    +
    +
    .bc-black-100
    +
    +
    +
    .fc-black-150
    +
    +
    .bg-black-150
    +
    +
    +
    .bc-black-150
    +
    +
    +
    .fc-black-200
    +
    +
    .bg-black-200
    +
    +
    +
    .bc-black-200
    +
    +
    +
    .fc-black-225
    +
    +
    .bg-black-225
    +
    +
    +
    .bc-black-225
    +
    +
    +
    .fc-black-250
    +
    +
    .bg-black-250
    +
    +
    +
    .bc-black-250
    +
    +
    +
    .fc-black-300
    +
    +
    .bg-black-300
    +
    +
    +
    .bc-black-300
    +
    +
    +
    .fc-black-350
    +
    +
    .bg-black-350
    +
    +
    +
    .bc-black-350
    +
    +
    +
    .fc-black-400
    +
    +
    .bg-black-400
    +
    +
    +
    .bc-black-400
    +
    +
    +
    .fc-black-500
    +
    +
    .bg-black-500
    +
    +
    +
    .bc-black-500
    +
    +
    +
    .fc-black-600
    +
    +
    .bg-black-600
    +
    +
    +
    .bc-black-600
    +
    +
    +
    .fc-black-600
    +
    +
    .bg-black-600
    +
    +
    +
    .bc-black-600
    +
    +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TextBackgroundBorder
    +
    .fc-white
    +
    +
    .bg-white
    +
    +
    +
    .bc-white
    +
    +
    +
    + +
    + +
    + + +
    +
    <p class="fc-light"></p>
    <p class="fc-medium"></p>
    <p></p>
    <p class="fc-dark"></p>
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Text classesExample
    .fc-light +

    This is example light text.

    +
    .fc-medium +

    This is example medium text.

    +
    .fc-dark +

    This is example dark text.

    +
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Text classesBackground classesBorder Classes
    .fc-danger +
    .bg-danger
    +
    +
    .bc-danger
    +
    +
    + + + +
    + + + + + + + + + + + + + + + +
    Text classesBackground classesBorder Classes
    .fc-error +
    .bg-error
    +
    +
    .bc-error
    +
    +
    + + + +
    + + + + + + + + + + + + + + + +
    Text classesBackground classesBorder Classes
    .fc-warning +
    .bg-warning
    +
    +
    .bc-warning
    +
    +
    + + + +
    + + + + + + + + + + + + + + + +
    Text classesBackground classesBorder Classes
    .fc-success +
    .bg-success
    +
    +
    .bc-success
    +
    +
    + +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/icons/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/icons/fragment.html new file mode 100644 index 0000000000..6320759ff0 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/icons/fragment.html @@ -0,0 +1,7929 @@ + +
    + + + +

    Stacks provides a complete icon set, managed separately in the Stacks-Icons repository. There you’ll find deeper documentation on the various uses as well as the icons’ source in our design tool Figma.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    + +

    Stacks icons are designed to be directly injected into the markup as an svg element. This allows us to color them on the fly using any of our atomic classes. We have different helpers in different environments.

    + + +

    If you’re in Stack Overflow’s production environment, we have a helper that can be called with @Svg. and the icon name, eg. @Svg.Alert. By default, any icon will inherit the text color of the parent element. Optionally, you can pass the class native to the icon to render any native colors that are included eg. @Svg.Ballon.With("native"). This same syntax allows you to pass additional arbitrary classes like atomic helpers, or js- prefixed classes.

    +
    +
    @Svg.Wave
    @Svg.Wave.With("native")
    @Svg.Wave.With("fc-black-350 float-right js-dropdown-target")
    +
    +
    +
    +
    Default
    + +
    +
    +
    With native colors
    + +
    +
    +
    With arbitrary classes
    + +
    +
    +
    +
    + + +

    Our icon set also includes a JavaScript library for use in prototypes outside our production environment. This JavaScript is loaded in our Stacks playground in Codepen. When using data-icon attributes, you need to prefix the icon names with Icon (e.g. IconWave). If you’re building a prototype in your own environment, you’ll need to include Stacks as a dependency as well as the icons library.

    +
    +
    <svg data-icon="IconWave"></svg>
    <svg data-icon="IconWave" class="native"></svg>
    <svg data-icon="IconWave" class="fc-black-350 float-right js-dropdown-target"></svg>
    +
    +
    +
    +
    Default
    + +
    +
    +
    With native colors
    + +
    +
    +
    With arbitrary classes
    + +
    +
    +
    +
    + + +

    For use within our documentation, we’ve also included a Liquid helper.

    +
    +
    {% icon "Wave" %}
    {% icon "Wave", "native" %}
    {% icon "Wave", "fc-black-350 float-right js-dropdown-target" %}
    +
    +
    +
    +
    Default
    + +
    +
    +
    With native colors
    + +
    +
    +
    With arbitrary classes
    + +
    +
    +
    +
    +
    + +
    + +

    If an icon you need isn’t here, please do one of the following two options:

    +
      +
    1. Submit a request outlining the desired icon, the icon’s intended purposed, and where it will be used.
    2. +
    3. If the icon is ready, submit a pull request to have it to be reviewed. Please be sure to provide the same information as above.
    4. +
    +
    + +
    + +
    + + + +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert + + + Alert icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert16 + + + Alert16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert16Fill + + + Alert16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert24 + + + Alert24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert24Fill + + + Alert24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert32 + + + Alert32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Alert32Fill + + + Alert32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AlertFill + + + AlertFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer + + + Answer icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer16 + + + Answer16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer16Duotone + + + Answer16Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer16Fill + + + Answer16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24 + + + Answer24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24Duotone + + + Answer24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24Fill + + + Answer24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24Stack + + + Answer24Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24StackDuotone + + + Answer24StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer24StackFill + + + Answer24StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32 + + + Answer32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32Duotone + + + Answer32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32Fill + + + Answer32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32Stack + + + Answer32Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32StackDuotone + + + Answer32StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer32StackFill + + + Answer32StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64 + + + Answer64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64Duotone + + + Answer64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64Fill + + + Answer64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64Stack + + + Answer64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64StackDuotone + + + Answer64StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Answer64StackFill + + + Answer64StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AnswerDuotone + + + AnswerDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AnswerFill + + + AnswerFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AnswerStack + + + AnswerStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AnswerStackDuotone + + + AnswerStackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AnswerStackFill + + + AnswerStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Archive + + + Archive icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Archive16 + + + Archive16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Archive16Fill + + + Archive16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArchiveFill + + + ArchiveFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowDown + + + ArrowDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowDownBox + + + ArrowDownBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowDownLeft + + + ArrowDownLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowDownLeftBox + + + ArrowDownLeftBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowDownRight + + + ArrowDownRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowLeft + + + ArrowLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowLeftBox + + + ArrowLeftBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowRight + + + ArrowRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowRightBox + + + ArrowRightBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowUp + + + ArrowUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowUpBox + + + ArrowUpBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowUpLeft + + + ArrowUpLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowUpRight + + + ArrowUpRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ArrowUpRightBox + + + ArrowUpRightBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Assistant + + + Assistant icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Assistant16 + + + Assistant16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Assistant24 + + + Assistant24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Assistant32 + + + Assistant32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Assistant64 + + + Assistant64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Award + + + Award icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Award16 + + + Award16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Award16Fill + + + Award16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.AwardFill + + + AwardFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Blog + + + Blog icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Blog32 + + + Blog32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Bookmark + + + Bookmark icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Bookmark24 + + + Bookmark24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Bookmark32 + + + Bookmark32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Bookmark64 + + + Bookmark64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Bookmark64Stack + + + Bookmark64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.BookmarkFill + + + BookmarkFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.BookmarkStack + + + BookmarkStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.BookmarkStackFill + + + BookmarkStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Calendar + + + Calendar icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Calendar64 + + + Calendar64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Challenge + + + Challenge icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Challenge64 + + + Challenge64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChallengeFill + + + ChallengeFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chart + + + Chart icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat + + + Chat icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat24 + + + Chat24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat24Duotone + + + Chat24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat24Fill + + + Chat24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat32 + + + Chat32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat32Duotone + + + Chat32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat32Fill + + + Chat32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat64 + + + Chat64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat64Duotone + + + Chat64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chat64Fill + + + Chat64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChatDuotone + + + ChatDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChatFill + + + ChatFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check + + + Check icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check16 + + + Check16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check16Circle + + + Check16Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check16FillCircle + + + Check16FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check16FillSquare + + + Check16FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check16Square + + + Check16Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check24 + + + Check24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check24Circle + + + Check24Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check24FillCircle + + + Check24FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check24FillSquare + + + Check24FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check24Square + + + Check24Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check32 + + + Check32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check32Circle + + + Check32Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check32FillCircle + + + Check32FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check32FillSquare + + + Check32FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Check32Square + + + Check32Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CheckCircle + + + CheckCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CheckFillCircle + + + CheckFillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CheckFillSquare + + + CheckFillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CheckSquare + + + CheckSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12Down + + + Chevron12Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12DownFill + + + Chevron12DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12DownUp + + + Chevron12DownUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12DownUpFill + + + Chevron12DownUpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12Left + + + Chevron12Left icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12LeftFill + + + Chevron12LeftFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12Right + + + Chevron12Right icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12RightFill + + + Chevron12RightFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12Up + + + Chevron12Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12UpDown + + + Chevron12UpDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12UpDownFill + + + Chevron12UpDownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron12UpFill + + + Chevron12UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16Down + + + Chevron16Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16DownFill + + + Chevron16DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16DownUp + + + Chevron16DownUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16DownUpFill + + + Chevron16DownUpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16Left + + + Chevron16Left icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16LeftFill + + + Chevron16LeftFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16Right + + + Chevron16Right icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16RightFill + + + Chevron16RightFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16Up + + + Chevron16Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16UpDown + + + Chevron16UpDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16UpDownFill + + + Chevron16UpDownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Chevron16UpFill + + + Chevron16UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChevronDown + + + ChevronDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChevronLeft + + + ChevronLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChevronRight + + + ChevronRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ChevronUp + + + ChevronUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Clock + + + Clock icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Clock64 + + + Clock64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Code + + + Code icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CodeBox + + + CodeBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CodeDocument + + + CodeDocument icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Comment + + + Comment icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Comment16 + + + Comment16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Comment16Fill + + + Comment16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CommentFill + + + CommentFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Community + + + Community icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CommunityFill + + + CommunityFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CommunityFillStack + + + CommunityFillStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CommunityStack + + + CommunityStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Company + + + Company icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Company64 + + + Company64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CompanyFill + + + CompanyFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Compose + + + Compose icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ComposeComment + + + ComposeComment icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ComposeCommentFill + + + ComposeCommentFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ComposeDocument + + + ComposeDocument icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ComposeDocumentFill + + + ComposeDocumentFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ComposeFill + + + ComposeFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross + + + Cross icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross16 + + + Cross16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross16Circle + + + Cross16Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross16FillCircle + + + Cross16FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross16FillSquare + + + Cross16FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross16Square + + + Cross16Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross24 + + + Cross24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross24Circle + + + Cross24Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross24FillCircle + + + Cross24FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross24FillSquare + + + Cross24FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross24Square + + + Cross24Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross32 + + + Cross32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross32Circle + + + Cross32Circle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross32FillCircle + + + Cross32FillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross32FillSquare + + + Cross32FillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Cross32Square + + + Cross32Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CrossCircle + + + CrossCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CrossFillCircle + + + CrossFillCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CrossFillSquare + + + CrossFillSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.CrossSquare + + + CrossSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document + + + Document icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document16 + + + Document16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document16Fill + + + Document16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document16Stack + + + Document16Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document16StackFill + + + Document16StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document32Stack + + + Document32Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Document64Stack + + + Document64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.DocumentFill + + + DocumentFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.DocumentStack + + + DocumentStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.DocumentStackFill + + + DocumentStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Expert + + + Expert icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Expert16 + + + Expert16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Expert16Fill + + + Expert16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ExpertFill + + + ExpertFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Eye + + + Eye icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Eye16 + + + Eye16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Eye16Fill + + + Eye16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Eye16FillOff + + + Eye16FillOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Eye16Off + + + Eye16Off icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.EyeOff + + + EyeOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Flag + + + Flag icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.FlagFill + + + FlagFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.FlagOff + + + FlagOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.FlagOffFill + + + FlagOffFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph + + + Glyph icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph16 + + + Glyph16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph16Square + + + Glyph16Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph24 + + + Glyph24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph24Square + + + Glyph24Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph32 + + + Glyph32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph32Square + + + Glyph32Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph64 + + + Glyph64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Glyph64Square + + + Glyph64Square icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.GlyphSquare + + + GlyphSquare icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Grip + + + Grip icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Grip16 + + + Grip16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Grip16H + + + Grip16H icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Grip16V + + + Grip16V icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.GripH + + + GripH icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.GripV + + + GripV icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Help + + + Help icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Help16 + + + Help16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Help16Fill + + + Help16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Help32 + + + Help32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.HelpFill + + + HelpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home + + + Home icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home24 + + + Home24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home24Duotone + + + Home24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home24Fill + + + Home24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home32 + + + Home32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home32Duotone + + + Home32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home32Fill + + + Home32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home64 + + + Home64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home64Duotone + + + Home64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Home64Fill + + + Home64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.HomeDuotone + + + HomeDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.HomeFill + + + HomeFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Inbox + + + Inbox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.InboxFill + + + InboxFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Info + + + Info icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Info16 + + + Info16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Info16Fill + + + Info16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.InfoFill + + + InfoFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Jobs + + + Jobs icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Jobs32 + + + Jobs32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Jobs64 + + + Jobs64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.JobsFill + + + JobsFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Key + + + Key icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Labs + + + Labs icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Lightbulb + + + Lightbulb icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Lightbulb24 + + + Lightbulb24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Lightbulb32 + + + Lightbulb32 icon + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    + @Svg.Link32 + + + Link32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.List + + + List icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ListOrdered + + + ListOrdered icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Location + + + Location icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Lock + + + Lock icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Lock64 + + + Lock64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.LockOff + + + LockOff icon + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    + @Svg.LogoHeadline1 + + + LogoHeadline1 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.LogoHeadline2 + + + LogoHeadline2 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Mail + + + Mail icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MailFill + + + MailFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MailOpen + + + MailOpen icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MailOpenFill + + + MailOpenFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MailStack32 + + + MailStack32 icon + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    + @Svg.Meta + + + Meta icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MetaFill + + + MetaFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Mod + + + Mod icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModDashboard + + + ModDashboard icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModDashboardFill + + + ModDashboardFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModFill + + + ModFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModMessagesStack + + + ModMessagesStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModMessagesStackFill + + + ModMessagesStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModStack + + + ModStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ModStackFill + + + ModStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.More16H + + + More16H icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.More16V + + + More16V icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MoreH + + + MoreH icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.MoreV + + + MoreV icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.No + + + No icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.No16 + + + No16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Notification + + + Notification icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.NotificationFill + + + NotificationFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.NotificationOff + + + NotificationOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.NotificationOffFill + + + NotificationOffFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Pin + + + Pin icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Pin16 + + + Pin16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Pin16Fill + + + Pin16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Pin16FillOff + + + Pin16FillOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Pin16Off + + + Pin16Off icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.PinFill + + + PinFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.PinFillOff + + + PinFillOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.PinOff + + + PinOff icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder + + + Placeholder icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder16 + + + Placeholder16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder16Duotone + + + Placeholder16Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder16Fill + + + Placeholder16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder24 + + + Placeholder24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder24Duotone + + + Placeholder24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder24Fill + + + Placeholder24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder32 + + + Placeholder32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder32Duotone + + + Placeholder32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder32Fill + + + Placeholder32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder64 + + + Placeholder64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder64Duotone + + + Placeholder64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Placeholder64Fill + + + Placeholder64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.PlaceholderDuotone + + + PlaceholderDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.PlaceholderFill + + + PlaceholderFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Play + + + Play icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Plus + + + Plus icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QandA + + + QandA icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QandAFill + + + QandAFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question + + + Question icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question16 + + + Question16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question16Duotone + + + Question16Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question16Fill + + + Question16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24 + + + Question24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24Duotone + + + Question24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24Fill + + + Question24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24Stack + + + Question24Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24StackDuotone + + + Question24StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question24StackFill + + + Question24StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32 + + + Question32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32Duotone + + + Question32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32Fill + + + Question32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32Stack + + + Question32Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32StackDuotone + + + Question32StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question32StackFill + + + Question32StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64 + + + Question64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64Duotone + + + Question64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64Fill + + + Question64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64Stack + + + Question64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64StackDuotone + + + Question64StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Question64StackFill + + + Question64StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QuestionDuotone + + + QuestionDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QuestionFill + + + QuestionFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QuestionStack + + + QuestionStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QuestionStackDuotone + + + QuestionStackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.QuestionStackFill + + + QuestionStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.RSS + + + RSS icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Receipt + + + Receipt icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Refresh + + + Refresh icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.RefreshAll + + + RefreshAll icon + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    + @Svg.SearchFill + + + SearchFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceBackstage + + + ServiceBackstage icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceBackstage32 + + + ServiceBackstage32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceBackstage64 + + + ServiceBackstage64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceCCPA + + + ServiceCCPA icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceConfluence + + + ServiceConfluence icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceConfluence32 + + + ServiceConfluence32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceConfluence64 + + + ServiceConfluence64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceCursor + + + ServiceCursor icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceCursor32 + + + ServiceCursor32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceCursor64 + + + ServiceCursor64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceFacebook + + + ServiceFacebook icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceFigma + + + ServiceFigma icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGitHub + + + ServiceGitHub icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGitHub32 + + + ServiceGitHub32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGitHub64 + + + ServiceGitHub64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGoogle + + + ServiceGoogle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGoogleDrive + + + ServiceGoogleDrive icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGoogleDrive32 + + + ServiceGoogleDrive32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceGoogleDrive64 + + + ServiceGoogleDrive64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceInstagram + + + ServiceInstagram icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceJira + + + ServiceJira icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceJira32 + + + ServiceJira32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceJira64 + + + ServiceJira64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceLinkedIn + + + ServiceLinkedIn icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMCP + + + ServiceMCP icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMCP32 + + + ServiceMCP32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMCP64 + + + ServiceMCP64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoft + + + ServiceMicrosoft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoft32 + + + ServiceMicrosoft32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoft64 + + + ServiceMicrosoft64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoftTeams + + + ServiceMicrosoftTeams icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoftTeams32 + + + ServiceMicrosoftTeams32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMicrosoftTeams64 + + + ServiceMicrosoftTeams64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMoveworks + + + ServiceMoveworks icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMoveworks32 + + + ServiceMoveworks32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceMoveworks64 + + + ServiceMoveworks64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceOkta + + + ServiceOkta icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceOkta32 + + + ServiceOkta32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceOkta64 + + + ServiceOkta64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSCIM + + + ServiceSCIM icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSCIM32 + + + ServiceSCIM32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSCIM64 + + + ServiceSCIM64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSlack + + + ServiceSlack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSlack32 + + + ServiceSlack32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSlack64 + + + ServiceSlack64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceSvelte + + + ServiceSvelte icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceThreads + + + ServiceThreads icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceVisualStudioCode + + + ServiceVisualStudioCode icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceVisualStudioCode32 + + + ServiceVisualStudioCode32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceVisualStudioCode64 + + + ServiceVisualStudioCode64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceWebhooks + + + ServiceWebhooks icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceWebhooks32 + + + ServiceWebhooks32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceWebhooks64 + + + ServiceWebhooks64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceX + + + ServiceX icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ServiceYouTube + + + ServiceYouTube icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Settings + + + Settings icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.SettingsFill + + + SettingsFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Share + + + Share icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Sound + + + Sound icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Sound32 + + + Sound32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StackBox + + + StackBox icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StackBoxes + + + StackBoxes icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StackCards + + + StackCards icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StackCircle + + + StackCircle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StackRectangle + + + StackRectangle icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Star + + + Star icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Star16 + + + Star16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Star16Fill + + + Star16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Star32 + + + Star32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Star64 + + + Star64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StarFill + + + StarFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.StarHalfFill + + + StarHalfFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag + + + Tag icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24 + + + Tag24 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24Duotone + + + Tag24Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24Fill + + + Tag24Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24Stack + + + Tag24Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24StackDuotone + + + Tag24StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag24StackFill + + + Tag24StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32 + + + Tag32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32Duotone + + + Tag32Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32Fill + + + Tag32Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32Stack + + + Tag32Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32StackDuotone + + + Tag32StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag32StackFill + + + Tag32StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64 + + + Tag64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64Duotone + + + Tag64Duotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64Fill + + + Tag64Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64Stack + + + Tag64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64StackDuotone + + + Tag64StackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tag64StackFill + + + Tag64StackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TagDuotone + + + TagDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TagFill + + + TagFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TagStack + + + TagStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TagStackDuotone + + + TagStackDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TagStackFill + + + TagStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Theme + + + Theme icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ThumbDown + + + ThumbDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ThumbUp + + + ThumbUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tool + + + Tool icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tool16 + + + Tool16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Tool16Fill + + + Tool16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.ToolFill + + + ToolFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trash + + + Trash icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trash16 + + + Trash16 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trash16Fill + + + Trash16Fill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TrashFill + + + TrashFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TrendDown + + + TrendDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.TrendUp + + + TrendUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trust + + + Trust icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trust32 + + + Trust32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Trust64 + + + Trust64 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.User + + + User icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.User32 + + + User32 icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.User32Stack + + + User32Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.User64Stack + + + User64Stack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.UserFill + + + UserFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.UserStack + + + UserStack icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.UserStackFill + + + UserStackFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16Down + + + Vote16Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16DownDuotone + + + Vote16DownDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16DownFill + + + Vote16DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16DownUp + + + Vote16DownUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16Up + + + Vote16Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16UpDown + + + Vote16UpDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16UpDuotone + + + Vote16UpDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote16UpFill + + + Vote16UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24Down + + + Vote24Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24DownDuotone + + + Vote24DownDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24DownFill + + + Vote24DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24Up + + + Vote24Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24UpDuotone + + + Vote24UpDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote24UpFill + + + Vote24UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32Down + + + Vote32Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32DownDuotone + + + Vote32DownDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32DownFill + + + Vote32DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32Up + + + Vote32Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32UpDuotone + + + Vote32UpDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote32UpFill + + + Vote32UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64Down + + + Vote64Down icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64DownDuotone + + + Vote64DownDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64DownFill + + + Vote64DownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64Up + + + Vote64Up icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64UpDuotone + + + Vote64UpDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Vote64UpFill + + + Vote64UpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteDown + + + VoteDown icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteDownDuotone + + + VoteDownDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteDownFill + + + VoteDownFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteUp + + + VoteUp icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteUpDuotone + + + VoteUpDuotone icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.VoteUpFill + + + VoteUpFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Window + + + Window icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowColumn + + + WindowColumn icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowCompact + + + WindowCompact icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowExpanded + + + WindowExpanded icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowFill + + + WindowFill icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowFillSideArrowLeft + + + WindowFillSideArrowLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowFillSideArrowRight + + + WindowFillSideArrowRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowFillSideLeft + + + WindowFillSideLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowFillSideRight + + + WindowFillSideRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowSideArrowLeft + + + WindowSideArrowLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowSideArrowRight + + + WindowSideArrowRight icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowSideLeft + + + WindowSideLeft icon + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.WindowSideRight + + + WindowSideRight icon + +
    +
    +
    + +
    +
    + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/spots/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/spots/fragment.html new file mode 100644 index 0000000000..914fe1c832 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/spots/fragment.html @@ -0,0 +1,657 @@ + +
    + + + +

    Spot illustrations are the slightly grown up version of icons with a little more detail. They’re most often used in empty states and new product announcements. They’re built externally on the Icons repository.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    +
    + +

    Just like icons, spot illustrations are delivered as a Razor helper in Stack Overflow’s production environment, a custom liquid tag in our documentation’s Eleventy site generator, and a JavaScript helper for use in prototypes.

    +

    Helpers should be used for all spot illustrations in lieu of SVG sprite sheets or static raster image assets. This ensures a single source of truth for all spot illustrations.

    + + +
    +
    <!-- Razor -->
    @Svg.Spot.Wave

    <!-- Liquid -->
    {% spot "Wave" %}

    <!-- JavaScript Helper -->
    <svg data-spot="SpotWave"></svg>
    +
    + +
    +
    + + +

    Spot illustrations can be colored on the fly with support for arbitrary classes.

    + +
    +
    <!-- Razor -->
    @Svg.Spot.Wave.With("fc-orange-400 float-right js-dropdown-target")

    <!-- Liquid -->
    {% spot "Wave", "fc-orange-400 float-right js-dropdown-target" %}

    <!-- JavaScript Helper -->
    <svg data-spot="SpotWave" class="fc-orange-400 float-right js-dropdown-target"></svg>
    +
    + +
    +
    +
    + +
    + +
    + + +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Ads + + + Ads spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Answers + + + Answers spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Award + + + Award spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Celebrate + + + Celebrate spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Chat + + + Chat spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Checklist + + + Checklist spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Coding + + + Coding spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Conversation + + + Conversation spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Create + + + Create spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Dataset + + + Dataset spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Document + + + Document spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Empty + + + Empty spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Error + + + Error spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Error401 + + + Error401 spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Error404 + + + Error404 spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Error500 + + + Error500 spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Error503 + + + Error503 spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Idea + + + Idea spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Ideas + + + Ideas spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Learning + + + Learning spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Loading + + + Loading spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.LoadingGlyph + + + LoadingGlyph spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Lock + + + Lock spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Metrics + + + Metrics spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.People + + + People spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Puzzle + + + Puzzle spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Questions + + + Questions spot + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Server + + + Server spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Support + + + Support spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Validation + + + Validation spot + +
    +
    +
    + +
    +
    +
    + +
    +
    + @Svg.Spot.Work + + + Work spot + +
    +
    +
    + +
    +
    + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/theming/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/theming/fragment.html new file mode 100644 index 0000000000..8ac219fa19 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/theming/fragment.html @@ -0,0 +1,1023 @@ + +
    + + + +

    Stacks provides a robust theming API to handle theming in various contexts.

    + + + +
    + +
    +
    + +

    Stacks provides primary and secondary theme stops that can be overridden in your custom theme.

    + + + +
    + + + +
    +

    Theme primary

    +
    + + + + + + + + + +
    + theme-primary +
    + + + + + + + + + +
    + theme-primary-100 +
    + + + + + + + + + +
    + theme-primary-200 +
    + + + + + + + + + + + +
    + theme-primary-300 +
    + + + + + + + + + + + +
    + theme-primary-400 +
    + + + + + + + + + + + +
    + theme-primary-500 +
    + + + + + + + + + + + +
    + theme-primary-600 +
    + +
    +
    + + + + +
    +

    Theme secondary

    +
    + + + + + + + + + +
    + theme-secondary +
    + + + + + + + + + +
    + theme-secondary-100 +
    + + + + + + + + + +
    + theme-secondary-200 +
    + + + + + + + + + + + +
    + theme-secondary-300 +
    + + + + + + + + + + + +
    + theme-secondary-400 +
    + + + + + + + + + + + +
    + theme-secondary-500 +
    + + + + + + + + + + + +
    + theme-secondary-600 +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    + + + +

    Use .create-custom-theme-hsl-variables(@color, @tier, @modeCustom) to create a custom theme.

    + +

    This function generates two sets of CSS variables: 1) independent h/s/l color variables and 2) variables at each colors stop that reference the h/s/l variables. Provide this function the arguments defined below to generate theme colors which will apply across Stacks.

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ArgumentTypeDefaultDescription
    @colorHSL, hex, or other color valueColor to use to generate theme values.
    @tier + primary | + secondary + primaryColor tier to generate.
    @modeCustom + base | + dark + baseThe color mode the theme applies to.
    +
    + +
    + +
    .theme-custom.themed {
    .create-custom-theme-hsl-variables(hsl(172, 37%, 48%), primary);
    .create-custom-theme-hsl-variables(hsl(259, 29%, 55%), secondary);
    .create-custom-theme-hsl-variables(hsl(201, 70%, 55%), primary, dark);
    .create-custom-theme-hsl-variables(hsl(270, 34%, 40%), secondary, dark);
    }
    +
    + + + +
    +
    /* Input */
    .theme-custom.themed {
    .create-custom-theme-hsl-variables(hsl(172, 37%, 48%), primary);
    }

    /* Output */
    .theme-custom.themed {
    /* HSL variables */
    --theme-base-primary-color-h: 172;
    --theme-base-primary-color-s: 37%;
    --theme-base-primary-color-l: 48%;
    /* Color variables based on HSL variables */
    --theme-primary-custom: var(--theme-primary-custom-400);
    --theme-primary-custom-100: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(70%, calc(var(--theme-base-primary-color-l) + 50 * 1%), 95%));
    --theme-primary-custom-200: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(55%, calc(var(--theme-base-primary-color-l) + 35 * 1%), 90%));
    --theme-primary-custom-300: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(35%, calc(var(--theme-base-primary-color-l) + 15 * 1%), 75%));
    --theme-primary-custom-400: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(20%, calc(var(--theme-base-primary-color-l) + 0 * 1%), 60%));
    --theme-primary-custom-500: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(15%, calc(var(--theme-base-primary-color-l) + -14 * 1%), 45%));
    --theme-primary-custom-600: hsl(var(--theme-base-primary-color-h), calc(var(--theme-base-primary-color-s) + 0 * 1%), clamp(5%, calc(var(--theme-base-primary-color-l) + -26 * 1%), 30%));
    }
    +
    + +

    Manual addition of theme variables

    Section titled Manual addition of theme variables
    +

    If you need to apply a theme without using the above function, you can do so by manually adding the variables above to your CSS. The most common use for this approach is when the theme needs to change client-side, such as when allowing the user to change and preview a theme dynamically.

    + +

    With this approach, we recommend targeting new h/s/l color variables on a parent element that includes .themed class.

    + + +
    +
    HSL
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    Loading…
    + +
    + + + + + + + + + + +
    + theme-primary +
    + + + + + + + + +
    + theme-primary-100 +
    + + + + + + + + +
    + theme-primary-200 +
    + + + + + + + + + + +
    + theme-primary-300 +
    + + + + + + + + + + +
    + theme-primary-400 +
    + + + + + + + + + + +
    + theme-primary-500 +
    + + + + + + + + + + +
    + theme-primary-600 +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +

    Stacks provides CSS variables for fine grained control of theming. These variables allow you to adjust the theming on specific components and elements, as well as body background and font color.

    + +
    +
    --theme-background-color
    --theme-body-font-color
    --theme-button-active-background-color
    --theme-button-color
    --theme-button-hover-background-color
    --theme-button-hover-color
    --theme-button-outlined-border-color
    --theme-button-outlined-selected-border-color
    --theme-button-primary-active-background-color
    --theme-button-primary-background-color
    --theme-button-primary-color
    --theme-button-primary-hover-background-color
    --theme-button-primary-hover-color
    --theme-button-primary-number-color
    --theme-button-primary-selected-background-color
    --theme-button-primary-selected-color
    --theme-button-selected-background-color
    --theme-button-selected-color
    --theme-link-color
    --theme-link-color-hover
    --theme-link-color-visited
    --theme-post-body-font-family
    --theme-post-title-color
    --theme-post-title-color-hover
    --theme-post-title-color-visited
    --theme-post-title-font-family
    --theme-tag-background-color
    --theme-tag-border-color
    --theme-tag-color
    --theme-tag-hover-background-color
    --theme-tag-hover-border-color
    --theme-tag-hover-color
    --theme-tag-required-background-color
    --theme-tag-required-border-color
    --theme-tag-required-color
    --theme-tag-required-hover-background-color
    --theme-tag-required-hover-border-color
    --theme-tag-required-hover-color
    --theme-topbar-height
    +
    +
    + + +
    + +

    Stacks allows for further theming various portions of a page. You can simply pair the .themed class with an atomic color stop, and a new theming scope. For this example, we’re using a class name of .theme-team-[xxx] with a unique ID appended.

    +
    +
    <div class="bg-theme-primary-740"></div>
    <div class="themed theme-team-001 bg-theme-primary-400"></div>
    <div class="themed theme-team-002 bg-theme-primary-400"></div>
    <div class="themed theme-team-003 bg-theme-primary-400"></div>

    <style>
    .theme-team-001 {
    --theme-base-primary-color-h: 349;
    --theme-base-primary-color-s: 81%;
    --theme-base-primary-color-l: 58%;
    --theme-base-secondary-color-h: 349;
    --theme-base-secondary-color-s: 81%;
    --theme-base-secondary-color-l: 58%;
    }

    .theme-team-002 {
    --theme-base-primary-color-h: 41;
    --theme-base-primary-color-s: 93%;
    --theme-base-primary-color-l: 58%;
    --theme-base-secondary-color-h: 41;
    --theme-base-secondary-color-s: 93%;
    --theme-base-secondary-color-l: 58%;
    }

    .theme-team-003 {
    --theme-base-primary-color-h: 288;
    --theme-base-primary-color-s: 76%;
    --theme-base-primary-color-l: 38%;
    --theme-base-secondary-color-h: 288;
    --theme-base-secondary-color-s: 76%;
    --theme-base-secondary-color-l: 38%;

    /* Override colors for dark mode only */
    --theme-dark-primary-color-h: 288;
    --theme-dark-primary-color-s: 45%;
    --theme-dark-primary-color-l: 60%;
    --theme-dark-secondary-color-h: 288;
    --theme-dark-secondary-color-s: 45%;
    --theme-dark-secondary-color-l: 60%;
    }
    </style>
    + + + + + + + + + + +
    + +
    +
    + + +
    +
    + body + + +
    +
    +
    + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + + .themed.theme-team-001 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + + .themed.theme-team-002 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + + .themed.theme-team-003 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + +
    + +
    +
    + + +
    +
    + body + .theme-light__forced + +
    +
    +
    + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-light__forced + .themed.theme-team-001 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-light__forced + .themed.theme-team-002 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-light__forced + .themed.theme-team-003 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    +
    + body + .theme-dark__forced + +
    +
    +
    + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-dark__forced + .themed.theme-team-001 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-dark__forced + .themed.theme-team-002 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + + +
    +
    + + .theme-dark__forced + .themed.theme-team-003 +
    +
    +
    + +
    C
    + + +
    + + +
    +
    + 1 + 2 + Next +
    +
    +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/fragments/product/foundation/typography/fragment.html b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/typography/fragment.html new file mode 100644 index 0000000000..bbaeddc9b9 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/fragments/product/foundation/typography/fragment.html @@ -0,0 +1,761 @@ + +
    + + + +

    Stacks provides atomic classes to override default styling of typography. Change typographic weights, styles, and alignment with these atomic styles.

    + + + +
    + + + + + + + + Figma + + +
    + +
    + +
    + +

    These styles should only be used as overrides. They shouldn’t replace standard semantic uses of strong or em tags.

    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassOutputDefinition
    .fw-normalfont-weight: 400;

    Normal font weight. Maps to 400.

    .fw-mediumfont-weight: 500;

    Medium font weight. Maps to 500.

    .fw-boldfont-weight: 600;

    Bold font weight. Maps to 600.

    .fs-normalfont-style: normal;

    Selects the normal font within the font-family.

    .fs-italicfont-style: italic;

    Selects the italic font within the font-family.

    .tt-capitalizetext-transform: capitalize;

    The first character in each word is capitalized regardless of markup.

    .tt-lowercasetext-transform: lowercase;

    All characters are lowercase regardless of markup.

    .tt-uppercasetext-transform: uppercase;

    All characters are uppercase regardless of markup.

    .tt-nonetext-transform: none;

    Characters in a string remain unchanged.

    .tt-unsettext-transform: unset;

    Text-transform is unset entirely.

    .td-underlinetext-decoration: underline;

    Text renders with an underline.

    .td-nonetext-decoration: none;

    Text renders without an underline.

    +
    + + +
    +
    <p class="fw-normal"></p>
    <p class="fw-bold"></p>

    <p class="fs-normal"></p>
    <p class="fs-italic"></p>
    <p class="fs-unset"></p>

    <p class="tt-capitalize"></p>
    <p class="tt-lowercase"></p>
    <p class="tt-uppercase"></p>
    <p class="tt-none"></p>
    <p class="tt-unset"></p>

    <a class="td-underline"></a>
    <a class="td-none"></a>
    +
    +
    +
    Font Weight: Normal
    +
    Font Weight: Bold
    +
    Font Style: Normal
    +
    Font Style: Italic
    +
    Font Style: Unset
    +
    Text Transform: Capitalize
    +
    Text Transform: Lowercase
    +
    Text Transform: Uppercase
    +
    Text Transform: None
    +
    Text Transform: Unset
    +
    Text Decoration: Underline
    +
    Text Decoration: None
    +
    +
    +
    +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassOutputDefinitionResponsive?
    .ta-lefttext-align: left;

    Inline contents are aligned to the left edge.

    + + + +
    .ta-centertext-align: center;

    Inline contents are aligned to the center.

    + + + +
    .ta-righttext-align: right;

    Inline contents are aligned to the right edge.

    + + + +
    .ta-justifytext-align: justify;

    Inline contents are justified. Text should be spaced to line up its left and right edges to the left and right edges, except for the last line.

    + +
    .ws-normalwhite-space: normal;

    Lines are broken as necessary to fill the parent.

    + +
    .ws-nowrapwhite-space: nowrap;

    Text wrapping is disabled.

    + +
    .ws-prewhite-space: pre;

    Whitespace is preserved but text won’t wrap.

    + +
    .ws-pre-wrapwhite-space: pre-wrap;

    Whitespace is preserved but text will wrap. New lines are preserved.

    + +
    .ws-pre-linewhite-space: pre-line;

    Whitespace is preserved but text will wrap. New lines are collapsed.

    + +
    .ow-normalword-break: normal;

    Restores overflow wrapping behavior.

    + +
    .ow-anywhereoverflow-wrap: anywhere;

    Breaks a string of characters at any point when no other acceptable break points are available and does not hyphenate the break.

    + +
    .ow-break-wordoverflow-wrap: break-word;

    Breaks a word to a new line only if the entire word cannot be placed on its own line without overflowing.

    + +
    .ow-inheritoverflow-wrap: inherit;

    Inherits the parent value.

    + +
    .ow-intialoverflow-wrap: intial;

    Restores the value to the initial value set on the body.

    + +
    .ow-unsetoverflow-wrap: unset;

    Unsets any inherited behavior. Does not work in IE.

    + +
    .break-wordword-break: break-word; overflow-wrap: break-word; hyphens: auto;

    A utility class combining all word-break strategies when you absolutely must break a word.

    + +
    .wb-normalword-break: normal;

    Restores word break behavior.

    + +
    .wb-break-allword-break: break-all;

    To prevent copy from overflowing its box, breaks should occur between any two characters (excluding Chinese, Japanese, and Korean text)

    + +
    .wb-keep-allword-break: keep-all;

    Removes word breaks for Chinese, Japanese, and Korean text. All other text behavior is the same as normal.

    + +
    .wb-inheritword-break: inherit;

    Inherits the parent value.

    + +
    .wb-intialword-break: intial;

    Restores the value to the initial value set on the body.

    + +
    .wb-unsetword-break: unset;

    Unsets any inherited behavior.

    + +
    +
    + + +
    +
    <p class="ta-left">Text align: Left</p>
    <p class="ta-center">Text align: Center</p>
    <p class="ta-right">Text align: Right</p>
    <p class="ta-justify">Justify: …</p>
    <p class="ta-unset">Text align: Unset</p>

    <p class="ws-normal">White-space: Normal</p>
    <p class="ws-nowrap">White-space: Nowrap</p>
    <p class="ws-pre">White-space: Pre</p>
    <p class="ws-pre-wrap">White-space: Pre-wrap</p>
    <p class="ws-pre-line">White-space: Pre-line</p>
    <p class="ws-unset">White-space: Unset</p>

    <p class="break-word">Break word</p>

    <p class="truncate">Truncate: …</p>
    +
    +

    Text Align: Left

    +

    Text Align: Center

    +

    Text Align: Right

    +

    Text Align: Justify — Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    +

    Text Align: Unset

    +

    White-space: Normal

    +

    White-space: Nowrap

    +

    White-space: Pre

    +

    White-space: Pre-wrap

    +

    White-space: Pre-line

    +

    White-space: Unset

    +

    Break word: MethionylglutaminylarginylhionylglutaminylargintyrosylglutamylmethionylglutaminylarginyltyrlarginyltyrosylglutamylMethionylglutaminylarginyltyrosylglutamylnyltyrosylserinemethionylglutaminylargiglutamylmethionyosylglutamylmethionylglutaminylglutaminylarginyltyrosylglutamylmethionylglutaminylarginyltyrosylglutamylmetyltyrosylglutamylserine

    +
    +
    +
    + +
    + +
    +
    <p class="ff-sans"></p>
    <p class="ff-serif"></p>
    <p class="ff-mono"></p>
    <p class="ff-inherit"></p>
    +
    +
    +

    Sans Serif

    +

    -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"

    +
    +
    +

    Serif

    +

    Georgia, Cambria, "Times New Roman", Times, serif

    +
    +
    +

    Monospace

    +

    "SF Mono", SFMono-Regular, ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace

    +
    +
    +
    +
    + +
    + +

    + Fonts larger than .fs-body1 are reduced in size at the smallest responsive breakpoint. .fs-body1 or smaller remain fixed at their initial pixel values. +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassSizeLine HeightResponsive Size
    .fs-fine12px1.3612px
    .fs-caption13px1.4013px
    .fs-body114px1.4014px
    .fs-body216px1.4015px
    .fs-body318px1.4016px
    .fs-subheading20px1.4018px
    .fs-title22px1.4020px
    .fs-headline128px1.4023px
    .fs-headline236px1.4026px
    .fs-display146px1.3429px
    .fs-display258px1.2834px
    .fs-display372px1.2037px
    .fs-display4100px1.1843px
    +
    + + +
    +
    <p class="fs-fine"></p>
    <p class="fs-caption"></p>
    <p class="fs-body1"></p>
    <p class="fs-body2"></p>
    <p class="fs-body3"></p>
    <p class="fs-subheading"></p>
    <p class="fs-title"></p>
    <p class="fs-headline1"></p>
    <p class="fs-headline2"></p>
    <p class="fs-display1"></p>
    <p class="fs-display2"></p>
    <p class="fs-display3"></p>
    <p class="fs-display4"></p>
    +
    + +
    +
    Fine
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Caption
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Body 1
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Body 2
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Body 3
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Subheading
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Title
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Headline 1
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Headline 2
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Display 1
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Display 2
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Display 3
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    Display 4
    +
    + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +
    +
    + +
    +
    +
    + +
    + +
    +
    <p class="lh-xs"></p>
    <p class="lh-sm"></p>
    <p class="lh-md"></p>
    <p class="lh-lg"></p>
    <p class="lh-xl"></p>
    <p class="lh-xxl"></p>
    <p class="lh-unset"></p>
    +
    +

    Line Height XS: This sets the line-height value to 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height SM: This sets the line-height value to 1.15. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height MD: This sets the line-height value to 1.3. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height LG: This sets the line-height value to 1.6. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height XL: This sets the line-height value to 1.92. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height XXL: This sets the line-height value to 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +

    Line Height Unset: This sets the line-height value to initial. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    +
    + +
    + +

    Our hyphenation classes determine when text that wraps across multiple lines is hyphenated. You can prevent hyphenation entirely, or allow the browser to automatically hypenate.

    +
    +
    <p class="hyphens-none"></p>
    <p class="hyphens-auto"></p>
    +
    +
    + This text will not be hyphenated when large words break—longer words are broken by .ow-break-word. +
    +
    + This text will be hyphenated when large words break. .ow-break-word shouldn’t be necessary since breaks are implied by hyphenation rules. +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/llms.txt b/packages/stacks-docs-next/static/legacy/llms.txt new file mode 100644 index 0000000000..6410fd6eb4 --- /dev/null +++ b/packages/stacks-docs-next/static/legacy/llms.txt @@ -0,0 +1,782 @@ +# Site Content for LLMs +# Generated: 2026-04-10T21:27:38.807Z +# Site URL: https://stackoverflow.design + +## Collection: base + +### Page: Backgrounds +URL: https://stackoverflow.design/product/base/backgrounds/ +Date: 2026-03-24T21:30:16.513Z +Tags: base +description: Atomic classes for controlling the background properties of an element’s background image. + +Content: +Background size Section titled Background size Background size classes Section titled Background size classes Class Output .bg-auto background-size: auto; .bg-cover background-size: cover; .bg-contain background-size: contain; Background repeat Section titled Background repeat Background repeat classes Section titled Background repeat classes Class Output .bg-repeat background-repeat: repeat; .bg-no-repeat background-repeat: no-repeat; .bg-repeat-x background-repeat: repeat-x; .bg-repeat-y background-repeat: repeat-y; Background position Section titled Background position Background position classes Section titled Background position classes Class Output .bg-bottom background-position: bottom; .bg-center background-position: center; .bg-left background-position: left; .bg-left-bottom background-position: left bottom; .bg-left-top background-position: left top; .bg-right background-position: right; .bg-right-bottom background-position: right bottom; .bg-right-top background-position: right top; .bg-top background-position: top; Background position examples Section titled Background position examples < div class = "bg-no-repeat bg-bottom" > … </ div > < div class = "bg-no-repeat bg-center" > … </ div > < div class = "bg-no-repeat bg-left" > … </ div > < div class = "bg-no-repeat bg-left-bottom" > … </ div > < div class = "bg-no-repeat bg-left-top" > … </ div > < div class = "bg-no-repeat bg-right" > … </ div > < div class = "bg-no-repeat bg-right-bottom" > … </ div > < div class = "bg-no-repeat bg-right-top" > … </ div > < div class = "bg-no-repeat bg-top" > … </ div > .bg-bottom .bg-center .bg-left .bg-left-bottom .bg-left-top .bg-right .bg-right-bottom .bg-right-top .bg-top Background attachment Section titled Background attachment Background attachment classes Section titled Background attachment classes Class Output .bg-fixed background-attachment: fixed; .bg-local background-attachment: local; .bg-scroll background-attachment: scroll; Background image Section titled Background image Background image classes Section titled Background image classes Class Output .bg-image-none background-image: none; Background utilities Section titled Background utilities Loading Section titled Loading The Loading utility applies a shimmering gradient animation to a container's background. Use this class to create flexible 'skeleton' placeholders that mimic the shape and layout of content while it loads. < div class = "p16" > < div class = "ws3 d-flex g16" > < div class = "v-visible-sr" > Loading… </ div > < div class = "bg-loading s-avatar s-avatar__96 fl-shrink0" > </ div > < div class = "d-flex fd-column g8 jc-space-between w100" > < div class = "bg-loading bar-md h24" > </ div > < div class = "bg-loading bar-md h24" > </ div > < div class = "bg-loading bar-md h24 w70" > </ div > </ div > </ div > </ div > Loading… Confetti Section titled Confetti Adding the confetti background utility adds confetti to any block-level element. You can choose the animated version, or static version. The animated version respects prefers-reduced-motion and displays the static version of the background when necessary. No JavaScript required. < div class = "bg-confetti-animated" > … </ div > < div class = "bg-confetti-static" > … </ div > Animated Static + +--- + +### Page: Border radius +URL: https://stackoverflow.design/product/base/border-radius/ +Date: 2026-03-24T21:30:16.513Z +Tags: base +description: Stacks provides atomic classes for border radius. + +Content: +Classes Section titled Classes Abbreviation Output Definition Responsive? .bar0 border-radius: 0 Apply a border radius of 0 to all corners .btlr0 border-top-left-radius: 0 Apply a border radius of 0 to the top left corner .btrr0 border-top-right-radius: 0 Apply a border radius of 0 to the top right corner .bblr0 border-bottom-left-radius: 0 Apply a border radius of 0 to the bottom left corner .bbrr0 border-bottom-right-radius: 0 Apply a border radius of 0 to the bottom right corner .btr0 border-top-left-radius: 0 border-top-right-radius: 0 Apply a border radius of 0 to the top corners .brr0 border-top-right-radius: 0 border-bottom-right-radius: 0 Apply a border radius of 0 to the right corners .bbr0 border-bottom-left-radius: 0 border-bottom-right-radius: 0 Apply a border radius of 0 to the bottom corners .blr0 border-bottom-left-radius: 0 border-top-left-radius: 0 Apply a border radius of 0 to the left corners .bar-md border-radius: 10px Apply a border radius of 10px to all corners .btlr-md border-top-left-radius: 10px Apply a border radius of 10px to the top left corner .btrr-md border-top-right-radius: 10px Apply a border radius of 10px to the top right corner .bblr-md border-bottom-left-radius: 10px Apply a border radius of 10px to the bottom left corner .bbrr-md border-bottom-right-radius: 10px Apply a border radius of 10px to the bottom right corner .btr-md border-top-left-radius: 10px border-top-right-radius: 10px Apply a border radius of 10px to the top corners .brr-md border-top-right-radius: 10px border-bottom-right-radius: 10px Apply a border radius of 10px to the right corners .bbr-md border-bottom-left-radius: 10px border-bottom-right-radius: 10px Apply a border radius of 10px to the bottom corners .blr-md border-bottom-left-radius: 10px border-top-left-radius: 10px Apply a border radius of 10px to the left corners .bar-pill border-radius: 1000px Apply a border radius of 1000px to each corner for a 100% rounding of the left and right corners .bar-circle border-radius: 100% Apply a border radius of 100% to each corner circular appearance Examples Section titled Examples All corners Section titled All corners <!-- 0px Border radius --> < div class = "bar0" > </ div > <!-- 10px Border radius --> < div class = "bar-md" > </ div > <!-- Circle Border radius --> < div class = "bar-circle" > </ div > <!-- 1000px Border radius --> < div class = "bar-pill" > </ div > .bar0 .bar-md .bar-circle .bar-pill Top left corner Section titled Top left corner <!-- 0px Top Left Border Radius --> < div class = "btlr0" > </ div > <!-- 10px Top Left Border Radius --> < div class = "btlr-md" > </ div > .btlr0 .btlr-md Top right corner Section titled Top right corner <!-- 0px Top Right Border Radius --> < div class = "btrr0" > </ div > <!-- 10px Top Right Border Radius --> < div class = "btrr-md" > </ div > .btrr0 .btrr-md Bottom right corner Section titled Bottom right corner <!-- 0px Bottom Right Border Radius --> < div class = "bbrr0" > </ div > <!-- 10px Bottom Right Border Radius --> < div class = "bbrr-md" > </ div > .bbrr0 .bbrr-md Bottom left corner Section titled Bottom left corner <!-- 0px Bottom Left Border Radius --> < div class = "bblr0" > </ div > <!-- 10px Bottom Left Border Radius --> < div class = "bblr-md" > </ div > .bblr0 .bblr-md Top corners Section titled Top corners <!-- 0px Top Border Radius --> < div class = "btr0" > </ div > <!-- 10px Top Border Radius --> < div class = "btr-md" > </ div > .btr0 .btr-md Bottom corners Section titled Bottom corners <!-- 0px Bottom Border Radius --> < div class = "bbr0" > </ div > <!-- 10px Bottom Border Radius --> < div class = "bbr-md" > </ div > .bbr0 .bbr-md Left corners Section titled Left corners <!-- 0px Left Border Radius --> < div class = "blr0" > </ div > <!-- 10px Left Border Radius --> < div class = "blr-md" > </ div > .blr0 .blr-md Right corners Section titled Right corners <!-- 0px Right Border Radius --> < div class = "brr0" > </ div > <!-- 10px Right Border Radius --> < div class = "brr-md" > </ div > .brr0 .brr-md + +--- + +### Page: Borders +URL: https://stackoverflow.design/product/base/borders/ +Date: 2026-03-24T21:30:16.513Z +Tags: base +description: Stacks provides atomic classes for borders. + +Content: +Classes Section titled Classes Class Output Apply border to Responsive? .ba border: solid 1px #000 all sides .bt border-top: solid 1px #000 top .bb border-bottom: solid 1px #000 bottom .bl border-left: solid 1px #000 left .br border-right: solid 1px #000 right .by border-top: solid 1px #000; border-bottom: solid 1px #000; top and bottom .bx border-left: solid 1px #000; border-right: solid 1px #000; left and right Examples Section titled Examples < div class = "ba" > … </ div > < div class = "bt" > … </ div > < div class = "br" > … </ div > < div class = "bb" > … </ div > < div class = "bl" > … </ div > < div class = "bx" > … </ div > < div class = "by" > … </ div > all sides top bottom left right top and bottom left and right Width Section titled Width Width classes Section titled Width classes Class Output Border width, side(s) Responsive? .baw0 border-width: 0 zero, all sides .btw0 border-top-width: 0 zero, top .bbw0 border-bottom-width: 0 zero, bottom .blw0 border-left-width: 0 zero, left .brw0 border-right-width: 0 zero, right .byw0 border-top-width: 0; border-bottom-width: 0; zero, top and bottom .bxw0 border-left-width: 0; border-right-width: 0; zero, left and right .baw1 border-width: 1px 1px, all .btw1 border-top-width: 1px 1px, top .bbw1 border-bottom-width: 1px 1px, bottom .blw1 border-left-width: 1px 1px, left .brw1 border-right-width: 1px 1px, right .byw1 border-top-width: 1px; border-bottom-width: 1px; 1px, top and bottom .bxw1 border-left-width: 1px; border-right-width: 1px; 1px, left and right .baw2 border-width: 2px 2px, all .btw2 border-top-width: 2px 2px, top .bbw2 border-bottom-width: 2px 2px, bottom .blw2 border-left-width: 2px 2px, left .brw2 border-right-width: 2px 2px, right .byw2 border-top-width: 2px; border-bottom-width: 2px; 2px, top and bottom .bxw2 border-left-width: 2px; border-right-width: 2px; 2px, left and right .baw3 border-width: 4px 4px, all .btw3 border-top-width: 4px 4px, top .bbw3 border-bottom-width: 4px 4px, bottom .blw3 border-left-width: 4px 4px, left .brw3 border-right-width: 4px 4px, right .byw3 border-top-width: 4px; border-bottom-width: 4px; 4px, top and bottom .bxw3 border-left-width: 4px; border-right-width: 4px; 4px, left and right Width examples Section titled Width examples < div class = "ba" > … </ div > < div class = "ba brw0" > … </ div > < div class = "ba bbw0" > … </ div > < div class = "ba baw2" > … </ div > < div class = "ba baw3" > … </ div > .ba .ba.brw0 .ba.bbw0 .ba.baw2 .ba.baw3 Style Section titled Style Style classes Section titled Style classes Class Output Definition .bas-solid border-style: solid Applies a solid border style to all sides .bts-solid border-top-style: solid Applies a solid border style to the top side .brs-solid border-right-style: solid Applies a solid border style to the right side .bbs-solid border-bottom-style: solid Applies a solid border style to the bottom side .bls-solid border-left-style: solid Applies a solid border style to the left side .bas-dashed border-style: dashed Applies a dashed border style to all sides .bts-dashed border-top-style: dashed Applies a dashed border style to the top side .brs-dashed border-right-style: dashed Applies a dashed border style to the right side .bbs-dashed border-bottom-style: dashed Applies a dashed border style to the bottom side .bls-dashed border-left-style: dashed Applies a dashed border style to the left side Style examples Section titled Style examples < div class = "ba bas-solid" > … </ div > < div class = "ba bas-dashed" > … </ div > < div class = "ba brs-dashed" > … </ div > Solid border style Dashed border style Dashed border right style Color Section titled Color Color classes Section titled Color classes Each color stop is available as a border class. See the colors documentation for all available classes. + +--- + +### Page: Box shadow +URL: https://stackoverflow.design/product/base/box-shadow/ +Date: 2026-03-24T21:30:16.513Z +Tags: base +description: Box shadow atomic classes allow you to change an element’s box shadow quickly. + +Content: +Classes Section titled Classes Class Output Hover? Focus? Responsive? .bs-none box-shadow: none; .bs-sm box-shadow: 0 1px 2px hsla(0, 0%, 0%, 0.05), 0 1px 4px hsla(0, 0%, 0%, 0.05), 0 2px 8px hsla(0, 0%, 0%, 0.05) .bs-md box-shadow: 0 1px 3px hsla(0, 0%, 0%, 0.06), 0 2px 6px hsla(0, 0%, 0%, 0.06), 0 3px 8px hsla(0, 0%, 0%, 0.09) .bs-lg box-shadow: 0 1px 4px hsla(0, 0%, 0%, 0.09), 0 3px 8px hsla(0, 0%, 0%, 0.09), 0 4px 13px hsla(0, 0%, 0%, 0.13) .bs-xl box-shadow: 0 10px 24px hsla(0, 0%, 0%, 0.05), 0 20px 48px hsla(0, 0%, 0%, 0.05), 0 1px 4px hsla(0, 0%, 0%, 0.1) .bs-ring box-shadow: 0 0 0 var(--su4) var(--focus-ring); Examples Section titled Examples < div class = "bs-sm" > … </ div > < div class = "bs-md" > … </ div > < div class = "bs-lg" > … </ div > < div class = "bs-xl" > … </ div > < div class = "bs-ring" > … </ div > .bs-sm .bs-md .bs-lg .bs-xl .bs-ring + +--- + +### Page: Box sizing +URL: https://stackoverflow.design/product/base/box-sizing/ +Date: 2026-03-24T21:30:16.514Z +Tags: base +description: Box-sizing atomic classes allow one to determine what is used to determine an element’s width or height. + +Content: +Classes Section titled Classes Class Output Definition .box-content box-sizing: content-box; Indicates that the element's width and height affects only the element's content box, that is the area minus the element's margin, padding, and borders. This is the default browser value. .box-border box-sizing: border-box; Indicates that the element's width and height affects the entire element. This is the preferred default value for Stacks. .box-unset box-sizing: unset; Removes the previously set box-sizing value, reverting it back to the initial browser value. Examples Section titled Examples < div > … </ div > < div class = "box-content" > … </ div > < div class = "box-border" > … </ div > Parent container Child container box-sizing: content-box; width: 100%; padding: 0; border-width: 0; Parent container Child container box-sizing: content-box; width: 100%; padding: 12px; border-width: 1px; Parent container Child container box-sizing: border-box; width: 100%; padding: 12px; border-width: 1px; + +--- + +### Page: Current color +URL: https://stackoverflow.design/product/base/current-color/ +Date: 2026-03-24T21:30:16.514Z +Tags: base +description: Atomic classes allow you to quickly add currentColor to an element’s fill or stroke property. + +Content: +Classes Section titled Classes Class Output .fill-current fill: currentColor; .stroke-current stroke: currentColor; Examples Section titled Examples When applied to an SVG, applying currentColor to the fill or stroke property allows you to inherit the parent element’s text color or the text color applied to the element itself. < svg class = "fill-current" > … </ svg > < svg class = "fill-current fc-orange-400" > … </ svg > < svg class = "stroke-current" > … </ svg > < svg class = "stroke-current fc-orange-400" > … </ svg > + +--- + +### Page: Cursors +URL: https://stackoverflow.design/product/base/cursors/ +Date: 2026-03-24T21:30:16.514Z +Tags: base +description: Atomic cursor classes allow you to quickly change an element’s cursor behavior. + +Content: +Classes Section titled Classes Class Output .c-auto cursor: auto; .c-default cursor: default; .c-pointer cursor: pointer; .c-text cursor: text; .c-wait cursor: wait; .c-move cursor: move; .c-not-allowed cursor: not-allowed; .c-help cursor: help; Examples Section titled Examples < div class = "c-auto" > … </ div > < div class = "c-default" > … </ div > < div class = "c-pointer" > … </ div > < div class = "c-text" > … </ div > < div class = "c-wait" > … </ div > < div class = "c-move" > … </ div > < div class = "c-not-allowed" > … </ div > < div class = "c-help" > … </ div > .c-auto .c-default .c-pointer .c-text .c-wait .c-move .c-not-allowed .c-help + +--- + +### Page: Display +URL: https://stackoverflow.design/product/base/display/ +Date: 2026-03-24T21:30:16.514Z +Tags: base +description: Display atomic classes allow you to change an element’s display quickly. + +Content: +Classes Section titled Classes Class Output Definition Responsive? Print? .d-block display: block; This turns any element into a block-level element. .d-inline display: inline; Turns any element into an inline element that flows like text. .d-inline-block display: inline-block; Turns any element into a block-level box that will be flowed with surrounding content as if it were a single inline box (behaving much like a replaced element would) .d-flex display: flex; Lays out its content according to the flexbox model. .d-inline-flex display: inline-flex; This makes the element behave like an inline element and lays out its content according to the flexbox model. .d-grid display: grid; This lays out an element and its contents using grid layout. .d-inline-grid display: inline-grid; This makes the element behave like an inline element and lays out its content according to the grid model. .d-table display: table; This makes your element behave like table HTML elements. It defines a block-level box. .d-table-cell display: table-cell; These elements behave like td HTML elements. .d-none display: none; Effectively removes the element from the DOM. Useful for showing / hiding elements. To hide things when the page is printed, apply .print:d-none .d-unset display: unset; Removes any display property from the element. Examples Section titled Examples < div class = "d-block" > … </ div > < div class = "d-inline" > … </ div > < div class = "d-inline-block" > … </ div > < div class = "d-table" > … </ div > < div class = "d-table-cell" > … </ div > < div class = "d-none" > … </ div > < div class = "d-unset" > … </ div > .d-block .d-inline .d-inline .d-inline .d-inline-block .d-inline-block .d-table > .d-table-cell .d-table > .d-table-cell .d-table > .d-table-cell + +--- + +### Page: Flex +URL: https://stackoverflow.design/product/base/flex/ +Date: 2026-03-24T21:30:16.515Z +Tags: base +description: Stacks provides extensive utility and helper classes for flex layouts. If you are new to flex layouts, check out this interactive introduction by Joshua Comeau.

    + +Content: +Basic flex layout Section titled Basic flex layout A flex layout is initiated with the .d-flex class. By default, display: flex; starts a non-wrapping row. To convert it to a column, apply the .fd-column atomic class. < div class = "d-flex" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex fd-column" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .flex--item .flex--item .flex--item .flex--item Fluid Section titled Fluid By default, all flex items will only be as wide as their content. If you would like a flex item or all the flex items to fill the remaining space, apply the .fl-grow1 to the individual item, or .flex__fl-equal to the parent to apply to all children. Fluid examples Section titled Fluid examples < div class = "d-flex" > < div class = "flex--item fl-grow1" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__fl-equal" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .flex--item.fl-grow1 .flex--item .flex--item .flex--item .flex--item Fixed cells Section titled Fixed cells You can either fix the width of an individual element or fix the width of all child elements within a parent container by setting the width on the parent. The cell widths are based on a 12-column flex layout system. Fixed classes Section titled Fixed classes Individual Width Uniform Width Output .flex--item1 .flex__allitems1 flex-basis: 8.333333333%; .flex--item2 .flex__allitems2 flex-basis: 16.666666667%; .flex--item3 .flex__allitems3 flex-basis: 24.999999999%; .flex--item4 .flex__allitems4 flex-basis: 33.333333332%; .flex--item5 .flex__allitems5 flex-basis: 41.666666665%; .flex--item6 .flex__allitems6 flex-basis: 50%; .flex--item7 .flex__allitems7 flex-basis: 58.333333331%; .flex--item8 .flex__allitems8 flex-basis: 66.666666664%; .flex--item9 .flex__allitems9 flex-basis: 74.999999997%; .flex--item10 .flex__allitems10 flex-basis: 83.33333333%; .flex--item11 .flex__allitems11 flex-basis: 91.666666663%; .flex--item12 .flex__allitems12 flex-basis: 100%; Fixed examples Section titled Fixed examples < div class = "d-flex" > < div class = "flex--item2" > … </ div > < div class = "flex--item10" > … </ div > </ div > < div class = "d-flex" > < div class = "flex--item3" > … </ div > < div class = "flex--item6" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__allitems4" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .flex--item[x] .flex--item2 .flex--item10 .flex--item[x] and standard .flex--item .flex--item3 .flex--item6 .flex--item .d-flex.flex__allitems4 .flex--item .flex--item .flex--item .flex--item Helpers Section titled Helpers We have a few helper classes you can add to a .d-flex container that affect the child .flex--item s. Helper classes Section titled Helper classes Class Definition Responsive? .flex__center Centers child elements along a parent’s main and cross axis. .flex__fl-shrink0 Disables shrinking from all child elements .flex__fl-equal Makes each child element grow equally Helpers examples Section titled Helpers examples < div class = "d-flex flex__center" > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__fl-shrink0" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__fl-equal" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .flex__center .flex--item .flex__fl-shrink0 .flex--item .flex--item .flex--item .flex__fl-equal .flex--item .flex--item .flex--item Nested flex layouts Section titled Nested flex layouts Flex layouts can be nested within each other. This allows you to create unique, custom layouts without needing to create new, custom code or override existing styles. Nested examples Section titled Nested examples < div class = "d-flex" > < div class = "d-flex" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "flex--item2" > … </ div > < div class = "flex--item2" > … </ div > </ div > .flex--item .flex--item .flex--item2 .flex--item2 Gutters Section titled Gutters Deprecation: gutters will be removed in a future release. Please use gap classes to set spacing on flex items. Sometimes gutters are desired between cells. To do so apply the appropriate class to the parent wrapper. The gutter applies a margin to all sides. The sizes available are the same as the spacing units . Gutter classes Section titled Gutter classes Class Output .gs2 2px .gs4 4px .gs6 6px .gs8 8px .gs12 12px .gs16 16px .gs24 24px .gs32 32px .gs48 48px .gs64 64px .gsx Applies margins only to left and right .gsy Applies margins only to top and bottom Gutter examples Section titled Gutter examples < div class = "d-flex flex__fl-equal gs16" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__fl-equal gs16 gsx" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex flex__fl-equal gs16 gsy" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .gs16 .gs16 .gs16 .gs16 .gs16.gsx -- Row gutters only .gs16.gsx -- Row gutters only .gs16.gsx -- Row gutters only .gs16.gsx -- Row gutters only .gs16.gsy -- Column gutters only .gs16.gsy -- Column gutters only .gs16.gsy -- Column gutters only .gs16.gsy -- Column gutters only Nested gutters Section titled Nested gutters Note: Nested flex layouts with gutter spacing will conflict with each other in unpredictable ways. TL;DR? Don’t stick a .d-flex directly into a .d-flex , instead stick a .d-flex into a .flex--item like so: If you are nesting a flex layout with gutter spacing into another flex layout that also has gutter spacing, the child’s parent wrapper margins will be overwritten by the parent. To have the child flex layout’s gutter spacing honored, you have to put the child flex layout within a .flex--item wrapper first. This allows the parent and child flex layout gutter spacing to act correctly without interfering with each other. Do < div class = "d-flex gs32" > < div class = "flex--item" > … </ div > < div class = "flex--item" > < div class = "d-flex gs16" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > </ div > </ div > .flex--item .flex--item .flex--item Don’t < div class = "d-flex gs32" > < div class = "flex--item" > … </ div > < div class = "d-flex gs16" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > </ div > .flex--item .flex--item .flex--item Flex direction Section titled Flex direction On a flex container, you can set the direction of the child items. Flex direction classes Section titled Flex direction classes Class Definition Responsive? .fd-row Sets the flex direction to a row. .fd-row-reverse Reverses the row flex direction. .fd-column Sets the flex direction to a column. .fd-column-reverse Reverses the column flex direction. Flex direction examples Section titled Flex direction examples < div class = "d-flex fd-row" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex fd-row-reverse" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex fd-column" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > < div class = "d-flex fd-column-reverse" > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > < div class = "flex--item" > … </ div > </ div > .fd-row Default .flex--item 1 .flex--item 2 .flex--item 3 .fd-row-reverse .flex--item 1 .flex--item 2 .flex--item 3 .fd-column .flex--item 1 .flex--item 2 .flex--item 3 .fd-column-reverse .... + +--- + +### Page: Floats +URL: https://stackoverflow.design/product/base/floats/ +Date: 2026-03-24T21:30:16.515Z +Tags: base +description: Float and clear atomic classes allow you to change how an element is positioned within the layout. These should be used when possible to help create consistency. + +Content: +Classes Section titled Classes Class Output Definition Examples Section titled Examples Floats Section titled Floats < div class = "ps-relative clearfix" > < div class = "float-none" > … </ div > < div class = "float-left" > … </ div > < div class = "float-right" > … </ div > </ div > .float-none .float-left .float-right Clears Section titled Clears < div class = "ps-relative clearfix" > < div class = "float-none" > … </ div > < div class = "float-left" > … </ div > < div class = "float-right" > … </ div > </ div > .float-left .float-left .clear-left .float-right .float-right .clear-right .float-left .float-right .clear-both + +--- + +### Page: Gap +URL: https://stackoverflow.design/product/base/gap/ +Date: 2026-03-24T21:30:16.515Z +Tags: base +description: Atomic CSS gap classes allow you to set spacing on the direct children of elements with flexbox and grid layouts. + +Content: +Gap classes Section titled Gap classes Class Output Definition Responsive? .g0 gap: 0 Add no space between items .g1 gap: 1px Space out items by 1px .g2 gap: 2px Space out items by 2px .g4 gap: 4px Space out items by 4px .g6 gap: 6px Space out items by 6px .g8 gap: 8px Space out items by 8px .g12 gap: 12px Space out items by 12px .g16 gap: 16px Space out items by 16px .g24 gap: 24px Space out items by 24px .g32 gap: 32px Space out items by 32px .g48 gap: 48px Space out items by 48px .g64 gap: 64px Space out items by 64px Examples Section titled Examples < div class = "d-grid g0" > … </ div > < div class = "d-grid g1" > … </ div > < div class = "d-grid g2" > … </ div > < div class = "d-grid g4" > … </ div > < div class = "d-grid g8" > … </ div > < div class = "d-grid g12" > … </ div > < div class = "d-grid g16" > … </ div > < div class = "d-grid g24" > … </ div > < div class = "d-grid g32" > … </ div > < div class = "d-grid g48" > … </ div > < div class = "d-grid g64" > … </ div > .g0 .g1 .g2 .g4 .g6 .g8 .g12 .g16 .g24 .g32 .g48 .g64 Column gap Section titled Column gap Spacing can be set on just the x-axis with .gx classes. They can be used independently or in combination with other atomic gap classes. Class Definition Responsive? .gx0 Add no space between columns .gx1 Space out columns by 1px .gx2 Space out columns by 2px .gx4 Space out columns by 4px .gx6 Space out columns by 6px .gx8 Space out columns by 8px .gx12 Space out columns by 12px .gx16 Space out columns by 16px .gx24 Space out columns by 24px .gx32 Space out columns by 32px .gx48 Space out columns by 48px .gx64 Space out columns by 64px Column examples Section titled Column examples < div class = "d-grid gx0" > … </ div > < div class = "d-grid gx1" > … </ div > < div class = "d-grid gx2" > … </ div > < div class = "d-grid gx4" > … </ div > < div class = "d-grid gx8" > … </ div > < div class = "d-grid gx12" > … </ div > < div class = "d-grid gx16" > … </ div > < div class = "d-grid gx24" > … </ div > < div class = "d-grid gx32" > … </ div > < div class = "d-grid gx48" > … </ div > < div class = "d-grid gx64" > … </ div > .gx0 .gx1 .gx2 .gx4 .gx6 .gx8 .gx12 .gx16 .gx24 .gx32 .gx48 .gx64 Row gap Section titled Row gap Spacing can be set on just the y-axis with .gy classes. They can be used independently or in combination with other atomic gap classes. Class Definition Responsive? .gy0 Add no space between rows .gy1 Space out rows by 1px .gy2 Space out rows by 2px .gy4 Space out rows by 4px .gy6 Space out rows by 6px .gy8 Space out rows by 8px .gy12 Space out rows by 12px .gy16 Space out rows by 16px .gy24 Space out rows by 24px .gy32 Space out rows by 32px .gy48 Space out rows by 48px .gy64 Space out rows by 64px Row examples Section titled Row examples < div class = "d-grid gy0" > … </ div > < div class = "d-grid gy1" > … </ div > < div class = "d-grid gy2" > … </ div > < div class = "d-grid gy4" > … </ div > < div class = "d-grid gy8" > … </ div > < div class = "d-grid gy12" > … </ div > < div class = "d-grid gy16" > … </ div > < div class = "d-grid gy24" > … </ div > < div class = "d-grid gy32" > … </ div > < div class = "d-grid gy48" > … </ div > < div class = "d-grid gy64" > … </ div > .gy0 .gy1 .gy2 .gy4 .gy6 .gy8 .gy12 .gy16 .gy24 .gy32 .gy48 .gy64 + +--- + +### Page: Grid +URL: https://stackoverflow.design/product/base/grid/ +Date: 2026-03-24T21:30:16.515Z +Tags: base +description: Atomic CSS grid classes allow you to quickly add native css grids to your container. + +Content: +Overview Section titled Overview CSS Grids are the most powerful layout system available in CSS. It has two dimensions, meaning it can handle both columns and rows simultaneously, unlike flex layouts which can only do one at a time. Applying .d-grid to a container will lay out its children according to the CSS Grid layout spec. Adding atomic modifying classes will change the layout’s behavior. Applying classes to an individual .grid--item will change that cell’s behavior. Examples Section titled Examples < div class = "d-grid" > < div class = "grid--item" > … </ div > </ div > .d-grid .grid__4 .g16 .sm:g-af-row .grid--item .grid--col-all .grid--item .grid--col1 .md:grid--col-all .grid--row2 .grid--item .grid--col3 .md:grid--col-all .grid__2 .d-grid .g16 .grid__2 .sm:g-af-row .grid--item .sm:grid--col-all .grid--item .sm:grid--col-all .grid--item .sm:grid--col-all .grid--item .sm:grid--col-all .grid--item .grid--col2 .grid--item .grid--col1 .md:grid--col2 .grid--item .grid--col-all .grid--item .md:grid--col2 .md:has-row-2 .grid--item .md:grid--col2 .grid--item .md:grid--col2 .grid--item .md:grid--col-all Columns Section titled Columns To define a discrete number of columns in your grid layout, you can add a grid__[x] modifying class. Column classes Section titled Column classes Class Output Definition Responsive? .grid__1 grid-template-columns: repeat(1, minmax(0, 1fr)) Creates a grid layout with 1 column .grid__2 grid-template-columns: repeat(2, minmax(0, 2fr)) Creates a grid layout with 2 columns .grid__3 grid-template-columns: repeat(3, minmax(0, 3fr)) Creates a grid layout with 3 columns .grid__4 grid-template-columns: repeat(4, minmax(0, 4fr)) Creates a grid layout with 4 columns .grid__5 grid-template-columns: repeat(5, minmax(0, 5fr)) Creates a grid layout with 5 columns .grid__6 grid-template-columns: repeat(6, minmax(0, 6fr)) Creates a grid layout with 6 columns .grid__7 grid-template-columns: repeat(7, minmax(0, 7fr)) Creates a grid layout with 7 columns .grid__8 grid-template-columns: repeat(8, minmax(0, 8fr)) Creates a grid layout with 8 columns .grid__9 grid-template-columns: repeat(9, minmax(0, 9fr)) Creates a grid layout with 9 columns .grid__10 grid-template-columns: repeat(10, minmax(0, 10fr)) Creates a grid layout with 10 columns .grid__11 grid-template-columns: repeat(11, minmax(0, 11fr)) Creates a grid layout with 11 columns .grid__12 grid-template-columns: repeat(1, minmax(0, 12fr)) Creates a grid layout with 12 columns .grid__auto grid-template-columns: auto 1fr Creates a grid layout with auto-sized columns based on their content Columns examples Section titled Columns examples < div class = "d-grid grid__1" > … </ div > < div class = "d-grid grid__2" > … </ div > < div class = "d-grid grid__3" > … </ div > < div class = "d-grid grid__4" > … </ div > < div class = "d-grid grid__5" > … </ div > < div class = "d-grid grid__6" > … </ div > < div class = "d-grid grid__7" > … </ div > < div class = "d-grid grid__8" > … </ div > < div class = "d-grid grid__9" > … </ div > < div class = "d-grid grid__10" > … </ div > < div class = "d-grid grid__11" > … </ div > < div class = "d-grid grid__12" > … </ div > < div class = "d-grid grid__auto" > … </ div > 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 Column and row spans Section titled Column and row spans You can apply grid--col[x] to your columns, and grid--row[x] to your rows to span a specific number of columns or rows. Column spanning classes Section titled Column spanning classes Class Output Definition Responsive? .grid--col-all grid-column: 1 / -1 Span all the columns .grid--col1 grid-column: span 1 Span 1 column .grid--col2 grid-column: span 2 Span 2 columns .grid--col3 grid-column: span 3 Span 3 columns .grid--col4 grid-column: span 4 Span 4 columns .grid--col5 grid-column: span 5 Span 5 columns .grid--col6 grid-column: span 6 Span 6 columns .grid--col7 grid-column: span 7 Span 7 columns .grid--col8 grid-column: span 8 Span 8 columns .grid--col9 grid-column: span 9 Span 9 columns .grid--col10 grid-column: span 10 Span 10 columns .grid--col11 grid-column: span 11 Span 11 columns .grid--col12 grid-column: span 12 Span 12 columns Column examples Section titled Column examples < div class = "d-grid grid__12" > < div class = "grid--col-all" > … </ div > < div class = "grid--col1" > … </ div > < div class = "grid--col2" > … </ div > < div class = "grid--col3" > … </ div > < div class = "grid--col4" > … </ div > < div class = "grid--col5" > … </ div > < div class = "grid--col6" > … </ div > < div class = "grid--col7" > … </ div > < div class = "grid--col8" > … </ div > < div class = "grid--col9" > … </ div > < div class = "grid--col10" > … </ div > < div class = "grid--col11" > … </ div > < div class = "grid--col12" > … </ div > </ div > .grid--col-all .grid--col1 .grid--col2 .grid--col3 .grid--col4 .grid--col5 .grid--col6 .grid--col7 .grid--col8 .grid--col9 .grid--col10 .grid--col11 .grid--col12 Row classes Section titled Row classes Class Output Definition Responsive? .grid--row-all grid-row: 1 / -1 Span all the rows .grid--row1 grid-row: span 1 Span 1 row .grid--row2 grid-row: span 2 Span 2 rows .grid--row3 grid-row: span 3 Span 3 rows .grid--row4 grid-row: span 4 Span 4 rows .grid--row5 grid-row: span 5 Span 5 rows .grid--row6 grid-row: span 6 Span 6 rows .grid--row7 grid-row: span 7 Span 7 rows .grid--row8 grid-row: span 8 Span 8 rows .grid--row9 grid-row: span 9 Span 9 rows .grid--row10 grid-row: span 10 Span 10 rows .grid--row11 grid-row: span 11 Span 11 rows .grid--row12 grid-row: span 12 Span 12 rows Row example Section titled Row example < div class = "d-grid grid__4" > < div class = "grid--col2 grid--row4" > … </ div > < div class = "grid--col2" > … </ div > < div class = "grid--col2" > … </ div > < div class = "grid--col2" > … </ div > < div class = "grid--col2" > … </ div > </ div > .grid--col2 .grid--row4 .grid--col2 .grid--col2 .grid--col2 .grid--col2 Autoflow Section titled Autoflow If you have grid items that you don’t explicitly place on the grid, the auto-placement algorithm kicks in to automatically place the items. Autoflow classes Section titled Autoflow classes Class Output Definition Responsive? .g-af-row grid-auto-flow: row Items are placed by filling each row in turn, adding new rows as necessary. The default. .g-af-column grid-auto-flow: column Items are placed by filling each column in turn, adding new columns as necessary. .g-af-dense grid-auto-flow: dense Dense packing algorithm attempts to fill in holes earlier in the grid, if smaller items come up later. This may cause items to appear out-of-order, when doing so would fill in holes left by larger items. Autoflow examples Section titled Autoflow examples < div class = "d-grid g-af-row" > … </ div > < div class = "d-grid g-af-column" > … </ div > < div class = "d-grid g-af-dense" > … </ div > .g-af-row 1 2 3 .g-af-column 1 2 3 4 5 6 7 8 9 10 11 12 .g-af-dense 1 2 3 4 5 6 7 8 9 10 11 12 Start and end Section titled Start and end If you’d like to offset a column or row and specify its start and end positioning classes, you can apply these atomic classes. Column start and end classes Section titled Column start and end classes Class Output Definition Responsive? .grid--col-start1 grid-column-start: 1 Start at the 1st column .grid--col-start2 grid-column-start: 2 Start at the 2nd column .grid--col-start3 grid-column-start: 3 Start at the 3rd column .grid--col-start4 grid-column-start: 4 Start at the 4th column .grid--col-start5 grid-column-start: 5 Start at the 5th column .grid--col-start6 grid-column-start: 6 Start at the 6th column .grid--col-start7 grid-column-start: 7 Start at the 7th column .grid--col-start8 grid-column-start: 8 Start at the 8th column .grid--col-start9 grid-column-start: 9 Start at the 9th column .grid--col-start10 grid-column-start: 10 Start at the 10th column .grid--col-start11 grid-column-start: 11 Start at the 11th column .grid--col-start12 grid-column-start: 12 Start at the 12th column .grid--col-end2 grid-column-end: 2 End at the start of 2nd column .grid--col-end3 grid-column-end: 3 End at the start of 3rd column .grid--col-end4 grid-column-end: 4 End at the start of 4th column .grid--col-end5 grid-column-end: 5 End at the start of 5th column .grid--col-end6 grid-column-end: 6 End at the start of 6th column .grid--col-end7 grid-column-end: 7 End at the start of 7th column .grid--col-end8 grid-column-end: 8 End at the start of 8th column .grid--col-end9 grid-column-end: 9 End at the start of 9th column .grid--col-end10 grid-column-end: 10 End at the start of 10th column .grid--col-end11 grid-column-end: 11 End at the start of 11th column .grid--col-end12 grid-column-end: 12 End at the start of 12th column .... + +--- + +### Page: Height +URL: https://stackoverflow.design/product/base/height/ +Date: 2026-03-24T21:30:16.516Z +Tags: base +description: Stacks provides atomic sizing classes for heights using pixel, rem, and percentage values. Most height classes are based on a 16px base font size and will scale based on the browser's font size. + +Content: +Pixel height Section titled Pixel height Pixel height classes allow you to set the height of an element to a specific pixel value. Pixel height classes Section titled Pixel height classes Class Computed value rem value Responsive? .h0 height: 0px; 0rem .h1 height: 1px; 0.063rem .h2 height: 2px; 0.125rem .h4 height: 4px; 0.25rem .h6 height: 6px; 0.375rem .h8 height: 8px; 0.5rem .h12 height: 12px; 0.75rem .h16 height: 16px; 1rem .h24 height: 24px; 1.5rem .h32 height: 32px; 2rem .h48 height: 48px; 3rem .h64 height: 64px; 4rem .h96 height: 96px; 6rem .h128 height: 128px; 8rem Base height examples Section titled Base height examples < div class = "h2" > … </ div > < div class = "h4" > … </ div > < div class = "h6" > … </ div > < div class = "h8" > … </ div > < div class = "h12" > … </ div > < div class = "h16" > … </ div > < div class = "h24" > … </ div > < div class = "h32" > … </ div > < div class = "h48" > … </ div > < div class = "h64" > … </ div > < div class = "h96" > … </ div > < div class = "h128" > … </ div > .h0 .h1 .h2 .h4 .h6 .h8 .h12 .h16 .h24 .h32 .h48 .h64 .h96 .h128 Sizing units height Section titled Sizing units height Sizing units height classes allow you to set the height of an element according to a predefined set of 12 common values in used in Stacks. Sizing units height classes Section titled Sizing units height classes Class Computed value rem value Responsive? .hs1 height: 128px; 8rem .hs2 height: 256px; 16rem .hs3 height: 344px; 21.5rem .hs4 height: 448px; 28rem .hs5 height: 512px; 32rem .hs6 height: 640px; 40rem .hs7 height: 768px; 48rem .hs8 height: 848px; 53rem .hs9 height: 960px; 60rem .hs10 height: 1024px; 64rem .hs11 height: 1120px; 70rem .hs12 height: 1280px; 80rem Sizing units height examples Section titled Sizing units height examples < div class = "hs1" > … </ div > < div class = "hs2" > … </ div > < div class = "hs3" > … </ div > < div class = "hs4" > … </ div > < div class = "hs5" > … </ div > < div class = "hs6" > … </ div > < div class = "hs7" > … </ div > < div class = "hs8" > … </ div > < div class = "hs9" > … </ div > < div class = "hs10" > … </ div > < div class = "hs11" > … </ div > < div class = "hs12" > … </ div > .hs1 .hs2 .hs3 .hs4 .hs5 .hs6 .hs7 .hs8 .hs9 .hs10 .hs11 .hs12 Fluid height Section titled Fluid height Fluid height classes allow you to set the height of an element to a percentage of the parent element's height or to the full height of the viewport. Fluid height classes Section titled Fluid height classes Class Value Responsive? .h100 height: 100%; .h-screen height: 100vh; .h-auto height: auto; Fluid height examples Section titled Fluid height examples < div class = "h100" > … </ div > .h100 Min height Section titled Min height Min height classes allow you to set the minimum height of an element. Min height classes Section titled Min height classes Class Computed value rem value Responsive? .hmn0 min-height: 0; - .hmn1 min-height: 128px; 8rem .hmn2 min-height: 256px; 16rem .hmn3 min-height: 344px; 21.5rem .hmn4 min-height: 448px; 28rem .hmn5 min-height: 512px; 32rem .hmn6 min-height: 640px; 40rem .hmn7 min-height: 768px; 48rem .hmn8 min-height: 848px; 53rem .hmn9 min-height: 960px; 60rem .hmn10 min-height: 1024px; 64rem .hmn11 min-height: 1120px; 70rem .hmn12 min-height: 1280px; 80rem .hmn100 min-height: 100%; - .hmn-screen min-height: 100vh; - .hmn-initial min-height: initial; - Max height Section titled Max height Max height classes allow you to set the maximum height of an element. Max height classes Section titled Max height classes Class Computed value rem value Responsive? .hmx1 max-height: 128px; 8rem .hmx2 max-height: 256px; 16rem .hmx3 max-height: 344px; 21.5rem .hmx4 max-height: 448px; 28rem .hmx5 max-height: 512px; 32rem .hmx6 max-height: 640px; 40rem .hmx7 max-height: 768px; 48rem .hmx8 max-height: 848px; 53rem .hmx9 max-height: 960px; 60rem .hmx10 max-height: 1024px; 64rem .hmx11 max-height: 1120px; 70rem .hmx12 max-height: 1280px; 80rem .hmx100 max-height: 100%; - .hmx-screen max-height: 100vh; - .hmx-initial max-height: initial; - + +--- + +### Page: Interactivity +URL: https://stackoverflow.design/product/base/interactivity/ +Date: 2026-03-24T21:30:16.516Z +Tags: base +description: Atomic interactivity classes allow you to quickly change an element’s interactivity. + +Content: +Pointer events Section titled Pointer events The pointer-events CSS property enables or disables all mouse events on an element. Pointer events classes Section titled Pointer events classes Class Output Definition .pe-auto pointer-events: auto; The element behaves as it would if the pointer-events property were not specified. .pe-none pointer-events: none; Disables mouse events (clicking, dragging, hovering, etc.) on the element and its decendents. Pointer events examples Section titled Pointer events examples < div class = "pe-auto" > … </ div > < div class = "pe-none" > … </ div > .pe-auto .pe-none Focus Section titled Focus The focus utility classes allow you to apply custom focus styles to an element. Add the conditional prefix f: to only apply the style when the element is focused. Focus classes Section titled Focus classes Class Definition .focus The element will have the default Stacks focus style applied. .focus-inset The element will have the inset Stacks focus style applied. .focus-bordered The element will have the default Stacks focus style applied and match the border to the focus style. .focus-inset-bordered The element will have the inset Stacks focus style applied and match the border to the focus style. Focus examples Section titled Focus examples < div class = "focus" > … </ div > < div class = "focus-inset" > … </ div > < div class = "focus-bordered" > … </ div > < div class = "focus-inset-bordered" > … </ div > .focus .focus-inset .focus-bordered .focus-inset-bordered Conditional focus examples Section titled Conditional focus examples Add the conditional prefix f: to only apply the style when the element is focused. < div class = "f:focus" role = "button" tabindex = "0" > … </ div > < div class = "f:focus-inset" role = "button" tabindex = "0" > … </ div > < div class = "f:focus-bordered" role = "button" tabindex = "0" > … </ div > < div class = "f:focus-inset-bordered" role = "button" tabindex = "0" > … </ div > .f:focus .f:focus-inset .f:focus-bordered .f:focus-inset-bordered User select Section titled User select The user-select CSS property controls whether the user can select text. User select classes Section titled User select classes Class Output Definition .us-auto user-select: auto; The element behaves as it would if the user-select property were not specified. .us-none user-select: none; The text of the element and its sub-elements is not selectable. It may be appropriate to combine with .c-default User select examples Section titled User select examples < div class = "us-auto" > … </ div > < div class = "us-none" > … </ div > .us-auto .us-none + +--- + +### Page: Lists +URL: https://stackoverflow.design/product/base/lists/ +Date: 2026-03-24T21:30:16.516Z +Tags: base +description: Stacks provides a few atomic classes to help style lists. + +Content: +Classes Section titled Classes Class Output .list-reset list-style: none; margin: 0; padding: 0; .list-ls-none list-style: none; .list-ls-disc list-style-type: disc; .list-ls-decimal list-style-type: decimal; .list-ls-unset list-style-type: inherit; .list-inside list-style-position: inside; .list-outside list-style-position: outside; Examples Section titled Examples By design, our lists inherit some sensible margins by default. However, in some layouts, you may want to strip these default margins by adding .list-reset and then explicitly choosing a list style and list style position. These classes can be applied to ordered and unordered lists interchangably, though if you’re wanting to show decimals, it’s most appropriate to mark your list up as an ordered list. List Style Section titled List Style < ol class = "list-reset" > … </ ol > < ul class = "list-ls-none" > … </ ul > < ul class = "list-ls-disc" > … </ ul > < ol class = "list-ls-decimal" > … </ ol > List item 1 List item 2 List item 3 List item 4 List item 5 List item 1 List item 2 List item 3 List item 4 List item 5 List item 1 List item 2 List item 3 List item 4 List item 5 List item 1 List item 2 List item 3 List item 4 List item 5 List Position Section titled List Position By default, the position of markers in a list item are outside their containing element. < ul class = "list-reset list-ls-disc list-inside" > … </ ul > < ul class = "list-reset list-ls-disc list-outside" > … </ ul > List item 1 List item 2 List item 3 List item 4 List item 5 List item 1 List item 2 List item 3 List item 4 List item 5 + +--- + +### Page: Margin +URL: https://stackoverflow.design/product/base/margin/ +Date: 2026-03-24T21:30:16.516Z +Tags: base +description: Stacks provides atomic classes to override margin. + +Content: +Base Section titled Base Immutable margin utilities are based on our global white space scale. These can dramatically help reduce the size of large stylesheets and allow for greater flexibility and quicker iteration when designing in the browser. Abbreviations Section titled Abbreviations Abbreviation Property Responsive? m margin mt margin-top mr margin-right mb margin-bottom ml margin-left mx margin x-axis my margin y-axis Base examples Section titled Base examples < div class = "mt8 mr4 mb32 ml64" > … </ div > Example div with different margins applied Base classes Section titled Base classes 0 1px 2px 4px 6px 8px 12px 16px 24px 32px 48px 64px 96px 128px 50% 100% m .m0 .m1 .m2 .m4 .m6 .m8 .m12 .m16 .m24 .m32 .m48 .m64 .m96 .m128 .m50 .m100 mt .mt0 .mt1 .mt2 .mt4 .mt6 .mt8 .mt12 .mt16 .mt24 .mt32 .mt48 .mt64 .mt96 .mt128 .mt50 .mt100 mr .mr0 .mr1 .mr2 .mr4 .mr6 .mr8 .mr12 .mr16 .mr24 .mr32 .mr48 .mr64 .mr96 .mr128 .mr50 .mr100 mb .mb0 .mb1 .mb2 .mb4 .mb6 .mb8 .mb12 .mb16 .mb24 .mb32 .mb48 .mb64 .mb96 .mb128 .mb50 .mb100 ml .ml0 .ml1 .ml2 .ml4 .ml6 .ml8 .ml12 .ml16 .ml24 .ml32 .ml48 .ml64 .ml96 .ml128 .ml50 .ml100 mx .mx0 .mx1 .mx2 .mx4 .mx6 .mx8 .mx12 .mx16 .mx24 .mx32 .mx48 .mx64 .mx96 .mx128 .mx50 .mx100 my .my0 .my1 .my2 .my4 .my6 .my8 .my12 .my16 .my24 .my32 .my48 .my64 .my96 .my128 .my50 .my100 Negative Section titled Negative Immutable margin utilities are based on our global white space scale. These can dramatically help reduce the size of large stylesheets and allow for greater flexibility and quicker iteration when designing in the browser. Abbreviations Section titled Abbreviations Abbreviation Property Responsive? mn margin mtn margin-top mrn margin-right mbn margin-bottom mln margin-left mxn margin x-axis myn margin y-axis Negative examples Section titled Negative examples < div class = "mtn8 mrn4 mbn32 mln64" > … </ div > Example div with different margins applied Negative classes Section titled Negative classes 1px 2px 4px 6px 8px 12px 16px 24px 32px 48px 64px 96px 128px 50% 100% mn .mn1 .mn2 .mn4 .mn6 .mn8 .mn12 .mn16 .mn24 .mn32 .mn48 .mn64 .mn96 .mn128 .mn50 .mn100 mtn .mtn1 .mtn2 .mtn4 .mtn6 .mtn8 .mtn12 .mtn16 .mtn24 .mtn32 .mtn48 .mtn64 .mtn96 .mtn128 .mtn50 .mtn100 mrn .mrn1 .mrn2 .mrn4 .mrn6 .mrn8 .mrn12 .mrn16 .mrn24 .mrn32 .mrn48 .mrn64 .mrn96 .mrn128 .mrn50 .mrn100 mbn .mbn1 .mbn2 .mbn4 .mbn6 .mbn8 .mbn12 .mbn16 .mbn24 .mbn32 .mbn48 .mbn64 .mbn96 .mbn128 .mbn50 .mbn100 mln .mln1 .mln2 .mln4 .mln6 .mln8 .mln12 .mln16 .mln24 .mln32 .mln48 .mln64 .mln96 .mln128 .mln50 .mln100 mxn .mxn1 .mxn2 .mxn4 .mxn6 .mxn8 .mxn12 .mxn16 .mxn24 .mxn32 .mxn48 .mxn64 .mxn96 .mxn128 .mxn50 .mxn100 myn .myn1 .myn2 .myn4 .myn6 .myn8 .myn12 .myn16 .myn24 .myn32 .myn48 .myn64 .myn96 .myn128 .myn50 .myn100 Auto Section titled Auto Stacks provides additional automatic margin classes. These come in handy when positioning individual flex items within flex layouts, or horizontally centering a block-level element. Auto classes Section titled Auto classes Class Property .m-auto margin .mt-auto margin-top .mr-auto margin-right .mb-auto margin-bottom .ml-auto margin-left .mx-auto margin x-axis .my-auto margin y-axis + +--- + +### Page: Object fit +URL: https://stackoverflow.design/product/base/object-fit/ +Date: 2026-03-24T21:30:16.516Z +Tags: base +description: Atomic classes that control the sizing of an img or video relative to its container. + +Content: +Classes Section titled Classes Class Output Definition .of-contain object-fit: contain Fit the content to the content box while preserving its aspect ratio. This may result in empty space in the content box. .of-cover object-fit: cover Cover the entire content box with the content while preserving its aspect ratio. This may crop the content. .of-fill object-fit: fill Stretch and scale the content’s dimensions to match its content box. This is the default browser value. .of-none object-fit: none Prevent the content from being resized. .of-scale-down object-fit: scale-down When larger than the content box, resize the content to fill its content box. Otherwise, maintain the content’s original dimensions. .op-center object-position: center Center the content within its content box. Examples Section titled Examples < img class = "of-contain" src = "…" /> < img class = "of-cover" src = "…" /> < img class = "of-fill" src = "…" /> < img class = "of-none" src = "…" /> < img class = "of-scale-down" src = "…" /> < img class = "of-none op-center" src = "…" /> .of-contain .of-contain .of-cover .of-cover .of-fill .of-fill .of-none .of-none .of-scale-down .of-scale-down .op-center.op-none .op-center.op-none + +--- + +### Page: Opacity +URL: https://stackoverflow.design/product/base/opacity/ +Date: 2026-03-24T21:30:16.517Z +Tags: base +description: Atomic opacity classes allow you to change an element’s opacity quickly. + +Content: +Classes Section titled Classes Class Output Hover? Focus? .o0 opacity: 0; .o5 opacity: 0.05; .o10 opacity: 0.1; .o20 opacity: 0.2; .o30 opacity: 0.3; .o40 opacity: 0.4; .o50 opacity: 0.5; .o60 opacity: 0.6; .o70 opacity: 0.7; .o80 opacity: 0.8; .o90 opacity: 0.9; .o100 opacity: 1; Examples Section titled Examples < div class = "o0" > … </ div > < div class = "o5" > … </ div > < div class = "o10" > … </ div > < div class = "o20" > … </ div > < div class = "o30" > … </ div > < div class = "o40" > … </ div > < div class = "o50" > … </ div > < div class = "o60" > … </ div > < div class = "o70" > … </ div > < div class = "o80" > … </ div > < div class = "o90" > … </ div > < div class = "o100" > … </ div > .o0 .o5 .o10 .o20 .o30 .o40 .o50 .o60 .o70 .o80 .o90 .o100 + +--- + +### Page: Outline +URL: https://stackoverflow.design/product/base/outline/ +Date: 2026-03-24T21:30:16.517Z +Tags: base +description: null + +Content: +Warning: Atomic outline classes mimic or remove default Stacks focus styles. They should only be applied when absolutely necessary. Classes Section titled Classes Class Output Definition .outline-none outline: 0; Removes the browser’s default focus style. To maintain accessibility, care should be taken to replace the style that’s been removed. .outline-ring Standard Stacks focus style Standard Stacks focus style. Examples Section titled Examples < div class = "outline-none" > … </ div > < div class = "outline-ring" > … </ div > .outline-none .outline-ring + +--- + +### Page: Overflow +URL: https://stackoverflow.design/product/base/overflow/ +Date: 2026-03-24T21:30:16.517Z +Tags: base +description: Atomic overflow classes allow you to change an element’s overflow properties quickly. + +Content: +Classes Section titled Classes Class Output Definition .overflow-auto overflow: auto; If content fits inside the content box, it looks the same as visible, but still establishes a new block-formatting context. Desktop browsers like Firefox provide scrollbars if content overflows. .overflow-x-auto overflow-x: auto; If content fits inside the content box, it looks the same as visible in the x dimension, but still establishes a new block-formatting context. Desktop browsers like Firefox provide scrollbars if content overflows. .overflow-y-auto overflow-y: auto; If content fits inside the content box, it looks the same as visible in the y dimension, but still establishes a new block-formatting context. Desktop browsers like Firefox provide scrollbars if content overflows. .overflow-hidden overflow: hidden; Content is clipped if necessary to fit the content box. No scrollbars are provided. .overflow-x-hidden overflow-x: hidden; Content is clipped if necessary to fit the content box. No scrollbars are provided in the x dimension. .overflow-y-hidden overflow-y: hidden; Content is clipped if necessary to fit the content box. No scrollbars are provided in the y dimension. .overflow-scroll overflow: scroll; Content is clipped if necessary to fit the content box. Browsers display scrollbars whether or not any content is actually clipped. (This prevents scrollbars from appearing or disappearing when the content changes.) Printers may still print overflowing content. .overflow-x-scroll overflow-x: scroll; Content is clipped if necessary to fit the content box. Browsers display scrollbars whether or not any content is actually clipped in the x dimension. .overflow-y-scroll overflow-y: scroll; Content is clipped if necessary to fit the content box. Browsers display scrollbars whether or not any content is actually clipped in the y dimension. .overflow-visible overflow: visible; Content is not clipped and may be rendered outside the content box. This is the default value. Examples Section titled Examples < div class = "overflow-auto" > … </ div > < div class = "overflow-x-auto" > … </ div > < div class = "overflow-y-auto" > … </ div > < div class = "overflow-hidden" > … </ div > < div class = "overflow-x-hidden" > … </ div > < div class = "overflow-y-hidden" > … </ div > < div class = "overflow-scroll" > … </ div > < div class = "overflow-x-scroll" > … </ div > < div class = "overflow-y-scroll" > … </ div > < div class = "overflow-visible" > … </ div > .overflow-auto .overflow-x-auto .overflow-y-auto .overflow-hidden .overflow-x-hidden .overflow-y-hidden .overflow-scroll .overflow-x-scroll .overflow-y-scroll .overflow-visible + +--- + +### Page: Padding +URL: https://stackoverflow.design/product/base/padding/ +Date: 2026-03-24T21:30:16.517Z +Tags: base +description: Stacks provides atomic classes to override padding. + +Content: +Padding Section titled Padding Immutable padding utilities are based on a global white space scale defined with custom properties. These can dramatically help reduce the size of large stylesheets and allow for greater flexibility and quicker iteration when designing in the browser. Padding should never be declared outside of these utilities. This is meant to help create consistency and avoid magic numbers. If, for some reason, the default white space scale does not suit your design, customize and extend it before use. Padding class abbreviations Section titled Padding class abbreviations Abbreviation Property Responsive? p padding pt padding-top pr padding-right pb padding-bottom pl padding-left px padding x-axis py padding y-axis Padding classes Section titled Padding classes < div class = "pt4 pr64 pb64 pl64" > … </ div > Example div with different paddings applied 0 1px 2px 4px 6px 8px 12px 16px 24px 32px 48px 64px 96px 128px 50% 100% p .p0 .p1 .p2 .p4 .p6 .p8 .p12 .p16 .p24 .p32 .p48 .p64 .p96 .p128 .p50 .p100 pt .pt0 .pt1 .pt2 .pt4 .pt6 .pt8 .pt12 .pt16 .pt24 .pt32 .pt48 .pt64 .pt96 .pt128 .pt50 .pt100 pr .pr0 .pr1 .pr2 .pr4 .pr6 .pr8 .pr12 .pr16 .pr24 .pr32 .pr48 .pr64 .pr96 .pr128 .pr50 .pr100 pb .pb0 .pb1 .pb2 .pb4 .pb6 .pb8 .pb12 .pb16 .pb24 .pb32 .pb48 .pb64 .pb96 .pb128 .pb50 .pb100 pl .pl0 .pl1 .pl2 .pl4 .pl6 .pl8 .pl12 .pl16 .pl24 .pl32 .pl48 .pl64 .pl96 .pl128 .pl50 .pl100 px - .px1 .px2 .px4 .px6 .px8 .px12 .px16 .px24 .px32 .px48 .px64 .px96 .px128 - - py - .py1 .py2 .py4 .py6 .py8 .py12 .py16 .py24 .py32 .py48 .py64 .py96 .py128 - - + +--- + +### Page: Positioning +URL: https://stackoverflow.design/product/base/position/ +Date: 2026-03-24T21:30:16.518Z +Tags: base +description: Atomic positioning classes allow you to quickly change an element’s position. + +Content: +Classes Section titled Classes Class Output Definition Responsive? .ps-absolute position: absolute; Absolutely positions an element. Typically is used in conjunction with top , right , bottom , and left properties. Note: Absolutely positioning an element takes it out of the DOM flow and puts it automatically above all relatively positioned items which don’t have a z-index assigned. .ps-fixed position: fixed; Fixes an element within the viewport. Typically is used in conjunction with top , right , bottom , and left properties. Note: Fixing an element’s position, like absolute positioning, takes it out of the DOM flow and puts it automatically above all relatively positioned items. .ps-relative position: relative; Relatively positions an element in relation to elements around it. The top and bottom properties specify the vertical offset from its normal position. In the same way the left and right properties specify the horizontal offset. .ps-static position: static; An element is positioned according to the document’s flow. The top , right , bottom , left , and z-index properties have no effect . This is the default value. .ps-sticky position: sticky; An element is positioned according to the document's flow, and then offset relative to its flow root and containing block. This creates a new stacking context. Notes: Sticky elements, by design, will not work inside an element with overflow:hidden; or overflow:auto; values. Examples Section titled Examples < div class = "ps-static" > … </ div > < div class = "ps-relative" > … </ div > < div class = "ps-absolute" > … </ div > < div class = "ps-sticky" > … </ div > < div class = "ps-fixed" > … </ div > < div class = "ps-unset" > … </ div > .ps-static .ps-relative .t32 r24 .ps-absolute .t48 .r32 .ps-sticky .t64 Coordinates Section titled Coordinates Our spacing units aren’t limited to margin and padding; they also apply to top, right, left, and bottom declarations. Combined with our position utility classes, you should be able to achieve absolutely-positioned layouts while adhering to Stacks’ spacing conventions. Coordinate classes Section titled Coordinate classes Abbreviation Definition Responsive? t top r right b bottom l left i inset tn negative top rn negative right bn negative bottom ln negative left Coordinate examples Section titled Coordinate examples < div class = "ps-absolute t12 l12" > … </ div > < div class = "ps-absolute t48 r24" > … </ div > < div class = "ps-absolute b48 l48" > … </ div > < div class = "ps-absolute bn8 rn8" > … </ div > < div class = "ps-absolute i64" > … </ div > .t12 .l12 .t48 .r24 .t50 .l50 .b48 .l48 .rn8 .bn8 .i64 Positive coordinates Section titled Positive coordinates Prefix 0 1px 2px 4px 6px 8px 12px 16px 24px 32px 48px 64px 96px 128px 50% 100% t .t0 .t1 .t2 .t4 .t6 .t8 .t12 .t16 .t24 .t32 .t48 .t64 .t96 .t128 .t50 .t100 r .r0 .r1 .r2 .r4 .r6 .r8 .r12 .r16 .r24 .r32 .r48 .r64 .r96 .r128 .r50 .r100 b .b0 .b1 .b2 .b4 .b6 .b8 .b12 .b16 .b24 .b32 .b48 .b64 .b96 .b128 .b50 .b100 l .l0 .l1 .l2 .l4 .l6 .l8 .l12 .l16 .l24 .l32 .l48 .l64 .l96 .l128 .l50 .l100 i .i0 .i1 .i2 .i4 .i6 .i8 .i12 .i16 .i24 .i32 .i48 .i64 .i96 .i128 - - Negative coordinates Section titled Negative coordinates Prefix -1px -2px -4px -6px -8px -12px -16px -24px -32px -48px -64px -96px -128px -50% -100% tn .tn1 .tn2 .tn4 .tn6 .tn8 .tn12 .tn16 .tn24 .tn32 .tn48 .tn64 .tn96 .tn128 .tn50 .tn100 rn .rn1 .rn2 .rn4 .rn6 .rn8 .rn12 .rn16 .rn24 .rn32 .rn48 .rn64 .rn96 .rn128 .rn50 .rn100 bn .bn1 .bn2 .bn4 .bn6 .bn8 .bn12 .bn16 .bn24 .bn32 .bn48 .bn64 .bn96 .bn128 .bn50 .bn100 ln .ln1 .ln2 .ln4 .ln6 .ln8 .ln12 .ln16 .ln24 .ln32 .ln48 .ln64 .ln96 .ln128 .ln50 .ln100 + +--- + +### Page: Transitions +URL: https://stackoverflow.design/product/base/transitions/ +Date: 2026-03-24T21:30:16.518Z +Tags: base +description: Atomic transition classes allow you to quickly apply transitions properties to an element. You can modify an element’s transition duration, property, or delay. + +Content: +You can trigger CSS transitions directly with pseudo classes like :hover which activate on mouse over, :focus which activates when user tabs onto or clicks into an input element, or active when a user clicks on an element. You can also trigger a CSS transition using JavaScript by adding or removing a class. Classes Section titled Classes Class Output Definition .t transition-duration: .1s; transition-property: all; transition-timing-function: ease-in; transition-delay: 0s; Apply a default transition style to an element. .t-slow transition-duration: .25s; Slow down the default transition to 0.25s. .t-fast transition-duration: .05s; Speed up the default transition to 0.05s. .t-unset transition-property: none; Remove transition properties from an element. .t-bg transition-property: background-color; Transition the background property of an element. .t-opacity transition-property: opacity; Transition the opacity property of an element. .t-shadow transition-property: box-shadow; Transition the box shadow property of an element. .t-delay transition-delay: .25s; Apply a transition delay to an element. .t-delay-unset transition-delay: 0s; Remove a transition delay from an element. Base transition Section titled Base transition The base transition applies a default duration timing function to an element. < div class = "t" > … </ div > .t Speed Section titled Speed Change an elements default transition duration. < div class = "t-slow" > … </ div > < div class = "t-fast" > … </ div > .t-slow .t-fast Property Section titled Property Target a specific CSS property for transition, or remove the default transition. < div class = "t-unset" > … </ div > < div class = "t-bg" > … </ div > < div class = "t-opacity" > … </ div > < div class = "t-shadow" > … </ div > .t-unset .t-bg .t-opacity .t-shadow Delay Section titled Delay Refers to how long you want to wait before starting the duration. < div class = "t-delay" > … </ div > < div class = "t-delay-unset" > … </ div > .t-delay .t-delay-unset + +--- + +### Page: Truncation +URL: https://stackoverflow.design/product/base/truncation/ +Date: 2026-03-24T21:30:16.518Z +Tags: base +description: Stacks provides utility classes for various types of truncation. + +Content: +Classes Section titled Classes Class Applies to Description .truncate Text is cropped to the width of its parent with an ellipsis. .v-truncate[x] Text is cropped to the length of [x] number of lines with an ellipsis. .v-truncate-fade Text is cropped by visually fading it out. .v-truncate-fade__sm .v-truncate-fade Reduces the height of the visible text .v-truncate-fade__lg .v-truncate-fade Increases the amount of visible text. Examples Section titled Examples Ellipses Section titled Ellipses CSS offers truncation on arbitrarily-long strings. This can help sanitize user-inputted things like bios, locations, or display names. In order for text truncation to work, it should be applied to a block-level element. Truncation can only apply to text/strings, not arbitrary block-level elements. < p class = "truncate" > … </ p > < p class = "v-truncate1" > … </ p > < p class = "v-truncate2" > … </ p > < p class = "v-truncate3" > … </ p > < p class = "v-truncate4" > … </ p > < p class = "v-truncate5" > … </ p > Regardless of length, this text will be truncated horizontally. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will be truncated to 1 line, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will be truncated to 2 lines, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will be truncated to 3 lines, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will be truncated to 4 lines, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will be truncated to 5 lines, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Fade Section titled Fade Alternatively, you can use a vertical fade that will set max-height and sets a vertical mask-image : < p class = "v-truncate-fade v-truncate-fade__sm" > … </ p > < p class = "v-truncate-fade" > … </ p > < p class = "v-truncate-fade v-truncate-fade__lg" > … </ p > Regardless of length, this text will be this text will fade out, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will fade out, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Regardless of length, this text will be this text will fade out, vertically. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +--- + +### Page: Vertical alignment +URL: https://stackoverflow.design/product/base/vertical-alignment/ +Date: 2026-03-24T21:30:16.518Z +Tags: base +description: Atomic vertical alignment classes allow you to change an element’s vertical alignment quickly. + +Content: +Classes Section titled Classes Class Output .va-baseline vertical-align: baseline; .va-bottom vertical-align: bottom; .va-middle vertical-align: middle; .va-sub vertical-align: sub; .va-super vertical-align: super; .va-text-bottom vertical-align: text-bottom; .va-text-top vertical-align: text-top; .va-top vertical-align: top; .va-unset vertical-align: unset; Examples Section titled Examples < div class = "va-baseline" > … </ div > < div class = "va-bottom" > … </ div > < div class = "va-middle" > … </ div > < div class = "va-sub" > … </ div > < div class = "va-super" > … </ div > < div class = "va-text-bottom" > … </ div > < div class = "va-text-top" > … </ div > < div class = "va-top" > … </ div > < div class = "va-unset" > … </ div > .va-baseline .va-bottom .va-middle .va-sub .va-super .va-text-bottom .va-text-top .va-top .va-unset + +--- + +### Page: Visibility +URL: https://stackoverflow.design/product/base/visibility/ +Date: 2026-03-24T21:30:16.519Z +Tags: base +description: Atomic visibility classes allow you to quickly change an element’s visibility. + +Content: +Classes Section titled Classes Class Definition .v-visible The element visible .v-visible-sr The element is visible only to screen readers .v-hidden The element is invisible, but still affects layout as normal Examples Section titled Examples < div class = "v-visible" > … </ div > < div class = "v-visible-sr" > … </ div > < div class = "v-hidden" > … </ div > .v-visible .v-visible-sr .v-hidden + +--- + +### Page: Width +URL: https://stackoverflow.design/product/base/width/ +Date: 2026-03-24T21:30:16.519Z +Tags: base +description: Stacks provides atomic sizing classes for widths using pixel, rem, and percentage values. Most width classes are based on a 16px base font size and will scale based on the browser's font size. + +Content: +Pixel width Section titled Pixel width Pixel width classes allow you to set the width of an element to a specific pixel value. Pixel width classes Section titled Pixel width classes Class Computed value rem value Responsive? .w0 width: 0px; 0rem .w1 width: 1px; 0.063rem .w2 width: 2px; 0.125rem .w4 width: 4px; 0.25rem .w6 width: 6px; 0.375rem .w8 width: 8px; 0.5rem .w12 width: 12px; 0.75rem .w16 width: 16px; 1rem .w24 width: 24px; 1.5rem .w32 width: 32px; 2rem .w48 width: 48px; 3rem .w64 width: 64px; 4rem .w96 width: 96px; 6rem .w128 width: 128px; 8rem Pixel width examples Section titled Pixel width examples < div class = "w0" > … </ div > < div class = "w1" > … </ div > < div class = "w2" > … </ div > < div class = "w4" > … </ div > < div class = "w6" > … </ div > < div class = "w8" > … </ div > < div class = "w12" > … </ div > < div class = "w16" > … </ div > < div class = "w24" > … </ div > < div class = "w32" > … </ div > < div class = "w48" > … </ div > < div class = "w64" > … </ div > < div class = "w96" > … </ div > < div class = "w128" > … </ div > .w0 .w1 .w2 .w4 .w6 .w8 .w12 .w16 .w24 .w32 .w48 .w64 .w96 .w128 Sizing units width Section titled Sizing units width Sizing units width classes allow you to set the width of an element according to a predefined set of 12 common values in used in Stacks. Sizing units width classes Section titled Sizing units width classes Class Computed value rem value Responsive? .ws1 width: 128px; 8rem .ws2 width: 256px; 16rem .ws3 width: 344px; 21.5rem .ws4 width: 448px; 28rem .ws5 width: 512px; 32rem .ws6 width: 640px; 40rem .ws7 width: 768px; 48rem .ws8 width: 848px; 53rem .ws9 width: 960px; 60rem .ws10 width: 1024px; 64rem .ws11 width: 1120px; 70rem .ws12 width: 1280px; 80rem Sizing units width examples Section titled Sizing units width examples < div class = "ws1" > … </ div > < div class = "ws2" > … </ div > < div class = "ws3" > … </ div > < div class = "ws4" > … </ div > < div class = "ws5" > … </ div > < div class = "ws6" > … </ div > < div class = "ws7" > … </ div > < div class = "ws8" > … </ div > < div class = "ws9" > … </ div > < div class = "ws10" > … </ div > < div class = "ws11" > … </ div > < div class = "ws12" > … </ div > .ws1 .ws2 .ws3 .ws4 .ws5 .ws6 .ws7 .ws8 .ws9 .ws10 .ws11 .ws12 Fluid width Section titled Fluid width Fluid width classes allow you to set the width of an element to a percentage of the parent element's width or to the full width of the viewport. Fluid width classes Section titled Fluid width classes Class Value Responsive? .w10 width: 10% .w20 width: 20% .w25 width: 25% .w30 width: 30% .w33 width: 33% .w40 width: 40% .w50 width: 50% .w60 width: 60% .w66 width: 66% .w70 width: 70% .w75 width: 75% .w80 width: 80% .w90 width: 90% .w100 width: 100% .w-screen width: 100vw; .w-auto width: auto; Fluid width examples Section titled Fluid width examples < div class = "w10" > … </ div > < div class = "w20" > … </ div > < div class = "w25" > … </ div > < div class = "w30" > … </ div > < div class = "w33" > … </ div > < div class = "w40" > … </ div > < div class = "w50" > … </ div > < div class = "w60" > … </ div > < div class = "w66" > … </ div > < div class = "w70" > … </ div > < div class = "w75" > … </ div > < div class = "w80" > … </ div > < div class = "w90" > … </ div > < div class = "w100" > … </ div > .w10 .w20 .w25 .w30 .w33 .w40 .w50 .w60 .w66 .w70 .w75 .w80 .w90 .w100 Min width Section titled Min width Min width classes allow you to set the minimum width of an element. Min width classes Section titled Min width classes Class Computed value rem value Responsive? .wmn0 min-width: 0; - .wmn1 min-width: 128px; 8rem .wmn2 min-width: 256px; 16rem .wmn3 min-width: 344px; 21.5rem .wmn4 min-width: 448px; 28rem .wmn5 min-width: 512px; 32rem .wmn6 min-width: 640px; 40rem .wmn7 min-width: 768px; 48rem .wmn8 min-width: 848px; 53rem .wmn9 min-width: 960px; 60rem .wmn10 min-width: 1024px; 64rem .wmn11 min-width: 1120px; 70rem .wmn12 min-width: 1280px; 80rem .wmn25 min-width: 25%; - .wmn50 min-width: 50%; - .wmn75 min-width: 75%; - .wmn100 min-width: 100%; - .wmn-screen min-width: 100vh; - .wmn-initial min-width: initial; - Max width Section titled Max width Max width classes allow you to set the maximum width of an element. Max width classes Section titled Max width classes Class Computed value rem value Responsive? .wmx1 max-width: 128px; 8rem .wmx2 max-width: 256px; 16rem .wmx3 max-width: 344px; 21.5rem .wmx4 max-width: 448px; 28rem .wmx5 max-width: 512px; 32rem .wmx6 max-width: 640px; 40rem .wmx7 max-width: 768px; 48rem .wmx8 max-width: 848px; 53rem .wmx9 max-width: 960px; 60rem .wmx10 max-width: 1024px; 64rem .wmx11 max-width: 1120px; 70rem .wmx12 max-width: 1280px; 80rem .wmx25 max-width: 25%; - .wmx50 max-width: 50%; - .wmx75 max-width: 75%; - .wmx100 max-width: 100%; - .wmx-screen max-width: 100vh; - .wmx-initial max-width: initial; - + +--- + +### Page: Z-Index +URL: https://stackoverflow.design/product/base/z-index/ +Date: 2026-03-24T21:30:16.519Z +Tags: base +description: Atomic z-index classes allow you to change an element’s z-index quickly. + +Content: +Classes Section titled Classes Class Output .z-hide z-index: -1; .z-base z-index: 0; .z-selected z-index: 25; .z-active z-index: 50; .z-dropdown z-index: 1000; .z-popover z-index: 2000; .z-tooltip z-index: 3000; .z-banner z-index: 4000; .z-nav z-index: 5000; .z-nav-fixed z-index: 5050; .z-modal-bg z-index: 8050; .z-modal z-index: 9000; Examples Section titled Examples < div class = "z-base" > … </ div > < div class = "z-hide" > … </ div > < div class = "z-selected" > … </ div > < div class = "z-active" > … </ div > < div class = "z-dropdown" > … </ div > < div class = "z-popover" > … </ div > < div class = "z-tooltip" > … </ div > < div class = "z-banner" > … </ div > < div class = "z-nav" > … </ div > < div class = "z-nav-fixed" > … </ div > < div class = "z-modal-bg" > … </ div > < div class = "z-modal" > … </ div > .z-hide .z-base .z-selected .z-active .z-dropdown .z-popover .z-tooltip .z-banner .z-nav .z-nav-fixed .z-modal-bg .z-modal + +--- + +## Collection: components + +### Page: Activity indicator +URL: https://stackoverflow.design/product/components/activity-indicator/ +Date: 2026-03-24T21:30:16.519Z +Tags: components +description: Stacks provides a small jewel for indicating new activity. + +Content: +Classes Section titled Classes Class Modifies Description .s-activity-indicator N/A Base activity indicator element with theme-aware coloring .s-activity-indicator__success .s-activity-indicator Styles the activity indicator in a success state .s-activity-indicator__warning .s-activity-indicator Styles the activity indicator in a warning state .s-activity-indicator__danger .s-activity-indicator Styles the activity indicator in a danger state .s-activity-indicator__sm .s-activity-indicator Styles the activity indicator in a small size Examples Section titled Examples Default Section titled Default By default, our indicator has no positioning attached to it. Depending on your context, you can modify the activity indicator’s positioning using any combination of atomic classes. Since our activity indicator has no inherent semantic meaning, make sure to include visually-hidden, screenreader-only text with the v-visible-sr class. < div class = "s-activity-indicator" > < div class = "v-visible-sr" > New activity </ div > </ div > < div class = "s-activity-indicator" > … < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-activity-indicator" > … < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-activity-indicator" > … < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-activity-indicator" > … </ div > < a href = "#" class = "s-link s-link__muted" > < div class = "s-avatar bg-red-400 ps-relative" > < div class = "s-avatar--indicator s-activity-indicator s-activity-indicator__sm" > < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-avatar--letter" > … </ div > @Svg.ShieldXSm.With("native s-avatar--badge") </ div > < span class = "pl4" > … </ span > </ a > < div class = "ps-relative" > @Svg.Notification < div class = "s-activity-indicator s-activity-indicator__sm ps-absolute tn4 rn4 ba baw2 bc-white box-content" > < div class = "v-visible-sr" > … </ div > </ div > </ div > < div class = "ps-relative" > @Svg.Notification < div class = "ps-absolute ba baw2 bc-white bar-pill lh-xs tn8 rn8" > < div class = "s-activity-indicator" > 3 < div class = "v-visible-sr" > … </ div > </ div > </ div > </ div > New activity 3 New activity 12 New activity 370 New activity new New activity New activity G Grayson New activity 3 … Variations Section titled Variations Stacks also provides alternative styling for success, warning, and danger states. < div class = "s-activity-indicator s-activity-indicator__success" > < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-activity-indicator s-activity-indicator__warning" > < div class = "v-visible-sr" > … </ div > </ div > < div class = "s-activity-indicator s-activity-indicator__danger" > < div class = "v-visible-sr" > … </ div > </ div > New activity 3 New activity 12 New activity 370 New activity new New activity New activity G Grayson New activity 3 New activities New activity 3 New activity 12 New activity 370 New activity new New activity New activity G Grayson New activity 3 New activities New activity 3 New activity 12 New activity 370 New activity new New activity New activity G Grayson New activity 3 New activities + +--- + +### Page: Avatars +URL: https://stackoverflow.design/product/components/avatars/ +Date: 2026-03-24T21:30:16.520Z +Tags: components +description: Avatars are used to quickly identify users or teams. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-avatar N/A N/A The base avatar at 16px. .s-avatar--image .s-avatar N/A A child element for displaying a user’s profile image. .s-avatar--letter .s-avatar N/A A child element for displaying an abbreviated Team name. .s-avatar--badge .s-avatar N/A A child element that provides positioning to the shield on Team avatars. .s-avatar--indicator .s-avatar N/A A child element that provides positioning to the activity indicator on user's avatars. .s-avatar__24 N/A .s-avatar Adds the proper border radius and scaling at 24px. .s-avatar__32 N/A .s-avatar Adds the proper border radius and scaling at 32px. .s-avatar__48 N/A .s-avatar Adds the proper border radius and scaling at 48px. .s-avatar__64 N/A .s-avatar Adds the proper border radius and scaling at 64px. .s-avatar__96 N/A .s-avatar Adds the proper border radius and scaling at 96px. .s-avatar__128 N/A .s-avatar Adds the proper border radius and scaling at 128px. Show all classes Examples Section titled Examples Users Section titled Users Including an image with the class s-avatar--image within s-avatar will apply the correct size. Remember, you’ll want to double the size of the avatar image to account for retina screens. < a href = "…" class = "s-avatar" > < img class = "s-avatar--image" src = "https://picsum.photos/32" /> </ a > < a href = "…" class = "s-avatar s-avatar__24" > < img class = "s-avatar--image" src = "https://picsum.photos/48" /> </ a > < a href = "…" class = "s-avatar s-avatar__32" > < img class = "s-avatar--image" src = "https://picsum.photos/64" /> </ a > < a href = "…" class = "s-avatar s-avatar__48" > < img class = "s-avatar--image" src = "https://picsum.photos/96" /> </ a > < a href = "…" class = "s-avatar s-avatar__64" > < img class = "s-avatar--image" src = "https://picsum.photos/128" /> </ a > < a href = "…" class = "s-avatar s-avatar__96" > < img class = "s-avatar--image" src = "https://picsum.photos/192" /> </ a > < a href = "…" class = "s-avatar s-avatar__128" > < img class = "s-avatar--image" src = "https://picsum.photos/256" /> </ a > 16px .s-avatar__16 24px .s-avatar__24 32px .s-avatar__32 48px .s-avatar__48 64px .s-avatar__64 96px .s-avatar__96 128px .s-avatar__128 Activity Section titled Activity Avatars can display activity indicators to show activities or status changes. Add the s-avatar--indicator class to a child element of s-avatar along with s-activity-indicator and s-activity-indicator__sm classes. The indicator is positioned at the top-right corner of the avatar. < a href = "…" class = "s-avatar" > < div class = "s-avatar--indicator s-activity-indicator s-activity-indicator__sm s-activity-indicator__success" > < div class = "v-visible-sr" > Online </ div > </ div > < img class = "s-avatar--image" src = "https://picsum.photos/32" /> </ a > < a href = "…" class = "s-avatar s-avatar__24" > < div class = "s-avatar--indicator s-activity-indicator s-activity-indicator__sm s-activity-indicator__success" > < div class = "v-visible-sr" > Online </ div > </ div > < img class = "s-avatar--image" src = "https://picsum.photos/48" /> </ a > 16px default Online 24px .s-avatar__24 Online Stack Internal Section titled Stack Internal When displaying a team’s identity, we badge the avatar with a shield. We fall back to the first letter of their name and a color we choose at random. As Stack Internal administrators add more data—choosing a color or uploading an avatar—we progressively enhance the avatar. In this example, from left to right, we have a team name of Hum with no avatar or custom color. In the middle we have a team name of Hum with a custom color. In the last example, we have a team name of Hum with a custom avatar applied. < a href = "…" class = "s-link s-link__muted" > < div class = "s-avatar" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > @Svg.ShieldXSm.With("native s-avatar--badge") </ div > < span class = "pl4" > Team name </ span > </ a > < a href = "…" class = "s-avatar s-avatar__24" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > < a href = "…" class = "s-avatar s-avatar__32" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > < a href = "…" class = "s-avatar s-avatar__48" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > < a href = "…" class = "s-avatar s-avatar__64" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > < a href = "…" class = "s-avatar s-avatar__96" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > < a href = "…" class = "s-avatar s-avatar__128" > < div class = "s-avatar--letter" aria-hidden = "true" > H </ div > < span class = "v-visible-sr" > Hum </ span > @Svg.ShieldXSm.With("native s-avatar--badge") </ a > 16px .s-avatar__16 H Hum H Hum Hum 24px .s-avatar__24 H Hum H Hum 32px .s-avatar__32 H Hum H Hum 48px .s-avatar__48 H Hum H Hum 64px .s-avatar__64 H Hum H Hum 96px .s-avatar__96 H Hum H Hum 128px .s-avatar__128 H Hum H Hum + +--- + +### Page: Badges +URL: https://stackoverflow.design/product/components/badges/ +Date: 2026-03-24T21:30:16.520Z +Tags: components +description: Badges are labels used for flags, earned achievements, and number totals. + +Content: +Classes Section titled Classes Class Modifies Description .s-badge N/A Base badge element. .s-badge__gold .s-badge Badge indicating a gold award. .s-badge__silver .s-badge Badge indicating a silver award. .s-badge__bronze .s-badge Badge indicating a bronze award. .s-badge__important .s-badge Applies important styling to the badge. .s-badge__squared .s-badge Applies a background color to the badge's icon. .s-badge__info .s-badge Badge indicating an info status. .s-badge__warning .s-badge Badge indicating a warning status. .s-badge__danger .s-badge Badge indicating a danger status. .s-badge__critical .s-badge Badge indicating a critical status. .s-badge__tonal .s-badge Badge indicating a tonal status. .s-badge__success .s-badge Badge indicating a success status. .s-badge__featured .s-badge Badge indicating a featured status. .s-badge__sm .s-badge Applies a small size to the badge. .s-badge__lg .s-badge Applies a large size to the badge. Show all classes Styles Section titled Styles Default Section titled Default < span class = "s-badge" > default </ span > default General Section titled General A general-purpose badge used for functional information and system-level status updates. < span class = "s-badge" > < span class = "s-bling s-bling__filled" > < span class = "v-visible-sr" > Badge </ span > </ span > general </ span > Badge general Reputation Section titled Reputation A reputation badge to display a user’s total rep count. < span class = "s-badge" > < span class = "s-bling s-bling__filled s-bling__rep" > < span class = "v-visible-sr" > Rep badge </ span > </ span > 99 rep </ span > Rep badge 99 rep Activity Section titled Activity An activity badge to signal real-time events and draw attention. < span class = "s-badge" > < span class = "s-bling s-bling__filled s-bling__activity" > < span class = "v-visible-sr" > Activity badge </ span > </ span > new message </ span > Activity badge new message Achievement Section titled Achievement Badges that provides information about user achievements. < span class = "s-badge" > < span class = "s-bling s-bling__filled s-bling__gold" > < span class = "v-visible-sr" > Gold badge </ span > </ span > Great Question </ span > < span class = "s-badge" > < span class = "s-bling s-bling__filled s-bling__silver" > < span class = "v-visible-sr" > Silver badge </ span > </ span > Favorite Question </ span > < span class = "s-badge" > < span class = "s-bling s-bling__filled s-bling__bronze" > < span class = "v-visible-sr" > Bronze badge </ span > </ span > Altruist </ span > Example Description gold badge Great Question Gold badge achievement that a user earns within a community. silver badge Favorite Question Silver badge achievement that a user earns within a community. bronze badge Altruist Bronze badge achievement that a user earns within a community. Tag Section titled Tag Badges that display achievements a user has earned for their contributions within a specific topic/tag. < span class = "s-badge s-badge__gold" > < span class = "s-bling s-bling__gold" > < span class = "v-visible-sr" > Gold tag badge </ span > </ span > python </ span > < span class = "s-badge s-badge__silver" > < span class = "s-bling s-bling__silver" > < span class = "v-visible-sr" > Silver tag badge </ span > </ span > css </ span > < span class = "s-badge s-badge__bronze" > < span class = "s-bling s-bling__bronze" > < span class = "v-visible-sr" > Bronze tag badge </ span > </ span > javascript </ span > Example Modifier class Description gold tag badge python .s-badge__gold Gold badge achievement that a user earns for a specific tag within a community. silver tag badge css .s-badge__silver Silver badge achievement that a user earns for a specific tag within a community. bronze tag badge javascript .s-badge__bronze Bronze badge achievement that a user earns for a specific tag within a community. States Section titled States Use State badges to communicate semantic status or severity, such as success, warning, or danger. These variants apply specific system colors to convey meaning and can be configured with or without icons. Note: Avoid using icons in the small variant unless a dedicated small icon size is available. < span class = "s-badge" > @Svg.Document Archived </ span > < span class = "s-badge s-badge__info" > @Svg.Compose Draft </ span > < span class = "s-badge s-badge__warning" > @Svg.Eye Review </ span > < span class = "s-badge s-badge__danger" > @Svg.Flag Closed </ span > < span class = "s-badge s-badge__critical" > @Svg.Challenge Deleted </ span > < span class = "s-badge s-badge__tonal" > @Svg.Key Pinned </ span > < span class = "s-badge s-badge__success" > @Svg.Check Success </ span > < span class = "s-badge s-badge__featured" > @Svg.Star New </ span > Example Modifier class Description Archived Archived N/A Neutral badge styling. Can be used to indicate an inactive state that requires minimal visual emphasis. Draft Draft .s-badge__info Info badge styling. Review Review .s-badge__warning Warning badge styling. Closed Closed .s-badge__danger Danger badge styling. Deleted Deleted .s-badge__critical Critical badge styling. Pinned Pinned .s-badge__tonal Tonal badge styling. Success Success .s-badge__success Success badge styling. New New .s-badge__featured Featured badge styling. Can be used to draw attention to the new features and changes Squared Section titled Squared Use the squared variant sparingly to provide additional emphasis, reserving it primarily for states related to gamification or achievements. < span class = "s-badge s-badge__squared s-badge__success" > @Svg.Check Accepted answer </ span > < span class = "s-badge s-badge__squared s-badge__featured" > @Svg.VoteUp Earn badge </ span > Example Modifier classes Description Accepted answer .s-badge__squared .s-badge__success Success badge styling in squared variant. Earn badge .s-badge__squared .s-badge__featured Featured badge styling in squared variant. Important Section titled Important Emboldens the above visual styles by strengthening the background saturation. This should be used for time-sensitive, pressing information that needs to be noticed by the user. < span class = "s-badge s-badge__warning s-badge__squared s-badge__important" > @Svg.Notification Needs attention </ span > < span class = "s-badge s-badge__danger s-badge__important" > @Svg.VoteUp Ending soon </ span > < span class = "s-badge s-badge__critical s-badge__important" > Spam </ span > < span class = "s-badge s-badge__info s-badge__sm s-badge__important" > +100 </ span > Example Modifier classes Description Needs attention .s-badge__squared .s-badge__warning .s-badge__important Warning badge styling in squared variant with important styling. Ending soon .s-badge__danger .s-badge__important Danger badge styling with important styling. Spam .s-badge__critical .s-badge__important Critical badge styling with important styling. +100 .s-badge__info .s-badge__important Info badge styling in small size with important styling. User Section titled User < span class = "s-badge s-badge__admin" > Admin </ span > < span class = "s-badge s-badge__moderator" > Moderator </ span > < span class = "s-badge s-badge__staff" > Staff </ span > < span class = "s-badge s-badge__bot" > Bot </ span > < span class = "s-badge s-badge__ai" > AI </ span > < span class = "s-badge s-badge__new" > New </ span > Examples Class Description Admin .s-badge__admin Badge indicating user is an admin. Moderator .s-badge__moderator Badge indicating user is an moderator. Staff .s-badge__staff Badge indicating user is staff. AI .s-badge__ai Badge indicating content is AI generated. Bot .s-badge__bot Badge indicating user is a bot. New .s-badge__new Badge indicating new user Sizes Section titled Sizes Badges come in three sizes. < span class = "s-badge s-badge__sm" > Small </ span > < span class = "s-badge" > Default </ span > < span class = "s-badge s-badge__lg" > Large </ span > Examples Modifier class Description Small .s-badge__sm The badge in small size. Default .s-badge__ The badge in default size. Large .s-badge__lg The badge in large size. + +--- + +### Page: Banners +URL: https://stackoverflow.design/product/components/banners/ +Date: 2026-03-24T21:30:16.520Z +Tags: components +description: Banners are full-width notices used for system and engagement messaging. They are highly intrusive and should be used only when essential information needs to be conveyed to the user. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-banner N/A N/A Base banner parent class. This defaults to a system banner style. .s-banner--actions .s-banner N/A Container styling for banner actions including the dismiss button. .s-banner--dismiss .s-banner N/A Applies to child button element within the banner to position it appropriately. .s-banner__important N/A .s-banner Applies an important visual style. This should be used for time-sensitive, pressing information that needs to be noticed by the user. .s-banner__info N/A .s-banner Applies info (blue) visual styles. .s-banner__success N/A .s-banner Applies success (green) visual styles. .s-banner__warning N/A .s-banner Applies warning (yellow) visual styles. .s-banner__danger N/A .s-banner Applies danger (red) visual styles. .s-banner__featured N/A .s-banner Applies featured (purple) visual styles. .s-banner__activity N/A .s-banner Applies activity (pink) visual styles. .is-pinned N/A .s-banner Pins the banner to the top of the browser window. Show all classes Usage guidelines Section titled Usage guidelines System banners are used for system messaging. They are full-width notices placed in one of two locations: Pinned: If the system banner is related to the entire website (e.g. the website is in read-only), above all other content including the topbar. To pin a system banner to the top of the browser window, add .is-pinned . Below the top navigation bar: This is the default location for all system banners. Use these banners when it affects only a particular area of the product (e.g. when a product subscription is about to expire). Refer to the Classes section for more information on how to apply the correct styles to the banner. Examples Section titled Examples Style Base Info Success Warning Danger Featured Activity Important? Pinned? Show example Remove example Base Section titled Base < div class = "s-banner" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Info Section titled Info < div class = "s-banner s-banner__info" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__info s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Success Section titled Success < div class = "s-banner s-banner__success" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__success s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Warning Section titled Warning < div class = "s-banner s-banner__warning" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__warning s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Danger Section titled Danger < div class = "s-banner s-banner__danger" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__danger s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Featured Section titled Featured < div class = "s-banner s-banner__featured" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__featured s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. Activity Section titled Activity < div class = "s-banner s-banner__activity" role = "alert" aria-hidden = "false" > … </ div > < div class = "s-banner s-banner__activity s-banner__important" role = "alert" aria-hidden = "false" > … </ div > Stacks is currently frozen in read-only mode. Contact the team to restore access. Stacks is currently frozen in read-only mode. Contact the team to restore access. JavaScript Section titled JavaScript The .s-banner component includes a controller to show and hide the banner programitically. While it is optional, at least including the functionality to close the banner is recommended. Example Section titled Example < div role = "alert" id = "example-banner" class = "s-banner" aria-labelledby = "example-message" aria-hidden = "true" data-controller = "s-banner" data-s-banner-target = "banner" > Example banner </ div > … < button data-toggle = "s-banner" data-target = "#example-banner" > Show banner </ button > document . querySelector ( ".js-banner-toggle" ). addEventListener ( "click" , function ( e ) { Stacks . showBanner ( document . querySelector ( "#example-banner" )); }); Attributes Section titled Attributes Attribute Applies to Description data-controller="s-banner" Controller element Wires up the element to the banner controller. This may be a .s-banner element or a wrapper element. data-s-banner-target="banner" .s-banner element Wires up the element that is to be shown/hidden data-s-banner-remove-when-hidden="true" Controller element (optional) Removes the banner from the DOM entirely when it is hidden Events Section titled Events Event Applies to Description s-banner:show Banner target Fires immediately before showing the banner. Calling .preventDefault() cancels the display of the banner. s-banner:shown Banner target Fires after the banner has been visually shown s-banner:hide Banner target Fires immediately before hiding the banner. Calling .preventDefault() cancels the removal of the banner. s-banner:hidden Banner target Fires after the banner has been visually hidden Event details Section titled Event details event.detail Applicable events Description dispatcher N/A Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the banner that caused it to hide, etc. Helpers Section titled Helpers Function Parameters Description Stacks.showBanner Element : the element the data-controller="s-banner" attribute is on Helper to manually show an s-banner element via external JS Stacks.hideBanner Element : the element the data-controller="s-banner" attribute is on Helper to manually hide an s-banner element via external JS Stacks is currently frozen in read-only mode. Contact the team to restore access. + +--- + +### Page: Bling +URL: https://stackoverflow.design/product/components/bling/ +Date: 2026-03-24T21:30:16.520Z +Tags: components +description: Bling is used to indicate award type in badges and user cards. + +Content: +Classes Section titled Classes Class Modifies Description .s-bling N/A Base bling element. .s-bling__gold .s-bling Gold bling element. .s-bling__silver .s-bling Silver bling element. .s-bling__bronze .s-bling Bronze bling element. .s-bling__activity .s-bling Activity bling element. .s-bling__filled .s-bling Filled bling element. .s-bling__rep .s-bling Reputation bling element. .s-bling__sm .s-bling Small bling element. .s-bling__lg .s-bling Large bling element. Show all classes Types Section titled Types Use the clear bling variant only when its associated color is already present in the component, such as within a colored tag badge or alongside a filled element. < span class = "s-bling" > < span class = "v-visible-sr" > … </ span > </ span > < span class = "s-bling s-bling__gold" > < span class = "v-visible-sr" > … </ span > </ span > < span class = "s-bling s-bling__silver" > < span class = "v-visible-sr" > … </ span > </ span > < span class = "s-bling s-bling__bronze" > < span class = "v-visible-sr" > … </ span > </ span > Example Class Description default bling .s-bling A general bling shape used for reputation, notifications or other. gold bling .s-bling .s-bling__gold The "gold" award bling shape. silver bling .s-bling .s-bling__silver The "silver" award bling shape. bronze bling .s-bling .s-bling__bronze The "bronze" award bling shape. Filled Section titled Filled Use the filled bling style to represent a specific achievement badge or to display the total count of badges a user has earned. < span class = "s-bling s-bling__filled" > … </ span > < span class = "s-bling s-bling__filled s-bling__rep" > … </ span > < span class = "s-bling s-bling__filled s-bling__activity" > … </ span > < span class = "s-bling s-bling__filled s-bling__gold" > … </ span > < span class = "s-bling s-bling__filled s-bling__silver" > … </ span > < span class = "s-bling s-bling__filled s-bling__bronze" > … </ span > Example Class Description default bling .s-bling .s-bling__filled A general bling used for information, status, labels or other. rep bling .s-bling .s-bling__filled .s-bling__rep A “rep” bling used for general reputation points. activity bling .s-bling .s-bling__filled .s-bling__activity An activity bling to signal real-time events and draw attention. gold bling .s-bling .s-bling__filled .s-bling__gold A "gold" award bling. silver bling .s-bling .s-bling__filled .s-bling__silver A "silver" award bling. bronze bling .s-bling .s-bling__filled .s-bling__bronze A "bronze" award bling. Sizes Section titled Sizes A bling component has a default size. To change the bling’s size, apply one of the following sizing classes along with the base .s-bling class. < span class = "s-bling s-bling__filled s-bling__sm" > … </ span > < span class = "s-bling s-bling__filled" > … </ span > < span class = "s-bling s-bling__filled s-bling__lg" > … </ span > Example Class Description sm bling .s-bling .s-bling__sm A “sm” bling. default bling .s-bling A “default” bling. lg bling .s-bling .s-bling__lg A “lg” bling. + +--- + +### Page: Buttons +URL: https://stackoverflow.design/product/components/buttons/ +Date: 2026-03-24T21:30:16.521Z +Tags: components +description: Buttons are user interface elements which allows users to take actions throughout the project. It is important that they have ample click space and help communicate the importance of their actions. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-btn N/A N/A Base button element .s-btn--badge .s-btn N/A Badge container for the button .s-btn__clear N/A .s-btn Clear button variant .s-btn__danger N/A .s-btn Danger button variant .s-btn__featured N/A .s-btn Featured button variant .s-btn__tonal N/A .s-btn Tonal button variant .s-btn__dropdown N/A .s-btn Dropdown button variant .s-btn__icon N/A .s-btn Icon button variant .s-btn__link N/A .s-btn Link button variant .s-btn__unset N/A .s-btn Unset button variant .s-btn__facebook N/A .s-btn Facebook button variant .s-btn__github N/A .s-btn GitHub button variant .s-btn__google N/A .s-btn Google button variant .s-btn__xs N/A .s-btn Extra small button variant .s-btn__sm N/A .s-btn Small button variant .s-btn__lg N/A .s-btn Large button variant Show all classes Styles Section titled Styles Stacks provides 3 different button styles: Base Danger Featured Tonal Each style is explained below, detailing how and where to use these styles. Base Section titled Base Base buttons can gain clear styling with the .s-btn__clear class. < button class = "s-btn" type = "button" > … </ button > < button class = "s-btn s-btn__clear" type = "button" > … </ button > Type Class Default State Selected State Disabled State Base .s-btn Ask question Ask question Ask question Clear .s-btn .s-btn__clear Ask question Ask question Ask question Danger Section titled Danger Danger buttons are a secondary button style, used to visually communicate destructive actions such as deleting content, accounts, or canceling services. < button class = "s-btn s-btn__danger" type = "button" > … </ button > < button class = "s-btn s-btn__danger s-btn__clear" type = "button" > … </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-btn__danger Ask question Ask question Ask question Clear .s-btn .s-btn__danger .s-btn__clear Ask question Ask question Ask question Featured Section titled Featured Featured buttons are a secondary button style, used to visually draw attention to something new or temporary, usually as part of onboarding or to announce a new feature. These should be used sparingly, and permanent placements should be avoided. < button class = "s-btn s-btn__featured" type = "button" > … </ button > < button class = "s-btn s-btn__featured s-btn__clear" type = "button" > … </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-btn__featured Ask question Ask question Ask question Tonal Section titled Tonal Tonal buttons are a secondary button style, a grayscale visual treatment. Used in layouts for the least important items or currently inactive actions. < button class = "s-btn s-btn__tonal" type = "button" > … </ button > < button class = "s-btn s-btn__clear s-btn__tonal" type = "button" > … </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-btn__tonal Ask question Ask question Ask question Anchors Section titled Anchors Anchors can be rendered with the .s-btn to adopt a button-like visual style for a link. < a href = "#" class = "s-btn" > Ask question </ a > Type Class Default State Selected State Disabled State Base .s-btn Ask question Ask question Ask question Base, Clear .s-btn .s-btn__clear Ask question Ask question Ask question Tonal .s-btn .s-btn__tonal Ask question Ask question Ask question Danger .s-btn .s-btn__danger Ask question Ask question Ask question Danger, Clear .s-btn .s-btn__danger .s-btn__clear Ask question Ask question Ask question Featured .s-btn .s-btn__featured Ask question Ask question Ask question Loading Section titled Loading Indicate a loading state by adding a .s-loader component to a button. < button class = "s-btn" type = "button" > < div class = "s-loader s-loader__sm" > < div class = "s-loader--sr-text" > Loading… </ div > </ div > Ask question </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Base, Clear .s-btn .s-btn__clear .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Tonal .s-btn .s-btn__tonal .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Danger .s-btn .s-btn__danger .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Danger, Clear .s-btn .s-btn__danger .s-btn__clear .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Featured .s-btn .s-btn__featured .s-loader s-loader__sm Loading… Ask question Loading… Ask question Loading… Ask question Dropdowns Section titled Dropdowns Adding the class .s-btn__dropdown to any button style will add an appropriately-styled caret. These should be paired with a menu or popover. < button class = "s-btn s-btn__dropdown" type = "button" > Dropdown </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-btn__dropdown Ask question Ask question Ask question Base, Clear .s-btn .s-btn__clear .s-btn__dropdown Ask question Ask question Ask question Tonal .s-btn .s-btn__tonal .s-btn__dropdown Ask question Ask question Ask question Danger .s-btn .s-btn__danger .s-btn__dropdown Ask question Ask question Ask question Danger, Clear .s-btn .s-btn__danger .s-btn__clear .s-btn__dropdown Ask question Ask question Ask question Featured .s-btn .s-btn__featured .s-btn__dropdown Ask question Ask question Ask question Badges Section titled Badges Adding an .s-btn--badge to any button will add an appropriately-styled badge. < button class = "s-btn" type = "button" > Badge < span class = "s-btn--badge" > < span class = "s-btn--number" > 198 </ span > </ span > </ button > Type Class Default State Selected State Disabled State Base .s-btn .s-btn--badge Badge 198 Badge 198 Badge 198 Base, Clear .s-btn .s-btn__clear .s-btn--badge Badge 198 Badge 198 Badge 198 Tonal .s-btn .s-btn__tonal .s-btn--badge Badge 198 Badge 198 Badge 198 Danger .s-btn .s-btn__danger .s-btn--badge Badge 198 Badge 198 Badge 198 Danger, Clear .s-btn .s-btn__danger .s-btn__clear .s-btn--badge Badge 198 Badge 198 Badge 198 Featured .s-btn .s-btn__featured .s-btn--badge Badge 198 Badge 198 Badge 198 Sizes Section titled Sizes A button’s default font-size is determined by the @body-fs variable. To change the button’s font-size, use the following classes with .s-btn : Note: Avoid using icons within the extra small button size. This variant is designed for tight spaces, and standard icons are too large to fit without breaking the button's height and layout. Type Class Size Example Extra Small s-btn__xs 12px Ask question Small s-btn__sm 13px Ask question Default N/A 14px Ask question Large s-btn__lg 17px Ask question Toggle buttons Section titled Toggle buttons Each button class has a selected state which can be visually activated by applying the .is-selected class. When a button can switch between selected and unselected states, it is important to also annotate the button with the aria-pressed attribute for accessibility. A title attribute may also be appropriate to describe what will happen when pressing the button. < button class = "s-btn" type = "button" aria-pressed = "false" title = "…" > … </ button > < button class = "s-btn is-selected" type = "button" aria-pressed = "true" title = "…" > … </ button > < script > toggleButton. addEventListener ( 'click' , () => { let wasSelected = toggleButton. getAttribute ( 'aria-pressed' ) === 'true' ; let isSelected = !wasSelected; toggleButton. classList . toggle ( 'is-selected' , isSelected); toggleButton. setAttribute ( 'aria-pressed' , isSelected. toString ()); … }); </ script > Initially unselected toggle button Initially selected toggle button Additional styles Section titled Additional styles Stacks provides additional classes for cases that are a bit more rare. Disabled Section titled Disabled Type Attribute Definition Example Disabled [aria-disabled="true"] Adds disabled styling to any element with .s-btn applied. Ask question Resets Section titled Resets Type Class Definition Example Unset .s-btn__unset Removes all styling from a button and reverts focus states to browser default. Unset button Link .s-btn__link Styles a button element as though it were a link. Instead of transforming an s-btn to a link, you most likely want to style a button as a link . Link button Icons Section titled Icons Type Class Definition Examples Icon .s-btn__icon Adds some margin overrides that apply to an icon within a button Delete up Social Section titled Social Type Class Definition Examples Facebook .s-btn__facebook Styles a button consistent with Facebook’s branding Facebook Google .s-btn__google Styles a button consistent with Google’s branding Google GitHub .s-btn__github Styles a button consistent with GitHub’s branding GitHub Ordering Section titled Ordering To maintain product consistency, buttons should maintain the following layout ordering: Within a row Section titled Within a row Most button groups should be ordered from the most important to the least important action, left to right.... + +--- + +### Page: Checkbox +URL: https://stackoverflow.design/product/components/checkbox/ +Date: 2026-03-24T21:30:16.522Z +Tags: components +description: Checkable inputs that visually allow for multiple options or true/false values. + +Content: +Classes Section titled Classes Class Modifies Description .s-checkbox N/A Base checkbox style. .s-checkbox__checkmark .s-checkbox Checkmark style. Base Section titled Base Use the .s-checkbox to wrap input[type="checkbox"] elements to apply checkbox styles. < div class = "s-checkbox" > < input type = "checkbox" name = "example-name" id = "example-item" /> < label class = "s-label" for = "example-item" > Check Label </ label > </ div > Example Description Checkbox label Unchecked checkbox. Checkbox label Disabled unchecked checkbox. Checkbox label Checked checkbox. Checkbox label Disabled checked checkbox. Checkmark Section titled Checkmark The checkmark style is an alternative to the base checkbox style. To use the checkmark style, wrap your input and label in a container with the .s-checkbox__checkmark class. < label class = "s-checkbox s-checkbox__checkmark" for = "example-item" > Checkmark Label < input type = "checkbox" name = "example-name" id = "example-item" /> </ label > Example Class Description Checkmark label .s-checkbox__checkmark Unchecked checkmark with a checkbox element. Checkmark label .s-checkbox__checkmark Disabled unchecked checkmark with a checkbox element. Checkmark label .s-checkbox__checkmark Checked checkmark with a checkbox element. Checkmark label .s-checkbox__checkmark Disabled checked checkmark with a checkbox element. Accessibility Section titled Accessibility The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to checkboxes, there are a few things to keep in mind: All inputs should have an id attribute. Be sure to associate the checkbox label by using the for attribute. The value here is the input's id . If you have a group of related checkboxes, use the fieldset and legend to group them together. For more information, please read Gov.UK's article, "Using the fieldset and legend elements" . Checkbox group Section titled Checkbox group Vertical group Section titled Vertical group < fieldset class = "s-form-group" > < legend class = "s-label" > … </ legend > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "vert-checkbox-1" /> < label class = "s-label" for = "vert-checkbox-1" > … </ label > </ div > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "vert-checkbox-2" /> < label class = "s-label" for = "vert-checkbox-2" > … </ label > </ div > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "vert-checkbox-3" /> < label class = "s-label" for = "vert-checkbox-3" > … </ label > </ div > </ fieldset > Which types of fruit do you like? (Check all that apply) Apples Oranges Bananas Horizontal group Section titled Horizontal group < fieldset class = "s-form-group s-form-group__horizontal" > < legend class = "s-label" > … </ legend > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "hori-checkbox-1" /> < label class = "s-label" for = "hori-checkbox-1" > … </ label > </ div > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "hori-checkbox-2" /> < label class = "s-label" for = "hori-checkbox-2" > … </ label > </ div > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "hori-checkbox-3" /> < label class = "s-label" for = "hori-checkbox-3" > … </ label > </ div > </ fieldset > Which types of fruit do you like? (Check all that apply) Apples Oranges Bananas With description copy Section titled With description copy < fieldset class = "s-form-group" > < legend class = "s-label" > … </ legend > < div class = "s-checkbox" > < input type = "checkbox" name = "…" id = "desc-checkbox-1" /> < label class = "s-label" for = "desc-checkbox-1" > … < p class = "s-description" > … </ p > </ label > </ div > … </ fieldset > Which types of fruit do you like? (Check all that apply) Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. Validation states Section titled Validation states Checkboxes use the same validation states as inputs . Validation classes Section titled Validation classes Class Applies to Description .has-warning Parent element Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding. .has-error Parent element Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding. .has-success Parent element Used to notify users that the value they’ve entered is fine or has been submitted successfully. Validation examples Section titled Validation examples <!-- Checkbox w/ warning --> < div class = "s-checkbox has-warning" > < input type = "checkbox" name = "…" id = "warn-checkbox-1" /> < label class = "s-label" for = "warn-checkbox-1" > … < p class = "s-description" > … </ p > </ label > </ div > Which types of fruit do you like? (Check all that apply) Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. Indeterminate state Section titled Indeterminate state Checkboxes can be styled by using the :indeterminate pseudo class. Note: The :indeterminate pseudo class can only be set via JavaScript. Use the HTMLInputElement object's indeterminate property to set the state. < fieldset class = "s-form-group" > < div class = "s-checkbox" > < input type = "checkbox" name = "" id = "indeterminate-checkbox-1" /> < label class = "s-label" for = "indeterminate-checkbox-1" > Select all </ label > </ div > </ fieldset > < script > document . getElementById ( "indeterminate-checkbox-1" ). indeterminate = true ; </ script > Select all + +--- + +### Page: Code block +URL: https://stackoverflow.design/product/components/code-blocks/ +Date: 2026-03-24T21:30:16.522Z +Tags: components +description: Stacks provides styling for code blocks with syntax highlighting provided by highlight.js. Special care was taken to make sure our light and dark themes felt like Stack Overflow while maintaining near AAA color contrasts and still being distinguishable for those with a color vision deficiency. + +Content: +Classes Section titled Classes Class Modifies Description .s-code-block N/A Base code block style. .linenums .s-code-block Adds a line numbers column to the code block. .linenums:<n> .s-code-block Adds a line numbers column to the code block starting at a number <n> . Language examples Section titled Language examples The following examples are a small subset of the languages that highlight.js supports. HTML Section titled HTML < pre class = "s-code-block language-html" > … </ pre > < form class = "d-flex gy4 fd-column" > < label class = "s-label" for = "question-title" > Question title </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-title" placeholder = "e.g. Why doesn’t Stack Overflow use a custom web font?" /> </ div > </ form > JavaScript Section titled JavaScript < pre class = "s-code-block language-javascript" > … </ pre > import React , { Component } from 'react' import { IP } from '../constants/IP' import { withAuth0 } from '@auth0/auth0-react' ; class AddATournament extends Component { componentDidMount ( ) { this . myNewListOfAllTournamentsWithAuth () } } export default withAuth0 ( AddATournament ); CSS Section titled CSS < pre class = "s-code-block language-css" > … </ pre > .s-input , .s-textarea { -webkit- appearance : none; width : 100% ; margin : 0 ; padding : 0.6em 0.7em ; border : 1px solid var (--bc-darker); border-radius : 3px ; background-color : var (--white); color : var (--fc-dark); font-size : 13px ; font-family : inherit; line-height : 1.15384615 ; scrollbar-color : var (--scrollbar) transparent; } @supports ( -webkit-overflow-scrolling : touch) { .s-input , .s-textarea { font-size : 16px ; padding : 0.36em 0.55em ; } .s-input ::-webkit-input-placeholder, .s-textarea::-webkit-input-placeholder { line-height : normal !important ; } } Java Section titled Java < pre class = "s-code-block language-java" > … </ pre > package l2f.gameserver.model; public abstract strictfp class L2Char extends L2Object { public static final Short ERROR = 0x0001 ; public void moveTo ( int x, int y, int z) { _ai = null ; log( "Should not be called" ); if ( 1 > 5 ) { // what? return ; } } } Ruby Section titled Ruby < pre class = "s-code-block language-ruby" > … </ pre > # The Greeter class class Greeter def initialize ( name ) @name = name.capitalize end def salute puts "Hello #{ @name } !" end end g = Greeter .new( "world" ) g.salute Python Section titled Python < pre class = "s-code-block language-python" > … </ pre > def all_indices ( value, qlist ): indices = [] idx = - 1 while True : try : idx = qlist.index(value, idx+ 1 ) indices.append(idx) except ValueError: break return indices all_indices( "foo" , [ "foo" , "bar" , "baz" , "foo" ]) Objective-C Section titled Objective-C < pre class = "s-code-block language-objectivec" > … </ pre > #import <UIKit/UIKit.h> #import "Dependency.h" @protocol WorldDataSource @optional - ( NSString *)worldName; @required - ( BOOL )allowsToLive; @end @property ( nonatomic , readonly ) NSString *title; - ( IBAction ) show; @end - ( UITextField *) userName { UITextField *retval = nil ; @synchronized ( self ) { retval = [[userName retain ] autorelease]; } return retval; } - ( void ) setUserName:( UITextField *)userName_ { @synchronized ( self ) { [userName_ retain ]; [userName release]; userName = userName_; } } Swift Section titled Swift < pre class = "s-code-block language-swift" > … </ pre > import Foundation @objc class Person : Entity { var name: String ! var age: Int ! init ( name : String , age : Int ) { /* /* ... */ */ } // Return a descriptive string for this person func description ( offset : Int = 0 ) -> String { return " \(name) is \(age + offset) years old" } } Less Section titled Less < pre class = "s-code-block language-less" > … </ pre > @import "fruits" ; @rhythm: 1.5em ; @media screen and ( min-resolution : 2dppx ) { body { font-size : 125% } } section > .foo + #bar :hover [href*= "less" ] { margin : @rhythm 0 0 @rhythm ; padding : calc ( 5% + 20px ); background : #f00ba7 url( http://placehold.alpha-centauri/42.png ) no-repeat; background-image : linear-gradient (- 135deg , wheat, fuchsia) !important ; background-blend-mode : multiply; } @font-face { font-family : /* ? */ 'Omega' ; src : url( '../fonts/omega-webfont.woff?v=2.0.2' ); } .icon-baz ::before { display : inline-block; font-family : "Omega" , Alpha, sans-serif; content : "\f085" ; color : rgba ( 98 , 76 /* or 54 */ , 231 , . 75 ); } Json Section titled Json < pre class = "s-code-block language-json" > … </ pre > [ { "title" : "apples" , "count" : [ 12000 , 20000 ] , "description" : { "text" : "..." , "sensitive" : false } } , { "title" : "oranges" , "count" : [ 17500 , null ] , "description" : { "text" : "..." , "sensitive" : false } } ] C Sharp Section titled C Sharp < pre class = "s-code-block language-csharp" > … </ pre > using System.IO.Compression; # pragma warning disable 414, 3021 namespace MyApplication { [ Obsolete( "..." ) ] class Program : IInterface { public static List < int > JustDoIt ( int count ) { Console.WriteLine( $"Hello {Name} !" ); return new List< int >( new int [] { 1 , 2 , 3 }) } } } SQL Section titled SQL < pre class = "s-code-block language-sql" > … </ pre > CREATE TABLE "topic" ( "id" serial NOT NULL PRIMARY KEY , "forum_id" integer NOT NULL , "subject" varchar ( 255 ) NOT NULL ); ALTER TABLE "topic" ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id") REFERENCES "forum" ("id"); -- Initials insert into "topic" ("forum_id", "subject") values ( 2 , 'D''artagnian' ); Diff Section titled Diff < pre class = "s-code-block language-diff" > … </ pre > Index: languages/ini.js =================================================================== languages/ini.js (revision 199) +++ languages/ini.js (revision 200) @@ -1,8 +1,7 @@ hljs.LANGUAGES.ini = { case_insensitive: true, - defaultMode: - { + defaultMode: { contains: ['comment', 'title', 'setting'], illegal: '[^\\s]' }, *** /path/to/original timestamp /path/to/new timestamp *************** *** 1,3 **** 1,9 - + This is an important + notice! It should + therefore be located at + the beginning of this + document! ! compress the size of the ! changes. It is important to spell Line numbers Section titled Line numbers Add .linenums to include line numbers on a code block. Default Section titled Default < pre class = "s-code-block language-html linenums" > … </ pre > 1 2 3 4 5 6 < form class = "d-flex g4 fd-column" > < label class = "s-label" for = "full-name" > Name </ label > < div class = "d-flex" > < input class = "s-input" type = "text" id = "full-name" /> </ div > </ form > Offset Section titled Offset Append a number preceeded by : to .linenums to offset the start of the line numbers. < pre class = "s-code-block language-json linenums:23" > … </ pre > 23 24 25 26 27 28 29 30 31 32 33 34 [ { "title" : "apples" , "count" : [ 12000 , 20000 ] , "description" : { "text" : "..." , "sensitive" : false } } , { "title" : "oranges" , "count" : [ 17500 , null ] , "description" : { "text" : "..." , "sensitive" : false } } ] + +--- + +### Page: Editor +URL: https://stackoverflow.design/product/components/editor/ +Date: 2026-03-24T21:30:16.522Z +Tags: components +description: The Stacks editor adds “what you see is what you get” and Markdown capabilities to textareas. It is available as a separate Editor repository, but requires Stacks’ CSS for styling. + +Content: +Installation Section titled Installation Because of its size, the Stacks editor is bundled independently of Stacks. You can install it a few ways: NPM Section titled NPM The Stacks Editor is available as an NPM package. To make it available in your node modules, npm install @stackoverflow/stacks-editor Import via Modules or CommonJS Section titled Import via Modules or CommonJS import { StacksEditor } from "@stackoverflow/stacks-editor" ; // Don’t forget to include the styles as well import "@stackoverflow/stacks-editor/styles.css" ; new StacksEditor ( document . querySelector ( "#editor-container" ), "*Your* **markdown** here" ); Import via script tag Section titled Import via script tag <!-- Include the bundled styles --> < link rel = "stylesheet" src = "path/to/node_modules/@stackoverflow/stacks-editor/dist/styles.css" /> < div id = "editor-container" > </ div > <!-- highlight.js is not included in the bundle, so include it as well if you want it --> < script src = "//unpkg.com/@highlightjs/cdn-assets@latest/highlight.min.js" > </ script > <!-- Include the bundle --> < script src = "path/to/node_modules/@stackoverflow/stacks-editor/dist/app.bundle.js" > </ script > <!-- Initialize the editor --> < script > new window . stacksEditor . StacksEditor ( document . querySelector ( "#editor-container" ), "*Your* **markdown** here" , {} ); </ script > Configuration Section titled Configuration There are several options you can pass to the Stacks Editor. --> Examples Section titled Examples Empty Section titled Empty < div id = "editor-example-1" > </ div > < script > new window . stacksEditor . StacksEditor ( document . querySelector ( "#editor-example-1" ), "" , {} ); </ script > Textarea content with tables enabled Section titled Textarea content with tables enabled < textarea id = "editor-content-2" class = "d-none" > … </ textarea > < div id = "editor-example-2" > </ div > < script > new window . stacksEditor . StacksEditor ( document . querySelector ( "#editor-example-2" ), document . querySelector ( "#editor-content-2" ). value , { parserFeatures : { tables : true , }, } ); </ script > Stacks adds a new `s-prose` class that you can slap on any block of vanilla HTML content and turn it into a beautiful, well-formatted document: ```html Garlic bread with cheese: What the science tells us For years parents have espoused the health benefits of eating garlic bread with cheese to their children, with the food earning such an iconic status in our culture that kids will often dress up as warm, cheesy loaf for Halloween. But a recent study shows that the celebrated appetizer may be linked to a series of rabies cases springing up around the country. ``` ## What to expect from here on out What follows from here is just a bunch of absolute nonsense we’ve written to dogfood the component itself. It includes every sensible typographic element we could think of, like **bold text**, unordered lists, ordered lists, code blocks, block quotes, _and even italics_. It’s important to cover all of these use cases for a few reasons: 1. We want everything to look good out of the box. 2. Really just the first reason, that’s the whole point of the plugin. 3. Here’s a third pretend reason though a list with three items looks more realistic than a list with two items. Now we’re going to try out another header style. ### Typography should be easy So that’s a header for you—with any luck if we’ve done our job correctly that will look pretty reasonable. Something a wise person once told me about typography is: > Typography is pretty important if you don’t want your stuff to look like trash. Make it good then it won’t be bad. It’s probably important that images look okay here by default as well: Now I’m going to show you an example of an unordered list to make sure that looks good, too: - So here is the first item in this list. - In this example we’re keeping the items short. - Later, we’ll use longer, more complex list items. And that’s the end of this section. ## What if we stack headings? ### We should make sure that looks good, too. Sometimes you have headings directly underneath each other. In those cases you often have to undo the top margin on the second heading because it usually looks better for the headings to be closer together than a paragraph followed by a heading should be. ### When a heading comes after a paragraph … When a heading comes after a paragraph, we need a bit more space, like I already mentioned above. Now let’s see what a more complex list would look like. - **I often do this thing where list items have headings.** For some reason I think this looks cool which is unfortunate because it’s pretty annoying to get the styles right. I often have two or three paragraphs in these list items, too, so the hard part is getting the spacing between the paragraphs, list item heading, and separate list items to all make sense. Pretty tough honestly, you could make a strong argument that you just shouldn’t write this way. - **Since this is a list, I need at least two items.** I explained what I’m doing already in the previous list item, but a list wouldn’t be a list if it only had one item, and we really want this to look realistic. That’s why I’ve added this second list item so I actually have something to look at when writing the styles. - **It’s not a bad idea to add a third item either.** I think it probably would’ve been fine to just use two items but three is definitely not worse, and since I seem to be having no trouble making up arbitrary things to type, I might as well include it. After this sort of list I usually have a closing statement or paragraph, because it kinda looks weird jumping right to a heading. ## Code should look okay by default. Here’s what a default `tailwind.config.js` file looks like at the time of writing: ```js module.exports = { purge: [], theme: { extend: {}, }, variants: {}, plugins: [], } ``` Hopefully that looks good enough to you. ### What about nested lists? Nested lists basically always look bad which is why editors like Medium don’t even let you do it, but I guess since some of you goofballs are going to do it we have to carry the burden of at least making it work. 1. **Nested lists are rarely a good idea.** - You might feel like you are being really “organized” or something but you are just creating a gross shape on the screen that is hard to read. - Nested navigation in UIs is a bad idea too, keep things as flat as possible. - Nesting tons of folders in your source code is also not helpful. 2. **Since we need to have more items, here’s another one.** - I’m not sure if we’ll bother styling more than two levels deep. - Two is already too much, three is guaranteed to be a bad idea. - If you nest four levels deep you belong in prison. 3. **Two items isn’t really a list, three is good though.** - Again please don’t nest lists if you want people to actually read your content. - Nobody wants to look at this. - I’m upset that we even have to bother styling this. The most annoying thing about lists in Markdown is that ` ` elements aren’t given a child ` ` tag unless there are multiple paragraphs in the list item. That means I have to worry about styling that annoying situation too. - **For example, here’s another nested list.** But this time with a second paragraph. - These list items won’t have ` ` tags - Because they are only one line each - **But in this second top-level list item, they will.** This is especially annoying because of the spacing on this paragraph. - As you can see here, because I’ve added a second line, this list item now has a ` ` tag. This is the second line I’m talking about by the way. - Finally here’s another list item so it’s more like a list. - A closing list item, but with no nested list, because why not? And finally a sentence to close off this section. ## There are other elements we need to style I almost forgot to mention links, like [Stack Overflow](https://stackoverflow.com). We even included table styles, check it out: Wrestler Origin Finisher Bret "The Hitman" Hart Calgary, AB Sharpshooter Stone Cold Steve Austin Austin, TX Stone Cold Stunner Randy Savage Sarasota, FL Elbow Drop Vader Boulder, CO Vader Bomb Razor Ramon Chuluota, FL Razor’s Edge We also need to make sure inline code looks good, like if I wanted to talk about ` ` elements. ### Sometimes I even use `code` in headings Another thing I’ve done in the past is put a `code` tag inside of a link, like if I wanted to tell you about the [`stackexchange/stacks`](https://github.com/stackexchange/stacks) repository. ### We still need to think about stacked headings though. #### Let’s make sure we don’t screw that up with `h4` elements, either. Phew, with any luck we have styled the headings above this text and they look pretty good. ##### We should also make sure we're styling `h5` elements as well. Let’s add a closing paragraph here so things end with a decently sized block of text. I can’t explain why I want things to end that way but I have to assume it’s because I think things will look weird or unbalanced if there is a heading too close to the end of the document. ###### And, finally, an `h6`. Ultimately, though, we also want to support the `h6` headers. What I’ve written here is probably long enough, but adding this final sentence can’t hurt. + +--- + +### Page: Empty states +URL: https://stackoverflow.design/product/components/empty-states/ +Date: 2026-03-24T21:30:16.522Z +Tags: components +description: Empty states are used when there is no data to show. Ideally they orient the user by providing feedback based on the the user’s last interaction or communicate the benefits of a feature. When appropriate, they should explain the next steps the user should take and provide guidance with a clear call-to-action. + +Content: +Classes Section titled Classes Class Description .s-empty-state Base empty state style. No data or results Section titled No data or results Typical use-case for an empty state is when a feature has no data or a search/filter operation yields no results. Actionable Section titled Actionable If the user is able to address the situation resulting in an empty state, it is appropriate to include a button for them to do so. < div class = "s-empty-state wmx4 p48" > @Svg.Spot.Empty.With("native") < h4 class = "s-empty-state--title" > No questions match your result. </ h4 > < p > Try refining your search term or trying something more general. </ p > < button class = "s-btn s-btn__tonal" > Clear filters </ a > </ div > No questions match your result. Try refining your search term or trying something more general. Clear filters Non-actionable Section titled Non-actionable If the user can’t take an action to fix the situation, it’s appropriate to set expectations. < div class = "s-empty-state wmx4 p48" > @Svg.Spot.Empty.With("native") < h4 class = "s-empty-state--title" > User trends not ready </ h4 > < p > Please check back in a few days. </ p > </ div > User trends not ready Please check back in a few days. Minimal Section titled Minimal If desired, both the title and call-to-action may be omitted for a minimal look. < div class = "s-empty-state wmx4 p48" > @Svg.Spot.Empty.With("native") < p > There’s no data associated with < a href = "#" class = "s-link s-link__underlined" > this account </ a > . </ p > </ div > There’s no data associated with this account . + +--- + +### Page: Inputs +URL: https://stackoverflow.design/product/components/inputs/ +Date: 2026-03-24T21:30:16.523Z +Tags: components +description: Input elements are used to gather information from users. + +Content: +Classes Section titled Classes Class Modifies Description .s-input N/A Base input style. .s-input__creditcard .s-input Adds a credit card icon to the input. .s-input__search .s-input Adds a search icon to the input. .s-input__sm .s-input Apply a small size. .s-input__lg .s-input Apply a large size. Base style Section titled Base style Inputs are normally paired with a label, but there are times when they can be used without a label. Placeholder text should primarily be used as a content prompt and only provided when needed. <!-- Base --> < div class = "s-form-group" > < label class = "s-label" for = "example-item1" > Full name </ label > < p class = "s-description" > This will be shown only to employers and other Team members. </ p > < input class = "s-input" id = "example-item1" type = "text" placeholder = "Enter your input here" /> </ div > <!-- Disabled --> < div class = "s-form-group is-disabled" > < label class = "s-label" for = "example-item2" > Display name </ label > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-item2" type = "text" placeholder = "Enter your input here" disabled /> {% icon "Lock", "s-input-icon fc-black-400" %} </ div > </ div > <!-- Readonly --> < div class = "s-form-group ps-relative is-readonly" > < label class = "s-label" for = "example-item3" > Legal name </ label > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-item3" type = "text" placeholder = "Enter your input here" readonly value = "Prefilled readonly input" /> {% icon "Lock", "s-input-icon" %} </ div > </ div > Full name This will be shown only to employers and other Team members. Display name Legal name Accessibility Section titled Accessibility The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to inputs, there are a few things to keep in mind: All inputs should have an id attribute. Be sure to associate the input’s label by using the for attribute. The value here is the input’s id . If you have a group of related inputs, use the fieldset and legend to group them together. For more information, please read Gov.UK's article, "Using the fieldset and legend elements" . Required input fields Section titled Required input fields Labels or instructions must be provided when content requires user input. For any input field within a form that is required for successful data submission, provide the asterisk * as a symbol and a legend advising the meaning of the symbol before the first use. Stacks includes a special .s-required-symbol class to ensure the symbol (asterisk) is clearly visible. Class Applies Description .s-required-symbol abbr element enclosing the asterisk Used to style the asterisk indicating that a specific field is required. < abbr class = "s-required-symbol" title = "required" > * </ abbr > Required symbols are not necessary for areas where only a single input field is seen on the page (ex: sign up modals). For more information, see WCAG Technique H90 . Required input fields example Section titled Required input fields example < div class = "d-flex w100 jc-space-between ai-center" > < h1 class = "fs-headline1 fw-normal mb16" > Ask a question </ h1 > < p class = "fs-caption fc-black-400" > Required fields < abbr class = "s-required-symbol" title = "required" > * </ abbr > </ p > </ div > < form class = "d-flex fd-column gy24" > < div class = "s-form-group" > < label class = "s-label" for = "example-title-required" > Title < abbr class = "s-required-symbol" title = "required" > * </ abbr > </ label > < input class = "s-input" id = "example-title-required" type = "text" placeholder = "Type a title" /> </ div > < div class = "s-form-group" > < label class = "s-label" for = "example-body-required" > Body < abbr class = "s-required-symbol" title = "required" > * </ abbr > </ label > < textarea class = "s-textarea hmn1" id = "example-body-required" placeholder = "Type a question" > </ textarea > </ div > < div class = "s-form-group" > < label class = "s-label" for = "example-ask-members" > Ask team members </ label > < input class = "s-input" id = "example-ask-members" type = "text" placeholder = "Type a name" /> </ div > </ form > Ask a question Required fields * Title * Body * Ask team members Validation states Section titled Validation states Validation states provides the user feedback based on their interaction (or lack of interaction) with an input. These styles are applied by applying the appropriate class to the wrapping parent container. Validation classes Section titled Validation classes Class Applies to Description .has-warning Parent element Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding. .has-error Parent element Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding. .has-success Parent element Used to notify users that the value they’ve entered is fine or has been submitted successfully. Validation guidance Section titled Validation guidance In most cases, validation states shouldn’t be shown until after the user has submitted the form. There are certain exceptions where it can be appropriate to show a validation state without form submission—after a sufficient delay. For example, validating the existence of a username can occur after the user has stopped typing, or when they’ve deselected the input. Once the user is presented validation states, they can be cleared as soon as the user interacts with the form field. For example, the error state for an incorrect password should be cleared as soon as the user focuses the input to re-enter their password. Similarly to using for with labels, validation messages below inputs should be associated with their respective fields using the aria-describedby attribute for accessible behavior. Validation examples Section titled Validation examples Warning Section titled Warning < div class = "s-form-group has-warning" > < label class = "s-label" for = "example-warning" > Username </ label > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-warning" type = "text" placeholder = "" aria-describedby = "example-warning-desc" /> @Svg.Alert.With("s-input-icon") </ div > < p id = "example-warning-desc" class = "s-input-message" > Caps lock is on! < a href = "#" > Having trouble entering your username? </ a > </ p > </ div > Username Caps lock is on! Having trouble entering your username? Error Section titled Error In addition to using the "error" state for a field, be sure to use the aria-invalid attribute to indicate to assistive technology that respective fields have failed validation. < div class = "s-form-group has-error" > < label class = "s-label" for = "example-error" > Username </ label > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-error" type = "text" placeholder = "e.g. johndoe111" aria-describedby = "example-error-desc" aria-invalid = "true" /> @Svg.AlertFill.With("s-input-icon") </ div > < p id = "example-error-desc" class = "s-input-message" > You must provide a username. < a href = "#" > Forgot your username? </ a > </ p > </ div > Username You must provide a username. Forgot your username? Success Section titled Success < div class = "s-form-group has-success" > < label class = "s-label" for = "example-success" > Username </ label > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-success" type = "text" aria-describedby = "example-success-desc" /> @Svg.Checkmark.With("s-input-icon") </ div > < p id = "example-success-desc" class = "s-input-message" > That name is available! < a href = "#" > Why do we require a username? </ a > </ p > </ div > Username That name is available! Why do we require a username? Icons Section titled Icons Search Section titled Search Stacks provides helper classes to consistently style an input used for search. First, wrap your search input in an element with relative positioning. Then, and add s-input__search to the input itself. Finally, be sure to add s-input-icon and s-input-icon__search to the search icon.... + +--- + +### Page: Labels +URL: https://stackoverflow.design/product/components/labels/ +Date: 2026-03-24T21:30:16.523Z +Tags: components +description: Labels are used to describe inputs, select menus, textareas, radio buttons, and checkboxes. + +Content: +Classes Section titled Classes Class Modifies Description .s-label N/A Base label style. .s-label__sm .s-label Apply a small size. .s-label__lg .s-label Apply a large size. Labels inform users what information is being asked of them. They should be written in sentence case. For usability reasons, if a label is connected with an input, the for="[id]" attribute should be filled in. This attribute references the input’s id="[value]" value. This makes clicking the label automatically focus the proper input. Base style Section titled Base style < form class = "s-form-group" > < label class = "s-label" for = "question-title" > Question title </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-title" placeholder = "e.g. Why doesn’t Stack Overflow use a custom web font?" /> </ div > </ form > Question title Sizes Section titled Sizes Class Name Size Example .s-label__sm Small 14px Question title N/A Default 16px Question title .s-label__lg Large 22px Question title Description copy Section titled Description copy When a label or input needs further explantation, text should be placed directly underneath it. < form class = "s-form-group" > < label class = "s-label" for = "example-item" > Question title </ label > < p class = "s-description" > Clear question titles are more likely to get answered. </ p > < div class = "d-flex ps-relative" > < input class = "s-input" id = "example-item" type = "text" placeholder = "e.g. Why doesn’t Stack Overflow use a custom web font?" /> </ div > </ form > Question title Clear question titles are more likely to get answered. Status Section titled Status Use status indicators to append essential context to a label. This pattern supports any of the various badge states available. When using this indicator, display the full word 'Required' rather than an asterisk. Note: If the majority of a form’s inputs are required, prioritize the asterisk pattern outlined in Input Accessibility instead. < form class = "s-form-group" > < label class = "s-label" for = "question-title-required" > Question title < span class = "s-badge s-badge__danger" > Required </ span > </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-title-required" placeholder = "e.g. Why doesn’t Stack Overflow use a custom web font?" /> </ div > </ form > Question title Required < form class = "s-form-group" > < label class = "s-label" for = "question-tags" > Question tags < span class = "s-badge" > Optional </ span > </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-tags" placeholder = "e.g. Why doesn’t Stack Overflow use a custom web font?" /> </ div > </ form > Question tags Optional < form class = "s-form-group" > < label class = "s-label" for = "question-title-new" > What is your favorite animal? < span class = "s-badge s-badge__info" > Saved for later </ span > </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-title-new" placeholder = "e.g. hedgehog, platypus, sugar glider" /> </ div > </ form > What is your favorite animal? Saved for later < form class = "s-form-group" > < label class = "s-label" for = "question-title-beta" > Notify people < span class = "s-badge s-badge__featured" > New feature </ span > </ label > < div class = "d-flex ps-relative" > < input class = "s-input" type = "text" id = "question-title-beta" placeholder = "e.g. jdoe, bgates, sjobs" /> </ div > </ form > Notify people New feature + +--- + +### Page: Links +URL: https://stackoverflow.design/product/components/links/ +Date: 2026-03-24T21:30:16.523Z +Tags: components +description: Links are lightly styled via the a element by default. In addition, we provide .s-link and its variations. In rare situations, .s-link can be applied to n button while maintaining the look of an anchor. + +Content: +Links Section titled Links Link classes Section titled Link classes Class Modifies Description .s-link N/A Base link style that is used almost universally. .s-link__grayscale .s-link A link style modification with our default text color. .s-link__muted .s-link Applies a visually muted style to the base style. .s-link__danger .s-link Applies an important, destructive red to the base style. .s-link__inherit .s-link Applies the parent element’s text color. .s-link__underlined .s-link Adds an underline to the link’s text. .s-link__dropdown .s-link Applies a caret for dropdowns and additional interactivity. Single link examples Section titled Single link examples < a class = "s-link" href = "#" > Default </ a > < a class = "s-link s-link__grayscale" href = "#" > Grayscale </ a > < a class = "s-link s-link__muted" href = "#" > Muted </ a > < a class = "s-link s-link__danger" href = "#" > Danger </ a > < a class = "s-link s-link__inherit" href = "#" > Inherit </ a > < a class = "s-link s-link__underlined" href = "#" > Underlined </ a > < button class = "s-link" > Button Link </ button > < a class = "s-link s-link__dropdown" href = "#" > Links </ a > Default Grayscale Muted Danger Inherit Underlined Button Link Links Accessibility Section titled Accessibility Any link with adjacent static text cannot use color alone to differentiate it as a link. If a link is next to static text and the only visual indication that it’s a link is the color of the text, it will require an underline in addition to the color. Reference WCAG SC 1.4.1 for more details. Anchors Section titled Anchors Anchor classes Section titled Anchor classes Class Modifies Description .s-anchors N/A A consistent link style is applied to all descendent anchors. .s-anchors__default .s-anchors All descendent links receive s-link’s default styling. .s-anchors__grayscale .s-anchors Applies gray styling to all descendent links. .s-anchors__muted .s-anchors Applies a visually muted style to all descendent links. .s-anchors__danger .s-anchors Applies an important, destructive red to all descendent links. .s-anchors__underlined .s-anchors Applies an underline to all descendent links. .s-anchors__inherit .s-anchors Applies the parent element’s text color to all descendent links. Anchor examples Section titled Anchor examples Sometimes you need to give all <a> elements inside a container or component the same color, even when it‘s impractical or even impossible to give each anchor element an s-link class (e.g. because the markup is generated from Markdown). In this case, you can add the s-anchors class together with one of the modifiers s-anchors__default , s-anchors__grayscale , s-anchors__muted , s-anchors__danger , or s-anchors__inherit to the container. < div class = "s-anchors" > … </ div > < div class = "s-anchors s-anchors__grayscale" > … </ div > < div class = "s-anchors s-anchors__muted" > … </ div > < div class = "s-anchors s-anchors__danger" > … </ div > < div class = "s-anchors s-anchors__underlined" > … </ div > < div class = "s-anchors s-anchors__inherit" > … </ div > There is a default link here , a button , and another one . There is a grayscale link here , a button , and another one . There is a muted link here , a button , and another one . There is a danger link here , a button , and another one . There is a underlined link here , a button , and another one . There is a inherit link here , a button , and another one . One additional level of nesting is supported, but even that should be exceedingly rare. More than that is not supported. < div class = "s-anchors s-anchors__danger s-card" > All < a href = "#" > links </ a > in this < a href = "#" > outer box </ a > are < a href = "#" > dangerous </ a > . < div class = "s-anchors s-anchors__default s-card w70 mt8" > But all < a href = "#" > links </ a > in this < a href = "#" > inner box </ a > have the < a href = "#" > default </ a > link color. </ div > </ div > All links in this outer box are dangerous . But all links in this inner box have the default link color. An explicit s-link on an anchor overrides any s-anchors setting: < div class = "s-anchors s-anchors__danger s-card" > All < a href = "#" > links </ a > in this < a href = "#" > box </ a > are < a href = "#" > dangerous </ a > , except for < a class = "s-link" > this one </ a > which uses the default color, and < a class = "s-link s-link__muted" > this muted link </ a > . </ div > All links in this box are dangerous , except for this one which uses the default color, and this muted link . + +--- + +### Page: Loader +URL: https://stackoverflow.design/product/components/loader/ +Date: 2026-03-24T21:30:16.524Z +Tags: components +description: The loader component indicates an active wait state for a page, section, or interactive element. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-loader N/A N/A Base class for the loader component .s-loader--sr-text .s-loader N/A Necessary to render the center loader block and renders the accessible text .s-loader__sm N/A .s-loader A small variant of the loader component .s-loader__lg N/A .s-loader A large variant of the loader component Examples Section titled Examples Base Section titled Base The base loader component displays three animated squares. < div class = "s-loader" > < div class = "s-loader--sr-text" > Loading… </ div > </ div > Loading… Sizes Section titled Sizes Class Modifies Example .s-loader__sm .s-loader Loading… .s-loader N/A Loading… .s-loader__lg .s-loader Loading… + +--- + +### Page: Menus +URL: https://stackoverflow.design/product/components/menus/ +Date: 2026-03-24T21:30:16.524Z +Tags: components +description: A menu offers a contextual list of actions or functions. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-menu N/A N/A Base container styling for a menu. .s-menu--divider .s-menu N/A Adds a divider line between menu sections. .s-menu--item .s-menu N/A Applies link styling to link within a menu. Used for actionable elements. .s-menu--title .s-menu N/A Adds appropriate styling for a title within a menu. .s-menu--icon .s-menu--item N/A Applies styling to an icon. .s-menu--action .s-menu--item N/A Applies link styling to link within a menu. Used for actionable elements. .s-menu--action__danger N/A .s-menu--action Applies danger styling to a menu link. Used for destructive actions. Examples Section titled Examples A menu displays a list of choices temporarily, and usually represent tasks or actions. Don’t confuse menus for navigation . Basic Section titled Basic At its most basic, a menu is a simple styled list of contextual actions. Because they’re contextual, it’s strongly recommended that a menu is contained within a popover or a card . When placed in various containers, you’ll need to either account for the padding on the container, or use negative margins on the menu component itself. < div class = "s-popover p8" > < ul class = "s-menu" role = "menu" > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "…" > … </ a > </ li > < li class = "s-menu--item" role = "menuitem" > < button class = "s-menu--action" > … </ button > </ li > </ ul > </ div > < div class = "docs-card p8" > < ul class = "s-menu" role = "menu" > … </ ul > </ div > < ul class = "s-menu" role = "menu" > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "…" > … </ a > </ li > </ ul > Within a popover Share Edit Follow Within a card Share Edit Follow No container Share Edit Follow Titles and Dividers Section titled Titles and Dividers You can split up your menu by using either titles, dividers, or some combination of the two. Titles help group similar conceptual actions—in this example, we’ve grouped all sharing options. We’ve also split our destructive actions into their own section using a divider. < div class = "s-popover px0 py4" > < ul class = "s-menu" role = "menu" > < li class = "s-menu--title" role = "separator" > … </ li > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "…" > … </ a > </ li > < li class = "s-menu--divider" role = "separator" > </ li > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action s-menu--action__danger" href = "…" > … </ a > </ li > </ ul > </ div > Layout Email Facebook Twitter Deactivate Delete Icons Section titled Icons Icons can be added to menu items to help visually distinguish actions. Include the s-menu--icon class on the icon to ensure proper spacing and alignment. < ul class = "s-menu" role = "menu" > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "#" > @Svg.Home.With("s-menu--icon") Home </ a > </ li > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "#" > @Svg.Inbox.With("s-menu--icon") Inbox </ a > </ li > < li class = "s-menu--item" role = "menuitem" > < a class = "s-menu--action" href = "#" > @Svg.Settings.With("s-menu--icon") Settings </ a > </ li > </ ul > Home Inbox Settings Selected states Section titled Selected states To create selectable menu items, add .s-checkbox.s-checkbox__checkmark or .s-radio.s-radio__checkmark to the .s-menu--action element and include a radio or checkbox input as a child element. When the input is :checked , the corresponding menu item displays a checkmark. < fieldset class = "s-menu s-form-group" > < legend class = "s-menu--title" > … </ legend > < div class = "s-menu--item" > < label class = "s-menu--action s-radio s-radio__checkmark" for = "…" > < input type = "radio" id = "…" name = "…" value = "…" > … </ label > </ div > … </ fieldset > < fieldset class = "s-menu s-form-group" > < legend class = "s-menu--title" > … </ legend > < div class = "s-menu--item" > < label class = "s-menu--action s-checkbox s-checkbox__checkmark" for = "…" > < input type = "checkbox" id = "…" name = "…" value = "…" > … </ label > </ div > … </ fieldset > With radio input Select one Frequent Votes Unanswered With checkbox input Select multiple Frequent Votes Unanswered Radio groups Section titled Radio groups In the case of user management, it’s appropriate to include radio options. In this example, we’re setting a user’s role. While our examples up to this point have all been simple unordered lists, the s-menu component works on any markup including fieldset . < div class = "s-menu" role = "menu" > < fieldset > < legend class = "s-menu--title" > … </ legend > < label class = "s-menu--item s-radio" for = "…" > < input type = "radio" name = "…" id = "…" role = "menuitemradio" checked > < div > < div class = "s-label" > … </ div > < div class = "s-description mt2" > … </ div > </ div > </ label > < label class = "s-menu--item s-radio" for = "…" > < input type = "radio" name = "…" id = "…" role = "menuitemradio" > < div > < div class = "s-label" > … </ div > < div class = "s-description mt2" > … </ div > </ div > </ label > </ fieldset > </ div > Role User Can view, ask, answer, and edit questions. Can also vote on and flag content. Moderator Everything a user can do, but can also delete and close questions. Admin Everything a moderator can do and can also manage users, permissions, and site settings. + +--- + +### Page: Modals +URL: https://stackoverflow.design/product/components/modals/ +Date: 2026-03-24T21:30:16.524Z +Tags: components +description: Modals are dialog overlays that prevent the user from interacting with the rest of the website until an action is taken or the dialog is dismissed. Modals are purposefully disruptive and should be used thoughtfully and sparingly. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-modal N/A N/A Base parent container for modals. .s-modal--dialog .s-modal N/A Creates a container that holds the modal dialog with proper padding and shadows. .s-modal--body .s-modal--dialog N/A Adds proper styling to the modal dialog’s body text. .s-modal--close .s-modal--dialog N/A Used to dismiss a modal. .s-modal--header .s-modal--dialog N/A Adds proper styling to the modal dialog’s header. .s-modal--footer .s-modal--dialog N/A Adds the desired spacing to the row of button actions. .s-modal__danger N/A .s-modal Adds styling for potentially dangerous actions. .s-modal__full N/A .s-modal--dialog Makes the container take up as much of the screen as possible. Show all classes JavaScript Section titled JavaScript Attributes Section titled Attributes Class Applies to Description data-controller="s-modal" Controller element Wires up the element to the modal controller. This may be a .s-modal element or a wrapper element. data-s-modal-target="modal" .s-modal element Wires up the element that is to be shown/hidden data-s-modal-target="initialFocus" Any child focusable element Designates which element to focus on modal show. If absent, defaults to the first focusable element within the modal. data-action="s-modal#toggle" Any child focusable element Wires up the element that is to be shown/hidden data-action="s-modal#hide" Any child focusable element Wires up the element that is to be shown/hidden data-s-modal-return-element="[css selector]" Controller element Designates the element to return focus to when the modal is closed. If left unset, focus is not altered on close. data-s-modal-remove-when-hidden="true" Controller element Removes the modal from the DOM entirely when it is hidden Show all attributes Events Section titled Events Class Applies to Description s-modal:show Modal target Fires immediately before showing the modal. Calling .preventDefault() cancels the display of the modal. s-modal:shown Modal target Fires after the modal has been visually shown s-modal:hide Modal target Fires immediately before hiding the modal. Calling .preventDefault() cancels the removal of the modal. s-modal:hidden Modal target Fires after the modal has been visually hidden Show all events Event details Section titled Event details Class Applies to Description dispatcher Modal target Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the modal that caused it to hide, etc. returnElement Modal target Contains the Element to return focus to on hide. If a value is set to this property inside an event listener, it will be updated on the controller as well. Helpers Section titled Helpers Class Applies to Description Stacks.showModal Controller element Helper to manually show an s-modal element via external JS Stacks.hideModal Controller element Helper to manually hide an s-modal element via external JS Accessibility Section titled Accessibility Modals are designed with accessibility in mind by default. When a modal is open, navigation with the keyboard will be constrained to only those elements within the modal. To ensure maximum compatibility, all a tags must have href attributes and any default focusable items you don’t want focusable must have their tabindex set to -1 . Class Applies to Description aria-describedby="[id]" Modal target Supply the modal’s summary copy id. Assistive technologies (such as screen readers) use this to attribute to associate static text with a widget, element groups, headings, definitions, etc. ( Source ) aria-hidden="[state]" Modal target Informs assistive technologies (such as screen readers) if they should ignore the element. This should not be confused with the HTML5 hidden attribute which tells the browser to not display an element. ( Source ) aria-label="[text]" Modal target Labels the element for assistive technologies (such as screen readers). ( Source ) aria-labelledby="[id]" Modal target Supply the modal’s title id here. Assistive technologies (such as screen readers) use this to attribute to catalog the document objects correctly. ( Source ) role="dialog" Modal target Identifies dialog elements for assistive technologies ( Source ) role="document" Modal target Helps assistive technologies to switch their reading mode from the larger document to a focused dialog window. ( Source ) Example title Nullam ornare lectus vitae lacus sagittis, at sodales leo viverra. Suspendisse nec nulla dignissim elit varius tempus. Cras viverra neque at imperdiet vehicula. Curabitur condimentum id dolor vitae ultrices. Pellentesque scelerisque nunc sit amet leo fringilla bibendum. Etiam feugiat imperdiet mi, eu blandit arcu cursus a. Pellentesque cursus massa id dolor ullamcorper, at condimentum nunc ultrices. Save changes Cancel Example danger title Nullam ornare lectus vitae lacus sagittis, at sodales leo viverra. Suspendisse nec nulla dignissim elit varius tempus. Cras viverra neque at imperdiet vehicula. Curabitur condimentum id dolor vitae ultrices. Pellentesque scelerisque nunc sit amet leo fringilla bibendum. Etiam feugiat imperdiet mi, eu blandit arcu cursus a. Pellentesque cursus massa id dolor ullamcorper, at condimentum nunc ultrices. Save changes Cancel Examples Section titled Examples Launch example modal Launch example modal w/ danger state You can wire up a modal along with the corresponding button by wrapping both in a s-modal controller and attaching the corresponding data-* attributes. Make sure to set data-s-modal-return-element if you want your button to refocus on close. < div data-controller = "s-modal" data-s-modal-return-element = "#js-return-focus" > < button type = "button" id = "js-return-focus" data-action = "s-modal#show" > Show modal </ button > < aside class = "s-modal" data-s-modal-target = "modal" id = "modal-base" tabindex = "-1" role = "dialog" aria-labelledby = "modal-title" aria-describedby = "modal-description" aria-hidden = "true" > < div class = "s-modal--dialog" role = "document" > < h1 class = "s-modal--header" id = "modal-title" > … </ h1 > < p class = "s-modal--body" id = "modal-description" > … </ p > < div class = "d-flex gx8 s-modal--footer" > < button class = "s-btn" type = "button" > … </ button > < button class = "s-btn s-btn__danger" type = "button" data-action = "s-modal#hide" > … </ button > </ div > < button class = "s-modal--close s-btn s-btn__clear" type = "button" aria-label = "@_s(" Close ")" data-action = "s-modal#hide" > @Svg.Cross </ button > </ div > </ aside > </ div > Example title Nullam ornare lectus vitae lacus sagittis, at sodales leo viverra. Suspendisse nec nulla dignissim elit varius tempus. Cras viverra neque at imperdiet vehicula. Curabitur condimentum id dolor vitae ultrices. Pellentesque scelerisque nunc sit amet leo fringilla bibendum. Etiam feugiat imperdiet mi, eu blandit arcu cursus a. Save changes Cancel Alternatively, you can also use the built in helper to display a modal straight from your JS file. This is useful for the times when your modal markup can’t live next to your button or if it is generated dynamically (e.g. from an AJAX call). < button class = "s-btn js-modal-toggle" type = "button" > Show modal </ button > < aside class = "s-modal" id = "modal-base" role = "dialog" aria-labelledby = "modal-title" aria-describedby = "modal-description" aria-hidden = "true" data-controller = "s-modal" data-s-modal-target = "modal" > < div class = "s-modal--dialog" role = "document" > < h1 class = "s-modal--header" id = "modal-title" > … </ h1 > < p class = "s-modal--body" id = "modal-description" > … </ p > < div class = "d-flex gx8 s-modal--footer" > < button class = "s-btn" type = "button" > … </ button > < button class = "s-btn s-btn__clear" type = "button" data-action = "s-modal#hide" > … </ button > </ div > < button class = "s-modal--close s-btn s-btn__clear" type = "button" aria-label = "@_s(" Close ")" data-action = "s-modal#hide" > @Svg.Cross </ button > </ div > </ aside > document . querySelector ( ".js-modal-toggle" ). addEventListener ( "click" , function ( e ) { Stacks . showModal ( document . querySelector ( "#modal-base" )); }); Danger state Section titled Danger state Not every modal is sunshine and rainbows. Sometimes there are potentially drastic things that could happen by hitting a confirm button in a modal—such as deleting an account. In moments like this, add the .s-modal__danger class to .s-modal . Additionally, you should switch the buttons to .s-btn__danger , since the main call to action will be destructive.... + +--- + +### Page: Navigation +URL: https://stackoverflow.design/product/components/navigation/ +Date: 2026-03-24T21:30:16.524Z +Tags: components +description: Our navigation component is a collection of buttons that respond gracefully to various window sizes and parent containers. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-navigation N/A N/A Base parent container for navigation. .s-navigation--item .s-navigation N/A The individual item in a navigation .s-navigation--avatar .s-navigation--item N/A Applies styling to the avatar of the navigation item .s-navigation--icon .s-navigation--item N/A Applies styling to the icon of the navigation item .s-navigation--item-text .s-navigation--item N/A The element meant to contain the text of the navigation item .s-navigation__scroll N/A .s-navigation When the navigation items overflow the width of the component, enable horizontal scrolling. By default, navigation items will wrap. This should not be applied to vertical navigations. .s-navigation__sm N/A .s-navigation Tightens up the overall spacing and reduces the text size .s-navigation__vertical N/A .s-navigation Renders the navigation vertically. .s-navigation--item__dropdown N/A .s-navigation--item Adds a small caret that indicates a dropdown .is-selected N/A .s-navigation--item Applies to a navigation item that’s currently selected / active Preventing layout shift Section titled Preventing layout shift Horizontal layout shift may occur when changing which item is selected within the navigation component. We recommend including the data-text attribute on the child navigation item text element with the value duplicating the text of the item to prevent the layout shift. See below for examples. Item Applied to Description data-text="[value]" .s-navigation--item-text Prevents layout shift when changing selected button. Value should be the text of the navigation item. Horizontal Section titled Horizontal Care should be taken to only include at most one primary and one secondary navigation per page. Using multiple navigations with the same style can cause user confusion. Forcing a navigation to scroll is an established pattern on mobile devices, so it may be appropriate to use it in that context. Wrapping tends to make more sense on larger screens, where the user isn’t forced to scroll passed a ton of navigation chrome. Horizontal default Section titled Horizontal default Use the default size for primary page-level navigation, typically placed near the top of the page. < nav aria-label = "…" > < ul class = "s-navigation" > < li > < a href = "…" class = "s-navigation--item is-selected" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > </ ul > </ nav > Full width Product Email Content Brand Marketing Wrapped Product Email Content Brand Marketing Icons Section titled Icons Use the icon variant for a prominent, secondary horizontal navigation bar that directs users to main page sections. Limit use to one per page and do not use it for in-page filtering. Icon styles should change with the state of the item (ex: selected items use a fill icon) < nav aria-label = "…" > < ul class = "s-navigation" > < li > < a href = "…" class = "s-navigation--item is-selected" > @Svg.QandAFill.With("s-navigation--icon") < span class = "s-navigation--item-text" data-text = "Content" > Content </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > @Svg.TagStack.With("s-navigation--icon") < span class = "s-navigation--item-text" data-text = "Topics" > Topics </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > @Svg.UserStack.With("s-navigation--icon") < span class = "s-navigation--item-text" data-text = "People" > People </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item s-navigation--item__dropdown" > @Svg.Settings.With("s-navigation--icon") < span class = "s-navigation--item-text" data-text = "Settings" > Settings </ span > </ a > </ li > </ ul > </ nav > Content Topics People Settings Today Scrolling Section titled Scrolling < nav aria-label = "…" > < ul class = "s-navigation s-navigation__scroll" > < li > < a href = "…" class = "s-navigation--item is-selected" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > </ ul > </ nav > Product Email Content Brand Marketing Dropdown Section titled Dropdown < nav aria-label = "…" > < ul class = "s-navigation s-navigation__scroll" > < li > < a href = "…" class = "s-navigation--item is-selected" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item s-navigation--item__dropdown" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > </ ul > </ nav > Product Email More Small Section titled Small Use the small variant for on-page filtering in space-constrained areas, such as controlling small lists. Avoid using icons on the small variant. < nav aria-label = "…" > < ul class = "s-navigation s-navigation__sm" > < li > < a href = "…" class = "s-navigation--item is-selected" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > < li > < a href = "…" class = "s-navigation--item" > < span class = "s-navigation--item-text" data-text = "…" > … </ span > </ a > </ li > </ ul > </ nav > Product Email Content Brand Marketing Vertical Section titled Vertical Stacks also provides a vertical variation with support for section headers.... + +--- + +### Page: Notices +URL: https://stackoverflow.design/product/components/notices/ +Date: 2026-03-24T21:30:16.525Z +Tags: components +description: Notices deliver System and Engagement messaging, informing the user about product or account statuses and related actions. + +Content: +and status/alert roles and when to use them --> Classes Section titled Classes Class Parent Modifies Description .s-notice .s-toast when rendered as a toast N/A Base notice parent class. .s-notice--actions .s-notice N/A Container styling for notice actions including the dismiss button. .s-notice--dismiss .s-notice N/A Applies to child button element within the notice to position it appropriately. .s-notice__activity N/A .s-notice Applies activity (pink) visual styles. .s-notice__danger N/A .s-notice Applies danger (red) visual styles. .s-notice__featured N/A .s-notice Applies featured (purple) visual styles. .s-notice__important N/A .s-notice Applies an important visual style. This should be used for time-sensitive, pressing information that needs to be noticed by the user. .s-notice__info N/A .s-notice Applies info (blue) visual styles. .s-notice__success N/A .s-notice Applies success (green) visual styles. .s-notice__warning N/A .s-notice Applies warning (yellow) visual styles. .s-toast N/A N/A Parent of .s-notice . See the Toast section for more information. Show all classes Accessibility Section titled Accessibility Item Modifies Description aria-labelledby="[id]" .s-toast Used to reference the alert message within the dialog. If you are using .s-toast , this must be applied. aria-hidden="[state]" .s-toast Informs assistive technologies (such as screen readers) if they should ignore the element. When applied to .s-toast , Stacks will use this attribute to show or hide the toast. aria-label="[text]" .s-btn Labels the element for assistive technologies (such as screen readers). This should be used on any button that does not contain text content. role="alert" .s-notice A form of live region which contains important, usually time-sensitive, information. Elements with an alert role have an implicit aria-live value of assertive and implicit aria-atomic value of true . role="alertdialog" .s-toast The wrapping content area of an alert . Elements with the alertdialog role must use the aria-describedby attribute to reference the alert message within the dialog. role="status" .s-notice A form of live region which contains advisory information but isn't important enough to justify an alert role. Elements with a status role have an implicit aria-live value of polite and implicit aria-atomic value of true . If the element controlling the status appears in a different area of the page, you must make the relationship explicit with the aria-controls attribute. Show all accessibility items Examples Section titled Examples Base Section titled Base < div class = "s-notice" role = "status" > < span class = "s-notice--icon" > @Svg.Help </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__info" role = "status" > < span class = "s-notice--icon" > @Svg.Info </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__success" role = "status" > < span class = "s-notice--icon" > @Svg.Check </ span > < span > … < a href = "…" > … </ a > </ span > </ div > < div class = "s-notice s-notice__warning" role = "status" > < span class = "s-notice--icon" > @Svg.Alert </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__danger" role = "status" > < span class = "s-notice--icon" > @Svg.AlertFill </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__featured" role = "status" > < span class = "s-notice--icon" > @Svg.Star </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__activity" role = "status" > < span class = "s-notice--icon" > @Svg.Notification </ span > < span > … </ span > </ div > Default filled message style and some code notice. Link Info filled message style and some code notice. Link Success filled message style and some code notice. Link Warning filled message style and some code notice. Link Danger filled message style and some code notice. Link Featured filled message style and some code notice. Link Activity filled message style and some code notice. Link Important Section titled Important Used sparingly for when an important notice needs to be noticed < div class = "s-notice s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Help </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__info s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Info </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__success s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Info </ span > < span > … < a href = "…" > … </ a > </ span > </ div > < div class = "s-notice s-notice__warning s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Alert </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__danger s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.AlertFill </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__featured s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Star </ span > < span > … </ span > </ div > < div class = "s-notice s-notice__activity s-notice__important" role = "alert" > < span class = "s-notice--icon" > @Svg.Notification </ span > < span > … </ span > </ div > Default filled message style and some code notice. Link Info filled message style and some code notice. Link Success filled message style and some code notice. Link Warning filled message style and some code notice. Link Danger filled message style and some code notice. Link Featured filled message style and some code notice. Link Activity filled message style and some code notice. Link Styling child links Section titled Styling child links We recommend using descendent anchor classes , typically .s-anchors.s-anchors__inherit.s-anchors__underlined for notices containing links generated from markdown when you cannot manually generate the inner html. < div class = "s-notice s-notice__info" role = "presentation" > < span > Notice with < a href = "#" class = "s-link" > default link style </ a > </ span > </ div > < div class = "s-notice s-notice__info s-anchors s-anchors__inherit s-anchors__underlined" role = "presentation" > < span > Notice with < a href = "#" > custom link style </ a > </ span > </ div > Notice with default link style Notice with .s-anchors .s-anchors__inherit .s-anchors__underlined and custom link style Toast Section titled Toast We are phasing out Toasts due to significant accessibility barriers. Avoid this component for new features. Instead, prioritize integrated alternatives—such as component state changes or inline messages—to provide accessible feedback directly where the user is focused. Toasts are floating notices that are aligned to the center top of the page. They disappear after a set time. Visibility is changed with animation by toggling between aria-hidden="true" and aria-hidden="false" . When including a dismiss button the .s-notice--dismiss class should be applied to the button for toast-specific styling. < div role = "alertdialog" id = "example-toast" class = "s-toast" aria-hidden = "true" aria-labelledby = "toast-message" data-controller = "s-toast" data-s-toast-target = "toast" data-s-toast-return-element = ".js-example-toast-open[data-target='#example-toast']" > < aside class = "s-notice d-flex wmn4" > < span class = "s-notice--icon" > @Svg.Info </ span > < span > Toast notice message with an undo button </ span > < div class = "s-notice--actions" > < button type = "button" class = "s-link s-link__underlined" > Undo </ button > < button type = "button" class = "s-link s-notice--dismiss js-toast-close" aria-label = "Dismiss" > @Svg.Cross </ button > </ div > </ aside > </ div > Default toast with an undo button. Undo Info toast with an undo button. Undo Success toast with an undo button. Undo Warning toast with an undo button. Undo Danger toast with an undo button. Undo Featured toast with an undo button. Undo Activity toast with an undo button. Undo Launch example toast notice JavaScript Section titled JavaScript Attributes Section titled Attributes Attribute Modifies Description data-controller="s-toast" Controller element Wires up the element to the toast controller. This may be a .s-toast element or a wrapper element. data-s-toast-target="toast" Controller element Wires up the element that is to be shown/hidden data-s-toast-target="initialFocus" Any child focusable element Designates which element to focus on toast show. If absent, defaults to the first focusable element within the toast.... + +--- + +### Page: Pagination +URL: https://stackoverflow.design/product/components/pagination/ +Date: 2026-03-24T21:30:16.525Z +Tags: components +description: Pagination splits content into pages, as seen on questions, tags, users, and jobs listings. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-pagination N/A N/A Base pagination style. .s-pagination--item .s-pagination N/A A child element that's used as a link and labeled with the page number. .s-pagination--item__clear N/A .s-pagination--item Clears the background and removes any interactivity. Used for ellipses and descriptions. .s-pagination--item__nav N/A .s-pagination--item Styles the Next or Previous button with a circular background and fixed dimensions. Typically used with an icon to indicate navigation to the next page. .is-selected N/A .s-pagination--item Active state that's applied to the current page. Example Section titled Example < nav class = "s-pagination" aria-label = "pagination" > < ul > < li > < a class = "s-pagination--item s-pagination--item__nav" href = "#" > @Svg.ArrowLeft < span class = "v-visible-sr" > previous page </ span > </ a > </ li > < li > < a class = "s-pagination--item is-selected" href = "…" aria-current = "page" > < span class = "v-visible-sr" > page </ span > 1 </ a > </ li > < li > < a class = "s-pagination--item" href = "…" > < span class = "v-visible-sr" > page </ span > 2 </ a > </ li > < li > < a class = "s-pagination--item" href = "…" > < span class = "v-visible-sr" > page </ span > 3 </ a > </ li > < li > < a class = "s-pagination--item" href = "…" > < span class = "v-visible-sr" > page </ span > 4 </ a > </ li > < li > < a class = "s-pagination--item" href = "…" > < span class = "v-visible-sr" > page </ span > 5 </ a > </ li > < li > < span class = "s-pagination--item s-pagination--item__clear" > … </ span > </ li > < li > < a class = "s-pagination--item" href = "…" > < span class = "v-visible-sr" > page </ span > 122386 </ a > </ li > < li > < a class = "s-pagination--item s-pagination--item__nav" href = "…" > @Svg.ArrowRight < span class = "v-visible-sr" > next page </ span > </ a > </ li > </ ul > </ nav > previous page 1 2 3 4 5 … 122386 next page + +--- + +### Page: Popovers +URL: https://stackoverflow.design/product/components/popovers/ +Date: 2026-03-24T21:30:16.525Z +Tags: components +description: Popovers are small content containers that provide a contextual overlay. They can be used as in-context feature explanations, dropdowns, or tooltips. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-popover N/A N/A Base parent container for popovers .s-popover--close .s-popover N/A Used to dismiss a popover .s-popover--content .s-popover N/A Wrapper around the popover content to apply appropriate overflow styles .s-popover__tooltip N/A .s-popover Removes minimum size constraints to support shorter tooltip text .is-visible N/A .s-popover This class toggles the popover visibility Interactive popovers Section titled Interactive popovers Stacks provides a Stimulus controller that allows you to interactively display a popover from a source element. Positioning direction are managed for you by Popper.js , a powerful popover positioning library we've added as a dependency. These popovers are automatically hidden when user click outside the popover or tap the Esc key. Interactive Attributes Section titled Interactive Attributes Attribute Applied to Description id="{POPOVER_ID}" .s-popover A unique id that the popover’s toggling element can target. Matches the value of [aria-controls] on the toggling element. data-controller="s-popover" Controller element Wires up the element to the popover controller. This may be a toggling element or a wrapper element. data-s-popover-reference-selector="[css selector]" Controller element (optional) Designates the element to use as the popover reference. If left unset, the value defaults to the controller element. aria-controls="{POPOVER_ID}" Reference element Associates the element to the desired popover element. data-action="s-popover#toggle" Toggling element Wires up the element to toggle the visibility of a generic popover. data-s-popover-toggle-class="[class list]" Controller element Adds an optional space-delineated list of classes to be toggled on the originating element when the popover is shown or hidden. data-s-popover-placement=" [placement] " Controller element Dictates where to place the popover in relation to the reference element. By default, the placement value is bottom . Accepted placements are auto , top , right , bottom , left . Each placement can take an additional -start and -end variation. data-s-popover-auto-show="[true|false]" Controller element (optional) If true , the popover will appear immediately when the Stacks controller is first connected. This should be used in place of .is-visible for displaying popovers on load as it will prevent the popover from appearing before it has been correctly positioned. data-s-popover-hide-on-outside-click="[always|never|if-in-viewport|after-dismissal]" Controller element (optional) Default: always If always , the popover will appear disappear when outside clicks occur. If if-in-viewport , the popover will only disappear when outside clicks occur if the popover is in the viewport. If never , the popover will not disappear on outside clicks and will only be dismissed through other means, e.g. data-target="s-popover#hide" . If after-dismissal , the popover will not disappear on outside clicks unless it has been dismissed some other way at least once. Show all interactive attributes Interactive Events Section titled Interactive Events Event Description s-popover:show Fires immediately before showing and positioning the popover. This fires before the popover is first displayed to the user, and can be used to create or initialize the popover element. Calling .preventDefault() cancels the display of the popover. s-popover:shown Fires immediately after showing the popover. s-popover:hide Fires immediately before hiding the popover. Calling .preventDefault() prevents the removal of the popover. s-popover:hidden Fires immediately after hiding the popover. Dispatched Events Section titled Dispatched Events Event Element Description dispatcher s-popover:* Contains the Element that initiated the event. For instance, the button clicked to show, the element clicked outside the popover that caused it to hide, etc. Examples Section titled Examples Show example popover Username Password Sign in Create an account Show example popover There’s no data associated with your account yet. Please check back tomorrow. Link an account info We know you hate spam, and we do too. That’s why we make it easy for you to update your email preferences or unsubscribe at anytime. We never share your email address with third parties for marketing purposes. Default interactivity Section titled Default interactivity To enable interactive popovers, you will need to add the above attributes to the popover’s originating button. Custom positioning can be specified using the data-s-popover-placement . In the following example, we’ve chosen bottom-start . No positioning classes need to be added to your markup, only the data attributes. To promote being able to tab to an open popover, it’s best to place the popover immediately after the toggling button in the markup as siblings. < button class = "s-btn s-btn__dropdown" role = "button" aria-controls = "popover-example" aria-expanded = "false" data-controller = "s-popover" data-action = "s-popover#toggle" data-s-popover-placement = "bottom-start" data-s-popover-toggle-class = "is-selected" > … </ button > < div class = "s-popover" id = "popover-example" role = "menu" > < div class = "s-popover--content" > … </ div > </ div > Popover button Example popover content Dismissible Section titled Dismissible In the case of new feature callouts, it may be appropriate to include an explicit dismiss button. You can add one using the styling provided by .s-popover--close . In order for to close the popover with an explicit close button, you’ll need to add the controller to a parent as illustrated in the following example code: < div class = "…" data-controller = "s-popover" data-s-popover-reference-selector = "#reference-element" > < button id = "reference-element" class = "s-btn s-btn__dropdown" aria-controls = "popover-example" aria-expanded = "true" data-action = "s-popover#toggle" > … </ button > < div id = "popover-example" class = "s-popover is-visible" role = "menu" > < button class = "s-popover--close s-btn s-btn__tonal" aria-label = "Close" data-action = "s-popover#toggle" > @Svg.Cross </ button > < div class = "s-popover--content" > … </ div > </ div > </ div > Dismissible persistent popover presented with a close button JavaScript interaction Section titled JavaScript interaction There may be cases where you need to show or hide a popover via JavaScript. For example, if you need to show a popover at a specific time or if you need to hide a popover from an event outside of the controller, Stacks provides convenience methods to achieve this. Stacks . application . register ( "section" , class extends Stacks . StacksController { static targets = [ "help" ]; showHelp ( event ) { Stacks . showPopover ( this . helpTarget ); event. stopPropagation (); } hideHelp ( event ) { Stacks . hidePopover ( this . helpTarget ); } }); Lorem ipsum help Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et metus molestie nulla luctus sodales ac luctus justo. Aenean iaculis ac ante sit amet aliquam. Duis dolor velit, imperdiet sed mauris eu, sollicitudin egestas nisl. Ut vitae nulla eu risus iaculis semper sit amet vitae tortor. Sed convallis lacus quis libero placerat finibus. Phasellus pulvinar vel nunc eu tempor. Sed pharetra magna a felis egestas placerat. Sed imperdiet dui a sem fermentum, eget consectetur elit feugiat. Phasellus non condimentum orci. Nam id molestie elit, ut gravida metus. Vivamus vel nunc risus. Maecenas posuere sit amet tellus vel laoreet. Nulla lacus mauris, rhoncus eu laoreet quis, mattis vehicula nisl. Integer efficitur quam et nisi luctus scelerisque. Mauris efficitur lectus ac malesuada congue. Click here for help JavaScript configuration (popovers) Section titled JavaScript configuration (popovers) Situations may also arise where popovers need to be attached to an element after the document is rendered. For example, a button could have a contextual menu that is too expensive to serve up on every page load. Popovers can be attached to an element after the fact using Stacks.attachPopover . This method takes three parameters, the element to attach the popover to, the popover either as an element or an HTML string, and optional options for displaying the popover. Stacks . application . register ( "actions" , class extends Stacks . StacksController { var loaded = false ; async load ( ) { if ( this . loaded ) { return ; } Stacks . attachPopover ( this . element , await fetch ( `/posts/{postId}/actions` ), { autoShow : true , toggleOnClick : true }); this . loaded = true ; } }); Actions Tooltips Section titled Tooltips When a popover is intended only for display as an on-hover tooltip and contains no interactive text, the s-tooltip controller can be used in place of s-popover . This is a separate controller that can be used alongside s-popover on a single target element. Tooltip hover attributes Section titled Tooltip hover attributes Attribute Applied to Description id="{POPOVER_ID}" .s-popover A unique id that the popover’s toggling element can target. Matches the value of [aria-describedby] on the toggling element. data-controller="s-tooltip" Controller element Wires up the element to the tooltip controller. data-s-tooltip-reference-selector="[css selector]" Controller element (optional) Designates the element to use as the tooltip reference. If left unset, the value defaults to the controller element.... + +--- + +### Page: Post summary +URL: https://stackoverflow.design/product/components/post-summary/ +Date: 2026-03-24T21:30:16.526Z +Tags: components +description: The post summary component summarizes various content and associated meta data into a highly configurable component. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-post-summary N/A N/A Base parent container for a post summary .s-post-summary--answers .s-post-summary N/A Container for the post summary answers .s-post-summary--content .s-post-summary N/A Container for the post summary content .s-post-summary--stats .s-post-summary N/A Container for the post summary stats .s-post-summary--tags .s-post-summary N/A Container for the post summary tags .s-post-summary--title .s-post-summary N/A Container for the post summary title .s-post-summary--answer .s-post-summary--answers N/A Container for the post summary answer .s-post-summary--content-meta .s-post-summary--content N/A A container for post meta data, things like tags and user cards. .s-post-summary--content-type .s-post-summary--content N/A Container for the post summary content type .s-post-summary--excerpt .s-post-summary--content N/A Container for the post summary excerpt .s-post-summary--stats-answers .s-post-summary--stats N/A Container for the post summary answers .s-post-summary--stats-bounty .s-post-summary--stats N/A Container for the post summary bounty .s-post-summary--stats-item .s-post-summary--stats N/A A genericcontainer for views, comments, read time, and other meta data which prepends a separator icon. .s-post-summary--stats-votes .s-post-summary--stats N/A Container for the post summary votes .s-post-summary--title-link .s-post-summary--title N/A Link styling for the post summary title .s-post-summary--title-icon .s-post-summary--title N/A Icon styling for the post summary title .s-post-summary--sm-hide N/A .s-post-summary > * Hides the stats container on small screens. .s-post-summary--sm-show N/A .s-post-summary > * Shows the stats container on small screens. .s-post-summary__answered N/A .s-post-summary Adds the styling necessary for a question with accepted answers .s-post-summary__deleted N/A .s-post-summary Adds the styling necessary for a deleted post .s-post-summary--answer__accepted N/A .s-post-summary--answer Adds the styling necessary for an accepted answer Show all classes Examples Section titled Examples Base Section titled Base Use the post summary component to provide a concise summary of a question, article, or other content. < div class = "s-post-summary" > < div class = "s-post-summary--stats s-post-summary--sm-hide" > < div class = "s-post-summary--stats-votes" > … </ div > < div class = "s-post-summary--stats-answers" > … </ div > </ div > < div class = "s-post-summary--content" > < div class = "s-post-summary--content-meta" > < div class = "s-user-card s-user-card__sm" > < div class = "s-user-card--group" href = "…" > < a class = "s-avatar" href = "…" > < img class = "s-avatar--image" src = "…" > < span class = "v-visible-sr" > … </ span > </ a > < span class = "s-user-card--username" > … </ span > < ul class = "s-user-card--group" > < li class = "s-user-card--rep" > < span class = "s-bling s-bling__rep s-bling__sm" > < span class = "v-visible-sr" > reputation bling </ span > </ span > … </ li > </ ul > < span > < a class = "s-user-card--time" title = "…" data-controller = "s-tooltip" href = "…" > < time > … </ time > </ a > </ span > </ div > </ div > < div class = "s-post-summary--stats s-post-summary--sm-show" > < div class = "s-post-summary--stats-votes" > {% icon "Vote16Up" %} … </ div > < div class = "s-post-summary--stats-answers" > {% icon "Answer16" %} … < span class = "v-visible-sr" > answers </ span > </ div > </ div > < div class = "s-post-summary--stats-item" > … views </ div > </ div > < div class = "s-post-summary--title" > < a class = "s-post-summary--title-link" href = "…" > … </ a > </ div > < p class = "s-post-summary--excerpt v-truncate3" > … </ p > < div class = "s-post-summary--tags" > < a class = "s-tag" href = "…" > … </ a > … </ div > </ div > </ div > +24 votes 1 answers SofiaAlc reputation bling 1 asked 2 hours ago 24 1 answers 98 views How to reduce hallucinations and improve source relevance in a RAG pipeline? I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. retrieval-augmented-generation langchain llm vector-database Answered Section titled Answered Add the .s-post-summary__answered modifier class to indicate that the post has an accepted answer. < div class = "s-post-summary s-post-summary__answered" > … </ div > +24 votes 1 answers SofiaAlc reputation bling 1 asked 2 hours ago 24 1 answers 98 views How to reduce hallucinations and improve source relevance in a RAG pipeline? I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. retrieval-augmented-generation langchain llm vector-database Bountied Section titled Bountied Include the .s-post-summary--stats-bounty element to indicate that the post has a bounty. < div class = "s-post-summary" > < div class = "s-post-summary--stats s-post-summary--sm-hide" > < div class = "s-post-summary--stats-votes" > … </ div > < div class = "s-post-summary--stats-answers" > … </ div > < div class = "s-post-summary--stats-bounty" > +50 < span class = "v-visible-sr" > bounty </ span > </ div > </ div > < div class = "s-post-summary--content" > … < div class = "s-post-summary--content-meta" > < div class = "s-user-card s-user-card__sm" > … </ div > < div class = "s-post-summary--stats s-post-summary--sm-show" > < div class = "s-post-summary--stats-votes" > … </ div > < div class = "s-post-summary--stats-answers" > … </ div > < div class = "s-post-summary--stats-bounty" > +50 < span class = "v-visible-sr" > bounty </ span > </ div > </ div > </ div > … </ div > … </ div > +24 votes 1 answers + 50 SofiaAlc reputation bling 1 asked 2 hours ago 24 1 answers + 50 98 views How to reduce hallucinations and improve source relevance in a RAG pipeline? I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. retrieval-augmented-generation langchain llm vector-database Ignored Section titled Ignored Including an ignored tag will automatically apply custom ignored styling to the post summary. < div class = "s-post-summary" > … < div class = "s-post-summary--content" > … < div class = "s-post-summary--tags" > < a class = "s-tag s-tag__ignored" href = "…" > … </ a > … </ div > </ div > </ div > +24 votes 1 answers + 50 SofiaAlc reputation bling 1 asked 2 hours ago 24 1 answers + 50 98 views How to reduce hallucinations and improve source relevance in a RAG pipeline? I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. Ignored tag retrieval-augmented-generation langchain llm vector-database ai Watched Section titled Watched Including a watched tag will automatically apply custom watched styling to the post summary. < div class = "s-post-summary" > … < div class = "s-post-summary--content" > … < div class = "s-post-summary--tags" > < a class = "s-tag s-tag__watched" href = "…" > … </ a > … </ div > </ div > </ div > +24 votes 1 answers SofiaAlc reputation bling 1 asked 2 hours ago 24 1 answers 98 views How to reduce hallucinations and improve source relevance in a RAG pipeline? I have built a Retrieval-Augmented Generation (RAG) system using LangChain, a vector database, and an open-source LLM. While it works reasonably well, the model often hallucinates answers or cites sources that are only tangentially related to the user's query. My chunking strategy is set to a chunk size of 1000 tokens, which seems to be the sweet spot for the model. Watched tag retrieval-augmented-generation langchain llm vector-database ai Deleted Section titled Deleted Include the .... + +--- + +### Page: Prose +URL: https://stackoverflow.design/product/components/prose/ +Date: 2026-03-24T21:30:16.526Z +Tags: components +description: The prose component provides proper styling for rendered Markdown. + +Content: +Parameters Section titled Parameters Class Modifies Description .s-prose N/A Adds proper styling for rendered Markdown. .s-prose__sm .s-prose Decreases the base font size and line height. Examples Section titled Examples Minimal Section titled Minimal We modified this test document from the folks at Tailwind to demonstrate and explain our design choices. Expand example < div class = "s-prose" > … </ div > Stacks adds a new s-prose class that you can slap on any block of vanilla HTML content and turn it into a beautiful, well-formatted document: < article class = "s-prose" > < h1 > Garlic bread with cheese: What the science tells us </ h1 > < p > For years parents have espoused the health benefits of eating garlic bread with cheese to their children, with the food earning such an iconic status in our culture that kids will often dress up as warm, cheesy loaf for Halloween. </ p > < p > But a recent study shows that the celebrated appetizer may be linked to a series of rabies cases springing up around the country. </ p > <!-- ... --> </ article > What to expect from here on out What follows from here is just a bunch of absolute nonsense we’ve written to dogfood the component itself. It includes every sensible typographic element we could think of, like bold text , unordered lists, ordered lists, code blocks, block quotes, and even italics . It’s important to cover all of these use cases for a few reasons: We want everything to look good out of the box. Really just the first reason, that’s the whole point of the plugin. Here’s a third pretend reason though a list with three items looks more realistic than a list with two items. Now we’re going to try out another header style. Typography should be easy So that’s a header for you—with any luck if we’ve done our job correctly that will look pretty reasonable. Something a wise person once told me about typography is: Typography is pretty important if you don’t want your stuff to look like trash. Make it good then it won’t be bad. It’s probably important that images look okay here by default as well: Now I’m going to show you an example of an unordered list to make sure that looks good, too: So here is the first item in this list. In this example we’re keeping the items short. Later, we’ll use longer, more complex list items. And that’s the end of this section. What if we stack headings? We should make sure that looks good, too. Sometimes you have headings directly underneath each other. In those cases you often have to undo the top margin on the second heading because it usually looks better for the headings to be closer together than a paragraph followed by a heading should be. When a heading comes after a paragraph … When a heading comes after a paragraph, we need a bit more space, like I already mentioned above. Now let’s see what a more complex list would look like. I often do this thing where list items have headings. For some reason I think this looks cool which is unfortunate because it’s pretty annoying to get the styles right. I often have two or three paragraphs in these list items, too, so the hard part is getting the spacing between the paragraphs, list item heading, and separate list items to all make sense. Pretty tough honestly, you could make a strong argument that you just shouldn’t write this way. Since this is a list, I need at least two items. I explained what I’m doing already in the previous list item, but a list wouldn’t be a list if it only had one item, and we really want this to look realistic. That’s why I’ve added this second list item so I actually have something to look at when writing the styles. It’s not a bad idea to add a third item either. I think it probably would’ve been fine to just use two items but three is definitely not worse, and since I seem to be having no trouble making up arbitrary things to type, I might as well include it. After this sort of list I usually have a closing statement or paragraph, because it kinda looks weird jumping right to a heading. Code should look okay by default. Here’s what a default tailwind.config.js file looks like at the time of writing: module . exports = { purge : [], theme : { extend : {}, }, variants : {}, plugins : [], } Hopefully that looks good enough to you. What about nested lists? Nested lists basically always look bad which is why editors like Medium don’t even let you do it, but I guess since some of you goofballs are going to do it we have to carry the burden of at least making it work. Nested lists are rarely a good idea. You might feel like you are being really “organized” or something but you are just creating a gross shape on the screen that is hard to read. Nested navigation in UIs is a bad idea too, keep things as flat as possible. Nesting tons of folders in your source code is also not helpful. Since we need to have more items, here’s another one. I’m not sure if we’ll bother styling more than two levels deep. Two is already too much, three is guaranteed to be a bad idea. If you nest four levels deep you belong in prison. Two items isn’t really a list, three is good though. Again please don’t nest lists if you want people to actually read your content. Nobody wants to look at this. I’m upset that we even have to bother styling this. The most annoying thing about lists in Markdown is that <li> elements aren’t given a child <p> tag unless there are multiple paragraphs in the list item. That means I have to worry about styling that annoying situation too. For example, here’s another nested list. But this time with a second paragraph. These list items won’t have <p> tags Because they are only one line each But in this second top-level list item, they will. This is especially annoying because of the spacing on this paragraph. As you can see here, because I’ve added a second line, this list item now has a <p> tag. This is the second line I’m talking about by the way. Finally here’s another list item so it’s more like a list. A closing list item, but with no nested list, because why not? And finally a sentence to close off this section. There are other elements we need to style I almost forgot to mention links, like Stack Overflow . We even included table styles, check it out: Wrestler Origin Finisher Bret "The Hitman" Hart Calgary, AB Sharpshooter Stone Cold Steve Austin Austin, TX Stone Cold Stunner Randy Savage Sarasota, FL Elbow Drop Vader Boulder, CO Vader Bomb Razor Ramon Chuluota, FL Razor’s Edge We also need to make sure inline code looks good, like if I wanted to talk about <span> elements. Sometimes I even use code in headings Another thing I’ve done in the past is put a code tag inside of a link, like if I wanted to tell you about the stackexchange/stacks repository. We still need to think about stacked headings though. Let’s make sure we don’t screw that up with h4 elements, either. Phew, with any luck we have styled the headings above this text and they look pretty good. We should also make sure we're styling h5 elements as well. Let’s add a closing paragraph here so things end with a decently sized block of text. I can’t explain why I want things to end that way but I have to assume it’s because I think things will look weird or unbalanced if there is a heading too close to the end of the document. And, finally, an h6 . Ultimately, though, we also want to support the h6 headers. What I’ve written here is probably long enough, but adding this final sentence can’t hurt. Full Markdown spec Section titled Full Markdown spec This example includes the full kitchen-sink collection of everything the Markdown spec includes. Expand example The Comprehensive Formatting Test Code Formatting Inline code formatting or code spans Normal backticks System.out.println("Hello World!"); . Escaped backticks: for line in `someCommand` A single backtick character in a line won't form a code block '`'. There are two backtick characters ('`') in this line ('`'). Block code formatting System.out.println("Hello World!"); System.out.println("Code Block!"); < div class = "s-progress s-progress__stepped" > < div class = "s-progress--step is-complete" > < a href = "…" class = "s-progress--stop" > @Svg.CheckmarkSm </ a > < div class = "s-progress--bar s-progress--bar__right" > </ div > < a class = "s-progress--label" > … </ a > </ div > < div class = "s-progress--step is-complete" > < a href = "…" class = "s-progress--stop" > @Svg.CheckmarkSm </ a > < div class = "s-progress--bar s-progress--bar__left" > </ div > < div class = "s-progress--bar s-progress--bar__right" > </ div > < a class = "s-progress--label" > … </ a > </ div > < div class = "s-progress--step is-active" > < div class = "s-progress--stop" > </ div > < div class = "s-progress--bar s-progress--bar__left" > </ div > < div class = "s-progress--bar s-progress--bar__right" > </ div > < div class = "s-progress--label" > … </ div > </ div > < div class = "s-progress--step" > < div class = "s-progress--stop" > </ div > < div class = "s-progress--bar s-progress--bar__left" > </ div > < div class = "s-progress--label" > … </ div > </ div > </ div > HTML and other markdown are not supported within code spans or code blocks. ``` </code> *Not in code!* <code> ``` </code> *Not in code!* <code> Line Breaks This is one line. This was intended to be on the next line, but it appears on the same line. This is one paragraph. It has some sentences.... + +--- + +### Page: Radio +URL: https://stackoverflow.design/product/components/radio/ +Date: 2026-03-24T21:30:16.526Z +Tags: components +description: Checkable inputs that visually allow for single selection from multiple options. + +Content: +Classes Section titled Classes Class Modifies Description .s-radio N/A Base radio style. .s-radio__checkmark .s-radio Checkmark style. Base Section titled Base Use the .s-radio to wrap input[type="radio"] elements to apply radio styles. < div class = "s-radio" > < input type = "radio" name = "example-name" id = "example-item" /> < label class = "s-label" for = "example-item" > Check Label </ label > </ div > Example Description Radio label Unchecked radio. Radio label Disabled unchecked radio. Radio label Checked radio. Radio label Disabled checked radio. Checkmark Section titled Checkmark The checkmark style is an alternative to the base radio style. To use the checkmark style, wrap your input and label in a container with the .s-radio__checkmark class. < label class = "s-radio s-radio__checkmark" for = "example-item" > Checkmark Label < input type = "radio" name = "example-name" id = "example-item" /> </ label > Example Class Description Checkmark label .s-radio__checkmark Unchecked checkmark with a radio element. Checkmark label .s-radio__checkmark Disabled unchecked checkmark with a radio element. Checkmark label .s-radio__checkmark Checked checkmark with a radio element. Checkmark label .s-radio__checkmark Disabled checked checkmark with a radio element. Accessibility Section titled Accessibility The best accessibility is semantic HTML. Most screen readers understand how to parse inputs if they're correctly formatted. When it comes to radios, there are a few things to keep in mind: All inputs should have an id attribute. Be sure to associate the radio label by using the for attribute. The value here is the input's id . If you have a group of related radios, use the fieldset and legend to group them together. For more information, please read Gov.UK's article, "Using the fieldset and legend elements" . Radio group Section titled Radio group Vertical group Section titled Vertical group < fieldset class = "s-form-group" > < legend class = "s-label" > … </ legend > < div class = "s-radio" > < input type = "radio" name = "vert-radio" id = "vert-radio-1" /> < label class = "s-label" for = "vert-radio-1" > … </ label > </ div > < div class = "s-radio" > < input type = "radio" name = "vert-radio" id = "vert-radio-2" /> < label class = "s-label" for = "vert-radio-2" > … </ label > </ div > < div class = "s-radio" > < input type = "radio" name = "vert-radio" id = "vert-radio-3" /> < label class = "s-label" for = "vert-radio-3" > … </ label > </ div > </ fieldset > <!-- Checkmark w/ radio using .s-menu for additional styling --> < fieldset class = "s-menu s-form-group" > < legend class = "s-menu--title" > … </ legend > < div class = "s-menu--item" > < label class = "s-menu--action s-radio s-radio__checkmark" for = "vert-checkmark-1" > < input type = "radio" name = "vert-checkmark" id = "vert-checkmark-1" /> … </ label > </ div > < div class = "s-menu--item" > < label class = "s-menu--action s-radio s-radio__checkmark" for = "vert-checkmark-2" > < input type = "radio" name = "vert-checkmark" id = "vert-checkmark-2" /> … </ label > </ div > < div class = "s-menu--item" > < label class = "s-menu--action s-radio s-radio__checkmark" for = "vert-checkmark-3" > < input type = "radio" name = "vert-checkmark" id = "vert-checkmark-3" /> … </ label > </ div > </ fieldset > Which types of fruit do you like? Apples Oranges Bananas Pick a fruit Apples Oranges Bananas Horizontal group Section titled Horizontal group < fieldset class = "s-form-group s-form-group__horizontal" > < legend class = "s-label" > … </ legend > < div class = "s-radio" > < input type = "radio" name = "hori-radio" id = "hori-radio-1" /> < label class = "s-label" for = "hori-radio-1" > … </ label > </ div > < div class = "s-radio" > < input type = "radio" name = "hori-radio" id = "hori-radio-2" /> < label class = "s-label" for = "hori-radio-2" > … </ label > </ div > < div class = "s-radio" > < input type = "radio" name = "hori-radio" id = "hori-radio-3" /> < label class = "s-label" for = "hori-radio-3" > … </ label > </ div > </ fieldset > Which types of fruit do you like? Apples Oranges Bananas With description copy Section titled With description copy < fieldset class = "s-form-group" > < legend class = "s-label" > … </ legend > < div class = "s-radio" > < input type = "radio" name = "desc-radio" id = "desc-radio-1" /> < label class = "s-label" for = "desc-radio-1" > … < p class = "s-description" > … </ p > </ label > </ div > … </ fieldset > <!-- Checkmark w/ radio using .s-menu for additional styling --> < fieldset class = "s-menu s-form-group" > < legend class = "s-menu--title" > … </ legend > < div class = "s-menu--item" > < label class = "s-menu--action s-radio s-radio__checkmark" for = "desc-checkmark-1" > < input type = "radio" name = "desc-checkmark" id = "desc-checkmark-1" /> < div > … < p class = "s-description" > … </ p > </ div > </ label > </ div > … </ fieldset > Which types of fruit do you like? Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. Pick a fruit Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. Validation states Section titled Validation states Radios use the same validation states as inputs . Validation classes Section titled Validation classes Class Applies to Description .has-warning Parent element Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding. .has-error Parent element Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding. .has-success Parent element Used to notify users that the value they’ve entered is fine or has been submitted successfully. Validation examples Section titled Validation examples <!-- Radio w/ error --> < div class = "s-radio has-error" > < input type = "radio" name = "error-radio" id = "error-radio-1" /> < label class = "s-label" for = "error-radio-1" > … < p class = "s-description" > … </ p > </ label > </ div > <!-- Checkmark w/ success --> < label class = "s-radio s-radio__checkmark has-success" for = "success-checkmark-1" > < input type = "radio" name = "success-checkmark" id = "success-checkmark-1" /> < div > … < p class = "s-description" > … </ p > </ div > </ label > Which types of fruit do you like? Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. Pick a fruit Apples Fresh red apples. Oranges Juicy and sweet oranges. Bananas Ripe yellow bananas. + +--- + +### Page: Select +URL: https://stackoverflow.design/product/components/select/ +Date: 2026-03-24T21:30:16.526Z +Tags: components +description: A selectable menu list from which a user can make a single selection. Typically they are used when there are more than four possible options. The custom select menu styling is achieved by wrapping the select tag within the .s-select class. + +Content: +Classes Section titled Classes Class Modifies Description .s-select N/A Base select style. .s-select__sm .s-select Apply a small size. .s-select__lg .s-select Apply a large size. .has-error .s-select Apply an error state. .has-success .s-select Apply a success state. .has-warning .s-select Apply a warning state. Base style Section titled Base style < div class = "s-form-group" > < label class = "s-label" for = "select-menu" > How will you be traveling? < p class = "mt2 s-description" > Select the transportation method you will be using to come to the event. </ p > </ label > < div class = "s-select" > < select id = "select-menu" > < option value = "" selected > Please select one… </ option > < option value = "walk" > Walk </ option > < option value = "bike" > Bicycle </ option > < option value = "car" > Automobile </ option > < option value = "rail" > Train </ option > < option value = "fly" > Plane </ option > </ select > </ div > </ div > < div class = "s-form-group is-disabled" > < label class = "s-label" for = "select-menu-disabled" > Where are you staying? </ label > < div class = "s-select" > < select id = "select-menu-disabled" disabled > < option value = "" selected > Please select one… </ option > < option value = "bronx" > Bronx </ option > < option value = "brooklyn" > Brooklyn </ option > < option value = "manhattan" > Manhattan </ option > < option value = "queens" > Queens </ option > < option value = "staten-island" > Staten Island </ option > </ select > </ div > </ div > How will you be traveling? Select the transportation method you will be using to come to the event. Please select one… Walk Bicycle Automobile Train Plane Where are you staying? Please select one… Bronx Brooklyn Manhattan Queens Staten Island Validation states Section titled Validation states Validation states provides the user feedback based on their interaction (or lack of interaction) with a select menu. These styles are applied by applying the appropriate class to the wrapping parent container. Validation classes Section titled Validation classes Class Applies to Description .has-warning Parent element Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding. .has-error Parent element Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding. .has-success Parent element Used to notify users that the value they’ve entered is fine or has been submitted successfully. Validation examples Section titled Validation examples Warning Section titled Warning < div class = "s-form-group has-warning" > < label class = "s-label" for = "select-menu" > How will you be traveling? < p class = "mt2 s-description" > Select the transportation method you will be using to come to the event. </ p > </ label > < div class = "s-select" > < select id = "select-menu" > < option value = "" selected > Please select one… </ option > < option value = "walk" > Walk </ option > < option value = "bike" > Bicycle </ option > < option value = "car" > Automobile </ option > < option value = "rail" > Train </ option > < option value = "fly" > Plane </ option > </ select > @Svg.Alert.With("s-input-icon") </ div > </ div > How will you be traveling? Select the transportation method you will be using to come to the event. Please select one… Walk Bicycle Automobile Train Plane Error Section titled Error < div class = "s-form-group has-error" > < label class = "s-label" for = "select-menu" > How will you be traveling? < p class = "mt2 s-description" > Select the transportation method you will be using to come to the event. </ p > </ label > < div class = "s-select" > < select id = "select-menu" > < option value = "" selected > Please select one… </ option > < option value = "walk" > Walk </ option > < option value = "bike" > Bicycle </ option > < option value = "car" > Automobile </ option > < option value = "rail" > Train </ option > < option value = "fly" > Plane </ option > </ select > @Svg.AlertFill.With("s-input-icon") </ div > </ div > How will you be traveling? Select the transportation method you will be using to come to the event. Please select one… Walk Bicycle Automobile Train Plane Success Section titled Success < div class = "s-form-group has-success" > < label class = "s-label" for = "select-menu" > How will you be traveling? < p class = "mt2 s-description" > Select the transportation method you will be using to come to the event. </ p > </ label > < div class = "s-select" > < select id = "select-menu" > < option value = "" selected > Please select one… </ option > < option value = "walk" > Walk </ option > < option value = "bike" > Bicycle </ option > < option value = "car" > Automobile </ option > < option value = "rail" > Train </ option > < option value = "fly" > Plane </ option > </ select > @Svg.Check.With("s-input-icon") </ div > </ div > How will you be traveling? Select the transportation method you will be using to come to the event. Please select one… Walk Bicycle Automobile Train Plane Sizes Section titled Sizes Class Name Size Example .s-select__sm Small 13px 1 Example 2 Options N/A Default 14px 1 Example 2 Options .s-select__lg Large 18px 1 Example 2 Options + +--- + +### Page: Sidebar widgets +URL: https://stackoverflow.design/product/components/sidebar-widgets/ +Date: 2026-03-24T21:30:16.527Z +Tags: components +description: Sidebar widgets are flexible containers that provide a lot of patterns that are helpful in a variety of sidebar uses. + +Content: +Classes Section titled Classes Class Parent Description .s-sidebarwidget N/A Base sidebar widget style. .s-sidebarwidget--content .s-sidebarwidget Container for the sidebar widget content. .s-sidebarwidget--header .s-sidebarwidget Container for the sidebar widget header. .s-sidebarwidget--footer .s-sidebarwidget Container for the sidebar widget footer. Basic style Section titled Basic style In its simplest form, .s-sidebarwidget is comprised of a .s-sidebarwidget--content section and optional .s-sidebarwidget--header and .s-sidebarwidget--footer sections. Together these classes create a widget with appropriate inner spacing for you to put whatever you want into it. By default the content is a flex container. If you require display: block instead, add the d-block class. The examples of s-sidebarwidget--header are shown with h2 elements, but the appropriate heading level may differ depending on context. Please use the appropriate heading level for your context to ensure heading levels only increase by 1. < div class = "s-sidebarwidget" > < div class = "s-sidebarwidget--header" > < h2 > … </ h2 > < a class = "s-btn s-btn__xs s-btn__clear s-sidebarwidget--action" > … </ a > </ div > < div class = "s-sidebarwidget--content" > … < button class = "s-btn s-btn__tonal s-sidebarwidget--action" > … </ button > </ div > < div class = "s-sidebarwidget--footer" > < button class = "s-btn s-btn__tonal s-sidebarwidget--action" > … </ button > </ div > </ div > Community Achievements Track You’ve earned 3 new badges this week! Keep contributing to unlock more achievements and privileges within the community. View all badges See your progress + +--- + +### Page: Tables +URL: https://stackoverflow.design/product/components/tables/ +Date: 2026-03-24T21:30:16.527Z +Tags: components +description: Tables are used to list all information from a data set. The base style establishes preferred padding, font-size, and font-weight treatments. To enhance or customize the look of the table, apply any additional classes listed below. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-table-container N/A N/A Container for the table. .s-table .s-table-container N/A Base table style. .s-table--cell:n .s-table > tr > td N/A Table cell width in 12 evenly divided columns. Replace :n with the number of columns the cell should span. .s-table__b0 N/A .s-table Removes all table cell borders. .s-table__bx N/A .s-table Shows only horizontal table cell borders. Good for tables with lots of data that can be sorted and filtered. .s-table__bx-simple N/A .s-table Removes most of the default borders and backgrounds. Good for tables without much data that don't need to be sorted or filtered. .s-table__sortable N/A .s-table Applies styling to imply the table is sortable. .s-table__stripes N/A .s-table Apply zebra striping to the table. .s-table__sm N/A .s-table Apply a condensed sizing to the table. .s-table__lg N/A .s-table Apply a large sizing to the table. Default style Section titled Default style Tables should be wrapped in a container, .s-table-container . This provides horizontal scrolling when necessary in the smallest breakpoints. The default table style is a bordered cell layout with a stylized header row. < div class = "s-table-container" > < table class = "s-table" > < thead > < tr > < th scope = "col" > </ th > < th scope = "col" > </ th > < th scope = "col" > </ th > < th scope = "col" > </ th > </ tr > </ thead > < tbody > < tr > < th scope = "row" > </ th > < td > </ td > < td > </ td > < td > </ td > </ tr > </ tbody > </ table > </ div > Name Username Joined Last seen Aaron Shekey aaronshekey Dec 1 ’17 at 20:24 just now Joshua Hynes joshuahynes Feb 12 at 18:47 Aug 10 at 14:57 Piper Lawson piperlawson Jul 5 at 14:32 Aug 14 at 12:41 Borders & backgrounds Section titled Borders & backgrounds By default, tables are outlined, have borders on all cells, and have a styled header. Depending on the size and complexity of a table, these can all be configured. Horizontal borders Section titled Horizontal borders Shows only horizontal table cell borders. Good for tables with lots of data that can be sorted and filtered. < div class = "s-table-container" > < table class = "s-table s-table__bx" > … </ table > </ div > First name Last name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah 3 Paweł L. @pawełl 4 Ted G. @so-ted Simple borders Section titled Simple borders Removes most of the default borders and backgrounds. Good for tables without much data that don't need to be sorted or filtered. < div class = "s-table-container" > < table class = "s-table s-table__bx-simple" > … </ table > </ div > First name Last name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah 3 Paweł L. @pawełl 4 Ted G. @so-ted No borders Section titled No borders Removes all table cell borders. < div class = "s-table-container" > < table class = "s-table s-table__b0" > … </ table > </ div > First name Last name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah 3 Paweł L. @pawełl 4 Ted G. @so-ted Zebra striping Section titled Zebra striping When tables have a lot of information, you can help users group information and isolate data by adding zebra striping. < div class = "s-table-container" > < table class = "s-table s-table__stripes" > … </ table > </ div > First Name Last Name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah 3 Paweł L. @pawełl 4 Ted G. @so-ted Spacing Section titled Spacing A table’s padding can be changed to be more or less condensed. Small Section titled Small < div class = "s-table-container" > < table class = "s-table s-table__sm" > … </ table > </ div > First Name Last Name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah Default Section titled Default < div class = "s-table-container" > < table class = "s-table" > … </ table > </ div > First Name Last Name Username 1 Paweł L. @pawełl 2 Ted G. @so-ted Large Section titled Large < div class = "s-table-container" > < table class = "s-table s-table__lg" > … </ table > </ div > First Name Last Name Username 1 Aaron S. @aarons 2 Joshua H. @joshuah Cell widths Section titled Cell widths Table columns will size themselves based on their content. To set a specific width, you can use one of the following table cell classes to specify the width for any column. Classes Section titled Classes Class Width .s-table--cell1 8.3333333% .s-table--cell2 16.6666667% .s-table--cell3 25% .s-table--cell4 33.3333333% .s-table--cell5 41.6666667% .s-table--cell6 50% .s-table--cell7 58.3333333% .s-table--cell8 66.6666667% .s-table--cell9 75% .s-table--cell10 83.3333333% .s-table--cell11 91.6666667% .s-table--cell12 100% Examples Section titled Examples // Example 1 < div class = "s-table-container" > < table class = "s-table" > < tr > < td class = "s-table--cell2" > … </ td > < td > … </ td > </ tr > </ table > </ div > // Example 2 < div class = "s-table-container" > < table class = "s-table" > < tr > < td class = "s-table--cell3" > … </ td > < td class = "s-table--cell6" > … </ td > < td > … </ td > < td > … </ td > < td > … </ td > </ tr > </ table > </ div > // Example 3 < div class = "s-table-container" > < table class = "s-table" > < tr > < td class = "s-table--cell4" > … </ td > < td > … </ td > < td > … </ td > < td > … </ td > < td > … </ td > < td class = "s-table--cell2" > … </ td > </ tr > </ table > </ div > .s-table--cell2 No Class .s-table--cell3 .s-table--cell6 No Class No Class No Class .s-table--cell4 No Class No Class No Class No Class .s-table--cell2 Alignment Section titled Alignment Vertical alignment Section titled Vertical alignment The default vertical alignment is middle . You change a table’s or a specific cell’s vertical alignment by using the Vertical Alignment atomic classes . < div class = "s-table-container" > < table class = "s-table" > < tbody > < tr > < td class = "va-top" > … </ td > < td class = "va-middle" > … </ td > < td class = "va-bottom" > … </ td > </ tr > </ tbody > </ table > </ div > < div class = "s-table-container" > < table class = "s-table va-bottom" > < tbody > < tr > < td > … </ td > < td > … </ td > < td > … </ td > </ tr > </ tbody > </ table > </ div > .va-top .va-middle .va-bottom .s-table.va-bottom .s-table.va-bottom .s-table.va-bottom Text alignment Section titled Text alignment Text alignment can be changed at a table or cell level by using atomic text alignment classes . Columns containing copy should be left-aligned. Columns containing numbers should be right-aligned. < div class = "s-table-container" > < table class = "s-table" > < tbody > < tr > < td class = "ta-left" > … </ td > < td class = "ta-center" > … </ td > < td class = "ta-right" > … </ td > </ tr > </ tbody > </ table > </ div > < div class = "s-table-container" > < table class = "s-table ta-right" > < tbody > < tr > < td > … </ td > < td > … </ td > < td > … </ td > </ tr > </ tbody > </ table > </ div > .ta-left .ta-center .ta-right .s-table.ta-right .s-table.ta-right .s-table.ta-right Sortable tables Section titled Sortable tables To indicate that the user can sort a table by different columns, add the s-table__sortable class to the table. The <th> cells should include arrows to indicate sortability or the currently applied sorting. In addition, the column that is currently sorted should be indicated with the is-sorted class on its <th> . < div class = "s-table-container" > < table class = "s-table s-table__sortable" > < thead > < tr > < th scope = "col" class = "is-sorted" > < button type = "button" > Listing @Svg.ArrowDownSm </ button > </ th > < th scope = "col" > < button type = "button" > Status @Svg.ArrowUpDownSm </ button > </ th > < th scope = "col" > < button type = "button" > Owner @Svg.ArrowUpDownSm </ button > </ th > < th scope = "col" class = "ta-right" > < button type = "button" > Views @Svg.ArrowUpDownSm </ button > </ th > < th scope = "col" class = "ta-right" > < button type = "button" > Applies @Svg.... + +--- + +### Page: Tags +URL: https://stackoverflow.design/product/components/tags/ +Date: 2026-03-24T21:30:16.527Z +Tags: components +description: Tags are an interactive, community-generated keyword that allow communities to label, organize, and discover related content. Tags are maintained by their respective communities + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-tag N/A N/A Base tag style that is used almost universally. .s-tag--dismiss .s-tag N/A For a clear or dismiss action icon. When using this element, it should be rendered as a button containing the icon and the parent .s-tag should be rendered as a span element. .s-tag--sponsor .s-tag N/A Correctly positions a tag’s sponsor logo. .s-tag__moderator N/A .s-tag Exclusively used within Meta communities by moderators (and employees) to assign unique statuses to questions. .s-tag__required N/A .s-tag Exclusively used within Meta communities to denote the post type. One of these tags are required on all Meta posts. .s-tag__ignored N/A .s-tag Prepends an icon to indicate the tag is ignored. .s-tag__watched N/A .s-tag Prepends an icon to indicate the tag is watched. .s-tag__sm N/A .s-tag Apply a small size to the tag. .s-tag__lg N/A .s-tag Apply a large size to the tag. Accessibility Section titled Accessibility Tags should be focusable and navigable with the keyboard. The various tag states (Required, Moderator, Watched, Ignored) are visually distinct but do not include any text indicators for screen readers. For that reason it is recommended to provide additional context using hidden text elements with the v-visible-sr class. Examples Section titled Examples Default tag Section titled Default tag < a class = "s-tag" href = "#" > … </ a > < span class = "s-tag" > … < button class = "s-tag--dismiss" > < span class = "v-visible-sr" > Dismiss … tag </ span > @Svg.ClearSm </ button > </ span > < a class = "s-tag" href = "…" > < img class = "s-tag--sponsor" src = "…" …> … < div class = "v-visible-sr" > Sponsored tag </ div > </ a > < span class = "s-tag" > < a href = "…" > … </ a > < button class = "s-tag--dismiss" > < span class = "v-visible-sr" > Dismiss … tag </ span > @Svg.ClearSm </ button > </ span > jquery javascript Dismiss javascript tag android Sponsored tag javascript Dismiss javascript tag Moderator Section titled Moderator < a class = "s-tag s-tag__moderator" href = "#" > status-completed < div class = "v-visible-sr" > Moderator tag </ div > </ a > < span class = "s-tag s-tag__moderator" > status-bydesign < div class = "v-visible-sr" > Moderator tag </ div > < button class = "s-tag--dismiss" > < span class = "v-visible-sr" > Dismiss status-bydesign tag </ span > @Svg.ClearSm </ button > </ span > < a class = "s-tag s-tag__moderator" href = "#" > status-planned < div class = "v-visible-sr" > Moderator tag </ div > </ a > status-completed Moderator tag status-bydesign Moderator tag Dismiss status-bydesign tag status-planned Moderator tag Required Section titled Required < a class = "s-tag s-tag__required" href = "#" > discussion < div class = "v-visible-sr" > Required tag </ div > </ a > < span class = "s-tag s-tag__required" > feature-request < div class = "v-visible-sr" > Required tag </ div > < button class = "s-tag--dismiss" > < span class = "v-visible-sr" > Dismiss feature-request tag </ span > @Svg.ClearSm </ button > </ span > < a class = "s-tag s-tag__required" href = "#" > bug < div class = "v-visible-sr" > Required tag </ div > </ a > discussion Required tag feature-request Required tag Dismiss feature-request tag bug Required tag Watched Section titled Watched < a class = "s-tag s-tag__watched" href = "#" > asp-net < div class = "v-visible-sr" > Watched tag </ div > </ a > asp-net Watched tag Ignored Section titled Ignored < a class = "s-tag s-tag__ignored" href = "#" > netscape < div class = "v-visible-sr" > Ignored tag </ div > </ a > netscape Ignored tag Sizes Section titled Sizes Class Applied to Example .s-tag__sm .s-tag css N/A .s-tag css .s-tag__lg .s-tag css + +--- + +### Page: Textarea +URL: https://stackoverflow.design/product/components/textarea/ +Date: 2026-03-24T21:30:16.528Z +Tags: components +description: Multi-line inputs used by users to enter longer text portions. + +Content: +Classes Section titled Classes Class Modifies Description .s-textarea N/A Base textarea style. .s-textarea__sm .s-textarea Apply a small size. .s-textarea__lg .s-textarea Apply a large size. Base style Section titled Base style < div class = "d-flex fd-column gy4" > < label class = "s-label" for = "example-item" > Question body </ label > < div class = "d-flex ps-relative" > < textarea class = "s-textarea w100" id = "example-item" placeholder = "…" > </ textarea > </ div > </ div > Question body Accessibility Section titled Accessibility It is recommended to follow the same accessibility guidance as the Input component . Including marking Textarea's as required via the .s-required-symbol class. Validation states Section titled Validation states Validation states provides the user feedback based on their interaction (or lack of interaction) with a textarea. These styles are applied by applying the appropriate class to the wrapping parent container. Validation classes Section titled Validation classes Class Applies to Description .has-warning Parent element Used to warn users that the value they’ve entered has a potential problem, but it doesn’t block them from proceeding. .has-error Parent element Used to alert users that the value they’ve entered is incorrect, not filled in, or has a problem which will block them from proceeding. .has-success Parent element Used to notify users that the value they’ve entered is fine or has been submitted successfully. Validation examples Section titled Validation examples Warning Section titled Warning < div class = "s-form-group has-warning" > < label class = "s-label" for = "example-warning" > Description </ label > < div class = "d-flex ps-relative" > < textarea class = "s-textarea w100" id = "example-warning" placeholder = "Please describe your problem" > </ textarea > @Svg.Alert.With("s-input-icon") </ div > < p class = "s-input-message" > Consider entering a description to help us better help you. </ p > </ div > Description Consider entering a description to help us better help you. Error Section titled Error < div class = "s-form-group has-error" > < label class = "s-label" for = "example-success" > Description </ label > < div class = "d-flex ps-relative" > < textarea class = "s-textarea w100" id = "example-success" placeholder = "Please describe your problem" > </ textarea > @Svg.AlertCircle.With("s-input-icon") </ div > < p class = "s-input-message" > A description must be provided. </ p > </ div > Description A description must be provided. Success Section titled Success < div class = "s-form-group has-success" > < label class = "s-label" for = "example-success" > Description </ label > < div class = "d-flex ps-relative" > < textarea class = "s-textarea w100" id = "example-success" placeholder = "Please describe your problem" > How do you know your company is ready for a design system? How do you implement one without too many pain points? How do you efficiently maintain one once it’s built? </ textarea > @Svg.Checkmark.With("s-input-icon") </ div > < p class = "s-input-message" > Thanks for providing a description. </ p > </ div > Description How do you know your company is ready for a design system? How do you implement one without too many pain points? How do you efficiently maintain one once it’s built? Thanks for providing a description. Sizes Section titled Sizes Class Name Size Example .s-textarea__sm Small 13px N/A Default 14px .s-textarea__lg Large 18px + +--- + +### Page: Toggle switch +URL: https://stackoverflow.design/product/components/toggle-switch/ +Date: 2026-03-24T21:30:16.528Z +Tags: components +description: A toggle is used to quickly switch between two or more possible states. They are most commonly used for simple “on/off” switches. + +Content: +Classes Section titled Classes Class Modifies Description .s-toggle-switch N/A Base toggle switch style. .s-toggle-switch__multiple .s-toggle-switch Used to style toggle switches with three or more options. Styles Section titled Styles Basic toggle Section titled Basic toggle Toggle switches take up less space than an “on/off” radio button group and communicate their intended purpose more clearly than a checkbox that toggles functionality. They also provide consistency between desktop and mobile experiences. < div class = "d-flex ai-center g8" > < label class = "s-label" for = "toggle-example-default" > … </ label > < input class = "s-toggle-switch" id = "toggle-example-default" type = "checkbox" > </ div > < div class = "d-flex ai-center g8" > < label class = "s-label" for = "toggle-example-checked" > … </ label > < input class = "s-toggle-switch" id = "toggle-example-checked" type = "checkbox" checked > </ div > < div class = "d-flex ai-center g8" > < label class = "s-label" for = "toggle-example-disabled" > … </ label > < input class = "s-toggle-switch" id = "toggle-example-disabled" type = "checkbox" disabled > </ div > < div class = "d-flex ai-center g8" > < label class = "s-label" for = "toggle-example-checked" > … </ label > < input class = "s-toggle-switch" id = "toggle-example-checked-disabled" type = "checkbox" disabled checked > </ div > Default Checked Disabled Checked and disabled Two or more options with icons Section titled Two or more options with icons Toggles switches can be extended to choose between two or more states where each state is represented by an icon. Using the __multiple toggle instead of a radio group and making sure labels follow their inputs in this case is important. < fieldset > < div class = "d-flex ai-center g8" > < legend class = "s-label c-default" > … </ legend > < div class = "s-toggle-switch s-toggle-switch__multiple" > < input type = "radio" name = "group1" id = "input-1" checked value = "value1" > < label for = "input-1" aria-label = "First value" title = "First value" > @Svg.Icon1 </ label > < input type = "radio" name = "group1" id = "input-2" value = "value2" > < label for = "input-2" aria-label = "Second value" title = "Second value" > @Svg.Icon2 </ label > < input type = "radio" name = "group1" id = "input-3" value = "value3" > < label for = "input-3" aria-label = "Third value" title = "Third value" > @Svg.Icon3 </ label > </ div > </ div > </ fieldset > Search Style Export Type + +--- + +### Page: User cards +URL: https://stackoverflow.design/product/components/user-cards/ +Date: 2026-03-24T21:30:16.528Z +Tags: components +description: User cards are a combination of a user and metadata about the user or post + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-user-card N/A N/A Base user card container that applies the basic style. .s-user-card--column N/A .s-user-card > * A container for column elements. .s-user-card--row N/A .s-user-card > * A container for row elements. .s-user-card--group N/A .s-user-card > * A container for group elements. .s-user-card--bio N/A N/A Container for the user's bio. .s-user-card--recognition N/A N/A Container for recognition by a collective. .s-user-card--rep N/A N/A Container for the user's reputation. .s-user-card--time N/A N/A Container for the user's timestamp. .s-user-card--username N/A N/A Container for the user's username. .s-user-card__sm N/A .s-user-card Use the small variant for space-constrained areas, such as post summaries, or to establish visual hierarchy for secondary content like comments and replies. .s-user-card__lg N/A .s-user-card Use the large variant when space permits and more detailed information is desired. .s-user-card--group__split N/A .s-user-card--group Inserts a separator between each element. Show all classes Examples Section titled Examples Default Section titled Default The Base style is the standard variant used to connect a user to their content, appearing most frequently in post-summary lists and on question pages. This view is flexible, allowing various metadata fields to be shown or hidden as needed. Note on timestamps: Hovering over the timestamp displays a popover with precise dates and a link to the post's /timeline. For authors, this shows the post creation date; for editors, it shows the last modification date. < div class = "s-user-card" > < a class = "s-user-card--group" href = "…" > <!-- Note: Default variant includes avatar size modifier (s-avatar__24) --> < span class = "s-avatar s-avatar__24" > < img class = "s-avatar--image" alt = "…" src = "…" /> </ span > < span class = "s-user-card--username" > … </ span > </ a > < ul class = "s-user-card--group" > < li class = "s-user-card--rep" > < span class = "s-bling s-bling__sm" > < span class = "v-visible-sr" > reputation bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__gold s-bling__sm" > < span class = "v-visible-sr" > gold bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__silver s-bling__sm" > < span class = "v-visible-sr" > silver bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__bronze s-bling__sm" > < span class = "v-visible-sr" > bronze bling </ span > </ span > … </ li > </ ul > < a class = "s-user-card--time" href = "…" title = "2026-01-09 12:15:39Z" data-controller = "s-tooltip" > < time > … </ time > </ a > </ div > SofiaAlc asked 2 hr ago SofiaAlc reputation bling 1,775 asked 2 hr ago SofiaAlc reputation bling 1,775 gold bling silver bling bronze bling asked 2 hr ago SofiaAlc reputation bling 1,775 gold bling 8 silver bling 12 bronze bling 4 asked 2 hr ago With badges Section titled With badges Adds the User badge indicator to the usercard. Use this to signify the official role, status, or origin of the account (such as Moderator, Staff, or Bot) directly alongside the user's name. < div class = "s-user-card" > < a class = "s-user-card--group" href = "…" > <!-- Note: Default variant includes avatar size modifier (s-avatar__24) --> < span class = "s-avatar s-avatar__24" > < img class = "s-avatar--image" alt = "…" src = "…" /> </ span > < span class = "s-user-card--username" > … </ span > </ a > < div class = "s-user-card--group" > < span class = "s-badge s-badge__sm" > … </ span > </ div > < ul class = "s-user-card--group" > < li class = "s-user-card--rep" > < span class = "s-bling s-bling__sm" > < span class = "v-visible-sr" > reputation bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__gold s-bling__sm" > < span class = "v-visible-sr" > gold bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__silver s-bling__sm" > < span class = "v-visible-sr" > silver bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__bronze s-bling__sm" > < span class = "v-visible-sr" > bronze bling </ span > </ span > … </ li > </ ul > < a class = "s-user-card--time" href = "…" title = "2026-01-09 12:15:39Z" data-controller = "s-tooltip" > < time > … </ time > </ a > </ div > Community Bot asked 2 hr ago SofiaAlc Mod asked 2 hr ago SofiaAlc Staff Mod asked 2 hr ago SofiaAlc Mod reputation bling 1,775 gold bling silver bling bronze bling asked 2 hr ago SofiaAlc Staff Mod reputation bling 1,775 gold bling 8 silver bling 12 bronze bling 4 asked 2 hr ago Sizes Section titled Sizes Class Size Description .s-user-card__sm small Use the small variant for space-constrained areas, such as post summaries, or to establish visual hierarchy for secondary content like comments and replies. N/A N/A Use the default variant when the user needs a more primary focus of the content. This style features a larger avatar to establish top-level hierarchy like question and answer authors. .s-user-card__lg large Use the large variant when space permits and more detailed information is desired Small Section titled Small < div class = "s-user-card s-user-card__sm" > < a class = "s-user-card--group" href = "…" > <!-- Note: Small variant does not include avatar size modifier --> < span class = "s-avatar" > < img class = "s-avatar--image" alt = "…" src = "…" /> </ span > < span class = "s-user-card--username" > … </ span > </ a > < div class = "s-user-card--group" > < span class = "s-badge s-badge__sm" > … </ span > </ div > < ul class = "s-user-card--group" > < li class = "s-user-card--rep" > < span class = "s-bling s-bling__sm" > < span class = "v-visible-sr" > reputation bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__gold s-bling__sm" > < span class = "v-visible-sr" > gold bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__silver s-bling__sm" > < span class = "v-visible-sr" > silver bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__bronze s-bling__sm" > < span class = "v-visible-sr" > bronze bling </ span > </ span > … </ li > </ ul > < a class = "s-user-card--time" href = "…" title = "2026-01-09 12:15:39Z" data-controller = "s-tooltip" > < time > … </ time > </ a > </ div > SofiaAlc asked 2 hr ago SofiaAlc reputation bling 1,775 gold bling 8 silver bling 12 bronze bling 4 asked 2 hr ago SofiaAlc Mod asked 2 hr ago Large Section titled Large < div class = "s-user-card s-user-card__lg" > < div class = "s-user-card--row" > < a class = "s-avatar s-avatar__48" href = "#" > < img class = "s-avatar--image" alt = "…" src = "…" /> </ a > < div class = "s-user-card--column" > < div class = "s-user-card--row" > < a class = "s-user-card--username" href = "#" > … </ a > < div class = "s-user-card--group" > < span class = "s-badge s-badge__staff s-badge__sm" > … </ span > < span class = "s-badge s-badge__moderator s-badge__sm" > … </ span > </ div > </ div > < ul class = "s-user-card--group" > < li class = "s-user-card--rep" > < span class = "s-bling s-bling__sm" > < span class = "v-visible-sr" > reputation bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__gold s-bling__sm" > < span class = "v-visible-sr" > gold bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__silver s-bling__sm" > < span class = "v-visible-sr" > silver bling </ span > </ span > … </ li > < li > < span class = "s-bling s-bling__bronze s-bling__sm" > < span class = "v-visible-sr" > bronze bling </ span > </ span > … </ li > </ ul > </ div > </ div > < div class = "s-user-card--column" > < div class = "s-user-card--row s-user-card--recognition" > @Svg.Icon.StarVerifiedSm.... + +--- + +### Page: Vote +URL: https://stackoverflow.design/product/components/vote/ +Date: 2026-03-24T21:30:16.529Z +Tags: components +description: The vote component allows users to vote on the quality of content by casting an upvote or downvote. + +Content: +Classes Section titled Classes Class Parent Modifies Description .s-vote N/A N/A Base vote component. .s-vote--btn .s-vote N/A Vote button. .s-vote--votes .s-vote N/A Container for vote counts. .s-vote--downvotes .s-vote--votes N/A Downvote count. .s-vote--total .s-vote--votes N/A Total vote count. .s-vote--upvotes .s-vote--votes N/A Upvote count. .s-vote__expanded N/A .s-vote Expanded vote style that shows upvote and downvote counts separately. .s-vote__horizontal N/A .s-vote Horizontal vote style that arranges buttons and counts in a row. This layout does not officially support downvoting or expanded vote count. Examples Section titled Examples Base Section titled Base The base vote component includes an upvote button, a downvote button, and a vote count. When the vote count is zero and the current user has not voted, it should display Vote in place of a number. Otherwise, show the vote count and truncate large numbers (e.g., 1.2k). < div class = "s-vote" > < button class = "s-vote--btn" > @Svg.Vote16Up < span class = "v-visible-sr" > upvote </ span > </ button > < span class = "s-vote--votes" > < span class = "s-vote--total" > 12 </ span > </ span > < button class = "s-vote--btn" > @Svg.Vote16Down < span class = "v-visible-sr" > downvote </ span > </ button > </ div > Base upvote 12 downvote 0 vote count upvote Vote downvote ≥ 1,000 votes upvote 27.5K downvote Expanded Section titled Expanded Include the .s-vote__expanded modifier to show upvote and downvote counts instead of the total vote count. This modifier hides .s-vote--total and shows .s-vote--upvotes and .s-vote--downvotes instead. < div class = "s-vote s-vote__expanded" > < button class = "s-vote--btn" > @Svg.Vote16Up < span class = "v-visible-sr" > upvote </ span > </ button > < button class = "s-vote--votes" > < span class = "s-vote--upvotes" > 12 </ span > < span class = "s-vote--total" > 20 </ span > < span class = "s-vote--downvotes" > 8 </ span > </ button > < button class = "s-vote--btn" > @Svg.Vote16Down < span class = "v-visible-sr" > downvote </ span > </ button > </ div > upvote +12 20 -8 downvote Horizontal Section titled Horizontal Apply the .s-vote__horizontal modifier to arrange the vote buttons and counts in a horizontal layout. This layout does not officially support expanded vote count. This configuration is best suited for scenarios such as comment voting, where a more compact design is preferred. < div class = "s-vote s-vote__horizontal" > < button class = "s-vote--btn" > @Svg.Vote16Up < span class = "v-visible-sr" > upvote </ span > < span class = "s-vote--votes" > < span class = "s-vote--total" > 5 </ span > </ span > </ button > </ div > < div class = "s-vote s-vote__horizontal" > < button class = "s-vote--btn" > @Svg.Vote16Up < span class = "v-visible-sr" > upvote </ span > </ button > < span class = "s-vote--votes" > < span class = "s-vote--total" > 10 </ span > </ span > < button class = "s-vote--btn" > @Svg.Vote16Down < span class = "v-visible-sr" > downvote </ span > </ button > </ div > upvote 5 upvote 10 downvote Voted Section titled Voted Use filled vote icons to indicate when the current user has upvoted or downvoted the content. < div class = "s-vote s-vote__horizontal" > < button class = "s-vote--btn" > @Svg.Vote16UpFill < span class = "v-visible-sr" > upvoted </ span > </ button > < span class = "s-vote--votes" > < span class = "s-vote--total" > 12 </ span > </ span > < button class = "s-vote--btn" > @Svg.Vote16Down < span class = "v-visible-sr" > downvote </ span > </ button > </ div > Upvoted upvoted 27.5K downvote Downvoted upvote 11 downvoted Horizontal upvoted upvoted 6 Horizontal downvoted upvote 4 downvoted + +--- + +## Collection: develop + +### Page: Building Stacks +URL: https://stackoverflow.design/product/develop/building/ +Date: 2026-03-24T21:30:16.529Z +Tags: develop +description: The following is a guide to building and running Stacks locally. You’ll need to be able to build Stacks to contribute to our documentation or add new classes to our CSS library. + +Content: +Clone the repo Section titled Clone the repo There are two common ways to clone a repo : Use the command line: git clone https://github.com/StackExchange/Stacks.git Use GitHub’s desktop app. Download and install GitHub Desktop . Login with your GitHub credentials. Clone the Stacks repo. Get Node and NPM installed Section titled Get Node and NPM installed We use a bunch of NPM dependencies to process and package up Stacks for delivery. You’ll need to install them. Install Node & NPM Open the Stacks repo in a Terminal window. Install the NPM dependencies. npm install Running Stacks Section titled Running Stacks That should do it for all our dependencies. You’re now able to run Stacks. From the top level of the Stacks repo, run our main script npm run start -w packages/stacks-docs Visit your local copy of Stacks at http://localhost:8080/ Getting help Section titled Getting help Installing dependencies can be frustrating, and we’re here to help. If you’re stuck, the Stacks team is always available in #stacks. If that doesn’t work, try opening an issue . + +--- + +### Page: Conditional classes +URL: https://stackoverflow.design/product/develop/conditional-classes/ +Date: 2026-03-24T21:30:16.529Z +Tags: develop +description: Stacks provides conditional atomic classes to easily build complex responsive designs, hover states, and print layouts. A limited selection of conditional classes are available throughout Stacks. These are represented in class definitions tables by a green checkmark . + +Content: +Responsive Section titled Responsive Many utility classes in Stacks are also available in screen-size specific variations. For example, the .d-none utility can be applied to small browser widths and below using the .sm:d-none class, on medium browser widths and below using the .md:d-none class, and on large browser widths and below using the .lg:d-none class. This is done using predefined max-width media query breakpoints represented by t-shirt sizes. A common example would be to apply .md:fd-column to a flex layout. This means, “At the medium breakpoint and smaller, switch the flex layout from columns to rows by applying fd-column .” Note: Our font size classes, .fs-[x] are automatically adjusted at the smallest breakpoint. Responsive classes Section titled Responsive classes Class Breakpoint Definition .[x] N/A The class is applied on all browser widths. .lg:[x] 92.25rem The class is applied on large browser widths and below. (1476px at 16px font size) .md:[x] 71.875rem The class is applied on medium browser widths and below. (1150px at 16px font size) .sm:[x] 48.75rem The class is applied on small browser widths and below. (780px at 16px font size) Responsive example Section titled Responsive example Resize your browser to see which classes are applied. < div class = "d-flex flex__center md:fd-column g16" > < div class = "wmx3 fs-body3 lg:ta-center " > … </ div > < div class = " md:order-first sm:d-none " > < svg > … </ svg > </ div > </ div > Stack Overflow for Teams is a private, secure home for your team’s questions and answers. No more digging through stale wikis and lost emails—give your team back the time it needs to build better products. Hover Section titled Hover Stacks provides hover-only atomic classes. By applying .h:bs-lg , .h:o100 , and .h:fc-black-600 , you’re saying “On hover, add a large box shadow, an opacity of 100%, and a font color of black 900.” < div class = "ba bc-black-225 p12 bar-md o80 bs-sm h:bs-lg h:o100 h:fc-black-600" > </ div > Example Focus Section titled Focus Stacks provides focus-only atomic classes. By applying .f:o100 , and .f:fc-black-600 , you’re saying “On focus, add an opacity of 100%, and a font color of black 900.” < div class = "ba bc-black-225 p12 bar-md o80 bs-sm f:o100 f:fc-black-600" > </ div > Example Print Section titled Print Stacks provides print-only atomic classes. By applying .print:d-none , you’re saying “In print layouts, remove this element from the layout.” < div class = "ba bc-black-225 p12 bar-md print:d-none" > </ div > < div class = "ba bc-black-225 p12 bar-md d-none print:d-block" > </ div > This element will be removed from the page while printing. This element will only be shown when printing. Dark mode Section titled Dark mode Stacks provides darkmode-only atomic classes. By applying .d:bg-green-300 , you’re saying “In dark mode, apply a background of green 100.” < div class = "bg-yellow-300 fc-yellow-600 d:bg-green-300 d:fc-green-600" > </ div > This element will be yellow text and background in light mode but will become green in dark mode. In addition to specific overrides, you can force an element’s colors to be light or dark by applying .theme-dark__forced or .theme-light__forced . This comes in handy when showing users a preview of light or dark interface elements. < div class = "fc-dark bg-yellow-300 ba bc-yellow-300 theme-light__forced" > </ div > This element will be rendered with light mode colors regardless of theme preference. + +--- + +### Page: JavaScript +URL: https://stackoverflow.design/product/develop/javascript/ +Date: 2026-03-24T21:30:16.529Z +Tags: develop +description: This is an introduction to the JavaScript functionality provided by Stacks. + +Content: +Including the Stacks JavaScript Section titled Including the Stacks JavaScript While Stacks is first and foremost a CSS library, it also provides commonly used functionality for some components via JavaScript. This functionality is optional. If you only need the styling parts of Stack, you’re free to ignore the provided JavaScript. The converse is not true: The JavaScript components work under the assumption that the Stacks CSS is available. Stacks JavaScript is currently included within various Stack Overflow projects automatically. If you’re working on a Stack Overflow project, chances are it’s already available for you! If not, reach out to us and we’ll work on getting it setup. To include Stacks JavaScript in other projects, do the following. Include the file dist/js/stacks.min.js in your page. For example, if you use the unpkg CDN, add the tag <script src="https://unpkg.com/@stackoverflow/stacks/dist/js/stacks.min.js"></script> to your HTML. See Using Stacks for more information on Unpkg and installing Stacks via NPM. Using the Stacks JavaScript Section titled Using the Stacks JavaScript The Stacks JavaScript components are provided as Stimulus controllers. Stimulus is a library created by Basecamp . Stimulus allows you to add functionality to your markup in a way that is similar to how you add styling to your markup: by modifying HTML attributes. Just as you style components by adding classes to the class attribute, with Stacks JavaScript, you’ll give components optional functionality by adding data-… attributes to the HTML. The basic functional unit of Stimulus, and of a Stacks JavaScript component, is a controller . Controllers are identified by their name, and all Stacks-provided controller names are prefixed with s-… , just like component CSS classes. You give functionality to an HTML element by setting its data-controller attribute. < div class = "s-magic-widget s-magic-widget__awesome" data-controller = "s-magic-widget" > </ div > Refer to the documentation of individual components on how to configure a component’s behavior. Creating your own Stimulus controllers Section titled Creating your own Stimulus controllers A side effect of including the Stacks JavaScript in your project is that you also have Stimulus available in your page. This means you can not only use Stacks-provided controllers, but also create your own. For general information about writing code with Stimulus, refer to the official documentation . That documentation generally assumes that you’re writing ES6 code. In order to make it useful without ES6-to-ES5 transpilation, Stacks provides a helper that allows you to write controllers using old-fashioned JavaScript syntax. This helper is called Stacks.addController and takes two arguments: The name (“identifier”) of the controller, and an object that is analogous to the ES6 class that you would write for your controller, except that it's a plain JavaScript object. All own enumerable properties of that object will be made available on the controller prototype, with the exception of the targets property, which will be available on the controller constructor itself, i.e. statically. With that, you can create and register the final Hello World controller example from the official documentation like this: Stacks . addController ( "greeter" , { targets : [ "name" ], greet : function ( ) { console . log ( "Hello, " + this . name + "!" ); }, get name () { return this . nameTarget . value ; } }); JavaScript classnames Section titled JavaScript classnames We prefix our JavaScript target classes with .js- so that changing or adding a class name for styling purposes doesn’t inadvertently break our JS. This allows us to style elements with any chain of atomic or component classes from Stacks without breaking any additional JavaScript interactivity. We also try to avoid IDs for both visual styling and JavaScript targeting. They aren’t reusable, visual styling can’t be overwritten by atomic classes, and, like non- .js- classes, we can’t tell if there is JavaScript interactivity attached at a glance. Do < div class = "s-component bs-lg js-copy" > … </ div > var button = document . querySelector ( '.js-copy' ); button. addEventListener ( 'click' , function ( ) { … }); Don’t < div class = "s-component bs-lg" > … </ div > var button = document . querySelector ( '.s-component' ); button. addEventListener ( 'click' , function ( ) { … }); .s-component { … } Don’t < div id = "card" > … </ div > var button = document . querySelector ( '#card' ); button. addEventListener ( 'click' , function ( ) { … }); #card { … } + +--- + +### Page: Using Stacks +URL: https://stackoverflow.design/product/develop/using-stacks/ +Date: 2026-03-24T21:30:16.530Z +Tags: develop +description: A short guide to Stacks, a robust CSS & JavaScript Pattern library for rapidly building Stack Overflow. + +Content: +Goals Section titled Goals Stacks is built with a unified goal: We should be writing as little CSS & JavaScript as possible . To achieve this goal, the Stacks team has created a robust set of reusable components. These include components like buttons, tables, and form elements. We’ve also created a powerful set of atomic classes that can be chained together to create just about any layout without writing a single line of new CSS. Further, these atomic classes can be used as modifiers of pre-existing components. Installing Section titled Installing Stacks is currently included within various Stack Overflow projects automatically. If you’re working on a Stack Overflow project, chances are it’s already available for you! If not, reach out to us and we’ll work on getting it set up. To include Stacks in other projects, you can install Stacks via NPM: npm install --save @stackoverflow/stacks You can also include a minified, compiled Stacks CSS style sheet that’s delivered via Unkpg, a CDN for NPM packages. This is good for things like Codepen or other quick prototypes. This CDN should not be considered production-ready. <link rel="stylesheet" href="https://unpkg.com/@stackoverflow/stacks/dist/css/stacks.min.css"> To use Stack’s built-in JavaScript interactivity with your components, refer to the JavaScript guidelines . If you’re hotlinking to Stacks on the Stack Overflow CDN, you are doing it wrong . You are setting yourself up for breaking upstream changes. Instead, you should install via properly versioned package management like NPM. This will keep you pinned to a stable version. How to best use Stacks Section titled How to best use Stacks In order to use Stacks, let’s consider the design you’d like to implement. My design uses existing components Identify if the design you’re implementing uses any existing components. Great, it does? Grab the markup from that component’s example page and paste that into your view. My design uses existing components, but has some special cases. E.g. background colors, border, and font sizes . Awesome, copy the component’s example markup to your view and add an atomic class to override its styling. Practically, this will likely just be adding something like an .mb12 to a button, or hiding something temporarily with .d-none . My design uses a new pattern that doesn’t have a component yet. No worries, let’s build your view by assembling some atomic classes. If you’re doing this more than once, you should help us identify a new pattern by requesting a new component . My design is super special and… I’m going to write a lot of custom CSS from scratch in its own .less file that I’ve included in the bundle. You probably shouldn’t be doing this. With atomic classes, you can build most of what you’re attempting to do without writing a single new line of CSS. The Stacks team would prefer you use these pre-existing classes to build new UI. Every line of CSS you write, the more CSS we have to maintain, the more our users have to download, and the more bytes we have to host. Getting Help Section titled Getting Help Need help? Open an issue . We’ll be happy to help. + +--- + +## Collection: foundation + +### Page: Accessibility +URL: https://stackoverflow.design/product/foundation/accessibility/ +Date: 2026-03-24T21:30:16.530Z +Tags: foundation +description: A non-comprehensive guide to accessibility best practices when using Stacks. + +Content: +Target Section titled Target All Stack Overflow product UIs must conform to the AA conformance level of the Web Content Accessibility Guidelines (WCAG) 2.2 with a few exceptions around color contrast documented below. High contrast modes Section titled High contrast modes When high contrast mode is enabled, Stack Overflow product UIs must meet or exceed the Success Criterion 1.4.6 Contrast (Enhanced) of the Web Content Accessibility Guidelines (WCAG) 2.2 and should conform to the remaining AAA conformance level rules when reasonably achievable. This only applies to the subset of Stack Overflow products that provide high contrast modes. Note: not all Stack Overflow products are expected to support high contrast modes . Visual accessibility Section titled Visual accessibility Stack Overflow product UIs MUST conform to a custom conformance level of the Accessible Perceptual Contrast Algorithm (APCA). This custom conformance level replaces the AA conformance level of the Web Content Accessibility Guidelines (WCAG) 2.2 for color contrast. Color & contrast Section titled Color & contrast Stacks aims to equip you with an accessible color palette and has been tested against WCAG AA, WCAG AAA and the newer APCA color standards. Most of our color combinations meet WCAG AA and APCA levels defined below. We also offer high contrast mode which offers a greater level of contrast. Contrast ratios Section titled Contrast ratios Contrast is the difference in luminance or color between any two elements. All visual readers require ample luminance contrast for fluent readability. Stack Overflow products must conform to a custom conformance level of the Accessible Perceptual Contrast Algorithm (APCA). Based on our custom conformance level, all text must have a Lightness contrast (Lc) value of 60, body copy must have a Lc value of 75, icons must have a Lc value of 45, and placeholder and disabled text must have a Lc of 30. These numbers will be negative when calculating for dark mode. Button Robots Do Use luminance contrast that meets our standards as defined above. Button Robots Don't Use low luminance contrast that fail our standards. Visual cues Section titled Visual cues Visual readers with color vision deficiency (CVD) have problems differentiating some hues and therefore these users need help discerning differences between items. This means that color (hue) should never be the sole means of communicating information and should always be paired with a non-color dependent indicator to accommodate all visual users. Do Use an icon alongside color to convey meaning. Don't Use color alone to convey meaning. Focus states Section titled Focus states Some people navigate through a website by using a keyboard or other device (instead of a mouse). A focus state should clearly let users know which item they’re on and is ready to interact with. Stack’s has taken a hybrid approach in using both the browser’s default styles (smaller interactive components like text links) and a custom focus ring. Foundation for custom approach Section titled Foundation for custom approach The custom approach adds two different outline rings on the inside of the component. The outer ring color uses secondary-theme-400 theme-secondary-400 (matching the primary button color) and the inner ring color uses white white (matching the background). Button Default Button Focus The outer ring color will always display as the theme color even when applied to a muted or danger styled button. This ensures the focus ring maintains a 3:1 color contrast ratio for any adjacent colors (WCAG level AA) within any theme (assuming the secondary-theme color theme-secondary-400 already passes the 3:1 contrast ratio). Button Tonal default Button Tonal focus Button Danger default Button Danger focus Meeting level AAA Section titled Meeting level AAA Both focus rings are always 2px thick. This allows the focus state to meet WCAG 2.4.13 Focus Appearance (AAA) standards for High Contrast mode. Whenever possible, the rings should be added to the inside of the component so we can better ensure that the rings don't get accidentally cut off by the surrounding layout (which helps us to meet WCAG 2.4.11 Focus Not Obscured AA ). However, this does result in a padding reduction within the element, surrounding the text. When choosing to set the focus rings on the inside (inset), the component must have at least 4px of padding at the smallest size. This has been applied to buttons, navigation, and pagination. When the padding amount is not sufficient enough to support a double ring on the inside of the component, the rings are placed on the outside. The components included are tags, toggles, form elements (input fields, selects, radio/checkboxes…), block links and the editor. javascript Tag default javascript Tag focus Toggle default Toggle focused Consistent style patterns Section titled Consistent style patterns Filled Section titled Filled Any component that already has an existing background color that fills the shape will maintain its original fill color. Product Navigation active default Product Navigation active focus Off Weekly Toggle (multi) default Off Weekly Toggle (multi) focused Bordered Section titled Bordered For components that have an existing border around the component when not in focus, a background fill color is added in addition to the focus rings. This ensures there’s a strong enough visual difference between the non-focus and focus state. These patterns are maintained across all components for consistency. page 2 Pagination default page 2 Pagination focus Floating Section titled Floating Components without an existing fill or border will only display the double rings on focus. Since the inner ring matches the background color in most cases, this will visually appear like a single ring around the perimeter of the component. [object Object] [object Object] [object Object] [object Object] [object Object] Editor icon default [object Object] [object Object] [object Object] [object Object] [object Object] Editor icon focus Exceptions Section titled Exceptions The exceptions to this pattern are the Clear button variations. All buttons display a background fill layer when in focus. Clear , Outline and Filled styles will all look the same when in focus. The fill color was chosen to match the existing Filled style. Button Clear default Button Clear focus Button Tonal default Button Tonal default focus Browser default Section titled Browser default Some focusable elements and Stacks components currently do not include custom focus styling. These elements will instead render the browser-default focus indicators. Viewport size Section titled Viewport size All Stack Overflow products must conform to the WCAG 2.2 SC 1.4.10: Reflow . This requires that our product UIs support viewports as small as 320px x 256px without requiring the user scrolling in multiple dimensions (unless an element requires it for usage or meaning). Very few users will ever use a viewport this small, but it's important to support it so users can zoom in up to 400% and still have a usable experience. At 400% zoom, a 320x256 viewport translates to 1280x1024, which is a common resolution for many users. Supporting this small viewport size ensures that users with low vision can still use our products effectively. Exceptions Section titled Exceptions There are some exceptions to this rule. Some elements such as tables and videos may require horizontal scrolling on small viewports. In these cases, it's acceptable to require scrolling in two dimensions. See the WCAG 2.2 documentation on Reflow for detailed guidance. Landmarks Section titled Landmarks ARIA landmarks should be used across Stack Overflow product pages to provide clear navigation structures for users relying on assistive technologies. Landmarks are inserted into the page explictly using the role attribute on an element (e.g. role="search" , etc...) or by leveraging semantic HTML (e.g. an header element is given automatically the banner landmark). Using semantic HTML elements should be preferred over using the role attribute whenever possible. For a comprehensive guide on using ARIA landmark roles refer to: WCAG ARIA11 Technique Using HTML landmark roles to improve accessibility Landmarks Browser Extension + +--- + +### Page: Color fundamentals +URL: https://stackoverflow.design/product/foundation/color-fundamentals/ +Date: 2026-03-24T21:30:16.530Z +Tags: foundation +description: Color is used distinguish our brand, convey meaning, and invoke emotions. A color palette ensures a familiar and consistent experience across our products. + +Content: +Palette Section titled Palette Neutral colors Section titled Neutral colors The neutral palette consists of black, white, and grays. The neutral palette is dominant in our UI, using subtle shifts in value to create hierarchy and organize content. black-050 black-100 black-150 black-200 black-225 black-250 black-300 black-350 black-400 black-500 black-600 Saturated colors Section titled Saturated colors Stacks uses 5 colors with 6 stops per color. Colors are used sparingly and intentionally to convey meaning, draw attention to UI, or create associations. orange-100 orange-200 orange-300 orange-400 orange-500 orange-600 blue-100 blue-200 blue-300 blue-400 blue-500 blue-600 green-100 green-200 green-300 green-400 green-500 green-600 red-100 red-200 red-300 red-400 red-500 red-600 yellow-100 yellow-200 yellow-300 yellow-400 yellow-500 yellow-600 purple-100 purple-200 purple-300 purple-400 purple-500 purple-600 pink-100 pink-200 pink-300 pink-400 pink-500 pink-600 orange-100 orange-200 orange-300 orange-400 orange-500 orange-600 blue-100 blue-200 blue-300 blue-400 blue-500 blue-600 green-100 green-200 green-300 green-400 green-500 green-600 red-100 red-200 red-300 red-400 red-500 red-600 yellow-100 yellow-200 yellow-300 yellow-400 yellow-500 yellow-600 purple-100 purple-200 purple-300 purple-400 purple-500 purple-600 pink-100 pink-200 pink-300 pink-400 pink-500 pink-600 Usage Section titled Usage Color roles Section titled Color roles Color roles describe the intention behind the color. Role Description black-400 Neutral Use for text and secondary UI elements, such as buttons theme-secondary Primary Use for primary actions theme-primary Accent Use for UI that either relates to the brand or doesn’t have a specific meaning tied to it. blue-400 Information Use for UI to communicate information that you’d like the user to be aware of success Success Use for UI to communicate a successful action has taken place warning Warning Use for UI that communicates a user should proceed with caution danger Danger Use for UI that communicates the user has encountered danger or an error purple-400 Discovery Use for UI that depicts something new, such as onboarding or a new feature Backgrounds Section titled Backgrounds Default background color black-050 50 black-100 100 black-150 150 black-200 200 black-225 black-250 black-300 black-350 black-400 black-500 black-600 Background layers Stops 50 through 200 are used for background layers Borders Section titled Borders black-050 black-100 black-150 black-200 200 black-225 225 black-250 black-300 300 black-350 black-400 black-500 black-600 Decorative borders Input borders Stops 200 and 225 are used for decorative borders and dividers throughout our UI. The 250 stop is used for input borders such as text field or secondary button. Text Section titled Text black-050 black-100 black-150 black-200 black-225 black-250 black-300 black-350 black-400 400 black-500 500 black-600 600 Text Heading Stops 500 and 600 can be used for text. Neutrals, blue, red, and green can also be used at 400 and will meet APCA contrast minimums within these shades. Orange and yellow should not be used at 400 because it does not meet our contrast standards. Icons and illustrations Section titled Icons and illustrations black-050 black-100 black-150 black-200 black-225 black-250 black-300 black-350 350 black-400 400 black-500 500 black-600 Illustrations Icons Stops 400 and 500 are for icons, while 350 should be used for more detailed illustrations. Layering Section titled Layering Colors in the neutral palette are layered on top of each other to foster a sense of hierarchy and create associations. Body background Content Component Body background Content Component Background layer Light mode Dark mode Body background black-100 black-100 (Teams) black-050 black-100 (SO) white white Content black-050 black-050 black-050 black-050 Component black-100 black-100 black-100 black-100 Component alt black-150 black-150 black-150 black-150 Emphasis levels Section titled Emphasis levels Emphasis determines the amount of contrast a color has against the default surface. Emphasis has a range from subtle to bold. Bold emphasis has more contrast against the background, which adds more attention than using UI with the subtle or default emphasis level. Robots Robots Robots Robots Robots Robots Bold Robots Robots Robots Robots Robots Robots Default Robots Robots Robots Robots Robots Robots Subtle Text Bold Text Default Text Subtle Interaction states Section titled Interaction states In Stacks, a component will get darker (or lighter in dark mode) as they interact with it. These progresses happen by adding 100 to the color before the interaction happens. Example: Blue-400 on hover becomes Blue-500. For a disabled button state, subtract 100 from the default color. Button Default Button Hover Button Selected Button Disabled Light, dark, and high contrast modes Section titled Light, dark, and high contrast modes Stacks supports light, dark, and high contrast modes. By using Stacks, you will get each of these modes for free. By using a Stacks component, an atomic color class, or CSS variable directly, your theme will switch appropriately based on the following methods: You can apply .theme-system to the body element. This will change colors based on the prefers-color-scheme media query, which is ultimately powered by the user’s system or browser settings. This can be preferable for folks who have their system turn to dark mode based on ambient light or time of day. Alternatively, you can set a dark mode that is not system dependent by attaching .theme-dark to the body element. Adding .theme-highcontrast to the body element will boost colors to WCAG Level AAA contrast ratios in as many places as possible. This mode stacks on top of both light and dark modes. The only exception is branded themed colors remain untouched by high contrast mode. There are also conditional classes that can be applied to override assumed dark mode colors, force light mode, or to force dark mode. Forcing modes can be good for previews in admin-only situations. + +--- + +### Page: Icons +URL: https://stackoverflow.design/product/foundation/icons/ +Date: 2026-03-24T21:30:16.530Z +Tags: foundation +description: Stacks provides a complete icon set, managed separately in the Stacks-Icons repository. There you’ll find deeper documentation on the various uses as well as the icons’ source in our design tool Figma. + +Content: +Usage Section titled Usage Stacks icons are designed to be directly injected into the markup as an svg element. This allows us to color them on the fly using any of our atomic classes. We have different helpers in different environments. Production Section titled Production If you’re in Stack Overflow’s production environment, we have a helper that can be called with @Svg. and the icon name, eg. @Svg.Alert . By default, any icon will inherit the text color of the parent element. Optionally, you can pass the class native to the icon to render any native colors that are included eg. @Svg.Ballon.With("native") . This same syntax allows you to pass additional arbitrary classes like atomic helpers, or js- prefixed classes. @Svg .Wave @Svg .Wave.With( "native" ) @Svg .Wave.With( "fc-black-350 float-right js-dropdown-target" ) Default With native colors With arbitrary classes Prototypes Section titled Prototypes Our icon set also includes a JavaScript library for use in prototypes outside our production environment. This JavaScript is loaded in our Stacks playground in Codepen . When using data-icon attributes, you need to prefix the icon names with Icon (e.g. IconWave ). If you’re building a prototype in your own environment, you’ll need to include Stacks as a dependency as well as the icons library . < svg data-icon = "IconWave" > </ svg > < svg data-icon = "IconWave" class = "native" > </ svg > < svg data-icon = "IconWave" class = "fc-black-350 float-right js-dropdown-target" > </ svg > Default With native colors With arbitrary classes Documentation Section titled Documentation For use within our documentation, we’ve also included a Liquid helper. {% icon "Wave" %} {% icon "Wave" , "native" %} {% icon "Wave" , "fc-black-350 float-right js-dropdown-target" %} Default With native colors With arbitrary classes Requesting an icon Section titled Requesting an icon If an icon you need isn’t here, please do one of the following two options: Submit a request outlining the desired icon, the icon’s intended purposed, and where it will be used. If the icon is ready, submit a pull request to have it to be reviewed. Please be sure to provide the same information as above. Icon set Section titled Icon set Toggle native colors @Svg.Alert Alert icon @Svg.Alert16 Alert16 icon @Svg.Alert16Fill Alert16Fill icon @Svg.Alert24 Alert24 icon @Svg.Alert24Fill Alert24Fill icon @Svg.Alert32 Alert32 icon @Svg.Alert32Fill Alert32Fill icon @Svg.AlertFill AlertFill icon @Svg.Answer Answer icon @Svg.Answer16 Answer16 icon @Svg.Answer16Duotone Answer16Duotone icon @Svg.Answer16Fill Answer16Fill icon @Svg.Answer24 Answer24 icon @Svg.Answer24Duotone Answer24Duotone icon @Svg.Answer24Fill Answer24Fill icon @Svg.Answer24Stack Answer24Stack icon @Svg.Answer24StackDuotone Answer24StackDuotone icon @Svg.Answer24StackFill Answer24StackFill icon @Svg.Answer32 Answer32 icon @Svg.Answer32Duotone Answer32Duotone icon @Svg.Answer32Fill Answer32Fill icon @Svg.Answer32Stack Answer32Stack icon @Svg.Answer32StackDuotone Answer32StackDuotone icon @Svg.Answer32StackFill Answer32StackFill icon @Svg.Answer64 Answer64 icon @Svg.Answer64Duotone Answer64Duotone icon @Svg.Answer64Fill Answer64Fill icon @Svg.Answer64Stack Answer64Stack icon @Svg.Answer64StackDuotone Answer64StackDuotone icon @Svg.Answer64StackFill Answer64StackFill icon @Svg.AnswerDuotone AnswerDuotone icon @Svg.AnswerFill AnswerFill icon @Svg.AnswerStack AnswerStack icon @Svg.AnswerStackDuotone AnswerStackDuotone icon @Svg.AnswerStackFill AnswerStackFill icon @Svg.Archive Archive icon @Svg.Archive16 Archive16 icon @Svg.Archive16Fill Archive16Fill icon @Svg.ArchiveFill ArchiveFill icon @Svg.ArrowDown ArrowDown icon @Svg.ArrowDownBox ArrowDownBox icon @Svg.ArrowDownLeft ArrowDownLeft icon @Svg.ArrowDownLeftBox ArrowDownLeftBox icon @Svg.ArrowDownRight ArrowDownRight icon @Svg.ArrowLeft ArrowLeft icon @Svg.ArrowLeftBox ArrowLeftBox icon @Svg.ArrowRight ArrowRight icon @Svg.ArrowRightBox ArrowRightBox icon @Svg.ArrowUp ArrowUp icon @Svg.ArrowUpBox ArrowUpBox icon @Svg.ArrowUpLeft ArrowUpLeft icon @Svg.ArrowUpRight ArrowUpRight icon @Svg.ArrowUpRightBox ArrowUpRightBox icon @Svg.Assistant Assistant icon @Svg.Assistant16 Assistant16 icon @Svg.Assistant24 Assistant24 icon @Svg.Assistant32 Assistant32 icon @Svg.Assistant64 Assistant64 icon @Svg.Award Award icon @Svg.Award16 Award16 icon @Svg.Award16Fill Award16Fill icon @Svg.AwardFill AwardFill icon @Svg.Blog Blog icon @Svg.Blog32 Blog32 icon @Svg.Bookmark Bookmark icon @Svg.Bookmark24 Bookmark24 icon @Svg.Bookmark32 Bookmark32 icon @Svg.Bookmark64 Bookmark64 icon @Svg.Bookmark64Stack Bookmark64Stack icon @Svg.BookmarkFill BookmarkFill icon @Svg.BookmarkStack BookmarkStack icon @Svg.BookmarkStackFill BookmarkStackFill icon @Svg.Calendar Calendar icon @Svg.Calendar64 Calendar64 icon @Svg.Challenge Challenge icon @Svg.Challenge64 Challenge64 icon @Svg.ChallengeFill ChallengeFill icon @Svg.Chart Chart icon @Svg.Chat Chat icon @Svg.Chat24 Chat24 icon @Svg.Chat24Duotone Chat24Duotone icon @Svg.Chat24Fill Chat24Fill icon @Svg.Chat32 Chat32 icon @Svg.Chat32Duotone Chat32Duotone icon @Svg.Chat32Fill Chat32Fill icon @Svg.Chat64 Chat64 icon @Svg.Chat64Duotone Chat64Duotone icon @Svg.Chat64Fill Chat64Fill icon @Svg.ChatDuotone ChatDuotone icon @Svg.ChatFill ChatFill icon @Svg.Check Check icon @Svg.Check16 Check16 icon @Svg.Check16Circle Check16Circle icon @Svg.Check16FillCircle Check16FillCircle icon @Svg.Check16FillSquare Check16FillSquare icon @Svg.Check16Square Check16Square icon @Svg.Check24 Check24 icon @Svg.Check24Circle Check24Circle icon @Svg.Check24FillCircle Check24FillCircle icon @Svg.Check24FillSquare Check24FillSquare icon @Svg.Check24Square Check24Square icon @Svg.Check32 Check32 icon @Svg.Check32Circle Check32Circle icon @Svg.Check32FillCircle Check32FillCircle icon @Svg.Check32FillSquare Check32FillSquare icon @Svg.Check32Square Check32Square icon @Svg.CheckCircle CheckCircle icon @Svg.CheckFillCircle CheckFillCircle icon @Svg.CheckFillSquare CheckFillSquare icon @Svg.CheckSquare CheckSquare icon @Svg.Chevron12Down Chevron12Down icon @Svg.Chevron12DownFill Chevron12DownFill icon @Svg.Chevron12DownUp Chevron12DownUp icon @Svg.Chevron12DownUpFill Chevron12DownUpFill icon @Svg.Chevron12Left Chevron12Left icon @Svg.Chevron12LeftFill Chevron12LeftFill icon @Svg.Chevron12Right Chevron12Right icon @Svg.Chevron12RightFill Chevron12RightFill icon @Svg.Chevron12Up Chevron12Up icon @Svg.Chevron12UpDown Chevron12UpDown icon @Svg.Chevron12UpDownFill Chevron12UpDownFill icon @Svg.Chevron12UpFill Chevron12UpFill icon @Svg.Chevron16Down Chevron16Down icon @Svg.Chevron16DownFill Chevron16DownFill icon @Svg.Chevron16DownUp Chevron16DownUp icon @Svg.Chevron16DownUpFill Chevron16DownUpFill icon @Svg.Chevron16Left Chevron16Left icon @Svg.Chevron16LeftFill Chevron16LeftFill icon @Svg.Chevron16Right Chevron16Right icon @Svg.Chevron16RightFill Chevron16RightFill icon @Svg.Chevron16Up Chevron16Up icon @Svg.Chevron16UpDown Chevron16UpDown icon @Svg.Chevron16UpDownFill Chevron16UpDownFill icon @Svg.Chevron16UpFill Chevron16UpFill icon @Svg.ChevronDown ChevronDown icon @Svg.ChevronLeft ChevronLeft icon @Svg.ChevronRight ChevronRight icon @Svg.ChevronUp ChevronUp icon @Svg.Clock Clock icon @Svg.Clock64 Clock64 icon @Svg.Code Code icon @Svg.CodeBox CodeBox icon @Svg.CodeDocument CodeDocument icon @Svg.Comment Comment icon @Svg.Comment16 Comment16 icon @Svg.Comment16Fill Comment16Fill icon @Svg.CommentFill CommentFill icon @Svg.Community Community icon @Svg.CommunityFill CommunityFill icon @Svg.CommunityFillStack CommunityFillStack icon @Svg.CommunityStack CommunityStack icon @Svg.Company Company icon @Svg.Company64 Company64 icon @Svg.CompanyFill CompanyFill icon @Svg.Compose Compose icon @Svg.ComposeComment ComposeComment icon @Svg.ComposeCommentFill ComposeCommentFill icon @Svg.ComposeDocument ComposeDocument icon @Svg.ComposeDocumentFill ComposeDocumentFill icon @Svg.ComposeFill ComposeFill icon @Svg.Cross Cross icon @Svg.Cross16 Cross16 icon @Svg.Cross16Circle Cross16Circle icon @Svg.Cross16FillCircle Cross16FillCircle icon @Svg.Cross16FillSquare Cross16FillSquare icon @Svg.Cross16Square Cross16Square icon @Svg.Cross24 Cross24 icon @Svg.Cross24Circle Cross24Circle icon @Svg.Cross24FillCircle Cross24FillCircle icon @Svg.Cross24FillSquare Cross24FillSquare icon @Svg.Cross24Square Cross24Square icon @Svg.Cross32 Cross32 icon @Svg.Cross32Circle Cross32Circle icon @Svg.Cross32FillCircle Cross32FillCircle icon @Svg.Cross32FillSquare Cross32FillSquare icon @Svg.Cross32Square Cross32Square icon @Svg.CrossCircle CrossCircle icon @Svg.CrossFillCircle CrossFillCircle icon @Svg.CrossFillSquare CrossFillSquare icon @Svg.CrossSquare CrossSquare icon @Svg.Document Document icon @Svg.Document16 Document16 icon @Svg.Document16Fill Document16Fill icon @Svg.Document16Stack Document16Stack icon @Svg.Document16StackFill Document16StackFill icon @Svg.Document32Stack Document32Stack icon @Svg.Document64Stack Document64Stack icon @Svg.DocumentFill DocumentFill icon @Svg.DocumentStack DocumentStack icon @Svg.DocumentStackFill DocumentStackFill icon @Svg.Expert Expert icon @Svg.Expert16 Expert16 icon @Svg.Expert16Fill Expert16Fill icon @Svg.ExpertFill ExpertFill icon @Svg.Eye Eye icon @Svg.Eye16 Eye16 icon @Svg.Eye16Fill Eye16Fill icon @Svg.Eye16FillOff Eye16FillOff icon @Svg.Eye16Off Eye16Off icon @Svg.EyeOff EyeOff icon @Svg.Flag Flag icon @Svg.FlagFill FlagFill icon @Svg.FlagOff FlagOff icon @Svg.FlagOffFill FlagOffFill icon @Svg.Glyph Glyph icon @Svg.Glyph16 Glyph16 icon @Svg.Glyph16Square Glyph16Square icon @Svg.Glyph24 Glyph24 icon @Svg.Glyph24Square Glyph24Square icon @Svg.Glyph32 Glyph32 icon @Svg.Glyph32Square Glyph32Square icon @Svg.Glyph64 Glyph64 icon @Svg.Glyph64Square Glyph64Square icon @Svg.GlyphSquare GlyphSquare icon @Svg.... + +--- + +### Page: Spot illustrations +URL: https://stackoverflow.design/product/foundation/spots/ +Date: 2026-03-24T21:30:16.531Z +Tags: foundation +description: Spot illustrations are the slightly grown up version of icons with a little more detail. They’re most often used in empty states and new product announcements. They’re built externally on the Icons repository. + +Content: +Using the spots helpers Section titled Using the spots helpers Just like icons, spot illustrations are delivered as a Razor helper in Stack Overflow’s production environment, a custom liquid tag in our documentation’s Eleventy site generator, and a JavaScript helper for use in prototypes. Helpers should be used for all spot illustrations in lieu of SVG sprite sheets or static raster image assets. This ensures a single source of truth for all spot illustrations. Basic Section titled Basic <!-- Razor --> @Svg.Spot.Wave <!-- Liquid --> {% spot "Wave" %} <!-- JavaScript Helper --> < svg data-spot = "SpotWave" > </ svg > Arbitrary classes Section titled Arbitrary classes Spot illustrations can be colored on the fly with support for arbitrary classes. <!-- Razor --> @Svg.Spot.Wave.With("fc-orange-400 float-right js-dropdown-target") <!-- Liquid --> {% spot "Wave", "fc-orange-400 float-right js-dropdown-target" %} <!-- JavaScript Helper --> < svg data-spot = "SpotWave" class = "fc-orange-400 float-right js-dropdown-target" > </ svg > Spot illustrations Section titled Spot illustrations @Svg.Spot.Ads Ads spot @Svg.Spot.Answers Answers spot @Svg.Spot.Award Award spot @Svg.Spot.Celebrate Celebrate spot @Svg.Spot.Chat Chat spot @Svg.Spot.Checklist Checklist spot @Svg.Spot.Coding Coding spot @Svg.Spot.Conversation Conversation spot @Svg.Spot.Create Create spot @Svg.Spot.Dataset Dataset spot @Svg.Spot.Document Document spot @Svg.Spot.Empty Empty spot @Svg.Spot.Error Error spot @Svg.Spot.Error401 Error401 spot @Svg.Spot.Error404 Error404 spot @Svg.Spot.Error500 Error500 spot @Svg.Spot.Error503 Error503 spot @Svg.Spot.Idea Idea spot @Svg.Spot.Ideas Ideas spot @Svg.Spot.Learning Learning spot @Svg.Spot.Loading Loading spot @Svg.Spot.LoadingGlyph LoadingGlyph spot @Svg.Spot.Lock Lock spot @Svg.Spot.Metrics Metrics spot @Svg.Spot.People People spot @Svg.Spot.Puzzle Puzzle spot @Svg.Spot.Questions Questions spot @Svg.Spot.Search Search spot @Svg.Spot.Server Server spot @Svg.Spot.Support Support spot @Svg.Spot.Validation Validation spot @Svg.Spot.Work Work spot + +--- + +### Page: Theming +URL: https://stackoverflow.design/product/foundation/theming/ +Date: 2026-03-24T21:30:16.531Z +Tags: foundation +description: Stacks provides a robust theming API to handle theming in various contexts. + +Content: +Default theme stops Section titled Default theme stops Stacks provides primary and secondary theme stops that can be overridden in your custom theme. Theme primary theme-primary theme-primary-100 theme-primary-200 theme-primary-300 theme-primary-400 theme-primary-500 theme-primary-600 Theme secondary theme-secondary theme-secondary-100 theme-secondary-200 theme-secondary-300 theme-secondary-400 theme-secondary-500 theme-secondary-600 Theming API Section titled Theming API Programmatic theme generation Section titled Programmatic theme generation Use .create-custom-theme-hsl-variables(@color, @tier, @modeCustom) to create a custom theme. This function generates two sets of CSS variables: 1) independent h/s/l color variables and 2) variables at each colors stop that reference the h/s/l variables. Provide this function the arguments defined below to generate theme colors which will apply across Stacks. Argument Type Default Description @color HSL, hex, or other color value Color to use to generate theme values. @tier primary | secondary primary Color tier to generate. @modeCustom base | dark base The color mode the theme applies to. Format Section titled Format .theme-custom .themed { .create-custom-theme-hsl-variables (hsl( 172 , 37% , 48% ), primary); .create-custom-theme-hsl-variables (hsl( 259 , 29% , 55% ), secondary); .create-custom-theme-hsl-variables (hsl( 201 , 70% , 55% ), primary, dark); .create-custom-theme-hsl-variables (hsl( 270 , 34% , 40% ), secondary, dark); } Example Section titled Example /* Input */ .theme-custom .themed { .create-custom-theme-hsl-variables (hsl( 172 , 37% , 48% ), primary); } /* Output */ .theme-custom .themed { /* HSL variables */ --theme-base-primary-color-h : 172 ; --theme-base-primary-color-s : 37% ; --theme-base-primary-color-l : 48% ; /* Color variables based on HSL variables */ --theme-primary-custom : var (--theme-primary-custom- 400 ); --theme-primary-custom-100 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 70% , calc ( var (--theme-base-primary-color-l) + 50 * 1% ), 95% )); --theme-primary-custom-200 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 55% , calc ( var (--theme-base-primary-color-l) + 35 * 1% ), 90% )); --theme-primary-custom-300 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 35% , calc ( var (--theme-base-primary-color-l) + 15 * 1% ), 75% )); --theme-primary-custom-400 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 20% , calc ( var (--theme-base-primary-color-l) + 0 * 1% ), 60% )); --theme-primary-custom-500 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 15% , calc ( var (--theme-base-primary-color-l) + - 14 * 1% ), 45% )); --theme-primary-custom-600 : hsl ( var (--theme-base-primary-color-h), calc ( var (--theme-base-primary-color-s) + 0 * 1% ), clamp ( 5% , calc ( var (--theme-base-primary-color-l) + - 26 * 1% ), 30% )); } Manual addition of theme variables Section titled Manual addition of theme variables If you need to apply a theme without using the above function, you can do so by manually adding the variables above to your CSS. The most common use for this approach is when the theme needs to change client-side, such as when allowing the user to change and preview a theme dynamically. With this approach, we recommend targeting new h/s/l color variables on a parent element that includes .themed class. Live playground Section titled Live playground HSL Hue Saturation Lightness Loading… theme-primary theme-primary-100 theme-primary-200 theme-primary-300 theme-primary-400 theme-primary-500 theme-primary-600 Theme variables overrides Section titled Theme variables overrides Stacks provides CSS variables for fine grained control of theming. These variables allow you to adjust the theming on specific components and elements, as well as body background and font color. --theme-background-color --theme-body-font-color --theme-button-active-background-color --theme-button-color --theme-button-hover-background-color --theme-button-hover-color --theme-button-outlined-border-color --theme-button-outlined-selected-border-color --theme-button-primary-active-background-color --theme-button-primary-background-color --theme-button-primary-color --theme-button-primary-hover-background-color --theme-button-primary-hover-color --theme-button-primary-number-color --theme-button-primary-selected-background-color --theme-button-primary-selected-color --theme-button-selected-background-color --theme-button-selected-color --theme-link-color --theme-link-color-hover --theme-link-color-visited --theme-post-body-font-family --theme-post-title-color --theme-post-title-color-hover --theme-post-title-color-visited --theme-post-title-font-family --theme-tag-background-color --theme-tag-border-color --theme-tag-color --theme-tag-hover-background-color --theme-tag-hover-border-color --theme-tag-hover-color --theme-tag-required-background-color --theme-tag-required-border-color --theme-tag-required-color --theme-tag-required-hover-background-color --theme-tag-required-hover-border-color --theme-tag-required-hover-color --theme-topbar-height Child theming Section titled Child theming Stacks allows for further theming various portions of a page. You can simply pair the .themed class with an atomic color stop, and a new theming scope. For this example, we’re using a class name of .theme-team-[xxx] with a unique ID appended. < div class = "bg-theme-primary-740" > </ div > < div class = "themed theme-team-001 bg-theme-primary-400" > </ div > < div class = "themed theme-team-002 bg-theme-primary-400" > </ div > < div class = "themed theme-team-003 bg-theme-primary-400" > </ div > < style > .theme-team-001 { --theme-base-primary-color-h : 349 ; --theme-base-primary-color-s : 81% ; --theme-base-primary-color-l : 58% ; --theme-base-secondary-color-h : 349 ; --theme-base-secondary-color-s : 81% ; --theme-base-secondary-color-l : 58% ; } .theme-team-002 { --theme-base-primary-color-h : 41 ; --theme-base-primary-color-s : 93% ; --theme-base-primary-color-l : 58% ; --theme-base-secondary-color-h : 41 ; --theme-base-secondary-color-s : 93% ; --theme-base-secondary-color-l : 58% ; } .theme-team-003 { --theme-base-primary-color-h : 288 ; --theme-base-primary-color-s : 76% ; --theme-base-primary-color-l : 38% ; --theme-base-secondary-color-h : 288 ; --theme-base-secondary-color-s : 76% ; --theme-base-secondary-color-l : 38% ; /* Override colors for dark mode only */ --theme-dark-primary-color-h : 288 ; --theme-dark-primary-color-s : 45% ; --theme-dark-primary-color-l : 60% ; --theme-dark-secondary-color-h : 288 ; --theme-dark-secondary-color-s : 45% ; --theme-dark-secondary-color-l : 60% ; } </ style > Default Section titled Default body Subscribe 1 2 Next .themed.theme-team-001 C Subscribe 1 2 Next .themed.theme-team-002 C Subscribe 1 2 Next .themed.theme-team-003 C Subscribe 1 2 Next Light forced Section titled Light forced body .theme-light__forced Subscribe 1 2 Next .theme-light__forced .themed.theme-team-001 C Subscribe 1 2 Next .theme-light__forced .themed.theme-team-002 C Subscribe 1 2 Next .theme-light__forced .themed.theme-team-003 C Subscribe 1 2 Next Dark forced Section titled Dark forced body .theme-dark__forced Subscribe 1 2 Next .theme-dark__forced .themed.theme-team-001 C Subscribe 1 2 Next .theme-dark__forced .themed.theme-team-002 C Subscribe 1 2 Next .theme-dark__forced .themed.theme-team-003 C Subscribe 1 2 Next + +--- + +### Page: Typography +URL: https://stackoverflow.design/product/foundation/typography/ +Date: 2026-03-24T21:30:16.531Z +Tags: foundation +description: Stacks provides atomic classes to override default styling of typography. Change typographic weights, styles, and alignment with these atomic styles. + +Content: +Basic Section titled Basic These styles should only be used as overrides. They shouldn’t replace standard semantic uses of strong or em tags. Basic classes Section titled Basic classes Class Output Definition .fw-normal font-weight: 400; Normal font weight. Maps to 400. .fw-medium font-weight: 500; Medium font weight. Maps to 500. .fw-bold font-weight: 600; Bold font weight. Maps to 600. .fs-normal font-style: normal; Selects the normal font within the font-family. .fs-italic font-style: italic; Selects the italic font within the font-family. .tt-capitalize text-transform: capitalize; The first character in each word is capitalized regardless of markup. .tt-lowercase text-transform: lowercase; All characters are lowercase regardless of markup. .tt-uppercase text-transform: uppercase; All characters are uppercase regardless of markup. .tt-none text-transform: none; Characters in a string remain unchanged. .tt-unset text-transform: unset; Text-transform is unset entirely. .td-underline text-decoration: underline; Text renders with an underline. .td-none text-decoration: none; Text renders without an underline. Basic examples Section titled Basic examples < p class = "fw-normal" > … </ p > < p class = "fw-bold" > … </ p > < p class = "fs-normal" > … </ p > < p class = "fs-italic" > … </ p > < p class = "fs-unset" > … </ p > < p class = "tt-capitalize" > … </ p > < p class = "tt-lowercase" > … </ p > < p class = "tt-uppercase" > … </ p > < p class = "tt-none" > … </ p > < p class = "tt-unset" > … </ p > < a class = "td-underline" > … </ a > < a class = "td-none" > … </ a > Font Weight: Normal Font Weight: Bold Font Style: Normal Font Style: Italic Font Style: Unset Text Transform: Capitalize Text Transform: Lowercase Text Transform: Uppercase Text Transform: None Text Transform: Unset Text Decoration: Underline Text Decoration: None Layout Section titled Layout Layout classes Section titled Layout classes Class Output Definition Responsive? .ta-left text-align: left; Inline contents are aligned to the left edge. .ta-center text-align: center; Inline contents are aligned to the center. .ta-right text-align: right; Inline contents are aligned to the right edge. .ta-justify text-align: justify; Inline contents are justified. Text should be spaced to line up its left and right edges to the left and right edges, except for the last line. .ws-normal white-space: normal; Lines are broken as necessary to fill the parent. .ws-nowrap white-space: nowrap; Text wrapping is disabled. .ws-pre white-space: pre; Whitespace is preserved but text won’t wrap. .ws-pre-wrap white-space: pre-wrap; Whitespace is preserved but text will wrap. New lines are preserved. .ws-pre-line white-space: pre-line; Whitespace is preserved but text will wrap. New lines are collapsed. .ow-normal word-break: normal; Restores overflow wrapping behavior. .ow-anywhere overflow-wrap: anywhere; Breaks a string of characters at any point when no other acceptable break points are available and does not hyphenate the break. .ow-break-word overflow-wrap: break-word; Breaks a word to a new line only if the entire word cannot be placed on its own line without overflowing. .ow-inherit overflow-wrap: inherit; Inherits the parent value. .ow-intial overflow-wrap: intial; Restores the value to the initial value set on the body. .ow-unset overflow-wrap: unset; Unsets any inherited behavior. Does not work in IE. .break-word word-break: break-word; overflow-wrap: break-word; hyphens: auto; A utility class combining all word-break strategies when you absolutely must break a word. .wb-normal word-break: normal; Restores word break behavior. .wb-break-all word-break: break-all; To prevent copy from overflowing its box, breaks should occur between any two characters (excluding Chinese, Japanese, and Korean text) .wb-keep-all word-break: keep-all; Removes word breaks for Chinese, Japanese, and Korean text. All other text behavior is the same as normal. .wb-inherit word-break: inherit; Inherits the parent value. .wb-intial word-break: intial; Restores the value to the initial value set on the body. .wb-unset word-break: unset; Unsets any inherited behavior. Layout examples Section titled Layout examples < p class = "ta-left" > Text align: Left </ p > < p class = "ta-center" > Text align: Center </ p > < p class = "ta-right" > Text align: Right </ p > < p class = "ta-justify" > Justify: … </ p > < p class = "ta-unset" > Text align: Unset </ p > < p class = "ws-normal" > White-space: Normal </ p > < p class = "ws-nowrap" > White-space: Nowrap </ p > < p class = "ws-pre" > White-space: Pre </ p > < p class = "ws-pre-wrap" > White-space: Pre-wrap </ p > < p class = "ws-pre-line" > White-space: Pre-line </ p > < p class = "ws-unset" > White-space: Unset </ p > < p class = "break-word" > Break word </ p > < p class = "truncate" > Truncate: … </ p > Text Align: Left Text Align: Center Text Align: Right Text Align: Justify — Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Text Align: Unset White-space: Normal White-space: Nowrap White-space: Pre White-space: Pre-wrap White-space: Pre-line White-space: Unset Break word: MethionylglutaminylarginylhionylglutaminylargintyrosylglutamylmethionylglutaminylarginyltyrlarginyltyrosylglutamylMethionylglutaminylarginyltyrosylglutamylnyltyrosylserinemethionylglutaminylargiglutamylmethionyosylglutamylmethionylglutaminylglutaminylarginyltyrosylglutamylmethionylglutaminylarginyltyrosylglutamylmetyltyrosylglutamylserine Fonts Section titled Fonts < p class = "ff-sans" > … </ p > < p class = "ff-serif" > … </ p > < p class = "ff-mono" > … </ p > < p class = "ff-inherit" > … </ p > Sans Serif -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" Serif Georgia, Cambria, "Times New Roman", Times, serif Monospace "SF Mono", SFMono-Regular, ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace Sizes Section titled Sizes Fonts larger than .fs-body1 are reduced in size at the smallest responsive breakpoint. .fs-body1 or smaller remain fixed at their initial pixel values. Size classes Section titled Size classes Class Size Line Height Responsive Size .fs-fine 12px 1.36 12px .fs-caption 13px 1.40 13px .fs-body1 14px 1.40 14px .fs-body2 16px 1.40 15px .fs-body3 18px 1.40 16px .fs-subheading 20px 1.40 18px .fs-title 22px 1.40 20px .fs-headline1 28px 1.40 23px .fs-headline2 36px 1.40 26px .fs-display1 46px 1.34 29px .fs-display2 58px 1.28 34px .fs-display3 72px 1.20 37px .fs-display4 100px 1.18 43px Size examples Section titled Size examples < p class = "fs-fine" > … </ p > < p class = "fs-caption" > … </ p > < p class = "fs-body1" > … </ p > < p class = "fs-body2" > … </ p > < p class = "fs-body3" > … </ p > < p class = "fs-subheading" > … </ p > < p class = "fs-title" > … </ p > < p class = "fs-headline1" > … </ p > < p class = "fs-headline2" > … </ p > < p class = "fs-display1" > … </ p > < p class = "fs-display2" > … </ p > < p class = "fs-display3" > … </ p > < p class = "fs-display4" > … </ p > Fine Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Caption Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Body 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Body 2 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Body 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Subheading Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.... + +--- + +### Page: Colors +URL: https://stackoverflow.design/product/foundation/colors/ +Date: 2026-03-25T21:24:55.627Z +Tags: foundation +description: To avoid specifying color values by hand, we’ve included a robust set of color variables. For maintainability, please use these instead of hardcoding color values. + +Content: +Stops Section titled Stops Theme primary theme-primary theme-primary-100 theme-primary-200 theme-primary-300 theme-primary-400 theme-primary-500 theme-primary-600 Theme secondary theme-secondary theme-secondary-100 theme-secondary-200 theme-secondary-300 theme-secondary-400 theme-secondary-500 theme-secondary-600 Orange orange-100 orange-200 orange-300 orange-400 orange-500 orange-600 Blue blue-100 blue-200 blue-300 blue-400 blue-500 blue-600 Green green-100 green-200 green-300 green-400 green-500 green-600 Red red-100 red-200 red-300 red-400 red-500 red-600 Yellow yellow-100 yellow-200 yellow-300 yellow-400 yellow-500 yellow-600 Purple purple-100 purple-200 purple-300 purple-400 purple-500 purple-600 Pink pink-100 pink-200 pink-300 pink-400 pink-500 pink-600 Black black-050 black-100 black-150 black-200 black-225 black-250 black-300 black-350 black-400 black-500 black-600 black White white Brand Section titled Brand Please see the brand guidlines for color use , these should not be used without prior direction from the brand team. brand brand-black brand-off-white brand-blue-light brand-blue brand-blue-dark brand-brown-light brand-green brand-green-dark brand-orange-medium brand-orange-dark brand-pink brand-pink-dark brand-purple brand-purple-dark brand-yellow brand-yellow-dark Classes Section titled Classes Each color stop is available as an atomic text, background, and border class. Using these atomic classes means your view will respond to dark mode appropriately. These colors are available conditionally . Theme primary Section titled Theme primary Text Background Border .fc-theme-primary .bg-theme-primary .bc-theme-primary .fc-theme-primary-100 .bg-theme-primary-100 .bc-theme-primary-100 .fc-theme-primary-200 .bg-theme-primary-200 .bc-theme-primary-200 .fc-theme-primary-300 .bg-theme-primary-300 .bc-theme-primary-300 .fc-theme-primary-400 .bg-theme-primary-400 .bc-theme-primary-400 .fc-theme-primary-500 .bg-theme-primary-500 .bc-theme-primary-500 .fc-theme-primary-600 .bg-theme-primary-600 .bc-theme-primary-600 Theme secondary Section titled Theme secondary Text Background Border .fc-theme-secondary .bg-theme-secondary .bc-theme-secondary .fc-theme-secondary-100 .bg-theme-secondary-100 .bc-theme-secondary-100 .fc-theme-secondary-200 .bg-theme-secondary-200 .bc-theme-secondary-200 .fc-theme-secondary-300 .bg-theme-secondary-300 .bc-theme-secondary-300 .fc-theme-secondary-400 .bg-theme-secondary-400 .bc-theme-secondary-400 .fc-theme-secondary-500 .bg-theme-secondary-500 .bc-theme-secondary-500 .fc-theme-secondary-600 .bg-theme-secondary-600 .bc-theme-secondary-600 Orange Section titled Orange Text Background Border .fc-orange-100 .bg-orange-100 .bc-orange-100 .fc-orange-200 .bg-orange-200 .bc-orange-200 .fc-orange-300 .bg-orange-300 .bc-orange-300 .fc-orange-400 .bg-orange-400 .bc-orange-400 .fc-orange-500 .bg-orange-500 .bc-orange-500 .fc-orange-600 .bg-orange-600 .bc-orange-600 Blue Section titled Blue Text Background Border .fc-blue-100 .bg-blue-100 .bc-blue-100 .fc-blue-200 .bg-blue-200 .bc-blue-200 .fc-blue-300 .bg-blue-300 .bc-blue-300 .fc-blue-400 .bg-blue-400 .bc-blue-400 .fc-blue-500 .bg-blue-500 .bc-blue-500 .fc-blue-600 .bg-blue-600 .bc-blue-600 Green Section titled Green Text Background Border .fc-green-100 .bg-green-100 .bc-green-100 .fc-green-200 .bg-green-200 .bc-green-200 .fc-green-300 .bg-green-300 .bc-green-300 .fc-green-400 .bg-green-400 .bc-green-400 .fc-green-500 .bg-green-500 .bc-green-500 .fc-green-600 .bg-green-600 .bc-green-600 Red Section titled Red Text Background Border .fc-red-100 .bg-red-100 .bc-red-100 .fc-red-200 .bg-red-200 .bc-red-200 .fc-red-300 .bg-red-300 .bc-red-300 .fc-red-400 .bg-red-400 .bc-red-400 .fc-red-500 .bg-red-500 .bc-red-500 .fc-red-600 .bg-red-600 .bc-red-600 Yellow Section titled Yellow Text Background Border .fc-yellow-100 .bg-yellow-100 .bc-yellow-100 .fc-yellow-200 .bg-yellow-200 .bc-yellow-200 .fc-yellow-300 .bg-yellow-300 .bc-yellow-300 .fc-yellow-400 .bg-yellow-400 .bc-yellow-400 .fc-yellow-500 .bg-yellow-500 .bc-yellow-500 .fc-yellow-600 .bg-yellow-600 .bc-yellow-600 Purple Section titled Purple Text Background Border .fc-purple-100 .bg-purple-100 .bc-purple-100 .fc-purple-200 .bg-purple-200 .bc-purple-200 .fc-purple-300 .bg-purple-300 .bc-purple-300 .fc-purple-400 .bg-purple-400 .bc-purple-400 .fc-purple-500 .bg-purple-500 .bc-purple-500 .fc-purple-600 .bg-purple-600 .bc-purple-600 Pink Section titled Pink Text Background Border .fc-pink-100 .bg-pink-100 .bc-pink-100 .fc-pink-200 .bg-pink-200 .bc-pink-200 .fc-pink-300 .bg-pink-300 .bc-pink-300 .fc-pink-400 .bg-pink-400 .bc-pink-400 .fc-pink-500 .bg-pink-500 .bc-pink-500 .fc-pink-600 .bg-pink-600 .bc-pink-600 Black Section titled Black Text Background Border .fc-black-050 .bg-black-050 .bc-black-050 .fc-black-100 .bg-black-100 .bc-black-100 .fc-black-150 .bg-black-150 .bc-black-150 .fc-black-200 .bg-black-200 .bc-black-200 .fc-black-225 .bg-black-225 .bc-black-225 .fc-black-250 .bg-black-250 .bc-black-250 .fc-black-300 .bg-black-300 .bc-black-300 .fc-black-350 .bg-black-350 .bc-black-350 .fc-black-400 .bg-black-400 .bc-black-400 .fc-black-500 .bg-black-500 .bc-black-500 .fc-black-600 .bg-black-600 .bc-black-600 .fc-black-600 .bg-black-600 .bc-black-600 White Section titled White Text Background Border .fc-white .bg-white .bc-white Aliases Section titled Aliases Body text Section titled Body text < p class = "fc-light" > … </ p > < p class = "fc-medium" > … </ p > < p > … </ p > < p class = "fc-dark" > … </ p > Text classes Example .fc-light This is example light text. .fc-medium This is example medium text. .fc-dark This is example dark text. Danger Section titled Danger Text classes Background classes Border Classes .fc-danger .bg-danger .bc-danger Error Section titled Error Text classes Background classes Border Classes .fc-error .bg-error .bc-error Warning Section titled Warning Text classes Background classes Border Classes .fc-warning .bg-warning .bc-warning Success Section titled Success Text classes Background classes Border Classes .fc-success .bg-success .bc-success + +--- + diff --git a/packages/stacks-docs-next/svelte.config.js b/packages/stacks-docs-next/svelte.config.js index 786a9a83e7..fde4e67f1d 100644 --- a/packages/stacks-docs-next/svelte.config.js +++ b/packages/stacks-docs-next/svelte.config.js @@ -48,7 +48,6 @@ const config = { $src: "src", $components: "src/components", $docs: "src/docs", - $data: "../stacks-docs/_data", }, }, extensions: [".svelte", ".md"], From c29b7f850044e0130022a158281f388db0518946 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 12:21:35 -0400 Subject: [PATCH 006/257] =?UTF-8?q?chore:=20revert=20stacks-docs=20changes?= =?UTF-8?q?=20=E2=80=94=20out=20of=20scope=20for=20this=20branch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These changes (page.html template fix, frontmatter Figma URL updates) belong in a separate stacks-docs PR. This branch covers stacks-docs-next only. The duplicate-description and Figma URL concerns are handled in stacks-docs-next via extractLegacyHeader and the committed fragment files. Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs/_includes/layouts/page.html | 4 ++++ packages/stacks-docs/product/base/box-shadow.html | 1 + packages/stacks-docs/product/components/buttons.html | 2 +- packages/stacks-docs/product/components/editor.html | 2 +- packages/stacks-docs/product/components/tags.html | 2 +- .../stacks-docs/product/foundation/color-fundamentals.html | 2 +- packages/stacks-docs/product/foundation/icons.html | 2 +- packages/stacks-docs/product/foundation/spots.html | 2 +- packages/stacks-docs/product/foundation/typography.html | 2 +- 9 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/stacks-docs/_includes/layouts/page.html b/packages/stacks-docs/_includes/layouts/page.html index d8acc61a1e..feb07a35c8 100644 --- a/packages/stacks-docs/_includes/layouts/page.html +++ b/packages/stacks-docs/_includes/layouts/page.html @@ -88,6 +88,10 @@ {% endif %} + {% if description %} +

    {{ description }}

    + {% endif %} +
    {{ content }}
    /,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(ft.source+"\\s*$"),/^$/,!1]],gt=[["table",function(e,t,n,r){if(t+2>n)return!1;let i=t+1;if(e.sCount[i]=4)return!1;let s=e.bMarks[i]+e.tShift[i];if(s>=e.eMarks[i])return!1;const o=e.src.charCodeAt(s++);if(124!==o&&45!==o&&58!==o)return!1;if(s>=e.eMarks[i])return!1;const a=e.src.charCodeAt(s++);if(124!==a&&45!==a&&58!==a&&!Ee(a))return!1;if(45===o&&Ee(a))return!1;for(;s=4)return!1;c=lt(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==h.length)return!1;if(r)return!0;const d=e.parentType;e.parentType="table";const p=e.md.block.ruler.getRules("blockquote"),f=[t,0];e.push("table_open","table",1).map=f,e.push("thead_open","thead",1).map=[t,t+1],e.push("tr_open","tr",1).map=[t,t+1];for(let t=0;t=4)break;if(c=lt(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),g+=u-c.length,g>65536)break;i===t+2&&(e.push("tbody_open","tbody",1).map=m=[t+2,0]),e.push("tr_open","tr",1).map=[i,i+1];for(let t=0;t=4))break;r++,i=r}e.line=i;const s=e.push("code_block","code",0);return s.content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",s.map=[t,e.line],!0}],["fence",function(e,t,n,r){let i=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(i+3>s)return!1;const o=e.src.charCodeAt(i);if(126!==o&&96!==o)return!1;let a=i;i=e.skipChars(i,o);let l=i-a;if(l<3)return!1;const c=e.src.slice(a,i),h=e.src.slice(i,s);if(96===o&&h.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;let u=t,d=!1;for(;!(u++,u>=n||(i=a=e.bMarks[u]+e.tShift[u],s=e.eMarks[u],i=4||(i=e.skipChars(i,o),i-a=4)return!1;if(62!==e.src.charCodeAt(i))return!1;if(r)return!0;const a=[],l=[],c=[],h=[],u=e.md.block.ruler.getRules("blockquote"),d=e.parentType;e.parentType="blockquote";let p,f=!1;for(p=t;p=s)break;if(62===e.src.charCodeAt(i++)&&!t){let t,n,r=e.sCount[p]+1;32===e.src.charCodeAt(i)?(i++,r++,n=!1,t=!0):9===e.src.charCodeAt(i)?(t=!0,(e.bsCount[p]+r)%4==3?(i++,r++,n=!1):n=!0):t=!1;let o=r;for(a.push(e.bMarks[p]),e.bMarks[p]=i;i=s,l.push(e.bsCount[p]),e.bsCount[p]=e.sCount[p]+1+(t?1:0),c.push(e.sCount[p]),e.sCount[p]=o-r,h.push(e.tShift[p]),e.tShift[p]=i-e.bMarks[p];continue}if(f)break;let r=!1;for(let t=0,i=u.length;t";const b=[t,0];g.map=b,e.md.block.tokenize(e,t,p),e.push("blockquote_close","blockquote",-1).markup=">",e.lineMax=o,e.parentType=d,b[1]=e.line;for(let n=0;n=4)return!1;let s=e.bMarks[t]+e.tShift[t];const o=e.src.charCodeAt(s++);if(42!==o&&45!==o&&95!==o)return!1;let a=1;for(;s=4)return!1;if(e.listIndent>=0&&e.sCount[l]-e.listIndent>=4&&e.sCount[l]=e.blkIndent&&(p=!0),(d=ht(e,l))>=0){if(h=!0,o=e.bMarks[l]+e.tShift[l],u=Number(e.src.slice(o,d-1)),p&&1!==u)return!1}else{if(!((d=ct(e,l))>=0))return!1;h=!1}if(p&&e.skipSpaces(d)>=e.eMarks[l])return!1;if(r)return!0;const f=e.src.charCodeAt(d-1),m=e.tokens.length;h?(a=e.push("ordered_list_open","ol",1),1!==u&&(a.attrs=[["start",u]])):a=e.push("bullet_list_open","ul",1);const g=[l,0];a.map=g,a.markup=String.fromCharCode(f);let b=!1;const y=e.md.block.ruler.getRules("list"),k=e.parentType;for(e.parentType="list";l=i?1:r-t,p>4&&(p=1);const m=t+p;a=e.push("list_item_open","li",1),a.markup=String.fromCharCode(f);const g=[l,0];a.map=g,h&&(a.info=e.src.slice(o,d-1));const k=e.tight,v=e.tShift[l],w=e.sCount[l],x=e.listIndent;if(e.listIndent=e.blkIndent,e.blkIndent=m,e.tight=!0,e.tShift[l]=u-e.bMarks[l],e.sCount[l]=r,u>=i&&e.isEmpty(l+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,l,n,!0),e.tight&&!b||(c=!1),b=e.line-l>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=x,e.tShift[l]=v,e.sCount[l]=w,e.tight=k,a=e.push("list_item_close","li",-1),a.markup=String.fromCharCode(f),l=e.line,g[1]=l,l>=n)break;if(e.sCount[l]=4)break;let C=!1;for(let t=0,r=y.length;t=4)return!1;if(91!==e.src.charCodeAt(i))return!1;function a(t){const n=e.lineMax;if(t>=n||e.isEmpty(t))return null;let r=!1;if(e.sCount[t]-e.blkIndent>3&&(r=!0),e.sCount[t]<0&&(r=!0),!r){const r=e.md.block.ruler.getRules("reference"),i=e.parentType;e.parentType="reference";let s=!1;for(let i=0,o=r.length;i=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(i))return!1;let o=e.src.slice(i,s),a=0;for(;a=4)return!1;let o=e.src.charCodeAt(i);if(35!==o||i>=s)return!1;let a=1;for(o=e.src.charCodeAt(++i);35===o&&i6||ii&&Ee(e.src.charCodeAt(l-1))&&(s=l),e.line=t+1;const c=e.push("heading_open","h"+String(a),1);c.markup="########".slice(0,a),c.map=[t,e.line];const h=e.push("inline","",0);return h.content=e.src.slice(i,s).trim(),h.map=[t,e.line],h.children=[],e.push("heading_close","h"+String(a),-1).markup="########".slice(0,a),!0},["paragraph","reference","blockquote"]],["lheading",function(e,t,n){const r=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;const i=e.parentType;e.parentType="paragraph";let s,o=0,a=t+1;for(;a3)continue;if(e.sCount[a]>=e.blkIndent){let t=e.bMarks[a]+e.tShift[a];const n=e.eMarks[a];if(t=n))){o=61===s?1:2;break}}if(e.sCount[a]<0)continue;let t=!1;for(let i=0,s=r.length;i3)continue;if(e.sCount[s]<0)continue;let t=!1;for(let i=0,o=r.length;i=n))&&!(e.sCount[o]=s){e.line=n;break}const t=e.line;let l=!1;for(let s=0;s=e.line)throw new Error("block rule didn't increment state.line");break}if(!l)throw new Error("none of the block rules matched");e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),o=e.line,o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(r),this.tokens_meta.push(i),r},kt.prototype.scanDelims=function(e,t){const n=this.posMax,r=this.src.charCodeAt(e),i=e>0?this.src.charCodeAt(e-1):32;let s=e;for(;s?@[]^_`{|}~-".split("").forEach((function(e){Ct[e.charCodeAt(0)]=1}));const St={tokenize:function(e,t){const n=e.pos,r=e.src.charCodeAt(n);if(t)return!1;if(126!==r)return!1;const i=e.scanDelims(e.pos,!0);let s=i.length;const o=String.fromCharCode(r);if(s<2)return!1;let a;s%2&&(a=e.push("text","",0),a.content=o,s--);for(let t=0;t=0;n--){const r=t[n];if(95!==r.marker&&42!==r.marker)continue;if(-1===r.end)continue;const i=t[r.end],s=n>0&&t[n-1].end===r.end+1&&t[n-1].marker===r.marker&&t[n-1].token===r.token-1&&t[r.end+1].token===i.token+1,o=String.fromCharCode(r.marker),a=e.tokens[r.token];a.type=s?"strong_open":"em_open",a.tag=s?"strong":"em",a.nesting=1,a.markup=s?o+o:o,a.content="";const l=e.tokens[i.token];l.type=s?"strong_close":"em_close",l.tag=s?"strong":"em",l.nesting=-1,l.markup=s?o+o:o,l.content="",s&&(e.tokens[t[n-1].token].content="",e.tokens[t[r.end+1].token].content="",n--)}}const At={tokenize:function(e,t){const n=e.pos,r=e.src.charCodeAt(n);if(t)return!1;if(95!==r&&42!==r)return!1;const i=e.scanDelims(e.pos,42===r);for(let t=0;t\x00-\x20]*)$/,Tt=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,Ot=/^&([a-z][a-z0-9]{1,31});/i;function Nt(e){const t={},n=e.length;if(!n)return;let r=0,i=-2;const s=[];for(let o=0;oa;l-=s[l]+1){const t=e[l];if(t.marker===n.marker&&t.open&&t.end<0){let r=!1;if((t.close||n.open)&&(t.length+n.length)%3==0&&(t.length%3==0&&n.length%3==0||(r=!0)),!r){const r=l>0&&!e[l-1].open?s[l-1]+1:0;s[o]=o-l+r,s[l]=r,n.open=!1,t.end=o,t.close=!1,c=-1,i=-2;break}}}-1!==c&&(t[n.marker][(n.open?3:0)+(n.length||0)%3]=c)}}const Lt=[["text",function(e,t){let n=e.pos;for(;n0)return!1;const n=e.pos;if(n+3>e.posMax)return!1;if(58!==e.src.charCodeAt(n))return!1;if(47!==e.src.charCodeAt(n+1))return!1;if(47!==e.src.charCodeAt(n+2))return!1;const r=e.pending.match(xt);if(!r)return!1;const i=r[1],s=e.md.linkify.matchAtStart(e.src.slice(n-i.length));if(!s)return!1;let o=s.url;if(o.length<=i.length)return!1;o=o.replace(/\*+$/,"");const a=e.md.normalizeLink(o);if(!e.md.validateLink(a))return!1;if(!t){e.pending=e.pending.slice(0,-i.length);const t=e.push("link_open","a",1);t.attrs=[["href",a]],t.markup="linkify",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(o);const n=e.push("link_close","a",-1);n.markup="linkify",n.info="auto"}return e.pos+=o.length-i.length,!0}],["newline",function(e,t){let n=e.pos;if(10!==e.src.charCodeAt(n))return!1;const r=e.pending.length-1,i=e.posMax;if(!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){let t=r-1;for(;t>=1&&32===e.pending.charCodeAt(t-1);)t--;e.pending=e.pending.slice(0,t),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(n++;n=r)return!1;let i=e.src.charCodeAt(n);if(10===i){for(t||e.push("hardbreak","br",0),n++;n=55296&&i<=56319&&n+1=56320&&t<=57343&&(s+=e.src[n+1],n++)}const o="\\"+s;if(!t){const t=e.push("text_special","",0);i<256&&0!==Ct[i]?t.content=s:t.content=o,t.markup=o,t.info="escape"}return e.pos=n+1,!0}],["backticks",function(e,t){let n=e.pos;if(96!==e.src.charCodeAt(n))return!1;const r=n;n++;const i=e.posMax;for(;n=u)return!1;if(l=f,i=e.md.helpers.parseLinkDestination(e.src,f,e.posMax),i.ok){for(o=e.md.normalizeLink(i.str),e.md.validateLink(o)?f=i.pos:o="",l=f;f=u||41!==e.src.charCodeAt(f))&&(c=!0),f++}if(c){if(void 0===e.env.references)return!1;if(f=0?r=e.src.slice(l,f++):f=p+1):f=p+1,r||(r=e.src.slice(d,p)),s=e.env.references[De(r)],!s)return e.pos=h,!1;o=s.href,a=s.title}if(!t){e.pos=d,e.posMax=p;const t=[["href",o]];e.push("link_open","a",1).attrs=t,a&&t.push(["title",a]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)}return e.pos=f,e.posMax=u,!0}],["image",function(e,t){let n,r,i,s,o,a,l,c,h="";const u=e.pos,d=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;const p=e.pos+2,f=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(f<0)return!1;if(s=f+1,s=d)return!1;for(c=s,a=e.md.helpers.parseLinkDestination(e.src,s,e.posMax),a.ok&&(h=e.md.normalizeLink(a.str),e.md.validateLink(h)?s=a.pos:h=""),c=s;s=d||41!==e.src.charCodeAt(s))return e.pos=u,!1;s++}else{if(void 0===e.env.references)return!1;if(s=0?i=e.src.slice(c,s++):s=f+1):s=f+1,i||(i=e.src.slice(p,f)),o=e.env.references[De(i)],!o)return e.pos=u,!1;h=o.href,l=o.title}if(!t){r=e.src.slice(p,f);const t=[];e.md.inline.parse(r,e.md,e.env,t);const n=e.push("image","img",0),i=[["src",h],["alt",""]];n.attrs=i,n.children=t,n.content=r,l&&i.push(["title",l])}return e.pos=s,e.posMax=d,!0}],["autolink",function(e,t){let n=e.pos;if(60!==e.src.charCodeAt(n))return!1;const r=e.pos,i=e.posMax;for(;;){if(++n>=i)return!1;const t=e.src.charCodeAt(n);if(60===t)return!1;if(62===t)break}const s=e.src.slice(r+1,n);if(Mt.test(s)){const n=e.md.normalizeLink(s);if(!e.md.validateLink(n))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",n]],t.markup="autolink",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(s);const r=e.push("link_close","a",-1);r.markup="autolink",r.info="auto"}return e.pos+=s.length+2,!0}if(Dt.test(s)){const n=e.md.normalizeLink("mailto:"+s);if(!e.md.validateLink(n))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",n]],t.markup="autolink",t.info="auto",e.push("text","",0).content=e.md.normalizeLinkText(s);const r=e.push("link_close","a",-1);r.markup="autolink",r.info="auto"}return e.pos+=s.length+2,!0}return!1}],["html_inline",function(e,t){if(!e.md.options.html)return!1;const n=e.posMax,r=e.pos;if(60!==e.src.charCodeAt(r)||r+2>=n)return!1;const i=e.src.charCodeAt(r+1);if(33!==i&&63!==i&&47!==i&&!function(e){const t=32|e;return t>=97&&t<=122}(i))return!1;const s=e.src.slice(r).match(pt);if(!s)return!1;if(!t){const t=e.push("html_inline","",0);t.content=s[0],o=t.content,/^\s]/i.test(o)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(t.content)&&e.linkLevel--}var o;return e.pos+=s[0].length,!0}],["entity",function(e,t){const n=e.pos,r=e.posMax;if(38!==e.src.charCodeAt(n))return!1;if(n+1>=r)return!1;if(35===e.src.charCodeAt(n+1)){const r=e.src.slice(n).match(Tt);if(r){if(!t){const t="x"===r[1][0].toLowerCase()?parseInt(r[1].slice(1),16):parseInt(r[1],10),n=e.push("text_special","",0);n.content=he(t)?ue(t):ue(65533),n.markup=r[0],n.info="entity"}return e.pos+=r[0].length,!0}}else{const r=e.src.slice(n).match(Ot);if(r){const n=X(r[0]);if(n!==r[0]){if(!t){const t=e.push("text_special","",0);t.content=n,t.markup=r[0],t.info="entity"}return e.pos+=r[0].length,!0}}}return!1}]],It=[["balance_pairs",function(e){const t=e.tokens_meta,n=e.tokens_meta.length;Nt(e.delimiters);for(let e=0;e0&&r++,"text"===i[t].type&&t+1=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;o||e.pos++,s[t]=e.pos},Ft.prototype.tokenize=function(e){const t=this.ruler.getRules(""),n=t.length,r=e.posMax,i=e.md.options.maxNesting;for(;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(o){if(e.pos>=r)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},Ft.prototype.parse=function(e,t,n,r){const i=new this.State(e,t,n,r);this.tokenize(i);const s=this.ruler2.getRules(""),o=s.length;for(let e=0;e=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,n){const r=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},jt="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function Ht(e){const t=e.re=function(e){const t={};e=e||{},t.src_Any=M.source,t.src_Cc=T.source,t.src_Z=N.source,t.src_P=A.source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}(e.__opts__),n=e.__tlds__.slice();function r(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(r(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(r(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(r(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(r(t.tpl_host_fuzzy_test),"i");const i=[];function s(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){const n=e.__schemas__[t];if(null===n)return;const r={validate:null,link:null};if(e.__compiled__[t]=r,"[object Object]"===Rt(n))return"[object RegExp]"!==Rt(n.validate)?zt(n.validate)?r.validate=n.validate:s(t,n):r.validate=function(e){return function(t,n){const r=t.slice(n);return e.test(r)?r.match(e)[0].length:0}}(n.validate),void(zt(n.normalize)?r.normalize=n.normalize:n.normalize?s(t,n):r.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===Rt(e)}(n)?s(t,n):i.push(t)})),i.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};const o=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map($t).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+o+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+o+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function Ut(e,t){const n=e.__index__,r=e.__last_index__,i=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=i,this.text=i,this.url=i}function Wt(e,t){const n=new Ut(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function Kt(e,t){if(!(this instanceof Kt))return new Kt(e,t);var n;t||(n=e,Object.keys(n||{}).reduce((function(e,t){return e||Vt.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=Pt({},Vt,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=Pt({},qt,e),this.__compiled__={},this.__tlds__=jt,this.__tlds_replaced__=!1,this.re={},Ht(this)}Kt.prototype.add=function(e,t){return this.__schemas__[e]=t,Ht(this),this},Kt.prototype.set=function(e){return this.__opts__=Pt(this.__opts__,e),this},Kt.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;let t,n,r,i,s,o,a,l,c;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(t=a.exec(e));)if(i=this.testSchemaAt(e,t[2],a.lastIndex),i){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test),l>=0&&(this.__index__<0||l=0&&null!==(r=e.match(this.re.email_fuzzy))&&(s=r.index+r[1].length,o=r.index+r[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=o))),this.__index__>=0},Kt.prototype.pretest=function(e){return this.re.pretest.test(e)},Kt.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},Kt.prototype.match=function(e){const t=[];let n=0;this.__index__>=0&&this.__text_cache__===e&&(t.push(Wt(this,n)),n=this.__last_index__);let r=n?e.slice(n):e;for(;this.test(r);)t.push(Wt(this,n)),r=r.slice(this.__last_index__),n+=this.__last_index__;return t.length?t:null},Kt.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;const t=this.re.schema_at_start.exec(e);if(!t)return null;const n=this.testSchemaAt(e,t[2],t[0].length);return n?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+n,Wt(this,0)):null},Kt.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,n){return e!==n[t-1]})).reverse(),Ht(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,Ht(this),this)},Kt.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},Kt.prototype.onCompile=function(){};const Jt=Kt,Gt=2147483647,Zt=36,Xt=/^xn--/,Qt=/[^\0-\x7F]/,Yt=/[\x2E\u3002\uFF0E\uFF61]/g,en={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},tn=Math.floor,nn=String.fromCharCode;function rn(e){throw new RangeError(en[e])}function sn(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const i=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(Yt,".")).split("."),t).join(".");return r+i}function on(e){const t=[];let n=0;const r=e.length;for(;n=55296&&i<=56319&&n>1,e+=tn(e/t);e>455;r+=Zt)e=tn(e/35);return tn(r+36*e/(e+38))},cn=function(e){const t=[],n=e.length;let r=0,i=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(let n=0;n=128&&rn("not-basic"),t.push(e.charCodeAt(n));for(let l=o>0?o+1:0;l=n&&rn("invalid-input");const o=(a=e.charCodeAt(l++))>=48&&a<58?a-48+26:a>=65&&a<91?a-65:a>=97&&a<123?a-97:Zt;o>=Zt&&rn("invalid-input"),o>tn((Gt-r)/t)&&rn("overflow"),r+=o*t;const c=i<=s?1:i>=s+26?26:i-s;if(otn(Gt/h)&&rn("overflow"),t*=h}const c=t.length+1;s=ln(r-o,c,0==o),tn(r/c)>Gt-i&&rn("overflow"),i+=tn(r/c),r%=c,t.splice(r++,0,i)}var a;return String.fromCodePoint(...t)},hn=function(e){const t=[],n=(e=on(e)).length;let r=128,i=0,s=72;for(const n of e)n<128&&t.push(nn(n));const o=t.length;let a=o;for(o&&t.push("-");a=r&&ttn((Gt-i)/l)&&rn("overflow"),i+=(n-r)*l,r=n;for(const n of e)if(nGt&&rn("overflow"),n===r){let e=i;for(let n=Zt;;n+=Zt){const r=n<=s?1:n>=s+26?26:n-s;if(e=0))try{t.hostname=un(t.hostname)}catch(e){}return d(p(t))}function kn(e){const t=_(e,!0);if(t.hostname&&(!t.protocol||bn.indexOf(t.protocol)>=0))try{t.hostname=dn(t.hostname)}catch(e){}return c(p(t),c.defaultChars+"%")}function vn(e,t){if(!(this instanceof vn))return new vn(e,t);t||se(e)||(t=e||{},e="default"),this.inline=new Bt,this.block=new yt,this.core=new it,this.renderer=new Fe,this.linkify=new Jt,this.validateLink=gn,this.normalizeLink=yn,this.normalizeLinkText=kn,this.utils=n,this.helpers=le({},s),this.options={},this.configure(e),t&&this.set(t)}vn.prototype.set=function(e){return le(this.options,e),this},vn.prototype.configure=function(e){const t=this;if(se(e)){const t=e;if(!(e=pn[t]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name')}if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)})),this},vn.prototype.enable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.enable(e,!0))}),this),n=n.concat(this.inline.ruler2.enable(e,!0));const r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},vn.prototype.disable=function(e,t){let n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.disable(e,!0))}),this),n=n.concat(this.inline.ruler2.disable(e,!0));const r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},vn.prototype.use=function(e){const t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},vn.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");const n=new this.core.State(e,this,t);return this.core.process(n),n.tokens},vn.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},vn.prototype.parseInline=function(e,t){const n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens},vn.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};const wn=vn,xn=!1,Cn=!1;function En(e,t=""){return e?["%c"+t+e,"font-weight: bold;"]:[]}function Sn(e,...t){xn&&console.log.apply(console,[...En(e,"[DEBUG] "),...t])}function _n(e,...t){Cn||console.error.apply(console,[...En(e),...t])}function An(e,t){return Mn(e,t)}function Dn(e){return e instanceof Object&&!(e instanceof Function)&&!(e instanceof Array)}function Mn(e,t){if(e instanceof Array&&t instanceof Array)return[...e,...t];const n=Dn(e),r=Dn(t);if(!n&&r)return Mn({},t);if(n&&!r)return Mn({},e);if(!n&&!r)return t;const i={},s=e,o=t;let a=Object.keys(s);for(const e of a)i[e]=e in o?Mn(s[e],o[e]):s[e];a=Object.keys(o);for(const e of a)e in i||(i[e]=o[e]);return i}function Tn(e,t){return!e||!t||!e.doc.eq(t.doc)||e.storedMarks!==t.storedMarks}function On(e,t){return Tn(e,t)||!e.selection.eq(t.selection)}function Nn(e){if(!e.selection.$anchor.textOffset)return null;const t=e.selection.$anchor;return t.parent.child(t.index())}const Ln="js-sticky";function In(e){const t=new IntersectionObserver((function(e){for(const t of e){const e=!t.isIntersecting,n=t.target.nextElementSibling,r=new CustomEvent("sticky-change",{detail:{stuck:e,target:n}});document.dispatchEvent(r)}}),{threshold:[0],root:e});e.querySelectorAll("."+Ln).forEach((e=>{const n=document.createElement("div");n.className="js-sticky-sentinel",e.parentNode.insertBefore(n,e),t.observe(n)}))}const Fn=/^((https?|ftp):\/\/|\/)[-a-z0-9+&@#/%?=~_|!:,.;()*[\]$]+$/,Bn=/^mailto:[#-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+$/;function Pn(e){const t=e?.trim().toLowerCase();return Fn.test(t)||Bn.test(t)}function Rn(e,...t){let n=e[0];for(let r=0,i=t.length;r{"style"===t||t.startsWith("class")||t.startsWith("on")?_n("setAttributesOnElement",`Setting the "${t}" attribute is not supported`):!1!==n&&e.setAttribute(t.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase())),!0===n?"":String(n))}))}var Hn,Un;(Un=Hn||(Hn={}))[Un.RichText=0]="RichText",Un[Un.Commonmark=1]="Commonmark";const Wn={snippets:!0,html:!0,extraEmphasis:!0,tables:!0,tagLinks:{validate:()=>!0},validateLink:Pn};class Kn{editorView;get document(){return this.editorView.state.doc}get dom(){return this.editorView.dom}get readonly(){return!this.editorView.editable}focus(){this.editorView?.focus()}destroy(){this.editorView?.destroy()}get content(){return this.serializeContent()}set content(e){let t=this.editorView.state.tr;const n=this.editorView.state.doc,r=this.parseContent(e);t=t.replaceWith(0,n.content.size,r),this.editorView.dispatch(t)}appendContent(e){let t=this.editorView.state.tr;const n=this.editorView.state.doc,r=this.parseContent(e);t=t.insert(n.content.size,r),this.editorView.dispatch(t)}setTargetNodeAttributes(e,t){e.classList.add(...t.classList||[]),e.setAttribute("role","textbox"),e.setAttribute("aria-multiline","true"),jn(e,t.elementAttributes||{})}}function Jn(e){this.content=e}Jn.prototype={constructor:Jn,find:function(e){for(var t=0;t>1}},Jn.from=function(e){if(e instanceof Jn)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new Jn(t)};const Gn=Jn;class Zn{_plugins={richText:[],commonmark:[]};_markdownProps={parser:{},serializers:{nodes:{},marks:{}}};_nodeViews={};get plugins(){return this._plugins}get markdownProps(){return this._markdownProps}get nodeViews(){return this._nodeViews}menuCallbacks=[];schemaCallbacks=[];markdownItCallbacks=[];constructor(e,t){if(e?.length)for(const n of e)this.applyConfig(n(t))}getFinalizedSchema(e){let t={nodes:Gn.from(e.nodes),marks:Gn.from(e.marks)};for(const e of this.schemaCallbacks)e&&(t=e(t));return t}alterMarkdownIt(e){for(const t of this.markdownItCallbacks)t&&t(e)}getFinalizedMenu(e,t){let n={};for(const r of[()=>e,...this.menuCallbacks]){if(!r)continue;const i=r(t,e);for(const e of i){const t=n[e.name];t?(t.entries=[...t.entries,...e.entries],t.priority=Math.min(t.priority||0,e.priority||1/0)):n={...n,[e.name]:{...e}}}}return Object.values(n)}applyConfig(e){e.commonmark?.plugins?.forEach((e=>{this._plugins.commonmark.push(e)})),e.richText?.plugins?.forEach((e=>{this._plugins.richText.push(e)})),this.schemaCallbacks.push(e.extendSchema),e.richText?.nodeViews&&(this._nodeViews={...this._nodeViews,...e.richText?.nodeViews}),this.extendMarkdown(e.markdown,e.markdown?.alterMarkdownIt),this.menuCallbacks.push(e.menuItems)}extendMarkdown(e,t){e?.parser&&(this._markdownProps.parser={...this._markdownProps.parser,...e.parser}),e?.serializers?.nodes&&(this._markdownProps.serializers.nodes={...this._markdownProps.serializers.nodes,...e.serializers.nodes}),e?.serializers?.marks&&(this._markdownProps.serializers.marks={...this._markdownProps.serializers.marks,...e.serializers.marks}),t&&this.markdownItCallbacks.push(t)}}var Xn=200,Qn=function(){};Qn.prototype.append=function(e){return e.length?(e=Qn.from(e),!this.length&&e||e.length=t?Qn.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))},Qn.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)},Qn.prototype.forEach=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)},Qn.prototype.map=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length);var r=[];return this.forEach((function(t,n){return r.push(e(t,n))}),t,n),r},Qn.from=function(e){return e instanceof Qn?e:e&&e.length?new Yn(e):Qn.empty};var Yn=function(e){function t(t){e.call(this),this.values=t}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={length:{configurable:!0},depth:{configurable:!0}};return t.prototype.flatten=function(){return this.values},t.prototype.sliceInner=function(e,n){return 0==e&&n==this.length?this:new t(this.values.slice(e,n))},t.prototype.getInner=function(e){return this.values[e]},t.prototype.forEachInner=function(e,t,n,r){for(var i=t;i=n;i--)if(!1===e(this.values[i],r+i))return!1},t.prototype.leafAppend=function(e){if(this.length+e.length<=Xn)return new t(this.values.concat(e.flatten()))},t.prototype.leafPrepend=function(e){if(this.length+e.length<=Xn)return new t(e.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(t.prototype,n),t}(Qn);Qn.empty=new Yn([]);var er=function(e){function t(t,n){e.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},t.prototype.getInner=function(e){return ei&&!1===this.right.forEachInner(e,Math.max(t-i,0),Math.min(this.length,n)-i,r+i))&&void 0},t.prototype.forEachInvertedInner=function(e,t,n,r){var i=this.left.length;return!(t>i&&!1===this.right.forEachInvertedInner(e,t-i,Math.max(n,i)-i,r+i))&&!(n=n?this.right.slice(e-n,t-n):this.left.slice(e,n).append(this.right.slice(0,t-n))},t.prototype.leafAppend=function(e){var n=this.right.leafAppend(e);if(n)return new t(this.left,n)},t.prototype.leafPrepend=function(e){var n=this.left.leafPrepend(e);if(n)return new t(n,this.right)},t.prototype.appendInner=function(e){return this.left.depth>=Math.max(this.right.depth,e.depth)+1?new t(this.left,new t(this.right,e)):new t(this,e)},t}(Qn);const tr=Qn;function nr(e,t,n){for(let r=0;;r++){if(r==e.childCount||r==t.childCount)return e.childCount==t.childCount?null:n;let i=e.child(r),s=t.child(r);if(i!=s){if(!i.sameMarkup(s))return n;if(i.isText&&i.text!=s.text){for(let e=0;i.text[e]==s.text[e];e++)n++;return n}if(i.content.size||s.content.size){let e=nr(i.content,s.content,n+1);if(null!=e)return e}n+=i.nodeSize}else n+=i.nodeSize}}function rr(e,t,n,r){for(let i=e.childCount,s=t.childCount;;){if(0==i||0==s)return i==s?null:{a:n,b:r};let o=e.child(--i),a=t.child(--s),l=o.nodeSize;if(o!=a){if(!o.sameMarkup(a))return{a:n,b:r};if(o.isText&&o.text!=a.text){let e=0,t=Math.min(o.text.length,a.text.length);for(;ee&&!1!==n(a,r+o,i||null,s)&&a.content.size){let i=o+1;a.nodesBetween(Math.max(0,e-i),Math.min(a.content.size,t-i),n,r+i)}o=l}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i="",s=!0;return this.nodesBetween(e,t,((o,a)=>{let l=o.isText?o.text.slice(Math.max(e,a)-a,t-a):o.isLeaf?r?"function"==typeof r?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):"":"";o.isBlock&&(o.isLeaf&&l||o.isTextblock)&&n&&(s?s=!1:i+=n),i+=l}),0),i}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,n=e.firstChild,r=this.content.slice(),i=0;for(t.isText&&t.sameMarkup(n)&&(r[r.length-1]=t.withText(t.text+n.text),i=1);ie)for(let i=0,s=0;se&&((st)&&(o=o.isText?o.cut(Math.max(0,e-s),Math.min(o.text.length,t-s)):o.cut(Math.max(0,e-s-1),Math.min(o.content.size,t-s-1))),n.push(o),r+=o.nodeSize),s=a}return new ir(n,r)}cutByIndex(e,t){return e==t?ir.empty:0==e&&t==this.content.length?this:new ir(this.content.slice(e,t))}replaceChild(e,t){let n=this.content[e];if(n==t)return this;let r=this.content.slice(),i=this.size+t.nodeSize-n.nodeSize;return r[e]=t,new ir(r,i)}addToStart(e){return new ir([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new ir(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;tthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,r=0;;n++){let i=r+this.child(n).nodeSize;if(i>=e)return i==e||t>0?or(n+1,i):or(n,r);r=i}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map((e=>e.toJSON())):null}static fromJSON(e,t){if(!t)return ir.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new ir(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return ir.empty;let t,n=0;for(let r=0;rthis.type.rank&&(t||(t=e.slice(0,r)),t.push(this),n=!0),t&&t.push(i)}}return t||(t=e.slice()),n||t.push(this),t}removeFromSet(e){for(let t=0;te.type.rank-t.type.rank)),t}}lr.none=[];class cr extends Error{}class hr{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let n=dr(this.content,e+this.openStart,t);return n&&new hr(n,this.openStart,this.openEnd)}removeBetween(e,t){return new hr(ur(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return hr.empty;let n=t.openStart||0,r=t.openEnd||0;if("number"!=typeof n||"number"!=typeof r)throw new RangeError("Invalid input for Slice.fromJSON");return new hr(ir.fromJSON(e,t.content),n,r)}static maxOpen(e,t=!0){let n=0,r=0;for(let r=e.firstChild;r&&!r.isLeaf&&(t||!r.type.spec.isolating);r=r.firstChild)n++;for(let n=e.lastChild;n&&!n.isLeaf&&(t||!n.type.spec.isolating);n=n.lastChild)r++;return new hr(e,n,r)}}function ur(e,t,n){let{index:r,offset:i}=e.findIndex(t),s=e.maybeChild(r),{index:o,offset:a}=e.findIndex(n);if(i==t||s.isText){if(a!=n&&!e.child(o).isText)throw new RangeError("Removing non-flat range");return e.cut(0,t).append(e.cut(n))}if(r!=o)throw new RangeError("Removing non-flat range");return e.replaceChild(r,s.copy(ur(s.content,t-i-1,n-i-1)))}function dr(e,t,n,r){let{index:i,offset:s}=e.findIndex(t),o=e.maybeChild(i);if(s==t||o.isText)return r&&!r.canReplace(i,i,n)?null:e.cut(0,t).append(n).append(e.cut(t));let a=dr(o.content,t-s-1,n);return a&&e.replaceChild(i,o.copy(a))}function pr(e,t,n){if(n.openStart>e.depth)throw new cr("Inserted content deeper than insertion position");if(e.depth-n.openStart!=t.depth-n.openEnd)throw new cr("Inconsistent open depths");return fr(e,t,n,0)}function fr(e,t,n,r){let i=e.index(r),s=e.node(r);if(i==t.index(r)&&r=0;e--)r=t.node(e).copy(ir.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}(n,e);return kr(s,vr(e,i,o,t,r))}{let r=e.parent,i=r.content;return kr(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}}return kr(s,wr(e,t,r))}function mr(e,t){if(!t.type.compatibleContent(e.type))throw new cr("Cannot join "+t.type.name+" onto "+e.type.name)}function gr(e,t,n){let r=e.node(n);return mr(r,t.node(n)),r}function br(e,t){let n=t.length-1;n>=0&&e.isText&&e.sameMarkup(t[n])?t[n]=e.withText(t[n].text+e.text):t.push(e)}function yr(e,t,n,r){let i=(t||e).node(n),s=0,o=t?t.index(n):i.childCount;e&&(s=e.index(n),e.depth>n?s++:e.textOffset&&(br(e.nodeAfter,r),s++));for(let e=s;ei&&gr(e,t,i+1),o=r.depth>i&&gr(n,r,i+1),a=[];return yr(null,e,i,a),s&&o&&t.index(i)==n.index(i)?(mr(s,o),br(kr(s,vr(e,t,n,r,i+1)),a)):(s&&br(kr(s,wr(e,t,i+1)),a),yr(t,n,i,a),o&&br(kr(o,wr(n,r,i+1)),a)),yr(r,null,i,a),new ir(a)}function wr(e,t,n){let r=[];return yr(null,e,n,r),e.depth>n&&br(kr(gr(e,t,n+1),wr(e,t,n+1)),r),yr(t,null,n,r),new ir(r)}hr.empty=new hr(ir.empty,0,0);class xr{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return null==e?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[3*this.resolveDepth(e)]}index(e){return this.path[3*this.resolveDepth(e)+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e!=this.depth||this.textOffset?1:0)}start(e){return 0==(e=this.resolveDepth(e))?0:this.path[3*e-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]}after(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]+this.path[3*e].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):0==e?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[3*t],r=0==t?0:this.path[3*t-1]+1;for(let t=0;t0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new _r(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let n=[],r=0,i=t;for(let t=e;;){let{index:e,offset:s}=t.content.findIndex(i),o=i-s;if(n.push(t,e,r+s),!o)break;if(t=t.child(e),t.isText)break;i=o-1,r+=s+1}return new xr(t,n,i)}static resolveCached(e,t){let n=Sr.get(e);if(n)for(let e=0;ee&&this.nodesBetween(e,t,(e=>(n.isInSet(e.marks)&&(r=!0),!r))),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Tr(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,n=ir.empty,r=0,i=n.childCount){let s=this.contentMatchAt(e).matchFragment(n,r,i),o=s&&s.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;ee.type.name))}`);this.content.forEach((e=>e.check()))}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map((e=>e.toJSON()))),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let n;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");n=t.marks.map(e.markFromJSON)}if("text"==t.type){if("string"!=typeof t.text)throw new RangeError("Invalid text node in JSON");return e.text(t.text,n)}let r=ir.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}}Dr.prototype.text=void 0;class Mr extends Dr{constructor(e,t,n,r){if(super(e,t,null,r),!n)throw new RangeError("Empty text nodes are not allowed");this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Tr(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Mr(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Mr(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return 0==e&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Tr(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+"("+t+")";return t}class Or{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let n=new Nr(e,t);if(null==n.next)return Or.empty;let r=Lr(n);n.next&&n.err("Unexpected trailing text");let i=function(e){let t=Object.create(null);return function n(r){let i=[];r.forEach((t=>{e[t].forEach((({term:t,to:n})=>{if(!t)return;let r;for(let e=0;e{r||i.push([t,r=[]]),-1==r.indexOf(e)&&r.push(e)}))}))}));let s=t[r.join(",")]=new Or(r.indexOf(e.length-1)>-1);for(let e=0;et.concat(e(n,s))),[]);if("seq"!=t.type){if("star"==t.type){let o=n();return r(s,o),i(e(t.expr,o),o),[r(o)]}if("plus"==t.type){let o=n();return i(e(t.expr,s),o),i(e(t.expr,o),o),[r(o)]}if("opt"==t.type)return[r(s)].concat(e(t.expr,s));if("range"==t.type){let o=s;for(let r=0;re.to=t))}}(r));return function(e,t){for(let n=0,r=[e];ne.createAndFill())));for(let e=0;e=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];return function t(n){e.push(n);for(let r=0;r{let r=n+(t.validEnd?"*":" ")+" ";for(let n=0;n"+e.indexOf(t.next[n].next);return r})).join("\n")}}Or.empty=new Or(!0);class Nr{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),""==this.tokens[this.tokens.length-1]&&this.tokens.pop(),""==this.tokens[0]&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function Lr(e){let t=[];do{t.push(Ir(e))}while(e.eat("|"));return 1==t.length?t[0]:{type:"choice",exprs:t}}function Ir(e){let t=[];do{t.push(Fr(e))}while(e.next&&")"!=e.next&&"|"!=e.next);return 1==t.length?t[0]:{type:"seq",exprs:t}}function Fr(e){let t=function(e){if(e.eat("(")){let t=Lr(e);return e.eat(")")||e.err("Missing closing paren"),t}if(!/\W/.test(e.next)){let t=function(e,t){let n=e.nodeTypes,r=n[t];if(r)return[r];let i=[];for(let e in n){let r=n[e];r.isInGroup(t)&&i.push(r)}return 0==i.length&&e.err("No node type or group '"+t+"' found"),i}(e,e.next).map((t=>(null==e.inline?e.inline=t.isInline:e.inline!=t.isInline&&e.err("Mixing inline and block content"),{type:"name",value:t})));return e.pos++,1==t.length?t[0]:{type:"choice",exprs:t}}e.err("Unexpected token '"+e.next+"'")}(e);for(;;)if(e.eat("+"))t={type:"plus",expr:t};else if(e.eat("*"))t={type:"star",expr:t};else if(e.eat("?"))t={type:"opt",expr:t};else{if(!e.eat("{"))break;t=Pr(e,t)}return t}function Br(e){/\D/.test(e.next)&&e.err("Expected number, got '"+e.next+"'");let t=Number(e.next);return e.pos++,t}function Pr(e,t){let n=Br(e),r=n;return e.eat(",")&&(r="}"!=e.next?Br(e):-1),e.eat("}")||e.err("Unclosed braced range"),{type:"range",min:n,max:r,expr:t}}function Rr(e,t){return t-e}function zr(e,t){let n=[];return function t(r){let i=e[r];if(1==i.length&&!i[0].term)return t(i[0].to);n.push(r);for(let e=0;e-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:Vr(this.attrs,e)}create(e=null,t,n){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new Dr(this,this.computeAttrs(e),ir.from(t),lr.setFrom(n))}createChecked(e=null,t,n){return t=ir.from(t),this.checkContent(t),new Dr(this,this.computeAttrs(e),t,lr.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),(t=ir.from(t)).size){let e=this.contentMatch.fillBefore(t);if(!e)return null;t=e.append(t)}let r=this.contentMatch.matchFragment(t),i=r&&r.fillBefore(ir.empty,!0);return i?new Dr(this,e,t.append(i),lr.setFrom(n)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let t=0;t-1}allowsMarks(e){if(null==this.markSet)return!0;for(let t=0;tn[e]=new Hr(e,t,r)));let r=t.spec.topNode||"doc";if(!n[r])throw new RangeError("Schema is missing its top node type ('"+r+"')");if(!n.text)throw new RangeError("Every schema needs a 'text' type");for(let e in n.text.attrs)throw new RangeError("The text node type should not have attributes");return n}}class Ur{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,"default"),this.default=n.default,this.validate="string"==typeof n.validate?function(e,t,n){let r=n.split("|");return n=>{let i=null===n?"null":typeof n;if(r.indexOf(i)<0)throw new RangeError(`Expected value of type ${r} for attribute ${t} on type ${e}, got ${i}`)}}(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}}class Wr{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=jr(e,r.attrs),this.excluded=null;let i=$r(this.attrs);this.instance=i?new lr(this,i):null}create(e=null){return!e&&this.instance?this.instance:new lr(this,Vr(this.attrs,e))}static compile(e,t){let n=Object.create(null),r=0;return e.forEach(((e,i)=>n[e]=new Wr(e,r++,t,i))),n}removeFromSet(e){for(var t=0;t-1}}class Kr{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let n in e)t[n]=e[n];t.nodes=Gn.from(e.nodes),t.marks=Gn.from(e.marks||{}),this.nodes=Hr.compile(this.spec.nodes,this),this.marks=Wr.compile(this.spec.marks,this);let n=Object.create(null);for(let e in this.nodes){if(e in this.marks)throw new RangeError(e+" can not be both a node and a mark");let t=this.nodes[e],r=t.spec.content||"",i=t.spec.marks;if(t.contentMatch=n[r]||(n[r]=Or.parse(r,this.nodes)),t.inlineContent=t.contentMatch.inlineContent,t.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!t.isInline||!t.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=t}t.markSet="_"==i?null:i?Jr(this,i.split(" ")):""!=i&&t.inlineContent?null:[]}for(let e in this.marks){let t=this.marks[e],n=t.spec.excludes;t.excluded=null==n?[t]:""==n?[]:Jr(this,n.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,n,r){if("string"==typeof e)e=this.nodeType(e);else{if(!(e instanceof Hr))throw new RangeError("Invalid node type: "+e);if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}return e.createChecked(t,n,r)}text(e,t){let n=this.nodes.text;return new Mr(n,n.defaultAttrs,e,lr.setFrom(t))}mark(e,t){return"string"==typeof e&&(e=this.marks[e]),e.create(t)}nodeFromJSON(e){return Dr.fromJSON(this,e)}markFromJSON(e){return lr.fromJSON(this,e)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function Jr(e,t){let n=[];for(let r=0;r-1)&&n.push(o=r)}if(!o)throw new SyntaxError("Unknown mark type: '"+t[r]+"'")}return n}class Gr{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach((e=>{if(function(e){return null!=e.tag}(e))this.tags.push(e);else if(function(e){return null!=e.style}(e)){let t=/[^=]*/.exec(e.style)[0];n.indexOf(t)<0&&n.push(t),this.styles.push(e)}})),this.normalizeLists=!this.tags.some((t=>{if(!/^(ul|ol)\b/.test(t.tag)||!t.node)return!1;let n=e.nodes[t.node];return n.contentMatch.matchType(n)}))}parse(e,t={}){let n=new ti(this,t,!1);return n.addAll(e,lr.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new ti(this,t,!0);return n.addAll(e,lr.none,t.from,t.to),hr.maxOpen(n.finish())}matchTag(e,t,n){for(let r=n?this.tags.indexOf(n)+1:0;re.length&&(61!=s.charCodeAt(e.length)||s.slice(e.length+1)!=t))){if(r.getAttrs){let e=r.getAttrs(t);if(!1===e)continue;r.attrs=e||void 0}return r}}}static schemaRules(e){let t=[];function n(e){let n=null==e.priority?50:e.priority,r=0;for(;r{n(e=ri(e)),e.mark||e.ignore||e.clearMark||(e.mark=t)}))}for(let t in e.nodes){let r=e.nodes[t].spec.parseDOM;r&&r.forEach((e=>{n(e=ri(e)),e.node||e.ignore||e.mark||(e.node=t)}))}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new Gr(e,Gr.schemaRules(e)))}}const Zr={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},Xr={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},Qr={ol:!0,ul:!0};function Yr(e,t,n){return null!=t?(t?1:0)|("full"===t?2:0):e&&"pre"==e.whitespace?3:-5&n}class ei{constructor(e,t,n,r,i,s){this.type=e,this.attrs=t,this.marks=n,this.solid=r,this.options=s,this.content=[],this.activeMarks=lr.none,this.match=i||(4&s?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(ir.from(e));if(!t){let t,n=this.type.contentMatch;return(t=n.findWrapping(e.type))?(this.match=n,t):null}this.match=this.type.contentMatch.matchFragment(t)}return this.match.findWrapping(e.type)}finish(e){if(!(1&this.options)){let e,t=this.content[this.content.length-1];if(t&&t.isText&&(e=/[ \t\r\n\u000c]+$/.exec(t.text))){let n=t;t.text.length==e[0].length?this.content.pop():this.content[this.content.length-1]=n.withText(n.text.slice(0,n.text.length-e[0].length))}}let t=ir.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(ir.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!Zr.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}}class ti{constructor(e,t,n){this.parser=e,this.options=t,this.isOpen=n,this.open=0,this.localPreserveWS=!1;let r,i=t.topNode,s=Yr(null,t.preserveWhitespace,0)|(n?4:0);r=i?new ei(i.type,i.attrs,lr.none,!0,t.topMatch||i.type.contentMatch,s):new ei(n?null:e.schema.topNodeType,null,lr.none,!0,null,s),this.nodes=[r],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){3==e.nodeType?this.addTextNode(e,t):1==e.nodeType&&this.addElement(e,t)}addTextNode(e,t){let n=e.nodeValue,r=this.top,i=2&r.options?"full":this.localPreserveWS||(1&r.options)>0;if("full"===i||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(n)){if(i)n="full"!==i?n.replace(/\r?\n|\r/g," "):n.replace(/\r\n?/g,"\n");else if(n=n.replace(/[ \t\r\n\u000c]+/g," "),/^[ \t\r\n\u000c]/.test(n)&&this.open==this.nodes.length-1){let t=r.content[r.content.length-1],i=e.previousSibling;(!t||i&&"BR"==i.nodeName||t.isText&&/[ \t\r\n\u000c]$/.test(t.text))&&(n=n.slice(1))}n&&this.insertNode(this.parser.schema.text(n),t),this.findInText(e)}else this.findInside(e)}addElement(e,t,n){let r=this.localPreserveWS,i=this.top;("PRE"==e.tagName||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let s,o=e.nodeName.toLowerCase();Qr.hasOwnProperty(o)&&this.parser.normalizeLists&&function(e){for(let t=e.firstChild,n=null;t;t=t.nextSibling){let e=1==t.nodeType?t.nodeName.toLowerCase():null;e&&Qr.hasOwnProperty(e)&&n?(n.appendChild(t),t=n):"li"==e?n=t:e&&(n=null)}}(e);let a=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(s=this.parser.matchTag(e,this,n));e:if(a?a.ignore:Xr.hasOwnProperty(o))this.findInside(e),this.ignoreFallback(e,t);else if(!a||a.skip||a.closeParent){a&&a.closeParent?this.open=Math.max(0,this.open-1):a&&a.skip.nodeType&&(e=a.skip);let n,r=this.needsBlock;if(Zr.hasOwnProperty(o))i.content.length&&i.content[0].isInline&&this.open&&(this.open--,i=this.top),n=!0,i.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break e}let s=a&&a.skip?t:this.readStyles(e,t);s&&this.addAll(e,s),n&&this.sync(i),this.needsBlock=r}else{let n=this.readStyles(e,t);n&&this.addElementByRule(e,a,n,!1===a.consuming?s:void 0)}this.localPreserveWS=r}leafFallback(e,t){"BR"==e.nodeName&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode("\n"),t)}ignoreFallback(e,t){"BR"!=e.nodeName||this.top.type&&this.top.type.inlineContent||this.findPlace(this.parser.schema.text("-"),t)}readStyles(e,t){let n=e.style;if(n&&n.length)for(let e=0;e!n.clearMark(e))):t.concat(this.parser.schema.marks[n.mark].create(n.attrs)),!1!==n.consuming)break;e=n}}return t}addElementByRule(e,t,n,r){let i,s;if(t.node)if(s=this.parser.schema.nodes[t.node],s.isLeaf)this.insertNode(s.create(t.attrs),n)||this.leafFallback(e,n);else{let e=this.enter(s,t.attrs||null,n,t.preserveWhitespace);e&&(i=!0,n=e)}else{let e=this.parser.schema.marks[t.mark];n=n.concat(e.create(t.attrs))}let o=this.top;if(s&&s.isLeaf)this.findInside(e);else if(r)this.addElement(e,n,r);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach((e=>this.insertNode(e,n)));else{let r=e;"string"==typeof t.contentElement?r=e.querySelector(t.contentElement):"function"==typeof t.contentElement?r=t.contentElement(e):t.contentElement&&(r=t.contentElement),this.findAround(e,r,!0),this.addAll(r,n),this.findAround(e,r,!1)}i&&this.sync(o)&&this.open--}addAll(e,t,n,r){let i=n||0;for(let s=n?e.childNodes[n]:e.firstChild,o=null==r?null:e.childNodes[r];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s,t);this.findAtPoint(e,i)}findPlace(e,t){let n,r;for(let t=this.open;t>=0;t--){let i=this.nodes[t],s=i.findWrapping(e);if(s&&(!n||n.length>s.length)&&(n=s,r=i,!s.length))break;if(i.solid)break}if(!n)return null;this.sync(r);for(let e=0;e!(s.type?s.type.allowsMarkType(t.type):ii(t.type,e))||(a=t.addToSet(a),!1))),this.nodes.push(new ei(e,t,a,r,null,o)),this.open++,n}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!(!this.isOpen&&!this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--){if(this.nodes[t]==e)return this.open=t,!0;this.localPreserveWS&&(this.nodes[t].options|=1)}return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let t=n.length-1;t>=0;t--)e+=n[t].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),n=this.options.context,r=!(this.isOpen||n&&n.parent.type!=this.nodes[0].type),i=-(n?n.depth+1:0)+(r?0:1),s=(e,o)=>{for(;e>=0;e--){let a=t[e];if(""==a){if(e==t.length-1||0==e)continue;for(;o>=i;o--)if(s(e-1,o))return!0;return!1}{let e=o>0||0==o&&r?this.nodes[o].type:n&&o>=i?n.node(o-i).type:null;if(!e||e.name!=a&&!e.isInGroup(a))return!1;o--}}return!0};return s(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let e in this.parser.schema.nodes){let t=this.parser.schema.nodes[e];if(t.isTextblock&&t.defaultAttrs)return t}}}function ni(e,t){return(e.matches||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector).call(e,t)}function ri(e){let t={};for(let n in e)t[n]=e[n];return t}function ii(e,t){let n=t.schema.nodes;for(let r in n){let i=n[r];if(!i.allowsMarkType(e))continue;let s=[],o=e=>{s.push(e);for(let n=0;n{if(i.length||e.marks.length){let n=0,s=0;for(;n=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,t);i&&((i.contentDOM||i.dom).appendChild(n),n=i.dom)}return n}serializeMark(e,t,n={}){let r=this.marks[e.type.name];return r&&ci(ai(n),r(e,t),null,e.attrs)}static renderSpec(e,t,n=null,r){return ci(e,t,n,r)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new si(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=oi(e.nodes);return t.text||(t.text=e=>e.text),t}static marksFromSchema(e){return oi(e.marks)}}function oi(e){let t={};for(let n in e){let r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function ai(e){return e.document||window.document}const li=new WeakMap;function ci(e,t,n,r){if("string"==typeof t)return{dom:e.createTextNode(t)};if(null!=t.nodeType)return{dom:t};if(t.dom&&null!=t.dom.nodeType)return t;let i,s=t[0];if("string"!=typeof s)throw new RangeError("Invalid array passed to renderSpec");if(r&&(i=function(e){let t=li.get(e);return void 0===t&&li.set(e,t=function(e){let t=null;return function e(n){if(n&&"object"==typeof n)if(Array.isArray(n))if("string"==typeof n[0])t||(t=[]),t.push(n);else for(let t=0;t-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let o,a=s.indexOf(" ");a>0&&(n=s.slice(0,a),s=s.slice(a+1));let l=n?e.createElementNS(n,s):e.createElement(s),c=t[1],h=1;if(c&&"object"==typeof c&&null==c.nodeType&&!Array.isArray(c)){h=2;for(let e in c)if(null!=c[e]){let t=e.indexOf(" ");t>0?l.setAttributeNS(e.slice(0,t),e.slice(t+1),c[e]):l.setAttribute(e,c[e])}}for(let i=h;ih)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}{let{dom:t,contentDOM:i}=ci(e,s,n,r);if(l.appendChild(t),i){if(o)throw new RangeError("Multiple content holes");o=i}}}return{dom:l,contentDOM:o}}const hi=Math.pow(2,16);function ui(e){return 65535&e}class di{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(8&this.delInfo)>0}get deletedBefore(){return(5&this.delInfo)>0}get deletedAfter(){return(6&this.delInfo)>0}get deletedAcross(){return(4&this.delInfo)>0}}class pi{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&pi.empty)return pi.empty}recover(e){let t=0,n=ui(e);if(!this.inverted)for(let e=0;ee)break;let l=this.ranges[o+i],c=this.ranges[o+s],h=a+l;if(e<=h){let i=a+r+((l?e==a?-1:e==h?1:t:t)<0?0:c);if(n)return i;let s=e==a?2:e==h?1:4;return(t<0?e!=a:e!=h)&&(s|=8),new di(i,s,e==(t<0?a:h)?null:o/3+(e-a)*hi)}r+=c-l}return n?e+r:new di(e+r,0,null)}touches(e,t){let n=0,r=ui(t),i=this.inverted?2:1,s=this.inverted?1:2;for(let t=0;te)break;let a=this.ranges[t+i];if(e<=o+a&&t==3*r)return!0;n+=this.ranges[t+s]-a}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let r=0,i=0;r=0;t--){let r=e.getMirror(t);this.appendMap(e.maps[t].invert(),null!=r&&r>t?n-r-1:void 0)}}invert(){let e=new fi;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;nn&&te.isAtom&&t.type.allowsMarkType(this.mark.type)?e.mark(this.mark.addToSet(e.marks)):e),r),t.openStart,t.openEnd);return bi.fromReplace(e,this.from,this.to,i)}invert(){return new vi(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new ki(t.pos,n.pos,this.mark)}merge(e){return e instanceof ki&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new ki(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to)throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new ki(t.from,t.to,e.markFromJSON(t.mark))}}gi.jsonID("addMark",ki);class vi extends gi{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new hr(yi(t.content,(e=>e.mark(this.mark.removeFromSet(e.marks))),e),t.openStart,t.openEnd);return bi.fromReplace(e,this.from,this.to,n)}invert(){return new ki(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new vi(t.pos,n.pos,this.mark)}merge(e){return e instanceof vi&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new vi(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to)throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new vi(t.from,t.to,e.markFromJSON(t.mark))}}gi.jsonID("removeMark",vi);class wi extends gi{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return bi.fail("No node at mark step's position");let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return bi.fromReplace(e,this.pos,this.pos+1,new hr(ir.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let e=this.mark.addToSet(t.marks);if(e.length==t.marks.length){for(let n=0;nn.pos?null:new Ei(t.pos,n.pos,r,i,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if("number"!=typeof t.from||"number"!=typeof t.to||"number"!=typeof t.gapFrom||"number"!=typeof t.gapTo||"number"!=typeof t.insert)throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new Ei(t.from,t.to,t.gapFrom,t.gapTo,hr.fromJSON(e,t.slice),t.insert,!!t.structure)}}function Si(e,t,n){let r=e.resolve(t),i=n-t,s=r.depth;for(;i>0&&s>0&&r.indexAfter(s)==r.node(s).childCount;)s--,i--;if(i>0){let e=r.node(s).maybeChild(r.indexAfter(s));for(;i>0;){if(!e||e.isLeaf)return!0;e=e.firstChild,i--}}return!1}function _i(e,t,n,r=n.contentMatch,i=!0){let s=e.doc.nodeAt(t),o=[],a=t+1;for(let t=0;t=0;t--)e.step(o[t])}function Ai(e,t,n){return(0==t||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function Di(e){let t=e.parent.content.cutByIndex(e.startIndex,e.endIndex);for(let n=e.depth;;--n){let r=e.$from.node(n),i=e.$from.index(n),s=e.$to.indexAfter(n);if(n{if(i.isText){let o,a=/\r?\n|\r/g;for(;o=a.exec(i.text);){let i=e.mapping.slice(r).map(n+1+s+o.index);e.replaceWith(i,i+1,t.type.schema.linebreakReplacement.create())}}}))}function Ni(e,t,n,r){t.forEach(((i,s)=>{if(i.type==i.type.schema.linebreakReplacement){let i=e.mapping.slice(r).map(n+1+s);e.replaceWith(i,i+1,t.type.schema.text("\n"))}}))}function Li(e,t,n=1,r){let i=e.resolve(t),s=i.depth-n,o=r&&r[r.length-1]||i.parent;if(s<0||i.parent.type.spec.isolating||!i.parent.canReplace(i.index(),i.parent.childCount)||!o.type.validContent(i.parent.content.cutByIndex(i.index(),i.parent.childCount)))return!1;for(let e=i.depth-1,t=n-2;e>s;e--,t--){let n=i.node(e),s=i.index(e);if(n.type.spec.isolating)return!1;let o=n.content.cutByIndex(s,n.childCount),a=r&&r[t+1];a&&(o=o.replaceChild(0,a.type.create(a.attrs)));let l=r&&r[t]||n;if(!n.canReplace(s+1,n.childCount)||!l.type.validContent(o))return!1}let a=i.indexAfter(s),l=r&&r[0];return i.node(s).canReplaceWith(a,a,l?l.type:i.node(s+1).type)}function Ii(e,t){let n=e.resolve(t),r=n.index();return i=n.nodeBefore,s=n.nodeAfter,!(!i||!s||i.isLeaf||!function(e,t){t.content.size||e.type.compatibleContent(t.type);let n=e.contentMatchAt(e.childCount),{linebreakReplacement:r}=e.type.schema;for(let i=0;i0;t--)this.placed=ir.from(e.node(t).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let e=this.findFittable();e?this.placeNodes(e):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,n=this.$from,r=this.close(e<0?this.$to:n.doc.resolve(e));if(!r)return null;let i=this.placed,s=n.depth,o=r.depth;for(;s&&o&&1==i.childCount;)i=i.firstChild.content,s--,o--;let a=new hr(i,s,o);return e>-1?new Ei(n.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||n.pos!=this.$to.pos?new Ci(n.pos,r.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,n=0,r=this.unplaced.openEnd;n1&&(r=0),i.type.spec.isolating&&r<=n){e=n;break}t=i.content}for(let t=1;t<=2;t++)for(let n=1==t?e:this.unplaced.openStart;n>=0;n--){let e,r=null;n?(r=$i(this.unplaced.content,n-1).firstChild,e=r.content):e=this.unplaced.content;let i=e.firstChild;for(let e=this.depth;e>=0;e--){let s,{type:o,match:a}=this.frontier[e],l=null;if(1==t&&(i?a.matchType(i.type)||(l=a.fillBefore(ir.from(i),!1)):r&&o.compatibleContent(r.type)))return{sliceDepth:n,frontierDepth:e,parent:r,inject:l};if(2==t&&i&&(s=a.findWrapping(i.type)))return{sliceDepth:n,frontierDepth:e,parent:r,wrap:s};if(r&&a.matchType(r.type))break}}}openMore(){let{content:e,openStart:t,openEnd:n}=this.unplaced,r=$i(e,t);return!(!r.childCount||r.firstChild.isLeaf||(this.unplaced=new hr(e,t+1,Math.max(n,r.size+t>=e.size-n?t+1:0)),0))}dropNode(){let{content:e,openStart:t,openEnd:n}=this.unplaced,r=$i(e,t);if(r.childCount<=1&&t>0){let i=e.size-t<=t+r.size;this.unplaced=new hr(Ri(e,t-1,1),t-1,i?t-1:n)}else this.unplaced=new hr(Ri(e,t,1),t,n)}placeNodes({sliceDepth:e,frontierDepth:t,parent:n,inject:r,wrap:i}){for(;this.depth>t;)this.closeFrontierNode();if(i)for(let e=0;e1||0==a||e.content.size)&&(h=t,c.push(Vi(e.mark(u.allowedMarks(e.marks)),1==l?a:0,l==o.childCount?d:-1)))}let p=l==o.childCount;p||(d=-1),this.placed=zi(this.placed,t,ir.from(c)),this.frontier[t].match=h,p&&d<0&&n&&n.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let e=0,t=o;e1&&r==this.$to.end(--n);)++r;return r}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:n,type:r}=this.frontier[t],i=t=0;n--){let{match:t,type:r}=this.frontier[n],i=qi(e,n,r,t,!0);if(!i||i.childCount)continue e}return{depth:t,fit:s,move:i?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=zi(this.placed,t.depth,t.fit)),e=t.move;for(let n=t.depth+1;n<=e.depth;n++){let t=e.node(n),r=t.type.contentMatch.fillBefore(t.content,!0,e.index(n));this.openFrontierNode(t.type,t.attrs,r)}return e}openFrontierNode(e,t=null,n){let r=this.frontier[this.depth];r.match=r.match.matchType(e),this.placed=zi(this.placed,this.depth,ir.from(e.create(t,n))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let e=this.frontier.pop().match.fillBefore(ir.empty,!0);e.childCount&&(this.placed=zi(this.placed,this.frontier.length,e))}}function Ri(e,t,n){return 0==t?e.cutByIndex(n,e.childCount):e.replaceChild(0,e.firstChild.copy(Ri(e.firstChild.content,t-1,n)))}function zi(e,t,n){return 0==t?e.append(n):e.replaceChild(e.childCount-1,e.lastChild.copy(zi(e.lastChild.content,t-1,n)))}function $i(e,t){for(let n=0;n1&&(r=r.replaceChild(0,Vi(r.firstChild,t-1,1==r.childCount?n-1:0))),t>0&&(r=e.type.contentMatch.fillBefore(r).append(r),n<=0&&(r=r.append(e.type.contentMatch.matchFragment(r).fillBefore(ir.empty,!0)))),e.copy(r)}function qi(e,t,n,r,i){let s=e.node(t),o=i?e.indexAfter(t):e.index(t);if(o==s.childCount&&!n.compatibleContent(s.type))return null;let a=r.fillBefore(s.content,!0,o);return a&&!function(e,t,n){for(let r=n;rr){let t=i.contentMatchAt(0),n=t.fillBefore(e).append(e);e=n.append(t.matchFragment(n).fillBefore(ir.empty,!0))}return e}function Hi(e,t){let n=[];for(let r=Math.min(e.depth,t.depth);r>=0;r--){let i=e.start(r);if(it.pos+(t.depth-r)||e.node(r).type.spec.isolating||t.node(r).type.spec.isolating)break;(i==t.start(r)||r==e.depth&&r==t.depth&&e.parent.inlineContent&&t.parent.inlineContent&&r&&t.start(r-1)==i-1)&&n.push(r)}return n}class Ui extends gi{constructor(e,t,n){super(),this.pos=e,this.attr=t,this.value=n}apply(e){let t=e.nodeAt(this.pos);if(!t)return bi.fail("No node at attribute step's position");let n=Object.create(null);for(let e in t.attrs)n[e]=t.attrs[e];n[this.attr]=this.value;let r=t.type.create(n,null,t.marks);return bi.fromReplace(e,this.pos,this.pos+1,new hr(ir.from(r),0,t.isLeaf?0:1))}getMap(){return pi.empty}invert(e){return new Ui(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new Ui(t.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if("number"!=typeof t.pos||"string"!=typeof t.attr)throw new RangeError("Invalid input for AttrStep.fromJSON");return new Ui(t.pos,t.attr,t.value)}}gi.jsonID("attr",Ui);class Wi extends gi{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let n in e.attrs)t[n]=e.attrs[n];t[this.attr]=this.value;let n=e.type.create(t,e.content,e.marks);return bi.ok(n)}getMap(){return pi.empty}invert(e){return new Wi(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,t){if("string"!=typeof t.attr)throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new Wi(t.attr,t.value)}}gi.jsonID("docAttr",Wi);let Ki=class extends Error{};Ki=function e(t){let n=Error.call(this,t);return n.__proto__=e.prototype,n},(Ki.prototype=Object.create(Error.prototype)).constructor=Ki,Ki.prototype.name="TransformError";class Ji{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new fi}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new Ki(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,n=hr.empty){let r=Fi(this.doc,e,t,n);return r&&this.step(r),this}replaceWith(e,t,n){return this.replace(e,t,new hr(ir.from(n),0,0))}delete(e,t){return this.replace(e,t,hr.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,n){return function(e,t,n,r){if(!r.size)return e.deleteRange(t,n);let i=e.doc.resolve(t),s=e.doc.resolve(n);if(Bi(i,s,r))return e.step(new Ci(t,n,r));let o=Hi(i,e.doc.resolve(n));0==o[o.length-1]&&o.pop();let a=-(i.depth+1);o.unshift(a);for(let e=i.depth,t=i.pos-1;e>0;e--,t--){let n=i.node(e).type.spec;if(n.defining||n.definingAsContext||n.isolating)break;o.indexOf(e)>-1?a=e:i.before(e)==t&&o.splice(1,0,-e)}let l=o.indexOf(a),c=[],h=r.openStart;for(let e=r.content,t=0;;t++){let n=e.firstChild;if(c.push(n),t==r.openStart)break;e=n.content}for(let e=h-1;e>=0;e--){let t=c[e],n=(u=t.type).spec.defining||u.spec.definingForContent;if(n&&!t.sameMarkup(i.node(Math.abs(a)-1)))h=e;else if(n||!t.type.isTextblock)break}var u;for(let t=r.openStart;t>=0;t--){let a=(t+h+1)%(r.openStart+1),u=c[a];if(u)for(let t=0;t=0&&(e.replace(t,n,r),!(e.steps.length>d));a--){let e=o[a];e<0||(t=i.before(e),n=s.after(e))}}(this,e,t,n),this}replaceRangeWith(e,t,n){return function(e,t,n,r){if(!r.isInline&&t==n&&e.doc.resolve(t).parent.content.size){let i=function(e,t,n){let r=e.resolve(t);if(r.parent.canReplaceWith(r.index(),r.index(),n))return t;if(0==r.parentOffset)for(let e=r.depth-1;e>=0;e--){let t=r.index(e);if(r.node(e).canReplaceWith(t,t,n))return r.before(e+1);if(t>0)return null}if(r.parentOffset==r.parent.content.size)for(let e=r.depth-1;e>=0;e--){let t=r.indexAfter(e);if(r.node(e).canReplaceWith(t,t,n))return r.after(e+1);if(t0&&(o||r.node(n-1).canReplace(r.index(n-1),i.indexAfter(n-1))))return e.delete(r.before(n),i.after(n))}for(let s=1;s<=r.depth&&s<=i.depth;s++)if(t-r.start(s)==r.depth-s&&n>r.end(s)&&i.end(s)-n!=i.depth-s&&r.start(s-1)==i.start(s-1)&&r.node(s-1).canReplace(r.index(s-1),i.index(s-1)))return e.delete(r.before(s),n);e.delete(t,n)}(this,e,t),this}lift(e,t){return function(e,t,n){let{$from:r,$to:i,depth:s}=t,o=r.before(s+1),a=i.after(s+1),l=o,c=a,h=ir.empty,u=0;for(let e=s,t=!1;e>n;e--)t||r.index(e)>0?(t=!0,h=ir.from(r.node(e).copy(h)),u++):l--;let d=ir.empty,p=0;for(let e=s,t=!1;e>n;e--)t||i.after(e+1)=0;e--){if(r.size){let t=n[e].type.contentMatch.matchFragment(r);if(!t||!t.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}r=ir.from(n[e].type.create(n[e].attrs,r))}let i=t.start,s=t.end;e.step(new Ei(i,s,i,s,new hr(r,0,0),n.length,!0))}(this,e,t),this}setBlockType(e,t=e,n,r=null){return function(e,t,n,r,i){if(!r.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let s=e.steps.length;e.doc.nodesBetween(t,n,((t,n)=>{let o="function"==typeof i?i(t):i;if(t.isTextblock&&!t.hasMarkup(r,o)&&function(e,t,n){let r=e.resolve(t),i=r.index();return r.parent.canReplaceWith(i,i+1,n)}(e.doc,e.mapping.slice(s).map(n),r)){let i=null;if(r.schema.linebreakReplacement){let e="pre"==r.whitespace,t=!!r.contentMatch.matchType(r.schema.linebreakReplacement);e&&!t?i=!1:!e&&t&&(i=!0)}!1===i&&Ni(e,t,n,s),_i(e,e.mapping.slice(s).map(n,1),r,void 0,null===i);let a=e.mapping.slice(s),l=a.map(n,1),c=a.map(n+t.nodeSize,1);return e.step(new Ei(l,c,l+1,c-1,new hr(ir.from(r.create(o,null,t.marks)),0,0),1,!0)),!0===i&&Oi(e,t,n,s),!1}}))}(this,e,t,n,r),this}setNodeMarkup(e,t,n=null,r){return function(e,t,n,r,i){let s=e.doc.nodeAt(t);if(!s)throw new RangeError("No node at given position");n||(n=s.type);let o=n.create(r,null,i||s.marks);if(s.isLeaf)return e.replaceWith(t,t+s.nodeSize,o);if(!n.validContent(s.content))throw new RangeError("Invalid content for node type "+n.name);e.step(new Ei(t,t+s.nodeSize,t+1,t+s.nodeSize-1,new hr(ir.from(o),0,0),1,!0))}(this,e,t,n,r),this}setNodeAttribute(e,t,n){return this.step(new Ui(e,t,n)),this}setDocAttribute(e,t){return this.step(new Wi(e,t)),this}addNodeMark(e,t){return this.step(new wi(e,t)),this}removeNodeMark(e,t){if(!(t instanceof lr)){let n=this.doc.nodeAt(e);if(!n)throw new RangeError("No node at position "+e);if(!(t=t.isInSet(n.marks)))return this}return this.step(new xi(e,t)),this}split(e,t=1,n){return function(e,t,n=1,r){let i=e.doc.resolve(t),s=ir.empty,o=ir.empty;for(let e=i.depth,t=i.depth-n,a=n-1;e>t;e--,a--){s=ir.from(i.node(e).copy(s));let t=r&&r[a];o=ir.from(t?t.type.create(t.attrs,o):i.node(e).copy(o))}e.step(new Ci(t,t,new hr(s.append(o),n,n),!0))}(this,e,t,n),this}addMark(e,t,n){return function(e,t,n,r){let i,s,o=[],a=[];e.doc.nodesBetween(t,n,((e,l,c)=>{if(!e.isInline)return;let h=e.marks;if(!r.isInSet(h)&&c.type.allowsMarkType(r.type)){let c=Math.max(l,t),u=Math.min(l+e.nodeSize,n),d=r.addToSet(h);for(let e=0;ee.step(t))),a.forEach((t=>e.step(t)))}(this,e,t,n),this}removeMark(e,t,n){return function(e,t,n,r){let i=[],s=0;e.doc.nodesBetween(t,n,((e,o)=>{if(!e.isInline)return;s++;let a=null;if(r instanceof Wr){let t,n=e.marks;for(;t=r.isInSet(n);)(a||(a=[])).push(t),n=t.removeFromSet(n)}else r?r.isInSet(e.marks)&&(a=[r]):a=e.marks;if(a&&a.length){let r=Math.min(o+e.nodeSize,n);for(let e=0;ee.step(new vi(t.from,t.to,t.style))))}(this,e,t,n),this}clearIncompatible(e,t,n){return _i(this,e,t,n),this}}const Gi=Object.create(null);class Zi{constructor(e,t,n){this.$anchor=e,this.$head=t,this.ranges=n||[new Xi(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t=0;r--){let i=t<0?as(e.node(0),e.node(r),e.before(r+1),e.index(r),t,n):as(e.node(0),e.node(r),e.after(r+1),e.index(r)+1,t,n);if(i)return i}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new is(e.node(0))}static atStart(e){return as(e,e,0,0,1)||new is(e)}static atEnd(e){return as(e,e,e.content.size,e.childCount,-1)||new is(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");let n=Gi[t.type];if(!n)throw new RangeError(`No selection type ${t.type} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in Gi)throw new RangeError("Duplicate use of selection JSON ID "+e);return Gi[e]=t,t.prototype.jsonID=e,t}getBookmark(){return es.between(this.$anchor,this.$head).getBookmark()}}Zi.prototype.visible=!0;class Xi{constructor(e,t){this.$from=e,this.$to=t}}let Qi=!1;function Yi(e){Qi||e.parent.inlineContent||(Qi=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+e.parent.type.name+")"))}class es extends Zi{constructor(e,t=e){Yi(e),Yi(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let n=e.resolve(t.map(this.head));if(!n.parent.inlineContent)return Zi.near(n);let r=e.resolve(t.map(this.anchor));return new es(r.parent.inlineContent?r:n,n)}replace(e,t=hr.empty){if(super.replace(e,t),t==hr.empty){let t=this.$from.marksAcross(this.$to);t&&e.ensureMarks(t)}}eq(e){return e instanceof es&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new ts(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if("number"!=typeof t.anchor||"number"!=typeof t.head)throw new RangeError("Invalid input for TextSelection.fromJSON");return new es(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,n=t){let r=e.resolve(t);return new this(r,n==t?r:e.resolve(n))}static between(e,t,n){let r=e.pos-t.pos;if(n&&!r||(n=r>=0?1:-1),!t.parent.inlineContent){let e=Zi.findFrom(t,n,!0)||Zi.findFrom(t,-n,!0);if(!e)return Zi.near(t,n);t=e.$head}return e.parent.inlineContent||(0==r||(e=(Zi.findFrom(e,-n,!0)||Zi.findFrom(e,n,!0)).$anchor).posnew is(e)};function as(e,t,n,r,i,s=!1){if(t.inlineContent)return es.create(e,n);for(let o=r-(i>0?0:1);i>0?o=0;o+=i){let r=t.child(o);if(r.isAtom){if(!s&&ns.isSelectable(r))return ns.create(e,n-(i<0?r.nodeSize:0))}else{let t=as(e,r,n+i,i<0?r.childCount:0,i,s);if(t)return t}n+=r.nodeSize*i}return null}function ls(e,t,n){let r=e.steps.length-1;if(r{null==i&&(i=r)})),e.setSelection(Zi.near(e.doc.resolve(i),n)))}class cs extends Ji{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=2,this}ensureMarks(e){return lr.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(2&this.updated)>0}addStep(e,t){super.addStep(e,t),this.updated=-3&this.updated,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let n=this.selection;return t&&(e=e.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||lr.none))),n.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,n){let r=this.doc.type.schema;if(null==t)return e?this.replaceSelectionWith(r.text(e),!0):this.deleteSelection();{if(null==n&&(n=t),n=null==n?t:n,!e)return this.deleteRange(t,n);let i=this.storedMarks;if(!i){let e=this.doc.resolve(t);i=n==t?e.marks():e.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(t,n,r.text(e,i)),this.selection.empty||this.setSelection(Zi.near(this.selection.$to)),this}}setMeta(e,t){return this.meta["string"==typeof e?e:e.key]=t,this}getMeta(e){return this.meta["string"==typeof e?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=4,this}get scrolledIntoView(){return(4&this.updated)>0}}function hs(e,t){return t&&e?e.bind(t):e}class us{constructor(e,t,n){this.name=e,this.init=hs(t.init,n),this.apply=hs(t.apply,n)}}const ds=[new us("doc",{init:e=>e.doc||e.schema.topNodeType.createAndFill(),apply:e=>e.doc}),new us("selection",{init:(e,t)=>e.selection||Zi.atStart(t.doc),apply:e=>e.selection}),new us("storedMarks",{init:e=>e.storedMarks||null,apply:(e,t,n,r)=>r.selection.$cursor?e.storedMarks:null}),new us("scrollToSelection",{init:()=>0,apply:(e,t)=>e.scrolledIntoView?t+1:t})];class ps{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=ds.slice(),t&&t.forEach((e=>{if(this.pluginsByKey[e.key])throw new RangeError("Adding different instances of a keyed plugin ("+e.key+")");this.plugins.push(e),this.pluginsByKey[e.key]=e,e.spec.state&&this.fields.push(new us(e.key,e.spec.state,e))}))}}class fs{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let n=0;ne.toJSON()))),e&&"object"==typeof e)for(let n in e){if("doc"==n||"selection"==n)throw new RangeError("The JSON fields `doc` and `selection` are reserved");let r=e[n],i=r.spec.state;i&&i.toJSON&&(t[n]=i.toJSON.call(r,this[r.key]))}return t}static fromJSON(e,t,n){if(!t)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let r=new ps(e.schema,e.plugins),i=new fs(r);return r.fields.forEach((r=>{if("doc"==r.name)i.doc=Dr.fromJSON(e.schema,t.doc);else if("selection"==r.name)i.selection=Zi.fromJSON(i.doc,t.selection);else if("storedMarks"==r.name)t.storedMarks&&(i.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(n)for(let s in n){let o=n[s],a=o.spec.state;if(o.key==r.name&&a&&a.fromJSON&&Object.prototype.hasOwnProperty.call(t,s))return void(i[r.name]=a.fromJSON.call(o,e,t[s],i))}i[r.name]=r.init(e,i)}})),i}}function ms(e,t,n){for(let r in e){let i=e[r];i instanceof Function?i=i.bind(t):"handleDOMEvents"==r&&(i=ms(i,t,{})),n[r]=i}return n}class gs{constructor(e){this.spec=e,this.props={},e.props&&ms(e.props,this,this.props),this.key=e.key?e.key.key:ys("plugin")}getState(e){return e[this.key]}}const bs=Object.create(null);function ys(e){return e in bs?e+"$"+ ++bs[e]:(bs[e]=0,e+"$")}class ks{constructor(e="key"){this.key=ys(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}}class vs{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(0==this.eventCount)return null;let n,r,i=this.items.length;for(;;i--)if(this.items.get(i-1).selection){--i;break}t&&(n=this.remapping(i,this.items.length),r=n.maps.length);let s,o,a=e.tr,l=[],c=[];return this.items.forEach(((e,t)=>{if(!e.step)return n||(n=this.remapping(i,t+1),r=n.maps.length),r--,void c.push(e);if(n){c.push(new ws(e.map));let t,i=e.step.map(n.slice(r));i&&a.maybeStep(i).doc&&(t=a.mapping.maps[a.mapping.maps.length-1],l.push(new ws(t,void 0,void 0,l.length+c.length))),r--,t&&n.appendMap(t,r)}else a.maybeStep(e.step);return e.selection?(s=n?e.selection.map(n.slice(r)):e.selection,o=new vs(this.items.slice(0,i).append(c.reverse().concat(l)),this.eventCount-1),!1):void 0}),this.items.length,0),{remaining:o,transform:a,selection:s}}addTransform(e,t,n,r){let i=[],s=this.eventCount,o=this.items,a=!r&&o.length?o.get(o.length-1):null;for(let n=0;nCs&&(o=function(e,t){let n;return e.forEach(((e,r)=>{if(e.selection&&0==t--)return n=r,!1})),e.slice(n)}(o,l),s-=l),new vs(o.append(i),s)}remapping(e,t){let n=new fi;return this.items.forEach(((t,r)=>{let i=null!=t.mirrorOffset&&r-t.mirrorOffset>=e?n.maps.length-t.mirrorOffset:void 0;n.appendMap(t.map,i)}),e,t),n}addMaps(e){return 0==this.eventCount?this:new vs(this.items.append(e.map((e=>new ws(e)))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;let n=[],r=Math.max(0,this.items.length-t),i=e.mapping,s=e.steps.length,o=this.eventCount;this.items.forEach((e=>{e.selection&&o--}),r);let a=t;this.items.forEach((t=>{let r=i.getMirror(--a);if(null==r)return;s=Math.min(s,r);let l=i.maps[r];if(t.step){let s=e.steps[r].invert(e.docs[r]),c=t.selection&&t.selection.map(i.slice(a+1,r));c&&o++,n.push(new ws(l,s,c))}else n.push(new ws(l))}),r);let l=[];for(let e=t;e500&&(h=h.compress(this.items.length-n.length)),h}emptyItemCount(){let e=0;return this.items.forEach((t=>{t.step||e++})),e}compress(e=this.items.length){let t=this.remapping(0,e),n=t.maps.length,r=[],i=0;return this.items.forEach(((s,o)=>{if(o>=e)r.push(s),s.selection&&i++;else if(s.step){let e=s.step.map(t.slice(n)),o=e&&e.getMap();if(n--,o&&t.appendMap(o,n),e){let a=s.selection&&s.selection.map(t.slice(n));a&&i++;let l,c=new ws(o.invert(),e,a),h=r.length-1;(l=r.length&&r[h].merge(c))?r[h]=l:r.push(c)}}else s.map&&n--}),this.items.length,0),new vs(tr.from(r.reverse()),i)}}vs.empty=new vs(tr.empty,0);class ws{constructor(e,t,n,r){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=r}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new ws(t.getMap().invert(),t,this.selection)}}}class xs{constructor(e,t,n,r,i){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=r,this.prevComposition=i}}const Cs=20;function Es(e){let t=[];for(let n=e.length-1;n>=0&&0==t.length;n--)e[n].forEach(((e,n,r,i)=>t.push(r,i)));return t}function Ss(e,t){if(!e)return null;let n=[];for(let r=0;rnew xs(vs.empty,vs.empty,null,0,-1),apply:(t,n,r)=>function(e,t,n,r){let i,s=n.getMeta(Ms);if(s)return s.historyState;n.getMeta(Ts)&&(e=new xs(e.done,e.undone,null,0,-1));let o=n.getMeta("appendedTransaction");if(0==n.steps.length)return e;if(o&&o.getMeta(Ms))return o.getMeta(Ms).redo?new xs(e.done.addTransform(n,void 0,r,Ds(t)),e.undone,Es(n.mapping.maps),e.prevTime,e.prevComposition):new xs(e.done,e.undone.addTransform(n,void 0,r,Ds(t)),null,e.prevTime,e.prevComposition);if(!1===n.getMeta("addToHistory")||o&&!1===o.getMeta("addToHistory"))return(i=n.getMeta("rebased"))?new xs(e.done.rebased(n,i),e.undone.rebased(n,i),Ss(e.prevRanges,n.mapping),e.prevTime,e.prevComposition):new xs(e.done.addMaps(n.mapping.maps),e.undone.addMaps(n.mapping.maps),Ss(e.prevRanges,n.mapping),e.prevTime,e.prevComposition);{let i=n.getMeta("composition"),s=0==e.prevTime||!o&&e.prevComposition!=i&&(e.prevTime<(n.time||0)-r.newGroupDelay||!function(e,t){if(!t)return!1;if(!e.docChanged)return!0;let n=!1;return e.mapping.maps[0].forEach(((e,r)=>{for(let i=0;i=t[i]&&(n=!0)})),n}(n,e.prevRanges)),a=o?Ss(e.prevRanges,n.mapping):Es(n.mapping.maps);return new xs(e.done.addTransform(n,s?t.selection.getBookmark():void 0,r,Ds(t)),vs.empty,a,n.time,null==i?e.prevComposition:i)}}(n,r,t,e)},config:e,props:{handleDOMEvents:{beforeinput(e,t){let n=t.inputType,r="historyUndo"==n?Ls:"historyRedo"==n?Is:null;return!!r&&(t.preventDefault(),r(e.state,e.dispatch))}}}})}function Ns(e,t){return(n,r)=>{let i=Ms.getState(n);if(!i||0==(e?i.undone:i.done).eventCount)return!1;if(r){let s=function(e,t,n){let r=Ds(t),i=Ms.get(t).spec.config,s=(n?e.undone:e.done).popEvent(t,r);if(!s)return null;let o=s.selection.resolve(s.transform.doc),a=(n?e.done:e.undone).addTransform(s.transform,t.selection.getBookmark(),i,r),l=new xs(n?a:s.remaining,n?s.remaining:a,null,0,-1);return s.transform.setSelection(o).setMeta(Ms,{redo:n,historyState:l})}(i,n,e);s&&r(t?s.scrollIntoView():s)}return!0}}const Ls=Ns(!1,!0),Is=Ns(!0,!0);Ns(!1,!1),Ns(!0,!1);const Fs=function(e){for(var t=0;;t++)if(!(e=e.previousSibling))return t},Bs=function(e){let t=e.assignedSlot||e.parentNode;return t&&11==t.nodeType?t.host:t};let Ps=null;const Rs=function(e,t,n){let r=Ps||(Ps=document.createRange());return r.setEnd(e,null==n?e.nodeValue.length:n),r.setStart(e,t||0),r},zs=function(e,t,n,r){return n&&(Vs(e,t,n,r,-1)||Vs(e,t,n,r,1))},$s=/^(img|br|input|textarea|hr)$/i;function Vs(e,t,n,r,i){for(;;){if(e==n&&t==r)return!0;if(t==(i<0?0:qs(e))){let n=e.parentNode;if(!n||1!=n.nodeType||js(e)||$s.test(e.nodeName)||"false"==e.contentEditable)return!1;t=Fs(e)+(i<0?0:1),e=n}else{if(1!=e.nodeType)return!1;if("false"==(e=e.childNodes[t+(i<0?-1:0)]).contentEditable)return!1;t=i<0?qs(e):0}}}function qs(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function js(e){let t;for(let n=e;n&&!(t=n.pmViewDesc);n=n.parentNode);return t&&t.node&&t.node.isBlock&&(t.dom==e||t.contentDOM==e)}const Hs=function(e){return e.focusNode&&zs(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)};function Us(e,t){let n=document.createEvent("Event");return n.initEvent("keydown",!0,!0),n.keyCode=e,n.key=n.code=t,n}const Ws="undefined"!=typeof navigator?navigator:null,Ks="undefined"!=typeof document?document:null,Js=Ws&&Ws.userAgent||"",Gs=/Edge\/(\d+)/.exec(Js),Zs=/MSIE \d/.exec(Js),Xs=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Js),Qs=!!(Zs||Xs||Gs),Ys=Zs?document.documentMode:Xs?+Xs[1]:Gs?+Gs[1]:0,eo=!Qs&&/gecko\/(\d+)/i.test(Js);eo&&(/Firefox\/(\d+)/.exec(Js)||[0,0])[1];const to=!Qs&&/Chrome\/(\d+)/.exec(Js),no=!!to,ro=to?+to[1]:0,io=!Qs&&!!Ws&&/Apple Computer/.test(Ws.vendor),so=io&&(/Mobile\/\w+/.test(Js)||!!Ws&&Ws.maxTouchPoints>2),oo=so||!!Ws&&/Mac/.test(Ws.platform),ao=!!Ws&&/Win/.test(Ws.platform),lo=/Android \d/.test(Js),co=!!Ks&&"webkitFontSmoothing"in Ks.documentElement.style,ho=co?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function uo(e){let t=e.defaultView&&e.defaultView.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:e.documentElement.clientWidth,top:0,bottom:e.documentElement.clientHeight}}function po(e,t){return"number"==typeof e?e:e[t]}function fo(e){let t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,r=t.height/e.offsetHeight||1;return{left:t.left,right:t.left+e.clientWidth*n,top:t.top,bottom:t.top+e.clientHeight*r}}function mo(e,t,n){let r=e.someProp("scrollThreshold")||0,i=e.someProp("scrollMargin")||5,s=e.dom.ownerDocument;for(let o=n||e.dom;o;o=Bs(o)){if(1!=o.nodeType)continue;let e=o,n=e==s.body,a=n?uo(s):fo(e),l=0,c=0;if(t.topa.bottom-po(r,"bottom")&&(c=t.bottom-t.top>a.bottom-a.top?t.top+po(i,"top")-a.top:t.bottom-a.bottom+po(i,"bottom")),t.lefta.right-po(r,"right")&&(l=t.right-a.right+po(i,"right")),l||c)if(n)s.defaultView.scrollBy(l,c);else{let n=e.scrollLeft,r=e.scrollTop;c&&(e.scrollTop+=c),l&&(e.scrollLeft+=l);let i=e.scrollLeft-n,s=e.scrollTop-r;t={left:t.left-i,top:t.top-s,right:t.right-i,bottom:t.bottom-s}}if(n||/^(fixed|sticky)$/.test(getComputedStyle(o).position))break}}function go(e){let t=[],n=e.ownerDocument;for(let r=e;r&&(t.push({dom:r,top:r.scrollTop,left:r.scrollLeft}),e!=n);r=Bs(r));return t}function bo(e,t){for(let n=0;n=c){l=Math.max(p.bottom,l),c=Math.min(p.top,c);let e=p.left>t.left?p.left-t.left:p.right=(p.left+p.right)/2?1:0));continue}}else p.top>t.top&&!i&&p.left<=t.left&&p.right>=t.left&&(i=h,s={left:Math.max(p.left,Math.min(p.right,t.left)),top:p.top});!n&&(t.left>=p.right&&t.top>=p.top||t.left>=p.left&&t.top>=p.bottom)&&(a=u+1)}}return!n&&i&&(n=i,r=s,o=0),n&&3==n.nodeType?function(e,t){let n=e.nodeValue.length,r=document.createRange();for(let i=0;i=(n.left+n.right)/2?1:0)}}return{node:e,offset:0}}(n,r):!n||o&&1==n.nodeType?{node:e,offset:a}:ko(n,r)}function vo(e,t){return e.left>=t.left-1&&e.left<=t.right+1&&e.top>=t.top-1&&e.top<=t.bottom+1}function wo(e,t,n){let r=e.childNodes.length;if(r&&n.topt.top&&i++}let r;co&&i&&1==n.nodeType&&1==(r=n.childNodes[i-1]).nodeType&&"false"==r.contentEditable&&r.getBoundingClientRect().top>=t.top&&i--,n==e.dom&&i==n.childNodes.length-1&&1==n.lastChild.nodeType&&t.top>n.lastChild.getBoundingClientRect().bottom?o=e.state.doc.content.size:0!=i&&1==n.nodeType&&"BR"==n.childNodes[i-1].nodeName||(o=function(e,t,n,r){let i=-1;for(let n=t,s=!1;n!=e.dom;){let t,o=e.docView.nearestDesc(n,!0);if(!o)return null;if(1==o.dom.nodeType&&(o.node.isBlock&&o.parent||!o.contentDOM)&&((t=o.dom.getBoundingClientRect()).width||t.height)&&(o.node.isBlock&&o.parent&&(!s&&t.left>r.left||t.top>r.top?i=o.posBefore:(!s&&t.right-1?i:e.docView.posFromDOM(t,n,-1)}(e,n,i,t))}null==o&&(o=function(e,t,n){let{node:r,offset:i}=ko(t,n),s=-1;if(1==r.nodeType&&!r.firstChild){let e=r.getBoundingClientRect();s=e.left!=e.right&&n.left>(e.left+e.right)/2?1:-1}return e.docView.posFromDOM(r,i,s)}(e,a,t));let l=e.docView.nearestDesc(a,!0);return{pos:o,inside:l?l.posAtStart-l.border:-1}}function Co(e){return e.top=0&&i==r.nodeValue.length?(e--,s=1):n<0?e--:t++,Ao(Eo(Rs(r,e,t),s),s<0)}{let e=Eo(Rs(r,i,i),n);if(eo&&i&&/\s/.test(r.nodeValue[i-1])&&i=0)}if(null==s&&i&&(n<0||i==qs(r))){let e=r.childNodes[i-1],t=3==e.nodeType?Rs(e,qs(e)-(o?0:1)):1!=e.nodeType||"BR"==e.nodeName&&e.nextSibling?null:e;if(t)return Ao(Eo(t,1),!1)}if(null==s&&i=0)}function Ao(e,t){if(0==e.width)return e;let n=t?e.left:e.right;return{top:e.top,bottom:e.bottom,left:n,right:n}}function Do(e,t){if(0==e.height)return e;let n=t?e.top:e.bottom;return{top:n,bottom:n,left:e.left,right:e.right}}function Mo(e,t,n){let r=e.state,i=e.root.activeElement;r!=t&&e.updateState(t),i!=e.dom&&e.focus();try{return n()}finally{r!=t&&e.updateState(r),i!=e.dom&&i&&i.focus()}}const To=/[\u0590-\u08ac]/;let Oo=null,No=null,Lo=!1;class Io{constructor(e,t,n,r){this.parent=e,this.children=t,this.dom=n,this.contentDOM=r,this.dirty=0,n.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,n){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;tFs(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))r=2&e.compareDocumentPosition(this.contentDOM);else if(this.dom.firstChild){if(0==t)for(let t=e;;t=t.parentNode){if(t==this.dom){r=!1;break}if(t.previousSibling)break}if(null==r&&t==e.childNodes.length)for(let t=e;;t=t.parentNode){if(t==this.dom){r=!0;break}if(t.nextSibling)break}}return(null==r?n>0:r)?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let n=!0,r=e;r;r=r.parentNode){let i,s=this.getDesc(r);if(s&&(!t||s.node)){if(!n||!(i=s.nodeDOM)||(1==i.nodeType?i.contains(1==e.nodeType?e:e.parentNode):i==e))return s;n=!1}}}getDesc(e){let t=e.pmViewDesc;for(let e=t;e;e=e.parent)if(e==this)return t}posFromDOM(e,t,n){for(let r=e;r;r=r.parentNode){let i=this.getDesc(r);if(i)return i.localPosFromDOM(e,t,n)}return-1}descAt(e){for(let t=0,n=0;te||i instanceof Vo){r=e-t;break}t=s}if(r)return this.children[n].domFromPos(r-this.children[n].border,t);for(let e;n&&!(e=this.children[n-1]).size&&e instanceof Fo&&e.side>=0;n--);if(t<=0){let e,r=!0;for(;e=n?this.children[n-1]:null,e&&e.dom.parentNode!=this.contentDOM;n--,r=!1);return e&&t&&r&&!e.border&&!e.domAtom?e.domFromPos(e.size,t):{node:this.contentDOM,offset:e?Fs(e.dom)+1:0}}{let e,r=!0;for(;e=n=i&&t<=a-n.border&&n.node&&n.contentDOM&&this.contentDOM.contains(n.contentDOM))return n.parseRange(e,t,i);e=s;for(let t=o;t>0;t--){let n=this.children[t-1];if(n.size&&n.dom.parentNode==this.contentDOM&&!n.emptyChildAt(1)){r=Fs(n.dom)+1;break}e-=n.size}-1==r&&(r=0)}if(r>-1&&(a>t||o==this.children.length-1)){t=a;for(let e=o+1;ea&&st){let e=o;o=a,a=e}let n=document.createRange();n.setEnd(a.node,a.offset),n.setStart(o.node,o.offset),l.removeAllRanges(),l.addRange(n)}}ignoreMutation(e){return!this.contentDOM&&"selection"!=e.type}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let n=0,r=0;r=n:en){let r=n+i.border,o=s-i.border;if(e>=r&&t<=o)return this.dirty=e==n||t==s?2:1,void(e!=r||t!=o||!i.contentLost&&i.dom.parentNode==this.contentDOM?i.markDirty(e-r,t-r):i.dirty=3);i.dirty=i.dom!=i.contentDOM||i.dom.parentNode!=this.contentDOM||i.children.length?3:2}n=s}this.dirty=2}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let n=1==e?2:1;t.dirtyi?i.parent?i.parent.posBeforeChild(i):void 0:r))),!t.type.spec.raw){if(1!=s.nodeType){let e=document.createElement("span");e.appendChild(s),s=e}s.contentEditable="false",s.classList.add("ProseMirror-widget")}super(e,[],s,null),this.widget=t,this.widget=t,i=this}matchesWidget(e){return 0==this.dirty&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return!!t&&t(e)}ignoreMutation(e){return"selection"!=e.type||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get side(){return this.widget.type.side}}class Bo extends Io{constructor(e,t,n,r){super(e,[],t,null),this.textDOM=n,this.text=r}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return"characterData"===e.type&&e.target.nodeValue==e.oldValue}}class Po extends Io{constructor(e,t,n,r,i){super(e,[],n,r),this.mark=t,this.spec=i}static create(e,t,n,r){let i=r.nodeViews[t.type.name],s=i&&i(t,r,n);return s&&s.dom||(s=si.renderSpec(document,t.type.spec.toDOM(t,n),null,t.attrs)),new Po(e,t,s.dom,s.contentDOM||s.dom,s)}parseRule(){return 3&this.dirty||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return 3!=this.dirty&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),0!=this.dirty){let e=this.parent;for(;!e.node;)e=e.parent;e.dirty0&&(i=ea(i,0,e,n));for(let e=0;eo?o.parent?o.parent.posBeforeChild(o):void 0:s),n,r),c=l&&l.dom,h=l&&l.contentDOM;if(t.isText)if(c){if(3!=c.nodeType)throw new RangeError("Text must be rendered as a DOM text node")}else c=document.createTextNode(t.text);else if(!c){let e=si.renderSpec(document,t.type.spec.toDOM(t),null,t.attrs);({dom:c,contentDOM:h}=e)}h||t.isText||"BR"==c.nodeName||(c.hasAttribute("contenteditable")||(c.contentEditable="false"),t.type.spec.draggable&&(c.draggable=!0));let u=c;return c=Go(c,n,t),l?o=new qo(e,t,n,r,c,h||null,u,l,i,s+1):t.isText?new $o(e,t,n,r,c,u,i):new Ro(e,t,n,r,c,h||null,u,i,s+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if("pre"==this.node.type.whitespace&&(e.preserveWhitespace="full"),this.contentDOM)if(this.contentLost){for(let t=this.children.length-1;t>=0;t--){let n=this.children[t];if(this.dom.contains(n.dom.parentNode)){e.contentElement=n.dom.parentNode;break}}e.contentElement||(e.getContent=()=>ir.empty)}else e.contentElement=this.contentDOM;else e.getContent=()=>this.node.content;return e}matchesNode(e,t,n){return 0==this.dirty&&e.eq(this.node)&&Zo(t,this.outerDeco)&&n.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let n=this.node.inlineContent,r=t,i=e.composing?this.localCompositionInfo(e,t):null,s=i&&i.pos>-1?i:null,o=i&&i.pos<0,a=new Qo(this,s&&s.node,e);!function(e,t,n,r){let i=t.locals(e),s=0;if(0==i.length){for(let n=0;ns;)a.push(i[o++]);let f=s+d.nodeSize;if(d.isText){let e=f;o!e.inline)):a.slice(),t.forChild(s,d),p),s=f}}(this.node,this.innerDeco,((t,i,s)=>{t.spec.marks?a.syncToMarks(t.spec.marks,n,e):t.type.side>=0&&!s&&a.syncToMarks(i==this.node.childCount?lr.none:this.node.child(i).marks,n,e),a.placeWidget(t,e,r)}),((t,s,l,c)=>{let h;a.syncToMarks(t.marks,n,e),a.findNodeMatch(t,s,l,c)||o&&e.state.selection.from>r&&e.state.selection.to-1&&a.updateNodeAt(t,s,l,h,e)||a.updateNextNode(t,s,l,e,c,r)||a.addNode(t,s,l,e,r),r+=t.nodeSize})),a.syncToMarks([],n,e),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||2==this.dirty)&&(s&&this.protectLocalComposition(e,s),jo(this.contentDOM,this.children,e),so&&function(e){if("UL"==e.nodeName||"OL"==e.nodeName){let t=e.style.cssText;e.style.cssText=t+"; list-style: square !important",window.getComputedStyle(e).listStyle,e.style.cssText=t}}(this.dom))}localCompositionInfo(e,t){let{from:n,to:r}=e.state.selection;if(!(e.state.selection instanceof es)||nt+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let e=i.nodeValue,s=function(e,t,n,r){for(let i=0,s=0;i=n){if(s>=r&&l.slice(r-t.length-a,r-a)==t)return r-t.length;let e=a=0&&e+t.length+a>=n)return a+e;if(n==r&&l.length>=r+t.length-a&&l.slice(r-a,r-a+t.length)==t)return r}}return-1}(this.node.content,e,n-t,r-t);return s<0?null:{node:i,pos:s,text:e}}return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:t,pos:n,text:r}){if(this.getDesc(t))return;let i=t;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let s=new Bo(this,i,t,r);e.input.compositionNodes.push(s),this.children=ea(this.children,n,n+r.length,e,s)}update(e,t,n,r){return!(3==this.dirty||!e.sameMarkup(this.node)||(this.updateInner(e,t,n,r),0))}updateInner(e,t,n,r){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=0}updateOuterDeco(e){if(Zo(e,this.outerDeco))return;let t=1!=this.nodeDOM.nodeType,n=this.dom;this.dom=Ko(this.dom,this.nodeDOM,Wo(this.outerDeco,this.node,t),Wo(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){1==this.nodeDOM.nodeType&&this.nodeDOM.classList.add("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||(this.dom.draggable=!0)}deselectNode(){1==this.nodeDOM.nodeType&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||this.dom.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}}function zo(e,t,n,r,i){Go(r,t,e);let s=new Ro(void 0,e,t,n,r,r,r,i,0);return s.contentDOM&&s.updateChildren(i,0),s}class $o extends Ro{constructor(e,t,n,r,i,s,o){super(e,t,n,r,i,null,s,o,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,n,r){return!(3==this.dirty||0!=this.dirty&&!this.inParent()||!e.sameMarkup(this.node)||(this.updateOuterDeco(t),0==this.dirty&&e.text==this.node.text||e.text==this.nodeDOM.nodeValue||(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=0,0))}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,n){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,n)}ignoreMutation(e){return"characterData"!=e.type&&"selection"!=e.type}slice(e,t,n){let r=this.node.cut(e,t),i=document.createTextNode(r.text);return new $o(this.parent,r,this.outerDeco,this.innerDeco,i,i,n)}markDirty(e,t){super.markDirty(e,t),this.dom==this.nodeDOM||0!=e&&t!=this.nodeDOM.nodeValue.length||(this.dirty=3)}get domAtom(){return!1}isText(e){return this.node.text==e}}class Vo extends Io{parseRule(){return{ignore:!0}}matchesHack(e){return 0==this.dirty&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return"IMG"==this.dom.nodeName}}class qo extends Ro{constructor(e,t,n,r,i,s,o,a,l,c){super(e,t,n,r,i,s,o,l,c),this.spec=a}update(e,t,n,r){if(3==this.dirty)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,t,n);return i&&this.updateInner(e,t,n,r),i}return!(!this.contentDOM&&!e.isLeaf)&&super.update(e,t,n,r)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,n,r){this.spec.setSelection?this.spec.setSelection(e,t,n.root):super.setSelection(e,t,n,r)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return!!this.spec.stopEvent&&this.spec.stopEvent(e)}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function jo(e,t,n){let r=e.firstChild,i=!1;for(let s=0;s0;){let a;for(;;)if(r){let e=n.children[r-1];if(!(e instanceof Po)){a=e,r--;break}n=e,r=e.children.length}else{if(n==t)break e;r=n.parent.children.indexOf(n),n=n.parent}let l=a.node;if(l){if(l!=e.child(i-1))break;--i,s.set(a,i),o.push(a)}}return{index:i,matched:s,matches:o.reverse()}}(e.node.content,e)}destroyBetween(e,t){if(e!=t){for(let n=e;n>1,s=Math.min(i,e.length);for(;r-1)r>this.index&&(this.changed=!0,this.destroyBetween(this.index,r)),this.top=this.top.children[this.index];else{let r=Po.create(this.top,e[i],t,n);this.top.children.splice(this.index,0,r),this.top=r,this.changed=!0}this.index=0,i++}}findNodeMatch(e,t,n,r){let i,s=-1;if(r>=this.preMatch.index&&(i=this.preMatch.matches[r-this.preMatch.index]).parent==this.top&&i.matchesNode(e,t,n))s=this.top.children.indexOf(i,this.index);else for(let r=this.index,i=Math.min(this.top.children.length,r+5);r=n||h<=t?s.push(l):(cn&&s.push(l.slice(n-c,l.size,r)))}return s}function ta(e,t=null){let n=e.domSelectionRange(),r=e.state.doc;if(!n.focusNode)return null;let i=e.docView.nearestDesc(n.focusNode),s=i&&0==i.size,o=e.docView.posFromDOM(n.focusNode,n.focusOffset,1);if(o<0)return null;let a,l,c=r.resolve(o);if(Hs(n)){for(a=o;i&&!i.node;)i=i.parent;let e=i.node;if(i&&e.isAtom&&ns.isSelectable(e)&&i.parent&&(!e.isInline||!function(e,t,n){for(let r=0==t,i=t==qs(e);r||i;){if(e==n)return!0;let t=Fs(e);if(!(e=e.parentNode))return!1;r=r&&0==t,i=i&&t==qs(e)}}(n.focusNode,n.focusOffset,i.dom))){let e=i.posBefore;l=new ns(o==e?c:r.resolve(e))}}else{if(n instanceof e.dom.ownerDocument.defaultView.Selection&&n.rangeCount>1){let t=o,i=o;for(let r=0;r{n.anchorNode==r&&n.anchorOffset==i||(t.removeEventListener("selectionchange",e.input.hideSelectionGuard),setTimeout((()=>{na(e)&&!e.state.selection.visible||e.dom.classList.remove("ProseMirror-hideselection")}),20))})}(e))}e.domObserver.setCurSelection(),e.domObserver.connectSelection()}}const ia=io||no&&ro<63;function sa(e,t){let{node:n,offset:r}=e.docView.domFromPos(t,0),i=rr(e,t,n)))||es.between(t,n,r)}function ua(e){return!(e.editable&&!e.hasFocus())&&da(e)}function da(e){let t=e.domSelectionRange();if(!t.anchorNode)return!1;try{return e.dom.contains(3==t.anchorNode.nodeType?t.anchorNode.parentNode:t.anchorNode)&&(e.editable||e.dom.contains(3==t.focusNode.nodeType?t.focusNode.parentNode:t.focusNode))}catch(e){return!1}}function pa(e,t){let{$anchor:n,$head:r}=e.selection,i=t>0?n.max(r):n.min(r),s=i.parent.inlineContent?i.depth?e.doc.resolve(t>0?i.after():i.before()):null:i;return s&&Zi.findFrom(s,t)}function fa(e,t){return e.dispatch(e.state.tr.setSelection(t).scrollIntoView()),!0}function ma(e,t,n){let r=e.state.selection;if(!(r instanceof es)){if(r instanceof ns&&r.node.isInline)return fa(e,new es(t>0?r.$to:r.$from));{let n=pa(e.state,t);return!!n&&fa(e,n)}}if(n.indexOf("s")>-1){let{$head:n}=r,i=n.textOffset?null:t<0?n.nodeBefore:n.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let s=e.state.doc.resolve(n.pos+i.nodeSize*(t<0?-1:1));return fa(e,new es(r.$anchor,s))}if(!r.empty)return!1;if(e.endOfTextblock(t>0?"forward":"backward")){let n=pa(e.state,t);return!!(n&&n instanceof ns)&&fa(e,n)}if(!(oo&&n.indexOf("m")>-1)){let n,i=r.$head,s=i.textOffset?null:t<0?i.nodeBefore:i.nodeAfter;if(!s||s.isText)return!1;let o=t<0?i.pos-s.nodeSize:i.pos;return!!(s.isAtom||(n=e.docView.descAt(o))&&!n.contentDOM)&&(ns.isSelectable(s)?fa(e,new ns(t<0?e.state.doc.resolve(i.pos-s.nodeSize):i)):!!co&&fa(e,new es(e.state.doc.resolve(t<0?o:o+s.nodeSize))))}}function ga(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function ba(e,t){let n=e.pmViewDesc;return n&&0==n.size&&(t<0||e.nextSibling||"BR"!=e.nodeName)}function ya(e,t){return t<0?function(e){let t=e.domSelectionRange(),n=t.focusNode,r=t.focusOffset;if(!n)return;let i,s,o=!1;for(eo&&1==n.nodeType&&r0){if(1!=n.nodeType)break;{let e=n.childNodes[r-1];if(ba(e,-1))i=n,s=--r;else{if(3!=e.nodeType)break;n=e,r=n.nodeValue.length}}}else{if(ka(n))break;{let t=n.previousSibling;for(;t&&ba(t,-1);)i=n.parentNode,s=Fs(t),t=t.previousSibling;if(t)n=t,r=ga(n);else{if(n=n.parentNode,n==e.dom)break;r=0}}}o?va(e,n,r):i&&va(e,i,s)}(e):function(e){let t=e.domSelectionRange(),n=t.focusNode,r=t.focusOffset;if(!n)return;let i,s,o=ga(n);for(;;)if(r{e.state==i&&ra(e)}),50)}function wa(e,t){let n=e.state.doc.resolve(t);if(!no&&!ao&&n.parent.inlineContent){let r=e.coordsAtPos(t);if(t>n.start()){let n=e.coordsAtPos(t-1),i=(n.top+n.bottom)/2;if(i>r.top&&i1)return n.leftr.top&&i1)return n.left>r.left?"ltr":"rtl"}}return"rtl"==getComputedStyle(e.dom).direction?"rtl":"ltr"}function xa(e,t,n){let r=e.state.selection;if(r instanceof es&&!r.empty||n.indexOf("s")>-1)return!1;if(oo&&n.indexOf("m")>-1)return!1;let{$from:i,$to:s}=r;if(!i.parent.inlineContent||e.endOfTextblock(t<0?"up":"down")){let n=pa(e.state,t);if(n&&n instanceof ns)return fa(e,n)}if(!i.parent.inlineContent){let n=t<0?i:s,o=r instanceof is?Zi.near(n,t):Zi.findFrom(n,t);return!!o&&fa(e,o)}return!1}function Ca(e,t){if(!(e.state.selection instanceof es))return!0;let{$head:n,$anchor:r,empty:i}=e.state.selection;if(!n.sameParent(r))return!0;if(!i)return!1;if(e.endOfTextblock(t>0?"forward":"backward"))return!0;let s=!n.textOffset&&(t<0?n.nodeBefore:n.nodeAfter);if(s&&!s.isText){let r=e.state.tr;return t<0?r.delete(n.pos-s.nodeSize,n.pos):r.delete(n.pos,n.pos+s.nodeSize),e.dispatch(r),!0}return!1}function Ea(e,t,n){e.domObserver.stop(),t.contentEditable=n,e.domObserver.start()}function Sa(e,t){e.someProp("transformCopied",(n=>{t=n(t,e)}));let n=[],{content:r,openStart:i,openEnd:s}=t;for(;i>1&&s>1&&1==r.childCount&&1==r.firstChild.childCount;){i--,s--;let e=r.firstChild;n.push(e.type.name,e.attrs!=e.type.defaultAttrs?e.attrs:null),r=e.content}let o=e.someProp("clipboardSerializer")||si.fromSchema(e.state.schema),a=Fa(),l=a.createElement("div");l.appendChild(o.serializeFragment(r,{document:a}));let c,h=l.firstChild,u=0;for(;h&&1==h.nodeType&&(c=La[h.nodeName.toLowerCase()]);){for(let e=c.length-1;e>=0;e--){let t=a.createElement(c[e]);for(;l.firstChild;)t.appendChild(l.firstChild);l.appendChild(t),u++}h=l.firstChild}return h&&1==h.nodeType&&h.setAttribute("data-pm-slice",`${i} ${s}${u?` -${u}`:""} ${JSON.stringify(n)}`),{dom:l,text:e.someProp("clipboardTextSerializer",(n=>n(t,e)))||t.content.textBetween(0,t.content.size,"\n\n"),slice:t}}function _a(e,t,n,r,i){let s,o,a=i.parent.type.spec.code;if(!n&&!t)return null;let l=t&&(r||a||!n);if(l){if(e.someProp("transformPastedText",(n=>{t=n(t,a||r,e)})),a)return t?new hr(ir.from(e.state.schema.text(t.replace(/\r\n?/g,"\n"))),0,0):hr.empty;let n=e.someProp("clipboardTextParser",(n=>n(t,i,r,e)));if(n)o=n;else{let n=i.marks(),{schema:r}=e.state,o=si.fromSchema(r);s=document.createElement("div"),t.split(/(?:\r\n?|\n)+/).forEach((e=>{let t=s.appendChild(document.createElement("p"));e&&t.appendChild(o.serializeNode(r.text(e,n)))}))}}else e.someProp("transformPastedHTML",(t=>{n=t(n,e)})),s=function(e){let t=/^(\s*]*>)*/.exec(e);t&&(e=e.slice(t[0].length));let n,r=Fa().createElement("div"),i=/<([a-z][^>\s]+)/i.exec(e);if((n=i&&La[i[1].toLowerCase()])&&(e=n.map((e=>"<"+e+">")).join("")+e+n.map((e=>"")).reverse().join("")),r.innerHTML=function(e){let t=window.trustedTypes;return t?(Ba||(Ba=t.createPolicy("ProseMirrorClipboard",{createHTML:e=>e})),Ba.createHTML(e)):e}(e),n)for(let e=0;e0;e--){let e=s.firstChild;for(;e&&1!=e.nodeType;)e=e.nextSibling;if(!e)break;s=e}if(!o){let t=e.someProp("clipboardParser")||e.someProp("domParser")||Gr.fromSchema(e.state.schema);o=t.parseSlice(s,{preserveWhitespace:!(!l&&!h),context:i,ruleFromNode:e=>"BR"!=e.nodeName||e.nextSibling||!e.parentNode||Aa.test(e.parentNode.nodeName)?null:{ignore:!0}})}if(h)o=function(e,t){if(!e.size)return e;let n,r=e.content.firstChild.type.schema;try{n=JSON.parse(t)}catch(t){return e}let{content:i,openStart:s,openEnd:o}=e;for(let e=n.length-2;e>=0;e-=2){let t=r.nodes[n[e]];if(!t||t.hasRequiredAttrs())break;i=ir.from(t.create(n[e+1],i)),s++,o++}return new hr(i,s,o)}(Na(o,+h[1],+h[2]),h[4]);else if(o=hr.maxOpen(function(e,t){if(e.childCount<2)return e;for(let n=t.depth;n>=0;n--){let r,i=t.node(n).contentMatchAt(t.index(n)),s=[];if(e.forEach((e=>{if(!s)return;let t,n=i.findWrapping(e.type);if(!n)return s=null;if(t=s.length&&r.length&&Ma(n,r,e,s[s.length-1],0))s[s.length-1]=t;else{s.length&&(s[s.length-1]=Ta(s[s.length-1],r.length));let t=Da(e,n);s.push(t),i=i.matchType(t.type),r=n}})),s)return ir.from(s)}return e}(o.content,i),!0),o.openStart||o.openEnd){let e=0,t=0;for(let t=o.content.firstChild;e{o=t(o,e)})),o}const Aa=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function Da(e,t,n=0){for(let r=t.length-1;r>=n;r--)e=t[r].create(null,ir.from(e));return e}function Ma(e,t,n,r,i){if(i1&&(s=0),i=n&&(a=t<0?o.contentMatchAt(0).fillBefore(a,s<=i).append(a):a.append(o.contentMatchAt(o.childCount).fillBefore(ir.empty,!0))),e.replaceChild(t<0?0:e.childCount-1,o.copy(a))}function Na(e,t,n){return t{for(let n in t)e.input.eventHandlers[n]||e.dom.addEventListener(n,e.input.eventHandlers[n]=t=>ja(e,t))}))}function ja(e,t){return e.someProp("handleDOMEvents",(n=>{let r=n[t.type];return!!r&&(r(e,t)||t.defaultPrevented)}))}function Ha(e,t){if(!t.bubbles)return!0;if(t.defaultPrevented)return!1;for(let n=t.target;n!=e.dom;n=n.parentNode)if(!n||11==n.nodeType||n.pmViewDesc&&n.pmViewDesc.stopEvent(t))return!1;return!0}function Ua(e){return{left:e.clientX,top:e.clientY}}function Wa(e,t,n,r,i){if(-1==r)return!1;let s=e.state.doc.resolve(r);for(let r=s.depth+1;r>0;r--)if(e.someProp(t,(t=>r>s.depth?t(e,n,s.nodeAfter,s.before(r),i,!0):t(e,n,s.node(r),s.before(r),i,!1))))return!0;return!1}function Ka(e,t,n){if(e.focused||e.focus(),e.state.selection.eq(t))return;let r=e.state.tr.setSelection(t);"pointer"==n&&r.setMeta("pointer",!0),e.dispatch(r)}function Ja(e,t,n,r){return Wa(e,"handleDoubleClickOn",t,n,r)||e.someProp("handleDoubleClick",(n=>n(e,t,r)))}function Ga(e,t,n,r){return Wa(e,"handleTripleClickOn",t,n,r)||e.someProp("handleTripleClick",(n=>n(e,t,r)))||function(e,t,n){if(0!=n.button)return!1;let r=e.state.doc;if(-1==t)return!!r.inlineContent&&(Ka(e,es.create(r,0,r.content.size),"pointer"),!0);let i=r.resolve(t);for(let t=i.depth+1;t>0;t--){let n=t>i.depth?i.nodeAfter:i.node(t),s=i.before(t);if(n.inlineContent)Ka(e,es.create(r,s+1,s+1+n.content.size),"pointer");else{if(!ns.isSelectable(n))continue;Ka(e,ns.create(r,s),"pointer")}return!0}}(e,n,r)}function Za(e){return rl(e)}Ra.keydown=(e,t)=>{let n=t;if(e.input.shiftKey=16==n.keyCode||n.shiftKey,!Ya(e,n)&&(e.input.lastKeyCode=n.keyCode,e.input.lastKeyCodeTime=Date.now(),!lo||!no||13!=n.keyCode))if(229!=n.keyCode&&e.domObserver.forceFlush(),!so||13!=n.keyCode||n.ctrlKey||n.altKey||n.metaKey)e.someProp("handleKeyDown",(t=>t(e,n)))||function(e,t){let n=t.keyCode,r=function(e){let t="";return e.ctrlKey&&(t+="c"),e.metaKey&&(t+="m"),e.altKey&&(t+="a"),e.shiftKey&&(t+="s"),t}(t);if(8==n||oo&&72==n&&"c"==r)return Ca(e,-1)||ya(e,-1);if(46==n&&!t.shiftKey||oo&&68==n&&"c"==r)return Ca(e,1)||ya(e,1);if(13==n||27==n)return!0;if(37==n||oo&&66==n&&"c"==r){let t=37==n?"ltr"==wa(e,e.state.selection.from)?-1:1:-1;return ma(e,t,r)||ya(e,t)}if(39==n||oo&&70==n&&"c"==r){let t=39==n?"ltr"==wa(e,e.state.selection.from)?1:-1:1;return ma(e,t,r)||ya(e,t)}return 38==n||oo&&80==n&&"c"==r?xa(e,-1,r)||ya(e,-1):40==n||oo&&78==n&&"c"==r?function(e){if(!io||e.state.selection.$head.parentOffset>0)return!1;let{focusNode:t,focusOffset:n}=e.domSelectionRange();if(t&&1==t.nodeType&&0==n&&t.firstChild&&"false"==t.firstChild.contentEditable){let n=t.firstChild;Ea(e,n,"true"),setTimeout((()=>Ea(e,n,"false")),20)}return!1}(e)||xa(e,1,r)||ya(e,1):r==(oo?"m":"c")&&(66==n||73==n||89==n||90==n)}(e,n)?n.preventDefault():Va(e,"key");else{let t=Date.now();e.input.lastIOSEnter=t,e.input.lastIOSEnterFallbackTimeout=setTimeout((()=>{e.input.lastIOSEnter==t&&(e.someProp("handleKeyDown",(t=>t(e,Us(13,"Enter")))),e.input.lastIOSEnter=0)}),200)}},Ra.keyup=(e,t)=>{16==t.keyCode&&(e.input.shiftKey=!1)},Ra.keypress=(e,t)=>{let n=t;if(Ya(e,n)||!n.charCode||n.ctrlKey&&!n.altKey||oo&&n.metaKey)return;if(e.someProp("handleKeyPress",(t=>t(e,n))))return void n.preventDefault();let r=e.state.selection;if(!(r instanceof es&&r.$from.sameParent(r.$to))){let t=String.fromCharCode(n.charCode);/[\r\n]/.test(t)||e.someProp("handleTextInput",(n=>n(e,r.$from.pos,r.$to.pos,t)))||e.dispatch(e.state.tr.insertText(t).scrollIntoView()),n.preventDefault()}};const Xa=oo?"metaKey":"ctrlKey";Pa.mousedown=(e,t)=>{let n=t;e.input.shiftKey=n.shiftKey;let r=Za(e),i=Date.now(),s="singleClick";i-e.input.lastClick.time<500&&function(e,t){let n=t.x-e.clientX,r=t.y-e.clientY;return n*n+r*r<100}(n,e.input.lastClick)&&!n[Xa]&&("singleClick"==e.input.lastClick.type?s="doubleClick":"doubleClick"==e.input.lastClick.type&&(s="tripleClick")),e.input.lastClick={time:i,x:n.clientX,y:n.clientY,type:s};let o=e.posAtCoords(Ua(n));o&&("singleClick"==s?(e.input.mouseDown&&e.input.mouseDown.done(),e.input.mouseDown=new Qa(e,o,n,!!r)):("doubleClick"==s?Ja:Ga)(e,o.pos,o.inside,n)?n.preventDefault():Va(e,"pointer"))};class Qa{constructor(e,t,n,r){let i,s;if(this.view=e,this.pos=t,this.event=n,this.flushed=r,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!n[Xa],this.allowDefault=n.shiftKey,t.inside>-1)i=e.state.doc.nodeAt(t.inside),s=t.inside;else{let n=e.state.doc.resolve(t.pos);i=n.parent,s=n.depth?n.before():0}const o=r?null:n.target,a=o?e.docView.nearestDesc(o,!0):null;this.target=a&&1==a.dom.nodeType?a.dom:null;let{selection:l}=e.state;(0==n.button&&i.type.spec.draggable&&!1!==i.type.spec.selectable||l instanceof ns&&l.from<=s&&l.to>s)&&(this.mightDrag={node:i,pos:s,addAttr:!(!this.target||this.target.draggable),setUneditable:!(!this.target||!eo||this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout((()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")}),20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Va(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout((()=>ra(this.view))),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Ua(e))),this.updateAllowDefault(e),this.allowDefault||!t?Va(this.view,"pointer"):function(e,t,n,r,i){return Wa(e,"handleClickOn",t,n,r)||e.someProp("handleClick",(n=>n(e,t,r)))||(i?function(e,t){if(-1==t)return!1;let n,r,i=e.state.selection;i instanceof ns&&(n=i.node);let s=e.state.doc.resolve(t);for(let e=s.depth+1;e>0;e--){let t=e>s.depth?s.nodeAfter:s.node(e);if(ns.isSelectable(t)){r=n&&i.$from.depth>0&&e>=i.$from.depth&&s.before(i.$from.depth+1)==i.$from.pos?s.before(i.$from.depth):s.before(e);break}}return null!=r&&(Ka(e,ns.create(e.state.doc,r),"pointer"),!0)}(e,n):function(e,t){if(-1==t)return!1;let n=e.state.doc.resolve(t),r=n.nodeAfter;return!!(r&&r.isAtom&&ns.isSelectable(r))&&(Ka(e,new ns(n),"pointer"),!0)}(e,n))}(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():0==e.button&&(this.flushed||io&&this.mightDrag&&!this.mightDrag.node.isAtom||no&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?(Ka(this.view,Zi.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Va(this.view,"pointer")}move(e){this.updateAllowDefault(e),Va(this.view,"pointer"),0==e.buttons&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}function Ya(e,t){return!!e.composing||!!(io&&Math.abs(t.timeStamp-e.input.compositionEndedAt)<500)&&(e.input.compositionEndedAt=-2e8,!0)}Pa.touchstart=e=>{e.input.lastTouch=Date.now(),Za(e),Va(e,"pointer")},Pa.touchmove=e=>{e.input.lastTouch=Date.now(),Va(e,"pointer")},Pa.contextmenu=e=>Za(e);const el=lo?5e3:-1;function tl(e,t){clearTimeout(e.input.composingTimeout),t>-1&&(e.input.composingTimeout=setTimeout((()=>rl(e)),t))}function nl(e){for(e.composing&&(e.input.composing=!1,e.input.compositionEndedAt=function(){let e=document.createEvent("Event");return e.initEvent("event",!0,!0),e.timeStamp}());e.input.compositionNodes.length>0;)e.input.compositionNodes.pop().markParentsDirty()}function rl(e,t=!1){if(!(lo&&e.domObserver.flushingSoon>=0)){if(e.domObserver.forceFlush(),nl(e),t||e.docView&&e.docView.dirty){let n=ta(e);return n&&!n.eq(e.state.selection)?e.dispatch(e.state.tr.setSelection(n)):!e.markCursor&&!t||e.state.selection.empty?e.updateState(e.state):e.dispatch(e.state.tr.deleteSelection()),!0}return!1}}Ra.compositionstart=Ra.compositionupdate=e=>{if(!e.composing){e.domObserver.flush();let{state:t}=e,n=t.selection.$to;if(t.selection instanceof es&&(t.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some((e=>!1===e.type.spec.inclusive))))e.markCursor=e.state.storedMarks||n.marks(),rl(e,!0),e.markCursor=null;else if(rl(e,!t.selection.empty),eo&&t.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let t=e.domSelectionRange();for(let n=t.focusNode,r=t.focusOffset;n&&1==n.nodeType&&0!=r;){let t=r<0?n.lastChild:n.childNodes[r-1];if(!t)break;if(3==t.nodeType){let n=e.domSelection();n&&n.collapse(t,t.nodeValue.length);break}n=t,r=-1}}e.input.composing=!0}tl(e,el)},Ra.compositionend=(e,t)=>{e.composing&&(e.input.composing=!1,e.input.compositionEndedAt=t.timeStamp,e.input.compositionPendingChanges=e.domObserver.pendingRecords().length?e.input.compositionID:0,e.input.compositionNode=null,e.input.compositionPendingChanges&&Promise.resolve().then((()=>e.domObserver.flush())),e.input.compositionID++,tl(e,20))};const il=Qs&&Ys<15||so&&ho<604;function sl(e,t,n,r,i){let s=_a(e,t,n,r,e.state.selection.$from);if(e.someProp("handlePaste",(t=>t(e,i,s||hr.empty))))return!0;if(!s)return!1;let o=function(e){return 0==e.openStart&&0==e.openEnd&&1==e.content.childCount?e.content.firstChild:null}(s),a=o?e.state.tr.replaceSelectionWith(o,r):e.state.tr.replaceSelection(s);return e.dispatch(a.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function ol(e){let t=e.getData("text/plain")||e.getData("Text");if(t)return t;let n=e.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}Pa.copy=Ra.cut=(e,t)=>{let n=t,r=e.state.selection,i="cut"==n.type;if(r.empty)return;let s=il?null:n.clipboardData,o=r.content(),{dom:a,text:l}=Sa(e,o);s?(n.preventDefault(),s.clearData(),s.setData("text/html",a.innerHTML),s.setData("text/plain",l)):function(e,t){if(!e.dom.parentNode)return;let n=e.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(t),n.style.cssText="position: fixed; left: -10000px; top: 10px";let r=getSelection(),i=document.createRange();i.selectNodeContents(t),e.dom.blur(),r.removeAllRanges(),r.addRange(i),setTimeout((()=>{n.parentNode&&n.parentNode.removeChild(n),e.focus()}),50)}(e,a),i&&e.dispatch(e.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))},Ra.paste=(e,t)=>{let n=t;if(e.composing&&!lo)return;let r=il?null:n.clipboardData,i=e.input.shiftKey&&45!=e.input.lastKeyCode;r&&sl(e,ol(r),r.getData("text/html"),i,n)?n.preventDefault():function(e,t){if(!e.dom.parentNode)return;let n=e.input.shiftKey||e.state.selection.$from.parent.type.spec.code,r=e.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus();let i=e.input.shiftKey&&45!=e.input.lastKeyCode;setTimeout((()=>{e.focus(),r.parentNode&&r.parentNode.removeChild(r),n?sl(e,r.value,null,i,t):sl(e,r.textContent,r.innerHTML,i,t)}),50)}(e,n)};class al{constructor(e,t,n){this.slice=e,this.move=t,this.node=n}}const ll=oo?"altKey":"ctrlKey";Pa.dragstart=(e,t)=>{let n=t,r=e.input.mouseDown;if(r&&r.done(),!n.dataTransfer)return;let i,s=e.state.selection,o=s.empty?null:e.posAtCoords(Ua(n));if(o&&o.pos>=s.from&&o.pos<=(s instanceof ns?s.to-1:s.to));else if(r&&r.mightDrag)i=ns.create(e.state.doc,r.mightDrag.pos);else if(n.target&&1==n.target.nodeType){let t=e.docView.nearestDesc(n.target,!0);t&&t.node.type.spec.draggable&&t!=e.docView&&(i=ns.create(e.state.doc,t.posBefore))}let a=(i||e.state.selection).content(),{dom:l,text:c,slice:h}=Sa(e,a);(!n.dataTransfer.files.length||!no||ro>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(il?"Text":"text/html",l.innerHTML),n.dataTransfer.effectAllowed="copyMove",il||n.dataTransfer.setData("text/plain",c),e.dragging=new al(h,!n[ll],i)},Pa.dragend=e=>{let t=e.dragging;window.setTimeout((()=>{e.dragging==t&&(e.dragging=null)}),50)},Ra.dragover=Ra.dragenter=(e,t)=>t.preventDefault(),Ra.drop=(e,t)=>{let n=t,r=e.dragging;if(e.dragging=null,!n.dataTransfer)return;let i=e.posAtCoords(Ua(n));if(!i)return;let s=e.state.doc.resolve(i.pos),o=r&&r.slice;o?e.someProp("transformPasted",(t=>{o=t(o,e)})):o=_a(e,ol(n.dataTransfer),il?null:n.dataTransfer.getData("text/html"),!1,s);let a=!(!r||n[ll]);if(e.someProp("handleDrop",(t=>t(e,n,o||hr.empty,a))))return void n.preventDefault();if(!o)return;n.preventDefault();let l=o?function(e,t,n){let r=e.resolve(t);if(!n.content.size)return t;let i=n.content;for(let e=0;e=0;t--){let n=t==r.depth?0:r.pos<=(r.start(t+1)+r.end(t+1))/2?-1:1,s=r.index(t)+(n>0?1:0),o=r.node(t),a=!1;if(1==e)a=o.canReplace(s,s,i);else{let e=o.contentMatchAt(s).findWrapping(i.firstChild.type);a=e&&o.canReplaceWith(s,s,e[0])}if(a)return 0==n?r.pos:n<0?r.before(t+1):r.after(t+1)}return null}(e.state.doc,s.pos,o):s.pos;null==l&&(l=s.pos);let c=e.state.tr;if(a){let{node:e}=r;e?e.replace(c):c.deleteSelection()}let h=c.mapping.map(l),u=0==o.openStart&&0==o.openEnd&&1==o.content.childCount,d=c.doc;if(u?c.replaceRangeWith(h,h,o.content.firstChild):c.replaceRange(h,h,o),c.doc.eq(d))return;let p=c.doc.resolve(h);if(u&&ns.isSelectable(o.content.firstChild)&&p.nodeAfter&&p.nodeAfter.sameMarkup(o.content.firstChild))c.setSelection(new ns(p));else{let t=c.mapping.map(l);c.mapping.maps[c.mapping.maps.length-1].forEach(((e,n,r,i)=>t=i)),c.setSelection(ha(e,p,c.doc.resolve(t)))}e.focus(),e.dispatch(c.setMeta("uiEvent","drop"))},Pa.focus=e=>{e.input.lastFocus=Date.now(),e.focused||(e.domObserver.stop(),e.dom.classList.add("ProseMirror-focused"),e.domObserver.start(),e.focused=!0,setTimeout((()=>{e.docView&&e.hasFocus()&&!e.domObserver.currentSelection.eq(e.domSelectionRange())&&ra(e)}),20))},Pa.blur=(e,t)=>{let n=t;e.focused&&(e.domObserver.stop(),e.dom.classList.remove("ProseMirror-focused"),e.domObserver.start(),n.relatedTarget&&e.dom.contains(n.relatedTarget)&&e.domObserver.currentSelection.clear(),e.focused=!1)},Pa.beforeinput=(e,t)=>{if(no&&lo&&"deleteContentBackward"==t.inputType){e.domObserver.flushSoon();let{domChangeCount:t}=e.input;setTimeout((()=>{if(e.input.domChangeCount!=t)return;if(e.dom.blur(),e.focus(),e.someProp("handleKeyDown",(t=>t(e,Us(8,"Backspace")))))return;let{$cursor:n}=e.state.selection;n&&n.pos>0&&e.dispatch(e.state.tr.delete(n.pos-1,n.pos).scrollIntoView())}),50)}};for(let e in Ra)Pa[e]=Ra[e];function cl(e,t){if(e==t)return!0;for(let n in e)if(e[n]!==t[n])return!1;for(let n in t)if(!(n in e))return!1;return!0}class hl{constructor(e,t){this.toDOM=e,this.spec=t||ml,this.side=this.spec.side||0}map(e,t,n,r){let{pos:i,deleted:s}=e.mapResult(t.from+r,this.side<0?-1:1);return s?null:new pl(i-n,i-n,this)}valid(){return!0}eq(e){return this==e||e instanceof hl&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&cl(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class ul{constructor(e,t){this.attrs=e,this.spec=t||ml}map(e,t,n,r){let i=e.map(t.from+r,this.spec.inclusiveStart?-1:1)-n,s=e.map(t.to+r,this.spec.inclusiveEnd?1:-1)-n;return i>=s?null:new pl(i,s,this)}valid(e,t){return t.from=e&&(!i||i(o.spec))&&n.push(o.copy(o.from+r,o.to+r))}for(let s=0;se){let o=this.children[s]+1;this.children[s+2].findInner(e-o,t-o,n,r+o,i)}}map(e,t,n){return this==bl||0==e.maps.length?this:this.mapInner(e,t,0,0,n||ml)}mapInner(e,t,n,r,i){let s;for(let o=0;o{let o=s-i-(n-e);for(let i=0;is+t-r)continue;let l=a[i]+t-r;n>=l?a[i+1]=e<=l?-2:-1:e>=t&&o&&(a[i]+=o,a[i+1]+=o)}r+=o})),t=n.maps[e].map(t,-1)}let l=!1;for(let t=0;t=r.content.size){l=!0;continue}let u=n.map(e[t+1]+s,-1)-i,{index:d,offset:p}=r.content.findIndex(h),f=r.maybeChild(d);if(f&&p==h&&p+f.nodeSize==u){let r=a[t+2].mapInner(n,f,c+1,e[t]+s+1,o);r!=bl?(a[t]=h,a[t+1]=u,a[t+2]=r):(a[t+1]=-2,l=!0)}else l=!0}if(l){let l=function(e,t,n,r,i,s,o){function a(e,t){for(let s=0;s{let o,a=s+n;if(o=vl(t,e,a)){for(r||(r=this.children.slice());is&&t.to=e){this.children[t]==e&&(n=this.children[t+2]);break}let i=e+1,s=i+t.content.size;for(let e=0;ei&&t.type instanceof ul){let e=Math.max(i,t.from)-i,n=Math.min(s,t.to)-i;en.map(e,t,ml)));return yl.from(n)}forChild(e,t){if(t.isLeaf)return gl.empty;let n=[];for(let r=0;re instanceof gl))?e:e.reduce(((e,t)=>e.concat(t instanceof gl?t:t.members)),[]))}}forEachSet(e){for(let t=0;tn&&t.to{let a=vl(e,t,o+n);if(a){s=!0;let e=xl(a,t,n+o+1,r);e!=bl&&i.push(o,o+t.nodeSize,e)}}));let o=kl(s?wl(e):e,-n).sort(Cl);for(let e=0;e0;)t++;e.splice(t,0,n)}function _l(e){let t=[];return e.someProp("decorations",(n=>{let r=n(e.state);r&&r!=bl&&t.push(r)})),e.cursorWrapper&&t.push(gl.create(e.state.doc,[e.cursorWrapper.deco])),yl.from(t)}const Al={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},Dl=Qs&&Ys<=11;class Ml{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class Tl{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new Ml,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver((e=>{for(let t=0;t"childList"==e.type&&e.removedNodes.length||"characterData"==e.type&&e.oldValue.length>e.target.nodeValue.length))?this.flushSoon():this.flush()})),Dl&&(this.onCharData=e=>{this.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout((()=>{this.flushingSoon=-1,this.flush()}),20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,Al)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;tthis.flush()),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout((()=>this.suppressingSelectionUpdates=!1),50)}onSelectionChange(){if(ua(this.view)){if(this.suppressingSelectionUpdates)return ra(this.view);if(Qs&&Ys<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&zs(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t,n=new Set;for(let t=e.focusNode;t;t=Bs(t))n.add(t);for(let r=e.anchorNode;r;r=Bs(r))if(n.has(r)){t=r;break}let r=t&&this.view.docView.nearestDesc(t);return r&&r.ignoreMutation({type:"selection",target:3==t.nodeType?t.parentNode:t})?(this.setCurSelection(),!0):void 0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let n=e.domSelectionRange(),r=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(n)&&ua(e)&&!this.ignoreSelectionChange(n),i=-1,s=-1,o=!1,a=[];if(e.editable)for(let e=0;e"BR"==e.nodeName));if(2==t.length){let[e,n]=t;e.parentNode&&e.parentNode.parentNode==n.parentNode?n.remove():e.remove()}else{let{focusNode:n}=this.currentSelection;for(let r of t){let t=r.parentNode;!t||"LI"!=t.nodeName||n&&Il(e,n)==t||r.remove()}}}let l=null;i<0&&r&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||r)&&(i>-1&&(e.docView.markDirty(i,s),function(e){if(!Ol.has(e)&&(Ol.set(e,null),-1!==["normal","nowrap","pre-line"].indexOf(getComputedStyle(e.dom).whiteSpace))){if(e.requiresGeckoHackNode=eo,Nl)return;console.warn("ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package."),Nl=!0}}(e)),this.handleDOMChange(i,s,o,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(n)||ra(e),this.currentSelection.set(n))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let n=this.view.docView.nearestDesc(e.target);if("attributes"==e.type&&(n==this.view.docView||"contenteditable"==e.attributeName||"style"==e.attributeName&&!e.oldValue&&!e.target.getAttribute("style")))return null;if(!n||n.ignoreMutation(e))return null;if("childList"==e.type){for(let n=0;nt.content.size?null:ha(e,t.resolve(n.anchor),t.resolve(n.head))}function Rl(e,t,n){let r=e.depth,i=t?e.end():e.pos;for(;r>0&&(t||e.indexAfter(r)==e.node(r).childCount);)r--,i++,t=!1;if(n){let t=e.node(r).maybeChild(e.indexAfter(r));for(;t&&!t.isLeaf;)t=t.firstChild,i++}return i}function zl(e){if(2!=e.length)return!1;let t=e.charCodeAt(0),n=e.charCodeAt(1);return t>=56320&&t<=57343&&n>=55296&&n<=56319}class $l{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new $a,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(Ul),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):"function"==typeof e?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=jl(this),ql(this),this.nodeViews=Hl(this),this.docView=zo(this.state.doc,Vl(this),_l(this),this.dom,this),this.domObserver=new Tl(this,((e,t,n,r)=>function(e,t,n,r,i){let s=e.input.compositionPendingChanges||(e.composing?e.input.compositionID:0);if(e.input.compositionPendingChanges=0,t<0){let t=e.input.lastSelectionTime>Date.now()-50?e.input.lastSelectionOrigin:null,n=ta(e,t);if(n&&!e.state.selection.eq(n)){if(no&&lo&&13===e.input.lastKeyCode&&Date.now()-100t(e,Us(13,"Enter")))))return;let r=e.state.tr.setSelection(n);"pointer"==t?r.setMeta("pointer",!0):"key"==t&&r.scrollIntoView(),s&&r.setMeta("composition",s),e.dispatch(r)}return}let o=e.state.doc.resolve(t),a=o.sharedDepth(n);t=o.before(a+1),n=e.state.doc.resolve(n).after(a+1);let l,c,h=e.state.selection,u=function(e,t,n){let r,{node:i,fromOffset:s,toOffset:o,from:a,to:l}=e.docView.parseRange(t,n),c=e.domSelectionRange(),h=c.anchorNode;if(h&&e.dom.contains(1==h.nodeType?h:h.parentNode)&&(r=[{node:h,offset:c.anchorOffset}],Hs(c)||r.push({node:c.focusNode,offset:c.focusOffset})),no&&8===e.input.lastKeyCode)for(let e=o;e>s;e--){let t=i.childNodes[e-1],n=t.pmViewDesc;if("BR"==t.nodeName&&!n){o=e;break}if(!n||n.size)break}let u=e.state.doc,d=e.someProp("domParser")||Gr.fromSchema(e.state.schema),p=u.resolve(a),f=null,m=d.parse(i,{topNode:p.parent,topMatch:p.parent.contentMatchAt(p.index()),topOpen:!0,from:s,to:o,preserveWhitespace:"pre"!=p.parent.type.whitespace||"full",findPositions:r,ruleFromNode:Fl,context:p});if(r&&null!=r[0].pos){let e=r[0].pos,t=r[1]&&r[1].pos;null==t&&(t=e),f={anchor:e+a,head:t+a}}return{doc:m,sel:f,from:a,to:l}}(e,t,n),d=e.state.doc,p=d.slice(u.from,u.to);8===e.input.lastKeyCode&&Date.now()-100=o?s-r:0;s-=e,s&&s=a?s-r:0;s-=t,s&&sDate.now()-225||lo)&&i.some((e=>1==e.nodeType&&!Bl.test(e.nodeName)))&&(!f||f.endA>=f.endB)&&e.someProp("handleKeyDown",(t=>t(e,Us(13,"Enter")))))return void(e.input.lastIOSEnter=0);if(!f){if(!(r&&h instanceof es&&!h.empty&&h.$head.sameParent(h.$anchor))||e.composing||u.sel&&u.sel.anchor!=u.sel.head){if(u.sel){let t=Pl(e,e.state.doc,u.sel);if(t&&!t.eq(e.state.selection)){let n=e.state.tr.setSelection(t);s&&n.setMeta("composition",s),e.dispatch(n)}}return}f={start:h.from,endA:h.to,endB:h.to}}e.state.selection.frome.state.selection.from&&f.start<=e.state.selection.from+2&&e.state.selection.from>=u.from?f.start=e.state.selection.from:f.endA=e.state.selection.to-2&&e.state.selection.to<=u.to&&(f.endB+=e.state.selection.to-f.endA,f.endA=e.state.selection.to)),Qs&&Ys<=11&&f.endB==f.start+1&&f.endA==f.start&&f.start>u.from&&"  "==u.doc.textBetween(f.start-u.from-1,f.start-u.from+1)&&(f.start--,f.endA--,f.endB--);let m,g=u.doc.resolveNoCache(f.start-u.from),b=u.doc.resolveNoCache(f.endB-u.from),y=d.resolve(f.start),k=g.sameParent(b)&&g.parent.inlineContent&&y.end()>=f.endA;if((so&&e.input.lastIOSEnter>Date.now()-225&&(!k||i.some((e=>"DIV"==e.nodeName||"P"==e.nodeName)))||!k&&g.post(e,Us(13,"Enter")))))return void(e.input.lastIOSEnter=0);if(e.state.selection.anchor>f.start&&function(e,t,n,r,i){if(n-t<=i.pos-r.pos||Rl(r,!0,!1)n||Rl(o,!0,!1)t(e,Us(8,"Backspace")))))return void(lo&&no&&e.domObserver.suppressSelectionUpdates());no&&f.endB==f.start&&(e.input.lastChromeDelete=Date.now()),lo&&!k&&g.start()!=b.start()&&0==b.parentOffset&&g.depth==b.depth&&u.sel&&u.sel.anchor==u.sel.head&&u.sel.head==f.endA&&(f.endB-=2,b=u.doc.resolveNoCache(f.endB-u.from),setTimeout((()=>{e.someProp("handleKeyDown",(function(t){return t(e,Us(13,"Enter"))}))}),20));let v,w,x,C=f.start,E=f.endA;if(k)if(g.pos==b.pos)Qs&&Ys<=11&&0==g.parentOffset&&(e.domObserver.suppressSelectionUpdates(),setTimeout((()=>ra(e)),20)),v=e.state.tr.delete(C,E),w=d.resolve(f.start).marksAcross(d.resolve(f.endA));else if(f.endA==f.endB&&(x=function(e,t){let n,r,i,s=e.firstChild.marks,o=t.firstChild.marks,a=s,l=o;for(let e=0;ee.mark(r.addToSet(e.marks));else{if(0!=a.length||1!=l.length)return null;r=l[0],n="remove",i=e=>e.mark(r.removeFromSet(e.marks))}let c=[];for(let e=0;en(e,C,E,t))))return;v=e.state.tr.insertText(t,C,E)}if(v||(v=e.state.tr.replace(C,E,u.doc.slice(f.start-u.from,f.endB-u.from))),u.sel){let t=Pl(e,v.doc,u.sel);t&&!(no&&e.composing&&t.empty&&(f.start!=f.endB||e.input.lastChromeDelete{!Ha(e,t)||ja(e,t)||!e.editable&&t.type in Ra||n(e,t)},za[t]?{passive:!0}:void 0)}io&&e.dom.addEventListener("input",(()=>null)),qa(e)}(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&qa(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Ul),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let e in this._props)t[e]=this._props[e];t.state=this.state;for(let n in e)t[n]=e[n];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var n;let r=this.state,i=!1,s=!1;e.storedMarks&&this.composing&&(nl(this),s=!0),this.state=e;let o=r.plugins!=e.plugins||this._props.plugins!=t.plugins;if(o||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let e=Hl(this);(function(e,t){let n=0,r=0;for(let r in e){if(e[r]!=t[r])return!0;n++}for(let e in t)r++;return n!=r})(e,this.nodeViews)&&(this.nodeViews=e,i=!0)}(o||t.handleDOMEvents!=this._props.handleDOMEvents)&&qa(this),this.editable=jl(this),ql(this);let a=_l(this),l=Vl(this),c=r.plugins==e.plugins||r.doc.eq(e.doc)?e.scrollToSelection>r.scrollToSelection?"to selection":"preserve":"reset",h=i||!this.docView.matchesNode(e.doc,l,a);!h&&e.selection.eq(r.selection)||(s=!0);let u="preserve"==c&&s&&null==this.dom.style.overflowAnchor&&function(e){let t,n,r=e.dom.getBoundingClientRect(),i=Math.max(0,r.top);for(let s=(r.left+r.right)/2,o=i+1;o=i-20){t=r,n=a.top;break}}return{refDOM:t,refTop:n,stack:go(e.dom)}}(this);if(s){this.domObserver.stop();let t=h&&(Qs||no)&&!this.composing&&!r.selection.empty&&!e.selection.empty&&function(e,t){let n=Math.min(e.$anchor.sharedDepth(e.head),t.$anchor.sharedDepth(t.head));return e.$anchor.start(n)!=t.$anchor.start(n)}(r.selection,e.selection);if(h){let n=no?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=function(e){let t=e.domSelectionRange();if(!t.focusNode)return null;let n=function(e,t){for(;;){if(3==e.nodeType&&t)return e;if(1==e.nodeType&&t>0){if("false"==e.contentEditable)return null;t=qs(e=e.childNodes[t-1])}else{if(!e.parentNode||js(e))return null;t=Fs(e),e=e.parentNode}}}(t.focusNode,t.focusOffset),r=function(e,t){for(;;){if(3==e.nodeType&&te(this))));else if(this.state.selection instanceof ns){let t=this.docView.domAfterPos(this.state.selection.from);1==t.nodeType&&mo(this,t.getBoundingClientRect(),e)}else mo(this,this.coordsAtPos(this.state.selection.head,1),e)}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(e&&e.plugins==this.state.plugins&&this.directPlugins==this.prevDirectPlugins)for(let t=0;t0&&this.state.doc.nodeAt(e))==n.node&&(r=e)}this.dragging=new al(e.slice,e.move,r<0?void 0:ns.create(this.state.doc,r))}someProp(e,t){let n,r=this._props&&this._props[e];if(null!=r&&(n=t?t(r):r))return n;for(let r=0;re.ownerDocument.getSelection()),this._root=e;return e||document}updateRoot(){this._root=null}posAtCoords(e){return xo(this,e)}coordsAtPos(e,t=1){return _o(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,n=-1){let r=this.docView.posFromDOM(e,t,n);if(null==r)throw new RangeError("DOM position not inside the editor");return r}endOfTextblock(e,t){return function(e,t,n){return Oo==t&&No==n?Lo:(Oo=t,No=n,Lo="up"==n||"down"==n?function(e,t,n){let r=t.selection,i="up"==n?r.$from:r.$to;return Mo(e,t,(()=>{let{node:t}=e.docView.domFromPos(i.pos,"up"==n?-1:1);for(;;){let n=e.docView.nearestDesc(t,!0);if(!n)break;if(n.node.isBlock){t=n.contentDOM||n.dom;break}t=n.dom.parentNode}let r=_o(e,i.pos,1);for(let e=t.firstChild;e;e=e.nextSibling){let t;if(1==e.nodeType)t=e.getClientRects();else{if(3!=e.nodeType)continue;t=Rs(e,0,e.nodeValue.length).getClientRects()}for(let e=0;ei.top+1&&("up"==n?r.top-i.top>2*(i.bottom-r.top):i.bottom-r.bottom>2*(r.bottom-i.top)))return!1}}return!0}))}(e,t,n):function(e,t,n){let{$head:r}=t.selection;if(!r.parent.isTextblock)return!1;let i=r.parentOffset,s=!i,o=i==r.parent.content.size,a=e.domSelection();return a?To.test(r.parent.textContent)&&a.modify?Mo(e,t,(()=>{let{focusNode:t,focusOffset:i,anchorNode:s,anchorOffset:o}=e.domSelectionRange(),l=a.caretBidiLevel;a.modify("move",n,"character");let c=r.depth?e.docView.domAfterPos(r.before()):e.dom,{focusNode:h,focusOffset:u}=e.domSelectionRange(),d=h&&!c.contains(1==h.nodeType?h:h.parentNode)||t==h&&i==u;try{a.collapse(s,o),t&&(t!=s||i!=o)&&a.extend&&a.extend(t,i)}catch(e){}return null!=l&&(a.caretBidiLevel=l),d})):"left"==n||"backward"==n?s:o:r.pos==r.start()||r.pos==r.end()}(e,t,n))}(this,t||this.state,e)}pasteHTML(e,t){return sl(this,"",e,!1,t||new ClipboardEvent("paste"))}pasteText(e,t){return sl(this,e,null,!0,t||new ClipboardEvent("paste"))}destroy(){this.docView&&(function(e){e.domObserver.stop();for(let t in e.input.eventHandlers)e.dom.removeEventListener(t,e.input.eventHandlers[t]);clearTimeout(e.input.composingTimeout),clearTimeout(e.input.lastIOSEnterFallbackTimeout)}(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],_l(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,Ps=null)}get isDestroyed(){return null==this.docView}dispatchEvent(e){return function(e,t){ja(e,t)||!Pa[t.type]||!e.editable&&t.type in Ra||Pa[t.type](e,t)}(this,e)}dispatch(e){let t=this._props.dispatchTransaction;t?t.call(this,e):this.updateState(this.state.apply(e))}domSelectionRange(){let e=this.domSelection();return e?io&&11===this.root.nodeType&&function(e){let t=e.activeElement;for(;t&&t.shadowRoot;)t=t.shadowRoot.activeElement;return t}(this.dom.ownerDocument)==this.dom&&function(e,t){if(t.getComposedRanges){let n=t.getComposedRanges(e.root)[0];if(n)return Ll(e,n)}let n;function r(e){e.preventDefault(),e.stopImmediatePropagation(),n=e.getTargetRanges()[0]}return e.dom.addEventListener("beforeinput",r,!0),document.execCommand("indent"),e.dom.removeEventListener("beforeinput",r,!0),n?Ll(e,n):null}(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}}function Vl(e){let t=Object.create(null);return t.class="ProseMirror",t.contenteditable=String(e.editable),e.someProp("attributes",(n=>{if("function"==typeof n&&(n=n(e.state)),n)for(let e in n)"class"==e?t.class+=" "+n[e]:"style"==e?t.style=(t.style?t.style+";":"")+n[e]:t[e]||"contenteditable"==e||"nodeName"==e||(t[e]=String(n[e]))})),t.translate||(t.translate="no"),[pl.node(0,e.state.doc.content.size,t)]}function ql(e){if(e.markCursor){let t=document.createElement("img");t.className="ProseMirror-separator",t.setAttribute("mark-placeholder","true"),t.setAttribute("alt",""),e.cursorWrapper={dom:t,deco:pl.widget(e.state.selection.from,t,{raw:!0,marks:e.markCursor})}}else e.cursorWrapper=null}function jl(e){return!e.someProp("editable",(t=>!1===t(e.state)))}function Hl(e){let t=Object.create(null);function n(e){for(let n in e)Object.prototype.hasOwnProperty.call(t,n)||(t[n]=e[n])}return e.someProp("nodeViews",n),e.someProp("markViews",n),t}function Ul(e){if(e.spec.state||e.spec.filterTransaction||e.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}function Wl(e,t,n,r){const i=document.createElement("a");i.className=`s-editor-btn s-btn s-btn__clear flex--item js-editor-btn js-${r}`,i.href=n,i.target="_blank",i.title=t,i.setAttribute("aria-label",t),i.dataset.controller="s-tooltip",i.dataset.sTooltipPlacement="bottom";const s=document.createElement("span");s.className="svg-icon-bg icon"+e,i.append(s);const o={command:(e,t)=>(t&&window.open(i.href,i.target),!!n),active:()=>!1};return{key:r,richText:o,commonmark:o,display:i}}function Kl(e,t){const n=document.createElement("span");n.className="flex--item ta-left fs-fine tt-uppercase mx12 mb6 mt12 fc-black-400",n.dataset.key=t,n.textContent=e;const r={command:()=>!0,visible:()=>!0,active:()=>!1};return{key:t,richText:r,commonmark:r,display:n}}function Jl(e,t,n,r){const i=document.createElement("button");return i.type="button",i.dataset.key=n,i.textContent=e,i.setAttribute("role","menuitem"),i.className="s-block-link s-editor--dropdown-item js-editor-btn",r&&i.classList.add(...r),{key:n,...t,display:i}}function Gl(e,t){return t?e:null}function Zl(e,t,n,r){const i=document.createElement("button");i.className=`s-editor-btn s-btn s-btn__clear js-editor-btn js-${n}`,r&&i.classList.add(...r);let s=t,o=null;"string"!=typeof t&&(s=t.title,o=t.description),o&&(i.dataset.sTooltipHtmlTitle=Rn`

    ${s}

    ${o}

    `),i.title=s,i.setAttribute("aria-label",s),i.dataset.controller="s-tooltip",i.dataset.sTooltipPlacement="bottom",i.dataset.key=n,i.type="button";const a=document.createElement("span");return a.className="svg-icon-bg icon"+e,i.append(a),i}function Xl(e,t,n,r,i,...s){const o={command:()=>!0,visible:r,active:i};return{key:n,display:{svg:e,label:t},children:s,richText:o,commonmark:o}}var Ql=r(19);const Yl=()=>!1;class ec{dom;blocks;view;readonly;editorType;static activeClass="is-selected";static invisibleClass="d-none";constructor(e,t,n){this.view=t,this.editorType=n,this.dom=document.createElement("div"),this.dom.className="d-flex g16 fl-grow1 ai-center js-editor-menu",this.blocks=e.filter((e=>!!e)).sort(((e,t)=>e.priority-t.priority)).map((e=>{const t=this.standardizeMenuItems(e.entries),n=this.makeBlockContainer(e);for(const e of t)n.appendChild(e.display);return this.dom.appendChild(n),{...e,entries:t,dom:n}})),this.update(t,null);const r=[].concat(...this.blocks.map((e=>e.entries)).reduce(((e,t)=>e.concat(t)),[]).filter((e=>!!e)).map((e=>"children"in e&&e.children?.length?[e,...e.children]:e)));this.dom.addEventListener("click",(e=>{const n=e.target.closest(".js-editor-btn");if(!n)return;if(n.hasAttribute("disabled"))return;const i=n.dataset.key;if(e.preventDefault(),e.detail>0){if("menuitem"===n.getAttribute("role")){const t=e.target.closest('[data-controller="s-popover"]');(0,Ql.hidePopover)(t)}t.focus()}const s=r.find((e=>e.key===i)),o=this.command(s);o.command&&o.command(t.state,t.dispatch.bind(t),t)})),this.readonly=!t.editable}update(e,t){if(!On(t,e.state)&&this.readonly!==e.editable)return;this.readonly=!e.editable,this.dom.classList.toggle("pe-none",this.readonly);const n=this.readonly,r=this.view.hasFocus();for(const e of this.blocks){const t=!e.visible||e.visible(this.view.state);if(e.visible&&e.dom.classList.toggle(ec.invisibleClass,!t),t)for(const t of e.entries)this.checkAndUpdateMenuCommandState(t,n,r)}}destroy(){this.dom.remove()}checkAndUpdateMenuCommandState(e,t,n){let r=e.display;if(!r.classList.contains("js-editor-btn")){const e=r.querySelector(".js-editor-btn");r=e??r}const i=this.command(e),s=!i.visible||i.visible(this.view.state),o=!(!n||!i.active)&&i.active(this.view.state),a=!t&&i.command(this.view.state,void 0,this.view);if(r.classList.remove(ec.activeClass),r.classList.remove(ec.invisibleClass),r.removeAttribute("disabled"),r.dataset.key=e.key,s?o?r.classList.add(ec.activeClass):a||r.setAttribute("disabled",""):r.classList.add(ec.invisibleClass),"children"in e&&e.children?.length)for(const r of e.children)this.checkAndUpdateMenuCommandState(r,t,n)}makeBlockContainer(e){const t=document.createElement("div");return t.className=`s-editor-menu-block d-flex g2 ${e.classes?.join(" ")??""} js-block-${e.name}`,t}standardizeMenuItems(e){const t=[];if(!e?.length)return[];for(const n of e){if(!n?.key)continue;let e={...n,commonmark:this.expandCommand(n.commonmark),richText:this.expandCommand(n.richText),display:null,children:null};"children"in n&&n.children?.length?(e.children=this.standardizeMenuItems(n.children),e=this.buildMenuDropdown(e,n.display)):"svg"in n.display?e.display=Zl(n.display.svg,n.display.label,e.key,[]):e.display=n.display,t.push(e)}return t}command(e){return this.editorType===Hn.RichText?e?.richText:e?.commonmark}buildMenuDropdown(e,t){const n=Vn(),r=`${e.key}-popover-${n}`,i=`${e.key}-btn-${n}`,s=Zl(t.svg,t.label,e.key);s.classList.add("s-btn","s-btn__dropdown"),s.setAttribute("aria-controls",r),s.setAttribute("data-action","s-popover#toggle"),s.setAttribute("data-controller","s-tooltip"),s.id=i,s.dataset.key=e.key;const o=document.createElement("div");o.className="s-popover wmn-initial w-auto px0 pt0 py8",o.id=r,o.setAttribute("role","menu");const a=document.createElement("div");a.className="d-flex fd-column",a.setAttribute("role","presentation"),a.append(...e.children.map((e=>e.display))),o.appendChild(a);const l=document.createElement("div");l.dataset.controller="s-popover",l.setAttribute("data-s-popover-toggle-class","is-selected"),l.setAttribute("data-s-popover-placement","bottom"),l.setAttribute("data-s-popover-reference-selector",`#${i}`),l.appendChild(s),l.appendChild(o);const c={...this.command(e)};return{key:e.key,display:l,children:e.children,richText:c,commonmark:c}}expandCommand(e){return e?"command"in e?e:{command:e}:{command:Yl,visible:null,active:null}}}function tc(e,t,n){return new gs({view(r){const i=new ec(e,r,n),s=(t=t||function(e){return e.dom.parentNode})(r);return s.contains(r.dom)?s.insertBefore(i.dom,r.dom):s.insertBefore(i.dom,s.firstChild),i}})}class nc extends ks{constructor(e){super(e)}get(e){return super.get(e)}setMeta(e,t){return e.setMeta(this,t)}}class rc extends gs{constructor(e){super(e)}get transactionKey(){return this.spec.key}getMeta(e){return e.getMeta(this.transactionKey)}}class ic{callback;inProgressPromise;transactionKey;constructor(e,t,n){this.callback=n,this.transactionKey=t,this.attachCallback(e,null)}update(e,t){e.state.doc.eq(t.doc)||this.attachCallback(e,t)}destroy(){}attachCallback(e,t){const n=this.inProgressPromise=Math.random();this.callback(e,t).then((t=>{n===this.inProgressPromise?(this.inProgressPromise=null,this.transactionKey.dispatchCallbackData(e,t)):Sn("AsyncViewHandler attachCallback","cancelling promise update due to another callback taking its place")})).catch((()=>{this.inProgressPromise=null}))}}class sc extends rc{constructor(e){e.view=t=>new ic(t,e.key,e.asyncCallback),super(e)}getMeta(e){const t=e.getMeta(this.transactionKey);return t?.state}getCallbackData(e){const t=e.getMeta(this.transactionKey);return t?.callbackData}}class oc{dom;container;renderer;renderTimeoutId=null;renderDelayMs;isShown;constructor(e,t,n){if(this.container=t,this.isShown=n.enabled&&n.shownByDefault,this.dom=document.createElement("div"),this.dom.classList.add("s-prose","py16","js-md-preview"),this.container.appendChild(this.dom),this.renderer=n?.renderer,!this.renderer)throw"CommonmarkOptions.preview.renderer is required when CommonmarkOptions.preview.enabled is true";this.renderDelayMs=n?.renderDelayMs??100,this.updatePreview(e.state.doc.textContent)}update(e,t){const n=ac.getState(e.state),r=n?.isShown||!1;if(!Tn(t,e.state)&&this.isShown===r)return;this.isShown=r,this.renderTimeoutId&&(window.clearTimeout(this.renderTimeoutId),this.renderTimeoutId=null);const i=e.state.doc.textContent;this.isShown&&this.renderDelayMs?this.renderTimeoutId=window.setTimeout((()=>{this.updatePreview(i),this.renderTimeoutId=null}),this.renderDelayMs):this.updatePreview(i)}destroy(){this.dom.remove()}updatePreview(e){this.container.innerHTML="",this.isShown&&(this.container.appendChild(this.dom),this.renderer?.(e,this.dom).catch((e=>_n("PreviewView.updatePreview","Uncaught exception in preview renderer",e))))}}const ac=new class extends nc{constructor(){super("preview")}setPreviewVisibility(e,t){const n=this.setMeta(e.state.tr,{isShown:t});e.dispatch(n)}previewIsVisible(e){const t=this.getState(e.state);return t?.isShown??!1}};function lc(e){return t=>`${e} (${t.shortcut})`}const cc={commands:{blockquote:lc("Blockquote"),bold:lc("Bold"),code_block:{title:lc("Code block"),description:"Multiline block of code with syntax highlighting"},emphasis:lc("Italic"),heading:{dropdown:lc("Heading"),entry:({level:e})=>`Heading ${e}`},help:"Help",horizontal_rule:lc("Horizontal rule"),image:lc("Image"),inline_code:{title:lc("Inline code"),description:"Single line code span for use within a block of text"},kbd:lc("Keyboard"),link:lc("Link"),metaTagLink:lc("Meta tag"),moreFormatting:"More formatting",ordered_list:lc("Numbered list"),redo:lc("Redo"),spoiler:lc("Spoiler"),sub:lc("Subscript"),sup:lc("Superscript"),strikethrough:"Strikethrough",table_edit:"Edit table",table_insert:lc("Table"),table_column:{insert_after:"Insert column after",insert_before:"Insert column before",remove:"Remove column"},table_row:{insert_after:"Insert row after",insert_before:"Insert row before",remove:"Remove row"},tagLink:lc("Tag"),undo:lc("Undo"),unordered_list:lc("Bulleted list")},link_editor:{cancel_button:"Cancel",href_label:"Link URL",save_button:"Save",text_label:"Link text",validation_error:"The entered URL is invalid."},link_tooltip:{edit_button_title:"Edit link",remove_button_title:"Remove link"},menubar:{mode_toggle_markdown_title:"Markdown mode",mode_toggle_preview_title:"Markdown with preview mode",mode_toggle_richtext_title:"Rich text mode"},nodes:{codeblock_lang_auto:({lang:e})=>`${e} (auto)`,spoiler_reveal_text:"Reveal spoiler"},image_upload:{default_image_alt_text:"enter image description here",external_url_validation_error:"The entered URL is invalid.",upload_error_file_too_big:({sizeLimitMib:e})=>`Your image is too large to upload (over ${e} MiB)`,upload_error_generic:"Image upload failed. Please try again.",upload_error_unsupported_format:({supportedFormats:e})=>`Please select an image (${e}) to upload`,uploaded_image_preview_alt:"uploaded image preview"}};let hc=cc;function uc(e){hc=e}function dc(e,t){return t.split(".").reduce(((e,t)=>e?.[t]),e)}const pc={};function fc(e,t={}){e in pc||(pc[e]=dc(hc,e)||dc(cc,e));const n=pc[e];if(!n)throw`Missing translation for key: ${e}`;if("string"==typeof n)return n;if("function"==typeof n)return n(t);throw`Missing translation for key: ${e}`}const mc=new class extends nc{constructor(){super("interface-manager")}showInterfaceTr(e,t,n){n&&"shouldShow"in n&&delete n.shouldShow;const r={...t.getState(e),...n};if(!this.checkIfValid(r,!0))return null;let i=this.hideCurrentInterfaceTr(e)||e.tr;if(this.dispatchCancelableEvent(e,`${t.name}-show`,r))return null;i=t.setMeta(i,{...r,shouldShow:!0});const{containerGetter:s,dom:o}=this.getState(e);return i=this.setMeta(i,{dom:o,currentlyShown:t,containerGetter:s}),i}hideInterfaceTr(e,t,n){n&&"shouldShow"in n&&delete n.shouldShow;const r={...t.getState(e),...n};if(!this.checkIfValid(r,!1))return null;if(this.dispatchCancelableEvent(e,`${t.name}-hide`,r))return null;let i=e.tr;i=t.setMeta(i,{...r,shouldShow:!1});const{containerGetter:s,dom:o}=this.getState(e);return i=this.setMeta(i,{dom:o,currentlyShown:null,containerGetter:s}),i}hideCurrentInterfaceTr(e){const{currentlyShown:t}=this.getState(e);return t?this.hideInterfaceTr(e,t,{shouldShow:!1}):null}checkIfValid(e,t){return t?!("shouldShow"in e)||!e.shouldShow:e.shouldShow}dispatchCancelableEvent(e,t,n){return!qn(this.getState(e).dom,t,n)}};class gc extends nc{name;constructor(e){super(e),this.name=e}getContainer(e){return mc.getState(e.state).containerGetter(e)}showInterfaceTr(e,t){return mc.showInterfaceTr(e,this,t)}hideInterfaceTr(e,t){return mc.hideInterfaceTr(e,this,t)}}function bc(e){return e=e||function(e){return e.dom.parentElement},new rc({key:mc,state:{init:()=>({dom:null,currentlyShown:null,containerGetter:e}),apply(e,t){return{...t,...this.getMeta(e)}}},props:{handleKeyDown:(e,t)=>{if("Escape"===t.key){const t=mc.hideCurrentInterfaceTr(e.state);t&&e.dispatch(t)}return!1},handleClick(e){const t=mc.hideCurrentInterfaceTr(e.state);return t&&e.dispatch(t),!1}},view:t=>(t.dispatch(mc.setMeta(t.state.tr,{dom:t.dom,currentlyShown:null,containerGetter:e})),{})})}class yc{key;isShown;constructor(e){this.key=e,this.isShown=!1}update(e){const{shouldShow:t}=this.key.getState(e.state);this.isShown&&!t?(this.isShown=!1,this.destroyInterface(this.key.getContainer(e))):!this.isShown&&t&&(this.isShown=!0,this.buildInterface(this.key.getContainer(e)))}tryShowInterfaceTr(e,t){return this.key.showInterfaceTr(e,t)}tryHideInterfaceTr(e,t){return this.key.hideInterfaceTr(e,t)}}async function kc(e){const t=new FormData;t.append("file",e);const n=await fetch("/image/upload",{method:"POST",cache:"no-cache",body:t});if(!n.ok)throw Error(`Failed to upload image: ${n.status} - ${n.statusText}`);return(await n.json()).UploadedImage}const vc=["image/jpeg","image/png","image/gif"];var wc,xc;(xc=wc||(wc={}))[xc.Ok=0]="Ok",xc[xc.FileTooLarge=1]="FileTooLarge",xc[xc.InvalidFileType=2]="InvalidFileType";class Cc extends yc{uploadOptions;uploadContainer;uploadField;image=null;isVisible;validateLink;addTransactionDispatcher;constructor(e,t,n,r){super(Ac);const i=Vn(),s=t.acceptedFileTypes||vc;this.isVisible=!1,this.uploadOptions=t,this.validateLink=n,this.addTransactionDispatcher=r,this.uploadContainer=document.createElement("div"),this.uploadContainer.className="mt6 bt bb bc-black-400 js-image-uploader",this.uploadField=document.createElement("input"),this.uploadField.type="file",this.uploadField.className="js-image-uploader-input v-visible-sr",this.uploadField.accept=s.join(", "),this.uploadField.multiple=!1,this.uploadField.id="fileUpload"+i,this.uploadContainer.innerHTML=Rn` -
    - -
    - , drag & drop, , or paste an image. -
    - -
    -
    - - -
    -
    - -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
    - `;const o=this.uploadContainer.querySelector(".js-cta-container"),a=s.length?s.join(", ").replace(/image\//g,""):"",l=this.uploadOptions.sizeLimitMib??2;if(a){const e=document.createElement("br");o.appendChild(e)}if(o.appendChild(this.getCaptionElement(a,l)),this.uploadContainer.querySelector(".js-browse-button").appendChild(this.uploadField),this.uploadContainer.querySelector(".js-branding-html").innerHTML=this.uploadOptions?.brandingHtml,this.uploadContainer.querySelector(".js-content-policy-html").innerHTML=this.uploadOptions?.contentPolicyHtml,this.uploadField.addEventListener("change",(()=>{this.handleFileSelection(e)})),this.uploadContainer.addEventListener("dragenter",this.highlightDropArea.bind(this)),this.uploadContainer.addEventListener("dragover",this.highlightDropArea.bind(this)),this.uploadContainer.addEventListener("drop",(t=>{this.unhighlightDropArea(t),this.handleDrop(t,e)})),this.uploadContainer.addEventListener("paste",(t=>{this.handlePaste(t,e)})),this.uploadContainer.addEventListener("dragleave",this.unhighlightDropArea.bind(this)),this.uploadContainer.querySelector(".js-cancel-button").addEventListener("click",(()=>{const t=this.tryHideInterfaceTr(e.state);t&&e.dispatch(t)})),this.uploadContainer.querySelector(".js-add-image").addEventListener("click",(t=>{this.handleUploadTrigger(t,this.image,e)})),this.uploadOptions?.warningNoticeHtml){const e=this.uploadContainer.querySelector(".js-warning-notice-html");e.classList.remove("d-none"),e.innerHTML=this.uploadOptions?.warningNoticeHtml}this.uploadOptions.allowExternalUrls&&(this.uploadContainer.querySelector(".js-external-url-trigger-container").classList.remove("d-none"),this.uploadContainer.querySelector(".js-external-url-trigger").addEventListener("click",(()=>{this.toggleExternalUrlInput(!0)})),this.uploadContainer.querySelector(".js-external-url-input").addEventListener("input",(e=>{this.validateExternalUrl(e.target.value)})))}highlightDropArea(e){this.uploadContainer.classList.add("bs-ring"),this.uploadContainer.classList.add("bc-theme-secondary-400"),e.preventDefault(),e.stopPropagation()}unhighlightDropArea(e){this.uploadContainer.classList.remove("bs-ring"),this.uploadContainer.classList.remove("bc-theme-secondary-400"),e.preventDefault(),e.stopPropagation()}getCaptionElement(e,t){const n=document.createElement("span");n.className="fc-light fs-caption";let r=`(Max size ${t} MiB)`;return e&&(r=`Supported file types: ${e} ${r}`),n.innerText=r,n}handleFileSelection(e){this.resetImagePreview();const t=this.uploadField.files;e.state.selection.$from.parent.inlineContent&&t.length&&this.showImagePreview(t[0])}handleDrop(e,t){this.resetImagePreview();const n=e.dataTransfer.files;t.state.selection.$from.parent.inlineContent&&n.length&&this.showImagePreview(n[0])}handlePaste(e,t){this.resetImagePreview();const n=e.clipboardData.files;t.state.selection.$from.parent.inlineContent&&n.length&&this.showImagePreview(n[0])}validateImage(e){const t=this.uploadOptions.acceptedFileTypes??vc,n=1024*(this.uploadOptions.sizeLimitMib??2)*1024;return-1===t.indexOf(e.type)?wc.InvalidFileType:e.size>=n?wc.FileTooLarge:wc.Ok}showValidationError(e,t="warning"){this.uploadField.value=null;const n=this.uploadContainer.querySelector(".js-validation-message");"warning"===t?(n.classList.remove("s-notice__danger"),n.classList.add("s-notice__warning")):(n.classList.remove("s-notice__warning"),n.classList.add("s-notice__danger")),n.classList.remove("d-none"),n.textContent=e}hideValidationError(){const e=this.uploadContainer.querySelector(".js-validation-message");e.classList.add("d-none"),e.classList.remove("s-notice__warning"),e.classList.remove("s-notice__danger"),e.innerHTML=""}showImagePreview(e){return new Promise(((t,n)=>this.showImagePreviewAsync(e,t,n)))}showImagePreviewAsync(e,t,n){const r=this.uploadContainer.querySelector(".js-image-preview"),i=this.uploadContainer.querySelector(".js-add-image");switch(this.hideValidationError(),this.validateImage(e)){case wc.FileTooLarge:return this.showValidationError(fc("image_upload.upload_error_file_too_big",{sizeLimitMib:(this.uploadOptions.sizeLimitMib??2).toString()})),void n("file too large");case wc.InvalidFileType:return this.showValidationError(fc("image_upload.upload_error_unsupported_format",{supportedFormats:(this.uploadOptions.acceptedFileTypes||vc).join(", ").replace(/image\//g,"")})),void n("invalid filetype")}this.resetImagePreview();const s=new FileReader;s.addEventListener("load",(()=>{const n=new Image;n.className="hmx1 w-auto",n.title=e.name,n.src=s.result,n.alt=fc("image_upload.uploaded_image_preview_alt"),r.appendChild(n),r.classList.remove("d-none"),this.image=e,i.disabled=!1,t()}),!1),s.readAsDataURL(e)}toggleExternalUrlInput(e){const t=this.uploadContainer.querySelector(".js-cta-container"),n=this.uploadContainer.querySelector(".js-external-url-input-container");t.classList.toggle("d-none",e),n.classList.toggle("d-none",!e),n.querySelector(".js-external-url-input").value=""}validateExternalUrl(e){this.resetImagePreview();const t=this.uploadContainer.querySelector(".js-add-image");this.validateLink(e)?(this.hideValidationError(),t.disabled=!1):(this.showValidationError(fc("image_upload.external_url_validation_error"),"danger"),t.disabled=!0)}resetImagePreview(){this.uploadContainer.querySelector(".js-image-preview").innerHTML="",this.image=null,this.uploadContainer.querySelector(".js-add-image").disabled=!0}resetUploader(){this.resetImagePreview(),this.toggleExternalUrlInput(!1),this.hideValidationError(),this.uploadField.value=null}addImagePlaceholder(e,t){const n=e.state.tr;n.selection.empty||n.deleteSelection(),this.key.setMeta(n,{add:{id:t,pos:n.selection.from},file:null,shouldShow:!1}),e.dispatch(n)}removeImagePlaceholder(e,t,n){let r=n||e.state.tr;r=this.key.setMeta(r,{remove:{id:t},file:null,shouldShow:!1}),e.dispatch(r)}async handleUploadTrigger(e,t,n){const r=this.uploadContainer.querySelector(".js-external-url-input").value,i=r&&this.validateLink(r);if(!t&&!i)return;let s;const o=new Promise((e=>{s=t=>e(t)}));if(qn(n.dom,"image-upload",{file:t||r,resume:s}))this.startImageUpload(n,t||r);else{const e={};this.addImagePlaceholder(n,e);const i=await o;this.removeImagePlaceholder(n,e),i&&this.startImageUpload(n,t||r)}this.resetUploader();const a=this.tryHideInterfaceTr(n.state);a&&n.dispatch(a),n.focus()}startImageUpload(e,t){const n={};if(this.addImagePlaceholder(e,n),this.uploadOptions?.handler)return this.uploadOptions.handler(t).then((t=>{const r=this.key.getState(e.state).decorations.find(null,null,(e=>e.id==n)),i=r.length?r[0].from:null;if(null===i)return;const s=this.addTransactionDispatcher(e.state,t,i);this.removeImagePlaceholder(e,n,s)}),(()=>{const t=this.tryShowInterfaceTr(e.state)||e.state.tr;this.removeImagePlaceholder(e,n,t),this.showValidationError(fc("image_upload.upload_error_generic"),"error")}));console.error("No upload handler registered. Ensure you set a proper handler on the editor's options.imageUploadHandler")}update(e){const t=this.key.getState(e.state);this.image=t?.file||this.image,super.update(e)}destroy(){this.uploadField.remove(),this.uploadContainer.remove(),this.image=null}buildInterface(e){this.image&&this.showImagePreview(this.image),e.appendChild(this.uploadContainer),this.uploadContainer.querySelector(".js-image-uploader-input").focus()}destroyInterface(e){this.resetUploader(),this.uploadContainer.classList.remove("outline-ring"),e.removeChild(this.uploadContainer)}}function Ec(e,t){const n=Ac.showInterfaceTr(e.state,{file:t||null});n&&e.dispatch(n)}function Sc(e){return!!Ac.getState(e)}function _c(e,t,n){return e?.handler?new rc({key:Ac,state:{init:()=>({decorations:gl.empty,file:null,shouldShow:!1}),apply(e,t){let n=t.decorations||gl.empty;n=n.map(e.mapping,e.doc);const r=this.getMeta(e),i={file:t.file,decorations:n,shouldShow:t.shouldShow};if(!r)return i;if(i.file="file"in r?r.file:null,"shouldShow"in r&&(i.shouldShow=r.shouldShow),r.add){const t=pl.widget(r.add.pos,function(){const e=document.createElement("div");return e.className="ws-normal d-block m8 js-image-upload-placeholder",e.innerHTML='\n
    \n \n Loading…\n \n Uploading image…\n
    \n',e}(),{id:r.add.id});i.decorations=n.add(e.doc,[t])}else r.remove&&(i.decorations=n.remove(n.find(null,null,(e=>e.id==r.remove.id))));return i}},props:{decorations(e){return this.getState(e).decorations},handleDrop(e,t){const n=t.dataTransfer.files;return!(!e.state.selection.$from.parent.inlineContent||!n.length||(Ec(e,n[0]),0))},handlePaste(e,t){const n=t.clipboardData.files;return!(!e.state.selection.$from.parent.inlineContent||!n.length||(Ec(e,n[0]),0))}},view:r=>new Cc(r,e,t,n)}):new gs({})}const Ac=new gc("image-uploader");function Dc(e,t){if(e.textContent||1!==e.childCount||0!==e.firstChild.childCount)return gl.empty;const n=e.resolve(1);return gl.create(e,[pl.node(n.before(),n.after(),{"data-placeholder":t})])}function Mc(e){return e?.trim()?new gs({key:new ks("placeholder"),state:{init:(t,n)=>Dc(n.doc,e),apply:(t,n)=>t.docChanged?Dc(t.doc,e):n.map(t.mapping,t.doc)},props:{decorations(e){return this.getState(e)}},view:t=>(t.dom.setAttribute("aria-placeholder",e),{destroy(){t.dom.removeAttribute("aria-placeholder")}})}):new gs({})}const Tc=new ks(Lc.name);function Oc(e){return!Tc.getState(e)}function Nc(e,t,n){if(Tc.getState(t)===e)return!1;let r=t.tr.setMeta(Tc,e);return r=r.setMeta("addToHistory",!1),n&&n(r),!0}function Lc(){return new gs({key:Tc,state:{init:()=>!1,apply(e,t){const n=e.getMeta(Tc);return void 0===n?t:n}}})}const Ic=new gs({props:{handleDOMEvents:{mousedown(e,t){const{$from:n,$to:r}=e.state.selection,i=3===t.detail,s=n.sameParent(r);return i&&s}}}});class Fc extends Gr{parseCode(e,t){const n=document.createElement("div");return n.innerHTML=Rn`
    ${e}
    `,super.parse(n,t)}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new Fc(e,Fc.schemaRules(e)))}static toString(e){return e.textBetween(0,e.content.size,"\n\n")}}const Bc=e=>$c.bind(null,e),Pc=(e,t)=>zc.bind(null,e,t),Rc=(e,t)=>e.text(t);function zc(e,t,n,r){return!!function(e,t,n,r){if(n.selection.empty)return!1;t=t||e;const{from:i,to:s}=n.selection,o=n.doc.textBetween(i,s),a=o.slice(0,e.length),l=o.slice(-1*t.length);if(a!==e||l!==t)return!1;if(r){const a=n.tr,l=o.slice(e.length,-1*t.length);a.replaceSelectionWith(Rc(a.doc.type.schema,l)),a.setSelection(es.create(n.apply(a).doc,i,s-e.length-t.length)),r(a)}return!0}(e,t,n,r)||function(e,t,n,r){const i="your text";t=t||e;const{from:s,to:o}=n.selection,a=n.tr.insertText(t,o);if(n.selection.empty&&a.insertText(i,o),a.insertText(e,s).scrollIntoView(),r){let i=s,l=o+e.length+t.length;n.selection.empty&&(i=s+e.length,l=i+9),a.setSelection(es.create(n.apply(a).doc,i,l)),r(a)}return!0}(e,t,n,r)}function $c(e,t,n){return!!function(e,t,n){if(t.selection.empty)return!1;let{from:r}=t.selection;const i=t.doc.cut(r,t.selection.to).textContent;if(!i.includes("\n"))return!1;const s=" ";let o=t.tr;const a=i.split("\n"),l=a.some((t=>!t.startsWith(e+s)));let c=r;if(a.forEach((t=>{let n;const r=Vc(t);n=l&&r===e+s?t:l&&r.length?e+s+t.slice(r.length):l?e+s+t:t.slice(r.length);const i=c+t.length;o=n.length?o.replaceRangeWith(c,i,Rc(o.doc.type.schema,n)):o.deleteRange(c,i),c+=n.length+1})),r>1&&"\n"!==t.doc.textBetween(r-1,r)&&(o=o.insertText("\n",r,r),r+=1,c+=1),n){const e=c-1;o.setSelection(es.create(t.apply(o).doc,r,e)),o.scrollIntoView(),n(o)}return!0}(e,t,n)||function(e,t,n){const{from:r}=t.selection,i=t.doc.cut(0,r).textContent.lastIndexOf("\n");let s;s=-1===i?1:i+1+1;const o=Vc(t.doc.cut(s).textContent);let a=t.tr;o.length&&(a=a.delete(s,s+o.length));let l=!1;return o===e+" "&&(l=!0),l||(a=a.insertText(e+" ",s)),n&&(a=a.scrollIntoView(),n(a)),!0}(e,t,n)}function Vc(e){let t=/^(\d+)(?:\.|\))\s/.exec(e)?.[0];return t||(t=/^[^a-zA-Z0-9]+\s{1}(?=[a-zA-Z0-9_*[!]|$)+/.exec(e)?.[0]),t||""}function qc(e,t,n,r,i){let s=r.tr;const{from:o}=r.selection;return s=r.selection.empty?s.insertText(e,o):s.replaceSelectionWith(Rc(s.doc.type.schema,e)),i&&(s=void 0!==t&&void 0!==n?s.setSelection(es.create(r.apply(s).doc,o+t,o+n)):s.setSelection(es.create(r.apply(s).doc,o)),s=s.scrollIntoView(),i(s)),!0}function jc(e,t){const n=globalThis.location.origin??"url";if(e.selection.empty)return qc("[text]("+n+")",7,7+n.length,e,t);const{from:r,to:i}=e.selection,s=e.doc.textBetween(r,i),o=`[${s}](${n})`,a=3+s.length;return qc(o,a,a+n.length,e,t)}function Hc(e,t){return(n,r)=>{const i=t?"[meta-tag:":"[tag:";if(t&&e.disableMetaTags)return!1;if(n.selection.empty){const e="tag-name";return qc(`${i}${e}]`,i.length,i.length+e.length,n,r)}const{from:s,to:o}=n.selection,a=n.doc.textBetween(s,o);if(!e.validate(a.trim(),t))return!1;const l=i.length;return qc(`${i}${a}]`,l,l+a.length,n,r)}}function Uc(e,t){if(e.selection.empty)return qc("\n| Column A | Column B |\n| -------- | -------- |\n| Cell 1 | Cell 2 |\n| Cell 3 | Cell 4 |\n",1,1,e,t)}function Wc(e,t){const n=e.doc.cut(0,e.selection.from).textContent,r=n.lastIndexOf("\n"),i=n.slice(r+1);let s,o=null;if(r>-1){const e=n.lastIndexOf("\n",r-1);o=n.slice(e+1,r)}return s=n&&(o||i)?i?"\n\n":"\n":"",(a=s+"---\n",qc.bind(null,a,4,4))(e,t);// removed by dead control flow - var a; }function Kc(e,t){if(t){let n=0,r=0;e.doc.nodesBetween(0,e.doc.content.size,((e,t)=>"text"!==e.type.name||(n=t,r=e.nodeSize,!1))),t(e.tr.setSelection(es.create(e.doc,n,n+r)))}return!0}const Jc=Pc("**",null),Gc=Pc("*",null),Zc=Pc("`",null),Xc=function(){return!1},Qc=Bc("#"),Yc=Pc("~~",null),eh=Bc(">"),th=Bc("1."),nh=Bc("-"),rh=function(e,t,n){return!!function(e,t,n){if(t.selection.empty)return!1;const{from:r,to:i}=t.selection,s=t.doc.textBetween(r,i),o=e.length+1,a=s.slice(0,o),l=s.slice(-1*o);if(a!==e+"\n"||l!=="\n"+e)return!1;let c=t.tr;return c=c.delete(i-o,i),c=c.delete(r,r+o),n&&(c.setSelection(es.create(t.apply(c).doc,r,i-2*o)),c.scrollIntoView(),n(c)),!0}(e,t,n)||function(e,t,n){if(t.selection.empty){const r="type here",i=2;return qc(`\n${e}\n${r}\n${e}\n`,e.length+i,e.length+r.length+i,t,n)}if(!n)return!0;const r=t.selection.from;let i=t.selection.to,s=t.tr;const o="\n";s=s.insertText(o,r,r),i+=1,s=s.insertText(o,i,i),i+=1;const a=r>0&&t.doc.textBetween(r-1,r)!==o?o:"",l=i+1!"),sh=Pc("",""),oh=Pc("",""),ah=Pc("","");function lh(e,t,n){return!(!Sc(n.state)||t&&(Ec(n),0))}const ch=(e,t)=>!e.selection.empty&&(t&&t(e.tr.deleteSelection().scrollIntoView()),!0);function hh(e,t,n=!1){for(let r=e;r;r="start"==t?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(n&&1!=r.childCount)return!1}return!1}function uh(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function dh(e){if(!e.parent.type.spec.isolating)for(let t=e.depth-1;t>=0;t--){let n=e.node(t);if(e.index(t)+1{let{$head:n,$anchor:r}=e.selection;if(!n.parent.type.spec.code||!n.sameParent(r))return!1;let i=n.node(-1),s=n.indexAfter(-1),o=ph(i.contentMatchAt(s));if(!o||!i.canReplaceWith(s,s,o))return!1;if(t){let r=n.after(),i=e.tr.replaceWith(r,r,o.createAndFill());i.setSelection(Zi.near(i.doc.resolve(r),1)),t(i.scrollIntoView())}return!0},mh=(e,t)=>{let{$from:n,$to:r}=e.selection;if(e.selection instanceof ns&&e.selection.node.isBlock)return!(!n.parentOffset||!Li(e.doc,n.pos)||(t&&t(e.tr.split(n.pos).scrollIntoView()),0));if(!n.depth)return!1;let i,s,o=[],a=!1,l=!1;for(let e=n.depth;;e--){if(n.node(e).isBlock){a=n.end(e)==n.pos+(n.depth-e),l=n.start(e)==n.pos-(n.depth-e),s=ph(n.node(e-1).contentMatchAt(n.indexAfter(e-1)));let t=gh;o.unshift(t||(a&&s?{type:s}:null)),i=e;break}if(1==e)return!1;o.unshift(null)}let c=e.tr;(e.selection instanceof es||e.selection instanceof is)&&c.deleteSelection();let h=c.mapping.map(n.pos),u=Li(c.doc,h,o.length,o);if(u||(o[0]=s?{type:s}:null,u=Li(c.doc,h,o.length,o)),c.split(h,o.length,o),!a&&l&&n.node(i).type!=s){let e=c.mapping.map(n.before(i)),t=c.doc.resolve(e);s&&n.node(i-1).canReplaceWith(t.index(),t.index()+1,s)&&c.setNodeMarkup(c.mapping.map(n.before(i)),s)}return t&&t(c.scrollIntoView()),!0};var gh;function bh(e,t,n,r){let i,s,o=t.nodeBefore,a=t.nodeAfter,l=o.type.spec.isolating||a.type.spec.isolating;if(!l&&function(e,t,n){let r=t.nodeBefore,i=t.nodeAfter,s=t.index();return!(!(r&&i&&r.type.compatibleContent(i.type))||(!r.content.size&&t.parent.canReplace(s-1,s)?(n&&n(e.tr.delete(t.pos-r.nodeSize,t.pos).scrollIntoView()),0):!t.parent.canReplace(s,s+1)||!i.isTextblock&&!Ii(e.doc,t.pos)||(n&&n(e.tr.join(t.pos).scrollIntoView()),0)))}(e,t,n))return!0;let c=!l&&t.parent.canReplace(t.index(),t.index()+1);if(c&&(i=(s=o.contentMatchAt(o.childCount)).findWrapping(a.type))&&s.matchType(i[0]||a.type).validEnd){if(n){let r=t.pos+a.nodeSize,s=ir.empty;for(let e=i.length-1;e>=0;e--)s=ir.from(i[e].create(null,s));s=ir.from(o.copy(s));let l=e.tr.step(new Ei(t.pos-1,r,t.pos,r,new hr(s,1,0),i.length,!0)),c=l.doc.resolve(r+2*i.length);c.nodeAfter&&c.nodeAfter.type==o.type&&Ii(l.doc,c.pos)&&l.join(c.pos),n(l.scrollIntoView())}return!0}let h=a.type.spec.isolating||r>0&&l?null:Zi.findFrom(t,1),u=h&&h.$from.blockRange(h.$to),d=u&&Di(u);if(null!=d&&d>=t.depth)return n&&n(e.tr.lift(u,d).scrollIntoView()),!0;if(c&&hh(a,"start",!0)&&hh(o,"end")){let r=o,i=[];for(;i.push(r),!r.isTextblock;)r=r.lastChild;let s=a,l=1;for(;!s.isTextblock;s=s.firstChild)l++;if(r.canReplace(r.childCount,r.childCount,s.content)){if(n){let r=ir.empty;for(let e=i.length-1;e>=0;e--)r=ir.from(i[e].copy(r));n(e.tr.step(new Ei(t.pos-i.length,t.pos+a.nodeSize,t.pos+l,t.pos+a.nodeSize-l,new hr(r,i.length,0),0,!0)).scrollIntoView())}return!0}}return!1}function yh(e){return function(t,n){let r=t.selection,i=e<0?r.$from:r.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return!!i.node(s).isTextblock&&(n&&n(t.tr.setSelection(es.create(t.doc,e<0?i.start(s):i.end(s)))),!0)}}const kh=yh(-1),vh=yh(1);function wh(e,t=null){return function(n,r){let{$from:i,$to:s}=n.selection,o=i.blockRange(s),a=o&&Mi(o,e,t);return!!a&&(r&&r(n.tr.wrap(o,a).scrollIntoView()),!0)}}function xh(e,t=null){return function(n,r){let i=!1;for(let r=0;r{if(i)return!1;if(r.isTextblock&&!r.hasMarkup(e,t))if(r.type==e)i=!0;else{let t=n.doc.resolve(s),r=t.index();i=t.parent.canReplaceWith(r,r+1,e)}}))}if(!i)return!1;if(r){let i=n.tr;for(let r=0;r{if(a||!r&&e.isAtom&&e.isInline&&t>=s.pos&&t+e.nodeSize<=o.pos)return!1;a=e.inlineContent&&e.type.allowsMarkType(n)})),a)return!0}return!1}(n.doc,l,e,i))return!1;if(s)if(a)e.isInSet(n.storedMarks||a.marks())?s(n.tr.removeStoredMark(e)):s(n.tr.addStoredMark(e.create(t)));else{let o,a=n.tr;i||(l=function(e){let t=[];for(let n=0;n{if(e.isAtom&&e.content.size&&e.isInline&&n>=r.pos&&n+e.nodeSize<=i.pos)return n+1>r.pos&&t.push(new Xi(r,r.doc.resolve(n+1))),r=r.doc.resolve(n+1+e.content.size),!1})),r.posn.doc.rangeHasMark(t.$from.pos,t.$to.pos,e))):!l.every((t=>{let n=!1;return a.doc.nodesBetween(t.$from.pos,t.$to.pos,((r,i,s)=>{if(n)return!1;n=!e.isInSet(r.marks)&&!!s&&s.type.allowsMarkType(e)&&!(r.isText&&/^\s*$/.test(r.textBetween(Math.max(0,t.$from.pos-i),Math.min(r.nodeSize,t.$to.pos-i))))})),!n}));for(let n=0;n{let r=function(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock("backward",e):n.parentOffset>0)?null:n}(e,n);if(!r)return!1;let i=uh(r);if(!i){let n=r.blockRange(),i=n&&Di(n);return null!=i&&(t&&t(e.tr.lift(n,i).scrollIntoView()),!0)}let s=i.nodeBefore;if(bh(e,i,t,-1))return!0;if(0==r.parent.content.size&&(hh(s,"end")||ns.isSelectable(s)))for(let n=r.depth;;n--){let o=Fi(e.doc,r.before(n),r.after(n),hr.empty);if(o&&o.slice.size1)break}return!(!s.isAtom||i.depth!=r.depth-1||(t&&t(e.tr.delete(i.pos-s.nodeSize,i.pos).scrollIntoView()),0))}),((e,t,n)=>{let{$head:r,empty:i}=e.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("backward",e):r.parentOffset>0)return!1;s=uh(r)}let o=s&&s.nodeBefore;return!(!o||!ns.isSelectable(o)||(t&&t(e.tr.setSelection(ns.create(e.doc,s.pos-o.nodeSize)).scrollIntoView()),0))})),_h=Eh(ch,((e,t,n)=>{let r=function(e,t){let{$cursor:n}=e.selection;return!n||(t?!t.endOfTextblock("forward",e):n.parentOffset{let{$head:r,empty:i}=e.selection,s=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("forward",e):r.parentOffset{let{$head:n,$anchor:r}=e.selection;return!(!n.parent.type.spec.code||!n.sameParent(r)||(t&&t(e.tr.insertText("\n").scrollIntoView()),0))}),((e,t)=>{let n=e.selection,{$from:r,$to:i}=n;if(n instanceof is||r.parent.inlineContent||i.parent.inlineContent)return!1;let s=ph(i.parent.contentMatchAt(i.indexAfter()));if(!s||!s.isTextblock)return!1;if(t){let n=(!r.parentOffset&&i.index(){let{$cursor:n}=e.selection;if(!n||n.parent.content.size)return!1;if(n.depth>1&&n.after()!=n.end(-1)){let r=n.before();if(Li(e.doc,r))return t&&t(e.tr.split(r).scrollIntoView()),!0}let r=n.blockRange(),i=r&&Di(r);return null!=i&&(t&&t(e.tr.lift(r,i).scrollIntoView()),!0)}),mh),"Mod-Enter":fh,Backspace:Sh,"Mod-Backspace":Sh,"Shift-Backspace":Sh,Delete:_h,"Mod-Delete":_h,"Mod-a":(e,t)=>(t&&t(e.tr.setSelection(new is(e.doc))),!0)},Dh={"Ctrl-h":Ah.Backspace,"Alt-Backspace":Ah["Mod-Backspace"],"Ctrl-d":Ah.Delete,"Ctrl-Alt-Backspace":Ah["Mod-Delete"],"Alt-Delete":Ah["Mod-Delete"],"Alt-d":Ah["Mod-Delete"],"Ctrl-a":kh,"Ctrl-e":vh};for(let e in Ah)Dh[e]=Ah[e];const Mh=("undefined"!=typeof navigator?/Mac|iP(hone|[oa]d)/.test(navigator.platform):"undefined"!=typeof os&&os.platform&&"darwin"==os.platform())?Dh:Ah;for(var Th={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Oh={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Nh="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),Lh="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),Ih=0;Ih<10;Ih++)Th[48+Ih]=Th[96+Ih]=String(Ih);for(Ih=1;Ih<=24;Ih++)Th[Ih+111]="F"+Ih;for(Ih=65;Ih<=90;Ih++)Th[Ih]=String.fromCharCode(Ih+32),Oh[Ih]=String.fromCharCode(Ih);for(var Fh in Th)Oh.hasOwnProperty(Fh)||(Oh[Fh]=Th[Fh]);const Bh="undefined"!=typeof navigator&&/Mac|iP(hone|[oa]d)/.test(navigator.platform);function Ph(e){let t,n,r,i,s=e.split(/-(?!$)/),o=s[s.length-1];"Space"==o&&(o=" ");for(let e=0;enew gs({props:{handleKeyDown:(t,n)=>{let r=n;return n.key.match(/^[A-Za-z]$/)&&(r=new KeyboardEvent("keydown",{keyCode:n.keyCode,altKey:n.altKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey,shiftKey:n.shiftKey,key:n.shiftKey?n.key.toUpperCase():n.key.toLowerCase()})),function(e){let t=function(e){let t=Object.create(null);for(let n in e)t[Ph(n)]=e[n];return t}(e);return function(e,n){let r,i=function(e){var t=!(Nh&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||Lh&&e.shiftKey&&e.key&&1==e.key.length||"Unidentified"==e.key)&&e.key||(e.shiftKey?Oh:Th)[e.keyCode]||e.key||"Unidentified";return"Esc"==t&&(t="Escape"),"Del"==t&&(t="Delete"),"Left"==t&&(t="ArrowLeft"),"Up"==t&&(t="ArrowUp"),"Right"==t&&(t="ArrowRight"),"Down"==t&&(t="ArrowDown"),t}(n),s=t[Rh(i,n)];if(s&&s(e.state,e.dispatch,e))return!0;if(1==i.length&&" "!=i){if(n.shiftKey){let r=t[Rh(i,n,!1)];if(r&&r(e.state,e.dispatch,e))return!0}if((n.shiftKey||n.altKey||n.metaKey||i.charCodeAt(0)>127)&&(r=Th[n.keyCode])&&r!=i){let i=t[Rh(r,n)];if(i&&i(e.state,e.dispatch,e))return!0}}return!1}}(e)(t,r)}}});function $h(e){const t=zh({"Mod-z":Ls,"Mod-y":Is,"Shift-Mod-z":Is,Tab:Xc,"Shift-Tab":Xc,"Mod-b":Jc,"Mod-i":Gc,"Mod-l":jc,"Ctrl-q":eh,"Mod-k":Zc,"Mod-g":lh,"Ctrl-g":lh,"Mod-o":th,"Mod-u":nh,"Mod-h":Qc,"Mod-r":Wc,"Mod-m":rh,"Mod-[":Hc(e.tagLinks,!1),"Mod-]":Hc(e.tagLinks,!0),"Mod-/":ih,"Mod-,":oh,"Mod-.":sh,"Mod-'":ah,"Shift-Enter":Mh.Enter,"Mod-a":Kc}),n=zh({"Mod-e":Uc}),r=[t,zh(Mh)];return e.tables&&r.unshift(n),r}const Vh=new Kr({nodes:{doc:{content:"code_block+"},text:{group:"inline"},code_block:{content:"text*",group:"block",marks:"",code:!0,defining:!0,isolating:!0,selectable:!1,attrs:{params:{default:"markdown"}},parseDOM:[{tag:"pre",preserveWhitespace:"full"}],toDOM:()=>["pre",{class:"s-code-block markdown"},["code",0]]}},marks:{}}),qh=new gs({props:{clipboardSerializer:new si({code_block:e=>e.textContent},{})}}),jh=1024;let Hh=0;class Uh{constructor(e,t){this.from=e,this.to=t}}class Wh{constructor(e={}){this.id=Hh++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return"function"!=typeof e&&(e=Gh.match(e)),t=>{let n=e(t);return void 0===n?null:[this,n]}}}Wh.closedBy=new Wh({deserialize:e=>e.split(" ")}),Wh.openedBy=new Wh({deserialize:e=>e.split(" ")}),Wh.group=new Wh({deserialize:e=>e.split(" ")}),Wh.isolate=new Wh({deserialize:e=>{if(e&&"rtl"!=e&&"ltr"!=e&&"auto"!=e)throw new RangeError("Invalid value for isolate: "+e);return e||"auto"}}),Wh.contextHash=new Wh({perNode:!0}),Wh.lookAhead=new Wh({perNode:!0}),Wh.mounted=new Wh({perNode:!0});class Kh{constructor(e,t,n){this.tree=e,this.overlay=t,this.parser=n}static get(e){return e&&e.props&&e.props[Wh.mounted.id]}}const Jh=Object.create(null);class Gh{constructor(e,t,n,r=0){this.name=e,this.props=t,this.id=n,this.flags=r}static define(e){let t=e.props&&e.props.length?Object.create(null):Jh,n=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(null==e.name?8:0),r=new Gh(e.name||"",t,e.id,n);if(e.props)for(let n of e.props)if(Array.isArray(n)||(n=n(r)),n){if(n[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[n[0].id]=n[1]}return r}prop(e){return this.props[e.id]}get isTop(){return(1&this.flags)>0}get isSkipped(){return(2&this.flags)>0}get isError(){return(4&this.flags)>0}get isAnonymous(){return(8&this.flags)>0}is(e){if("string"==typeof e){if(this.name==e)return!0;let t=this.prop(Wh.group);return!!t&&t.indexOf(e)>-1}return this.id==e}static match(e){let t=Object.create(null);for(let n in e)for(let r of n.split(" "))t[r]=e[n];return e=>{for(let n=e.prop(Wh.group),r=-1;r<(n?n.length:0);r++){let i=t[r<0?e.name:n[r]];if(i)return i}}}}Gh.none=new Gh("",Object.create(null),0,8);class Zh{constructor(e){this.types=e;for(let t=0;t=t){let o=new au(s.tree,s.overlay[0].from+e.from,-1,e);(i||(i=[r])).push(su(o,t,n,!1))}}return i?du(i):r}(this,e,t)}iterate(e){let{enter:t,leave:n,from:r=0,to:i=this.length}=e,s=e.mode||0,o=(s&Yh.IncludeAnonymous)>0;for(let e=this.cursor(s|Yh.IncludeAnonymous);;){let s=!1;if(e.from<=i&&e.to>=r&&(!o&&e.type.isAnonymous||!1!==t(e))){if(e.firstChild())continue;s=!0}for(;s&&n&&(o||!e.type.isAnonymous)&&n(e),!e.nextSibling();){if(!e.parent())return;s=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:yu(Gh.none,this.children,this.positions,0,this.children.length,0,this.length,((e,t,n)=>new tu(this.type,e,t,n,this.propValues)),e.makeTree||((e,t,n)=>new tu(Gh.none,e,t,n)))}static build(e){return function(e){var t;let{buffer:n,nodeSet:r,maxBufferLength:i=jh,reused:s=[],minRepeatType:o=r.types.length}=e,a=Array.isArray(n)?new nu(n,n.length):n,l=r.types,c=0,h=0;function u(e,t,n,g,b,y){let{id:k,start:v,end:w,size:x}=a,C=h,E=c;for(;x<0;){if(a.next(),-1==x){let t=s[k];return n.push(t),void g.push(v-e)}if(-3==x)return void(c=k);if(-4==x)return void(h=k);throw new RangeError(`Unrecognized record size: ${x}`)}let S,_,A=l[k],D=v-e;if(w-v<=i&&(_=function(e,t){let n=a.fork(),r=0,s=0,l=0,c=n.end-i,h={size:0,start:0,skip:0};e:for(let i=n.pos-e;n.pos>i;){let e=n.size;if(n.id==t&&e>=0){h.size=r,h.start=s,h.skip=l,l+=4,r+=4,n.next();continue}let a=n.pos-e;if(e<0||a=o?4:0,d=n.start;for(n.next();n.pos>a;){if(n.size<0){if(-3!=n.size)break e;u+=4}else n.id>=o&&(u+=4);n.next()}s=d,r+=e,l+=u}return(t<0||r==e)&&(h.size=r,h.start=s,h.skip=l),h.size>4?h:void 0}(a.pos-t,b))){let t=new Uint16Array(_.size-_.skip),n=a.pos-_.size,i=t.length;for(;a.pos>n;)i=m(_.start,t,i);S=new ru(t,w-_.start,r),D=_.start-e}else{let e=a.pos-x;a.next();let t=[],n=[],r=k>=o?k:-1,s=0,l=w;for(;a.pos>e;)r>=0&&a.id==r&&a.size>=0?(a.end<=l-i&&(p(t,n,v,s,a.end,l,r,C,E),s=t.length,l=a.end),a.next()):y>2500?d(v,e,t,n):u(v,e,t,n,r,y+1);if(r>=0&&s>0&&s-1&&s>0){let e=function(e,t){return(n,r,i)=>{let s,o,a=0,l=n.length-1;if(l>=0&&(s=n[l])instanceof tu){if(!l&&s.type==e&&s.length==i)return s;(o=s.prop(Wh.lookAhead))&&(a=r[l]+s.length+o)}return f(e,n,r,i,a,t)}}(A,E);S=yu(A,t,n,0,t.length,0,w-v,e,e)}else S=f(A,t,n,w-v,C-w,E)}n.push(S),g.push(D)}function d(e,t,n,s){let o=[],l=0,c=-1;for(;a.pos>t;){let{id:e,start:t,end:n,size:r}=a;if(r>4)a.next();else{if(c>-1&&t=0;e-=3)t[n++]=o[e],t[n++]=o[e+1]-i,t[n++]=o[e+2]-i,t[n++]=n;n.push(new ru(t,o[2]-i,r)),s.push(i-e)}}function p(e,t,n,i,s,o,a,l,c){let h=[],u=[];for(;e.length>i;)h.push(e.pop()),u.push(t.pop()+n-s);e.push(f(r.types[a],h,u,o-s,l-o,c)),t.push(s-n)}function f(e,t,n,r,i,s,o){if(s){let e=[Wh.contextHash,s];o=o?[e].concat(o):[e]}if(i>25){let e=[Wh.lookAhead,i];o=o?[e].concat(o):[e]}return new tu(e,t,n,r,o)}function m(e,t,n){let{id:r,start:i,end:s,size:l}=a;if(a.next(),l>=0&&r4){let r=a.pos-(l-4);for(;a.pos>r;)n=m(e,t,n)}t[--n]=o,t[--n]=s-e,t[--n]=i-e,t[--n]=r}else-3==l?c=r:-4==l&&(h=r);return n}let g=[],b=[];for(;a.pos>0;)u(e.start||0,e.bufferStart||0,g,b,-1,0);let y=null!==(t=e.length)&&void 0!==t?t:g.length?b[0]+g[0].length:0;return new tu(l[e.topID],g.reverse(),b.reverse(),y)}(e)}}tu.empty=new tu(Gh.none,[],[],0);class nu{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new nu(this.buffer,this.index)}}class ru{constructor(e,t,n){this.buffer=e,this.length=t,this.set=n}get type(){return Gh.none}toString(){let e=[];for(let t=0;t0));a=s[a+3]);return o}slice(e,t,n){let r=this.buffer,i=new Uint16Array(t-e),s=0;for(let o=e,a=0;o=t&&nt;case 1:return n<=t&&r>t;case 2:return r>t;case 4:return!0}}function su(e,t,n,r){for(var i;e.from==e.to||(n<1?e.from>=t:e.from>t)||(n>-1?e.to<=t:e.to0?o.length:-1;e!=l;e+=t){let l=o[e],c=a[e]+s.from;if(iu(r,n,c,c+l.length))if(l instanceof ru){if(i&Yh.ExcludeBuffers)continue;let o=l.findChild(0,l.buffer.length,t,n-c,r);if(o>-1)return new uu(new hu(s,l,e,c),null,o)}else if(i&Yh.IncludeAnonymous||!l.type.isAnonymous||mu(l)){let o;if(!(i&Yh.IgnoreMounts)&&(o=Kh.get(l))&&!o.overlay)return new au(o.tree,c,e,s);let a=new au(l,c,e,s);return i&Yh.IncludeAnonymous||!a.type.isAnonymous?a:a.nextChild(t<0?l.children.length-1:0,t,n,r)}}if(i&Yh.IncludeAnonymous||!s.type.isAnonymous)return null;if(e=s.index>=0?s.index+t:t<0?-1:s._parent._tree.children.length,s=s._parent,!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,n=0){let r;if(!(n&Yh.IgnoreOverlays)&&(r=Kh.get(this._tree))&&r.overlay){let n=e-this.from;for(let{from:e,to:i}of r.overlay)if((t>0?e<=n:e=n:i>n))return new au(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,n)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function lu(e,t,n,r){let i=e.cursor(),s=[];if(!i.firstChild())return s;if(null!=n)for(let e=!1;!e;)if(e=i.type.is(n),!i.nextSibling())return s;for(;;){if(null!=r&&i.type.is(r))return s;if(i.type.is(t)&&s.push(i.node),!i.nextSibling())return null==r?s:[]}}function cu(e,t,n=t.length-1){for(let r=e;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(t[n]&&t[n]!=r.name)return!1;n--}}return!0}class hu{constructor(e,t,n,r){this.parent=e,this.buffer=t,this.index=n,this.start=r}}class uu extends ou{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,n){super(),this.context=e,this._parent=t,this.index=n,this.type=e.buffer.set.types[e.buffer.buffer[n]]}child(e,t,n){let{buffer:r}=this.context,i=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,n);return i<0?null:new uu(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,n=0){if(n&Yh.ExcludeBuffers)return null;let{buffer:r}=this.context,i=r.findChild(this.index+4,r.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return i<0?null:new uu(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new uu(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new uu(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:n}=this.context,r=this.index+4,i=n.buffer[this.index+3];if(i>r){let s=n.buffer[this.index+1];e.push(n.slice(r,i,s)),t.push(0)}return new tu(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function du(e){if(!e.length)return null;let t=0,n=e[0];for(let r=1;rn.from||i.to0){if(this.index-1)for(let r=t+e,i=e<0?-1:n._tree.children.length;r!=i;r+=e){let e=n._tree.children[r];if(this.mode&Yh.IncludeAnonymous||e instanceof ru||!e.type.isAnonymous||mu(e))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let s=e;s;s=s._parent)if(s.index==r){if(r==this.index)return s;t=s,n=i+1;break e}r=this.stack[--i]}for(let e=n;e=0;i--){if(i<0)return cu(this._tree,e,r);let s=n[t.buffer[this.stack[i]]];if(!s.isAnonymous){if(e[r]&&e[r]!=s.name)return!1;r--}}return!0}}function mu(e){return e.children.some((e=>e instanceof ru||!e.type.isAnonymous||mu(e)))}const gu=new WeakMap;function bu(e,t){if(!e.isAnonymous||t instanceof ru||t.type!=e)return 1;let n=gu.get(t);if(null==n){n=1;for(let r of t.children){if(r.type!=e||!(r instanceof tu)){n=1;break}n+=bu(e,r)}gu.set(t,n)}return n}function yu(e,t,n,r,i,s,o,a,l){let c=0;for(let n=r;n=h)break;f+=t}if(c==i+1){if(f>h){let e=n[i];t(e.children,e.positions,0,e.children.length,r[i]+a);continue}u.push(n[i])}else{let t=r[c-1]+n[c-1].length-p;u.push(yu(e,n,r,i,c,p,t,null,l))}d.push(p+a-s)}}(t,n,r,i,0),(a||l)(u,d,o)}class ku{constructor(e,t,n,r,i=!1,s=!1){this.from=e,this.to=t,this.tree=n,this.offset=r,this.open=(i?1:0)|(s?2:0)}get openStart(){return(1&this.open)>0}get openEnd(){return(2&this.open)>0}static addTree(e,t=[],n=!1){let r=[new ku(0,e.length,e,0,!1,n)];for(let n of t)n.to>e.length&&r.push(n);return r}static applyChanges(e,t,n=128){if(!t.length)return e;let r=[],i=1,s=e.length?e[0]:null;for(let o=0,a=0,l=0;;o++){let c=o=n)for(;s&&s.from=t.from||h<=t.to||l){let e=Math.max(t.from,a)-l,n=Math.min(t.to,h)-l;t=e>=n?null:new ku(e,n,t.tree,t.offset+l,o>0,!!c)}if(t&&r.push(t),s.to>h)break;s=inew Uh(e.from,e.to))):[new Uh(0,0)]:[new Uh(0,e.length)],this.createParse(e,t||[],n)}parse(e,t,n){let r=this.startParse(e,t,n);for(;;){let e=r.advance();if(e)return e}}}class wu{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}new Wh({perNode:!0});let xu=0;class Cu{constructor(e,t,n,r){this.name=e,this.set=t,this.base=n,this.modified=r,this.id=xu++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let n="string"==typeof e?e:"?";if(e instanceof Cu&&(t=e),null==t?void 0:t.base)throw new Error("Can not derive from a modified tag");let r=new Cu(n,[],null,[]);if(r.set.push(r),t)for(let e of t.set)r.set.push(e);return r}static defineModifier(e){let t=new Su(e);return e=>e.modified.indexOf(t)>-1?e:Su.get(e.base||e,e.modified.concat(t).sort(((e,t)=>e.id-t.id)))}}let Eu=0;class Su{constructor(e){this.name=e,this.instances=[],this.id=Eu++}static get(e,t){if(!t.length)return e;let n=t[0].instances.find((n=>{return n.base==e&&(r=t,i=n.modified,r.length==i.length&&r.every(((e,t)=>e==i[t])));// removed by dead control flow - var r, i; }));if(n)return n;let r=[],i=new Cu(e.name,r,e,t);for(let e of t)e.instances.push(i);let s=function(e){let t=[[]];for(let n=0;nt.length-e.length))}(t);for(let t of e.set)if(!t.modified.length)for(let e of s)r.push(Su.get(t,e));return i}}function _u(e){let t=Object.create(null);for(let n in e){let r=e[n];Array.isArray(r)||(r=[r]);for(let e of n.split(" "))if(e){let n=[],i=2,s=e;for(let t=0;;){if("..."==s&&t>0&&t+3==e.length){i=1;break}let r=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(s);if(!r)throw new RangeError("Invalid path: "+e);if(n.push("*"==r[0]?"":'"'==r[0][0]?JSON.parse(r[0]):r[0]),t+=r[0].length,t==e.length)break;let o=e[t++];if(t==e.length&&"!"==o){i=0;break}if("/"!=o)throw new RangeError("Invalid path: "+e);s=e.slice(t)}let o=n.length-1,a=n[o];if(!a)throw new RangeError("Invalid path: "+e);let l=new Du(r,i,o>0?n.slice(0,o):null);t[a]=l.sort(t[a])}}return Au.add(t)}const Au=new Wh;class Du{constructor(e,t,n,r){this.tags=e,this.mode=t,this.context=n,this.next=r}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(e){return!e||e.depth{let t=i;for(let r of e)for(let e of r.set){let r=n[e.id];if(r){t=t?t+" "+r:r;break}}return t},scope:r}}Du.empty=new Du([],2,null);class Tu{constructor(e,t,n){this.at=e,this.highlighters=t,this.span=n,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,n,r,i){let{type:s,from:o,to:a}=e;if(o>=n||a<=t)return;s.isTop&&(i=this.highlighters.filter((e=>!e.scope||e.scope(s))));let l=r,c=function(e){let t=e.type.prop(Au);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}(e)||Du.empty,h=function(e,t){let n=null;for(let r of e){let e=r.style(t);e&&(n=n?n+" "+e:e)}return n}(i,c.tags);if(h&&(l&&(l+=" "),l+=h,1==c.mode&&(r+=(r?" ":"")+h)),this.startSpan(Math.max(t,o),l),c.opaque)return;let u=e.tree&&e.tree.prop(Wh.mounted);if(u&&u.overlay){let s=e.node.enter(u.overlay[0].from+o,1),c=this.highlighters.filter((e=>!e.scope||e.scope(u.tree.type))),h=e.firstChild();for(let d=0,p=o;;d++){let f=d=m)&&e.nextSibling()););if(!f||m>n)break;p=f.to+o,p>t&&(this.highlightRange(s.cursor(),Math.max(t,f.from+o),Math.min(n,p),"",c),this.startSpan(Math.min(n,p),l))}h&&e.parent()}else if(e.firstChild()){u&&(r="");do{if(!(e.to<=t)){if(e.from>=n)break;this.highlightRange(e,t,n,r,i),this.startSpan(Math.min(n,e.to),l)}}while(e.nextSibling());e.parent()}}}const Ou=Cu.define,Nu=Ou(),Lu=Ou(),Iu=Ou(Lu),Fu=Ou(Lu),Bu=Ou(),Pu=Ou(Bu),Ru=Ou(Bu),zu=Ou(),$u=Ou(zu),Vu=Ou(),qu=Ou(),ju=Ou(),Hu=Ou(ju),Uu=Ou(),Wu={comment:Nu,lineComment:Ou(Nu),blockComment:Ou(Nu),docComment:Ou(Nu),name:Lu,variableName:Ou(Lu),typeName:Iu,tagName:Ou(Iu),propertyName:Fu,attributeName:Ou(Fu),className:Ou(Lu),labelName:Ou(Lu),namespace:Ou(Lu),macroName:Ou(Lu),literal:Bu,string:Pu,docString:Ou(Pu),character:Ou(Pu),attributeValue:Ou(Pu),number:Ru,integer:Ou(Ru),float:Ou(Ru),bool:Ou(Bu),regexp:Ou(Bu),escape:Ou(Bu),color:Ou(Bu),url:Ou(Bu),keyword:Vu,self:Ou(Vu),null:Ou(Vu),atom:Ou(Vu),unit:Ou(Vu),modifier:Ou(Vu),operatorKeyword:Ou(Vu),controlKeyword:Ou(Vu),definitionKeyword:Ou(Vu),moduleKeyword:Ou(Vu),operator:qu,derefOperator:Ou(qu),arithmeticOperator:Ou(qu),logicOperator:Ou(qu),bitwiseOperator:Ou(qu),compareOperator:Ou(qu),updateOperator:Ou(qu),definitionOperator:Ou(qu),typeOperator:Ou(qu),controlOperator:Ou(qu),punctuation:ju,separator:Ou(ju),bracket:Hu,angleBracket:Ou(Hu),squareBracket:Ou(Hu),paren:Ou(Hu),brace:Ou(Hu),content:zu,heading:$u,heading1:Ou($u),heading2:Ou($u),heading3:Ou($u),heading4:Ou($u),heading5:Ou($u),heading6:Ou($u),contentSeparator:Ou(zu),list:Ou(zu),quote:Ou(zu),emphasis:Ou(zu),strong:Ou(zu),link:Ou(zu),monospace:Ou(zu),strikethrough:Ou(zu),inserted:Ou(),deleted:Ou(),changed:Ou(),invalid:Ou(),meta:Uu,documentMeta:Ou(Uu),annotation:Ou(Uu),processingInstruction:Ou(Uu),definition:Cu.defineModifier("definition"),constant:Cu.defineModifier("constant"),function:Cu.defineModifier("function"),standard:Cu.defineModifier("standard"),local:Cu.defineModifier("local"),special:Cu.defineModifier("special")};for(let e in Wu){let t=Wu[e];t instanceof Cu&&(t.name=e)}const Ku=Mu([{tag:Wu.link,class:"tok-link"},{tag:Wu.heading,class:"tok-heading"},{tag:Wu.emphasis,class:"tok-emphasis"},{tag:Wu.strong,class:"tok-strong"},{tag:Wu.keyword,class:"tok-keyword"},{tag:Wu.atom,class:"tok-atom"},{tag:Wu.bool,class:"tok-bool"},{tag:Wu.url,class:"tok-url"},{tag:Wu.labelName,class:"tok-labelName"},{tag:Wu.inserted,class:"tok-inserted"},{tag:Wu.deleted,class:"tok-deleted"},{tag:Wu.literal,class:"tok-literal"},{tag:Wu.string,class:"tok-string"},{tag:Wu.number,class:"tok-number"},{tag:[Wu.regexp,Wu.escape,Wu.special(Wu.string)],class:"tok-string2"},{tag:Wu.variableName,class:"tok-variableName"},{tag:Wu.local(Wu.variableName),class:"tok-variableName tok-local"},{tag:Wu.definition(Wu.variableName),class:"tok-variableName tok-definition"},{tag:Wu.special(Wu.variableName),class:"tok-variableName2"},{tag:Wu.definition(Wu.propertyName),class:"tok-propertyName tok-definition"},{tag:Wu.typeName,class:"tok-typeName"},{tag:Wu.namespace,class:"tok-namespace"},{tag:Wu.className,class:"tok-className"},{tag:Wu.macroName,class:"tok-macroName"},{tag:Wu.propertyName,class:"tok-propertyName"},{tag:Wu.operator,class:"tok-operator"},{tag:Wu.comment,class:"tok-comment"},{tag:Wu.meta,class:"tok-meta"},{tag:Wu.invalid,class:"tok-invalid"},{tag:Wu.punctuation,class:"tok-punctuation"}]);class Ju{static create(e,t,n,r,i){return new Ju(e,t,n,r+(r<<8)+e+(t<<4)|0,i,[],[])}constructor(e,t,n,r,i,s,o){this.type=e,this.value=t,this.from=n,this.hash=r,this.end=i,this.children=s,this.positions=o,this.hashProp=[[Wh.contextHash,r]]}addChild(e,t){e.prop(Wh.contextHash)!=this.hash&&(e=new tu(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(t)}toTree(e,t=this.end){let n=this.children.length-1;return n>=0&&(t=Math.max(t,this.positions[n]+this.children[n].length+this.from)),new tu(e.types[this.type],this.children,this.positions,t-this.from).balance({makeTree:(e,t,n)=>new tu(Gh.none,e,t,n,this.hashProp)})}}var Gu,Zu;(Zu=Gu||(Gu={}))[Zu.Document=1]="Document",Zu[Zu.CodeBlock=2]="CodeBlock",Zu[Zu.FencedCode=3]="FencedCode",Zu[Zu.Blockquote=4]="Blockquote",Zu[Zu.HorizontalRule=5]="HorizontalRule",Zu[Zu.BulletList=6]="BulletList",Zu[Zu.OrderedList=7]="OrderedList",Zu[Zu.ListItem=8]="ListItem",Zu[Zu.ATXHeading1=9]="ATXHeading1",Zu[Zu.ATXHeading2=10]="ATXHeading2",Zu[Zu.ATXHeading3=11]="ATXHeading3",Zu[Zu.ATXHeading4=12]="ATXHeading4",Zu[Zu.ATXHeading5=13]="ATXHeading5",Zu[Zu.ATXHeading6=14]="ATXHeading6",Zu[Zu.SetextHeading1=15]="SetextHeading1",Zu[Zu.SetextHeading2=16]="SetextHeading2",Zu[Zu.HTMLBlock=17]="HTMLBlock",Zu[Zu.LinkReference=18]="LinkReference",Zu[Zu.Paragraph=19]="Paragraph",Zu[Zu.CommentBlock=20]="CommentBlock",Zu[Zu.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",Zu[Zu.Escape=22]="Escape",Zu[Zu.Entity=23]="Entity",Zu[Zu.HardBreak=24]="HardBreak",Zu[Zu.Emphasis=25]="Emphasis",Zu[Zu.StrongEmphasis=26]="StrongEmphasis",Zu[Zu.Link=27]="Link",Zu[Zu.Image=28]="Image",Zu[Zu.InlineCode=29]="InlineCode",Zu[Zu.HTMLTag=30]="HTMLTag",Zu[Zu.Comment=31]="Comment",Zu[Zu.ProcessingInstruction=32]="ProcessingInstruction",Zu[Zu.Autolink=33]="Autolink",Zu[Zu.HeaderMark=34]="HeaderMark",Zu[Zu.QuoteMark=35]="QuoteMark",Zu[Zu.ListMark=36]="ListMark",Zu[Zu.LinkMark=37]="LinkMark",Zu[Zu.EmphasisMark=38]="EmphasisMark",Zu[Zu.CodeMark=39]="CodeMark",Zu[Zu.CodeText=40]="CodeText",Zu[Zu.CodeInfo=41]="CodeInfo",Zu[Zu.LinkTitle=42]="LinkTitle",Zu[Zu.LinkLabel=43]="LinkLabel",Zu[Zu.URL=44]="URL";class Xu{constructor(e,t){this.start=e,this.content=t,this.marks=[],this.parsers=[]}}class Qu{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return nd(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,t=0,n=0){for(let r=t;r=t.stack[n.depth+1].value+n.baseIndent)return!0;if(n.indent>=n.baseIndent+4)return!1;let r=(e.type==Gu.OrderedList?cd:ld)(n,t,!1);return r>0&&(e.type!=Gu.BulletList||od(n,t,!1)<0)&&n.text.charCodeAt(n.pos+r-1)==e.value}const ed={[Gu.Blockquote]:(e,t,n)=>62==n.next&&(n.markers.push(Pd(Gu.QuoteMark,t.lineStart+n.pos,t.lineStart+n.pos+1)),n.moveBase(n.pos+(td(n.text.charCodeAt(n.pos+1))?2:1)),e.end=t.lineStart+n.text.length,!0),[Gu.ListItem]:(e,t,n)=>!(n.indent-1||(n.moveBaseColumn(n.baseIndent+e.value),0)),[Gu.OrderedList]:Yu,[Gu.BulletList]:Yu,[Gu.Document]:()=>!0};function td(e){return 32==e||9==e||10==e||13==e}function nd(e,t=0){for(;tn&&td(e.charCodeAt(t-1));)t--;return t}function id(e){if(96!=e.next&&126!=e.next)return-1;let t=e.pos+1;for(;t-1&&e.depth==t.stack.length&&t.parser.leafBlockParsers.indexOf(Cd.SetextHeading)>-1||r<3?-1:1}function ad(e,t){for(let n=e.stack.length-1;n>=0;n--)if(e.stack[n].type==t)return!0;return!1}function ld(e,t,n){return 45!=e.next&&43!=e.next&&42!=e.next||e.pos!=e.text.length-1&&!td(e.text.charCodeAt(e.pos+1))||!(!n||ad(t,Gu.BulletList)||e.skipSpace(e.pos+2)=48&&i<=57;){if(r++,r==e.text.length)return-1;i=e.text.charCodeAt(r)}return r==e.pos||r>e.pos+9||46!=i&&41!=i||re.pos+1||49!=e.next)?-1:r+1-e.pos}function hd(e){if(35!=e.next)return-1;let t=e.pos+1;for(;t6?-1:n}function ud(e){if(45!=e.next&&61!=e.next||e.indent>=e.baseIndent+4)return-1;let t=e.pos+1;for(;t/,fd=/\?>/,md=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/i.exec(r);if(s)return e.append(Pd(Gu.Comment,n,n+1+s[0].length));let o=/^\?[^]*?\?>/.exec(r);if(o)return e.append(Pd(Gu.ProcessingInstruction,n,n+1+o[0].length));let a=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(r);return a?e.append(Pd(Gu.HTMLTag,n,n+1+a[0].length)):-1},Emphasis(e,t,n){if(95!=t&&42!=t)return-1;let r=n+1;for(;e.char(r)==t;)r++;let i=e.slice(n-1,n),s=e.slice(r,r+1),o=jd.test(i),a=jd.test(s),l=/\s|^$/.test(i),c=/\s|^$/.test(s),h=!c&&(!a||l||o),u=!l&&(!o||c||a),d=h&&(42==t||!u||o),p=u&&(42==t||!h||a);return e.append(new qd(95==t?Rd:zd,n,r,(d?1:0)|(p?2:0)))},HardBreak(e,t,n){if(92==t&&10==e.char(n+1))return e.append(Pd(Gu.HardBreak,n,n+2));if(32==t){let t=n+1;for(;32==e.char(t);)t++;if(10==e.char(t)&&t>=n+2)return e.append(Pd(Gu.HardBreak,n,t+1))}return-1},Link:(e,t,n)=>91==t?e.append(new qd($d,n,n+1,1)):-1,Image:(e,t,n)=>33==t&&91==e.char(n+1)?e.append(new qd(Vd,n,n+2,1)):-1,LinkEnd(e,t,n){if(93!=t)return-1;for(let t=e.parts.length-1;t>=0;t--){let r=e.parts[t];if(r instanceof qd&&(r.type==$d||r.type==Vd)){if(!r.side||e.skipSpace(r.to)==n&&!/[(\[]/.test(e.slice(n+1,n+2)))return e.parts[t]=null,-1;let i=e.takeContent(t),s=e.parts[t]=Ud(e,i,r.type==$d?Gu.Link:Gu.Image,r.from,n+1);if(r.type==$d)for(let n=0;nt?Pd(Gu.URL,t+n,i+n):i==e.length&&null}}function Kd(e,t,n){let r=e.charCodeAt(t);if(39!=r&&34!=r&&40!=r)return!1;let i=40==r?41:r;for(let r=t+1,s=!1;r=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,r,i){return this.append(new qd(e,t,n,(r?1:0)|(i?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof qd&&(t.type==$d||t.type==Vd))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let t=e;t=e;o--){let e=this.parts[o];if(e instanceof qd&&1&e.side&&e.type==n.type&&!(i&&(1&n.side||2&e.side)&&(e.to-e.from+s)%3==0&&((e.to-e.from)%3||s%3))){r=e;break}}if(!r)continue;let a=n.type.resolve,l=[],c=r.from,h=n.to;if(i){let e=Math.min(2,r.to-r.from,s);c=r.to-e,h=n.from+e,a=1==e?"Emphasis":"StrongEmphasis"}r.type.mark&&l.push(this.elt(r.type.mark,c,r.to));for(let e=o+1;e=0;t--){let n=this.parts[t];if(n instanceof qd&&n.type==e)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}skipSpace(e){return nd(this.text,e-this.offset)+this.offset}elt(e,t,n,r){return"string"==typeof e?Pd(this.parser.getNodeType(e),t,n,r):new Bd(e,t)}}function Zd(e,t){if(!t.length)return e;if(!e.length)return t;let n=e.slice(),r=0;for(let e of t){for(;r(e?e-1:0))return!1;if(this.fragmentEnd<0){let e=this.fragment.to;for(;e>0&&"\n"!=this.input.read(e-1,e);)e--;this.fragmentEnd=e?e-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=t;if(!n.childAfter(r))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(Wh.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-(this.fragment.openEnd?1:0),i=e.absoluteLineStart,s=i,o=e.block.children.length,a=s,l=o;for(;;){if(t.to-n>r){if(t.type.isAnonymous&&t.firstChild())continue;break}let i=Yd(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,i);else{let n=new tu(e.parser.nodeSet.types[Gu.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(n,t.tree),e.addNode(n,i)}if(t.type.is("Block")&&(Xd.indexOf(t.type.id)<0?(s=t.to-n,o=e.block.children.length):(s=a,o=l,a=t.to-n,l=e.block.children.length)),!t.nextSibling())break}for(;e.block.children.length>o;)e.block.children.pop(),e.block.positions.pop();return s-i}}function Yd(e,t){let n=e;for(let r=1;rkd[e])),Object.keys(kd).map((e=>Cd[e])),Object.keys(kd),Ed,ed,Object.keys(Hd).map((e=>Hd[e])),Object.keys(Hd),[]),np={resolve:"Strikethrough",mark:"StrikethroughMark"},rp={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":Wu.strikethrough}},{name:"StrikethroughMark",style:Wu.processingInstruction}],parseInline:[{name:"Strikethrough",parse(e,t,n){if(126!=t||126!=e.char(n+1)||126==e.char(n+2))return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),s=/\s|^$/.test(r),o=/\s|^$/.test(i),a=jd.test(r),l=jd.test(i);return e.addDelimiter(np,n,n+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function ip(e,t,n=0,r,i=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(e.elt("TableCell",i+a,i+l,e.parser.parseInline(t.slice(a,l),i+a)))};for(let u=n;u-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(e.elt("TableDelimiter",u+i,u+i+1))),a=l=-1),c=!c&&92==n}return a>-1&&(s++,r&&h()),s}function sp(e,t){for(let n=t;nsp(t.content,0)?new ap:null,endLeaf(e,t,n){if(n.parsers.some((e=>e instanceof ap))||!sp(t.text,t.basePos))return!1;let r=e.peekLine();return op.test(r)&&ip(e,t.text,t.basePos)==ip(e,r,t.basePos)},before:"SetextHeading"}]};function cp(e,t,n){return(r,i,s)=>{if(i!=e||r.char(s+1)==e)return-1;let o=[r.elt(n,s,s+1)];for(let i=s+1;i{if(e.isBlock&&t.indexOf(e.type.name)>-1)return n.push({node:e,pos:r}),!1})),n}(e,n);let o=[];return s.forEach((e=>{var n;let s;null!=i&&i.preRenderer&&(s=null!=(n=i.preRenderer(e.node,e.pos))?n:void 0);const a=r(e.node)||"*",l=t[a]||t["*"]||null;if(!l)return;const c=l.parse(e.node.textContent,s),h=[];(function(e,t,n,r=0,i=e.length){let s=new Tu(r,Array.isArray(t)?t:[t],n);s.highlightRange(e.cursor(),r,i,"",s.highlighters),s.flush(i)})(c,(null==i?void 0:i.highlighter)||Ku,((t,n,r)=>{const i=pl.inline(t+e.pos+1,n+e.pos+1,{class:r});h.push(i)})),null!=i&&i.postRenderer&&i.postRenderer(e.node,e.pos,ku.addTree(c)),o=[...o,...h]})),o}class dp{constructor(e){((e,t,n)=>{((e,t,n)=>{t in e?hp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n)})(this,"cache"),this.cache={...e}}get(e){return this.cache[e]||null}set(e,t,n){e<0||(this.cache[e]={node:t,fragments:n})}replace(e,t,n,r){this.remove(e),this.set(t,n,r)}remove(e){delete this.cache[e]}invalidate(e){const t=new dp(this.cache),n=e.mapping;return Object.keys(this.cache).forEach((r=>{const i=+r;if(i<0)return;const s=n.mapResult(i),o=e.doc.nodeAt(s.pos),{node:a,fragments:l}=this.get(i),c=e.mapping.maps.flatMap((e=>{const t=[];return e.forEach(((e,n,r,i)=>{t.push({fromA:e,toA:n,fromB:r,toB:i})})),t}));s.deleted||null==o||!o.eq(a)?t.remove(i):i!==s.pos&&t.replace(i,s.pos,o,ku.applyChanges(l,c))})),t}}function pp(e){const t=Mu([{tag:Wu.quote,class:"hljs-quote"},{tag:Wu.contentSeparator,class:"hljs-built_in"},{tag:Wu.heading1,class:"hljs-section"},{tag:Wu.heading2,class:"hljs-section"},{tag:Wu.heading3,class:"hljs-section"},{tag:Wu.heading4,class:"hljs-section"},{tag:Wu.heading5,class:"hljs-section"},{tag:Wu.heading6,class:"hljs-section"},{tag:Wu.comment,class:"hljs-comment"},{tag:Wu.escape,class:"hljs-literal"},{tag:Wu.character,class:"hljs-symbol"},{tag:Wu.emphasis,class:"hljs-emphasis"},{tag:Wu.strong,class:"hljs-strong"},{tag:Wu.link,class:"hljs-string"},{tag:Wu.monospace,class:"hljs-code"},{tag:Wu.url,class:"hljs-link"},{tag:Wu.processingInstruction,class:"hljs-symbol"},{tag:Wu.labelName,class:"hljs-string"},{tag:Wu.string,class:"hljs-string"},{tag:Wu.tagName,class:"hljs-tag"},{tag:Wu.strikethrough,class:"tok-strike"},{tag:Wu.heading,class:"hljs-strong"},{tag:Wu.content,class:""},{tag:Wu.list,class:""}]),n=[],r={};return e.extraEmphasis&&n.push(rp),e.tables&&n.push(lp),e.html&&(r["HTMLBlock HTMLTag"]=Wu.tagName),function(e,t=["code_block"],n,r){const i= false||function(e){const t=e.attrs.detectedHighlightLanguage,n=e.attrs.params;return t||(null==n?void 0:n.split(" ")[0])||""},s=(n,s)=>({content:up(n,e,t,i,{preRenderer:(e,t)=>{var n;return null==(n=s.get(t))?void 0:n.fragments},postRenderer:(e,t,n)=>{s.set(t,e,n)},highlighter:r})}),o=new ks;return new gs({key:o,state:{init(e,t){const n=new dp({}),r=s(t.doc,n);return{cache:n,decorations:gl.create(t.doc,r.content)}},apply(e,t){const n=t.cache.invalidate(e);if(!e.docChanged)return{cache:n,decorations:t.decorations.map(e.mapping,e.doc)};const r=s(e.doc,n);return{cache:n,decorations:gl.create(e.doc,r.content)}}},props:{decorations(e){var t;return null==(t=this.getState(e))?void 0:t.decorations}}})}({"*":tp.configure([{props:[_u(r)]},...n])},["code_block"],0,t)}function fp(e,t=0){if(!e.docChanged)return e;if(e.doc.resolve(e.selection.to-t).before(1)===e.doc.content.size-e.doc.lastChild.nodeSize){const t=e.doc.type.schema.nodes.paragraph.create(null);e=e.insert(e.doc.content.size,t)}return e}function mp(e,t,n){const r=e.doc;return r.resolve(n).parent.isTextblock?e.setSelection(es.create(r,n)):r.nodeAt(t)?e.setSelection(ns.create(r,t)):e.setSelection(Zi.atStart(r))}function gp(e,t){return[e.nodes.table,e.nodes.table_head,e.nodes.table_body,e.nodes.table_row,e.nodes.table_cell,e.nodes.table_header].includes(t)}function bp(e,t){return gp(e,t.$head.parent.type)}function yp(e,t){return t.$head.parent.type===e.nodes.table_header}const kp=Eh(fh,((e,t)=>(t(e.tr.replaceSelectionWith(e.schema.nodes.hard_break.create()).scrollIntoView()),!0)));function vp(e,t){return wp(e,t,!1)}function wp(e,t,n=!1){if(!bp(e.schema,e.selection))return!1;if(t){const r=e.schema.nodes.paragraph,i=n?e.selection.$head.before(-3)-1:e.selection.$head.after(-3)+1,s=e.tr;try{s.doc.resolve(i)}catch(e){const t=n?i+1:i-1;s.insert(t,r.create())}s.setSelection(Zi.near(s.doc.resolve(Math.max(0,i)),1)),t(s.scrollIntoView())}return!0}function xp(e,t){return Ep(!0,e,t)}function Cp(e,t){return Ep(!1,e,t)}function Ep(e,t,n){if(!bp(t.schema,t.selection)||yp(t.schema,t.selection))return!1;if(n){const{$head:r}=t.selection,i=r.node(-1),s=[];i.forEach((e=>{s.push(t.schema.nodes.table_cell.create(e.attrs))}));const o=t.schema.nodes.table_row.create(null,s),a=e?r.before(-1):r.after(-1);n(t.tr.insert(a,o).scrollIntoView())}return!0}function Sp(e,t){return Ap(!1,e,t)}function _p(e,t){return Ap(!0,e,t)}function Ap(e,t,n){if(!bp(t.schema,t.selection))return!1;if(n){const r=t.selection.$head,i=r.node(-3),s=r.index(-1),o=[],a=r.start(-3);let l;i.descendants(((n,r)=>{if(!gp(t.schema,n.type))return!1;if(n.type===t.schema.nodes.table_row&&(l=n.child(s)),l&&n==l){const t=e?i.resolve(r+1).before():i.resolve(r+1).after();o.push([n.type,a+t])}}));let c=t.tr;for(const e of o.reverse())c=c.insert(e[1],e[0].create());n(c.scrollIntoView())}return!0}function Dp(e,t){if(!bp(e.schema,e.selection)||yp(e.schema,e.selection))return!1;if(t){const n=e.tr,r=e.selection.$head;if(1===r.node(-2).childCount)return Ip(e,t);n.delete(r.start(-1)-1,r.end(-1)+1),t(n.scrollIntoView())}return!0}function Mp(e,t){if(!bp(e.schema,e.selection))return!1;if(t){const n=e.selection.$head,r=n.node(-3);if(1===n.node(-1).childCount)return Ip(e,t);const i=n.index(-1);let s;const o=[],a=n.start(-3);r.descendants(((t,n)=>{if(!gp(e.schema,t.type))return!1;t.type===e.schema.nodes.table_row&&(s=t.childCount>=i+1?t.child(i):null),s&&t==s&&o.push(r.resolve(n+1))}));let l=e.tr;for(const e of o.reverse())l=l.delete(a+e.start()-1,a+e.end()+1);t(l.scrollIntoView())}return!0}function Tp(e,t){if(!bp(e.schema,e.selection))return!1;const{$from:n,$to:r}=e.selection;return n.start(-3)>=n.pos-3&&n.end(-3)<=r.pos+3?Ip(e,t):n.start(-1)>=n.pos-1&&n.end(-1)<=r.pos+1?Dp(e,t):!n.sameParent(r)}function Op(e,t,n){if(-1!==n&&1!==n)return!1;if(!bp(e.schema,e.selection))return!1;const r=e.selection.$head;for(let i=-1;i>-4;i--){const s=r.index(i),o=r.node(i);if(!o)continue;const a=2;if(!o.maybeChild(s+n))continue;const l=-1===n?r.start()-a*(-1*i):r.end()+a*(-1*i);return t(e.tr.setSelection(Zi.near(e.tr.doc.resolve(l),1)).scrollIntoView()),!0}return 1===n?vp(e,t):function(e,t){return wp(e,t,!0)}(e,t)}function Np(e,t){return Op(e,t,-1)}function Lp(e,t){return Op(e,t,1)}function Ip(e,t){const n=e.selection.$head;return t&&t(e.tr.deleteRange(n.start(-3)-1,n.end(-3)+1)),!0}function Fp(e,t){if(!xh(e.schema.nodes.table)(e))return!1;if(!t)return!0;let n=1,r=1;const i=()=>e.schema.nodes.table_cell.create(null,e.schema.text("cell "+r++)),s=()=>e.schema.nodes.table_header.create(null,e.schema.text("header "+n++)),o=(...t)=>e.schema.nodes.table_row.create(null,t),a=(l=(t=>e.schema.nodes.table_head.create(null,t))(o(s(),s())),c=((...t)=>e.schema.nodes.table_body.create(null,t))(o(i(),i()),o(i(),i())),e.schema.nodes.table.createChecked(null,[l,c]));var l,c;let h=e.tr.replaceSelectionWith(a);return h=fp(h,2),t(h.scrollIntoView()),!0}class Bp extends yc{validateLink;viewContainer;get hrefInput(){return this.viewContainer.querySelector(".js-link-editor-href")}get textInput(){return this.viewContainer.querySelector(".js-link-editor-text")}get saveBtn(){return this.viewContainer.querySelector(".js-link-editor-save-btn")}get hrefError(){return this.viewContainer.querySelector(".js-link-editor-href-error")}constructor(e,t){super(Pp),this.validateLink=t;const n=Vn();this.viewContainer=document.createElement("form"),this.viewContainer.className="mt6 bt bb bc-black-400 js-link-editor",this.viewContainer.innerHTML=Rn`
    -
    - - - -
    - -
    - - -
    - -
    - - -
    -
    `,this.viewContainer.addEventListener("submit",(t=>{t.preventDefault(),t.stopPropagation(),this.handleSave(e)})),this.viewContainer.addEventListener("reset",(t=>{t.preventDefault(),t.stopPropagation();let n=this.tryHideInterfaceTr(e.state);n=Pp.updateVisibility(!1,n),n&&e.dispatch(n)})),this.hrefInput.addEventListener("input",(e=>{this.validate(e.target.value)}))}validate(e){const t=this.validateLink(e);return t?this.hideValidationError():this.showValidationError(fc("link_editor.validation_error")),this.saveBtn.disabled=!t,t}showValidationError(e){const t=this.hrefInput.parentElement,n=this.hrefError;t.classList.add("has-error"),n.textContent=e,n.classList.remove("d-none")}hideValidationError(){const e=this.hrefInput.parentElement,t=this.hrefError;e.classList.remove("has-error"),t.textContent="",t.classList.add("d-none")}resetEditor(){this.hrefInput.value="",this.textInput.value="",this.hideValidationError()}handleSave(e){const t=this.hrefInput.value;if(!this.validate(t))return;const n=this.textInput.value||t,r=e.state.schema.text(n,[]);let i=this.tryHideInterfaceTr(e.state,{url:null,text:null})||e.state.tr;i=Pp.updateVisibility(!1,i),i=i.replaceSelectionWith(r,!0),i=i.setSelection(es.create(i.doc,i.selection.from-n.length,i.selection.to)),i=i.removeMark(i.selection.from,i.selection.to,e.state.schema.marks.link),i=i.addMark(i.selection.from,i.selection.to,e.state.schema.marks.link.create({href:t})),e.dispatch(i)}update(e){super.update(e);const t=Pp.getState(e.state);if(this.isShown){t?.url&&(this.hrefInput.value=t.url,this.validate(t.url)),t?.text&&(this.textInput.value=t.text);let n=this.tryShowInterfaceTr(e.state);n&&(n=Pp.forceHideTooltipTr(e.state.apply(n)),e.dispatch(n)),this.hrefInput.focus()}else{this.resetEditor();let t=this.tryHideInterfaceTr(e.state);t&&(t=Pp.updateVisibility(!1,t),e.dispatch(t))}}destroy(){this.viewContainer.remove()}buildInterface(e){e.appendChild(this.viewContainer)}destroyInterface(e){e.removeChild(this.viewContainer)}}const Pp=new class extends gc{constructor(){super(Bp.name)}forceHideTooltipTr(e){const t=this.getState(e);return zp(t.decorations)?(t.forceHideTooltip=!0,this.setMeta(e.tr,t)):e.tr}updateVisibility(e,t){const n=t.getMeta(Pp);return n.visible=e,this.setMeta(t,n)}};class Rp{content;href;removeListener;editListener;get editButton(){return this.content.querySelector(".js-link-tooltip-edit")}get removeButton(){return this.content.querySelector(".js-link-tooltip-remove")}get link(){return this.content.querySelector("a")}constructor(e){const t="link-tooltip-popover"+Vn();this.content=document.createElement("span"),this.content.className="w0",this.content.setAttribute("aria-controls",t),this.content.setAttribute("data-controller","s-popover"),this.content.setAttribute("data-s-popover-placement","bottom"),this.content.innerHTML=Rn``,this.content.addEventListener("s-popover:hide",(e=>{e.preventDefault()})),this.bindElementInteraction(this.removeButton,(()=>{this.removeListener.call(this)})),this.bindElementInteraction(this.editButton,(()=>{this.editListener.call(this)})),this.update(e)}bindElementInteraction(e,t){e.addEventListener("mousedown",(e=>{e.stopPropagation(),e.preventDefault(),t.call(this,e)})),e.addEventListener("keydown",(e=>{"Tab"!==e.key&&(e.stopPropagation(),e.preventDefault(),"Enter"!==e.key&&" "!==e.key||t.call(this,e))}))}update(e){if(!this.isLink(e))return;const t=this.findMarksInSelection(e);if(t.length>0){this.href=t[0].attrs.href;const e=this.link;e.href=e.title=e.innerText=this.href}}getDecorations(e,t){if("forceHideTooltip"in e&&e.forceHideTooltip)return gl.empty;if(!this.findMarksInSelection(t).length)return gl.empty;const n=this.linkAround(t);if(!n)return gl.empty;if(t.selection.fromn.to)return gl.empty;this.update(t);const r=Math.floor((n.from+n.to)/2),i=pl.widget(r,(e=>(this.updateEventListeners(e),this.content)),{side:-1,ignoreSelection:!0,stopEvent:()=>!0});return gl.create(t.doc,[i])}hasFocus(e){return this.content.contains(e.relatedTarget)}isLink(e){const{from:t,$from:n,to:r,empty:i}=e.selection;return i?void 0!==e.schema.marks.link.isInSet(e.storedMarks||n.marks()):e.doc.rangeHasMark(t,r,e.schema.marks.link)}expandSelection(e,t){const n=this.linkAround(e);return t.setSelection(es.create(t.doc,n.from,n.to))}linkAround(e){const t=e.selection.$from,n=t.parent.childAfter(t.parentOffset);if(!n.node)return;const r=Vp(n.node.marks,e.schema.marks.link)[0];if(!r)return;let i=t.index(),s=t.start()+n.offset;for(;i>0&&r.isInSet(t.parent.child(i-1).marks);)i-=1,s-=t.parent.child(i).nodeSize;let o=t.indexAfter(),a=s+n.node.nodeSize;if(o!==t.index())for(;or&&e.doc.nodesBetween(r,n,(n=>{t.push(Vp(n.marks,e.schema.marks.link))})),[].concat(...t))}updateEventListeners(e){this.removeListener=()=>{let t=e.state;if(e.state.selection.empty){const n=this.expandSelection(t,t.tr);t=e.state.apply(n)}Ch(e.state.schema.marks.link)(t,e.dispatch.bind(e))},this.editListener=()=>{let t=e.state.tr;t=this.expandSelection(e.state,e.state.tr);const n=e.state.apply(t),{from:r,to:i}=n.selection,s=n.doc.textBetween(r,i),o=this.findMarksInSelection(n)[0].attrs.href;t=Pp.showInterfaceTr(n,{forceHideTooltip:!0,url:o,text:s})||t,e.dispatch(t)}}}function zp(e){return e&&e!==gl.empty}const $p=e=>new rc({key:Pp,state:{init:(e,t)=>({visible:!1,linkTooltip:new Rp(t),decorations:gl.empty,shouldShow:!1}),apply(e,t,n,r){const i=this.getMeta(e)||t;"forceHideTooltip"in i&&(t.forceHideTooltip=i.forceHideTooltip);let s=t.linkTooltip.getDecorations(t,r);const o=n.selection;let a=null;return i.visible&&o&&o.from!==o.to&&(a=pl.inline(o.from,o.to,{class:"bg-black-225"}),s=s.add(r.doc,[a])),{...i,forceHideTooltip:t.forceHideTooltip&&zp(s),linkTooltip:t.linkTooltip,decorations:s}}},props:{decorations(e){return this.getState(e).decorations||gl.empty},handleDOMEvents:{blur(e,t){const{linkTooltip:n,decorations:r}=Pp.getState(e.state);return!zp(r)||e.hasFocus()||n.hasFocus(t)||e.dispatch(Pp.forceHideTooltipTr(e.state)),!1}},handleClick(e,t,n){const r=Vp(e.state.doc.resolve(t).marks(),e.state.schema.marks.link)[0],i="Cmd"===zn()?n.metaKey:n.ctrlKey,s=r&&i;return s&&window.open(r.attrs.href,"_blank"),!!s}},view:t=>new Bp(t,e.validateLink)});function Vp(e,t){return e.filter((e=>e.type===t))}function qp(e){const t=Jp(e),n=wh(e);return(e,r)=>{if(!t(e))return n(e,r);const{$from:i,$to:s}=e.selection,o=i.blockRange(s),a=o&&Di(o);return null!=a&&(r&&r(e.tr.lift(o,a)),!0)}}function jp(e){return(t,n)=>{const r=t.schema.nodes.heading,i=Jp(r,e),s=function(e){const{from:t,to:n}=e.selection;let r=0;return e.doc.nodesBetween(t,n,(e=>{if("heading"===e.type.name)return r=e.attrs.level,!0})),r}(t);return!i(t)||6!==s&&s!==e?.level?xh(r,e?.level?e:{...e,level:s+1})(t,(e=>{n&&n(fp(e))})):xh(t.schema.nodes.paragraph)(t,n)}}function Hp(e,t){return(n,r)=>{if(e.disableMetaTags&&t)return!1;if(n.selection.empty)return!1;if(!function(e,t){const n=[e.nodes.horizontal_rule,e.nodes.code_block,e.nodes.image],r=[e.marks.link,e.marks.code],i=0!=t.$head.marks().filter((e=>r.includes(e.type))).length;return!n.includes(t.$head.parent.type)&&!i}(n.schema,n.selection))return!1;if(!r)return!0;let i=n.tr;if(Jp(n.schema.nodes.tagLink)(n)){const e=n.selection.content().content.firstChild.attrs.tagName;i=n.tr.replaceSelectionWith(n.schema.text(e))}else{const r=n.selection.content().content.firstChild?.textContent;if(r.endsWith(" ")){const{from:e,to:t}=n.selection;n.selection=es.create(n.doc,e,t-1)}if(!e.validate(r.trim(),t))return!1;const s=n.schema.nodes.tagLink.create({tagName:r.trim(),tagType:t?"meta-tag":"tag"});i=n.tr.replaceSelectionWith(s)}return r(i),!0}}function Up(e,t){if(bp(e.schema,e.selection))return!1;if(!t)return!0;const n=e.doc.content.size-1===Math.max(e.selection.from,e.selection.to),r=1===e.tr.selection.from;let i=e.tr.replaceSelectionWith(e.schema.nodes.horizontal_rule.create());return r&&(i=i.insert(0,e.schema.nodes.paragraph.create())),n&&(i=i.insert(i.selection.to,e.schema.nodes.paragraph.create())),t(i),!0}function Wp(e,t,n){return!(!Sc(n.state)||t&&(Ec(n),0))}function Kp(e,t,n){const r=Ch(e.schema.marks.link,{href:null})(e,null);if(t&&r){let r,i;const s=e.selection.$anchor;if(e.selection.empty&&s.textOffset){const n=Nn(e),o=n.marks.find((t=>t.type===e.schema.marks.link));if(o){r=n.text,i=o.attrs.href;const a=s.pos;t(e.tr.setSelection(es.create(e.doc,a-s.textOffset,a-s.textOffset+r.length)))}}else{r=e.selection.content().content.firstChild?.textContent??null;const t=/^http(s)?:\/\/\S+$/.exec(r);i=t?.length>0?t[0]:""}!function(e,t,n){let r=Pp.showInterfaceTr(e.state,{url:t,text:n});r=Pp.updateVisibility(!0,r),r&&e.dispatch(r)}(n,i,r)}return r}function Jp(e,t){return function(n){const{from:r,to:i}=n.selection;let s=!1,o=!t;return n.doc.nodesBetween(r,i,(n=>{s=n.type.name===e.name;for(const e in t)o=n.attrs[e]===t[e];return!(s&&o)})),s&&o}}function Gp(e){return function(t){const{from:n,$from:r,to:i,empty:s}=t.selection;return s?!!e.isInSet(t.storedMarks||r.marks()):t.doc.rangeHasMark(n,i,e)}}function Zp(e,t){const n=e.selection.$cursor,r=e.storedMarks||n?.marks();if(!r?.length)return!1;const i=r.filter((e=>e.type.spec.exitable));if(!i?.length)return!1;const s=n?.nodeAfter;let o,a=e.tr;return o=s&&s.marks?.length?i.filter((e=>!e.type.isInSet(s.marks))):i,!!o.length&&(t&&(o.forEach((e=>{a=a.removeStoredMark(e)})),s||(a=a.insertText(" ")),t(a)),!0)}function Xp(e,t){const n=e.selection.$to,r=n.node(1)||n.parent,i=e.doc.lastChild.eq(r);return e.doc.eq(n.parent)||i&&1==n.depth||Yp(n.after(),e.doc.content.size,e)||ef(e.doc.content.size,e,t),!1}function Qp(e,t){const n=e.selection.$to,r=n.node(1)||n.parent,i=e.doc.firstChild.eq(r);return e.doc.eq(n.parent)||i&&1==n.depth||Yp(0,n.before(),e)||ef(0,e,t),!1}function Yp(e,t,n){let r=!1;return n.doc.nodesBetween(e,t,(e=>r?!r:!e.isTextblock||(r=!0,!1))),r}function ef(e,t,n){n(t.tr.insert(e,t.schema.nodes.paragraph.create()))}function tf(e,t){const{$from:n}=e.selection;return"code_block"===n.parent.type.name&&0===n.parentOffset&&1===n.depth&&0===n.index(0)&&mh(e,t)}const nf=" ";function rf(e,t){const n=of(e),r=n.length;if(r<=0||!t)return r>0;let i=e.tr;const{from:s,to:o}=e.selection,a=nf,l="code_block"===e.selection.$from.node().type.name;return n.reverse().forEach((e=>{i=i.insertText(a,e)})),i.setSelection(es.create(e.apply(i).doc,l?s+4:s,o+4*r)),t(i),!0}function sf(e,t){const n=of(e),r=n.length;if(r<=0||!t)return r>0;let i=e.tr;const{from:s,to:o}=e.selection;let a=0;const l=nf,c="code_block"===e.selection.$from.node().type.name;return n.reverse().forEach((t=>{e.doc.textBetween(t,t+4)===l&&(i=i.insertText("",t,t+4),a++)})),i.setSelection(es.create(e.apply(i).doc,c&&a?s-4:s,o-4*a)),t(i),!0}function of(e){const{from:t,to:n}=e.selection,r=[];return e.doc.nodesBetween(t,n,((e,i)=>{if("code_block"===e.type.name){let s,o=i+1;e.textContent.split("\n").forEach((e=>{s=o+e.length,(t>=o&&n<=s||o>=t&&s<=n||t>=o&&t<=s||n>=o&&n<=s)&&r.push(o),o=s+1}))}})),r}function af(e,t){const{from:n,to:r}=e.selection;if(e.doc.textBetween(n,r,"\n","\n").includes("\n"))return!1;let i=!1;return e.doc.nodesBetween(n,r,(e=>"softbreak"!==e.type.name||(i=!0,!1))),!i&&Ch(e.schema.marks.code)(e,t)}function lf(e,t){const n=function(e){const{$from:t}=e.selection;return"code_block"===t.parent.type.name?{pos:t.before(),node:t.parent}:null}(e);if(!n)return!1;const{pos:r,node:i}=n,s={...i.attrs,isEditingLanguage:!0};return t&&t(e.tr.setNodeMarkup(r,void 0,s)),!0}var cf=(e,t)=>{for(let n=e.depth;n>0;n--){const r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}};function hf(e,t){return function(n,r){let{$from:i,$to:s,node:o}=n.selection;if(o&&o.isBlock||i.depth<2||!i.sameParent(s))return!1;let a=i.node(-1);if(a.type!=e)return!1;if(0==i.parent.content.size&&i.node(-1).childCount==i.indexAfter(-1)){if(3==i.depth||i.node(-3).type!=e||i.index(-2)!=i.node(-2).childCount-1)return!1;if(r){let t=ir.empty,s=i.index(-1)?1:i.index(-2)?2:3;for(let e=i.depth-s;e>=i.depth-3;e--)t=ir.from(i.node(e).copy(t));let o=i.indexAfter(-1){if(c>-1)return!1;e.isTextblock&&0==e.content.size&&(c=t+1)})),c>-1&&l.setSelection(Zi.near(l.doc.resolve(c))),r(l.scrollIntoView())}return!0}let l=s.pos==i.end()?a.contentMatchAt(0).defaultType:null,c=n.tr.delete(i.pos,s.pos),h=l?[t?{type:e,attrs:t}:null,{type:l}]:void 0;return!!Li(c.doc,i.pos,2,h)&&(r&&r(c.split(i.pos,2,h).scrollIntoView()),!0)}}function uf(e){return function(t,n){let{$from:r,$to:i}=t.selection,s=r.blockRange(i,(t=>t.childCount>0&&t.firstChild.type==e));return!!s&&(!n||(r.node(s.depth-1).type==e?function(e,t,n,r){let i=e.tr,s=r.end,o=r.$to.end(r.depth);ss;t--)e-=i.child(t).nodeSize,r.delete(e-1,e+1);let s=r.doc.resolve(n.start),o=s.nodeAfter;if(r.mapping.map(n.end)!=n.start+s.nodeAfter.nodeSize)return!1;let a=0==n.startIndex,l=n.endIndex==i.childCount,c=s.node(-1),h=s.index(-1);if(!c.canReplace(h+(a?0:1),h+1,o.content.append(l?ir.empty:ir.from(i))))return!1;let u=s.pos,d=u+o.nodeSize;return r.step(new Ei(u-(a?1:0),d+(l?1:0),u+1,d-1,new hr((a?ir.empty:ir.from(i.copy(ir.empty))).append(l?ir.empty:ir.from(i.copy(ir.empty))),a?0:1,l?0:1),a?0:1)),t(r.scrollIntoView()),!0}(t,n,s)))}}function df(e,t){return(n,r)=>{const{$from:i,$to:s}=n.tr.selection;return!!i.blockRange(s)&&((o=e=>pf(e.type),({$from:e,$to:t},n=!1)=>{if(!n||e.sameParent(t))return cf(e,o);{let n=Math.min(e.depth,t.depth);for(;n>=0;){const r=e.node(n);if(t.node(n)===r&&o(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r};n-=1}}})(n.tr.selection)?uf(t)(n,r):(a=e,function(e,t){return function(e,t=null){return function(n,r){let{$from:i,$to:s}=n.selection,o=i.blockRange(s);if(!o)return!1;let a=r?n.tr:null;return!!function(e,t,n,r=null){let i=!1,s=t,o=t.$from.doc;if(t.depth>=2&&t.$from.node(t.depth-1).type.compatibleContent(n)&&0==t.startIndex){if(0==t.$from.index(t.depth-1))return!1;let e=o.resolve(t.start-2);s=new _r(e,e,t.depth),t.endIndex=0;e--)s=ir.from(n[e].type.create(n[e].attrs,s));e.step(new Ei(t.start-(r?2:0),t.end,t.start,t.end,new hr(s,0,0),n.length,!0));let o=0;for(let e=0;e{t?.(n);const{tr:r}=e.apply(n);!function(e){const t=e.selection.$from;let n,r,i,s,o=[];for(let e=t.depth;e>=0;e--){if(r=t.node(e),n=t.index(e),i=r.maybeChild(n-1),s=r.maybeChild(n),i&&s&&i.type.name===s.type.name&&pf(i.type)){const n=t.before(e+1);o.push(n)}if(n=t.indexAfter(e),i=r.maybeChild(n-1),s=r.maybeChild(n),i&&s&&i.type.name===s.type.name&&pf(i.type)){const n=t.after(e+1);o.push(n)}}o=[...new Set(o)].sort(((e,t)=>t-e));let a=!1;for(const t of o)Ii(e.doc,t)&&(e.join(t),a=!0)}(r),t?.(r)}))})(n,r));// removed by dead control flow - var o, a; }}function pf(e){return!!e.name.includes("_list")}const ff=e=>Xl("Header",fc("commands.heading.dropdown",{shortcut:$n("Mod-H")}),"heading-dropdown",(()=>!0),Jp(e.nodes.heading),Jl(fc("commands.heading.entry",{level:1}),{richText:{command:jp({level:1}),active:Jp(e.nodes.heading,{level:1})},commonmark:null},"h1-btn",["fs-body3"]),Jl(fc("commands.heading.entry",{level:2}),{richText:{command:jp({level:2}),active:Jp(e.nodes.heading,{level:2})},commonmark:null},"h2-btn",["fs-body2"]),Jl(fc("commands.heading.entry",{level:3}),{richText:{command:jp({level:3}),active:Jp(e.nodes.heading,{level:3})},commonmark:null},"h3-btn",["fs-body1"])),mf=(e,t)=>Xl("EllipsisHorizontal",fc("commands.moreFormatting"),"more-formatting-dropdown",(()=>!0),(()=>!1),Jl(fc("commands.tagLink",{shortcut:$n("Mod-[")}),{richText:{command:Hp(t.parserFeatures?.tagLinks,!1),active:Jp(e.nodes.tagLink)},commonmark:Hc(t.parserFeatures?.tagLinks,!1)},"tag-btn"),Gl(Jl(fc("commands.metaTagLink",{shortcut:$n("Mod-]")}),{richText:{command:Hp(t.parserFeatures?.tagLinks,!0),active:Jp(e.nodes.tagLink)},commonmark:Hc(t.parserFeatures?.tagLinks,!0)},"meta-tag-btn"),!t.parserFeatures?.tagLinks?.disableMetaTags),Jl(fc("commands.spoiler",{shortcut:$n("Mod-/")}),{richText:{command:qp(e.nodes.spoiler),active:Jp(e.nodes.spoiler)},commonmark:ih},"spoiler-btn"),Jl(fc("commands.sub",{shortcut:$n("Mod-,")}),{richText:{command:Ch(e.marks.sub),active:Gp(e.marks.sub)},commonmark:oh},"subscript-btn"),Jl(fc("commands.sup",{shortcut:$n("Mod-.")}),{richText:{command:Ch(e.marks.sup),active:Gp(e.marks.sup)},commonmark:sh},"superscript-btn"),Jl(fc("commands.kbd",{shortcut:$n("Mod-'")}),{richText:{command:Ch(e.marks.kbd),active:Gp(e.marks.kbd)},commonmark:ah},"kbd-btn")),gf=(e,t,n)=>[{name:"formatting1",priority:0,entries:[Gl(ff(e),n===Hn.RichText),Gl({key:"toggleHeading",richText:null,commonmark:Qc,display:Zl("Header",fc("commands.heading.dropdown",{shortcut:$n("Mod-H")}),"heading-btn")},n===Hn.Commonmark),{key:"toggleBold",richText:{command:Ch(e.marks.strong),active:Gp(e.marks.strong)},commonmark:Jc,display:Zl("Bold",fc("commands.bold",{shortcut:$n("Mod-B")}),"bold-btn")},{key:"toggleEmphasis",richText:{command:Ch(e.marks.em),active:Gp(e.marks.em)},commonmark:Gc,display:Zl("Italic",fc("commands.emphasis",{shortcut:$n("Mod-I")}),"italic-btn")},Gl({key:"toggleStrike",richText:{command:Ch(e.marks.strike),active:Gp(e.marks.strike)},commonmark:Yc,display:Zl("Strikethrough",fc("commands.strikethrough"),"strike-btn")},t.parserFeatures?.extraEmphasis)]},{name:"code-formatting",priority:5,entries:[{key:"toggleCode",richText:{command:af,active:Gp(e.marks.code)},commonmark:Zc,display:Zl("Code",{title:fc("commands.inline_code.title",{shortcut:$n("Mod-K")}),description:fc("commands.inline_code.description")},"code-btn")},{key:"toggleCodeblock",richText:{command:(e,t)=>{if(!t)return!0;const{schema:n,doc:r,selection:i}=e,{from:s,to:o}=i,{code_block:a,paragraph:l,hard_break:c}=n.nodes,{from:h,to:u}=function(e,t,n){let r=t,i=n;if(e.nodesBetween(t,n,((e,t)=>{if(e.isBlock){const n=t,s=t+e.nodeSize;ni&&(i=s)}})),r===i){const n=e.resolve(t);r=n.start(n.depth),i=r+n.parent.nodeSize}return{from:r,to:i-1}}(r,s,o),d=function(e,t,n,r){let i=!0;return e.nodesBetween(t,n,(e=>!e.isBlock||e.type===r||(i=!1,!1))),i}(r,h,u,a);let p=e.tr;if(d){const e=function(e,t,n,r){const i=e.split("\n"),s=[];return i.forEach(((e,t)=>{e.length>0&&s.push(r.text(e)),t{e.isBlock&&n>=t&&n>s&&n>t&&(i+="\n",s=n),e.isText?i+=e.text:e.type===r&&(i+="\n")})),i}(r,h,u,c),t=[];e.length>0&&t.push(n.text(e));const i=a.create(null,t);p=p.replaceRangeWith(h,u,i),p=mp(p,h,h+i.nodeSize-1),p=fp(p)}return t(p.scrollIntoView()),!0},active:Jp(e.nodes.code_block)},commonmark:rh,display:Zl("CodeblockAlt",{title:fc("commands.code_block.title",{shortcut:$n("Mod-M")}),description:fc("commands.code_block.description")},"code-block-btn")}]},{name:"formatting2",priority:10,entries:[{key:"toggleLink",richText:Kp,commonmark:jc,display:Zl("Link",fc("commands.link",{shortcut:$n("Mod-L")}),"insert-link-btn")},{key:"toggleBlockquote",richText:{command:qp(e.nodes.blockquote),active:Jp(e.nodes.blockquote)},commonmark:eh,display:Zl("Quote",fc("commands.blockquote",{shortcut:$n("Mod-Q")}),"blockquote-btn")},Gl({key:"insertImage",richText:Wp,commonmark:lh,display:Zl("Image",fc("commands.image",{shortcut:$n("Mod-G")}),"insert-image-btn")},!!t.imageUpload?.handler),Gl({key:"insertTable",richText:{command:Fp,visible:e=>!bp(e.schema,e.selection)},commonmark:Uc,display:Zl("Table",fc("commands.table_insert",{shortcut:$n("Mod-E")}),"insert-table-btn")},t.parserFeatures?.tables),Gl(n===Hn.RichText&&Xl("Table",fc("commands.table_edit"),"table-dropdown",(e=>bp(e.schema,e.selection)),(()=>!1),Kl("Column","columnSection"),Jl(fc("commands.table_column.remove"),{richText:Mp,commonmark:null},"remove-column-btn"),Jl(fc("commands.table_column.insert_before"),{richText:_p,commonmark:null},"insert-column-before-btn"),Jl(fc("commands.table_column.insert_after"),{richText:Sp,commonmark:null},"insert-column-after-btn"),Kl("Row","rowSection"),Jl(fc("commands.table_row.remove"),{richText:Dp,commonmark:null},"remove-row-btn"),Jl(fc("commands.table_row.insert_before"),{richText:xp,commonmark:null},"insert-row-before-btn"),Jl(fc("commands.table_row.insert_after"),{richText:Cp,commonmark:null},"insert-row-after-btn")),t.parserFeatures?.tables)]},{name:"formatting3",priority:20,entries:[{key:"toggleOrderedList",richText:{command:df(e.nodes.ordered_list,e.nodes.list_item),active:Jp(e.nodes.ordered_list)},commonmark:th,display:Zl("OrderedList",fc("commands.ordered_list",{shortcut:$n("Mod-O")}),"numbered-list-btn")},{key:"toggleUnorderedList",richText:{command:df(e.nodes.bullet_list,e.nodes.list_item),active:Jp(e.nodes.bullet_list)},commonmark:nh,display:Zl("UnorderedList",fc("commands.unordered_list",{shortcut:$n("Mod-U")}),"bullet-list-btn")},{key:"insertRule",richText:Up,commonmark:Wc,display:Zl("HorizontalRule",fc("commands.horizontal_rule",{shortcut:$n("Mod-R")}),"horizontal-rule-btn")},mf(e,t)]},{name:"history",priority:30,entries:[{key:"undo-btn",richText:Ls,commonmark:Ls,display:Zl("Undo",fc("commands.undo",{shortcut:$n("Mod-Z")}),"undo-btn")},{key:"redo-btn",richText:Is,commonmark:Is,display:Zl("Refresh",fc("commands.redo",{shortcut:$n("Mod-Y")}),"redo-btn")}],classes:["d-none sm:d-inline-flex vk:d-inline-flex"]},{name:"other",priority:40,entries:[Wl("Help",fc("commands.help"),t.editorHelpLink,"help-link")]}],bf=new ks,yf=e=>new gs({key:bf,state:{init:()=>({baseView:e}),apply:(e,t)=>t}});class kf extends Kn{options;constructor(e,t,n,r={}){super(),this.options=An(kf.defaultOptions,r);const i=tc(n.getFinalizedMenu(gf(Vh,this.options,Hn.Commonmark),Vh),this.options.menuParentContainer,Hn.Commonmark);var s,o,a;this.editorView=new $l((t=>{this.setTargetNodeAttributes(t,this.options),e.appendChild(t)}),{editable:Oc,state:fs.create({doc:this.parseContent(t),plugins:[yf(this),Os(),...$h(this.options.parserFeatures),i,(a=this.options.preview,a?.enabled?new rc({key:ac,state:{init:()=>({isShown:a.shownByDefault}),apply(e,t){const n=this.getMeta(e);return{isShown:n?.isShown??t.isShown}}},view(e){const t=(a?.parentContainer||function(e){return e.dom.parentElement})(e);if(t.contains(e.dom))throw"Preview parentContainer must not contain the editor view";return new oc(e,t,a)}}):new gs({})),pp(this.options.parserFeatures),bc(this.options.pluginParentContainer),(s=this.options.imageUpload,o=this.options.parserFeatures.validateLink,_c(s,o,((e,t,n)=>{const r=fc("image_upload.default_image_alt_text");let i=`![${r}](${t})`,o=n+2,a=o+r.length;s.embedImagesAsLinks?(i=i.slice(1),o-=1,a-=1):s.wrapImagesInLinks&&(i=`[${i}](${t})`,o+=1,a+=1);const l=e.tr.insertText(i,n);return l.setSelection(es.create(e.apply(l).doc,o,a)),l}))),Mc(this.options.placeholderText),Lc(),Ic,qh,...n.plugins.commonmark]}),plugins:[]}),Sn("prosemirror commonmark document",this.editorView.state.doc.toJSON())}static get defaultOptions(){return{editorHelpLink:null,menuParentContainer:null,parserFeatures:Wn,placeholderText:null,imageUpload:{handler:kc},preview:{enabled:!1,parentContainer:null,renderer:null}}}parseContent(e){return Fc.fromSchema(Vh).parseCode(e)}serializeContent(){return Fc.toString(this.editorView.state.doc)}}var vf=Object.defineProperty,wf=(e,t,n)=>(((e,t,n)=>{t in e?vf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);function xf(e,t,n,r,i){if(!(e&&e.nodeSize&&null!=n&&n.length&&r))return[];const s=function(e,t){const n=[];return t.includes("doc")&&n.push({node:e,pos:-1}),e.descendants(((e,r)=>{if(e.isBlock&&t.indexOf(e.type.name)>-1)return n.push({node:e,pos:r}),!1})),n}(e,n);let o=[];return s.forEach((e=>{if(null!=i&&i.preRenderer){const t=i.preRenderer(e.node,e.pos);if(t)return void(o=[...o,...t])}const n=r(e.node);if(n&&!t.getLanguage(n))return;const s=n?t.highlight(e.node.textContent,{language:n}):t.highlightAuto(e.node.textContent);!n&&s.language&&(null==i?void 0:i.autohighlightCallback)&&i.autohighlightCallback(e.node,e.pos,s.language);const a=s._emitter,l=new Cf(a,e.pos,a.options.classPrefix).value(),c=[];l.forEach((e=>{if(!e.scope)return;const t=pl.inline(e.from,e.to,{class:e.classes});c.push(t)})),null!=i&&i.postRenderer&&i.postRenderer(e.node,e.pos,c),o=[...o,...c]})),o}class Cf{constructor(e,t,n){wf(this,"buffer"),wf(this,"nodeQueue"),wf(this,"classPrefix"),wf(this,"currentPosition"),this.buffer=[],this.nodeQueue=[],this.classPrefix=n,this.currentPosition=t+1,e.walk(this)}get currentNode(){return this.nodeQueue.length?this.nodeQueue.slice(-1):null}addText(e){!this.currentNode||(this.currentPosition+=e.length)}openNode(e){let t=e.scope||"";t=e.sublanguage?`language-${t}`:this.expandScopeName(t);const n=this.newNode();n.scope=e.scope,n.classes=t,n.from=this.currentPosition,this.nodeQueue.push(n)}closeNode(e){const t=this.nodeQueue.pop();if(!t)throw"Cannot close node!";if(t.to=this.currentPosition,e.scope!==t.scope)throw"Mismatch!";this.buffer.push(t)}value(){return this.buffer}newNode(){return{from:0,to:0,scope:void 0,classes:""}}expandScopeName(e){if(e.includes(".")){const t=e.split("."),n=t.shift()||"";return[`${this.classPrefix}${n}`,...t.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${this.classPrefix}${e}`}}class Ef{constructor(e){wf(this,"cache"),this.cache={...e}}get(e){return this.cache[e]||null}set(e,t,n){e<0||(this.cache[e]={node:t,decorations:n})}replace(e,t,n,r){this.remove(e),this.set(t,n,r)}remove(e){delete this.cache[e]}invalidate(e){const t=new Ef(this.cache),n=e.mapping;return Object.keys(this.cache).forEach((r=>{const i=+r;if(i<0)return;const s=n.mapResult(i),o=e.doc.nodeAt(s.pos),{node:a,decorations:l}=this.get(i);if(s.deleted||null==o||!o.eq(a))t.remove(i);else if(i!==s.pos){const e=l.map((e=>e.map(n,0,0))).filter((e=>null!==e));t.replace(i,s.pos,o,e)}})),t}}var Sf=r(171),_f=r.n(Sf);const Af={bsh:"bash",csh:"bash",sh:"bash",c:"cpp",cc:"cpp",cxx:"cpp",cyc:"cpp",m:"cpp",cs:"csharp",coffee:"coffeescript",html:"xml",xsl:"xml",js:"javascript",pl:"perl",py:"python",cv:"python",rb:"ruby",clj:"clojure",erl:"erlang",hs:"haskell",mma:"mathematica",tex:"latex",cl:"lisp",el:"lisp",lsp:"lisp",scm:"scheme",ss:"scheme",rkt:"scheme",fs:"ocaml",ml:"ocaml",s:"r",rc:"rust",rs:"rust",vhd:"vhdl",none:"plaintext"};function Df(e){const t=function(e){return t=(e.attrs.params||e.attrs.language||"").split(/\s/)[0].toLowerCase()||null,Af[t]||t;// removed by dead control flow - var t; }(e);return t?{Language:t,IsAutoDetected:!1}:{Language:e.attrs.autodetectedLanguage,IsAutoDetected:!0}}function Mf(e){const t=function(){const e=globalThis.hljs??_f();return e&&e.highlight?e:null}();return t?function(e,t=["code_block"],n,r){const i=n||function(e){const t=e.attrs.detectedHighlightLanguage,n=e.attrs.params;return t||(null==n?void 0:n.split(" ")[0])||""},s=r||function(e,t,n,r){const i=t.attrs||{};return i.detectedHighlightLanguage=r,e.setNodeMarkup(n,void 0,i)},o=(n,r)=>{const s=[];return{content:xf(n,e,t,i,{preRenderer:(e,t)=>{var n;return null==(n=r.get(t))?void 0:n.decorations},postRenderer:(e,t,n)=>{r.set(t,e,n)},autohighlightCallback:(e,t,n)=>{s.push({node:e,pos:t,language:n})}}),autodetectedLanguages:s}},a=new ks;return new gs({key:a,state:{init(e,t){const n=new Ef({}),r=o(t.doc,n);return{cache:n,decorations:gl.create(t.doc,r.content),autodetectedLanguages:r.autodetectedLanguages}},apply(e,t){const n=t.cache.invalidate(e);if(!e.docChanged)return{cache:n,decorations:t.decorations.map(e.mapping,e.doc),autodetectedLanguages:[]};const r=o(e.doc,n);return{cache:n,decorations:gl.create(e.doc,r.content),autodetectedLanguages:r.autodetectedLanguages}}},props:{decorations(e){var t;return null==(t=this.getState(e))?void 0:t.decorations}},view(e){const t=e=>{const t=a.getState(e.state);if(!t||!t.autodetectedLanguages.length)return;let n=e.state.tr;t.autodetectedLanguages.forEach((e=>{e.language&&(n=s(n,e.node,e.pos,e.language)||n)})),n=n.setMeta("addToHistory",!1),e.dispatch(n)};return t(e),{update:t}}})}(t,["code_block",...e?.highlightedNodeTypes||[]],(e=>Df(e).Language),((e,t,n,r)=>{const i={...t.attrs};return i.autodetectedLanguage=r,e.setNodeMarkup(n,void 0,i)})):new gs({})}const Tf=new Kr({nodes:{doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:()=>["p",0]},blockquote:{content:"block+",group:"block",parseDOM:[{tag:"blockquote"}],toDOM:()=>["blockquote",0]},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["div",["hr"]]},heading:{attrs:{level:{default:1}},content:"(text | image)*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM:e=>["h"+e.attrs.level,0]},code_block:{content:"text*",group:"block",code:!0,defining:!0,marks:"",attrs:{params:{default:""}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>({params:e.getAttribute("data-params")||""})}],toDOM:e=>["pre",e.attrs.params?{"data-params":e.attrs.params}:{},["code",0]]},ordered_list:{content:"list_item+",group:"block",attrs:{order:{default:1},tight:{default:!1}},parseDOM:[{tag:"ol",getAttrs:e=>({order:e.hasAttribute("start")?+e.getAttribute("start"):1,tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ol",{start:1==e.attrs.order?null:e.attrs.order,"data-tight":e.attrs.tight?"true":null},0]},bullet_list:{content:"list_item+",group:"block",attrs:{tight:{default:!1}},parseDOM:[{tag:"ul",getAttrs:e=>({tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ul",{"data-tight":e.attrs.tight?"true":null},0]},list_item:{content:"block+",defining:!0,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]},text:{group:"inline"},image:{inline:!0,attrs:{src:{},alt:{default:null},title:{default:null}},group:"inline",draggable:!0,parseDOM:[{tag:"img[src]",getAttrs:e=>({src:e.getAttribute("src"),title:e.getAttribute("title"),alt:e.getAttribute("alt")})}],toDOM:e=>["img",e.attrs]},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:()=>["br"]}},marks:{em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"},{style:"font-style=normal",clearMark:e=>"em"==e.type.name}],toDOM:()=>["em"]},strong:{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:e=>"normal"!=e.style.fontWeight&&null},{style:"font-weight=400",clearMark:e=>"strong"==e.type.name},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:()=>["strong"]},link:{attrs:{href:{},title:{default:null}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>({href:e.getAttribute("href"),title:e.getAttribute("title")})}],toDOM:e=>["a",e.attrs]},code:{parseDOM:[{tag:"code"}],toDOM:()=>["code"]}}});class Of{constructor(e,t){this.schema=e,this.tokenHandlers=t,this.stack=[{type:e.topNodeType,attrs:null,content:[],marks:lr.none}]}top(){return this.stack[this.stack.length-1]}push(e){this.stack.length&&this.top().content.push(e)}addText(e){if(!e)return;let t,n=this.top(),r=n.content,i=r[r.length-1],s=this.schema.text(e,n.marks);i&&(t=function(e,t){if(e.isText&&t.isText&&lr.sameSet(e.marks,t.marks))return e.withText(e.text+t.text)}(i,s))?r[r.length-1]=t:r.push(s)}openMark(e){let t=this.top();t.marks=e.addToSet(t.marks)}closeMark(e){let t=this.top();t.marks=e.removeFromSet(t.marks)}parseTokens(e){for(let t=0;t{e.openNode(t,Nf(i,n,r,s)),e.addText(If(n.content)),e.closeNode()}:(n[r+"_open"]=(e,n,r,s)=>e.openNode(t,Nf(i,n,r,s)),n[r+"_close"]=e=>e.closeNode())}else if(i.node){let t=e.nodeType(i.node);n[r]=(e,n,r,s)=>e.addNode(t,Nf(i,n,r,s))}else if(i.mark){let t=e.marks[i.mark];Lf(i,r)?n[r]=(e,n,r,s)=>{e.openMark(t.create(Nf(i,n,r,s))),e.addText(If(n.content)),e.closeMark(t)}:(n[r+"_open"]=(e,n,r,s)=>e.openMark(t.create(Nf(i,n,r,s))),n[r+"_close"]=e=>e.closeMark(t))}else{if(!i.ignore)throw new RangeError("Unrecognized parsing spec "+JSON.stringify(i));Lf(i,r)?n[r]=Ff:(n[r+"_open"]=Ff,n[r+"_close"]=Ff)}}return n.text=(e,t)=>e.addText(t.content),n.inline=(e,t)=>e.parseTokens(t.children),n.softbreak=n.softbreak||(e=>e.addText(" ")),n}(e,n)}parse(e,t={}){let n,r=new Of(this.schema,this.tokenHandlers);r.parseTokens(this.tokenizer.parse(e,t));do{n=r.closeNode()}while(r.stack.length);return n||this.schema.topNodeType.createAndFill()}}function Pf(e,t){for(;++t({tight:Pf(t,n)})},ordered_list:{block:"ordered_list",getAttrs:(e,t,n)=>({order:+e.attrGet("start")||1,tight:Pf(t,n)})},heading:{block:"heading",getAttrs:e=>({level:+e.tag.slice(1)})},code_block:{block:"code_block",noCloseToken:!0},fence:{block:"code_block",getAttrs:e=>({params:e.info||""}),noCloseToken:!0},hr:{node:"horizontal_rule"},image:{node:"image",getAttrs:e=>({src:e.attrGet("src"),title:e.attrGet("title")||null,alt:e.children[0]&&e.children[0].content||null})},hardbreak:{node:"hard_break"},em:{mark:"em"},strong:{mark:"strong"},link:{mark:"link",getAttrs:e=>({href:e.attrGet("href"),title:e.attrGet("title")||null})},code_inline:{mark:"code",noCloseToken:!0}}),zf={open:"",close:"",mixable:!0};class $f{constructor(e,t,n={}){this.nodes=e,this.marks=t,this.options=n}serialize(e,t={}){t=Object.assign({},this.options,t);let n=new jf(this.nodes,this.marks,t);return n.renderContent(e),n.out}}const Vf=new $f({blockquote(e,t){e.wrapBlock("> ",null,t,(()=>e.renderContent(t)))},code_block(e,t){const n=t.textContent.match(/`{3,}/gm),r=n?n.sort().slice(-1)[0]+"`":"```";e.write(r+(t.attrs.params||"")+"\n"),e.text(t.textContent,!1),e.write("\n"),e.write(r),e.closeBlock(t)},heading(e,t){e.write(e.repeat("#",t.attrs.level)+" "),e.renderInline(t,!1),e.closeBlock(t)},horizontal_rule(e,t){e.write(t.attrs.markup||"---"),e.closeBlock(t)},bullet_list(e,t){e.renderList(t," ",(()=>(t.attrs.bullet||"*")+" "))},ordered_list(e,t){let n=t.attrs.order||1,r=String(n+t.childCount-1).length,i=e.repeat(" ",r+2);e.renderList(t,i,(t=>{let i=String(n+t);return e.repeat(" ",r-i.length)+i+". "}))},list_item(e,t){e.renderContent(t)},paragraph(e,t){e.renderInline(t),e.closeBlock(t)},image(e,t){e.write("!["+e.esc(t.attrs.alt||"")+"]("+t.attrs.src.replace(/[\(\)]/g,"\\$&")+(t.attrs.title?' "'+t.attrs.title.replace(/"/g,'\\"')+'"':"")+")")},hard_break(e,t,n,r){for(let i=r+1;i(e.inAutolink=function(e,t,n){if(e.attrs.title||!/^\w+:/.test(e.attrs.href))return!1;let r=t.child(n);return!(!r.isText||r.text!=e.attrs.href||r.marks[r.marks.length-1]!=e||n!=t.childCount-1&&e.isInSet(t.child(n+1).marks))}(t,n,r),e.inAutolink?"<":"["),close(e,t,n,r){let{inAutolink:i}=e;return e.inAutolink=void 0,i?">":"]("+t.attrs.href.replace(/[\(\)"]/g,"\\$&")+(t.attrs.title?` "${t.attrs.title.replace(/"/g,'\\"')}"`:"")+")"},mixable:!0},code:{open:(e,t,n,r)=>qf(n.child(r),-1),close:(e,t,n,r)=>qf(n.child(r-1),1),escape:!1}});function qf(e,t){let n,r=/`+/g,i=0;if(e.isText)for(;n=r.exec(e.text);)i=Math.max(i,n[0].length);let s=i>0&&t>0?" `":"`";for(let e=0;e0&&t<0&&(s+=" "),s}class jf{constructor(e,t,n){this.nodes=e,this.marks=t,this.options=n,this.delim="",this.out="",this.closed=null,this.inAutolink=void 0,this.atBlockStart=!1,this.inTightList=!1,void 0===this.options.tightLists&&(this.options.tightLists=!1),void 0===this.options.hardBreakNodeName&&(this.options.hardBreakNodeName="hard_break")}flushClose(e=2){if(this.closed){if(this.atBlank()||(this.out+="\n"),e>1){let t=this.delim,n=/\s+$/.exec(t);n&&(t=t.slice(0,t.length-n[0].length));for(let n=1;nthis.render(t,e,r)))}renderInline(e,t=!0){this.atBlockStart=t;let n=[],r="",i=(t,i,s)=>{let o=t?t.marks:[];t&&t.type.name===this.options.hardBreakNodeName&&(o=o.filter((t=>{if(s+1==e.childCount)return!1;let n=e.child(s+1);return t.isInSet(n.marks)&&(!n.isText||/\S/.test(n.text))})));let a=r;if(r="",t&&t.isText&&o.some((e=>{let t=this.getMark(e.type.name);return t&&t.expelEnclosingWhitespace&&!e.isInSet(n)}))){let[e,r,i]=/^(\s*)(.*)$/m.exec(t.text);r&&(a+=r,(t=i?t.withText(i):null)||(o=n))}if(t&&t.isText&&o.some((t=>{let n=this.getMark(t.type.name);return n&&n.expelEnclosingWhitespace&&(s==e.childCount-1||!t.isInSet(e.child(s+1).marks))}))){let[e,i,s]=/^(.*?)(\s*)$/m.exec(t.text);s&&(r=s,(t=i?t.withText(i):null)||(o=n))}let l=o.length?o[o.length-1]:null,c=l&&!1===this.getMark(l.type.name).escape,h=o.length-(c?1:0);e:for(let e=0;er?o=o.slice(0,r).concat(t).concat(o.slice(r,e)).concat(o.slice(e+1,h)):r>e&&(o=o.slice(0,e).concat(o.slice(e+1,r)).concat(t).concat(o.slice(r,h)));continue e}}}let u=0;for(;u0&&(this.atBlockStart=!1)};e.forEach(i),i(null,0,e.childCount),this.atBlockStart=!1}renderList(e,t,n){this.closed&&this.closed.type==e.type?this.flushClose(3):this.inTightList&&this.flushClose(1);let r=void 0!==e.attrs.tight?e.attrs.tight:this.options.tightLists,i=this.inTightList;this.inTightList=r,e.forEach(((i,s,o)=>{o&&r&&this.flushClose(1),this.wrapBlock(t,n(o),e,(()=>this.render(i,e,o)))})),this.inTightList=i}esc(e,t=!1){return e=e.replace(/[`*\\~\[\]_]/g,((t,n)=>"_"==t&&n>0&&n+1])/,"\\$&").replace(/^(\s*)(#{1,6})(\s|$)/,"$1\\$2$3").replace(/^(\s*\d+)\.\s/,"$1\\. ")),this.options.escapeExtraCharacters&&(e=e.replace(this.options.escapeExtraCharacters,"\\$&")),e}quote(e){let t=-1==e.indexOf('"')?'""':-1==e.indexOf("'")?"''":"()";return t[0]+e+t[1]}repeat(e,t){let n="";for(let r=0;r$/.test(e),r=e.replace(/[<>/]/g,"").trim().split(/\s/)[0];t=["del","strike","s"].includes(r)?Wf.strike:["b","strong"].includes(r)?Wf.strong:["em","i"].includes(r)?Wf.emphasis:"code"===r?Wf.code:"br"===r?Wf.hardbreak:"blockquote"===r?Wf.blockquote:"a"===r?Wf.link:"img"===r?Wf.image:/h[1,2,3,4,5,6]/.test(r)?Wf.heading:"kbd"===r?Wf.keyboard:"pre"===r?Wf.pre:"sup"===r?Wf.sup:"sub"===r?Wf.sub:"ul"===r?Wf.unordered_list:"ol"===r?Wf.ordered_list:"li"===r?Wf.list_item:"p"===r?Wf.paragraph:"hr"===r?Wf.horizontal_rule:"dd"===r?Wf.description_details:"dl"===r?Wf.description_list:"dt"===r?Wf.description_term:Wf.unknown;let i=r?`<${n?"/":""}${r}>`:"";const s=Zf.includes(t);s&&(i=e.replace(/^(<[a-z]+).*?([^\S\r\n]?\/?>)$/is,"$1$2"));const o={},a=Jf[t];if(a?.length)for(const t of a)o[t]=new RegExp(`${t}=["'](.+?)["']`).exec(e)?.[1]||"";return{type:t,isSelfClosing:s,isClosing:n,isBlock:Gf.includes(t),tagName:r,attributes:o,markup:i}}function Yf(e,t){const n=t||new Xf("","",0),r=e.isSelfClosing?"":e.isClosing?"_close":"_open";let i="";switch(e.type){case Wf.unknown:i="text";break;case Wf.strike:i="s"+r;break;case Wf.emphasis:i="em"+r;break;case Wf.code:i="code_inline_split"+r;break;case Wf.horizontal_rule:i="hr";break;case Wf.link:i="link"+r,n.attrSet("href",e.attributes.href),n.attrSet("title",e.attributes.title);break;case Wf.image:i="image",n.attrSet("src",e.attributes.src),n.attrSet("height",e.attributes.height),n.attrSet("width",e.attributes.width),n.attrSet("alt",e.attributes.alt),n.attrSet("title",e.attributes.title);break;case Wf.keyboard:i="kbd"+r;break;default:i=Wf[e.type]+r}return n.type=i,n.markup=e.markup,n.nesting=e.isClosing?-1:1,e.isSelfClosing&&(n.nesting=0),n.tag=e.tagName||"",n}function em(e,t){if(e.block)return[e];const n=[Wf.blockquote,Wf.pre],r=new Xf("inline","",0);return r.children=[e],!t||n.includes(t)?[new Xf("paragraph_open","p",1),r,new Xf("paragraph_close","p",-1)]:[r]}function tm(e){let t=null;return"html_inline"===e.type?t=Qf(e.content):e.children&&e.children.length&&(e.children=nm(e.children)),t?(t.isBlock||(e=Yf(t,e)).attrSet("inline_html","true"),e):e}function nm(e){for(let t=0,n=(e=e.map(tm).filter((e=>!!e))).length;t)/gi)?.map((e=>({match:e,tagInfo:Qf(e)})));if(!t||!t.length)return e;let n=e;return t.forEach((e=>{let t;if(e.tagInfo.type===Wf.unknown)t="";else if(e.tagInfo.type===Wf.image){const n=e.match.match(/((width|height|src|alt|title)=["'].+?["'])/g);let r=e.tagInfo.markup;n?.length&&(r=r.replace("{let n=null;if("html_block"===e.type?n=function(e){const t=e.content,n=/^(?:(<[a-z0-9]+.*?>)([^<>\n]+?)(<\/[a-z0-9]+>))$|^(<[a-z0-9]+(?:\s.+?)?\s?\/?>)$/i.exec(t);if(!n)return null;const r=[];let i=!1;if(n[4]){const e=Qf(t);e.type!==Wf.unknown&&(i=e.isBlock,r.push(e))}else{const e=Qf(n[1]),t=n[2],s=Qf(n[3]);e.type!==Wf.unknown&&s.type!==Wf.unknown&&e.type===s.type&&(i=e.isBlock,r.push(e),r.push(t),r.push(s))}return r.length>0?{isBlock:i,tagInfo:r}:null}(e):e.children?.length&&(e.children=im(e.children)),!n||!n.tagInfo.length)return void t.push(e);const r=[];n.tagInfo.forEach(((e,t,n)=>{const i=n[t-1],s="string"==typeof e||!e.isBlock;let o;if("string"==typeof e){const t=new Xf("text","",0);t.content=e,o=t}else o=Yf(e);let a=[o];s&&(a=em(o,i?.type)),r.push(...a)})),t.push(...r)})),t}function sm(e){const t=[];return e.forEach((e=>{if(e.children?.length&&(e.children=sm(e.children)),0===e.type.indexOf("html_block"))if("html_block"===e.type){if(e.content=rm(e.content),!e.content.trim())return;if(e.content.includes("<"))t.push(e);else{const n=new Xf("text","",0);n.content=e.content;const r=em(n,null);t.push(...r)}}else if("html_block_container_open"===e.type){const n=e.attrGet("contentOpen"),r=e.attrGet("contentClose");e.attrSet("contentOpen",rm(n)),e.attrSet("contentClose",rm(r)),t.push(e)}else t.push(e);else t.push(e)})),t}function om(e){const t=[];let n=0,r=e.map(((e,t)=>{if("html_block"!==e.type)return null;const r=e.content.match(/<[a-z]+(\s[a-z0-9\-"'=\s])?>/gi)?.length??0,i=e.content.match(/<\/[a-z]+>/gi)?.length??0;return r>i||rnull!==e));r.length%2==1&&(r=r.slice(0,-1));let i=null;return e.forEach(((e,n)=>{if(e.children&&e.children.length&&(e.children=om(e.children)),"html_block"!==e.type||!r.includes(n))return void t.push(e);const s=new Xf("html_block_container_"+(i?"close":"open"),"",i?-1:1);i?(i.attrSet("contentClose",e.content),i=null,t.push(s)):(s.attrSet("contentOpen",e.content),i=s,t.push(s))})),t}function am(e){e.core.ruler.push("so-sanitize-html",(function(e){return e.tokens=nm(e.tokens),e.tokens=im(e.tokens),e.tokens=om(e.tokens),e.tokens=sm(e.tokens),!1}))}function lm(e,t,n){if(!n)throw new Error("link-reference: parent token is undefined");const r=/\[(.+?)\](?!\()(?:\[\]|\[(.+?)\]|)/g;let i,s,o;for(;null!==(o=r.exec(n.content));){if(!o?.length)continue;s=o[1],o[2]&&(s=o[2]),i=e[(new wn).utils.normalizeReference(s)];const n="image"===t.type?t.attrGet("src"):t.attrGet("href");if(i&&i.href===n)break;i=void 0}if(!i)return!1;const a=o[2]?"full":o[0].endsWith("[]")?"collapsed":"shortcut";return t.markup="reference",t.meta=t.meta||{},t.meta.reference={...i,label:s,type:a,contentMatch:o[0]},!0}function cm(e,t,n){let r=!1;t.forEach((t=>{"link_open"!==t.type||t.markup||(r=lm(e,t,n)),"link_close"===t.type&&r&&(t.markup="reference",r=!1),"image"!==t.type||t.markup||lm(e,t,n),t.children&&cm(e,t.children,t)}))}function hm(e){e.core.ruler.push("link-reference",(function(e){const t=e.env?.references;return!(!t||!Object.keys(t).length||(cm(t,e.tokens),1))}))}function um(e,t,n,r,i){const s=new wn,o=e=>s.utils.isSpace(e);var a,l,c,h,u,d,p,f,m,g,b,y,k,v,w,x,C,E,S,_,A=t.lineMax,D=t.bMarks[n]+t.tShift[n],M=t.eMarks[n];if(t.sCount[n]-t.blkIndent>=4)return!1;if(62!==t.src.charCodeAt(D)||!e.followingCharRegex.test(t.src[D+1]))return!1;if(D+=e.markup.length,i)return!0;for(h=m=t.sCount[n]+D-(t.bMarks[n]+t.tShift[n]),32===t.src.charCodeAt(D)?(D++,h++,m++,a=!1,x=!0):9===t.src.charCodeAt(D)?(x=!0,(t.bsCount[n]+m)%4==3?(D++,h++,m++,a=!1):a=!0):x=!1,g=[t.bMarks[n]],t.bMarks[n]=D;D=M,v=[t.sCount[n]],t.sCount[n]=m-h,w=[t.tShift[n]],t.tShift[n]=D-t.bMarks[n],E=t.md.block.ruler.getRules("spoiler"),k=t.parentType,t.parentType="spoiler",_=!1,f=n+1;f=(M=t.eMarks[f])));f++)if(D+=e.markup.length,62!==t.src.charCodeAt(D-e.markup.length)||!e.followingCharRegex.test(t.src[D-e.markup.length+1])||_){if(d)break;for(C=!1,c=0,u=E.length;c=M,b.push(t.bsCount[f]),t.bsCount[f]=t.sCount[f]+1+(x?1:0),v.push(t.sCount[f]),t.sCount[f]=m-h,w.push(t.tShift[f]),t.tShift[f]=D-t.bMarks[f]}for(y=t.blkIndent,t.blkIndent=0,(S=t.push(e.name+"_open",e.name,1)).markup=e.markup,S.map=p=[n,0],t.md.block.tokenize(t,n,f),(S=t.push(e.name+"_close",e.name,-1)).markup=e.markup,t.lineMax=A,t.parentType=k,p[1]=t.line,c=0;c!",name:"spoiler"},e,t,n,r)}function pm(e,t,n,r){return um({followingCharRegex:/[^!]/,markup:">",name:"blockquote"},e,t,n,r)}function fm(e){e.block.ruler.__rules__.forEach((e=>{const t=e.alt.indexOf("blockquote");t>-1&&e.alt.splice(t,0,"spoiler")})),e.block.ruler.before("blockquote","spoiler",dm,{alt:["paragraph","reference","spoiler","blockquote","list"]}),e.block.ruler.at("blockquote",pm,{alt:["paragraph","reference","spoiler","blockquote","list"]})}function mm(e,t,n,r,i,s){const o=n.bMarks[r]+n.tShift[r],a=n.eMarks[r];if(60!==n.src.charCodeAt(o)||o+2>=a)return!1;if(33!==n.src.charCodeAt(o+1))return!1;const l=n.src.slice(o,a),c=e.exec(l);if(!c?.length)return!1;if(s)return!0;const h=r+1;n.line=h;const u=n.push(t,"",0);return u.map=[r,h],u.content=n.getLines(r,h,n.blkIndent,!0),u.attrSet("language",c[1]),!0}function gm(e,t,n,r){return mm(//,"stack_language_comment",e,t,0,r)}function bm(e,t,n,r){return mm(//,"stack_language_all_comment",e,t,0,r)}function ym(e){let t=null;for(const n of e.tokens)if("stack_language_all_comment"===n.type){t=n.attrGet("language");break}for(let n=0,r=e.tokens.length;n!e.type.startsWith("stack_language"))),!1}function km(e){e.block.ruler.before("html_block","stack_language_comment",gm),e.block.ruler.before("html_block","stack_language_all_comment",bm),e.core.ruler.push("so-sanitize-code-lang",ym)}function vm(e,t){e.inline.ruler.push("tag_link",(function(e,n){return function(e,t,n){if(91!==e.src.charCodeAt(e.pos))return!1;if("[tag:"!==e.src.slice(e.pos,e.pos+5)&&"[meta-tag:"!==e.src.slice(e.pos,e.pos+10))return!1;const r=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(r<0)return!1;const i=e.src.slice(e.pos,r+1),s="[meta-tag:"===i.slice(0,10),o=i.slice(s?10:5,-1);if(s&&n.disableMetaTags)return!1;if(n.validate&&!n.validate(o,s,i))return!1;if(!t){let t=e.push("tag_link_open","a",1);t.attrSet("tagName",o),t.attrSet("tagType",s?"meta-tag":"tag"),t.content=i,t=e.push("text","",0),t.content=o,t=e.push("tag_link_close","a",-1)}return e.pos=r+1,!0}(e,n,t)}))}function wm(e){let t=0,n=!1,r=!1;for(let i=0;i({content:e.content})},html_block:{node:"html_block",getAttrs:e=>({content:e.content})},html_block_container:{block:"html_block_container",getAttrs:e=>({contentOpen:e.attrGet("contentOpen"),contentClose:e.attrGet("contentClose")})},stack_language_comment:{ignore:!0},stack_language_all_comment:{ignore:!0},bullet_list:{block:"bullet_list",getAttrs:e=>({tight:"true"===e.attrGet("tight")})},ordered_list:{block:"ordered_list",getAttrs:e=>({order:+e.attrGet("start")||1,tight:"true"===e.attrGet("tight")})},code_block:{block:"code_block",noCloseToken:!0,getAttrs:e=>({params:e.info||"",markup:e.markup||"indented"})},fence:{block:"code_block",getAttrs:e=>({params:e.info||""}),noCloseToken:!0},s:{mark:"strike"},table:{block:"table"},thead:{block:"table_head"},tbody:{block:"table_body"},th:{block:"table_header",getAttrs:e=>({style:e.attrGet("style")})},tr:{block:"table_row"},td:{block:"table_cell",getAttrs:e=>({style:e.attrGet("style")})},image:{node:"image",getAttrs:e=>{const t={src:e.attrGet("src"),width:e.attrGet("width"),height:e.attrGet("height"),alt:e.attrGet("alt")||e.children?.[0]?.content||null,title:e.attrGet("title")};if("reference"===e.markup){const n=e.meta;t.referenceType=n?.reference?.type,t.referenceLabel=n?.reference?.label}return t}},tag_link:{block:"tagLink",getAttrs:e=>({tagName:e.attrGet("tagName"),tagType:e.attrGet("tagType")})},spoiler:{block:"spoiler"},code_inline_split:{mark:"code"}};Object.keys(Cm).forEach((e=>{const t=Cm[e];if(t.getAttrs){const n=t.getAttrs.bind(t);t.getAttrs="link"===e?(e,t,r)=>{const i={...n(e,t,r)};if(i.markup=e.markup,"reference"===e.markup){const t=e.meta;i.referenceType=t?.reference?.type,i.referenceLabel=t?.reference?.label}return i}:(e,t,r)=>({markup:e.markup,...n(e,t,r)})}else t.getAttrs=e=>({markup:e.markup})}));class Em extends Bf{tokens;constructor(e,t,n){super(e,t,n),this.tokenHandlers.softbreak=e=>{const t=this.schema.nodes.softbreak;e.openNode(t,{}),e.addText(" "),e.closeNode()}}}class Sm extends wn{constructor(e,t){super(e,t)}parse(e,t){const n=super.parse(e,t);return Sn("Sanitized markdown token tree",n),n}}class _m{constructor(e,t,n={}){var r;this.match=e,this.match=e,this.handler="string"==typeof t?(r=t,function(e,t,n,i){let s=r;if(t[1]){let e=t[0].lastIndexOf(t[1]);s+=t[0].slice(e+t[1].length);let r=(n+=e)-i;r>0&&(s=t[0].slice(e-r,e)+s,n=i)}return e.tr.insertText(s,n,i)}):t,this.undoable=!1!==n.undoable,this.inCode=n.inCode||!1}}function Am(e,t,n,r,i,s){if(e.composing)return!1;let o=e.state,a=o.doc.resolve(t),l=a.parent.textBetween(Math.max(0,a.parentOffset-500),a.parentOffset,null,"")+r;for(let c=0;c{let n=e.plugins;for(let r=0;r=0;e--)n.step(r.steps[e].invert(r.docs[e]));if(i.text){let t=n.doc.resolve(i.from).marks();n.replaceWith(i.from,i.to,e.schema.text(i.text,t))}else n.delete(i.from,i.to);t(n)}return!0}}return!1};function Mm(e,t,n=null,r){return new _m(e,((e,i,s,o)=>{let a=n instanceof Function?n(i):n,l=e.tr.delete(s,o),c=l.doc.resolve(s).blockRange(),h=c&&Mi(c,t,a);if(!h)return null;l.wrap(c,h);let u=l.doc.resolve(s-1).nodeBefore;return u&&u.type==t&&Ii(l.doc,s-1)&&(!r||r(i,u))&&l.join(s-1),l}))}function Tm(e,t,n=null){return new _m(e,((e,r,i,s)=>{let o=e.doc.resolve(i),a=n instanceof Function?n(r):n;return o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),t)?e.tr.delete(i,s).setBlockType(i,i,t,a):null}))}new _m(/--$/,"—"),new _m(/\.\.\.$/,"…"),new _m(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"“"),new _m(/"$/,"”"),new _m(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"‘"),new _m(/'$/,"’");const Om=/`(\S(?:|.*?\S))`$/,Nm=/\*\*(\S(?:|.*?\S))\*\*$/,Lm=/\*([^*\s]([^*])*[^*\s]|[^*\s])\*$/,Im=/(?{const a=r?r(i):{},l=e.tr;if(!e.doc.resolve(s).parent.type.allowsMarkType(t))return null;if(n&&!n(i))return null;const c=i[0],h=i[1];if(h){const e=s+c.indexOf(h),t=e+h.length;ts&&l.delete(s,e),o=s+h.length}return l.addMark(s,o,t.create(a)),l.removeStoredMark(t),l}))}function Rm(e,t){const n=Tm(e,t).handler;return new _m(e,((e,t,r,i)=>{const s=n(e,t,r,i);return s&&fp(s),s}))}const zm=(e,t)=>{const n=Mm(/^\s*>\s$/,e.nodes.blockquote),r=Mm(/^\s*>!\s$/,e.nodes.spoiler),i=Tm(new RegExp("^(#{1,3})\\s$"),e.nodes.heading,(e=>({level:e[1].length}))),s=Rm(/^```$/,e.nodes.code_block),o=Rm(/^\s{4}$/,e.nodes.code_block),a=Mm(/^\s*[*+-]\s$/,e.nodes.bullet_list),l=Mm(/^\s*\d(\.|\))\s$/,e.nodes.ordered_list,(e=>({order:+e[1]})),((e,t)=>t.childCount+t.attrs.order==+e[1])),c=Pm(Om,e.marks.code),h=Pm(Nm,e.marks.strong),u=Pm(Lm,e.marks.em,(e=>"*"!==e.input.charAt(e.input.lastIndexOf(e[0])-1)));return function({rules:e}){let t=new gs({state:{init:()=>null,apply(e,t){return e.getMeta(this)||(e.selectionSet||e.docChanged?null:t)}},props:{handleTextInput:(n,r,i,s)=>Am(n,r,i,s,e,t),handleDOMEvents:{compositionend:n=>{setTimeout((()=>{let{$cursor:r}=n.state.selection;r&&Am(n,r.pos,r.pos,"",e,t)}))}}},isInputRules:!0});return t}({rules:[n,r,i,s,o,a,l,c,h,Pm(Im,e.marks.strong),u,Pm(Fm,e.marks.em,(e=>"_"!==e.input.charAt(e.input.lastIndexOf(e[0])-1))),(t=>Pm(Bm,e.marks.link,(e=>t.validateLink(e[2])),(e=>({href:e[2]}))))(t)]})};function $m(e,t){const n=zh({Tab:rf,"Shift-Tab":sf,"Mod-]":rf,"Mod-[":sf,Enter:tf,"Mod-;":lf}),r=zh({"Mod-e":Fp,"Mod-Enter":vp,"Shift-Enter":vp,Enter:Lp,Backspace:Tp,Delete:Tp,"Mod-Backspace":Tp,"Mod-Delete":Tp,Tab:Lp,"Shift-Tab":Np});var i;const s=[zh({"Mod-z":Ls,"Mod-y":Is,"Shift-Mod-z":Is,Backspace:Dm,Enter:hf(e.nodes.list_item),Tab:(i=e.nodes.list_item,function(e,t){let{$from:n,$to:r}=e.selection,s=n.blockRange(r,(e=>e.childCount>0&&e.firstChild.type==i));if(!s)return!1;let o=s.startIndex;if(0==o)return!1;let a=s.parent,l=a.child(o-1);if(l.type!=i)return!1;if(t){let n=l.lastChild&&l.lastChild.type==a.type,r=ir.from(n?i.create():null),o=new hr(ir.from(i.create(null,ir.from(a.type.create(null,r)))),n?3:1,0),c=s.start,h=s.end;t(e.tr.step(new Ei(c-(n?3:1),h,c,h,o,1,!0)).scrollIntoView())}return!0}),"Shift-Tab":uf(e.nodes.list_item),"Mod-Enter":kp,"Shift-Enter":kp,"Mod-b":Ch(e.marks.strong),"Mod-i":Ch(e.marks.em),"Mod-l":Kp,"Ctrl-q":wh(e.nodes.blockquote),"Mod-k":Ch(e.marks.code),"Mod-g":Wp,"Ctrl-g":Wp,"Mod-o":df(e.nodes.ordered_list,e.nodes.list_item),"Mod-u":df(e.nodes.bullet_list,e.nodes.list_item),"Mod-h":jp(),"Mod-r":Up,"Mod-m":xh(e.nodes.code_block),"Mod-[":Hp(t.tagLinks,!1),"Mod-]":Hp(t.tagLinks,!0),"Mod-/":wh(e.nodes.spoiler),"Mod-,":Ch(e.marks.sub),"Mod-.":Ch(e.marks.sup),"Mod-'":Ch(e.marks.kbd),ArrowRight:Zp,ArrowUp:Qp,ArrowDown:Xp}),n,zh(Mh)];return t.tables&&s.unshift(r),s}class Vm extends jf{linkReferenceDefinitions={};constructor(e,t,n){super(e,t,n)}addLinkReferenceDefinition(e,t,n){const r=(new wn).utils.normalizeReference(e);this.linkReferenceDefinitions[r]||(this.linkReferenceDefinitions[r]={href:t,title:n})}writeLinkReferenceDefinitions(){let e=Object.keys(this.linkReferenceDefinitions);if(!e.length)return;const t=[],n=[];e.forEach((e=>{isNaN(Number(e))?n.push(e):t.push(+e)})),e=[...t.sort(((e,t)=>e-t)).map((e=>e.toString())),...n.sort()],e.forEach((e=>{const t=this.linkReferenceDefinitions[e];this.ensureNewLine(),this.write("["),this.text(e),this.write("]: "),this.text(t.href),t.title&&this.text(` "${t.title}"`)}))}}class qm extends $f{serialize(e,t){const n=new Vm(this.nodes,this.marks,t||{});return n.renderContent(e),n.writeLinkReferenceDefinitions(),n.out}}function jm(e,t,n){const r=t.attrs.markup;if(!r)return!1;if(!r.startsWith("<")||!r.endsWith(">"))return!1;const i=r.replace(/[<>/\s]/g,""),s=`<${i}`;if(e.text(s,!1),Jf[n]){const r=Jf[n].sort();for(const n of r){const r=t.attrs[n];r&&e.text(` ${n}="${r}"`)}}return Zf.includes(n)?(e.text(r.replace(s,""),!1),!0):(e.text(">",!1),e.renderInline(t),e.closed=!1,e.text(``,!1),e.closeBlock(t),!0)}const Hm={...Vf.nodes,blockquote(e,t){if(jm(e,t,Wf.blockquote))return;const n=t.attrs.markup||">";e.wrapBlock(n+" ",null,t,(()=>e.renderContent(t)))},code_block(e,t){let n=t.attrs.markup||"```";"indented"===n&&t.attrs.params&&(n="```"),"indented"===n?t.textContent.split("\n").forEach(((t,n)=>{n>0&&e.ensureNewLine(),e.text(" "+t,!1)})):(e.write(n+(t.attrs.params||"")+"\n"),e.text(t.textContent,!1),e.ensureNewLine(),e.write(n)),e.closeBlock(t)},heading(e,t){const n=t.attrs.markup||"";jm(e,t,Wf.heading)||(n&&!n.startsWith("#")?(e.renderInline(t),e.ensureNewLine(),e.write(n),e.closeBlock(t)):(e.write(e.repeat("#",t.attrs.level)+" "),e.renderInline(t),e.closeBlock(t)))},horizontal_rule(e,t){jm(e,t,Wf.horizontal_rule)||(e.write(t.attrs.markup||"----------"),e.closeBlock(t))},bullet_list(e,t){if(jm(e,t,Wf.unordered_list))return;const n=t.attrs.markup||"-";e.renderList(t," ",(()=>n+" "))},ordered_list(e,t){if(jm(e,t,Wf.ordered_list))return;const n=t.attrs.order||1,r=String(n+t.childCount-1).length,i=e.repeat(" ",r+2),s=t.attrs.markup||".";e.renderList(t,i,(t=>{const i=String(n+t);return e.repeat(" ",r-i.length)+i+s+" "}))},list_item(e,t){jm(e,t,Wf.list_item)||e.renderContent(t)},paragraph(e,t){jm(e,t,Wf.paragraph)||(e.renderInline(t),e.closeBlock(t))},image(e,t){if(jm(e,t,Wf.image))return;const n=t.attrs.title?" "+e.quote(t.attrs.title):"",r="!["+e.esc(t.attrs.alt||"")+"]";let i="("+e.esc(t.attrs.src)+n+")";if("reference"===t.attrs.markup)switch(e.addLinkReferenceDefinition(t.attrs.referenceLabel,t.attrs.src,t.attrs.title),t.attrs.referenceType){case"full":i=`[${t.attrs.referenceLabel}]`;break;case"collapsed":i="[]";break;default:i=""}e.write(r+i)},hard_break(e,t,n,r){if(!jm(e,t,Wf.hardbreak))for(let i=r+1;ie.type===e.type.schema.marks.link));let r;if(["linkify","autolink"].includes(n?.attrs.markup))r=n.attrs.href;else{const n=e.atBlank()||e.atBlockStart||e.closed;let i=e.esc(t.text,n);i=i.replace(/\\_/g,"_").replace(/\b_|_\b/g,"\\_"),i=i.replace(/([<>])/g,"\\$1"),r=i}e.text(r,!1)}},Um={html_inline(e,t){e.write(t.attrs.content)},html_block(e,t){e.write(t.attrs.content),e.closeBlock(t)},html_block_container(e,t){e.write(t.attrs.contentOpen),e.ensureNewLine(),e.write("\n"),e.renderContent(t),e.write(t.attrs.contentClose),e.closeBlock(t)},softbreak(e){e.write("\n")},table(e,t){const n=t.type.schema;function r(t){const r=[];return e.ensureNewLine(),t.forEach((t=>{if(t.type===n.nodes.table_header||t.type===n.nodes.table_cell){const n=function(t){return e.write("| "),e.renderInline(t),e.write(" "),function(e){const t=e.attrs.style;if(!t)return null;const n=t.match(/text-align:[ ]?(left|right|center)/);return n&&n[1]?n[1]:null}(t)}(t);r.push(n)}})),e.write("|"),r}t.forEach((t=>{t.type===n.nodes.table_head&&function(t){let i=[];t.forEach((e=>{e.type===n.nodes.table_row&&(i=r(e))})),e.ensureNewLine();for(const t of i)e.write("|"),e.write("left"===t||"center"===t?":":" "),e.write("---"),e.write("right"===t||"center"===t?":":" ");e.write("|")}(t),t.type===n.nodes.table_body&&t.forEach((e=>{e.type===n.nodes.table_row&&r(e)}))})),e.closeBlock(t)},tagLink(e,t){const n="meta-tag"===t.attrs.tagType?"meta-tag":"tag",r=t.attrs.tagName;e.write(`[${n}:${r}]`)},spoiler(e,t){e.wrapBlock(">! ",null,t,(()=>e.renderContent(t)))}};function Wm(e){return e.open instanceof Function||e.close instanceof Function?(_n("markdown-serializer genMarkupAwareMarkSpec","Unable to extend mark config with open/close as functions",e),e):{...e,open:(t,n)=>n.attrs.markup||e.open,close(t,n){let r=n.attrs.markup;return r=/^<[a-z]+>$/i.test(r)?r.replace(/^`},close(e,t,n,r){if(!t.attrs.markup)return"string"==typeof Km.close?Km.close:Km.close(e,t,n,r);if("reference"===t.attrs.markup)switch(t.attrs.referenceType){case"full":return`][${t.attrs.referenceLabel}]`;case"collapsed":return"][]";default:return"]"}return"linkify"===t.attrs.markup?"":"autolink"===t.attrs.markup?">":""}},Gm=Vf.marks.code,Zm={open(e,t,n,r){if("string"==typeof Gm.open)return t.attrs.markup||Gm.open;let i=Gm.open(e,t,n,r);return t.attrs.markup&&(i=i.replace("`",t.attrs.markup)),i},close(e,t,n,r){if("string"==typeof Gm.close)return t.attrs.markup||Gm.close;let i=Gm.close(e,t,n,r);if(t.attrs.markup){const e=t.attrs.markup.replace(/^",close:"",mixable:!0,expelEnclosingWhitespace:!0}),sup:Wm({open:"",close:"",mixable:!0,expelEnclosingWhitespace:!0}),sub:Wm({open:"",close:"",mixable:!0,expelEnclosingWhitespace:!0})};class Qm{dom;contentDOM;node;view;getPos;availableLanguages;maxSuggestions;ignoreBlur=!1;selectedSuggestionIndex=-1;constructor(e,t,n,r,i=5){this.node=e,this.view=t,this.getPos=n,this.availableLanguages=r,this.maxSuggestions=i,this.render()}render(){this.dom=document.createElement("div"),this.dom.classList.add("ps-relative","p0","ws-normal","ow-normal"),this.dom.innerHTML=Rn` - -
    -
    - - - -
    -
    -
      -
      -
      -
      `,this.contentDOM=this.dom.querySelector(".content-dom");const e=this.dom.querySelector("button.js-language-selector");e.addEventListener("click",this.onLanguageSelectorClick.bind(this)),e.addEventListener("mousedown",this.onLanguageSelectorMouseDown.bind(this));const t=this.dom.querySelector(".js-language-input-textbox");t.addEventListener("blur",this.onLanguageInputBlur.bind(this)),t.addEventListener("keydown",this.onLanguageInputKeyDown.bind(this)),t.addEventListener("mousedown",this.onLanguageInputMouseDown.bind(this)),t.addEventListener("input",this.onLanguageInputTextInput.bind(this)),this.update(this.node)}update(e){if("code_block"!==e.type.name)return!1;this.node=e,this.dom.querySelector(".js-language-indicator").textContent=this.getLanguageDisplayName();const t=this.dom.querySelector(".js-language-input"),n=this.dom.querySelector(".js-language-input-textbox");t.style.display=e.attrs.isEditingLanguage?"block":"none",e.attrs.isEditingLanguage&&n.focus();const r=this.dom.querySelector(".js-language-dropdown-container");return e.attrs.suggestions?this.renderDropdown(e.attrs.suggestions):r.style.display="none",!0}getLanguageDisplayName(){const e=Df(this.node);return e.IsAutoDetected?fc("nodes.codeblock_lang_auto",{lang:e.Language}):e.Language}updateNodeAttrs(e){const t=this.getPos(),n=this.node.attrs;this.view.dispatch(this.view.state.tr.setNodeMarkup(t,null,{...n,...e}))}onLanguageSelectorClick(e){e.stopPropagation(),this.updateNodeAttrs({isEditingLanguage:!0})}onLanguageSelectorMouseDown(e){e.stopPropagation()}onLanguageInputBlur(e){if(this.ignoreBlur)return void(this.ignoreBlur=!1);const t=this.dom.querySelector(".js-language-input");if(e.relatedTarget&&t&&t.contains(e.relatedTarget))return;const n=e.target;this.updateNodeAttrs({params:n.value,isEditingLanguage:!1,suggestions:null})}onLanguageInputKeyDown(e){const t=this.dom.querySelector(".js-language-dropdown");if("Enter"===e.key){e.preventDefault();const n=t.querySelector("li:focus");if(n)return void n.click();this.view.focus()}else"Escape"===e.key?this.onEscape():"ArrowDown"===e.key?this.onArrowDown(e):"ArrowUp"===e.key?this.onArrowUp(e):" "===e.key&&e.preventDefault();e.stopPropagation()}onEscape(){this.ignoreBlur=!0,this.updateNodeAttrs({isEditingLanguage:!1,suggestions:null}),this.view.focus()}onArrowUp(e){this.updateSelectedSuggestionIndex(-1),e.preventDefault(),e.stopPropagation()}onArrowDown(e){this.updateSelectedSuggestionIndex(1),e.preventDefault(),e.stopPropagation()}updateSelectedSuggestionIndex(e){const t=this.dom.querySelector(".js-language-dropdown").querySelectorAll("li");0!=t.length&&(this.selectedSuggestionIndex+=e,this.selectedSuggestionIndex<-1?this.selectedSuggestionIndex=t.length-1:this.selectedSuggestionIndex>=t.length&&(this.selectedSuggestionIndex=-1),-1==this.selectedSuggestionIndex?(this.dom.querySelector(".js-language-input-textbox").focus(),this.selectedSuggestionIndex=-1):t[this.selectedSuggestionIndex].focus())}onLanguageInputMouseDown(e){e.stopPropagation()}onLanguageInputTextInput(e){const t=e.target.value.toLowerCase(),n=t.length>0?this.availableLanguages.filter((e=>e.toLowerCase().startsWith(t))).slice(0,this.maxSuggestions):[];this.selectedSuggestionIndex=-1,this.updateNodeAttrs({suggestions:n})}renderDropdown(e){const t=this.dom.querySelector(".js-language-dropdown-container"),n=this.dom.querySelector(".js-language-dropdown");if(n.innerHTML="",0===e.length)return t.style.display="none",void(this.selectedSuggestionIndex=-1);this.selectedSuggestionIndex=-1,e.forEach((e=>{const r=document.createElement("li");r.textContent=e,r.classList.add("h:bg-black-150","px4"),r.tabIndex=0,r.addEventListener("mousedown",(e=>{e.preventDefault()})),r.addEventListener("click",(()=>{this.dom.querySelector(".js-language-input-textbox").value=e,this.updateNodeAttrs({params:e,isEditingLanguage:!1,suggestions:null}),t.style.display="none",this.view.focus()})),r.addEventListener("keydown",(e=>{"Enter"===e.key?(e.preventDefault(),e.stopPropagation(),r.click()):"Escape"===e.key?this.onEscape():"ArrowDown"===e.key?this.onArrowDown(e):"ArrowUp"===e.key?this.onArrowUp(e):"Tab"===e.key&&e.stopPropagation()})),n.appendChild(r)})),t.style.display="block"}}class Ym{dom;constructor(e){this.dom=document.createElement("div"),this.dom.className="html_block ProseMirror-widget",this.dom.innerHTML=e.attrs.content}}class eg{dom;contentDOM;constructor(e){if(this.dom=document.createElement("div"),this.dom.className="html_block_container ProseMirror-widget",!e.childCount)return void(this.dom.innerHTML="invalid html_block_container");const t=e.attrs.contentOpen+'
      '+e.attrs.contentClose;this.dom.innerHTML=t,this.contentDOM=this.dom.querySelector(".ProseMirror-contentdom")}}class tg{dom;img;popover;form;id;selectionActive;constructor(e,t,n){this.id=Vn(),this.img=this.createImage(e),this.form=this.createForm(),this.form.addEventListener("submit",(e=>this.handleChangedImageAttributes(e,n,t))),this.popover=this.createPopover(),this.dom=document.createElement("span"),this.dom.appendChild(this.img),this.dom.appendChild(this.popover),this.dom.addEventListener("s-popover:hide",(e=>this.preventClose(e)))}selectNode(){this.img.classList.add("bs-ring"),this.selectionActive=!0,this.img.dispatchEvent(new Event("image-popover-show"));const e=this.form.querySelectorAll("input");e.length>0&&e[0].focus({preventScroll:!0})}deselectNode(){this.img.classList.remove("bs-ring"),this.selectionActive=!1,this.img.dispatchEvent(new Event("image-popover-hide"))}stopEvent(e){return this.popover.contains(e.target)}ignoreMutation(){return!0}destroy(){this.img.remove(),this.popover.remove(),this.dom=null,this.form.remove()}createImage(e){const t=document.createElement("img");return t.setAttribute("aria-controls",`img-popover-${this.id}`),t.setAttribute("data-controller","s-popover"),t.setAttribute("data-action","image-popover-show->s-popover#show image-popover-hide->s-popover#hide"),t.src=e.attrs.src,e.attrs.alt&&(t.alt=e.attrs.alt),e.attrs.title&&(t.title=e.attrs.title),t}createForm(){const e=document.createElement("form");return e.className="d-flex fd-column",e.innerHTML=Rn` - -
      - -
      - -
      - -
      - -
      - -
      - - - `,e}createPopover(){const e=document.createElement("div");return e.className="s-popover ws-normal wb-normal js-img-popover",e.id=`img-popover-${this.id}`,e.append(this.form),e}handleChangedImageAttributes(e,t,n){if(e.preventDefault(),"function"!=typeof t)return;const r=e=>this.form.querySelector(e),i=r(`#img-src-${this.id}`),s=r(`#img-alt-${this.id}`),o=r(`#img-title-${this.id}`);n.dispatch(n.state.tr.setNodeMarkup(t(),null,{src:i.value,alt:s.value,title:o.value})),n.focus()}preventClose(e){this.selectionActive&&e.preventDefault()}}class ng{dom;constructor(e,t){if(this.dom=document.createElement("a"),this.dom.setAttribute("href","#"),this.dom.setAttribute("rel","tag"),this.dom.classList.add("s-tag"),this.dom.innerText=e.attrs.tagName,t?.render){const n=t.render(e.attrs.tagName,"meta-tag"===e.attrs.tagType);if(!n||!n?.link)return void _n("TagLink NodeView","Unable to render taglink due to invalid response from options.renderer: ",n);(n.additionalClasses||[]).forEach((e=>this.dom.classList.add(e))),this.dom.setAttribute("href",n.link),this.dom.setAttribute("title",n.linkTitle)}}}const rg={doc:{content:"block+"},paragraph:{content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:()=>["p",0]},spoiler:{content:"block+",group:"block",attrs:{revealed:{default:!1}},parseDOM:[{tag:"blockquote.spoiler",getAttrs:e=>({revealed:e.classList.contains("is-visible")})}],toDOM:e=>["blockquote",{class:"spoiler"+(e.attrs.revealed?" is-visible":""),"data-spoiler":fc("nodes.spoiler_reveal_text")},0]},blockquote:{content:"block+",group:"block",parseDOM:[{tag:"blockquote"}],toDOM:()=>["blockquote",0]},horizontal_rule:{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["div",["hr"]]},heading:{attrs:{level:{default:1}},content:"inline*",group:"block",defining:!0,parseDOM:[{tag:"h1",attrs:{level:1}},{tag:"h2",attrs:{level:2}},{tag:"h3",attrs:{level:3}},{tag:"h4",attrs:{level:4}},{tag:"h5",attrs:{level:5}},{tag:"h6",attrs:{level:6}}],toDOM:e=>["h"+e.attrs.level,0]},code_block:{content:"text*",group:"block",code:!0,defining:!0,marks:"",attrs:{params:{default:""},autodetectedLanguage:{default:""},isEditingLanguage:{default:!1},suggestions:{default:null}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>({params:e.getAttribute("data-params")||""})}],toDOM:e=>["pre",e.attrs.params?{"data-params":e.attrs.params}:{},["code",0]]},ordered_list:{content:"list_item+",group:"block",attrs:{order:{default:1},tight:{default:!1}},parseDOM:[{tag:"ol",getAttrs:e=>({order:e.hasAttribute("start")?+e.getAttribute("start"):1,tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ol",{start:1===e.attrs.order?null:String(e.attrs.order),"data-tight":e.attrs.tight?"true":null},0]},bullet_list:{content:"list_item+",group:"block",attrs:{tight:{default:!1}},parseDOM:[{tag:"ul",getAttrs:e=>({tight:e.hasAttribute("data-tight")})}],toDOM:e=>["ul",{"data-tight":e.attrs.tight?"true":null},0]},list_item:{content:"block+",defining:!0,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]},text:{group:"inline"},image:{inline:!0,group:"inline",draggable:!0,attrs:{src:{},alt:{default:null},title:{default:null},width:{default:null},height:{default:null},referenceType:{default:""},referenceLabel:{default:""}},parseDOM:[{tag:"img[src]",getAttrs:e=>({src:e.getAttribute("src"),title:e.getAttribute("title"),alt:e.getAttribute("alt"),height:e.getAttribute("height"),width:e.getAttribute("width")})}],toDOM:e=>["img",e.attrs]},hard_break:{inline:!0,group:"inline",selectable:!1,parseDOM:[{tag:"br"}],toDOM:()=>["br"]},pre:{content:"block+",marks:"",group:"block",inline:!1,selectable:!0,toDOM:()=>["pre",0],parseDOM:[{tag:"pre"}]},html_block:{content:"text*",attrs:{content:{default:""}},marks:"_",group:"block",atom:!0,inline:!1,selectable:!0,defining:!0,isolating:!0,parseDOM:[{tag:"div.html_block"}],toDOM:e=>["div",{class:"html_block"},e.attrs.content]},html_inline:{content:"text*",attrs:{content:{default:""}},marks:"_",group:"inline",atom:!0,inline:!0,selectable:!0,defining:!0,isolating:!0,parseDOM:[{tag:"span.html_inline"}],toDOM:e=>["span",{class:"html_inline"},e.attrs.content]},html_block_container:{content:"block*",attrs:{contentOpen:{default:""},contentClose:{default:""}},marks:"_",group:"block",inline:!1,selectable:!0,defining:!0,isolating:!0},softbreak:{content:"inline+",attrs:{},marks:"_",inline:!0,group:"inline",parseDOM:[{tag:"span[softbreak]",getAttrs:e=>({content:e.innerHTML})}],toDOM:()=>["span",{softbreak:""},0]},table:{content:"table_head table_body*",isolating:!0,group:"block",selectable:!1,parseDOM:[{tag:"table"}],toDOM:()=>["div",{class:"s-table-container"},["table",{class:"s-table"},0]]},table_head:{content:"table_row",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"thead"}],toDOM:()=>["thead",0]},table_body:{content:"table_row+",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"tbody"}],toDOM:()=>["tbody",0]},table_row:{content:"(table_cell | table_header)+",isolating:!0,group:"table_block",selectable:!1,parseDOM:[{tag:"tr"}],toDOM:()=>["tr",0]},table_cell:{content:"inline*",isolating:!0,group:"table_block",selectable:!1,attrs:{style:{default:null}},parseDOM:[{tag:"td",getAttrs(e){const t=e.style.textAlign;return t?{style:`text-align: ${t}`}:null}}],toDOM:e=>["td",e.attrs,0]},table_header:{content:"inline*",isolating:!0,group:"table_block",selectable:!1,attrs:{style:{default:null}},parseDOM:[{tag:"th",getAttrs(e){const t=e.style.textAlign;return t?{style:`text-align: ${t}`}:null}}],toDOM:e=>["th",e.attrs,0]},tagLink:{content:"text*",marks:"",atom:!0,inline:!0,group:"inline",attrs:{tagName:{default:null},tagType:{default:"tag"}}}};const ig={em:{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style",getAttrs:e=>"italic"===e&&null}],toDOM:()=>["em"]},strong:{parseDOM:[{tag:"b"},{tag:"strong"},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:()=>["strong"]},link:{inclusive:!1,attrs:{href:{},title:{default:null},referenceType:{default:""},referenceLabel:{default:""}},parseDOM:[{tag:"a[href]",getAttrs:e=>({href:e.getAttribute("href"),title:e.getAttribute("title")})}],toDOM:e=>["a",{href:e.attrs.href,title:e.attrs.title}]},code:{exitable:!0,inclusive:!0,parseDOM:[{tag:"code"}],toDOM:()=>["code"]},strike:og({},"del","s","strike"),kbd:og({exitable:!0,inclusive:!0},"kbd"),sup:og({},"sup"),sub:og({},"sub")};Object.values(ig).forEach((e=>{const t=e.attrs||{};t.markup={default:""},e.attrs=t})),Object.entries(rg).forEach((([e,t])=>{if("text"===e)return;const n=t.attrs||{};n.markup={default:""},t.attrs=n}));const sg={nodes:rg,marks:ig};function og(e,...t){return{...e,toDOM:()=>[t[0],0],parseDOM:t.map((e=>({tag:e})))}}const ag=new Kr({nodes:{doc:sg.nodes.doc,text:sg.nodes.text,paragraph:sg.nodes.paragraph,code_block:sg.nodes.code_block}});function lg(e){return e.types.includes("text/html")?(new globalThis.DOMParser).parseFromString(e.getData("text/html"),"text/html"):null}const cg=new gs({props:{handlePaste(e,t,n){const r=e.state.schema,i=r.nodes.code_block;if(e.state.selection.$from.node().type===i)return!1;const s=function(e,t){let n,r=null;return t||(r=lg(e),r&&(t=Gr.fromSchema(ag).parse(r))),t&&1===t.content.childCount&&"code_block"===t.content.child(0).type.name?n=t.content.child(0).textContent:(r??=lg(e),n=function(e,t){const n=t?.querySelector("code");if(t&&n)return t.body.textContent.trim()!==n.textContent?null:n.textContent;const r=e.getData("text/plain");return r&&(e.getData("vscode-editor-data")||/^([ ]{2,}|\t)/m.test(r))?r:null}(e,r)),n||null}(t.clipboardData,n);if(!s)return!1;const o=i.createChecked({},r.text(s));return e.dispatch(e.state.tr.replaceSelectionWith(o)),!0}}}),hg={};function ug(e,t,n){if(!Tn(e,t))return;const r=[];return e.doc.descendants(((e,t,i)=>{const s=function(e,t,n){if(!t?.isText||!n)return null;const r=t,i=r?.marks.find((e=>"link"===e.type.name))?.attrs?.href;if(!i)return null;for(const s of e)if(s&&(s.textOnly||fg(n))&&(!s.textOnly||t.isText)&&(!s.textOnly||i===r?.textContent)&&s.domainTest&&s.domainTest.test(i))return{url:i,provider:s};return null}(n,e,i);if(s)return r.push({provider:s,pos:t,node:e}),!1})),r}function dg(e,t){const n=ug(e,null,t).map((e=>({content:hg[e.provider.url],href:e.provider.url,isTextOnly:e.provider.provider.textOnly,pos:e.pos})));return pg(e.doc,n)}function pg(e,t){const n=[];return t.forEach((t=>{if(!t.isTextOnly&&t.content)n.push(function(e,t){const n=document.createElement("div");return n.className="js-link-preview-decoration",t&&n.appendChild(t.cloneNode(!0)),pl.widget(e,n,{side:-1})}(t.pos,t.content));else if(null===t.content){const r=e.resolve(t.pos),i=r.posAtIndex(0,r.depth-1);n.push(pl.node(i,i+r.parent.nodeSize,{class:"is-loading js-link-preview-loading",title:"Loading..."}))}})),gl.create(e,n)}function fg(e){const t=e.content.firstChild;if(!t)return!1;const n=1===e.childCount,r="text"===t.type.name,i=t.marks.some((e=>"link"===e.type.name));return n&&r&&i}const mg=new class extends nc{constructor(e){super(e)}setMeta(e,t){const n={callbackData:null,state:t};return e.setMeta(this,n)}setCallbackData(e,t){const n={callbackData:t,state:null};return e.setMeta(this,n)}dispatchCallbackData(e,t){const n=this.setCallbackData(e.state.tr,t);return e.updateState(e.state.apply(n)),n}}("linkPreviews");function gg(e){const t=e||[];return new sc({key:mg,asyncCallback:(e,n)=>function(e,t,n){const r=ug(e.state,t,n);if(!r.length)return Promise.reject(null);const i=r.map((e=>{const t=e.provider.url in hg,n=hg[e.provider.url]||null,r=t?Promise.resolve(n):e.provider.provider.renderer(e.provider.url),i={pos:e.pos,content:n,isTextOnly:e.provider.provider.textOnly,href:e.provider.url},s=r.then((t=>(hg[e.provider.url]=t,{content:t,isTextOnly:e.provider.provider.textOnly,href:e.provider.url,pos:e.pos}))).catch((()=>{const t=document.createElement("div");return t.innerText="Error fetching content.",hg[e.provider.url]=t,Promise.resolve({})}));return i.promise=s,i}));return mg.dispatchCallbackData(e,i),Promise.all(i.map((e=>e.promise)))}(e,n,t),state:{init:(e,n)=>({decorations:dg(n,t)}),apply(e,t){const n=this.getCallbackData(e);if(n){const t=n.map((t=>({...t,pos:e.mapping.map(t.pos)})));return{decorations:pg(e.doc,t),recentlyUpdated:t}}return{decorations:t.decorations.map(e.mapping,e.doc)}}},props:{decorations(e){return this.getState(e).decorations}},appendTransaction(e,t,n){const r=mg.getState(n);if(!r.recentlyUpdated?.length||!r.recentlyUpdated.some((e=>e.isTextOnly)))return null;let i=null;return r.recentlyUpdated.forEach((t=>{if(!t.content?.textContent||!t.isTextOnly)return;let r=t.pos;e.forEach((e=>{r=e.mapping.map(r)}));const s=n.schema,o=s.text(t.content.textContent,[s.marks.link.create({href:t.href,markup:null})]),a=n.doc.nodeAt(r).nodeSize;i=(i||n.tr).replaceWith(r,r+a,o)})),i}})}const bg=new gs({props:{handlePaste(e,t,n){if(!t.clipboardData?.getData("text/html"))return!1;let r=n.content.firstChild;if("paragraph"===r?.type?.name&&1===r.childCount&&(r=r.firstChild),!r||"text"!==r.type.name||r.marks.length)return!1;const{selection:i}=e.state,s=i.$from.nodeBefore;return!!s?.marks.length&&(e.dispatch(e.state.tr.replaceSelectionWith(r,!0)),!0)}}});function yg(e,t,n,r){const{from:i,to:s}=t.selection;return t.doc.nodesBetween(i,s,((t,i)=>{if("spoiler"===t.type.name){const s={...t.attrs};s.revealed=n;let o=!1;return r?.length&&r.forEach((e=>{const t=e.mapping.mapResult(i);if(t.deleted)return o=!0,!1;i=t.pos})),o||(e=e.setNodeMarkup(i,null,s)),!1}})),e}const kg=new gs({appendTransaction(e,t,n){if(!On(t,n))return null;let r=n.tr;return r=yg(r,t,!1,e),r=yg(r,n,!0),r.steps.length?(r=r.setMeta("addToHistory",!1),r):null}}),vg=new gs({key:new ks("tablesPlugin"),props:{transformPasted:e=>new hr(wg(e.content),1,1),handlePaste:(e,t,n)=>!!bp(e.state.schema,e.state.selection)&&(e.dispatch(e.state.tr.insertText(function(e){return e.size&&e.content&&e.content.firstChild?e.content.firstChild.textContent:null}(n))),!0)}});function wg(e){const t=[];return e.forEach((e=>{e.type===e.type.schema.nodes.table?t.push(e.type.schema.nodes.paragraph.createAndFill({},e.type.schema.text(e.textContent))):t.push(e.copy(wg(e.content)))})),ir.fromArray(t)}class xg extends Kn{options;markdownSerializer;markdownParser;finalizedSchema;externalPluginProvider;constructor(e,t,n,r={}){var i;super(),this.options=An(xg.defaultOptions,r),this.externalPluginProvider=n,this.markdownSerializer=(i=this.externalPluginProvider,new qm({...Hm,...Um,...i.markdownProps.serializers.nodes},{...Xm,...i.markdownProps.serializers.marks})),this.finalizedSchema=new Kr(this.externalPluginProvider.getFinalizedSchema(sg)),this.markdownParser=function(e,t,n){const r=function(e,t){const n=new Sm("default",{html:e.html,linkify:!0});return e.tables||n.disable("table"),e.extraEmphasis||n.disable("strikethrough"),n.linkify.set({fuzzyLink:!1,fuzzyEmail:!1}),n.validateLink=e.validateLink,e.html&&n.use((e=>am(e))),n.use(km),e.tagLinks&&n.use(vm,e.tagLinks),n.use(fm),n.use(xm),n.use(hm),n.use(Uf),t?.alterMarkdownIt(n),n}(e,n);return new Em(t,r,{...Cm,...n?.markdownProps.parser})}(this.options.parserFeatures,this.finalizedSchema,this.externalPluginProvider);const s=this.parseContent(t),o=tc(this.externalPluginProvider.getFinalizedMenu(gf(this.finalizedSchema,this.options,Hn.RichText),s.type.schema),this.options.menuParentContainer,Hn.RichText),a=this.options.parserFeatures.tagLinks;var l,c,h,u;this.editorView=new $l((t=>{this.setTargetNodeAttributes(t,this.options),e.appendChild(t)}),{editable:Oc,state:fs.create({doc:s,plugins:[yf(this),Os(),o,zm(this.finalizedSchema,this.options.parserFeatures),gg(this.options.linkPreviewProviders),Mf(this.options.highlighting),bc(this.options.pluginParentContainer),$p(this.options.parserFeatures),Mc(this.options.placeholderText),(c=this.options.imageUpload,h=this.options.parserFeatures.validateLink,u=this.finalizedSchema,_c(c,h,((e,t,n)=>{const r=fc("image_upload.default_image_alt_text"),i=c.wrapImagesInLinks||c.embedImagesAsLinks?[u.marks.link.create({href:t})]:null,s=c.embedImagesAsLinks?u.text(r,i):u.nodes.image.create({src:t,alt:r},null,i);return e.tr.replaceWith(n,n,s)}))),Lc(),kg,...this.externalPluginProvider.plugins.richText,...$m(this.finalizedSchema,this.options.parserFeatures),vg,cg,(l=this.options.parserFeatures,new gs({props:{handlePaste(e,t){if("code_block"===e.state.selection.$from.node().type.name)return!1;const n=t.clipboardData.getData("text/plain");if(!n||!/^.+?:\/\//.test(n)||!l.validateLink(n))return!1;if(function(e){const{from:t,$from:n,to:r,empty:i}=e.selection,s=e.schema;return i?!!s.marks.code.isInSet(e.storedMarks||n.marks()):e.doc.rangeHasMark(t,r,s.marks.code)}(e.state))e.dispatch(e.state.tr.insertText(n));else{let t=n;if(!e.state.tr.selection.empty){const n=e.state.tr.selection;let r="";e.state.doc.nodesBetween(n.from,n.to,((e,t)=>{if(!e.isText)return;const i=Math.max(0,n.from-t),s=Math.max(0,n.to-t);r+=e.textBetween(i,s)})),r&&(t=r)}const r=e.state.schema,i={href:n,markup:t===n?"linkify":null},s=r.text(t,[r.marks.link.create(i)]);e.dispatch(e.state.tr.replaceSelectionWith(s,!1))}return!0}}})),bg]}),nodeViews:{code_block:(e,t,n)=>new Qm(e,t,n,this.options.highlighting?.languages||[],this.options.highlighting?.maxSuggestions),image:(e,t,n)=>new tg(e,t,n),tagLink:e=>new ng(e,a),html_block:function(e){return new Ym(e)},html_block_container:function(e){return new eg(e)},...this.externalPluginProvider.nodeViews},plugins:[]}),Sn("prosemirror rich-text document",this.editorView.state.doc.toJSON().content)}static get defaultOptions(){return{parserFeatures:Wn,editorHelpLink:null,linkPreviewProviders:[],highlighting:null,menuParentContainer:null,imageUpload:{handler:kc},editorPlugins:[]}}parseContent(e){let t;try{t=this.markdownParser.parse(e)}catch(n){_n("RichTextEditorConstructor markdownParser.parse","Catastrophic parse error!",n),t=Fc.fromSchema(this.finalizedSchema).parseCode(e),t=new Ji(t).insert(0,this.finalizedSchema.node("heading",{level:1},this.finalizedSchema.text("WARNING! There was an error parsing the document"))).doc}return t}serializeContent(){return this.markdownSerializer.serialize(this.editorView.state.doc)}}class Cg{target;innerTarget;pluginContainer;backingView;options;internalId;pluginProvider;constructor(e,t,n={}){this.options=An(Cg.defaultOptions,n),this.target=e,this.internalId=Vn(),this.innerTarget=document.createElement("div"),this.target.appendChild(this.innerTarget),this.setupPluginContainer(),this.pluginProvider=new Zn(this.options.editorPlugins,this.options),this.setBackingView(this.options.defaultView,t)}get editorView(){return this.backingView?.editorView}get content(){return this.backingView?.content||""}set content(e){this.backingView.content=e}appendContent(e){this.backingView.appendContent(e)}get document(){return this.editorView.state.doc}get dom(){return this.editorView.dom}get readonly(){return!!this.editorView&&!this.editorView.editable}get currentViewType(){return this.backingView instanceof xg?Hn.RichText:Hn.Commonmark}static get defaultOptions(){const e=["fl-grow1","outline-none","p12","pt6","w100","s-prose","js-editor","ProseMirror"];return{defaultView:Hn.RichText,targetClassList:["ps-relative","z-base","s-textarea","overflow-auto","hmn2","w100","p0","d-flex","fd-column","s-editor-resizable"],elementAttributes:{},parserFeatures:xg.defaultOptions.parserFeatures,commonmarkOptions:{classList:e,preview:{enabled:!1,renderer:null}},richTextOptions:{classList:e}}}focus(){this.backingView.focus()}destroy(){this.backingView.destroy()}setView(e){this.setBackingView(e,null)}enable(){Nc(!1,this.editorView.state,this.editorView.dispatch.bind(null)),this.innerTarget.removeAttribute("readonly"),this.innerTarget.removeAttribute("aria-readonly")}disable(){Nc(!0,this.editorView.state,this.editorView.dispatch.bind(null)),this.innerTarget.setAttribute("readonly",""),this.innerTarget.setAttribute("aria-readonly","true")}reinitialize(e={}){this.options=An(this.options,e),this.setBackingView(this.currentViewType,this.content)}setupPluginContainer(){this.pluginContainer=document.createElement("div"),this.pluginContainer.className=`py6 bg-inherit btr-sm w100 ps-sticky t0 l0 z-nav s-editor-shadow js-plugin-container ${Ln}`;const e=document.createElement("div");if(e.className="d-flex overflow-x-auto ai-center px12 py4 pb0",this.pluginContainer.appendChild(e),this.options.menuParentContainer=()=>e,this.options.commonmarkOptions.preview.enabled){const e=document.createElement("div");this.target.appendChild(e);const t=()=>e;this.options.commonmarkOptions.preview.parentContainer=t}const t=document.createElement("div");this.pluginContainer.appendChild(t),this.options.pluginParentContainer=()=>t,this.innerTarget.appendChild(this.pluginContainer),this.createEditorSwitcher(this.options.defaultView,e),In(this.innerTarget),document.addEventListener("sticky-change",(e=>{const t=e.detail.target;t.classList.contains("js-plugin-container")&&t.classList.toggle("is-stuck",e.detail.stuck)}))}setBackingView(e,t){const n=this.readonly;if(this.backingView&&(t=t||this.backingView.content,this.backingView.destroy()),this.innerTarget.classList.add(...this.options.targetClassList),e===Hn.RichText)this.backingView=new xg(this.innerTarget,t,this.pluginProvider,An(this.options,this.options.richTextOptions));else{if(e!==Hn.Commonmark)throw`Unable to set editor to unknown type: ${Hn[e]}`;this.backingView=new kf(this.innerTarget,t,this.pluginProvider,An(this.options,this.options.commonmarkOptions))}this.backingView.editorView.props.handleDOMEvents={focus:()=>(this.innerTarget.classList.add("bs-ring","bc-theme-secondary-400"),!1),blur:()=>(this.innerTarget.classList.remove("bs-ring","bc-theme-secondary-400"),!1)},n?this.disable():this.enable()}createEditorSwitcher(e,t){const n=this.options.commonmarkOptions.preview,r=n?.enabled&&n?.shownByDefault||!1,i=e===Hn.RichText?"checked":"",s=e!==Hn.Commonmark||r?"":"checked",o=this.options.commonmarkOptions.preview.enabled,a=document.createElement("div");if(a.className="flex--item d-flex ai-center ml24 fc-medium",a.innerHTML=Rn`
      - - - - -
      `,o){const e=r?"checked":"",t=document.createElement("div");t.innerHTML=Rn` - -`,a.firstElementChild.append(...t.children)}a.querySelectorAll(".js-editor-toggle-btn").forEach((e=>{e.addEventListener("change",this.editorSwitcherChangeHandler.bind(this))})),t.appendChild(a)}editorSwitcherChangeHandler(e){e.stopPropagation(),e.preventDefault();const t=e.target,n=+t.dataset.mode,r="true"===t.dataset.preview,i=(s=this.backingView.editorView,ac.previewIsVisible(s));var s;n===this.currentViewType&&r===i||(t.parentElement.querySelectorAll(".js-editor-toggle-btn").forEach((e=>{e.checked=e===t})),this.setView(n),function(e,t){ac.setPreviewVisibility(e,t)}(this.backingView.editorView,r),qn(this.target,"view-change",{editorType:n,previewShown:this.currentViewType!==Hn.RichText&&r}))}}})(),i})())); - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/core.js" -/*!***************************************************!*\ - !*** ../../node_modules/highlight.js/lib/core.js ***! - \***************************************************/ -(module) { - -/* eslint-disable no-multi-assign */ - -function deepFreeze(obj) { - if (obj instanceof Map) { - obj.clear = - obj.delete = - obj.set = - function () { - throw new Error('map is read-only'); - }; - } else if (obj instanceof Set) { - obj.add = - obj.clear = - obj.delete = - function () { - throw new Error('set is read-only'); - }; - } - - // Freeze self - Object.freeze(obj); - - Object.getOwnPropertyNames(obj).forEach((name) => { - const prop = obj[name]; - const type = typeof prop; - - // Freeze prop if it is an object or function and also not already frozen - if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) { - deepFreeze(prop); - } - }); - - return obj; -} - -/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */ -/** @typedef {import('highlight.js').CompiledMode} CompiledMode */ -/** @implements CallbackResponse */ - -class Response { - /** - * @param {CompiledMode} mode - */ - constructor(mode) { - // eslint-disable-next-line no-undefined - if (mode.data === undefined) mode.data = {}; - - this.data = mode.data; - this.isMatchIgnored = false; - } - - ignoreMatch() { - this.isMatchIgnored = true; - } -} - -/** - * @param {string} value - * @returns {string} - */ -function escapeHTML(value) { - return value - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); -} - -/** - * performs a shallow merge of multiple objects into one - * - * @template T - * @param {T} original - * @param {Record[]} objects - * @returns {T} a single new object - */ -function inherit$1(original, ...objects) { - /** @type Record */ - const result = Object.create(null); - - for (const key in original) { - result[key] = original[key]; - } - objects.forEach(function(obj) { - for (const key in obj) { - result[key] = obj[key]; - } - }); - return /** @type {T} */ (result); -} - -/** - * @typedef {object} Renderer - * @property {(text: string) => void} addText - * @property {(node: Node) => void} openNode - * @property {(node: Node) => void} closeNode - * @property {() => string} value - */ - -/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */ -/** @typedef {{walk: (r: Renderer) => void}} Tree */ -/** */ - -const SPAN_CLOSE = ''; - -/** - * Determines if a node needs to be wrapped in - * - * @param {Node} node */ -const emitsWrappingTags = (node) => { - // rarely we can have a sublanguage where language is undefined - // TODO: track down why - return !!node.scope; -}; - -/** - * - * @param {string} name - * @param {{prefix:string}} options - */ -const scopeToCSSClass = (name, { prefix }) => { - // sub-language - if (name.startsWith("language:")) { - return name.replace("language:", "language-"); - } - // tiered scope: comment.line - if (name.includes(".")) { - const pieces = name.split("."); - return [ - `${prefix}${pieces.shift()}`, - ...(pieces.map((x, i) => `${x}${"_".repeat(i + 1)}`)) - ].join(" "); - } - // simple scope - return `${prefix}${name}`; -}; - -/** @type {Renderer} */ -class HTMLRenderer { - /** - * Creates a new HTMLRenderer - * - * @param {Tree} parseTree - the parse tree (must support `walk` API) - * @param {{classPrefix: string}} options - */ - constructor(parseTree, options) { - this.buffer = ""; - this.classPrefix = options.classPrefix; - parseTree.walk(this); - } - - /** - * Adds texts to the output stream - * - * @param {string} text */ - addText(text) { - this.buffer += escapeHTML(text); - } - - /** - * Adds a node open to the output stream (if needed) - * - * @param {Node} node */ - openNode(node) { - if (!emitsWrappingTags(node)) return; - - const className = scopeToCSSClass(node.scope, - { prefix: this.classPrefix }); - this.span(className); - } - - /** - * Adds a node close to the output stream (if needed) - * - * @param {Node} node */ - closeNode(node) { - if (!emitsWrappingTags(node)) return; - - this.buffer += SPAN_CLOSE; - } - - /** - * returns the accumulated buffer - */ - value() { - return this.buffer; - } - - // helpers - - /** - * Builds a span element - * - * @param {string} className */ - span(className) { - this.buffer += ``; - } -} - -/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */ -/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */ -/** @typedef {import('highlight.js').Emitter} Emitter */ -/** */ - -/** @returns {DataNode} */ -const newNode = (opts = {}) => { - /** @type DataNode */ - const result = { children: [] }; - Object.assign(result, opts); - return result; -}; - -class TokenTree { - constructor() { - /** @type DataNode */ - this.rootNode = newNode(); - this.stack = [this.rootNode]; - } - - get top() { - return this.stack[this.stack.length - 1]; - } - - get root() { return this.rootNode; } - - /** @param {Node} node */ - add(node) { - this.top.children.push(node); - } - - /** @param {string} scope */ - openNode(scope) { - /** @type Node */ - const node = newNode({ scope }); - this.add(node); - this.stack.push(node); - } - - closeNode() { - if (this.stack.length > 1) { - return this.stack.pop(); - } - // eslint-disable-next-line no-undefined - return undefined; - } - - closeAllNodes() { - while (this.closeNode()); - } - - toJSON() { - return JSON.stringify(this.rootNode, null, 4); - } - - /** - * @typedef { import("./html_renderer").Renderer } Renderer - * @param {Renderer} builder - */ - walk(builder) { - // this does not - return this.constructor._walk(builder, this.rootNode); - // this works - // return TokenTree._walk(builder, this.rootNode); - } - - /** - * @param {Renderer} builder - * @param {Node} node - */ - static _walk(builder, node) { - if (typeof node === "string") { - builder.addText(node); - } else if (node.children) { - builder.openNode(node); - node.children.forEach((child) => this._walk(builder, child)); - builder.closeNode(node); - } - return builder; - } - - /** - * @param {Node} node - */ - static _collapse(node) { - if (typeof node === "string") return; - if (!node.children) return; - - if (node.children.every(el => typeof el === "string")) { - // node.text = node.children.join(""); - // delete node.children; - node.children = [node.children.join("")]; - } else { - node.children.forEach((child) => { - TokenTree._collapse(child); - }); - } - } -} - -/** - Currently this is all private API, but this is the minimal API necessary - that an Emitter must implement to fully support the parser. - - Minimal interface: - - - addText(text) - - __addSublanguage(emitter, subLanguageName) - - startScope(scope) - - endScope() - - finalize() - - toHTML() - -*/ - -/** - * @implements {Emitter} - */ -class TokenTreeEmitter extends TokenTree { - /** - * @param {*} options - */ - constructor(options) { - super(); - this.options = options; - } - - /** - * @param {string} text - */ - addText(text) { - if (text === "") { return; } - - this.add(text); - } - - /** @param {string} scope */ - startScope(scope) { - this.openNode(scope); - } - - endScope() { - this.closeNode(); - } - - /** - * @param {Emitter & {root: DataNode}} emitter - * @param {string} name - */ - __addSublanguage(emitter, name) { - /** @type DataNode */ - const node = emitter.root; - if (name) node.scope = `language:${name}`; - - this.add(node); - } - - toHTML() { - const renderer = new HTMLRenderer(this, this.options); - return renderer.value(); - } - - finalize() { - this.closeAllNodes(); - return true; - } -} - -/** - * @param {string} value - * @returns {RegExp} - * */ - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function source(re) { - if (!re) return null; - if (typeof re === "string") return re; - - return re.source; -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function lookahead(re) { - return concat('(?=', re, ')'); -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function anyNumberOfTimes(re) { - return concat('(?:', re, ')*'); -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function optional(re) { - return concat('(?:', re, ')?'); -} - -/** - * @param {...(RegExp | string) } args - * @returns {string} - */ -function concat(...args) { - const joined = args.map((x) => source(x)).join(""); - return joined; -} - -/** - * @param { Array } args - * @returns {object} - */ -function stripOptionsFromArgs(args) { - const opts = args[args.length - 1]; - - if (typeof opts === 'object' && opts.constructor === Object) { - args.splice(args.length - 1, 1); - return opts; - } else { - return {}; - } -} - -/** @typedef { {capture?: boolean} } RegexEitherOptions */ - -/** - * Any of the passed expresssions may match - * - * Creates a huge this | this | that | that match - * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args - * @returns {string} - */ -function either(...args) { - /** @type { object & {capture?: boolean} } */ - const opts = stripOptionsFromArgs(args); - const joined = '(' - + (opts.capture ? "" : "?:") - + args.map((x) => source(x)).join("|") + ")"; - return joined; -} - -/** - * @param {RegExp | string} re - * @returns {number} - */ -function countMatchGroups(re) { - return (new RegExp(re.toString() + '|')).exec('').length - 1; -} - -/** - * Does lexeme start with a regular expression match at the beginning - * @param {RegExp} re - * @param {string} lexeme - */ -function startsWith(re, lexeme) { - const match = re && re.exec(lexeme); - return match && match.index === 0; -} - -// BACKREF_RE matches an open parenthesis or backreference. To avoid -// an incorrect parse, it additionally matches the following: -// - [...] elements, where the meaning of parentheses and escapes change -// - other escape sequences, so we do not misparse escape sequences as -// interesting elements -// - non-matching or lookahead parentheses, which do not capture. These -// follow the '(' with a '?'. -const BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; - -// **INTERNAL** Not intended for outside usage -// join logically computes regexps.join(separator), but fixes the -// backreferences so they continue to match. -// it also places each individual regular expression into it's own -// match group, keeping track of the sequencing of those match groups -// is currently an exercise for the caller. :-) -/** - * @param {(string | RegExp)[]} regexps - * @param {{joinWith: string}} opts - * @returns {string} - */ -function _rewriteBackreferences(regexps, { joinWith }) { - let numCaptures = 0; - - return regexps.map((regex) => { - numCaptures += 1; - const offset = numCaptures; - let re = source(regex); - let out = ''; - - while (re.length > 0) { - const match = BACKREF_RE.exec(re); - if (!match) { - out += re; - break; - } - out += re.substring(0, match.index); - re = re.substring(match.index + match[0].length); - if (match[0][0] === '\\' && match[1]) { - // Adjust the backreference. - out += '\\' + String(Number(match[1]) + offset); - } else { - out += match[0]; - if (match[0] === '(') { - numCaptures++; - } - } - } - return out; - }).map(re => `(${re})`).join(joinWith); -} - -/** @typedef {import('highlight.js').Mode} Mode */ -/** @typedef {import('highlight.js').ModeCallback} ModeCallback */ - -// Common regexps -const MATCH_NOTHING_RE = /\b\B/; -const IDENT_RE = '[a-zA-Z]\\w*'; -const UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\w*'; -const NUMBER_RE = '\\b\\d+(\\.\\d+)?'; -const C_NUMBER_RE = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)'; // 0x..., 0..., decimal, float -const BINARY_NUMBER_RE = '\\b(0b[01]+)'; // 0b... -const RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~'; - -/** -* @param { Partial & {binary?: string | RegExp} } opts -*/ -const SHEBANG = (opts = {}) => { - const beginShebang = /^#![ ]*\//; - if (opts.binary) { - opts.begin = concat( - beginShebang, - /.*\b/, - opts.binary, - /\b.*/); - } - return inherit$1({ - scope: 'meta', - begin: beginShebang, - end: /$/, - relevance: 0, - /** @type {ModeCallback} */ - "on:begin": (m, resp) => { - if (m.index !== 0) resp.ignoreMatch(); - } - }, opts); -}; - -// Common modes -const BACKSLASH_ESCAPE = { - begin: '\\\\[\\s\\S]', relevance: 0 -}; -const APOS_STRING_MODE = { - scope: 'string', - begin: '\'', - end: '\'', - illegal: '\\n', - contains: [BACKSLASH_ESCAPE] -}; -const QUOTE_STRING_MODE = { - scope: 'string', - begin: '"', - end: '"', - illegal: '\\n', - contains: [BACKSLASH_ESCAPE] -}; -const PHRASAL_WORDS_MODE = { - begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ -}; -/** - * Creates a comment mode - * - * @param {string | RegExp} begin - * @param {string | RegExp} end - * @param {Mode | {}} [modeOptions] - * @returns {Partial} - */ -const COMMENT = function(begin, end, modeOptions = {}) { - const mode = inherit$1( - { - scope: 'comment', - begin, - end, - contains: [] - }, - modeOptions - ); - mode.contains.push({ - scope: 'doctag', - // hack to avoid the space from being included. the space is necessary to - // match here to prevent the plain text rule below from gobbling up doctags - begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)', - end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/, - excludeBegin: true, - relevance: 0 - }); - const ENGLISH_WORD = either( - // list of common 1 and 2 letter words in English - "I", - "a", - "is", - "so", - "us", - "to", - "at", - "if", - "in", - "it", - "on", - // note: this is not an exhaustive list of contractions, just popular ones - /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc - /[A-Za-z]+[-][a-z]+/, // `no-way`, etc. - /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences - ); - // looking like plain text, more likely to be a comment - mode.contains.push( - { - // TODO: how to include ", (, ) without breaking grammars that use these for - // comment delimiters? - // begin: /[ ]+([()"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()":]?([.][ ]|[ ]|\))){3}/ - // --- - - // this tries to find sequences of 3 english words in a row (without any - // "programming" type syntax) this gives us a strong signal that we've - // TRULY found a comment - vs perhaps scanning with the wrong language. - // It's possible to find something that LOOKS like the start of the - // comment - but then if there is no readable text - good chance it is a - // false match and not a comment. - // - // for a visual example please see: - // https://github.com/highlightjs/highlight.js/issues/2827 - - begin: concat( - /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */ - '(', - ENGLISH_WORD, - /[.]?[:]?([.][ ]|[ ])/, - '){3}') // look for 3 words in a row - } - ); - return mode; -}; -const C_LINE_COMMENT_MODE = COMMENT('//', '$'); -const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/'); -const HASH_COMMENT_MODE = COMMENT('#', '$'); -const NUMBER_MODE = { - scope: 'number', - begin: NUMBER_RE, - relevance: 0 -}; -const C_NUMBER_MODE = { - scope: 'number', - begin: C_NUMBER_RE, - relevance: 0 -}; -const BINARY_NUMBER_MODE = { - scope: 'number', - begin: BINARY_NUMBER_RE, - relevance: 0 -}; -const REGEXP_MODE = { - scope: "regexp", - begin: /\/(?=[^/\n]*\/)/, - end: /\/[gimuy]*/, - contains: [ - BACKSLASH_ESCAPE, - { - begin: /\[/, - end: /\]/, - relevance: 0, - contains: [BACKSLASH_ESCAPE] - } - ] -}; -const TITLE_MODE = { - scope: 'title', - begin: IDENT_RE, - relevance: 0 -}; -const UNDERSCORE_TITLE_MODE = { - scope: 'title', - begin: UNDERSCORE_IDENT_RE, - relevance: 0 -}; -const METHOD_GUARD = { - // excludes method names from keyword processing - begin: '\\.\\s*' + UNDERSCORE_IDENT_RE, - relevance: 0 -}; - -/** - * Adds end same as begin mechanics to a mode - * - * Your mode must include at least a single () match group as that first match - * group is what is used for comparison - * @param {Partial} mode - */ -const END_SAME_AS_BEGIN = function(mode) { - return Object.assign(mode, - { - /** @type {ModeCallback} */ - 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; }, - /** @type {ModeCallback} */ - 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); } - }); -}; - -var MODES = /*#__PURE__*/Object.freeze({ - __proto__: null, - APOS_STRING_MODE: APOS_STRING_MODE, - BACKSLASH_ESCAPE: BACKSLASH_ESCAPE, - BINARY_NUMBER_MODE: BINARY_NUMBER_MODE, - BINARY_NUMBER_RE: BINARY_NUMBER_RE, - COMMENT: COMMENT, - C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE, - C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE, - C_NUMBER_MODE: C_NUMBER_MODE, - C_NUMBER_RE: C_NUMBER_RE, - END_SAME_AS_BEGIN: END_SAME_AS_BEGIN, - HASH_COMMENT_MODE: HASH_COMMENT_MODE, - IDENT_RE: IDENT_RE, - MATCH_NOTHING_RE: MATCH_NOTHING_RE, - METHOD_GUARD: METHOD_GUARD, - NUMBER_MODE: NUMBER_MODE, - NUMBER_RE: NUMBER_RE, - PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE, - QUOTE_STRING_MODE: QUOTE_STRING_MODE, - REGEXP_MODE: REGEXP_MODE, - RE_STARTERS_RE: RE_STARTERS_RE, - SHEBANG: SHEBANG, - TITLE_MODE: TITLE_MODE, - UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE, - UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE -}); - -/** -@typedef {import('highlight.js').CallbackResponse} CallbackResponse -@typedef {import('highlight.js').CompilerExt} CompilerExt -*/ - -// Grammar extensions / plugins -// See: https://github.com/highlightjs/highlight.js/issues/2833 - -// Grammar extensions allow "syntactic sugar" to be added to the grammar modes -// without requiring any underlying changes to the compiler internals. - -// `compileMatch` being the perfect small example of now allowing a grammar -// author to write `match` when they desire to match a single expression rather -// than being forced to use `begin`. The extension then just moves `match` into -// `begin` when it runs. Ie, no features have been added, but we've just made -// the experience of writing (and reading grammars) a little bit nicer. - -// ------ - -// TODO: We need negative look-behind support to do this properly -/** - * Skip a match if it has a preceding dot - * - * This is used for `beginKeywords` to prevent matching expressions such as - * `bob.keyword.do()`. The mode compiler automatically wires this up as a - * special _internal_ 'on:begin' callback for modes with `beginKeywords` - * @param {RegExpMatchArray} match - * @param {CallbackResponse} response - */ -function skipIfHasPrecedingDot(match, response) { - const before = match.input[match.index - 1]; - if (before === ".") { - response.ignoreMatch(); - } -} - -/** - * - * @type {CompilerExt} - */ -function scopeClassName(mode, _parent) { - // eslint-disable-next-line no-undefined - if (mode.className !== undefined) { - mode.scope = mode.className; - delete mode.className; - } -} - -/** - * `beginKeywords` syntactic sugar - * @type {CompilerExt} - */ -function beginKeywords(mode, parent) { - if (!parent) return; - if (!mode.beginKeywords) return; - - // for languages with keywords that include non-word characters checking for - // a word boundary is not sufficient, so instead we check for a word boundary - // or whitespace - this does no harm in any case since our keyword engine - // doesn't allow spaces in keywords anyways and we still check for the boundary - // first - mode.begin = '\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\.)(?=\\b|\\s)'; - mode.__beforeBegin = skipIfHasPrecedingDot; - mode.keywords = mode.keywords || mode.beginKeywords; - delete mode.beginKeywords; - - // prevents double relevance, the keywords themselves provide - // relevance, the mode doesn't need to double it - // eslint-disable-next-line no-undefined - if (mode.relevance === undefined) mode.relevance = 0; -} - -/** - * Allow `illegal` to contain an array of illegal values - * @type {CompilerExt} - */ -function compileIllegal(mode, _parent) { - if (!Array.isArray(mode.illegal)) return; - - mode.illegal = either(...mode.illegal); -} - -/** - * `match` to match a single expression for readability - * @type {CompilerExt} - */ -function compileMatch(mode, _parent) { - if (!mode.match) return; - if (mode.begin || mode.end) throw new Error("begin & end are not supported with match"); - - mode.begin = mode.match; - delete mode.match; -} - -/** - * provides the default 1 relevance to all modes - * @type {CompilerExt} - */ -function compileRelevance(mode, _parent) { - // eslint-disable-next-line no-undefined - if (mode.relevance === undefined) mode.relevance = 1; -} - -// allow beforeMatch to act as a "qualifier" for the match -// the full match begin must be [beforeMatch][begin] -const beforeMatchExt = (mode, parent) => { - if (!mode.beforeMatch) return; - // starts conflicts with endsParent which we need to make sure the child - // rule is not matched multiple times - if (mode.starts) throw new Error("beforeMatch cannot be used with starts"); - - const originalMode = Object.assign({}, mode); - Object.keys(mode).forEach((key) => { delete mode[key]; }); - - mode.keywords = originalMode.keywords; - mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin)); - mode.starts = { - relevance: 0, - contains: [ - Object.assign(originalMode, { endsParent: true }) - ] - }; - mode.relevance = 0; - - delete originalMode.beforeMatch; -}; - -// keywords that should have no default relevance value -const COMMON_KEYWORDS = [ - 'of', - 'and', - 'for', - 'in', - 'not', - 'or', - 'if', - 'then', - 'parent', // common variable name - 'list', // common variable name - 'value' // common variable name -]; - -const DEFAULT_KEYWORD_SCOPE = "keyword"; - -/** - * Given raw keywords from a language definition, compile them. - * - * @param {string | Record | Array} rawKeywords - * @param {boolean} caseInsensitive - */ -function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) { - /** @type {import("highlight.js/private").KeywordDict} */ - const compiledKeywords = Object.create(null); - - // input can be a string of keywords, an array of keywords, or a object with - // named keys representing scopeName (which can then point to a string or array) - if (typeof rawKeywords === 'string') { - compileList(scopeName, rawKeywords.split(" ")); - } else if (Array.isArray(rawKeywords)) { - compileList(scopeName, rawKeywords); - } else { - Object.keys(rawKeywords).forEach(function(scopeName) { - // collapse all our objects back into the parent object - Object.assign( - compiledKeywords, - compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName) - ); - }); - } - return compiledKeywords; - - // --- - - /** - * Compiles an individual list of keywords - * - * Ex: "for if when while|5" - * - * @param {string} scopeName - * @param {Array} keywordList - */ - function compileList(scopeName, keywordList) { - if (caseInsensitive) { - keywordList = keywordList.map(x => x.toLowerCase()); - } - keywordList.forEach(function(keyword) { - const pair = keyword.split('|'); - compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])]; - }); - } -} - -/** - * Returns the proper score for a given keyword - * - * Also takes into account comment keywords, which will be scored 0 UNLESS - * another score has been manually assigned. - * @param {string} keyword - * @param {string} [providedScore] - */ -function scoreForKeyword(keyword, providedScore) { - // manual scores always win over common keywords - // so you can force a score of 1 if you really insist - if (providedScore) { - return Number(providedScore); - } - - return commonKeyword(keyword) ? 0 : 1; -} - -/** - * Determines if a given keyword is common or not - * - * @param {string} keyword */ -function commonKeyword(keyword) { - return COMMON_KEYWORDS.includes(keyword.toLowerCase()); -} - -/* - -For the reasoning behind this please see: -https://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419 - -*/ - -/** - * @type {Record} - */ -const seenDeprecations = {}; - -/** - * @param {string} message - */ -const error = (message) => { - console.error(message); -}; - -/** - * @param {string} message - * @param {any} args - */ -const warn = (message, ...args) => { - console.log(`WARN: ${message}`, ...args); -}; - -/** - * @param {string} version - * @param {string} message - */ -const deprecated = (version, message) => { - if (seenDeprecations[`${version}/${message}`]) return; - - console.log(`Deprecated as of ${version}. ${message}`); - seenDeprecations[`${version}/${message}`] = true; -}; - -/* eslint-disable no-throw-literal */ - -/** -@typedef {import('highlight.js').CompiledMode} CompiledMode -*/ - -const MultiClassError = new Error(); - -/** - * Renumbers labeled scope names to account for additional inner match - * groups that otherwise would break everything. - * - * Lets say we 3 match scopes: - * - * { 1 => ..., 2 => ..., 3 => ... } - * - * So what we need is a clean match like this: - * - * (a)(b)(c) => [ "a", "b", "c" ] - * - * But this falls apart with inner match groups: - * - * (a)(((b)))(c) => ["a", "b", "b", "b", "c" ] - * - * Our scopes are now "out of alignment" and we're repeating `b` 3 times. - * What needs to happen is the numbers are remapped: - * - * { 1 => ..., 2 => ..., 5 => ... } - * - * We also need to know that the ONLY groups that should be output - * are 1, 2, and 5. This function handles this behavior. - * - * @param {CompiledMode} mode - * @param {Array} regexes - * @param {{key: "beginScope"|"endScope"}} opts - */ -function remapScopeNames(mode, regexes, { key }) { - let offset = 0; - const scopeNames = mode[key]; - /** @type Record */ - const emit = {}; - /** @type Record */ - const positions = {}; - - for (let i = 1; i <= regexes.length; i++) { - positions[i + offset] = scopeNames[i]; - emit[i + offset] = true; - offset += countMatchGroups(regexes[i - 1]); - } - // we use _emit to keep track of which match groups are "top-level" to avoid double - // output from inside match groups - mode[key] = positions; - mode[key]._emit = emit; - mode[key]._multi = true; -} - -/** - * @param {CompiledMode} mode - */ -function beginMultiClass(mode) { - if (!Array.isArray(mode.begin)) return; - - if (mode.skip || mode.excludeBegin || mode.returnBegin) { - error("skip, excludeBegin, returnBegin not compatible with beginScope: {}"); - throw MultiClassError; - } - - if (typeof mode.beginScope !== "object" || mode.beginScope === null) { - error("beginScope must be object"); - throw MultiClassError; - } - - remapScopeNames(mode, mode.begin, { key: "beginScope" }); - mode.begin = _rewriteBackreferences(mode.begin, { joinWith: "" }); -} - -/** - * @param {CompiledMode} mode - */ -function endMultiClass(mode) { - if (!Array.isArray(mode.end)) return; - - if (mode.skip || mode.excludeEnd || mode.returnEnd) { - error("skip, excludeEnd, returnEnd not compatible with endScope: {}"); - throw MultiClassError; - } - - if (typeof mode.endScope !== "object" || mode.endScope === null) { - error("endScope must be object"); - throw MultiClassError; - } - - remapScopeNames(mode, mode.end, { key: "endScope" }); - mode.end = _rewriteBackreferences(mode.end, { joinWith: "" }); -} - -/** - * this exists only to allow `scope: {}` to be used beside `match:` - * Otherwise `beginScope` would necessary and that would look weird - - { - match: [ /def/, /\w+/ ] - scope: { 1: "keyword" , 2: "title" } - } - - * @param {CompiledMode} mode - */ -function scopeSugar(mode) { - if (mode.scope && typeof mode.scope === "object" && mode.scope !== null) { - mode.beginScope = mode.scope; - delete mode.scope; - } -} - -/** - * @param {CompiledMode} mode - */ -function MultiClass(mode) { - scopeSugar(mode); - - if (typeof mode.beginScope === "string") { - mode.beginScope = { _wrap: mode.beginScope }; - } - if (typeof mode.endScope === "string") { - mode.endScope = { _wrap: mode.endScope }; - } - - beginMultiClass(mode); - endMultiClass(mode); -} - -/** -@typedef {import('highlight.js').Mode} Mode -@typedef {import('highlight.js').CompiledMode} CompiledMode -@typedef {import('highlight.js').Language} Language -@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin -@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage -*/ - -// compilation - -/** - * Compiles a language definition result - * - * Given the raw result of a language definition (Language), compiles this so - * that it is ready for highlighting code. - * @param {Language} language - * @returns {CompiledLanguage} - */ -function compileLanguage(language) { - /** - * Builds a regex with the case sensitivity of the current language - * - * @param {RegExp | string} value - * @param {boolean} [global] - */ - function langRe(value, global) { - return new RegExp( - source(value), - 'm' - + (language.case_insensitive ? 'i' : '') - + (language.unicodeRegex ? 'u' : '') - + (global ? 'g' : '') - ); - } - - /** - Stores multiple regular expressions and allows you to quickly search for - them all in a string simultaneously - returning the first match. It does - this by creating a huge (a|b|c) regex - each individual item wrapped with () - and joined by `|` - using match groups to track position. When a match is - found checking which position in the array has content allows us to figure - out which of the original regexes / match groups triggered the match. - - The match object itself (the result of `Regex.exec`) is returned but also - enhanced by merging in any meta-data that was registered with the regex. - This is how we keep track of which mode matched, and what type of rule - (`illegal`, `begin`, end, etc). - */ - class MultiRegex { - constructor() { - this.matchIndexes = {}; - // @ts-ignore - this.regexes = []; - this.matchAt = 1; - this.position = 0; - } - - // @ts-ignore - addRule(re, opts) { - opts.position = this.position++; - // @ts-ignore - this.matchIndexes[this.matchAt] = opts; - this.regexes.push([opts, re]); - this.matchAt += countMatchGroups(re) + 1; - } - - compile() { - if (this.regexes.length === 0) { - // avoids the need to check length every time exec is called - // @ts-ignore - this.exec = () => null; - } - const terminators = this.regexes.map(el => el[1]); - this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true); - this.lastIndex = 0; - } - - /** @param {string} s */ - exec(s) { - this.matcherRe.lastIndex = this.lastIndex; - const match = this.matcherRe.exec(s); - if (!match) { return null; } - - // eslint-disable-next-line no-undefined - const i = match.findIndex((el, i) => i > 0 && el !== undefined); - // @ts-ignore - const matchData = this.matchIndexes[i]; - // trim off any earlier non-relevant match groups (ie, the other regex - // match groups that make up the multi-matcher) - match.splice(0, i); - - return Object.assign(match, matchData); - } - } - - /* - Created to solve the key deficiently with MultiRegex - there is no way to - test for multiple matches at a single location. Why would we need to do - that? In the future a more dynamic engine will allow certain matches to be - ignored. An example: if we matched say the 3rd regex in a large group but - decided to ignore it - we'd need to started testing again at the 4th - regex... but MultiRegex itself gives us no real way to do that. - - So what this class creates MultiRegexs on the fly for whatever search - position they are needed. - - NOTE: These additional MultiRegex objects are created dynamically. For most - grammars most of the time we will never actually need anything more than the - first MultiRegex - so this shouldn't have too much overhead. - - Say this is our search group, and we match regex3, but wish to ignore it. - - regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0 - - What we need is a new MultiRegex that only includes the remaining - possibilities: - - regex4 | regex5 ' ie, startAt = 3 - - This class wraps all that complexity up in a simple API... `startAt` decides - where in the array of expressions to start doing the matching. It - auto-increments, so if a match is found at position 2, then startAt will be - set to 3. If the end is reached startAt will return to 0. - - MOST of the time the parser will be setting startAt manually to 0. - */ - class ResumableMultiRegex { - constructor() { - // @ts-ignore - this.rules = []; - // @ts-ignore - this.multiRegexes = []; - this.count = 0; - - this.lastIndex = 0; - this.regexIndex = 0; - } - - // @ts-ignore - getMatcher(index) { - if (this.multiRegexes[index]) return this.multiRegexes[index]; - - const matcher = new MultiRegex(); - this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts)); - matcher.compile(); - this.multiRegexes[index] = matcher; - return matcher; - } - - resumingScanAtSamePosition() { - return this.regexIndex !== 0; - } - - considerAll() { - this.regexIndex = 0; - } - - // @ts-ignore - addRule(re, opts) { - this.rules.push([re, opts]); - if (opts.type === "begin") this.count++; - } - - /** @param {string} s */ - exec(s) { - const m = this.getMatcher(this.regexIndex); - m.lastIndex = this.lastIndex; - let result = m.exec(s); - - // The following is because we have no easy way to say "resume scanning at the - // existing position but also skip the current rule ONLY". What happens is - // all prior rules are also skipped which can result in matching the wrong - // thing. Example of matching "booger": - - // our matcher is [string, "booger", number] - // - // ....booger.... - - // if "booger" is ignored then we'd really need a regex to scan from the - // SAME position for only: [string, number] but ignoring "booger" (if it - // was the first match), a simple resume would scan ahead who knows how - // far looking only for "number", ignoring potential string matches (or - // future "booger" matches that might be valid.) - - // So what we do: We execute two matchers, one resuming at the same - // position, but the second full matcher starting at the position after: - - // /--- resume first regex match here (for [number]) - // |/---- full match here for [string, "booger", number] - // vv - // ....booger.... - - // Which ever results in a match first is then used. So this 3-4 step - // process essentially allows us to say "match at this position, excluding - // a prior rule that was ignored". - // - // 1. Match "booger" first, ignore. Also proves that [string] does non match. - // 2. Resume matching for [number] - // 3. Match at index + 1 for [string, "booger", number] - // 4. If #2 and #3 result in matches, which came first? - if (this.resumingScanAtSamePosition()) { - if (result && result.index === this.lastIndex) ; else { // use the second matcher result - const m2 = this.getMatcher(0); - m2.lastIndex = this.lastIndex + 1; - result = m2.exec(s); - } - } - - if (result) { - this.regexIndex += result.position + 1; - if (this.regexIndex === this.count) { - // wrap-around to considering all matches again - this.considerAll(); - } - } - - return result; - } - } - - /** - * Given a mode, builds a huge ResumableMultiRegex that can be used to walk - * the content and find matches. - * - * @param {CompiledMode} mode - * @returns {ResumableMultiRegex} - */ - function buildModeRegex(mode) { - const mm = new ResumableMultiRegex(); - - mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: "begin" })); - - if (mode.terminatorEnd) { - mm.addRule(mode.terminatorEnd, { type: "end" }); - } - if (mode.illegal) { - mm.addRule(mode.illegal, { type: "illegal" }); - } - - return mm; - } - - /** skip vs abort vs ignore - * - * @skip - The mode is still entered and exited normally (and contains rules apply), - * but all content is held and added to the parent buffer rather than being - * output when the mode ends. Mostly used with `sublanguage` to build up - * a single large buffer than can be parsed by sublanguage. - * - * - The mode begin ands ends normally. - * - Content matched is added to the parent mode buffer. - * - The parser cursor is moved forward normally. - * - * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it - * never matched) but DOES NOT continue to match subsequent `contains` - * modes. Abort is bad/suboptimal because it can result in modes - * farther down not getting applied because an earlier rule eats the - * content but then aborts. - * - * - The mode does not begin. - * - Content matched by `begin` is added to the mode buffer. - * - The parser cursor is moved forward accordingly. - * - * @ignore - Ignores the mode (as if it never matched) and continues to match any - * subsequent `contains` modes. Ignore isn't technically possible with - * the current parser implementation. - * - * - The mode does not begin. - * - Content matched by `begin` is ignored. - * - The parser cursor is not moved forward. - */ - - /** - * Compiles an individual mode - * - * This can raise an error if the mode contains certain detectable known logic - * issues. - * @param {Mode} mode - * @param {CompiledMode | null} [parent] - * @returns {CompiledMode | never} - */ - function compileMode(mode, parent) { - const cmode = /** @type CompiledMode */ (mode); - if (mode.isCompiled) return cmode; - - [ - scopeClassName, - // do this early so compiler extensions generally don't have to worry about - // the distinction between match/begin - compileMatch, - MultiClass, - beforeMatchExt - ].forEach(ext => ext(mode, parent)); - - language.compilerExtensions.forEach(ext => ext(mode, parent)); - - // __beforeBegin is considered private API, internal use only - mode.__beforeBegin = null; - - [ - beginKeywords, - // do this later so compiler extensions that come earlier have access to the - // raw array if they wanted to perhaps manipulate it, etc. - compileIllegal, - // default to 1 relevance if not specified - compileRelevance - ].forEach(ext => ext(mode, parent)); - - mode.isCompiled = true; - - let keywordPattern = null; - if (typeof mode.keywords === "object" && mode.keywords.$pattern) { - // we need a copy because keywords might be compiled multiple times - // so we can't go deleting $pattern from the original on the first - // pass - mode.keywords = Object.assign({}, mode.keywords); - keywordPattern = mode.keywords.$pattern; - delete mode.keywords.$pattern; - } - keywordPattern = keywordPattern || /\w+/; - - if (mode.keywords) { - mode.keywords = compileKeywords(mode.keywords, language.case_insensitive); - } - - cmode.keywordPatternRe = langRe(keywordPattern, true); - - if (parent) { - if (!mode.begin) mode.begin = /\B|\b/; - cmode.beginRe = langRe(cmode.begin); - if (!mode.end && !mode.endsWithParent) mode.end = /\B|\b/; - if (mode.end) cmode.endRe = langRe(cmode.end); - cmode.terminatorEnd = source(cmode.end) || ''; - if (mode.endsWithParent && parent.terminatorEnd) { - cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd; - } - } - if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal)); - if (!mode.contains) mode.contains = []; - - mode.contains = [].concat(...mode.contains.map(function(c) { - return expandOrCloneMode(c === 'self' ? mode : c); - })); - mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); }); - - if (mode.starts) { - compileMode(mode.starts, parent); - } - - cmode.matcher = buildModeRegex(cmode); - return cmode; - } - - if (!language.compilerExtensions) language.compilerExtensions = []; - - // self is not valid at the top-level - if (language.contains && language.contains.includes('self')) { - throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation."); - } - - // we need a null object, which inherit will guarantee - language.classNameAliases = inherit$1(language.classNameAliases || {}); - - return compileMode(/** @type Mode */ (language)); -} - -/** - * Determines if a mode has a dependency on it's parent or not - * - * If a mode does have a parent dependency then often we need to clone it if - * it's used in multiple places so that each copy points to the correct parent, - * where-as modes without a parent can often safely be re-used at the bottom of - * a mode chain. - * - * @param {Mode | null} mode - * @returns {boolean} - is there a dependency on the parent? - * */ -function dependencyOnParent(mode) { - if (!mode) return false; - - return mode.endsWithParent || dependencyOnParent(mode.starts); -} - -/** - * Expands a mode or clones it if necessary - * - * This is necessary for modes with parental dependenceis (see notes on - * `dependencyOnParent`) and for nodes that have `variants` - which must then be - * exploded into their own individual modes at compile time. - * - * @param {Mode} mode - * @returns {Mode | Mode[]} - * */ -function expandOrCloneMode(mode) { - if (mode.variants && !mode.cachedVariants) { - mode.cachedVariants = mode.variants.map(function(variant) { - return inherit$1(mode, { variants: null }, variant); - }); - } - - // EXPAND - // if we have variants then essentially "replace" the mode with the variants - // this happens in compileMode, where this function is called from - if (mode.cachedVariants) { - return mode.cachedVariants; - } - - // CLONE - // if we have dependencies on parents then we need a unique - // instance of ourselves, so we can be reused with many - // different parents without issue - if (dependencyOnParent(mode)) { - return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null }); - } - - if (Object.isFrozen(mode)) { - return inherit$1(mode); - } - - // no special dependency issues, just return ourselves - return mode; -} - -var version = "11.11.1"; - -class HTMLInjectionError extends Error { - constructor(reason, html) { - super(reason); - this.name = "HTMLInjectionError"; - this.html = html; - } -} - -/* -Syntax highlighting with language autodetection. -https://highlightjs.org/ -*/ - - - -/** -@typedef {import('highlight.js').Mode} Mode -@typedef {import('highlight.js').CompiledMode} CompiledMode -@typedef {import('highlight.js').CompiledScope} CompiledScope -@typedef {import('highlight.js').Language} Language -@typedef {import('highlight.js').HLJSApi} HLJSApi -@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin -@typedef {import('highlight.js').PluginEvent} PluginEvent -@typedef {import('highlight.js').HLJSOptions} HLJSOptions -@typedef {import('highlight.js').LanguageFn} LanguageFn -@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement -@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext -@typedef {import('highlight.js/private').MatchType} MatchType -@typedef {import('highlight.js/private').KeywordData} KeywordData -@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch -@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError -@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult -@typedef {import('highlight.js').HighlightOptions} HighlightOptions -@typedef {import('highlight.js').HighlightResult} HighlightResult -*/ - - -const escape = escapeHTML; -const inherit = inherit$1; -const NO_MATCH = Symbol("nomatch"); -const MAX_KEYWORD_HITS = 7; - -/** - * @param {any} hljs - object that is extended (legacy) - * @returns {HLJSApi} - */ -const HLJS = function(hljs) { - // Global internal variables used within the highlight.js library. - /** @type {Record} */ - const languages = Object.create(null); - /** @type {Record} */ - const aliases = Object.create(null); - /** @type {HLJSPlugin[]} */ - const plugins = []; - - // safe/production mode - swallows more errors, tries to keep running - // even if a single syntax or parse hits a fatal error - let SAFE_MODE = true; - const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?"; - /** @type {Language} */ - const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] }; - - // Global options used when within external APIs. This is modified when - // calling the `hljs.configure` function. - /** @type HLJSOptions */ - let options = { - ignoreUnescapedHTML: false, - throwUnescapedHTML: false, - noHighlightRe: /^(no-?highlight)$/i, - languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, - classPrefix: 'hljs-', - cssSelector: 'pre code', - languages: null, - // beta configuration options, subject to change, welcome to discuss - // https://github.com/highlightjs/highlight.js/issues/1086 - __emitter: TokenTreeEmitter - }; - - /* Utility functions */ - - /** - * Tests a language name to see if highlighting should be skipped - * @param {string} languageName - */ - function shouldNotHighlight(languageName) { - return options.noHighlightRe.test(languageName); - } - - /** - * @param {HighlightedHTMLElement} block - the HTML element to determine language for - */ - function blockLanguage(block) { - let classes = block.className + ' '; - - classes += block.parentNode ? block.parentNode.className : ''; - - // language-* takes precedence over non-prefixed class names. - const match = options.languageDetectRe.exec(classes); - if (match) { - const language = getLanguage(match[1]); - if (!language) { - warn(LANGUAGE_NOT_FOUND.replace("{}", match[1])); - warn("Falling back to no-highlight mode for this block.", block); - } - return language ? match[1] : 'no-highlight'; - } - - return classes - .split(/\s+/) - .find((_class) => shouldNotHighlight(_class) || getLanguage(_class)); - } - - /** - * Core highlighting function. - * - * OLD API - * highlight(lang, code, ignoreIllegals, continuation) - * - * NEW API - * highlight(code, {lang, ignoreIllegals}) - * - * @param {string} codeOrLanguageName - the language to use for highlighting - * @param {string | HighlightOptions} optionsOrCode - the code to highlight - * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail - * - * @returns {HighlightResult} Result - an object that represents the result - * @property {string} language - the language name - * @property {number} relevance - the relevance score - * @property {string} value - the highlighted HTML code - * @property {string} code - the original raw code - * @property {CompiledMode} top - top of the current mode stack - * @property {boolean} illegal - indicates whether any illegal matches were found - */ - function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) { - let code = ""; - let languageName = ""; - if (typeof optionsOrCode === "object") { - code = codeOrLanguageName; - ignoreIllegals = optionsOrCode.ignoreIllegals; - languageName = optionsOrCode.language; - } else { - // old API - deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated."); - deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"); - languageName = codeOrLanguageName; - code = optionsOrCode; - } - - // https://github.com/highlightjs/highlight.js/issues/3149 - // eslint-disable-next-line no-undefined - if (ignoreIllegals === undefined) { ignoreIllegals = true; } - - /** @type {BeforeHighlightContext} */ - const context = { - code, - language: languageName - }; - // the plugin can change the desired language or the code to be highlighted - // just be changing the object it was passed - fire("before:highlight", context); - - // a before plugin can usurp the result completely by providing it's own - // in which case we don't even need to call highlight - const result = context.result - ? context.result - : _highlight(context.language, context.code, ignoreIllegals); - - result.code = context.code; - // the plugin can change anything in result to suite it - fire("after:highlight", result); - - return result; - } - - /** - * private highlight that's used internally and does not fire callbacks - * - * @param {string} languageName - the language to use for highlighting - * @param {string} codeToHighlight - the code to highlight - * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail - * @param {CompiledMode?} [continuation] - current continuation mode, if any - * @returns {HighlightResult} - result of the highlight operation - */ - function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) { - const keywordHits = Object.create(null); - - /** - * Return keyword data if a match is a keyword - * @param {CompiledMode} mode - current mode - * @param {string} matchText - the textual match - * @returns {KeywordData | false} - */ - function keywordData(mode, matchText) { - return mode.keywords[matchText]; - } - - function processKeywords() { - if (!top.keywords) { - emitter.addText(modeBuffer); - return; - } - - let lastIndex = 0; - top.keywordPatternRe.lastIndex = 0; - let match = top.keywordPatternRe.exec(modeBuffer); - let buf = ""; - - while (match) { - buf += modeBuffer.substring(lastIndex, match.index); - const word = language.case_insensitive ? match[0].toLowerCase() : match[0]; - const data = keywordData(top, word); - if (data) { - const [kind, keywordRelevance] = data; - emitter.addText(buf); - buf = ""; - - keywordHits[word] = (keywordHits[word] || 0) + 1; - if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance; - if (kind.startsWith("_")) { - // _ implied for relevance only, do not highlight - // by applying a class name - buf += match[0]; - } else { - const cssClass = language.classNameAliases[kind] || kind; - emitKeyword(match[0], cssClass); - } - } else { - buf += match[0]; - } - lastIndex = top.keywordPatternRe.lastIndex; - match = top.keywordPatternRe.exec(modeBuffer); - } - buf += modeBuffer.substring(lastIndex); - emitter.addText(buf); - } - - function processSubLanguage() { - if (modeBuffer === "") return; - /** @type HighlightResult */ - let result = null; - - if (typeof top.subLanguage === 'string') { - if (!languages[top.subLanguage]) { - emitter.addText(modeBuffer); - return; - } - result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]); - continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top); - } else { - result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null); - } - - // Counting embedded language score towards the host language may be disabled - // with zeroing the containing mode relevance. Use case in point is Markdown that - // allows XML everywhere and makes every XML snippet to have a much larger Markdown - // score. - if (top.relevance > 0) { - relevance += result.relevance; - } - emitter.__addSublanguage(result._emitter, result.language); - } - - function processBuffer() { - if (top.subLanguage != null) { - processSubLanguage(); - } else { - processKeywords(); - } - modeBuffer = ''; - } - - /** - * @param {string} text - * @param {string} scope - */ - function emitKeyword(keyword, scope) { - if (keyword === "") return; - - emitter.startScope(scope); - emitter.addText(keyword); - emitter.endScope(); - } - - /** - * @param {CompiledScope} scope - * @param {RegExpMatchArray} match - */ - function emitMultiClass(scope, match) { - let i = 1; - const max = match.length - 1; - while (i <= max) { - if (!scope._emit[i]) { i++; continue; } - const klass = language.classNameAliases[scope[i]] || scope[i]; - const text = match[i]; - if (klass) { - emitKeyword(text, klass); - } else { - modeBuffer = text; - processKeywords(); - modeBuffer = ""; - } - i++; - } - } - - /** - * @param {CompiledMode} mode - new mode to start - * @param {RegExpMatchArray} match - */ - function startNewMode(mode, match) { - if (mode.scope && typeof mode.scope === "string") { - emitter.openNode(language.classNameAliases[mode.scope] || mode.scope); - } - if (mode.beginScope) { - // beginScope just wraps the begin match itself in a scope - if (mode.beginScope._wrap) { - emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap); - modeBuffer = ""; - } else if (mode.beginScope._multi) { - // at this point modeBuffer should just be the match - emitMultiClass(mode.beginScope, match); - modeBuffer = ""; - } - } - - top = Object.create(mode, { parent: { value: top } }); - return top; - } - - /** - * @param {CompiledMode } mode - the mode to potentially end - * @param {RegExpMatchArray} match - the latest match - * @param {string} matchPlusRemainder - match plus remainder of content - * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode - */ - function endOfMode(mode, match, matchPlusRemainder) { - let matched = startsWith(mode.endRe, matchPlusRemainder); - - if (matched) { - if (mode["on:end"]) { - const resp = new Response(mode); - mode["on:end"](match, resp); - if (resp.isMatchIgnored) matched = false; - } - - if (matched) { - while (mode.endsParent && mode.parent) { - mode = mode.parent; - } - return mode; - } - } - // even if on:end fires an `ignore` it's still possible - // that we might trigger the end node because of a parent mode - if (mode.endsWithParent) { - return endOfMode(mode.parent, match, matchPlusRemainder); - } - } - - /** - * Handle matching but then ignoring a sequence of text - * - * @param {string} lexeme - string containing full match text - */ - function doIgnore(lexeme) { - if (top.matcher.regexIndex === 0) { - // no more regexes to potentially match here, so we move the cursor forward one - // space - modeBuffer += lexeme[0]; - return 1; - } else { - // no need to move the cursor, we still have additional regexes to try and - // match at this very spot - resumeScanAtSamePosition = true; - return 0; - } - } - - /** - * Handle the start of a new potential mode match - * - * @param {EnhancedMatch} match - the current match - * @returns {number} how far to advance the parse cursor - */ - function doBeginMatch(match) { - const lexeme = match[0]; - const newMode = match.rule; - - const resp = new Response(newMode); - // first internal before callbacks, then the public ones - const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]]; - for (const cb of beforeCallbacks) { - if (!cb) continue; - cb(match, resp); - if (resp.isMatchIgnored) return doIgnore(lexeme); - } - - if (newMode.skip) { - modeBuffer += lexeme; - } else { - if (newMode.excludeBegin) { - modeBuffer += lexeme; - } - processBuffer(); - if (!newMode.returnBegin && !newMode.excludeBegin) { - modeBuffer = lexeme; - } - } - startNewMode(newMode, match); - return newMode.returnBegin ? 0 : lexeme.length; - } - - /** - * Handle the potential end of mode - * - * @param {RegExpMatchArray} match - the current match - */ - function doEndMatch(match) { - const lexeme = match[0]; - const matchPlusRemainder = codeToHighlight.substring(match.index); - - const endMode = endOfMode(top, match, matchPlusRemainder); - if (!endMode) { return NO_MATCH; } - - const origin = top; - if (top.endScope && top.endScope._wrap) { - processBuffer(); - emitKeyword(lexeme, top.endScope._wrap); - } else if (top.endScope && top.endScope._multi) { - processBuffer(); - emitMultiClass(top.endScope, match); - } else if (origin.skip) { - modeBuffer += lexeme; - } else { - if (!(origin.returnEnd || origin.excludeEnd)) { - modeBuffer += lexeme; - } - processBuffer(); - if (origin.excludeEnd) { - modeBuffer = lexeme; - } - } - do { - if (top.scope) { - emitter.closeNode(); - } - if (!top.skip && !top.subLanguage) { - relevance += top.relevance; - } - top = top.parent; - } while (top !== endMode.parent); - if (endMode.starts) { - startNewMode(endMode.starts, match); - } - return origin.returnEnd ? 0 : lexeme.length; - } - - function processContinuations() { - const list = []; - for (let current = top; current !== language; current = current.parent) { - if (current.scope) { - list.unshift(current.scope); - } - } - list.forEach(item => emitter.openNode(item)); - } - - /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */ - let lastMatch = {}; - - /** - * Process an individual match - * - * @param {string} textBeforeMatch - text preceding the match (since the last match) - * @param {EnhancedMatch} [match] - the match itself - */ - function processLexeme(textBeforeMatch, match) { - const lexeme = match && match[0]; - - // add non-matched text to the current mode buffer - modeBuffer += textBeforeMatch; - - if (lexeme == null) { - processBuffer(); - return 0; - } - - // we've found a 0 width match and we're stuck, so we need to advance - // this happens when we have badly behaved rules that have optional matchers to the degree that - // sometimes they can end up matching nothing at all - // Ref: https://github.com/highlightjs/highlight.js/issues/2140 - if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") { - // spit the "skipped" character that our regex choked on back into the output sequence - modeBuffer += codeToHighlight.slice(match.index, match.index + 1); - if (!SAFE_MODE) { - /** @type {AnnotatedError} */ - const err = new Error(`0 width match regex (${languageName})`); - err.languageName = languageName; - err.badRule = lastMatch.rule; - throw err; - } - return 1; - } - lastMatch = match; - - if (match.type === "begin") { - return doBeginMatch(match); - } else if (match.type === "illegal" && !ignoreIllegals) { - // illegal match, we do not continue processing - /** @type {AnnotatedError} */ - const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.scope || '') + '"'); - err.mode = top; - throw err; - } else if (match.type === "end") { - const processed = doEndMatch(match); - if (processed !== NO_MATCH) { - return processed; - } - } - - // edge case for when illegal matches $ (end of line) which is technically - // a 0 width match but not a begin/end match so it's not caught by the - // first handler (when ignoreIllegals is true) - if (match.type === "illegal" && lexeme === "") { - // advance so we aren't stuck in an infinite loop - modeBuffer += "\n"; - return 1; - } - - // infinite loops are BAD, this is a last ditch catch all. if we have a - // decent number of iterations yet our index (cursor position in our - // parsing) still 3x behind our index then something is very wrong - // so we bail - if (iterations > 100000 && iterations > match.index * 3) { - const err = new Error('potential infinite loop, way more iterations than matches'); - throw err; - } - - /* - Why might be find ourselves here? An potential end match that was - triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH. - (this could be because a callback requests the match be ignored, etc) - - This causes no real harm other than stopping a few times too many. - */ - - modeBuffer += lexeme; - return lexeme.length; - } - - const language = getLanguage(languageName); - if (!language) { - error(LANGUAGE_NOT_FOUND.replace("{}", languageName)); - throw new Error('Unknown language: "' + languageName + '"'); - } - - const md = compileLanguage(language); - let result = ''; - /** @type {CompiledMode} */ - let top = continuation || md; - /** @type Record */ - const continuations = {}; // keep continuations for sub-languages - const emitter = new options.__emitter(options); - processContinuations(); - let modeBuffer = ''; - let relevance = 0; - let index = 0; - let iterations = 0; - let resumeScanAtSamePosition = false; - - try { - if (!language.__emitTokens) { - top.matcher.considerAll(); - - for (;;) { - iterations++; - if (resumeScanAtSamePosition) { - // only regexes not matched previously will now be - // considered for a potential match - resumeScanAtSamePosition = false; - } else { - top.matcher.considerAll(); - } - top.matcher.lastIndex = index; - - const match = top.matcher.exec(codeToHighlight); - // console.log("match", match[0], match.rule && match.rule.begin) - - if (!match) break; - - const beforeMatch = codeToHighlight.substring(index, match.index); - const processedCount = processLexeme(beforeMatch, match); - index = match.index + processedCount; - } - processLexeme(codeToHighlight.substring(index)); - } else { - language.__emitTokens(codeToHighlight, emitter); - } - - emitter.finalize(); - result = emitter.toHTML(); - - return { - language: languageName, - value: result, - relevance, - illegal: false, - _emitter: emitter, - _top: top - }; - } catch (err) { - if (err.message && err.message.includes('Illegal')) { - return { - language: languageName, - value: escape(codeToHighlight), - illegal: true, - relevance: 0, - _illegalBy: { - message: err.message, - index, - context: codeToHighlight.slice(index - 100, index + 100), - mode: err.mode, - resultSoFar: result - }, - _emitter: emitter - }; - } else if (SAFE_MODE) { - return { - language: languageName, - value: escape(codeToHighlight), - illegal: false, - relevance: 0, - errorRaised: err, - _emitter: emitter, - _top: top - }; - } else { - throw err; - } - } - } - - /** - * returns a valid highlight result, without actually doing any actual work, - * auto highlight starts with this and it's possible for small snippets that - * auto-detection may not find a better match - * @param {string} code - * @returns {HighlightResult} - */ - function justTextHighlightResult(code) { - const result = { - value: escape(code), - illegal: false, - relevance: 0, - _top: PLAINTEXT_LANGUAGE, - _emitter: new options.__emitter(options) - }; - result._emitter.addText(code); - return result; - } - - /** - Highlighting with language detection. Accepts a string with the code to - highlight. Returns an object with the following properties: - - - language (detected language) - - relevance (int) - - value (an HTML string with highlighting markup) - - secondBest (object with the same structure for second-best heuristically - detected language, may be absent) - - @param {string} code - @param {Array} [languageSubset] - @returns {AutoHighlightResult} - */ - function highlightAuto(code, languageSubset) { - languageSubset = languageSubset || options.languages || Object.keys(languages); - const plaintext = justTextHighlightResult(code); - - const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name => - _highlight(name, code, false) - ); - results.unshift(plaintext); // plaintext is always an option - - const sorted = results.sort((a, b) => { - // sort base on relevance - if (a.relevance !== b.relevance) return b.relevance - a.relevance; - - // always award the tie to the base language - // ie if C++ and Arduino are tied, it's more likely to be C++ - if (a.language && b.language) { - if (getLanguage(a.language).supersetOf === b.language) { - return 1; - } else if (getLanguage(b.language).supersetOf === a.language) { - return -1; - } - } - - // otherwise say they are equal, which has the effect of sorting on - // relevance while preserving the original ordering - which is how ties - // have historically been settled, ie the language that comes first always - // wins in the case of a tie - return 0; - }); - - const [best, secondBest] = sorted; - - /** @type {AutoHighlightResult} */ - const result = best; - result.secondBest = secondBest; - - return result; - } - - /** - * Builds new class name for block given the language name - * - * @param {HTMLElement} element - * @param {string} [currentLang] - * @param {string} [resultLang] - */ - function updateClassName(element, currentLang, resultLang) { - const language = (currentLang && aliases[currentLang]) || resultLang; - - element.classList.add("hljs"); - element.classList.add(`language-${language}`); - } - - /** - * Applies highlighting to a DOM node containing code. - * - * @param {HighlightedHTMLElement} element - the HTML element to highlight - */ - function highlightElement(element) { - /** @type HTMLElement */ - let node = null; - const language = blockLanguage(element); - - if (shouldNotHighlight(language)) return; - - fire("before:highlightElement", - { el: element, language }); - - if (element.dataset.highlighted) { - console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", element); - return; - } - - // we should be all text, no child nodes (unescaped HTML) - this is possibly - // an HTML injection attack - it's likely too late if this is already in - // production (the code has likely already done its damage by the time - // we're seeing it)... but we yell loudly about this so that hopefully it's - // more likely to be caught in development before making it to production - if (element.children.length > 0) { - if (!options.ignoreUnescapedHTML) { - console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."); - console.warn("https://github.com/highlightjs/highlight.js/wiki/security"); - console.warn("The element with unescaped HTML:"); - console.warn(element); - } - if (options.throwUnescapedHTML) { - const err = new HTMLInjectionError( - "One of your code blocks includes unescaped HTML.", - element.innerHTML - ); - throw err; - } - } - - node = element; - const text = node.textContent; - const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text); - - element.innerHTML = result.value; - element.dataset.highlighted = "yes"; - updateClassName(element, language, result.language); - element.result = { - language: result.language, - // TODO: remove with version 11.0 - re: result.relevance, - relevance: result.relevance - }; - if (result.secondBest) { - element.secondBest = { - language: result.secondBest.language, - relevance: result.secondBest.relevance - }; - } - - fire("after:highlightElement", { el: element, result, text }); - } - - /** - * Updates highlight.js global options with the passed options - * - * @param {Partial} userOptions - */ - function configure(userOptions) { - options = inherit(options, userOptions); - } - - // TODO: remove v12, deprecated - const initHighlighting = () => { - highlightAll(); - deprecated("10.6.0", "initHighlighting() deprecated. Use highlightAll() now."); - }; - - // TODO: remove v12, deprecated - function initHighlightingOnLoad() { - highlightAll(); - deprecated("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now."); - } - - let wantsHighlight = false; - - /** - * auto-highlights all pre>code elements on the page - */ - function highlightAll() { - function boot() { - // if a highlight was requested before DOM was loaded, do now - highlightAll(); - } - - // if we are called too early in the loading process - if (document.readyState === "loading") { - // make sure the event listener is only added once - if (!wantsHighlight) { - window.addEventListener('DOMContentLoaded', boot, false); - } - wantsHighlight = true; - return; - } - - const blocks = document.querySelectorAll(options.cssSelector); - blocks.forEach(highlightElement); - } - - /** - * Register a language grammar module - * - * @param {string} languageName - * @param {LanguageFn} languageDefinition - */ - function registerLanguage(languageName, languageDefinition) { - let lang = null; - try { - lang = languageDefinition(hljs); - } catch (error$1) { - error("Language definition for '{}' could not be registered.".replace("{}", languageName)); - // hard or soft error - if (!SAFE_MODE) { throw error$1; } else { error(error$1); } - // languages that have serious errors are replaced with essentially a - // "plaintext" stand-in so that the code blocks will still get normal - // css classes applied to them - and one bad language won't break the - // entire highlighter - lang = PLAINTEXT_LANGUAGE; - } - // give it a temporary name if it doesn't have one in the meta-data - if (!lang.name) lang.name = languageName; - languages[languageName] = lang; - lang.rawDefinition = languageDefinition.bind(null, hljs); - - if (lang.aliases) { - registerAliases(lang.aliases, { languageName }); - } - } - - /** - * Remove a language grammar module - * - * @param {string} languageName - */ - function unregisterLanguage(languageName) { - delete languages[languageName]; - for (const alias of Object.keys(aliases)) { - if (aliases[alias] === languageName) { - delete aliases[alias]; - } - } - } - - /** - * @returns {string[]} List of language internal names - */ - function listLanguages() { - return Object.keys(languages); - } - - /** - * @param {string} name - name of the language to retrieve - * @returns {Language | undefined} - */ - function getLanguage(name) { - name = (name || '').toLowerCase(); - return languages[name] || languages[aliases[name]]; - } - - /** - * - * @param {string|string[]} aliasList - single alias or list of aliases - * @param {{languageName: string}} opts - */ - function registerAliases(aliasList, { languageName }) { - if (typeof aliasList === 'string') { - aliasList = [aliasList]; - } - aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; }); - } - - /** - * Determines if a given language has auto-detection enabled - * @param {string} name - name of the language - */ - function autoDetection(name) { - const lang = getLanguage(name); - return lang && !lang.disableAutodetect; - } - - /** - * Upgrades the old highlightBlock plugins to the new - * highlightElement API - * @param {HLJSPlugin} plugin - */ - function upgradePluginAPI(plugin) { - // TODO: remove with v12 - if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) { - plugin["before:highlightElement"] = (data) => { - plugin["before:highlightBlock"]( - Object.assign({ block: data.el }, data) - ); - }; - } - if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) { - plugin["after:highlightElement"] = (data) => { - plugin["after:highlightBlock"]( - Object.assign({ block: data.el }, data) - ); - }; - } - } - - /** - * @param {HLJSPlugin} plugin - */ - function addPlugin(plugin) { - upgradePluginAPI(plugin); - plugins.push(plugin); - } - - /** - * @param {HLJSPlugin} plugin - */ - function removePlugin(plugin) { - const index = plugins.indexOf(plugin); - if (index !== -1) { - plugins.splice(index, 1); - } - } - - /** - * - * @param {PluginEvent} event - * @param {any} args - */ - function fire(event, args) { - const cb = event; - plugins.forEach(function(plugin) { - if (plugin[cb]) { - plugin[cb](args); - } - }); - } - - /** - * DEPRECATED - * @param {HighlightedHTMLElement} el - */ - function deprecateHighlightBlock(el) { - deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0"); - deprecated("10.7.0", "Please use highlightElement now."); - - return highlightElement(el); - } - - /* Interface definition */ - Object.assign(hljs, { - highlight, - highlightAuto, - highlightAll, - highlightElement, - // TODO: Remove with v12 API - highlightBlock: deprecateHighlightBlock, - configure, - initHighlighting, - initHighlightingOnLoad, - registerLanguage, - unregisterLanguage, - listLanguages, - getLanguage, - registerAliases, - autoDetection, - inherit, - addPlugin, - removePlugin - }); - - hljs.debugMode = function() { SAFE_MODE = false; }; - hljs.safeMode = function() { SAFE_MODE = true; }; - hljs.versionString = version; - - hljs.regex = { - concat: concat, - lookahead: lookahead, - either: either, - optional: optional, - anyNumberOfTimes: anyNumberOfTimes - }; - - for (const key in MODES) { - // @ts-ignore - if (typeof MODES[key] === "object") { - // @ts-ignore - deepFreeze(MODES[key]); - } - } - - // merge all the modes/regexes into our main object - Object.assign(hljs, MODES); - - return hljs; -}; - -// Other names for the variable may break build script -const highlight = HLJS({}); - -// returns a new instance of the highlighter to be used for extensions -// check https://github.com/wooorm/lowlight/issues/47 -highlight.newInstance = () => HLJS({}); - -module.exports = highlight; -highlight.HighlightJS = highlight; -highlight.default = highlight; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/index.js" -/*!****************************************************!*\ - !*** ../../node_modules/highlight.js/lib/index.js ***! - \****************************************************/ -(module, __unused_webpack_exports, __webpack_require__) { - -var hljs = __webpack_require__(/*! ./core */ "../../node_modules/highlight.js/lib/core.js"); - -hljs.registerLanguage('1c', __webpack_require__(/*! ./languages/1c */ "../../node_modules/highlight.js/lib/languages/1c.js")); -hljs.registerLanguage('abnf', __webpack_require__(/*! ./languages/abnf */ "../../node_modules/highlight.js/lib/languages/abnf.js")); -hljs.registerLanguage('accesslog', __webpack_require__(/*! ./languages/accesslog */ "../../node_modules/highlight.js/lib/languages/accesslog.js")); -hljs.registerLanguage('actionscript', __webpack_require__(/*! ./languages/actionscript */ "../../node_modules/highlight.js/lib/languages/actionscript.js")); -hljs.registerLanguage('ada', __webpack_require__(/*! ./languages/ada */ "../../node_modules/highlight.js/lib/languages/ada.js")); -hljs.registerLanguage('angelscript', __webpack_require__(/*! ./languages/angelscript */ "../../node_modules/highlight.js/lib/languages/angelscript.js")); -hljs.registerLanguage('apache', __webpack_require__(/*! ./languages/apache */ "../../node_modules/highlight.js/lib/languages/apache.js")); -hljs.registerLanguage('applescript', __webpack_require__(/*! ./languages/applescript */ "../../node_modules/highlight.js/lib/languages/applescript.js")); -hljs.registerLanguage('arcade', __webpack_require__(/*! ./languages/arcade */ "../../node_modules/highlight.js/lib/languages/arcade.js")); -hljs.registerLanguage('arduino', __webpack_require__(/*! ./languages/arduino */ "../../node_modules/highlight.js/lib/languages/arduino.js")); -hljs.registerLanguage('armasm', __webpack_require__(/*! ./languages/armasm */ "../../node_modules/highlight.js/lib/languages/armasm.js")); -hljs.registerLanguage('xml', __webpack_require__(/*! ./languages/xml */ "../../node_modules/highlight.js/lib/languages/xml.js")); -hljs.registerLanguage('asciidoc', __webpack_require__(/*! ./languages/asciidoc */ "../../node_modules/highlight.js/lib/languages/asciidoc.js")); -hljs.registerLanguage('aspectj', __webpack_require__(/*! ./languages/aspectj */ "../../node_modules/highlight.js/lib/languages/aspectj.js")); -hljs.registerLanguage('autohotkey', __webpack_require__(/*! ./languages/autohotkey */ "../../node_modules/highlight.js/lib/languages/autohotkey.js")); -hljs.registerLanguage('autoit', __webpack_require__(/*! ./languages/autoit */ "../../node_modules/highlight.js/lib/languages/autoit.js")); -hljs.registerLanguage('avrasm', __webpack_require__(/*! ./languages/avrasm */ "../../node_modules/highlight.js/lib/languages/avrasm.js")); -hljs.registerLanguage('awk', __webpack_require__(/*! ./languages/awk */ "../../node_modules/highlight.js/lib/languages/awk.js")); -hljs.registerLanguage('axapta', __webpack_require__(/*! ./languages/axapta */ "../../node_modules/highlight.js/lib/languages/axapta.js")); -hljs.registerLanguage('bash', __webpack_require__(/*! ./languages/bash */ "../../node_modules/highlight.js/lib/languages/bash.js")); -hljs.registerLanguage('basic', __webpack_require__(/*! ./languages/basic */ "../../node_modules/highlight.js/lib/languages/basic.js")); -hljs.registerLanguage('bnf', __webpack_require__(/*! ./languages/bnf */ "../../node_modules/highlight.js/lib/languages/bnf.js")); -hljs.registerLanguage('brainfuck', __webpack_require__(/*! ./languages/brainfuck */ "../../node_modules/highlight.js/lib/languages/brainfuck.js")); -hljs.registerLanguage('c', __webpack_require__(/*! ./languages/c */ "../../node_modules/highlight.js/lib/languages/c.js")); -hljs.registerLanguage('cal', __webpack_require__(/*! ./languages/cal */ "../../node_modules/highlight.js/lib/languages/cal.js")); -hljs.registerLanguage('capnproto', __webpack_require__(/*! ./languages/capnproto */ "../../node_modules/highlight.js/lib/languages/capnproto.js")); -hljs.registerLanguage('ceylon', __webpack_require__(/*! ./languages/ceylon */ "../../node_modules/highlight.js/lib/languages/ceylon.js")); -hljs.registerLanguage('clean', __webpack_require__(/*! ./languages/clean */ "../../node_modules/highlight.js/lib/languages/clean.js")); -hljs.registerLanguage('clojure', __webpack_require__(/*! ./languages/clojure */ "../../node_modules/highlight.js/lib/languages/clojure.js")); -hljs.registerLanguage('clojure-repl', __webpack_require__(/*! ./languages/clojure-repl */ "../../node_modules/highlight.js/lib/languages/clojure-repl.js")); -hljs.registerLanguage('cmake', __webpack_require__(/*! ./languages/cmake */ "../../node_modules/highlight.js/lib/languages/cmake.js")); -hljs.registerLanguage('coffeescript', __webpack_require__(/*! ./languages/coffeescript */ "../../node_modules/highlight.js/lib/languages/coffeescript.js")); -hljs.registerLanguage('coq', __webpack_require__(/*! ./languages/coq */ "../../node_modules/highlight.js/lib/languages/coq.js")); -hljs.registerLanguage('cos', __webpack_require__(/*! ./languages/cos */ "../../node_modules/highlight.js/lib/languages/cos.js")); -hljs.registerLanguage('cpp', __webpack_require__(/*! ./languages/cpp */ "../../node_modules/highlight.js/lib/languages/cpp.js")); -hljs.registerLanguage('crmsh', __webpack_require__(/*! ./languages/crmsh */ "../../node_modules/highlight.js/lib/languages/crmsh.js")); -hljs.registerLanguage('crystal', __webpack_require__(/*! ./languages/crystal */ "../../node_modules/highlight.js/lib/languages/crystal.js")); -hljs.registerLanguage('csharp', __webpack_require__(/*! ./languages/csharp */ "../../node_modules/highlight.js/lib/languages/csharp.js")); -hljs.registerLanguage('csp', __webpack_require__(/*! ./languages/csp */ "../../node_modules/highlight.js/lib/languages/csp.js")); -hljs.registerLanguage('css', __webpack_require__(/*! ./languages/css */ "../../node_modules/highlight.js/lib/languages/css.js")); -hljs.registerLanguage('d', __webpack_require__(/*! ./languages/d */ "../../node_modules/highlight.js/lib/languages/d.js")); -hljs.registerLanguage('markdown', __webpack_require__(/*! ./languages/markdown */ "../../node_modules/highlight.js/lib/languages/markdown.js")); -hljs.registerLanguage('dart', __webpack_require__(/*! ./languages/dart */ "../../node_modules/highlight.js/lib/languages/dart.js")); -hljs.registerLanguage('delphi', __webpack_require__(/*! ./languages/delphi */ "../../node_modules/highlight.js/lib/languages/delphi.js")); -hljs.registerLanguage('diff', __webpack_require__(/*! ./languages/diff */ "../../node_modules/highlight.js/lib/languages/diff.js")); -hljs.registerLanguage('django', __webpack_require__(/*! ./languages/django */ "../../node_modules/highlight.js/lib/languages/django.js")); -hljs.registerLanguage('dns', __webpack_require__(/*! ./languages/dns */ "../../node_modules/highlight.js/lib/languages/dns.js")); -hljs.registerLanguage('dockerfile', __webpack_require__(/*! ./languages/dockerfile */ "../../node_modules/highlight.js/lib/languages/dockerfile.js")); -hljs.registerLanguage('dos', __webpack_require__(/*! ./languages/dos */ "../../node_modules/highlight.js/lib/languages/dos.js")); -hljs.registerLanguage('dsconfig', __webpack_require__(/*! ./languages/dsconfig */ "../../node_modules/highlight.js/lib/languages/dsconfig.js")); -hljs.registerLanguage('dts', __webpack_require__(/*! ./languages/dts */ "../../node_modules/highlight.js/lib/languages/dts.js")); -hljs.registerLanguage('dust', __webpack_require__(/*! ./languages/dust */ "../../node_modules/highlight.js/lib/languages/dust.js")); -hljs.registerLanguage('ebnf', __webpack_require__(/*! ./languages/ebnf */ "../../node_modules/highlight.js/lib/languages/ebnf.js")); -hljs.registerLanguage('elixir', __webpack_require__(/*! ./languages/elixir */ "../../node_modules/highlight.js/lib/languages/elixir.js")); -hljs.registerLanguage('elm', __webpack_require__(/*! ./languages/elm */ "../../node_modules/highlight.js/lib/languages/elm.js")); -hljs.registerLanguage('ruby', __webpack_require__(/*! ./languages/ruby */ "../../node_modules/highlight.js/lib/languages/ruby.js")); -hljs.registerLanguage('erb', __webpack_require__(/*! ./languages/erb */ "../../node_modules/highlight.js/lib/languages/erb.js")); -hljs.registerLanguage('erlang-repl', __webpack_require__(/*! ./languages/erlang-repl */ "../../node_modules/highlight.js/lib/languages/erlang-repl.js")); -hljs.registerLanguage('erlang', __webpack_require__(/*! ./languages/erlang */ "../../node_modules/highlight.js/lib/languages/erlang.js")); -hljs.registerLanguage('excel', __webpack_require__(/*! ./languages/excel */ "../../node_modules/highlight.js/lib/languages/excel.js")); -hljs.registerLanguage('fix', __webpack_require__(/*! ./languages/fix */ "../../node_modules/highlight.js/lib/languages/fix.js")); -hljs.registerLanguage('flix', __webpack_require__(/*! ./languages/flix */ "../../node_modules/highlight.js/lib/languages/flix.js")); -hljs.registerLanguage('fortran', __webpack_require__(/*! ./languages/fortran */ "../../node_modules/highlight.js/lib/languages/fortran.js")); -hljs.registerLanguage('fsharp', __webpack_require__(/*! ./languages/fsharp */ "../../node_modules/highlight.js/lib/languages/fsharp.js")); -hljs.registerLanguage('gams', __webpack_require__(/*! ./languages/gams */ "../../node_modules/highlight.js/lib/languages/gams.js")); -hljs.registerLanguage('gauss', __webpack_require__(/*! ./languages/gauss */ "../../node_modules/highlight.js/lib/languages/gauss.js")); -hljs.registerLanguage('gcode', __webpack_require__(/*! ./languages/gcode */ "../../node_modules/highlight.js/lib/languages/gcode.js")); -hljs.registerLanguage('gherkin', __webpack_require__(/*! ./languages/gherkin */ "../../node_modules/highlight.js/lib/languages/gherkin.js")); -hljs.registerLanguage('glsl', __webpack_require__(/*! ./languages/glsl */ "../../node_modules/highlight.js/lib/languages/glsl.js")); -hljs.registerLanguage('gml', __webpack_require__(/*! ./languages/gml */ "../../node_modules/highlight.js/lib/languages/gml.js")); -hljs.registerLanguage('go', __webpack_require__(/*! ./languages/go */ "../../node_modules/highlight.js/lib/languages/go.js")); -hljs.registerLanguage('golo', __webpack_require__(/*! ./languages/golo */ "../../node_modules/highlight.js/lib/languages/golo.js")); -hljs.registerLanguage('gradle', __webpack_require__(/*! ./languages/gradle */ "../../node_modules/highlight.js/lib/languages/gradle.js")); -hljs.registerLanguage('graphql', __webpack_require__(/*! ./languages/graphql */ "../../node_modules/highlight.js/lib/languages/graphql.js")); -hljs.registerLanguage('groovy', __webpack_require__(/*! ./languages/groovy */ "../../node_modules/highlight.js/lib/languages/groovy.js")); -hljs.registerLanguage('haml', __webpack_require__(/*! ./languages/haml */ "../../node_modules/highlight.js/lib/languages/haml.js")); -hljs.registerLanguage('handlebars', __webpack_require__(/*! ./languages/handlebars */ "../../node_modules/highlight.js/lib/languages/handlebars.js")); -hljs.registerLanguage('haskell', __webpack_require__(/*! ./languages/haskell */ "../../node_modules/highlight.js/lib/languages/haskell.js")); -hljs.registerLanguage('haxe', __webpack_require__(/*! ./languages/haxe */ "../../node_modules/highlight.js/lib/languages/haxe.js")); -hljs.registerLanguage('hsp', __webpack_require__(/*! ./languages/hsp */ "../../node_modules/highlight.js/lib/languages/hsp.js")); -hljs.registerLanguage('http', __webpack_require__(/*! ./languages/http */ "../../node_modules/highlight.js/lib/languages/http.js")); -hljs.registerLanguage('hy', __webpack_require__(/*! ./languages/hy */ "../../node_modules/highlight.js/lib/languages/hy.js")); -hljs.registerLanguage('inform7', __webpack_require__(/*! ./languages/inform7 */ "../../node_modules/highlight.js/lib/languages/inform7.js")); -hljs.registerLanguage('ini', __webpack_require__(/*! ./languages/ini */ "../../node_modules/highlight.js/lib/languages/ini.js")); -hljs.registerLanguage('irpf90', __webpack_require__(/*! ./languages/irpf90 */ "../../node_modules/highlight.js/lib/languages/irpf90.js")); -hljs.registerLanguage('isbl', __webpack_require__(/*! ./languages/isbl */ "../../node_modules/highlight.js/lib/languages/isbl.js")); -hljs.registerLanguage('java', __webpack_require__(/*! ./languages/java */ "../../node_modules/highlight.js/lib/languages/java.js")); -hljs.registerLanguage('javascript', __webpack_require__(/*! ./languages/javascript */ "../../node_modules/highlight.js/lib/languages/javascript.js")); -hljs.registerLanguage('jboss-cli', __webpack_require__(/*! ./languages/jboss-cli */ "../../node_modules/highlight.js/lib/languages/jboss-cli.js")); -hljs.registerLanguage('json', __webpack_require__(/*! ./languages/json */ "../../node_modules/highlight.js/lib/languages/json.js")); -hljs.registerLanguage('julia', __webpack_require__(/*! ./languages/julia */ "../../node_modules/highlight.js/lib/languages/julia.js")); -hljs.registerLanguage('julia-repl', __webpack_require__(/*! ./languages/julia-repl */ "../../node_modules/highlight.js/lib/languages/julia-repl.js")); -hljs.registerLanguage('kotlin', __webpack_require__(/*! ./languages/kotlin */ "../../node_modules/highlight.js/lib/languages/kotlin.js")); -hljs.registerLanguage('lasso', __webpack_require__(/*! ./languages/lasso */ "../../node_modules/highlight.js/lib/languages/lasso.js")); -hljs.registerLanguage('latex', __webpack_require__(/*! ./languages/latex */ "../../node_modules/highlight.js/lib/languages/latex.js")); -hljs.registerLanguage('ldif', __webpack_require__(/*! ./languages/ldif */ "../../node_modules/highlight.js/lib/languages/ldif.js")); -hljs.registerLanguage('leaf', __webpack_require__(/*! ./languages/leaf */ "../../node_modules/highlight.js/lib/languages/leaf.js")); -hljs.registerLanguage('less', __webpack_require__(/*! ./languages/less */ "../../node_modules/highlight.js/lib/languages/less.js")); -hljs.registerLanguage('lisp', __webpack_require__(/*! ./languages/lisp */ "../../node_modules/highlight.js/lib/languages/lisp.js")); -hljs.registerLanguage('livecodeserver', __webpack_require__(/*! ./languages/livecodeserver */ "../../node_modules/highlight.js/lib/languages/livecodeserver.js")); -hljs.registerLanguage('livescript', __webpack_require__(/*! ./languages/livescript */ "../../node_modules/highlight.js/lib/languages/livescript.js")); -hljs.registerLanguage('llvm', __webpack_require__(/*! ./languages/llvm */ "../../node_modules/highlight.js/lib/languages/llvm.js")); -hljs.registerLanguage('lsl', __webpack_require__(/*! ./languages/lsl */ "../../node_modules/highlight.js/lib/languages/lsl.js")); -hljs.registerLanguage('lua', __webpack_require__(/*! ./languages/lua */ "../../node_modules/highlight.js/lib/languages/lua.js")); -hljs.registerLanguage('makefile', __webpack_require__(/*! ./languages/makefile */ "../../node_modules/highlight.js/lib/languages/makefile.js")); -hljs.registerLanguage('mathematica', __webpack_require__(/*! ./languages/mathematica */ "../../node_modules/highlight.js/lib/languages/mathematica.js")); -hljs.registerLanguage('matlab', __webpack_require__(/*! ./languages/matlab */ "../../node_modules/highlight.js/lib/languages/matlab.js")); -hljs.registerLanguage('maxima', __webpack_require__(/*! ./languages/maxima */ "../../node_modules/highlight.js/lib/languages/maxima.js")); -hljs.registerLanguage('mel', __webpack_require__(/*! ./languages/mel */ "../../node_modules/highlight.js/lib/languages/mel.js")); -hljs.registerLanguage('mercury', __webpack_require__(/*! ./languages/mercury */ "../../node_modules/highlight.js/lib/languages/mercury.js")); -hljs.registerLanguage('mipsasm', __webpack_require__(/*! ./languages/mipsasm */ "../../node_modules/highlight.js/lib/languages/mipsasm.js")); -hljs.registerLanguage('mizar', __webpack_require__(/*! ./languages/mizar */ "../../node_modules/highlight.js/lib/languages/mizar.js")); -hljs.registerLanguage('perl', __webpack_require__(/*! ./languages/perl */ "../../node_modules/highlight.js/lib/languages/perl.js")); -hljs.registerLanguage('mojolicious', __webpack_require__(/*! ./languages/mojolicious */ "../../node_modules/highlight.js/lib/languages/mojolicious.js")); -hljs.registerLanguage('monkey', __webpack_require__(/*! ./languages/monkey */ "../../node_modules/highlight.js/lib/languages/monkey.js")); -hljs.registerLanguage('moonscript', __webpack_require__(/*! ./languages/moonscript */ "../../node_modules/highlight.js/lib/languages/moonscript.js")); -hljs.registerLanguage('n1ql', __webpack_require__(/*! ./languages/n1ql */ "../../node_modules/highlight.js/lib/languages/n1ql.js")); -hljs.registerLanguage('nestedtext', __webpack_require__(/*! ./languages/nestedtext */ "../../node_modules/highlight.js/lib/languages/nestedtext.js")); -hljs.registerLanguage('nginx', __webpack_require__(/*! ./languages/nginx */ "../../node_modules/highlight.js/lib/languages/nginx.js")); -hljs.registerLanguage('nim', __webpack_require__(/*! ./languages/nim */ "../../node_modules/highlight.js/lib/languages/nim.js")); -hljs.registerLanguage('nix', __webpack_require__(/*! ./languages/nix */ "../../node_modules/highlight.js/lib/languages/nix.js")); -hljs.registerLanguage('node-repl', __webpack_require__(/*! ./languages/node-repl */ "../../node_modules/highlight.js/lib/languages/node-repl.js")); -hljs.registerLanguage('nsis', __webpack_require__(/*! ./languages/nsis */ "../../node_modules/highlight.js/lib/languages/nsis.js")); -hljs.registerLanguage('objectivec', __webpack_require__(/*! ./languages/objectivec */ "../../node_modules/highlight.js/lib/languages/objectivec.js")); -hljs.registerLanguage('ocaml', __webpack_require__(/*! ./languages/ocaml */ "../../node_modules/highlight.js/lib/languages/ocaml.js")); -hljs.registerLanguage('openscad', __webpack_require__(/*! ./languages/openscad */ "../../node_modules/highlight.js/lib/languages/openscad.js")); -hljs.registerLanguage('oxygene', __webpack_require__(/*! ./languages/oxygene */ "../../node_modules/highlight.js/lib/languages/oxygene.js")); -hljs.registerLanguage('parser3', __webpack_require__(/*! ./languages/parser3 */ "../../node_modules/highlight.js/lib/languages/parser3.js")); -hljs.registerLanguage('pf', __webpack_require__(/*! ./languages/pf */ "../../node_modules/highlight.js/lib/languages/pf.js")); -hljs.registerLanguage('pgsql', __webpack_require__(/*! ./languages/pgsql */ "../../node_modules/highlight.js/lib/languages/pgsql.js")); -hljs.registerLanguage('php', __webpack_require__(/*! ./languages/php */ "../../node_modules/highlight.js/lib/languages/php.js")); -hljs.registerLanguage('php-template', __webpack_require__(/*! ./languages/php-template */ "../../node_modules/highlight.js/lib/languages/php-template.js")); -hljs.registerLanguage('plaintext', __webpack_require__(/*! ./languages/plaintext */ "../../node_modules/highlight.js/lib/languages/plaintext.js")); -hljs.registerLanguage('pony', __webpack_require__(/*! ./languages/pony */ "../../node_modules/highlight.js/lib/languages/pony.js")); -hljs.registerLanguage('powershell', __webpack_require__(/*! ./languages/powershell */ "../../node_modules/highlight.js/lib/languages/powershell.js")); -hljs.registerLanguage('processing', __webpack_require__(/*! ./languages/processing */ "../../node_modules/highlight.js/lib/languages/processing.js")); -hljs.registerLanguage('profile', __webpack_require__(/*! ./languages/profile */ "../../node_modules/highlight.js/lib/languages/profile.js")); -hljs.registerLanguage('prolog', __webpack_require__(/*! ./languages/prolog */ "../../node_modules/highlight.js/lib/languages/prolog.js")); -hljs.registerLanguage('properties', __webpack_require__(/*! ./languages/properties */ "../../node_modules/highlight.js/lib/languages/properties.js")); -hljs.registerLanguage('protobuf', __webpack_require__(/*! ./languages/protobuf */ "../../node_modules/highlight.js/lib/languages/protobuf.js")); -hljs.registerLanguage('puppet', __webpack_require__(/*! ./languages/puppet */ "../../node_modules/highlight.js/lib/languages/puppet.js")); -hljs.registerLanguage('purebasic', __webpack_require__(/*! ./languages/purebasic */ "../../node_modules/highlight.js/lib/languages/purebasic.js")); -hljs.registerLanguage('python', __webpack_require__(/*! ./languages/python */ "../../node_modules/highlight.js/lib/languages/python.js")); -hljs.registerLanguage('python-repl', __webpack_require__(/*! ./languages/python-repl */ "../../node_modules/highlight.js/lib/languages/python-repl.js")); -hljs.registerLanguage('q', __webpack_require__(/*! ./languages/q */ "../../node_modules/highlight.js/lib/languages/q.js")); -hljs.registerLanguage('qml', __webpack_require__(/*! ./languages/qml */ "../../node_modules/highlight.js/lib/languages/qml.js")); -hljs.registerLanguage('r', __webpack_require__(/*! ./languages/r */ "../../node_modules/highlight.js/lib/languages/r.js")); -hljs.registerLanguage('reasonml', __webpack_require__(/*! ./languages/reasonml */ "../../node_modules/highlight.js/lib/languages/reasonml.js")); -hljs.registerLanguage('rib', __webpack_require__(/*! ./languages/rib */ "../../node_modules/highlight.js/lib/languages/rib.js")); -hljs.registerLanguage('roboconf', __webpack_require__(/*! ./languages/roboconf */ "../../node_modules/highlight.js/lib/languages/roboconf.js")); -hljs.registerLanguage('routeros', __webpack_require__(/*! ./languages/routeros */ "../../node_modules/highlight.js/lib/languages/routeros.js")); -hljs.registerLanguage('rsl', __webpack_require__(/*! ./languages/rsl */ "../../node_modules/highlight.js/lib/languages/rsl.js")); -hljs.registerLanguage('ruleslanguage', __webpack_require__(/*! ./languages/ruleslanguage */ "../../node_modules/highlight.js/lib/languages/ruleslanguage.js")); -hljs.registerLanguage('rust', __webpack_require__(/*! ./languages/rust */ "../../node_modules/highlight.js/lib/languages/rust.js")); -hljs.registerLanguage('sas', __webpack_require__(/*! ./languages/sas */ "../../node_modules/highlight.js/lib/languages/sas.js")); -hljs.registerLanguage('scala', __webpack_require__(/*! ./languages/scala */ "../../node_modules/highlight.js/lib/languages/scala.js")); -hljs.registerLanguage('scheme', __webpack_require__(/*! ./languages/scheme */ "../../node_modules/highlight.js/lib/languages/scheme.js")); -hljs.registerLanguage('scilab', __webpack_require__(/*! ./languages/scilab */ "../../node_modules/highlight.js/lib/languages/scilab.js")); -hljs.registerLanguage('scss', __webpack_require__(/*! ./languages/scss */ "../../node_modules/highlight.js/lib/languages/scss.js")); -hljs.registerLanguage('shell', __webpack_require__(/*! ./languages/shell */ "../../node_modules/highlight.js/lib/languages/shell.js")); -hljs.registerLanguage('smali', __webpack_require__(/*! ./languages/smali */ "../../node_modules/highlight.js/lib/languages/smali.js")); -hljs.registerLanguage('smalltalk', __webpack_require__(/*! ./languages/smalltalk */ "../../node_modules/highlight.js/lib/languages/smalltalk.js")); -hljs.registerLanguage('sml', __webpack_require__(/*! ./languages/sml */ "../../node_modules/highlight.js/lib/languages/sml.js")); -hljs.registerLanguage('sqf', __webpack_require__(/*! ./languages/sqf */ "../../node_modules/highlight.js/lib/languages/sqf.js")); -hljs.registerLanguage('sql', __webpack_require__(/*! ./languages/sql */ "../../node_modules/highlight.js/lib/languages/sql.js")); -hljs.registerLanguage('stan', __webpack_require__(/*! ./languages/stan */ "../../node_modules/highlight.js/lib/languages/stan.js")); -hljs.registerLanguage('stata', __webpack_require__(/*! ./languages/stata */ "../../node_modules/highlight.js/lib/languages/stata.js")); -hljs.registerLanguage('step21', __webpack_require__(/*! ./languages/step21 */ "../../node_modules/highlight.js/lib/languages/step21.js")); -hljs.registerLanguage('stylus', __webpack_require__(/*! ./languages/stylus */ "../../node_modules/highlight.js/lib/languages/stylus.js")); -hljs.registerLanguage('subunit', __webpack_require__(/*! ./languages/subunit */ "../../node_modules/highlight.js/lib/languages/subunit.js")); -hljs.registerLanguage('swift', __webpack_require__(/*! ./languages/swift */ "../../node_modules/highlight.js/lib/languages/swift.js")); -hljs.registerLanguage('taggerscript', __webpack_require__(/*! ./languages/taggerscript */ "../../node_modules/highlight.js/lib/languages/taggerscript.js")); -hljs.registerLanguage('yaml', __webpack_require__(/*! ./languages/yaml */ "../../node_modules/highlight.js/lib/languages/yaml.js")); -hljs.registerLanguage('tap', __webpack_require__(/*! ./languages/tap */ "../../node_modules/highlight.js/lib/languages/tap.js")); -hljs.registerLanguage('tcl', __webpack_require__(/*! ./languages/tcl */ "../../node_modules/highlight.js/lib/languages/tcl.js")); -hljs.registerLanguage('thrift', __webpack_require__(/*! ./languages/thrift */ "../../node_modules/highlight.js/lib/languages/thrift.js")); -hljs.registerLanguage('tp', __webpack_require__(/*! ./languages/tp */ "../../node_modules/highlight.js/lib/languages/tp.js")); -hljs.registerLanguage('twig', __webpack_require__(/*! ./languages/twig */ "../../node_modules/highlight.js/lib/languages/twig.js")); -hljs.registerLanguage('typescript', __webpack_require__(/*! ./languages/typescript */ "../../node_modules/highlight.js/lib/languages/typescript.js")); -hljs.registerLanguage('vala', __webpack_require__(/*! ./languages/vala */ "../../node_modules/highlight.js/lib/languages/vala.js")); -hljs.registerLanguage('vbnet', __webpack_require__(/*! ./languages/vbnet */ "../../node_modules/highlight.js/lib/languages/vbnet.js")); -hljs.registerLanguage('vbscript', __webpack_require__(/*! ./languages/vbscript */ "../../node_modules/highlight.js/lib/languages/vbscript.js")); -hljs.registerLanguage('vbscript-html', __webpack_require__(/*! ./languages/vbscript-html */ "../../node_modules/highlight.js/lib/languages/vbscript-html.js")); -hljs.registerLanguage('verilog', __webpack_require__(/*! ./languages/verilog */ "../../node_modules/highlight.js/lib/languages/verilog.js")); -hljs.registerLanguage('vhdl', __webpack_require__(/*! ./languages/vhdl */ "../../node_modules/highlight.js/lib/languages/vhdl.js")); -hljs.registerLanguage('vim', __webpack_require__(/*! ./languages/vim */ "../../node_modules/highlight.js/lib/languages/vim.js")); -hljs.registerLanguage('wasm', __webpack_require__(/*! ./languages/wasm */ "../../node_modules/highlight.js/lib/languages/wasm.js")); -hljs.registerLanguage('wren', __webpack_require__(/*! ./languages/wren */ "../../node_modules/highlight.js/lib/languages/wren.js")); -hljs.registerLanguage('x86asm', __webpack_require__(/*! ./languages/x86asm */ "../../node_modules/highlight.js/lib/languages/x86asm.js")); -hljs.registerLanguage('xl', __webpack_require__(/*! ./languages/xl */ "../../node_modules/highlight.js/lib/languages/xl.js")); -hljs.registerLanguage('xquery', __webpack_require__(/*! ./languages/xquery */ "../../node_modules/highlight.js/lib/languages/xquery.js")); -hljs.registerLanguage('zephir', __webpack_require__(/*! ./languages/zephir */ "../../node_modules/highlight.js/lib/languages/zephir.js")); - -hljs.HighlightJS = hljs -hljs.default = hljs -module.exports = hljs; - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/1c.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/1c.js ***! - \***********************************************************/ -(module) { - -/* -Language: 1C:Enterprise -Author: Stanislav Belov -Description: built-in language 1C:Enterprise (v7, v8) -Category: enterprise -*/ - -function _1c(hljs) { - // общий паттерн для определения идентификаторов - const UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+'; - - // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword - const v7_keywords = - 'далее '; - - // v8 ключевые слова ==> keyword - const v8_keywords = - 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' - + 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт '; - - // keyword : ключевые слова - const KEYWORD = v7_keywords + v8_keywords; - - // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword - const v7_meta_keywords = - 'загрузитьизфайла '; - - // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword - const v8_meta_keywords = - 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' - + 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' - + 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент '; - - // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях - const METAKEYWORD = v7_meta_keywords + v8_meta_keywords; - - // v7 системные константы ==> built_in - const v7_system_constants = - 'разделительстраниц разделительстрок символтабуляции '; - - // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in - const v7_global_context_methods = - 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' - + 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' - + 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' - + 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' - + 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' - + 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' - + 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' - + 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' - + 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' - + 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' - + 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон '; - - // v8 методы глобального контекста ==> built_in - const v8_global_context_methods = - 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' - + 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' - + 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' - + 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' - + 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' - + 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' - + 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' - + 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' - + 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' - + 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' - + 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' - + 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' - + 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' - + 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' - + 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' - + 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' - + 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' - + 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' - + 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' - + 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' - + 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' - + 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' - + 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' - + 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' - + 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' - + 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' - + 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' - + 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' - + 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' - + 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' - + 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' - + 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' - + 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' - + 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' - + 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' - + 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' - + 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' - + 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' - + 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' - + 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' - + 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' - + 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' - + 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' - + 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' - + 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' - + 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' - + 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' - + 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' - + 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' - + 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' - + 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' - + 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' - + 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' - + 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' - + 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' - + 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' - + 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений ' - + 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' - + 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' - + 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' - + 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' - + 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' - + 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' - + 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' - + 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' - + 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' - + 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' - + 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' - + 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' - + 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' - + 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' - + 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища '; - - // v8 свойства глобального контекста ==> built_in - const v8_global_context_property = - 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' - + 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' - + 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' - + 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' - + 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' - + 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' - + 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' - + 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' - + 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' - + 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' - + 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек '; - - // built_in : встроенные или библиотечные объекты (константы, классы, функции) - const BUILTIN = - v7_system_constants - + v7_global_context_methods + v8_global_context_methods - + v8_global_context_property; - - // v8 системные наборы значений ==> class - const v8_system_sets_of_values = - 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля '; - - // v8 системные перечисления - интерфейсные ==> class - const v8_system_enums_interface = - 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' - + 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' - + 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' - + 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' - + 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' - + 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' - + 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' - + 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' - + 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' - + 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' - + 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' - + 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' - + 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' - + 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' - + 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' - + 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' - + 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' - + 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' - + 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' - + 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' - + 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' - + 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' - + 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' - + 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' - + 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' - + 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' - + 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' - + 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' - + 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' - + 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' - + 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' - + 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' - + 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' - + 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' - + 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' - + 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' - + 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' - + 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' - + 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' - + 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' - + 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' - + 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' - + 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' - + 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' - + 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' - + 'форматкартинки ширинаподчиненныхэлементовформы '; - - // v8 системные перечисления - свойства прикладных объектов ==> class - const v8_system_enums_objects_properties = - 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' - + 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' - + 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента '; - - // v8 системные перечисления - планы обмена ==> class - const v8_system_enums_exchange_plans = - 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных '; - - // v8 системные перечисления - табличный документ ==> class - const v8_system_enums_tabular_document = - 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' - + 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' - + 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' - + 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' - + 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' - + 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' - + 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц '; - - // v8 системные перечисления - планировщик ==> class - const v8_system_enums_sheduler = - 'отображениевремениэлементовпланировщика '; - - // v8 системные перечисления - форматированный документ ==> class - const v8_system_enums_formatted_document = - 'типфайлаформатированногодокумента '; - - // v8 системные перечисления - запрос ==> class - const v8_system_enums_query = - 'обходрезультатазапроса типзаписизапроса '; - - // v8 системные перечисления - построитель отчета ==> class - const v8_system_enums_report_builder = - 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов '; - - // v8 системные перечисления - работа с файлами ==> class - const v8_system_enums_files = - 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла '; - - // v8 системные перечисления - построитель запроса ==> class - const v8_system_enums_query_builder = - 'типизмеренияпостроителязапроса '; - - // v8 системные перечисления - анализ данных ==> class - const v8_system_enums_data_analysis = - 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' - + 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' - + 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' - + 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' - + 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' - + 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений '; - - // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class - const v8_system_enums_xml_json_xs_dom_xdto_ws = - 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' - + 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' - + 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' - + 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' - + 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' - + 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' - + 'форматдатыjson экранированиесимволовjson '; - - // v8 системные перечисления - система компоновки данных ==> class - const v8_system_enums_data_composition_system = - 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' - + 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' - + 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' - + 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' - + 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' - + 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' - + 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' - + 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' - + 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' - + 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных ' - + 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' - + 'использованиеусловногооформлениякомпоновкиданных '; - - // v8 системные перечисления - почта ==> class - const v8_system_enums_email = - 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' - + 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' - + 'статусразборапочтовогосообщения '; - - // v8 системные перечисления - журнал регистрации ==> class - const v8_system_enums_logbook = - 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации '; - - // v8 системные перечисления - криптография ==> class - const v8_system_enums_cryptography = - 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' - + 'типхранилищасертификатовкриптографии '; - - // v8 системные перечисления - ZIP ==> class - const v8_system_enums_zip = - 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' - + 'режимсохраненияпутейzip уровеньсжатияzip '; - - // v8 системные перечисления - - // Блокировка данных, Фоновые задания, Автоматизированное тестирование, - // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class - const v8_system_enums_other = - 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' - + 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp '; - - // v8 системные перечисления - схема запроса ==> class - const v8_system_enums_request_schema = - 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' - + 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса '; - - // v8 системные перечисления - свойства объектов метаданных ==> class - const v8_system_enums_properties_of_metadata_objects = - 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' - + 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' - + 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' - + 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' - + 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' - + 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' - + 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' - + 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' - + 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' - + 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита ' - + 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' - + 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' - + 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' - + 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' - + 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' - + 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' - + 'типномерадокумента типномеразадачи типформы удалениедвижений '; - - // v8 системные перечисления - разные ==> class - const v8_system_enums_differents = - 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' - + 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' - + 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' - + 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' - + 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' - + 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' - + 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' - + 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' - + 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты'; - - // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование) - const CLASS = - v8_system_sets_of_values - + v8_system_enums_interface - + v8_system_enums_objects_properties - + v8_system_enums_exchange_plans - + v8_system_enums_tabular_document - + v8_system_enums_sheduler - + v8_system_enums_formatted_document - + v8_system_enums_query - + v8_system_enums_report_builder - + v8_system_enums_files - + v8_system_enums_query_builder - + v8_system_enums_data_analysis - + v8_system_enums_xml_json_xs_dom_xdto_ws - + v8_system_enums_data_composition_system - + v8_system_enums_email - + v8_system_enums_logbook - + v8_system_enums_cryptography - + v8_system_enums_zip - + v8_system_enums_other - + v8_system_enums_request_schema - + v8_system_enums_properties_of_metadata_objects - + v8_system_enums_differents; - - // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type - const v8_shared_object = - 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' - + 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' - + 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' - + 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' - + 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' - + 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' - + 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' - + 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' - + 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' - + 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' - + 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' - + 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' - + 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' - + 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' - + 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' - + 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' - + 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' - + 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' - + 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' - + 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' - + 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' - + 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' - + 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' - + 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' - + 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' - + 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' - + 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' - + 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' - + 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' - + 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' - + 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' - + 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' - + 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' - + 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' - + 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных '; - - // v8 универсальные коллекции значений ==> type - const v8_universal_collection = - 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' - + 'фиксированноесоответствие фиксированныймассив '; - - // type : встроенные типы - const TYPE = - v8_shared_object - + v8_universal_collection; - - // literal : примитивные типы - const LITERAL = 'null истина ложь неопределено'; - - // number : числа - const NUMBERS = hljs.inherit(hljs.NUMBER_MODE); - - // string : строки - const STRINGS = { - className: 'string', - begin: '"|\\|', - end: '"|$', - contains: [ { begin: '""' } ] - }; - - // number : даты - const DATE = { - begin: "'", - end: "'", - excludeBegin: true, - excludeEnd: true, - contains: [ - { - className: 'number', - begin: '\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}' - } - ] - }; - - const PUNCTUATION = { - match: /[;()+\-:=,]/, - className: "punctuation", - relevance: 0 - }; - - // comment : комментарии - const COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE); - - // meta : инструкции препроцессора, директивы компиляции - const META = { - className: 'meta', - - begin: '#|&', - end: '$', - keywords: { - $pattern: UNDERSCORE_IDENT_RE, - keyword: KEYWORD + METAKEYWORD - }, - contains: [ COMMENTS ] - }; - - // symbol : метка goto - const SYMBOL = { - className: 'symbol', - begin: '~', - end: ';|:', - excludeEnd: true - }; - - // function : объявление процедур и функций - const FUNCTION = { - className: 'function', - variants: [ - { - begin: 'процедура|функция', - end: '\\)', - keywords: 'процедура функция' - }, - { - begin: 'конецпроцедуры|конецфункции', - keywords: 'конецпроцедуры конецфункции' - } - ], - contains: [ - { - begin: '\\(', - end: '\\)', - endsParent: true, - contains: [ - { - className: 'params', - begin: UNDERSCORE_IDENT_RE, - end: ',', - excludeEnd: true, - endsWithParent: true, - keywords: { - $pattern: UNDERSCORE_IDENT_RE, - keyword: 'знач', - literal: LITERAL - }, - contains: [ - NUMBERS, - STRINGS, - DATE - ] - }, - COMMENTS - ] - }, - hljs.inherit(hljs.TITLE_MODE, { begin: UNDERSCORE_IDENT_RE }) - ] - }; - - return { - name: '1C:Enterprise', - case_insensitive: true, - keywords: { - $pattern: UNDERSCORE_IDENT_RE, - keyword: KEYWORD, - built_in: BUILTIN, - class: CLASS, - type: TYPE, - literal: LITERAL - }, - contains: [ - META, - FUNCTION, - COMMENTS, - SYMBOL, - NUMBERS, - STRINGS, - DATE, - PUNCTUATION - ] - }; -} - -module.exports = _1c; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/abnf.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/abnf.js ***! - \*************************************************************/ -(module) { - -/* -Language: Augmented Backus-Naur Form -Author: Alex McKibben -Website: https://tools.ietf.org/html/rfc5234 -Category: syntax -Audit: 2020 -*/ - -/** @type LanguageFn */ -function abnf(hljs) { - const regex = hljs.regex; - const IDENT = /^[a-zA-Z][a-zA-Z0-9-]*/; - - const KEYWORDS = [ - "ALPHA", - "BIT", - "CHAR", - "CR", - "CRLF", - "CTL", - "DIGIT", - "DQUOTE", - "HEXDIG", - "HTAB", - "LF", - "LWSP", - "OCTET", - "SP", - "VCHAR", - "WSP" - ]; - - const COMMENT = hljs.COMMENT(/;/, /$/); - - const TERMINAL_BINARY = { - scope: "symbol", - match: /%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/ - }; - - const TERMINAL_DECIMAL = { - scope: "symbol", - match: /%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/ - }; - - const TERMINAL_HEXADECIMAL = { - scope: "symbol", - match: /%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/ - }; - - const CASE_SENSITIVITY = { - scope: "symbol", - match: /%[si](?=".*")/ - }; - - const RULE_DECLARATION = { - scope: "attribute", - match: regex.concat(IDENT, /(?=\s*=)/) - }; - - const ASSIGNMENT = { - scope: "operator", - match: /=\/?/ - }; - - return { - name: 'Augmented Backus-Naur Form', - illegal: /[!@#$^&',?+~`|:]/, - keywords: KEYWORDS, - contains: [ - ASSIGNMENT, - RULE_DECLARATION, - COMMENT, - TERMINAL_BINARY, - TERMINAL_DECIMAL, - TERMINAL_HEXADECIMAL, - CASE_SENSITIVITY, - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE - ] - }; -} - -module.exports = abnf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/accesslog.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/accesslog.js ***! - \******************************************************************/ -(module) { - -/* - Language: Apache Access Log - Author: Oleg Efimov - Description: Apache/Nginx Access Logs - Website: https://httpd.apache.org/docs/2.4/logs.html#accesslog - Category: web, logs - Audit: 2020 - */ - -/** @type LanguageFn */ -function accesslog(hljs) { - const regex = hljs.regex; - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods - const HTTP_VERBS = [ - "GET", - "POST", - "HEAD", - "PUT", - "DELETE", - "CONNECT", - "OPTIONS", - "PATCH", - "TRACE" - ]; - return { - name: 'Apache Access Log', - contains: [ - // IP - { - className: 'number', - begin: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/, - relevance: 5 - }, - // Other numbers - { - className: 'number', - begin: /\b\d+\b/, - relevance: 0 - }, - // Requests - { - className: 'string', - begin: regex.concat(/"/, regex.either(...HTTP_VERBS)), - end: /"/, - keywords: HTTP_VERBS, - illegal: /\n/, - relevance: 5, - contains: [ - { - begin: /HTTP\/[12]\.\d'/, - relevance: 5 - } - ] - }, - // Dates - { - className: 'string', - // dates must have a certain length, this prevents matching - // simple array accesses a[123] and [] and other common patterns - // found in other languages - begin: /\[\d[^\]\n]{8,}\]/, - illegal: /\n/, - relevance: 1 - }, - { - className: 'string', - begin: /\[/, - end: /\]/, - illegal: /\n/, - relevance: 0 - }, - // User agent / relevance boost - { - className: 'string', - begin: /"Mozilla\/\d\.\d \(/, - end: /"/, - illegal: /\n/, - relevance: 3 - }, - // Strings - { - className: 'string', - begin: /"/, - end: /"/, - illegal: /\n/, - relevance: 0 - } - ] - }; -} - -module.exports = accesslog; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/actionscript.js" -/*!*********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/actionscript.js ***! - \*********************************************************************/ -(module) { - -/* -Language: ActionScript -Author: Alexander Myadzel -Category: scripting -Audit: 2020 -*/ - -/** @type LanguageFn */ -function actionscript(hljs) { - const regex = hljs.regex; - const IDENT_RE = /[a-zA-Z_$][a-zA-Z0-9_$]*/; - const PKG_NAME_RE = regex.concat( - IDENT_RE, - regex.concat("(\\.", IDENT_RE, ")*") - ); - const IDENT_FUNC_RETURN_TYPE_RE = /([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/; - - const AS3_REST_ARG_MODE = { - className: 'rest_arg', - begin: /[.]{3}/, - end: IDENT_RE, - relevance: 10 - }; - - const KEYWORDS = [ - "as", - "break", - "case", - "catch", - "class", - "const", - "continue", - "default", - "delete", - "do", - "dynamic", - "each", - "else", - "extends", - "final", - "finally", - "for", - "function", - "get", - "if", - "implements", - "import", - "in", - "include", - "instanceof", - "interface", - "internal", - "is", - "namespace", - "native", - "new", - "override", - "package", - "private", - "protected", - "public", - "return", - "set", - "static", - "super", - "switch", - "this", - "throw", - "try", - "typeof", - "use", - "var", - "void", - "while", - "with" - ]; - const LITERALS = [ - "true", - "false", - "null", - "undefined" - ]; - - return { - name: 'ActionScript', - aliases: [ 'as' ], - keywords: { - keyword: KEYWORDS, - literal: LITERALS - }, - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_NUMBER_MODE, - { - match: [ - /\bpackage/, - /\s+/, - PKG_NAME_RE - ], - className: { - 1: "keyword", - 3: "title.class" - } - }, - { - match: [ - /\b(?:class|interface|extends|implements)/, - /\s+/, - IDENT_RE - ], - className: { - 1: "keyword", - 3: "title.class" - } - }, - { - className: 'meta', - beginKeywords: 'import include', - end: /;/, - keywords: { keyword: 'import include' } - }, - { - beginKeywords: 'function', - end: /[{;]/, - excludeEnd: true, - illegal: /\S/, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { className: "title.function" }), - { - className: 'params', - begin: /\(/, - end: /\)/, - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AS3_REST_ARG_MODE - ] - }, - { begin: regex.concat(/:\s*/, IDENT_FUNC_RETURN_TYPE_RE) } - ] - }, - hljs.METHOD_GUARD - ], - illegal: /#/ - }; -} - -module.exports = actionscript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ada.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ada.js ***! - \************************************************************/ -(module) { - -/* -Language: Ada -Author: Lars Schulna -Description: Ada is a general-purpose programming language that has great support for saftey critical and real-time applications. - It has been developed by the DoD and thus has been used in military and safety-critical applications (like civil aviation). - The first version appeared in the 80s, but it's still actively developed today with - the newest standard being Ada2012. -*/ - -// We try to support full Ada2012 -// -// We highlight all appearances of types, keywords, literals (string, char, number, bool) -// and titles (user defined function/procedure/package) -// CSS classes are set accordingly -// -// Languages causing problems for language detection: -// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword) -// sql (ada default.txt has a lot of sql keywords) - -/** @type LanguageFn */ -function ada(hljs) { - // Regular expression for Ada numeric literals. - // stolen form the VHDL highlighter - - // Decimal literal: - const INTEGER_RE = '\\d(_|\\d)*'; - const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE; - const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?'; - - // Based literal: - const BASED_INTEGER_RE = '\\w+'; - const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?'; - - const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')'; - - // Identifier regex - const ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*'; - - // bad chars, only allowed in literals - const BAD_CHARS = `[]\\{\\}%#'"`; - - // Ada doesn't have block comments, only line comments - const COMMENTS = hljs.COMMENT('--', '$'); - - // variable declarations of the form - // Foo : Bar := Baz; - // where only Bar will be highlighted - const VAR_DECLS = { - // TODO: These spaces are not required by the Ada syntax - // however, I have yet to see handwritten Ada code where - // someone does not put spaces around : - begin: '\\s+:\\s+', - end: '\\s*(:=|;|\\)|=>|$)', - // endsWithParent: true, - // returnBegin: true, - illegal: BAD_CHARS, - contains: [ - { - // workaround to avoid highlighting - // named loops and declare blocks - beginKeywords: 'loop for declare others', - endsParent: true - }, - { - // properly highlight all modifiers - className: 'keyword', - beginKeywords: 'not null constant access function procedure in out aliased exception' - }, - { - className: 'type', - begin: ID_REGEX, - endsParent: true, - relevance: 0 - } - ] - }; - - const KEYWORDS = [ - "abort", - "else", - "new", - "return", - "abs", - "elsif", - "not", - "reverse", - "abstract", - "end", - "accept", - "entry", - "select", - "access", - "exception", - "of", - "separate", - "aliased", - "exit", - "or", - "some", - "all", - "others", - "subtype", - "and", - "for", - "out", - "synchronized", - "array", - "function", - "overriding", - "at", - "tagged", - "generic", - "package", - "task", - "begin", - "goto", - "pragma", - "terminate", - "body", - "private", - "then", - "if", - "procedure", - "type", - "case", - "in", - "protected", - "constant", - "interface", - "is", - "raise", - "use", - "declare", - "range", - "delay", - "limited", - "record", - "when", - "delta", - "loop", - "rem", - "while", - "digits", - "renames", - "with", - "do", - "mod", - "requeue", - "xor" - ]; - - return { - name: 'Ada', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - literal: [ - "True", - "False" - ] - }, - contains: [ - COMMENTS, - // strings "foobar" - { - className: 'string', - begin: /"/, - end: /"/, - contains: [ - { - begin: /""/, - relevance: 0 - } - ] - }, - // characters '' - { - // character literals always contain one char - className: 'string', - begin: /'.'/ - }, - { - // number literals - className: 'number', - begin: NUMBER_RE, - relevance: 0 - }, - { - // Attributes - className: 'symbol', - begin: "'" + ID_REGEX - }, - { - // package definition, maybe inside generic - className: 'title', - begin: '(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?', - end: '(is|$)', - keywords: 'package body', - excludeBegin: true, - excludeEnd: true, - illegal: BAD_CHARS - }, - { - // function/procedure declaration/definition - // maybe inside generic - begin: '(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+', - end: '(\\bis|\\bwith|\\brenames|\\)\\s*;)', - keywords: 'overriding function procedure with is renames return', - // we need to re-match the 'function' keyword, so that - // the title mode below matches only exactly once - returnBegin: true, - contains: - [ - COMMENTS, - { - // name of the function/procedure - className: 'title', - begin: '(\\bwith\\s+)?\\b(function|procedure)\\s+', - end: '(\\(|\\s+|$)', - excludeBegin: true, - excludeEnd: true, - illegal: BAD_CHARS - }, - // 'self' - // // parameter types - VAR_DECLS, - { - // return type - className: 'type', - begin: '\\breturn\\s+', - end: '(\\s+|;|$)', - keywords: 'return', - excludeBegin: true, - excludeEnd: true, - // we are done with functions - endsParent: true, - illegal: BAD_CHARS - - } - ] - }, - { - // new type declarations - // maybe inside generic - className: 'type', - begin: '\\b(sub)?type\\s+', - end: '\\s+', - keywords: 'type', - excludeBegin: true, - illegal: BAD_CHARS - }, - - // see comment above the definition - VAR_DECLS - - // no markup - // relevance boosters for small snippets - // {begin: '\\s*=>\\s*'}, - // {begin: '\\s*:=\\s*'}, - // {begin: '\\s+:=\\s+'}, - ] - }; -} - -module.exports = ada; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/angelscript.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/angelscript.js ***! - \********************************************************************/ -(module) { - -/* -Language: AngelScript -Author: Melissa Geels -Category: scripting -Website: https://www.angelcode.com/angelscript/ -*/ - -/** @type LanguageFn */ -function angelscript(hljs) { - const builtInTypeMode = { - className: 'built_in', - begin: '\\b(void|bool|int8|int16|int32|int64|int|uint8|uint16|uint32|uint64|uint|string|ref|array|double|float|auto|dictionary)' - }; - - const objectHandleMode = { - className: 'symbol', - begin: '[a-zA-Z0-9_]+@' - }; - - const genericMode = { - className: 'keyword', - begin: '<', - end: '>', - contains: [ - builtInTypeMode, - objectHandleMode - ] - }; - - builtInTypeMode.contains = [ genericMode ]; - objectHandleMode.contains = [ genericMode ]; - - const KEYWORDS = [ - "for", - "in|0", - "break", - "continue", - "while", - "do|0", - "return", - "if", - "else", - "case", - "switch", - "namespace", - "is", - "cast", - "or", - "and", - "xor", - "not", - "get|0", - "in", - "inout|10", - "out", - "override", - "set|0", - "private", - "public", - "const", - "default|0", - "final", - "shared", - "external", - "mixin|10", - "enum", - "typedef", - "funcdef", - "this", - "super", - "import", - "from", - "interface", - "abstract|0", - "try", - "catch", - "protected", - "explicit", - "property" - ]; - - return { - name: 'AngelScript', - aliases: [ 'asc' ], - - keywords: KEYWORDS, - - // avoid close detection with C# and JS - illegal: '(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])', - - contains: [ - { // 'strings' - className: 'string', - begin: '\'', - end: '\'', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ], - relevance: 0 - }, - - // """heredoc strings""" - { - className: 'string', - begin: '"""', - end: '"""' - }, - - { // "strings" - className: 'string', - begin: '"', - end: '"', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ], - relevance: 0 - }, - - hljs.C_LINE_COMMENT_MODE, // single-line comments - hljs.C_BLOCK_COMMENT_MODE, // comment blocks - - { // metadata - className: 'string', - begin: '^\\s*\\[', - end: '\\]' - }, - - { // interface or namespace declaration - beginKeywords: 'interface namespace', - end: /\{/, - illegal: '[;.\\-]', - contains: [ - { // interface or namespace name - className: 'symbol', - begin: '[a-zA-Z0-9_]+' - } - ] - }, - - { // class declaration - beginKeywords: 'class', - end: /\{/, - illegal: '[;.\\-]', - contains: [ - { // class name - className: 'symbol', - begin: '[a-zA-Z0-9_]+', - contains: [ - { - begin: '[:,]\\s*', - contains: [ - { - className: 'symbol', - begin: '[a-zA-Z0-9_]+' - } - ] - } - ] - } - ] - }, - - builtInTypeMode, // built-in types - objectHandleMode, // object handles - - { // literals - className: 'literal', - begin: '\\b(null|true|false)' - }, - - { // numbers - className: 'number', - relevance: 0, - begin: '(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)' - } - ] - }; -} - -module.exports = angelscript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/apache.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/apache.js ***! - \***************************************************************/ -(module) { - -/* -Language: Apache config -Author: Ruslan Keba -Contributors: Ivan Sagalaev -Website: https://httpd.apache.org -Description: language definition for Apache configuration files (httpd.conf & .htaccess) -Category: config, web -Audit: 2020 -*/ - -/** @type LanguageFn */ -function apache(hljs) { - const NUMBER_REF = { - className: 'number', - begin: /[$%]\d+/ - }; - const NUMBER = { - className: 'number', - begin: /\b\d+/ - }; - const IP_ADDRESS = { - className: "number", - begin: /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/ - }; - const PORT_NUMBER = { - className: "number", - begin: /:\d{1,5}/ - }; - return { - name: 'Apache config', - aliases: [ 'apacheconf' ], - case_insensitive: true, - contains: [ - hljs.HASH_COMMENT_MODE, - { - className: 'section', - begin: /<\/?/, - end: />/, - contains: [ - IP_ADDRESS, - PORT_NUMBER, - // low relevance prevents us from claming XML/HTML where this rule would - // match strings inside of XML tags - hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 }) - ] - }, - { - className: 'attribute', - begin: /\w+/, - relevance: 0, - // keywords aren’t needed for highlighting per se, they only boost relevance - // for a very generally defined mode (starts with a word, ends with line-end - keywords: { _: [ - "order", - "deny", - "allow", - "setenv", - "rewriterule", - "rewriteengine", - "rewritecond", - "documentroot", - "sethandler", - "errordocument", - "loadmodule", - "options", - "header", - "listen", - "serverroot", - "servername" - ] }, - starts: { - end: /$/, - relevance: 0, - keywords: { literal: 'on off all deny allow' }, - contains: [ - { - scope: "punctuation", - match: /\\\n/ - }, - { - className: 'meta', - begin: /\s\[/, - end: /\]$/ - }, - { - className: 'variable', - begin: /[\$%]\{/, - end: /\}/, - contains: [ - 'self', - NUMBER_REF - ] - }, - IP_ADDRESS, - NUMBER, - hljs.QUOTE_STRING_MODE - ] - } - } - ], - illegal: /\S/ - }; -} - -module.exports = apache; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/applescript.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/applescript.js ***! - \********************************************************************/ -(module) { - -/* -Language: AppleScript -Authors: Nathan Grigg , Dr. Drang -Category: scripting -Website: https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html -Audit: 2020 -*/ - -/** @type LanguageFn */ -function applescript(hljs) { - const regex = hljs.regex; - const STRING = hljs.inherit( - hljs.QUOTE_STRING_MODE, { illegal: null }); - const PARAMS = { - className: 'params', - begin: /\(/, - end: /\)/, - contains: [ - 'self', - hljs.C_NUMBER_MODE, - STRING - ] - }; - const COMMENT_MODE_1 = hljs.COMMENT(/--/, /$/); - const COMMENT_MODE_2 = hljs.COMMENT( - /\(\*/, - /\*\)/, - { contains: [ - 'self', // allow nesting - COMMENT_MODE_1 - ] } - ); - const COMMENTS = [ - COMMENT_MODE_1, - COMMENT_MODE_2, - hljs.HASH_COMMENT_MODE - ]; - - const KEYWORD_PATTERNS = [ - /apart from/, - /aside from/, - /instead of/, - /out of/, - /greater than/, - /isn't|(doesn't|does not) (equal|come before|come after|contain)/, - /(greater|less) than( or equal)?/, - /(starts?|ends|begins?) with/, - /contained by/, - /comes (before|after)/, - /a (ref|reference)/, - /POSIX (file|path)/, - /(date|time) string/, - /quoted form/ - ]; - - const BUILT_IN_PATTERNS = [ - /clipboard info/, - /the clipboard/, - /info for/, - /list (disks|folder)/, - /mount volume/, - /path to/, - /(close|open for) access/, - /(get|set) eof/, - /current date/, - /do shell script/, - /get volume settings/, - /random number/, - /set volume/, - /system attribute/, - /system info/, - /time to GMT/, - /(load|run|store) script/, - /scripting components/, - /ASCII (character|number)/, - /localized string/, - /choose (application|color|file|file name|folder|from list|remote application|URL)/, - /display (alert|dialog)/ - ]; - - return { - name: 'AppleScript', - aliases: [ 'osascript' ], - keywords: { - keyword: - 'about above after against and around as at back before beginning ' - + 'behind below beneath beside between but by considering ' - + 'contain contains continue copy div does eighth else end equal ' - + 'equals error every exit fifth first for fourth from front ' - + 'get given global if ignoring in into is it its last local me ' - + 'middle mod my ninth not of on onto or over prop property put ref ' - + 'reference repeat returning script second set seventh since ' - + 'sixth some tell tenth that the|0 then third through thru ' - + 'timeout times to transaction try until where while whose with ' - + 'without', - literal: - 'AppleScript false linefeed return pi quote result space tab true', - built_in: - 'alias application boolean class constant date file integer list ' - + 'number real record string text ' - + 'activate beep count delay launch log offset read round ' - + 'run say summarize write ' - + 'character characters contents day frontmost id item length ' - + 'month name|0 paragraph paragraphs rest reverse running time version ' - + 'weekday word words year' - }, - contains: [ - STRING, - hljs.C_NUMBER_MODE, - { - className: 'built_in', - begin: regex.concat( - /\b/, - regex.either(...BUILT_IN_PATTERNS), - /\b/ - ) - }, - { - className: 'built_in', - begin: /^\s*return\b/ - }, - { - className: 'literal', - begin: - /\b(text item delimiters|current application|missing value)\b/ - }, - { - className: 'keyword', - begin: regex.concat( - /\b/, - regex.either(...KEYWORD_PATTERNS), - /\b/ - ) - }, - { - beginKeywords: 'on', - illegal: /[${=;\n]/, - contains: [ - hljs.UNDERSCORE_TITLE_MODE, - PARAMS - ] - }, - ...COMMENTS - ], - illegal: /\/\/|->|=>|\[\[/ - }; -} - -module.exports = applescript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/arcade.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/arcade.js ***! - \***************************************************************/ -(module) { - -/* - Language: ArcGIS Arcade - Category: scripting - Website: https://developers.arcgis.com/arcade/ - Description: ArcGIS Arcade is an expression language used in many Esri ArcGIS products such as Pro, Online, Server, Runtime, JavaScript, and Python -*/ - -/** @type LanguageFn */ -function arcade(hljs) { - const regex = hljs.regex; - const IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*'; - const KEYWORDS = { - keyword: [ - "break", - "case", - "catch", - "continue", - "debugger", - "do", - "else", - "export", - "for", - "function", - "if", - "import", - "in", - "new", - "of", - "return", - "switch", - "try", - "var", - "void", - "while" - ], - literal: [ - "BackSlash", - "DoubleQuote", - "ForwardSlash", - "Infinity", - "NaN", - "NewLine", - "PI", - "SingleQuote", - "Tab", - "TextFormatting", - "false", - "null", - "true", - "undefined" - ], - built_in: [ - "Abs", - "Acos", - "All", - "Angle", - "Any", - "Area", - "AreaGeodetic", - "Array", - "Asin", - "Atan", - "Atan2", - "Attachments", - "Average", - "Back", - "Bearing", - "Boolean", - "Buffer", - "BufferGeodetic", - "Ceil", - "Centroid", - "ChangeTimeZone", - "Clip", - "Concatenate", - "Console", - "Constrain", - "Contains", - "ConvertDirection", - "ConvexHull", - "Cos", - "Count", - "Crosses", - "Cut", - "Date|0", - "DateAdd", - "DateDiff", - "DateOnly", - "Day", - "Decode", - "DefaultValue", - "Densify", - "DensifyGeodetic", - "Dictionary", - "Difference", - "Disjoint", - "Distance", - "DistanceGeodetic", - "DistanceToCoordinate", - "Distinct", - "Domain", - "DomainCode", - "DomainName", - "EnvelopeIntersects", - "Equals", - "Erase", - "Exp", - "Expects", - "Extent", - "Feature", - "FeatureInFilter", - "FeatureSet", - "FeatureSetByAssociation", - "FeatureSetById", - "FeatureSetByName", - "FeatureSetByPortalItem", - "FeatureSetByRelationshipClass", - "FeatureSetByRelationshipName", - "Filter", - "FilterBySubtypeCode", - "Find", - "First|0", - "Floor", - "FromCharCode", - "FromCodePoint", - "FromJSON", - "Front", - "GdbVersion", - "Generalize", - "Geometry", - "GetEnvironment", - "GetFeatureSet", - "GetFeatureSetInfo", - "GetUser", - "GroupBy", - "Guid", - "HasKey", - "HasValue", - "Hash", - "Hour", - "IIf", - "ISOMonth", - "ISOWeek", - "ISOWeekday", - "ISOYear", - "Includes", - "IndexOf", - "Insert", - "Intersection", - "Intersects", - "IsEmpty", - "IsNan", - "IsSelfIntersecting", - "IsSimple", - "KnowledgeGraphByPortalItem", - "Left|0", - "Length", - "Length3D", - "LengthGeodetic", - "Log", - "Lower", - "Map", - "Max", - "Mean", - "MeasureToCoordinate", - "Mid", - "Millisecond", - "Min", - "Minute", - "Month", - "MultiPartToSinglePart", - "Multipoint", - "NearestCoordinate", - "NearestVertex", - "NextSequenceValue", - "None", - "Now", - "Number", - "Offset", - "OrderBy", - "Overlaps", - "Point", - "PointToCoordinate", - "Polygon", - "Polyline", - "Pop", - "Portal", - "Pow", - "Proper", - "Push", - "QueryGraph", - "Random", - "Reduce", - "Relate", - "Replace", - "Resize", - "Reverse", - "Right|0", - "RingIsClockwise", - "Rotate", - "Round", - "Schema", - "Second", - "SetGeometry", - "Simplify", - "Sin", - "Slice", - "Sort", - "Splice", - "Split", - "Sqrt", - "StandardizeFilename", - "StandardizeGuid", - "Stdev", - "SubtypeCode", - "SubtypeName", - "Subtypes", - "Sum", - "SymmetricDifference", - "Tan", - "Text", - "Time", - "TimeZone", - "TimeZoneOffset", - "Timestamp", - "ToCharCode", - "ToCodePoint", - "ToHex", - "ToLocal", - "ToUTC", - "Today", - "Top|0", - "Touches", - "TrackAccelerationAt", - "TrackAccelerationWindow", - "TrackCurrentAcceleration", - "TrackCurrentDistance", - "TrackCurrentSpeed", - "TrackCurrentTime", - "TrackDistanceAt", - "TrackDistanceWindow", - "TrackDuration", - "TrackFieldWindow", - "TrackGeometryWindow", - "TrackIndex", - "TrackSpeedAt", - "TrackSpeedWindow", - "TrackStartTime", - "TrackWindow", - "Trim", - "TypeOf", - "Union", - "Upper", - "UrlEncode", - "Variance", - "Week", - "Weekday", - "When|0", - "Within", - "Year|0", - ] - }; - const PROFILE_VARS = [ - "aggregatedFeatures", - "analytic", - "config", - "datapoint", - "datastore", - "editcontext", - "feature", - "featureSet", - "feedfeature", - "fencefeature", - "fencenotificationtype", - "graph", - "join", - "layer", - "locationupdate", - "map", - "measure", - "measure", - "originalFeature", - "record", - "reference", - "rowindex", - "sourcedatastore", - "sourcefeature", - "sourcelayer", - "target", - "targetdatastore", - "targetfeature", - "targetlayer", - "userInput", - "value", - "variables", - "view" - ]; - const SYMBOL = { - className: 'symbol', - begin: '\\$' + regex.either(...PROFILE_VARS) - }; - const NUMBER = { - className: 'number', - variants: [ - { begin: '\\b(0[bB][01]+)' }, - { begin: '\\b(0[oO][0-7]+)' }, - { begin: hljs.C_NUMBER_RE } - ], - relevance: 0 - }; - const SUBST = { - className: 'subst', - begin: '\\$\\{', - end: '\\}', - keywords: KEYWORDS, - contains: [] // defined later - }; - const TEMPLATE_STRING = { - className: 'string', - begin: '`', - end: '`', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - SUBST.contains = [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - TEMPLATE_STRING, - NUMBER, - hljs.REGEXP_MODE - ]; - const PARAMS_CONTAINS = SUBST.contains.concat([ - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_LINE_COMMENT_MODE - ]); - - return { - name: 'ArcGIS Arcade', - case_insensitive: true, - keywords: KEYWORDS, - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - TEMPLATE_STRING, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - SYMBOL, - NUMBER, - { // object attr container - begin: /[{,]\s*/, - relevance: 0, - contains: [ - { - begin: IDENT_RE + '\\s*:', - returnBegin: true, - relevance: 0, - contains: [ - { - className: 'attr', - begin: IDENT_RE, - relevance: 0 - } - ] - } - ] - }, - { // "value" container - begin: '(' + hljs.RE_STARTERS_RE + '|\\b(return)\\b)\\s*', - keywords: 'return', - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.REGEXP_MODE, - { - className: 'function', - begin: '(\\(.*?\\)|' + IDENT_RE + ')\\s*=>', - returnBegin: true, - end: '\\s*=>', - contains: [ - { - className: 'params', - variants: [ - { begin: IDENT_RE }, - { begin: /\(\s*\)/ }, - { - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS, - contains: PARAMS_CONTAINS - } - ] - } - ] - } - ], - relevance: 0 - }, - { - beginKeywords: 'function', - end: /\{/, - excludeEnd: true, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { - className: "title.function", - begin: IDENT_RE - }), - { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - contains: PARAMS_CONTAINS - } - ], - illegal: /\[|%/ - }, - { begin: /\$[(.]/ } - ], - illegal: /#(?!!)/ - }; -} - -module.exports = arcade; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/arduino.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/arduino.js ***! - \****************************************************************/ -(module) { - -/* -Language: C++ -Category: common, system -Website: https://isocpp.org -*/ - -/** @type LanguageFn */ -function cPlusPlus(hljs) { - const regex = hljs.regex; - // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does - // not include such support nor can we be sure all the grammars depending - // on it would desire this behavior - const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); - const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; - const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; - const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; - const FUNCTION_TYPE_RE = '(?!struct)(' - + DECLTYPE_AUTO_RE + '|' - + regex.optional(NAMESPACE_RE) - + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) - + ')'; - - const CPP_PRIMITIVE_TYPES = { - className: 'type', - begin: '\\b[a-z\\d_]*_t\\b' - }; - - // https://en.cppreference.com/w/cpp/language/escape - // \\ \x \xFF \u2837 \u00323747 \374 - const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; - const STRINGS = { - className: 'string', - variants: [ - { - begin: '(u8?|U|L)?"', - end: '"', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + '|.)', - end: '\'', - illegal: '.' - }, - hljs.END_SAME_AS_BEGIN({ - begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, - end: /\)([^()\\ ]{0,16})"/ - }) - ] - }; - - const NUMBERS = { - className: 'number', - variants: [ - // Floating-point literal. - { begin: - "[+-]?(?:" // Leading sign. - // Decimal. - + "(?:" - +"[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?" - + "|\\.[0-9](?:'?[0-9])*" - + ")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?" - + "|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*" - // Hexadecimal. - + "|0[Xx](?:" - +"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?" - + "|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*" - + ")[Pp][+-]?[0-9](?:'?[0-9])*" - + ")(?:" // Literal suffixes. - + "[Ff](?:16|32|64|128)?" - + "|(BF|bf)16" - + "|[Ll]" - + "|" // Literal suffix is optional. - + ")" - }, - // Integer literal. - { begin: - "[+-]?\\b(?:" // Leading sign. - + "0[Bb][01](?:'?[01])*" // Binary. - + "|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*" // Hexadecimal. - + "|0(?:'?[0-7])*" // Octal or just a lone zero. - + "|[1-9](?:'?[0-9])*" // Decimal. - + ")(?:" // Literal suffixes. - + "[Uu](?:LL?|ll?)" - + "|[Uu][Zz]?" - + "|(?:LL?|ll?)[Uu]?" - + "|[Zz][Uu]" - + "|" // Literal suffix is optional. - + ")" - // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the - // literal highlight actually makes it stand out more. - } - ], - relevance: 0 - }; - - const PREPROCESSOR = { - className: 'meta', - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: { keyword: - 'if else elif endif define undef warning error line ' - + 'pragma _Pragma ifdef ifndef include' }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - hljs.inherit(STRINGS, { className: 'string' }), - { - className: 'string', - begin: /<.*?>/ - }, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; - - const TITLE_MODE = { - className: 'title', - begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, - relevance: 0 - }; - - const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; - - // https://en.cppreference.com/w/cpp/keyword - const RESERVED_KEYWORDS = [ - 'alignas', - 'alignof', - 'and', - 'and_eq', - 'asm', - 'atomic_cancel', - 'atomic_commit', - 'atomic_noexcept', - 'auto', - 'bitand', - 'bitor', - 'break', - 'case', - 'catch', - 'class', - 'co_await', - 'co_return', - 'co_yield', - 'compl', - 'concept', - 'const_cast|10', - 'consteval', - 'constexpr', - 'constinit', - 'continue', - 'decltype', - 'default', - 'delete', - 'do', - 'dynamic_cast|10', - 'else', - 'enum', - 'explicit', - 'export', - 'extern', - 'false', - 'final', - 'for', - 'friend', - 'goto', - 'if', - 'import', - 'inline', - 'module', - 'mutable', - 'namespace', - 'new', - 'noexcept', - 'not', - 'not_eq', - 'nullptr', - 'operator', - 'or', - 'or_eq', - 'override', - 'private', - 'protected', - 'public', - 'reflexpr', - 'register', - 'reinterpret_cast|10', - 'requires', - 'return', - 'sizeof', - 'static_assert', - 'static_cast|10', - 'struct', - 'switch', - 'synchronized', - 'template', - 'this', - 'thread_local', - 'throw', - 'transaction_safe', - 'transaction_safe_dynamic', - 'true', - 'try', - 'typedef', - 'typeid', - 'typename', - 'union', - 'using', - 'virtual', - 'volatile', - 'while', - 'xor', - 'xor_eq' - ]; - - // https://en.cppreference.com/w/cpp/keyword - const RESERVED_TYPES = [ - 'bool', - 'char', - 'char16_t', - 'char32_t', - 'char8_t', - 'double', - 'float', - 'int', - 'long', - 'short', - 'void', - 'wchar_t', - 'unsigned', - 'signed', - 'const', - 'static' - ]; - - const TYPE_HINTS = [ - 'any', - 'auto_ptr', - 'barrier', - 'binary_semaphore', - 'bitset', - 'complex', - 'condition_variable', - 'condition_variable_any', - 'counting_semaphore', - 'deque', - 'false_type', - 'flat_map', - 'flat_set', - 'future', - 'imaginary', - 'initializer_list', - 'istringstream', - 'jthread', - 'latch', - 'lock_guard', - 'multimap', - 'multiset', - 'mutex', - 'optional', - 'ostringstream', - 'packaged_task', - 'pair', - 'promise', - 'priority_queue', - 'queue', - 'recursive_mutex', - 'recursive_timed_mutex', - 'scoped_lock', - 'set', - 'shared_future', - 'shared_lock', - 'shared_mutex', - 'shared_timed_mutex', - 'shared_ptr', - 'stack', - 'string_view', - 'stringstream', - 'timed_mutex', - 'thread', - 'true_type', - 'tuple', - 'unique_lock', - 'unique_ptr', - 'unordered_map', - 'unordered_multimap', - 'unordered_multiset', - 'unordered_set', - 'variant', - 'vector', - 'weak_ptr', - 'wstring', - 'wstring_view' - ]; - - const FUNCTION_HINTS = [ - 'abort', - 'abs', - 'acos', - 'apply', - 'as_const', - 'asin', - 'atan', - 'atan2', - 'calloc', - 'ceil', - 'cerr', - 'cin', - 'clog', - 'cos', - 'cosh', - 'cout', - 'declval', - 'endl', - 'exchange', - 'exit', - 'exp', - 'fabs', - 'floor', - 'fmod', - 'forward', - 'fprintf', - 'fputs', - 'free', - 'frexp', - 'fscanf', - 'future', - 'invoke', - 'isalnum', - 'isalpha', - 'iscntrl', - 'isdigit', - 'isgraph', - 'islower', - 'isprint', - 'ispunct', - 'isspace', - 'isupper', - 'isxdigit', - 'labs', - 'launder', - 'ldexp', - 'log', - 'log10', - 'make_pair', - 'make_shared', - 'make_shared_for_overwrite', - 'make_tuple', - 'make_unique', - 'malloc', - 'memchr', - 'memcmp', - 'memcpy', - 'memset', - 'modf', - 'move', - 'pow', - 'printf', - 'putchar', - 'puts', - 'realloc', - 'scanf', - 'sin', - 'sinh', - 'snprintf', - 'sprintf', - 'sqrt', - 'sscanf', - 'std', - 'stderr', - 'stdin', - 'stdout', - 'strcat', - 'strchr', - 'strcmp', - 'strcpy', - 'strcspn', - 'strlen', - 'strncat', - 'strncmp', - 'strncpy', - 'strpbrk', - 'strrchr', - 'strspn', - 'strstr', - 'swap', - 'tan', - 'tanh', - 'terminate', - 'to_underlying', - 'tolower', - 'toupper', - 'vfprintf', - 'visit', - 'vprintf', - 'vsprintf' - ]; - - const LITERALS = [ - 'NULL', - 'false', - 'nullopt', - 'nullptr', - 'true' - ]; - - // https://en.cppreference.com/w/cpp/keyword - const BUILT_IN = [ '_Pragma' ]; - - const CPP_KEYWORDS = { - type: RESERVED_TYPES, - keyword: RESERVED_KEYWORDS, - literal: LITERALS, - built_in: BUILT_IN, - _type_hints: TYPE_HINTS - }; - - const FUNCTION_DISPATCH = { - className: 'function.dispatch', - relevance: 0, - keywords: { - // Only for relevance, not highlighting. - _hint: FUNCTION_HINTS }, - begin: regex.concat( - /\b/, - /(?!decltype)/, - /(?!if)/, - /(?!for)/, - /(?!switch)/, - /(?!while)/, - hljs.IDENT_RE, - regex.lookahead(/(<[^<>]+>|)\s*\(/)) - }; - - const EXPRESSION_CONTAINS = [ - FUNCTION_DISPATCH, - PREPROCESSOR, - CPP_PRIMITIVE_TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - NUMBERS, - STRINGS - ]; - - const EXPRESSION_CONTEXT = { - // This mode covers expression context where we can't expect a function - // definition and shouldn't highlight anything that looks like one: - // `return some()`, `else if()`, `(x*sum(1, 2))` - variants: [ - { - begin: /=/, - end: /;/ - }, - { - begin: /\(/, - end: /\)/ - }, - { - beginKeywords: 'new throw return else', - end: /;/ - } - ], - keywords: CPP_KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ - { - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ 'self' ]), - relevance: 0 - } - ]), - relevance: 0 - }; - - const FUNCTION_DECLARATION = { - className: 'function', - begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, - returnBegin: true, - end: /[{;=]/, - excludeEnd: true, - keywords: CPP_KEYWORDS, - illegal: /[^\w\s\*&:<>.]/, - contains: [ - { // to prevent it from being confused as the function title - begin: DECLTYPE_AUTO_RE, - keywords: CPP_KEYWORDS, - relevance: 0 - }, - { - begin: FUNCTION_TITLE, - returnBegin: true, - contains: [ TITLE_MODE ], - relevance: 0 - }, - // needed because we do not have look-behind on the below rule - // to prevent it from grabbing the final : in a :: pair - { - begin: /::/, - relevance: 0 - }, - // initializers - { - begin: /:/, - endsWithParent: true, - contains: [ - STRINGS, - NUMBERS - ] - }, - // allow for multiple declarations, e.g.: - // extern void f(int), g(char); - { - relevance: 0, - match: /,/ - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - relevance: 0, - contains: [ - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - CPP_PRIMITIVE_TYPES, - // Count matching parentheses. - { - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - relevance: 0, - contains: [ - 'self', - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - CPP_PRIMITIVE_TYPES - ] - } - ] - }, - CPP_PRIMITIVE_TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - PREPROCESSOR - ] - }; - - return { - name: 'C++', - aliases: [ - 'cc', - 'c++', - 'h++', - 'hpp', - 'hh', - 'hxx', - 'cxx' - ], - keywords: CPP_KEYWORDS, - illegal: ' rooms (9);` - begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)', - end: '>', - keywords: CPP_KEYWORDS, - contains: [ - 'self', - CPP_PRIMITIVE_TYPES - ] - }, - { - begin: hljs.IDENT_RE + '::', - keywords: CPP_KEYWORDS - }, - { - match: [ - // extra complexity to deal with `enum class` and `enum struct` - /\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, - /\s+/, - /\w+/ - ], - className: { - 1: 'keyword', - 3: 'title.class' - } - } - ]) - }; -} - -/* -Language: Arduino -Author: Stefania Mellai -Description: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc. -Website: https://www.arduino.cc -Category: system -*/ - - -/** @type LanguageFn */ -function arduino(hljs) { - const ARDUINO_KW = { - type: [ - "boolean", - "byte", - "word", - "String" - ], - built_in: [ - "KeyboardController", - "MouseController", - "SoftwareSerial", - "EthernetServer", - "EthernetClient", - "LiquidCrystal", - "RobotControl", - "GSMVoiceCall", - "EthernetUDP", - "EsploraTFT", - "HttpClient", - "RobotMotor", - "WiFiClient", - "GSMScanner", - "FileSystem", - "Scheduler", - "GSMServer", - "YunClient", - "YunServer", - "IPAddress", - "GSMClient", - "GSMModem", - "Keyboard", - "Ethernet", - "Console", - "GSMBand", - "Esplora", - "Stepper", - "Process", - "WiFiUDP", - "GSM_SMS", - "Mailbox", - "USBHost", - "Firmata", - "PImage", - "Client", - "Server", - "GSMPIN", - "FileIO", - "Bridge", - "Serial", - "EEPROM", - "Stream", - "Mouse", - "Audio", - "Servo", - "File", - "Task", - "GPRS", - "WiFi", - "Wire", - "TFT", - "GSM", - "SPI", - "SD" - ], - _hints: [ - "setup", - "loop", - "runShellCommandAsynchronously", - "analogWriteResolution", - "retrieveCallingNumber", - "printFirmwareVersion", - "analogReadResolution", - "sendDigitalPortPair", - "noListenOnLocalhost", - "readJoystickButton", - "setFirmwareVersion", - "readJoystickSwitch", - "scrollDisplayRight", - "getVoiceCallStatus", - "scrollDisplayLeft", - "writeMicroseconds", - "delayMicroseconds", - "beginTransmission", - "getSignalStrength", - "runAsynchronously", - "getAsynchronously", - "listenOnLocalhost", - "getCurrentCarrier", - "readAccelerometer", - "messageAvailable", - "sendDigitalPorts", - "lineFollowConfig", - "countryNameWrite", - "runShellCommand", - "readStringUntil", - "rewindDirectory", - "readTemperature", - "setClockDivider", - "readLightSensor", - "endTransmission", - "analogReference", - "detachInterrupt", - "countryNameRead", - "attachInterrupt", - "encryptionType", - "readBytesUntil", - "robotNameWrite", - "readMicrophone", - "robotNameRead", - "cityNameWrite", - "userNameWrite", - "readJoystickY", - "readJoystickX", - "mouseReleased", - "openNextFile", - "scanNetworks", - "noInterrupts", - "digitalWrite", - "beginSpeaker", - "mousePressed", - "isActionDone", - "mouseDragged", - "displayLogos", - "noAutoscroll", - "addParameter", - "remoteNumber", - "getModifiers", - "keyboardRead", - "userNameRead", - "waitContinue", - "processInput", - "parseCommand", - "printVersion", - "readNetworks", - "writeMessage", - "blinkVersion", - "cityNameRead", - "readMessage", - "setDataMode", - "parsePacket", - "isListening", - "setBitOrder", - "beginPacket", - "isDirectory", - "motorsWrite", - "drawCompass", - "digitalRead", - "clearScreen", - "serialEvent", - "rightToLeft", - "setTextSize", - "leftToRight", - "requestFrom", - "keyReleased", - "compassRead", - "analogWrite", - "interrupts", - "WiFiServer", - "disconnect", - "playMelody", - "parseFloat", - "autoscroll", - "getPINUsed", - "setPINUsed", - "setTimeout", - "sendAnalog", - "readSlider", - "analogRead", - "beginWrite", - "createChar", - "motorsStop", - "keyPressed", - "tempoWrite", - "readButton", - "subnetMask", - "debugPrint", - "macAddress", - "writeGreen", - "randomSeed", - "attachGPRS", - "readString", - "sendString", - "remotePort", - "releaseAll", - "mouseMoved", - "background", - "getXChange", - "getYChange", - "answerCall", - "getResult", - "voiceCall", - "endPacket", - "constrain", - "getSocket", - "writeJSON", - "getButton", - "available", - "connected", - "findUntil", - "readBytes", - "exitValue", - "readGreen", - "writeBlue", - "startLoop", - "IPAddress", - "isPressed", - "sendSysex", - "pauseMode", - "gatewayIP", - "setCursor", - "getOemKey", - "tuneWrite", - "noDisplay", - "loadImage", - "switchPIN", - "onRequest", - "onReceive", - "changePIN", - "playFile", - "noBuffer", - "parseInt", - "overflow", - "checkPIN", - "knobRead", - "beginTFT", - "bitClear", - "updateIR", - "bitWrite", - "position", - "writeRGB", - "highByte", - "writeRed", - "setSpeed", - "readBlue", - "noStroke", - "remoteIP", - "transfer", - "shutdown", - "hangCall", - "beginSMS", - "endWrite", - "attached", - "maintain", - "noCursor", - "checkReg", - "checkPUK", - "shiftOut", - "isValid", - "shiftIn", - "pulseIn", - "connect", - "println", - "localIP", - "pinMode", - "getIMEI", - "display", - "noBlink", - "process", - "getBand", - "running", - "beginSD", - "drawBMP", - "lowByte", - "setBand", - "release", - "bitRead", - "prepare", - "pointTo", - "readRed", - "setMode", - "noFill", - "remove", - "listen", - "stroke", - "detach", - "attach", - "noTone", - "exists", - "buffer", - "height", - "bitSet", - "circle", - "config", - "cursor", - "random", - "IRread", - "setDNS", - "endSMS", - "getKey", - "micros", - "millis", - "begin", - "print", - "write", - "ready", - "flush", - "width", - "isPIN", - "blink", - "clear", - "press", - "mkdir", - "rmdir", - "close", - "point", - "yield", - "image", - "BSSID", - "click", - "delay", - "read", - "text", - "move", - "peek", - "beep", - "rect", - "line", - "open", - "seek", - "fill", - "size", - "turn", - "stop", - "home", - "find", - "step", - "tone", - "sqrt", - "RSSI", - "SSID", - "end", - "bit", - "tan", - "cos", - "sin", - "pow", - "map", - "abs", - "max", - "min", - "get", - "run", - "put" - ], - literal: [ - "DIGITAL_MESSAGE", - "FIRMATA_STRING", - "ANALOG_MESSAGE", - "REPORT_DIGITAL", - "REPORT_ANALOG", - "INPUT_PULLUP", - "SET_PIN_MODE", - "INTERNAL2V56", - "SYSTEM_RESET", - "LED_BUILTIN", - "INTERNAL1V1", - "SYSEX_START", - "INTERNAL", - "EXTERNAL", - "DEFAULT", - "OUTPUT", - "INPUT", - "HIGH", - "LOW" - ] - }; - - const ARDUINO = cPlusPlus(hljs); - - const kws = /** @type {Record} */ (ARDUINO.keywords); - - kws.type = [ - ...kws.type, - ...ARDUINO_KW.type - ]; - kws.literal = [ - ...kws.literal, - ...ARDUINO_KW.literal - ]; - kws.built_in = [ - ...kws.built_in, - ...ARDUINO_KW.built_in - ]; - kws._hints = ARDUINO_KW._hints; - - ARDUINO.name = 'Arduino'; - ARDUINO.aliases = [ 'ino' ]; - ARDUINO.supersetOf = "cpp"; - - return ARDUINO; -} - -module.exports = arduino; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/armasm.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/armasm.js ***! - \***************************************************************/ -(module) { - -/* -Language: ARM Assembly -Author: Dan Panzarella -Description: ARM Assembly including Thumb and Thumb2 instructions -Category: assembler -*/ - -/** @type LanguageFn */ -function armasm(hljs) { - // local labels: %?[FB]?[AT]?\d{1,2}\w+ - - const COMMENT = { variants: [ - hljs.COMMENT('^[ \\t]*(?=#)', '$', { - relevance: 0, - excludeBegin: true - }), - hljs.COMMENT('[;@]', '$', { relevance: 0 }), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] }; - - return { - name: 'ARM Assembly', - case_insensitive: true, - aliases: [ 'arm' ], - keywords: { - $pattern: '\\.?' + hljs.IDENT_RE, - meta: - // GNU preprocs - '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ' - // ARM directives - + 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ', - built_in: - 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 ' // standard registers - + 'w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 ' // 32 bit ARMv8 registers - + 'w16 w17 w18 w19 w20 w21 w22 w23 w24 w25 w26 w27 w28 w29 w30 ' - + 'x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 ' // 64 bit ARMv8 registers - + 'x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 ' - + 'pc lr sp ip sl sb fp ' // typical regs plus backward compatibility - + 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 ' // more regs and fp - + 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 ' // coprocessor regs - + 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 ' // more coproc - + 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 ' // advanced SIMD NEON regs - - // program status registers - + 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf ' - + 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf ' - - // NEON and VFP registers - + 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 ' - + 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 ' - + 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 ' - + 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' - - + '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @' - }, - contains: [ - { - className: 'keyword', - begin: '\\b(' // mnemonics - + 'adc|' - + '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|' - + 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|' - + 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|' - + 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|' - + 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|' - + 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|' - + 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|' - + 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|' - + 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|' - + 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|' - + '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|' - + 'wfe|wfi|yield' - + ')' - + '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?' // condition codes - + '[sptrx]?' // legal postfixes - + '(?=\\s)' // followed by space - }, - COMMENT, - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: '\'', - end: '[^\\\\]\'', - relevance: 0 - }, - { - className: 'title', - begin: '\\|', - end: '\\|', - illegal: '\\n', - relevance: 0 - }, - { - className: 'number', - variants: [ - { // hex - begin: '[#$=]?0x[0-9a-f]+' }, - { // bin - begin: '[#$=]?0b[01]+' }, - { // literal - begin: '[#$=]\\d+' }, - { // bare number - begin: '\\b\\d+' } - ], - relevance: 0 - }, - { - className: 'symbol', - variants: [ - { // GNU ARM syntax - begin: '^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' }, - { // ARM syntax - begin: '^[a-z_\\.\\$][a-z0-9_\\.\\$]+' }, - { // label reference - begin: '[=#]\\w+' } - ], - relevance: 0 - } - ] - }; -} - -module.exports = armasm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/asciidoc.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/asciidoc.js ***! - \*****************************************************************/ -(module) { - -/* -Language: AsciiDoc -Requires: xml.js -Author: Dan Allen -Website: http://asciidoc.org -Description: A semantic, text-based document format that can be exported to HTML, DocBook and other backends. -Category: markup -*/ - -/** @type LanguageFn */ -function asciidoc(hljs) { - const regex = hljs.regex; - const HORIZONTAL_RULE = { - begin: '^\'{3,}[ \\t]*$', - relevance: 10 - }; - const ESCAPED_FORMATTING = [ - // escaped constrained formatting marks (i.e., \* \_ or \`) - { begin: /\\[*_`]/ }, - // escaped unconstrained formatting marks (i.e., \\** \\__ or \\``) - // must ignore until the next formatting marks - // this rule might not be 100% compliant with Asciidoctor 2.0 but we are entering undefined behavior territory... - { begin: /\\\\\*{2}[^\n]*?\*{2}/ }, - { begin: /\\\\_{2}[^\n]*_{2}/ }, - { begin: /\\\\`{2}[^\n]*`{2}/ }, - // guard: constrained formatting mark may not be preceded by ":", ";" or - // "}". match these so the constrained rule doesn't see them - { begin: /[:;}][*_`](?![*_`])/ } - ]; - const STRONG = [ - // inline unconstrained strong (single line) - { - className: 'strong', - begin: /\*{2}([^\n]+?)\*{2}/ - }, - // inline unconstrained strong (multi-line) - { - className: 'strong', - begin: regex.concat( - /\*\*/, - /((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/, - /(\*(?!\*)|\\[^\n]|[^*\n\\])*/, - /\*\*/ - ), - relevance: 0 - }, - // inline constrained strong (single line) - { - className: 'strong', - // must not precede or follow a word character - begin: /\B\*(\S|\S[^\n]*?\S)\*(?!\w)/ - }, - // inline constrained strong (multi-line) - { - className: 'strong', - // must not precede or follow a word character - begin: /\*[^\s]([^\n]+\n)+([^\n]+)\*/ - } - ]; - const EMPHASIS = [ - // inline unconstrained emphasis (single line) - { - className: 'emphasis', - begin: /_{2}([^\n]+?)_{2}/ - }, - // inline unconstrained emphasis (multi-line) - { - className: 'emphasis', - begin: regex.concat( - /__/, - /((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/, - /(_(?!_)|\\[^\n]|[^_\n\\])*/, - /__/ - ), - relevance: 0 - }, - // inline constrained emphasis (single line) - { - className: 'emphasis', - // must not precede or follow a word character - begin: /\b_(\S|\S[^\n]*?\S)_(?!\w)/ - }, - // inline constrained emphasis (multi-line) - { - className: 'emphasis', - // must not precede or follow a word character - begin: /_[^\s]([^\n]+\n)+([^\n]+)_/ - }, - // inline constrained emphasis using single quote (legacy) - { - className: 'emphasis', - // must not follow a word character or be followed by a single quote or space - begin: '\\B\'(?![\'\\s])', - end: '(\\n{2}|\')', - // allow escaped single quote followed by word char - contains: [ - { - begin: '\\\\\'\\w', - relevance: 0 - } - ], - relevance: 0 - } - ]; - const ADMONITION = { - className: 'symbol', - begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+', - relevance: 10 - }; - const BULLET_LIST = { - className: 'bullet', - begin: '^(\\*+|-+|\\.+|[^\\n]+?::)\\s+' - }; - - return { - name: 'AsciiDoc', - aliases: [ 'adoc' ], - contains: [ - // block comment - hljs.COMMENT( - '^/{4,}\\n', - '\\n/{4,}$', - // can also be done as... - // '^/{4,}$', - // '^/{4,}$', - { relevance: 10 } - ), - // line comment - hljs.COMMENT( - '^//', - '$', - { relevance: 0 } - ), - // title - { - className: 'title', - begin: '^\\.\\w.*$' - }, - // example, admonition & sidebar blocks - { - begin: '^[=\\*]{4,}\\n', - end: '\\n^[=\\*]{4,}$', - relevance: 10 - }, - // headings - { - className: 'section', - relevance: 10, - variants: [ - { begin: '^(={1,6})[ \t].+?([ \t]\\1)?$' }, - { begin: '^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$' } - ] - }, - // document attributes - { - className: 'meta', - begin: '^:.+?:', - end: '\\s', - excludeEnd: true, - relevance: 10 - }, - // block attributes - { - className: 'meta', - begin: '^\\[.+?\\]$', - relevance: 0 - }, - // quoteblocks - { - className: 'quote', - begin: '^_{4,}\\n', - end: '\\n_{4,}$', - relevance: 10 - }, - // listing and literal blocks - { - className: 'code', - begin: '^[\\-\\.]{4,}\\n', - end: '\\n[\\-\\.]{4,}$', - relevance: 10 - }, - // passthrough blocks - { - begin: '^\\+{4,}\\n', - end: '\\n\\+{4,}$', - contains: [ - { - begin: '<', - end: '>', - subLanguage: 'xml', - relevance: 0 - } - ], - relevance: 10 - }, - - BULLET_LIST, - ADMONITION, - ...ESCAPED_FORMATTING, - ...STRONG, - ...EMPHASIS, - - // inline smart quotes - { - className: 'string', - variants: [ - { begin: "``.+?''" }, - { begin: "`.+?'" } - ] - }, - // inline unconstrained emphasis - { - className: 'code', - begin: /`{2}/, - end: /(\n{2}|`{2})/ - }, - // inline code snippets (TODO should get same treatment as strong and emphasis) - { - className: 'code', - begin: '(`.+?`|\\+.+?\\+)', - relevance: 0 - }, - // indented literal block - { - className: 'code', - begin: '^[ \\t]', - end: '$', - relevance: 0 - }, - HORIZONTAL_RULE, - // images and links - { - begin: '(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]', - returnBegin: true, - contains: [ - { - begin: '(link|image:?):', - relevance: 0 - }, - { - className: 'link', - begin: '\\w', - end: '[^\\[]+', - relevance: 0 - }, - { - className: 'string', - begin: '\\[', - end: '\\]', - excludeBegin: true, - excludeEnd: true, - relevance: 0 - } - ], - relevance: 10 - } - ] - }; -} - -module.exports = asciidoc; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/aspectj.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/aspectj.js ***! - \****************************************************************/ -(module) { - -/* -Language: AspectJ -Author: Hakan Ozler -Website: https://www.eclipse.org/aspectj/ -Description: Syntax Highlighting for the AspectJ Language which is a general-purpose aspect-oriented extension to the Java programming language. -Category: system -Audit: 2020 -*/ - -/** @type LanguageFn */ -function aspectj(hljs) { - const regex = hljs.regex; - const KEYWORDS = [ - "false", - "synchronized", - "int", - "abstract", - "float", - "private", - "char", - "boolean", - "static", - "null", - "if", - "const", - "for", - "true", - "while", - "long", - "throw", - "strictfp", - "finally", - "protected", - "import", - "native", - "final", - "return", - "void", - "enum", - "else", - "extends", - "implements", - "break", - "transient", - "new", - "catch", - "instanceof", - "byte", - "super", - "volatile", - "case", - "assert", - "short", - "package", - "default", - "double", - "public", - "try", - "this", - "switch", - "continue", - "throws", - "privileged", - "aspectOf", - "adviceexecution", - "proceed", - "cflowbelow", - "cflow", - "initialization", - "preinitialization", - "staticinitialization", - "withincode", - "target", - "within", - "execution", - "getWithinTypeName", - "handler", - "thisJoinPoint", - "thisJoinPointStaticPart", - "thisEnclosingJoinPointStaticPart", - "declare", - "parents", - "warning", - "error", - "soft", - "precedence", - "thisAspectInstance" - ]; - const SHORTKEYS = [ - "get", - "set", - "args", - "call" - ]; - - return { - name: 'AspectJ', - keywords: KEYWORDS, - illegal: /<\/|#/, - contains: [ - hljs.COMMENT( - /\/\*\*/, - /\*\//, - { - relevance: 0, - contains: [ - { - // eat up @'s in emails to prevent them to be recognized as doctags - begin: /\w+@/, - relevance: 0 - }, - { - className: 'doctag', - begin: /@[A-Za-z]+/ - } - ] - } - ), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - className: 'class', - beginKeywords: 'aspect', - end: /[{;=]/, - excludeEnd: true, - illegal: /[:;"\[\]]/, - contains: [ - { beginKeywords: 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton' }, - hljs.UNDERSCORE_TITLE_MODE, - { - begin: /\([^\)]*/, - end: /[)]+/, - keywords: KEYWORDS.concat(SHORTKEYS), - excludeEnd: false - } - ] - }, - { - className: 'class', - beginKeywords: 'class interface', - end: /[{;=]/, - excludeEnd: true, - relevance: 0, - keywords: 'class interface', - illegal: /[:"\[\]]/, - contains: [ - { beginKeywords: 'extends implements' }, - hljs.UNDERSCORE_TITLE_MODE - ] - }, - { - // AspectJ Constructs - beginKeywords: 'pointcut after before around throwing returning', - end: /[)]/, - excludeEnd: false, - illegal: /["\[\]]/, - contains: [ - { - begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), - returnBegin: true, - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - } - ] - }, - { - begin: /[:]/, - returnBegin: true, - end: /[{;]/, - relevance: 0, - excludeEnd: false, - keywords: KEYWORDS, - illegal: /["\[\]]/, - contains: [ - { - begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), - keywords: KEYWORDS.concat(SHORTKEYS), - relevance: 0 - }, - hljs.QUOTE_STRING_MODE - ] - }, - { - // this prevents 'new Name(...), or throw ...' from being recognized as a function definition - beginKeywords: 'new throw', - relevance: 0 - }, - { - // the function class is a bit different for AspectJ compared to the Java language - className: 'function', - begin: /\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/, - returnBegin: true, - end: /[{;=]/, - keywords: KEYWORDS, - excludeEnd: true, - contains: [ - { - begin: regex.concat(hljs.UNDERSCORE_IDENT_RE, /\s*\(/), - returnBegin: true, - relevance: 0, - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - relevance: 0, - keywords: KEYWORDS, - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - hljs.C_NUMBER_MODE, - { - // annotation is also used in this language - className: 'meta', - begin: /@[A-Za-z]+/ - } - ] - }; -} - -module.exports = aspectj; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/autohotkey.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/autohotkey.js ***! - \*******************************************************************/ -(module) { - -/* -Language: AutoHotkey -Author: Seongwon Lee -Description: AutoHotkey language definition -Category: scripting -*/ - -/** @type LanguageFn */ -function autohotkey(hljs) { - const BACKTICK_ESCAPE = { begin: '`[\\s\\S]' }; - - return { - name: 'AutoHotkey', - case_insensitive: true, - aliases: [ 'ahk' ], - keywords: { - keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group', - literal: 'true false NOT AND OR', - built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel' - }, - contains: [ - BACKTICK_ESCAPE, - hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ BACKTICK_ESCAPE ] }), - hljs.COMMENT(';', '$', { relevance: 0 }), - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'number', - begin: hljs.NUMBER_RE, - relevance: 0 - }, - { - // subst would be the most accurate however fails the point of - // highlighting. variable is comparably the most accurate that actually - // has some effect - className: 'variable', - begin: '%[a-zA-Z0-9#_$@]+%' - }, - { - className: 'built_in', - begin: '^\\s*\\w+\\s*(,|%)' - // I don't really know if this is totally relevant - }, - { - // symbol would be most accurate however is highlighted just like - // built_in and that makes up a lot of AutoHotkey code meaning that it - // would fail to highlight anything - className: 'title', - variants: [ - { begin: '^[^\\n";]+::(?!=)' }, - { - begin: '^[^\\n";]+:(?!=)', - // zero relevance as it catches a lot of things - // followed by a single ':' in many languages - relevance: 0 - } - ] - }, - { - className: 'meta', - begin: '^\\s*#\\w+', - end: '$', - relevance: 0 - }, - { - className: 'built_in', - begin: 'A_[a-zA-Z0-9]+' - }, - { - // consecutive commas, not for highlighting but just for relevance - begin: ',\\s*,' } - ] - }; -} - -module.exports = autohotkey; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/autoit.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/autoit.js ***! - \***************************************************************/ -(module) { - -/* -Language: AutoIt -Author: Manh Tuan -Description: AutoIt language definition -Category: scripting -*/ - -/** @type LanguageFn */ -function autoit(hljs) { - const KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' - + 'Dim Do Else ElseIf EndFunc EndIf EndSelect ' - + 'EndSwitch EndWith Enum Exit ExitLoop For Func ' - + 'Global If In Local Next ReDim Return Select Static ' - + 'Step Switch Then To Until Volatile WEnd While With'; - - const DIRECTIVES = [ - "EndRegion", - "forcedef", - "forceref", - "ignorefunc", - "include", - "include-once", - "NoTrayIcon", - "OnAutoItStartRegister", - "pragma", - "Region", - "RequireAdmin", - "Tidy_Off", - "Tidy_On", - "Tidy_Parameters" - ]; - - const LITERAL = 'True False And Null Not Or Default'; - - const BUILT_IN = - 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive'; - - const COMMENT = { variants: [ - hljs.COMMENT(';', '$', { relevance: 0 }), - hljs.COMMENT('#cs', '#ce'), - hljs.COMMENT('#comments-start', '#comments-end') - ] }; - - const VARIABLE = { begin: '\\$[A-z0-9_]+' }; - - const STRING = { - className: 'string', - variants: [ - { - begin: /"/, - end: /"/, - contains: [ - { - begin: /""/, - relevance: 0 - } - ] - }, - { - begin: /'/, - end: /'/, - contains: [ - { - begin: /''/, - relevance: 0 - } - ] - } - ] - }; - - const NUMBER = { variants: [ - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE - ] }; - - const PREPROCESSOR = { - className: 'meta', - begin: '#', - end: '$', - keywords: { keyword: DIRECTIVES }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - { - beginKeywords: 'include', - keywords: { keyword: 'include' }, - end: '$', - contains: [ - STRING, - { - className: 'string', - variants: [ - { - begin: '<', - end: '>' - }, - { - begin: /"/, - end: /"/, - contains: [ - { - begin: /""/, - relevance: 0 - } - ] - }, - { - begin: /'/, - end: /'/, - contains: [ - { - begin: /''/, - relevance: 0 - } - ] - } - ] - } - ] - }, - STRING, - COMMENT - ] - }; - - const CONSTANT = { - className: 'symbol', - // begin: '@', - // end: '$', - // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR', - // relevance: 5 - begin: '@[A-z0-9_]+' - }; - - const FUNCTION = { - beginKeywords: 'Func', - end: '$', - illegal: '\\$|\\[|%', - contains: [ - hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { className: "title.function" }), - { - className: 'params', - begin: '\\(', - end: '\\)', - contains: [ - VARIABLE, - STRING, - NUMBER - ] - } - ] - }; - - return { - name: 'AutoIt', - case_insensitive: true, - illegal: /\/\*/, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_IN, - literal: LITERAL - }, - contains: [ - COMMENT, - VARIABLE, - STRING, - NUMBER, - PREPROCESSOR, - CONSTANT, - FUNCTION - ] - }; -} - -module.exports = autoit; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/avrasm.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/avrasm.js ***! - \***************************************************************/ -(module) { - -/* -Language: AVR Assembly -Author: Vladimir Ermakov -Category: assembler -Website: https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_instruction_list.html -*/ - -/** @type LanguageFn */ -function avrasm(hljs) { - return { - name: 'AVR Assembly', - case_insensitive: true, - keywords: { - $pattern: '\\.?' + hljs.IDENT_RE, - keyword: - /* mnemonic */ - 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' - + 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' - + 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' - + 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' - + 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' - + 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' - + 'subi swap tst wdr', - built_in: - /* general purpose registers */ - 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' - + 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' - /* IO Registers (ATMega128) */ - + 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' - + 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' - + 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' - + 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' - + 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' - + 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' - + 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' - + 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf', - meta: - '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' - + '.listmac .macro .nolist .org .set' - }, - contains: [ - hljs.C_BLOCK_COMMENT_MODE, - hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ), - hljs.C_NUMBER_MODE, // 0x..., decimal, float - hljs.BINARY_NUMBER_MODE, // 0b... - { - className: 'number', - begin: '\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o... - }, - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: '\'', - end: '[^\\\\]\'', - illegal: '[^\\\\][^\']' - }, - { - className: 'symbol', - begin: '^[A-Za-z0-9_.$]+:' - }, - { - className: 'meta', - begin: '#', - end: '$' - }, - { // substitution within a macro - className: 'subst', - begin: '@[0-9]+' - } - ] - }; -} - -module.exports = avrasm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/awk.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/awk.js ***! - \************************************************************/ -(module) { - -/* -Language: Awk -Author: Matthew Daly -Website: https://www.gnu.org/software/gawk/manual/gawk.html -Description: language definition for Awk scripts -Category: scripting -*/ - -/** @type LanguageFn */ -function awk(hljs) { - const VARIABLE = { - className: 'variable', - variants: [ - { begin: /\$[\w\d#@][\w\d_]*/ }, - { begin: /\$\{(.*?)\}/ } - ] - }; - const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10'; - const STRING = { - className: 'string', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - { - begin: /(u|b)?r?'''/, - end: /'''/, - relevance: 10 - }, - { - begin: /(u|b)?r?"""/, - end: /"""/, - relevance: 10 - }, - { - begin: /(u|r|ur)'/, - end: /'/, - relevance: 10 - }, - { - begin: /(u|r|ur)"/, - end: /"/, - relevance: 10 - }, - { - begin: /(b|br)'/, - end: /'/ - }, - { - begin: /(b|br)"/, - end: /"/ - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }; - return { - name: 'Awk', - keywords: { keyword: KEYWORDS }, - contains: [ - VARIABLE, - STRING, - hljs.REGEXP_MODE, - hljs.HASH_COMMENT_MODE, - hljs.NUMBER_MODE - ] - }; -} - -module.exports = awk; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/axapta.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/axapta.js ***! - \***************************************************************/ -(module) { - -/* -Language: Microsoft X++ -Description: X++ is a language used in Microsoft Dynamics 365, Dynamics AX, and Axapta. -Author: Dmitri Roudakov -Website: https://dynamics.microsoft.com/en-us/ax-overview/ -Category: enterprise -*/ - -/** @type LanguageFn */ -function axapta(hljs) { - const IDENT_RE = hljs.UNDERSCORE_IDENT_RE; - const BUILT_IN_KEYWORDS = [ - 'anytype', - 'boolean', - 'byte', - 'char', - 'container', - 'date', - 'double', - 'enum', - 'guid', - 'int', - 'int64', - 'long', - 'real', - 'short', - 'str', - 'utcdatetime', - 'var' - ]; - - const LITERAL_KEYWORDS = [ - 'default', - 'false', - 'null', - 'true' - ]; - - const NORMAL_KEYWORDS = [ - 'abstract', - 'as', - 'asc', - 'avg', - 'break', - 'breakpoint', - 'by', - 'byref', - 'case', - 'catch', - 'changecompany', - 'class', - 'client', - 'client', - 'common', - 'const', - 'continue', - 'count', - 'crosscompany', - 'delegate', - 'delete_from', - 'desc', - 'display', - 'div', - 'do', - 'edit', - 'else', - 'eventhandler', - 'exists', - 'extends', - 'final', - 'finally', - 'firstfast', - 'firstonly', - 'firstonly1', - 'firstonly10', - 'firstonly100', - 'firstonly1000', - 'flush', - 'for', - 'forceliterals', - 'forcenestedloop', - 'forceplaceholders', - 'forceselectorder', - 'forupdate', - 'from', - 'generateonly', - 'group', - 'hint', - 'if', - 'implements', - 'in', - 'index', - 'insert_recordset', - 'interface', - 'internal', - 'is', - 'join', - 'like', - 'maxof', - 'minof', - 'mod', - 'namespace', - 'new', - 'next', - 'nofetch', - 'notexists', - 'optimisticlock', - 'order', - 'outer', - 'pessimisticlock', - 'print', - 'private', - 'protected', - 'public', - 'readonly', - 'repeatableread', - 'retry', - 'return', - 'reverse', - 'select', - 'server', - 'setting', - 'static', - 'sum', - 'super', - 'switch', - 'this', - 'throw', - 'try', - 'ttsabort', - 'ttsbegin', - 'ttscommit', - 'unchecked', - 'update_recordset', - 'using', - 'validtimestate', - 'void', - 'where', - 'while' - ]; - - const KEYWORDS = { - keyword: NORMAL_KEYWORDS, - built_in: BUILT_IN_KEYWORDS, - literal: LITERAL_KEYWORDS - }; - - const CLASS_DEFINITION = { - variants: [ - { match: [ - /(class|interface)\s+/, - IDENT_RE, - /\s+(extends|implements)\s+/, - IDENT_RE - ] }, - { match: [ - /class\s+/, - IDENT_RE - ] } - ], - scope: { - 2: "title.class", - 4: "title.class.inherited" - }, - keywords: KEYWORDS - }; - - return { - name: 'X++', - aliases: [ 'x++' ], - keywords: KEYWORDS, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - { - className: 'meta', - begin: '#', - end: '$' - }, - CLASS_DEFINITION - ] - }; -} - -module.exports = axapta; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/bash.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/bash.js ***! - \*************************************************************/ -(module) { - -/* -Language: Bash -Author: vah -Contributrors: Benjamin Pannell -Website: https://www.gnu.org/software/bash/ -Category: common, scripting -*/ - -/** @type LanguageFn */ -function bash(hljs) { - const regex = hljs.regex; - const VAR = {}; - const BRACED_VAR = { - begin: /\$\{/, - end: /\}/, - contains: [ - "self", - { - begin: /:-/, - contains: [ VAR ] - } // default values - ] - }; - Object.assign(VAR, { - className: 'variable', - variants: [ - { begin: regex.concat(/\$[\w\d#@][\w\d_]*/, - // negative look-ahead tries to avoid matching patterns that are not - // Perl at all like $ident$, @ident@, etc. - `(?![\\w\\d])(?![$])`) }, - BRACED_VAR - ] - }); - - const SUBST = { - className: 'subst', - begin: /\$\(/, - end: /\)/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - const COMMENT = hljs.inherit( - hljs.COMMENT(), - { - match: [ - /(^|\s)/, - /#.*$/ - ], - scope: { - 2: 'comment' - } - } - ); - const HERE_DOC = { - begin: /<<-?\s*(?=\w+)/, - starts: { contains: [ - hljs.END_SAME_AS_BEGIN({ - begin: /(\w+)/, - end: /(\w+)/, - className: 'string' - }) - ] } - }; - const QUOTE_STRING = { - className: 'string', - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - VAR, - SUBST - ] - }; - SUBST.contains.push(QUOTE_STRING); - const ESCAPED_QUOTE = { - match: /\\"/ - }; - const APOS_STRING = { - className: 'string', - begin: /'/, - end: /'/ - }; - const ESCAPED_APOS = { - match: /\\'/ - }; - const ARITHMETIC = { - begin: /\$?\(\(/, - end: /\)\)/, - contains: [ - { - begin: /\d+#[0-9a-f]+/, - className: "number" - }, - hljs.NUMBER_MODE, - VAR - ] - }; - const SH_LIKE_SHELLS = [ - "fish", - "bash", - "zsh", - "sh", - "csh", - "ksh", - "tcsh", - "dash", - "scsh", - ]; - const KNOWN_SHEBANG = hljs.SHEBANG({ - binary: `(${SH_LIKE_SHELLS.join("|")})`, - relevance: 10 - }); - const FUNCTION = { - className: 'function', - begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/, - returnBegin: true, - contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\w[\w\d_]*/ }) ], - relevance: 0 - }; - - const KEYWORDS = [ - "if", - "then", - "else", - "elif", - "fi", - "time", - "for", - "while", - "until", - "in", - "do", - "done", - "case", - "esac", - "coproc", - "function", - "select" - ]; - - const LITERALS = [ - "true", - "false" - ]; - - // to consume paths to prevent keyword matches inside them - const PATH_MODE = { match: /(\/[a-z._-]+)+/ }; - - // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html - const SHELL_BUILT_INS = [ - "break", - "cd", - "continue", - "eval", - "exec", - "exit", - "export", - "getopts", - "hash", - "pwd", - "readonly", - "return", - "shift", - "test", - "times", - "trap", - "umask", - "unset" - ]; - - const BASH_BUILT_INS = [ - "alias", - "bind", - "builtin", - "caller", - "command", - "declare", - "echo", - "enable", - "help", - "let", - "local", - "logout", - "mapfile", - "printf", - "read", - "readarray", - "source", - "sudo", - "type", - "typeset", - "ulimit", - "unalias" - ]; - - const ZSH_BUILT_INS = [ - "autoload", - "bg", - "bindkey", - "bye", - "cap", - "chdir", - "clone", - "comparguments", - "compcall", - "compctl", - "compdescribe", - "compfiles", - "compgroups", - "compquote", - "comptags", - "comptry", - "compvalues", - "dirs", - "disable", - "disown", - "echotc", - "echoti", - "emulate", - "fc", - "fg", - "float", - "functions", - "getcap", - "getln", - "history", - "integer", - "jobs", - "kill", - "limit", - "log", - "noglob", - "popd", - "print", - "pushd", - "pushln", - "rehash", - "sched", - "setcap", - "setopt", - "stat", - "suspend", - "ttyctl", - "unfunction", - "unhash", - "unlimit", - "unsetopt", - "vared", - "wait", - "whence", - "where", - "which", - "zcompile", - "zformat", - "zftp", - "zle", - "zmodload", - "zparseopts", - "zprof", - "zpty", - "zregexparse", - "zsocket", - "zstyle", - "ztcp" - ]; - - const GNU_CORE_UTILS = [ - "chcon", - "chgrp", - "chown", - "chmod", - "cp", - "dd", - "df", - "dir", - "dircolors", - "ln", - "ls", - "mkdir", - "mkfifo", - "mknod", - "mktemp", - "mv", - "realpath", - "rm", - "rmdir", - "shred", - "sync", - "touch", - "truncate", - "vdir", - "b2sum", - "base32", - "base64", - "cat", - "cksum", - "comm", - "csplit", - "cut", - "expand", - "fmt", - "fold", - "head", - "join", - "md5sum", - "nl", - "numfmt", - "od", - "paste", - "ptx", - "pr", - "sha1sum", - "sha224sum", - "sha256sum", - "sha384sum", - "sha512sum", - "shuf", - "sort", - "split", - "sum", - "tac", - "tail", - "tr", - "tsort", - "unexpand", - "uniq", - "wc", - "arch", - "basename", - "chroot", - "date", - "dirname", - "du", - "echo", - "env", - "expr", - "factor", - // "false", // keyword literal already - "groups", - "hostid", - "id", - "link", - "logname", - "nice", - "nohup", - "nproc", - "pathchk", - "pinky", - "printenv", - "printf", - "pwd", - "readlink", - "runcon", - "seq", - "sleep", - "stat", - "stdbuf", - "stty", - "tee", - "test", - "timeout", - // "true", // keyword literal already - "tty", - "uname", - "unlink", - "uptime", - "users", - "who", - "whoami", - "yes" - ]; - - return { - name: 'Bash', - aliases: [ - 'sh', - 'zsh' - ], - keywords: { - $pattern: /\b[a-z][a-z0-9._-]+\b/, - keyword: KEYWORDS, - literal: LITERALS, - built_in: [ - ...SHELL_BUILT_INS, - ...BASH_BUILT_INS, - // Shell modifiers - "set", - "shopt", - ...ZSH_BUILT_INS, - ...GNU_CORE_UTILS - ] - }, - contains: [ - KNOWN_SHEBANG, // to catch known shells and boost relevancy - hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang - FUNCTION, - ARITHMETIC, - COMMENT, - HERE_DOC, - PATH_MODE, - QUOTE_STRING, - ESCAPED_QUOTE, - APOS_STRING, - ESCAPED_APOS, - VAR - ] - }; -} - -module.exports = bash; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/basic.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/basic.js ***! - \**************************************************************/ -(module) { - -/* -Language: BASIC -Author: Raphaël Assénat -Description: Based on the BASIC reference from the Tandy 1000 guide -Website: https://en.wikipedia.org/wiki/Tandy_1000 -Category: system -*/ - -/** @type LanguageFn */ -function basic(hljs) { - const KEYWORDS = [ - "ABS", - "ASC", - "AND", - "ATN", - "AUTO|0", - "BEEP", - "BLOAD|10", - "BSAVE|10", - "CALL", - "CALLS", - "CDBL", - "CHAIN", - "CHDIR", - "CHR$|10", - "CINT", - "CIRCLE", - "CLEAR", - "CLOSE", - "CLS", - "COLOR", - "COM", - "COMMON", - "CONT", - "COS", - "CSNG", - "CSRLIN", - "CVD", - "CVI", - "CVS", - "DATA", - "DATE$", - "DEFDBL", - "DEFINT", - "DEFSNG", - "DEFSTR", - "DEF|0", - "SEG", - "USR", - "DELETE", - "DIM", - "DRAW", - "EDIT", - "END", - "ENVIRON", - "ENVIRON$", - "EOF", - "EQV", - "ERASE", - "ERDEV", - "ERDEV$", - "ERL", - "ERR", - "ERROR", - "EXP", - "FIELD", - "FILES", - "FIX", - "FOR|0", - "FRE", - "GET", - "GOSUB|10", - "GOTO", - "HEX$", - "IF", - "THEN", - "ELSE|0", - "INKEY$", - "INP", - "INPUT", - "INPUT#", - "INPUT$", - "INSTR", - "IMP", - "INT", - "IOCTL", - "IOCTL$", - "KEY", - "ON", - "OFF", - "LIST", - "KILL", - "LEFT$", - "LEN", - "LET", - "LINE", - "LLIST", - "LOAD", - "LOC", - "LOCATE", - "LOF", - "LOG", - "LPRINT", - "USING", - "LSET", - "MERGE", - "MID$", - "MKDIR", - "MKD$", - "MKI$", - "MKS$", - "MOD", - "NAME", - "NEW", - "NEXT", - "NOISE", - "NOT", - "OCT$", - "ON", - "OR", - "PEN", - "PLAY", - "STRIG", - "OPEN", - "OPTION", - "BASE", - "OUT", - "PAINT", - "PALETTE", - "PCOPY", - "PEEK", - "PMAP", - "POINT", - "POKE", - "POS", - "PRINT", - "PRINT]", - "PSET", - "PRESET", - "PUT", - "RANDOMIZE", - "READ", - "REM", - "RENUM", - "RESET|0", - "RESTORE", - "RESUME", - "RETURN|0", - "RIGHT$", - "RMDIR", - "RND", - "RSET", - "RUN", - "SAVE", - "SCREEN", - "SGN", - "SHELL", - "SIN", - "SOUND", - "SPACE$", - "SPC", - "SQR", - "STEP", - "STICK", - "STOP", - "STR$", - "STRING$", - "SWAP", - "SYSTEM", - "TAB", - "TAN", - "TIME$", - "TIMER", - "TROFF", - "TRON", - "TO", - "USR", - "VAL", - "VARPTR", - "VARPTR$", - "VIEW", - "WAIT", - "WHILE", - "WEND", - "WIDTH", - "WINDOW", - "WRITE", - "XOR" - ]; - - return { - name: 'BASIC', - case_insensitive: true, - illegal: '^\.', - // Support explicitly typed variables that end with $%! or #. - keywords: { - $pattern: '[a-zA-Z][a-zA-Z0-9_$%!#]*', - keyword: KEYWORDS - }, - contains: [ - { - // Match strings that start with " and end with " or a line break - scope: 'string', - begin: /"/, - end: /"|$/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - hljs.COMMENT('REM', '$', { relevance: 10 }), - hljs.COMMENT('\'', '$', { relevance: 0 }), - { - // Match line numbers - className: 'symbol', - begin: '^[0-9]+ ', - relevance: 10 - }, - { - // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2) - className: 'number', - begin: '\\b\\d+(\\.\\d+)?([edED]\\d+)?[#\!]?', - relevance: 0 - }, - { - // Match hexadecimal numbers (&Hxxxx) - className: 'number', - begin: '(&[hH][0-9a-fA-F]{1,4})' - }, - { - // Match octal numbers (&Oxxxxxx) - className: 'number', - begin: '(&[oO][0-7]{1,6})' - } - ] - }; -} - -module.exports = basic; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/bnf.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/bnf.js ***! - \************************************************************/ -(module) { - -/* -Language: Backus–Naur Form -Website: https://en.wikipedia.org/wiki/Backus–Naur_form -Category: syntax -Author: Oleg Efimov -*/ - -/** @type LanguageFn */ -function bnf(hljs) { - return { - name: 'Backus–Naur Form', - contains: [ - // Attribute - { - className: 'attribute', - begin: // - }, - // Specific - { - begin: /::=/, - end: /$/, - contains: [ - { - begin: // - }, - // Common - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - } - ] - }; -} - -module.exports = bnf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/brainfuck.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/brainfuck.js ***! - \******************************************************************/ -(module) { - -/* -Language: Brainfuck -Author: Evgeny Stepanischev -Website: https://esolangs.org/wiki/Brainfuck -*/ - -/** @type LanguageFn */ -function brainfuck(hljs) { - const LITERAL = { - className: 'literal', - begin: /[+-]+/, - relevance: 0 - }; - return { - name: 'Brainfuck', - aliases: [ 'bf' ], - contains: [ - hljs.COMMENT( - /[^\[\]\.,\+\-<> \r\n]/, - /[\[\]\.,\+\-<> \r\n]/, - { - contains: [ - { - match: /[ ]+[^\[\]\.,\+\-<> \r\n]/, - relevance: 0 - } - ], - returnEnd: true, - relevance: 0 - } - ), - { - className: 'title', - begin: '[\\[\\]]', - relevance: 0 - }, - { - className: 'string', - begin: '[\\.,]', - relevance: 0 - }, - { - // this mode works as the only relevance counter - // it looks ahead to find the start of a run of literals - // so only the runs are counted as relevant - begin: /(?=\+\+|--)/, - contains: [ LITERAL ] - }, - LITERAL - ] - }; -} - -module.exports = brainfuck; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/c.js" -/*!**********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/c.js ***! - \**********************************************************/ -(module) { - -/* -Language: C -Category: common, system -Website: https://en.wikipedia.org/wiki/C_(programming_language) -*/ - -/** @type LanguageFn */ -function c(hljs) { - const regex = hljs.regex; - // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does - // not include such support nor can we be sure all the grammars depending - // on it would desire this behavior - const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); - const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; - const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; - const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; - const FUNCTION_TYPE_RE = '(' - + DECLTYPE_AUTO_RE + '|' - + regex.optional(NAMESPACE_RE) - + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) - + ')'; - - - const TYPES = { - className: 'type', - variants: [ - { begin: '\\b[a-z\\d_]*_t\\b' }, - { match: /\batomic_[a-z]{3,6}\b/ } - ] - - }; - - // https://en.cppreference.com/w/cpp/language/escape - // \\ \x \xFF \u2837 \u00323747 \374 - const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; - const STRINGS = { - className: 'string', - variants: [ - { - begin: '(u8?|U|L)?"', - end: '"', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + "|.)", - end: '\'', - illegal: '.' - }, - hljs.END_SAME_AS_BEGIN({ - begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, - end: /\)([^()\\ ]{0,16})"/ - }) - ] - }; - - const NUMBERS = { - className: 'number', - variants: [ - { match: /\b(0b[01']+)/ }, - { match: /(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/ }, - { match: /(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/ }, - { match: /(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/ } - ], - relevance: 0 - }; - - const PREPROCESSOR = { - className: 'meta', - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: { keyword: - 'if else elif endif define undef warning error line ' - + 'pragma _Pragma ifdef ifndef elifdef elifndef include' }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - hljs.inherit(STRINGS, { className: 'string' }), - { - className: 'string', - begin: /<.*?>/ - }, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; - - const TITLE_MODE = { - className: 'title', - begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, - relevance: 0 - }; - - const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; - - const C_KEYWORDS = [ - "asm", - "auto", - "break", - "case", - "continue", - "default", - "do", - "else", - "enum", - "extern", - "for", - "fortran", - "goto", - "if", - "inline", - "register", - "restrict", - "return", - "sizeof", - "typeof", - "typeof_unqual", - "struct", - "switch", - "typedef", - "union", - "volatile", - "while", - "_Alignas", - "_Alignof", - "_Atomic", - "_Generic", - "_Noreturn", - "_Static_assert", - "_Thread_local", - // aliases - "alignas", - "alignof", - "noreturn", - "static_assert", - "thread_local", - // not a C keyword but is, for all intents and purposes, treated exactly like one. - "_Pragma" - ]; - - const C_TYPES = [ - "float", - "double", - "signed", - "unsigned", - "int", - "short", - "long", - "char", - "void", - "_Bool", - "_BitInt", - "_Complex", - "_Imaginary", - "_Decimal32", - "_Decimal64", - "_Decimal96", - "_Decimal128", - "_Decimal64x", - "_Decimal128x", - "_Float16", - "_Float32", - "_Float64", - "_Float128", - "_Float32x", - "_Float64x", - "_Float128x", - // modifiers - "const", - "static", - "constexpr", - // aliases - "complex", - "bool", - "imaginary" - ]; - - const KEYWORDS = { - keyword: C_KEYWORDS, - type: C_TYPES, - literal: 'true false NULL', - // TODO: apply hinting work similar to what was done in cpp.js - built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' - + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set ' - + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos ' - + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' - + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' - + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' - + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' - + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' - + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr', - }; - - const EXPRESSION_CONTAINS = [ - PREPROCESSOR, - TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - NUMBERS, - STRINGS - ]; - - const EXPRESSION_CONTEXT = { - // This mode covers expression context where we can't expect a function - // definition and shouldn't highlight anything that looks like one: - // `return some()`, `else if()`, `(x*sum(1, 2))` - variants: [ - { - begin: /=/, - end: /;/ - }, - { - begin: /\(/, - end: /\)/ - }, - { - beginKeywords: 'new throw return else', - end: /;/ - } - ], - keywords: KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ - { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ 'self' ]), - relevance: 0 - } - ]), - relevance: 0 - }; - - const FUNCTION_DECLARATION = { - begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, - returnBegin: true, - end: /[{;=]/, - excludeEnd: true, - keywords: KEYWORDS, - illegal: /[^\w\s\*&:<>.]/, - contains: [ - { // to prevent it from being confused as the function title - begin: DECLTYPE_AUTO_RE, - keywords: KEYWORDS, - relevance: 0 - }, - { - begin: FUNCTION_TITLE, - returnBegin: true, - contains: [ hljs.inherit(TITLE_MODE, { className: "title.function" }) ], - relevance: 0 - }, - // allow for multiple declarations, e.g.: - // extern void f(int), g(char); - { - relevance: 0, - match: /,/ - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - relevance: 0, - contains: [ - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - TYPES, - // Count matching parentheses. - { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - relevance: 0, - contains: [ - 'self', - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - TYPES - ] - } - ] - }, - TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - PREPROCESSOR - ] - }; - - return { - name: "C", - aliases: [ 'h' ], - keywords: KEYWORDS, - // Until differentiations are added between `c` and `cpp`, `c` will - // not be auto-detected to avoid auto-detect conflicts between C and C++ - disableAutodetect: true, - illegal: '=]/, - contains: [ - { beginKeywords: "final class struct" }, - hljs.TITLE_MODE - ] - } - ]), - exports: { - preprocessor: PREPROCESSOR, - strings: STRINGS, - keywords: KEYWORDS - } - }; -} - -module.exports = c; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/cal.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/cal.js ***! - \************************************************************/ -(module) { - -/* -Language: C/AL -Author: Kenneth Fuglsang Christensen -Description: Provides highlighting of Microsoft Dynamics NAV C/AL code files -Website: https://docs.microsoft.com/en-us/dynamics-nav/programming-in-c-al -Category: enterprise -*/ - -/** @type LanguageFn */ -function cal(hljs) { - const regex = hljs.regex; - const KEYWORDS = [ - "div", - "mod", - "in", - "and", - "or", - "not", - "xor", - "asserterror", - "begin", - "case", - "do", - "downto", - "else", - "end", - "exit", - "for", - "local", - "if", - "of", - "repeat", - "then", - "to", - "until", - "while", - "with", - "var" - ]; - const LITERALS = 'false true'; - const COMMENT_MODES = [ - hljs.C_LINE_COMMENT_MODE, - hljs.COMMENT( - /\{/, - /\}/, - { relevance: 0 } - ), - hljs.COMMENT( - /\(\*/, - /\*\)/, - { relevance: 10 } - ) - ]; - const STRING = { - className: 'string', - begin: /'/, - end: /'/, - contains: [ { begin: /''/ } ] - }; - const CHAR_STRING = { - className: 'string', - begin: /(#\d+)+/ - }; - const DATE = { - className: 'number', - begin: '\\b\\d+(\\.\\d+)?(DT|D|T)', - relevance: 0 - }; - const DBL_QUOTED_VARIABLE = { - className: 'string', // not a string technically but makes sense to be highlighted in the same style - begin: '"', - end: '"' - }; - - const PROCEDURE = { - match: [ - /procedure/, - /\s+/, - /[a-zA-Z_][\w@]*/, - /\s*/ - ], - scope: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: [ - STRING, - CHAR_STRING, - hljs.NUMBER_MODE - ] - }, - ...COMMENT_MODES - ] - }; - - const OBJECT_TYPES = [ - "Table", - "Form", - "Report", - "Dataport", - "Codeunit", - "XMLport", - "MenuSuite", - "Page", - "Query" - ]; - const OBJECT = { - match: [ - /OBJECT/, - /\s+/, - regex.either(...OBJECT_TYPES), - /\s+/, - /\d+/, - /\s+(?=[^\s])/, - /.*/, - /$/ - ], - relevance: 3, - scope: { - 1: "keyword", - 3: "type", - 5: "number", - 7: "title" - } - }; - - const PROPERTY = { - match: /[\w]+(?=\=)/, - scope: "attribute", - relevance: 0 - }; - - return { - name: 'C/AL', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - literal: LITERALS - }, - illegal: /\/\*/, - contains: [ - PROPERTY, - STRING, - CHAR_STRING, - DATE, - DBL_QUOTED_VARIABLE, - hljs.NUMBER_MODE, - OBJECT, - PROCEDURE - ] - }; -} - -module.exports = cal; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/capnproto.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/capnproto.js ***! - \******************************************************************/ -(module) { - -/* -Language: Cap’n Proto -Author: Oleg Efimov -Description: Cap’n Proto message definition format -Website: https://capnproto.org/capnp-tool.html -Category: protocols -*/ - -/** @type LanguageFn */ -function capnproto(hljs) { - const KEYWORDS = [ - "struct", - "enum", - "interface", - "union", - "group", - "import", - "using", - "const", - "annotation", - "extends", - "in", - "of", - "on", - "as", - "with", - "from", - "fixed" - ]; - const TYPES = [ - "Void", - "Bool", - "Int8", - "Int16", - "Int32", - "Int64", - "UInt8", - "UInt16", - "UInt32", - "UInt64", - "Float32", - "Float64", - "Text", - "Data", - "AnyPointer", - "AnyStruct", - "Capability", - "List" - ]; - const LITERALS = [ - "true", - "false" - ]; - const CLASS_DEFINITION = { - variants: [ - { match: [ - /(struct|enum|interface)/, - /\s+/, - hljs.IDENT_RE - ] }, - { match: [ - /extends/, - /\s*\(/, - hljs.IDENT_RE, - /\s*\)/ - ] } - ], - scope: { - 1: "keyword", - 3: "title.class" - } - }; - return { - name: 'Cap’n Proto', - aliases: [ 'capnp' ], - keywords: { - keyword: KEYWORDS, - type: TYPES, - literal: LITERALS - }, - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - hljs.HASH_COMMENT_MODE, - { - className: 'meta', - begin: /@0x[\w\d]{16};/, - illegal: /\n/ - }, - { - className: 'symbol', - begin: /@\d+\b/ - }, - CLASS_DEFINITION - ] - }; -} - -module.exports = capnproto; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ceylon.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ceylon.js ***! - \***************************************************************/ -(module) { - -/* -Language: Ceylon -Author: Lucas Werkmeister -Website: https://ceylon-lang.org -Category: system -*/ - -/** @type LanguageFn */ -function ceylon(hljs) { - // 2.3. Identifiers and keywords - const KEYWORDS = [ - "assembly", - "module", - "package", - "import", - "alias", - "class", - "interface", - "object", - "given", - "value", - "assign", - "void", - "function", - "new", - "of", - "extends", - "satisfies", - "abstracts", - "in", - "out", - "return", - "break", - "continue", - "throw", - "assert", - "dynamic", - "if", - "else", - "switch", - "case", - "for", - "while", - "try", - "catch", - "finally", - "then", - "let", - "this", - "outer", - "super", - "is", - "exists", - "nonempty" - ]; - // 7.4.1 Declaration Modifiers - const DECLARATION_MODIFIERS = [ - "shared", - "abstract", - "formal", - "default", - "actual", - "variable", - "late", - "native", - "deprecated", - "final", - "sealed", - "annotation", - "suppressWarnings", - "small" - ]; - // 7.4.2 Documentation - const DOCUMENTATION = [ - "doc", - "by", - "license", - "see", - "throws", - "tagged" - ]; - const SUBST = { - className: 'subst', - excludeBegin: true, - excludeEnd: true, - begin: /``/, - end: /``/, - keywords: KEYWORDS, - relevance: 10 - }; - const EXPRESSIONS = [ - { - // verbatim string - className: 'string', - begin: '"""', - end: '"""', - relevance: 10 - }, - { - // string literal or template - className: 'string', - begin: '"', - end: '"', - contains: [ SUBST ] - }, - { - // character literal - className: 'string', - begin: "'", - end: "'" - }, - { - // numeric literal - className: 'number', - begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?', - relevance: 0 - } - ]; - SUBST.contains = EXPRESSIONS; - - return { - name: 'Ceylon', - keywords: { - keyword: KEYWORDS.concat(DECLARATION_MODIFIERS), - meta: DOCUMENTATION - }, - illegal: '\\$[^01]|#[^0-9a-fA-F]', - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.COMMENT('/\\*', '\\*/', { contains: [ 'self' ] }), - { - // compiler annotation - className: 'meta', - begin: '@[a-z]\\w*(?::"[^"]*")?' - } - ].concat(EXPRESSIONS) - }; -} - -module.exports = ceylon; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/clean.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/clean.js ***! - \**************************************************************/ -(module) { - -/* -Language: Clean -Author: Camil Staps -Category: functional -Website: http://clean.cs.ru.nl -*/ - -/** @type LanguageFn */ -function clean(hljs) { - const KEYWORDS = [ - "if", - "let", - "in", - "with", - "where", - "case", - "of", - "class", - "instance", - "otherwise", - "implementation", - "definition", - "system", - "module", - "from", - "import", - "qualified", - "as", - "special", - "code", - "inline", - "foreign", - "export", - "ccall", - "stdcall", - "generic", - "derive", - "infix", - "infixl", - "infixr" - ]; - return { - name: 'Clean', - aliases: [ - 'icl', - 'dcl' - ], - keywords: { - keyword: KEYWORDS, - built_in: - 'Int Real Char Bool', - literal: - 'True False' - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - { // relevance booster - begin: '->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>' } - ] - }; -} - -module.exports = clean; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/clojure-repl.js" -/*!*********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/clojure-repl.js ***! - \*********************************************************************/ -(module) { - -/* -Language: Clojure REPL -Description: Clojure REPL sessions -Author: Ivan Sagalaev -Requires: clojure.js -Website: https://clojure.org -Category: lisp -*/ - -/** @type LanguageFn */ -function clojureRepl(hljs) { - return { - name: 'Clojure REPL', - contains: [ - { - className: 'meta.prompt', - begin: /^([\w.-]+|\s*#_)?=>/, - starts: { - end: /$/, - subLanguage: 'clojure' - } - } - ] - }; -} - -module.exports = clojureRepl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/clojure.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/clojure.js ***! - \****************************************************************/ -(module) { - -/* -Language: Clojure -Description: Clojure syntax (based on lisp.js) -Author: mfornos -Website: https://clojure.org -Category: lisp -*/ - -/** @type LanguageFn */ -function clojure(hljs) { - const SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&\''; - const SYMBOL_RE = '[#]?[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:$#]*'; - const globals = 'def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord'; - const keywords = { - $pattern: SYMBOL_RE, - built_in: - // Clojure keywords - globals + ' ' - + 'cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem ' - + 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? ' - + 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? ' - + 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? ' - + 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . ' - + 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last ' - + 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate ' - + 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext ' - + 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends ' - + 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler ' - + 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter ' - + 'monitor-exit macroexpand macroexpand-1 for dosync and or ' - + 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert ' - + 'peek pop doto proxy first rest cons cast coll last butlast ' - + 'sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import ' - + 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! ' - + 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger ' - + 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline ' - + 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking ' - + 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! ' - + 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! ' - + 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty ' - + 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list ' - + 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer ' - + 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate ' - + 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta ' - + 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize' - }; - - const SYMBOL = { - begin: SYMBOL_RE, - relevance: 0 - }; - const NUMBER = { - scope: 'number', - relevance: 0, - variants: [ - { match: /[-+]?0[xX][0-9a-fA-F]+N?/ }, // hexadecimal // 0x2a - { match: /[-+]?0[0-7]+N?/ }, // octal // 052 - { match: /[-+]?[1-9][0-9]?[rR][0-9a-zA-Z]+N?/ }, // variable radix from 2 to 36 // 2r101010, 8r52, 36r16 - { match: /[-+]?[0-9]+\/[0-9]+N?/ }, // ratio // 1/2 - { match: /[-+]?[0-9]+((\.[0-9]*([eE][+-]?[0-9]+)?M?)|([eE][+-]?[0-9]+M?|M))/ }, // float // 0.42 4.2E-1M 42E1 42M - { match: /[-+]?([1-9][0-9]*|0)N?/ }, // int (don't match leading 0) // 42 42N - ] - }; - const CHARACTER = { - scope: 'character', - variants: [ - { match: /\\o[0-3]?[0-7]{1,2}/ }, // Unicode Octal 0 - 377 - { match: /\\u[0-9a-fA-F]{4}/ }, // Unicode Hex 0000 - FFFF - { match: /\\(newline|space|tab|formfeed|backspace|return)/ }, // special characters - { - match: /\\\S/, - relevance: 0 - } // any non-whitespace char - ] - }; - const REGEX = { - scope: 'regex', - begin: /#"/, - end: /"/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); - const COMMA = { - scope: 'punctuation', - match: /,/, - relevance: 0 - }; - const COMMENT = hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ); - const LITERAL = { - className: 'literal', - begin: /\b(true|false|nil)\b/ - }; - const COLLECTION = { - begin: "\\[|(#::?" + SYMBOL_RE + ")?\\{", - end: '[\\]\\}]', - relevance: 0 - }; - const KEY = { - className: 'symbol', - begin: '[:]{1,2}' + SYMBOL_RE - }; - const LIST = { - begin: '\\(', - end: '\\)' - }; - const BODY = { - endsWithParent: true, - relevance: 0 - }; - const NAME = { - keywords: keywords, - className: 'name', - begin: SYMBOL_RE, - relevance: 0, - starts: BODY - }; - const DEFAULT_CONTAINS = [ - COMMA, - LIST, - CHARACTER, - REGEX, - STRING, - COMMENT, - KEY, - COLLECTION, - NUMBER, - LITERAL, - SYMBOL - ]; - - const GLOBAL = { - beginKeywords: globals, - keywords: { - $pattern: SYMBOL_RE, - keyword: globals - }, - end: '(\\[|#|\\d|"|:|\\{|\\)|\\(|$)', - contains: [ - { - className: 'title', - begin: SYMBOL_RE, - relevance: 0, - excludeEnd: true, - // we can only have a single title - endsParent: true - } - ].concat(DEFAULT_CONTAINS) - }; - - LIST.contains = [ - GLOBAL, - NAME, - BODY - ]; - BODY.contains = DEFAULT_CONTAINS; - COLLECTION.contains = DEFAULT_CONTAINS; - - return { - name: 'Clojure', - aliases: [ - 'clj', - 'edn' - ], - illegal: /\S/, - contains: [ - COMMA, - LIST, - CHARACTER, - REGEX, - STRING, - COMMENT, - KEY, - COLLECTION, - NUMBER, - LITERAL - ] - }; -} - -module.exports = clojure; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/cmake.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/cmake.js ***! - \**************************************************************/ -(module) { - -/* -Language: CMake -Description: CMake is an open-source cross-platform system for build automation. -Author: Igor Kalnitsky -Website: https://cmake.org -Category: build-system -*/ - -/** @type LanguageFn */ -function cmake(hljs) { - return { - name: 'CMake', - aliases: [ 'cmake.in' ], - case_insensitive: true, - keywords: { keyword: - // scripting commands - 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' - + 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' - + 'endwhile execute_process file find_file find_library find_package find_path ' - + 'find_program foreach function get_cmake_property get_directory_property ' - + 'get_filename_component get_property if include include_guard list macro ' - + 'mark_as_advanced math message option return separate_arguments ' - + 'set_directory_properties set_property set site_name string unset variable_watch while ' - // project commands - + 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' - + 'add_definitions add_dependencies add_executable add_library add_link_options ' - + 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' - + 'define_property enable_language enable_testing export fltk_wrap_ui ' - + 'get_source_file_property get_target_property get_test_property include_directories ' - + 'include_external_msproject include_regular_expression install link_directories ' - + 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' - + 'set_source_files_properties set_target_properties set_tests_properties source_group ' - + 'target_compile_definitions target_compile_features target_compile_options ' - + 'target_include_directories target_link_directories target_link_libraries ' - + 'target_link_options target_sources try_compile try_run ' - // CTest commands - + 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' - + 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' - + 'ctest_test ctest_update ctest_upload ' - // deprecated commands - + 'build_name exec_program export_library_dependencies install_files install_programs ' - + 'install_targets load_command make_directory output_required_files remove ' - + 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' - + 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' - // core keywords - + 'on off true false and or not command policy target test exists is_newer_than ' - + 'is_directory is_symlink is_absolute matches less greater equal less_equal ' - + 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' - + 'version_greater version_equal version_less_equal version_greater_equal in_list defined' }, - contains: [ - { - className: 'variable', - begin: /\$\{/, - end: /\}/ - }, - hljs.COMMENT(/#\[\[/, /]]/), - hljs.HASH_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE - ] - }; -} - -module.exports = cmake; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/coffeescript.js" -/*!*********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/coffeescript.js ***! - \*********************************************************************/ -(module) { - -const KEYWORDS = [ - "as", // for exports - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - // JS handles these with a special rule - // "get", - // "set", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - // It's reached stage 3, which is "recommended for implementation": - "using" -]; -const LITERALS = [ - "true", - "false", - "null", - "undefined", - "NaN", - "Infinity" -]; - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects -const TYPES = [ - // Fundamental objects - "Object", - "Function", - "Boolean", - "Symbol", - // numbers and dates - "Math", - "Date", - "Number", - "BigInt", - // text - "String", - "RegExp", - // Indexed collections - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - // Keyed collections - "Set", - "Map", - "WeakSet", - "WeakMap", - // Structured data - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - // Control abstraction objects - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - // Reflection - "Reflect", - "Proxy", - // Internationalization - "Intl", - // WebAssembly - "WebAssembly" -]; - -const ERROR_TYPES = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError" -]; - -const BUILT_IN_GLOBALS = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - - "require", - "exports", - - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape" -]; - -const BUILT_INS = [].concat( - BUILT_IN_GLOBALS, - TYPES, - ERROR_TYPES -); - -/* -Language: CoffeeScript -Author: Dmytrii Nagirniak -Contributors: Oleg Efimov , Cédric Néhémie -Description: CoffeeScript is a programming language that transcompiles to JavaScript. For info about language see http://coffeescript.org/ -Category: scripting -Website: https://coffeescript.org -*/ - - -/** @type LanguageFn */ -function coffeescript(hljs) { - const COFFEE_BUILT_INS = [ - 'npm', - 'print' - ]; - const COFFEE_LITERALS = [ - 'yes', - 'no', - 'on', - 'off' - ]; - const COFFEE_KEYWORDS = [ - 'then', - 'unless', - 'until', - 'loop', - 'by', - 'when', - 'and', - 'or', - 'is', - 'isnt', - 'not' - ]; - const NOT_VALID_KEYWORDS = [ - "var", - "const", - "let", - "function", - "static" - ]; - const excluding = (list) => - (kw) => !list.includes(kw); - const KEYWORDS$1 = { - keyword: KEYWORDS.concat(COFFEE_KEYWORDS).filter(excluding(NOT_VALID_KEYWORDS)), - literal: LITERALS.concat(COFFEE_LITERALS), - built_in: BUILT_INS.concat(COFFEE_BUILT_INS) - }; - const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: KEYWORDS$1 - }; - const EXPRESSIONS = [ - hljs.BINARY_NUMBER_MODE, - hljs.inherit(hljs.C_NUMBER_MODE, { starts: { - end: '(\\s*/)?', - relevance: 0 - } }), // a number tries to eat the following slash to prevent treating it as a regexp - { - className: 'string', - variants: [ - { - begin: /'''/, - end: /'''/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /'/, - end: /'/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /"""/, - end: /"""/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }, - { - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - } - ] - }, - { - className: 'regexp', - variants: [ - { - begin: '///', - end: '///', - contains: [ - SUBST, - hljs.HASH_COMMENT_MODE - ] - }, - { - begin: '//[gim]{0,3}(?=\\W)', - relevance: 0 - }, - { - // regex can't start with space to parse x / 2 / 3 as two divisions - // regex can't start with *, and it supports an "illegal" in the main mode - begin: /\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/ } - ] - }, - { begin: '@' + JS_IDENT_RE // relevance booster - }, - { - subLanguage: 'javascript', - excludeBegin: true, - excludeEnd: true, - variants: [ - { - begin: '```', - end: '```' - }, - { - begin: '`', - end: '`' - } - ] - } - ]; - SUBST.contains = EXPRESSIONS; - - const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); - const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>'; - const PARAMS = { - className: 'params', - begin: '\\([^\\(]', - returnBegin: true, - /* We need another contained nameless mode to not have every nested - pair of parens to be called "params" */ - contains: [ - { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS$1, - contains: [ 'self' ].concat(EXPRESSIONS) - } - ] - }; - - const CLASS_DEFINITION = { - variants: [ - { match: [ - /class\s+/, - JS_IDENT_RE, - /\s+extends\s+/, - JS_IDENT_RE - ] }, - { match: [ - /class\s+/, - JS_IDENT_RE - ] } - ], - scope: { - 2: "title.class", - 4: "title.class.inherited" - }, - keywords: KEYWORDS$1 - }; - - return { - name: 'CoffeeScript', - aliases: [ - 'coffee', - 'cson', - 'iced' - ], - keywords: KEYWORDS$1, - illegal: /\/\*/, - contains: [ - ...EXPRESSIONS, - hljs.COMMENT('###', '###'), - hljs.HASH_COMMENT_MODE, - { - className: 'function', - begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE, - end: '[-=]>', - returnBegin: true, - contains: [ - TITLE, - PARAMS - ] - }, - { - // anonymous function start - begin: /[:\(,=]\s*/, - relevance: 0, - contains: [ - { - className: 'function', - begin: POSSIBLE_PARAMS_RE, - end: '[-=]>', - returnBegin: true, - contains: [ PARAMS ] - } - ] - }, - CLASS_DEFINITION, - { - begin: JS_IDENT_RE + ':', - end: ':', - returnBegin: true, - returnEnd: true, - relevance: 0 - } - ] - }; -} - -module.exports = coffeescript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/coq.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/coq.js ***! - \************************************************************/ -(module) { - -/* -Language: Coq -Author: Stephan Boyer -Category: functional -Website: https://coq.inria.fr -*/ - -/** @type LanguageFn */ -function coq(hljs) { - const KEYWORDS = [ - "_|0", - "as", - "at", - "cofix", - "else", - "end", - "exists", - "exists2", - "fix", - "for", - "forall", - "fun", - "if", - "IF", - "in", - "let", - "match", - "mod", - "Prop", - "return", - "Set", - "then", - "Type", - "using", - "where", - "with", - "Abort", - "About", - "Add", - "Admit", - "Admitted", - "All", - "Arguments", - "Assumptions", - "Axiom", - "Back", - "BackTo", - "Backtrack", - "Bind", - "Blacklist", - "Canonical", - "Cd", - "Check", - "Class", - "Classes", - "Close", - "Coercion", - "Coercions", - "CoFixpoint", - "CoInductive", - "Collection", - "Combined", - "Compute", - "Conjecture", - "Conjectures", - "Constant", - "constr", - "Constraint", - "Constructors", - "Context", - "Corollary", - "CreateHintDb", - "Cut", - "Declare", - "Defined", - "Definition", - "Delimit", - "Dependencies", - "Dependent", - "Derive", - "Drop", - "eauto", - "End", - "Equality", - "Eval", - "Example", - "Existential", - "Existentials", - "Existing", - "Export", - "exporting", - "Extern", - "Extract", - "Extraction", - "Fact", - "Field", - "Fields", - "File", - "Fixpoint", - "Focus", - "for", - "From", - "Function", - "Functional", - "Generalizable", - "Global", - "Goal", - "Grab", - "Grammar", - "Graph", - "Guarded", - "Heap", - "Hint", - "HintDb", - "Hints", - "Hypotheses", - "Hypothesis", - "ident", - "Identity", - "If", - "Immediate", - "Implicit", - "Import", - "Include", - "Inductive", - "Infix", - "Info", - "Initial", - "Inline", - "Inspect", - "Instance", - "Instances", - "Intro", - "Intros", - "Inversion", - "Inversion_clear", - "Language", - "Left", - "Lemma", - "Let", - "Libraries", - "Library", - "Load", - "LoadPath", - "Local", - "Locate", - "Ltac", - "ML", - "Mode", - "Module", - "Modules", - "Monomorphic", - "Morphism", - "Next", - "NoInline", - "Notation", - "Obligation", - "Obligations", - "Opaque", - "Open", - "Optimize", - "Options", - "Parameter", - "Parameters", - "Parametric", - "Path", - "Paths", - "pattern", - "Polymorphic", - "Preterm", - "Print", - "Printing", - "Program", - "Projections", - "Proof", - "Proposition", - "Pwd", - "Qed", - "Quit", - "Rec", - "Record", - "Recursive", - "Redirect", - "Relation", - "Remark", - "Remove", - "Require", - "Reserved", - "Reset", - "Resolve", - "Restart", - "Rewrite", - "Right", - "Ring", - "Rings", - "Save", - "Scheme", - "Scope", - "Scopes", - "Script", - "Search", - "SearchAbout", - "SearchHead", - "SearchPattern", - "SearchRewrite", - "Section", - "Separate", - "Set", - "Setoid", - "Show", - "Solve", - "Sorted", - "Step", - "Strategies", - "Strategy", - "Structure", - "SubClass", - "Table", - "Tables", - "Tactic", - "Term", - "Test", - "Theorem", - "Time", - "Timeout", - "Transparent", - "Type", - "Typeclasses", - "Types", - "Undelimit", - "Undo", - "Unfocus", - "Unfocused", - "Unfold", - "Universe", - "Universes", - "Unset", - "Unshelve", - "using", - "Variable", - "Variables", - "Variant", - "Verbose", - "Visibility", - "where", - "with" - ]; - const BUILT_INS = [ - "abstract", - "absurd", - "admit", - "after", - "apply", - "as", - "assert", - "assumption", - "at", - "auto", - "autorewrite", - "autounfold", - "before", - "bottom", - "btauto", - "by", - "case", - "case_eq", - "cbn", - "cbv", - "change", - "classical_left", - "classical_right", - "clear", - "clearbody", - "cofix", - "compare", - "compute", - "congruence", - "constr_eq", - "constructor", - "contradict", - "contradiction", - "cut", - "cutrewrite", - "cycle", - "decide", - "decompose", - "dependent", - "destruct", - "destruction", - "dintuition", - "discriminate", - "discrR", - "do", - "double", - "dtauto", - "eapply", - "eassumption", - "eauto", - "ecase", - "econstructor", - "edestruct", - "ediscriminate", - "eelim", - "eexact", - "eexists", - "einduction", - "einjection", - "eleft", - "elim", - "elimtype", - "enough", - "equality", - "erewrite", - "eright", - "esimplify_eq", - "esplit", - "evar", - "exact", - "exactly_once", - "exfalso", - "exists", - "f_equal", - "fail", - "field", - "field_simplify", - "field_simplify_eq", - "first", - "firstorder", - "fix", - "fold", - "fourier", - "functional", - "generalize", - "generalizing", - "gfail", - "give_up", - "has_evar", - "hnf", - "idtac", - "in", - "induction", - "injection", - "instantiate", - "intro", - "intro_pattern", - "intros", - "intuition", - "inversion", - "inversion_clear", - "is_evar", - "is_var", - "lapply", - "lazy", - "left", - "lia", - "lra", - "move", - "native_compute", - "nia", - "nsatz", - "omega", - "once", - "pattern", - "pose", - "progress", - "proof", - "psatz", - "quote", - "record", - "red", - "refine", - "reflexivity", - "remember", - "rename", - "repeat", - "replace", - "revert", - "revgoals", - "rewrite", - "rewrite_strat", - "right", - "ring", - "ring_simplify", - "rtauto", - "set", - "setoid_reflexivity", - "setoid_replace", - "setoid_rewrite", - "setoid_symmetry", - "setoid_transitivity", - "shelve", - "shelve_unifiable", - "simpl", - "simple", - "simplify_eq", - "solve", - "specialize", - "split", - "split_Rabs", - "split_Rmult", - "stepl", - "stepr", - "subst", - "sum", - "swap", - "symmetry", - "tactic", - "tauto", - "time", - "timeout", - "top", - "transitivity", - "trivial", - "try", - "tryif", - "unfold", - "unify", - "until", - "using", - "vm_compute", - "with" - ]; - return { - name: 'Coq', - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS - }, - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.COMMENT('\\(\\*', '\\*\\)'), - hljs.C_NUMBER_MODE, - { - className: 'type', - excludeBegin: true, - begin: '\\|\\s*', - end: '\\w+' - }, - { // relevance booster - begin: /[-=]>/ } - ] - }; -} - -module.exports = coq; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/cos.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/cos.js ***! - \************************************************************/ -(module) { - -/* -Language: Caché Object Script -Author: Nikita Savchenko -Category: enterprise, scripting -Website: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls -*/ - -/** @type LanguageFn */ -function cos(hljs) { - const STRINGS = { - className: 'string', - variants: [ - { - begin: '"', - end: '"', - contains: [ - { // escaped - begin: "\"\"", - relevance: 0 - } - ] - } - ] - }; - - const NUMBERS = { - className: "number", - begin: "\\b(\\d+(\\.\\d*)?|\\.\\d+)", - relevance: 0 - }; - - const COS_KEYWORDS = - 'property parameter class classmethod clientmethod extends as break ' - + 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' - + 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' - + 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' - + 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' - + 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' - + 'zsync ascii'; - - // registered function - no need in them due to all functions are highlighted, - // but I'll just leave this here. - - // "$bit", "$bitcount", - // "$bitfind", "$bitlogic", "$case", "$char", "$classmethod", "$classname", - // "$compile", "$data", "$decimal", "$double", "$extract", "$factor", - // "$find", "$fnumber", "$get", "$increment", "$inumber", "$isobject", - // "$isvaliddouble", "$isvalidnum", "$justify", "$length", "$list", - // "$listbuild", "$listdata", "$listfind", "$listfromstring", "$listget", - // "$listlength", "$listnext", "$listsame", "$listtostring", "$listvalid", - // "$locate", "$match", "$method", "$name", "$nconvert", "$next", - // "$normalize", "$now", "$number", "$order", "$parameter", "$piece", - // "$prefetchoff", "$prefetchon", "$property", "$qlength", "$qsubscript", - // "$query", "$random", "$replace", "$reverse", "$sconvert", "$select", - // "$sortbegin", "$sortend", "$stack", "$text", "$translate", "$view", - // "$wascii", "$wchar", "$wextract", "$wfind", "$wiswide", "$wlength", - // "$wreverse", "$xecute", "$zabs", "$zarccos", "$zarcsin", "$zarctan", - // "$zcos", "$zcot", "$zcsc", "$zdate", "$zdateh", "$zdatetime", - // "$zdatetimeh", "$zexp", "$zhex", "$zln", "$zlog", "$zpower", "$zsec", - // "$zsin", "$zsqr", "$ztan", "$ztime", "$ztimeh", "$zboolean", - // "$zconvert", "$zcrc", "$zcyc", "$zdascii", "$zdchar", "$zf", - // "$ziswide", "$zlascii", "$zlchar", "$zname", "$zposition", "$zqascii", - // "$zqchar", "$zsearch", "$zseek", "$zstrip", "$zwascii", "$zwchar", - // "$zwidth", "$zwpack", "$zwbpack", "$zwunpack", "$zwbunpack", "$zzenkaku", - // "$change", "$mv", "$mvat", "$mvfmt", "$mvfmts", "$mviconv", - // "$mviconvs", "$mvinmat", "$mvlover", "$mvoconv", "$mvoconvs", "$mvraise", - // "$mvtrans", "$mvv", "$mvname", "$zbitand", "$zbitcount", "$zbitfind", - // "$zbitget", "$zbitlen", "$zbitnot", "$zbitor", "$zbitset", "$zbitstr", - // "$zbitxor", "$zincrement", "$znext", "$zorder", "$zprevious", "$zsort", - // "device", "$ecode", "$estack", "$etrap", "$halt", "$horolog", - // "$io", "$job", "$key", "$namespace", "$principal", "$quit", "$roles", - // "$storage", "$system", "$test", "$this", "$tlevel", "$username", - // "$x", "$y", "$za", "$zb", "$zchild", "$zeof", "$zeos", "$zerror", - // "$zhorolog", "$zio", "$zjob", "$zmode", "$znspace", "$zparent", "$zpi", - // "$zpos", "$zreference", "$zstorage", "$ztimestamp", "$ztimezone", - // "$ztrap", "$zversion" - - return { - name: 'Caché Object Script', - case_insensitive: true, - aliases: [ "cls" ], - keywords: COS_KEYWORDS, - contains: [ - NUMBERS, - STRINGS, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: "comment", - begin: /;/, - end: "$", - relevance: 0 - }, - { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1) - className: "built_in", - begin: /(?:\$\$?|\.\.)\^?[a-zA-Z]+/ - }, - { // Macro command: quit $$$OK - className: "built_in", - begin: /\$\$\$[a-zA-Z]+/ - }, - { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer - className: "built_in", - begin: /%[a-z]+(?:\.[a-z]+)*/ - }, - { // Global variable: set ^globalName = 12 write ^globalName - className: "symbol", - begin: /\^%?[a-zA-Z][\w]*/ - }, - { // Some control constructions: do ##class(Package.ClassName).Method(), ##super() - className: "keyword", - begin: /##class|##super|#define|#dim/ - }, - // sub-languages: are not fully supported by hljs by 11/15/2015 - // left for the future implementation. - { - begin: /&sql\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - subLanguage: "sql" - }, - { - begin: /&(js|jscript|javascript)/, - excludeBegin: true, - excludeEnd: true, - subLanguage: "javascript" - }, - { - // this brakes first and last tag, but this is the only way to embed a valid html - begin: /&html<\s*\s*>/, - subLanguage: "xml" - } - ] - }; -} - -module.exports = cos; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/cpp.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/cpp.js ***! - \************************************************************/ -(module) { - -/* -Language: C++ -Category: common, system -Website: https://isocpp.org -*/ - -/** @type LanguageFn */ -function cpp(hljs) { - const regex = hljs.regex; - // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does - // not include such support nor can we be sure all the grammars depending - // on it would desire this behavior - const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\n/ } ] }); - const DECLTYPE_AUTO_RE = 'decltype\\(auto\\)'; - const NAMESPACE_RE = '[a-zA-Z_]\\w*::'; - const TEMPLATE_ARGUMENT_RE = '<[^<>]+>'; - const FUNCTION_TYPE_RE = '(?!struct)(' - + DECLTYPE_AUTO_RE + '|' - + regex.optional(NAMESPACE_RE) - + '[a-zA-Z_]\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE) - + ')'; - - const CPP_PRIMITIVE_TYPES = { - className: 'type', - begin: '\\b[a-z\\d_]*_t\\b' - }; - - // https://en.cppreference.com/w/cpp/language/escape - // \\ \x \xFF \u2837 \u00323747 \374 - const CHARACTER_ESCAPES = '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)'; - const STRINGS = { - className: 'string', - variants: [ - { - begin: '(u8?|U|L)?"', - end: '"', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '(u8?|U|L)?\'(' + CHARACTER_ESCAPES + '|.)', - end: '\'', - illegal: '.' - }, - hljs.END_SAME_AS_BEGIN({ - begin: /(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/, - end: /\)([^()\\ ]{0,16})"/ - }) - ] - }; - - const NUMBERS = { - className: 'number', - variants: [ - // Floating-point literal. - { begin: - "[+-]?(?:" // Leading sign. - // Decimal. - + "(?:" - +"[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?" - + "|\\.[0-9](?:'?[0-9])*" - + ")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?" - + "|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*" - // Hexadecimal. - + "|0[Xx](?:" - +"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?" - + "|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*" - + ")[Pp][+-]?[0-9](?:'?[0-9])*" - + ")(?:" // Literal suffixes. - + "[Ff](?:16|32|64|128)?" - + "|(BF|bf)16" - + "|[Ll]" - + "|" // Literal suffix is optional. - + ")" - }, - // Integer literal. - { begin: - "[+-]?\\b(?:" // Leading sign. - + "0[Bb][01](?:'?[01])*" // Binary. - + "|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*" // Hexadecimal. - + "|0(?:'?[0-7])*" // Octal or just a lone zero. - + "|[1-9](?:'?[0-9])*" // Decimal. - + ")(?:" // Literal suffixes. - + "[Uu](?:LL?|ll?)" - + "|[Uu][Zz]?" - + "|(?:LL?|ll?)[Uu]?" - + "|[Zz][Uu]" - + "|" // Literal suffix is optional. - + ")" - // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the - // literal highlight actually makes it stand out more. - } - ], - relevance: 0 - }; - - const PREPROCESSOR = { - className: 'meta', - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: { keyword: - 'if else elif endif define undef warning error line ' - + 'pragma _Pragma ifdef ifndef include' }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - hljs.inherit(STRINGS, { className: 'string' }), - { - className: 'string', - begin: /<.*?>/ - }, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; - - const TITLE_MODE = { - className: 'title', - begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE, - relevance: 0 - }; - - const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\s*\\('; - - // https://en.cppreference.com/w/cpp/keyword - const RESERVED_KEYWORDS = [ - 'alignas', - 'alignof', - 'and', - 'and_eq', - 'asm', - 'atomic_cancel', - 'atomic_commit', - 'atomic_noexcept', - 'auto', - 'bitand', - 'bitor', - 'break', - 'case', - 'catch', - 'class', - 'co_await', - 'co_return', - 'co_yield', - 'compl', - 'concept', - 'const_cast|10', - 'consteval', - 'constexpr', - 'constinit', - 'continue', - 'decltype', - 'default', - 'delete', - 'do', - 'dynamic_cast|10', - 'else', - 'enum', - 'explicit', - 'export', - 'extern', - 'false', - 'final', - 'for', - 'friend', - 'goto', - 'if', - 'import', - 'inline', - 'module', - 'mutable', - 'namespace', - 'new', - 'noexcept', - 'not', - 'not_eq', - 'nullptr', - 'operator', - 'or', - 'or_eq', - 'override', - 'private', - 'protected', - 'public', - 'reflexpr', - 'register', - 'reinterpret_cast|10', - 'requires', - 'return', - 'sizeof', - 'static_assert', - 'static_cast|10', - 'struct', - 'switch', - 'synchronized', - 'template', - 'this', - 'thread_local', - 'throw', - 'transaction_safe', - 'transaction_safe_dynamic', - 'true', - 'try', - 'typedef', - 'typeid', - 'typename', - 'union', - 'using', - 'virtual', - 'volatile', - 'while', - 'xor', - 'xor_eq' - ]; - - // https://en.cppreference.com/w/cpp/keyword - const RESERVED_TYPES = [ - 'bool', - 'char', - 'char16_t', - 'char32_t', - 'char8_t', - 'double', - 'float', - 'int', - 'long', - 'short', - 'void', - 'wchar_t', - 'unsigned', - 'signed', - 'const', - 'static' - ]; - - const TYPE_HINTS = [ - 'any', - 'auto_ptr', - 'barrier', - 'binary_semaphore', - 'bitset', - 'complex', - 'condition_variable', - 'condition_variable_any', - 'counting_semaphore', - 'deque', - 'false_type', - 'flat_map', - 'flat_set', - 'future', - 'imaginary', - 'initializer_list', - 'istringstream', - 'jthread', - 'latch', - 'lock_guard', - 'multimap', - 'multiset', - 'mutex', - 'optional', - 'ostringstream', - 'packaged_task', - 'pair', - 'promise', - 'priority_queue', - 'queue', - 'recursive_mutex', - 'recursive_timed_mutex', - 'scoped_lock', - 'set', - 'shared_future', - 'shared_lock', - 'shared_mutex', - 'shared_timed_mutex', - 'shared_ptr', - 'stack', - 'string_view', - 'stringstream', - 'timed_mutex', - 'thread', - 'true_type', - 'tuple', - 'unique_lock', - 'unique_ptr', - 'unordered_map', - 'unordered_multimap', - 'unordered_multiset', - 'unordered_set', - 'variant', - 'vector', - 'weak_ptr', - 'wstring', - 'wstring_view' - ]; - - const FUNCTION_HINTS = [ - 'abort', - 'abs', - 'acos', - 'apply', - 'as_const', - 'asin', - 'atan', - 'atan2', - 'calloc', - 'ceil', - 'cerr', - 'cin', - 'clog', - 'cos', - 'cosh', - 'cout', - 'declval', - 'endl', - 'exchange', - 'exit', - 'exp', - 'fabs', - 'floor', - 'fmod', - 'forward', - 'fprintf', - 'fputs', - 'free', - 'frexp', - 'fscanf', - 'future', - 'invoke', - 'isalnum', - 'isalpha', - 'iscntrl', - 'isdigit', - 'isgraph', - 'islower', - 'isprint', - 'ispunct', - 'isspace', - 'isupper', - 'isxdigit', - 'labs', - 'launder', - 'ldexp', - 'log', - 'log10', - 'make_pair', - 'make_shared', - 'make_shared_for_overwrite', - 'make_tuple', - 'make_unique', - 'malloc', - 'memchr', - 'memcmp', - 'memcpy', - 'memset', - 'modf', - 'move', - 'pow', - 'printf', - 'putchar', - 'puts', - 'realloc', - 'scanf', - 'sin', - 'sinh', - 'snprintf', - 'sprintf', - 'sqrt', - 'sscanf', - 'std', - 'stderr', - 'stdin', - 'stdout', - 'strcat', - 'strchr', - 'strcmp', - 'strcpy', - 'strcspn', - 'strlen', - 'strncat', - 'strncmp', - 'strncpy', - 'strpbrk', - 'strrchr', - 'strspn', - 'strstr', - 'swap', - 'tan', - 'tanh', - 'terminate', - 'to_underlying', - 'tolower', - 'toupper', - 'vfprintf', - 'visit', - 'vprintf', - 'vsprintf' - ]; - - const LITERALS = [ - 'NULL', - 'false', - 'nullopt', - 'nullptr', - 'true' - ]; - - // https://en.cppreference.com/w/cpp/keyword - const BUILT_IN = [ '_Pragma' ]; - - const CPP_KEYWORDS = { - type: RESERVED_TYPES, - keyword: RESERVED_KEYWORDS, - literal: LITERALS, - built_in: BUILT_IN, - _type_hints: TYPE_HINTS - }; - - const FUNCTION_DISPATCH = { - className: 'function.dispatch', - relevance: 0, - keywords: { - // Only for relevance, not highlighting. - _hint: FUNCTION_HINTS }, - begin: regex.concat( - /\b/, - /(?!decltype)/, - /(?!if)/, - /(?!for)/, - /(?!switch)/, - /(?!while)/, - hljs.IDENT_RE, - regex.lookahead(/(<[^<>]+>|)\s*\(/)) - }; - - const EXPRESSION_CONTAINS = [ - FUNCTION_DISPATCH, - PREPROCESSOR, - CPP_PRIMITIVE_TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - NUMBERS, - STRINGS - ]; - - const EXPRESSION_CONTEXT = { - // This mode covers expression context where we can't expect a function - // definition and shouldn't highlight anything that looks like one: - // `return some()`, `else if()`, `(x*sum(1, 2))` - variants: [ - { - begin: /=/, - end: /;/ - }, - { - begin: /\(/, - end: /\)/ - }, - { - beginKeywords: 'new throw return else', - end: /;/ - } - ], - keywords: CPP_KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ - { - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - contains: EXPRESSION_CONTAINS.concat([ 'self' ]), - relevance: 0 - } - ]), - relevance: 0 - }; - - const FUNCTION_DECLARATION = { - className: 'function', - begin: '(' + FUNCTION_TYPE_RE + '[\\*&\\s]+)+' + FUNCTION_TITLE, - returnBegin: true, - end: /[{;=]/, - excludeEnd: true, - keywords: CPP_KEYWORDS, - illegal: /[^\w\s\*&:<>.]/, - contains: [ - { // to prevent it from being confused as the function title - begin: DECLTYPE_AUTO_RE, - keywords: CPP_KEYWORDS, - relevance: 0 - }, - { - begin: FUNCTION_TITLE, - returnBegin: true, - contains: [ TITLE_MODE ], - relevance: 0 - }, - // needed because we do not have look-behind on the below rule - // to prevent it from grabbing the final : in a :: pair - { - begin: /::/, - relevance: 0 - }, - // initializers - { - begin: /:/, - endsWithParent: true, - contains: [ - STRINGS, - NUMBERS - ] - }, - // allow for multiple declarations, e.g.: - // extern void f(int), g(char); - { - relevance: 0, - match: /,/ - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - relevance: 0, - contains: [ - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - CPP_PRIMITIVE_TYPES, - // Count matching parentheses. - { - begin: /\(/, - end: /\)/, - keywords: CPP_KEYWORDS, - relevance: 0, - contains: [ - 'self', - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRINGS, - NUMBERS, - CPP_PRIMITIVE_TYPES - ] - } - ] - }, - CPP_PRIMITIVE_TYPES, - C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - PREPROCESSOR - ] - }; - - return { - name: 'C++', - aliases: [ - 'cc', - 'c++', - 'h++', - 'hpp', - 'hh', - 'hxx', - 'cxx' - ], - keywords: CPP_KEYWORDS, - illegal: ' rooms (9);` - begin: '\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)', - end: '>', - keywords: CPP_KEYWORDS, - contains: [ - 'self', - CPP_PRIMITIVE_TYPES - ] - }, - { - begin: hljs.IDENT_RE + '::', - keywords: CPP_KEYWORDS - }, - { - match: [ - // extra complexity to deal with `enum class` and `enum struct` - /\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/, - /\s+/, - /\w+/ - ], - className: { - 1: 'keyword', - 3: 'title.class' - } - } - ]) - }; -} - -module.exports = cpp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/crmsh.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/crmsh.js ***! - \**************************************************************/ -(module) { - -/* -Language: crmsh -Author: Kristoffer Gronlund -Website: http://crmsh.github.io -Description: Syntax Highlighting for the crmsh DSL -Category: config -*/ - -/** @type LanguageFn */ -function crmsh(hljs) { - const RESOURCES = 'primitive rsc_template'; - const COMMANDS = 'group clone ms master location colocation order fencing_topology ' - + 'rsc_ticket acl_target acl_group user role ' - + 'tag xml'; - const PROPERTY_SETS = 'property rsc_defaults op_defaults'; - const KEYWORDS = 'params meta operations op rule attributes utilization'; - const OPERATORS = 'read write deny defined not_defined in_range date spec in ' - + 'ref reference attribute type xpath version and or lt gt tag ' - + 'lte gte eq ne \\'; - const TYPES = 'number string'; - const LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false'; - - return { - name: 'crmsh', - aliases: [ - 'crm', - 'pcmk' - ], - case_insensitive: true, - keywords: { - keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES, - literal: LITERALS - }, - contains: [ - hljs.HASH_COMMENT_MODE, - { - beginKeywords: 'node', - starts: { - end: '\\s*([\\w_-]+:)?', - starts: { - className: 'title', - end: '\\s*[\\$\\w_][\\w_-]*' - } - } - }, - { - beginKeywords: RESOURCES, - starts: { - className: 'title', - end: '\\s*[\\$\\w_][\\w_-]*', - starts: { end: '\\s*@?[\\w_][\\w_\\.:-]*' } - } - }, - { - begin: '\\b(' + COMMANDS.split(' ').join('|') + ')\\s+', - keywords: COMMANDS, - starts: { - className: 'title', - end: '[\\$\\w_][\\w_-]*' - } - }, - { - beginKeywords: PROPERTY_SETS, - starts: { - className: 'title', - end: '\\s*([\\w_-]+:)?' - } - }, - hljs.QUOTE_STRING_MODE, - { - className: 'meta', - begin: '(ocf|systemd|service|lsb):[\\w_:-]+', - relevance: 0 - }, - { - className: 'number', - begin: '\\b\\d+(\\.\\d+)?(ms|s|h|m)?', - relevance: 0 - }, - { - className: 'literal', - begin: '[-]?(infinity|inf)', - relevance: 0 - }, - { - className: 'attr', - begin: /([A-Za-z$_#][\w_-]+)=/, - relevance: 0 - }, - { - className: 'tag', - begin: '', - relevance: 0 - } - ] - }; -} - -module.exports = crmsh; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/crystal.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/crystal.js ***! - \****************************************************************/ -(module) { - -/* -Language: Crystal -Author: TSUYUSATO Kitsune -Website: https://crystal-lang.org -Category: system -*/ - -/** @type LanguageFn */ -function crystal(hljs) { - const INT_SUFFIX = '(_?[ui](8|16|32|64|128))?'; - const FLOAT_SUFFIX = '(_?f(32|64))?'; - const CRYSTAL_IDENT_RE = '[a-zA-Z_]\\w*[!?=]?'; - const CRYSTAL_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?'; - const CRYSTAL_PATH_RE = '[A-Za-z_]\\w*(::\\w+)*(\\?|!)?'; - const CRYSTAL_KEYWORDS = { - $pattern: CRYSTAL_IDENT_RE, - keyword: - 'abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' - + 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' - + 'return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield ' - + '__DIR__ __END_LINE__ __FILE__ __LINE__', - literal: 'false nil true' - }; - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: CRYSTAL_KEYWORDS - }; - // borrowed from Ruby - const VARIABLE = { - // negative-look forward attemps to prevent false matches like: - // @ident@ or $ident$ that might indicate this is not ruby at all - className: "variable", - begin: '(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])` - }; - const EXPANSION = { - className: 'template-variable', - variants: [ - { - begin: '\\{\\{', - end: '\\}\\}' - }, - { - begin: '\\{%', - end: '%\\}' - } - ], - keywords: CRYSTAL_KEYWORDS - }; - - function recursiveParen(begin, end) { - const - contains = [ - { - begin: begin, - end: end - } - ]; - contains[0].contains = contains; - return contains; - } - const STRING = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - variants: [ - { - begin: /'/, - end: /'/ - }, - { - begin: /"/, - end: /"/ - }, - { - begin: /`/, - end: /`/ - }, - { - begin: '%[Qwi]?\\(', - end: '\\)', - contains: recursiveParen('\\(', '\\)') - }, - { - begin: '%[Qwi]?\\[', - end: '\\]', - contains: recursiveParen('\\[', '\\]') - }, - { - begin: '%[Qwi]?\\{', - end: /\}/, - contains: recursiveParen(/\{/, /\}/) - }, - { - begin: '%[Qwi]?<', - end: '>', - contains: recursiveParen('<', '>') - }, - { - begin: '%[Qwi]?\\|', - end: '\\|' - }, - { - begin: /<<-\w+$/, - end: /^\s*\w+$/ - } - ], - relevance: 0 - }; - const Q_STRING = { - className: 'string', - variants: [ - { - begin: '%q\\(', - end: '\\)', - contains: recursiveParen('\\(', '\\)') - }, - { - begin: '%q\\[', - end: '\\]', - contains: recursiveParen('\\[', '\\]') - }, - { - begin: '%q\\{', - end: /\}/, - contains: recursiveParen(/\{/, /\}/) - }, - { - begin: '%q<', - end: '>', - contains: recursiveParen('<', '>') - }, - { - begin: '%q\\|', - end: '\\|' - }, - { - begin: /<<-'\w+'$/, - end: /^\s*\w+$/ - } - ], - relevance: 0 - }; - const REGEXP = { - begin: '(?!%\\})(' + hljs.RE_STARTERS_RE + '|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*', - keywords: 'case if select unless until when while', - contains: [ - { - className: 'regexp', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - variants: [ - { - begin: '//[a-z]*', - relevance: 0 - }, - { - begin: '/(?!\\/)', - end: '/[a-z]*' - } - ] - } - ], - relevance: 0 - }; - const REGEXP2 = { - className: 'regexp', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - variants: [ - { - begin: '%r\\(', - end: '\\)', - contains: recursiveParen('\\(', '\\)') - }, - { - begin: '%r\\[', - end: '\\]', - contains: recursiveParen('\\[', '\\]') - }, - { - begin: '%r\\{', - end: /\}/, - contains: recursiveParen(/\{/, /\}/) - }, - { - begin: '%r<', - end: '>', - contains: recursiveParen('<', '>') - }, - { - begin: '%r\\|', - end: '\\|' - } - ], - relevance: 0 - }; - const ATTRIBUTE = { - className: 'meta', - begin: '@\\[', - end: '\\]', - contains: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }) ] - }; - const CRYSTAL_DEFAULT_CONTAINS = [ - EXPANSION, - STRING, - Q_STRING, - REGEXP2, - REGEXP, - ATTRIBUTE, - VARIABLE, - hljs.HASH_COMMENT_MODE, - { - className: 'class', - beginKeywords: 'class module struct', - end: '$|;', - illegal: /=/, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }), - { // relevance booster for inheritance - begin: '<' } - ] - }, - { - className: 'class', - beginKeywords: 'lib enum union', - end: '$|;', - illegal: /=/, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }) - ] - }, - { - beginKeywords: 'annotation', - end: '$|;', - illegal: /=/, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }) - ], - relevance: 2 - }, - { - className: 'function', - beginKeywords: 'def', - end: /\B\b/, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { - begin: CRYSTAL_METHOD_RE, - endsParent: true - }) - ] - }, - { - className: 'function', - beginKeywords: 'fun macro', - end: /\B\b/, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { - begin: CRYSTAL_METHOD_RE, - endsParent: true - }) - ], - relevance: 2 - }, - { - className: 'symbol', - begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', - relevance: 0 - }, - { - className: 'symbol', - begin: ':', - contains: [ - STRING, - { begin: CRYSTAL_METHOD_RE } - ], - relevance: 0 - }, - { - className: 'number', - variants: [ - { begin: '\\b0b([01_]+)' + INT_SUFFIX }, - { begin: '\\b0o([0-7_]+)' + INT_SUFFIX }, - { begin: '\\b0x([A-Fa-f0-9_]+)' + INT_SUFFIX }, - { begin: '\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?' + FLOAT_SUFFIX + '(?!_)' }, - { begin: '\\b([1-9][0-9_]*|0)' + INT_SUFFIX } - ], - relevance: 0 - } - ]; - SUBST.contains = CRYSTAL_DEFAULT_CONTAINS; - EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION - - return { - name: 'Crystal', - aliases: [ 'cr' ], - keywords: CRYSTAL_KEYWORDS, - contains: CRYSTAL_DEFAULT_CONTAINS - }; -} - -module.exports = crystal; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/csharp.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/csharp.js ***! - \***************************************************************/ -(module) { - -/* -Language: C# -Author: Jason Diamond -Contributor: Nicolas LLOBERA , Pieter Vantorre , David Pine -Website: https://docs.microsoft.com/dotnet/csharp/ -Category: common -*/ - -/** @type LanguageFn */ -function csharp(hljs) { - const BUILT_IN_KEYWORDS = [ - 'bool', - 'byte', - 'char', - 'decimal', - 'delegate', - 'double', - 'dynamic', - 'enum', - 'float', - 'int', - 'long', - 'nint', - 'nuint', - 'object', - 'sbyte', - 'short', - 'string', - 'ulong', - 'uint', - 'ushort' - ]; - const FUNCTION_MODIFIERS = [ - 'public', - 'private', - 'protected', - 'static', - 'internal', - 'protected', - 'abstract', - 'async', - 'extern', - 'override', - 'unsafe', - 'virtual', - 'new', - 'sealed', - 'partial' - ]; - const LITERAL_KEYWORDS = [ - 'default', - 'false', - 'null', - 'true' - ]; - const NORMAL_KEYWORDS = [ - 'abstract', - 'as', - 'base', - 'break', - 'case', - 'catch', - 'class', - 'const', - 'continue', - 'do', - 'else', - 'event', - 'explicit', - 'extern', - 'finally', - 'fixed', - 'for', - 'foreach', - 'goto', - 'if', - 'implicit', - 'in', - 'interface', - 'internal', - 'is', - 'lock', - 'namespace', - 'new', - 'operator', - 'out', - 'override', - 'params', - 'private', - 'protected', - 'public', - 'readonly', - 'record', - 'ref', - 'return', - 'scoped', - 'sealed', - 'sizeof', - 'stackalloc', - 'static', - 'struct', - 'switch', - 'this', - 'throw', - 'try', - 'typeof', - 'unchecked', - 'unsafe', - 'using', - 'virtual', - 'void', - 'volatile', - 'while' - ]; - const CONTEXTUAL_KEYWORDS = [ - 'add', - 'alias', - 'and', - 'ascending', - 'args', - 'async', - 'await', - 'by', - 'descending', - 'dynamic', - 'equals', - 'file', - 'from', - 'get', - 'global', - 'group', - 'init', - 'into', - 'join', - 'let', - 'nameof', - 'not', - 'notnull', - 'on', - 'or', - 'orderby', - 'partial', - 'record', - 'remove', - 'required', - 'scoped', - 'select', - 'set', - 'unmanaged', - 'value|0', - 'var', - 'when', - 'where', - 'with', - 'yield' - ]; - - const KEYWORDS = { - keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS), - built_in: BUILT_IN_KEYWORDS, - literal: LITERAL_KEYWORDS - }; - const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\.?\\w)*' }); - const NUMBERS = { - className: 'number', - variants: [ - { begin: '\\b(0b[01\']+)' }, - { begin: '(-?)\\b([\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)(u|U|l|L|ul|UL|f|F|b|B)' }, - { begin: '(-?)(\\b0[xX][a-fA-F0-9\']+|(\\b[\\d\']+(\\.[\\d\']*)?|\\.[\\d\']+)([eE][-+]?[\\d\']+)?)' } - ], - relevance: 0 - }; - const RAW_STRING = { - className: 'string', - begin: /"""("*)(?!")(.|\n)*?"""\1/, - relevance: 1 - }; - const VERBATIM_STRING = { - className: 'string', - begin: '@"', - end: '"', - contains: [ { begin: '""' } ] - }; - const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\n/ }); - const SUBST = { - className: 'subst', - begin: /\{/, - end: /\}/, - keywords: KEYWORDS - }; - const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\n/ }); - const INTERPOLATED_STRING = { - className: 'string', - begin: /\$"/, - end: '"', - illegal: /\n/, - contains: [ - { begin: /\{\{/ }, - { begin: /\}\}/ }, - hljs.BACKSLASH_ESCAPE, - SUBST_NO_LF - ] - }; - const INTERPOLATED_VERBATIM_STRING = { - className: 'string', - begin: /\$@"/, - end: '"', - contains: [ - { begin: /\{\{/ }, - { begin: /\}\}/ }, - { begin: '""' }, - SUBST - ] - }; - const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, { - illegal: /\n/, - contains: [ - { begin: /\{\{/ }, - { begin: /\}\}/ }, - { begin: '""' }, - SUBST_NO_LF - ] - }); - SUBST.contains = [ - INTERPOLATED_VERBATIM_STRING, - INTERPOLATED_STRING, - VERBATIM_STRING, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - NUMBERS, - hljs.C_BLOCK_COMMENT_MODE - ]; - SUBST_NO_LF.contains = [ - INTERPOLATED_VERBATIM_STRING_NO_LF, - INTERPOLATED_STRING, - VERBATIM_STRING_NO_LF, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - NUMBERS, - hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\n/ }) - ]; - const STRING = { variants: [ - RAW_STRING, - INTERPOLATED_VERBATIM_STRING, - INTERPOLATED_STRING, - VERBATIM_STRING, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] }; - - const GENERIC_MODIFIER = { - begin: "<", - end: ">", - contains: [ - { beginKeywords: "in out" }, - TITLE_MODE - ] - }; - const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?'; - const AT_IDENTIFIER = { - // prevents expressions like `@class` from incorrect flagging - // `class` as a keyword - begin: "@" + hljs.IDENT_RE, - relevance: 0 - }; - - return { - name: 'C#', - aliases: [ - 'cs', - 'c#' - ], - keywords: KEYWORDS, - illegal: /::/, - contains: [ - hljs.COMMENT( - '///', - '$', - { - returnBegin: true, - contains: [ - { - className: 'doctag', - variants: [ - { - begin: '///', - relevance: 0 - }, - { begin: '' }, - { - begin: '' - } - ] - } - ] - } - ), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'meta', - begin: '#', - end: '$', - keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' } - }, - STRING, - NUMBERS, - { - beginKeywords: 'class interface', - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:,]/, - contains: [ - { beginKeywords: "where class" }, - TITLE_MODE, - GENERIC_MODIFIER, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - { - beginKeywords: 'namespace', - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:]/, - contains: [ - TITLE_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - { - beginKeywords: 'record', - relevance: 0, - end: /[{;=]/, - illegal: /[^\s:]/, - contains: [ - TITLE_MODE, - GENERIC_MODIFIER, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - { - // [Attributes("")] - className: 'meta', - begin: '^\\s*\\[(?=[\\w])', - excludeBegin: true, - end: '\\]', - excludeEnd: true, - contains: [ - { - className: 'string', - begin: /"/, - end: /"/ - } - ] - }, - { - // Expression keywords prevent 'keyword Name(...)' from being - // recognized as a function definition - beginKeywords: 'new return throw await else', - relevance: 0 - }, - { - className: 'function', - begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(', - returnBegin: true, - end: /\s*[{;=]/, - excludeEnd: true, - keywords: KEYWORDS, - contains: [ - // prevents these from being highlighted `title` - { - beginKeywords: FUNCTION_MODIFIERS.join(" "), - relevance: 0 - }, - { - begin: hljs.IDENT_RE + '\\s*(<[^=]+>\\s*)?\\(', - returnBegin: true, - contains: [ - hljs.TITLE_MODE, - GENERIC_MODIFIER - ], - relevance: 0 - }, - { match: /\(\)/ }, - { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS, - relevance: 0, - contains: [ - STRING, - NUMBERS, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - AT_IDENTIFIER - ] - }; -} - -module.exports = csharp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/csp.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/csp.js ***! - \************************************************************/ -(module) { - -/* -Language: CSP -Description: Content Security Policy definition highlighting -Author: Taras -Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -Category: web - -vim: ts=2 sw=2 st=2 -*/ - -/** @type LanguageFn */ -function csp(hljs) { - const KEYWORDS = [ - "base-uri", - "child-src", - "connect-src", - "default-src", - "font-src", - "form-action", - "frame-ancestors", - "frame-src", - "img-src", - "manifest-src", - "media-src", - "object-src", - "plugin-types", - "report-uri", - "sandbox", - "script-src", - "style-src", - "trusted-types", - "unsafe-hashes", - "worker-src" - ]; - return { - name: 'CSP', - case_insensitive: false, - keywords: { - $pattern: '[a-zA-Z][a-zA-Z0-9_-]*', - keyword: KEYWORDS - }, - contains: [ - { - className: 'string', - begin: "'", - end: "'" - }, - { - className: 'attribute', - begin: '^Content', - end: ':', - excludeEnd: true - } - ] - }; -} - -module.exports = csp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/css.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/css.js ***! - \************************************************************/ -(module) { - -const MODES = (hljs) => { - return { - IMPORTANT: { - scope: 'meta', - begin: '!important' - }, - BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, - HEXCOLOR: { - scope: 'number', - begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ - }, - FUNCTION_DISPATCH: { - className: "built_in", - begin: /[\w-]+(?=\()/ - }, - ATTRIBUTE_SELECTOR_MODE: { - scope: 'selector-attr', - begin: /\[/, - end: /\]/, - illegal: '$', - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }, - CSS_NUMBER_MODE: { - scope: 'number', - begin: hljs.NUMBER_RE + '(' + - '%|em|ex|ch|rem' + - '|vw|vh|vmin|vmax' + - '|cm|mm|in|pt|pc|px' + - '|deg|grad|rad|turn' + - '|s|ms' + - '|Hz|kHz' + - '|dpi|dpcm|dppx' + - ')?', - relevance: 0 - }, - CSS_VARIABLE: { - className: "attr", - begin: /--[A-Za-z_][A-Za-z0-9_-]*/ - } - }; -}; - -const HTML_TAGS = [ - 'a', - 'abbr', - 'address', - 'article', - 'aside', - 'audio', - 'b', - 'blockquote', - 'body', - 'button', - 'canvas', - 'caption', - 'cite', - 'code', - 'dd', - 'del', - 'details', - 'dfn', - 'div', - 'dl', - 'dt', - 'em', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'header', - 'hgroup', - 'html', - 'i', - 'iframe', - 'img', - 'input', - 'ins', - 'kbd', - 'label', - 'legend', - 'li', - 'main', - 'mark', - 'menu', - 'nav', - 'object', - 'ol', - 'optgroup', - 'option', - 'p', - 'picture', - 'q', - 'quote', - 'samp', - 'section', - 'select', - 'source', - 'span', - 'strong', - 'summary', - 'sup', - 'table', - 'tbody', - 'td', - 'textarea', - 'tfoot', - 'th', - 'thead', - 'time', - 'tr', - 'ul', - 'var', - 'video' -]; - -const SVG_TAGS = [ - 'defs', - 'g', - 'marker', - 'mask', - 'pattern', - 'svg', - 'switch', - 'symbol', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feFlood', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMorphology', - 'feOffset', - 'feSpecularLighting', - 'feTile', - 'feTurbulence', - 'linearGradient', - 'radialGradient', - 'stop', - 'circle', - 'ellipse', - 'image', - 'line', - 'path', - 'polygon', - 'polyline', - 'rect', - 'text', - 'use', - 'textPath', - 'tspan', - 'foreignObject', - 'clipPath' -]; - -const TAGS = [ - ...HTML_TAGS, - ...SVG_TAGS, -]; - -// Sorting, then reversing makes sure longer attributes/elements like -// `font-weight` are matched fully instead of getting false positives on say `font` - -const MEDIA_FEATURES = [ - 'any-hover', - 'any-pointer', - 'aspect-ratio', - 'color', - 'color-gamut', - 'color-index', - 'device-aspect-ratio', - 'device-height', - 'device-width', - 'display-mode', - 'forced-colors', - 'grid', - 'height', - 'hover', - 'inverted-colors', - 'monochrome', - 'orientation', - 'overflow-block', - 'overflow-inline', - 'pointer', - 'prefers-color-scheme', - 'prefers-contrast', - 'prefers-reduced-motion', - 'prefers-reduced-transparency', - 'resolution', - 'scan', - 'scripting', - 'update', - 'width', - // TODO: find a better solution? - 'min-width', - 'max-width', - 'min-height', - 'max-height' -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes -const PSEUDO_CLASSES = [ - 'active', - 'any-link', - 'blank', - 'checked', - 'current', - 'default', - 'defined', - 'dir', // dir() - 'disabled', - 'drop', - 'empty', - 'enabled', - 'first', - 'first-child', - 'first-of-type', - 'fullscreen', - 'future', - 'focus', - 'focus-visible', - 'focus-within', - 'has', // has() - 'host', // host or host() - 'host-context', // host-context() - 'hover', - 'indeterminate', - 'in-range', - 'invalid', - 'is', // is() - 'lang', // lang() - 'last-child', - 'last-of-type', - 'left', - 'link', - 'local-link', - 'not', // not() - 'nth-child', // nth-child() - 'nth-col', // nth-col() - 'nth-last-child', // nth-last-child() - 'nth-last-col', // nth-last-col() - 'nth-last-of-type', //nth-last-of-type() - 'nth-of-type', //nth-of-type() - 'only-child', - 'only-of-type', - 'optional', - 'out-of-range', - 'past', - 'placeholder-shown', - 'read-only', - 'read-write', - 'required', - 'right', - 'root', - 'scope', - 'target', - 'target-within', - 'user-invalid', - 'valid', - 'visited', - 'where' // where() -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements -const PSEUDO_ELEMENTS = [ - 'after', - 'backdrop', - 'before', - 'cue', - 'cue-region', - 'first-letter', - 'first-line', - 'grammar-error', - 'marker', - 'part', - 'placeholder', - 'selection', - 'slotted', - 'spelling-error' -].sort().reverse(); - -const ATTRIBUTES = [ - 'accent-color', - 'align-content', - 'align-items', - 'align-self', - 'alignment-baseline', - 'all', - 'anchor-name', - 'animation', - 'animation-composition', - 'animation-delay', - 'animation-direction', - 'animation-duration', - 'animation-fill-mode', - 'animation-iteration-count', - 'animation-name', - 'animation-play-state', - 'animation-range', - 'animation-range-end', - 'animation-range-start', - 'animation-timeline', - 'animation-timing-function', - 'appearance', - 'aspect-ratio', - 'backdrop-filter', - 'backface-visibility', - 'background', - 'background-attachment', - 'background-blend-mode', - 'background-clip', - 'background-color', - 'background-image', - 'background-origin', - 'background-position', - 'background-position-x', - 'background-position-y', - 'background-repeat', - 'background-size', - 'baseline-shift', - 'block-size', - 'border', - 'border-block', - 'border-block-color', - 'border-block-end', - 'border-block-end-color', - 'border-block-end-style', - 'border-block-end-width', - 'border-block-start', - 'border-block-start-color', - 'border-block-start-style', - 'border-block-start-width', - 'border-block-style', - 'border-block-width', - 'border-bottom', - 'border-bottom-color', - 'border-bottom-left-radius', - 'border-bottom-right-radius', - 'border-bottom-style', - 'border-bottom-width', - 'border-collapse', - 'border-color', - 'border-end-end-radius', - 'border-end-start-radius', - 'border-image', - 'border-image-outset', - 'border-image-repeat', - 'border-image-slice', - 'border-image-source', - 'border-image-width', - 'border-inline', - 'border-inline-color', - 'border-inline-end', - 'border-inline-end-color', - 'border-inline-end-style', - 'border-inline-end-width', - 'border-inline-start', - 'border-inline-start-color', - 'border-inline-start-style', - 'border-inline-start-width', - 'border-inline-style', - 'border-inline-width', - 'border-left', - 'border-left-color', - 'border-left-style', - 'border-left-width', - 'border-radius', - 'border-right', - 'border-right-color', - 'border-right-style', - 'border-right-width', - 'border-spacing', - 'border-start-end-radius', - 'border-start-start-radius', - 'border-style', - 'border-top', - 'border-top-color', - 'border-top-left-radius', - 'border-top-right-radius', - 'border-top-style', - 'border-top-width', - 'border-width', - 'bottom', - 'box-align', - 'box-decoration-break', - 'box-direction', - 'box-flex', - 'box-flex-group', - 'box-lines', - 'box-ordinal-group', - 'box-orient', - 'box-pack', - 'box-shadow', - 'box-sizing', - 'break-after', - 'break-before', - 'break-inside', - 'caption-side', - 'caret-color', - 'clear', - 'clip', - 'clip-path', - 'clip-rule', - 'color', - 'color-interpolation', - 'color-interpolation-filters', - 'color-profile', - 'color-rendering', - 'color-scheme', - 'column-count', - 'column-fill', - 'column-gap', - 'column-rule', - 'column-rule-color', - 'column-rule-style', - 'column-rule-width', - 'column-span', - 'column-width', - 'columns', - 'contain', - 'contain-intrinsic-block-size', - 'contain-intrinsic-height', - 'contain-intrinsic-inline-size', - 'contain-intrinsic-size', - 'contain-intrinsic-width', - 'container', - 'container-name', - 'container-type', - 'content', - 'content-visibility', - 'counter-increment', - 'counter-reset', - 'counter-set', - 'cue', - 'cue-after', - 'cue-before', - 'cursor', - 'cx', - 'cy', - 'direction', - 'display', - 'dominant-baseline', - 'empty-cells', - 'enable-background', - 'field-sizing', - 'fill', - 'fill-opacity', - 'fill-rule', - 'filter', - 'flex', - 'flex-basis', - 'flex-direction', - 'flex-flow', - 'flex-grow', - 'flex-shrink', - 'flex-wrap', - 'float', - 'flood-color', - 'flood-opacity', - 'flow', - 'font', - 'font-display', - 'font-family', - 'font-feature-settings', - 'font-kerning', - 'font-language-override', - 'font-optical-sizing', - 'font-palette', - 'font-size', - 'font-size-adjust', - 'font-smooth', - 'font-smoothing', - 'font-stretch', - 'font-style', - 'font-synthesis', - 'font-synthesis-position', - 'font-synthesis-small-caps', - 'font-synthesis-style', - 'font-synthesis-weight', - 'font-variant', - 'font-variant-alternates', - 'font-variant-caps', - 'font-variant-east-asian', - 'font-variant-emoji', - 'font-variant-ligatures', - 'font-variant-numeric', - 'font-variant-position', - 'font-variation-settings', - 'font-weight', - 'forced-color-adjust', - 'gap', - 'glyph-orientation-horizontal', - 'glyph-orientation-vertical', - 'grid', - 'grid-area', - 'grid-auto-columns', - 'grid-auto-flow', - 'grid-auto-rows', - 'grid-column', - 'grid-column-end', - 'grid-column-start', - 'grid-gap', - 'grid-row', - 'grid-row-end', - 'grid-row-start', - 'grid-template', - 'grid-template-areas', - 'grid-template-columns', - 'grid-template-rows', - 'hanging-punctuation', - 'height', - 'hyphenate-character', - 'hyphenate-limit-chars', - 'hyphens', - 'icon', - 'image-orientation', - 'image-rendering', - 'image-resolution', - 'ime-mode', - 'initial-letter', - 'initial-letter-align', - 'inline-size', - 'inset', - 'inset-area', - 'inset-block', - 'inset-block-end', - 'inset-block-start', - 'inset-inline', - 'inset-inline-end', - 'inset-inline-start', - 'isolation', - 'justify-content', - 'justify-items', - 'justify-self', - 'kerning', - 'left', - 'letter-spacing', - 'lighting-color', - 'line-break', - 'line-height', - 'line-height-step', - 'list-style', - 'list-style-image', - 'list-style-position', - 'list-style-type', - 'margin', - 'margin-block', - 'margin-block-end', - 'margin-block-start', - 'margin-bottom', - 'margin-inline', - 'margin-inline-end', - 'margin-inline-start', - 'margin-left', - 'margin-right', - 'margin-top', - 'margin-trim', - 'marker', - 'marker-end', - 'marker-mid', - 'marker-start', - 'marks', - 'mask', - 'mask-border', - 'mask-border-mode', - 'mask-border-outset', - 'mask-border-repeat', - 'mask-border-slice', - 'mask-border-source', - 'mask-border-width', - 'mask-clip', - 'mask-composite', - 'mask-image', - 'mask-mode', - 'mask-origin', - 'mask-position', - 'mask-repeat', - 'mask-size', - 'mask-type', - 'masonry-auto-flow', - 'math-depth', - 'math-shift', - 'math-style', - 'max-block-size', - 'max-height', - 'max-inline-size', - 'max-width', - 'min-block-size', - 'min-height', - 'min-inline-size', - 'min-width', - 'mix-blend-mode', - 'nav-down', - 'nav-index', - 'nav-left', - 'nav-right', - 'nav-up', - 'none', - 'normal', - 'object-fit', - 'object-position', - 'offset', - 'offset-anchor', - 'offset-distance', - 'offset-path', - 'offset-position', - 'offset-rotate', - 'opacity', - 'order', - 'orphans', - 'outline', - 'outline-color', - 'outline-offset', - 'outline-style', - 'outline-width', - 'overflow', - 'overflow-anchor', - 'overflow-block', - 'overflow-clip-margin', - 'overflow-inline', - 'overflow-wrap', - 'overflow-x', - 'overflow-y', - 'overlay', - 'overscroll-behavior', - 'overscroll-behavior-block', - 'overscroll-behavior-inline', - 'overscroll-behavior-x', - 'overscroll-behavior-y', - 'padding', - 'padding-block', - 'padding-block-end', - 'padding-block-start', - 'padding-bottom', - 'padding-inline', - 'padding-inline-end', - 'padding-inline-start', - 'padding-left', - 'padding-right', - 'padding-top', - 'page', - 'page-break-after', - 'page-break-before', - 'page-break-inside', - 'paint-order', - 'pause', - 'pause-after', - 'pause-before', - 'perspective', - 'perspective-origin', - 'place-content', - 'place-items', - 'place-self', - 'pointer-events', - 'position', - 'position-anchor', - 'position-visibility', - 'print-color-adjust', - 'quotes', - 'r', - 'resize', - 'rest', - 'rest-after', - 'rest-before', - 'right', - 'rotate', - 'row-gap', - 'ruby-align', - 'ruby-position', - 'scale', - 'scroll-behavior', - 'scroll-margin', - 'scroll-margin-block', - 'scroll-margin-block-end', - 'scroll-margin-block-start', - 'scroll-margin-bottom', - 'scroll-margin-inline', - 'scroll-margin-inline-end', - 'scroll-margin-inline-start', - 'scroll-margin-left', - 'scroll-margin-right', - 'scroll-margin-top', - 'scroll-padding', - 'scroll-padding-block', - 'scroll-padding-block-end', - 'scroll-padding-block-start', - 'scroll-padding-bottom', - 'scroll-padding-inline', - 'scroll-padding-inline-end', - 'scroll-padding-inline-start', - 'scroll-padding-left', - 'scroll-padding-right', - 'scroll-padding-top', - 'scroll-snap-align', - 'scroll-snap-stop', - 'scroll-snap-type', - 'scroll-timeline', - 'scroll-timeline-axis', - 'scroll-timeline-name', - 'scrollbar-color', - 'scrollbar-gutter', - 'scrollbar-width', - 'shape-image-threshold', - 'shape-margin', - 'shape-outside', - 'shape-rendering', - 'speak', - 'speak-as', - 'src', // @font-face - 'stop-color', - 'stop-opacity', - 'stroke', - 'stroke-dasharray', - 'stroke-dashoffset', - 'stroke-linecap', - 'stroke-linejoin', - 'stroke-miterlimit', - 'stroke-opacity', - 'stroke-width', - 'tab-size', - 'table-layout', - 'text-align', - 'text-align-all', - 'text-align-last', - 'text-anchor', - 'text-combine-upright', - 'text-decoration', - 'text-decoration-color', - 'text-decoration-line', - 'text-decoration-skip', - 'text-decoration-skip-ink', - 'text-decoration-style', - 'text-decoration-thickness', - 'text-emphasis', - 'text-emphasis-color', - 'text-emphasis-position', - 'text-emphasis-style', - 'text-indent', - 'text-justify', - 'text-orientation', - 'text-overflow', - 'text-rendering', - 'text-shadow', - 'text-size-adjust', - 'text-transform', - 'text-underline-offset', - 'text-underline-position', - 'text-wrap', - 'text-wrap-mode', - 'text-wrap-style', - 'timeline-scope', - 'top', - 'touch-action', - 'transform', - 'transform-box', - 'transform-origin', - 'transform-style', - 'transition', - 'transition-behavior', - 'transition-delay', - 'transition-duration', - 'transition-property', - 'transition-timing-function', - 'translate', - 'unicode-bidi', - 'user-modify', - 'user-select', - 'vector-effect', - 'vertical-align', - 'view-timeline', - 'view-timeline-axis', - 'view-timeline-inset', - 'view-timeline-name', - 'view-transition-name', - 'visibility', - 'voice-balance', - 'voice-duration', - 'voice-family', - 'voice-pitch', - 'voice-range', - 'voice-rate', - 'voice-stress', - 'voice-volume', - 'white-space', - 'white-space-collapse', - 'widows', - 'width', - 'will-change', - 'word-break', - 'word-spacing', - 'word-wrap', - 'writing-mode', - 'x', - 'y', - 'z-index', - 'zoom' -].sort().reverse(); - -/* -Language: CSS -Category: common, css, web -Website: https://developer.mozilla.org/en-US/docs/Web/CSS -*/ - - -/** @type LanguageFn */ -function css(hljs) { - const regex = hljs.regex; - const modes = MODES(hljs); - const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ }; - const AT_MODIFIERS = "and or not only"; - const AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/; // @-webkit-keyframes - const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*'; - const STRINGS = [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ]; - - return { - name: 'CSS', - case_insensitive: true, - illegal: /[=|'\$]/, - keywords: { keyframePosition: "from to" }, - classNameAliases: { - // for visual continuity with `tag {}` and because we - // don't have a great class for this? - keyframePosition: "selector-tag" }, - contains: [ - modes.BLOCK_COMMENT, - VENDOR_PREFIX, - // to recognize keyframe 40% etc which are outside the scope of our - // attribute value mode - modes.CSS_NUMBER_MODE, - { - className: 'selector-id', - begin: /#[A-Za-z0-9_-]+/, - relevance: 0 - }, - { - className: 'selector-class', - begin: '\\.' + IDENT_RE, - relevance: 0 - }, - modes.ATTRIBUTE_SELECTOR_MODE, - { - className: 'selector-pseudo', - variants: [ - { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' }, - { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' } - ] - }, - // we may actually need this (12/2020) - // { // pseudo-selector params - // begin: /\(/, - // end: /\)/, - // contains: [ hljs.CSS_NUMBER_MODE ] - // }, - modes.CSS_VARIABLE, - { - className: 'attribute', - begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b' - }, - // attribute values - { - begin: /:/, - end: /[;}{]/, - contains: [ - modes.BLOCK_COMMENT, - modes.HEXCOLOR, - modes.IMPORTANT, - modes.CSS_NUMBER_MODE, - ...STRINGS, - // needed to highlight these as strings and to avoid issues with - // illegal characters that might be inside urls that would tigger the - // languages illegal stack - { - begin: /(url|data-uri)\(/, - end: /\)/, - relevance: 0, // from keywords - keywords: { built_in: "url data-uri" }, - contains: [ - ...STRINGS, - { - className: "string", - // any character other than `)` as in `url()` will be the start - // of a string, which ends with `)` (from the parent mode) - begin: /[^)]/, - endsWithParent: true, - excludeEnd: true - } - ] - }, - modes.FUNCTION_DISPATCH - ] - }, - { - begin: regex.lookahead(/@/), - end: '[{;]', - relevance: 0, - illegal: /:/, // break on Less variables @var: ... - contains: [ - { - className: 'keyword', - begin: AT_PROPERTY_RE - }, - { - begin: /\s/, - endsWithParent: true, - excludeEnd: true, - relevance: 0, - keywords: { - $pattern: /[a-z-]+/, - keyword: AT_MODIFIERS, - attribute: MEDIA_FEATURES.join(" ") - }, - contains: [ - { - begin: /[a-z-]+(?=:)/, - className: "attribute" - }, - ...STRINGS, - modes.CSS_NUMBER_MODE - ] - } - ] - }, - { - className: 'selector-tag', - begin: '\\b(' + TAGS.join('|') + ')\\b' - } - ] - }; -} - -module.exports = css; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/d.js" -/*!**********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/d.js ***! - \**********************************************************/ -(module) { - -/* -Language: D -Author: Aleksandar Ruzicic -Description: D is a language with C-like syntax and static typing. It pragmatically combines efficiency, control, and modeling power, with safety and programmer productivity. -Version: 1.0a -Website: https://dlang.org -Category: system -Date: 2012-04-08 -*/ - -/** - * Known issues: - * - * - invalid hex string literals will be recognized as a double quoted strings - * but 'x' at the beginning of string will not be matched - * - * - delimited string literals are not checked for matching end delimiter - * (not possible to do with js regexp) - * - * - content of token string is colored as a string (i.e. no keyword coloring inside a token string) - * also, content of token string is not validated to contain only valid D tokens - * - * - special token sequence rule is not strictly following D grammar (anything following #line - * up to the end of line is matched as special token sequence) - */ - -/** @type LanguageFn */ -function d(hljs) { - /** - * Language keywords - * - * @type {Object} - */ - const D_KEYWORDS = { - $pattern: hljs.UNDERSCORE_IDENT_RE, - keyword: - 'abstract alias align asm assert auto body break byte case cast catch class ' - + 'const continue debug default delete deprecated do else enum export extern final ' - + 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' - + 'interface invariant is lazy macro mixin module new nothrow out override package ' - + 'pragma private protected public pure ref return scope shared static struct ' - + 'super switch synchronized template this throw try typedef typeid typeof union ' - + 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' - + '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__', - built_in: - 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' - + 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' - + 'wstring', - literal: - 'false null true' - }; - - /** - * Number literal regexps - * - * @type {String} - */ - const decimal_integer_re = '(0|[1-9][\\d_]*)'; - const decimal_integer_nosus_re = '(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)'; - const binary_integer_re = '0[bB][01_]+'; - const hexadecimal_digits_re = '([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)'; - const hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re; - - const decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')'; - const decimal_float_re = '(' + decimal_integer_nosus_re + '(\\.\\d*|' + decimal_exponent_re + ')|' - + '\\d+\\.' + decimal_integer_nosus_re + '|' - + '\\.' + decimal_integer_re + decimal_exponent_re + '?' - + ')'; - const hexadecimal_float_re = '(0[xX](' - + hexadecimal_digits_re + '\\.' + hexadecimal_digits_re + '|' - + '\\.?' + hexadecimal_digits_re - + ')[pP][+-]?' + decimal_integer_nosus_re + ')'; - - const integer_re = '(' - + decimal_integer_re + '|' - + binary_integer_re + '|' - + hexadecimal_integer_re - + ')'; - - const float_re = '(' - + hexadecimal_float_re + '|' - + decimal_float_re - + ')'; - - /** - * Escape sequence supported in D string and character literals - * - * @type {String} - */ - const escape_sequence_re = '\\\\(' - + '[\'"\\?\\\\abfnrtv]|' // common escapes - + 'u[\\dA-Fa-f]{4}|' // four hex digit unicode codepoint - + '[0-7]{1,3}|' // one to three octal digit ascii char code - + 'x[\\dA-Fa-f]{2}|' // two hex digit ascii char code - + 'U[\\dA-Fa-f]{8}' // eight hex digit unicode codepoint - + ')|' - + '&[a-zA-Z\\d]{2,};'; // named character entity - - /** - * D integer number literals - * - * @type {Object} - */ - const D_INTEGER_MODE = { - className: 'number', - begin: '\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?', - relevance: 0 - }; - - /** - * [D_FLOAT_MODE description] - * @type {Object} - */ - const D_FLOAT_MODE = { - className: 'number', - begin: '\\b(' - + float_re + '([fF]|L|i|[fF]i|Li)?|' - + integer_re + '(i|[fF]i|Li)' - + ')', - relevance: 0 - }; - - /** - * D character literal - * - * @type {Object} - */ - const D_CHARACTER_MODE = { - className: 'string', - begin: '\'(' + escape_sequence_re + '|.)', - end: '\'', - illegal: '.' - }; - - /** - * D string escape sequence - * - * @type {Object} - */ - const D_ESCAPE_SEQUENCE = { - begin: escape_sequence_re, - relevance: 0 - }; - - /** - * D double quoted string literal - * - * @type {Object} - */ - const D_STRING_MODE = { - className: 'string', - begin: '"', - contains: [ D_ESCAPE_SEQUENCE ], - end: '"[cwd]?' - }; - - /** - * D wysiwyg and delimited string literals - * - * @type {Object} - */ - const D_WYSIWYG_DELIMITED_STRING_MODE = { - className: 'string', - begin: '[rq]"', - end: '"[cwd]?', - relevance: 5 - }; - - /** - * D alternate wysiwyg string literal - * - * @type {Object} - */ - const D_ALTERNATE_WYSIWYG_STRING_MODE = { - className: 'string', - begin: '`', - end: '`[cwd]?' - }; - - /** - * D hexadecimal string literal - * - * @type {Object} - */ - const D_HEX_STRING_MODE = { - className: 'string', - begin: 'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?', - relevance: 10 - }; - - /** - * D delimited string literal - * - * @type {Object} - */ - const D_TOKEN_STRING_MODE = { - className: 'string', - begin: 'q"\\{', - end: '\\}"' - }; - - /** - * Hashbang support - * - * @type {Object} - */ - const D_HASHBANG_MODE = { - className: 'meta', - begin: '^#!', - end: '$', - relevance: 5 - }; - - /** - * D special token sequence - * - * @type {Object} - */ - const D_SPECIAL_TOKEN_SEQUENCE_MODE = { - className: 'meta', - begin: '#(line)', - end: '$', - relevance: 5 - }; - - /** - * D attributes - * - * @type {Object} - */ - const D_ATTRIBUTE_MODE = { - className: 'keyword', - begin: '@[a-zA-Z_][a-zA-Z_\\d]*' - }; - - /** - * D nesting comment - * - * @type {Object} - */ - const D_NESTING_COMMENT_MODE = hljs.COMMENT( - '\\/\\+', - '\\+\\/', - { - contains: [ 'self' ], - relevance: 10 - } - ); - - return { - name: 'D', - keywords: D_KEYWORDS, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - D_NESTING_COMMENT_MODE, - D_HEX_STRING_MODE, - D_STRING_MODE, - D_WYSIWYG_DELIMITED_STRING_MODE, - D_ALTERNATE_WYSIWYG_STRING_MODE, - D_TOKEN_STRING_MODE, - D_FLOAT_MODE, - D_INTEGER_MODE, - D_CHARACTER_MODE, - D_HASHBANG_MODE, - D_SPECIAL_TOKEN_SEQUENCE_MODE, - D_ATTRIBUTE_MODE - ] - }; -} - -module.exports = d; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dart.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dart.js ***! - \*************************************************************/ -(module) { - -/* -Language: Dart -Requires: markdown.js -Author: Maxim Dikun -Description: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/ -Website: https://dart.dev -Category: scripting -*/ - -/** @type LanguageFn */ -function dart(hljs) { - const SUBST = { - className: 'subst', - variants: [ { begin: '\\$[A-Za-z0-9_]+' } ] - }; - - const BRACED_SUBST = { - className: 'subst', - variants: [ - { - begin: /\$\{/, - end: /\}/ - } - ], - keywords: 'true false null this is new super' - }; - - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - { match: /\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b/ }, - { match: /\b0[xX][0-9A-Fa-f][0-9A-Fa-f_]*\b/ } - ] - }; - - const STRING = { - className: 'string', - variants: [ - { - begin: 'r\'\'\'', - end: '\'\'\'' - }, - { - begin: 'r"""', - end: '"""' - }, - { - begin: 'r\'', - end: '\'', - illegal: '\\n' - }, - { - begin: 'r"', - end: '"', - illegal: '\\n' - }, - { - begin: '\'\'\'', - end: '\'\'\'', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - BRACED_SUBST - ] - }, - { - begin: '"""', - end: '"""', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - BRACED_SUBST - ] - }, - { - begin: '\'', - end: '\'', - illegal: '\\n', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - BRACED_SUBST - ] - }, - { - begin: '"', - end: '"', - illegal: '\\n', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - BRACED_SUBST - ] - } - ] - }; - BRACED_SUBST.contains = [ - NUMBER, - STRING - ]; - - const BUILT_IN_TYPES = [ - // dart:core - 'Comparable', - 'DateTime', - 'Duration', - 'Function', - 'Iterable', - 'Iterator', - 'List', - 'Map', - 'Match', - 'Object', - 'Pattern', - 'RegExp', - 'Set', - 'Stopwatch', - 'String', - 'StringBuffer', - 'StringSink', - 'Symbol', - 'Type', - 'Uri', - 'bool', - 'double', - 'int', - 'num', - // dart:html - 'Element', - 'ElementList' - ]; - const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`); - - const BASIC_KEYWORDS = [ - "abstract", - "as", - "assert", - "async", - "await", - "base", - "break", - "case", - "catch", - "class", - "const", - "continue", - "covariant", - "default", - "deferred", - "do", - "dynamic", - "else", - "enum", - "export", - "extends", - "extension", - "external", - "factory", - "false", - "final", - "finally", - "for", - "Function", - "get", - "hide", - "if", - "implements", - "import", - "in", - "interface", - "is", - "late", - "library", - "mixin", - "new", - "null", - "on", - "operator", - "part", - "required", - "rethrow", - "return", - "sealed", - "set", - "show", - "static", - "super", - "switch", - "sync", - "this", - "throw", - "true", - "try", - "typedef", - "var", - "void", - "when", - "while", - "with", - "yield" - ]; - - const KEYWORDS = { - keyword: BASIC_KEYWORDS, - built_in: - BUILT_IN_TYPES - .concat(NULLABLE_BUILT_IN_TYPES) - .concat([ - // dart:core - 'Never', - 'Null', - 'dynamic', - 'print', - // dart:html - 'document', - 'querySelector', - 'querySelectorAll', - 'window' - ]), - $pattern: /[A-Za-z][A-Za-z0-9_]*\??/ - }; - - return { - name: 'Dart', - keywords: KEYWORDS, - contains: [ - STRING, - hljs.COMMENT( - /\/\*\*(?!\/)/, - /\*\//, - { - subLanguage: 'markdown', - relevance: 0 - } - ), - hljs.COMMENT( - /\/{3,} ?/, - /$/, { contains: [ - { - subLanguage: 'markdown', - begin: '.', - end: '$', - relevance: 0 - } - ] } - ), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'class', - beginKeywords: 'class interface', - end: /\{/, - excludeEnd: true, - contains: [ - { beginKeywords: 'extends implements' }, - hljs.UNDERSCORE_TITLE_MODE - ] - }, - NUMBER, - { - className: 'meta', - begin: '@[A-Za-z]+' - }, - { begin: '=>' // No markup, just a relevance booster - } - ] - }; -} - -module.exports = dart; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/delphi.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/delphi.js ***! - \***************************************************************/ -(module) { - -/* -Language: Delphi -Website: https://www.embarcadero.com/products/delphi -Category: system -*/ - -/** @type LanguageFn */ -function delphi(hljs) { - const KEYWORDS = [ - "exports", - "register", - "file", - "shl", - "array", - "record", - "property", - "for", - "mod", - "while", - "set", - "ally", - "label", - "uses", - "raise", - "not", - "stored", - "class", - "safecall", - "var", - "interface", - "or", - "private", - "static", - "exit", - "index", - "inherited", - "to", - "else", - "stdcall", - "override", - "shr", - "asm", - "far", - "resourcestring", - "finalization", - "packed", - "virtual", - "out", - "and", - "protected", - "library", - "do", - "xorwrite", - "goto", - "near", - "function", - "end", - "div", - "overload", - "object", - "unit", - "begin", - "string", - "on", - "inline", - "repeat", - "until", - "destructor", - "write", - "message", - "program", - "with", - "read", - "initialization", - "except", - "default", - "nil", - "if", - "case", - "cdecl", - "in", - "downto", - "threadvar", - "of", - "try", - "pascal", - "const", - "external", - "constructor", - "type", - "public", - "then", - "implementation", - "finally", - "published", - "procedure", - "absolute", - "reintroduce", - "operator", - "as", - "is", - "abstract", - "alias", - "assembler", - "bitpacked", - "break", - "continue", - "cppdecl", - "cvar", - "enumerator", - "experimental", - "platform", - "deprecated", - "unimplemented", - "dynamic", - "export", - "far16", - "forward", - "generic", - "helper", - "implements", - "interrupt", - "iochecks", - "local", - "name", - "nodefault", - "noreturn", - "nostackframe", - "oldfpccall", - "otherwise", - "saveregisters", - "softfloat", - "specialize", - "strict", - "unaligned", - "varargs" - ]; - const COMMENT_MODES = [ - hljs.C_LINE_COMMENT_MODE, - hljs.COMMENT(/\{/, /\}/, { relevance: 0 }), - hljs.COMMENT(/\(\*/, /\*\)/, { relevance: 10 }) - ]; - const DIRECTIVE = { - className: 'meta', - variants: [ - { - begin: /\{\$/, - end: /\}/ - }, - { - begin: /\(\*\$/, - end: /\*\)/ - } - ] - }; - const STRING = { - className: 'string', - begin: /'/, - end: /'/, - contains: [ { begin: /''/ } ] - }; - const NUMBER = { - className: 'number', - relevance: 0, - // Source: https://www.freepascal.org/docs-html/ref/refse6.html - variants: [ - { - // Regular numbers, e.g., 123, 123.456. - match: /\b\d[\d_]*(\.\d[\d_]*)?/ }, - { - // Hexadecimal notation, e.g., $7F. - match: /\$[\dA-Fa-f_]+/ }, - { - // Hexadecimal literal with no digits - match: /\$/, - relevance: 0 }, - { - // Octal notation, e.g., &42. - match: /&[0-7][0-7_]*/ }, - { - // Binary notation, e.g., %1010. - match: /%[01_]+/ }, - { - // Binary literal with no digits - match: /%/, - relevance: 0 } - ] - }; - const CHAR_STRING = { - className: 'string', - variants: [ - { match: /#\d[\d_]*/ }, - { match: /#\$[\dA-Fa-f][\dA-Fa-f_]*/ }, - { match: /#&[0-7][0-7_]*/ }, - { match: /#%[01][01_]*/ } - ] - }; - const CLASS = { - begin: hljs.IDENT_RE + '\\s*=\\s*class\\s*\\(', - returnBegin: true, - contains: [ hljs.TITLE_MODE ] - }; - const FUNCTION = { - className: 'function', - beginKeywords: 'function constructor destructor procedure', - end: /[:;]/, - keywords: 'function constructor|10 destructor|10 procedure|10', - contains: [ - hljs.TITLE_MODE, - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: [ - STRING, - CHAR_STRING, - DIRECTIVE - ].concat(COMMENT_MODES) - }, - DIRECTIVE - ].concat(COMMENT_MODES) - }; - return { - name: 'Delphi', - aliases: [ - 'dpr', - 'dfm', - 'pas', - 'pascal' - ], - case_insensitive: true, - keywords: KEYWORDS, - illegal: /"|\$[G-Zg-z]|\/\*|<\/|\|/, - contains: [ - STRING, - CHAR_STRING, - NUMBER, - CLASS, - FUNCTION, - DIRECTIVE - ].concat(COMMENT_MODES) - }; -} - -module.exports = delphi; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/diff.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/diff.js ***! - \*************************************************************/ -(module) { - -/* -Language: Diff -Description: Unified and context diff -Author: Vasily Polovnyov -Website: https://www.gnu.org/software/diffutils/ -Category: common -*/ - -/** @type LanguageFn */ -function diff(hljs) { - const regex = hljs.regex; - return { - name: 'Diff', - aliases: [ 'patch' ], - contains: [ - { - className: 'meta', - relevance: 10, - match: regex.either( - /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/, - /^\*\*\* +\d+,\d+ +\*\*\*\*$/, - /^--- +\d+,\d+ +----$/ - ) - }, - { - className: 'comment', - variants: [ - { - begin: regex.either( - /Index: /, - /^index/, - /={3,}/, - /^-{3}/, - /^\*{3} /, - /^\+{3}/, - /^diff --git/ - ), - end: /$/ - }, - { match: /^\*{15}$/ } - ] - }, - { - className: 'addition', - begin: /^\+/, - end: /$/ - }, - { - className: 'deletion', - begin: /^-/, - end: /$/ - }, - { - className: 'addition', - begin: /^!/, - end: /$/ - } - ] - }; -} - -module.exports = diff; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/django.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/django.js ***! - \***************************************************************/ -(module) { - -/* -Language: Django -Description: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. -Requires: xml.js -Author: Ivan Sagalaev -Contributors: Ilya Baryshev -Website: https://www.djangoproject.com -Category: template -*/ - -/** @type LanguageFn */ -function django(hljs) { - const FILTER = { - begin: /\|[A-Za-z]+:?/, - keywords: { name: - 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' - + 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' - + 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' - + 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' - + 'dictsortreversed default_if_none pluralize lower join center default ' - + 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' - + 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' - + 'localtime utc timezone' }, - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE - ] - }; - - return { - name: 'Django', - aliases: [ 'jinja' ], - case_insensitive: true, - subLanguage: 'xml', - contains: [ - hljs.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/), - hljs.COMMENT(/\{#/, /#\}/), - { - className: 'template-tag', - begin: /\{%/, - end: /%\}/, - contains: [ - { - className: 'name', - begin: /\w+/, - keywords: { name: - 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' - + 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' - + 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' - + 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' - + 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' - + 'plural get_current_language language get_available_languages ' - + 'get_current_language_bidi get_language_info get_language_info_list localize ' - + 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' - + 'verbatim' }, - starts: { - endsWithParent: true, - keywords: 'in by as', - contains: [ FILTER ], - relevance: 0 - } - } - ] - }, - { - className: 'template-variable', - begin: /\{\{/, - end: /\}\}/, - contains: [ FILTER ] - } - ] - }; -} - -module.exports = django; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dns.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dns.js ***! - \************************************************************/ -(module) { - -/* -Language: DNS Zone -Author: Tim Schumacher -Category: config -Website: https://en.wikipedia.org/wiki/Zone_file -*/ - -/** @type LanguageFn */ -function dns(hljs) { - const KEYWORDS = [ - "IN", - "A", - "AAAA", - "AFSDB", - "APL", - "CAA", - "CDNSKEY", - "CDS", - "CERT", - "CNAME", - "DHCID", - "DLV", - "DNAME", - "DNSKEY", - "DS", - "HIP", - "IPSECKEY", - "KEY", - "KX", - "LOC", - "MX", - "NAPTR", - "NS", - "NSEC", - "NSEC3", - "NSEC3PARAM", - "PTR", - "RRSIG", - "RP", - "SIG", - "SOA", - "SRV", - "SSHFP", - "TA", - "TKEY", - "TLSA", - "TSIG", - "TXT" - ]; - return { - name: 'DNS Zone', - aliases: [ - 'bind', - 'zone' - ], - keywords: KEYWORDS, - contains: [ - hljs.COMMENT(';', '$', { relevance: 0 }), - { - className: 'meta', - begin: /^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/ - }, - // IPv6 - { - className: 'number', - begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b' - }, - // IPv4 - { - className: 'number', - begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b' - }, - hljs.inherit(hljs.NUMBER_MODE, { begin: /\b\d+[dhwm]?/ }) - ] - }; -} - -module.exports = dns; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dockerfile.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dockerfile.js ***! - \*******************************************************************/ -(module) { - -/* -Language: Dockerfile -Requires: bash.js -Author: Alexis Hénaut -Description: language definition for Dockerfile files -Website: https://docs.docker.com/engine/reference/builder/ -Category: config -*/ - -/** @type LanguageFn */ -function dockerfile(hljs) { - const KEYWORDS = [ - "from", - "maintainer", - "expose", - "env", - "arg", - "user", - "onbuild", - "stopsignal" - ]; - return { - name: 'Dockerfile', - aliases: [ 'docker' ], - case_insensitive: true, - keywords: KEYWORDS, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - { - beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell', - starts: { - end: /[^\\]$/, - subLanguage: 'bash' - } - } - ], - illegal: ' -Contributors: Anton Kochkov -Website: https://en.wikipedia.org/wiki/Batch_file -Category: scripting -*/ - -/** @type LanguageFn */ -function dos(hljs) { - const COMMENT = hljs.COMMENT( - /^\s*@?rem\b/, /$/, - { relevance: 10 } - ); - const LABEL = { - className: 'symbol', - begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)', - relevance: 0 - }; - const KEYWORDS = [ - "if", - "else", - "goto", - "for", - "in", - "do", - "call", - "exit", - "not", - "exist", - "errorlevel", - "defined", - "equ", - "neq", - "lss", - "leq", - "gtr", - "geq" - ]; - const BUILT_INS = [ - "prn", - "nul", - "lpt3", - "lpt2", - "lpt1", - "con", - "com4", - "com3", - "com2", - "com1", - "aux", - "shift", - "cd", - "dir", - "echo", - "setlocal", - "endlocal", - "set", - "pause", - "copy", - "append", - "assoc", - "at", - "attrib", - "break", - "cacls", - "cd", - "chcp", - "chdir", - "chkdsk", - "chkntfs", - "cls", - "cmd", - "color", - "comp", - "compact", - "convert", - "date", - "dir", - "diskcomp", - "diskcopy", - "doskey", - "erase", - "fs", - "find", - "findstr", - "format", - "ftype", - "graftabl", - "help", - "keyb", - "label", - "md", - "mkdir", - "mode", - "more", - "move", - "path", - "pause", - "print", - "popd", - "pushd", - "promt", - "rd", - "recover", - "rem", - "rename", - "replace", - "restore", - "rmdir", - "shift", - "sort", - "start", - "subst", - "time", - "title", - "tree", - "type", - "ver", - "verify", - "vol", - // winutils - "ping", - "net", - "ipconfig", - "taskkill", - "xcopy", - "ren", - "del" - ]; - return { - name: 'Batch file (DOS)', - aliases: [ - 'bat', - 'cmd' - ], - case_insensitive: true, - illegal: /\/\*/, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS - }, - contains: [ - { - className: 'variable', - begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/ - }, - { - className: 'function', - begin: LABEL.begin, - end: 'goto:eof', - contains: [ - hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }), - COMMENT - ] - }, - { - className: 'number', - begin: '\\b\\d+', - relevance: 0 - }, - COMMENT - ] - }; -} - -module.exports = dos; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dsconfig.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dsconfig.js ***! - \*****************************************************************/ -(module) { - -/* - Language: dsconfig - Description: dsconfig batch configuration language for LDAP directory servers - Contributors: Jacob Childress - Category: enterprise, config - */ - -/** @type LanguageFn */ -function dsconfig(hljs) { - const QUOTED_PROPERTY = { - className: 'string', - begin: /"/, - end: /"/ - }; - const APOS_PROPERTY = { - className: 'string', - begin: /'/, - end: /'/ - }; - const UNQUOTED_PROPERTY = { - className: 'string', - begin: /[\w\-?]+:\w+/, - end: /\W/, - relevance: 0 - }; - const VALUELESS_PROPERTY = { - className: 'string', - begin: /\w+(\-\w+)*/, - end: /(?=\W)/, - relevance: 0 - }; - - return { - keywords: 'dsconfig', - contains: [ - { - className: 'keyword', - begin: '^dsconfig', - end: /\s/, - excludeEnd: true, - relevance: 10 - }, - { - className: 'built_in', - begin: /(list|create|get|set|delete)-(\w+)/, - end: /\s/, - excludeEnd: true, - illegal: '!@#$%^&*()', - relevance: 10 - }, - { - className: 'built_in', - begin: /--(\w+)/, - end: /\s/, - excludeEnd: true - }, - QUOTED_PROPERTY, - APOS_PROPERTY, - UNQUOTED_PROPERTY, - VALUELESS_PROPERTY, - hljs.HASH_COMMENT_MODE - ] - }; -} - -module.exports = dsconfig; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dts.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dts.js ***! - \************************************************************/ -(module) { - -/* -Language: Device Tree -Description: *.dts files used in the Linux kernel -Author: Martin Braun , Moritz Fischer -Website: https://elinux.org/Device_Tree_Reference -Category: config -*/ - -/** @type LanguageFn */ -function dts(hljs) { - const STRINGS = { - className: 'string', - variants: [ - hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?"' }), - { - begin: '(u8?|U)?R"', - end: '"', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '\'\\\\?.', - end: '\'', - illegal: '.' - } - ] - }; - - const NUMBERS = { - className: 'number', - variants: [ - { begin: '\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)' }, - { begin: hljs.C_NUMBER_RE } - ], - relevance: 0 - }; - - const PREPROCESSOR = { - className: 'meta', - begin: '#', - end: '$', - keywords: { keyword: 'if else elif endif define undef ifdef ifndef' }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - { - beginKeywords: 'include', - end: '$', - keywords: { keyword: 'include' }, - contains: [ - hljs.inherit(STRINGS, { className: 'string' }), - { - className: 'string', - begin: '<', - end: '>', - illegal: '\\n' - } - ] - }, - STRINGS, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; - - const REFERENCE = { - className: 'variable', - begin: /&[a-z\d_]*\b/ - }; - - const KEYWORD = { - className: 'keyword', - begin: '/[a-z][a-z\\d-]*/' - }; - - const LABEL = { - className: 'symbol', - begin: '^\\s*[a-zA-Z_][a-zA-Z\\d_]*:' - }; - - const CELL_PROPERTY = { - className: 'params', - relevance: 0, - begin: '<', - end: '>', - contains: [ - NUMBERS, - REFERENCE - ] - }; - - const NODE = { - className: 'title.class', - begin: /[a-zA-Z_][a-zA-Z\d_@-]*(?=\s\{)/, - relevance: 0.2 - }; - - const ROOT_NODE = { - className: 'title.class', - begin: /^\/(?=\s*\{)/, - relevance: 10 - }; - - // TODO: `attribute` might be the right scope here, unsure - // I'm not sure if all these key names have semantic meaning or not - const ATTR_NO_VALUE = { - match: /[a-z][a-z-,]+(?=;)/, - relevance: 0, - scope: "attr" - }; - const ATTR = { - relevance: 0, - match: [ - /[a-z][a-z-,]+/, - /\s*/, - /=/ - ], - scope: { - 1: "attr", - 3: "operator" - } - }; - - const PUNC = { - scope: "punctuation", - relevance: 0, - // `};` combined is just to avoid tons of useless punctuation nodes - match: /\};|[;{}]/ - }; - - return { - name: 'Device Tree', - contains: [ - ROOT_NODE, - REFERENCE, - KEYWORD, - LABEL, - NODE, - ATTR, - ATTR_NO_VALUE, - CELL_PROPERTY, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - NUMBERS, - STRINGS, - PREPROCESSOR, - PUNC, - { - begin: hljs.IDENT_RE + '::', - keywords: "" - } - ] - }; -} - -module.exports = dts; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/dust.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/dust.js ***! - \*************************************************************/ -(module) { - -/* -Language: Dust -Requires: xml.js -Author: Michael Allen -Description: Matcher for dust.js templates. -Website: https://www.dustjs.com -Category: template -*/ - -/** @type LanguageFn */ -function dust(hljs) { - const EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep'; - return { - name: 'Dust', - aliases: [ 'dst' ], - case_insensitive: true, - subLanguage: 'xml', - contains: [ - { - className: 'template-tag', - begin: /\{[#\/]/, - end: /\}/, - illegal: /;/, - contains: [ - { - className: 'name', - begin: /[a-zA-Z\.-]+/, - starts: { - endsWithParent: true, - relevance: 0, - contains: [ hljs.QUOTE_STRING_MODE ] - } - } - ] - }, - { - className: 'template-variable', - begin: /\{/, - end: /\}/, - illegal: /;/, - keywords: EXPRESSION_KEYWORDS - } - ] - }; -} - -module.exports = dust; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ebnf.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ebnf.js ***! - \*************************************************************/ -(module) { - -/* -Language: Extended Backus-Naur Form -Author: Alex McKibben -Website: https://en.wikipedia.org/wiki/Extended_Backus–Naur_form -Category: syntax -*/ - -/** @type LanguageFn */ -function ebnf(hljs) { - const commentMode = hljs.COMMENT(/\(\*/, /\*\)/); - - const nonTerminalMode = { - className: "attribute", - begin: /^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/ - }; - - const specialSequenceMode = { - className: "meta", - begin: /\?.*\?/ - }; - - const ruleBodyMode = { - begin: /=/, - end: /[.;]/, - contains: [ - commentMode, - specialSequenceMode, - { - // terminals - className: 'string', - variants: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - begin: '`', - end: '`' - } - ] - } - ] - }; - - return { - name: 'Extended Backus-Naur Form', - illegal: /\S/, - contains: [ - commentMode, - nonTerminalMode, - ruleBodyMode - ] - }; -} - -module.exports = ebnf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/elixir.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/elixir.js ***! - \***************************************************************/ -(module) { - -/* -Language: Elixir -Author: Josh Adams -Description: language definition for Elixir source code files (.ex and .exs). Based on ruby language support. -Category: functional -Website: https://elixir-lang.org -*/ - -/** @type LanguageFn */ -function elixir(hljs) { - const regex = hljs.regex; - const ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?'; - const ELIXIR_METHOD_RE = '[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?'; - const KEYWORDS = [ - "after", - "alias", - "and", - "case", - "catch", - "cond", - "defstruct", - "defguard", - "do", - "else", - "end", - "fn", - "for", - "if", - "import", - "in", - "not", - "or", - "quote", - "raise", - "receive", - "require", - "reraise", - "rescue", - "try", - "unless", - "unquote", - "unquote_splicing", - "use", - "when", - "with|0" - ]; - const LITERALS = [ - "false", - "nil", - "true" - ]; - const KWS = { - $pattern: ELIXIR_IDENT_RE, - keyword: KEYWORDS, - literal: LITERALS - }; - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: KWS - }; - const NUMBER = { - className: 'number', - begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[0-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)', - relevance: 0 - }; - // TODO: could be tightened - // https://elixir-lang.readthedocs.io/en/latest/intro/18.html - // but you also need to include closing delemeters in the escape list per - // individual sigil mode from what I can tell, - // ie: \} might or might not be an escape depending on the sigil used - const ESCAPES_RE = /\\[\s\S]/; - // const ESCAPES_RE = /\\["'\\abdefnrstv0]/; - const BACKSLASH_ESCAPE = { - match: ESCAPES_RE, - scope: "char.escape", - relevance: 0 - }; - const SIGIL_DELIMITERS = '[/|([{<"\']'; - const SIGIL_DELIMITER_MODES = [ - { - begin: /"/, - end: /"/ - }, - { - begin: /'/, - end: /'/ - }, - { - begin: /\//, - end: /\// - }, - { - begin: /\|/, - end: /\|/ - }, - { - begin: /\(/, - end: /\)/ - }, - { - begin: /\[/, - end: /\]/ - }, - { - begin: /\{/, - end: /\}/ - }, - { - begin: // - } - ]; - const escapeSigilEnd = (end) => { - return { - scope: "char.escape", - begin: regex.concat(/\\/, end), - relevance: 0 - }; - }; - const LOWERCASE_SIGIL = { - className: 'string', - begin: '~[a-z]' + '(?=' + SIGIL_DELIMITERS + ')', - contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, - { contains: [ - escapeSigilEnd(x.end), - BACKSLASH_ESCAPE, - SUBST - ] } - )) - }; - - const UPCASE_SIGIL = { - className: 'string', - begin: '~[A-Z]' + '(?=' + SIGIL_DELIMITERS + ')', - contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, - { contains: [ escapeSigilEnd(x.end) ] } - )) - }; - - const REGEX_SIGIL = { - className: 'regex', - variants: [ - { - begin: '~r' + '(?=' + SIGIL_DELIMITERS + ')', - contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, - { - end: regex.concat(x.end, /[uismxfU]{0,7}/), - contains: [ - escapeSigilEnd(x.end), - BACKSLASH_ESCAPE, - SUBST - ] - } - )) - }, - { - begin: '~R' + '(?=' + SIGIL_DELIMITERS + ')', - contains: SIGIL_DELIMITER_MODES.map(x => hljs.inherit(x, - { - end: regex.concat(x.end, /[uismxfU]{0,7}/), - contains: [ escapeSigilEnd(x.end) ] - }) - ) - } - ] - }; - - const STRING = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - variants: [ - { - begin: /"""/, - end: /"""/ - }, - { - begin: /'''/, - end: /'''/ - }, - { - begin: /~S"""/, - end: /"""/, - contains: [] // override default - }, - { - begin: /~S"/, - end: /"/, - contains: [] // override default - }, - { - begin: /~S'''/, - end: /'''/, - contains: [] // override default - }, - { - begin: /~S'/, - end: /'/, - contains: [] // override default - }, - { - begin: /'/, - end: /'/ - }, - { - begin: /"/, - end: /"/ - } - ] - }; - const FUNCTION = { - className: 'function', - beginKeywords: 'def defp defmacro defmacrop', - end: /\B\b/, // the mode is ended by the title - contains: [ - hljs.inherit(hljs.TITLE_MODE, { - begin: ELIXIR_IDENT_RE, - endsParent: true - }) - ] - }; - const CLASS = hljs.inherit(FUNCTION, { - className: 'class', - beginKeywords: 'defimpl defmodule defprotocol defrecord', - end: /\bdo\b|$|;/ - }); - const ELIXIR_DEFAULT_CONTAINS = [ - STRING, - REGEX_SIGIL, - UPCASE_SIGIL, - LOWERCASE_SIGIL, - hljs.HASH_COMMENT_MODE, - CLASS, - FUNCTION, - { begin: '::' }, - { - className: 'symbol', - begin: ':(?![\\s:])', - contains: [ - STRING, - { begin: ELIXIR_METHOD_RE } - ], - relevance: 0 - }, - { - className: 'symbol', - begin: ELIXIR_IDENT_RE + ':(?!:)', - relevance: 0 - }, - { // Usage of a module, struct, etc. - className: 'title.class', - begin: /(\b[A-Z][a-zA-Z0-9_]+)/, - relevance: 0 - }, - NUMBER, - { - className: 'variable', - begin: '(\\$\\W)|((\\$|@@?)(\\w+))' - } - // -> has been removed, capnproto always uses this grammar construct - ]; - SUBST.contains = ELIXIR_DEFAULT_CONTAINS; - - return { - name: 'Elixir', - aliases: [ - 'ex', - 'exs' - ], - keywords: KWS, - contains: ELIXIR_DEFAULT_CONTAINS - }; -} - -module.exports = elixir; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/elm.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/elm.js ***! - \************************************************************/ -(module) { - -/* -Language: Elm -Author: Janis Voigtlaender -Website: https://elm-lang.org -Category: functional -*/ - -/** @type LanguageFn */ -function elm(hljs) { - const COMMENT = { variants: [ - hljs.COMMENT('--', '$'), - hljs.COMMENT( - /\{-/, - /-\}/, - { contains: [ 'self' ] } - ) - ] }; - - const CONSTRUCTOR = { - className: 'type', - begin: '\\b[A-Z][\\w\']*', // TODO: other constructors (built-in, infix). - relevance: 0 - }; - - const LIST = { - begin: '\\(', - end: '\\)', - illegal: '"', - contains: [ - { - className: 'type', - begin: '\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?' - }, - COMMENT - ] - }; - - const RECORD = { - begin: /\{/, - end: /\}/, - contains: LIST.contains - }; - - const CHARACTER = { - className: 'string', - begin: '\'\\\\?.', - end: '\'', - illegal: '.' - }; - - const KEYWORDS = [ - "let", - "in", - "if", - "then", - "else", - "case", - "of", - "where", - "module", - "import", - "exposing", - "type", - "alias", - "as", - "infix", - "infixl", - "infixr", - "port", - "effect", - "command", - "subscription" - ]; - - return { - name: 'Elm', - keywords: KEYWORDS, - contains: [ - - // Top-level constructions. - - { - beginKeywords: 'port effect module', - end: 'exposing', - keywords: 'port effect module where command subscription exposing', - contains: [ - LIST, - COMMENT - ], - illegal: '\\W\\.|;' - }, - { - begin: 'import', - end: '$', - keywords: 'import as exposing', - contains: [ - LIST, - COMMENT - ], - illegal: '\\W\\.|;' - }, - { - begin: 'type', - end: '$', - keywords: 'type alias', - contains: [ - CONSTRUCTOR, - LIST, - RECORD, - COMMENT - ] - }, - { - beginKeywords: 'infix infixl infixr', - end: '$', - contains: [ - hljs.C_NUMBER_MODE, - COMMENT - ] - }, - { - begin: 'port', - end: '$', - keywords: 'port', - contains: [ COMMENT ] - }, - - // Literals and names. - CHARACTER, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - CONSTRUCTOR, - hljs.inherit(hljs.TITLE_MODE, { begin: '^[_a-z][\\w\']*' }), - COMMENT, - - { // No markup, relevance booster - begin: '->|<-' } - ], - illegal: /;/ - }; -} - -module.exports = elm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/erb.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/erb.js ***! - \************************************************************/ -(module) { - -/* -Language: ERB (Embedded Ruby) -Requires: xml.js, ruby.js -Author: Lucas Mazza -Contributors: Kassio Borges -Description: "Bridge" language defining fragments of Ruby in HTML within <% .. %> -Website: https://ruby-doc.org/stdlib-2.6.5/libdoc/erb/rdoc/ERB.html -Category: template -*/ - -/** @type LanguageFn */ -function erb(hljs) { - return { - name: 'ERB', - subLanguage: 'xml', - contains: [ - hljs.COMMENT('<%#', '%>'), - { - begin: '<%[%=-]?', - end: '[%-]?%>', - subLanguage: 'ruby', - excludeBegin: true, - excludeEnd: true - } - ] - }; -} - -module.exports = erb; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/erlang-repl.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/erlang-repl.js ***! - \********************************************************************/ -(module) { - -/* -Language: Erlang REPL -Author: Sergey Ignatov -Website: https://www.erlang.org -Category: functional -*/ - -/** @type LanguageFn */ -function erlangRepl(hljs) { - const regex = hljs.regex; - return { - name: 'Erlang REPL', - keywords: { - built_in: - 'spawn spawn_link self', - keyword: - 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' - + 'let not of or orelse|10 query receive rem try when xor' - }, - contains: [ - { - className: 'meta.prompt', - begin: '^[0-9]+> ', - relevance: 10 - }, - hljs.COMMENT('%', '$'), - { - className: 'number', - begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', - relevance: 0 - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { begin: regex.concat( - /\?(::)?/, - /([A-Z]\w*)/, // at least one identifier - /((::)[A-Z]\w*)*/ // perhaps more - ) }, - { begin: '->' }, - { begin: 'ok' }, - { begin: '!' }, - { - begin: '(\\b[a-z\'][a-zA-Z0-9_\']*:[a-z\'][a-zA-Z0-9_\']*)|(\\b[a-z\'][a-zA-Z0-9_\']*)', - relevance: 0 - }, - { - begin: '[A-Z][a-zA-Z0-9_\']*', - relevance: 0 - } - ] - }; -} - -module.exports = erlangRepl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/erlang.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/erlang.js ***! - \***************************************************************/ -(module) { - -/* -Language: Erlang -Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing. -Author: Nikolay Zakharov , Dmitry Kovega -Website: https://www.erlang.org -Category: functional -*/ - -/** @type LanguageFn */ -function erlang(hljs) { - const BASIC_ATOM_RE = '[a-z\'][a-zA-Z0-9_\']*'; - const FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')'; - const ERLANG_RESERVED = { - keyword: - 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' - + 'let not of orelse|10 query receive rem try when xor maybe else', - literal: - 'false true' - }; - - const COMMENT = hljs.COMMENT('%', '$'); - const NUMBER = { - className: 'number', - begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)', - relevance: 0 - }; - const NAMED_FUN = { begin: 'fun\\s+' + BASIC_ATOM_RE + '/\\d+' }; - const FUNCTION_CALL = { - begin: FUNCTION_NAME_RE + '\\(', - end: '\\)', - returnBegin: true, - relevance: 0, - contains: [ - { - begin: FUNCTION_NAME_RE, - relevance: 0 - }, - { - begin: '\\(', - end: '\\)', - endsWithParent: true, - returnEnd: true, - relevance: 0 - // "contains" defined later - } - ] - }; - const TUPLE = { - begin: /\{/, - end: /\}/, - relevance: 0 - // "contains" defined later - }; - const VAR1 = { - begin: '\\b_([A-Z][A-Za-z0-9_]*)?', - relevance: 0 - }; - const VAR2 = { - begin: '[A-Z][a-zA-Z0-9_]*', - relevance: 0 - }; - const RECORD_ACCESS = { - begin: '#' + hljs.UNDERSCORE_IDENT_RE, - relevance: 0, - returnBegin: true, - contains: [ - { - begin: '#' + hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - }, - { - begin: /\{/, - end: /\}/, - relevance: 0 - // "contains" defined later - } - ] - }; - const CHAR_LITERAL = { - scope: 'string', - match: /\$(\\([^0-9]|[0-9]{1,3}|)|.)/, - }; - const TRIPLE_QUOTE = { - scope: 'string', - match: /"""("*)(?!")[\s\S]*?"""\1/, - }; - - const SIGIL = { - scope: 'string', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - {match: /~\w?"""("*)(?!")[\s\S]*?"""\1/}, - {begin: /~\w?\(/, end: /\)/}, - {begin: /~\w?\[/, end: /\]/}, - {begin: /~\w?{/, end: /}/}, - {begin: /~\w?/}, - {begin: /~\w?\//, end: /\//}, - {begin: /~\w?\|/, end: /\|/}, - {begin: /~\w?'/, end: /'/}, - {begin: /~\w?"/, end: /"/}, - {begin: /~\w?`/, end: /`/}, - {begin: /~\w?#/, end: /#/}, - ], - }; - - const BLOCK_STATEMENTS = { - beginKeywords: 'fun receive if try case maybe', - end: 'end', - keywords: ERLANG_RESERVED - }; - BLOCK_STATEMENTS.contains = [ - COMMENT, - NAMED_FUN, - hljs.inherit(hljs.APOS_STRING_MODE, { className: '' }), - BLOCK_STATEMENTS, - FUNCTION_CALL, - SIGIL, - TRIPLE_QUOTE, - hljs.QUOTE_STRING_MODE, - NUMBER, - TUPLE, - VAR1, - VAR2, - RECORD_ACCESS, - CHAR_LITERAL - ]; - - const BASIC_MODES = [ - COMMENT, - NAMED_FUN, - BLOCK_STATEMENTS, - FUNCTION_CALL, - SIGIL, - TRIPLE_QUOTE, - hljs.QUOTE_STRING_MODE, - NUMBER, - TUPLE, - VAR1, - VAR2, - RECORD_ACCESS, - CHAR_LITERAL - ]; - FUNCTION_CALL.contains[1].contains = BASIC_MODES; - TUPLE.contains = BASIC_MODES; - RECORD_ACCESS.contains[1].contains = BASIC_MODES; - - const DIRECTIVES = [ - "-module", - "-record", - "-undef", - "-export", - "-ifdef", - "-ifndef", - "-author", - "-copyright", - "-doc", - "-moduledoc", - "-vsn", - "-import", - "-include", - "-include_lib", - "-compile", - "-define", - "-else", - "-endif", - "-file", - "-behaviour", - "-behavior", - "-spec", - "-on_load", - "-nifs", - ]; - - const PARAMS = { - className: 'params', - begin: '\\(', - end: '\\)', - contains: BASIC_MODES - }; - - return { - name: 'Erlang', - aliases: [ 'erl' ], - keywords: ERLANG_RESERVED, - illegal: '(', - returnBegin: true, - illegal: '\\(|#|//|/\\*|\\\\|:|;', - contains: [ - PARAMS, - hljs.inherit(hljs.TITLE_MODE, { begin: BASIC_ATOM_RE }) - ], - starts: { - end: ';|\\.', - keywords: ERLANG_RESERVED, - contains: BASIC_MODES - } - }, - COMMENT, - { - begin: '^-', - end: '\\.', - relevance: 0, - excludeEnd: true, - returnBegin: true, - keywords: { - $pattern: '-' + hljs.IDENT_RE, - keyword: DIRECTIVES.map(x => `${x}|1.5`).join(" ") - }, - contains: [ - PARAMS, - SIGIL, - TRIPLE_QUOTE, - hljs.QUOTE_STRING_MODE - ] - }, - NUMBER, - SIGIL, - TRIPLE_QUOTE, - hljs.QUOTE_STRING_MODE, - RECORD_ACCESS, - VAR1, - VAR2, - TUPLE, - CHAR_LITERAL, - { begin: /\.$/ } // relevance booster - ] - }; -} - -module.exports = erlang; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/excel.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/excel.js ***! - \**************************************************************/ -(module) { - -/* -Language: Excel formulae -Author: Victor Zhou -Description: Excel formulae -Website: https://products.office.com/en-us/excel/ -Category: enterprise -*/ - -/** @type LanguageFn */ -function excel(hljs) { - // built-in functions imported from https://web.archive.org/web/20241205190205/https://support.microsoft.com/en-us/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 - const BUILT_INS = [ - "ABS", - "ACCRINT", - "ACCRINTM", - "ACOS", - "ACOSH", - "ACOT", - "ACOTH", - "AGGREGATE", - "ADDRESS", - "AMORDEGRC", - "AMORLINC", - "AND", - "ARABIC", - "AREAS", - "ARRAYTOTEXT", - "ASC", - "ASIN", - "ASINH", - "ATAN", - "ATAN2", - "ATANH", - "AVEDEV", - "AVERAGE", - "AVERAGEA", - "AVERAGEIF", - "AVERAGEIFS", - "BAHTTEXT", - "BASE", - "BESSELI", - "BESSELJ", - "BESSELK", - "BESSELY", - "BETADIST", - "BETA.DIST", - "BETAINV", - "BETA.INV", - "BIN2DEC", - "BIN2HEX", - "BIN2OCT", - "BINOMDIST", - "BINOM.DIST", - "BINOM.DIST.RANGE", - "BINOM.INV", - "BITAND", - "BITLSHIFT", - "BITOR", - "BITRSHIFT", - "BITXOR", - "BYCOL", - "BYROW", - "CALL", - "CEILING", - "CEILING.MATH", - "CEILING.PRECISE", - "CELL", - "CHAR", - "CHIDIST", - "CHIINV", - "CHITEST", - "CHISQ.DIST", - "CHISQ.DIST.RT", - "CHISQ.INV", - "CHISQ.INV.RT", - "CHISQ.TEST", - "CHOOSE", - "CHOOSECOLS", - "CHOOSEROWS", - "CLEAN", - "CODE", - "COLUMN", - "COLUMNS", - "COMBIN", - "COMBINA", - "COMPLEX", - "CONCAT", - "CONCATENATE", - "CONFIDENCE", - "CONFIDENCE.NORM", - "CONFIDENCE.T", - "CONVERT", - "CORREL", - "COS", - "COSH", - "COT", - "COTH", - "COUNT", - "COUNTA", - "COUNTBLANK", - "COUNTIF", - "COUNTIFS", - "COUPDAYBS", - "COUPDAYS", - "COUPDAYSNC", - "COUPNCD", - "COUPNUM", - "COUPPCD", - "COVAR", - "COVARIANCE.P", - "COVARIANCE.S", - "CRITBINOM", - "CSC", - "CSCH", - "CUBEKPIMEMBER", - "CUBEMEMBER", - "CUBEMEMBERPROPERTY", - "CUBERANKEDMEMBER", - "CUBESET", - "CUBESETCOUNT", - "CUBEVALUE", - "CUMIPMT", - "CUMPRINC", - "DATE", - "DATEDIF", - "DATEVALUE", - "DAVERAGE", - "DAY", - "DAYS", - "DAYS360", - "DB", - "DBCS", - "DCOUNT", - "DCOUNTA", - "DDB", - "DEC2BIN", - "DEC2HEX", - "DEC2OCT", - "DECIMAL", - "DEGREES", - "DELTA", - "DEVSQ", - "DGET", - "DISC", - "DMAX", - "DMIN", - "DOLLAR", - "DOLLARDE", - "DOLLARFR", - "DPRODUCT", - "DROP", - "DSTDEV", - "DSTDEVP", - "DSUM", - "DURATION", - "DVAR", - "DVARP", - "EDATE", - "EFFECT", - "ENCODEURL", - "EOMONTH", - "ERF", - "ERF.PRECISE", - "ERFC", - "ERFC.PRECISE", - "ERROR.TYPE", - "EUROCONVERT", - "EVEN", - "EXACT", - "EXP", - "EXPAND", - "EXPON.DIST", - "EXPONDIST", - "FACT", - "FACTDOUBLE", - "FALSE", - "F.DIST", - "FDIST", - "F.DIST.RT", - "FILTER", - "FILTERXML", - "FIND", - "FINDB", - "F.INV", - "F.INV.RT", - "FINV", - "FISHER", - "FISHERINV", - "FIXED", - "FLOOR", - "FLOOR.MATH", - "FLOOR.PRECISE", - "FORECAST", - "FORECAST.ETS", - "FORECAST.ETS.CONFINT", - "FORECAST.ETS.SEASONALITY", - "FORECAST.ETS.STAT", - "FORECAST.LINEAR", - "FORMULATEXT", - "FREQUENCY", - "F.TEST", - "FTEST", - "FV", - "FVSCHEDULE", - "GAMMA", - "GAMMA.DIST", - "GAMMADIST", - "GAMMA.INV", - "GAMMAINV", - "GAMMALN", - "GAMMALN.PRECISE", - "GAUSS", - "GCD", - "GEOMEAN", - "GESTEP", - "GETPIVOTDATA", - "GROWTH", - "HARMEAN", - "HEX2BIN", - "HEX2DEC", - "HEX2OCT", - "HLOOKUP", - "HOUR", - "HSTACK", - "HYPERLINK", - "HYPGEOM.DIST", - "HYPGEOMDIST", - "IF", - "IFERROR", - "IFNA", - "IFS", - "IMABS", - "IMAGE", - "IMAGINARY", - "IMARGUMENT", - "IMCONJUGATE", - "IMCOS", - "IMCOSH", - "IMCOT", - "IMCSC", - "IMCSCH", - "IMDIV", - "IMEXP", - "IMLN", - "IMLOG10", - "IMLOG2", - "IMPOWER", - "IMPRODUCT", - "IMREAL", - "IMSEC", - "IMSECH", - "IMSIN", - "IMSINH", - "IMSQRT", - "IMSUB", - "IMSUM", - "IMTAN", - "INDEX", - "INDIRECT", - "INFO", - "INT", - "INTERCEPT", - "INTRATE", - "IPMT", - "IRR", - "ISBLANK", - "ISERR", - "ISERROR", - "ISEVEN", - "ISFORMULA", - "ISLOGICAL", - "ISNA", - "ISNONTEXT", - "ISNUMBER", - "ISODD", - "ISOMITTED", - "ISREF", - "ISTEXT", - "ISO.CEILING", - "ISOWEEKNUM", - "ISPMT", - "JIS", - "KURT", - "LAMBDA", - "LARGE", - "LCM", - "LEFT", - "LEFTB", - "LEN", - "LENB", - "LET", - "LINEST", - "LN", - "LOG", - "LOG10", - "LOGEST", - "LOGINV", - "LOGNORM.DIST", - "LOGNORMDIST", - "LOGNORM.INV", - "LOOKUP", - "LOWER", - "MAKEARRAY", - "MAP", - "MATCH", - "MAX", - "MAXA", - "MAXIFS", - "MDETERM", - "MDURATION", - "MEDIAN", - "MID", - "MIDB", - "MIN", - "MINIFS", - "MINA", - "MINUTE", - "MINVERSE", - "MIRR", - "MMULT", - "MOD", - "MODE", - "MODE.MULT", - "MODE.SNGL", - "MONTH", - "MROUND", - "MULTINOMIAL", - "MUNIT", - "N", - "NA", - "NEGBINOM.DIST", - "NEGBINOMDIST", - "NETWORKDAYS", - "NETWORKDAYS.INTL", - "NOMINAL", - "NORM.DIST", - "NORMDIST", - "NORMINV", - "NORM.INV", - "NORM.S.DIST", - "NORMSDIST", - "NORM.S.INV", - "NORMSINV", - "NOT", - "NOW", - "NPER", - "NPV", - "NUMBERVALUE", - "OCT2BIN", - "OCT2DEC", - "OCT2HEX", - "ODD", - "ODDFPRICE", - "ODDFYIELD", - "ODDLPRICE", - "ODDLYIELD", - "OFFSET", - "OR", - "PDURATION", - "PEARSON", - "PERCENTILE.EXC", - "PERCENTILE.INC", - "PERCENTILE", - "PERCENTRANK.EXC", - "PERCENTRANK.INC", - "PERCENTRANK", - "PERMUT", - "PERMUTATIONA", - "PHI", - "PHONETIC", - "PI", - "PMT", - "POISSON.DIST", - "POISSON", - "POWER", - "PPMT", - "PRICE", - "PRICEDISC", - "PRICEMAT", - "PROB", - "PRODUCT", - "PROPER", - "PV", - "QUARTILE", - "QUARTILE.EXC", - "QUARTILE.INC", - "QUOTIENT", - "RADIANS", - "RAND", - "RANDARRAY", - "RANDBETWEEN", - "RANK.AVG", - "RANK.EQ", - "RANK", - "RATE", - "RECEIVED", - "REDUCE", - "REGISTER.ID", - "REPLACE", - "REPLACEB", - "REPT", - "RIGHT", - "RIGHTB", - "ROMAN", - "ROUND", - "ROUNDDOWN", - "ROUNDUP", - "ROW", - "ROWS", - "RRI", - "RSQ", - "RTD", - "SCAN", - "SEARCH", - "SEARCHB", - "SEC", - "SECH", - "SECOND", - "SEQUENCE", - "SERIESSUM", - "SHEET", - "SHEETS", - "SIGN", - "SIN", - "SINH", - "SKEW", - "SKEW.P", - "SLN", - "SLOPE", - "SMALL", - "SORT", - "SORTBY", - "SQRT", - "SQRTPI", - "SQL.REQUEST", - "STANDARDIZE", - "STOCKHISTORY", - "STDEV", - "STDEV.P", - "STDEV.S", - "STDEVA", - "STDEVP", - "STDEVPA", - "STEYX", - "SUBSTITUTE", - "SUBTOTAL", - "SUM", - "SUMIF", - "SUMIFS", - "SUMPRODUCT", - "SUMSQ", - "SUMX2MY2", - "SUMX2PY2", - "SUMXMY2", - "SWITCH", - "SYD", - "T", - "TAN", - "TANH", - "TAKE", - "TBILLEQ", - "TBILLPRICE", - "TBILLYIELD", - "T.DIST", - "T.DIST.2T", - "T.DIST.RT", - "TDIST", - "TEXT", - "TEXTAFTER", - "TEXTBEFORE", - "TEXTJOIN", - "TEXTSPLIT", - "TIME", - "TIMEVALUE", - "T.INV", - "T.INV.2T", - "TINV", - "TOCOL", - "TOROW", - "TODAY", - "TRANSPOSE", - "TREND", - "TRIM", - "TRIMMEAN", - "TRUE", - "TRUNC", - "T.TEST", - "TTEST", - "TYPE", - "UNICHAR", - "UNICODE", - "UNIQUE", - "UPPER", - "VALUE", - "VALUETOTEXT", - "VAR", - "VAR.P", - "VAR.S", - "VARA", - "VARP", - "VARPA", - "VDB", - "VLOOKUP", - "VSTACK", - "WEBSERVICE", - "WEEKDAY", - "WEEKNUM", - "WEIBULL", - "WEIBULL.DIST", - "WORKDAY", - "WORKDAY.INTL", - "WRAPCOLS", - "WRAPROWS", - "XIRR", - "XLOOKUP", - "XMATCH", - "XNPV", - "XOR", - "YEAR", - "YEARFRAC", - "YIELD", - "YIELDDISC", - "YIELDMAT", - "Z.TEST", - "ZTEST" - ]; - return { - name: 'Excel formulae', - aliases: [ - 'xlsx', - 'xls' - ], - case_insensitive: true, - keywords: { - $pattern: /[a-zA-Z][\w\.]*/, - built_in: BUILT_INS - }, - contains: [ - { - /* matches a beginning equal sign found in Excel formula examples */ - begin: /^=/, - end: /[^=]/, - returnEnd: true, - illegal: /=/, /* only allow single equal sign at front of line */ - relevance: 10 - }, - /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */ - { - /* matches a reference to a single cell */ - className: 'symbol', - begin: /\b[A-Z]{1,2}\d+\b/, - end: /[^\d]/, - excludeEnd: true, - relevance: 0 - }, - { - /* matches a reference to a range of cells */ - className: 'symbol', - begin: /[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/, - relevance: 0 - }, - hljs.BACKSLASH_ESCAPE, - hljs.QUOTE_STRING_MODE, - { - className: 'number', - begin: hljs.NUMBER_RE + '(%)?', - relevance: 0 - }, - /* Excel formula comments are done by putting the comment in a function call to N() */ - hljs.COMMENT(/\bN\(/, /\)/, - { - excludeBegin: true, - excludeEnd: true, - illegal: /\n/ - }) - ] - }; -} - -module.exports = excel; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/fix.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/fix.js ***! - \************************************************************/ -(module) { - -/* -Language: FIX -Author: Brent Bradbury -*/ - -/** @type LanguageFn */ -function fix(hljs) { - return { - name: 'FIX', - contains: [ - { - begin: /[^\u2401\u0001]+/, - end: /[\u2401\u0001]/, - excludeEnd: true, - returnBegin: true, - returnEnd: false, - contains: [ - { - begin: /([^\u2401\u0001=]+)/, - end: /=([^\u2401\u0001=]+)/, - returnEnd: true, - returnBegin: false, - className: 'attr' - }, - { - begin: /=/, - end: /([\u2401\u0001])/, - excludeEnd: true, - excludeBegin: true, - className: 'string' - } - ] - } - ], - case_insensitive: true - }; -} - -module.exports = fix; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/flix.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/flix.js ***! - \*************************************************************/ -(module) { - -/* - Language: Flix - Category: functional - Author: Magnus Madsen - Website: https://flix.dev/ - */ - -/** @type LanguageFn */ -function flix(hljs) { - const CHAR = { - className: 'string', - begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/ - }; - - const STRING = { - className: 'string', - variants: [ - { - begin: '"', - end: '"' - } - ] - }; - - const NAME = { - className: 'title', - relevance: 0, - begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/ - }; - - const METHOD = { - className: 'function', - beginKeywords: 'def', - end: /[:={\[(\n;]/, - excludeEnd: true, - contains: [ NAME ] - }; - - return { - name: 'Flix', - keywords: { - keyword: [ - "case", - "class", - "def", - "else", - "enum", - "if", - "impl", - "import", - "in", - "lat", - "rel", - "index", - "let", - "match", - "namespace", - "switch", - "type", - "yield", - "with" - ], - literal: [ - "true", - "false" - ] - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - CHAR, - STRING, - METHOD, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = flix; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/fortran.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/fortran.js ***! - \****************************************************************/ -(module) { - -/* -Language: Fortran -Author: Anthony Scemama -Website: https://en.wikipedia.org/wiki/Fortran -Category: scientific -*/ - -/** @type LanguageFn */ -function fortran(hljs) { - const regex = hljs.regex; - const PARAMS = { - className: 'params', - begin: '\\(', - end: '\\)' - }; - - const COMMENT = { variants: [ - hljs.COMMENT('!', '$', { relevance: 0 }), - // allow FORTRAN 77 style comments - hljs.COMMENT('^C[ ]', '$', { relevance: 0 }), - hljs.COMMENT('^C$', '$', { relevance: 0 }) - ] }; - - // regex in both fortran and irpf90 should match - const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/; - const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/; - const NUMBER = { - className: 'number', - variants: [ - { begin: regex.concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, - { begin: regex.concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, - { begin: regex.concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) } - ], - relevance: 0 - }; - - const FUNCTION_DEF = { - className: 'function', - beginKeywords: 'subroutine function program', - illegal: '[${=\\n]', - contains: [ - hljs.UNDERSCORE_TITLE_MODE, - PARAMS - ] - }; - - const STRING = { - className: 'string', - relevance: 0, - variants: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }; - - const KEYWORDS = [ - "kind", - "do", - "concurrent", - "local", - "shared", - "while", - "private", - "call", - "intrinsic", - "where", - "elsewhere", - "type", - "endtype", - "endmodule", - "endselect", - "endinterface", - "end", - "enddo", - "endif", - "if", - "forall", - "endforall", - "only", - "contains", - "default", - "return", - "stop", - "then", - "block", - "endblock", - "endassociate", - "public", - "subroutine|10", - "function", - "program", - ".and.", - ".or.", - ".not.", - ".le.", - ".eq.", - ".ge.", - ".gt.", - ".lt.", - "goto", - "save", - "else", - "use", - "module", - "select", - "case", - "access", - "blank", - "direct", - "exist", - "file", - "fmt", - "form", - "formatted", - "iostat", - "name", - "named", - "nextrec", - "number", - "opened", - "rec", - "recl", - "sequential", - "status", - "unformatted", - "unit", - "continue", - "format", - "pause", - "cycle", - "exit", - "c_null_char", - "c_alert", - "c_backspace", - "c_form_feed", - "flush", - "wait", - "decimal", - "round", - "iomsg", - "synchronous", - "nopass", - "non_overridable", - "pass", - "protected", - "volatile", - "abstract", - "extends", - "import", - "non_intrinsic", - "value", - "deferred", - "generic", - "final", - "enumerator", - "class", - "associate", - "bind", - "enum", - "c_int", - "c_short", - "c_long", - "c_long_long", - "c_signed_char", - "c_size_t", - "c_int8_t", - "c_int16_t", - "c_int32_t", - "c_int64_t", - "c_int_least8_t", - "c_int_least16_t", - "c_int_least32_t", - "c_int_least64_t", - "c_int_fast8_t", - "c_int_fast16_t", - "c_int_fast32_t", - "c_int_fast64_t", - "c_intmax_t", - "C_intptr_t", - "c_float", - "c_double", - "c_long_double", - "c_float_complex", - "c_double_complex", - "c_long_double_complex", - "c_bool", - "c_char", - "c_null_ptr", - "c_null_funptr", - "c_new_line", - "c_carriage_return", - "c_horizontal_tab", - "c_vertical_tab", - "iso_c_binding", - "c_loc", - "c_funloc", - "c_associated", - "c_f_pointer", - "c_ptr", - "c_funptr", - "iso_fortran_env", - "character_storage_size", - "error_unit", - "file_storage_size", - "input_unit", - "iostat_end", - "iostat_eor", - "numeric_storage_size", - "output_unit", - "c_f_procpointer", - "ieee_arithmetic", - "ieee_support_underflow_control", - "ieee_get_underflow_mode", - "ieee_set_underflow_mode", - "newunit", - "contiguous", - "recursive", - "pad", - "position", - "action", - "delim", - "readwrite", - "eor", - "advance", - "nml", - "interface", - "procedure", - "namelist", - "include", - "sequence", - "elemental", - "pure", - "impure", - "integer", - "real", - "character", - "complex", - "logical", - "codimension", - "dimension", - "allocatable|10", - "parameter", - "external", - "implicit|10", - "none", - "double", - "precision", - "assign", - "intent", - "optional", - "pointer", - "target", - "in", - "out", - "common", - "equivalence", - "data" - ]; - const LITERALS = [ - ".False.", - ".True." - ]; - const BUILT_INS = [ - "alog", - "alog10", - "amax0", - "amax1", - "amin0", - "amin1", - "amod", - "cabs", - "ccos", - "cexp", - "clog", - "csin", - "csqrt", - "dabs", - "dacos", - "dasin", - "datan", - "datan2", - "dcos", - "dcosh", - "ddim", - "dexp", - "dint", - "dlog", - "dlog10", - "dmax1", - "dmin1", - "dmod", - "dnint", - "dsign", - "dsin", - "dsinh", - "dsqrt", - "dtan", - "dtanh", - "float", - "iabs", - "idim", - "idint", - "idnint", - "ifix", - "isign", - "max0", - "max1", - "min0", - "min1", - "sngl", - "algama", - "cdabs", - "cdcos", - "cdexp", - "cdlog", - "cdsin", - "cdsqrt", - "cqabs", - "cqcos", - "cqexp", - "cqlog", - "cqsin", - "cqsqrt", - "dcmplx", - "dconjg", - "derf", - "derfc", - "dfloat", - "dgamma", - "dimag", - "dlgama", - "iqint", - "qabs", - "qacos", - "qasin", - "qatan", - "qatan2", - "qcmplx", - "qconjg", - "qcos", - "qcosh", - "qdim", - "qerf", - "qerfc", - "qexp", - "qgamma", - "qimag", - "qlgama", - "qlog", - "qlog10", - "qmax1", - "qmin1", - "qmod", - "qnint", - "qsign", - "qsin", - "qsinh", - "qsqrt", - "qtan", - "qtanh", - "abs", - "acos", - "aimag", - "aint", - "anint", - "asin", - "atan", - "atan2", - "char", - "cmplx", - "conjg", - "cos", - "cosh", - "exp", - "ichar", - "index", - "int", - "log", - "log10", - "max", - "min", - "nint", - "sign", - "sin", - "sinh", - "sqrt", - "tan", - "tanh", - "print", - "write", - "dim", - "lge", - "lgt", - "lle", - "llt", - "mod", - "nullify", - "allocate", - "deallocate", - "adjustl", - "adjustr", - "all", - "allocated", - "any", - "associated", - "bit_size", - "btest", - "ceiling", - "count", - "cshift", - "date_and_time", - "digits", - "dot_product", - "eoshift", - "epsilon", - "exponent", - "floor", - "fraction", - "huge", - "iand", - "ibclr", - "ibits", - "ibset", - "ieor", - "ior", - "ishft", - "ishftc", - "lbound", - "len_trim", - "matmul", - "maxexponent", - "maxloc", - "maxval", - "merge", - "minexponent", - "minloc", - "minval", - "modulo", - "mvbits", - "nearest", - "pack", - "present", - "product", - "radix", - "random_number", - "random_seed", - "range", - "repeat", - "reshape", - "rrspacing", - "scale", - "scan", - "selected_int_kind", - "selected_real_kind", - "set_exponent", - "shape", - "size", - "spacing", - "spread", - "sum", - "system_clock", - "tiny", - "transpose", - "trim", - "ubound", - "unpack", - "verify", - "achar", - "iachar", - "transfer", - "dble", - "entry", - "dprod", - "cpu_time", - "command_argument_count", - "get_command", - "get_command_argument", - "get_environment_variable", - "is_iostat_end", - "ieee_arithmetic", - "ieee_support_underflow_control", - "ieee_get_underflow_mode", - "ieee_set_underflow_mode", - "is_iostat_eor", - "move_alloc", - "new_line", - "selected_char_kind", - "same_type_as", - "extends_type_of", - "acosh", - "asinh", - "atanh", - "bessel_j0", - "bessel_j1", - "bessel_jn", - "bessel_y0", - "bessel_y1", - "bessel_yn", - "erf", - "erfc", - "erfc_scaled", - "gamma", - "log_gamma", - "hypot", - "norm2", - "atomic_define", - "atomic_ref", - "execute_command_line", - "leadz", - "trailz", - "storage_size", - "merge_bits", - "bge", - "bgt", - "ble", - "blt", - "dshiftl", - "dshiftr", - "findloc", - "iall", - "iany", - "iparity", - "image_index", - "lcobound", - "ucobound", - "maskl", - "maskr", - "num_images", - "parity", - "popcnt", - "poppar", - "shifta", - "shiftl", - "shiftr", - "this_image", - "sync", - "change", - "team", - "co_broadcast", - "co_max", - "co_min", - "co_sum", - "co_reduce" - ]; - return { - name: 'Fortran', - case_insensitive: true, - aliases: [ - 'f90', - 'f95' - ], - keywords: { - $pattern: /\b[a-z][a-z0-9_]+\b|\.[a-z][a-z0-9_]+\./, - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILT_INS - }, - illegal: /\/\*/, - contains: [ - STRING, - FUNCTION_DEF, - // allow `C = value` for assignments so they aren't misdetected - // as Fortran 77 style comments - { - begin: /^C\s*=(?!=)/, - relevance: 0 - }, - COMMENT, - NUMBER - ] - }; -} - -module.exports = fortran; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/fsharp.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/fsharp.js ***! - \***************************************************************/ -(module) { - -/** - * @param {string} value - * @returns {RegExp} - * */ -function escape(value) { - return new RegExp(value.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm'); -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function source(re) { - if (!re) return null; - if (typeof re === "string") return re; - - return re.source; -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function lookahead(re) { - return concat('(?=', re, ')'); -} - -/** - * @param {...(RegExp | string) } args - * @returns {string} - */ -function concat(...args) { - const joined = args.map((x) => source(x)).join(""); - return joined; -} - -/** - * @param { Array } args - * @returns {object} - */ -function stripOptionsFromArgs(args) { - const opts = args[args.length - 1]; - - if (typeof opts === 'object' && opts.constructor === Object) { - args.splice(args.length - 1, 1); - return opts; - } else { - return {}; - } -} - -/** @typedef { {capture?: boolean} } RegexEitherOptions */ - -/** - * Any of the passed expresssions may match - * - * Creates a huge this | this | that | that match - * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args - * @returns {string} - */ -function either(...args) { - /** @type { object & {capture?: boolean} } */ - const opts = stripOptionsFromArgs(args); - const joined = '(' - + (opts.capture ? "" : "?:") - + args.map((x) => source(x)).join("|") + ")"; - return joined; -} - -/* -Language: F# -Author: Jonas Follesø -Contributors: Troy Kershaw , Henrik Feldt , Melvyn Laïly -Website: https://docs.microsoft.com/en-us/dotnet/fsharp/ -Category: functional -*/ - - -/** @type LanguageFn */ -function fsharp(hljs) { - const KEYWORDS = [ - "abstract", - "and", - "as", - "assert", - "base", - "begin", - "class", - "default", - "delegate", - "do", - "done", - "downcast", - "downto", - "elif", - "else", - "end", - "exception", - "extern", - // "false", // literal - "finally", - "fixed", - "for", - "fun", - "function", - "global", - "if", - "in", - "inherit", - "inline", - "interface", - "internal", - "lazy", - "let", - "match", - "member", - "module", - "mutable", - "namespace", - "new", - // "not", // built_in - // "null", // literal - "of", - "open", - "or", - "override", - "private", - "public", - "rec", - "return", - "static", - "struct", - "then", - "to", - // "true", // literal - "try", - "type", - "upcast", - "use", - "val", - "void", - "when", - "while", - "with", - "yield" - ]; - - const BANG_KEYWORD_MODE = { - // monad builder keywords (matches before non-bang keywords) - scope: 'keyword', - match: /\b(yield|return|let|do|match|use)!/ - }; - - const PREPROCESSOR_KEYWORDS = [ - "if", - "else", - "endif", - "line", - "nowarn", - "light", - "r", - "i", - "I", - "load", - "time", - "help", - "quit" - ]; - - const LITERALS = [ - "true", - "false", - "null", - "Some", - "None", - "Ok", - "Error", - "infinity", - "infinityf", - "nan", - "nanf" - ]; - - const SPECIAL_IDENTIFIERS = [ - "__LINE__", - "__SOURCE_DIRECTORY__", - "__SOURCE_FILE__" - ]; - - // Since it's possible to re-bind/shadow names (e.g. let char = 'c'), - // these builtin types should only be matched when a type name is expected. - const KNOWN_TYPES = [ - // basic types - "bool", - "byte", - "sbyte", - "int8", - "int16", - "int32", - "uint8", - "uint16", - "uint32", - "int", - "uint", - "int64", - "uint64", - "nativeint", - "unativeint", - "decimal", - "float", - "double", - "float32", - "single", - "char", - "string", - "unit", - "bigint", - // other native types or lowercase aliases - "option", - "voption", - "list", - "array", - "seq", - "byref", - "exn", - "inref", - "nativeptr", - "obj", - "outref", - "voidptr", - // other important FSharp types - "Result" - ]; - - const BUILTINS = [ - // Somewhat arbitrary list of builtin functions and values. - // Most of them are declared in Microsoft.FSharp.Core - // I tried to stay relevant by adding only the most idiomatic - // and most used symbols that are not already declared as types. - "not", - "ref", - "raise", - "reraise", - "dict", - "readOnlyDict", - "set", - "get", - "enum", - "sizeof", - "typeof", - "typedefof", - "nameof", - "nullArg", - "invalidArg", - "invalidOp", - "id", - "fst", - "snd", - "ignore", - "lock", - "using", - "box", - "unbox", - "tryUnbox", - "printf", - "printfn", - "sprintf", - "eprintf", - "eprintfn", - "fprintf", - "fprintfn", - "failwith", - "failwithf" - ]; - - const ALL_KEYWORDS = { - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILTINS, - 'variable.constant': SPECIAL_IDENTIFIERS - }; - - // (* potentially multi-line Meta Language style comment *) - const ML_COMMENT = - hljs.COMMENT(/\(\*(?!\))/, /\*\)/, { - contains: ["self"] - }); - // Either a multi-line (* Meta Language style comment *) or a single line // C style comment. - const COMMENT = { - variants: [ - ML_COMMENT, - hljs.C_LINE_COMMENT_MODE, - ] - }; - - // Most identifiers can contain apostrophes - const IDENTIFIER_RE = /[a-zA-Z_](\w|')*/; - - const QUOTED_IDENTIFIER = { - scope: 'variable', - begin: /``/, - end: /``/ - }; - - // 'a or ^a where a can be a ``quoted identifier`` - const BEGIN_GENERIC_TYPE_SYMBOL_RE = /\B('|\^)/; - const GENERIC_TYPE_SYMBOL = { - scope: 'symbol', - variants: [ - // the type name is a quoted identifier: - { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, /``.*?``/) }, - // the type name is a normal identifier (we don't use IDENTIFIER_RE because there cannot be another apostrophe here): - { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, hljs.UNDERSCORE_IDENT_RE) } - ], - relevance: 0 - }; - - const makeOperatorMode = function({ includeEqual }) { - // List or symbolic operator characters from the FSharp Spec 4.1, minus the dot, and with `?` added, used for nullable operators. - let allOperatorChars; - if (includeEqual) - allOperatorChars = "!%&*+-/<=>@^|~?"; - else - allOperatorChars = "!%&*+-/<>@^|~?"; - const OPERATOR_CHARS = Array.from(allOperatorChars); - const OPERATOR_CHAR_RE = concat('[', ...OPERATOR_CHARS.map(escape), ']'); - // The lone dot operator is special. It cannot be redefined, and we don't want to highlight it. It can be used as part of a multi-chars operator though. - const OPERATOR_CHAR_OR_DOT_RE = either(OPERATOR_CHAR_RE, /\./); - // When a dot is present, it must be followed by another operator char: - const OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE = concat(OPERATOR_CHAR_OR_DOT_RE, lookahead(OPERATOR_CHAR_OR_DOT_RE)); - const SYMBOLIC_OPERATOR_RE = either( - concat(OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE, OPERATOR_CHAR_OR_DOT_RE, '*'), // Matches at least 2 chars operators - concat(OPERATOR_CHAR_RE, '+'), // Matches at least one char operators - ); - return { - scope: 'operator', - match: either( - // symbolic operators: - SYMBOLIC_OPERATOR_RE, - // other symbolic keywords: - // Type casting and conversion operators: - /:\?>/, - /:\?/, - /:>/, - /:=/, // Reference cell assignment - /::?/, // : or :: - /\$/), // A single $ can be used as an operator - relevance: 0 - }; - }; - - const OPERATOR = makeOperatorMode({ includeEqual: true }); - // This variant is used when matching '=' should end a parent mode: - const OPERATOR_WITHOUT_EQUAL = makeOperatorMode({ includeEqual: false }); - - const makeTypeAnnotationMode = function(prefix, prefixScope) { - return { - begin: concat( // a type annotation is a - prefix, // should be a colon or the 'of' keyword - lookahead( // that has to be followed by - concat( - /\s*/, // optional space - either( // then either of: - /\w/, // word - /'/, // generic type name - /\^/, // generic type name - /#/, // flexible type name - /``/, // quoted type name - /\(/, // parens type expression - /{\|/, // anonymous type annotation - )))), - beginScope: prefixScope, - // BUG: because ending with \n is necessary for some cases, multi-line type annotations are not properly supported. - // Examples where \n is required at the end: - // - abstract member definitions in classes: abstract Property : int * string - // - return type annotations: let f f' = f' () : returnTypeAnnotation - // - record fields definitions: { A : int \n B : string } - end: lookahead( - either( - /\n/, - /=/)), - relevance: 0, - // we need the known types, and we need the type constraint keywords and literals. e.g.: when 'a : null - keywords: hljs.inherit(ALL_KEYWORDS, { type: KNOWN_TYPES }), - contains: [ - COMMENT, - GENERIC_TYPE_SYMBOL, - hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing - OPERATOR_WITHOUT_EQUAL - ] - }; - }; - - const TYPE_ANNOTATION = makeTypeAnnotationMode(/:/, 'operator'); - const DISCRIMINATED_UNION_TYPE_ANNOTATION = makeTypeAnnotationMode(/\bof\b/, 'keyword'); - - // type MyType<'a> = ... - const TYPE_DECLARATION = { - begin: [ - /(^|\s+)/, // prevents matching the following: `match s.stype with` - /type/, - /\s+/, - IDENTIFIER_RE - ], - beginScope: { - 2: 'keyword', - 4: 'title.class' - }, - end: lookahead(/\(|=|$/), - keywords: ALL_KEYWORDS, // match keywords in type constraints. e.g.: when 'a : null - contains: [ - COMMENT, - hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing - GENERIC_TYPE_SYMBOL, - { - // For visual consistency, highlight type brackets as operators. - scope: 'operator', - match: /<|>/ - }, - TYPE_ANNOTATION // generic types can have constraints, which are type annotations. e.g. type MyType<'T when 'T : delegate> = - ] - }; - - const COMPUTATION_EXPRESSION = { - // computation expressions: - scope: 'computation-expression', - // BUG: might conflict with record deconstruction. e.g. let f { Name = name } = name // will highlight f - match: /\b[_a-z]\w*(?=\s*\{)/ - }; - - const PREPROCESSOR = { - // preprocessor directives and fsi commands: - begin: [ - /^\s*/, - concat(/#/, either(...PREPROCESSOR_KEYWORDS)), - /\b/ - ], - beginScope: { 2: 'meta' }, - end: lookahead(/\s|$/) - }; - - // TODO: this definition is missing support for type suffixes and octal notation. - // BUG: range operator without any space is wrongly interpreted as a single number (e.g. 1..10 ) - const NUMBER = { - variants: [ - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE - ] - }; - - // All the following string definitions are potentially multi-line. - // BUG: these definitions are missing support for byte strings (suffixed with B) - - // "..." - const QUOTED_STRING = { - scope: 'string', - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE - ] - }; - // @"..." - const VERBATIM_STRING = { - scope: 'string', - begin: /@"/, - end: /"/, - contains: [ - { - match: /""/ // escaped " - }, - hljs.BACKSLASH_ESCAPE - ] - }; - // """...""" - const TRIPLE_QUOTED_STRING = { - scope: 'string', - begin: /"""/, - end: /"""/, - relevance: 2 - }; - const SUBST = { - scope: 'subst', - begin: /\{/, - end: /\}/, - keywords: ALL_KEYWORDS - }; - // $"...{1+1}..." - const INTERPOLATED_STRING = { - scope: 'string', - begin: /\$"/, - end: /"/, - contains: [ - { - match: /\{\{/ // escaped { - }, - { - match: /\}\}/ // escaped } - }, - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - // $@"...{1+1}..." - const INTERPOLATED_VERBATIM_STRING = { - scope: 'string', - begin: /(\$@|@\$)"/, - end: /"/, - contains: [ - { - match: /\{\{/ // escaped { - }, - { - match: /\}\}/ // escaped } - }, - { - match: /""/ - }, - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - // $"""...{1+1}...""" - const INTERPOLATED_TRIPLE_QUOTED_STRING = { - scope: 'string', - begin: /\$"""/, - end: /"""/, - contains: [ - { - match: /\{\{/ // escaped { - }, - { - match: /\}\}/ // escaped } - }, - SUBST - ], - relevance: 2 - }; - // '.' - const CHAR_LITERAL = { - scope: 'string', - match: concat( - /'/, - either( - /[^\\']/, // either a single non escaped char... - /\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/ // ...or an escape sequence - ), - /'/ - ) - }; - // F# allows a lot of things inside string placeholders. - // Things that don't currently seem allowed by the compiler: types definition, attributes usage. - // (Strictly speaking, some of the followings are only allowed inside triple quoted interpolated strings...) - SUBST.contains = [ - INTERPOLATED_VERBATIM_STRING, - INTERPOLATED_STRING, - VERBATIM_STRING, - QUOTED_STRING, - CHAR_LITERAL, - BANG_KEYWORD_MODE, - COMMENT, - QUOTED_IDENTIFIER, - TYPE_ANNOTATION, - COMPUTATION_EXPRESSION, - PREPROCESSOR, - NUMBER, - GENERIC_TYPE_SYMBOL, - OPERATOR - ]; - const STRING = { - variants: [ - INTERPOLATED_TRIPLE_QUOTED_STRING, - INTERPOLATED_VERBATIM_STRING, - INTERPOLATED_STRING, - TRIPLE_QUOTED_STRING, - VERBATIM_STRING, - QUOTED_STRING, - CHAR_LITERAL - ] - }; - - return { - name: 'F#', - aliases: [ - 'fs', - 'f#' - ], - keywords: ALL_KEYWORDS, - illegal: /\/\*/, - classNameAliases: { - 'computation-expression': 'keyword' - }, - contains: [ - BANG_KEYWORD_MODE, - STRING, - COMMENT, - QUOTED_IDENTIFIER, - TYPE_DECLARATION, - { - // e.g. [] or [<``module``: MyCustomAttributeThatWorksOnModules>] - // or [] - scope: 'meta', - begin: /\[\]/, - relevance: 2, - contains: [ - QUOTED_IDENTIFIER, - // can contain any constant value - TRIPLE_QUOTED_STRING, - VERBATIM_STRING, - QUOTED_STRING, - CHAR_LITERAL, - NUMBER - ] - }, - DISCRIMINATED_UNION_TYPE_ANNOTATION, - TYPE_ANNOTATION, - COMPUTATION_EXPRESSION, - PREPROCESSOR, - NUMBER, - GENERIC_TYPE_SYMBOL, - OPERATOR - ] - }; -} - -module.exports = fsharp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gams.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gams.js ***! - \*************************************************************/ -(module) { - -/* - Language: GAMS - Author: Stefan Bechert - Contributors: Oleg Efimov , Mikko Kouhia - Description: The General Algebraic Modeling System language - Website: https://www.gams.com - Category: scientific - */ - -/** @type LanguageFn */ -function gams(hljs) { - const regex = hljs.regex; - const KEYWORDS = { - keyword: - 'abort acronym acronyms alias all and assign binary card diag display ' - + 'else eq file files for free ge gt if integer le loop lt maximizing ' - + 'minimizing model models ne negative no not option options or ord ' - + 'positive prod put putpage puttl repeat sameas semicont semiint smax ' - + 'smin solve sos1 sos2 sum system table then until using while xor yes', - literal: - 'eps inf na', - built_in: - 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' - + 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' - + 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' - + 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' - + 'randBinomial randLinear randTriangle round rPower sigmoid sign ' - + 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' - + 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' - + 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' - + 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' - + 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' - + 'handleCollect handleDelete handleStatus handleSubmit heapFree ' - + 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' - + 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' - + 'timeElapsed timeExec timeStart' - }; - const PARAMS = { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true - }; - const SYMBOLS = { - className: 'symbol', - variants: [ - { begin: /=[lgenxc]=/ }, - { begin: /\$/ } - ] - }; - const QSTR = { // One-line quoted comment string - className: 'comment', - variants: [ - { - begin: '\'', - end: '\'' - }, - { - begin: '"', - end: '"' - } - ], - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - const ASSIGNMENT = { - begin: '/', - end: '/', - keywords: KEYWORDS, - contains: [ - QSTR, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - hljs.C_NUMBER_MODE - ] - }; - const COMMENT_WORD = /[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/; - const DESCTEXT = { // Parameter/set/variable description text - begin: /[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/, - excludeBegin: true, - end: '$', - endsWithParent: true, - contains: [ - QSTR, - ASSIGNMENT, - { - className: 'comment', - // one comment word, then possibly more - begin: regex.concat( - COMMENT_WORD, - // [ ] because \s would be too broad (matching newlines) - regex.anyNumberOfTimes(regex.concat(/[ ]+/, COMMENT_WORD)) - ), - relevance: 0 - } - ] - }; - - return { - name: 'GAMS', - aliases: [ 'gms' ], - case_insensitive: true, - keywords: KEYWORDS, - contains: [ - hljs.COMMENT(/^\$ontext/, /^\$offtext/), - { - className: 'meta', - begin: '^\\$[a-z0-9]+', - end: '$', - returnBegin: true, - contains: [ - { - className: 'keyword', - begin: '^\\$[a-z0-9]+' - } - ] - }, - hljs.COMMENT('^\\*', '$'), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - // Declarations - { - beginKeywords: - 'set sets parameter parameters variable variables ' - + 'scalar scalars equation equations', - end: ';', - contains: [ - hljs.COMMENT('^\\*', '$'), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - ASSIGNMENT, - DESCTEXT - ] - }, - { // table environment - beginKeywords: 'table', - end: ';', - returnBegin: true, - contains: [ - { // table header row - beginKeywords: 'table', - end: '$', - contains: [ DESCTEXT ] - }, - hljs.COMMENT('^\\*', '$'), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - hljs.C_NUMBER_MODE - // Table does not contain DESCTEXT or ASSIGNMENT - ] - }, - // Function definitions - { - className: 'function', - begin: /^[a-z][a-z0-9_,\-+' ()$]+\.{2}/, - returnBegin: true, - contains: [ - { // Function title - className: 'title', - begin: /^[a-z0-9_]+/ - }, - PARAMS, - SYMBOLS - ] - }, - hljs.C_NUMBER_MODE, - SYMBOLS - ] - }; -} - -module.exports = gams; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gauss.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gauss.js ***! - \**************************************************************/ -(module) { - -/* -Language: GAUSS -Author: Matt Evans -Description: GAUSS Mathematical and Statistical language -Website: https://www.aptech.com -Category: scientific -*/ -function gauss(hljs) { - const KEYWORDS = { - keyword: 'bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' - + 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' - + 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' - + 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' - + 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' - + 'matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print ' - + 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' - + 'scroll setarray show sparse stop string struct system trace trap threadfor ' - + 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint ' - + 'ne ge le gt lt and xor or not eq eqv', - built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' - + 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' - + 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' - + 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' - + 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' - + 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' - + 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' - + 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' - + 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' - + 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' - + 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' - + 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' - + 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' - + 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' - + 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' - + 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' - + 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' - + 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' - + 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' - + 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' - + 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' - + 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' - + 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' - + 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' - + 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' - + 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' - + 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' - + 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' - + 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' - + 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' - + 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' - + 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' - + 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' - + 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' - + 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' - + 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' - + 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' - + 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' - + 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' - + 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' - + 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' - + 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' - + 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' - + 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' - + 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' - + 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' - + 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' - + 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' - + 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' - + 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' - + 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' - + 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' - + 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' - + 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' - + 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' - + 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' - + 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' - + 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' - + 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' - + 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' - + 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' - + 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' - + 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' - + 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' - + 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' - + 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' - + 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' - + 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' - + 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' - + 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' - + 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' - + 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' - + 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' - + 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' - + 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' - + 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname ' - + 'time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' - + 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' - + 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' - + 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' - + 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' - + 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' - + 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' - + 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester ' - + 'strtrim', - literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' - + 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' - + 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' - + 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' - + 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR' - }; - - const AT_COMMENT_MODE = hljs.COMMENT('@', '@'); - - const PREPROCESSOR = - { - className: 'meta', - begin: '#', - end: '$', - keywords: { keyword: 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline' }, - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - { - beginKeywords: 'include', - end: '$', - keywords: { keyword: 'include' }, - contains: [ - { - className: 'string', - begin: '"', - end: '"', - illegal: '\\n' - } - ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AT_COMMENT_MODE - ] - }; - - const STRUCT_TYPE = - { - begin: /\bstruct\s+/, - end: /\s/, - keywords: "struct", - contains: [ - { - className: "type", - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - } - ] - }; - - // only for definitions - const PARSE_PARAMS = [ - { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - endsWithParent: true, - relevance: 0, - contains: [ - { // dots - className: 'literal', - begin: /\.\.\./ - }, - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AT_COMMENT_MODE, - STRUCT_TYPE - ] - } - ]; - - const FUNCTION_DEF = - { - className: "title", - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - }; - - const DEFINITION = function(beginKeywords, end, inherits) { - const mode = hljs.inherit( - { - className: "function", - beginKeywords: beginKeywords, - end: end, - excludeEnd: true, - contains: [].concat(PARSE_PARAMS) - }, - {} - ); - mode.contains.push(FUNCTION_DEF); - mode.contains.push(hljs.C_NUMBER_MODE); - mode.contains.push(hljs.C_BLOCK_COMMENT_MODE); - mode.contains.push(AT_COMMENT_MODE); - return mode; - }; - - const BUILT_IN_REF = - { // these are explicitly named internal function calls - className: 'built_in', - begin: '\\b(' + KEYWORDS.built_in.split(' ').join('|') + ')\\b' - }; - - const STRING_REF = - { - className: 'string', - begin: '"', - end: '"', - contains: [ hljs.BACKSLASH_ESCAPE ], - relevance: 0 - }; - - const FUNCTION_REF = - { - // className: "fn_ref", - begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', - returnBegin: true, - keywords: KEYWORDS, - relevance: 0, - contains: [ - { beginKeywords: KEYWORDS.keyword }, - BUILT_IN_REF, - { // ambiguously named function calls get a relevance of 0 - className: 'built_in', - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - } - ] - }; - - const FUNCTION_REF_PARAMS = - { - // className: "fn_ref_params", - begin: /\(/, - end: /\)/, - relevance: 0, - keywords: { - built_in: KEYWORDS.built_in, - literal: KEYWORDS.literal - }, - contains: [ - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AT_COMMENT_MODE, - BUILT_IN_REF, - FUNCTION_REF, - STRING_REF, - 'self' - ] - }; - - FUNCTION_REF.contains.push(FUNCTION_REF_PARAMS); - - return { - name: 'GAUSS', - aliases: [ 'gss' ], - case_insensitive: true, // language is case-insensitive - keywords: KEYWORDS, - illegal: /(\{[%#]|[%#]\}| <- )/, - contains: [ - hljs.C_NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AT_COMMENT_MODE, - STRING_REF, - PREPROCESSOR, - { - className: 'keyword', - begin: /\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/ - }, - DEFINITION('proc keyword', ';'), - DEFINITION('fn', '='), - { - beginKeywords: 'for threadfor', - end: /;/, - // end: /\(/, - relevance: 0, - contains: [ - hljs.C_BLOCK_COMMENT_MODE, - AT_COMMENT_MODE, - FUNCTION_REF_PARAMS - ] - }, - { // custom method guard - // excludes method names from keyword processing - variants: [ - { begin: hljs.UNDERSCORE_IDENT_RE + '\\.' + hljs.UNDERSCORE_IDENT_RE }, - { begin: hljs.UNDERSCORE_IDENT_RE + '\\s*=' } - ], - relevance: 0 - }, - FUNCTION_REF, - STRUCT_TYPE - ] - }; -} - -module.exports = gauss; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gcode.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gcode.js ***! - \**************************************************************/ -(module) { - -/* - Language: G-code (ISO 6983) - Contributors: Adam Joseph Cook - Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls. - Website: https://www.sis.se/api/document/preview/911952/ - Category: hardware - */ - -function gcode(hljs) { - const regex = hljs.regex; - const GCODE_KEYWORDS = { - $pattern: /[A-Z]+|%/, - keyword: [ - // conditions - 'THEN', - 'ELSE', - 'ENDIF', - 'IF', - - // controls - 'GOTO', - 'DO', - 'WHILE', - 'WH', - 'END', - 'CALL', - - // scoping - 'SUB', - 'ENDSUB', - - // comparisons - 'EQ', - 'NE', - 'LT', - 'GT', - 'LE', - 'GE', - 'AND', - 'OR', - 'XOR', - - // start/end of program - '%' - ], - built_in: [ - 'ATAN', - 'ABS', - 'ACOS', - 'ASIN', - 'COS', - 'EXP', - 'FIX', - 'FUP', - 'ROUND', - 'LN', - 'SIN', - 'SQRT', - 'TAN', - 'EXISTS' - ] - }; - - - // TODO: post v12 lets use look-behind, until then \b and a callback filter will be used - // const LETTER_BOUNDARY_RE = /(?= '0' && charBeforeMatch <= '9') { - return; - } - - if (charBeforeMatch === '_') { - return; - } - - response.ignoreMatch(); - } - - const NUMBER_RE = /[+-]?((\.\d+)|(\d+)(\.\d*)?)/; - - const GENERAL_MISC_FUNCTION_RE = /[GM]\s*\d+(\.\d+)?/; - const TOOLS_RE = /T\s*\d+/; - const SUBROUTINE_RE = /O\s*\d+/; - const SUBROUTINE_NAMED_RE = /O<.+>/; - const AXES_RE = /[ABCUVWXYZ]\s*/; - const PARAMETERS_RE = /[FHIJKPQRS]\s*/; - - const GCODE_CODE = [ - // comments - hljs.COMMENT(/\(/, /\)/), - hljs.COMMENT(/;/, /$/), - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - - // gcodes - { - scope: 'title.function', - variants: [ - // G General functions: G0, G5.1, G5.2, … - // M Misc functions: M0, M55.6, M199, … - { match: regex.concat(LETTER_BOUNDARY_RE, GENERAL_MISC_FUNCTION_RE) }, - { - begin: GENERAL_MISC_FUNCTION_RE, - 'on:begin': LETTER_BOUNDARY_CALLBACK - }, - // T Tools - { match: regex.concat(LETTER_BOUNDARY_RE, TOOLS_RE), }, - { - begin: TOOLS_RE, - 'on:begin': LETTER_BOUNDARY_CALLBACK - } - ] - }, - - { - scope: 'symbol', - variants: [ - // O Subroutine ID: O100, O110, … - { match: regex.concat(LETTER_BOUNDARY_RE, SUBROUTINE_RE) }, - { - begin: SUBROUTINE_RE, - 'on:begin': LETTER_BOUNDARY_CALLBACK - }, - // O Subroutine name: O, … - { match: regex.concat(LETTER_BOUNDARY_RE, SUBROUTINE_NAMED_RE) }, - { - begin: SUBROUTINE_NAMED_RE, - 'on:begin': LETTER_BOUNDARY_CALLBACK - }, - // Checksum at end of line: *71, *199, … - { match: /\*\s*\d+\s*$/ } - ] - }, - - { - scope: 'operator', // N Line number: N1, N2, N1020, … - match: /^N\s*\d+/ - }, - - { - scope: 'variable', - match: /-?#\s*\d+/ - }, - - { - scope: 'property', // Physical axes, - variants: [ - { match: regex.concat(LETTER_BOUNDARY_RE, AXES_RE, NUMBER_RE) }, - { - begin: regex.concat(AXES_RE, NUMBER_RE), - 'on:begin': LETTER_BOUNDARY_CALLBACK - }, - ] - }, - - { - scope: 'params', // Different types of parameters - variants: [ - { match: regex.concat(LETTER_BOUNDARY_RE, PARAMETERS_RE, NUMBER_RE) }, - { - begin: regex.concat(PARAMETERS_RE, NUMBER_RE), - 'on:begin': LETTER_BOUNDARY_CALLBACK - }, - ] - }, - ]; - - return { - name: 'G-code (ISO 6983)', - aliases: [ 'nc' ], - // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly. - // However, most prefer all uppercase and uppercase is customary. - case_insensitive: true, - // TODO: post v12 with the use of look-behind this can be enabled - disableAutodetect: true, - keywords: GCODE_KEYWORDS, - contains: GCODE_CODE - }; -} - -module.exports = gcode; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gherkin.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gherkin.js ***! - \****************************************************************/ -(module) { - -/* - Language: Gherkin - Author: Sam Pikesley (@pikesley) - Description: Gherkin is the format for cucumber specifications. It is a domain specific language which helps you to describe business behavior without the need to go into detail of implementation. - Website: https://cucumber.io/docs/gherkin/ - */ - -function gherkin(hljs) { - return { - name: 'Gherkin', - aliases: [ 'feature' ], - keywords: 'Feature Background Ability Business\ Need Scenario Scenarios Scenario\ Outline Scenario\ Template Examples Given And Then But When', - contains: [ - { - className: 'symbol', - begin: '\\*', - relevance: 0 - }, - { - className: 'meta', - begin: '@[^@\\s]+' - }, - { - begin: '\\|', - end: '\\|\\w*$', - contains: [ - { - className: 'string', - begin: '[^|]+' - } - ] - }, - { - className: 'variable', - begin: '<', - end: '>' - }, - hljs.HASH_COMMENT_MODE, - { - className: 'string', - begin: '"""', - end: '"""' - }, - hljs.QUOTE_STRING_MODE - ] - }; -} - -module.exports = gherkin; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/glsl.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/glsl.js ***! - \*************************************************************/ -(module) { - -/* -Language: GLSL -Description: OpenGL Shading Language -Author: Sergey Tikhomirov -Website: https://en.wikipedia.org/wiki/OpenGL_Shading_Language -Category: graphics -*/ - -function glsl(hljs) { - return { - name: 'GLSL', - keywords: { - keyword: - // Statements - 'break continue discard do else for if return while switch case default ' - // Qualifiers - + 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' - + 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' - + 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' - + 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' - + 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' - + 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f ' - + 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' - + 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' - + 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' - + 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' - + 'triangles triangles_adjacency uniform varying vertices volatile writeonly', - type: - 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' - + 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' - + 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer ' - + 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' - + 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' - + 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' - + 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' - + 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' - + 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' - + 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' - + 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' - + 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' - + 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' - + 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' - + 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void', - built_in: - // Constants - 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' - + 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' - + 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' - + 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' - + 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' - + 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' - + 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' - + 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' - + 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' - + 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' - + 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' - + 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' - + 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' - + 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' - + 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' - + 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' - + 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' - + 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' - + 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' - + 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' - + 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' - + 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' - + 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' - // Variables - + 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' - + 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' - + 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' - + 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' - + 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' - + 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' - + 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' - + 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' - + 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' - + 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' - + 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' - + 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' - + 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' - + 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' - + 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' - + 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' - + 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' - + 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' - // Functions - + 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' - + 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' - + 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' - + 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' - + 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' - + 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' - + 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' - + 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' - + 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' - + 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' - + 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' - + 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' - + 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' - + 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' - + 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' - + 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' - + 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' - + 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' - + 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' - + 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' - + 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' - + 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' - + 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow', - literal: 'true false' - }, - illegal: '"', - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_NUMBER_MODE, - { - className: 'meta', - begin: '#', - end: '$' - } - ] - }; -} - -module.exports = glsl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gml.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gml.js ***! - \************************************************************/ -(module) { - -/* -Language: GML -Description: Game Maker Language for GameMaker (rev. 2023.1) -Website: https://manual.yoyogames.com/ -Category: scripting -*/ - -function gml(hljs) { - const KEYWORDS = [ - "#endregion", - "#macro", - "#region", - "and", - "begin", - "break", - "case", - "constructor", - "continue", - "default", - "delete", - "div", - "do", - "else", - "end", - "enum", - "exit", - "for", - "function", - "globalvar", - "if", - "mod", - "new", - "not", - "or", - "repeat", - "return", - "static", - "switch", - "then", - "until", - "var", - "while", - "with", - "xor" - ]; - - const BUILT_INS = [ - "abs", - "alarm_get", - "alarm_set", - "angle_difference", - "animcurve_channel_evaluate", - "animcurve_channel_new", - "animcurve_create", - "animcurve_destroy", - "animcurve_exists", - "animcurve_get", - "animcurve_get_channel", - "animcurve_get_channel_index", - "animcurve_point_new", - "ansi_char", - "application_get_position", - "application_surface_draw_enable", - "application_surface_enable", - "application_surface_is_enabled", - "arccos", - "arcsin", - "arctan", - "arctan2", - "array_all", - "array_any", - "array_concat", - "array_contains", - "array_contains_ext", - "array_copy", - "array_copy_while", - "array_create", - "array_create_ext", - "array_delete", - "array_equals", - "array_filter", - "array_filter_ext", - "array_find_index", - "array_first", - "array_foreach", - "array_get", - "array_get_index", - "array_insert", - "array_intersection", - "array_last", - "array_length", - "array_map", - "array_map_ext", - "array_pop", - "array_push", - "array_reduce", - "array_resize", - "array_reverse", - "array_reverse_ext", - "array_set", - "array_shuffle", - "array_shuffle_ext", - "array_sort", - "array_union", - "array_unique", - "array_unique_ext", - "asset_add_tags", - "asset_clear_tags", - "asset_get_ids", - "asset_get_index", - "asset_get_tags", - "asset_get_type", - "asset_has_any_tag", - "asset_has_tags", - "asset_remove_tags", - "audio_bus_clear_emitters", - "audio_bus_create", - "audio_bus_get_emitters", - "audio_channel_num", - "audio_create_buffer_sound", - "audio_create_play_queue", - "audio_create_stream", - "audio_create_sync_group", - "audio_debug", - "audio_destroy_stream", - "audio_destroy_sync_group", - "audio_effect_create", - "audio_emitter_bus", - "audio_emitter_create", - "audio_emitter_exists", - "audio_emitter_falloff", - "audio_emitter_free", - "audio_emitter_gain", - "audio_emitter_get_bus", - "audio_emitter_get_gain", - "audio_emitter_get_listener_mask", - "audio_emitter_get_pitch", - "audio_emitter_get_vx", - "audio_emitter_get_vy", - "audio_emitter_get_vz", - "audio_emitter_get_x", - "audio_emitter_get_y", - "audio_emitter_get_z", - "audio_emitter_pitch", - "audio_emitter_position", - "audio_emitter_set_listener_mask", - "audio_emitter_velocity", - "audio_exists", - "audio_falloff_set_model", - "audio_free_buffer_sound", - "audio_free_play_queue", - "audio_get_listener_count", - "audio_get_listener_info", - "audio_get_listener_mask", - "audio_get_master_gain", - "audio_get_name", - "audio_get_recorder_count", - "audio_get_recorder_info", - "audio_get_type", - "audio_group_get_assets", - "audio_group_get_gain", - "audio_group_is_loaded", - "audio_group_load", - "audio_group_load_progress", - "audio_group_name", - "audio_group_set_gain", - "audio_group_stop_all", - "audio_group_unload", - "audio_is_paused", - "audio_is_playing", - "audio_listener_get_data", - "audio_listener_orientation", - "audio_listener_position", - "audio_listener_set_orientation", - "audio_listener_set_position", - "audio_listener_set_velocity", - "audio_listener_velocity", - "audio_master_gain", - "audio_pause_all", - "audio_pause_sound", - "audio_pause_sync_group", - "audio_play_in_sync_group", - "audio_play_sound", - "audio_play_sound_at", - "audio_play_sound_ext", - "audio_play_sound_on", - "audio_queue_sound", - "audio_resume_all", - "audio_resume_sound", - "audio_resume_sync_group", - "audio_set_listener_mask", - "audio_set_master_gain", - "audio_sound_gain", - "audio_sound_get_audio_group", - "audio_sound_get_gain", - "audio_sound_get_listener_mask", - "audio_sound_get_loop", - "audio_sound_get_loop_end", - "audio_sound_get_loop_start", - "audio_sound_get_pitch", - "audio_sound_get_track_position", - "audio_sound_is_playable", - "audio_sound_length", - "audio_sound_loop", - "audio_sound_loop_end", - "audio_sound_loop_start", - "audio_sound_pitch", - "audio_sound_set_listener_mask", - "audio_sound_set_track_position", - "audio_start_recording", - "audio_start_sync_group", - "audio_stop_all", - "audio_stop_recording", - "audio_stop_sound", - "audio_stop_sync_group", - "audio_sync_group_debug", - "audio_sync_group_get_track_pos", - "audio_sync_group_is_paused", - "audio_sync_group_is_playing", - "audio_system_is_available", - "audio_system_is_initialised", - "base64_decode", - "base64_encode", - "bool", - "browser_input_capture", - "buffer_async_group_begin", - "buffer_async_group_end", - "buffer_async_group_option", - "buffer_base64_decode", - "buffer_base64_decode_ext", - "buffer_base64_encode", - "buffer_compress", - "buffer_copy", - "buffer_copy_from_vertex_buffer", - "buffer_copy_stride", - "buffer_crc32", - "buffer_create", - "buffer_create_from_vertex_buffer", - "buffer_create_from_vertex_buffer_ext", - "buffer_decompress", - "buffer_delete", - "buffer_exists", - "buffer_fill", - "buffer_get_address", - "buffer_get_alignment", - "buffer_get_size", - "buffer_get_surface", - "buffer_get_type", - "buffer_load", - "buffer_load_async", - "buffer_load_ext", - "buffer_load_partial", - "buffer_md5", - "buffer_peek", - "buffer_poke", - "buffer_read", - "buffer_resize", - "buffer_save", - "buffer_save_async", - "buffer_save_ext", - "buffer_seek", - "buffer_set_surface", - "buffer_set_used_size", - "buffer_sha1", - "buffer_sizeof", - "buffer_tell", - "buffer_write", - "call_cancel", - "call_later", - "camera_apply", - "camera_copy_transforms", - "camera_create", - "camera_create_view", - "camera_destroy", - "camera_get_active", - "camera_get_begin_script", - "camera_get_default", - "camera_get_end_script", - "camera_get_proj_mat", - "camera_get_update_script", - "camera_get_view_angle", - "camera_get_view_border_x", - "camera_get_view_border_y", - "camera_get_view_height", - "camera_get_view_mat", - "camera_get_view_speed_x", - "camera_get_view_speed_y", - "camera_get_view_target", - "camera_get_view_width", - "camera_get_view_x", - "camera_get_view_y", - "camera_set_begin_script", - "camera_set_default", - "camera_set_end_script", - "camera_set_proj_mat", - "camera_set_update_script", - "camera_set_view_angle", - "camera_set_view_border", - "camera_set_view_mat", - "camera_set_view_pos", - "camera_set_view_size", - "camera_set_view_speed", - "camera_set_view_target", - "ceil", - "choose", - "chr", - "clamp", - "clickable_add", - "clickable_add_ext", - "clickable_change", - "clickable_change_ext", - "clickable_delete", - "clickable_exists", - "clickable_set_style", - "clipboard_get_text", - "clipboard_has_text", - "clipboard_set_text", - "cloud_file_save", - "cloud_string_save", - "cloud_synchronise", - "code_is_compiled", - "collision_circle", - "collision_circle_list", - "collision_ellipse", - "collision_ellipse_list", - "collision_line", - "collision_line_list", - "collision_point", - "collision_point_list", - "collision_rectangle", - "collision_rectangle_list", - "color_get_blue", - "color_get_green", - "color_get_hue", - "color_get_red", - "color_get_saturation", - "color_get_value", - "colour_get_blue", - "colour_get_green", - "colour_get_hue", - "colour_get_red", - "colour_get_saturation", - "colour_get_value", - "cos", - "darccos", - "darcsin", - "darctan", - "darctan2", - "date_compare_date", - "date_compare_datetime", - "date_compare_time", - "date_create_datetime", - "date_current_datetime", - "date_date_of", - "date_date_string", - "date_datetime_string", - "date_day_span", - "date_days_in_month", - "date_days_in_year", - "date_get_day", - "date_get_day_of_year", - "date_get_hour", - "date_get_hour_of_year", - "date_get_minute", - "date_get_minute_of_year", - "date_get_month", - "date_get_second", - "date_get_second_of_year", - "date_get_timezone", - "date_get_week", - "date_get_weekday", - "date_get_year", - "date_hour_span", - "date_inc_day", - "date_inc_hour", - "date_inc_minute", - "date_inc_month", - "date_inc_second", - "date_inc_week", - "date_inc_year", - "date_is_today", - "date_leap_year", - "date_minute_span", - "date_month_span", - "date_second_span", - "date_set_timezone", - "date_time_of", - "date_time_string", - "date_valid_datetime", - "date_week_span", - "date_year_span", - "db_to_lin", - "dbg_add_font_glyphs", - "dbg_button", - "dbg_checkbox", - "dbg_color", - "dbg_colour", - "dbg_drop_down", - "dbg_same_line", - "dbg_section", - "dbg_section_delete", - "dbg_section_exists", - "dbg_slider", - "dbg_slider_int", - "dbg_sprite", - "dbg_text", - "dbg_text_input", - "dbg_view", - "dbg_view_delete", - "dbg_view_exists", - "dbg_watch", - "dcos", - "debug_event", - "debug_get_callstack", - "degtorad", - "device_get_tilt_x", - "device_get_tilt_y", - "device_get_tilt_z", - "device_is_keypad_open", - "device_mouse_check_button", - "device_mouse_check_button_pressed", - "device_mouse_check_button_released", - "device_mouse_dbclick_enable", - "device_mouse_raw_x", - "device_mouse_raw_y", - "device_mouse_x", - "device_mouse_x_to_gui", - "device_mouse_y", - "device_mouse_y_to_gui", - "directory_create", - "directory_destroy", - "directory_exists", - "display_get_dpi_x", - "display_get_dpi_y", - "display_get_frequency", - "display_get_gui_height", - "display_get_gui_width", - "display_get_height", - "display_get_orientation", - "display_get_sleep_margin", - "display_get_timing_method", - "display_get_width", - "display_mouse_get_x", - "display_mouse_get_y", - "display_mouse_set", - "display_reset", - "display_set_gui_maximise", - "display_set_gui_maximize", - "display_set_gui_size", - "display_set_sleep_margin", - "display_set_timing_method", - "display_set_ui_visibility", - "distance_to_object", - "distance_to_point", - "dot_product", - "dot_product_3d", - "dot_product_3d_normalised", - "dot_product_3d_normalized", - "dot_product_normalised", - "dot_product_normalized", - "draw_arrow", - "draw_button", - "draw_circle", - "draw_circle_color", - "draw_circle_colour", - "draw_clear", - "draw_clear_alpha", - "draw_ellipse", - "draw_ellipse_color", - "draw_ellipse_colour", - "draw_enable_drawevent", - "draw_enable_skeleton_blendmodes", - "draw_enable_swf_aa", - "draw_flush", - "draw_get_alpha", - "draw_get_color", - "draw_get_colour", - "draw_get_enable_skeleton_blendmodes", - "draw_get_font", - "draw_get_halign", - "draw_get_lighting", - "draw_get_swf_aa_level", - "draw_get_valign", - "draw_getpixel", - "draw_getpixel_ext", - "draw_healthbar", - "draw_highscore", - "draw_light_define_ambient", - "draw_light_define_direction", - "draw_light_define_point", - "draw_light_enable", - "draw_light_get", - "draw_light_get_ambient", - "draw_line", - "draw_line_color", - "draw_line_colour", - "draw_line_width", - "draw_line_width_color", - "draw_line_width_colour", - "draw_path", - "draw_point", - "draw_point_color", - "draw_point_colour", - "draw_primitive_begin", - "draw_primitive_begin_texture", - "draw_primitive_end", - "draw_rectangle", - "draw_rectangle_color", - "draw_rectangle_colour", - "draw_roundrect", - "draw_roundrect_color", - "draw_roundrect_color_ext", - "draw_roundrect_colour", - "draw_roundrect_colour_ext", - "draw_roundrect_ext", - "draw_self", - "draw_set_alpha", - "draw_set_circle_precision", - "draw_set_color", - "draw_set_colour", - "draw_set_font", - "draw_set_halign", - "draw_set_lighting", - "draw_set_swf_aa_level", - "draw_set_valign", - "draw_skeleton", - "draw_skeleton_collision", - "draw_skeleton_instance", - "draw_skeleton_time", - "draw_sprite", - "draw_sprite_ext", - "draw_sprite_general", - "draw_sprite_part", - "draw_sprite_part_ext", - "draw_sprite_pos", - "draw_sprite_stretched", - "draw_sprite_stretched_ext", - "draw_sprite_tiled", - "draw_sprite_tiled_ext", - "draw_surface", - "draw_surface_ext", - "draw_surface_general", - "draw_surface_part", - "draw_surface_part_ext", - "draw_surface_stretched", - "draw_surface_stretched_ext", - "draw_surface_tiled", - "draw_surface_tiled_ext", - "draw_text", - "draw_text_color", - "draw_text_colour", - "draw_text_ext", - "draw_text_ext_color", - "draw_text_ext_colour", - "draw_text_ext_transformed", - "draw_text_ext_transformed_color", - "draw_text_ext_transformed_colour", - "draw_text_transformed", - "draw_text_transformed_color", - "draw_text_transformed_colour", - "draw_texture_flush", - "draw_tile", - "draw_tilemap", - "draw_triangle", - "draw_triangle_color", - "draw_triangle_colour", - "draw_vertex", - "draw_vertex_color", - "draw_vertex_colour", - "draw_vertex_texture", - "draw_vertex_texture_color", - "draw_vertex_texture_colour", - "ds_exists", - "ds_grid_add", - "ds_grid_add_disk", - "ds_grid_add_grid_region", - "ds_grid_add_region", - "ds_grid_clear", - "ds_grid_copy", - "ds_grid_create", - "ds_grid_destroy", - "ds_grid_get", - "ds_grid_get_disk_max", - "ds_grid_get_disk_mean", - "ds_grid_get_disk_min", - "ds_grid_get_disk_sum", - "ds_grid_get_max", - "ds_grid_get_mean", - "ds_grid_get_min", - "ds_grid_get_sum", - "ds_grid_height", - "ds_grid_multiply", - "ds_grid_multiply_disk", - "ds_grid_multiply_grid_region", - "ds_grid_multiply_region", - "ds_grid_read", - "ds_grid_resize", - "ds_grid_set", - "ds_grid_set_disk", - "ds_grid_set_grid_region", - "ds_grid_set_region", - "ds_grid_shuffle", - "ds_grid_sort", - "ds_grid_to_mp_grid", - "ds_grid_value_disk_exists", - "ds_grid_value_disk_x", - "ds_grid_value_disk_y", - "ds_grid_value_exists", - "ds_grid_value_x", - "ds_grid_value_y", - "ds_grid_width", - "ds_grid_write", - "ds_list_add", - "ds_list_clear", - "ds_list_copy", - "ds_list_create", - "ds_list_delete", - "ds_list_destroy", - "ds_list_empty", - "ds_list_find_index", - "ds_list_find_value", - "ds_list_insert", - "ds_list_is_list", - "ds_list_is_map", - "ds_list_mark_as_list", - "ds_list_mark_as_map", - "ds_list_read", - "ds_list_replace", - "ds_list_set", - "ds_list_shuffle", - "ds_list_size", - "ds_list_sort", - "ds_list_write", - "ds_map_add", - "ds_map_add_list", - "ds_map_add_map", - "ds_map_clear", - "ds_map_copy", - "ds_map_create", - "ds_map_delete", - "ds_map_destroy", - "ds_map_empty", - "ds_map_exists", - "ds_map_find_first", - "ds_map_find_last", - "ds_map_find_next", - "ds_map_find_previous", - "ds_map_find_value", - "ds_map_is_list", - "ds_map_is_map", - "ds_map_keys_to_array", - "ds_map_read", - "ds_map_replace", - "ds_map_replace_list", - "ds_map_replace_map", - "ds_map_secure_load", - "ds_map_secure_load_buffer", - "ds_map_secure_save", - "ds_map_secure_save_buffer", - "ds_map_set", - "ds_map_size", - "ds_map_values_to_array", - "ds_map_write", - "ds_priority_add", - "ds_priority_change_priority", - "ds_priority_clear", - "ds_priority_copy", - "ds_priority_create", - "ds_priority_delete_max", - "ds_priority_delete_min", - "ds_priority_delete_value", - "ds_priority_destroy", - "ds_priority_empty", - "ds_priority_find_max", - "ds_priority_find_min", - "ds_priority_find_priority", - "ds_priority_read", - "ds_priority_size", - "ds_priority_write", - "ds_queue_clear", - "ds_queue_copy", - "ds_queue_create", - "ds_queue_dequeue", - "ds_queue_destroy", - "ds_queue_empty", - "ds_queue_enqueue", - "ds_queue_head", - "ds_queue_read", - "ds_queue_size", - "ds_queue_tail", - "ds_queue_write", - "ds_set_precision", - "ds_stack_clear", - "ds_stack_copy", - "ds_stack_create", - "ds_stack_destroy", - "ds_stack_empty", - "ds_stack_pop", - "ds_stack_push", - "ds_stack_read", - "ds_stack_size", - "ds_stack_top", - "ds_stack_write", - "dsin", - "dtan", - "effect_clear", - "effect_create_above", - "effect_create_below", - "effect_create_depth", - "effect_create_layer", - "environment_get_variable", - "event_inherited", - "event_perform", - "event_perform_async", - "event_perform_object", - "event_user", - "exception_unhandled_handler", - "exp", - "extension_exists", - "extension_get_option_count", - "extension_get_option_names", - "extension_get_option_value", - "extension_get_options", - "extension_get_version", - "external_call", - "external_define", - "external_free", - "file_attributes", - "file_bin_close", - "file_bin_open", - "file_bin_position", - "file_bin_read_byte", - "file_bin_rewrite", - "file_bin_seek", - "file_bin_size", - "file_bin_write_byte", - "file_copy", - "file_delete", - "file_exists", - "file_find_close", - "file_find_first", - "file_find_next", - "file_rename", - "file_text_close", - "file_text_eof", - "file_text_eoln", - "file_text_open_append", - "file_text_open_from_string", - "file_text_open_read", - "file_text_open_write", - "file_text_read_real", - "file_text_read_string", - "file_text_readln", - "file_text_write_real", - "file_text_write_string", - "file_text_writeln", - "filename_change_ext", - "filename_dir", - "filename_drive", - "filename_ext", - "filename_name", - "filename_path", - "floor", - "font_add", - "font_add_enable_aa", - "font_add_get_enable_aa", - "font_add_sprite", - "font_add_sprite_ext", - "font_cache_glyph", - "font_delete", - "font_enable_effects", - "font_enable_sdf", - "font_exists", - "font_get_bold", - "font_get_first", - "font_get_fontname", - "font_get_info", - "font_get_italic", - "font_get_last", - "font_get_name", - "font_get_sdf_enabled", - "font_get_sdf_spread", - "font_get_size", - "font_get_texture", - "font_get_uvs", - "font_replace_sprite", - "font_replace_sprite_ext", - "font_sdf_spread", - "font_set_cache_size", - "frac", - "fx_create", - "fx_get_name", - "fx_get_parameter", - "fx_get_parameter_names", - "fx_get_parameters", - "fx_get_single_layer", - "fx_set_parameter", - "fx_set_parameters", - "fx_set_single_layer", - "game_change", - "game_end", - "game_get_speed", - "game_load", - "game_load_buffer", - "game_restart", - "game_save", - "game_save_buffer", - "game_set_speed", - "gamepad_axis_count", - "gamepad_axis_value", - "gamepad_button_check", - "gamepad_button_check_pressed", - "gamepad_button_check_released", - "gamepad_button_count", - "gamepad_button_value", - "gamepad_get_axis_deadzone", - "gamepad_get_button_threshold", - "gamepad_get_description", - "gamepad_get_device_count", - "gamepad_get_guid", - "gamepad_get_mapping", - "gamepad_get_option", - "gamepad_hat_count", - "gamepad_hat_value", - "gamepad_is_connected", - "gamepad_is_supported", - "gamepad_remove_mapping", - "gamepad_set_axis_deadzone", - "gamepad_set_button_threshold", - "gamepad_set_color", - "gamepad_set_colour", - "gamepad_set_option", - "gamepad_set_vibration", - "gamepad_test_mapping", - "gc_collect", - "gc_enable", - "gc_get_stats", - "gc_get_target_frame_time", - "gc_is_enabled", - "gc_target_frame_time", - "gesture_double_tap_distance", - "gesture_double_tap_time", - "gesture_drag_distance", - "gesture_drag_time", - "gesture_flick_speed", - "gesture_get_double_tap_distance", - "gesture_get_double_tap_time", - "gesture_get_drag_distance", - "gesture_get_drag_time", - "gesture_get_flick_speed", - "gesture_get_pinch_angle_away", - "gesture_get_pinch_angle_towards", - "gesture_get_pinch_distance", - "gesture_get_rotate_angle", - "gesture_get_rotate_time", - "gesture_get_tap_count", - "gesture_pinch_angle_away", - "gesture_pinch_angle_towards", - "gesture_pinch_distance", - "gesture_rotate_angle", - "gesture_rotate_time", - "gesture_tap_count", - "get_integer", - "get_integer_async", - "get_login_async", - "get_open_filename", - "get_open_filename_ext", - "get_save_filename", - "get_save_filename_ext", - "get_string", - "get_string_async", - "get_timer", - "gif_add_surface", - "gif_open", - "gif_save", - "gif_save_buffer", - "gml_pragma", - "gml_release_mode", - "gpu_get_alphatestenable", - "gpu_get_alphatestref", - "gpu_get_blendenable", - "gpu_get_blendmode", - "gpu_get_blendmode_dest", - "gpu_get_blendmode_destalpha", - "gpu_get_blendmode_ext", - "gpu_get_blendmode_ext_sepalpha", - "gpu_get_blendmode_src", - "gpu_get_blendmode_srcalpha", - "gpu_get_colorwriteenable", - "gpu_get_colourwriteenable", - "gpu_get_cullmode", - "gpu_get_depth", - "gpu_get_fog", - "gpu_get_state", - "gpu_get_tex_filter", - "gpu_get_tex_filter_ext", - "gpu_get_tex_max_aniso", - "gpu_get_tex_max_aniso_ext", - "gpu_get_tex_max_mip", - "gpu_get_tex_max_mip_ext", - "gpu_get_tex_min_mip", - "gpu_get_tex_min_mip_ext", - "gpu_get_tex_mip_bias", - "gpu_get_tex_mip_bias_ext", - "gpu_get_tex_mip_enable", - "gpu_get_tex_mip_enable_ext", - "gpu_get_tex_mip_filter", - "gpu_get_tex_mip_filter_ext", - "gpu_get_tex_repeat", - "gpu_get_tex_repeat_ext", - "gpu_get_texfilter", - "gpu_get_texfilter_ext", - "gpu_get_texrepeat", - "gpu_get_texrepeat_ext", - "gpu_get_zfunc", - "gpu_get_ztestenable", - "gpu_get_zwriteenable", - "gpu_pop_state", - "gpu_push_state", - "gpu_set_alphatestenable", - "gpu_set_alphatestref", - "gpu_set_blendenable", - "gpu_set_blendmode", - "gpu_set_blendmode_ext", - "gpu_set_blendmode_ext_sepalpha", - "gpu_set_colorwriteenable", - "gpu_set_colourwriteenable", - "gpu_set_cullmode", - "gpu_set_depth", - "gpu_set_fog", - "gpu_set_state", - "gpu_set_tex_filter", - "gpu_set_tex_filter_ext", - "gpu_set_tex_max_aniso", - "gpu_set_tex_max_aniso_ext", - "gpu_set_tex_max_mip", - "gpu_set_tex_max_mip_ext", - "gpu_set_tex_min_mip", - "gpu_set_tex_min_mip_ext", - "gpu_set_tex_mip_bias", - "gpu_set_tex_mip_bias_ext", - "gpu_set_tex_mip_enable", - "gpu_set_tex_mip_enable_ext", - "gpu_set_tex_mip_filter", - "gpu_set_tex_mip_filter_ext", - "gpu_set_tex_repeat", - "gpu_set_tex_repeat_ext", - "gpu_set_texfilter", - "gpu_set_texfilter_ext", - "gpu_set_texrepeat", - "gpu_set_texrepeat_ext", - "gpu_set_zfunc", - "gpu_set_ztestenable", - "gpu_set_zwriteenable", - "handle_parse", - "highscore_add", - "highscore_clear", - "highscore_name", - "highscore_value", - "http_get", - "http_get_file", - "http_get_request_crossorigin", - "http_post_string", - "http_request", - "http_set_request_crossorigin", - "iap_acquire", - "iap_activate", - "iap_consume", - "iap_enumerate_products", - "iap_product_details", - "iap_purchase_details", - "iap_restore_all", - "iap_status", - "ini_close", - "ini_key_delete", - "ini_key_exists", - "ini_open", - "ini_open_from_string", - "ini_read_real", - "ini_read_string", - "ini_section_delete", - "ini_section_exists", - "ini_write_real", - "ini_write_string", - "instance_activate_all", - "instance_activate_layer", - "instance_activate_object", - "instance_activate_region", - "instance_change", - "instance_copy", - "instance_create_depth", - "instance_create_layer", - "instance_deactivate_all", - "instance_deactivate_layer", - "instance_deactivate_object", - "instance_deactivate_region", - "instance_destroy", - "instance_exists", - "instance_find", - "instance_furthest", - "instance_id_get", - "instance_nearest", - "instance_number", - "instance_place", - "instance_place_list", - "instance_position", - "instance_position_list", - "instanceof", - "int64", - "io_clear", - "irandom", - "irandom_range", - "is_array", - "is_bool", - "is_callable", - "is_debug_overlay_open", - "is_handle", - "is_infinity", - "is_instanceof", - "is_int32", - "is_int64", - "is_keyboard_used_debug_overlay", - "is_method", - "is_mouse_over_debug_overlay", - "is_nan", - "is_numeric", - "is_ptr", - "is_real", - "is_string", - "is_struct", - "is_undefined", - "json_decode", - "json_encode", - "json_parse", - "json_stringify", - "keyboard_check", - "keyboard_check_direct", - "keyboard_check_pressed", - "keyboard_check_released", - "keyboard_clear", - "keyboard_get_map", - "keyboard_get_numlock", - "keyboard_key_press", - "keyboard_key_release", - "keyboard_set_map", - "keyboard_set_numlock", - "keyboard_unset_map", - "keyboard_virtual_height", - "keyboard_virtual_hide", - "keyboard_virtual_show", - "keyboard_virtual_status", - "layer_add_instance", - "layer_background_alpha", - "layer_background_blend", - "layer_background_change", - "layer_background_create", - "layer_background_destroy", - "layer_background_exists", - "layer_background_get_alpha", - "layer_background_get_blend", - "layer_background_get_htiled", - "layer_background_get_id", - "layer_background_get_index", - "layer_background_get_speed", - "layer_background_get_sprite", - "layer_background_get_stretch", - "layer_background_get_visible", - "layer_background_get_vtiled", - "layer_background_get_xscale", - "layer_background_get_yscale", - "layer_background_htiled", - "layer_background_index", - "layer_background_speed", - "layer_background_sprite", - "layer_background_stretch", - "layer_background_visible", - "layer_background_vtiled", - "layer_background_xscale", - "layer_background_yscale", - "layer_clear_fx", - "layer_create", - "layer_depth", - "layer_destroy", - "layer_destroy_instances", - "layer_element_move", - "layer_enable_fx", - "layer_exists", - "layer_force_draw_depth", - "layer_fx_is_enabled", - "layer_get_all", - "layer_get_all_elements", - "layer_get_depth", - "layer_get_element_layer", - "layer_get_element_type", - "layer_get_forced_depth", - "layer_get_fx", - "layer_get_hspeed", - "layer_get_id", - "layer_get_id_at_depth", - "layer_get_name", - "layer_get_script_begin", - "layer_get_script_end", - "layer_get_shader", - "layer_get_target_room", - "layer_get_visible", - "layer_get_vspeed", - "layer_get_x", - "layer_get_y", - "layer_has_instance", - "layer_hspeed", - "layer_instance_get_instance", - "layer_is_draw_depth_forced", - "layer_reset_target_room", - "layer_script_begin", - "layer_script_end", - "layer_sequence_angle", - "layer_sequence_create", - "layer_sequence_destroy", - "layer_sequence_exists", - "layer_sequence_get_angle", - "layer_sequence_get_headdir", - "layer_sequence_get_headpos", - "layer_sequence_get_instance", - "layer_sequence_get_length", - "layer_sequence_get_sequence", - "layer_sequence_get_speedscale", - "layer_sequence_get_x", - "layer_sequence_get_xscale", - "layer_sequence_get_y", - "layer_sequence_get_yscale", - "layer_sequence_headdir", - "layer_sequence_headpos", - "layer_sequence_is_finished", - "layer_sequence_is_paused", - "layer_sequence_pause", - "layer_sequence_play", - "layer_sequence_speedscale", - "layer_sequence_x", - "layer_sequence_xscale", - "layer_sequence_y", - "layer_sequence_yscale", - "layer_set_fx", - "layer_set_target_room", - "layer_set_visible", - "layer_shader", - "layer_sprite_alpha", - "layer_sprite_angle", - "layer_sprite_blend", - "layer_sprite_change", - "layer_sprite_create", - "layer_sprite_destroy", - "layer_sprite_exists", - "layer_sprite_get_alpha", - "layer_sprite_get_angle", - "layer_sprite_get_blend", - "layer_sprite_get_id", - "layer_sprite_get_index", - "layer_sprite_get_speed", - "layer_sprite_get_sprite", - "layer_sprite_get_x", - "layer_sprite_get_xscale", - "layer_sprite_get_y", - "layer_sprite_get_yscale", - "layer_sprite_index", - "layer_sprite_speed", - "layer_sprite_x", - "layer_sprite_xscale", - "layer_sprite_y", - "layer_sprite_yscale", - "layer_tile_alpha", - "layer_tile_blend", - "layer_tile_change", - "layer_tile_create", - "layer_tile_destroy", - "layer_tile_exists", - "layer_tile_get_alpha", - "layer_tile_get_blend", - "layer_tile_get_region", - "layer_tile_get_sprite", - "layer_tile_get_visible", - "layer_tile_get_x", - "layer_tile_get_xscale", - "layer_tile_get_y", - "layer_tile_get_yscale", - "layer_tile_region", - "layer_tile_visible", - "layer_tile_x", - "layer_tile_xscale", - "layer_tile_y", - "layer_tile_yscale", - "layer_tilemap_create", - "layer_tilemap_destroy", - "layer_tilemap_exists", - "layer_tilemap_get_id", - "layer_vspeed", - "layer_x", - "layer_y", - "lengthdir_x", - "lengthdir_y", - "lerp", - "lin_to_db", - "ln", - "load_csv", - "log10", - "log2", - "logn", - "make_color_hsv", - "make_color_rgb", - "make_colour_hsv", - "make_colour_rgb", - "math_get_epsilon", - "math_set_epsilon", - "matrix_build", - "matrix_build_identity", - "matrix_build_lookat", - "matrix_build_projection_ortho", - "matrix_build_projection_perspective", - "matrix_build_projection_perspective_fov", - "matrix_get", - "matrix_multiply", - "matrix_set", - "matrix_stack_clear", - "matrix_stack_is_empty", - "matrix_stack_pop", - "matrix_stack_push", - "matrix_stack_set", - "matrix_stack_top", - "matrix_transform_vertex", - "max", - "md5_file", - "md5_string_unicode", - "md5_string_utf8", - "mean", - "median", - "merge_color", - "merge_colour", - "method", - "method_call", - "method_get_index", - "method_get_self", - "min", - "motion_add", - "motion_set", - "mouse_check_button", - "mouse_check_button_pressed", - "mouse_check_button_released", - "mouse_clear", - "mouse_wheel_down", - "mouse_wheel_up", - "move_and_collide", - "move_bounce_all", - "move_bounce_solid", - "move_contact_all", - "move_contact_solid", - "move_outside_all", - "move_outside_solid", - "move_random", - "move_snap", - "move_towards_point", - "move_wrap", - "mp_grid_add_cell", - "mp_grid_add_instances", - "mp_grid_add_rectangle", - "mp_grid_clear_all", - "mp_grid_clear_cell", - "mp_grid_clear_rectangle", - "mp_grid_create", - "mp_grid_destroy", - "mp_grid_draw", - "mp_grid_get_cell", - "mp_grid_path", - "mp_grid_to_ds_grid", - "mp_linear_path", - "mp_linear_path_object", - "mp_linear_step", - "mp_linear_step_object", - "mp_potential_path", - "mp_potential_path_object", - "mp_potential_settings", - "mp_potential_step", - "mp_potential_step_object", - "nameof", - "network_connect", - "network_connect_async", - "network_connect_raw", - "network_connect_raw_async", - "network_create_server", - "network_create_server_raw", - "network_create_socket", - "network_create_socket_ext", - "network_destroy", - "network_resolve", - "network_send_broadcast", - "network_send_packet", - "network_send_raw", - "network_send_udp", - "network_send_udp_raw", - "network_set_config", - "network_set_timeout", - "object_exists", - "object_get_mask", - "object_get_name", - "object_get_parent", - "object_get_persistent", - "object_get_physics", - "object_get_solid", - "object_get_sprite", - "object_get_visible", - "object_is_ancestor", - "object_set_mask", - "object_set_persistent", - "object_set_solid", - "object_set_sprite", - "object_set_visible", - "ord", - "os_check_permission", - "os_get_config", - "os_get_info", - "os_get_language", - "os_get_region", - "os_is_network_connected", - "os_is_paused", - "os_lock_orientation", - "os_powersave_enable", - "os_request_permission", - "os_set_orientation_lock", - "parameter_count", - "parameter_string", - "part_emitter_burst", - "part_emitter_clear", - "part_emitter_create", - "part_emitter_delay", - "part_emitter_destroy", - "part_emitter_destroy_all", - "part_emitter_enable", - "part_emitter_exists", - "part_emitter_interval", - "part_emitter_region", - "part_emitter_relative", - "part_emitter_stream", - "part_particles_burst", - "part_particles_clear", - "part_particles_count", - "part_particles_create", - "part_particles_create_color", - "part_particles_create_colour", - "part_system_angle", - "part_system_automatic_draw", - "part_system_automatic_update", - "part_system_clear", - "part_system_color", - "part_system_colour", - "part_system_create", - "part_system_create_layer", - "part_system_depth", - "part_system_destroy", - "part_system_draw_order", - "part_system_drawit", - "part_system_exists", - "part_system_get_info", - "part_system_get_layer", - "part_system_global_space", - "part_system_layer", - "part_system_position", - "part_system_update", - "part_type_alpha1", - "part_type_alpha2", - "part_type_alpha3", - "part_type_blend", - "part_type_clear", - "part_type_color1", - "part_type_color2", - "part_type_color3", - "part_type_color_hsv", - "part_type_color_mix", - "part_type_color_rgb", - "part_type_colour1", - "part_type_colour2", - "part_type_colour3", - "part_type_colour_hsv", - "part_type_colour_mix", - "part_type_colour_rgb", - "part_type_create", - "part_type_death", - "part_type_destroy", - "part_type_direction", - "part_type_exists", - "part_type_gravity", - "part_type_life", - "part_type_orientation", - "part_type_scale", - "part_type_shape", - "part_type_size", - "part_type_size_x", - "part_type_size_y", - "part_type_speed", - "part_type_sprite", - "part_type_step", - "part_type_subimage", - "particle_exists", - "particle_get_info", - "path_add", - "path_add_point", - "path_append", - "path_assign", - "path_change_point", - "path_clear_points", - "path_delete", - "path_delete_point", - "path_duplicate", - "path_end", - "path_exists", - "path_flip", - "path_get_closed", - "path_get_kind", - "path_get_length", - "path_get_name", - "path_get_number", - "path_get_point_speed", - "path_get_point_x", - "path_get_point_y", - "path_get_precision", - "path_get_speed", - "path_get_x", - "path_get_y", - "path_insert_point", - "path_mirror", - "path_rescale", - "path_reverse", - "path_rotate", - "path_set_closed", - "path_set_kind", - "path_set_precision", - "path_shift", - "path_start", - "physics_apply_angular_impulse", - "physics_apply_force", - "physics_apply_impulse", - "physics_apply_local_force", - "physics_apply_local_impulse", - "physics_apply_torque", - "physics_draw_debug", - "physics_fixture_add_point", - "physics_fixture_bind", - "physics_fixture_bind_ext", - "physics_fixture_create", - "physics_fixture_delete", - "physics_fixture_set_angular_damping", - "physics_fixture_set_awake", - "physics_fixture_set_box_shape", - "physics_fixture_set_chain_shape", - "physics_fixture_set_circle_shape", - "physics_fixture_set_collision_group", - "physics_fixture_set_density", - "physics_fixture_set_edge_shape", - "physics_fixture_set_friction", - "physics_fixture_set_kinematic", - "physics_fixture_set_linear_damping", - "physics_fixture_set_polygon_shape", - "physics_fixture_set_restitution", - "physics_fixture_set_sensor", - "physics_get_density", - "physics_get_friction", - "physics_get_restitution", - "physics_joint_delete", - "physics_joint_distance_create", - "physics_joint_enable_motor", - "physics_joint_friction_create", - "physics_joint_gear_create", - "physics_joint_get_value", - "physics_joint_prismatic_create", - "physics_joint_pulley_create", - "physics_joint_revolute_create", - "physics_joint_rope_create", - "physics_joint_set_value", - "physics_joint_weld_create", - "physics_joint_wheel_create", - "physics_mass_properties", - "physics_particle_count", - "physics_particle_create", - "physics_particle_delete", - "physics_particle_delete_region_box", - "physics_particle_delete_region_circle", - "physics_particle_delete_region_poly", - "physics_particle_draw", - "physics_particle_draw_ext", - "physics_particle_get_damping", - "physics_particle_get_data", - "physics_particle_get_data_particle", - "physics_particle_get_density", - "physics_particle_get_gravity_scale", - "physics_particle_get_group_flags", - "physics_particle_get_max_count", - "physics_particle_get_radius", - "physics_particle_group_add_point", - "physics_particle_group_begin", - "physics_particle_group_box", - "physics_particle_group_circle", - "physics_particle_group_count", - "physics_particle_group_delete", - "physics_particle_group_end", - "physics_particle_group_get_ang_vel", - "physics_particle_group_get_angle", - "physics_particle_group_get_centre_x", - "physics_particle_group_get_centre_y", - "physics_particle_group_get_data", - "physics_particle_group_get_inertia", - "physics_particle_group_get_mass", - "physics_particle_group_get_vel_x", - "physics_particle_group_get_vel_y", - "physics_particle_group_get_x", - "physics_particle_group_get_y", - "physics_particle_group_join", - "physics_particle_group_polygon", - "physics_particle_set_category_flags", - "physics_particle_set_damping", - "physics_particle_set_density", - "physics_particle_set_flags", - "physics_particle_set_gravity_scale", - "physics_particle_set_group_flags", - "physics_particle_set_max_count", - "physics_particle_set_radius", - "physics_pause_enable", - "physics_remove_fixture", - "physics_set_density", - "physics_set_friction", - "physics_set_restitution", - "physics_test_overlap", - "physics_world_create", - "physics_world_draw_debug", - "physics_world_gravity", - "physics_world_update_iterations", - "physics_world_update_speed", - "place_empty", - "place_free", - "place_meeting", - "place_snapped", - "point_direction", - "point_distance", - "point_distance_3d", - "point_in_circle", - "point_in_rectangle", - "point_in_triangle", - "position_change", - "position_destroy", - "position_empty", - "position_meeting", - "power", - "ptr", - "radtodeg", - "random", - "random_get_seed", - "random_range", - "random_set_seed", - "randomise", - "randomize", - "real", - "rectangle_in_circle", - "rectangle_in_rectangle", - "rectangle_in_triangle", - "ref_create", - "rollback_chat", - "rollback_create_game", - "rollback_define_extra_network_latency", - "rollback_define_input", - "rollback_define_input_frame_delay", - "rollback_define_mock_input", - "rollback_define_player", - "rollback_display_events", - "rollback_get_info", - "rollback_get_input", - "rollback_get_player_prefs", - "rollback_join_game", - "rollback_leave_game", - "rollback_set_player_prefs", - "rollback_start_game", - "rollback_sync_on_frame", - "rollback_use_late_join", - "rollback_use_manual_start", - "rollback_use_player_prefs", - "rollback_use_random_input", - "room_add", - "room_assign", - "room_duplicate", - "room_exists", - "room_get_camera", - "room_get_info", - "room_get_name", - "room_get_viewport", - "room_goto", - "room_goto_next", - "room_goto_previous", - "room_instance_add", - "room_instance_clear", - "room_next", - "room_previous", - "room_restart", - "room_set_camera", - "room_set_height", - "room_set_persistent", - "room_set_view_enabled", - "room_set_viewport", - "room_set_width", - "round", - "scheduler_resolution_get", - "scheduler_resolution_set", - "screen_save", - "screen_save_part", - "script_execute", - "script_execute_ext", - "script_exists", - "script_get_name", - "sequence_create", - "sequence_destroy", - "sequence_exists", - "sequence_get", - "sequence_get_objects", - "sequence_instance_override_object", - "sequence_keyframe_new", - "sequence_keyframedata_new", - "sequence_track_new", - "sha1_file", - "sha1_string_unicode", - "sha1_string_utf8", - "shader_current", - "shader_enable_corner_id", - "shader_get_name", - "shader_get_sampler_index", - "shader_get_uniform", - "shader_is_compiled", - "shader_reset", - "shader_set", - "shader_set_uniform_f", - "shader_set_uniform_f_array", - "shader_set_uniform_f_buffer", - "shader_set_uniform_i", - "shader_set_uniform_i_array", - "shader_set_uniform_matrix", - "shader_set_uniform_matrix_array", - "shaders_are_supported", - "shop_leave_rating", - "show_debug_message", - "show_debug_message_ext", - "show_debug_overlay", - "show_error", - "show_message", - "show_message_async", - "show_question", - "show_question_async", - "sign", - "sin", - "skeleton_animation_clear", - "skeleton_animation_get", - "skeleton_animation_get_duration", - "skeleton_animation_get_event_frames", - "skeleton_animation_get_ext", - "skeleton_animation_get_frame", - "skeleton_animation_get_frames", - "skeleton_animation_get_position", - "skeleton_animation_is_finished", - "skeleton_animation_is_looping", - "skeleton_animation_list", - "skeleton_animation_mix", - "skeleton_animation_set", - "skeleton_animation_set_ext", - "skeleton_animation_set_frame", - "skeleton_animation_set_position", - "skeleton_attachment_create", - "skeleton_attachment_create_color", - "skeleton_attachment_create_colour", - "skeleton_attachment_destroy", - "skeleton_attachment_exists", - "skeleton_attachment_get", - "skeleton_attachment_replace", - "skeleton_attachment_replace_color", - "skeleton_attachment_replace_colour", - "skeleton_attachment_set", - "skeleton_bone_data_get", - "skeleton_bone_data_set", - "skeleton_bone_list", - "skeleton_bone_state_get", - "skeleton_bone_state_set", - "skeleton_collision_draw_set", - "skeleton_find_slot", - "skeleton_get_bounds", - "skeleton_get_minmax", - "skeleton_get_num_bounds", - "skeleton_skin_create", - "skeleton_skin_get", - "skeleton_skin_list", - "skeleton_skin_set", - "skeleton_slot_alpha_get", - "skeleton_slot_color_get", - "skeleton_slot_color_set", - "skeleton_slot_colour_get", - "skeleton_slot_colour_set", - "skeleton_slot_data", - "skeleton_slot_data_instance", - "skeleton_slot_list", - "sprite_add", - "sprite_add_ext", - "sprite_add_from_surface", - "sprite_assign", - "sprite_collision_mask", - "sprite_create_from_surface", - "sprite_delete", - "sprite_duplicate", - "sprite_exists", - "sprite_flush", - "sprite_flush_multi", - "sprite_get_bbox_bottom", - "sprite_get_bbox_left", - "sprite_get_bbox_mode", - "sprite_get_bbox_right", - "sprite_get_bbox_top", - "sprite_get_height", - "sprite_get_info", - "sprite_get_name", - "sprite_get_nineslice", - "sprite_get_number", - "sprite_get_speed", - "sprite_get_speed_type", - "sprite_get_texture", - "sprite_get_tpe", - "sprite_get_uvs", - "sprite_get_width", - "sprite_get_xoffset", - "sprite_get_yoffset", - "sprite_merge", - "sprite_nineslice_create", - "sprite_prefetch", - "sprite_prefetch_multi", - "sprite_replace", - "sprite_save", - "sprite_save_strip", - "sprite_set_alpha_from_sprite", - "sprite_set_bbox", - "sprite_set_bbox_mode", - "sprite_set_cache_size", - "sprite_set_cache_size_ext", - "sprite_set_nineslice", - "sprite_set_offset", - "sprite_set_speed", - "sqr", - "sqrt", - "static_get", - "static_set", - "string", - "string_byte_at", - "string_byte_length", - "string_char_at", - "string_concat", - "string_concat_ext", - "string_copy", - "string_count", - "string_delete", - "string_digits", - "string_ends_with", - "string_ext", - "string_foreach", - "string_format", - "string_hash_to_newline", - "string_height", - "string_height_ext", - "string_insert", - "string_join", - "string_join_ext", - "string_last_pos", - "string_last_pos_ext", - "string_length", - "string_letters", - "string_lettersdigits", - "string_lower", - "string_ord_at", - "string_pos", - "string_pos_ext", - "string_repeat", - "string_replace", - "string_replace_all", - "string_set_byte_at", - "string_split", - "string_split_ext", - "string_starts_with", - "string_trim", - "string_trim_end", - "string_trim_start", - "string_upper", - "string_width", - "string_width_ext", - "struct_exists", - "struct_foreach", - "struct_get", - "struct_get_from_hash", - "struct_get_names", - "struct_names_count", - "struct_remove", - "struct_set", - "struct_set_from_hash", - "surface_copy", - "surface_copy_part", - "surface_create", - "surface_create_ext", - "surface_depth_disable", - "surface_exists", - "surface_format_is_supported", - "surface_free", - "surface_get_depth_disable", - "surface_get_format", - "surface_get_height", - "surface_get_target", - "surface_get_target_ext", - "surface_get_texture", - "surface_get_width", - "surface_getpixel", - "surface_getpixel_ext", - "surface_reset_target", - "surface_resize", - "surface_save", - "surface_save_part", - "surface_set_target", - "surface_set_target_ext", - "tag_get_asset_ids", - "tag_get_assets", - "tan", - "texture_debug_messages", - "texture_flush", - "texture_get_height", - "texture_get_texel_height", - "texture_get_texel_width", - "texture_get_uvs", - "texture_get_width", - "texture_global_scale", - "texture_is_ready", - "texture_prefetch", - "texture_set_stage", - "texturegroup_get_fonts", - "texturegroup_get_names", - "texturegroup_get_sprites", - "texturegroup_get_status", - "texturegroup_get_textures", - "texturegroup_get_tilesets", - "texturegroup_load", - "texturegroup_set_mode", - "texturegroup_unload", - "tile_get_empty", - "tile_get_flip", - "tile_get_index", - "tile_get_mirror", - "tile_get_rotate", - "tile_set_empty", - "tile_set_flip", - "tile_set_index", - "tile_set_mirror", - "tile_set_rotate", - "tilemap_clear", - "tilemap_get", - "tilemap_get_at_pixel", - "tilemap_get_cell_x_at_pixel", - "tilemap_get_cell_y_at_pixel", - "tilemap_get_frame", - "tilemap_get_global_mask", - "tilemap_get_height", - "tilemap_get_mask", - "tilemap_get_tile_height", - "tilemap_get_tile_width", - "tilemap_get_tileset", - "tilemap_get_width", - "tilemap_get_x", - "tilemap_get_y", - "tilemap_set", - "tilemap_set_at_pixel", - "tilemap_set_global_mask", - "tilemap_set_height", - "tilemap_set_mask", - "tilemap_set_width", - "tilemap_tileset", - "tilemap_x", - "tilemap_y", - "tileset_get_info", - "tileset_get_name", - "tileset_get_texture", - "tileset_get_uvs", - "time_bpm_to_seconds", - "time_seconds_to_bpm", - "time_source_create", - "time_source_destroy", - "time_source_exists", - "time_source_get_children", - "time_source_get_parent", - "time_source_get_period", - "time_source_get_reps_completed", - "time_source_get_reps_remaining", - "time_source_get_state", - "time_source_get_time_remaining", - "time_source_get_units", - "time_source_pause", - "time_source_reconfigure", - "time_source_reset", - "time_source_resume", - "time_source_start", - "time_source_stop", - "timeline_add", - "timeline_clear", - "timeline_delete", - "timeline_exists", - "timeline_get_name", - "timeline_max_moment", - "timeline_moment_add_script", - "timeline_moment_clear", - "timeline_size", - "typeof", - "url_get_domain", - "url_open", - "url_open_ext", - "url_open_full", - "uwp_device_touchscreen_available", - "uwp_livetile_badge_clear", - "uwp_livetile_badge_notification", - "uwp_livetile_notification_begin", - "uwp_livetile_notification_end", - "uwp_livetile_notification_expiry", - "uwp_livetile_notification_image_add", - "uwp_livetile_notification_secondary_begin", - "uwp_livetile_notification_tag", - "uwp_livetile_notification_template_add", - "uwp_livetile_notification_text_add", - "uwp_livetile_queue_enable", - "uwp_livetile_tile_clear", - "uwp_secondarytile_badge_clear", - "uwp_secondarytile_badge_notification", - "uwp_secondarytile_delete", - "uwp_secondarytile_pin", - "uwp_secondarytile_tile_clear", - "variable_clone", - "variable_get_hash", - "variable_global_exists", - "variable_global_get", - "variable_global_set", - "variable_instance_exists", - "variable_instance_get", - "variable_instance_get_names", - "variable_instance_names_count", - "variable_instance_set", - "variable_struct_exists", - "variable_struct_get", - "variable_struct_get_names", - "variable_struct_names_count", - "variable_struct_remove", - "variable_struct_set", - "vertex_argb", - "vertex_begin", - "vertex_color", - "vertex_colour", - "vertex_create_buffer", - "vertex_create_buffer_ext", - "vertex_create_buffer_from_buffer", - "vertex_create_buffer_from_buffer_ext", - "vertex_delete_buffer", - "vertex_end", - "vertex_float1", - "vertex_float2", - "vertex_float3", - "vertex_float4", - "vertex_format_add_color", - "vertex_format_add_colour", - "vertex_format_add_custom", - "vertex_format_add_normal", - "vertex_format_add_position", - "vertex_format_add_position_3d", - "vertex_format_add_texcoord", - "vertex_format_begin", - "vertex_format_delete", - "vertex_format_end", - "vertex_format_get_info", - "vertex_freeze", - "vertex_get_buffer_size", - "vertex_get_number", - "vertex_normal", - "vertex_position", - "vertex_position_3d", - "vertex_submit", - "vertex_submit_ext", - "vertex_texcoord", - "vertex_ubyte4", - "vertex_update_buffer_from_buffer", - "vertex_update_buffer_from_vertex", - "video_close", - "video_draw", - "video_enable_loop", - "video_get_duration", - "video_get_format", - "video_get_position", - "video_get_status", - "video_get_volume", - "video_is_looping", - "video_open", - "video_pause", - "video_resume", - "video_seek_to", - "video_set_volume", - "view_get_camera", - "view_get_hport", - "view_get_surface_id", - "view_get_visible", - "view_get_wport", - "view_get_xport", - "view_get_yport", - "view_set_camera", - "view_set_hport", - "view_set_surface_id", - "view_set_visible", - "view_set_wport", - "view_set_xport", - "view_set_yport", - "virtual_key_add", - "virtual_key_delete", - "virtual_key_hide", - "virtual_key_show", - "wallpaper_set_config", - "wallpaper_set_subscriptions", - "weak_ref_alive", - "weak_ref_any_alive", - "weak_ref_create", - "window_center", - "window_device", - "window_enable_borderless_fullscreen", - "window_get_borderless_fullscreen", - "window_get_caption", - "window_get_color", - "window_get_colour", - "window_get_cursor", - "window_get_fullscreen", - "window_get_height", - "window_get_showborder", - "window_get_visible_rects", - "window_get_width", - "window_get_x", - "window_get_y", - "window_handle", - "window_has_focus", - "window_mouse_get_delta_x", - "window_mouse_get_delta_y", - "window_mouse_get_locked", - "window_mouse_get_x", - "window_mouse_get_y", - "window_mouse_set", - "window_mouse_set_locked", - "window_set_caption", - "window_set_color", - "window_set_colour", - "window_set_cursor", - "window_set_fullscreen", - "window_set_max_height", - "window_set_max_width", - "window_set_min_height", - "window_set_min_width", - "window_set_position", - "window_set_rectangle", - "window_set_showborder", - "window_set_size", - "window_view_mouse_get_x", - "window_view_mouse_get_y", - "window_views_mouse_get_x", - "window_views_mouse_get_y", - "winphone_tile_background_color", - "winphone_tile_background_colour", - "zip_add_file", - "zip_create", - "zip_save", - "zip_unzip", - "zip_unzip_async" - ]; - const SYMBOLS = [ - "AudioEffect", - "AudioEffectType", - "AudioLFOType", - "GM_build_date", - "GM_build_type", - "GM_is_sandboxed", - "GM_project_filename", - "GM_runtime_version", - "GM_version", - "NaN", - "_GMFILE_", - "_GMFUNCTION_", - "_GMLINE_", - "alignmentH", - "alignmentV", - "all", - "animcurvetype_bezier", - "animcurvetype_catmullrom", - "animcurvetype_linear", - "asset_animationcurve", - "asset_font", - "asset_object", - "asset_path", - "asset_room", - "asset_script", - "asset_sequence", - "asset_shader", - "asset_sound", - "asset_sprite", - "asset_tiles", - "asset_timeline", - "asset_unknown", - "audio_3D", - "audio_bus_main", - "audio_falloff_exponent_distance", - "audio_falloff_exponent_distance_clamped", - "audio_falloff_exponent_distance_scaled", - "audio_falloff_inverse_distance", - "audio_falloff_inverse_distance_clamped", - "audio_falloff_inverse_distance_scaled", - "audio_falloff_linear_distance", - "audio_falloff_linear_distance_clamped", - "audio_falloff_none", - "audio_mono", - "audio_stereo", - "bboxkind_diamond", - "bboxkind_ellipse", - "bboxkind_precise", - "bboxkind_rectangular", - "bboxmode_automatic", - "bboxmode_fullimage", - "bboxmode_manual", - "bm_add", - "bm_dest_alpha", - "bm_dest_color", - "bm_dest_colour", - "bm_inv_dest_alpha", - "bm_inv_dest_color", - "bm_inv_dest_colour", - "bm_inv_src_alpha", - "bm_inv_src_color", - "bm_inv_src_colour", - "bm_max", - "bm_normal", - "bm_one", - "bm_src_alpha", - "bm_src_alpha_sat", - "bm_src_color", - "bm_src_colour", - "bm_subtract", - "bm_zero", - "browser_chrome", - "browser_edge", - "browser_firefox", - "browser_ie", - "browser_ie_mobile", - "browser_not_a_browser", - "browser_opera", - "browser_safari", - "browser_safari_mobile", - "browser_tizen", - "browser_unknown", - "browser_windows_store", - "buffer_bool", - "buffer_f16", - "buffer_f32", - "buffer_f64", - "buffer_fast", - "buffer_fixed", - "buffer_grow", - "buffer_s16", - "buffer_s32", - "buffer_s8", - "buffer_seek_end", - "buffer_seek_relative", - "buffer_seek_start", - "buffer_string", - "buffer_text", - "buffer_u16", - "buffer_u32", - "buffer_u64", - "buffer_u8", - "buffer_vbuffer", - "buffer_wrap", - "c_aqua", - "c_black", - "c_blue", - "c_dkgray", - "c_dkgrey", - "c_fuchsia", - "c_gray", - "c_green", - "c_grey", - "c_lime", - "c_ltgray", - "c_ltgrey", - "c_maroon", - "c_navy", - "c_olive", - "c_orange", - "c_purple", - "c_red", - "c_silver", - "c_teal", - "c_white", - "c_yellow", - "cache_directory", - "characterSpacing", - "cmpfunc_always", - "cmpfunc_equal", - "cmpfunc_greater", - "cmpfunc_greaterequal", - "cmpfunc_less", - "cmpfunc_lessequal", - "cmpfunc_never", - "cmpfunc_notequal", - "coreColor", - "coreColour", - "cr_appstart", - "cr_arrow", - "cr_beam", - "cr_cross", - "cr_default", - "cr_drag", - "cr_handpoint", - "cr_hourglass", - "cr_none", - "cr_size_all", - "cr_size_nesw", - "cr_size_ns", - "cr_size_nwse", - "cr_size_we", - "cr_uparrow", - "cull_clockwise", - "cull_counterclockwise", - "cull_noculling", - "device_emulator", - "device_ios_ipad", - "device_ios_ipad_retina", - "device_ios_iphone", - "device_ios_iphone5", - "device_ios_iphone6", - "device_ios_iphone6plus", - "device_ios_iphone_retina", - "device_ios_unknown", - "device_tablet", - "display_landscape", - "display_landscape_flipped", - "display_portrait", - "display_portrait_flipped", - "dll_cdecl", - "dll_stdcall", - "dropShadowEnabled", - "dropShadowEnabled", - "ds_type_grid", - "ds_type_list", - "ds_type_map", - "ds_type_priority", - "ds_type_queue", - "ds_type_stack", - "ef_cloud", - "ef_ellipse", - "ef_explosion", - "ef_firework", - "ef_flare", - "ef_rain", - "ef_ring", - "ef_smoke", - "ef_smokeup", - "ef_snow", - "ef_spark", - "ef_star", - "effectsEnabled", - "effectsEnabled", - "ev_alarm", - "ev_animation_end", - "ev_animation_event", - "ev_animation_update", - "ev_async_audio_playback", - "ev_async_audio_playback_ended", - "ev_async_audio_recording", - "ev_async_dialog", - "ev_async_push_notification", - "ev_async_save_load", - "ev_async_save_load", - "ev_async_social", - "ev_async_system_event", - "ev_async_web", - "ev_async_web_cloud", - "ev_async_web_iap", - "ev_async_web_image_load", - "ev_async_web_networking", - "ev_async_web_steam", - "ev_audio_playback", - "ev_audio_playback_ended", - "ev_audio_recording", - "ev_boundary", - "ev_boundary_view0", - "ev_boundary_view1", - "ev_boundary_view2", - "ev_boundary_view3", - "ev_boundary_view4", - "ev_boundary_view5", - "ev_boundary_view6", - "ev_boundary_view7", - "ev_broadcast_message", - "ev_cleanup", - "ev_collision", - "ev_create", - "ev_destroy", - "ev_dialog_async", - "ev_draw", - "ev_draw_begin", - "ev_draw_end", - "ev_draw_normal", - "ev_draw_post", - "ev_draw_pre", - "ev_end_of_path", - "ev_game_end", - "ev_game_start", - "ev_gesture", - "ev_gesture_double_tap", - "ev_gesture_drag_end", - "ev_gesture_drag_start", - "ev_gesture_dragging", - "ev_gesture_flick", - "ev_gesture_pinch_end", - "ev_gesture_pinch_in", - "ev_gesture_pinch_out", - "ev_gesture_pinch_start", - "ev_gesture_rotate_end", - "ev_gesture_rotate_start", - "ev_gesture_rotating", - "ev_gesture_tap", - "ev_global_gesture_double_tap", - "ev_global_gesture_drag_end", - "ev_global_gesture_drag_start", - "ev_global_gesture_dragging", - "ev_global_gesture_flick", - "ev_global_gesture_pinch_end", - "ev_global_gesture_pinch_in", - "ev_global_gesture_pinch_out", - "ev_global_gesture_pinch_start", - "ev_global_gesture_rotate_end", - "ev_global_gesture_rotate_start", - "ev_global_gesture_rotating", - "ev_global_gesture_tap", - "ev_global_left_button", - "ev_global_left_press", - "ev_global_left_release", - "ev_global_middle_button", - "ev_global_middle_press", - "ev_global_middle_release", - "ev_global_right_button", - "ev_global_right_press", - "ev_global_right_release", - "ev_gui", - "ev_gui_begin", - "ev_gui_end", - "ev_joystick1_button1", - "ev_joystick1_button2", - "ev_joystick1_button3", - "ev_joystick1_button4", - "ev_joystick1_button5", - "ev_joystick1_button6", - "ev_joystick1_button7", - "ev_joystick1_button8", - "ev_joystick1_down", - "ev_joystick1_left", - "ev_joystick1_right", - "ev_joystick1_up", - "ev_joystick2_button1", - "ev_joystick2_button2", - "ev_joystick2_button3", - "ev_joystick2_button4", - "ev_joystick2_button5", - "ev_joystick2_button6", - "ev_joystick2_button7", - "ev_joystick2_button8", - "ev_joystick2_down", - "ev_joystick2_left", - "ev_joystick2_right", - "ev_joystick2_up", - "ev_keyboard", - "ev_keypress", - "ev_keyrelease", - "ev_left_button", - "ev_left_press", - "ev_left_release", - "ev_middle_button", - "ev_middle_press", - "ev_middle_release", - "ev_mouse", - "ev_mouse_enter", - "ev_mouse_leave", - "ev_mouse_wheel_down", - "ev_mouse_wheel_up", - "ev_no_button", - "ev_no_more_health", - "ev_no_more_lives", - "ev_other", - "ev_outside", - "ev_outside_view0", - "ev_outside_view1", - "ev_outside_view2", - "ev_outside_view3", - "ev_outside_view4", - "ev_outside_view5", - "ev_outside_view6", - "ev_outside_view7", - "ev_pre_create", - "ev_push_notification", - "ev_right_button", - "ev_right_press", - "ev_right_release", - "ev_room_end", - "ev_room_start", - "ev_social", - "ev_step", - "ev_step_begin", - "ev_step_end", - "ev_step_normal", - "ev_system_event", - "ev_trigger", - "ev_user0", - "ev_user1", - "ev_user10", - "ev_user11", - "ev_user12", - "ev_user13", - "ev_user14", - "ev_user15", - "ev_user2", - "ev_user3", - "ev_user4", - "ev_user5", - "ev_user6", - "ev_user7", - "ev_user8", - "ev_user9", - "ev_web_async", - "ev_web_cloud", - "ev_web_iap", - "ev_web_image_load", - "ev_web_networking", - "ev_web_sound_load", - "ev_web_steam", - "fa_archive", - "fa_bottom", - "fa_center", - "fa_directory", - "fa_hidden", - "fa_left", - "fa_middle", - "fa_none", - "fa_readonly", - "fa_right", - "fa_sysfile", - "fa_top", - "fa_volumeid", - "false", - "frameSizeX", - "frameSizeY", - "gamespeed_fps", - "gamespeed_microseconds", - "global", - "glowColor", - "glowColour", - "glowEnabled", - "glowEnabled", - "glowEnd", - "glowStart", - "gp_axis_acceleration_x", - "gp_axis_acceleration_y", - "gp_axis_acceleration_z", - "gp_axis_angular_velocity_x", - "gp_axis_angular_velocity_y", - "gp_axis_angular_velocity_z", - "gp_axis_orientation_w", - "gp_axis_orientation_x", - "gp_axis_orientation_y", - "gp_axis_orientation_z", - "gp_axislh", - "gp_axislv", - "gp_axisrh", - "gp_axisrv", - "gp_face1", - "gp_face2", - "gp_face3", - "gp_face4", - "gp_padd", - "gp_padl", - "gp_padr", - "gp_padu", - "gp_select", - "gp_shoulderl", - "gp_shoulderlb", - "gp_shoulderr", - "gp_shoulderrb", - "gp_start", - "gp_stickl", - "gp_stickr", - "iap_available", - "iap_canceled", - "iap_ev_consume", - "iap_ev_product", - "iap_ev_purchase", - "iap_ev_restore", - "iap_ev_storeload", - "iap_failed", - "iap_purchased", - "iap_refunded", - "iap_status_available", - "iap_status_loading", - "iap_status_processing", - "iap_status_restoring", - "iap_status_unavailable", - "iap_status_uninitialised", - "iap_storeload_failed", - "iap_storeload_ok", - "iap_unavailable", - "infinity", - "kbv_autocapitalize_characters", - "kbv_autocapitalize_none", - "kbv_autocapitalize_sentences", - "kbv_autocapitalize_words", - "kbv_returnkey_continue", - "kbv_returnkey_default", - "kbv_returnkey_done", - "kbv_returnkey_emergency", - "kbv_returnkey_go", - "kbv_returnkey_google", - "kbv_returnkey_join", - "kbv_returnkey_next", - "kbv_returnkey_route", - "kbv_returnkey_search", - "kbv_returnkey_send", - "kbv_returnkey_yahoo", - "kbv_type_ascii", - "kbv_type_default", - "kbv_type_email", - "kbv_type_numbers", - "kbv_type_phone", - "kbv_type_phone_name", - "kbv_type_url", - "layerelementtype_background", - "layerelementtype_instance", - "layerelementtype_oldtilemap", - "layerelementtype_particlesystem", - "layerelementtype_sequence", - "layerelementtype_sprite", - "layerelementtype_tile", - "layerelementtype_tilemap", - "layerelementtype_undefined", - "leaderboard_type_number", - "leaderboard_type_time_mins_secs", - "lighttype_dir", - "lighttype_point", - "lineSpacing", - "m_axisx", - "m_axisx_gui", - "m_axisy", - "m_axisy_gui", - "m_scroll_down", - "m_scroll_up", - "matrix_projection", - "matrix_view", - "matrix_world", - "mb_any", - "mb_left", - "mb_middle", - "mb_none", - "mb_right", - "mb_side1", - "mb_side2", - "mip_markedonly", - "mip_off", - "mip_on", - "network_config_avoid_time_wait", - "network_config_connect_timeout", - "network_config_disable_multicast", - "network_config_disable_reliable_udp", - "network_config_enable_multicast", - "network_config_enable_reliable_udp", - "network_config_use_non_blocking_socket", - "network_config_websocket_protocol", - "network_connect_active", - "network_connect_blocking", - "network_connect_nonblocking", - "network_connect_none", - "network_connect_passive", - "network_send_binary", - "network_send_text", - "network_socket_bluetooth", - "network_socket_tcp", - "network_socket_udp", - "network_socket_ws", - "network_socket_wss", - "network_type_connect", - "network_type_data", - "network_type_disconnect", - "network_type_down", - "network_type_non_blocking_connect", - "network_type_up", - "network_type_up_failed", - "nineslice_blank", - "nineslice_bottom", - "nineslice_center", - "nineslice_centre", - "nineslice_hide", - "nineslice_left", - "nineslice_mirror", - "nineslice_repeat", - "nineslice_right", - "nineslice_stretch", - "nineslice_top", - "noone", - "of_challenge_lose", - "of_challenge_tie", - "of_challenge_win", - "os_android", - "os_gdk", - "os_gxgames", - "os_ios", - "os_linux", - "os_macosx", - "os_operagx", - "os_permission_denied", - "os_permission_denied_dont_request", - "os_permission_granted", - "os_ps3", - "os_ps4", - "os_ps5", - "os_psvita", - "os_switch", - "os_tvos", - "os_unknown", - "os_uwp", - "os_win8native", - "os_windows", - "os_winphone", - "os_xboxone", - "os_xboxseriesxs", - "other", - "outlineColor", - "outlineColour", - "outlineDist", - "outlineEnabled", - "outlineEnabled", - "paragraphSpacing", - "path_action_continue", - "path_action_restart", - "path_action_reverse", - "path_action_stop", - "phy_debug_render_aabb", - "phy_debug_render_collision_pairs", - "phy_debug_render_coms", - "phy_debug_render_core_shapes", - "phy_debug_render_joints", - "phy_debug_render_obb", - "phy_debug_render_shapes", - "phy_joint_anchor_1_x", - "phy_joint_anchor_1_y", - "phy_joint_anchor_2_x", - "phy_joint_anchor_2_y", - "phy_joint_angle", - "phy_joint_angle_limits", - "phy_joint_damping_ratio", - "phy_joint_frequency", - "phy_joint_length_1", - "phy_joint_length_2", - "phy_joint_lower_angle_limit", - "phy_joint_max_force", - "phy_joint_max_length", - "phy_joint_max_motor_force", - "phy_joint_max_motor_torque", - "phy_joint_max_torque", - "phy_joint_motor_force", - "phy_joint_motor_speed", - "phy_joint_motor_torque", - "phy_joint_reaction_force_x", - "phy_joint_reaction_force_y", - "phy_joint_reaction_torque", - "phy_joint_speed", - "phy_joint_translation", - "phy_joint_upper_angle_limit", - "phy_particle_data_flag_category", - "phy_particle_data_flag_color", - "phy_particle_data_flag_colour", - "phy_particle_data_flag_position", - "phy_particle_data_flag_typeflags", - "phy_particle_data_flag_velocity", - "phy_particle_flag_colormixing", - "phy_particle_flag_colourmixing", - "phy_particle_flag_elastic", - "phy_particle_flag_powder", - "phy_particle_flag_spring", - "phy_particle_flag_tensile", - "phy_particle_flag_viscous", - "phy_particle_flag_wall", - "phy_particle_flag_water", - "phy_particle_flag_zombie", - "phy_particle_group_flag_rigid", - "phy_particle_group_flag_solid", - "pi", - "pointer_invalid", - "pointer_null", - "pr_linelist", - "pr_linestrip", - "pr_pointlist", - "pr_trianglefan", - "pr_trianglelist", - "pr_trianglestrip", - "ps_distr_gaussian", - "ps_distr_invgaussian", - "ps_distr_linear", - "ps_mode_burst", - "ps_mode_stream", - "ps_shape_diamond", - "ps_shape_ellipse", - "ps_shape_line", - "ps_shape_rectangle", - "pt_shape_circle", - "pt_shape_cloud", - "pt_shape_disk", - "pt_shape_explosion", - "pt_shape_flare", - "pt_shape_line", - "pt_shape_pixel", - "pt_shape_ring", - "pt_shape_smoke", - "pt_shape_snow", - "pt_shape_spark", - "pt_shape_sphere", - "pt_shape_square", - "pt_shape_star", - "rollback_chat_message", - "rollback_connect_error", - "rollback_connect_info", - "rollback_connected_to_peer", - "rollback_connection_rejected", - "rollback_disconnected_from_peer", - "rollback_end_game", - "rollback_game_full", - "rollback_game_info", - "rollback_game_interrupted", - "rollback_game_resumed", - "rollback_high_latency", - "rollback_player_prefs", - "rollback_protocol_rejected", - "rollback_synchronized_with_peer", - "rollback_synchronizing_with_peer", - "self", - "seqaudiokey_loop", - "seqaudiokey_oneshot", - "seqdir_left", - "seqdir_right", - "seqinterpolation_assign", - "seqinterpolation_lerp", - "seqplay_loop", - "seqplay_oneshot", - "seqplay_pingpong", - "seqtextkey_bottom", - "seqtextkey_center", - "seqtextkey_justify", - "seqtextkey_left", - "seqtextkey_middle", - "seqtextkey_right", - "seqtextkey_top", - "seqtracktype_audio", - "seqtracktype_bool", - "seqtracktype_clipmask", - "seqtracktype_clipmask_mask", - "seqtracktype_clipmask_subject", - "seqtracktype_color", - "seqtracktype_colour", - "seqtracktype_empty", - "seqtracktype_graphic", - "seqtracktype_group", - "seqtracktype_instance", - "seqtracktype_message", - "seqtracktype_moment", - "seqtracktype_particlesystem", - "seqtracktype_real", - "seqtracktype_sequence", - "seqtracktype_spriteframes", - "seqtracktype_string", - "seqtracktype_text", - "shadowColor", - "shadowColour", - "shadowOffsetX", - "shadowOffsetY", - "shadowSoftness", - "sprite_add_ext_error_cancelled", - "sprite_add_ext_error_decompressfailed", - "sprite_add_ext_error_loadfailed", - "sprite_add_ext_error_setupfailed", - "sprite_add_ext_error_spritenotfound", - "sprite_add_ext_error_unknown", - "spritespeed_framespergameframe", - "spritespeed_framespersecond", - "surface_r16float", - "surface_r32float", - "surface_r8unorm", - "surface_rg8unorm", - "surface_rgba16float", - "surface_rgba32float", - "surface_rgba4unorm", - "surface_rgba8unorm", - "texturegroup_status_fetched", - "texturegroup_status_loaded", - "texturegroup_status_loading", - "texturegroup_status_unloaded", - "tf_anisotropic", - "tf_linear", - "tf_point", - "thickness", - "tile_flip", - "tile_index_mask", - "tile_mirror", - "tile_rotate", - "time_source_expire_after", - "time_source_expire_nearest", - "time_source_game", - "time_source_global", - "time_source_state_active", - "time_source_state_initial", - "time_source_state_paused", - "time_source_state_stopped", - "time_source_units_frames", - "time_source_units_seconds", - "timezone_local", - "timezone_utc", - "tm_countvsyncs", - "tm_sleep", - "tm_systemtiming", - "true", - "ty_real", - "ty_string", - "undefined", - "vertex_type_color", - "vertex_type_colour", - "vertex_type_float1", - "vertex_type_float2", - "vertex_type_float3", - "vertex_type_float4", - "vertex_type_ubyte4", - "vertex_usage_binormal", - "vertex_usage_blendindices", - "vertex_usage_blendweight", - "vertex_usage_color", - "vertex_usage_colour", - "vertex_usage_depth", - "vertex_usage_fog", - "vertex_usage_normal", - "vertex_usage_position", - "vertex_usage_psize", - "vertex_usage_sample", - "vertex_usage_tangent", - "vertex_usage_texcoord", - "video_format_rgba", - "video_format_yuv", - "video_status_closed", - "video_status_paused", - "video_status_playing", - "video_status_preparing", - "vk_add", - "vk_alt", - "vk_anykey", - "vk_backspace", - "vk_control", - "vk_decimal", - "vk_delete", - "vk_divide", - "vk_down", - "vk_end", - "vk_enter", - "vk_escape", - "vk_f1", - "vk_f10", - "vk_f11", - "vk_f12", - "vk_f2", - "vk_f3", - "vk_f4", - "vk_f5", - "vk_f6", - "vk_f7", - "vk_f8", - "vk_f9", - "vk_home", - "vk_insert", - "vk_lalt", - "vk_lcontrol", - "vk_left", - "vk_lshift", - "vk_multiply", - "vk_nokey", - "vk_numpad0", - "vk_numpad1", - "vk_numpad2", - "vk_numpad3", - "vk_numpad4", - "vk_numpad5", - "vk_numpad6", - "vk_numpad7", - "vk_numpad8", - "vk_numpad9", - "vk_pagedown", - "vk_pageup", - "vk_pause", - "vk_printscreen", - "vk_ralt", - "vk_rcontrol", - "vk_return", - "vk_right", - "vk_rshift", - "vk_shift", - "vk_space", - "vk_subtract", - "vk_tab", - "vk_up", - "wallpaper_config", - "wallpaper_subscription_data", - "wrap" - ]; - const LANGUAGE_VARIABLES = [ - "alarm", - "application_surface", - "argument", - "argument0", - "argument1", - "argument2", - "argument3", - "argument4", - "argument5", - "argument6", - "argument7", - "argument8", - "argument9", - "argument10", - "argument11", - "argument12", - "argument13", - "argument14", - "argument15", - "argument_count", - "async_load", - "background_color", - "background_colour", - "background_showcolor", - "background_showcolour", - "bbox_bottom", - "bbox_left", - "bbox_right", - "bbox_top", - "browser_height", - "browser_width", - "colour?ColourTrack", - "current_day", - "current_hour", - "current_minute", - "current_month", - "current_second", - "current_time", - "current_weekday", - "current_year", - "cursor_sprite", - "debug_mode", - "delta_time", - "depth", - "direction", - "display_aa", - "drawn_by_sequence", - "event_action", - "event_data", - "event_number", - "event_object", - "event_type", - "font_texture_page_size", - "fps", - "fps_real", - "friction", - "game_display_name", - "game_id", - "game_project_name", - "game_save_id", - "gravity", - "gravity_direction", - "health", - "hspeed", - "iap_data", - "id", - "image_alpha", - "image_angle", - "image_blend", - "image_index", - "image_number", - "image_speed", - "image_xscale", - "image_yscale", - "in_collision_tree", - "in_sequence", - "instance_count", - "instance_id", - "keyboard_key", - "keyboard_lastchar", - "keyboard_lastkey", - "keyboard_string", - "layer", - "lives", - "longMessage", - "managed", - "mask_index", - "message", - "mouse_button", - "mouse_lastbutton", - "mouse_x", - "mouse_y", - "object_index", - "os_browser", - "os_device", - "os_type", - "os_version", - "path_endaction", - "path_index", - "path_orientation", - "path_position", - "path_positionprevious", - "path_scale", - "path_speed", - "persistent", - "phy_active", - "phy_angular_damping", - "phy_angular_velocity", - "phy_bullet", - "phy_col_normal_x", - "phy_col_normal_y", - "phy_collision_points", - "phy_collision_x", - "phy_collision_y", - "phy_com_x", - "phy_com_y", - "phy_dynamic", - "phy_fixed_rotation", - "phy_inertia", - "phy_kinematic", - "phy_linear_damping", - "phy_linear_velocity_x", - "phy_linear_velocity_y", - "phy_mass", - "phy_position_x", - "phy_position_xprevious", - "phy_position_y", - "phy_position_yprevious", - "phy_rotation", - "phy_sleeping", - "phy_speed", - "phy_speed_x", - "phy_speed_y", - "player_avatar_sprite", - "player_avatar_url", - "player_id", - "player_local", - "player_type", - "player_user_id", - "program_directory", - "rollback_api_server", - "rollback_confirmed_frame", - "rollback_current_frame", - "rollback_event_id", - "rollback_event_param", - "rollback_game_running", - "room", - "room_first", - "room_height", - "room_last", - "room_persistent", - "room_speed", - "room_width", - "score", - "script", - "sequence_instance", - "solid", - "speed", - "sprite_height", - "sprite_index", - "sprite_width", - "sprite_xoffset", - "sprite_yoffset", - "stacktrace", - "temp_directory", - "timeline_index", - "timeline_loop", - "timeline_position", - "timeline_running", - "timeline_speed", - "view_camera", - "view_current", - "view_enabled", - "view_hport", - "view_surface_id", - "view_visible", - "view_wport", - "view_xport", - "view_yport", - "visible", - "vspeed", - "webgl_enabled", - "working_directory", - "x", - "xprevious", - "xstart", - "y", - "yprevious", - "ystart" - ]; - return { - name: 'GML', - case_insensitive: false, // language is case-insensitive - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS, - symbol: SYMBOLS, - "variable.language": LANGUAGE_VARIABLES - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = gml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/go.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/go.js ***! - \***********************************************************/ -(module) { - -/* -Language: Go -Author: Stephan Kountso aka StepLg -Contributors: Evgeny Stepanischev -Description: Google go language (golang). For info about language -Website: http://golang.org/ -Category: common, system -*/ - -function go(hljs) { - const LITERALS = [ - "true", - "false", - "iota", - "nil" - ]; - const BUILT_INS = [ - "append", - "cap", - "close", - "complex", - "copy", - "imag", - "len", - "make", - "new", - "panic", - "print", - "println", - "real", - "recover", - "delete" - ]; - const TYPES = [ - "bool", - "byte", - "complex64", - "complex128", - "error", - "float32", - "float64", - "int8", - "int16", - "int32", - "int64", - "string", - "uint8", - "uint16", - "uint32", - "uint64", - "int", - "uint", - "uintptr", - "rune" - ]; - const KWS = [ - "break", - "case", - "chan", - "const", - "continue", - "default", - "defer", - "else", - "fallthrough", - "for", - "func", - "go", - "goto", - "if", - "import", - "interface", - "map", - "package", - "range", - "return", - "select", - "struct", - "switch", - "type", - "var", - ]; - const KEYWORDS = { - keyword: KWS, - type: TYPES, - literal: LITERALS, - built_in: BUILT_INS - }; - return { - name: 'Go', - aliases: [ 'golang' ], - keywords: KEYWORDS, - illegal: ' -Description: a lightweight dynamic language for the JVM -Website: http://golo-lang.org/ -Category: system -*/ - -function golo(hljs) { - const KEYWORDS = [ - "println", - "readln", - "print", - "import", - "module", - "function", - "local", - "return", - "let", - "var", - "while", - "for", - "foreach", - "times", - "in", - "case", - "when", - "match", - "with", - "break", - "continue", - "augment", - "augmentation", - "each", - "find", - "filter", - "reduce", - "if", - "then", - "else", - "otherwise", - "try", - "catch", - "finally", - "raise", - "throw", - "orIfNull", - "DynamicObject|10", - "DynamicVariable", - "struct", - "Observable", - "map", - "set", - "vector", - "list", - "array" - ]; - - return { - name: 'Golo', - keywords: { - keyword: KEYWORDS, - literal: [ - "true", - "false", - "null" - ] - }, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - { - className: 'meta', - begin: '@[A-Za-z]+' - } - ] - }; -} - -module.exports = golo; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/gradle.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/gradle.js ***! - \***************************************************************/ -(module) { - -/* -Language: Gradle -Description: Gradle is an open-source build automation tool focused on flexibility and performance. -Website: https://gradle.org -Author: Damian Mee -Category: build-system -*/ - -function gradle(hljs) { - const KEYWORDS = [ - "task", - "project", - "allprojects", - "subprojects", - "artifacts", - "buildscript", - "configurations", - "dependencies", - "repositories", - "sourceSets", - "description", - "delete", - "from", - "into", - "include", - "exclude", - "source", - "classpath", - "destinationDir", - "includes", - "options", - "sourceCompatibility", - "targetCompatibility", - "group", - "flatDir", - "doLast", - "doFirst", - "flatten", - "todir", - "fromdir", - "ant", - "def", - "abstract", - "break", - "case", - "catch", - "continue", - "default", - "do", - "else", - "extends", - "final", - "finally", - "for", - "if", - "implements", - "instanceof", - "native", - "new", - "private", - "protected", - "public", - "return", - "static", - "switch", - "synchronized", - "throw", - "throws", - "transient", - "try", - "volatile", - "while", - "strictfp", - "package", - "import", - "false", - "null", - "super", - "this", - "true", - "antlrtask", - "checkstyle", - "codenarc", - "copy", - "boolean", - "byte", - "char", - "class", - "double", - "float", - "int", - "interface", - "long", - "short", - "void", - "compile", - "runTime", - "file", - "fileTree", - "abs", - "any", - "append", - "asList", - "asWritable", - "call", - "collect", - "compareTo", - "count", - "div", - "dump", - "each", - "eachByte", - "eachFile", - "eachLine", - "every", - "find", - "findAll", - "flatten", - "getAt", - "getErr", - "getIn", - "getOut", - "getText", - "grep", - "immutable", - "inject", - "inspect", - "intersect", - "invokeMethods", - "isCase", - "join", - "leftShift", - "minus", - "multiply", - "newInputStream", - "newOutputStream", - "newPrintWriter", - "newReader", - "newWriter", - "next", - "plus", - "pop", - "power", - "previous", - "print", - "println", - "push", - "putAt", - "read", - "readBytes", - "readLines", - "reverse", - "reverseEach", - "round", - "size", - "sort", - "splitEachLine", - "step", - "subMap", - "times", - "toInteger", - "toList", - "tokenize", - "upto", - "waitForOrKill", - "withPrintWriter", - "withReader", - "withStream", - "withWriter", - "withWriterAppend", - "write", - "writeLine" - ]; - return { - name: 'Gradle', - case_insensitive: true, - keywords: KEYWORDS, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - hljs.REGEXP_MODE - - ] - }; -} - -module.exports = gradle; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/graphql.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/graphql.js ***! - \****************************************************************/ -(module) { - -/* - Language: GraphQL - Author: John Foster (GH jf990), and others - Description: GraphQL is a query language for APIs - Category: web, common -*/ - -/** @type LanguageFn */ -function graphql(hljs) { - const regex = hljs.regex; - const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/; - return { - name: "GraphQL", - aliases: [ "gql" ], - case_insensitive: true, - disableAutodetect: false, - keywords: { - keyword: [ - "query", - "mutation", - "subscription", - "type", - "input", - "schema", - "directive", - "interface", - "union", - "scalar", - "fragment", - "enum", - "on" - ], - literal: [ - "true", - "false", - "null" - ] - }, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - { - scope: "punctuation", - match: /[.]{3}/, - relevance: 0 - }, - { - scope: "punctuation", - begin: /[\!\(\)\:\=\[\]\{\|\}]{1}/, - relevance: 0 - }, - { - scope: "variable", - begin: /\$/, - end: /\W/, - excludeEnd: true, - relevance: 0 - }, - { - scope: "meta", - match: /@\w+/, - excludeEnd: true - }, - { - scope: "symbol", - begin: regex.concat(GQL_NAME, regex.lookahead(/\s*:/)), - relevance: 0 - } - ], - illegal: [ - /[;<']/, - /BEGIN/ - ] - }; -} - -module.exports = graphql; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/groovy.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/groovy.js ***! - \***************************************************************/ -(module) { - -/* - Language: Groovy - Author: Guillaume Laforge - Description: Groovy programming language implementation inspired from Vsevolod's Java mode - Website: https://groovy-lang.org - Category: system - */ - -function variants(variants, obj = {}) { - obj.variants = variants; - return obj; -} - -function groovy(hljs) { - const regex = hljs.regex; - const IDENT_RE = '[A-Za-z0-9_$]+'; - const COMMENT = variants([ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.COMMENT( - '/\\*\\*', - '\\*/', - { - relevance: 0, - contains: [ - { - // eat up @'s in emails to prevent them to be recognized as doctags - begin: /\w+@/, - relevance: 0 - }, - { - className: 'doctag', - begin: '@[A-Za-z]+' - } - ] - } - ) - ]); - const REGEXP = { - className: 'regexp', - begin: /~?\/[^\/\n]+\//, - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - const NUMBER = variants([ - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE - ]); - const STRING = variants([ - { - begin: /"""/, - end: /"""/ - }, - { - begin: /'''/, - end: /'''/ - }, - { - begin: "\\$/", - end: "/\\$", - relevance: 10 - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ], - { className: "string" } - ); - - const CLASS_DEFINITION = { - match: [ - /(class|interface|trait|enum|record|extends|implements)/, - /\s+/, - hljs.UNDERSCORE_IDENT_RE - ], - scope: { - 1: "keyword", - 3: "title.class", - } - }; - const TYPES = [ - "byte", - "short", - "char", - "int", - "long", - "boolean", - "float", - "double", - "void" - ]; - const KEYWORDS = [ - // groovy specific keywords - "def", - "as", - "in", - "assert", - "trait", - // common keywords with Java - "abstract", - "static", - "volatile", - "transient", - "public", - "private", - "protected", - "synchronized", - "final", - "class", - "interface", - "enum", - "if", - "else", - "for", - "while", - "switch", - "case", - "break", - "default", - "continue", - "throw", - "throws", - "try", - "catch", - "finally", - "implements", - "extends", - "new", - "import", - "package", - "return", - "instanceof", - "var" - ]; - - return { - name: 'Groovy', - keywords: { - "variable.language": 'this super', - literal: 'true false null', - type: TYPES, - keyword: KEYWORDS - }, - contains: [ - hljs.SHEBANG({ - binary: "groovy", - relevance: 10 - }), - COMMENT, - STRING, - REGEXP, - NUMBER, - CLASS_DEFINITION, - { - className: 'meta', - begin: '@[A-Za-z]+', - relevance: 0 - }, - { - // highlight map keys and named parameters as attrs - className: 'attr', - begin: IDENT_RE + '[ \t]*:', - relevance: 0 - }, - { - // catch middle element of the ternary operator - // to avoid highlight it as a label, named parameter, or map key - begin: /\?/, - end: /:/, - relevance: 0, - contains: [ - COMMENT, - STRING, - REGEXP, - NUMBER, - 'self' - ] - }, - { - // highlight labeled statements - className: 'symbol', - begin: '^[ \t]*' + regex.lookahead(IDENT_RE + ':'), - excludeBegin: true, - end: IDENT_RE + ':', - relevance: 0 - } - ], - illegal: /#|<\// - }; -} - -module.exports = groovy; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/haml.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/haml.js ***! - \*************************************************************/ -(module) { - -/* -Language: HAML -Requires: ruby.js -Author: Dan Allen -Website: http://haml.info -Category: template -*/ - -// TODO support filter tags like :javascript, support inline HTML -function haml(hljs) { - return { - name: 'HAML', - case_insensitive: true, - contains: [ - { - className: 'meta', - begin: '^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$', - relevance: 10 - }, - // FIXME these comments should be allowed to span indented lines - hljs.COMMENT( - '^\\s*(!=#|=#|-#|/).*$', - null, - { relevance: 0 } - ), - { - begin: '^\\s*(-|=|!=)(?!#)', - end: /$/, - subLanguage: 'ruby', - excludeBegin: true, - excludeEnd: true - }, - { - className: 'tag', - begin: '^\\s*%', - contains: [ - { - className: 'selector-tag', - begin: '\\w+' - }, - { - className: 'selector-id', - begin: '#[\\w-]+' - }, - { - className: 'selector-class', - begin: '\\.[\\w-]+' - }, - { - begin: /\{\s*/, - end: /\s*\}/, - contains: [ - { - begin: ':\\w+\\s*=>', - end: ',\\s+', - returnBegin: true, - endsWithParent: true, - contains: [ - { - className: 'attr', - begin: ':\\w+' - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - begin: '\\w+', - relevance: 0 - } - ] - } - ] - }, - { - begin: '\\(\\s*', - end: '\\s*\\)', - excludeEnd: true, - contains: [ - { - begin: '\\w+\\s*=', - end: '\\s+', - returnBegin: true, - endsWithParent: true, - contains: [ - { - className: 'attr', - begin: '\\w+', - relevance: 0 - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - begin: '\\w+', - relevance: 0 - } - ] - } - ] - } - ] - }, - { begin: '^\\s*[=~]\\s*' }, - { - begin: /#\{/, - end: /\}/, - subLanguage: 'ruby', - excludeBegin: true, - excludeEnd: true - } - ] - }; -} - -module.exports = haml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/handlebars.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/handlebars.js ***! - \*******************************************************************/ -(module) { - -/* -Language: Handlebars -Requires: xml.js -Author: Robin Ward -Description: Matcher for Handlebars as well as EmberJS additions. -Website: https://handlebarsjs.com -Category: template -*/ - -function handlebars(hljs) { - const regex = hljs.regex; - const BUILT_INS = { - $pattern: /[\w.\/]+/, - built_in: [ - 'action', - 'bindattr', - 'collection', - 'component', - 'concat', - 'debugger', - 'each', - 'each-in', - 'get', - 'hash', - 'if', - 'in', - 'input', - 'link-to', - 'loc', - 'log', - 'lookup', - 'mut', - 'outlet', - 'partial', - 'query-params', - 'render', - 'template', - 'textarea', - 'unbound', - 'unless', - 'view', - 'with', - 'yield' - ] - }; - - const LITERALS = { - $pattern: /[\w.\/]+/, - literal: [ - 'true', - 'false', - 'undefined', - 'null' - ] - }; - - // as defined in https://handlebarsjs.com/guide/expressions.html#literal-segments - // this regex matches literal segments like ' abc ' or [ abc ] as well as helpers and paths - // like a/b, ./abc/cde, and abc.bcd - - const DOUBLE_QUOTED_ID_REGEX = /""|"[^"]+"/; - const SINGLE_QUOTED_ID_REGEX = /''|'[^']+'/; - const BRACKET_QUOTED_ID_REGEX = /\[\]|\[[^\]]+\]/; - const PLAIN_ID_REGEX = /[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/; - const PATH_DELIMITER_REGEX = /(\.|\/)/; - const ANY_ID = regex.either( - DOUBLE_QUOTED_ID_REGEX, - SINGLE_QUOTED_ID_REGEX, - BRACKET_QUOTED_ID_REGEX, - PLAIN_ID_REGEX - ); - - const IDENTIFIER_REGEX = regex.concat( - regex.optional(/\.|\.\/|\//), // relative or absolute path - ANY_ID, - regex.anyNumberOfTimes(regex.concat( - PATH_DELIMITER_REGEX, - ANY_ID - )) - ); - - // identifier followed by a equal-sign (without the equal sign) - const HASH_PARAM_REGEX = regex.concat( - '(', - BRACKET_QUOTED_ID_REGEX, '|', - PLAIN_ID_REGEX, - ')(?==)' - ); - - const HELPER_NAME_OR_PATH_EXPRESSION = { begin: IDENTIFIER_REGEX }; - - const HELPER_PARAMETER = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { keywords: LITERALS }); - - const SUB_EXPRESSION = { - begin: /\(/, - end: /\)/ - // the "contains" is added below when all necessary sub-modes are defined - }; - - const HASH = { - // fka "attribute-assignment", parameters of the form 'key=value' - className: 'attr', - begin: HASH_PARAM_REGEX, - relevance: 0, - starts: { - begin: /=/, - end: /=/, - starts: { contains: [ - hljs.NUMBER_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - HELPER_PARAMETER, - SUB_EXPRESSION - ] } - } - }; - - const BLOCK_PARAMS = { - // parameters of the form '{{#with x as | y |}}...{{/with}}' - begin: /as\s+\|/, - keywords: { keyword: 'as' }, - end: /\|/, - contains: [ - { - // define sub-mode in order to prevent highlighting of block-parameter named "as" - begin: /\w+/ } - ] - }; - - const HELPER_PARAMETERS = { - contains: [ - hljs.NUMBER_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - BLOCK_PARAMS, - HASH, - HELPER_PARAMETER, - SUB_EXPRESSION - ], - returnEnd: true - // the property "end" is defined through inheritance when the mode is used. If depends - // on the surrounding mode, but "endsWithParent" does not work here (i.e. it includes the - // end-token of the surrounding mode) - }; - - const SUB_EXPRESSION_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { - className: 'name', - keywords: BUILT_INS, - starts: hljs.inherit(HELPER_PARAMETERS, { end: /\)/ }) - }); - - SUB_EXPRESSION.contains = [ SUB_EXPRESSION_CONTENTS ]; - - const OPENING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { - keywords: BUILT_INS, - className: 'name', - starts: hljs.inherit(HELPER_PARAMETERS, { end: /\}\}/ }) - }); - - const CLOSING_BLOCK_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { - keywords: BUILT_INS, - className: 'name' - }); - - const BASIC_MUSTACHE_CONTENTS = hljs.inherit(HELPER_NAME_OR_PATH_EXPRESSION, { - className: 'name', - keywords: BUILT_INS, - starts: hljs.inherit(HELPER_PARAMETERS, { end: /\}\}/ }) - }); - - const ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH = { - begin: /\\\{\{/, - skip: true - }; - const PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH = { - begin: /\\\\(?=\{\{)/, - skip: true - }; - - return { - name: 'Handlebars', - aliases: [ - 'hbs', - 'html.hbs', - 'html.handlebars', - 'htmlbars' - ], - case_insensitive: true, - subLanguage: 'xml', - contains: [ - ESCAPE_MUSTACHE_WITH_PRECEEDING_BACKSLASH, - PREVENT_ESCAPE_WITH_ANOTHER_PRECEEDING_BACKSLASH, - hljs.COMMENT(/\{\{!--/, /--\}\}/), - hljs.COMMENT(/\{\{!/, /\}\}/), - { - // open raw block "{{{{raw}}}} content not evaluated {{{{/raw}}}}" - className: 'template-tag', - begin: /\{\{\{\{(?!\/)/, - end: /\}\}\}\}/, - contains: [ OPENING_BLOCK_MUSTACHE_CONTENTS ], - starts: { - end: /\{\{\{\{\//, - returnEnd: true, - subLanguage: 'xml' - } - }, - { - // close raw block - className: 'template-tag', - begin: /\{\{\{\{\//, - end: /\}\}\}\}/, - contains: [ CLOSING_BLOCK_MUSTACHE_CONTENTS ] - }, - { - // open block statement - className: 'template-tag', - begin: /\{\{#/, - end: /\}\}/, - contains: [ OPENING_BLOCK_MUSTACHE_CONTENTS ] - }, - { - className: 'template-tag', - begin: /\{\{(?=else\}\})/, - end: /\}\}/, - keywords: 'else' - }, - { - className: 'template-tag', - begin: /\{\{(?=else if)/, - end: /\}\}/, - keywords: 'else if' - }, - { - // closing block statement - className: 'template-tag', - begin: /\{\{\//, - end: /\}\}/, - contains: [ CLOSING_BLOCK_MUSTACHE_CONTENTS ] - }, - { - // template variable or helper-call that is NOT html-escaped - className: 'template-variable', - begin: /\{\{\{/, - end: /\}\}\}/, - contains: [ BASIC_MUSTACHE_CONTENTS ] - }, - { - // template variable or helper-call that is html-escaped - className: 'template-variable', - begin: /\{\{/, - end: /\}\}/, - contains: [ BASIC_MUSTACHE_CONTENTS ] - } - ] - }; -} - -module.exports = handlebars; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/haskell.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/haskell.js ***! - \****************************************************************/ -(module) { - -/* -Language: Haskell -Author: Jeremy Hull -Contributors: Zena Treep -Website: https://www.haskell.org -Category: functional -*/ - -function haskell(hljs) { - - /* See: - - https://www.haskell.org/onlinereport/lexemes.html - - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/binary_literals.html - - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/numeric_underscores.html - - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/hex_float_literals.html - */ - const decimalDigits = '([0-9]_*)+'; - const hexDigits = '([0-9a-fA-F]_*)+'; - const binaryDigits = '([01]_*)+'; - const octalDigits = '([0-7]_*)+'; - const ascSymbol = '[!#$%&*+.\\/<=>?@\\\\^~-]'; - const uniSymbol = '(\\p{S}|\\p{P})'; // Symbol or Punctuation - const special = '[(),;\\[\\]`|{}]'; - const symbol = `(${ascSymbol}|(?!(${special}|[_:"']))${uniSymbol})`; - - const COMMENT = { variants: [ - // Double dash forms a valid comment only if it's not part of legal lexeme. - // See: Haskell 98 report: https://www.haskell.org/onlinereport/lexemes.html - // - // The commented code does the job, but we can't use negative lookbehind, - // due to poor support by Safari browser. - // > hljs.COMMENT(`(?|<-' } - ] - }; -} - -module.exports = haskell; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/haxe.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/haxe.js ***! - \*************************************************************/ -(module) { - -/* -Language: Haxe -Description: Haxe is an open source toolkit based on a modern, high level, strictly typed programming language. -Author: Christopher Kaster (Based on the actionscript.js language file by Alexander Myadzel) -Contributors: Kenton Hamaluik -Website: https://haxe.org -Category: system -*/ - -function haxe(hljs) { - const IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*'; - - // C_NUMBER_RE with underscores and literal suffixes - const HAXE_NUMBER_RE = /(-?)(\b0[xX][a-fA-F0-9_]+|(\b\d+(\.[\d_]*)?|\.[\d_]+)(([eE][-+]?\d+)|i32|u32|i64|f64)?)/; - - const HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array '; - - return { - name: 'Haxe', - aliases: [ 'hx' ], - keywords: { - keyword: 'abstract break case cast catch continue default do dynamic else enum extern ' - + 'final for function here if import in inline is macro never new override package private get set ' - + 'public return static super switch this throw trace try typedef untyped using var while ' - + HAXE_BASIC_TYPES, - built_in: - 'trace this', - literal: - 'true false null _' - }, - contains: [ - { - className: 'string', // interpolate-able strings - begin: '\'', - end: '\'', - contains: [ - hljs.BACKSLASH_ESCAPE, - { - className: 'subst', // interpolation - begin: /\$\{/, - end: /\}/ - }, - { - className: 'subst', // interpolation - begin: /\$/, - end: /\W\}/ - } - ] - }, - hljs.QUOTE_STRING_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'number', - begin: HAXE_NUMBER_RE, - relevance: 0 - }, - { - className: 'variable', - begin: "\\$" + IDENT_RE, - }, - { - className: 'meta', // compiler meta - begin: /@:?/, - end: /\(|$/, - excludeEnd: true, - }, - { - className: 'meta', // compiler conditionals - begin: '#', - end: '$', - keywords: { keyword: 'if else elseif end error' } - }, - { - className: 'type', // function types - begin: /:[ \t]*/, - end: /[^A-Za-z0-9_ \t\->]/, - excludeBegin: true, - excludeEnd: true, - relevance: 0 - }, - { - className: 'type', // types - begin: /:[ \t]*/, - end: /\W/, - excludeBegin: true, - excludeEnd: true - }, - { - className: 'type', // instantiation - beginKeywords: 'new', - end: /\W/, - excludeBegin: true, - excludeEnd: true - }, - { - className: 'title.class', // enums - beginKeywords: 'enum', - end: /\{/, - contains: [ hljs.TITLE_MODE ] - }, - { - className: 'title.class', // abstracts - begin: '\\babstract\\b(?=\\s*' + hljs.IDENT_RE + '\\s*\\()', - end: /[\{$]/, - contains: [ - { - className: 'type', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true - }, - { - className: 'type', - begin: /from +/, - end: /\W/, - excludeBegin: true, - excludeEnd: true - }, - { - className: 'type', - begin: /to +/, - end: /\W/, - excludeBegin: true, - excludeEnd: true - }, - hljs.TITLE_MODE - ], - keywords: { keyword: 'abstract from to' } - }, - { - className: 'title.class', // classes - begin: /\b(class|interface) +/, - end: /[\{$]/, - excludeEnd: true, - keywords: 'class interface', - contains: [ - { - className: 'keyword', - begin: /\b(extends|implements) +/, - keywords: 'extends implements', - contains: [ - { - className: 'type', - begin: hljs.IDENT_RE, - relevance: 0 - } - ] - }, - hljs.TITLE_MODE - ] - }, - { - className: 'title.function', - beginKeywords: 'function', - end: /\(/, - excludeEnd: true, - illegal: /\S/, - contains: [ hljs.TITLE_MODE ] - } - ], - illegal: /<\// - }; -} - -module.exports = haxe; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/hsp.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/hsp.js ***! - \************************************************************/ -(module) { - -/* -Language: HSP -Author: prince -Website: https://en.wikipedia.org/wiki/Hot_Soup_Processor -Category: scripting -*/ - -function hsp(hljs) { - return { - name: 'HSP', - case_insensitive: true, - keywords: { - $pattern: /[\w._]+/, - keyword: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop' - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - - { - // multi-line string - className: 'string', - begin: /\{"/, - end: /"\}/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - - hljs.COMMENT(';', '$', { relevance: 0 }), - - { - // pre-processor - className: 'meta', - begin: '#', - end: '$', - keywords: { keyword: 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib' }, - contains: [ - hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }), - hljs.NUMBER_MODE, - hljs.C_NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - - { - // label - className: 'symbol', - begin: '^\\*(\\w+|@)' - }, - - hljs.NUMBER_MODE, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = hsp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/http.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/http.js ***! - \*************************************************************/ -(module) { - -/* -Language: HTTP -Description: HTTP request and response headers with automatic body highlighting -Author: Ivan Sagalaev -Category: protocols, web -Website: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview -*/ - -function http(hljs) { - const regex = hljs.regex; - const VERSION = 'HTTP/([32]|1\\.[01])'; - const HEADER_NAME = /[A-Za-z][A-Za-z0-9-]*/; - const HEADER = { - className: 'attribute', - begin: regex.concat('^', HEADER_NAME, '(?=\\:\\s)'), - starts: { contains: [ - { - className: "punctuation", - begin: /: /, - relevance: 0, - starts: { - end: '$', - relevance: 0 - } - } - ] } - }; - const HEADERS_AND_BODY = [ - HEADER, - { - begin: '\\n\\n', - starts: { - subLanguage: [], - endsWithParent: true - } - } - ]; - - return { - name: 'HTTP', - aliases: [ 'https' ], - illegal: /\S/, - contains: [ - // response - { - begin: '^(?=' + VERSION + " \\d{3})", - end: /$/, - contains: [ - { - className: "meta", - begin: VERSION - }, - { - className: 'number', - begin: '\\b\\d{3}\\b' - } - ], - starts: { - end: /\b\B/, - illegal: /\S/, - contains: HEADERS_AND_BODY - } - }, - // request - { - begin: '(?=^[A-Z]+ (.*?) ' + VERSION + '$)', - end: /$/, - contains: [ - { - className: 'string', - begin: ' ', - end: ' ', - excludeBegin: true, - excludeEnd: true - }, - { - className: "meta", - begin: VERSION - }, - { - className: 'keyword', - begin: '[A-Z]+' - } - ], - starts: { - end: /\b\B/, - illegal: /\S/, - contains: HEADERS_AND_BODY - } - }, - // to allow headers to work even without a preamble - hljs.inherit(HEADER, { relevance: 0 }) - ] - }; -} - -module.exports = http; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/hy.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/hy.js ***! - \***********************************************************/ -(module) { - -/* -Language: Hy -Description: Hy is a wonderful dialect of Lisp that’s embedded in Python. -Author: Sergey Sobko -Website: http://docs.hylang.org/en/stable/ -Category: lisp -*/ - -function hy(hljs) { - const SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&#\''; - const SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*'; - const keywords = { - $pattern: SYMBOL_RE, - built_in: - // keywords - '!= % %= & &= * ** **= *= *map ' - + '+ += , --build-class-- --import-- -= . / // //= ' - + '/= < << <<= <= = > >= >> >>= ' - + '@ @= ^ ^= abs accumulate all and any ap-compose ' - + 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' - + 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' - + 'callable calling-module-name car case cdr chain chr coll? combinations compile ' - + 'compress cond cons cons? continue count curry cut cycle dec ' - + 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' - + 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' - + 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' - + 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' - + 'flatten float? fn fnc fnr for for* format fraction genexpr ' - + 'gensym get getattr global globals group-by hasattr hash hex id ' - + 'identity if if* if-not if-python2 import in inc input instance? ' - + 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' - + 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' - + 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' - + 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' - + 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' - + 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' - + 'none? nonlocal not not-in not? nth numeric? oct odd? open ' - + 'or ord partition permutations pos? post-route postwalk pow prewalk print ' - + 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' - + 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' - + 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' - + 'string? sum switch symbol? take take-nth take-while tee try unless ' - + 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' - + 'xi xor yield yield-from zero? zip zip-longest | |= ~' - }; - - const SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?'; - - const SYMBOL = { - begin: SYMBOL_RE, - relevance: 0 - }; - const NUMBER = { - className: 'number', - begin: SIMPLE_NUMBER_RE, - relevance: 0 - }; - const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); - const COMMENT = hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ); - const LITERAL = { - className: 'literal', - begin: /\b([Tt]rue|[Ff]alse|nil|None)\b/ - }; - const COLLECTION = { - begin: '[\\[\\{]', - end: '[\\]\\}]', - relevance: 0 - }; - const HINT = { - className: 'comment', - begin: '\\^' + SYMBOL_RE - }; - const HINT_COL = hljs.COMMENT('\\^\\{', '\\}'); - const KEY = { - className: 'symbol', - begin: '[:]{1,2}' + SYMBOL_RE - }; - const LIST = { - begin: '\\(', - end: '\\)' - }; - const BODY = { - endsWithParent: true, - relevance: 0 - }; - const NAME = { - className: 'name', - relevance: 0, - keywords: keywords, - begin: SYMBOL_RE, - starts: BODY - }; - const DEFAULT_CONTAINS = [ - LIST, - STRING, - HINT, - HINT_COL, - COMMENT, - KEY, - COLLECTION, - NUMBER, - LITERAL, - SYMBOL - ]; - - LIST.contains = [ - hljs.COMMENT('comment', ''), - NAME, - BODY - ]; - BODY.contains = DEFAULT_CONTAINS; - COLLECTION.contains = DEFAULT_CONTAINS; - - return { - name: 'Hy', - aliases: [ 'hylang' ], - illegal: /\S/, - contains: [ - hljs.SHEBANG(), - LIST, - STRING, - HINT, - HINT_COL, - COMMENT, - KEY, - COLLECTION, - NUMBER, - LITERAL - ] - }; -} - -module.exports = hy; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/inform7.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/inform7.js ***! - \****************************************************************/ -(module) { - -/* -Language: Inform 7 -Author: Bruno Dias -Description: Language definition for Inform 7, a DSL for writing parser interactive fiction. -Website: http://inform7.com -Category: gaming -*/ - -function inform7(hljs) { - const START_BRACKET = '\\['; - const END_BRACKET = '\\]'; - return { - name: 'Inform 7', - aliases: [ 'i7' ], - case_insensitive: true, - keywords: { - // Some keywords more or less unique to I7, for relevance. - keyword: - // kind: - 'thing room person man woman animal container ' - + 'supporter backdrop door ' - // characteristic: - + 'scenery open closed locked inside gender ' - // verb: - + 'is are say understand ' - // misc keyword: - + 'kind of rule' }, - contains: [ - { - className: 'string', - begin: '"', - end: '"', - relevance: 0, - contains: [ - { - className: 'subst', - begin: START_BRACKET, - end: END_BRACKET - } - ] - }, - { - className: 'section', - begin: /^(Volume|Book|Part|Chapter|Section|Table)\b/, - end: '$' - }, - { - // Rule definition - // This is here for relevance. - begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/, - end: ':', - contains: [ - { - // Rule name - begin: '\\(This', - end: '\\)' - } - ] - }, - { - className: 'comment', - begin: START_BRACKET, - end: END_BRACKET, - contains: [ 'self' ] - } - ] - }; -} - -module.exports = inform7; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ini.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ini.js ***! - \************************************************************/ -(module) { - -/* -Language: TOML, also INI -Description: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. -Contributors: Guillaume Gomez -Category: common, config -Website: https://github.com/toml-lang/toml -*/ - -function ini(hljs) { - const regex = hljs.regex; - const NUMBERS = { - className: 'number', - relevance: 0, - variants: [ - { begin: /([+-]+)?[\d]+_[\d_]+/ }, - { begin: hljs.NUMBER_RE } - ] - }; - const COMMENTS = hljs.COMMENT(); - COMMENTS.variants = [ - { - begin: /;/, - end: /$/ - }, - { - begin: /#/, - end: /$/ - } - ]; - const VARIABLES = { - className: 'variable', - variants: [ - { begin: /\$[\w\d"][\w\d_]*/ }, - { begin: /\$\{(.*?)\}/ } - ] - }; - const LITERALS = { - className: 'literal', - begin: /\bon|off|true|false|yes|no\b/ - }; - const STRINGS = { - className: "string", - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - { - begin: "'''", - end: "'''", - relevance: 10 - }, - { - begin: '"""', - end: '"""', - relevance: 10 - }, - { - begin: '"', - end: '"' - }, - { - begin: "'", - end: "'" - } - ] - }; - const ARRAY = { - begin: /\[/, - end: /\]/, - contains: [ - COMMENTS, - LITERALS, - VARIABLES, - STRINGS, - NUMBERS, - 'self' - ], - relevance: 0 - }; - - const BARE_KEY = /[A-Za-z0-9_-]+/; - const QUOTED_KEY_DOUBLE_QUOTE = /"(\\"|[^"])*"/; - const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/; - const ANY_KEY = regex.either( - BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE - ); - const DOTTED_KEY = regex.concat( - ANY_KEY, '(\\s*\\.\\s*', ANY_KEY, ')*', - regex.lookahead(/\s*=\s*[^#\s]/) - ); - - return { - name: 'TOML, also INI', - aliases: [ 'toml' ], - case_insensitive: true, - illegal: /\S/, - contains: [ - COMMENTS, - { - className: 'section', - begin: /\[+/, - end: /\]+/ - }, - { - begin: DOTTED_KEY, - className: 'attr', - starts: { - end: /$/, - contains: [ - COMMENTS, - ARRAY, - LITERALS, - VARIABLES, - STRINGS, - NUMBERS - ] - } - } - ] - }; -} - -module.exports = ini; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/irpf90.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/irpf90.js ***! - \***************************************************************/ -(module) { - -/* -Language: IRPF90 -Author: Anthony Scemama -Description: IRPF90 is an open-source Fortran code generator -Website: http://irpf90.ups-tlse.fr -Category: scientific -*/ - -/** @type LanguageFn */ -function irpf90(hljs) { - const regex = hljs.regex; - const PARAMS = { - className: 'params', - begin: '\\(', - end: '\\)' - }; - - // regex in both fortran and irpf90 should match - const OPTIONAL_NUMBER_SUFFIX = /(_[a-z_\d]+)?/; - const OPTIONAL_NUMBER_EXP = /([de][+-]?\d+)?/; - const NUMBER = { - className: 'number', - variants: [ - { begin: regex.concat(/\b\d+/, /\.(\d*)/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, - { begin: regex.concat(/\b\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) }, - { begin: regex.concat(/\.\d+/, OPTIONAL_NUMBER_EXP, OPTIONAL_NUMBER_SUFFIX) } - ], - relevance: 0 - }; - - const F_KEYWORDS = { - literal: '.False. .True.', - keyword: 'kind do while private call intrinsic where elsewhere ' - + 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' - + 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' - + 'goto save else use module select case ' - + 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' - + 'continue format pause cycle exit ' - + 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' - + 'synchronous nopass non_overridable pass protected volatile abstract extends import ' - + 'non_intrinsic value deferred generic final enumerator class associate bind enum ' - + 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' - + 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' - + 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' - + 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' - + 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' - + 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' - + 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' - + 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' - + 'integer real character complex logical dimension allocatable|10 parameter ' - + 'external implicit|10 none double precision assign intent optional pointer ' - + 'target in out common equivalence data ' - // IRPF90 special keywords - + 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' - + 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read', - built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' - + 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' - + 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' - + 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' - + 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' - + 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' - + 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' - + 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' - + 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' - + 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' - + 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' - + 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' - + 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' - + 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of ' - + 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' - + 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' - + 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' - + 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' - // IRPF90 special built_ins - + 'IRP_ALIGN irp_here' - }; - return { - name: 'IRPF90', - case_insensitive: true, - keywords: F_KEYWORDS, - illegal: /\/\*/, - contains: [ - hljs.inherit(hljs.APOS_STRING_MODE, { - className: 'string', - relevance: 0 - }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { - className: 'string', - relevance: 0 - }), - { - className: 'function', - beginKeywords: 'subroutine function program', - illegal: '[${=\\n]', - contains: [ - hljs.UNDERSCORE_TITLE_MODE, - PARAMS - ] - }, - hljs.COMMENT('!', '$', { relevance: 0 }), - hljs.COMMENT('begin_doc', 'end_doc', { relevance: 10 }), - NUMBER - ] - }; -} - -module.exports = irpf90; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/isbl.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/isbl.js ***! - \*************************************************************/ -(module) { - -/* -Language: ISBL -Author: Dmitriy Tarasov -Description: built-in language DIRECTUM -Category: enterprise -*/ - -function isbl(hljs) { - // Определение идентификаторов - const UNDERSCORE_IDENT_RE = "[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*"; - - // Определение имен функций - const FUNCTION_NAME_IDENT_RE = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*"; - - // keyword : ключевые слова - const KEYWORD = - "and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока " - + "except exitfor finally foreach все if если in в not не or или try while пока "; - - // SYSRES Constants - const sysres_constants = - "SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT " - + "SYSRES_CONST_ACCES_RIGHT_TYPE_FULL " - + "SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW " - + "SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW " - + "SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_VIEW " - + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE " - + "SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE " - + "SYSRES_CONST_ACCESS_TYPE_CHANGE " - + "SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE " - + "SYSRES_CONST_ACCESS_TYPE_EXISTS " - + "SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE " - + "SYSRES_CONST_ACCESS_TYPE_FULL " - + "SYSRES_CONST_ACCESS_TYPE_FULL_CODE " - + "SYSRES_CONST_ACCESS_TYPE_VIEW " - + "SYSRES_CONST_ACCESS_TYPE_VIEW_CODE " - + "SYSRES_CONST_ACTION_TYPE_ABORT " - + "SYSRES_CONST_ACTION_TYPE_ACCEPT " - + "SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS " - + "SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT " - + "SYSRES_CONST_ACTION_TYPE_CHANGE_CARD " - + "SYSRES_CONST_ACTION_TYPE_CHANGE_KIND " - + "SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE " - + "SYSRES_CONST_ACTION_TYPE_CONTINUE " - + "SYSRES_CONST_ACTION_TYPE_COPY " - + "SYSRES_CONST_ACTION_TYPE_CREATE " - + "SYSRES_CONST_ACTION_TYPE_CREATE_VERSION " - + "SYSRES_CONST_ACTION_TYPE_DELETE " - + "SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT " - + "SYSRES_CONST_ACTION_TYPE_DELETE_VERSION " - + "SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS " - + "SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS " - + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE " - + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD " - + "SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD " - + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK " - + "SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK " - + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK " - + "SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK " - + "SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE " - + "SYSRES_CONST_ACTION_TYPE_LOCK " - + "SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER " - + "SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY " - + "SYSRES_CONST_ACTION_TYPE_MARK_AS_READED " - + "SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED " - + "SYSRES_CONST_ACTION_TYPE_MODIFY " - + "SYSRES_CONST_ACTION_TYPE_MODIFY_CARD " - + "SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE " - + "SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION " - + "SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE " - + "SYSRES_CONST_ACTION_TYPE_PERFORM " - + "SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY " - + "SYSRES_CONST_ACTION_TYPE_RESTART " - + "SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE " - + "SYSRES_CONST_ACTION_TYPE_REVISION " - + "SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL " - + "SYSRES_CONST_ACTION_TYPE_SIGN " - + "SYSRES_CONST_ACTION_TYPE_START " - + "SYSRES_CONST_ACTION_TYPE_UNLOCK " - + "SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER " - + "SYSRES_CONST_ACTION_TYPE_VERSION_STATE " - + "SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY " - + "SYSRES_CONST_ACTION_TYPE_VIEW " - + "SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY " - + "SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY " - + "SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY " - + "SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE " - + "SYSRES_CONST_ADD_REFERENCE_MODE_NAME " - + "SYSRES_CONST_ADDITION_REQUISITE_CODE " - + "SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE " - + "SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME " - + "SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME " - + "SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME " - + "SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE " - + "SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION " - + "SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS " - + "SYSRES_CONST_ALL_USERS_GROUP " - + "SYSRES_CONST_ALL_USERS_GROUP_NAME " - + "SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME " - + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE " - + "SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME " - + "SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_APPROVING_SIGNATURE_NAME " - + "SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE " - + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE " - + "SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE " - + "SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN " - + "SYSRES_CONST_ATTACH_TYPE_DOC " - + "SYSRES_CONST_ATTACH_TYPE_EDOC " - + "SYSRES_CONST_ATTACH_TYPE_FOLDER " - + "SYSRES_CONST_ATTACH_TYPE_JOB " - + "SYSRES_CONST_ATTACH_TYPE_REFERENCE " - + "SYSRES_CONST_ATTACH_TYPE_TASK " - + "SYSRES_CONST_AUTH_ENCODED_PASSWORD " - + "SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE " - + "SYSRES_CONST_AUTH_NOVELL " - + "SYSRES_CONST_AUTH_PASSWORD " - + "SYSRES_CONST_AUTH_PASSWORD_CODE " - + "SYSRES_CONST_AUTH_WINDOWS " - + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME " - + "SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE " - + "SYSRES_CONST_AUTO_ENUM_METHOD_FLAG " - + "SYSRES_CONST_AUTO_NUMERATION_CODE " - + "SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG " - + "SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE " - + "SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE " - + "SYSRES_CONST_AUTOTEXT_USAGE_ALL " - + "SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE " - + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN " - + "SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE " - + "SYSRES_CONST_AUTOTEXT_USAGE_WORK " - + "SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE " - + "SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE " - + "SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE " - + "SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE " - + "SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE " - + "SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_BTN_PART " - + "SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE " - + "SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE " - + "SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE " - + "SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT " - + "SYSRES_CONST_CARD_PART " - + "SYSRES_CONST_CARD_REFERENCE_MODE_NAME " - + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE " - + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE " - + "SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE " - + "SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE " - + "SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE " - + "SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE " - + "SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE " - + "SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE " - + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE " - + "SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT " - + "SYSRES_CONST_CODE_COMPONENT_TYPE_URL " - + "SYSRES_CONST_CODE_REQUISITE_ACCESS " - + "SYSRES_CONST_CODE_REQUISITE_CODE " - + "SYSRES_CONST_CODE_REQUISITE_COMPONENT " - + "SYSRES_CONST_CODE_REQUISITE_DESCRIPTION " - + "SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT " - + "SYSRES_CONST_CODE_REQUISITE_RECORD " - + "SYSRES_CONST_COMMENT_REQ_CODE " - + "SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE " - + "SYSRES_CONST_COMP_CODE_GRD " - + "SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS " - + "SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS " - + "SYSRES_CONST_COMPONENT_TYPE_DOCS " - + "SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS " - + "SYSRES_CONST_COMPONENT_TYPE_EDOCS " - + "SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE " - + "SYSRES_CONST_COMPONENT_TYPE_OTHER " - + "SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES " - + "SYSRES_CONST_COMPONENT_TYPE_REFERENCES " - + "SYSRES_CONST_COMPONENT_TYPE_REPORTS " - + "SYSRES_CONST_COMPONENT_TYPE_SCRIPTS " - + "SYSRES_CONST_COMPONENT_TYPE_URL " - + "SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE " - + "SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION " - + "SYSRES_CONST_CONST_FIRM_STATUS_COMMON " - + "SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL " - + "SYSRES_CONST_CONST_NEGATIVE_VALUE " - + "SYSRES_CONST_CONST_POSITIVE_VALUE " - + "SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE " - + "SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE " - + "SYSRES_CONST_CONTENTS_REQUISITE_CODE " - + "SYSRES_CONST_DATA_TYPE_BOOLEAN " - + "SYSRES_CONST_DATA_TYPE_DATE " - + "SYSRES_CONST_DATA_TYPE_FLOAT " - + "SYSRES_CONST_DATA_TYPE_INTEGER " - + "SYSRES_CONST_DATA_TYPE_PICK " - + "SYSRES_CONST_DATA_TYPE_REFERENCE " - + "SYSRES_CONST_DATA_TYPE_STRING " - + "SYSRES_CONST_DATA_TYPE_TEXT " - + "SYSRES_CONST_DATA_TYPE_VARIANT " - + "SYSRES_CONST_DATE_CLOSE_REQ_CODE " - + "SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR " - + "SYSRES_CONST_DATE_OPEN_REQ_CODE " - + "SYSRES_CONST_DATE_REQUISITE " - + "SYSRES_CONST_DATE_REQUISITE_CODE " - + "SYSRES_CONST_DATE_REQUISITE_NAME " - + "SYSRES_CONST_DATE_REQUISITE_TYPE " - + "SYSRES_CONST_DATE_TYPE_CHAR " - + "SYSRES_CONST_DATETIME_FORMAT_VALUE " - + "SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE " - + "SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE " - + "SYSRES_CONST_DESCRIPTION_REQUISITE_CODE " - + "SYSRES_CONST_DET1_PART " - + "SYSRES_CONST_DET2_PART " - + "SYSRES_CONST_DET3_PART " - + "SYSRES_CONST_DET4_PART " - + "SYSRES_CONST_DET5_PART " - + "SYSRES_CONST_DET6_PART " - + "SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE " - + "SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE " - + "SYSRES_CONST_DETAIL_REQ_CODE " - + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE " - + "SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME " - + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE " - + "SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME " - + "SYSRES_CONST_DOCUMENT_STORAGES_CODE " - + "SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME " - + "SYSRES_CONST_DOUBLE_REQUISITE_CODE " - + "SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE " - + "SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE " - + "SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE " - + "SYSRES_CONST_EDITORS_REFERENCE_CODE " - + "SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE " - + "SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE " - + "SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE " - + "SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE " - + "SYSRES_CONST_EDOC_DATE_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_KIND_REFERENCE_CODE " - + "SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE " - + "SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE " - + "SYSRES_CONST_EDOC_NONE_ENCODE_CODE " - + "SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE " - + "SYSRES_CONST_EDOC_READONLY_ACCESS_CODE " - + "SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE " - + "SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE " - + "SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE " - + "SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE " - + "SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE " - + "SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE " - + "SYSRES_CONST_EDOC_WRITE_ACCES_CODE " - + "SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " - + "SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE " - + "SYSRES_CONST_END_DATE_REQUISITE_CODE " - + "SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE " - + "SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE " - + "SYSRES_CONST_EXIST_CONST " - + "SYSRES_CONST_EXIST_VALUE " - + "SYSRES_CONST_EXPORT_LOCK_TYPE_ASK " - + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK " - + "SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK " - + "SYSRES_CONST_EXPORT_VERSION_TYPE_ASK " - + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST " - + "SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE " - + "SYSRES_CONST_EXTENSION_REQUISITE_CODE " - + "SYSRES_CONST_FILTER_NAME_REQUISITE_CODE " - + "SYSRES_CONST_FILTER_REQUISITE_CODE " - + "SYSRES_CONST_FILTER_TYPE_COMMON_CODE " - + "SYSRES_CONST_FILTER_TYPE_COMMON_NAME " - + "SYSRES_CONST_FILTER_TYPE_USER_CODE " - + "SYSRES_CONST_FILTER_TYPE_USER_NAME " - + "SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME " - + "SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR " - + "SYSRES_CONST_FLOAT_REQUISITE_TYPE " - + "SYSRES_CONST_FOLDER_AUTHOR_VALUE " - + "SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS " - + "SYSRES_CONST_FOLDER_KIND_COMPONENTS " - + "SYSRES_CONST_FOLDER_KIND_EDOCS " - + "SYSRES_CONST_FOLDER_KIND_JOBS " - + "SYSRES_CONST_FOLDER_KIND_TASKS " - + "SYSRES_CONST_FOLDER_TYPE_COMMON " - + "SYSRES_CONST_FOLDER_TYPE_COMPONENT " - + "SYSRES_CONST_FOLDER_TYPE_FAVORITES " - + "SYSRES_CONST_FOLDER_TYPE_INBOX " - + "SYSRES_CONST_FOLDER_TYPE_OUTBOX " - + "SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH " - + "SYSRES_CONST_FOLDER_TYPE_SEARCH " - + "SYSRES_CONST_FOLDER_TYPE_SHORTCUTS " - + "SYSRES_CONST_FOLDER_TYPE_USER " - + "SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG " - + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE " - + "SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE " - + "SYSRES_CONST_FUNCTION_CANCEL_RESULT " - + "SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM " - + "SYSRES_CONST_FUNCTION_CATEGORY_USER " - + "SYSRES_CONST_FUNCTION_FAILURE_RESULT " - + "SYSRES_CONST_FUNCTION_SAVE_RESULT " - + "SYSRES_CONST_GENERATED_REQUISITE " - + "SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE " - + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE " - + "SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME " - + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE " - + "SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME " - + "SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE " - + "SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE " - + "SYSRES_CONST_GROUP_NAME_REQUISITE_CODE " - + "SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE " - + "SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE " - + "SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE " - + "SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE " - + "SYSRES_CONST_GROUP_USER_REQUISITE_CODE " - + "SYSRES_CONST_GROUPS_REFERENCE_CODE " - + "SYSRES_CONST_GROUPS_REQUISITE_CODE " - + "SYSRES_CONST_HIDDEN_MODE_NAME " - + "SYSRES_CONST_HIGH_LVL_REQUISITE_CODE " - + "SYSRES_CONST_HISTORY_ACTION_CREATE_CODE " - + "SYSRES_CONST_HISTORY_ACTION_DELETE_CODE " - + "SYSRES_CONST_HISTORY_ACTION_EDIT_CODE " - + "SYSRES_CONST_HOUR_CHAR " - + "SYSRES_CONST_ID_REQUISITE_CODE " - + "SYSRES_CONST_IDSPS_REQUISITE_CODE " - + "SYSRES_CONST_IMAGE_MODE_COLOR " - + "SYSRES_CONST_IMAGE_MODE_GREYSCALE " - + "SYSRES_CONST_IMAGE_MODE_MONOCHROME " - + "SYSRES_CONST_IMPORTANCE_HIGH " - + "SYSRES_CONST_IMPORTANCE_LOW " - + "SYSRES_CONST_IMPORTANCE_NORMAL " - + "SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE " - + "SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE " - + "SYSRES_CONST_INT_REQUISITE " - + "SYSRES_CONST_INT_REQUISITE_TYPE " - + "SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR " - + "SYSRES_CONST_INTEGER_TYPE_CHAR " - + "SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE " - + "SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE " - + "SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE " - + "SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE " - + "SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE " - + "SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE " - + "SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE " - + "SYSRES_CONST_JOB_BLOCK_DESCRIPTION " - + "SYSRES_CONST_JOB_KIND_CONTROL_JOB " - + "SYSRES_CONST_JOB_KIND_JOB " - + "SYSRES_CONST_JOB_KIND_NOTICE " - + "SYSRES_CONST_JOB_STATE_ABORTED " - + "SYSRES_CONST_JOB_STATE_COMPLETE " - + "SYSRES_CONST_JOB_STATE_WORKING " - + "SYSRES_CONST_KIND_REQUISITE_CODE " - + "SYSRES_CONST_KIND_REQUISITE_NAME " - + "SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE " - + "SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE " - + "SYSRES_CONST_KOD_INPUT_TYPE " - + "SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE " - + "SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE " - + "SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT " - + "SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT " - + "SYSRES_CONST_LINK_OBJECT_KIND_EDOC " - + "SYSRES_CONST_LINK_OBJECT_KIND_FOLDER " - + "SYSRES_CONST_LINK_OBJECT_KIND_JOB " - + "SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE " - + "SYSRES_CONST_LINK_OBJECT_KIND_TASK " - + "SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_LIST_REFERENCE_MODE_NAME " - + "SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE " - + "SYSRES_CONST_MAIN_VIEW_CODE " - + "SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG " - + "SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE " - + "SYSRES_CONST_MAXIMIZED_MODE_NAME " - + "SYSRES_CONST_ME_VALUE " - + "SYSRES_CONST_MESSAGE_ATTENTION_CAPTION " - + "SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION " - + "SYSRES_CONST_MESSAGE_ERROR_CAPTION " - + "SYSRES_CONST_MESSAGE_INFORMATION_CAPTION " - + "SYSRES_CONST_MINIMIZED_MODE_NAME " - + "SYSRES_CONST_MINUTE_CHAR " - + "SYSRES_CONST_MODULE_REQUISITE_CODE " - + "SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION " - + "SYSRES_CONST_MONTH_FORMAT_VALUE " - + "SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE " - + "SYSRES_CONST_NAME_REQUISITE_CODE " - + "SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE " - + "SYSRES_CONST_NAMEAN_INPUT_TYPE " - + "SYSRES_CONST_NEGATIVE_PICK_VALUE " - + "SYSRES_CONST_NEGATIVE_VALUE " - + "SYSRES_CONST_NO " - + "SYSRES_CONST_NO_PICK_VALUE " - + "SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE " - + "SYSRES_CONST_NO_VALUE " - + "SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE " - + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE " - + "SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE " - + "SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE " - + "SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE " - + "SYSRES_CONST_NORMAL_MODE_NAME " - + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE " - + "SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME " - + "SYSRES_CONST_NOTE_REQUISITE_CODE " - + "SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION " - + "SYSRES_CONST_NUM_REQUISITE " - + "SYSRES_CONST_NUM_STR_REQUISITE_CODE " - + "SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG " - + "SYSRES_CONST_NUMERATION_AUTO_STRONG " - + "SYSRES_CONST_NUMERATION_FROM_DICTONARY " - + "SYSRES_CONST_NUMERATION_MANUAL " - + "SYSRES_CONST_NUMERIC_TYPE_CHAR " - + "SYSRES_CONST_NUMREQ_REQUISITE_CODE " - + "SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE " - + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE " - + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE " - + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE " - + "SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE " - + "SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX " - + "SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_ORIGINALREF_REQUISITE_CODE " - + "SYSRES_CONST_OURFIRM_REF_CODE " - + "SYSRES_CONST_OURFIRM_REQUISITE_CODE " - + "SYSRES_CONST_OURFIRM_VAR " - + "SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE " - + "SYSRES_CONST_PICK_NEGATIVE_RESULT " - + "SYSRES_CONST_PICK_POSITIVE_RESULT " - + "SYSRES_CONST_PICK_REQUISITE " - + "SYSRES_CONST_PICK_REQUISITE_TYPE " - + "SYSRES_CONST_PICK_TYPE_CHAR " - + "SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE " - + "SYSRES_CONST_PLATFORM_VERSION_COMMENT " - + "SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE " - + "SYSRES_CONST_POSITIVE_PICK_VALUE " - + "SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE " - + "SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE " - + "SYSRES_CONST_PRIORITY_REQUISITE_CODE " - + "SYSRES_CONST_QUALIFIED_TASK_TYPE " - + "SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE " - + "SYSRES_CONST_RECSTAT_REQUISITE_CODE " - + "SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_REF_REQUISITE " - + "SYSRES_CONST_REF_REQUISITE_TYPE " - + "SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE " - + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE " - + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE " - + "SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE " - + "SYSRES_CONST_REFERENCE_TYPE_CHAR " - + "SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME " - + "SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE " - + "SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE " - + "SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING " - + "SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN " - + "SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY " - + "SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE " - + "SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL " - + "SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE " - + "SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE " - + "SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE " - + "SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE " - + "SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE " - + "SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE " - + "SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE " - + "SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE " - + "SYSRES_CONST_REQ_MODE_AVAILABLE_CODE " - + "SYSRES_CONST_REQ_MODE_EDIT_CODE " - + "SYSRES_CONST_REQ_MODE_HIDDEN_CODE " - + "SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE " - + "SYSRES_CONST_REQ_MODE_VIEW_CODE " - + "SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE " - + "SYSRES_CONST_REQ_SECTION_VALUE " - + "SYSRES_CONST_REQ_TYPE_VALUE " - + "SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT " - + "SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL " - + "SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME " - + "SYSRES_CONST_REQUISITE_FORMAT_LEFT " - + "SYSRES_CONST_REQUISITE_FORMAT_RIGHT " - + "SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT " - + "SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE " - + "SYSRES_CONST_REQUISITE_SECTION_ACTIONS " - + "SYSRES_CONST_REQUISITE_SECTION_BUTTON " - + "SYSRES_CONST_REQUISITE_SECTION_BUTTONS " - + "SYSRES_CONST_REQUISITE_SECTION_CARD " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE10 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE11 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE12 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE13 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE14 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE15 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE16 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE17 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE18 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE19 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE2 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE20 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE21 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE22 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE23 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE24 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE3 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE4 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE5 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE6 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE7 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE8 " - + "SYSRES_CONST_REQUISITE_SECTION_TABLE9 " - + "SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE " - + "SYSRES_CONST_RIGHT_ALIGNMENT_CODE " - + "SYSRES_CONST_ROLES_REFERENCE_CODE " - + "SYSRES_CONST_ROUTE_STEP_AFTER_RUS " - + "SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS " - + "SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS " - + "SYSRES_CONST_ROUTE_TYPE_COMPLEX " - + "SYSRES_CONST_ROUTE_TYPE_PARALLEL " - + "SYSRES_CONST_ROUTE_TYPE_SERIAL " - + "SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE " - + "SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE " - + "SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE " - + "SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION " - + "SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE " - + "SYSRES_CONST_SEARCHES_COMPONENT_CONTENT " - + "SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME " - + "SYSRES_CONST_SEARCHES_EDOC_CONTENT " - + "SYSRES_CONST_SEARCHES_FOLDER_CONTENT " - + "SYSRES_CONST_SEARCHES_JOB_CONTENT " - + "SYSRES_CONST_SEARCHES_REFERENCE_CODE " - + "SYSRES_CONST_SEARCHES_TASK_CONTENT " - + "SYSRES_CONST_SECOND_CHAR " - + "SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_CODE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE " - + "SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE " - + "SYSRES_CONST_SELECT_REFERENCE_MODE_NAME " - + "SYSRES_CONST_SELECT_TYPE_SELECTABLE " - + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD " - + "SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD " - + "SYSRES_CONST_SELECT_TYPE_UNSLECTABLE " - + "SYSRES_CONST_SERVER_TYPE_MAIN " - + "SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE " - + "SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE " - + "SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE " - + "SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE " - + "SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE " - + "SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE " - + "SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE " - + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE " - + "SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE " - + "SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE " - + "SYSRES_CONST_STATE_REQ_NAME " - + "SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE " - + "SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE " - + "SYSRES_CONST_STATE_REQUISITE_CODE " - + "SYSRES_CONST_STATIC_ROLE_TYPE_CODE " - + "SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE " - + "SYSRES_CONST_STATUS_VALUE_AUTOCLEANING " - + "SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE " - + "SYSRES_CONST_STATUS_VALUE_COMPLETE " - + "SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE " - + "SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE " - + "SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE " - + "SYSRES_CONST_STATUS_VALUE_RED_SQUARE " - + "SYSRES_CONST_STATUS_VALUE_SUSPEND " - + "SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE " - + "SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE " - + "SYSRES_CONST_STORAGE_TYPE_FILE " - + "SYSRES_CONST_STORAGE_TYPE_SQL_SERVER " - + "SYSRES_CONST_STR_REQUISITE " - + "SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE " - + "SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR " - + "SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR " - + "SYSRES_CONST_STRING_REQUISITE_CODE " - + "SYSRES_CONST_STRING_REQUISITE_TYPE " - + "SYSRES_CONST_STRING_TYPE_CHAR " - + "SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE " - + "SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION " - + "SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE " - + "SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE " - + "SYSRES_CONST_SYSTEM_VERSION_COMMENT " - + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL " - + "SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS " - + "SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL " - + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION " - + "SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD " - + "SYSRES_CONST_TASK_ENCODE_TYPE_NONE " - + "SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD " - + "SYSRES_CONST_TASK_ROUTE_ALL_CONDITION " - + "SYSRES_CONST_TASK_ROUTE_AND_CONDITION " - + "SYSRES_CONST_TASK_ROUTE_OR_CONDITION " - + "SYSRES_CONST_TASK_STATE_ABORTED " - + "SYSRES_CONST_TASK_STATE_COMPLETE " - + "SYSRES_CONST_TASK_STATE_CONTINUED " - + "SYSRES_CONST_TASK_STATE_CONTROL " - + "SYSRES_CONST_TASK_STATE_INIT " - + "SYSRES_CONST_TASK_STATE_WORKING " - + "SYSRES_CONST_TASK_TITLE " - + "SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE " - + "SYSRES_CONST_TASK_TYPES_REFERENCE_CODE " - + "SYSRES_CONST_TEMPLATES_REFERENCE_CODE " - + "SYSRES_CONST_TEST_DATE_REQUISITE_NAME " - + "SYSRES_CONST_TEST_DEV_DATABASE_NAME " - + "SYSRES_CONST_TEST_DEV_SYSTEM_CODE " - + "SYSRES_CONST_TEST_EDMS_DATABASE_NAME " - + "SYSRES_CONST_TEST_EDMS_MAIN_CODE " - + "SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME " - + "SYSRES_CONST_TEST_EDMS_SECOND_CODE " - + "SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME " - + "SYSRES_CONST_TEST_EDMS_SYSTEM_CODE " - + "SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME " - + "SYSRES_CONST_TEXT_REQUISITE " - + "SYSRES_CONST_TEXT_REQUISITE_CODE " - + "SYSRES_CONST_TEXT_REQUISITE_TYPE " - + "SYSRES_CONST_TEXT_TYPE_CHAR " - + "SYSRES_CONST_TYPE_CODE_REQUISITE_CODE " - + "SYSRES_CONST_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR " - + "SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE " - + "SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE " - + "SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE " - + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE " - + "SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME " - + "SYSRES_CONST_USE_ACCESS_TYPE_CODE " - + "SYSRES_CONST_USE_ACCESS_TYPE_NAME " - + "SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE " - + "SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE " - + "SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE " - + "SYSRES_CONST_USER_CATEGORY_NORMAL " - + "SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE " - + "SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE " - + "SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE " - + "SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE " - + "SYSRES_CONST_USER_COMMON_CATEGORY " - + "SYSRES_CONST_USER_COMMON_CATEGORY_CODE " - + "SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE " - + "SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_USER_LOGIN_REQUISITE_CODE " - + "SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE " - + "SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE " - + "SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE " - + "SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE " - + "SYSRES_CONST_USER_SERVICE_CATEGORY " - + "SYSRES_CONST_USER_SERVICE_CATEGORY_CODE " - + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE " - + "SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME " - + "SYSRES_CONST_USER_STATUS_DEVELOPER_CODE " - + "SYSRES_CONST_USER_STATUS_DEVELOPER_NAME " - + "SYSRES_CONST_USER_STATUS_DISABLED_CODE " - + "SYSRES_CONST_USER_STATUS_DISABLED_NAME " - + "SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE " - + "SYSRES_CONST_USER_STATUS_USER_CODE " - + "SYSRES_CONST_USER_STATUS_USER_NAME " - + "SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED " - + "SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER " - + "SYSRES_CONST_USER_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE " - + "SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE " - + "SYSRES_CONST_USERS_REFERENCE_CODE " - + "SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME " - + "SYSRES_CONST_USERS_REQUISITE_CODE " - + "SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE " - + "SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE " - + "SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE " - + "SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE " - + "SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE " - + "SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME " - + "SYSRES_CONST_VIEW_DEFAULT_CODE " - + "SYSRES_CONST_VIEW_DEFAULT_NAME " - + "SYSRES_CONST_VIEWER_REQUISITE_CODE " - + "SYSRES_CONST_WAITING_BLOCK_DESCRIPTION " - + "SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING " - + "SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING " - + "SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE " - + "SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE " - + "SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE " - + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE " - + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE " - + "SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS " - + "SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS " - + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD " - + "SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT " - + "SYSRES_CONST_XML_ENCODING " - + "SYSRES_CONST_XREC_STAT_REQUISITE_CODE " - + "SYSRES_CONST_XRECID_FIELD_NAME " - + "SYSRES_CONST_YES " - + "SYSRES_CONST_YES_NO_2_REQUISITE_CODE " - + "SYSRES_CONST_YES_NO_REQUISITE_CODE " - + "SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE " - + "SYSRES_CONST_YES_PICK_VALUE " - + "SYSRES_CONST_YES_VALUE "; - - // Base constant - const base_constants = "CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE "; - - // Base group name - const base_group_name_constants = - "ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME "; - - // Decision block properties - const decision_block_properties_constants = - "DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY " - + "DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY "; - - // File extension - const file_extension_constants = - "ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION " - + "SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION "; - - // Job block properties - const job_block_properties_constants = - "JOB_BLOCK_ABORT_DEADLINE_PROPERTY " - + "JOB_BLOCK_AFTER_FINISH_EVENT " - + "JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT " - + "JOB_BLOCK_ATTACHMENT_PROPERTY " - + "JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " - + "JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " - + "JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT " - + "JOB_BLOCK_BEFORE_START_EVENT " - + "JOB_BLOCK_CREATED_JOBS_PROPERTY " - + "JOB_BLOCK_DEADLINE_PROPERTY " - + "JOB_BLOCK_EXECUTION_RESULTS_PROPERTY " - + "JOB_BLOCK_IS_PARALLEL_PROPERTY " - + "JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " - + "JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " - + "JOB_BLOCK_JOB_TEXT_PROPERTY " - + "JOB_BLOCK_NAME_PROPERTY " - + "JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY " - + "JOB_BLOCK_PERFORMER_PROPERTY " - + "JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " - + "JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " - + "JOB_BLOCK_SUBJECT_PROPERTY "; - - // Language code - const language_code_constants = "ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE "; - - // Launching external applications - const launching_external_applications_constants = - "smHidden smMaximized smMinimized smNormal wmNo wmYes "; - - // Link kind - const link_kind_constants = - "COMPONENT_TOKEN_LINK_KIND " - + "DOCUMENT_LINK_KIND " - + "EDOCUMENT_LINK_KIND " - + "FOLDER_LINK_KIND " - + "JOB_LINK_KIND " - + "REFERENCE_LINK_KIND " - + "TASK_LINK_KIND "; - - // Lock type - const lock_type_constants = - "COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE "; - - // Monitor block properties - const monitor_block_properties_constants = - "MONITOR_BLOCK_AFTER_FINISH_EVENT " - + "MONITOR_BLOCK_BEFORE_START_EVENT " - + "MONITOR_BLOCK_DEADLINE_PROPERTY " - + "MONITOR_BLOCK_INTERVAL_PROPERTY " - + "MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY " - + "MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " - + "MONITOR_BLOCK_NAME_PROPERTY " - + "MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " - + "MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY "; - - // Notice block properties - const notice_block_properties_constants = - "NOTICE_BLOCK_AFTER_FINISH_EVENT " - + "NOTICE_BLOCK_ATTACHMENT_PROPERTY " - + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " - + "NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " - + "NOTICE_BLOCK_BEFORE_START_EVENT " - + "NOTICE_BLOCK_CREATED_NOTICES_PROPERTY " - + "NOTICE_BLOCK_DEADLINE_PROPERTY " - + "NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " - + "NOTICE_BLOCK_NAME_PROPERTY " - + "NOTICE_BLOCK_NOTICE_TEXT_PROPERTY " - + "NOTICE_BLOCK_PERFORMER_PROPERTY " - + "NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " - + "NOTICE_BLOCK_SUBJECT_PROPERTY "; - - // Object events - const object_events_constants = - "dseAfterCancel " - + "dseAfterClose " - + "dseAfterDelete " - + "dseAfterDeleteOutOfTransaction " - + "dseAfterInsert " - + "dseAfterOpen " - + "dseAfterScroll " - + "dseAfterUpdate " - + "dseAfterUpdateOutOfTransaction " - + "dseBeforeCancel " - + "dseBeforeClose " - + "dseBeforeDelete " - + "dseBeforeDetailUpdate " - + "dseBeforeInsert " - + "dseBeforeOpen " - + "dseBeforeUpdate " - + "dseOnAnyRequisiteChange " - + "dseOnCloseRecord " - + "dseOnDeleteError " - + "dseOnOpenRecord " - + "dseOnPrepareUpdate " - + "dseOnUpdateError " - + "dseOnUpdateRatifiedRecord " - + "dseOnValidDelete " - + "dseOnValidUpdate " - + "reOnChange " - + "reOnChangeValues " - + "SELECTION_BEGIN_ROUTE_EVENT " - + "SELECTION_END_ROUTE_EVENT "; - - // Object params - const object_params_constants = - "CURRENT_PERIOD_IS_REQUIRED " - + "PREVIOUS_CARD_TYPE_NAME " - + "SHOW_RECORD_PROPERTIES_FORM "; - - // Other - const other_constants = - "ACCESS_RIGHTS_SETTING_DIALOG_CODE " - + "ADMINISTRATOR_USER_CODE " - + "ANALYTIC_REPORT_TYPE " - + "asrtHideLocal " - + "asrtHideRemote " - + "CALCULATED_ROLE_TYPE_CODE " - + "COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE " - + "DCTS_TEST_PROTOCOLS_FOLDER_PATH " - + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED " - + "E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER " - + "E_EDOC_VERSION_ALREDY_SIGNED " - + "E_EDOC_VERSION_ALREDY_SIGNED_BY_USER " - + "EDOC_TYPES_CODE_REQUISITE_FIELD_NAME " - + "EDOCUMENTS_ALIAS_NAME " - + "FILES_FOLDER_PATH " - + "FILTER_OPERANDS_DELIMITER " - + "FILTER_OPERATIONS_DELIMITER " - + "FORMCARD_NAME " - + "FORMLIST_NAME " - + "GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE " - + "GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE " - + "INTEGRATED_REPORT_TYPE " - + "IS_BUILDER_APPLICATION_ROLE " - + "IS_BUILDER_APPLICATION_ROLE2 " - + "IS_BUILDER_USERS " - + "ISBSYSDEV " - + "LOG_FOLDER_PATH " - + "mbCancel " - + "mbNo " - + "mbNoToAll " - + "mbOK " - + "mbYes " - + "mbYesToAll " - + "MEMORY_DATASET_DESRIPTIONS_FILENAME " - + "mrNo " - + "mrNoToAll " - + "mrYes " - + "mrYesToAll " - + "MULTIPLE_SELECT_DIALOG_CODE " - + "NONOPERATING_RECORD_FLAG_FEMININE " - + "NONOPERATING_RECORD_FLAG_MASCULINE " - + "OPERATING_RECORD_FLAG_FEMININE " - + "OPERATING_RECORD_FLAG_MASCULINE " - + "PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE " - + "PROGRAM_INITIATED_LOOKUP_ACTION " - + "ratDelete " - + "ratEdit " - + "ratInsert " - + "REPORT_TYPE " - + "REQUIRED_PICK_VALUES_VARIABLE " - + "rmCard " - + "rmList " - + "SBRTE_PROGID_DEV " - + "SBRTE_PROGID_RELEASE " - + "STATIC_ROLE_TYPE_CODE " - + "SUPPRESS_EMPTY_TEMPLATE_CREATION " - + "SYSTEM_USER_CODE " - + "UPDATE_DIALOG_DATASET " - + "USED_IN_OBJECT_HINT_PARAM " - + "USER_INITIATED_LOOKUP_ACTION " - + "USER_NAME_FORMAT " - + "USER_SELECTION_RESTRICTIONS " - + "WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH " - + "ELS_SUBTYPE_CONTROL_NAME " - + "ELS_FOLDER_KIND_CONTROL_NAME " - + "REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME "; - - // Privileges - const privileges_constants = - "PRIVILEGE_COMPONENT_FULL_ACCESS " - + "PRIVILEGE_DEVELOPMENT_EXPORT " - + "PRIVILEGE_DEVELOPMENT_IMPORT " - + "PRIVILEGE_DOCUMENT_DELETE " - + "PRIVILEGE_ESD " - + "PRIVILEGE_FOLDER_DELETE " - + "PRIVILEGE_MANAGE_ACCESS_RIGHTS " - + "PRIVILEGE_MANAGE_REPLICATION " - + "PRIVILEGE_MANAGE_SESSION_SERVER " - + "PRIVILEGE_OBJECT_FULL_ACCESS " - + "PRIVILEGE_OBJECT_VIEW " - + "PRIVILEGE_RESERVE_LICENSE " - + "PRIVILEGE_SYSTEM_CUSTOMIZE " - + "PRIVILEGE_SYSTEM_DEVELOP " - + "PRIVILEGE_SYSTEM_INSTALL " - + "PRIVILEGE_TASK_DELETE " - + "PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE " - + "PRIVILEGES_PSEUDOREFERENCE_CODE "; - - // Pseudoreference code - const pseudoreference_code_constants = - "ACCESS_TYPES_PSEUDOREFERENCE_CODE " - + "ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE " - + "ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE " - + "ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE " - + "AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE " - + "COMPONENTS_PSEUDOREFERENCE_CODE " - + "FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE " - + "GROUPS_PSEUDOREFERENCE_CODE " - + "RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE " - + "REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE " - + "REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE " - + "REFTYPES_PSEUDOREFERENCE_CODE " - + "REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE " - + "SEND_PROTOCOL_PSEUDOREFERENCE_CODE " - + "SUBSTITUTES_PSEUDOREFERENCE_CODE " - + "SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE " - + "UNITS_PSEUDOREFERENCE_CODE " - + "USERS_PSEUDOREFERENCE_CODE " - + "VIEWERS_PSEUDOREFERENCE_CODE "; - - // Requisite ISBCertificateType values - const requisite_ISBCertificateType_values_constants = - "CERTIFICATE_TYPE_ENCRYPT " - + "CERTIFICATE_TYPE_SIGN " - + "CERTIFICATE_TYPE_SIGN_AND_ENCRYPT "; - - // Requisite ISBEDocStorageType values - const requisite_ISBEDocStorageType_values_constants = - "STORAGE_TYPE_FILE " - + "STORAGE_TYPE_NAS_CIFS " - + "STORAGE_TYPE_SAPERION " - + "STORAGE_TYPE_SQL_SERVER "; - - // Requisite CompType2 values - const requisite_compType2_values_constants = - "COMPTYPE2_REQUISITE_DOCUMENTS_VALUE " - + "COMPTYPE2_REQUISITE_TASKS_VALUE " - + "COMPTYPE2_REQUISITE_FOLDERS_VALUE " - + "COMPTYPE2_REQUISITE_REFERENCES_VALUE "; - - // Requisite name - const requisite_name_constants = - "SYSREQ_CODE " - + "SYSREQ_COMPTYPE2 " - + "SYSREQ_CONST_AVAILABLE_FOR_WEB " - + "SYSREQ_CONST_COMMON_CODE " - + "SYSREQ_CONST_COMMON_VALUE " - + "SYSREQ_CONST_FIRM_CODE " - + "SYSREQ_CONST_FIRM_STATUS " - + "SYSREQ_CONST_FIRM_VALUE " - + "SYSREQ_CONST_SERVER_STATUS " - + "SYSREQ_CONTENTS " - + "SYSREQ_DATE_OPEN " - + "SYSREQ_DATE_CLOSE " - + "SYSREQ_DESCRIPTION " - + "SYSREQ_DESCRIPTION_LOCALIZE_ID " - + "SYSREQ_DOUBLE " - + "SYSREQ_EDOC_ACCESS_TYPE " - + "SYSREQ_EDOC_AUTHOR " - + "SYSREQ_EDOC_CREATED " - + "SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE " - + "SYSREQ_EDOC_EDITOR " - + "SYSREQ_EDOC_ENCODE_TYPE " - + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME " - + "SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION " - + "SYSREQ_EDOC_EXPORT_DATE " - + "SYSREQ_EDOC_EXPORTER " - + "SYSREQ_EDOC_KIND " - + "SYSREQ_EDOC_LIFE_STAGE_NAME " - + "SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE " - + "SYSREQ_EDOC_MODIFIED " - + "SYSREQ_EDOC_NAME " - + "SYSREQ_EDOC_NOTE " - + "SYSREQ_EDOC_QUALIFIED_ID " - + "SYSREQ_EDOC_SESSION_KEY " - + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME " - + "SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION " - + "SYSREQ_EDOC_SIGNATURE_TYPE " - + "SYSREQ_EDOC_SIGNED " - + "SYSREQ_EDOC_STORAGE " - + "SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE " - + "SYSREQ_EDOC_STORAGES_CHECK_RIGHTS " - + "SYSREQ_EDOC_STORAGES_COMPUTER_NAME " - + "SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE " - + "SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE " - + "SYSREQ_EDOC_STORAGES_FUNCTION " - + "SYSREQ_EDOC_STORAGES_INITIALIZED " - + "SYSREQ_EDOC_STORAGES_LOCAL_PATH " - + "SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME " - + "SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT " - + "SYSREQ_EDOC_STORAGES_SERVER_NAME " - + "SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME " - + "SYSREQ_EDOC_STORAGES_TYPE " - + "SYSREQ_EDOC_TEXT_MODIFIED " - + "SYSREQ_EDOC_TYPE_ACT_CODE " - + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION " - + "SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " - + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE " - + "SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS " - + "SYSREQ_EDOC_TYPE_ACT_SECTION " - + "SYSREQ_EDOC_TYPE_ADD_PARAMS " - + "SYSREQ_EDOC_TYPE_COMMENT " - + "SYSREQ_EDOC_TYPE_EVENT_TEXT " - + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR " - + "SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " - + "SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID " - + "SYSREQ_EDOC_TYPE_NUMERATION_METHOD " - + "SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE " - + "SYSREQ_EDOC_TYPE_REQ_CODE " - + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION " - + "SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " - + "SYSREQ_EDOC_TYPE_REQ_IS_LEADING " - + "SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED " - + "SYSREQ_EDOC_TYPE_REQ_NUMBER " - + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE " - + "SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS " - + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT " - + "SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND " - + "SYSREQ_EDOC_TYPE_REQ_SECTION " - + "SYSREQ_EDOC_TYPE_VIEW_CARD " - + "SYSREQ_EDOC_TYPE_VIEW_CODE " - + "SYSREQ_EDOC_TYPE_VIEW_COMMENT " - + "SYSREQ_EDOC_TYPE_VIEW_IS_MAIN " - + "SYSREQ_EDOC_TYPE_VIEW_NAME " - + "SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID " - + "SYSREQ_EDOC_VERSION_AUTHOR " - + "SYSREQ_EDOC_VERSION_CRC " - + "SYSREQ_EDOC_VERSION_DATA " - + "SYSREQ_EDOC_VERSION_EDITOR " - + "SYSREQ_EDOC_VERSION_EXPORT_DATE " - + "SYSREQ_EDOC_VERSION_EXPORTER " - + "SYSREQ_EDOC_VERSION_HIDDEN " - + "SYSREQ_EDOC_VERSION_LIFE_STAGE " - + "SYSREQ_EDOC_VERSION_MODIFIED " - + "SYSREQ_EDOC_VERSION_NOTE " - + "SYSREQ_EDOC_VERSION_SIGNATURE_TYPE " - + "SYSREQ_EDOC_VERSION_SIGNED " - + "SYSREQ_EDOC_VERSION_SIZE " - + "SYSREQ_EDOC_VERSION_SOURCE " - + "SYSREQ_EDOC_VERSION_TEXT_MODIFIED " - + "SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE " - + "SYSREQ_FOLDER_KIND " - + "SYSREQ_FUNC_CATEGORY " - + "SYSREQ_FUNC_COMMENT " - + "SYSREQ_FUNC_GROUP " - + "SYSREQ_FUNC_GROUP_COMMENT " - + "SYSREQ_FUNC_GROUP_NUMBER " - + "SYSREQ_FUNC_HELP " - + "SYSREQ_FUNC_PARAM_DEF_VALUE " - + "SYSREQ_FUNC_PARAM_IDENT " - + "SYSREQ_FUNC_PARAM_NUMBER " - + "SYSREQ_FUNC_PARAM_TYPE " - + "SYSREQ_FUNC_TEXT " - + "SYSREQ_GROUP_CATEGORY " - + "SYSREQ_ID " - + "SYSREQ_LAST_UPDATE " - + "SYSREQ_LEADER_REFERENCE " - + "SYSREQ_LINE_NUMBER " - + "SYSREQ_MAIN_RECORD_ID " - + "SYSREQ_NAME " - + "SYSREQ_NAME_LOCALIZE_ID " - + "SYSREQ_NOTE " - + "SYSREQ_ORIGINAL_RECORD " - + "SYSREQ_OUR_FIRM " - + "SYSREQ_PROFILING_SETTINGS_BATCH_LOGING " - + "SYSREQ_PROFILING_SETTINGS_BATCH_SIZE " - + "SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED " - + "SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED " - + "SYSREQ_PROFILING_SETTINGS_START_LOGGED " - + "SYSREQ_RECORD_STATUS " - + "SYSREQ_REF_REQ_FIELD_NAME " - + "SYSREQ_REF_REQ_FORMAT " - + "SYSREQ_REF_REQ_GENERATED " - + "SYSREQ_REF_REQ_LENGTH " - + "SYSREQ_REF_REQ_PRECISION " - + "SYSREQ_REF_REQ_REFERENCE " - + "SYSREQ_REF_REQ_SECTION " - + "SYSREQ_REF_REQ_STORED " - + "SYSREQ_REF_REQ_TOKENS " - + "SYSREQ_REF_REQ_TYPE " - + "SYSREQ_REF_REQ_VIEW " - + "SYSREQ_REF_TYPE_ACT_CODE " - + "SYSREQ_REF_TYPE_ACT_DESCRIPTION " - + "SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID " - + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE " - + "SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS " - + "SYSREQ_REF_TYPE_ACT_SECTION " - + "SYSREQ_REF_TYPE_ADD_PARAMS " - + "SYSREQ_REF_TYPE_COMMENT " - + "SYSREQ_REF_TYPE_COMMON_SETTINGS " - + "SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME " - + "SYSREQ_REF_TYPE_EVENT_TEXT " - + "SYSREQ_REF_TYPE_MAIN_LEADING_REF " - + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR " - + "SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID " - + "SYSREQ_REF_TYPE_NAME_LOCALIZE_ID " - + "SYSREQ_REF_TYPE_NUMERATION_METHOD " - + "SYSREQ_REF_TYPE_REQ_CODE " - + "SYSREQ_REF_TYPE_REQ_DESCRIPTION " - + "SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID " - + "SYSREQ_REF_TYPE_REQ_IS_CONTROL " - + "SYSREQ_REF_TYPE_REQ_IS_FILTER " - + "SYSREQ_REF_TYPE_REQ_IS_LEADING " - + "SYSREQ_REF_TYPE_REQ_IS_REQUIRED " - + "SYSREQ_REF_TYPE_REQ_NUMBER " - + "SYSREQ_REF_TYPE_REQ_ON_CHANGE " - + "SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS " - + "SYSREQ_REF_TYPE_REQ_ON_SELECT " - + "SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND " - + "SYSREQ_REF_TYPE_REQ_SECTION " - + "SYSREQ_REF_TYPE_VIEW_CARD " - + "SYSREQ_REF_TYPE_VIEW_CODE " - + "SYSREQ_REF_TYPE_VIEW_COMMENT " - + "SYSREQ_REF_TYPE_VIEW_IS_MAIN " - + "SYSREQ_REF_TYPE_VIEW_NAME " - + "SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID " - + "SYSREQ_REFERENCE_TYPE_ID " - + "SYSREQ_STATE " - + "SYSREQ_STATЕ " - + "SYSREQ_SYSTEM_SETTINGS_VALUE " - + "SYSREQ_TYPE " - + "SYSREQ_UNIT " - + "SYSREQ_UNIT_ID " - + "SYSREQ_USER_GROUPS_GROUP_FULL_NAME " - + "SYSREQ_USER_GROUPS_GROUP_NAME " - + "SYSREQ_USER_GROUPS_GROUP_SERVER_NAME " - + "SYSREQ_USERS_ACCESS_RIGHTS " - + "SYSREQ_USERS_AUTHENTICATION " - + "SYSREQ_USERS_CATEGORY " - + "SYSREQ_USERS_COMPONENT " - + "SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC " - + "SYSREQ_USERS_DOMAIN " - + "SYSREQ_USERS_FULL_USER_NAME " - + "SYSREQ_USERS_GROUP " - + "SYSREQ_USERS_IS_MAIN_SERVER " - + "SYSREQ_USERS_LOGIN " - + "SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC " - + "SYSREQ_USERS_STATUS " - + "SYSREQ_USERS_USER_CERTIFICATE " - + "SYSREQ_USERS_USER_CERTIFICATE_INFO " - + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME " - + "SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION " - + "SYSREQ_USERS_USER_CERTIFICATE_STATE " - + "SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME " - + "SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT " - + "SYSREQ_USERS_USER_DEFAULT_CERTIFICATE " - + "SYSREQ_USERS_USER_DESCRIPTION " - + "SYSREQ_USERS_USER_GLOBAL_NAME " - + "SYSREQ_USERS_USER_LOGIN " - + "SYSREQ_USERS_USER_MAIN_SERVER " - + "SYSREQ_USERS_USER_TYPE " - + "SYSREQ_WORK_RULES_FOLDER_ID "; - - // Result - const result_constants = "RESULT_VAR_NAME RESULT_VAR_NAME_ENG "; - - // Rule identification - const rule_identification_constants = - "AUTO_NUMERATION_RULE_ID " - + "CANT_CHANGE_ID_REQUISITE_RULE_ID " - + "CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID " - + "CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID " - + "CHECK_CODE_REQUISITE_RULE_ID " - + "CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID " - + "CHECK_FILTRATER_CHANGES_RULE_ID " - + "CHECK_RECORD_INTERVAL_RULE_ID " - + "CHECK_REFERENCE_INTERVAL_RULE_ID " - + "CHECK_REQUIRED_DATA_FULLNESS_RULE_ID " - + "CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID " - + "MAKE_RECORD_UNRATIFIED_RULE_ID " - + "RESTORE_AUTO_NUMERATION_RULE_ID " - + "SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID " - + "SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID " - + "SET_IDSPS_VALUE_RULE_ID " - + "SET_NEXT_CODE_VALUE_RULE_ID " - + "SET_OURFIRM_BOUNDS_RULE_ID " - + "SET_OURFIRM_REQUISITE_RULE_ID "; - - // Script block properties - const script_block_properties_constants = - "SCRIPT_BLOCK_AFTER_FINISH_EVENT " - + "SCRIPT_BLOCK_BEFORE_START_EVENT " - + "SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY " - + "SCRIPT_BLOCK_NAME_PROPERTY " - + "SCRIPT_BLOCK_SCRIPT_PROPERTY "; - - // Subtask block properties - const subtask_block_properties_constants = - "SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY " - + "SUBTASK_BLOCK_AFTER_FINISH_EVENT " - + "SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT " - + "SUBTASK_BLOCK_ATTACHMENTS_PROPERTY " - + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY " - + "SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY " - + "SUBTASK_BLOCK_BEFORE_START_EVENT " - + "SUBTASK_BLOCK_CREATED_TASK_PROPERTY " - + "SUBTASK_BLOCK_CREATION_EVENT " - + "SUBTASK_BLOCK_DEADLINE_PROPERTY " - + "SUBTASK_BLOCK_IMPORTANCE_PROPERTY " - + "SUBTASK_BLOCK_INITIATOR_PROPERTY " - + "SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY " - + "SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " - + "SUBTASK_BLOCK_JOBS_TYPE_PROPERTY " - + "SUBTASK_BLOCK_NAME_PROPERTY " - + "SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY " - + "SUBTASK_BLOCK_PERFORMERS_PROPERTY " - + "SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY " - + "SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY " - + "SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY " - + "SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY " - + "SUBTASK_BLOCK_START_EVENT " - + "SUBTASK_BLOCK_STEP_CONTROL_PROPERTY " - + "SUBTASK_BLOCK_SUBJECT_PROPERTY " - + "SUBTASK_BLOCK_TASK_CONTROL_PROPERTY " - + "SUBTASK_BLOCK_TEXT_PROPERTY " - + "SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY " - + "SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY " - + "SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY "; - - // System component - const system_component_constants = - "SYSCOMP_CONTROL_JOBS " - + "SYSCOMP_FOLDERS " - + "SYSCOMP_JOBS " - + "SYSCOMP_NOTICES " - + "SYSCOMP_TASKS "; - - // System dialogs - const system_dialogs_constants = - "SYSDLG_CREATE_EDOCUMENT " - + "SYSDLG_CREATE_EDOCUMENT_VERSION " - + "SYSDLG_CURRENT_PERIOD " - + "SYSDLG_EDIT_FUNCTION_HELP " - + "SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE " - + "SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS " - + "SYSDLG_EXPORT_SINGLE_EDOCUMENT " - + "SYSDLG_IMPORT_EDOCUMENT " - + "SYSDLG_MULTIPLE_SELECT " - + "SYSDLG_SETUP_ACCESS_RIGHTS " - + "SYSDLG_SETUP_DEFAULT_RIGHTS " - + "SYSDLG_SETUP_FILTER_CONDITION " - + "SYSDLG_SETUP_SIGN_RIGHTS " - + "SYSDLG_SETUP_TASK_OBSERVERS " - + "SYSDLG_SETUP_TASK_ROUTE " - + "SYSDLG_SETUP_USERS_LIST " - + "SYSDLG_SIGN_EDOCUMENT " - + "SYSDLG_SIGN_MULTIPLE_EDOCUMENTS "; - - // System reference names - const system_reference_names_constants = - "SYSREF_ACCESS_RIGHTS_TYPES " - + "SYSREF_ADMINISTRATION_HISTORY " - + "SYSREF_ALL_AVAILABLE_COMPONENTS " - + "SYSREF_ALL_AVAILABLE_PRIVILEGES " - + "SYSREF_ALL_REPLICATING_COMPONENTS " - + "SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS " - + "SYSREF_CALENDAR_EVENTS " - + "SYSREF_COMPONENT_TOKEN_HISTORY " - + "SYSREF_COMPONENT_TOKENS " - + "SYSREF_COMPONENTS " - + "SYSREF_CONSTANTS " - + "SYSREF_DATA_RECEIVE_PROTOCOL " - + "SYSREF_DATA_SEND_PROTOCOL " - + "SYSREF_DIALOGS " - + "SYSREF_DIALOGS_REQUISITES " - + "SYSREF_EDITORS " - + "SYSREF_EDOC_CARDS " - + "SYSREF_EDOC_TYPES " - + "SYSREF_EDOCUMENT_CARD_REQUISITES " - + "SYSREF_EDOCUMENT_CARD_TYPES " - + "SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE " - + "SYSREF_EDOCUMENT_CARDS " - + "SYSREF_EDOCUMENT_HISTORY " - + "SYSREF_EDOCUMENT_KINDS " - + "SYSREF_EDOCUMENT_REQUISITES " - + "SYSREF_EDOCUMENT_SIGNATURES " - + "SYSREF_EDOCUMENT_TEMPLATES " - + "SYSREF_EDOCUMENT_TEXT_STORAGES " - + "SYSREF_EDOCUMENT_VIEWS " - + "SYSREF_FILTERER_SETUP_CONFLICTS " - + "SYSREF_FILTRATER_SETTING_CONFLICTS " - + "SYSREF_FOLDER_HISTORY " - + "SYSREF_FOLDERS " - + "SYSREF_FUNCTION_GROUPS " - + "SYSREF_FUNCTION_PARAMS " - + "SYSREF_FUNCTIONS " - + "SYSREF_JOB_HISTORY " - + "SYSREF_LINKS " - + "SYSREF_LOCALIZATION_DICTIONARY " - + "SYSREF_LOCALIZATION_LANGUAGES " - + "SYSREF_MODULES " - + "SYSREF_PRIVILEGES " - + "SYSREF_RECORD_HISTORY " - + "SYSREF_REFERENCE_REQUISITES " - + "SYSREF_REFERENCE_TYPE_VIEWS " - + "SYSREF_REFERENCE_TYPES " - + "SYSREF_REFERENCES " - + "SYSREF_REFERENCES_REQUISITES " - + "SYSREF_REMOTE_SERVERS " - + "SYSREF_REPLICATION_SESSIONS_LOG " - + "SYSREF_REPLICATION_SESSIONS_PROTOCOL " - + "SYSREF_REPORTS " - + "SYSREF_ROLES " - + "SYSREF_ROUTE_BLOCK_GROUPS " - + "SYSREF_ROUTE_BLOCKS " - + "SYSREF_SCRIPTS " - + "SYSREF_SEARCHES " - + "SYSREF_SERVER_EVENTS " - + "SYSREF_SERVER_EVENTS_HISTORY " - + "SYSREF_STANDARD_ROUTE_GROUPS " - + "SYSREF_STANDARD_ROUTES " - + "SYSREF_STATUSES " - + "SYSREF_SYSTEM_SETTINGS " - + "SYSREF_TASK_HISTORY " - + "SYSREF_TASK_KIND_GROUPS " - + "SYSREF_TASK_KINDS " - + "SYSREF_TASK_RIGHTS " - + "SYSREF_TASK_SIGNATURES " - + "SYSREF_TASKS " - + "SYSREF_UNITS " - + "SYSREF_USER_GROUPS " - + "SYSREF_USER_GROUPS_REFERENCE " - + "SYSREF_USER_SUBSTITUTION " - + "SYSREF_USERS " - + "SYSREF_USERS_REFERENCE " - + "SYSREF_VIEWERS " - + "SYSREF_WORKING_TIME_CALENDARS "; - - // Table name - const table_name_constants = - "ACCESS_RIGHTS_TABLE_NAME " - + "EDMS_ACCESS_TABLE_NAME " - + "EDOC_TYPES_TABLE_NAME "; - - // Test - const test_constants = - "TEST_DEV_DB_NAME " - + "TEST_DEV_SYSTEM_CODE " - + "TEST_EDMS_DB_NAME " - + "TEST_EDMS_MAIN_CODE " - + "TEST_EDMS_MAIN_DB_NAME " - + "TEST_EDMS_SECOND_CODE " - + "TEST_EDMS_SECOND_DB_NAME " - + "TEST_EDMS_SYSTEM_CODE " - + "TEST_ISB5_MAIN_CODE " - + "TEST_ISB5_SECOND_CODE " - + "TEST_SQL_SERVER_2005_NAME " - + "TEST_SQL_SERVER_NAME "; - - // Using the dialog windows - const using_the_dialog_windows_constants = - "ATTENTION_CAPTION " - + "cbsCommandLinks " - + "cbsDefault " - + "CONFIRMATION_CAPTION " - + "ERROR_CAPTION " - + "INFORMATION_CAPTION " - + "mrCancel " - + "mrOk "; - - // Using the document - const using_the_document_constants = - "EDOC_VERSION_ACTIVE_STAGE_CODE " - + "EDOC_VERSION_DESIGN_STAGE_CODE " - + "EDOC_VERSION_OBSOLETE_STAGE_CODE "; - - // Using the EA and encryption - const using_the_EA_and_encryption_constants = - "cpDataEnciphermentEnabled " - + "cpDigitalSignatureEnabled " - + "cpID " - + "cpIssuer " - + "cpPluginVersion " - + "cpSerial " - + "cpSubjectName " - + "cpSubjSimpleName " - + "cpValidFromDate " - + "cpValidToDate "; - - // Using the ISBL-editor - const using_the_ISBL_editor_constants = - "ISBL_SYNTAX " + "NO_SYNTAX " + "XML_SYNTAX "; - - // Wait block properties - const wait_block_properties_constants = - "WAIT_BLOCK_AFTER_FINISH_EVENT " - + "WAIT_BLOCK_BEFORE_START_EVENT " - + "WAIT_BLOCK_DEADLINE_PROPERTY " - + "WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY " - + "WAIT_BLOCK_NAME_PROPERTY " - + "WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY "; - - // SYSRES Common - const sysres_common_constants = - "SYSRES_COMMON " - + "SYSRES_CONST " - + "SYSRES_MBFUNC " - + "SYSRES_SBDATA " - + "SYSRES_SBGUI " - + "SYSRES_SBINTF " - + "SYSRES_SBREFDSC " - + "SYSRES_SQLERRORS " - + "SYSRES_SYSCOMP "; - - // Константы ==> built_in - const CONSTANTS = - sysres_constants - + base_constants - + base_group_name_constants - + decision_block_properties_constants - + file_extension_constants - + job_block_properties_constants - + language_code_constants - + launching_external_applications_constants - + link_kind_constants - + lock_type_constants - + monitor_block_properties_constants - + notice_block_properties_constants - + object_events_constants - + object_params_constants - + other_constants - + privileges_constants - + pseudoreference_code_constants - + requisite_ISBCertificateType_values_constants - + requisite_ISBEDocStorageType_values_constants - + requisite_compType2_values_constants - + requisite_name_constants - + result_constants - + rule_identification_constants - + script_block_properties_constants - + subtask_block_properties_constants - + system_component_constants - + system_dialogs_constants - + system_reference_names_constants - + table_name_constants - + test_constants - + using_the_dialog_windows_constants - + using_the_document_constants - + using_the_EA_and_encryption_constants - + using_the_ISBL_editor_constants - + wait_block_properties_constants - + sysres_common_constants; - - // enum TAccountType - const TAccountType = "atUser atGroup atRole "; - - // enum TActionEnabledMode - const TActionEnabledMode = - "aemEnabledAlways " - + "aemDisabledAlways " - + "aemEnabledOnBrowse " - + "aemEnabledOnEdit " - + "aemDisabledOnBrowseEmpty "; - - // enum TAddPosition - const TAddPosition = "apBegin apEnd "; - - // enum TAlignment - const TAlignment = "alLeft alRight "; - - // enum TAreaShowMode - const TAreaShowMode = - "asmNever " - + "asmNoButCustomize " - + "asmAsLastTime " - + "asmYesButCustomize " - + "asmAlways "; - - // enum TCertificateInvalidationReason - const TCertificateInvalidationReason = "cirCommon cirRevoked "; - - // enum TCertificateType - const TCertificateType = "ctSignature ctEncode ctSignatureEncode "; - - // enum TCheckListBoxItemState - const TCheckListBoxItemState = "clbUnchecked clbChecked clbGrayed "; - - // enum TCloseOnEsc - const TCloseOnEsc = "ceISB ceAlways ceNever "; - - // enum TCompType - const TCompType = - "ctDocument " - + "ctReference " - + "ctScript " - + "ctUnknown " - + "ctReport " - + "ctDialog " - + "ctFunction " - + "ctFolder " - + "ctEDocument " - + "ctTask " - + "ctJob " - + "ctNotice " - + "ctControlJob "; - - // enum TConditionFormat - const TConditionFormat = "cfInternal cfDisplay "; - - // enum TConnectionIntent - const TConnectionIntent = "ciUnspecified ciWrite ciRead "; - - // enum TContentKind - const TContentKind = - "ckFolder " - + "ckEDocument " - + "ckTask " - + "ckJob " - + "ckComponentToken " - + "ckAny " - + "ckReference " - + "ckScript " - + "ckReport " - + "ckDialog "; - - // enum TControlType - const TControlType = - "ctISBLEditor " - + "ctBevel " - + "ctButton " - + "ctCheckListBox " - + "ctComboBox " - + "ctComboEdit " - + "ctGrid " - + "ctDBCheckBox " - + "ctDBComboBox " - + "ctDBEdit " - + "ctDBEllipsis " - + "ctDBMemo " - + "ctDBNavigator " - + "ctDBRadioGroup " - + "ctDBStatusLabel " - + "ctEdit " - + "ctGroupBox " - + "ctInplaceHint " - + "ctMemo " - + "ctPanel " - + "ctListBox " - + "ctRadioButton " - + "ctRichEdit " - + "ctTabSheet " - + "ctWebBrowser " - + "ctImage " - + "ctHyperLink " - + "ctLabel " - + "ctDBMultiEllipsis " - + "ctRibbon " - + "ctRichView " - + "ctInnerPanel " - + "ctPanelGroup " - + "ctBitButton "; - - // enum TCriterionContentType - const TCriterionContentType = - "cctDate " - + "cctInteger " - + "cctNumeric " - + "cctPick " - + "cctReference " - + "cctString " - + "cctText "; - - // enum TCultureType - const TCultureType = "cltInternal cltPrimary cltGUI "; - - // enum TDataSetEventType - const TDataSetEventType = - "dseBeforeOpen " - + "dseAfterOpen " - + "dseBeforeClose " - + "dseAfterClose " - + "dseOnValidDelete " - + "dseBeforeDelete " - + "dseAfterDelete " - + "dseAfterDeleteOutOfTransaction " - + "dseOnDeleteError " - + "dseBeforeInsert " - + "dseAfterInsert " - + "dseOnValidUpdate " - + "dseBeforeUpdate " - + "dseOnUpdateRatifiedRecord " - + "dseAfterUpdate " - + "dseAfterUpdateOutOfTransaction " - + "dseOnUpdateError " - + "dseAfterScroll " - + "dseOnOpenRecord " - + "dseOnCloseRecord " - + "dseBeforeCancel " - + "dseAfterCancel " - + "dseOnUpdateDeadlockError " - + "dseBeforeDetailUpdate " - + "dseOnPrepareUpdate " - + "dseOnAnyRequisiteChange "; - - // enum TDataSetState - const TDataSetState = "dssEdit dssInsert dssBrowse dssInActive "; - - // enum TDateFormatType - const TDateFormatType = "dftDate dftShortDate dftDateTime dftTimeStamp "; - - // enum TDateOffsetType - const TDateOffsetType = "dotDays dotHours dotMinutes dotSeconds "; - - // enum TDateTimeKind - const TDateTimeKind = "dtkndLocal dtkndUTC "; - - // enum TDeaAccessRights - const TDeaAccessRights = "arNone arView arEdit arFull "; - - // enum TDocumentDefaultAction - const TDocumentDefaultAction = "ddaView ddaEdit "; - - // enum TEditMode - const TEditMode = - "emLock " - + "emEdit " - + "emSign " - + "emExportWithLock " - + "emImportWithUnlock " - + "emChangeVersionNote " - + "emOpenForModify " - + "emChangeLifeStage " - + "emDelete " - + "emCreateVersion " - + "emImport " - + "emUnlockExportedWithLock " - + "emStart " - + "emAbort " - + "emReInit " - + "emMarkAsReaded " - + "emMarkAsUnreaded " - + "emPerform " - + "emAccept " - + "emResume " - + "emChangeRights " - + "emEditRoute " - + "emEditObserver " - + "emRecoveryFromLocalCopy " - + "emChangeWorkAccessType " - + "emChangeEncodeTypeToCertificate " - + "emChangeEncodeTypeToPassword " - + "emChangeEncodeTypeToNone " - + "emChangeEncodeTypeToCertificatePassword " - + "emChangeStandardRoute " - + "emGetText " - + "emOpenForView " - + "emMoveToStorage " - + "emCreateObject " - + "emChangeVersionHidden " - + "emDeleteVersion " - + "emChangeLifeCycleStage " - + "emApprovingSign " - + "emExport " - + "emContinue " - + "emLockFromEdit " - + "emUnLockForEdit " - + "emLockForServer " - + "emUnlockFromServer " - + "emDelegateAccessRights " - + "emReEncode "; - - // enum TEditorCloseObservType - const TEditorCloseObservType = "ecotFile ecotProcess "; - - // enum TEdmsApplicationAction - const TEdmsApplicationAction = "eaGet eaCopy eaCreate eaCreateStandardRoute "; - - // enum TEDocumentLockType - const TEDocumentLockType = "edltAll edltNothing edltQuery "; - - // enum TEDocumentStepShowMode - const TEDocumentStepShowMode = "essmText essmCard "; - - // enum TEDocumentStepVersionType - const TEDocumentStepVersionType = "esvtLast esvtLastActive esvtSpecified "; - - // enum TEDocumentStorageFunction - const TEDocumentStorageFunction = "edsfExecutive edsfArchive "; - - // enum TEDocumentStorageType - const TEDocumentStorageType = "edstSQLServer edstFile "; - - // enum TEDocumentVersionSourceType - const TEDocumentVersionSourceType = - "edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile "; - - // enum TEDocumentVersionState - const TEDocumentVersionState = "vsDefault vsDesign vsActive vsObsolete "; - - // enum TEncodeType - const TEncodeType = "etNone etCertificate etPassword etCertificatePassword "; - - // enum TExceptionCategory - const TExceptionCategory = "ecException ecWarning ecInformation "; - - // enum TExportedSignaturesType - const TExportedSignaturesType = "estAll estApprovingOnly "; - - // enum TExportedVersionType - const TExportedVersionType = "evtLast evtLastActive evtQuery "; - - // enum TFieldDataType - const TFieldDataType = - "fdtString " - + "fdtNumeric " - + "fdtInteger " - + "fdtDate " - + "fdtText " - + "fdtUnknown " - + "fdtWideString " - + "fdtLargeInteger "; - - // enum TFolderType - const TFolderType = - "ftInbox " - + "ftOutbox " - + "ftFavorites " - + "ftCommonFolder " - + "ftUserFolder " - + "ftComponents " - + "ftQuickLaunch " - + "ftShortcuts " - + "ftSearch "; - - // enum TGridRowHeight - const TGridRowHeight = "grhAuto " + "grhX1 " + "grhX2 " + "grhX3 "; - - // enum THyperlinkType - const THyperlinkType = "hltText " + "hltRTF " + "hltHTML "; - - // enum TImageFileFormat - const TImageFileFormat = - "iffBMP " - + "iffJPEG " - + "iffMultiPageTIFF " - + "iffSinglePageTIFF " - + "iffTIFF " - + "iffPNG "; - - // enum TImageMode - const TImageMode = "im8bGrayscale " + "im24bRGB " + "im1bMonochrome "; - - // enum TImageType - const TImageType = "itBMP " + "itJPEG " + "itWMF " + "itPNG "; - - // enum TInplaceHintKind - const TInplaceHintKind = - "ikhInformation " + "ikhWarning " + "ikhError " + "ikhNoIcon "; - - // enum TISBLContext - const TISBLContext = - "icUnknown " - + "icScript " - + "icFunction " - + "icIntegratedReport " - + "icAnalyticReport " - + "icDataSetEventHandler " - + "icActionHandler " - + "icFormEventHandler " - + "icLookUpEventHandler " - + "icRequisiteChangeEventHandler " - + "icBeforeSearchEventHandler " - + "icRoleCalculation " - + "icSelectRouteEventHandler " - + "icBlockPropertyCalculation " - + "icBlockQueryParamsEventHandler " - + "icChangeSearchResultEventHandler " - + "icBlockEventHandler " - + "icSubTaskInitEventHandler " - + "icEDocDataSetEventHandler " - + "icEDocLookUpEventHandler " - + "icEDocActionHandler " - + "icEDocFormEventHandler " - + "icEDocRequisiteChangeEventHandler " - + "icStructuredConversionRule " - + "icStructuredConversionEventBefore " - + "icStructuredConversionEventAfter " - + "icWizardEventHandler " - + "icWizardFinishEventHandler " - + "icWizardStepEventHandler " - + "icWizardStepFinishEventHandler " - + "icWizardActionEnableEventHandler " - + "icWizardActionExecuteEventHandler " - + "icCreateJobsHandler " - + "icCreateNoticesHandler " - + "icBeforeLookUpEventHandler " - + "icAfterLookUpEventHandler " - + "icTaskAbortEventHandler " - + "icWorkflowBlockActionHandler " - + "icDialogDataSetEventHandler " - + "icDialogActionHandler " - + "icDialogLookUpEventHandler " - + "icDialogRequisiteChangeEventHandler " - + "icDialogFormEventHandler " - + "icDialogValidCloseEventHandler " - + "icBlockFormEventHandler " - + "icTaskFormEventHandler " - + "icReferenceMethod " - + "icEDocMethod " - + "icDialogMethod " - + "icProcessMessageHandler "; - - // enum TItemShow - const TItemShow = "isShow " + "isHide " + "isByUserSettings "; - - // enum TJobKind - const TJobKind = "jkJob " + "jkNotice " + "jkControlJob "; - - // enum TJoinType - const TJoinType = "jtInner " + "jtLeft " + "jtRight " + "jtFull " + "jtCross "; - - // enum TLabelPos - const TLabelPos = "lbpAbove " + "lbpBelow " + "lbpLeft " + "lbpRight "; - - // enum TLicensingType - const TLicensingType = "eltPerConnection " + "eltPerUser "; - - // enum TLifeCycleStageFontColor - const TLifeCycleStageFontColor = - "sfcUndefined " - + "sfcBlack " - + "sfcGreen " - + "sfcRed " - + "sfcBlue " - + "sfcOrange " - + "sfcLilac "; - - // enum TLifeCycleStageFontStyle - const TLifeCycleStageFontStyle = "sfsItalic " + "sfsStrikeout " + "sfsNormal "; - - // enum TLockableDevelopmentComponentType - const TLockableDevelopmentComponentType = - "ldctStandardRoute " - + "ldctWizard " - + "ldctScript " - + "ldctFunction " - + "ldctRouteBlock " - + "ldctIntegratedReport " - + "ldctAnalyticReport " - + "ldctReferenceType " - + "ldctEDocumentType " - + "ldctDialog " - + "ldctServerEvents "; - - // enum TMaxRecordCountRestrictionType - const TMaxRecordCountRestrictionType = - "mrcrtNone " + "mrcrtUser " + "mrcrtMaximal " + "mrcrtCustom "; - - // enum TRangeValueType - const TRangeValueType = - "vtEqual " + "vtGreaterOrEqual " + "vtLessOrEqual " + "vtRange "; - - // enum TRelativeDate - const TRelativeDate = - "rdYesterday " - + "rdToday " - + "rdTomorrow " - + "rdThisWeek " - + "rdThisMonth " - + "rdThisYear " - + "rdNextMonth " - + "rdNextWeek " - + "rdLastWeek " - + "rdLastMonth "; - - // enum TReportDestination - const TReportDestination = "rdWindow " + "rdFile " + "rdPrinter "; - - // enum TReqDataType - const TReqDataType = - "rdtString " - + "rdtNumeric " - + "rdtInteger " - + "rdtDate " - + "rdtReference " - + "rdtAccount " - + "rdtText " - + "rdtPick " - + "rdtUnknown " - + "rdtLargeInteger " - + "rdtDocument "; - - // enum TRequisiteEventType - const TRequisiteEventType = "reOnChange " + "reOnChangeValues "; - - // enum TSBTimeType - const TSBTimeType = "ttGlobal " + "ttLocal " + "ttUser " + "ttSystem "; - - // enum TSearchShowMode - const TSearchShowMode = - "ssmBrowse " + "ssmSelect " + "ssmMultiSelect " + "ssmBrowseModal "; - - // enum TSelectMode - const TSelectMode = "smSelect " + "smLike " + "smCard "; - - // enum TSignatureType - const TSignatureType = "stNone " + "stAuthenticating " + "stApproving "; - - // enum TSignerContentType - const TSignerContentType = "sctString " + "sctStream "; - - // enum TStringsSortType - const TStringsSortType = "sstAnsiSort " + "sstNaturalSort "; - - // enum TStringValueType - const TStringValueType = "svtEqual " + "svtContain "; - - // enum TStructuredObjectAttributeType - const TStructuredObjectAttributeType = - "soatString " - + "soatNumeric " - + "soatInteger " - + "soatDatetime " - + "soatReferenceRecord " - + "soatText " - + "soatPick " - + "soatBoolean " - + "soatEDocument " - + "soatAccount " - + "soatIntegerCollection " - + "soatNumericCollection " - + "soatStringCollection " - + "soatPickCollection " - + "soatDatetimeCollection " - + "soatBooleanCollection " - + "soatReferenceRecordCollection " - + "soatEDocumentCollection " - + "soatAccountCollection " - + "soatContents " - + "soatUnknown "; - - // enum TTaskAbortReason - const TTaskAbortReason = "tarAbortByUser " + "tarAbortByWorkflowException "; - - // enum TTextValueType - const TTextValueType = "tvtAllWords " + "tvtExactPhrase " + "tvtAnyWord "; - - // enum TUserObjectStatus - const TUserObjectStatus = - "usNone " - + "usCompleted " - + "usRedSquare " - + "usBlueSquare " - + "usYellowSquare " - + "usGreenSquare " - + "usOrangeSquare " - + "usPurpleSquare " - + "usFollowUp "; - - // enum TUserType - const TUserType = - "utUnknown " - + "utUser " - + "utDeveloper " - + "utAdministrator " - + "utSystemDeveloper " - + "utDisconnected "; - - // enum TValuesBuildType - const TValuesBuildType = - "btAnd " + "btDetailAnd " + "btOr " + "btNotOr " + "btOnly "; - - // enum TViewMode - const TViewMode = "vmView " + "vmSelect " + "vmNavigation "; - - // enum TViewSelectionMode - const TViewSelectionMode = - "vsmSingle " + "vsmMultiple " + "vsmMultipleCheck " + "vsmNoSelection "; - - // enum TWizardActionType - const TWizardActionType = - "wfatPrevious " + "wfatNext " + "wfatCancel " + "wfatFinish "; - - // enum TWizardFormElementProperty - const TWizardFormElementProperty = - "wfepUndefined " - + "wfepText3 " - + "wfepText6 " - + "wfepText9 " - + "wfepSpinEdit " - + "wfepDropDown " - + "wfepRadioGroup " - + "wfepFlag " - + "wfepText12 " - + "wfepText15 " - + "wfepText18 " - + "wfepText21 " - + "wfepText24 " - + "wfepText27 " - + "wfepText30 " - + "wfepRadioGroupColumn1 " - + "wfepRadioGroupColumn2 " - + "wfepRadioGroupColumn3 "; - - // enum TWizardFormElementType - const TWizardFormElementType = - "wfetQueryParameter " + "wfetText " + "wfetDelimiter " + "wfetLabel "; - - // enum TWizardParamType - const TWizardParamType = - "wptString " - + "wptInteger " - + "wptNumeric " - + "wptBoolean " - + "wptDateTime " - + "wptPick " - + "wptText " - + "wptUser " - + "wptUserList " - + "wptEDocumentInfo " - + "wptEDocumentInfoList " - + "wptReferenceRecordInfo " - + "wptReferenceRecordInfoList " - + "wptFolderInfo " - + "wptTaskInfo " - + "wptContents " - + "wptFileName " - + "wptDate "; - - // enum TWizardStepResult - const TWizardStepResult = - "wsrComplete " - + "wsrGoNext " - + "wsrGoPrevious " - + "wsrCustom " - + "wsrCancel " - + "wsrGoFinal "; - - // enum TWizardStepType - const TWizardStepType = - "wstForm " - + "wstEDocument " - + "wstTaskCard " - + "wstReferenceRecordCard " - + "wstFinal "; - - // enum TWorkAccessType - const TWorkAccessType = "waAll " + "waPerformers " + "waManual "; - - // enum TWorkflowBlockType - const TWorkflowBlockType = - "wsbStart " - + "wsbFinish " - + "wsbNotice " - + "wsbStep " - + "wsbDecision " - + "wsbWait " - + "wsbMonitor " - + "wsbScript " - + "wsbConnector " - + "wsbSubTask " - + "wsbLifeCycleStage " - + "wsbPause "; - - // enum TWorkflowDataType - const TWorkflowDataType = - "wdtInteger " - + "wdtFloat " - + "wdtString " - + "wdtPick " - + "wdtDateTime " - + "wdtBoolean " - + "wdtTask " - + "wdtJob " - + "wdtFolder " - + "wdtEDocument " - + "wdtReferenceRecord " - + "wdtUser " - + "wdtGroup " - + "wdtRole " - + "wdtIntegerCollection " - + "wdtFloatCollection " - + "wdtStringCollection " - + "wdtPickCollection " - + "wdtDateTimeCollection " - + "wdtBooleanCollection " - + "wdtTaskCollection " - + "wdtJobCollection " - + "wdtFolderCollection " - + "wdtEDocumentCollection " - + "wdtReferenceRecordCollection " - + "wdtUserCollection " - + "wdtGroupCollection " - + "wdtRoleCollection " - + "wdtContents " - + "wdtUserList " - + "wdtSearchDescription " - + "wdtDeadLine " - + "wdtPickSet " - + "wdtAccountCollection "; - - // enum TWorkImportance - const TWorkImportance = "wiLow " + "wiNormal " + "wiHigh "; - - // enum TWorkRouteType - const TWorkRouteType = "wrtSoft " + "wrtHard "; - - // enum TWorkState - const TWorkState = - "wsInit " - + "wsRunning " - + "wsDone " - + "wsControlled " - + "wsAborted " - + "wsContinued "; - - // enum TWorkTextBuildingMode - const TWorkTextBuildingMode = - "wtmFull " + "wtmFromCurrent " + "wtmOnlyCurrent "; - - // Перечисления - const ENUMS = - TAccountType - + TActionEnabledMode - + TAddPosition - + TAlignment - + TAreaShowMode - + TCertificateInvalidationReason - + TCertificateType - + TCheckListBoxItemState - + TCloseOnEsc - + TCompType - + TConditionFormat - + TConnectionIntent - + TContentKind - + TControlType - + TCriterionContentType - + TCultureType - + TDataSetEventType - + TDataSetState - + TDateFormatType - + TDateOffsetType - + TDateTimeKind - + TDeaAccessRights - + TDocumentDefaultAction - + TEditMode - + TEditorCloseObservType - + TEdmsApplicationAction - + TEDocumentLockType - + TEDocumentStepShowMode - + TEDocumentStepVersionType - + TEDocumentStorageFunction - + TEDocumentStorageType - + TEDocumentVersionSourceType - + TEDocumentVersionState - + TEncodeType - + TExceptionCategory - + TExportedSignaturesType - + TExportedVersionType - + TFieldDataType - + TFolderType - + TGridRowHeight - + THyperlinkType - + TImageFileFormat - + TImageMode - + TImageType - + TInplaceHintKind - + TISBLContext - + TItemShow - + TJobKind - + TJoinType - + TLabelPos - + TLicensingType - + TLifeCycleStageFontColor - + TLifeCycleStageFontStyle - + TLockableDevelopmentComponentType - + TMaxRecordCountRestrictionType - + TRangeValueType - + TRelativeDate - + TReportDestination - + TReqDataType - + TRequisiteEventType - + TSBTimeType - + TSearchShowMode - + TSelectMode - + TSignatureType - + TSignerContentType - + TStringsSortType - + TStringValueType - + TStructuredObjectAttributeType - + TTaskAbortReason - + TTextValueType - + TUserObjectStatus - + TUserType - + TValuesBuildType - + TViewMode - + TViewSelectionMode - + TWizardActionType - + TWizardFormElementProperty - + TWizardFormElementType - + TWizardParamType - + TWizardStepResult - + TWizardStepType - + TWorkAccessType - + TWorkflowBlockType - + TWorkflowDataType - + TWorkImportance - + TWorkRouteType - + TWorkState - + TWorkTextBuildingMode; - - // Системные функции ==> SYSFUNCTIONS - const system_functions = - "AddSubString " - + "AdjustLineBreaks " - + "AmountInWords " - + "Analysis " - + "ArrayDimCount " - + "ArrayHighBound " - + "ArrayLowBound " - + "ArrayOf " - + "ArrayReDim " - + "Assert " - + "Assigned " - + "BeginOfMonth " - + "BeginOfPeriod " - + "BuildProfilingOperationAnalysis " - + "CallProcedure " - + "CanReadFile " - + "CArrayElement " - + "CDataSetRequisite " - + "ChangeDate " - + "ChangeReferenceDataset " - + "Char " - + "CharPos " - + "CheckParam " - + "CheckParamValue " - + "CompareStrings " - + "ConstantExists " - + "ControlState " - + "ConvertDateStr " - + "Copy " - + "CopyFile " - + "CreateArray " - + "CreateCachedReference " - + "CreateConnection " - + "CreateDialog " - + "CreateDualListDialog " - + "CreateEditor " - + "CreateException " - + "CreateFile " - + "CreateFolderDialog " - + "CreateInputDialog " - + "CreateLinkFile " - + "CreateList " - + "CreateLock " - + "CreateMemoryDataSet " - + "CreateObject " - + "CreateOpenDialog " - + "CreateProgress " - + "CreateQuery " - + "CreateReference " - + "CreateReport " - + "CreateSaveDialog " - + "CreateScript " - + "CreateSQLPivotFunction " - + "CreateStringList " - + "CreateTreeListSelectDialog " - + "CSelectSQL " - + "CSQL " - + "CSubString " - + "CurrentUserID " - + "CurrentUserName " - + "CurrentVersion " - + "DataSetLocateEx " - + "DateDiff " - + "DateTimeDiff " - + "DateToStr " - + "DayOfWeek " - + "DeleteFile " - + "DirectoryExists " - + "DisableCheckAccessRights " - + "DisableCheckFullShowingRestriction " - + "DisableMassTaskSendingRestrictions " - + "DropTable " - + "DupeString " - + "EditText " - + "EnableCheckAccessRights " - + "EnableCheckFullShowingRestriction " - + "EnableMassTaskSendingRestrictions " - + "EndOfMonth " - + "EndOfPeriod " - + "ExceptionExists " - + "ExceptionsOff " - + "ExceptionsOn " - + "Execute " - + "ExecuteProcess " - + "Exit " - + "ExpandEnvironmentVariables " - + "ExtractFileDrive " - + "ExtractFileExt " - + "ExtractFileName " - + "ExtractFilePath " - + "ExtractParams " - + "FileExists " - + "FileSize " - + "FindFile " - + "FindSubString " - + "FirmContext " - + "ForceDirectories " - + "Format " - + "FormatDate " - + "FormatNumeric " - + "FormatSQLDate " - + "FormatString " - + "FreeException " - + "GetComponent " - + "GetComponentLaunchParam " - + "GetConstant " - + "GetLastException " - + "GetReferenceRecord " - + "GetRefTypeByRefID " - + "GetTableID " - + "GetTempFolder " - + "IfThen " - + "In " - + "IndexOf " - + "InputDialog " - + "InputDialogEx " - + "InteractiveMode " - + "IsFileLocked " - + "IsGraphicFile " - + "IsNumeric " - + "Length " - + "LoadString " - + "LoadStringFmt " - + "LocalTimeToUTC " - + "LowerCase " - + "Max " - + "MessageBox " - + "MessageBoxEx " - + "MimeDecodeBinary " - + "MimeDecodeString " - + "MimeEncodeBinary " - + "MimeEncodeString " - + "Min " - + "MoneyInWords " - + "MoveFile " - + "NewID " - + "Now " - + "OpenFile " - + "Ord " - + "Precision " - + "Raise " - + "ReadCertificateFromFile " - + "ReadFile " - + "ReferenceCodeByID " - + "ReferenceNumber " - + "ReferenceRequisiteMode " - + "ReferenceRequisiteValue " - + "RegionDateSettings " - + "RegionNumberSettings " - + "RegionTimeSettings " - + "RegRead " - + "RegWrite " - + "RenameFile " - + "Replace " - + "Round " - + "SelectServerCode " - + "SelectSQL " - + "ServerDateTime " - + "SetConstant " - + "SetManagedFolderFieldsState " - + "ShowConstantsInputDialog " - + "ShowMessage " - + "Sleep " - + "Split " - + "SQL " - + "SQL2XLSTAB " - + "SQLProfilingSendReport " - + "StrToDate " - + "SubString " - + "SubStringCount " - + "SystemSetting " - + "Time " - + "TimeDiff " - + "Today " - + "Transliterate " - + "Trim " - + "UpperCase " - + "UserStatus " - + "UTCToLocalTime " - + "ValidateXML " - + "VarIsClear " - + "VarIsEmpty " - + "VarIsNull " - + "WorkTimeDiff " - + "WriteFile " - + "WriteFileEx " - + "WriteObjectHistory " - + "Анализ " - + "БазаДанных " - + "БлокЕсть " - + "БлокЕстьРасш " - + "БлокИнфо " - + "БлокСнять " - + "БлокСнятьРасш " - + "БлокУстановить " - + "Ввод " - + "ВводМеню " - + "ВедС " - + "ВедСпр " - + "ВерхняяГраницаМассива " - + "ВнешПрогр " - + "Восст " - + "ВременнаяПапка " - + "Время " - + "ВыборSQL " - + "ВыбратьЗапись " - + "ВыделитьСтр " - + "Вызвать " - + "Выполнить " - + "ВыпПрогр " - + "ГрафическийФайл " - + "ГруппаДополнительно " - + "ДатаВремяСерв " - + "ДеньНедели " - + "ДиалогДаНет " - + "ДлинаСтр " - + "ДобПодстр " - + "ЕПусто " - + "ЕслиТо " - + "ЕЧисло " - + "ЗамПодстр " - + "ЗаписьСправочника " - + "ЗначПоляСпр " - + "ИДТипСпр " - + "ИзвлечьДиск " - + "ИзвлечьИмяФайла " - + "ИзвлечьПуть " - + "ИзвлечьРасширение " - + "ИзмДат " - + "ИзменитьРазмерМассива " - + "ИзмеренийМассива " - + "ИмяОрг " - + "ИмяПоляСпр " - + "Индекс " - + "ИндикаторЗакрыть " - + "ИндикаторОткрыть " - + "ИндикаторШаг " - + "ИнтерактивныйРежим " - + "ИтогТблСпр " - + "КодВидВедСпр " - + "КодВидСпрПоИД " - + "КодПоAnalit " - + "КодСимвола " - + "КодСпр " - + "КолПодстр " - + "КолПроп " - + "КонМес " - + "Конст " - + "КонстЕсть " - + "КонстЗнач " - + "КонТран " - + "КопироватьФайл " - + "КопияСтр " - + "КПериод " - + "КСтрТблСпр " - + "Макс " - + "МаксСтрТблСпр " - + "Массив " - + "Меню " - + "МенюРасш " - + "Мин " - + "НаборДанныхНайтиРасш " - + "НаимВидСпр " - + "НаимПоAnalit " - + "НаимСпр " - + "НастроитьПереводыСтрок " - + "НачМес " - + "НачТран " - + "НижняяГраницаМассива " - + "НомерСпр " - + "НПериод " - + "Окно " - + "Окр " - + "Окружение " - + "ОтлИнфДобавить " - + "ОтлИнфУдалить " - + "Отчет " - + "ОтчетАнал " - + "ОтчетИнт " - + "ПапкаСуществует " - + "Пауза " - + "ПВыборSQL " - + "ПереименоватьФайл " - + "Переменные " - + "ПереместитьФайл " - + "Подстр " - + "ПоискПодстр " - + "ПоискСтр " - + "ПолучитьИДТаблицы " - + "ПользовательДополнительно " - + "ПользовательИД " - + "ПользовательИмя " - + "ПользовательСтатус " - + "Прервать " - + "ПроверитьПараметр " - + "ПроверитьПараметрЗнач " - + "ПроверитьУсловие " - + "РазбСтр " - + "РазнВремя " - + "РазнДат " - + "РазнДатаВремя " - + "РазнРабВремя " - + "РегУстВрем " - + "РегУстДат " - + "РегУстЧсл " - + "РедТекст " - + "РеестрЗапись " - + "РеестрСписокИменПарам " - + "РеестрЧтение " - + "РеквСпр " - + "РеквСпрПр " - + "Сегодня " - + "Сейчас " - + "Сервер " - + "СерверПроцессИД " - + "СертификатФайлСчитать " - + "СжПроб " - + "Символ " - + "СистемаДиректумКод " - + "СистемаИнформация " - + "СистемаКод " - + "Содержит " - + "СоединениеЗакрыть " - + "СоединениеОткрыть " - + "СоздатьДиалог " - + "СоздатьДиалогВыбораИзДвухСписков " - + "СоздатьДиалогВыбораПапки " - + "СоздатьДиалогОткрытияФайла " - + "СоздатьДиалогСохраненияФайла " - + "СоздатьЗапрос " - + "СоздатьИндикатор " - + "СоздатьИсключение " - + "СоздатьКэшированныйСправочник " - + "СоздатьМассив " - + "СоздатьНаборДанных " - + "СоздатьОбъект " - + "СоздатьОтчет " - + "СоздатьПапку " - + "СоздатьРедактор " - + "СоздатьСоединение " - + "СоздатьСписок " - + "СоздатьСписокСтрок " - + "СоздатьСправочник " - + "СоздатьСценарий " - + "СоздСпр " - + "СостСпр " - + "Сохр " - + "СохрСпр " - + "СписокСистем " - + "Спр " - + "Справочник " - + "СпрБлокЕсть " - + "СпрБлокСнять " - + "СпрБлокСнятьРасш " - + "СпрБлокУстановить " - + "СпрИзмНабДан " - + "СпрКод " - + "СпрНомер " - + "СпрОбновить " - + "СпрОткрыть " - + "СпрОтменить " - + "СпрПарам " - + "СпрПолеЗнач " - + "СпрПолеИмя " - + "СпрРекв " - + "СпрРеквВведЗн " - + "СпрРеквНовые " - + "СпрРеквПр " - + "СпрРеквПредЗн " - + "СпрРеквРежим " - + "СпрРеквТипТекст " - + "СпрСоздать " - + "СпрСост " - + "СпрСохранить " - + "СпрТблИтог " - + "СпрТблСтр " - + "СпрТблСтрКол " - + "СпрТблСтрМакс " - + "СпрТблСтрМин " - + "СпрТблСтрПред " - + "СпрТблСтрСлед " - + "СпрТблСтрСозд " - + "СпрТблСтрУд " - + "СпрТекПредст " - + "СпрУдалить " - + "СравнитьСтр " - + "СтрВерхРегистр " - + "СтрНижнРегистр " - + "СтрТблСпр " - + "СумПроп " - + "Сценарий " - + "СценарийПарам " - + "ТекВерсия " - + "ТекОрг " - + "Точн " - + "Тран " - + "Транслитерация " - + "УдалитьТаблицу " - + "УдалитьФайл " - + "УдСпр " - + "УдСтрТблСпр " - + "Уст " - + "УстановкиКонстант " - + "ФайлАтрибутСчитать " - + "ФайлАтрибутУстановить " - + "ФайлВремя " - + "ФайлВремяУстановить " - + "ФайлВыбрать " - + "ФайлЗанят " - + "ФайлЗаписать " - + "ФайлИскать " - + "ФайлКопировать " - + "ФайлМожноЧитать " - + "ФайлОткрыть " - + "ФайлПереименовать " - + "ФайлПерекодировать " - + "ФайлПереместить " - + "ФайлПросмотреть " - + "ФайлРазмер " - + "ФайлСоздать " - + "ФайлСсылкаСоздать " - + "ФайлСуществует " - + "ФайлСчитать " - + "ФайлУдалить " - + "ФмтSQLДат " - + "ФмтДат " - + "ФмтСтр " - + "ФмтЧсл " - + "Формат " - + "ЦМассивЭлемент " - + "ЦНаборДанныхРеквизит " - + "ЦПодстр "; - - // Предопределенные переменные ==> built_in - const predefined_variables = - "AltState " - + "Application " - + "CallType " - + "ComponentTokens " - + "CreatedJobs " - + "CreatedNotices " - + "ControlState " - + "DialogResult " - + "Dialogs " - + "EDocuments " - + "EDocumentVersionSource " - + "Folders " - + "GlobalIDs " - + "Job " - + "Jobs " - + "InputValue " - + "LookUpReference " - + "LookUpRequisiteNames " - + "LookUpSearch " - + "Object " - + "ParentComponent " - + "Processes " - + "References " - + "Requisite " - + "ReportName " - + "Reports " - + "Result " - + "Scripts " - + "Searches " - + "SelectedAttachments " - + "SelectedItems " - + "SelectMode " - + "Sender " - + "ServerEvents " - + "ServiceFactory " - + "ShiftState " - + "SubTask " - + "SystemDialogs " - + "Tasks " - + "Wizard " - + "Wizards " - + "Work " - + "ВызовСпособ " - + "ИмяОтчета " - + "РеквЗнач "; - - // Интерфейсы ==> type - const interfaces = - "IApplication " - + "IAccessRights " - + "IAccountRepository " - + "IAccountSelectionRestrictions " - + "IAction " - + "IActionList " - + "IAdministrationHistoryDescription " - + "IAnchors " - + "IApplication " - + "IArchiveInfo " - + "IAttachment " - + "IAttachmentList " - + "ICheckListBox " - + "ICheckPointedList " - + "IColumn " - + "IComponent " - + "IComponentDescription " - + "IComponentToken " - + "IComponentTokenFactory " - + "IComponentTokenInfo " - + "ICompRecordInfo " - + "IConnection " - + "IContents " - + "IControl " - + "IControlJob " - + "IControlJobInfo " - + "IControlList " - + "ICrypto " - + "ICrypto2 " - + "ICustomJob " - + "ICustomJobInfo " - + "ICustomListBox " - + "ICustomObjectWizardStep " - + "ICustomWork " - + "ICustomWorkInfo " - + "IDataSet " - + "IDataSetAccessInfo " - + "IDataSigner " - + "IDateCriterion " - + "IDateRequisite " - + "IDateRequisiteDescription " - + "IDateValue " - + "IDeaAccessRights " - + "IDeaObjectInfo " - + "IDevelopmentComponentLock " - + "IDialog " - + "IDialogFactory " - + "IDialogPickRequisiteItems " - + "IDialogsFactory " - + "IDICSFactory " - + "IDocRequisite " - + "IDocumentInfo " - + "IDualListDialog " - + "IECertificate " - + "IECertificateInfo " - + "IECertificates " - + "IEditControl " - + "IEditorForm " - + "IEdmsExplorer " - + "IEdmsObject " - + "IEdmsObjectDescription " - + "IEdmsObjectFactory " - + "IEdmsObjectInfo " - + "IEDocument " - + "IEDocumentAccessRights " - + "IEDocumentDescription " - + "IEDocumentEditor " - + "IEDocumentFactory " - + "IEDocumentInfo " - + "IEDocumentStorage " - + "IEDocumentVersion " - + "IEDocumentVersionListDialog " - + "IEDocumentVersionSource " - + "IEDocumentWizardStep " - + "IEDocVerSignature " - + "IEDocVersionState " - + "IEnabledMode " - + "IEncodeProvider " - + "IEncrypter " - + "IEvent " - + "IEventList " - + "IException " - + "IExternalEvents " - + "IExternalHandler " - + "IFactory " - + "IField " - + "IFileDialog " - + "IFolder " - + "IFolderDescription " - + "IFolderDialog " - + "IFolderFactory " - + "IFolderInfo " - + "IForEach " - + "IForm " - + "IFormTitle " - + "IFormWizardStep " - + "IGlobalIDFactory " - + "IGlobalIDInfo " - + "IGrid " - + "IHasher " - + "IHistoryDescription " - + "IHyperLinkControl " - + "IImageButton " - + "IImageControl " - + "IInnerPanel " - + "IInplaceHint " - + "IIntegerCriterion " - + "IIntegerList " - + "IIntegerRequisite " - + "IIntegerValue " - + "IISBLEditorForm " - + "IJob " - + "IJobDescription " - + "IJobFactory " - + "IJobForm " - + "IJobInfo " - + "ILabelControl " - + "ILargeIntegerCriterion " - + "ILargeIntegerRequisite " - + "ILargeIntegerValue " - + "ILicenseInfo " - + "ILifeCycleStage " - + "IList " - + "IListBox " - + "ILocalIDInfo " - + "ILocalization " - + "ILock " - + "IMemoryDataSet " - + "IMessagingFactory " - + "IMetadataRepository " - + "INotice " - + "INoticeInfo " - + "INumericCriterion " - + "INumericRequisite " - + "INumericValue " - + "IObject " - + "IObjectDescription " - + "IObjectImporter " - + "IObjectInfo " - + "IObserver " - + "IPanelGroup " - + "IPickCriterion " - + "IPickProperty " - + "IPickRequisite " - + "IPickRequisiteDescription " - + "IPickRequisiteItem " - + "IPickRequisiteItems " - + "IPickValue " - + "IPrivilege " - + "IPrivilegeList " - + "IProcess " - + "IProcessFactory " - + "IProcessMessage " - + "IProgress " - + "IProperty " - + "IPropertyChangeEvent " - + "IQuery " - + "IReference " - + "IReferenceCriterion " - + "IReferenceEnabledMode " - + "IReferenceFactory " - + "IReferenceHistoryDescription " - + "IReferenceInfo " - + "IReferenceRecordCardWizardStep " - + "IReferenceRequisiteDescription " - + "IReferencesFactory " - + "IReferenceValue " - + "IRefRequisite " - + "IReport " - + "IReportFactory " - + "IRequisite " - + "IRequisiteDescription " - + "IRequisiteDescriptionList " - + "IRequisiteFactory " - + "IRichEdit " - + "IRouteStep " - + "IRule " - + "IRuleList " - + "ISchemeBlock " - + "IScript " - + "IScriptFactory " - + "ISearchCriteria " - + "ISearchCriterion " - + "ISearchDescription " - + "ISearchFactory " - + "ISearchFolderInfo " - + "ISearchForObjectDescription " - + "ISearchResultRestrictions " - + "ISecuredContext " - + "ISelectDialog " - + "IServerEvent " - + "IServerEventFactory " - + "IServiceDialog " - + "IServiceFactory " - + "ISignature " - + "ISignProvider " - + "ISignProvider2 " - + "ISignProvider3 " - + "ISimpleCriterion " - + "IStringCriterion " - + "IStringList " - + "IStringRequisite " - + "IStringRequisiteDescription " - + "IStringValue " - + "ISystemDialogsFactory " - + "ISystemInfo " - + "ITabSheet " - + "ITask " - + "ITaskAbortReasonInfo " - + "ITaskCardWizardStep " - + "ITaskDescription " - + "ITaskFactory " - + "ITaskInfo " - + "ITaskRoute " - + "ITextCriterion " - + "ITextRequisite " - + "ITextValue " - + "ITreeListSelectDialog " - + "IUser " - + "IUserList " - + "IValue " - + "IView " - + "IWebBrowserControl " - + "IWizard " - + "IWizardAction " - + "IWizardFactory " - + "IWizardFormElement " - + "IWizardParam " - + "IWizardPickParam " - + "IWizardReferenceParam " - + "IWizardStep " - + "IWorkAccessRights " - + "IWorkDescription " - + "IWorkflowAskableParam " - + "IWorkflowAskableParams " - + "IWorkflowBlock " - + "IWorkflowBlockResult " - + "IWorkflowEnabledMode " - + "IWorkflowParam " - + "IWorkflowPickParam " - + "IWorkflowReferenceParam " - + "IWorkState " - + "IWorkTreeCustomNode " - + "IWorkTreeJobNode " - + "IWorkTreeTaskNode " - + "IXMLEditorForm " - + "SBCrypto "; - - // built_in : встроенные или библиотечные объекты (константы, перечисления) - const BUILTIN = CONSTANTS + ENUMS; - - // class: встроенные наборы значений, системные объекты, фабрики - const CLASS = predefined_variables; - - // literal : примитивные типы - const LITERAL = "null true false nil "; - - // number : числа - const NUMBERS = { - className: "number", - begin: hljs.NUMBER_RE, - relevance: 0 - }; - - // string : строки - const STRINGS = { - className: "string", - variants: [ - { - begin: '"', - end: '"' - }, - { - begin: "'", - end: "'" - } - ] - }; - - // Токены - const DOCTAGS = { - className: "doctag", - begin: "\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b", - relevance: 0 - }; - - // Однострочный комментарий - const ISBL_LINE_COMMENT_MODE = { - className: "comment", - begin: "//", - end: "$", - relevance: 0, - contains: [ - hljs.PHRASAL_WORDS_MODE, - DOCTAGS - ] - }; - - // Многострочный комментарий - const ISBL_BLOCK_COMMENT_MODE = { - className: "comment", - begin: "/\\*", - end: "\\*/", - relevance: 0, - contains: [ - hljs.PHRASAL_WORDS_MODE, - DOCTAGS - ] - }; - - // comment : комментарии - const COMMENTS = { variants: [ - ISBL_LINE_COMMENT_MODE, - ISBL_BLOCK_COMMENT_MODE - ] }; - - // keywords : ключевые слова - const KEYWORDS = { - $pattern: UNDERSCORE_IDENT_RE, - keyword: KEYWORD, - built_in: BUILTIN, - class: CLASS, - literal: LITERAL - }; - - // methods : методы - const METHODS = { - begin: "\\.\\s*" + hljs.UNDERSCORE_IDENT_RE, - keywords: KEYWORDS, - relevance: 0 - }; - - // type : встроенные типы - const TYPES = { - className: "type", - begin: ":[ \\t]*(" + interfaces.trim().replace(/\s/g, "|") + ")", - end: "[ \\t]*=", - excludeEnd: true - }; - - // variables : переменные - const VARIABLES = { - className: "variable", - keywords: KEYWORDS, - begin: UNDERSCORE_IDENT_RE, - relevance: 0, - contains: [ - TYPES, - METHODS - ] - }; - - // Имена функций - const FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + "\\("; - - const TITLE_MODE = { - className: "title", - keywords: { - $pattern: UNDERSCORE_IDENT_RE, - built_in: system_functions - }, - begin: FUNCTION_TITLE, - end: "\\(", - returnBegin: true, - excludeEnd: true - }; - - // function : функции - const FUNCTIONS = { - className: "function", - begin: FUNCTION_TITLE, - end: "\\)$", - returnBegin: true, - keywords: KEYWORDS, - illegal: "[\\[\\]\\|\\$\\?%,~#@]", - contains: [ - TITLE_MODE, - METHODS, - VARIABLES, - STRINGS, - NUMBERS, - COMMENTS - ] - }; - - return { - name: 'ISBL', - case_insensitive: true, - keywords: KEYWORDS, - illegal: "\\$|\\?|%|,|;$|~|#|@| -Category: common, enterprise -Website: https://www.java.com/ -*/ - - -/** - * Allows recursive regex expressions to a given depth - * - * ie: recurRegex("(abc~~~)", /~~~/g, 2) becomes: - * (abc(abc(abc))) - * - * @param {string} re - * @param {RegExp} substitution (should be a g mode regex) - * @param {number} depth - * @returns {string}`` - */ -function recurRegex(re, substitution, depth) { - if (depth === -1) return ""; - - return re.replace(substitution, _ => { - return recurRegex(re, substitution, depth - 1); - }); -} - -/** @type LanguageFn */ -function java(hljs) { - const regex = hljs.regex; - const JAVA_IDENT_RE = '[\u00C0-\u02B8a-zA-Z_$][\u00C0-\u02B8a-zA-Z_$0-9]*'; - const GENERIC_IDENT_RE = JAVA_IDENT_RE - + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\s*,\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2); - const MAIN_KEYWORDS = [ - 'synchronized', - 'abstract', - 'private', - 'var', - 'static', - 'if', - 'const ', - 'for', - 'while', - 'strictfp', - 'finally', - 'protected', - 'import', - 'native', - 'final', - 'void', - 'enum', - 'else', - 'break', - 'transient', - 'catch', - 'instanceof', - 'volatile', - 'case', - 'assert', - 'package', - 'default', - 'public', - 'try', - 'switch', - 'continue', - 'throws', - 'protected', - 'public', - 'private', - 'module', - 'requires', - 'exports', - 'do', - 'sealed', - 'yield', - 'permits', - 'goto', - 'when' - ]; - - const BUILT_INS = [ - 'super', - 'this' - ]; - - const LITERALS = [ - 'false', - 'true', - 'null' - ]; - - const TYPES = [ - 'char', - 'boolean', - 'long', - 'float', - 'int', - 'byte', - 'short', - 'double' - ]; - - const KEYWORDS = { - keyword: MAIN_KEYWORDS, - literal: LITERALS, - type: TYPES, - built_in: BUILT_INS - }; - - const ANNOTATION = { - className: 'meta', - begin: '@' + JAVA_IDENT_RE, - contains: [ - { - begin: /\(/, - end: /\)/, - contains: [ "self" ] // allow nested () inside our annotation - } - ] - }; - const PARAMS = { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - relevance: 0, - contains: [ hljs.C_BLOCK_COMMENT_MODE ], - endsParent: true - }; - - return { - name: 'Java', - aliases: [ 'jsp' ], - keywords: KEYWORDS, - illegal: /<\/|#/, - contains: [ - hljs.COMMENT( - '/\\*\\*', - '\\*/', - { - relevance: 0, - contains: [ - { - // eat up @'s in emails to prevent them to be recognized as doctags - begin: /\w+@/, - relevance: 0 - }, - { - className: 'doctag', - begin: '@[A-Za-z]+' - } - ] - } - ), - // relevance boost - { - begin: /import java\.[a-z]+\./, - keywords: "import", - relevance: 2 - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - begin: /"""/, - end: /"""/, - className: "string", - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - match: [ - /\b(?:class|interface|enum|extends|implements|new)/, - /\s+/, - JAVA_IDENT_RE - ], - className: { - 1: "keyword", - 3: "title.class" - } - }, - { - // Exceptions for hyphenated keywords - match: /non-sealed/, - scope: "keyword" - }, - { - begin: [ - regex.concat(/(?!else)/, JAVA_IDENT_RE), - /\s+/, - JAVA_IDENT_RE, - /\s+/, - /=(?!=)/ - ], - className: { - 1: "type", - 3: "variable", - 5: "operator" - } - }, - { - begin: [ - /record/, - /\s+/, - JAVA_IDENT_RE - ], - className: { - 1: "keyword", - 3: "title.class" - }, - contains: [ - PARAMS, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - { - // Expression keywords prevent 'keyword Name(...)' from being - // recognized as a function definition - beginKeywords: 'new throw return else', - relevance: 0 - }, - { - begin: [ - '(?:' + GENERIC_IDENT_RE + '\\s+)', - hljs.UNDERSCORE_IDENT_RE, - /\s*(?=\()/ - ], - className: { 2: "title.function" }, - keywords: KEYWORDS, - contains: [ - { - className: 'params', - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - relevance: 0, - contains: [ - ANNOTATION, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - NUMERIC, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - NUMERIC, - ANNOTATION - ] - }; -} - -module.exports = java; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/javascript.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/javascript.js ***! - \*******************************************************************/ -(module) { - -const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; -const KEYWORDS = [ - "as", // for exports - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - // JS handles these with a special rule - // "get", - // "set", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - // It's reached stage 3, which is "recommended for implementation": - "using" -]; -const LITERALS = [ - "true", - "false", - "null", - "undefined", - "NaN", - "Infinity" -]; - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects -const TYPES = [ - // Fundamental objects - "Object", - "Function", - "Boolean", - "Symbol", - // numbers and dates - "Math", - "Date", - "Number", - "BigInt", - // text - "String", - "RegExp", - // Indexed collections - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - // Keyed collections - "Set", - "Map", - "WeakSet", - "WeakMap", - // Structured data - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - // Control abstraction objects - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - // Reflection - "Reflect", - "Proxy", - // Internationalization - "Intl", - // WebAssembly - "WebAssembly" -]; - -const ERROR_TYPES = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError" -]; - -const BUILT_IN_GLOBALS = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - - "require", - "exports", - - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape" -]; - -const BUILT_IN_VARIABLES = [ - "arguments", - "this", - "super", - "console", - "window", - "document", - "localStorage", - "sessionStorage", - "module", - "global" // Node.js -]; - -const BUILT_INS = [].concat( - BUILT_IN_GLOBALS, - TYPES, - ERROR_TYPES -); - -/* -Language: JavaScript -Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions. -Category: common, scripting, web -Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript -*/ - - -/** @type LanguageFn */ -function javascript(hljs) { - const regex = hljs.regex; - /** - * Takes a string like " { - const tag = "', - end: '' - }; - // to avoid some special cases inside isTrulyOpeningTag - const XML_SELF_CLOSING = /<[A-Za-z0-9\\._:-]+\s*\/>/; - const XML_TAG = { - begin: /<[A-Za-z0-9\\._:-]+/, - end: /\/[A-Za-z0-9\\._:-]+>|\/>/, - /** - * @param {RegExpMatchArray} match - * @param {CallbackResponse} response - */ - isTrulyOpeningTag: (match, response) => { - const afterMatchIndex = match[0].length + match.index; - const nextChar = match.input[afterMatchIndex]; - if ( - // HTML should not include another raw `<` inside a tag - // nested type? - // `>`, etc. - nextChar === "<" || - // the , gives away that this is not HTML - // `` - nextChar === "," - ) { - response.ignoreMatch(); - return; - } - - // `` - // Quite possibly a tag, lets look for a matching closing tag... - if (nextChar === ">") { - // if we cannot find a matching closing tag, then we - // will ignore it - if (!hasClosingTag(match, { after: afterMatchIndex })) { - response.ignoreMatch(); - } - } - - // `` (self-closing) - // handled by simpleSelfClosing rule - - let m; - const afterMatch = match.input.substring(afterMatchIndex); - - // some more template typing stuff - // (key?: string) => Modify< - if ((m = afterMatch.match(/^\s*=/))) { - response.ignoreMatch(); - return; - } - - // `` - // technically this could be HTML, but it smells like a type - // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276 - if ((m = afterMatch.match(/^\s+extends\s+/))) { - if (m.index === 0) { - response.ignoreMatch(); - // eslint-disable-next-line no-useless-return - return; - } - } - } - }; - const KEYWORDS$1 = { - $pattern: IDENT_RE, - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILT_INS, - "variable.language": BUILT_IN_VARIABLES - }; - - // https://tc39.es/ecma262/#sec-literals-numeric-literals - const decimalDigits = '[0-9](_?[0-9])*'; - const frac = `\\.(${decimalDigits})`; - // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral - // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals - const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`; - const NUMBER = { - className: 'number', - variants: [ - // DecimalLiteral - { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` + - `[eE][+-]?(${decimalDigits})\\b` }, - { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` }, - - // DecimalBigIntegerLiteral - { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` }, - - // NonDecimalIntegerLiteral - { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, - { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, - { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, - - // LegacyOctalIntegerLiteral (does not include underscore separators) - // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals - { begin: "\\b0[0-7]+n?\\b" }, - ], - relevance: 0 - }; - - const SUBST = { - className: 'subst', - begin: '\\$\\{', - end: '\\}', - keywords: KEYWORDS$1, - contains: [] // defined later - }; - const HTML_TEMPLATE = { - begin: '\.?html`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'xml' - } - }; - const CSS_TEMPLATE = { - begin: '\.?css`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'css' - } - }; - const GRAPHQL_TEMPLATE = { - begin: '\.?gql`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'graphql' - } - }; - const TEMPLATE_STRING = { - className: 'string', - begin: '`', - end: '`', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - const JSDOC_COMMENT = hljs.COMMENT( - /\/\*\*(?!\/)/, - '\\*/', - { - relevance: 0, - contains: [ - { - begin: '(?=@[A-Za-z]+)', - relevance: 0, - contains: [ - { - className: 'doctag', - begin: '@[A-Za-z]+' - }, - { - className: 'type', - begin: '\\{', - end: '\\}', - excludeEnd: true, - excludeBegin: true, - relevance: 0 - }, - { - className: 'variable', - begin: IDENT_RE$1 + '(?=\\s*(-)|$)', - endsParent: true, - relevance: 0 - }, - // eat spaces (not newlines) so we can find - // types or variables - { - begin: /(?=[^\n])\s/, - relevance: 0 - } - ] - } - ] - } - ); - const COMMENT = { - className: "comment", - variants: [ - JSDOC_COMMENT, - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_LINE_COMMENT_MODE - ] - }; - const SUBST_INTERNALS = [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER, - // This is intentional: - // See https://github.com/highlightjs/highlight.js/issues/3288 - // hljs.REGEXP_MODE - ]; - SUBST.contains = SUBST_INTERNALS - .concat({ - // we need to pair up {} inside our subst to prevent - // it from ending too early by matching another } - begin: /\{/, - end: /\}/, - keywords: KEYWORDS$1, - contains: [ - "self" - ].concat(SUBST_INTERNALS) - }); - const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains); - const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([ - // eat recursive parens in sub expressions - { - begin: /(\s*)\(/, - end: /\)/, - keywords: KEYWORDS$1, - contains: ["self"].concat(SUBST_AND_COMMENTS) - } - ]); - const PARAMS = { - className: 'params', - // convert this to negative lookbehind in v12 - begin: /(\s*)\(/, // to match the parms with - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - }; - - // ES6 classes - const CLASS_OR_EXTENDS = { - variants: [ - // class Car extends vehicle - { - match: [ - /class/, - /\s+/, - IDENT_RE$1, - /\s+/, - /extends/, - /\s+/, - regex.concat(IDENT_RE$1, "(", regex.concat(/\./, IDENT_RE$1), ")*") - ], - scope: { - 1: "keyword", - 3: "title.class", - 5: "keyword", - 7: "title.class.inherited" - } - }, - // class Car - { - match: [ - /class/, - /\s+/, - IDENT_RE$1 - ], - scope: { - 1: "keyword", - 3: "title.class" - } - }, - - ] - }; - - const CLASS_REFERENCE = { - relevance: 0, - match: - regex.either( - // Hard coded exceptions - /\bJSON/, - // Float32Array, OutT - /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, - // CSSFactory, CSSFactoryT - /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, - // FPs, FPsT - /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/, - // P - // single letters are not highlighted - // BLAH - // this will be flagged as a UPPER_CASE_CONSTANT instead - ), - className: "title.class", - keywords: { - _: [ - // se we still get relevance credit for JS library classes - ...TYPES, - ...ERROR_TYPES - ] - } - }; - - const USE_STRICT = { - label: "use_strict", - className: 'meta', - relevance: 10, - begin: /^\s*['"]use (strict|asm)['"]/ - }; - - const FUNCTION_DEFINITION = { - variants: [ - { - match: [ - /function/, - /\s+/, - IDENT_RE$1, - /(?=\s*\()/ - ] - }, - // anonymous function - { - match: [ - /function/, - /\s*(?=\()/ - ] - } - ], - className: { - 1: "keyword", - 3: "title.function" - }, - label: "func.def", - contains: [ PARAMS ], - illegal: /%/ - }; - - const UPPER_CASE_CONSTANT = { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant" - }; - - function noneOf(list) { - return regex.concat("(?!", list.join("|"), ")"); - } - - const FUNCTION_CALL = { - match: regex.concat( - /\b/, - noneOf([ - ...BUILT_IN_GLOBALS, - "super", - "import" - ].map(x => `${x}\\s*\\(`)), - IDENT_RE$1, regex.lookahead(/\s*\(/)), - className: "title.function", - relevance: 0 - }; - - const PROPERTY_ACCESS = { - begin: regex.concat(/\./, regex.lookahead( - regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/) - )), - end: IDENT_RE$1, - excludeBegin: true, - keywords: "prototype", - className: "property", - relevance: 0 - }; - - const GETTER_OR_SETTER = { - match: [ - /get|set/, - /\s+/, - IDENT_RE$1, - /(?=\()/ - ], - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - { // eat to avoid empty params - begin: /\(\)/ - }, - PARAMS - ] - }; - - const FUNC_LEAD_IN_RE = '(\\(' + - '[^()]*(\\(' + - '[^()]*(\\(' + - '[^()]*' + - '\\)[^()]*)*' + - '\\)[^()]*)*' + - '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>'; - - const FUNCTION_VARIABLE = { - match: [ - /const|var|let/, /\s+/, - IDENT_RE$1, /\s*/, - /=\s*/, - /(async\s*)?/, // async is optional - regex.lookahead(FUNC_LEAD_IN_RE) - ], - keywords: "async", - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - PARAMS - ] - }; - - return { - name: 'JavaScript', - aliases: ['js', 'jsx', 'mjs', 'cjs'], - keywords: KEYWORDS$1, - // this will be extended by TypeScript - exports: { PARAMS_CONTAINS, CLASS_REFERENCE }, - illegal: /#(?![$_A-z])/, - contains: [ - hljs.SHEBANG({ - label: "shebang", - binary: "node", - relevance: 5 - }), - USE_STRICT, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - COMMENT, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER, - CLASS_REFERENCE, - { - scope: 'attr', - match: IDENT_RE$1 + regex.lookahead(':'), - relevance: 0 - }, - FUNCTION_VARIABLE, - { // "value" container - begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', - keywords: 'return throw case', - relevance: 0, - contains: [ - COMMENT, - hljs.REGEXP_MODE, - { - className: 'function', - // we have to count the parens to make sure we actually have the - // correct bounding ( ) before the =>. There could be any number of - // sub-expressions inside also surrounded by parens. - begin: FUNC_LEAD_IN_RE, - returnBegin: true, - end: '\\s*=>', - contains: [ - { - className: 'params', - variants: [ - { - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - }, - { - className: null, - begin: /\(\s*\)/, - skip: true - }, - { - begin: /(\s*)\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - } - ] - } - ] - }, - { // could be a comma delimited list of params to a function call - begin: /,/, - relevance: 0 - }, - { - match: /\s+/, - relevance: 0 - }, - { // JSX - variants: [ - { begin: FRAGMENT.begin, end: FRAGMENT.end }, - { match: XML_SELF_CLOSING }, - { - begin: XML_TAG.begin, - // we carefully check the opening tag to see if it truly - // is a tag and not a false positive - 'on:begin': XML_TAG.isTrulyOpeningTag, - end: XML_TAG.end - } - ], - subLanguage: 'xml', - contains: [ - { - begin: XML_TAG.begin, - end: XML_TAG.end, - skip: true, - contains: ['self'] - } - ] - } - ], - }, - FUNCTION_DEFINITION, - { - // prevent this from getting swallowed up by function - // since they appear "function like" - beginKeywords: "while if switch catch for" - }, - { - // we have to count the parens to make sure we actually have the correct - // bounding ( ). There could be any number of sub-expressions inside - // also surrounded by parens. - begin: '\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE + - '\\(' + // first parens - '[^()]*(\\(' + - '[^()]*(\\(' + - '[^()]*' + - '\\)[^()]*)*' + - '\\)[^()]*)*' + - '\\)\\s*\\{', // end parens - returnBegin:true, - label: "func.def", - contains: [ - PARAMS, - hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" }) - ] - }, - // catch ... so it won't trigger the property rule below - { - match: /\.\.\./, - relevance: 0 - }, - PROPERTY_ACCESS, - // hack: prevents detection of keywords in some circumstances - // .keyword() - // $keyword = x - { - match: '\\$' + IDENT_RE$1, - relevance: 0 - }, - { - match: [ /\bconstructor(?=\s*\()/ ], - className: { 1: "title.function" }, - contains: [ PARAMS ] - }, - FUNCTION_CALL, - UPPER_CASE_CONSTANT, - CLASS_OR_EXTENDS, - GETTER_OR_SETTER, - { - match: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something` - } - ] - }; -} - -module.exports = javascript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/jboss-cli.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/jboss-cli.js ***! - \******************************************************************/ -(module) { - -/* - Language: JBoss CLI - Author: Raphaël Parrëe - Description: language definition jboss cli - Website: https://docs.jboss.org/author/display/WFLY/Command+Line+Interface - Category: config - */ - -function jbossCli(hljs) { - const PARAM = { - begin: /[\w-]+ *=/, - returnBegin: true, - relevance: 0, - contains: [ - { - className: 'attr', - begin: /[\w-]+/ - } - ] - }; - const PARAMSBLOCK = { - className: 'params', - begin: /\(/, - end: /\)/, - contains: [ PARAM ], - relevance: 0 - }; - const OPERATION = { - className: 'function', - begin: /:[\w\-.]+/, - relevance: 0 - }; - const PATH = { - className: 'string', - begin: /\B([\/.])[\w\-.\/=]+/ - }; - const COMMAND_PARAMS = { - className: 'params', - begin: /--[\w\-=\/]+/ - }; - return { - name: 'JBoss CLI', - aliases: [ 'wildfly-cli' ], - keywords: { - $pattern: '[a-z\-]+', - keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' - + 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' - + 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' - + 'undeploy unset version xa-data-source', // module - literal: 'true false' - }, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - COMMAND_PARAMS, - OPERATION, - PATH, - PARAMSBLOCK - ] - }; -} - -module.exports = jbossCli; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/json.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/json.js ***! - \*************************************************************/ -(module) { - -/* -Language: JSON -Description: JSON (JavaScript Object Notation) is a lightweight data-interchange format. -Author: Ivan Sagalaev -Website: http://www.json.org -Category: common, protocols, web -*/ - -function json(hljs) { - const ATTRIBUTE = { - className: 'attr', - begin: /"(\\.|[^\\"\r\n])*"(?=\s*:)/, - relevance: 1.01 - }; - const PUNCTUATION = { - match: /[{}[\],:]/, - className: "punctuation", - relevance: 0 - }; - const LITERALS = [ - "true", - "false", - "null" - ]; - // NOTE: normally we would rely on `keywords` for this but using a mode here allows us - // - to use the very tight `illegal: \S` rule later to flag any other character - // - as illegal indicating that despite looking like JSON we do not truly have - // - JSON and thus improve false-positively greatly since JSON will try and claim - // - all sorts of JSON looking stuff - const LITERALS_MODE = { - scope: "literal", - beginKeywords: LITERALS.join(" "), - }; - - return { - name: 'JSON', - aliases: ['jsonc'], - keywords:{ - literal: LITERALS, - }, - contains: [ - ATTRIBUTE, - PUNCTUATION, - hljs.QUOTE_STRING_MODE, - LITERALS_MODE, - hljs.C_NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ], - illegal: '\\S' - }; -} - -module.exports = json; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/julia-repl.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/julia-repl.js ***! - \*******************************************************************/ -(module) { - -/* -Language: Julia REPL -Description: Julia REPL sessions -Author: Morten Piibeleht -Website: https://julialang.org -Requires: julia.js -Category: scientific - -The Julia REPL code blocks look something like the following: - - julia> function foo(x) - x + 1 - end - foo (generic function with 1 method) - -They start on a new line with "julia>". Usually there should also be a space after this, but -we also allow the code to start right after the > character. The code may run over multiple -lines, but the additional lines must start with six spaces (i.e. be indented to match -"julia>"). The rest of the code is assumed to be output from the executed code and will be -left un-highlighted. - -Using simply spaces to identify line continuations may get a false-positive if the output -also prints out six spaces, but such cases should be rare. -*/ - -function juliaRepl(hljs) { - return { - name: 'Julia REPL', - contains: [ - { - className: 'meta.prompt', - begin: /^julia>/, - relevance: 10, - starts: { - // end the highlighting if we are on a new line and the line does not have at - // least six spaces in the beginning - end: /^(?![ ]{6})/, - subLanguage: 'julia' - }, - }, - ], - // jldoctest Markdown blocks are used in the Julia manual and package docs indicate - // code snippets that should be verified when the documentation is built. They can be - // either REPL-like or script-like, but are usually REPL-like and therefore we apply - // julia-repl highlighting to them. More information can be found in Documenter's - // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html - aliases: [ 'jldoctest' ], - }; -} - -module.exports = juliaRepl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/julia.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/julia.js ***! - \**************************************************************/ -(module) { - -/* -Language: Julia -Description: Julia is a high-level, high-performance, dynamic programming language. -Author: Kenta Sato -Contributors: Alex Arslan , Fredrik Ekre -Website: https://julialang.org -Category: scientific -*/ - -function julia(hljs) { - // Since there are numerous special names in Julia, it is too much trouble - // to maintain them by hand. Hence these names (i.e. keywords, literals and - // built-ins) are automatically generated from Julia 1.5.2 itself through - // the following scripts for each. - - // ref: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names - const VARIABLE_NAME_RE = '[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*'; - - // # keyword generator, multi-word keywords handled manually below (Julia 1.5.2) - // import REPL.REPLCompletions - // res = String["in", "isa", "where"] - // for kw in collect(x.keyword for x in REPLCompletions.complete_keyword("")) - // if !(contains(kw, " ") || kw == "struct") - // push!(res, kw) - // end - // end - // sort!(unique!(res)) - // foreach(x -> println("\'", x, "\',"), res) - const KEYWORD_LIST = [ - 'baremodule', - 'begin', - 'break', - 'catch', - 'ccall', - 'const', - 'continue', - 'do', - 'else', - 'elseif', - 'end', - 'export', - 'false', - 'finally', - 'for', - 'function', - 'global', - 'if', - 'import', - 'in', - 'isa', - 'let', - 'local', - 'macro', - 'module', - 'quote', - 'return', - 'true', - 'try', - 'using', - 'where', - 'while', - ]; - - // # literal generator (Julia 1.5.2) - // import REPL.REPLCompletions - // res = String["true", "false"] - // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core), - // REPLCompletions.completions("", 0)[1]) - // try - // v = eval(Symbol(compl.mod)) - // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon) - // push!(res, compl.mod) - // end - // catch e - // end - // end - // sort!(unique!(res)) - // foreach(x -> println("\'", x, "\',"), res) - const LITERAL_LIST = [ - 'ARGS', - 'C_NULL', - 'DEPOT_PATH', - 'ENDIAN_BOM', - 'ENV', - 'Inf', - 'Inf16', - 'Inf32', - 'Inf64', - 'InsertionSort', - 'LOAD_PATH', - 'MergeSort', - 'NaN', - 'NaN16', - 'NaN32', - 'NaN64', - 'PROGRAM_FILE', - 'QuickSort', - 'RoundDown', - 'RoundFromZero', - 'RoundNearest', - 'RoundNearestTiesAway', - 'RoundNearestTiesUp', - 'RoundToZero', - 'RoundUp', - 'VERSION|0', - 'devnull', - 'false', - 'im', - 'missing', - 'nothing', - 'pi', - 'stderr', - 'stdin', - 'stdout', - 'true', - 'undef', - 'π', - 'ℯ', - ]; - - // # built_in generator (Julia 1.5.2) - // import REPL.REPLCompletions - // res = String[] - // for compl in filter!(x -> isa(x, REPLCompletions.ModuleCompletion) && (x.parent === Base || x.parent === Core), - // REPLCompletions.completions("", 0)[1]) - // try - // v = eval(Symbol(compl.mod)) - // if (v isa Type || v isa TypeVar) && (compl.mod != "=>") - // push!(res, compl.mod) - // end - // catch e - // end - // end - // sort!(unique!(res)) - // foreach(x -> println("\'", x, "\',"), res) - const BUILT_IN_LIST = [ - 'AbstractArray', - 'AbstractChannel', - 'AbstractChar', - 'AbstractDict', - 'AbstractDisplay', - 'AbstractFloat', - 'AbstractIrrational', - 'AbstractMatrix', - 'AbstractRange', - 'AbstractSet', - 'AbstractString', - 'AbstractUnitRange', - 'AbstractVecOrMat', - 'AbstractVector', - 'Any', - 'ArgumentError', - 'Array', - 'AssertionError', - 'BigFloat', - 'BigInt', - 'BitArray', - 'BitMatrix', - 'BitSet', - 'BitVector', - 'Bool', - 'BoundsError', - 'CapturedException', - 'CartesianIndex', - 'CartesianIndices', - 'Cchar', - 'Cdouble', - 'Cfloat', - 'Channel', - 'Char', - 'Cint', - 'Cintmax_t', - 'Clong', - 'Clonglong', - 'Cmd', - 'Colon', - 'Complex', - 'ComplexF16', - 'ComplexF32', - 'ComplexF64', - 'CompositeException', - 'Condition', - 'Cptrdiff_t', - 'Cshort', - 'Csize_t', - 'Cssize_t', - 'Cstring', - 'Cuchar', - 'Cuint', - 'Cuintmax_t', - 'Culong', - 'Culonglong', - 'Cushort', - 'Cvoid', - 'Cwchar_t', - 'Cwstring', - 'DataType', - 'DenseArray', - 'DenseMatrix', - 'DenseVecOrMat', - 'DenseVector', - 'Dict', - 'DimensionMismatch', - 'Dims', - 'DivideError', - 'DomainError', - 'EOFError', - 'Enum', - 'ErrorException', - 'Exception', - 'ExponentialBackOff', - 'Expr', - 'Float16', - 'Float32', - 'Float64', - 'Function', - 'GlobalRef', - 'HTML', - 'IO', - 'IOBuffer', - 'IOContext', - 'IOStream', - 'IdDict', - 'IndexCartesian', - 'IndexLinear', - 'IndexStyle', - 'InexactError', - 'InitError', - 'Int', - 'Int128', - 'Int16', - 'Int32', - 'Int64', - 'Int8', - 'Integer', - 'InterruptException', - 'InvalidStateException', - 'Irrational', - 'KeyError', - 'LinRange', - 'LineNumberNode', - 'LinearIndices', - 'LoadError', - 'MIME', - 'Matrix', - 'Method', - 'MethodError', - 'Missing', - 'MissingException', - 'Module', - 'NTuple', - 'NamedTuple', - 'Nothing', - 'Number', - 'OrdinalRange', - 'OutOfMemoryError', - 'OverflowError', - 'Pair', - 'PartialQuickSort', - 'PermutedDimsArray', - 'Pipe', - 'ProcessFailedException', - 'Ptr', - 'QuoteNode', - 'Rational', - 'RawFD', - 'ReadOnlyMemoryError', - 'Real', - 'ReentrantLock', - 'Ref', - 'Regex', - 'RegexMatch', - 'RoundingMode', - 'SegmentationFault', - 'Set', - 'Signed', - 'Some', - 'StackOverflowError', - 'StepRange', - 'StepRangeLen', - 'StridedArray', - 'StridedMatrix', - 'StridedVecOrMat', - 'StridedVector', - 'String', - 'StringIndexError', - 'SubArray', - 'SubString', - 'SubstitutionString', - 'Symbol', - 'SystemError', - 'Task', - 'TaskFailedException', - 'Text', - 'TextDisplay', - 'Timer', - 'Tuple', - 'Type', - 'TypeError', - 'TypeVar', - 'UInt', - 'UInt128', - 'UInt16', - 'UInt32', - 'UInt64', - 'UInt8', - 'UndefInitializer', - 'UndefKeywordError', - 'UndefRefError', - 'UndefVarError', - 'Union', - 'UnionAll', - 'UnitRange', - 'Unsigned', - 'Val', - 'Vararg', - 'VecElement', - 'VecOrMat', - 'Vector', - 'VersionNumber', - 'WeakKeyDict', - 'WeakRef', - ]; - - const KEYWORDS = { - $pattern: VARIABLE_NAME_RE, - keyword: KEYWORD_LIST, - literal: LITERAL_LIST, - built_in: BUILT_IN_LIST, - }; - - // placeholder for recursive self-reference - const DEFAULT = { - keywords: KEYWORDS, - illegal: /<\// - }; - - // ref: https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/ - const NUMBER = { - className: 'number', - // supported numeric literals: - // * binary literal (e.g. 0x10) - // * octal literal (e.g. 0o76543210) - // * hexadecimal literal (e.g. 0xfedcba876543210) - // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2) - // * decimal literal (e.g. 9876543210, 100_000_000) - // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10) - begin: /(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/, - relevance: 0 - }; - - const CHAR = { - className: 'string', - begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/ - }; - - const INTERPOLATION = { - className: 'subst', - begin: /\$\(/, - end: /\)/, - keywords: KEYWORDS - }; - - const INTERPOLATED_VARIABLE = { - className: 'variable', - begin: '\\$' + VARIABLE_NAME_RE - }; - - // TODO: neatly escape normal code in string literal - const STRING = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - INTERPOLATION, - INTERPOLATED_VARIABLE - ], - variants: [ - { - begin: /\w*"""/, - end: /"""\w*/, - relevance: 10 - }, - { - begin: /\w*"/, - end: /"\w*/ - } - ] - }; - - const COMMAND = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - INTERPOLATION, - INTERPOLATED_VARIABLE - ], - begin: '`', - end: '`' - }; - - const MACROCALL = { - className: 'meta', - begin: '@' + VARIABLE_NAME_RE - }; - - const COMMENT = { - className: 'comment', - variants: [ - { - begin: '#=', - end: '=#', - relevance: 10 - }, - { - begin: '#', - end: '$' - } - ] - }; - - DEFAULT.name = 'Julia'; - DEFAULT.contains = [ - NUMBER, - CHAR, - STRING, - COMMAND, - MACROCALL, - COMMENT, - hljs.HASH_COMMENT_MODE, - { - className: 'keyword', - begin: - '\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b' - }, - { begin: /<:/ } // relevance booster - ]; - INTERPOLATION.contains = DEFAULT.contains; - - return DEFAULT; -} - -module.exports = julia; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/kotlin.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/kotlin.js ***! - \***************************************************************/ -(module) { - -// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10 -var decimalDigits = '[0-9](_*[0-9])*'; -var frac = `\\.(${decimalDigits})`; -var hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*'; -var NUMERIC = { - className: 'number', - variants: [ - // DecimalFloatingPointLiteral - // including ExponentPart - { begin: `(\\b(${decimalDigits})((${frac})|\\.)?|(${frac}))` + - `[eE][+-]?(${decimalDigits})[fFdD]?\\b` }, - // excluding ExponentPart - { begin: `\\b(${decimalDigits})((${frac})[fFdD]?\\b|\\.([fFdD]\\b)?)` }, - { begin: `(${frac})[fFdD]?\\b` }, - { begin: `\\b(${decimalDigits})[fFdD]\\b` }, - - // HexadecimalFloatingPointLiteral - { begin: `\\b0[xX]((${hexDigits})\\.?|(${hexDigits})?\\.(${hexDigits}))` + - `[pP][+-]?(${decimalDigits})[fFdD]?\\b` }, - - // DecimalIntegerLiteral - { begin: '\\b(0|[1-9](_*[0-9])*)[lL]?\\b' }, - - // HexIntegerLiteral - { begin: `\\b0[xX](${hexDigits})[lL]?\\b` }, - - // OctalIntegerLiteral - { begin: '\\b0(_*[0-7])*[lL]?\\b' }, - - // BinaryIntegerLiteral - { begin: '\\b0[bB][01](_*[01])*[lL]?\\b' }, - ], - relevance: 0 -}; - -/* - Language: Kotlin - Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native. - Author: Sergey Mashkov - Website: https://kotlinlang.org - Category: common - */ - - -function kotlin(hljs) { - const KEYWORDS = { - keyword: - 'abstract as val var vararg get set class object open private protected public noinline ' - + 'crossinline dynamic final enum if else do while for when throw try catch finally ' - + 'import package is in fun override companion reified inline lateinit init ' - + 'interface annotation data sealed internal infix operator out by constructor super ' - + 'tailrec where const inner suspend typealias external expect actual', - built_in: - 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing', - literal: - 'true false null' - }; - const KEYWORDS_WITH_LABEL = { - className: 'keyword', - begin: /\b(break|continue|return|this)\b/, - starts: { contains: [ - { - className: 'symbol', - begin: /@\w+/ - } - ] } - }; - const LABEL = { - className: 'symbol', - begin: hljs.UNDERSCORE_IDENT_RE + '@' - }; - - // for string templates - const SUBST = { - className: 'subst', - begin: /\$\{/, - end: /\}/, - contains: [ hljs.C_NUMBER_MODE ] - }; - const VARIABLE = { - className: 'variable', - begin: '\\$' + hljs.UNDERSCORE_IDENT_RE - }; - const STRING = { - className: 'string', - variants: [ - { - begin: '"""', - end: '"""(?=[^"])', - contains: [ - VARIABLE, - SUBST - ] - }, - // Can't use built-in modes easily, as we want to use STRING in the meta - // context as 'meta-string' and there's no syntax to remove explicitly set - // classNames in built-in modes. - { - begin: '\'', - end: '\'', - illegal: /\n/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '"', - end: '"', - illegal: /\n/, - contains: [ - hljs.BACKSLASH_ESCAPE, - VARIABLE, - SUBST - ] - } - ] - }; - SUBST.contains.push(STRING); - - const ANNOTATION_USE_SITE = { - className: 'meta', - begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?' - }; - const ANNOTATION = { - className: 'meta', - begin: '@' + hljs.UNDERSCORE_IDENT_RE, - contains: [ - { - begin: /\(/, - end: /\)/, - contains: [ - hljs.inherit(STRING, { className: 'string' }), - "self" - ] - } - ] - }; - - // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals - // According to the doc above, the number mode of kotlin is the same as java 8, - // so the code below is copied from java.js - const KOTLIN_NUMBER_MODE = NUMERIC; - const KOTLIN_NESTED_COMMENT = hljs.COMMENT( - '/\\*', '\\*/', - { contains: [ hljs.C_BLOCK_COMMENT_MODE ] } - ); - const KOTLIN_PAREN_TYPE = { variants: [ - { - className: 'type', - begin: hljs.UNDERSCORE_IDENT_RE - }, - { - begin: /\(/, - end: /\)/, - contains: [] // defined later - } - ] }; - const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE; - KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ]; - KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ]; - - return { - name: 'Kotlin', - aliases: [ - 'kt', - 'kts' - ], - keywords: KEYWORDS, - contains: [ - hljs.COMMENT( - '/\\*\\*', - '\\*/', - { - relevance: 0, - contains: [ - { - className: 'doctag', - begin: '@[A-Za-z]+' - } - ] - } - ), - hljs.C_LINE_COMMENT_MODE, - KOTLIN_NESTED_COMMENT, - KEYWORDS_WITH_LABEL, - LABEL, - ANNOTATION_USE_SITE, - ANNOTATION, - { - className: 'function', - beginKeywords: 'fun', - end: '[(]|$', - returnBegin: true, - excludeEnd: true, - keywords: KEYWORDS, - relevance: 5, - contains: [ - { - begin: hljs.UNDERSCORE_IDENT_RE + '\\s*\\(', - returnBegin: true, - relevance: 0, - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - }, - { - className: 'type', - begin: //, - keywords: 'reified', - relevance: 0 - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - endsParent: true, - keywords: KEYWORDS, - relevance: 0, - contains: [ - { - begin: /:/, - end: /[=,\/]/, - endsWithParent: true, - contains: [ - KOTLIN_PAREN_TYPE, - hljs.C_LINE_COMMENT_MODE, - KOTLIN_NESTED_COMMENT - ], - relevance: 0 - }, - hljs.C_LINE_COMMENT_MODE, - KOTLIN_NESTED_COMMENT, - ANNOTATION_USE_SITE, - ANNOTATION, - STRING, - hljs.C_NUMBER_MODE - ] - }, - KOTLIN_NESTED_COMMENT - ] - }, - { - begin: [ - /class|interface|trait/, - /\s+/, - hljs.UNDERSCORE_IDENT_RE - ], - beginScope: { - 3: "title.class" - }, - keywords: 'class interface trait', - end: /[:\{(]|$/, - excludeEnd: true, - illegal: 'extends implements', - contains: [ - { beginKeywords: 'public protected internal private constructor' }, - hljs.UNDERSCORE_TITLE_MODE, - { - className: 'type', - begin: //, - excludeBegin: true, - excludeEnd: true, - relevance: 0 - }, - { - className: 'type', - begin: /[,:]\s*/, - end: /[<\(,){\s]|$/, - excludeBegin: true, - returnEnd: true - }, - ANNOTATION_USE_SITE, - ANNOTATION - ] - }, - STRING, - { - className: 'meta', - begin: "^#!/usr/bin/env", - end: '$', - illegal: '\n' - }, - KOTLIN_NUMBER_MODE - ] - }; -} - -module.exports = kotlin; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/lasso.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/lasso.js ***! - \**************************************************************/ -(module) { - -/* -Language: Lasso -Author: Eric Knibbe -Description: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier. -Website: http://www.lassosoft.com/What-Is-Lasso -Category: database, web -*/ - -function lasso(hljs) { - const LASSO_IDENT_RE = '[a-zA-Z_][\\w.]*'; - const LASSO_ANGLE_RE = '<\\?(lasso(script)?|=)'; - const LASSO_CLOSE_RE = '\\]|\\?>'; - const LASSO_KEYWORDS = { - $pattern: LASSO_IDENT_RE + '|&[lg]t;', - literal: - 'true false none minimal full all void and or not ' - + 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft', - built_in: - 'array date decimal duration integer map pair string tag xml null ' - + 'boolean bytes keyword list locale queue set stack staticarray ' - + 'local var variable global data self inherited currentcapture givenblock', - keyword: - 'cache database_names database_schemanames database_tablenames ' - + 'define_tag define_type email_batch encode_set html_comment handle ' - + 'handle_error header if inline iterate ljax_target link ' - + 'link_currentaction link_currentgroup link_currentrecord link_detail ' - + 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' - + 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' - + 'loop namespace_using output_none portal private protect records ' - + 'referer referrer repeating resultset rows search_args ' - + 'search_arguments select sort_args sort_arguments thread_atomic ' - + 'value_list while abort case else fail_if fail_ifnot fail if_empty ' - + 'if_false if_null if_true loop_abort loop_continue loop_count params ' - + 'params_up return return_value run_children soap_definetag ' - + 'soap_lastrequest soap_lastresponse tag_name ascending average by ' - + 'define descending do equals frozen group handle_failure import in ' - + 'into join let match max min on order parent protected provide public ' - + 'require returnhome skip split_thread sum take thread to trait type ' - + 'where with yield yieldhome' - }; - const HTML_COMMENT = hljs.COMMENT( - '', - { relevance: 0 } - ); - const LASSO_NOPROCESS = { - className: 'meta', - begin: '\\[noprocess\\]', - starts: { - end: '\\[/noprocess\\]', - returnEnd: true, - contains: [ HTML_COMMENT ] - } - }; - const LASSO_START = { - className: 'meta', - begin: '\\[/noprocess|' + LASSO_ANGLE_RE - }; - const LASSO_DATAMEMBER = { - className: 'symbol', - begin: '\'' + LASSO_IDENT_RE + '\'' - }; - const LASSO_CODE = [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.inherit(hljs.C_NUMBER_MODE, { begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\b' }), - hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), - { - className: 'string', - begin: '`', - end: '`' - }, - { // variables - variants: [ - { begin: '[#$]' + LASSO_IDENT_RE }, - { - begin: '#', - end: '\\d+', - illegal: '\\W' - } - ] }, - { - className: 'type', - begin: '::\\s*', - end: LASSO_IDENT_RE, - illegal: '\\W' - }, - { - className: 'params', - variants: [ - { - begin: '-(?!infinity)' + LASSO_IDENT_RE, - relevance: 0 - }, - { begin: '(\\.\\.\\.)' } - ] - }, - { - begin: /(->|\.)\s*/, - relevance: 0, - contains: [ LASSO_DATAMEMBER ] - }, - { - className: 'class', - beginKeywords: 'define', - returnEnd: true, - end: '\\(|=>', - contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)' }) ] - } - ]; - return { - name: 'Lasso', - aliases: [ - 'ls', - 'lassoscript' - ], - case_insensitive: true, - keywords: LASSO_KEYWORDS, - contains: [ - { - className: 'meta', - begin: LASSO_CLOSE_RE, - relevance: 0, - starts: { // markup - end: '\\[|' + LASSO_ANGLE_RE, - returnEnd: true, - relevance: 0, - contains: [ HTML_COMMENT ] - } - }, - LASSO_NOPROCESS, - LASSO_START, - { - className: 'meta', - begin: '\\[no_square_brackets', - starts: { - end: '\\[/no_square_brackets\\]', // not implemented in the language - keywords: LASSO_KEYWORDS, - contains: [ - { - className: 'meta', - begin: LASSO_CLOSE_RE, - relevance: 0, - starts: { - end: '\\[noprocess\\]|' + LASSO_ANGLE_RE, - returnEnd: true, - contains: [ HTML_COMMENT ] - } - }, - LASSO_NOPROCESS, - LASSO_START - ].concat(LASSO_CODE) - } - }, - { - className: 'meta', - begin: '\\[', - relevance: 0 - }, - { - className: 'meta', - begin: '^#!', - end: 'lasso9$', - relevance: 10 - } - ].concat(LASSO_CODE) - }; -} - -module.exports = lasso; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/latex.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/latex.js ***! - \**************************************************************/ -(module) { - -/* -Language: LaTeX -Author: Benedikt Wilde -Website: https://www.latex-project.org -Category: markup -*/ - -/** @type LanguageFn */ -function latex(hljs) { - const regex = hljs.regex; - const KNOWN_CONTROL_WORDS = regex.either(...[ - '(?:NeedsTeXFormat|RequirePackage|GetIdInfo)', - 'Provides(?:Expl)?(?:Package|Class|File)', - '(?:DeclareOption|ProcessOptions)', - '(?:documentclass|usepackage|input|include)', - 'makeat(?:letter|other)', - 'ExplSyntax(?:On|Off)', - '(?:new|renew|provide)?command', - '(?:re)newenvironment', - '(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand', - '(?:New|Renew|Provide|Declare)DocumentEnvironment', - '(?:(?:e|g|x)?def|let)', - '(?:begin|end)', - '(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)', - 'caption', - '(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)', - '(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)', - '(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)', - '(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)', - '(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)', - '(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)' - ].map(word => word + '(?![a-zA-Z@:_])')); - const L3_REGEX = new RegExp([ - // A function \module_function_name:signature or \__module_function_name:signature, - // where both module and function_name need at least two characters and - // function_name may contain single underscores. - '(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*', - // A variable \scope_module_and_name_type or \scope__module_ane_name_type, - // where scope is one of l, g or c, type needs at least two characters - // and module_and_name may contain single underscores. - '[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}', - // A quark \q_the_name or \q__the_name or - // scan mark \s_the_name or \s__vthe_name, - // where variable_name needs at least two characters and - // may contain single underscores. - '[qs]__?[a-zA-Z](?:_?[a-zA-Z])+', - // Other LaTeX3 macro names that are not covered by the three rules above. - 'use(?:_i)?:[a-zA-Z]*', - '(?:else|fi|or):', - '(?:if|cs|exp):w', - '(?:hbox|vbox):n', - '::[a-zA-Z]_unbraced', - '::[a-zA-Z:]' - ].map(pattern => pattern + '(?![a-zA-Z:_])').join('|')); - const L2_VARIANTS = [ - { begin: /[a-zA-Z@]+/ }, // control word - { begin: /[^a-zA-Z@]?/ } // control symbol - ]; - const DOUBLE_CARET_VARIANTS = [ - { begin: /\^{6}[0-9a-f]{6}/ }, - { begin: /\^{5}[0-9a-f]{5}/ }, - { begin: /\^{4}[0-9a-f]{4}/ }, - { begin: /\^{3}[0-9a-f]{3}/ }, - { begin: /\^{2}[0-9a-f]{2}/ }, - { begin: /\^{2}[\u0000-\u007f]/ } - ]; - const CONTROL_SEQUENCE = { - className: 'keyword', - begin: /\\/, - relevance: 0, - contains: [ - { - endsParent: true, - begin: KNOWN_CONTROL_WORDS - }, - { - endsParent: true, - begin: L3_REGEX - }, - { - endsParent: true, - variants: DOUBLE_CARET_VARIANTS - }, - { - endsParent: true, - relevance: 0, - variants: L2_VARIANTS - } - ] - }; - const MACRO_PARAM = { - className: 'params', - relevance: 0, - begin: /#+\d?/ - }; - const DOUBLE_CARET_CHAR = { - // relevance: 1 - variants: DOUBLE_CARET_VARIANTS }; - const SPECIAL_CATCODE = { - className: 'built_in', - relevance: 0, - begin: /[$&^_]/ - }; - const MAGIC_COMMENT = { - className: 'meta', - begin: /% ?!(T[eE]X|tex|BIB|bib)/, - end: '$', - relevance: 10 - }; - const COMMENT = hljs.COMMENT( - '%', - '$', - { relevance: 0 } - ); - const EVERYTHING_BUT_VERBATIM = [ - CONTROL_SEQUENCE, - MACRO_PARAM, - DOUBLE_CARET_CHAR, - SPECIAL_CATCODE, - MAGIC_COMMENT, - COMMENT - ]; - const BRACE_GROUP_NO_VERBATIM = { - begin: /\{/, - end: /\}/, - relevance: 0, - contains: [ - 'self', - ...EVERYTHING_BUT_VERBATIM - ] - }; - const ARGUMENT_BRACES = hljs.inherit( - BRACE_GROUP_NO_VERBATIM, - { - relevance: 0, - endsParent: true, - contains: [ - BRACE_GROUP_NO_VERBATIM, - ...EVERYTHING_BUT_VERBATIM - ] - } - ); - const ARGUMENT_BRACKETS = { - begin: /\[/, - end: /\]/, - endsParent: true, - relevance: 0, - contains: [ - BRACE_GROUP_NO_VERBATIM, - ...EVERYTHING_BUT_VERBATIM - ] - }; - const SPACE_GOBBLER = { - begin: /\s+/, - relevance: 0 - }; - const ARGUMENT_M = [ ARGUMENT_BRACES ]; - const ARGUMENT_O = [ ARGUMENT_BRACKETS ]; - const ARGUMENT_AND_THEN = function(arg, starts_mode) { - return { - contains: [ SPACE_GOBBLER ], - starts: { - relevance: 0, - contains: arg, - starts: starts_mode - } - }; - }; - const CSNAME = function(csname, starts_mode) { - return { - begin: '\\\\' + csname + '(?![a-zA-Z@:_])', - keywords: { - $pattern: /\\[a-zA-Z]+/, - keyword: '\\' + csname - }, - relevance: 0, - contains: [ SPACE_GOBBLER ], - starts: starts_mode - }; - }; - const BEGIN_ENV = function(envname, starts_mode) { - return hljs.inherit( - { - begin: '\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{' + envname + '\\})', - keywords: { - $pattern: /\\[a-zA-Z]+/, - keyword: '\\begin' - }, - relevance: 0, - }, - ARGUMENT_AND_THEN(ARGUMENT_M, starts_mode) - ); - }; - const VERBATIM_DELIMITED_EQUAL = (innerName = "string") => { - return hljs.END_SAME_AS_BEGIN({ - className: innerName, - begin: /(.|\r?\n)/, - end: /(.|\r?\n)/, - excludeBegin: true, - excludeEnd: true, - endsParent: true - }); - }; - const VERBATIM_DELIMITED_ENV = function(envname) { - return { - className: 'string', - end: '(?=\\\\end\\{' + envname + '\\})' - }; - }; - - const VERBATIM_DELIMITED_BRACES = (innerName = "string") => { - return { - relevance: 0, - begin: /\{/, - starts: { - endsParent: true, - contains: [ - { - className: innerName, - end: /(?=\})/, - endsParent: true, - contains: [ - { - begin: /\{/, - end: /\}/, - relevance: 0, - contains: [ "self" ] - } - ], - } - ] - } - }; - }; - const VERBATIM = [ - ...[ - 'verb', - 'lstinline' - ].map(csname => CSNAME(csname, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })), - CSNAME('mint', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [ VERBATIM_DELIMITED_EQUAL() ] })), - CSNAME('mintinline', ARGUMENT_AND_THEN(ARGUMENT_M, { contains: [ - VERBATIM_DELIMITED_BRACES(), - VERBATIM_DELIMITED_EQUAL() - ] })), - CSNAME('url', { contains: [ - VERBATIM_DELIMITED_BRACES("link"), - VERBATIM_DELIMITED_BRACES("link") - ] }), - CSNAME('hyperref', { contains: [ VERBATIM_DELIMITED_BRACES("link") ] }), - CSNAME('href', ARGUMENT_AND_THEN(ARGUMENT_O, { contains: [ VERBATIM_DELIMITED_BRACES("link") ] })), - ...[].concat(...[ - '', - '\\*' - ].map(suffix => [ - BEGIN_ENV('verbatim' + suffix, VERBATIM_DELIMITED_ENV('verbatim' + suffix)), - BEGIN_ENV('filecontents' + suffix, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('filecontents' + suffix))), - ...[ - '', - 'B', - 'L' - ].map(prefix => - BEGIN_ENV(prefix + 'Verbatim' + suffix, ARGUMENT_AND_THEN(ARGUMENT_O, VERBATIM_DELIMITED_ENV(prefix + 'Verbatim' + suffix))) - ) - ])), - BEGIN_ENV('minted', ARGUMENT_AND_THEN(ARGUMENT_O, ARGUMENT_AND_THEN(ARGUMENT_M, VERBATIM_DELIMITED_ENV('minted')))), - ]; - - return { - name: 'LaTeX', - aliases: [ 'tex' ], - contains: [ - ...VERBATIM, - ...EVERYTHING_BUT_VERBATIM - ] - }; -} - -module.exports = latex; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ldif.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ldif.js ***! - \*************************************************************/ -(module) { - -/* -Language: LDIF -Contributors: Jacob Childress -Category: enterprise, config -Website: https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format -*/ - -/** @type LanguageFn */ -function ldif(hljs) { - return { - name: 'LDIF', - contains: [ - { - className: 'attribute', - match: '^dn(?=:)', - relevance: 10 - }, - { - className: 'attribute', - match: '^\\w+(?=:)' - }, - { - className: 'literal', - match: '^-' - }, - hljs.HASH_COMMENT_MODE - ] - }; -} - -module.exports = ldif; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/leaf.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/leaf.js ***! - \*************************************************************/ -(module) { - -/* -Language: Leaf -Description: A Swift-based templating language created for the Vapor project. -Website: https://docs.vapor.codes/leaf/overview -Category: template -*/ - -function leaf(hljs) { - const IDENT = /([A-Za-z_][A-Za-z_0-9]*)?/; - const LITERALS = [ - 'true', - 'false', - 'in' - ]; - const PARAMS = { - scope: 'params', - begin: /\(/, - end: /\)(?=\:?)/, - endsParent: true, - relevance: 7, - contains: [ - { - scope: 'string', - begin: '"', - end: '"' - }, - { - scope: 'keyword', - match: LITERALS.join("|"), - }, - { - scope: 'variable', - match: /[A-Za-z_][A-Za-z_0-9]*/ - }, - { - scope: 'operator', - match: /\+|\-|\*|\/|\%|\=\=|\=|\!|\>|\<|\&\&|\|\|/ - } - ] - }; - const INSIDE_DISPATCH = { - match: [ - IDENT, - /(?=\()/, - ], - scope: { - 1: "keyword" - }, - contains: [ PARAMS ] - }; - PARAMS.contains.unshift(INSIDE_DISPATCH); - return { - name: 'Leaf', - contains: [ - // #ident(): - { - match: [ - /#+/, - IDENT, - /(?=\()/, - ], - scope: { - 1: "punctuation", - 2: "keyword" - }, - // will start up after the ending `)` match from line ~44 - // just to grab the trailing `:` if we can match it - starts: { - contains: [ - { - match: /\:/, - scope: "punctuation" - } - ] - }, - contains: [ - PARAMS - ], - }, - // #ident or #ident: - { - match: [ - /#+/, - IDENT, - /:?/, - ], - scope: { - 1: "punctuation", - 2: "keyword", - 3: "punctuation" - } - }, - ] - }; -} - -module.exports = leaf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/less.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/less.js ***! - \*************************************************************/ -(module) { - -const MODES = (hljs) => { - return { - IMPORTANT: { - scope: 'meta', - begin: '!important' - }, - BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, - HEXCOLOR: { - scope: 'number', - begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ - }, - FUNCTION_DISPATCH: { - className: "built_in", - begin: /[\w-]+(?=\()/ - }, - ATTRIBUTE_SELECTOR_MODE: { - scope: 'selector-attr', - begin: /\[/, - end: /\]/, - illegal: '$', - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }, - CSS_NUMBER_MODE: { - scope: 'number', - begin: hljs.NUMBER_RE + '(' + - '%|em|ex|ch|rem' + - '|vw|vh|vmin|vmax' + - '|cm|mm|in|pt|pc|px' + - '|deg|grad|rad|turn' + - '|s|ms' + - '|Hz|kHz' + - '|dpi|dpcm|dppx' + - ')?', - relevance: 0 - }, - CSS_VARIABLE: { - className: "attr", - begin: /--[A-Za-z_][A-Za-z0-9_-]*/ - } - }; -}; - -const HTML_TAGS = [ - 'a', - 'abbr', - 'address', - 'article', - 'aside', - 'audio', - 'b', - 'blockquote', - 'body', - 'button', - 'canvas', - 'caption', - 'cite', - 'code', - 'dd', - 'del', - 'details', - 'dfn', - 'div', - 'dl', - 'dt', - 'em', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'header', - 'hgroup', - 'html', - 'i', - 'iframe', - 'img', - 'input', - 'ins', - 'kbd', - 'label', - 'legend', - 'li', - 'main', - 'mark', - 'menu', - 'nav', - 'object', - 'ol', - 'optgroup', - 'option', - 'p', - 'picture', - 'q', - 'quote', - 'samp', - 'section', - 'select', - 'source', - 'span', - 'strong', - 'summary', - 'sup', - 'table', - 'tbody', - 'td', - 'textarea', - 'tfoot', - 'th', - 'thead', - 'time', - 'tr', - 'ul', - 'var', - 'video' -]; - -const SVG_TAGS = [ - 'defs', - 'g', - 'marker', - 'mask', - 'pattern', - 'svg', - 'switch', - 'symbol', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feFlood', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMorphology', - 'feOffset', - 'feSpecularLighting', - 'feTile', - 'feTurbulence', - 'linearGradient', - 'radialGradient', - 'stop', - 'circle', - 'ellipse', - 'image', - 'line', - 'path', - 'polygon', - 'polyline', - 'rect', - 'text', - 'use', - 'textPath', - 'tspan', - 'foreignObject', - 'clipPath' -]; - -const TAGS = [ - ...HTML_TAGS, - ...SVG_TAGS, -]; - -// Sorting, then reversing makes sure longer attributes/elements like -// `font-weight` are matched fully instead of getting false positives on say `font` - -const MEDIA_FEATURES = [ - 'any-hover', - 'any-pointer', - 'aspect-ratio', - 'color', - 'color-gamut', - 'color-index', - 'device-aspect-ratio', - 'device-height', - 'device-width', - 'display-mode', - 'forced-colors', - 'grid', - 'height', - 'hover', - 'inverted-colors', - 'monochrome', - 'orientation', - 'overflow-block', - 'overflow-inline', - 'pointer', - 'prefers-color-scheme', - 'prefers-contrast', - 'prefers-reduced-motion', - 'prefers-reduced-transparency', - 'resolution', - 'scan', - 'scripting', - 'update', - 'width', - // TODO: find a better solution? - 'min-width', - 'max-width', - 'min-height', - 'max-height' -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes -const PSEUDO_CLASSES = [ - 'active', - 'any-link', - 'blank', - 'checked', - 'current', - 'default', - 'defined', - 'dir', // dir() - 'disabled', - 'drop', - 'empty', - 'enabled', - 'first', - 'first-child', - 'first-of-type', - 'fullscreen', - 'future', - 'focus', - 'focus-visible', - 'focus-within', - 'has', // has() - 'host', // host or host() - 'host-context', // host-context() - 'hover', - 'indeterminate', - 'in-range', - 'invalid', - 'is', // is() - 'lang', // lang() - 'last-child', - 'last-of-type', - 'left', - 'link', - 'local-link', - 'not', // not() - 'nth-child', // nth-child() - 'nth-col', // nth-col() - 'nth-last-child', // nth-last-child() - 'nth-last-col', // nth-last-col() - 'nth-last-of-type', //nth-last-of-type() - 'nth-of-type', //nth-of-type() - 'only-child', - 'only-of-type', - 'optional', - 'out-of-range', - 'past', - 'placeholder-shown', - 'read-only', - 'read-write', - 'required', - 'right', - 'root', - 'scope', - 'target', - 'target-within', - 'user-invalid', - 'valid', - 'visited', - 'where' // where() -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements -const PSEUDO_ELEMENTS = [ - 'after', - 'backdrop', - 'before', - 'cue', - 'cue-region', - 'first-letter', - 'first-line', - 'grammar-error', - 'marker', - 'part', - 'placeholder', - 'selection', - 'slotted', - 'spelling-error' -].sort().reverse(); - -const ATTRIBUTES = [ - 'accent-color', - 'align-content', - 'align-items', - 'align-self', - 'alignment-baseline', - 'all', - 'anchor-name', - 'animation', - 'animation-composition', - 'animation-delay', - 'animation-direction', - 'animation-duration', - 'animation-fill-mode', - 'animation-iteration-count', - 'animation-name', - 'animation-play-state', - 'animation-range', - 'animation-range-end', - 'animation-range-start', - 'animation-timeline', - 'animation-timing-function', - 'appearance', - 'aspect-ratio', - 'backdrop-filter', - 'backface-visibility', - 'background', - 'background-attachment', - 'background-blend-mode', - 'background-clip', - 'background-color', - 'background-image', - 'background-origin', - 'background-position', - 'background-position-x', - 'background-position-y', - 'background-repeat', - 'background-size', - 'baseline-shift', - 'block-size', - 'border', - 'border-block', - 'border-block-color', - 'border-block-end', - 'border-block-end-color', - 'border-block-end-style', - 'border-block-end-width', - 'border-block-start', - 'border-block-start-color', - 'border-block-start-style', - 'border-block-start-width', - 'border-block-style', - 'border-block-width', - 'border-bottom', - 'border-bottom-color', - 'border-bottom-left-radius', - 'border-bottom-right-radius', - 'border-bottom-style', - 'border-bottom-width', - 'border-collapse', - 'border-color', - 'border-end-end-radius', - 'border-end-start-radius', - 'border-image', - 'border-image-outset', - 'border-image-repeat', - 'border-image-slice', - 'border-image-source', - 'border-image-width', - 'border-inline', - 'border-inline-color', - 'border-inline-end', - 'border-inline-end-color', - 'border-inline-end-style', - 'border-inline-end-width', - 'border-inline-start', - 'border-inline-start-color', - 'border-inline-start-style', - 'border-inline-start-width', - 'border-inline-style', - 'border-inline-width', - 'border-left', - 'border-left-color', - 'border-left-style', - 'border-left-width', - 'border-radius', - 'border-right', - 'border-right-color', - 'border-right-style', - 'border-right-width', - 'border-spacing', - 'border-start-end-radius', - 'border-start-start-radius', - 'border-style', - 'border-top', - 'border-top-color', - 'border-top-left-radius', - 'border-top-right-radius', - 'border-top-style', - 'border-top-width', - 'border-width', - 'bottom', - 'box-align', - 'box-decoration-break', - 'box-direction', - 'box-flex', - 'box-flex-group', - 'box-lines', - 'box-ordinal-group', - 'box-orient', - 'box-pack', - 'box-shadow', - 'box-sizing', - 'break-after', - 'break-before', - 'break-inside', - 'caption-side', - 'caret-color', - 'clear', - 'clip', - 'clip-path', - 'clip-rule', - 'color', - 'color-interpolation', - 'color-interpolation-filters', - 'color-profile', - 'color-rendering', - 'color-scheme', - 'column-count', - 'column-fill', - 'column-gap', - 'column-rule', - 'column-rule-color', - 'column-rule-style', - 'column-rule-width', - 'column-span', - 'column-width', - 'columns', - 'contain', - 'contain-intrinsic-block-size', - 'contain-intrinsic-height', - 'contain-intrinsic-inline-size', - 'contain-intrinsic-size', - 'contain-intrinsic-width', - 'container', - 'container-name', - 'container-type', - 'content', - 'content-visibility', - 'counter-increment', - 'counter-reset', - 'counter-set', - 'cue', - 'cue-after', - 'cue-before', - 'cursor', - 'cx', - 'cy', - 'direction', - 'display', - 'dominant-baseline', - 'empty-cells', - 'enable-background', - 'field-sizing', - 'fill', - 'fill-opacity', - 'fill-rule', - 'filter', - 'flex', - 'flex-basis', - 'flex-direction', - 'flex-flow', - 'flex-grow', - 'flex-shrink', - 'flex-wrap', - 'float', - 'flood-color', - 'flood-opacity', - 'flow', - 'font', - 'font-display', - 'font-family', - 'font-feature-settings', - 'font-kerning', - 'font-language-override', - 'font-optical-sizing', - 'font-palette', - 'font-size', - 'font-size-adjust', - 'font-smooth', - 'font-smoothing', - 'font-stretch', - 'font-style', - 'font-synthesis', - 'font-synthesis-position', - 'font-synthesis-small-caps', - 'font-synthesis-style', - 'font-synthesis-weight', - 'font-variant', - 'font-variant-alternates', - 'font-variant-caps', - 'font-variant-east-asian', - 'font-variant-emoji', - 'font-variant-ligatures', - 'font-variant-numeric', - 'font-variant-position', - 'font-variation-settings', - 'font-weight', - 'forced-color-adjust', - 'gap', - 'glyph-orientation-horizontal', - 'glyph-orientation-vertical', - 'grid', - 'grid-area', - 'grid-auto-columns', - 'grid-auto-flow', - 'grid-auto-rows', - 'grid-column', - 'grid-column-end', - 'grid-column-start', - 'grid-gap', - 'grid-row', - 'grid-row-end', - 'grid-row-start', - 'grid-template', - 'grid-template-areas', - 'grid-template-columns', - 'grid-template-rows', - 'hanging-punctuation', - 'height', - 'hyphenate-character', - 'hyphenate-limit-chars', - 'hyphens', - 'icon', - 'image-orientation', - 'image-rendering', - 'image-resolution', - 'ime-mode', - 'initial-letter', - 'initial-letter-align', - 'inline-size', - 'inset', - 'inset-area', - 'inset-block', - 'inset-block-end', - 'inset-block-start', - 'inset-inline', - 'inset-inline-end', - 'inset-inline-start', - 'isolation', - 'justify-content', - 'justify-items', - 'justify-self', - 'kerning', - 'left', - 'letter-spacing', - 'lighting-color', - 'line-break', - 'line-height', - 'line-height-step', - 'list-style', - 'list-style-image', - 'list-style-position', - 'list-style-type', - 'margin', - 'margin-block', - 'margin-block-end', - 'margin-block-start', - 'margin-bottom', - 'margin-inline', - 'margin-inline-end', - 'margin-inline-start', - 'margin-left', - 'margin-right', - 'margin-top', - 'margin-trim', - 'marker', - 'marker-end', - 'marker-mid', - 'marker-start', - 'marks', - 'mask', - 'mask-border', - 'mask-border-mode', - 'mask-border-outset', - 'mask-border-repeat', - 'mask-border-slice', - 'mask-border-source', - 'mask-border-width', - 'mask-clip', - 'mask-composite', - 'mask-image', - 'mask-mode', - 'mask-origin', - 'mask-position', - 'mask-repeat', - 'mask-size', - 'mask-type', - 'masonry-auto-flow', - 'math-depth', - 'math-shift', - 'math-style', - 'max-block-size', - 'max-height', - 'max-inline-size', - 'max-width', - 'min-block-size', - 'min-height', - 'min-inline-size', - 'min-width', - 'mix-blend-mode', - 'nav-down', - 'nav-index', - 'nav-left', - 'nav-right', - 'nav-up', - 'none', - 'normal', - 'object-fit', - 'object-position', - 'offset', - 'offset-anchor', - 'offset-distance', - 'offset-path', - 'offset-position', - 'offset-rotate', - 'opacity', - 'order', - 'orphans', - 'outline', - 'outline-color', - 'outline-offset', - 'outline-style', - 'outline-width', - 'overflow', - 'overflow-anchor', - 'overflow-block', - 'overflow-clip-margin', - 'overflow-inline', - 'overflow-wrap', - 'overflow-x', - 'overflow-y', - 'overlay', - 'overscroll-behavior', - 'overscroll-behavior-block', - 'overscroll-behavior-inline', - 'overscroll-behavior-x', - 'overscroll-behavior-y', - 'padding', - 'padding-block', - 'padding-block-end', - 'padding-block-start', - 'padding-bottom', - 'padding-inline', - 'padding-inline-end', - 'padding-inline-start', - 'padding-left', - 'padding-right', - 'padding-top', - 'page', - 'page-break-after', - 'page-break-before', - 'page-break-inside', - 'paint-order', - 'pause', - 'pause-after', - 'pause-before', - 'perspective', - 'perspective-origin', - 'place-content', - 'place-items', - 'place-self', - 'pointer-events', - 'position', - 'position-anchor', - 'position-visibility', - 'print-color-adjust', - 'quotes', - 'r', - 'resize', - 'rest', - 'rest-after', - 'rest-before', - 'right', - 'rotate', - 'row-gap', - 'ruby-align', - 'ruby-position', - 'scale', - 'scroll-behavior', - 'scroll-margin', - 'scroll-margin-block', - 'scroll-margin-block-end', - 'scroll-margin-block-start', - 'scroll-margin-bottom', - 'scroll-margin-inline', - 'scroll-margin-inline-end', - 'scroll-margin-inline-start', - 'scroll-margin-left', - 'scroll-margin-right', - 'scroll-margin-top', - 'scroll-padding', - 'scroll-padding-block', - 'scroll-padding-block-end', - 'scroll-padding-block-start', - 'scroll-padding-bottom', - 'scroll-padding-inline', - 'scroll-padding-inline-end', - 'scroll-padding-inline-start', - 'scroll-padding-left', - 'scroll-padding-right', - 'scroll-padding-top', - 'scroll-snap-align', - 'scroll-snap-stop', - 'scroll-snap-type', - 'scroll-timeline', - 'scroll-timeline-axis', - 'scroll-timeline-name', - 'scrollbar-color', - 'scrollbar-gutter', - 'scrollbar-width', - 'shape-image-threshold', - 'shape-margin', - 'shape-outside', - 'shape-rendering', - 'speak', - 'speak-as', - 'src', // @font-face - 'stop-color', - 'stop-opacity', - 'stroke', - 'stroke-dasharray', - 'stroke-dashoffset', - 'stroke-linecap', - 'stroke-linejoin', - 'stroke-miterlimit', - 'stroke-opacity', - 'stroke-width', - 'tab-size', - 'table-layout', - 'text-align', - 'text-align-all', - 'text-align-last', - 'text-anchor', - 'text-combine-upright', - 'text-decoration', - 'text-decoration-color', - 'text-decoration-line', - 'text-decoration-skip', - 'text-decoration-skip-ink', - 'text-decoration-style', - 'text-decoration-thickness', - 'text-emphasis', - 'text-emphasis-color', - 'text-emphasis-position', - 'text-emphasis-style', - 'text-indent', - 'text-justify', - 'text-orientation', - 'text-overflow', - 'text-rendering', - 'text-shadow', - 'text-size-adjust', - 'text-transform', - 'text-underline-offset', - 'text-underline-position', - 'text-wrap', - 'text-wrap-mode', - 'text-wrap-style', - 'timeline-scope', - 'top', - 'touch-action', - 'transform', - 'transform-box', - 'transform-origin', - 'transform-style', - 'transition', - 'transition-behavior', - 'transition-delay', - 'transition-duration', - 'transition-property', - 'transition-timing-function', - 'translate', - 'unicode-bidi', - 'user-modify', - 'user-select', - 'vector-effect', - 'vertical-align', - 'view-timeline', - 'view-timeline-axis', - 'view-timeline-inset', - 'view-timeline-name', - 'view-transition-name', - 'visibility', - 'voice-balance', - 'voice-duration', - 'voice-family', - 'voice-pitch', - 'voice-range', - 'voice-rate', - 'voice-stress', - 'voice-volume', - 'white-space', - 'white-space-collapse', - 'widows', - 'width', - 'will-change', - 'word-break', - 'word-spacing', - 'word-wrap', - 'writing-mode', - 'x', - 'y', - 'z-index', - 'zoom' -].sort().reverse(); - -// some grammars use them all as a single group -const PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS).sort().reverse(); - -/* -Language: Less -Description: It's CSS, with just a little more. -Author: Max Mikhailov -Website: http://lesscss.org -Category: common, css, web -*/ - - -/** @type LanguageFn */ -function less(hljs) { - const modes = MODES(hljs); - const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS; - - const AT_MODIFIERS = "and or not only"; - const IDENT_RE = '[\\w-]+'; // yes, Less identifiers may begin with a digit - const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\{' + IDENT_RE + '\\})'; - - /* Generic Modes */ - - const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes - - const STRING_MODE = function(c) { - return { - // Less strings are not multiline (also include '~' for more consistent coloring of "escaped" strings) - className: 'string', - begin: '~?' + c + '.*?' + c - }; - }; - - const IDENT_MODE = function(name, begin, relevance) { - return { - className: name, - begin: begin, - relevance: relevance - }; - }; - - const AT_KEYWORDS = { - $pattern: /[a-z-]+/, - keyword: AT_MODIFIERS, - attribute: MEDIA_FEATURES.join(" ") - }; - - const PARENS_MODE = { - // used only to properly balance nested parens inside mixin call, def. arg list - begin: '\\(', - end: '\\)', - contains: VALUE_MODES, - keywords: AT_KEYWORDS, - relevance: 0 - }; - - // generic Less highlighter (used almost everywhere except selectors): - VALUE_MODES.push( - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRING_MODE("'"), - STRING_MODE('"'), - modes.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :( - { - begin: '(url|data-uri)\\(', - starts: { - className: 'string', - end: '[\\)\\n]', - excludeEnd: true - } - }, - modes.HEXCOLOR, - PARENS_MODE, - IDENT_MODE('variable', '@@?' + IDENT_RE, 10), - IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), - IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string - { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding): - className: 'attribute', - begin: IDENT_RE + '\\s*:', - end: ':', - returnBegin: true, - excludeEnd: true - }, - modes.IMPORTANT, - { beginKeywords: 'and not' }, - modes.FUNCTION_DISPATCH - ); - - const VALUE_WITH_RULESETS = VALUE_MODES.concat({ - begin: /\{/, - end: /\}/, - contains: RULES - }); - - const MIXIN_GUARD_MODE = { - beginKeywords: 'when', - endsWithParent: true, - contains: [ { beginKeywords: 'and not' } ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match - }; - - /* Rule-Level Modes */ - - const RULE_MODE = { - begin: INTERP_IDENT_RE + '\\s*:', - returnBegin: true, - end: /[;}]/, - relevance: 0, - contains: [ - { begin: /-(webkit|moz|ms|o)-/ }, - modes.CSS_VARIABLE, - { - className: 'attribute', - begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b', - end: /(?=:)/, - starts: { - endsWithParent: true, - illegal: '[<=$]', - relevance: 0, - contains: VALUE_MODES - } - } - ] - }; - - const AT_RULE_MODE = { - className: 'keyword', - begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b', - starts: { - end: '[;{}]', - keywords: AT_KEYWORDS, - returnEnd: true, - contains: VALUE_MODES, - relevance: 0 - } - }; - - // variable definitions and calls - const VAR_RULE_MODE = { - className: 'variable', - variants: [ - // using more strict pattern for higher relevance to increase chances of Less detection. - // this is *the only* Less specific statement used in most of the sources, so... - // (we’ll still often loose to the css-parser unless there's '//' comment, - // simply because 1 variable just can't beat 99 properties :) - { - begin: '@' + IDENT_RE + '\\s*:', - relevance: 15 - }, - { begin: '@' + IDENT_RE } - ], - starts: { - end: '[;}]', - returnEnd: true, - contains: VALUE_WITH_RULESETS - } - }; - - const SELECTOR_MODE = { - // first parse unambiguous selectors (i.e. those not starting with tag) - // then fall into the scary lookahead-discriminator variant. - // this mode also handles mixin definitions and calls - variants: [ - { - begin: '[\\.#:&\\[>]', - end: '[;{}]' // mixin calls end with ';' - }, - { - begin: INTERP_IDENT_RE, - end: /\{/ - } - ], - returnBegin: true, - returnEnd: true, - illegal: '[<=\'$"]', - relevance: 0, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - MIXIN_GUARD_MODE, - IDENT_MODE('keyword', 'all\\b'), - IDENT_MODE('variable', '@\\{' + IDENT_RE + '\\}'), // otherwise it’s identified as tag - - { - begin: '\\b(' + TAGS.join('|') + ')\\b', - className: 'selector-tag' - }, - modes.CSS_NUMBER_MODE, - IDENT_MODE('selector-tag', INTERP_IDENT_RE, 0), - IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE), - IDENT_MODE('selector-class', '\\.' + INTERP_IDENT_RE, 0), - IDENT_MODE('selector-tag', '&', 0), - modes.ATTRIBUTE_SELECTOR_MODE, - { - className: 'selector-pseudo', - begin: ':(' + PSEUDO_CLASSES.join('|') + ')' - }, - { - className: 'selector-pseudo', - begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' - }, - { - begin: /\(/, - end: /\)/, - relevance: 0, - contains: VALUE_WITH_RULESETS - }, // argument list of parametric mixins - { begin: '!important' }, // eat !important after mixin call or it will be colored as tag - modes.FUNCTION_DISPATCH - ] - }; - - const PSEUDO_SELECTOR_MODE = { - begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`, - returnBegin: true, - contains: [ SELECTOR_MODE ] - }; - - RULES.push( - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - AT_RULE_MODE, - VAR_RULE_MODE, - PSEUDO_SELECTOR_MODE, - RULE_MODE, - SELECTOR_MODE, - MIXIN_GUARD_MODE, - modes.FUNCTION_DISPATCH - ); - - return { - name: 'Less', - case_insensitive: true, - illegal: '[=>\'/<($"]', - contains: RULES - }; -} - -module.exports = less; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/lisp.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/lisp.js ***! - \*************************************************************/ -(module) { - -/* -Language: Lisp -Description: Generic lisp syntax -Author: Vasily Polovnyov -Category: lisp -*/ - -function lisp(hljs) { - const LISP_IDENT_RE = '[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*'; - const MEC_RE = '\\|[^]*?\\|'; - const LISP_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?'; - const LITERAL = { - className: 'literal', - begin: '\\b(t{1}|nil)\\b' - }; - const NUMBER = { - className: 'number', - variants: [ - { - begin: LISP_SIMPLE_NUMBER_RE, - relevance: 0 - }, - { begin: '#(b|B)[0-1]+(/[0-1]+)?' }, - { begin: '#(o|O)[0-7]+(/[0-7]+)?' }, - { begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?' }, - { - begin: '#(c|C)\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, - end: '\\)' - } - ] - }; - const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); - const COMMENT = hljs.COMMENT( - ';', '$', - { relevance: 0 } - ); - const VARIABLE = { - begin: '\\*', - end: '\\*' - }; - const KEYWORD = { - className: 'symbol', - begin: '[:&]' + LISP_IDENT_RE - }; - const IDENT = { - begin: LISP_IDENT_RE, - relevance: 0 - }; - const MEC = { begin: MEC_RE }; - const QUOTED_LIST = { - begin: '\\(', - end: '\\)', - contains: [ - 'self', - LITERAL, - STRING, - NUMBER, - IDENT - ] - }; - const QUOTED = { - contains: [ - NUMBER, - STRING, - VARIABLE, - KEYWORD, - QUOTED_LIST, - IDENT - ], - variants: [ - { - begin: '[\'`]\\(', - end: '\\)' - }, - { - begin: '\\(quote ', - end: '\\)', - keywords: { name: 'quote' } - }, - { begin: '\'' + MEC_RE } - ] - }; - const QUOTED_ATOM = { variants: [ - { begin: '\'' + LISP_IDENT_RE }, - { begin: '#\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*' } - ] }; - const LIST = { - begin: '\\(\\s*', - end: '\\)' - }; - const BODY = { - endsWithParent: true, - relevance: 0 - }; - LIST.contains = [ - { - className: 'name', - variants: [ - { - begin: LISP_IDENT_RE, - relevance: 0, - }, - { begin: MEC_RE } - ] - }, - BODY - ]; - BODY.contains = [ - QUOTED, - QUOTED_ATOM, - LIST, - LITERAL, - NUMBER, - STRING, - COMMENT, - VARIABLE, - KEYWORD, - MEC, - IDENT - ]; - - return { - name: 'Lisp', - illegal: /\S/, - contains: [ - NUMBER, - hljs.SHEBANG(), - LITERAL, - STRING, - COMMENT, - QUOTED, - QUOTED_ATOM, - LIST, - IDENT - ] - }; -} - -module.exports = lisp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/livecodeserver.js" -/*!***********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/livecodeserver.js ***! - \***********************************************************************/ -(module) { - -/* -Language: LiveCode -Author: Ralf Bitter -Description: Language definition for LiveCode server accounting for revIgniter (a web application framework) characteristics. -Version: 1.1 -Date: 2019-04-17 -Category: enterprise -*/ - -function livecodeserver(hljs) { - const VARIABLE = { - className: 'variable', - variants: [ - { begin: '\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)' }, - { begin: '\\$_[A-Z]+' } - ], - relevance: 0 - }; - const COMMENT_MODES = [ - hljs.C_BLOCK_COMMENT_MODE, - hljs.HASH_COMMENT_MODE, - hljs.COMMENT('--', '$'), - hljs.COMMENT('[^:]//', '$') - ]; - const TITLE1 = hljs.inherit(hljs.TITLE_MODE, { variants: [ - { begin: '\\b_*rig[A-Z][A-Za-z0-9_\\-]*' }, - { begin: '\\b_[a-z0-9\\-]+' } - ] }); - const TITLE2 = hljs.inherit(hljs.TITLE_MODE, { begin: '\\b([A-Za-z0-9_\\-]+)\\b' }); - return { - name: 'LiveCode', - case_insensitive: false, - keywords: { - keyword: - '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' - + 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' - + 'after byte bytes english the until http forever descending using line real8 with seventh ' - + 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' - + 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' - + 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' - + 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' - + 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' - + 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' - + 'first ftp integer abbreviated abbr abbrev private case while if ' - + 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' - + 'contains ends with begins the keys of keys', - literal: - 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' - + 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' - + 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' - + 'quote empty one true return cr linefeed right backslash null seven tab three two ' - + 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' - + 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK', - built_in: - 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' - + 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' - + 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' - + 'constantNames cos date dateFormat decompress difference directories ' - + 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' - + 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' - + 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' - + 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' - + 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec ' - + 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' - + 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' - + 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' - + 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' - + 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' - + 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' - + 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' - + 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' - + 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' - + 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' - + 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' - + 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' - + 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' - + 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' - + 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' - + 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' - + 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' - + 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' - + 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' - + 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' - + 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' - + 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' - + 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' - + 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' - + 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' - + 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' - + 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' - + 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' - + 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' - + 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver ' - + 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' - + 'libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename ' - + 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' - + 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' - + 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' - + 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' - + 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' - + 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' - + 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' - + 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' - + 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' - + 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' - + 'subtract symmetric union unload vectorDotProduct wait write' - }, - contains: [ - VARIABLE, - { - className: 'keyword', - begin: '\\bend\\sif\\b' - }, - { - className: 'function', - beginKeywords: 'function', - end: '$', - contains: [ - VARIABLE, - TITLE2, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE, - TITLE1 - ] - }, - { - className: 'function', - begin: '\\bend\\s+', - end: '$', - keywords: 'end', - contains: [ - TITLE2, - TITLE1 - ], - relevance: 0 - }, - { - beginKeywords: 'command on', - end: '$', - contains: [ - VARIABLE, - TITLE2, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE, - TITLE1 - ] - }, - { - className: 'meta', - variants: [ - { - begin: '<\\?(rev|lc|livecode)', - relevance: 10 - }, - { begin: '<\\?' }, - { begin: '\\?>' } - ] - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE, - TITLE1 - ].concat(COMMENT_MODES), - illegal: ';$|^\\[|^=|&|\\{' - }; -} - -module.exports = livecodeserver; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/livescript.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/livescript.js ***! - \*******************************************************************/ -(module) { - -const KEYWORDS = [ - "as", // for exports - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - // JS handles these with a special rule - // "get", - // "set", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - // It's reached stage 3, which is "recommended for implementation": - "using" -]; -const LITERALS = [ - "true", - "false", - "null", - "undefined", - "NaN", - "Infinity" -]; - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects -const TYPES = [ - // Fundamental objects - "Object", - "Function", - "Boolean", - "Symbol", - // numbers and dates - "Math", - "Date", - "Number", - "BigInt", - // text - "String", - "RegExp", - // Indexed collections - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - // Keyed collections - "Set", - "Map", - "WeakSet", - "WeakMap", - // Structured data - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - // Control abstraction objects - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - // Reflection - "Reflect", - "Proxy", - // Internationalization - "Intl", - // WebAssembly - "WebAssembly" -]; - -const ERROR_TYPES = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError" -]; - -const BUILT_IN_GLOBALS = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - - "require", - "exports", - - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape" -]; - -const BUILT_INS = [].concat( - BUILT_IN_GLOBALS, - TYPES, - ERROR_TYPES -); - -/* -Language: LiveScript -Author: Taneli Vatanen -Contributors: Jen Evers-Corvina -Origin: coffeescript.js -Description: LiveScript is a programming language that transcompiles to JavaScript. For info about language see http://livescript.net/ -Website: https://livescript.net -Category: scripting -*/ - - -function livescript(hljs) { - const LIVESCRIPT_BUILT_INS = [ - 'npm', - 'print' - ]; - const LIVESCRIPT_LITERALS = [ - 'yes', - 'no', - 'on', - 'off', - 'it', - 'that', - 'void' - ]; - const LIVESCRIPT_KEYWORDS = [ - 'then', - 'unless', - 'until', - 'loop', - 'of', - 'by', - 'when', - 'and', - 'or', - 'is', - 'isnt', - 'not', - 'it', - 'that', - 'otherwise', - 'from', - 'to', - 'til', - 'fallthrough', - 'case', - 'enum', - 'native', - 'list', - 'map', - '__hasProp', - '__extends', - '__slice', - '__bind', - '__indexOf' - ]; - const KEYWORDS$1 = { - keyword: KEYWORDS.concat(LIVESCRIPT_KEYWORDS), - literal: LITERALS.concat(LIVESCRIPT_LITERALS), - built_in: BUILT_INS.concat(LIVESCRIPT_BUILT_INS) - }; - const JS_IDENT_RE = '[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*'; - const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: KEYWORDS$1 - }; - const SUBST_SIMPLE = { - className: 'subst', - begin: /#[A-Za-z$_]/, - end: /(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/, - keywords: KEYWORDS$1 - }; - const EXPRESSIONS = [ - hljs.BINARY_NUMBER_MODE, - { - className: 'number', - begin: '(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)', - relevance: 0, - starts: { - end: '(\\s*/)?', - relevance: 0 - } // a number tries to eat the following slash to prevent treating it as a regexp - }, - { - className: 'string', - variants: [ - { - begin: /'''/, - end: /'''/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /'/, - end: /'/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /"""/, - end: /"""/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - SUBST_SIMPLE - ] - }, - { - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST, - SUBST_SIMPLE - ] - }, - { - begin: /\\/, - end: /(\s|$)/, - excludeEnd: true - } - ] - }, - { - className: 'regexp', - variants: [ - { - begin: '//', - end: '//[gim]*', - contains: [ - SUBST, - hljs.HASH_COMMENT_MODE - ] - }, - { - // regex can't start with space to parse x / 2 / 3 as two divisions - // regex can't start with *, and it supports an "illegal" in the main mode - begin: /\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/ } - ] - }, - { begin: '@' + JS_IDENT_RE }, - { - begin: '``', - end: '``', - excludeBegin: true, - excludeEnd: true, - subLanguage: 'javascript' - } - ]; - SUBST.contains = EXPRESSIONS; - - const PARAMS = { - className: 'params', - begin: '\\(', - returnBegin: true, - /* We need another contained nameless mode to not have every nested - pair of parens to be called "params" */ - contains: [ - { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS$1, - contains: [ 'self' ].concat(EXPRESSIONS) - } - ] - }; - - const SYMBOLS = { begin: '(#=>|=>|\\|>>|-?->|!->)' }; - - const CLASS_DEFINITION = { - variants: [ - { match: [ - /class\s+/, - JS_IDENT_RE, - /\s+extends\s+/, - JS_IDENT_RE - ] }, - { match: [ - /class\s+/, - JS_IDENT_RE - ] } - ], - scope: { - 2: "title.class", - 4: "title.class.inherited" - }, - keywords: KEYWORDS$1 - }; - - return { - name: 'LiveScript', - aliases: [ 'ls' ], - keywords: KEYWORDS$1, - illegal: /\/\*/, - contains: EXPRESSIONS.concat([ - hljs.COMMENT('\\/\\*', '\\*\\/'), - hljs.HASH_COMMENT_MODE, - SYMBOLS, // relevance booster - { - className: 'function', - contains: [ - TITLE, - PARAMS - ], - returnBegin: true, - variants: [ - { - begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B->\\*?', - end: '->\\*?' - }, - { - begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?!?(\\(.*\\)\\s*)?\\B[-~]{1,2}>\\*?', - end: '[-~]{1,2}>\\*?' - }, - { - begin: '(' + JS_IDENT_RE + '\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B!?[-~]{1,2}>\\*?', - end: '!?[-~]{1,2}>\\*?' - } - ] - }, - CLASS_DEFINITION, - { - begin: JS_IDENT_RE + ':', - end: ':', - returnBegin: true, - returnEnd: true, - relevance: 0 - } - ]) - }; -} - -module.exports = livescript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/llvm.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/llvm.js ***! - \*************************************************************/ -(module) { - -/* -Language: LLVM IR -Author: Michael Rodler -Description: language used as intermediate representation in the LLVM compiler framework -Website: https://llvm.org/docs/LangRef.html -Category: assembler -Audit: 2020 -*/ - -/** @type LanguageFn */ -function llvm(hljs) { - const regex = hljs.regex; - const IDENT_RE = /([-a-zA-Z$._][\w$.-]*)/; - const TYPE = { - className: 'type', - begin: /\bi\d+(?=\s|\b)/ - }; - const OPERATOR = { - className: 'operator', - relevance: 0, - begin: /=/ - }; - const PUNCTUATION = { - className: 'punctuation', - relevance: 0, - begin: /,/ - }; - const NUMBER = { - className: 'number', - variants: [ - { begin: /[su]?0[xX][KMLHR]?[a-fA-F0-9]+/ }, - { begin: /[-+]?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/ } - ], - relevance: 0 - }; - const LABEL = { - className: 'symbol', - variants: [ { begin: /^\s*[a-z]+:/ }, // labels - ], - relevance: 0 - }; - const VARIABLE = { - className: 'variable', - variants: [ - { begin: regex.concat(/%/, IDENT_RE) }, - { begin: /%\d+/ }, - { begin: /#\d+/ }, - ] - }; - const FUNCTION = { - className: 'title', - variants: [ - { begin: regex.concat(/@/, IDENT_RE) }, - { begin: /@\d+/ }, - { begin: regex.concat(/!/, IDENT_RE) }, - { begin: regex.concat(/!\d+/, IDENT_RE) }, - // https://llvm.org/docs/LangRef.html#namedmetadatastructure - // obviously a single digit can also be used in this fashion - { begin: /!\d+/ } - ] - }; - - return { - name: 'LLVM IR', - // TODO: split into different categories of keywords - keywords: { - keyword: 'begin end true false declare define global ' - + 'constant private linker_private internal ' - + 'available_externally linkonce linkonce_odr weak ' - + 'weak_odr appending dllimport dllexport common ' - + 'default hidden protected extern_weak external ' - + 'thread_local zeroinitializer undef null to tail ' - + 'target triple datalayout volatile nuw nsw nnan ' - + 'ninf nsz arcp fast exact inbounds align ' - + 'addrspace section alias module asm sideeffect ' - + 'gc dbg linker_private_weak attributes blockaddress ' - + 'initialexec localdynamic localexec prefix unnamed_addr ' - + 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' - + 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' - + 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' - + 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' - + 'cc c signext zeroext inreg sret nounwind ' - + 'noreturn noalias nocapture byval nest readnone ' - + 'readonly inlinehint noinline alwaysinline optsize ssp ' - + 'sspreq noredzone noimplicitfloat naked builtin cold ' - + 'nobuiltin noduplicate nonlazybind optnone returns_twice ' - + 'sanitize_address sanitize_memory sanitize_thread sspstrong ' - + 'uwtable returned type opaque eq ne slt sgt ' - + 'sle sge ult ugt ule uge oeq one olt ogt ' - + 'ole oge ord uno ueq une x acq_rel acquire ' - + 'alignstack atomic catch cleanup filter inteldialect ' - + 'max min monotonic nand personality release seq_cst ' - + 'singlethread umax umin unordered xchg add fadd ' - + 'sub fsub mul fmul udiv sdiv fdiv urem srem ' - + 'frem shl lshr ashr and or xor icmp fcmp ' - + 'phi call trunc zext sext fptrunc fpext uitofp ' - + 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' - + 'addrspacecast select va_arg ret br switch invoke ' - + 'unwind unreachable indirectbr landingpad resume ' - + 'malloc alloca free load store getelementptr ' - + 'extractelement insertelement shufflevector getresult ' - + 'extractvalue insertvalue atomicrmw cmpxchg fence ' - + 'argmemonly', - type: 'void half bfloat float double fp128 x86_fp80 ppc_fp128 ' - + 'x86_amx x86_mmx ptr label token metadata opaque' - }, - contains: [ - TYPE, - // this matches "empty comments"... - // ...because it's far more likely this is a statement terminator in - // another language than an actual comment - hljs.COMMENT(/;\s*$/, null, { relevance: 0 }), - hljs.COMMENT(/;/, /$/), - { - className: 'string', - begin: /"/, - end: /"/, - contains: [ - { - className: 'char.escape', - match: /\\\d\d/ - } - ] - }, - FUNCTION, - PUNCTUATION, - OPERATOR, - VARIABLE, - LABEL, - NUMBER - ] - }; -} - -module.exports = llvm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/lsl.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/lsl.js ***! - \************************************************************/ -(module) { - -/* -Language: LSL (Linden Scripting Language) -Description: The Linden Scripting Language is used in Second Life by Linden Labs. -Author: Builder's Brewery -Website: http://wiki.secondlife.com/wiki/LSL_Portal -Category: scripting -*/ - -function lsl(hljs) { - const LSL_STRING_ESCAPE_CHARS = { - className: 'subst', - begin: /\\[tn"\\]/ - }; - - const LSL_STRINGS = { - className: 'string', - begin: '"', - end: '"', - contains: [ LSL_STRING_ESCAPE_CHARS ] - }; - - const LSL_NUMBERS = { - className: 'number', - relevance: 0, - begin: hljs.C_NUMBER_RE - }; - - const LSL_CONSTANTS = { - className: 'literal', - variants: [ - { begin: '\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b' }, - { begin: '\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b' }, - { begin: '\\b(FALSE|TRUE)\\b' }, - { begin: '\\b(ZERO_ROTATION)\\b' }, - { begin: '\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b' }, - { begin: '\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b' } - ] - }; - - const LSL_FUNCTIONS = { - className: 'built_in', - begin: '\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b' - }; - - return { - name: 'LSL (Linden Scripting Language)', - illegal: ':', - contains: [ - LSL_STRINGS, - { - className: 'comment', - variants: [ - hljs.COMMENT('//', '$'), - hljs.COMMENT('/\\*', '\\*/') - ], - relevance: 0 - }, - LSL_NUMBERS, - { - className: 'section', - variants: [ - { begin: '\\b(state|default)\\b' }, - { begin: '\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b' } - ] - }, - LSL_FUNCTIONS, - LSL_CONSTANTS, - { - className: 'type', - begin: '\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b' - } - ] - }; -} - -module.exports = lsl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/lua.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/lua.js ***! - \************************************************************/ -(module) { - -/* -Language: Lua -Description: Lua is a powerful, efficient, lightweight, embeddable scripting language. -Author: Andrew Fedorov -Category: common, gaming, scripting -Website: https://www.lua.org -*/ - -function lua(hljs) { - const OPENING_LONG_BRACKET = '\\[=*\\['; - const CLOSING_LONG_BRACKET = '\\]=*\\]'; - const LONG_BRACKETS = { - begin: OPENING_LONG_BRACKET, - end: CLOSING_LONG_BRACKET, - contains: [ 'self' ] - }; - const COMMENTS = [ - hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'), - hljs.COMMENT( - '--' + OPENING_LONG_BRACKET, - CLOSING_LONG_BRACKET, - { - contains: [ LONG_BRACKETS ], - relevance: 10 - } - ) - ]; - return { - name: 'Lua', - aliases: ['pluto'], - keywords: { - $pattern: hljs.UNDERSCORE_IDENT_RE, - literal: "true false nil", - keyword: "and break do else elseif end for goto if in local not or repeat return then until while", - built_in: - // Metatags and globals: - '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' - + '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' - // Standard methods and properties: - + 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring ' - + 'module next pairs pcall print rawequal rawget rawset require select setfenv ' - + 'setmetatable tonumber tostring type unpack xpcall arg self ' - // Library methods and properties (one line per library): - + 'coroutine resume yield status wrap create running debug getupvalue ' - + 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' - + 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' - + 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' - + 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' - + 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' - + 'table setn insert getn foreachi maxn foreach concat sort remove' - }, - contains: COMMENTS.concat([ - { - className: 'function', - beginKeywords: 'function', - end: '\\)', - contains: [ - hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*' }), - { - className: 'params', - begin: '\\(', - endsWithParent: true, - contains: COMMENTS - } - ].concat(COMMENTS) - }, - hljs.C_NUMBER_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: OPENING_LONG_BRACKET, - end: CLOSING_LONG_BRACKET, - contains: [ LONG_BRACKETS ], - relevance: 5 - } - ]) - }; -} - -module.exports = lua; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/makefile.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/makefile.js ***! - \*****************************************************************/ -(module) { - -/* -Language: Makefile -Author: Ivan Sagalaev -Contributors: Joël Porquet -Website: https://www.gnu.org/software/make/manual/html_node/Introduction.html -Category: common, build-system -*/ - -function makefile(hljs) { - /* Variables: simple (eg $(var)) and special (eg $@) */ - const VARIABLE = { - className: 'variable', - variants: [ - { - begin: '\\$\\(' + hljs.UNDERSCORE_IDENT_RE + '\\)', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { begin: /\$[@% -Website: https://daringfireball.net/projects/markdown/ -Category: common, markup -*/ - -function markdown(hljs) { - const regex = hljs.regex; - const INLINE_HTML = { - begin: /<\/?[A-Za-z_]/, - end: '>', - subLanguage: 'xml', - relevance: 0 - }; - const HORIZONTAL_RULE = { - begin: '^[-\\*]{3,}', - end: '$' - }; - const CODE = { - className: 'code', - variants: [ - // TODO: fix to allow these to work with sublanguage also - { begin: '(`{3,})[^`](.|\\n)*?\\1`*[ ]*' }, - { begin: '(~{3,})[^~](.|\\n)*?\\1~*[ ]*' }, - // needed to allow markdown as a sublanguage to work - { - begin: '```', - end: '```+[ ]*$' - }, - { - begin: '~~~', - end: '~~~+[ ]*$' - }, - { begin: '`.+?`' }, - { - begin: '(?=^( {4}|\\t))', - // use contains to gobble up multiple lines to allow the block to be whatever size - // but only have a single open/close tag vs one per line - contains: [ - { - begin: '^( {4}|\\t)', - end: '(\\n)$' - } - ], - relevance: 0 - } - ] - }; - const LIST = { - className: 'bullet', - begin: '^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)', - end: '\\s+', - excludeEnd: true - }; - const LINK_REFERENCE = { - begin: /^\[[^\n]+\]:/, - returnBegin: true, - contains: [ - { - className: 'symbol', - begin: /\[/, - end: /\]/, - excludeBegin: true, - excludeEnd: true - }, - { - className: 'link', - begin: /:\s*/, - end: /$/, - excludeBegin: true - } - ] - }; - const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/; - const LINK = { - variants: [ - // too much like nested array access in so many languages - // to have any real relevance - { - begin: /\[.+?\]\[.*?\]/, - relevance: 0 - }, - // popular internet URLs - { - begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, - relevance: 2 - }, - { - begin: regex.concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/), - relevance: 2 - }, - // relative urls - { - begin: /\[.+?\]\([./?&#].*?\)/, - relevance: 1 - }, - // whatever else, lower relevance (might not be a link at all) - { - begin: /\[.*?\]\(.*?\)/, - relevance: 0 - } - ], - returnBegin: true, - contains: [ - { - // empty strings for alt or link text - match: /\[(?=\])/ }, - { - className: 'string', - relevance: 0, - begin: '\\[', - end: '\\]', - excludeBegin: true, - returnEnd: true - }, - { - className: 'link', - relevance: 0, - begin: '\\]\\(', - end: '\\)', - excludeBegin: true, - excludeEnd: true - }, - { - className: 'symbol', - relevance: 0, - begin: '\\]\\[', - end: '\\]', - excludeBegin: true, - excludeEnd: true - } - ] - }; - const BOLD = { - className: 'strong', - contains: [], // defined later - variants: [ - { - begin: /_{2}(?!\s)/, - end: /_{2}/ - }, - { - begin: /\*{2}(?!\s)/, - end: /\*{2}/ - } - ] - }; - const ITALIC = { - className: 'emphasis', - contains: [], // defined later - variants: [ - { - begin: /\*(?![*\s])/, - end: /\*/ - }, - { - begin: /_(?![_\s])/, - end: /_/, - relevance: 0 - } - ] - }; - - // 3 level deep nesting is not allowed because it would create confusion - // in cases like `***testing***` because where we don't know if the last - // `***` is starting a new bold/italic or finishing the last one - const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] }); - const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] }); - BOLD.contains.push(ITALIC_WITHOUT_BOLD); - ITALIC.contains.push(BOLD_WITHOUT_ITALIC); - - let CONTAINABLE = [ - INLINE_HTML, - LINK - ]; - - [ - BOLD, - ITALIC, - BOLD_WITHOUT_ITALIC, - ITALIC_WITHOUT_BOLD - ].forEach(m => { - m.contains = m.contains.concat(CONTAINABLE); - }); - - CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC); - - const HEADER = { - className: 'section', - variants: [ - { - begin: '^#{1,6}', - end: '$', - contains: CONTAINABLE - }, - { - begin: '(?=^.+?\\n[=-]{2,}$)', - contains: [ - { begin: '^[=-]*$' }, - { - begin: '^', - end: "\\n", - contains: CONTAINABLE - } - ] - } - ] - }; - - const BLOCKQUOTE = { - className: 'quote', - begin: '^>\\s+', - contains: CONTAINABLE, - end: '$' - }; - - const ENTITY = { - //https://spec.commonmark.org/0.31.2/#entity-references - scope: 'literal', - match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/ - }; - - return { - name: 'Markdown', - aliases: [ - 'md', - 'mkdown', - 'mkd' - ], - contains: [ - HEADER, - INLINE_HTML, - LIST, - BOLD, - ITALIC, - BLOCKQUOTE, - CODE, - HORIZONTAL_RULE, - LINK, - LINK_REFERENCE, - ENTITY - ] - }; -} - -module.exports = markdown; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/mathematica.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/mathematica.js ***! - \********************************************************************/ -(module) { - -const SYSTEM_SYMBOLS = [ - "AASTriangle", - "AbelianGroup", - "Abort", - "AbortKernels", - "AbortProtect", - "AbortScheduledTask", - "Above", - "Abs", - "AbsArg", - "AbsArgPlot", - "Absolute", - "AbsoluteCorrelation", - "AbsoluteCorrelationFunction", - "AbsoluteCurrentValue", - "AbsoluteDashing", - "AbsoluteFileName", - "AbsoluteOptions", - "AbsolutePointSize", - "AbsoluteThickness", - "AbsoluteTime", - "AbsoluteTiming", - "AcceptanceThreshold", - "AccountingForm", - "Accumulate", - "Accuracy", - "AccuracyGoal", - "AcousticAbsorbingValue", - "AcousticImpedanceValue", - "AcousticNormalVelocityValue", - "AcousticPDEComponent", - "AcousticPressureCondition", - "AcousticRadiationValue", - "AcousticSoundHardValue", - "AcousticSoundSoftCondition", - "ActionDelay", - "ActionMenu", - "ActionMenuBox", - "ActionMenuBoxOptions", - "Activate", - "Active", - "ActiveClassification", - "ActiveClassificationObject", - "ActiveItem", - "ActivePrediction", - "ActivePredictionObject", - "ActiveStyle", - "AcyclicGraphQ", - "AddOnHelpPath", - "AddSides", - "AddTo", - "AddToSearchIndex", - "AddUsers", - "AdjacencyGraph", - "AdjacencyList", - "AdjacencyMatrix", - "AdjacentMeshCells", - "Adjugate", - "AdjustmentBox", - "AdjustmentBoxOptions", - "AdjustTimeSeriesForecast", - "AdministrativeDivisionData", - "AffineHalfSpace", - "AffineSpace", - "AffineStateSpaceModel", - "AffineTransform", - "After", - "AggregatedEntityClass", - "AggregationLayer", - "AircraftData", - "AirportData", - "AirPressureData", - "AirSoundAttenuation", - "AirTemperatureData", - "AiryAi", - "AiryAiPrime", - "AiryAiZero", - "AiryBi", - "AiryBiPrime", - "AiryBiZero", - "AlgebraicIntegerQ", - "AlgebraicNumber", - "AlgebraicNumberDenominator", - "AlgebraicNumberNorm", - "AlgebraicNumberPolynomial", - "AlgebraicNumberTrace", - "AlgebraicRules", - "AlgebraicRulesData", - "Algebraics", - "AlgebraicUnitQ", - "Alignment", - "AlignmentMarker", - "AlignmentPoint", - "All", - "AllowAdultContent", - "AllowChatServices", - "AllowedCloudExtraParameters", - "AllowedCloudParameterExtensions", - "AllowedDimensions", - "AllowedFrequencyRange", - "AllowedHeads", - "AllowGroupClose", - "AllowIncomplete", - "AllowInlineCells", - "AllowKernelInitialization", - "AllowLooseGrammar", - "AllowReverseGroupClose", - "AllowScriptLevelChange", - "AllowVersionUpdate", - "AllTrue", - "Alphabet", - "AlphabeticOrder", - "AlphabeticSort", - "AlphaChannel", - "AlternateImage", - "AlternatingFactorial", - "AlternatingGroup", - "AlternativeHypothesis", - "Alternatives", - "AltitudeMethod", - "AmbientLight", - "AmbiguityFunction", - "AmbiguityList", - "Analytic", - "AnatomyData", - "AnatomyForm", - "AnatomyPlot3D", - "AnatomySkinStyle", - "AnatomyStyling", - "AnchoredSearch", - "And", - "AndersonDarlingTest", - "AngerJ", - "AngleBisector", - "AngleBracket", - "AnglePath", - "AnglePath3D", - "AngleVector", - "AngularGauge", - "Animate", - "AnimatedImage", - "AnimationCycleOffset", - "AnimationCycleRepetitions", - "AnimationDirection", - "AnimationDisplayTime", - "AnimationRate", - "AnimationRepetitions", - "AnimationRunning", - "AnimationRunTime", - "AnimationTimeIndex", - "AnimationVideo", - "Animator", - "AnimatorBox", - "AnimatorBoxOptions", - "AnimatorElements", - "Annotate", - "Annotation", - "AnnotationDelete", - "AnnotationKeys", - "AnnotationRules", - "AnnotationValue", - "Annuity", - "AnnuityDue", - "Annulus", - "AnomalyDetection", - "AnomalyDetector", - "AnomalyDetectorFunction", - "Anonymous", - "Antialiasing", - "Antihermitian", - "AntihermitianMatrixQ", - "Antisymmetric", - "AntisymmetricMatrixQ", - "Antonyms", - "AnyOrder", - "AnySubset", - "AnyTrue", - "Apart", - "ApartSquareFree", - "APIFunction", - "Appearance", - "AppearanceElements", - "AppearanceRules", - "AppellF1", - "Append", - "AppendCheck", - "AppendLayer", - "AppendTo", - "Application", - "Apply", - "ApplyReaction", - "ApplySides", - "ApplyTo", - "ArcCos", - "ArcCosh", - "ArcCot", - "ArcCoth", - "ArcCsc", - "ArcCsch", - "ArcCurvature", - "ARCHProcess", - "ArcLength", - "ArcSec", - "ArcSech", - "ArcSin", - "ArcSinDistribution", - "ArcSinh", - "ArcTan", - "ArcTanh", - "Area", - "Arg", - "ArgMax", - "ArgMin", - "ArgumentCountQ", - "ArgumentsOptions", - "ARIMAProcess", - "ArithmeticGeometricMean", - "ARMAProcess", - "Around", - "AroundReplace", - "ARProcess", - "Array", - "ArrayComponents", - "ArrayDepth", - "ArrayFilter", - "ArrayFlatten", - "ArrayMesh", - "ArrayPad", - "ArrayPlot", - "ArrayPlot3D", - "ArrayQ", - "ArrayReduce", - "ArrayResample", - "ArrayReshape", - "ArrayRules", - "Arrays", - "Arrow", - "Arrow3DBox", - "ArrowBox", - "Arrowheads", - "ASATriangle", - "Ask", - "AskAppend", - "AskConfirm", - "AskDisplay", - "AskedQ", - "AskedValue", - "AskFunction", - "AskState", - "AskTemplateDisplay", - "AspectRatio", - "AspectRatioFixed", - "Assert", - "AssessmentFunction", - "AssessmentResultObject", - "AssociateTo", - "Association", - "AssociationFormat", - "AssociationMap", - "AssociationQ", - "AssociationThread", - "AssumeDeterministic", - "Assuming", - "Assumptions", - "AstroAngularSeparation", - "AstroBackground", - "AstroCenter", - "AstroDistance", - "AstroGraphics", - "AstroGridLines", - "AstroGridLinesStyle", - "AstronomicalData", - "AstroPosition", - "AstroProjection", - "AstroRange", - "AstroRangePadding", - "AstroReferenceFrame", - "AstroStyling", - "AstroZoomLevel", - "Asymptotic", - "AsymptoticDSolveValue", - "AsymptoticEqual", - "AsymptoticEquivalent", - "AsymptoticExpectation", - "AsymptoticGreater", - "AsymptoticGreaterEqual", - "AsymptoticIntegrate", - "AsymptoticLess", - "AsymptoticLessEqual", - "AsymptoticOutputTracker", - "AsymptoticProbability", - "AsymptoticProduct", - "AsymptoticRSolveValue", - "AsymptoticSolve", - "AsymptoticSum", - "Asynchronous", - "AsynchronousTaskObject", - "AsynchronousTasks", - "Atom", - "AtomCoordinates", - "AtomCount", - "AtomDiagramCoordinates", - "AtomLabels", - "AtomLabelStyle", - "AtomList", - "AtomQ", - "AttachCell", - "AttachedCell", - "AttentionLayer", - "Attributes", - "Audio", - "AudioAmplify", - "AudioAnnotate", - "AudioAnnotationLookup", - "AudioBlockMap", - "AudioCapture", - "AudioChannelAssignment", - "AudioChannelCombine", - "AudioChannelMix", - "AudioChannels", - "AudioChannelSeparate", - "AudioData", - "AudioDelay", - "AudioDelete", - "AudioDevice", - "AudioDistance", - "AudioEncoding", - "AudioFade", - "AudioFrequencyShift", - "AudioGenerator", - "AudioIdentify", - "AudioInputDevice", - "AudioInsert", - "AudioInstanceQ", - "AudioIntervals", - "AudioJoin", - "AudioLabel", - "AudioLength", - "AudioLocalMeasurements", - "AudioLooping", - "AudioLoudness", - "AudioMeasurements", - "AudioNormalize", - "AudioOutputDevice", - "AudioOverlay", - "AudioPad", - "AudioPan", - "AudioPartition", - "AudioPause", - "AudioPitchShift", - "AudioPlay", - "AudioPlot", - "AudioQ", - "AudioRecord", - "AudioReplace", - "AudioResample", - "AudioReverb", - "AudioReverse", - "AudioSampleRate", - "AudioSpectralMap", - "AudioSpectralTransformation", - "AudioSplit", - "AudioStop", - "AudioStream", - "AudioStreams", - "AudioTimeStretch", - "AudioTrackApply", - "AudioTrackSelection", - "AudioTrim", - "AudioType", - "AugmentedPolyhedron", - "AugmentedSymmetricPolynomial", - "Authenticate", - "Authentication", - "AuthenticationDialog", - "AutoAction", - "Autocomplete", - "AutocompletionFunction", - "AutoCopy", - "AutocorrelationTest", - "AutoDelete", - "AutoEvaluateEvents", - "AutoGeneratedPackage", - "AutoIndent", - "AutoIndentSpacings", - "AutoItalicWords", - "AutoloadPath", - "AutoMatch", - "Automatic", - "AutomaticImageSize", - "AutoMultiplicationSymbol", - "AutoNumberFormatting", - "AutoOpenNotebooks", - "AutoOpenPalettes", - "AutoOperatorRenderings", - "AutoQuoteCharacters", - "AutoRefreshed", - "AutoRemove", - "AutorunSequencing", - "AutoScaling", - "AutoScroll", - "AutoSpacing", - "AutoStyleOptions", - "AutoStyleWords", - "AutoSubmitting", - "Axes", - "AxesEdge", - "AxesLabel", - "AxesOrigin", - "AxesStyle", - "AxiomaticTheory", - "Axis", - "Axis3DBox", - "Axis3DBoxOptions", - "AxisBox", - "AxisBoxOptions", - "AxisLabel", - "AxisObject", - "AxisStyle", - "BabyMonsterGroupB", - "Back", - "BackFaceColor", - "BackFaceGlowColor", - "BackFaceOpacity", - "BackFaceSpecularColor", - "BackFaceSpecularExponent", - "BackFaceSurfaceAppearance", - "BackFaceTexture", - "Background", - "BackgroundAppearance", - "BackgroundTasksSettings", - "Backslash", - "Backsubstitution", - "Backward", - "Ball", - "Band", - "BandpassFilter", - "BandstopFilter", - "BarabasiAlbertGraphDistribution", - "BarChart", - "BarChart3D", - "BarcodeImage", - "BarcodeRecognize", - "BaringhausHenzeTest", - "BarLegend", - "BarlowProschanImportance", - "BarnesG", - "BarOrigin", - "BarSpacing", - "BartlettHannWindow", - "BartlettWindow", - "BaseDecode", - "BaseEncode", - "BaseForm", - "Baseline", - "BaselinePosition", - "BaseStyle", - "BasicRecurrentLayer", - "BatchNormalizationLayer", - "BatchSize", - "BatesDistribution", - "BattleLemarieWavelet", - "BayesianMaximization", - "BayesianMaximizationObject", - "BayesianMinimization", - "BayesianMinimizationObject", - "Because", - "BeckmannDistribution", - "Beep", - "Before", - "Begin", - "BeginDialogPacket", - "BeginPackage", - "BellB", - "BellY", - "Below", - "BenfordDistribution", - "BeniniDistribution", - "BenktanderGibratDistribution", - "BenktanderWeibullDistribution", - "BernoulliB", - "BernoulliDistribution", - "BernoulliGraphDistribution", - "BernoulliProcess", - "BernsteinBasis", - "BesagL", - "BesselFilterModel", - "BesselI", - "BesselJ", - "BesselJZero", - "BesselK", - "BesselY", - "BesselYZero", - "Beta", - "BetaBinomialDistribution", - "BetaDistribution", - "BetaNegativeBinomialDistribution", - "BetaPrimeDistribution", - "BetaRegularized", - "Between", - "BetweennessCentrality", - "Beveled", - "BeveledPolyhedron", - "BezierCurve", - "BezierCurve3DBox", - "BezierCurve3DBoxOptions", - "BezierCurveBox", - "BezierCurveBoxOptions", - "BezierFunction", - "BilateralFilter", - "BilateralLaplaceTransform", - "BilateralZTransform", - "Binarize", - "BinaryDeserialize", - "BinaryDistance", - "BinaryFormat", - "BinaryImageQ", - "BinaryRead", - "BinaryReadList", - "BinarySerialize", - "BinaryWrite", - "BinCounts", - "BinLists", - "BinnedVariogramList", - "Binomial", - "BinomialDistribution", - "BinomialPointProcess", - "BinomialProcess", - "BinormalDistribution", - "BiorthogonalSplineWavelet", - "BioSequence", - "BioSequenceBackTranslateList", - "BioSequenceComplement", - "BioSequenceInstances", - "BioSequenceModify", - "BioSequencePlot", - "BioSequenceQ", - "BioSequenceReverseComplement", - "BioSequenceTranscribe", - "BioSequenceTranslate", - "BipartiteGraphQ", - "BiquadraticFilterModel", - "BirnbaumImportance", - "BirnbaumSaundersDistribution", - "BitAnd", - "BitClear", - "BitGet", - "BitLength", - "BitNot", - "BitOr", - "BitRate", - "BitSet", - "BitShiftLeft", - "BitShiftRight", - "BitXor", - "BiweightLocation", - "BiweightMidvariance", - "Black", - "BlackmanHarrisWindow", - "BlackmanNuttallWindow", - "BlackmanWindow", - "Blank", - "BlankForm", - "BlankNullSequence", - "BlankSequence", - "Blend", - "Block", - "BlockchainAddressData", - "BlockchainBase", - "BlockchainBlockData", - "BlockchainContractValue", - "BlockchainData", - "BlockchainGet", - "BlockchainKeyEncode", - "BlockchainPut", - "BlockchainTokenData", - "BlockchainTransaction", - "BlockchainTransactionData", - "BlockchainTransactionSign", - "BlockchainTransactionSubmit", - "BlockDiagonalMatrix", - "BlockLowerTriangularMatrix", - "BlockMap", - "BlockRandom", - "BlockUpperTriangularMatrix", - "BlomqvistBeta", - "BlomqvistBetaTest", - "Blue", - "Blur", - "Blurring", - "BodePlot", - "BohmanWindow", - "Bold", - "Bond", - "BondCount", - "BondLabels", - "BondLabelStyle", - "BondList", - "BondQ", - "Bookmarks", - "Boole", - "BooleanConsecutiveFunction", - "BooleanConvert", - "BooleanCountingFunction", - "BooleanFunction", - "BooleanGraph", - "BooleanMaxterms", - "BooleanMinimize", - "BooleanMinterms", - "BooleanQ", - "BooleanRegion", - "Booleans", - "BooleanStrings", - "BooleanTable", - "BooleanVariables", - "BorderDimensions", - "BorelTannerDistribution", - "Bottom", - "BottomHatTransform", - "BoundaryDiscretizeGraphics", - "BoundaryDiscretizeRegion", - "BoundaryMesh", - "BoundaryMeshRegion", - "BoundaryMeshRegionQ", - "BoundaryStyle", - "BoundedRegionQ", - "BoundingRegion", - "Bounds", - "Box", - "BoxBaselineShift", - "BoxData", - "BoxDimensions", - "Boxed", - "Boxes", - "BoxForm", - "BoxFormFormatTypes", - "BoxFrame", - "BoxID", - "BoxMargins", - "BoxMatrix", - "BoxObject", - "BoxRatios", - "BoxRotation", - "BoxRotationPoint", - "BoxStyle", - "BoxWhiskerChart", - "Bra", - "BracketingBar", - "BraKet", - "BrayCurtisDistance", - "BreadthFirstScan", - "Break", - "BridgeData", - "BrightnessEqualize", - "BroadcastStationData", - "Brown", - "BrownForsytheTest", - "BrownianBridgeProcess", - "BrowserCategory", - "BSplineBasis", - "BSplineCurve", - "BSplineCurve3DBox", - "BSplineCurve3DBoxOptions", - "BSplineCurveBox", - "BSplineCurveBoxOptions", - "BSplineFunction", - "BSplineSurface", - "BSplineSurface3DBox", - "BSplineSurface3DBoxOptions", - "BubbleChart", - "BubbleChart3D", - "BubbleScale", - "BubbleSizes", - "BuckyballGraph", - "BuildCompiledComponent", - "BuildingData", - "BulletGauge", - "BusinessDayQ", - "ButterflyGraph", - "ButterworthFilterModel", - "Button", - "ButtonBar", - "ButtonBox", - "ButtonBoxOptions", - "ButtonCell", - "ButtonContents", - "ButtonData", - "ButtonEvaluator", - "ButtonExpandable", - "ButtonFrame", - "ButtonFunction", - "ButtonMargins", - "ButtonMinHeight", - "ButtonNote", - "ButtonNotebook", - "ButtonSource", - "ButtonStyle", - "ButtonStyleMenuListing", - "Byte", - "ByteArray", - "ByteArrayFormat", - "ByteArrayFormatQ", - "ByteArrayQ", - "ByteArrayToString", - "ByteCount", - "ByteOrdering", - "C", - "CachedValue", - "CacheGraphics", - "CachePersistence", - "CalendarConvert", - "CalendarData", - "CalendarType", - "Callout", - "CalloutMarker", - "CalloutStyle", - "CallPacket", - "CanberraDistance", - "Cancel", - "CancelButton", - "CandlestickChart", - "CanonicalGraph", - "CanonicalizePolygon", - "CanonicalizePolyhedron", - "CanonicalizeRegion", - "CanonicalName", - "CanonicalWarpingCorrespondence", - "CanonicalWarpingDistance", - "CantorMesh", - "CantorStaircase", - "Canvas", - "Cap", - "CapForm", - "CapitalDifferentialD", - "Capitalize", - "CapsuleShape", - "CaptureRunning", - "CaputoD", - "CardinalBSplineBasis", - "CarlemanLinearize", - "CarlsonRC", - "CarlsonRD", - "CarlsonRE", - "CarlsonRF", - "CarlsonRG", - "CarlsonRJ", - "CarlsonRK", - "CarlsonRM", - "CarmichaelLambda", - "CaseOrdering", - "Cases", - "CaseSensitive", - "Cashflow", - "Casoratian", - "Cast", - "Catalan", - "CatalanNumber", - "Catch", - "CategoricalDistribution", - "Catenate", - "CatenateLayer", - "CauchyDistribution", - "CauchyMatrix", - "CauchyPointProcess", - "CauchyWindow", - "CayleyGraph", - "CDF", - "CDFDeploy", - "CDFInformation", - "CDFWavelet", - "Ceiling", - "CelestialSystem", - "Cell", - "CellAutoOverwrite", - "CellBaseline", - "CellBoundingBox", - "CellBracketOptions", - "CellChangeTimes", - "CellContents", - "CellContext", - "CellDingbat", - "CellDingbatMargin", - "CellDynamicExpression", - "CellEditDuplicate", - "CellElementsBoundingBox", - "CellElementSpacings", - "CellEpilog", - "CellEvaluationDuplicate", - "CellEvaluationFunction", - "CellEvaluationLanguage", - "CellEventActions", - "CellFrame", - "CellFrameColor", - "CellFrameLabelMargins", - "CellFrameLabels", - "CellFrameMargins", - "CellFrameStyle", - "CellGroup", - "CellGroupData", - "CellGrouping", - "CellGroupingRules", - "CellHorizontalScrolling", - "CellID", - "CellInsertionPointCell", - "CellLabel", - "CellLabelAutoDelete", - "CellLabelMargins", - "CellLabelPositioning", - "CellLabelStyle", - "CellLabelTemplate", - "CellMargins", - "CellObject", - "CellOpen", - "CellPrint", - "CellProlog", - "Cells", - "CellSize", - "CellStyle", - "CellTags", - "CellTrayPosition", - "CellTrayWidgets", - "CellularAutomaton", - "CensoredDistribution", - "Censoring", - "Center", - "CenterArray", - "CenterDot", - "CenteredInterval", - "CentralFeature", - "CentralMoment", - "CentralMomentGeneratingFunction", - "Cepstrogram", - "CepstrogramArray", - "CepstrumArray", - "CForm", - "ChampernowneNumber", - "ChangeOptions", - "ChannelBase", - "ChannelBrokerAction", - "ChannelDatabin", - "ChannelHistoryLength", - "ChannelListen", - "ChannelListener", - "ChannelListeners", - "ChannelListenerWait", - "ChannelObject", - "ChannelPreSendFunction", - "ChannelReceiverFunction", - "ChannelSend", - "ChannelSubscribers", - "ChanVeseBinarize", - "Character", - "CharacterCounts", - "CharacterEncoding", - "CharacterEncodingsPath", - "CharacteristicFunction", - "CharacteristicPolynomial", - "CharacterName", - "CharacterNormalize", - "CharacterRange", - "Characters", - "ChartBaseStyle", - "ChartElementData", - "ChartElementDataFunction", - "ChartElementFunction", - "ChartElements", - "ChartLabels", - "ChartLayout", - "ChartLegends", - "ChartStyle", - "Chebyshev1FilterModel", - "Chebyshev2FilterModel", - "ChebyshevDistance", - "ChebyshevT", - "ChebyshevU", - "Check", - "CheckAbort", - "CheckAll", - "CheckArguments", - "Checkbox", - "CheckboxBar", - "CheckboxBox", - "CheckboxBoxOptions", - "ChemicalConvert", - "ChemicalData", - "ChemicalFormula", - "ChemicalInstance", - "ChemicalReaction", - "ChessboardDistance", - "ChiDistribution", - "ChineseRemainder", - "ChiSquareDistribution", - "ChoiceButtons", - "ChoiceDialog", - "CholeskyDecomposition", - "Chop", - "ChromaticityPlot", - "ChromaticityPlot3D", - "ChromaticPolynomial", - "Circle", - "CircleBox", - "CircleDot", - "CircleMinus", - "CirclePlus", - "CirclePoints", - "CircleThrough", - "CircleTimes", - "CirculantGraph", - "CircularArcThrough", - "CircularOrthogonalMatrixDistribution", - "CircularQuaternionMatrixDistribution", - "CircularRealMatrixDistribution", - "CircularSymplecticMatrixDistribution", - "CircularUnitaryMatrixDistribution", - "Circumsphere", - "CityData", - "ClassifierFunction", - "ClassifierInformation", - "ClassifierMeasurements", - "ClassifierMeasurementsObject", - "Classify", - "ClassPriors", - "Clear", - "ClearAll", - "ClearAttributes", - "ClearCookies", - "ClearPermissions", - "ClearSystemCache", - "ClebschGordan", - "ClickPane", - "ClickToCopy", - "ClickToCopyEnabled", - "Clip", - "ClipboardNotebook", - "ClipFill", - "ClippingStyle", - "ClipPlanes", - "ClipPlanesStyle", - "ClipRange", - "Clock", - "ClockGauge", - "ClockwiseContourIntegral", - "Close", - "Closed", - "CloseKernels", - "ClosenessCentrality", - "Closing", - "ClosingAutoSave", - "ClosingEvent", - "CloudAccountData", - "CloudBase", - "CloudConnect", - "CloudConnections", - "CloudDeploy", - "CloudDirectory", - "CloudDisconnect", - "CloudEvaluate", - "CloudExport", - "CloudExpression", - "CloudExpressions", - "CloudFunction", - "CloudGet", - "CloudImport", - "CloudLoggingData", - "CloudObject", - "CloudObjectInformation", - "CloudObjectInformationData", - "CloudObjectNameFormat", - "CloudObjects", - "CloudObjectURLType", - "CloudPublish", - "CloudPut", - "CloudRenderingMethod", - "CloudSave", - "CloudShare", - "CloudSubmit", - "CloudSymbol", - "CloudUnshare", - "CloudUserID", - "ClusterClassify", - "ClusterDissimilarityFunction", - "ClusteringComponents", - "ClusteringMeasurements", - "ClusteringTree", - "CMYKColor", - "Coarse", - "CodeAssistOptions", - "Coefficient", - "CoefficientArrays", - "CoefficientDomain", - "CoefficientList", - "CoefficientRules", - "CoifletWavelet", - "Collect", - "CollinearPoints", - "Colon", - "ColonForm", - "ColorBalance", - "ColorCombine", - "ColorConvert", - "ColorCoverage", - "ColorData", - "ColorDataFunction", - "ColorDetect", - "ColorDistance", - "ColorFunction", - "ColorFunctionBinning", - "ColorFunctionScaling", - "Colorize", - "ColorNegate", - "ColorOutput", - "ColorProfileData", - "ColorQ", - "ColorQuantize", - "ColorReplace", - "ColorRules", - "ColorSelectorSettings", - "ColorSeparate", - "ColorSetter", - "ColorSetterBox", - "ColorSetterBoxOptions", - "ColorSlider", - "ColorsNear", - "ColorSpace", - "ColorToneMapping", - "Column", - "ColumnAlignments", - "ColumnBackgrounds", - "ColumnForm", - "ColumnLines", - "ColumnsEqual", - "ColumnSpacings", - "ColumnWidths", - "CombinatorB", - "CombinatorC", - "CombinatorI", - "CombinatorK", - "CombinatorS", - "CombinatorW", - "CombinatorY", - "CombinedEntityClass", - "CombinerFunction", - "CometData", - "CommonDefaultFormatTypes", - "Commonest", - "CommonestFilter", - "CommonName", - "CommonUnits", - "CommunityBoundaryStyle", - "CommunityGraphPlot", - "CommunityLabels", - "CommunityRegionStyle", - "CompanyData", - "CompatibleUnitQ", - "CompilationOptions", - "CompilationTarget", - "Compile", - "Compiled", - "CompiledCodeFunction", - "CompiledComponent", - "CompiledExpressionDeclaration", - "CompiledFunction", - "CompiledLayer", - "CompilerCallback", - "CompilerEnvironment", - "CompilerEnvironmentAppend", - "CompilerEnvironmentAppendTo", - "CompilerEnvironmentObject", - "CompilerOptions", - "Complement", - "ComplementedEntityClass", - "CompleteGraph", - "CompleteGraphQ", - "CompleteIntegral", - "CompleteKaryTree", - "CompletionsListPacket", - "Complex", - "ComplexArrayPlot", - "ComplexContourPlot", - "Complexes", - "ComplexExpand", - "ComplexInfinity", - "ComplexityFunction", - "ComplexListPlot", - "ComplexPlot", - "ComplexPlot3D", - "ComplexRegionPlot", - "ComplexStreamPlot", - "ComplexVectorPlot", - "ComponentMeasurements", - "ComponentwiseContextMenu", - "Compose", - "ComposeList", - "ComposeSeries", - "CompositeQ", - "Composition", - "CompoundElement", - "CompoundExpression", - "CompoundPoissonDistribution", - "CompoundPoissonProcess", - "CompoundRenewalProcess", - "Compress", - "CompressedData", - "CompressionLevel", - "ComputeUncertainty", - "ConcaveHullMesh", - "Condition", - "ConditionalExpression", - "Conditioned", - "Cone", - "ConeBox", - "ConfidenceLevel", - "ConfidenceRange", - "ConfidenceTransform", - "ConfigurationPath", - "Confirm", - "ConfirmAssert", - "ConfirmBy", - "ConfirmMatch", - "ConfirmQuiet", - "ConformationMethod", - "ConformAudio", - "ConformImages", - "Congruent", - "ConicGradientFilling", - "ConicHullRegion", - "ConicHullRegion3DBox", - "ConicHullRegion3DBoxOptions", - "ConicHullRegionBox", - "ConicHullRegionBoxOptions", - "ConicOptimization", - "Conjugate", - "ConjugateTranspose", - "Conjunction", - "Connect", - "ConnectedComponents", - "ConnectedGraphComponents", - "ConnectedGraphQ", - "ConnectedMeshComponents", - "ConnectedMoleculeComponents", - "ConnectedMoleculeQ", - "ConnectionSettings", - "ConnectLibraryCallbackFunction", - "ConnectSystemModelComponents", - "ConnectSystemModelController", - "ConnesWindow", - "ConoverTest", - "ConservativeConvectionPDETerm", - "ConsoleMessage", - "Constant", - "ConstantArray", - "ConstantArrayLayer", - "ConstantImage", - "ConstantPlusLayer", - "ConstantRegionQ", - "Constants", - "ConstantTimesLayer", - "ConstellationData", - "ConstrainedMax", - "ConstrainedMin", - "Construct", - "Containing", - "ContainsAll", - "ContainsAny", - "ContainsExactly", - "ContainsNone", - "ContainsOnly", - "ContentDetectorFunction", - "ContentFieldOptions", - "ContentLocationFunction", - "ContentObject", - "ContentPadding", - "ContentsBoundingBox", - "ContentSelectable", - "ContentSize", - "Context", - "ContextMenu", - "Contexts", - "ContextToFileName", - "Continuation", - "Continue", - "ContinuedFraction", - "ContinuedFractionK", - "ContinuousAction", - "ContinuousMarkovProcess", - "ContinuousTask", - "ContinuousTimeModelQ", - "ContinuousWaveletData", - "ContinuousWaveletTransform", - "ContourDetect", - "ContourGraphics", - "ContourIntegral", - "ContourLabels", - "ContourLines", - "ContourPlot", - "ContourPlot3D", - "Contours", - "ContourShading", - "ContourSmoothing", - "ContourStyle", - "ContraharmonicMean", - "ContrastiveLossLayer", - "Control", - "ControlActive", - "ControlAlignment", - "ControlGroupContentsBox", - "ControllabilityGramian", - "ControllabilityMatrix", - "ControllableDecomposition", - "ControllableModelQ", - "ControllerDuration", - "ControllerInformation", - "ControllerInformationData", - "ControllerLinking", - "ControllerManipulate", - "ControllerMethod", - "ControllerPath", - "ControllerState", - "ControlPlacement", - "ControlsRendering", - "ControlType", - "ConvectionPDETerm", - "Convergents", - "ConversionOptions", - "ConversionRules", - "ConvertToPostScript", - "ConvertToPostScriptPacket", - "ConvexHullMesh", - "ConvexHullRegion", - "ConvexOptimization", - "ConvexPolygonQ", - "ConvexPolyhedronQ", - "ConvexRegionQ", - "ConvolutionLayer", - "Convolve", - "ConwayGroupCo1", - "ConwayGroupCo2", - "ConwayGroupCo3", - "CookieFunction", - "Cookies", - "CoordinateBoundingBox", - "CoordinateBoundingBoxArray", - "CoordinateBounds", - "CoordinateBoundsArray", - "CoordinateChartData", - "CoordinatesToolOptions", - "CoordinateTransform", - "CoordinateTransformData", - "CoplanarPoints", - "CoprimeQ", - "Coproduct", - "CopulaDistribution", - "Copyable", - "CopyDatabin", - "CopyDirectory", - "CopyFile", - "CopyFunction", - "CopyTag", - "CopyToClipboard", - "CoreNilpotentDecomposition", - "CornerFilter", - "CornerNeighbors", - "Correlation", - "CorrelationDistance", - "CorrelationFunction", - "CorrelationTest", - "Cos", - "Cosh", - "CoshIntegral", - "CosineDistance", - "CosineWindow", - "CosIntegral", - "Cot", - "Coth", - "CoulombF", - "CoulombG", - "CoulombH1", - "CoulombH2", - "Count", - "CountDistinct", - "CountDistinctBy", - "CounterAssignments", - "CounterBox", - "CounterBoxOptions", - "CounterClockwiseContourIntegral", - "CounterEvaluator", - "CounterFunction", - "CounterIncrements", - "CounterStyle", - "CounterStyleMenuListing", - "CountRoots", - "CountryData", - "Counts", - "CountsBy", - "Covariance", - "CovarianceEstimatorFunction", - "CovarianceFunction", - "CoxianDistribution", - "CoxIngersollRossProcess", - "CoxModel", - "CoxModelFit", - "CramerVonMisesTest", - "CreateArchive", - "CreateCellID", - "CreateChannel", - "CreateCloudExpression", - "CreateCompilerEnvironment", - "CreateDatabin", - "CreateDataStructure", - "CreateDataSystemModel", - "CreateDialog", - "CreateDirectory", - "CreateDocument", - "CreateFile", - "CreateIntermediateDirectories", - "CreateLicenseEntitlement", - "CreateManagedLibraryExpression", - "CreateNotebook", - "CreatePacletArchive", - "CreatePalette", - "CreatePermissionsGroup", - "CreateScheduledTask", - "CreateSearchIndex", - "CreateSystemModel", - "CreateTemporary", - "CreateTypeInstance", - "CreateUUID", - "CreateWindow", - "CriterionFunction", - "CriticalityFailureImportance", - "CriticalitySuccessImportance", - "CriticalSection", - "Cross", - "CrossEntropyLossLayer", - "CrossingCount", - "CrossingDetect", - "CrossingPolygon", - "CrossMatrix", - "Csc", - "Csch", - "CSGRegion", - "CSGRegionQ", - "CSGRegionTree", - "CTCLossLayer", - "Cube", - "CubeRoot", - "Cubics", - "Cuboid", - "CuboidBox", - "CuboidBoxOptions", - "Cumulant", - "CumulantGeneratingFunction", - "CumulativeFeatureImpactPlot", - "Cup", - "CupCap", - "Curl", - "CurlyDoubleQuote", - "CurlyQuote", - "CurrencyConvert", - "CurrentDate", - "CurrentImage", - "CurrentNotebookImage", - "CurrentScreenImage", - "CurrentValue", - "Curry", - "CurryApplied", - "CurvatureFlowFilter", - "CurveClosed", - "Cyan", - "CycleGraph", - "CycleIndexPolynomial", - "Cycles", - "CyclicGroup", - "Cyclotomic", - "Cylinder", - "CylinderBox", - "CylinderBoxOptions", - "CylindricalDecomposition", - "CylindricalDecompositionFunction", - "D", - "DagumDistribution", - "DamData", - "DamerauLevenshteinDistance", - "DampingFactor", - "Darker", - "Dashed", - "Dashing", - "DatabaseConnect", - "DatabaseDisconnect", - "DatabaseReference", - "Databin", - "DatabinAdd", - "DatabinRemove", - "Databins", - "DatabinSubmit", - "DatabinUpload", - "DataCompression", - "DataDistribution", - "DataRange", - "DataReversed", - "Dataset", - "DatasetDisplayPanel", - "DatasetTheme", - "DataStructure", - "DataStructureQ", - "Date", - "DateBounds", - "Dated", - "DateDelimiters", - "DateDifference", - "DatedUnit", - "DateFormat", - "DateFunction", - "DateGranularity", - "DateHistogram", - "DateInterval", - "DateList", - "DateListLogPlot", - "DateListPlot", - "DateListStepPlot", - "DateObject", - "DateObjectQ", - "DateOverlapsQ", - "DatePattern", - "DatePlus", - "DateRange", - "DateReduction", - "DateScale", - "DateSelect", - "DateString", - "DateTicksFormat", - "DateValue", - "DateWithinQ", - "DaubechiesWavelet", - "DavisDistribution", - "DawsonF", - "DayCount", - "DayCountConvention", - "DayHemisphere", - "DaylightQ", - "DayMatchQ", - "DayName", - "DayNightTerminator", - "DayPlus", - "DayRange", - "DayRound", - "DeBruijnGraph", - "DeBruijnSequence", - "Debug", - "DebugTag", - "Decapitalize", - "Decimal", - "DecimalForm", - "DeclareCompiledComponent", - "DeclareKnownSymbols", - "DeclarePackage", - "Decompose", - "DeconvolutionLayer", - "Decrement", - "Decrypt", - "DecryptFile", - "DedekindEta", - "DeepSpaceProbeData", - "Default", - "Default2DTool", - "Default3DTool", - "DefaultAttachedCellStyle", - "DefaultAxesStyle", - "DefaultBaseStyle", - "DefaultBoxStyle", - "DefaultButton", - "DefaultColor", - "DefaultControlPlacement", - "DefaultDockedCellStyle", - "DefaultDuplicateCellStyle", - "DefaultDuration", - "DefaultElement", - "DefaultFaceGridsStyle", - "DefaultFieldHintStyle", - "DefaultFont", - "DefaultFontProperties", - "DefaultFormatType", - "DefaultFrameStyle", - "DefaultFrameTicksStyle", - "DefaultGridLinesStyle", - "DefaultInlineFormatType", - "DefaultInputFormatType", - "DefaultLabelStyle", - "DefaultMenuStyle", - "DefaultNaturalLanguage", - "DefaultNewCellStyle", - "DefaultNewInlineCellStyle", - "DefaultNotebook", - "DefaultOptions", - "DefaultOutputFormatType", - "DefaultPrintPrecision", - "DefaultStyle", - "DefaultStyleDefinitions", - "DefaultTextFormatType", - "DefaultTextInlineFormatType", - "DefaultTicksStyle", - "DefaultTooltipStyle", - "DefaultValue", - "DefaultValues", - "Defer", - "DefineExternal", - "DefineInputStreamMethod", - "DefineOutputStreamMethod", - "DefineResourceFunction", - "Definition", - "Degree", - "DegreeCentrality", - "DegreeGraphDistribution", - "DegreeLexicographic", - "DegreeReverseLexicographic", - "DEigensystem", - "DEigenvalues", - "Deinitialization", - "Del", - "DelaunayMesh", - "Delayed", - "Deletable", - "Delete", - "DeleteAdjacentDuplicates", - "DeleteAnomalies", - "DeleteBorderComponents", - "DeleteCases", - "DeleteChannel", - "DeleteCloudExpression", - "DeleteContents", - "DeleteDirectory", - "DeleteDuplicates", - "DeleteDuplicatesBy", - "DeleteElements", - "DeleteFile", - "DeleteMissing", - "DeleteObject", - "DeletePermissionsKey", - "DeleteSearchIndex", - "DeleteSmallComponents", - "DeleteStopwords", - "DeleteWithContents", - "DeletionWarning", - "DelimitedArray", - "DelimitedSequence", - "Delimiter", - "DelimiterAutoMatching", - "DelimiterFlashTime", - "DelimiterMatching", - "Delimiters", - "DeliveryFunction", - "Dendrogram", - "Denominator", - "DensityGraphics", - "DensityHistogram", - "DensityPlot", - "DensityPlot3D", - "DependentVariables", - "Deploy", - "Deployed", - "Depth", - "DepthFirstScan", - "Derivative", - "DerivativeFilter", - "DerivativePDETerm", - "DerivedKey", - "DescriptorStateSpace", - "DesignMatrix", - "DestroyAfterEvaluation", - "Det", - "DeviceClose", - "DeviceConfigure", - "DeviceExecute", - "DeviceExecuteAsynchronous", - "DeviceObject", - "DeviceOpen", - "DeviceOpenQ", - "DeviceRead", - "DeviceReadBuffer", - "DeviceReadLatest", - "DeviceReadList", - "DeviceReadTimeSeries", - "Devices", - "DeviceStreams", - "DeviceWrite", - "DeviceWriteBuffer", - "DGaussianWavelet", - "DiacriticalPositioning", - "Diagonal", - "DiagonalizableMatrixQ", - "DiagonalMatrix", - "DiagonalMatrixQ", - "Dialog", - "DialogIndent", - "DialogInput", - "DialogLevel", - "DialogNotebook", - "DialogProlog", - "DialogReturn", - "DialogSymbols", - "Diamond", - "DiamondMatrix", - "DiceDissimilarity", - "DictionaryLookup", - "DictionaryWordQ", - "DifferenceDelta", - "DifferenceOrder", - "DifferenceQuotient", - "DifferenceRoot", - "DifferenceRootReduce", - "Differences", - "DifferentialD", - "DifferentialRoot", - "DifferentialRootReduce", - "DifferentiatorFilter", - "DiffusionPDETerm", - "DiggleGatesPointProcess", - "DiggleGrattonPointProcess", - "DigitalSignature", - "DigitBlock", - "DigitBlockMinimum", - "DigitCharacter", - "DigitCount", - "DigitQ", - "DihedralAngle", - "DihedralGroup", - "Dilation", - "DimensionalCombinations", - "DimensionalMeshComponents", - "DimensionReduce", - "DimensionReducerFunction", - "DimensionReduction", - "Dimensions", - "DiracComb", - "DiracDelta", - "DirectedEdge", - "DirectedEdges", - "DirectedGraph", - "DirectedGraphQ", - "DirectedInfinity", - "Direction", - "DirectionalLight", - "Directive", - "Directory", - "DirectoryName", - "DirectoryQ", - "DirectoryStack", - "DirichletBeta", - "DirichletCharacter", - "DirichletCondition", - "DirichletConvolve", - "DirichletDistribution", - "DirichletEta", - "DirichletL", - "DirichletLambda", - "DirichletTransform", - "DirichletWindow", - "DisableConsolePrintPacket", - "DisableFormatting", - "DiscreteAsymptotic", - "DiscreteChirpZTransform", - "DiscreteConvolve", - "DiscreteDelta", - "DiscreteHadamardTransform", - "DiscreteIndicator", - "DiscreteInputOutputModel", - "DiscreteLimit", - "DiscreteLQEstimatorGains", - "DiscreteLQRegulatorGains", - "DiscreteLyapunovSolve", - "DiscreteMarkovProcess", - "DiscreteMaxLimit", - "DiscreteMinLimit", - "DiscretePlot", - "DiscretePlot3D", - "DiscreteRatio", - "DiscreteRiccatiSolve", - "DiscreteShift", - "DiscreteTimeModelQ", - "DiscreteUniformDistribution", - "DiscreteVariables", - "DiscreteWaveletData", - "DiscreteWaveletPacketTransform", - "DiscreteWaveletTransform", - "DiscretizeGraphics", - "DiscretizeRegion", - "Discriminant", - "DisjointQ", - "Disjunction", - "Disk", - "DiskBox", - "DiskBoxOptions", - "DiskMatrix", - "DiskSegment", - "Dispatch", - "DispatchQ", - "DispersionEstimatorFunction", - "Display", - "DisplayAllSteps", - "DisplayEndPacket", - "DisplayForm", - "DisplayFunction", - "DisplayPacket", - "DisplayRules", - "DisplayString", - "DisplayTemporary", - "DisplayWith", - "DisplayWithRef", - "DisplayWithVariable", - "DistanceFunction", - "DistanceMatrix", - "DistanceTransform", - "Distribute", - "Distributed", - "DistributedContexts", - "DistributeDefinitions", - "DistributionChart", - "DistributionDomain", - "DistributionFitTest", - "DistributionParameterAssumptions", - "DistributionParameterQ", - "Dithering", - "Div", - "Divergence", - "Divide", - "DivideBy", - "Dividers", - "DivideSides", - "Divisible", - "Divisors", - "DivisorSigma", - "DivisorSum", - "DMSList", - "DMSString", - "Do", - "DockedCell", - "DockedCells", - "DocumentGenerator", - "DocumentGeneratorInformation", - "DocumentGeneratorInformationData", - "DocumentGenerators", - "DocumentNotebook", - "DocumentWeightingRules", - "Dodecahedron", - "DomainRegistrationInformation", - "DominantColors", - "DominatorTreeGraph", - "DominatorVertexList", - "DOSTextFormat", - "Dot", - "DotDashed", - "DotEqual", - "DotLayer", - "DotPlusLayer", - "Dotted", - "DoubleBracketingBar", - "DoubleContourIntegral", - "DoubleDownArrow", - "DoubleLeftArrow", - "DoubleLeftRightArrow", - "DoubleLeftTee", - "DoubleLongLeftArrow", - "DoubleLongLeftRightArrow", - "DoubleLongRightArrow", - "DoubleRightArrow", - "DoubleRightTee", - "DoubleUpArrow", - "DoubleUpDownArrow", - "DoubleVerticalBar", - "DoublyInfinite", - "Down", - "DownArrow", - "DownArrowBar", - "DownArrowUpArrow", - "DownLeftRightVector", - "DownLeftTeeVector", - "DownLeftVector", - "DownLeftVectorBar", - "DownRightTeeVector", - "DownRightVector", - "DownRightVectorBar", - "Downsample", - "DownTee", - "DownTeeArrow", - "DownValues", - "DownValuesFunction", - "DragAndDrop", - "DrawBackFaces", - "DrawEdges", - "DrawFrontFaces", - "DrawHighlighted", - "DrazinInverse", - "Drop", - "DropoutLayer", - "DropShadowing", - "DSolve", - "DSolveChangeVariables", - "DSolveValue", - "Dt", - "DualLinearProgramming", - "DualPlanarGraph", - "DualPolyhedron", - "DualSystemsModel", - "DumpGet", - "DumpSave", - "DuplicateFreeQ", - "Duration", - "Dynamic", - "DynamicBox", - "DynamicBoxOptions", - "DynamicEvaluationTimeout", - "DynamicGeoGraphics", - "DynamicImage", - "DynamicLocation", - "DynamicModule", - "DynamicModuleBox", - "DynamicModuleBoxOptions", - "DynamicModuleParent", - "DynamicModuleValues", - "DynamicName", - "DynamicNamespace", - "DynamicReference", - "DynamicSetting", - "DynamicUpdating", - "DynamicWrapper", - "DynamicWrapperBox", - "DynamicWrapperBoxOptions", - "E", - "EarthImpactData", - "EarthquakeData", - "EccentricityCentrality", - "Echo", - "EchoEvaluation", - "EchoFunction", - "EchoLabel", - "EchoTiming", - "EclipseType", - "EdgeAdd", - "EdgeBetweennessCentrality", - "EdgeCapacity", - "EdgeCapForm", - "EdgeChromaticNumber", - "EdgeColor", - "EdgeConnectivity", - "EdgeContract", - "EdgeCost", - "EdgeCount", - "EdgeCoverQ", - "EdgeCycleMatrix", - "EdgeDashing", - "EdgeDelete", - "EdgeDetect", - "EdgeForm", - "EdgeIndex", - "EdgeJoinForm", - "EdgeLabeling", - "EdgeLabels", - "EdgeLabelStyle", - "EdgeList", - "EdgeOpacity", - "EdgeQ", - "EdgeRenderingFunction", - "EdgeRules", - "EdgeShapeFunction", - "EdgeStyle", - "EdgeTaggedGraph", - "EdgeTaggedGraphQ", - "EdgeTags", - "EdgeThickness", - "EdgeTransitiveGraphQ", - "EdgeValueRange", - "EdgeValueSizes", - "EdgeWeight", - "EdgeWeightedGraphQ", - "Editable", - "EditButtonSettings", - "EditCellTagsSettings", - "EditDistance", - "EffectiveInterest", - "Eigensystem", - "Eigenvalues", - "EigenvectorCentrality", - "Eigenvectors", - "Element", - "ElementData", - "ElementwiseLayer", - "ElidedForms", - "Eliminate", - "EliminationOrder", - "Ellipsoid", - "EllipticE", - "EllipticExp", - "EllipticExpPrime", - "EllipticF", - "EllipticFilterModel", - "EllipticK", - "EllipticLog", - "EllipticNomeQ", - "EllipticPi", - "EllipticReducedHalfPeriods", - "EllipticTheta", - "EllipticThetaPrime", - "EmbedCode", - "EmbeddedHTML", - "EmbeddedService", - "EmbeddedSQLEntityClass", - "EmbeddedSQLExpression", - "EmbeddingLayer", - "EmbeddingObject", - "EmitSound", - "EmphasizeSyntaxErrors", - "EmpiricalDistribution", - "Empty", - "EmptyGraphQ", - "EmptyRegion", - "EmptySpaceF", - "EnableConsolePrintPacket", - "Enabled", - "Enclose", - "Encode", - "Encrypt", - "EncryptedObject", - "EncryptFile", - "End", - "EndAdd", - "EndDialogPacket", - "EndOfBuffer", - "EndOfFile", - "EndOfLine", - "EndOfString", - "EndPackage", - "EngineEnvironment", - "EngineeringForm", - "Enter", - "EnterExpressionPacket", - "EnterTextPacket", - "Entity", - "EntityClass", - "EntityClassList", - "EntityCopies", - "EntityFunction", - "EntityGroup", - "EntityInstance", - "EntityList", - "EntityPrefetch", - "EntityProperties", - "EntityProperty", - "EntityPropertyClass", - "EntityRegister", - "EntityStore", - "EntityStores", - "EntityTypeName", - "EntityUnregister", - "EntityValue", - "Entropy", - "EntropyFilter", - "Environment", - "Epilog", - "EpilogFunction", - "Equal", - "EqualColumns", - "EqualRows", - "EqualTilde", - "EqualTo", - "EquatedTo", - "Equilibrium", - "EquirippleFilterKernel", - "Equivalent", - "Erf", - "Erfc", - "Erfi", - "ErlangB", - "ErlangC", - "ErlangDistribution", - "Erosion", - "ErrorBox", - "ErrorBoxOptions", - "ErrorNorm", - "ErrorPacket", - "ErrorsDialogSettings", - "EscapeRadius", - "EstimatedBackground", - "EstimatedDistribution", - "EstimatedPointNormals", - "EstimatedPointProcess", - "EstimatedProcess", - "EstimatedVariogramModel", - "EstimatorGains", - "EstimatorRegulator", - "EuclideanDistance", - "EulerAngles", - "EulerCharacteristic", - "EulerE", - "EulerGamma", - "EulerianGraphQ", - "EulerMatrix", - "EulerPhi", - "Evaluatable", - "Evaluate", - "Evaluated", - "EvaluatePacket", - "EvaluateScheduledTask", - "EvaluationBox", - "EvaluationCell", - "EvaluationCompletionAction", - "EvaluationData", - "EvaluationElements", - "EvaluationEnvironment", - "EvaluationMode", - "EvaluationMonitor", - "EvaluationNotebook", - "EvaluationObject", - "EvaluationOrder", - "EvaluationPrivileges", - "EvaluationRateLimit", - "Evaluator", - "EvaluatorNames", - "EvenQ", - "EventData", - "EventEvaluator", - "EventHandler", - "EventHandlerTag", - "EventLabels", - "EventSeries", - "ExactBlackmanWindow", - "ExactNumberQ", - "ExactRootIsolation", - "ExampleData", - "Except", - "ExcludedContexts", - "ExcludedForms", - "ExcludedLines", - "ExcludedPhysicalQuantities", - "ExcludePods", - "Exclusions", - "ExclusionsStyle", - "Exists", - "Exit", - "ExitDialog", - "ExoplanetData", - "Exp", - "Expand", - "ExpandAll", - "ExpandDenominator", - "ExpandFileName", - "ExpandNumerator", - "Expectation", - "ExpectationE", - "ExpectedValue", - "ExpGammaDistribution", - "ExpIntegralE", - "ExpIntegralEi", - "ExpirationDate", - "Exponent", - "ExponentFunction", - "ExponentialDistribution", - "ExponentialFamily", - "ExponentialGeneratingFunction", - "ExponentialMovingAverage", - "ExponentialPowerDistribution", - "ExponentPosition", - "ExponentStep", - "Export", - "ExportAutoReplacements", - "ExportByteArray", - "ExportForm", - "ExportPacket", - "ExportString", - "Expression", - "ExpressionCell", - "ExpressionGraph", - "ExpressionPacket", - "ExpressionTree", - "ExpressionUUID", - "ExpToTrig", - "ExtendedEntityClass", - "ExtendedGCD", - "Extension", - "ExtentElementFunction", - "ExtentMarkers", - "ExtentSize", - "ExternalBundle", - "ExternalCall", - "ExternalDataCharacterEncoding", - "ExternalEvaluate", - "ExternalFunction", - "ExternalFunctionName", - "ExternalIdentifier", - "ExternalObject", - "ExternalOptions", - "ExternalSessionObject", - "ExternalSessions", - "ExternalStorageBase", - "ExternalStorageDownload", - "ExternalStorageGet", - "ExternalStorageObject", - "ExternalStoragePut", - "ExternalStorageUpload", - "ExternalTypeSignature", - "ExternalValue", - "Extract", - "ExtractArchive", - "ExtractLayer", - "ExtractPacletArchive", - "ExtremeValueDistribution", - "FaceAlign", - "FaceForm", - "FaceGrids", - "FaceGridsStyle", - "FaceRecognize", - "FacialFeatures", - "Factor", - "FactorComplete", - "Factorial", - "Factorial2", - "FactorialMoment", - "FactorialMomentGeneratingFunction", - "FactorialPower", - "FactorInteger", - "FactorList", - "FactorSquareFree", - "FactorSquareFreeList", - "FactorTerms", - "FactorTermsList", - "Fail", - "Failure", - "FailureAction", - "FailureDistribution", - "FailureQ", - "False", - "FareySequence", - "FARIMAProcess", - "FeatureDistance", - "FeatureExtract", - "FeatureExtraction", - "FeatureExtractor", - "FeatureExtractorFunction", - "FeatureImpactPlot", - "FeatureNames", - "FeatureNearest", - "FeatureSpacePlot", - "FeatureSpacePlot3D", - "FeatureTypes", - "FeatureValueDependencyPlot", - "FeatureValueImpactPlot", - "FEDisableConsolePrintPacket", - "FeedbackLinearize", - "FeedbackSector", - "FeedbackSectorStyle", - "FeedbackType", - "FEEnableConsolePrintPacket", - "FetalGrowthData", - "Fibonacci", - "Fibonorial", - "FieldCompletionFunction", - "FieldHint", - "FieldHintStyle", - "FieldMasked", - "FieldSize", - "File", - "FileBaseName", - "FileByteCount", - "FileConvert", - "FileDate", - "FileExistsQ", - "FileExtension", - "FileFormat", - "FileFormatProperties", - "FileFormatQ", - "FileHandler", - "FileHash", - "FileInformation", - "FileName", - "FileNameDepth", - "FileNameDialogSettings", - "FileNameDrop", - "FileNameForms", - "FileNameJoin", - "FileNames", - "FileNameSetter", - "FileNameSplit", - "FileNameTake", - "FileNameToFormatList", - "FilePrint", - "FileSize", - "FileSystemMap", - "FileSystemScan", - "FileSystemTree", - "FileTemplate", - "FileTemplateApply", - "FileType", - "FilledCurve", - "FilledCurveBox", - "FilledCurveBoxOptions", - "FilledTorus", - "FillForm", - "Filling", - "FillingStyle", - "FillingTransform", - "FilteredEntityClass", - "FilterRules", - "FinancialBond", - "FinancialData", - "FinancialDerivative", - "FinancialIndicator", - "Find", - "FindAnomalies", - "FindArgMax", - "FindArgMin", - "FindChannels", - "FindClique", - "FindClusters", - "FindCookies", - "FindCurvePath", - "FindCycle", - "FindDevices", - "FindDistribution", - "FindDistributionParameters", - "FindDivisions", - "FindEdgeColoring", - "FindEdgeCover", - "FindEdgeCut", - "FindEdgeIndependentPaths", - "FindEquationalProof", - "FindEulerianCycle", - "FindExternalEvaluators", - "FindFaces", - "FindFile", - "FindFit", - "FindFormula", - "FindFundamentalCycles", - "FindGeneratingFunction", - "FindGeoLocation", - "FindGeometricConjectures", - "FindGeometricTransform", - "FindGraphCommunities", - "FindGraphIsomorphism", - "FindGraphPartition", - "FindHamiltonianCycle", - "FindHamiltonianPath", - "FindHiddenMarkovStates", - "FindImageText", - "FindIndependentEdgeSet", - "FindIndependentVertexSet", - "FindInstance", - "FindIntegerNullVector", - "FindIsomers", - "FindIsomorphicSubgraph", - "FindKClan", - "FindKClique", - "FindKClub", - "FindKPlex", - "FindLibrary", - "FindLinearRecurrence", - "FindList", - "FindMatchingColor", - "FindMaximum", - "FindMaximumCut", - "FindMaximumFlow", - "FindMaxValue", - "FindMeshDefects", - "FindMinimum", - "FindMinimumCostFlow", - "FindMinimumCut", - "FindMinValue", - "FindMoleculeSubstructure", - "FindPath", - "FindPeaks", - "FindPermutation", - "FindPlanarColoring", - "FindPointProcessParameters", - "FindPostmanTour", - "FindProcessParameters", - "FindRegionTransform", - "FindRepeat", - "FindRoot", - "FindSequenceFunction", - "FindSettings", - "FindShortestPath", - "FindShortestTour", - "FindSpanningTree", - "FindSubgraphIsomorphism", - "FindSystemModelEquilibrium", - "FindTextualAnswer", - "FindThreshold", - "FindTransientRepeat", - "FindVertexColoring", - "FindVertexCover", - "FindVertexCut", - "FindVertexIndependentPaths", - "Fine", - "FinishDynamic", - "FiniteAbelianGroupCount", - "FiniteGroupCount", - "FiniteGroupData", - "First", - "FirstCase", - "FirstPassageTimeDistribution", - "FirstPosition", - "FischerGroupFi22", - "FischerGroupFi23", - "FischerGroupFi24Prime", - "FisherHypergeometricDistribution", - "FisherRatioTest", - "FisherZDistribution", - "Fit", - "FitAll", - "FitRegularization", - "FittedModel", - "FixedOrder", - "FixedPoint", - "FixedPointList", - "FlashSelection", - "Flat", - "FlatShading", - "Flatten", - "FlattenAt", - "FlattenLayer", - "FlatTopWindow", - "FlightData", - "FlipView", - "Floor", - "FlowPolynomial", - "Fold", - "FoldList", - "FoldPair", - "FoldPairList", - "FoldWhile", - "FoldWhileList", - "FollowRedirects", - "Font", - "FontColor", - "FontFamily", - "FontForm", - "FontName", - "FontOpacity", - "FontPostScriptName", - "FontProperties", - "FontReencoding", - "FontSize", - "FontSlant", - "FontSubstitutions", - "FontTracking", - "FontVariations", - "FontWeight", - "For", - "ForAll", - "ForAllType", - "ForceVersionInstall", - "Format", - "FormatRules", - "FormatType", - "FormatTypeAutoConvert", - "FormatValues", - "FormBox", - "FormBoxOptions", - "FormControl", - "FormFunction", - "FormLayoutFunction", - "FormObject", - "FormPage", - "FormProtectionMethod", - "FormTheme", - "FormulaData", - "FormulaLookup", - "FortranForm", - "Forward", - "ForwardBackward", - "ForwardCloudCredentials", - "Fourier", - "FourierCoefficient", - "FourierCosCoefficient", - "FourierCosSeries", - "FourierCosTransform", - "FourierDCT", - "FourierDCTFilter", - "FourierDCTMatrix", - "FourierDST", - "FourierDSTMatrix", - "FourierMatrix", - "FourierParameters", - "FourierSequenceTransform", - "FourierSeries", - "FourierSinCoefficient", - "FourierSinSeries", - "FourierSinTransform", - "FourierTransform", - "FourierTrigSeries", - "FoxH", - "FoxHReduce", - "FractionalBrownianMotionProcess", - "FractionalD", - "FractionalGaussianNoiseProcess", - "FractionalPart", - "FractionBox", - "FractionBoxOptions", - "FractionLine", - "Frame", - "FrameBox", - "FrameBoxOptions", - "Framed", - "FrameInset", - "FrameLabel", - "Frameless", - "FrameListVideo", - "FrameMargins", - "FrameRate", - "FrameStyle", - "FrameTicks", - "FrameTicksStyle", - "FRatioDistribution", - "FrechetDistribution", - "FreeQ", - "FrenetSerretSystem", - "FrequencySamplingFilterKernel", - "FresnelC", - "FresnelF", - "FresnelG", - "FresnelS", - "Friday", - "FrobeniusNumber", - "FrobeniusSolve", - "FromAbsoluteTime", - "FromCharacterCode", - "FromCoefficientRules", - "FromContinuedFraction", - "FromDate", - "FromDateString", - "FromDigits", - "FromDMS", - "FromEntity", - "FromJulianDate", - "FromLetterNumber", - "FromPolarCoordinates", - "FromRawPointer", - "FromRomanNumeral", - "FromSphericalCoordinates", - "FromUnixTime", - "Front", - "FrontEndDynamicExpression", - "FrontEndEventActions", - "FrontEndExecute", - "FrontEndObject", - "FrontEndResource", - "FrontEndResourceString", - "FrontEndStackSize", - "FrontEndToken", - "FrontEndTokenExecute", - "FrontEndValueCache", - "FrontEndVersion", - "FrontFaceColor", - "FrontFaceGlowColor", - "FrontFaceOpacity", - "FrontFaceSpecularColor", - "FrontFaceSpecularExponent", - "FrontFaceSurfaceAppearance", - "FrontFaceTexture", - "Full", - "FullAxes", - "FullDefinition", - "FullForm", - "FullGraphics", - "FullInformationOutputRegulator", - "FullOptions", - "FullRegion", - "FullSimplify", - "Function", - "FunctionAnalytic", - "FunctionBijective", - "FunctionCompile", - "FunctionCompileExport", - "FunctionCompileExportByteArray", - "FunctionCompileExportLibrary", - "FunctionCompileExportString", - "FunctionContinuous", - "FunctionConvexity", - "FunctionDeclaration", - "FunctionDiscontinuities", - "FunctionDomain", - "FunctionExpand", - "FunctionInjective", - "FunctionInterpolation", - "FunctionLayer", - "FunctionMeromorphic", - "FunctionMonotonicity", - "FunctionPeriod", - "FunctionPoles", - "FunctionRange", - "FunctionSign", - "FunctionSingularities", - "FunctionSpace", - "FunctionSurjective", - "FussellVeselyImportance", - "GaborFilter", - "GaborMatrix", - "GaborWavelet", - "GainMargins", - "GainPhaseMargins", - "GalaxyData", - "GalleryView", - "Gamma", - "GammaDistribution", - "GammaRegularized", - "GapPenalty", - "GARCHProcess", - "GatedRecurrentLayer", - "Gather", - "GatherBy", - "GaugeFaceElementFunction", - "GaugeFaceStyle", - "GaugeFrameElementFunction", - "GaugeFrameSize", - "GaugeFrameStyle", - "GaugeLabels", - "GaugeMarkers", - "GaugeStyle", - "GaussianFilter", - "GaussianIntegers", - "GaussianMatrix", - "GaussianOrthogonalMatrixDistribution", - "GaussianSymplecticMatrixDistribution", - "GaussianUnitaryMatrixDistribution", - "GaussianWindow", - "GCD", - "GegenbauerC", - "General", - "GeneralizedLinearModelFit", - "GenerateAsymmetricKeyPair", - "GenerateConditions", - "GeneratedAssetFormat", - "GeneratedAssetLocation", - "GeneratedCell", - "GeneratedCellStyles", - "GeneratedDocumentBinding", - "GenerateDerivedKey", - "GenerateDigitalSignature", - "GenerateDocument", - "GeneratedParameters", - "GeneratedQuantityMagnitudes", - "GenerateFileSignature", - "GenerateHTTPResponse", - "GenerateSecuredAuthenticationKey", - "GenerateSymmetricKey", - "GeneratingFunction", - "GeneratorDescription", - "GeneratorHistoryLength", - "GeneratorOutputType", - "Generic", - "GenericCylindricalDecomposition", - "GenomeData", - "GenomeLookup", - "GeoAntipode", - "GeoArea", - "GeoArraySize", - "GeoBackground", - "GeoBoundary", - "GeoBoundingBox", - "GeoBounds", - "GeoBoundsRegion", - "GeoBoundsRegionBoundary", - "GeoBubbleChart", - "GeoCenter", - "GeoCircle", - "GeoContourPlot", - "GeoDensityPlot", - "GeodesicClosing", - "GeodesicDilation", - "GeodesicErosion", - "GeodesicOpening", - "GeodesicPolyhedron", - "GeoDestination", - "GeodesyData", - "GeoDirection", - "GeoDisk", - "GeoDisplacement", - "GeoDistance", - "GeoDistanceList", - "GeoElevationData", - "GeoEntities", - "GeoGraphics", - "GeoGraphPlot", - "GeoGraphValuePlot", - "GeogravityModelData", - "GeoGridDirectionDifference", - "GeoGridLines", - "GeoGridLinesStyle", - "GeoGridPosition", - "GeoGridRange", - "GeoGridRangePadding", - "GeoGridUnitArea", - "GeoGridUnitDistance", - "GeoGridVector", - "GeoGroup", - "GeoHemisphere", - "GeoHemisphereBoundary", - "GeoHistogram", - "GeoIdentify", - "GeoImage", - "GeoLabels", - "GeoLength", - "GeoListPlot", - "GeoLocation", - "GeologicalPeriodData", - "GeomagneticModelData", - "GeoMarker", - "GeometricAssertion", - "GeometricBrownianMotionProcess", - "GeometricDistribution", - "GeometricMean", - "GeometricMeanFilter", - "GeometricOptimization", - "GeometricScene", - "GeometricStep", - "GeometricStylingRules", - "GeometricTest", - "GeometricTransformation", - "GeometricTransformation3DBox", - "GeometricTransformation3DBoxOptions", - "GeometricTransformationBox", - "GeometricTransformationBoxOptions", - "GeoModel", - "GeoNearest", - "GeoOrientationData", - "GeoPath", - "GeoPolygon", - "GeoPosition", - "GeoPositionENU", - "GeoPositionXYZ", - "GeoProjection", - "GeoProjectionData", - "GeoRange", - "GeoRangePadding", - "GeoRegionValuePlot", - "GeoResolution", - "GeoScaleBar", - "GeoServer", - "GeoSmoothHistogram", - "GeoStreamPlot", - "GeoStyling", - "GeoStylingImageFunction", - "GeoVariant", - "GeoVector", - "GeoVectorENU", - "GeoVectorPlot", - "GeoVectorXYZ", - "GeoVisibleRegion", - "GeoVisibleRegionBoundary", - "GeoWithinQ", - "GeoZoomLevel", - "GestureHandler", - "GestureHandlerTag", - "Get", - "GetContext", - "GetEnvironment", - "GetFileName", - "GetLinebreakInformationPacket", - "GibbsPointProcess", - "Glaisher", - "GlobalClusteringCoefficient", - "GlobalPreferences", - "GlobalSession", - "Glow", - "GoldenAngle", - "GoldenRatio", - "GompertzMakehamDistribution", - "GoochShading", - "GoodmanKruskalGamma", - "GoodmanKruskalGammaTest", - "Goto", - "GouraudShading", - "Grad", - "Gradient", - "GradientFilter", - "GradientFittedMesh", - "GradientOrientationFilter", - "GrammarApply", - "GrammarRules", - "GrammarToken", - "Graph", - "Graph3D", - "GraphAssortativity", - "GraphAutomorphismGroup", - "GraphCenter", - "GraphComplement", - "GraphData", - "GraphDensity", - "GraphDiameter", - "GraphDifference", - "GraphDisjointUnion", - "GraphDistance", - "GraphDistanceMatrix", - "GraphEmbedding", - "GraphHighlight", - "GraphHighlightStyle", - "GraphHub", - "Graphics", - "Graphics3D", - "Graphics3DBox", - "Graphics3DBoxOptions", - "GraphicsArray", - "GraphicsBaseline", - "GraphicsBox", - "GraphicsBoxOptions", - "GraphicsColor", - "GraphicsColumn", - "GraphicsComplex", - "GraphicsComplex3DBox", - "GraphicsComplex3DBoxOptions", - "GraphicsComplexBox", - "GraphicsComplexBoxOptions", - "GraphicsContents", - "GraphicsData", - "GraphicsGrid", - "GraphicsGridBox", - "GraphicsGroup", - "GraphicsGroup3DBox", - "GraphicsGroup3DBoxOptions", - "GraphicsGroupBox", - "GraphicsGroupBoxOptions", - "GraphicsGrouping", - "GraphicsHighlightColor", - "GraphicsRow", - "GraphicsSpacing", - "GraphicsStyle", - "GraphIntersection", - "GraphJoin", - "GraphLayerLabels", - "GraphLayers", - "GraphLayerStyle", - "GraphLayout", - "GraphLinkEfficiency", - "GraphPeriphery", - "GraphPlot", - "GraphPlot3D", - "GraphPower", - "GraphProduct", - "GraphPropertyDistribution", - "GraphQ", - "GraphRadius", - "GraphReciprocity", - "GraphRoot", - "GraphStyle", - "GraphSum", - "GraphTree", - "GraphUnion", - "Gray", - "GrayLevel", - "Greater", - "GreaterEqual", - "GreaterEqualLess", - "GreaterEqualThan", - "GreaterFullEqual", - "GreaterGreater", - "GreaterLess", - "GreaterSlantEqual", - "GreaterThan", - "GreaterTilde", - "GreekStyle", - "Green", - "GreenFunction", - "Grid", - "GridBaseline", - "GridBox", - "GridBoxAlignment", - "GridBoxBackground", - "GridBoxDividers", - "GridBoxFrame", - "GridBoxItemSize", - "GridBoxItemStyle", - "GridBoxOptions", - "GridBoxSpacings", - "GridCreationSettings", - "GridDefaultElement", - "GridElementStyleOptions", - "GridFrame", - "GridFrameMargins", - "GridGraph", - "GridLines", - "GridLinesStyle", - "GridVideo", - "GroebnerBasis", - "GroupActionBase", - "GroupBy", - "GroupCentralizer", - "GroupElementFromWord", - "GroupElementPosition", - "GroupElementQ", - "GroupElements", - "GroupElementToWord", - "GroupGenerators", - "Groupings", - "GroupMultiplicationTable", - "GroupOpenerColor", - "GroupOpenerInsideFrame", - "GroupOrbits", - "GroupOrder", - "GroupPageBreakWithin", - "GroupSetwiseStabilizer", - "GroupStabilizer", - "GroupStabilizerChain", - "GroupTogetherGrouping", - "GroupTogetherNestedGrouping", - "GrowCutComponents", - "Gudermannian", - "GuidedFilter", - "GumbelDistribution", - "HaarWavelet", - "HadamardMatrix", - "HalfLine", - "HalfNormalDistribution", - "HalfPlane", - "HalfSpace", - "HalftoneShading", - "HamiltonianGraphQ", - "HammingDistance", - "HammingWindow", - "HandlerFunctions", - "HandlerFunctionsKeys", - "HankelH1", - "HankelH2", - "HankelMatrix", - "HankelTransform", - "HannPoissonWindow", - "HannWindow", - "HaradaNortonGroupHN", - "HararyGraph", - "HardcorePointProcess", - "HarmonicMean", - "HarmonicMeanFilter", - "HarmonicNumber", - "Hash", - "HatchFilling", - "HatchShading", - "Haversine", - "HazardFunction", - "Head", - "HeadCompose", - "HeaderAlignment", - "HeaderBackground", - "HeaderDisplayFunction", - "HeaderLines", - "Headers", - "HeaderSize", - "HeaderStyle", - "Heads", - "HeatFluxValue", - "HeatInsulationValue", - "HeatOutflowValue", - "HeatRadiationValue", - "HeatSymmetryValue", - "HeatTemperatureCondition", - "HeatTransferPDEComponent", - "HeatTransferValue", - "HeavisideLambda", - "HeavisidePi", - "HeavisideTheta", - "HeldGroupHe", - "HeldPart", - "HelmholtzPDEComponent", - "HelpBrowserLookup", - "HelpBrowserNotebook", - "HelpBrowserSettings", - "HelpViewerSettings", - "Here", - "HermiteDecomposition", - "HermiteH", - "Hermitian", - "HermitianMatrixQ", - "HessenbergDecomposition", - "Hessian", - "HeunB", - "HeunBPrime", - "HeunC", - "HeunCPrime", - "HeunD", - "HeunDPrime", - "HeunG", - "HeunGPrime", - "HeunT", - "HeunTPrime", - "HexadecimalCharacter", - "Hexahedron", - "HexahedronBox", - "HexahedronBoxOptions", - "HiddenItems", - "HiddenMarkovProcess", - "HiddenSurface", - "Highlighted", - "HighlightGraph", - "HighlightImage", - "HighlightMesh", - "HighlightString", - "HighpassFilter", - "HigmanSimsGroupHS", - "HilbertCurve", - "HilbertFilter", - "HilbertMatrix", - "Histogram", - "Histogram3D", - "HistogramDistribution", - "HistogramList", - "HistogramPointDensity", - "HistogramTransform", - "HistogramTransformInterpolation", - "HistoricalPeriodData", - "HitMissTransform", - "HITSCentrality", - "HjorthDistribution", - "HodgeDual", - "HoeffdingD", - "HoeffdingDTest", - "Hold", - "HoldAll", - "HoldAllComplete", - "HoldComplete", - "HoldFirst", - "HoldForm", - "HoldPattern", - "HoldRest", - "HolidayCalendar", - "HomeDirectory", - "HomePage", - "Horizontal", - "HorizontalForm", - "HorizontalGauge", - "HorizontalScrollPosition", - "HornerForm", - "HostLookup", - "HotellingTSquareDistribution", - "HoytDistribution", - "HTMLSave", - "HTTPErrorResponse", - "HTTPRedirect", - "HTTPRequest", - "HTTPRequestData", - "HTTPResponse", - "Hue", - "HumanGrowthData", - "HumpDownHump", - "HumpEqual", - "HurwitzLerchPhi", - "HurwitzZeta", - "HyperbolicDistribution", - "HypercubeGraph", - "HyperexponentialDistribution", - "Hyperfactorial", - "Hypergeometric0F1", - "Hypergeometric0F1Regularized", - "Hypergeometric1F1", - "Hypergeometric1F1Regularized", - "Hypergeometric2F1", - "Hypergeometric2F1Regularized", - "HypergeometricDistribution", - "HypergeometricPFQ", - "HypergeometricPFQRegularized", - "HypergeometricU", - "Hyperlink", - "HyperlinkAction", - "HyperlinkCreationSettings", - "Hyperplane", - "Hyphenation", - "HyphenationOptions", - "HypoexponentialDistribution", - "HypothesisTestData", - "I", - "IconData", - "Iconize", - "IconizedObject", - "IconRules", - "Icosahedron", - "Identity", - "IdentityMatrix", - "If", - "IfCompiled", - "IgnoreCase", - "IgnoreDiacritics", - "IgnoreIsotopes", - "IgnorePunctuation", - "IgnoreSpellCheck", - "IgnoreStereochemistry", - "IgnoringInactive", - "Im", - "Image", - "Image3D", - "Image3DProjection", - "Image3DSlices", - "ImageAccumulate", - "ImageAdd", - "ImageAdjust", - "ImageAlign", - "ImageApply", - "ImageApplyIndexed", - "ImageAspectRatio", - "ImageAssemble", - "ImageAugmentationLayer", - "ImageBoundingBoxes", - "ImageCache", - "ImageCacheValid", - "ImageCapture", - "ImageCaptureFunction", - "ImageCases", - "ImageChannels", - "ImageClip", - "ImageCollage", - "ImageColorSpace", - "ImageCompose", - "ImageContainsQ", - "ImageContents", - "ImageConvolve", - "ImageCooccurrence", - "ImageCorners", - "ImageCorrelate", - "ImageCorrespondingPoints", - "ImageCrop", - "ImageData", - "ImageDeconvolve", - "ImageDemosaic", - "ImageDifference", - "ImageDimensions", - "ImageDisplacements", - "ImageDistance", - "ImageEditMode", - "ImageEffect", - "ImageExposureCombine", - "ImageFeatureTrack", - "ImageFileApply", - "ImageFileFilter", - "ImageFileScan", - "ImageFilter", - "ImageFocusCombine", - "ImageForestingComponents", - "ImageFormattingWidth", - "ImageForwardTransformation", - "ImageGraphics", - "ImageHistogram", - "ImageIdentify", - "ImageInstanceQ", - "ImageKeypoints", - "ImageLabels", - "ImageLegends", - "ImageLevels", - "ImageLines", - "ImageMargins", - "ImageMarker", - "ImageMarkers", - "ImageMeasurements", - "ImageMesh", - "ImageMultiply", - "ImageOffset", - "ImagePad", - "ImagePadding", - "ImagePartition", - "ImagePeriodogram", - "ImagePerspectiveTransformation", - "ImagePosition", - "ImagePreviewFunction", - "ImagePyramid", - "ImagePyramidApply", - "ImageQ", - "ImageRangeCache", - "ImageRecolor", - "ImageReflect", - "ImageRegion", - "ImageResize", - "ImageResolution", - "ImageRestyle", - "ImageRotate", - "ImageRotated", - "ImageSaliencyFilter", - "ImageScaled", - "ImageScan", - "ImageSize", - "ImageSizeAction", - "ImageSizeCache", - "ImageSizeMultipliers", - "ImageSizeRaw", - "ImageStitch", - "ImageSubtract", - "ImageTake", - "ImageTransformation", - "ImageTrim", - "ImageType", - "ImageValue", - "ImageValuePositions", - "ImageVectorscopePlot", - "ImageWaveformPlot", - "ImagingDevice", - "ImplicitD", - "ImplicitRegion", - "Implies", - "Import", - "ImportAutoReplacements", - "ImportByteArray", - "ImportedObject", - "ImportOptions", - "ImportString", - "ImprovementImportance", - "In", - "Inactivate", - "Inactive", - "InactiveStyle", - "IncidenceGraph", - "IncidenceList", - "IncidenceMatrix", - "IncludeAromaticBonds", - "IncludeConstantBasis", - "IncludedContexts", - "IncludeDefinitions", - "IncludeDirectories", - "IncludeFileExtension", - "IncludeGeneratorTasks", - "IncludeHydrogens", - "IncludeInflections", - "IncludeMetaInformation", - "IncludePods", - "IncludeQuantities", - "IncludeRelatedTables", - "IncludeSingularSolutions", - "IncludeSingularTerm", - "IncludeWindowTimes", - "Increment", - "IndefiniteMatrixQ", - "Indent", - "IndentingNewlineSpacings", - "IndentMaxFraction", - "IndependenceTest", - "IndependentEdgeSetQ", - "IndependentPhysicalQuantity", - "IndependentUnit", - "IndependentUnitDimension", - "IndependentVertexSetQ", - "Indeterminate", - "IndeterminateThreshold", - "IndexCreationOptions", - "Indexed", - "IndexEdgeTaggedGraph", - "IndexGraph", - "IndexTag", - "Inequality", - "InertEvaluate", - "InertExpression", - "InexactNumberQ", - "InexactNumbers", - "InfiniteFuture", - "InfiniteLine", - "InfiniteLineThrough", - "InfinitePast", - "InfinitePlane", - "Infinity", - "Infix", - "InflationAdjust", - "InflationMethod", - "Information", - "InformationData", - "InformationDataGrid", - "Inherited", - "InheritScope", - "InhomogeneousPoissonPointProcess", - "InhomogeneousPoissonProcess", - "InitialEvaluationHistory", - "Initialization", - "InitializationCell", - "InitializationCellEvaluation", - "InitializationCellWarning", - "InitializationObject", - "InitializationObjects", - "InitializationValue", - "Initialize", - "InitialSeeding", - "InlineCounterAssignments", - "InlineCounterIncrements", - "InlineRules", - "Inner", - "InnerPolygon", - "InnerPolyhedron", - "Inpaint", - "Input", - "InputAliases", - "InputAssumptions", - "InputAutoReplacements", - "InputField", - "InputFieldBox", - "InputFieldBoxOptions", - "InputForm", - "InputGrouping", - "InputNamePacket", - "InputNotebook", - "InputPacket", - "InputPorts", - "InputSettings", - "InputStream", - "InputString", - "InputStringPacket", - "InputToBoxFormPacket", - "Insert", - "InsertionFunction", - "InsertionPointObject", - "InsertLinebreaks", - "InsertResults", - "Inset", - "Inset3DBox", - "Inset3DBoxOptions", - "InsetBox", - "InsetBoxOptions", - "Insphere", - "Install", - "InstallService", - "InstanceNormalizationLayer", - "InString", - "Integer", - "IntegerDigits", - "IntegerExponent", - "IntegerLength", - "IntegerName", - "IntegerPart", - "IntegerPartitions", - "IntegerQ", - "IntegerReverse", - "Integers", - "IntegerString", - "Integral", - "Integrate", - "IntegrateChangeVariables", - "Interactive", - "InteractiveTradingChart", - "InterfaceSwitched", - "Interlaced", - "Interleaving", - "InternallyBalancedDecomposition", - "InterpolatingFunction", - "InterpolatingPolynomial", - "Interpolation", - "InterpolationOrder", - "InterpolationPoints", - "InterpolationPrecision", - "Interpretation", - "InterpretationBox", - "InterpretationBoxOptions", - "InterpretationFunction", - "Interpreter", - "InterpretTemplate", - "InterquartileRange", - "Interrupt", - "InterruptSettings", - "IntersectedEntityClass", - "IntersectingQ", - "Intersection", - "Interval", - "IntervalIntersection", - "IntervalMarkers", - "IntervalMarkersStyle", - "IntervalMemberQ", - "IntervalSlider", - "IntervalUnion", - "Into", - "Inverse", - "InverseBetaRegularized", - "InverseBilateralLaplaceTransform", - "InverseBilateralZTransform", - "InverseCDF", - "InverseChiSquareDistribution", - "InverseContinuousWaveletTransform", - "InverseDistanceTransform", - "InverseEllipticNomeQ", - "InverseErf", - "InverseErfc", - "InverseFourier", - "InverseFourierCosTransform", - "InverseFourierSequenceTransform", - "InverseFourierSinTransform", - "InverseFourierTransform", - "InverseFunction", - "InverseFunctions", - "InverseGammaDistribution", - "InverseGammaRegularized", - "InverseGaussianDistribution", - "InverseGudermannian", - "InverseHankelTransform", - "InverseHaversine", - "InverseImagePyramid", - "InverseJacobiCD", - "InverseJacobiCN", - "InverseJacobiCS", - "InverseJacobiDC", - "InverseJacobiDN", - "InverseJacobiDS", - "InverseJacobiNC", - "InverseJacobiND", - "InverseJacobiNS", - "InverseJacobiSC", - "InverseJacobiSD", - "InverseJacobiSN", - "InverseLaplaceTransform", - "InverseMellinTransform", - "InversePermutation", - "InverseRadon", - "InverseRadonTransform", - "InverseSeries", - "InverseShortTimeFourier", - "InverseSpectrogram", - "InverseSurvivalFunction", - "InverseTransformedRegion", - "InverseWaveletTransform", - "InverseWeierstrassP", - "InverseWishartMatrixDistribution", - "InverseZTransform", - "Invisible", - "InvisibleApplication", - "InvisibleTimes", - "IPAddress", - "IrreduciblePolynomialQ", - "IslandData", - "IsolatingInterval", - "IsomorphicGraphQ", - "IsomorphicSubgraphQ", - "IsotopeData", - "Italic", - "Item", - "ItemAspectRatio", - "ItemBox", - "ItemBoxOptions", - "ItemDisplayFunction", - "ItemSize", - "ItemStyle", - "ItoProcess", - "JaccardDissimilarity", - "JacobiAmplitude", - "Jacobian", - "JacobiCD", - "JacobiCN", - "JacobiCS", - "JacobiDC", - "JacobiDN", - "JacobiDS", - "JacobiEpsilon", - "JacobiNC", - "JacobiND", - "JacobiNS", - "JacobiP", - "JacobiSC", - "JacobiSD", - "JacobiSN", - "JacobiSymbol", - "JacobiZeta", - "JacobiZN", - "JankoGroupJ1", - "JankoGroupJ2", - "JankoGroupJ3", - "JankoGroupJ4", - "JarqueBeraALMTest", - "JohnsonDistribution", - "Join", - "JoinAcross", - "Joined", - "JoinedCurve", - "JoinedCurveBox", - "JoinedCurveBoxOptions", - "JoinForm", - "JordanDecomposition", - "JordanModelDecomposition", - "JulianDate", - "JuliaSetBoettcher", - "JuliaSetIterationCount", - "JuliaSetPlot", - "JuliaSetPoints", - "K", - "KagiChart", - "KaiserBesselWindow", - "KaiserWindow", - "KalmanEstimator", - "KalmanFilter", - "KarhunenLoeveDecomposition", - "KaryTree", - "KatzCentrality", - "KCoreComponents", - "KDistribution", - "KEdgeConnectedComponents", - "KEdgeConnectedGraphQ", - "KeepExistingVersion", - "KelvinBei", - "KelvinBer", - "KelvinKei", - "KelvinKer", - "KendallTau", - "KendallTauTest", - "KernelConfiguration", - "KernelExecute", - "KernelFunction", - "KernelMixtureDistribution", - "KernelObject", - "Kernels", - "Ket", - "Key", - "KeyCollisionFunction", - "KeyComplement", - "KeyDrop", - "KeyDropFrom", - "KeyExistsQ", - "KeyFreeQ", - "KeyIntersection", - "KeyMap", - "KeyMemberQ", - "KeypointStrength", - "Keys", - "KeySelect", - "KeySort", - "KeySortBy", - "KeyTake", - "KeyUnion", - "KeyValueMap", - "KeyValuePattern", - "Khinchin", - "KillProcess", - "KirchhoffGraph", - "KirchhoffMatrix", - "KleinInvariantJ", - "KnapsackSolve", - "KnightTourGraph", - "KnotData", - "KnownUnitQ", - "KochCurve", - "KolmogorovSmirnovTest", - "KroneckerDelta", - "KroneckerModelDecomposition", - "KroneckerProduct", - "KroneckerSymbol", - "KuiperTest", - "KumaraswamyDistribution", - "Kurtosis", - "KuwaharaFilter", - "KVertexConnectedComponents", - "KVertexConnectedGraphQ", - "LABColor", - "Label", - "Labeled", - "LabeledSlider", - "LabelingFunction", - "LabelingSize", - "LabelStyle", - "LabelVisibility", - "LaguerreL", - "LakeData", - "LambdaComponents", - "LambertW", - "LameC", - "LameCPrime", - "LameEigenvalueA", - "LameEigenvalueB", - "LameS", - "LameSPrime", - "LaminaData", - "LanczosWindow", - "LandauDistribution", - "Language", - "LanguageCategory", - "LanguageData", - "LanguageIdentify", - "LanguageOptions", - "LaplaceDistribution", - "LaplaceTransform", - "Laplacian", - "LaplacianFilter", - "LaplacianGaussianFilter", - "LaplacianPDETerm", - "Large", - "Larger", - "Last", - "Latitude", - "LatitudeLongitude", - "LatticeData", - "LatticeReduce", - "Launch", - "LaunchKernels", - "LayeredGraphPlot", - "LayeredGraphPlot3D", - "LayerSizeFunction", - "LayoutInformation", - "LCHColor", - "LCM", - "LeaderSize", - "LeafCount", - "LeapVariant", - "LeapYearQ", - "LearnDistribution", - "LearnedDistribution", - "LearningRate", - "LearningRateMultipliers", - "LeastSquares", - "LeastSquaresFilterKernel", - "Left", - "LeftArrow", - "LeftArrowBar", - "LeftArrowRightArrow", - "LeftDownTeeVector", - "LeftDownVector", - "LeftDownVectorBar", - "LeftRightArrow", - "LeftRightVector", - "LeftTee", - "LeftTeeArrow", - "LeftTeeVector", - "LeftTriangle", - "LeftTriangleBar", - "LeftTriangleEqual", - "LeftUpDownVector", - "LeftUpTeeVector", - "LeftUpVector", - "LeftUpVectorBar", - "LeftVector", - "LeftVectorBar", - "LegendAppearance", - "Legended", - "LegendFunction", - "LegendLabel", - "LegendLayout", - "LegendMargins", - "LegendMarkers", - "LegendMarkerSize", - "LegendreP", - "LegendreQ", - "LegendreType", - "Length", - "LengthWhile", - "LerchPhi", - "Less", - "LessEqual", - "LessEqualGreater", - "LessEqualThan", - "LessFullEqual", - "LessGreater", - "LessLess", - "LessSlantEqual", - "LessThan", - "LessTilde", - "LetterCharacter", - "LetterCounts", - "LetterNumber", - "LetterQ", - "Level", - "LeveneTest", - "LeviCivitaTensor", - "LevyDistribution", - "Lexicographic", - "LexicographicOrder", - "LexicographicSort", - "LibraryDataType", - "LibraryFunction", - "LibraryFunctionDeclaration", - "LibraryFunctionError", - "LibraryFunctionInformation", - "LibraryFunctionLoad", - "LibraryFunctionUnload", - "LibraryLoad", - "LibraryUnload", - "LicenseEntitlementObject", - "LicenseEntitlements", - "LicenseID", - "LicensingSettings", - "LiftingFilterData", - "LiftingWaveletTransform", - "LightBlue", - "LightBrown", - "LightCyan", - "Lighter", - "LightGray", - "LightGreen", - "Lighting", - "LightingAngle", - "LightMagenta", - "LightOrange", - "LightPink", - "LightPurple", - "LightRed", - "LightSources", - "LightYellow", - "Likelihood", - "Limit", - "LimitsPositioning", - "LimitsPositioningTokens", - "LindleyDistribution", - "Line", - "Line3DBox", - "Line3DBoxOptions", - "LinearFilter", - "LinearFractionalOptimization", - "LinearFractionalTransform", - "LinearGradientFilling", - "LinearGradientImage", - "LinearizingTransformationData", - "LinearLayer", - "LinearModelFit", - "LinearOffsetFunction", - "LinearOptimization", - "LinearProgramming", - "LinearRecurrence", - "LinearSolve", - "LinearSolveFunction", - "LineBox", - "LineBoxOptions", - "LineBreak", - "LinebreakAdjustments", - "LineBreakChart", - "LinebreakSemicolonWeighting", - "LineBreakWithin", - "LineColor", - "LineGraph", - "LineIndent", - "LineIndentMaxFraction", - "LineIntegralConvolutionPlot", - "LineIntegralConvolutionScale", - "LineLegend", - "LineOpacity", - "LineSpacing", - "LineWrapParts", - "LinkActivate", - "LinkClose", - "LinkConnect", - "LinkConnectedQ", - "LinkCreate", - "LinkError", - "LinkFlush", - "LinkFunction", - "LinkHost", - "LinkInterrupt", - "LinkLaunch", - "LinkMode", - "LinkObject", - "LinkOpen", - "LinkOptions", - "LinkPatterns", - "LinkProtocol", - "LinkRankCentrality", - "LinkRead", - "LinkReadHeld", - "LinkReadyQ", - "Links", - "LinkService", - "LinkWrite", - "LinkWriteHeld", - "LiouvilleLambda", - "List", - "Listable", - "ListAnimate", - "ListContourPlot", - "ListContourPlot3D", - "ListConvolve", - "ListCorrelate", - "ListCurvePathPlot", - "ListDeconvolve", - "ListDensityPlot", - "ListDensityPlot3D", - "Listen", - "ListFormat", - "ListFourierSequenceTransform", - "ListInterpolation", - "ListLineIntegralConvolutionPlot", - "ListLinePlot", - "ListLinePlot3D", - "ListLogLinearPlot", - "ListLogLogPlot", - "ListLogPlot", - "ListPicker", - "ListPickerBox", - "ListPickerBoxBackground", - "ListPickerBoxOptions", - "ListPlay", - "ListPlot", - "ListPlot3D", - "ListPointPlot3D", - "ListPolarPlot", - "ListQ", - "ListSliceContourPlot3D", - "ListSliceDensityPlot3D", - "ListSliceVectorPlot3D", - "ListStepPlot", - "ListStreamDensityPlot", - "ListStreamPlot", - "ListStreamPlot3D", - "ListSurfacePlot3D", - "ListVectorDensityPlot", - "ListVectorDisplacementPlot", - "ListVectorDisplacementPlot3D", - "ListVectorPlot", - "ListVectorPlot3D", - "ListZTransform", - "Literal", - "LiteralSearch", - "LiteralType", - "LoadCompiledComponent", - "LocalAdaptiveBinarize", - "LocalCache", - "LocalClusteringCoefficient", - "LocalEvaluate", - "LocalizeDefinitions", - "LocalizeVariables", - "LocalObject", - "LocalObjects", - "LocalResponseNormalizationLayer", - "LocalSubmit", - "LocalSymbol", - "LocalTime", - "LocalTimeZone", - "LocationEquivalenceTest", - "LocationTest", - "Locator", - "LocatorAutoCreate", - "LocatorBox", - "LocatorBoxOptions", - "LocatorCentering", - "LocatorPane", - "LocatorPaneBox", - "LocatorPaneBoxOptions", - "LocatorRegion", - "Locked", - "Log", - "Log10", - "Log2", - "LogBarnesG", - "LogGamma", - "LogGammaDistribution", - "LogicalExpand", - "LogIntegral", - "LogisticDistribution", - "LogisticSigmoid", - "LogitModelFit", - "LogLikelihood", - "LogLinearPlot", - "LogLogisticDistribution", - "LogLogPlot", - "LogMultinormalDistribution", - "LogNormalDistribution", - "LogPlot", - "LogRankTest", - "LogSeriesDistribution", - "LongEqual", - "Longest", - "LongestCommonSequence", - "LongestCommonSequencePositions", - "LongestCommonSubsequence", - "LongestCommonSubsequencePositions", - "LongestMatch", - "LongestOrderedSequence", - "LongForm", - "Longitude", - "LongLeftArrow", - "LongLeftRightArrow", - "LongRightArrow", - "LongShortTermMemoryLayer", - "Lookup", - "Loopback", - "LoopFreeGraphQ", - "Looping", - "LossFunction", - "LowerCaseQ", - "LowerLeftArrow", - "LowerRightArrow", - "LowerTriangularize", - "LowerTriangularMatrix", - "LowerTriangularMatrixQ", - "LowpassFilter", - "LQEstimatorGains", - "LQGRegulator", - "LQOutputRegulatorGains", - "LQRegulatorGains", - "LUBackSubstitution", - "LucasL", - "LuccioSamiComponents", - "LUDecomposition", - "LunarEclipse", - "LUVColor", - "LyapunovSolve", - "LyonsGroupLy", - "MachineID", - "MachineName", - "MachineNumberQ", - "MachinePrecision", - "MacintoshSystemPageSetup", - "Magenta", - "Magnification", - "Magnify", - "MailAddressValidation", - "MailExecute", - "MailFolder", - "MailItem", - "MailReceiverFunction", - "MailResponseFunction", - "MailSearch", - "MailServerConnect", - "MailServerConnection", - "MailSettings", - "MainSolve", - "MaintainDynamicCaches", - "Majority", - "MakeBoxes", - "MakeExpression", - "MakeRules", - "ManagedLibraryExpressionID", - "ManagedLibraryExpressionQ", - "MandelbrotSetBoettcher", - "MandelbrotSetDistance", - "MandelbrotSetIterationCount", - "MandelbrotSetMemberQ", - "MandelbrotSetPlot", - "MangoldtLambda", - "ManhattanDistance", - "Manipulate", - "Manipulator", - "MannedSpaceMissionData", - "MannWhitneyTest", - "MantissaExponent", - "Manual", - "Map", - "MapAll", - "MapApply", - "MapAt", - "MapIndexed", - "MAProcess", - "MapThread", - "MarchenkoPasturDistribution", - "MarcumQ", - "MardiaCombinedTest", - "MardiaKurtosisTest", - "MardiaSkewnessTest", - "MarginalDistribution", - "MarkovProcessProperties", - "Masking", - "MassConcentrationCondition", - "MassFluxValue", - "MassImpermeableBoundaryValue", - "MassOutflowValue", - "MassSymmetryValue", - "MassTransferValue", - "MassTransportPDEComponent", - "MatchingDissimilarity", - "MatchLocalNameQ", - "MatchLocalNames", - "MatchQ", - "Material", - "MaterialShading", - "MaternPointProcess", - "MathematicalFunctionData", - "MathematicaNotation", - "MathieuC", - "MathieuCharacteristicA", - "MathieuCharacteristicB", - "MathieuCharacteristicExponent", - "MathieuCPrime", - "MathieuGroupM11", - "MathieuGroupM12", - "MathieuGroupM22", - "MathieuGroupM23", - "MathieuGroupM24", - "MathieuS", - "MathieuSPrime", - "MathMLForm", - "MathMLText", - "Matrices", - "MatrixExp", - "MatrixForm", - "MatrixFunction", - "MatrixLog", - "MatrixNormalDistribution", - "MatrixPlot", - "MatrixPower", - "MatrixPropertyDistribution", - "MatrixQ", - "MatrixRank", - "MatrixTDistribution", - "Max", - "MaxBend", - "MaxCellMeasure", - "MaxColorDistance", - "MaxDate", - "MaxDetect", - "MaxDisplayedChildren", - "MaxDuration", - "MaxExtraBandwidths", - "MaxExtraConditions", - "MaxFeatureDisplacement", - "MaxFeatures", - "MaxFilter", - "MaximalBy", - "Maximize", - "MaxItems", - "MaxIterations", - "MaxLimit", - "MaxMemoryUsed", - "MaxMixtureKernels", - "MaxOverlapFraction", - "MaxPlotPoints", - "MaxPoints", - "MaxRecursion", - "MaxStableDistribution", - "MaxStepFraction", - "MaxSteps", - "MaxStepSize", - "MaxTrainingRounds", - "MaxValue", - "MaxwellDistribution", - "MaxWordGap", - "McLaughlinGroupMcL", - "Mean", - "MeanAbsoluteLossLayer", - "MeanAround", - "MeanClusteringCoefficient", - "MeanDegreeConnectivity", - "MeanDeviation", - "MeanFilter", - "MeanGraphDistance", - "MeanNeighborDegree", - "MeanPointDensity", - "MeanShift", - "MeanShiftFilter", - "MeanSquaredLossLayer", - "Median", - "MedianDeviation", - "MedianFilter", - "MedicalTestData", - "Medium", - "MeijerG", - "MeijerGReduce", - "MeixnerDistribution", - "MellinConvolve", - "MellinTransform", - "MemberQ", - "MemoryAvailable", - "MemoryConstrained", - "MemoryConstraint", - "MemoryInUse", - "MengerMesh", - "Menu", - "MenuAppearance", - "MenuCommandKey", - "MenuEvaluator", - "MenuItem", - "MenuList", - "MenuPacket", - "MenuSortingValue", - "MenuStyle", - "MenuView", - "Merge", - "MergeDifferences", - "MergingFunction", - "MersennePrimeExponent", - "MersennePrimeExponentQ", - "Mesh", - "MeshCellCentroid", - "MeshCellCount", - "MeshCellHighlight", - "MeshCellIndex", - "MeshCellLabel", - "MeshCellMarker", - "MeshCellMeasure", - "MeshCellQuality", - "MeshCells", - "MeshCellShapeFunction", - "MeshCellStyle", - "MeshConnectivityGraph", - "MeshCoordinates", - "MeshFunctions", - "MeshPrimitives", - "MeshQualityGoal", - "MeshRange", - "MeshRefinementFunction", - "MeshRegion", - "MeshRegionQ", - "MeshShading", - "MeshStyle", - "Message", - "MessageDialog", - "MessageList", - "MessageName", - "MessageObject", - "MessageOptions", - "MessagePacket", - "Messages", - "MessagesNotebook", - "MetaCharacters", - "MetaInformation", - "MeteorShowerData", - "Method", - "MethodOptions", - "MexicanHatWavelet", - "MeyerWavelet", - "Midpoint", - "MIMETypeToFormatList", - "Min", - "MinColorDistance", - "MinDate", - "MinDetect", - "MineralData", - "MinFilter", - "MinimalBy", - "MinimalPolynomial", - "MinimalStateSpaceModel", - "Minimize", - "MinimumTimeIncrement", - "MinIntervalSize", - "MinkowskiQuestionMark", - "MinLimit", - "MinMax", - "MinorPlanetData", - "Minors", - "MinPointSeparation", - "MinRecursion", - "MinSize", - "MinStableDistribution", - "Minus", - "MinusPlus", - "MinValue", - "Missing", - "MissingBehavior", - "MissingDataMethod", - "MissingDataRules", - "MissingQ", - "MissingString", - "MissingStyle", - "MissingValuePattern", - "MissingValueSynthesis", - "MittagLefflerE", - "MixedFractionParts", - "MixedGraphQ", - "MixedMagnitude", - "MixedRadix", - "MixedRadixQuantity", - "MixedUnit", - "MixtureDistribution", - "Mod", - "Modal", - "Mode", - "ModelPredictiveController", - "Modular", - "ModularInverse", - "ModularLambda", - "Module", - "Modulus", - "MoebiusMu", - "Molecule", - "MoleculeAlign", - "MoleculeContainsQ", - "MoleculeDraw", - "MoleculeEquivalentQ", - "MoleculeFreeQ", - "MoleculeGraph", - "MoleculeMatchQ", - "MoleculeMaximumCommonSubstructure", - "MoleculeModify", - "MoleculeName", - "MoleculePattern", - "MoleculePlot", - "MoleculePlot3D", - "MoleculeProperty", - "MoleculeQ", - "MoleculeRecognize", - "MoleculeSubstructureCount", - "MoleculeValue", - "Moment", - "MomentConvert", - "MomentEvaluate", - "MomentGeneratingFunction", - "MomentOfInertia", - "Monday", - "Monitor", - "MonomialList", - "MonomialOrder", - "MonsterGroupM", - "MoonPhase", - "MoonPosition", - "MorletWavelet", - "MorphologicalBinarize", - "MorphologicalBranchPoints", - "MorphologicalComponents", - "MorphologicalEulerNumber", - "MorphologicalGraph", - "MorphologicalPerimeter", - "MorphologicalTransform", - "MortalityData", - "Most", - "MountainData", - "MouseAnnotation", - "MouseAppearance", - "MouseAppearanceTag", - "MouseButtons", - "Mouseover", - "MousePointerNote", - "MousePosition", - "MovieData", - "MovingAverage", - "MovingMap", - "MovingMedian", - "MoyalDistribution", - "MultiaxisArrangement", - "Multicolumn", - "MultiedgeStyle", - "MultigraphQ", - "MultilaunchWarning", - "MultiLetterItalics", - "MultiLetterStyle", - "MultilineFunction", - "Multinomial", - "MultinomialDistribution", - "MultinormalDistribution", - "MultiplicativeOrder", - "Multiplicity", - "MultiplySides", - "MultiscriptBoxOptions", - "Multiselection", - "MultivariateHypergeometricDistribution", - "MultivariatePoissonDistribution", - "MultivariateTDistribution", - "N", - "NakagamiDistribution", - "NameQ", - "Names", - "NamespaceBox", - "NamespaceBoxOptions", - "Nand", - "NArgMax", - "NArgMin", - "NBernoulliB", - "NBodySimulation", - "NBodySimulationData", - "NCache", - "NCaputoD", - "NDEigensystem", - "NDEigenvalues", - "NDSolve", - "NDSolveValue", - "Nearest", - "NearestFunction", - "NearestMeshCells", - "NearestNeighborG", - "NearestNeighborGraph", - "NearestTo", - "NebulaData", - "NeedlemanWunschSimilarity", - "Needs", - "Negative", - "NegativeBinomialDistribution", - "NegativeDefiniteMatrixQ", - "NegativeIntegers", - "NegativelyOrientedPoints", - "NegativeMultinomialDistribution", - "NegativeRationals", - "NegativeReals", - "NegativeSemidefiniteMatrixQ", - "NeighborhoodData", - "NeighborhoodGraph", - "Nest", - "NestedGreaterGreater", - "NestedLessLess", - "NestedScriptRules", - "NestGraph", - "NestList", - "NestTree", - "NestWhile", - "NestWhileList", - "NetAppend", - "NetArray", - "NetArrayLayer", - "NetBidirectionalOperator", - "NetChain", - "NetDecoder", - "NetDelete", - "NetDrop", - "NetEncoder", - "NetEvaluationMode", - "NetExternalObject", - "NetExtract", - "NetFlatten", - "NetFoldOperator", - "NetGANOperator", - "NetGraph", - "NetInformation", - "NetInitialize", - "NetInsert", - "NetInsertSharedArrays", - "NetJoin", - "NetMapOperator", - "NetMapThreadOperator", - "NetMeasurements", - "NetModel", - "NetNestOperator", - "NetPairEmbeddingOperator", - "NetPort", - "NetPortGradient", - "NetPrepend", - "NetRename", - "NetReplace", - "NetReplacePart", - "NetSharedArray", - "NetStateObject", - "NetTake", - "NetTrain", - "NetTrainResultsObject", - "NetUnfold", - "NetworkPacketCapture", - "NetworkPacketRecording", - "NetworkPacketRecordingDuring", - "NetworkPacketTrace", - "NeumannValue", - "NevilleThetaC", - "NevilleThetaD", - "NevilleThetaN", - "NevilleThetaS", - "NewPrimitiveStyle", - "NExpectation", - "Next", - "NextCell", - "NextDate", - "NextPrime", - "NextScheduledTaskTime", - "NeymanScottPointProcess", - "NFractionalD", - "NHoldAll", - "NHoldFirst", - "NHoldRest", - "NicholsGridLines", - "NicholsPlot", - "NightHemisphere", - "NIntegrate", - "NMaximize", - "NMaxValue", - "NMinimize", - "NMinValue", - "NominalScale", - "NominalVariables", - "NonAssociative", - "NoncentralBetaDistribution", - "NoncentralChiSquareDistribution", - "NoncentralFRatioDistribution", - "NoncentralStudentTDistribution", - "NonCommutativeMultiply", - "NonConstants", - "NondimensionalizationTransform", - "None", - "NoneTrue", - "NonlinearModelFit", - "NonlinearStateSpaceModel", - "NonlocalMeansFilter", - "NonNegative", - "NonNegativeIntegers", - "NonNegativeRationals", - "NonNegativeReals", - "NonPositive", - "NonPositiveIntegers", - "NonPositiveRationals", - "NonPositiveReals", - "Nor", - "NorlundB", - "Norm", - "Normal", - "NormalDistribution", - "NormalGrouping", - "NormalizationLayer", - "Normalize", - "Normalized", - "NormalizedSquaredEuclideanDistance", - "NormalMatrixQ", - "NormalsFunction", - "NormFunction", - "Not", - "NotCongruent", - "NotCupCap", - "NotDoubleVerticalBar", - "Notebook", - "NotebookApply", - "NotebookAutoSave", - "NotebookBrowseDirectory", - "NotebookClose", - "NotebookConvertSettings", - "NotebookCreate", - "NotebookDefault", - "NotebookDelete", - "NotebookDirectory", - "NotebookDynamicExpression", - "NotebookEvaluate", - "NotebookEventActions", - "NotebookFileName", - "NotebookFind", - "NotebookGet", - "NotebookImport", - "NotebookInformation", - "NotebookInterfaceObject", - "NotebookLocate", - "NotebookObject", - "NotebookOpen", - "NotebookPath", - "NotebookPrint", - "NotebookPut", - "NotebookRead", - "Notebooks", - "NotebookSave", - "NotebookSelection", - "NotebooksMenu", - "NotebookTemplate", - "NotebookWrite", - "NotElement", - "NotEqualTilde", - "NotExists", - "NotGreater", - "NotGreaterEqual", - "NotGreaterFullEqual", - "NotGreaterGreater", - "NotGreaterLess", - "NotGreaterSlantEqual", - "NotGreaterTilde", - "Nothing", - "NotHumpDownHump", - "NotHumpEqual", - "NotificationFunction", - "NotLeftTriangle", - "NotLeftTriangleBar", - "NotLeftTriangleEqual", - "NotLess", - "NotLessEqual", - "NotLessFullEqual", - "NotLessGreater", - "NotLessLess", - "NotLessSlantEqual", - "NotLessTilde", - "NotNestedGreaterGreater", - "NotNestedLessLess", - "NotPrecedes", - "NotPrecedesEqual", - "NotPrecedesSlantEqual", - "NotPrecedesTilde", - "NotReverseElement", - "NotRightTriangle", - "NotRightTriangleBar", - "NotRightTriangleEqual", - "NotSquareSubset", - "NotSquareSubsetEqual", - "NotSquareSuperset", - "NotSquareSupersetEqual", - "NotSubset", - "NotSubsetEqual", - "NotSucceeds", - "NotSucceedsEqual", - "NotSucceedsSlantEqual", - "NotSucceedsTilde", - "NotSuperset", - "NotSupersetEqual", - "NotTilde", - "NotTildeEqual", - "NotTildeFullEqual", - "NotTildeTilde", - "NotVerticalBar", - "Now", - "NoWhitespace", - "NProbability", - "NProduct", - "NProductFactors", - "NRoots", - "NSolve", - "NSolveValues", - "NSum", - "NSumTerms", - "NuclearExplosionData", - "NuclearReactorData", - "Null", - "NullRecords", - "NullSpace", - "NullWords", - "Number", - "NumberCompose", - "NumberDecompose", - "NumberDigit", - "NumberExpand", - "NumberFieldClassNumber", - "NumberFieldDiscriminant", - "NumberFieldFundamentalUnits", - "NumberFieldIntegralBasis", - "NumberFieldNormRepresentatives", - "NumberFieldRegulator", - "NumberFieldRootsOfUnity", - "NumberFieldSignature", - "NumberForm", - "NumberFormat", - "NumberLinePlot", - "NumberMarks", - "NumberMultiplier", - "NumberPadding", - "NumberPoint", - "NumberQ", - "NumberSeparator", - "NumberSigns", - "NumberString", - "Numerator", - "NumeratorDenominator", - "NumericalOrder", - "NumericalSort", - "NumericArray", - "NumericArrayQ", - "NumericArrayType", - "NumericFunction", - "NumericQ", - "NuttallWindow", - "NValues", - "NyquistGridLines", - "NyquistPlot", - "O", - "ObjectExistsQ", - "ObservabilityGramian", - "ObservabilityMatrix", - "ObservableDecomposition", - "ObservableModelQ", - "OceanData", - "Octahedron", - "OddQ", - "Off", - "Offset", - "OLEData", - "On", - "ONanGroupON", - "Once", - "OneIdentity", - "Opacity", - "OpacityFunction", - "OpacityFunctionScaling", - "Open", - "OpenAppend", - "Opener", - "OpenerBox", - "OpenerBoxOptions", - "OpenerView", - "OpenFunctionInspectorPacket", - "Opening", - "OpenRead", - "OpenSpecialOptions", - "OpenTemporary", - "OpenWrite", - "Operate", - "OperatingSystem", - "OperatorApplied", - "OptimumFlowData", - "Optional", - "OptionalElement", - "OptionInspectorSettings", - "OptionQ", - "Options", - "OptionsPacket", - "OptionsPattern", - "OptionValue", - "OptionValueBox", - "OptionValueBoxOptions", - "Or", - "Orange", - "Order", - "OrderDistribution", - "OrderedQ", - "Ordering", - "OrderingBy", - "OrderingLayer", - "Orderless", - "OrderlessPatternSequence", - "OrdinalScale", - "OrnsteinUhlenbeckProcess", - "Orthogonalize", - "OrthogonalMatrixQ", - "Out", - "Outer", - "OuterPolygon", - "OuterPolyhedron", - "OutputAutoOverwrite", - "OutputControllabilityMatrix", - "OutputControllableModelQ", - "OutputForm", - "OutputFormData", - "OutputGrouping", - "OutputMathEditExpression", - "OutputNamePacket", - "OutputPorts", - "OutputResponse", - "OutputSizeLimit", - "OutputStream", - "Over", - "OverBar", - "OverDot", - "Overflow", - "OverHat", - "Overlaps", - "Overlay", - "OverlayBox", - "OverlayBoxOptions", - "OverlayVideo", - "Overscript", - "OverscriptBox", - "OverscriptBoxOptions", - "OverTilde", - "OverVector", - "OverwriteTarget", - "OwenT", - "OwnValues", - "Package", - "PackingMethod", - "PackPaclet", - "PacletDataRebuild", - "PacletDirectoryAdd", - "PacletDirectoryLoad", - "PacletDirectoryRemove", - "PacletDirectoryUnload", - "PacletDisable", - "PacletEnable", - "PacletFind", - "PacletFindRemote", - "PacletInformation", - "PacletInstall", - "PacletInstallSubmit", - "PacletNewerQ", - "PacletObject", - "PacletObjectQ", - "PacletSite", - "PacletSiteObject", - "PacletSiteRegister", - "PacletSites", - "PacletSiteUnregister", - "PacletSiteUpdate", - "PacletSymbol", - "PacletUninstall", - "PacletUpdate", - "PaddedForm", - "Padding", - "PaddingLayer", - "PaddingSize", - "PadeApproximant", - "PadLeft", - "PadRight", - "PageBreakAbove", - "PageBreakBelow", - "PageBreakWithin", - "PageFooterLines", - "PageFooters", - "PageHeaderLines", - "PageHeaders", - "PageHeight", - "PageRankCentrality", - "PageTheme", - "PageWidth", - "Pagination", - "PairCorrelationG", - "PairedBarChart", - "PairedHistogram", - "PairedSmoothHistogram", - "PairedTTest", - "PairedZTest", - "PaletteNotebook", - "PalettePath", - "PalettesMenuSettings", - "PalindromeQ", - "Pane", - "PaneBox", - "PaneBoxOptions", - "Panel", - "PanelBox", - "PanelBoxOptions", - "Paneled", - "PaneSelector", - "PaneSelectorBox", - "PaneSelectorBoxOptions", - "PaperWidth", - "ParabolicCylinderD", - "ParagraphIndent", - "ParagraphSpacing", - "ParallelArray", - "ParallelAxisPlot", - "ParallelCombine", - "ParallelDo", - "Parallelepiped", - "ParallelEvaluate", - "Parallelization", - "Parallelize", - "ParallelKernels", - "ParallelMap", - "ParallelNeeds", - "Parallelogram", - "ParallelProduct", - "ParallelSubmit", - "ParallelSum", - "ParallelTable", - "ParallelTry", - "Parameter", - "ParameterEstimator", - "ParameterMixtureDistribution", - "ParameterVariables", - "ParametricConvexOptimization", - "ParametricFunction", - "ParametricNDSolve", - "ParametricNDSolveValue", - "ParametricPlot", - "ParametricPlot3D", - "ParametricRampLayer", - "ParametricRegion", - "ParentBox", - "ParentCell", - "ParentConnect", - "ParentDirectory", - "ParentEdgeLabel", - "ParentEdgeLabelFunction", - "ParentEdgeLabelStyle", - "ParentEdgeShapeFunction", - "ParentEdgeStyle", - "ParentEdgeStyleFunction", - "ParentForm", - "Parenthesize", - "ParentList", - "ParentNotebook", - "ParetoDistribution", - "ParetoPickandsDistribution", - "ParkData", - "Part", - "PartBehavior", - "PartialCorrelationFunction", - "PartialD", - "ParticleAcceleratorData", - "ParticleData", - "Partition", - "PartitionGranularity", - "PartitionsP", - "PartitionsQ", - "PartLayer", - "PartOfSpeech", - "PartProtection", - "ParzenWindow", - "PascalDistribution", - "PassEventsDown", - "PassEventsUp", - "Paste", - "PasteAutoQuoteCharacters", - "PasteBoxFormInlineCells", - "PasteButton", - "Path", - "PathGraph", - "PathGraphQ", - "Pattern", - "PatternFilling", - "PatternReaction", - "PatternSequence", - "PatternTest", - "PauliMatrix", - "PaulWavelet", - "Pause", - "PausedTime", - "PDF", - "PeakDetect", - "PeanoCurve", - "PearsonChiSquareTest", - "PearsonCorrelationTest", - "PearsonDistribution", - "PenttinenPointProcess", - "PercentForm", - "PerfectNumber", - "PerfectNumberQ", - "PerformanceGoal", - "Perimeter", - "PeriodicBoundaryCondition", - "PeriodicInterpolation", - "Periodogram", - "PeriodogramArray", - "Permanent", - "Permissions", - "PermissionsGroup", - "PermissionsGroupMemberQ", - "PermissionsGroups", - "PermissionsKey", - "PermissionsKeys", - "PermutationCycles", - "PermutationCyclesQ", - "PermutationGroup", - "PermutationLength", - "PermutationList", - "PermutationListQ", - "PermutationMatrix", - "PermutationMax", - "PermutationMin", - "PermutationOrder", - "PermutationPower", - "PermutationProduct", - "PermutationReplace", - "Permutations", - "PermutationSupport", - "Permute", - "PeronaMalikFilter", - "Perpendicular", - "PerpendicularBisector", - "PersistenceLocation", - "PersistenceTime", - "PersistentObject", - "PersistentObjects", - "PersistentSymbol", - "PersistentValue", - "PersonData", - "PERTDistribution", - "PetersenGraph", - "PhaseMargins", - "PhaseRange", - "PhongShading", - "PhysicalSystemData", - "Pi", - "Pick", - "PickedElements", - "PickMode", - "PIDData", - "PIDDerivativeFilter", - "PIDFeedforward", - "PIDTune", - "Piecewise", - "PiecewiseExpand", - "PieChart", - "PieChart3D", - "PillaiTrace", - "PillaiTraceTest", - "PingTime", - "Pink", - "PitchRecognize", - "Pivoting", - "PixelConstrained", - "PixelValue", - "PixelValuePositions", - "Placed", - "Placeholder", - "PlaceholderLayer", - "PlaceholderReplace", - "Plain", - "PlanarAngle", - "PlanarFaceList", - "PlanarGraph", - "PlanarGraphQ", - "PlanckRadiationLaw", - "PlaneCurveData", - "PlanetaryMoonData", - "PlanetData", - "PlantData", - "Play", - "PlaybackSettings", - "PlayRange", - "Plot", - "Plot3D", - "Plot3Matrix", - "PlotDivision", - "PlotJoined", - "PlotLabel", - "PlotLabels", - "PlotLayout", - "PlotLegends", - "PlotMarkers", - "PlotPoints", - "PlotRange", - "PlotRangeClipping", - "PlotRangeClipPlanesStyle", - "PlotRangePadding", - "PlotRegion", - "PlotStyle", - "PlotTheme", - "Pluralize", - "Plus", - "PlusMinus", - "Pochhammer", - "PodStates", - "PodWidth", - "Point", - "Point3DBox", - "Point3DBoxOptions", - "PointBox", - "PointBoxOptions", - "PointCountDistribution", - "PointDensity", - "PointDensityFunction", - "PointFigureChart", - "PointLegend", - "PointLight", - "PointProcessEstimator", - "PointProcessFitTest", - "PointProcessParameterAssumptions", - "PointProcessParameterQ", - "PointSize", - "PointStatisticFunction", - "PointValuePlot", - "PoissonConsulDistribution", - "PoissonDistribution", - "PoissonPDEComponent", - "PoissonPointProcess", - "PoissonProcess", - "PoissonWindow", - "PolarAxes", - "PolarAxesOrigin", - "PolarGridLines", - "PolarPlot", - "PolarTicks", - "PoleZeroMarkers", - "PolyaAeppliDistribution", - "PolyGamma", - "Polygon", - "Polygon3DBox", - "Polygon3DBoxOptions", - "PolygonalNumber", - "PolygonAngle", - "PolygonBox", - "PolygonBoxOptions", - "PolygonCoordinates", - "PolygonDecomposition", - "PolygonHoleScale", - "PolygonIntersections", - "PolygonScale", - "Polyhedron", - "PolyhedronAngle", - "PolyhedronBox", - "PolyhedronBoxOptions", - "PolyhedronCoordinates", - "PolyhedronData", - "PolyhedronDecomposition", - "PolyhedronGenus", - "PolyLog", - "PolynomialExpressionQ", - "PolynomialExtendedGCD", - "PolynomialForm", - "PolynomialGCD", - "PolynomialLCM", - "PolynomialMod", - "PolynomialQ", - "PolynomialQuotient", - "PolynomialQuotientRemainder", - "PolynomialReduce", - "PolynomialRemainder", - "Polynomials", - "PolynomialSumOfSquaresList", - "PoolingLayer", - "PopupMenu", - "PopupMenuBox", - "PopupMenuBoxOptions", - "PopupView", - "PopupWindow", - "Position", - "PositionIndex", - "PositionLargest", - "PositionSmallest", - "Positive", - "PositiveDefiniteMatrixQ", - "PositiveIntegers", - "PositivelyOrientedPoints", - "PositiveRationals", - "PositiveReals", - "PositiveSemidefiniteMatrixQ", - "PossibleZeroQ", - "Postfix", - "PostScript", - "Power", - "PowerDistribution", - "PowerExpand", - "PowerMod", - "PowerModList", - "PowerRange", - "PowerSpectralDensity", - "PowersRepresentations", - "PowerSymmetricPolynomial", - "Precedence", - "PrecedenceForm", - "Precedes", - "PrecedesEqual", - "PrecedesSlantEqual", - "PrecedesTilde", - "Precision", - "PrecisionGoal", - "PreDecrement", - "Predict", - "PredictionRoot", - "PredictorFunction", - "PredictorInformation", - "PredictorMeasurements", - "PredictorMeasurementsObject", - "PreemptProtect", - "PreferencesPath", - "PreferencesSettings", - "Prefix", - "PreIncrement", - "Prepend", - "PrependLayer", - "PrependTo", - "PreprocessingRules", - "PreserveColor", - "PreserveImageOptions", - "Previous", - "PreviousCell", - "PreviousDate", - "PriceGraphDistribution", - "PrimaryPlaceholder", - "Prime", - "PrimeNu", - "PrimeOmega", - "PrimePi", - "PrimePowerQ", - "PrimeQ", - "Primes", - "PrimeZetaP", - "PrimitivePolynomialQ", - "PrimitiveRoot", - "PrimitiveRootList", - "PrincipalComponents", - "PrincipalValue", - "Print", - "PrintableASCIIQ", - "PrintAction", - "PrintForm", - "PrintingCopies", - "PrintingOptions", - "PrintingPageRange", - "PrintingStartingPageNumber", - "PrintingStyleEnvironment", - "Printout3D", - "Printout3DPreviewer", - "PrintPrecision", - "PrintTemporary", - "Prism", - "PrismBox", - "PrismBoxOptions", - "PrivateCellOptions", - "PrivateEvaluationOptions", - "PrivateFontOptions", - "PrivateFrontEndOptions", - "PrivateKey", - "PrivateNotebookOptions", - "PrivatePaths", - "Probability", - "ProbabilityDistribution", - "ProbabilityPlot", - "ProbabilityPr", - "ProbabilityScalePlot", - "ProbitModelFit", - "ProcessConnection", - "ProcessDirectory", - "ProcessEnvironment", - "Processes", - "ProcessEstimator", - "ProcessInformation", - "ProcessObject", - "ProcessParameterAssumptions", - "ProcessParameterQ", - "ProcessStateDomain", - "ProcessStatus", - "ProcessTimeDomain", - "Product", - "ProductDistribution", - "ProductLog", - "ProgressIndicator", - "ProgressIndicatorBox", - "ProgressIndicatorBoxOptions", - "ProgressReporting", - "Projection", - "Prolog", - "PromptForm", - "ProofObject", - "PropagateAborts", - "Properties", - "Property", - "PropertyList", - "PropertyValue", - "Proportion", - "Proportional", - "Protect", - "Protected", - "ProteinData", - "Pruning", - "PseudoInverse", - "PsychrometricPropertyData", - "PublicKey", - "PublisherID", - "PulsarData", - "PunctuationCharacter", - "Purple", - "Put", - "PutAppend", - "Pyramid", - "PyramidBox", - "PyramidBoxOptions", - "QBinomial", - "QFactorial", - "QGamma", - "QHypergeometricPFQ", - "QnDispersion", - "QPochhammer", - "QPolyGamma", - "QRDecomposition", - "QuadraticIrrationalQ", - "QuadraticOptimization", - "Quantile", - "QuantilePlot", - "Quantity", - "QuantityArray", - "QuantityDistribution", - "QuantityForm", - "QuantityMagnitude", - "QuantityQ", - "QuantityUnit", - "QuantityVariable", - "QuantityVariableCanonicalUnit", - "QuantityVariableDimensions", - "QuantityVariableIdentifier", - "QuantityVariablePhysicalQuantity", - "Quartics", - "QuartileDeviation", - "Quartiles", - "QuartileSkewness", - "Query", - "QuestionGenerator", - "QuestionInterface", - "QuestionObject", - "QuestionSelector", - "QueueingNetworkProcess", - "QueueingProcess", - "QueueProperties", - "Quiet", - "QuietEcho", - "Quit", - "Quotient", - "QuotientRemainder", - "RadialAxisPlot", - "RadialGradientFilling", - "RadialGradientImage", - "RadialityCentrality", - "RadicalBox", - "RadicalBoxOptions", - "RadioButton", - "RadioButtonBar", - "RadioButtonBox", - "RadioButtonBoxOptions", - "Radon", - "RadonTransform", - "RamanujanTau", - "RamanujanTauL", - "RamanujanTauTheta", - "RamanujanTauZ", - "Ramp", - "Random", - "RandomArrayLayer", - "RandomChoice", - "RandomColor", - "RandomComplex", - "RandomDate", - "RandomEntity", - "RandomFunction", - "RandomGeneratorState", - "RandomGeoPosition", - "RandomGraph", - "RandomImage", - "RandomInstance", - "RandomInteger", - "RandomPermutation", - "RandomPoint", - "RandomPointConfiguration", - "RandomPolygon", - "RandomPolyhedron", - "RandomPrime", - "RandomReal", - "RandomSample", - "RandomSeed", - "RandomSeeding", - "RandomTime", - "RandomTree", - "RandomVariate", - "RandomWalkProcess", - "RandomWord", - "Range", - "RangeFilter", - "RangeSpecification", - "RankedMax", - "RankedMin", - "RarerProbability", - "Raster", - "Raster3D", - "Raster3DBox", - "Raster3DBoxOptions", - "RasterArray", - "RasterBox", - "RasterBoxOptions", - "Rasterize", - "RasterSize", - "Rational", - "RationalExpressionQ", - "RationalFunctions", - "Rationalize", - "Rationals", - "Ratios", - "RawArray", - "RawBoxes", - "RawData", - "RawMedium", - "RayleighDistribution", - "Re", - "ReactionBalance", - "ReactionBalancedQ", - "ReactionPDETerm", - "Read", - "ReadByteArray", - "ReadLine", - "ReadList", - "ReadProtected", - "ReadString", - "Real", - "RealAbs", - "RealBlockDiagonalForm", - "RealDigits", - "RealExponent", - "Reals", - "RealSign", - "Reap", - "RebuildPacletData", - "RecalibrationFunction", - "RecognitionPrior", - "RecognitionThreshold", - "ReconstructionMesh", - "Record", - "RecordLists", - "RecordSeparators", - "Rectangle", - "RectangleBox", - "RectangleBoxOptions", - "RectangleChart", - "RectangleChart3D", - "RectangularRepeatingElement", - "RecurrenceFilter", - "RecurrenceTable", - "RecurringDigitsForm", - "Red", - "Reduce", - "RefBox", - "ReferenceLineStyle", - "ReferenceMarkers", - "ReferenceMarkerStyle", - "Refine", - "ReflectionMatrix", - "ReflectionTransform", - "Refresh", - "RefreshRate", - "Region", - "RegionBinarize", - "RegionBoundary", - "RegionBoundaryStyle", - "RegionBounds", - "RegionCentroid", - "RegionCongruent", - "RegionConvert", - "RegionDifference", - "RegionDilation", - "RegionDimension", - "RegionDisjoint", - "RegionDistance", - "RegionDistanceFunction", - "RegionEmbeddingDimension", - "RegionEqual", - "RegionErosion", - "RegionFillingStyle", - "RegionFit", - "RegionFunction", - "RegionImage", - "RegionIntersection", - "RegionMeasure", - "RegionMember", - "RegionMemberFunction", - "RegionMoment", - "RegionNearest", - "RegionNearestFunction", - "RegionPlot", - "RegionPlot3D", - "RegionProduct", - "RegionQ", - "RegionResize", - "RegionSimilar", - "RegionSize", - "RegionSymmetricDifference", - "RegionUnion", - "RegionWithin", - "RegisterExternalEvaluator", - "RegularExpression", - "Regularization", - "RegularlySampledQ", - "RegularPolygon", - "ReIm", - "ReImLabels", - "ReImPlot", - "ReImStyle", - "Reinstall", - "RelationalDatabase", - "RelationGraph", - "Release", - "ReleaseHold", - "ReliabilityDistribution", - "ReliefImage", - "ReliefPlot", - "RemoteAuthorizationCaching", - "RemoteBatchJobAbort", - "RemoteBatchJobObject", - "RemoteBatchJobs", - "RemoteBatchMapSubmit", - "RemoteBatchSubmissionEnvironment", - "RemoteBatchSubmit", - "RemoteConnect", - "RemoteConnectionObject", - "RemoteEvaluate", - "RemoteFile", - "RemoteInputFiles", - "RemoteKernelObject", - "RemoteProviderSettings", - "RemoteRun", - "RemoteRunProcess", - "RemovalConditions", - "Remove", - "RemoveAlphaChannel", - "RemoveAsynchronousTask", - "RemoveAudioStream", - "RemoveBackground", - "RemoveChannelListener", - "RemoveChannelSubscribers", - "Removed", - "RemoveDiacritics", - "RemoveInputStreamMethod", - "RemoveOutputStreamMethod", - "RemoveProperty", - "RemoveScheduledTask", - "RemoveUsers", - "RemoveVideoStream", - "RenameDirectory", - "RenameFile", - "RenderAll", - "RenderingOptions", - "RenewalProcess", - "RenkoChart", - "RepairMesh", - "Repeated", - "RepeatedNull", - "RepeatedString", - "RepeatedTiming", - "RepeatingElement", - "Replace", - "ReplaceAll", - "ReplaceAt", - "ReplaceHeldPart", - "ReplaceImageValue", - "ReplaceList", - "ReplacePart", - "ReplacePixelValue", - "ReplaceRepeated", - "ReplicateLayer", - "RequiredPhysicalQuantities", - "Resampling", - "ResamplingAlgorithmData", - "ResamplingMethod", - "Rescale", - "RescalingTransform", - "ResetDirectory", - "ResetScheduledTask", - "ReshapeLayer", - "Residue", - "ResidueSum", - "ResizeLayer", - "Resolve", - "ResolveContextAliases", - "ResourceAcquire", - "ResourceData", - "ResourceFunction", - "ResourceObject", - "ResourceRegister", - "ResourceRemove", - "ResourceSearch", - "ResourceSubmissionObject", - "ResourceSubmit", - "ResourceSystemBase", - "ResourceSystemPath", - "ResourceUpdate", - "ResourceVersion", - "ResponseForm", - "Rest", - "RestartInterval", - "Restricted", - "Resultant", - "ResumePacket", - "Return", - "ReturnCreatesNewCell", - "ReturnEntersInput", - "ReturnExpressionPacket", - "ReturnInputFormPacket", - "ReturnPacket", - "ReturnReceiptFunction", - "ReturnTextPacket", - "Reverse", - "ReverseApplied", - "ReverseBiorthogonalSplineWavelet", - "ReverseElement", - "ReverseEquilibrium", - "ReverseGraph", - "ReverseSort", - "ReverseSortBy", - "ReverseUpEquilibrium", - "RevolutionAxis", - "RevolutionPlot3D", - "RGBColor", - "RiccatiSolve", - "RiceDistribution", - "RidgeFilter", - "RiemannR", - "RiemannSiegelTheta", - "RiemannSiegelZ", - "RiemannXi", - "Riffle", - "Right", - "RightArrow", - "RightArrowBar", - "RightArrowLeftArrow", - "RightComposition", - "RightCosetRepresentative", - "RightDownTeeVector", - "RightDownVector", - "RightDownVectorBar", - "RightTee", - "RightTeeArrow", - "RightTeeVector", - "RightTriangle", - "RightTriangleBar", - "RightTriangleEqual", - "RightUpDownVector", - "RightUpTeeVector", - "RightUpVector", - "RightUpVectorBar", - "RightVector", - "RightVectorBar", - "RipleyK", - "RipleyRassonRegion", - "RiskAchievementImportance", - "RiskReductionImportance", - "RobustConvexOptimization", - "RogersTanimotoDissimilarity", - "RollPitchYawAngles", - "RollPitchYawMatrix", - "RomanNumeral", - "Root", - "RootApproximant", - "RootIntervals", - "RootLocusPlot", - "RootMeanSquare", - "RootOfUnityQ", - "RootReduce", - "Roots", - "RootSum", - "RootTree", - "Rotate", - "RotateLabel", - "RotateLeft", - "RotateRight", - "RotationAction", - "RotationBox", - "RotationBoxOptions", - "RotationMatrix", - "RotationTransform", - "Round", - "RoundImplies", - "RoundingRadius", - "Row", - "RowAlignments", - "RowBackgrounds", - "RowBox", - "RowHeights", - "RowLines", - "RowMinHeight", - "RowReduce", - "RowsEqual", - "RowSpacings", - "RSolve", - "RSolveValue", - "RudinShapiro", - "RudvalisGroupRu", - "Rule", - "RuleCondition", - "RuleDelayed", - "RuleForm", - "RulePlot", - "RulerUnits", - "RulesTree", - "Run", - "RunProcess", - "RunScheduledTask", - "RunThrough", - "RuntimeAttributes", - "RuntimeOptions", - "RussellRaoDissimilarity", - "SameAs", - "SameQ", - "SameTest", - "SameTestProperties", - "SampledEntityClass", - "SampleDepth", - "SampledSoundFunction", - "SampledSoundList", - "SampleRate", - "SamplingPeriod", - "SARIMAProcess", - "SARMAProcess", - "SASTriangle", - "SatelliteData", - "SatisfiabilityCount", - "SatisfiabilityInstances", - "SatisfiableQ", - "Saturday", - "Save", - "Saveable", - "SaveAutoDelete", - "SaveConnection", - "SaveDefinitions", - "SavitzkyGolayMatrix", - "SawtoothWave", - "Scale", - "Scaled", - "ScaleDivisions", - "ScaledMousePosition", - "ScaleOrigin", - "ScalePadding", - "ScaleRanges", - "ScaleRangeStyle", - "ScalingFunctions", - "ScalingMatrix", - "ScalingTransform", - "Scan", - "ScheduledTask", - "ScheduledTaskActiveQ", - "ScheduledTaskInformation", - "ScheduledTaskInformationData", - "ScheduledTaskObject", - "ScheduledTasks", - "SchurDecomposition", - "ScientificForm", - "ScientificNotationThreshold", - "ScorerGi", - "ScorerGiPrime", - "ScorerHi", - "ScorerHiPrime", - "ScreenRectangle", - "ScreenStyleEnvironment", - "ScriptBaselineShifts", - "ScriptForm", - "ScriptLevel", - "ScriptMinSize", - "ScriptRules", - "ScriptSizeMultipliers", - "Scrollbars", - "ScrollingOptions", - "ScrollPosition", - "SearchAdjustment", - "SearchIndexObject", - "SearchIndices", - "SearchQueryString", - "SearchResultObject", - "Sec", - "Sech", - "SechDistribution", - "SecondOrderConeOptimization", - "SectionGrouping", - "SectorChart", - "SectorChart3D", - "SectorOrigin", - "SectorSpacing", - "SecuredAuthenticationKey", - "SecuredAuthenticationKeys", - "SecurityCertificate", - "SeedRandom", - "Select", - "Selectable", - "SelectComponents", - "SelectedCells", - "SelectedNotebook", - "SelectFirst", - "Selection", - "SelectionAnimate", - "SelectionCell", - "SelectionCellCreateCell", - "SelectionCellDefaultStyle", - "SelectionCellParentStyle", - "SelectionCreateCell", - "SelectionDebuggerTag", - "SelectionEvaluate", - "SelectionEvaluateCreateCell", - "SelectionMove", - "SelectionPlaceholder", - "SelectWithContents", - "SelfLoops", - "SelfLoopStyle", - "SemanticImport", - "SemanticImportString", - "SemanticInterpretation", - "SemialgebraicComponentInstances", - "SemidefiniteOptimization", - "SendMail", - "SendMessage", - "Sequence", - "SequenceAlignment", - "SequenceAttentionLayer", - "SequenceCases", - "SequenceCount", - "SequenceFold", - "SequenceFoldList", - "SequenceForm", - "SequenceHold", - "SequenceIndicesLayer", - "SequenceLastLayer", - "SequenceMostLayer", - "SequencePosition", - "SequencePredict", - "SequencePredictorFunction", - "SequenceReplace", - "SequenceRestLayer", - "SequenceReverseLayer", - "SequenceSplit", - "Series", - "SeriesCoefficient", - "SeriesData", - "SeriesTermGoal", - "ServiceConnect", - "ServiceDisconnect", - "ServiceExecute", - "ServiceObject", - "ServiceRequest", - "ServiceResponse", - "ServiceSubmit", - "SessionSubmit", - "SessionTime", - "Set", - "SetAccuracy", - "SetAlphaChannel", - "SetAttributes", - "Setbacks", - "SetCloudDirectory", - "SetCookies", - "SetDelayed", - "SetDirectory", - "SetEnvironment", - "SetFileDate", - "SetFileFormatProperties", - "SetOptions", - "SetOptionsPacket", - "SetPermissions", - "SetPrecision", - "SetProperty", - "SetSecuredAuthenticationKey", - "SetSelectedNotebook", - "SetSharedFunction", - "SetSharedVariable", - "SetStreamPosition", - "SetSystemModel", - "SetSystemOptions", - "Setter", - "SetterBar", - "SetterBox", - "SetterBoxOptions", - "Setting", - "SetUsers", - "Shading", - "Shallow", - "ShannonWavelet", - "ShapiroWilkTest", - "Share", - "SharingList", - "Sharpen", - "ShearingMatrix", - "ShearingTransform", - "ShellRegion", - "ShenCastanMatrix", - "ShiftedGompertzDistribution", - "ShiftRegisterSequence", - "Short", - "ShortDownArrow", - "Shortest", - "ShortestMatch", - "ShortestPathFunction", - "ShortLeftArrow", - "ShortRightArrow", - "ShortTimeFourier", - "ShortTimeFourierData", - "ShortUpArrow", - "Show", - "ShowAutoConvert", - "ShowAutoSpellCheck", - "ShowAutoStyles", - "ShowCellBracket", - "ShowCellLabel", - "ShowCellTags", - "ShowClosedCellArea", - "ShowCodeAssist", - "ShowContents", - "ShowControls", - "ShowCursorTracker", - "ShowGroupOpenCloseIcon", - "ShowGroupOpener", - "ShowInvisibleCharacters", - "ShowPageBreaks", - "ShowPredictiveInterface", - "ShowSelection", - "ShowShortBoxForm", - "ShowSpecialCharacters", - "ShowStringCharacters", - "ShowSyntaxStyles", - "ShrinkingDelay", - "ShrinkWrapBoundingBox", - "SiderealTime", - "SiegelTheta", - "SiegelTukeyTest", - "SierpinskiCurve", - "SierpinskiMesh", - "Sign", - "Signature", - "SignedRankTest", - "SignedRegionDistance", - "SignificanceLevel", - "SignPadding", - "SignTest", - "SimilarityRules", - "SimpleGraph", - "SimpleGraphQ", - "SimplePolygonQ", - "SimplePolyhedronQ", - "Simplex", - "Simplify", - "Sin", - "Sinc", - "SinghMaddalaDistribution", - "SingleEvaluation", - "SingleLetterItalics", - "SingleLetterStyle", - "SingularValueDecomposition", - "SingularValueList", - "SingularValuePlot", - "SingularValues", - "Sinh", - "SinhIntegral", - "SinIntegral", - "SixJSymbol", - "Skeleton", - "SkeletonTransform", - "SkellamDistribution", - "Skewness", - "SkewNormalDistribution", - "SkinStyle", - "Skip", - "SliceContourPlot3D", - "SliceDensityPlot3D", - "SliceDistribution", - "SliceVectorPlot3D", - "Slider", - "Slider2D", - "Slider2DBox", - "Slider2DBoxOptions", - "SliderBox", - "SliderBoxOptions", - "SlideShowVideo", - "SlideView", - "Slot", - "SlotSequence", - "Small", - "SmallCircle", - "Smaller", - "SmithDecomposition", - "SmithDelayCompensator", - "SmithWatermanSimilarity", - "SmoothDensityHistogram", - "SmoothHistogram", - "SmoothHistogram3D", - "SmoothKernelDistribution", - "SmoothPointDensity", - "SnDispersion", - "Snippet", - "SnippetsVideo", - "SnubPolyhedron", - "SocialMediaData", - "Socket", - "SocketConnect", - "SocketListen", - "SocketListener", - "SocketObject", - "SocketOpen", - "SocketReadMessage", - "SocketReadyQ", - "Sockets", - "SocketWaitAll", - "SocketWaitNext", - "SoftmaxLayer", - "SokalSneathDissimilarity", - "SolarEclipse", - "SolarSystemFeatureData", - "SolarTime", - "SolidAngle", - "SolidBoundaryLoadValue", - "SolidData", - "SolidDisplacementCondition", - "SolidFixedCondition", - "SolidMechanicsPDEComponent", - "SolidMechanicsStrain", - "SolidMechanicsStress", - "SolidRegionQ", - "Solve", - "SolveAlways", - "SolveDelayed", - "SolveValues", - "Sort", - "SortBy", - "SortedBy", - "SortedEntityClass", - "Sound", - "SoundAndGraphics", - "SoundNote", - "SoundVolume", - "SourceLink", - "SourcePDETerm", - "Sow", - "Space", - "SpaceCurveData", - "SpaceForm", - "Spacer", - "Spacings", - "Span", - "SpanAdjustments", - "SpanCharacterRounding", - "SpanFromAbove", - "SpanFromBoth", - "SpanFromLeft", - "SpanLineThickness", - "SpanMaxSize", - "SpanMinSize", - "SpanningCharacters", - "SpanSymmetric", - "SparseArray", - "SparseArrayQ", - "SpatialBinnedPointData", - "SpatialBoundaryCorrection", - "SpatialEstimate", - "SpatialEstimatorFunction", - "SpatialGraphDistribution", - "SpatialJ", - "SpatialMedian", - "SpatialNoiseLevel", - "SpatialObservationRegionQ", - "SpatialPointData", - "SpatialPointSelect", - "SpatialRandomnessTest", - "SpatialTransformationLayer", - "SpatialTrendFunction", - "Speak", - "SpeakerMatchQ", - "SpearmanRankTest", - "SpearmanRho", - "SpeciesData", - "SpecificityGoal", - "SpectralLineData", - "Spectrogram", - "SpectrogramArray", - "Specularity", - "SpeechCases", - "SpeechInterpreter", - "SpeechRecognize", - "SpeechSynthesize", - "SpellingCorrection", - "SpellingCorrectionList", - "SpellingDictionaries", - "SpellingDictionariesPath", - "SpellingOptions", - "Sphere", - "SphereBox", - "SphereBoxOptions", - "SpherePoints", - "SphericalBesselJ", - "SphericalBesselY", - "SphericalHankelH1", - "SphericalHankelH2", - "SphericalHarmonicY", - "SphericalPlot3D", - "SphericalRegion", - "SphericalShell", - "SpheroidalEigenvalue", - "SpheroidalJoiningFactor", - "SpheroidalPS", - "SpheroidalPSPrime", - "SpheroidalQS", - "SpheroidalQSPrime", - "SpheroidalRadialFactor", - "SpheroidalS1", - "SpheroidalS1Prime", - "SpheroidalS2", - "SpheroidalS2Prime", - "Splice", - "SplicedDistribution", - "SplineClosed", - "SplineDegree", - "SplineKnots", - "SplineWeights", - "Split", - "SplitBy", - "SpokenString", - "SpotLight", - "Sqrt", - "SqrtBox", - "SqrtBoxOptions", - "Square", - "SquaredEuclideanDistance", - "SquareFreeQ", - "SquareIntersection", - "SquareMatrixQ", - "SquareRepeatingElement", - "SquaresR", - "SquareSubset", - "SquareSubsetEqual", - "SquareSuperset", - "SquareSupersetEqual", - "SquareUnion", - "SquareWave", - "SSSTriangle", - "StabilityMargins", - "StabilityMarginsStyle", - "StableDistribution", - "Stack", - "StackBegin", - "StackComplete", - "StackedDateListPlot", - "StackedListPlot", - "StackInhibit", - "StadiumShape", - "StandardAtmosphereData", - "StandardDeviation", - "StandardDeviationFilter", - "StandardForm", - "Standardize", - "Standardized", - "StandardOceanData", - "StandbyDistribution", - "Star", - "StarClusterData", - "StarData", - "StarGraph", - "StartAsynchronousTask", - "StartExternalSession", - "StartingStepSize", - "StartOfLine", - "StartOfString", - "StartProcess", - "StartScheduledTask", - "StartupSound", - "StartWebSession", - "StateDimensions", - "StateFeedbackGains", - "StateOutputEstimator", - "StateResponse", - "StateSpaceModel", - "StateSpaceRealization", - "StateSpaceTransform", - "StateTransformationLinearize", - "StationaryDistribution", - "StationaryWaveletPacketTransform", - "StationaryWaveletTransform", - "StatusArea", - "StatusCentrality", - "StepMonitor", - "StereochemistryElements", - "StieltjesGamma", - "StippleShading", - "StirlingS1", - "StirlingS2", - "StopAsynchronousTask", - "StoppingPowerData", - "StopScheduledTask", - "StrataVariables", - "StratonovichProcess", - "StraussHardcorePointProcess", - "StraussPointProcess", - "StreamColorFunction", - "StreamColorFunctionScaling", - "StreamDensityPlot", - "StreamMarkers", - "StreamPlot", - "StreamPlot3D", - "StreamPoints", - "StreamPosition", - "Streams", - "StreamScale", - "StreamStyle", - "StrictInequalities", - "String", - "StringBreak", - "StringByteCount", - "StringCases", - "StringContainsQ", - "StringCount", - "StringDelete", - "StringDrop", - "StringEndsQ", - "StringExpression", - "StringExtract", - "StringForm", - "StringFormat", - "StringFormatQ", - "StringFreeQ", - "StringInsert", - "StringJoin", - "StringLength", - "StringMatchQ", - "StringPadLeft", - "StringPadRight", - "StringPart", - "StringPartition", - "StringPosition", - "StringQ", - "StringRepeat", - "StringReplace", - "StringReplaceList", - "StringReplacePart", - "StringReverse", - "StringRiffle", - "StringRotateLeft", - "StringRotateRight", - "StringSkeleton", - "StringSplit", - "StringStartsQ", - "StringTake", - "StringTakeDrop", - "StringTemplate", - "StringToByteArray", - "StringToStream", - "StringTrim", - "StripBoxes", - "StripOnInput", - "StripStyleOnPaste", - "StripWrapperBoxes", - "StrokeForm", - "Struckthrough", - "StructuralImportance", - "StructuredArray", - "StructuredArrayHeadQ", - "StructuredSelection", - "StruveH", - "StruveL", - "Stub", - "StudentTDistribution", - "Style", - "StyleBox", - "StyleBoxAutoDelete", - "StyleData", - "StyleDefinitions", - "StyleForm", - "StyleHints", - "StyleKeyMapping", - "StyleMenuListing", - "StyleNameDialogSettings", - "StyleNames", - "StylePrint", - "StyleSheetPath", - "Subdivide", - "Subfactorial", - "Subgraph", - "SubMinus", - "SubPlus", - "SubresultantPolynomialRemainders", - "SubresultantPolynomials", - "Subresultants", - "Subscript", - "SubscriptBox", - "SubscriptBoxOptions", - "Subscripted", - "Subsequences", - "Subset", - "SubsetCases", - "SubsetCount", - "SubsetEqual", - "SubsetMap", - "SubsetPosition", - "SubsetQ", - "SubsetReplace", - "Subsets", - "SubStar", - "SubstitutionSystem", - "Subsuperscript", - "SubsuperscriptBox", - "SubsuperscriptBoxOptions", - "SubtitleEncoding", - "SubtitleTrackSelection", - "Subtract", - "SubtractFrom", - "SubtractSides", - "SubValues", - "Succeeds", - "SucceedsEqual", - "SucceedsSlantEqual", - "SucceedsTilde", - "Success", - "SuchThat", - "Sum", - "SumConvergence", - "SummationLayer", - "Sunday", - "SunPosition", - "Sunrise", - "Sunset", - "SuperDagger", - "SuperMinus", - "SupernovaData", - "SuperPlus", - "Superscript", - "SuperscriptBox", - "SuperscriptBoxOptions", - "Superset", - "SupersetEqual", - "SuperStar", - "Surd", - "SurdForm", - "SurfaceAppearance", - "SurfaceArea", - "SurfaceColor", - "SurfaceData", - "SurfaceGraphics", - "SurvivalDistribution", - "SurvivalFunction", - "SurvivalModel", - "SurvivalModelFit", - "SuspendPacket", - "SuzukiDistribution", - "SuzukiGroupSuz", - "SwatchLegend", - "Switch", - "Symbol", - "SymbolName", - "SymletWavelet", - "Symmetric", - "SymmetricDifference", - "SymmetricGroup", - "SymmetricKey", - "SymmetricMatrixQ", - "SymmetricPolynomial", - "SymmetricReduction", - "Symmetrize", - "SymmetrizedArray", - "SymmetrizedArrayRules", - "SymmetrizedDependentComponents", - "SymmetrizedIndependentComponents", - "SymmetrizedReplacePart", - "SynchronousInitialization", - "SynchronousUpdating", - "Synonyms", - "Syntax", - "SyntaxForm", - "SyntaxInformation", - "SyntaxLength", - "SyntaxPacket", - "SyntaxQ", - "SynthesizeMissingValues", - "SystemCredential", - "SystemCredentialData", - "SystemCredentialKey", - "SystemCredentialKeys", - "SystemCredentialStoreObject", - "SystemDialogInput", - "SystemException", - "SystemGet", - "SystemHelpPath", - "SystemInformation", - "SystemInformationData", - "SystemInstall", - "SystemModel", - "SystemModeler", - "SystemModelExamples", - "SystemModelLinearize", - "SystemModelMeasurements", - "SystemModelParametricSimulate", - "SystemModelPlot", - "SystemModelProgressReporting", - "SystemModelReliability", - "SystemModels", - "SystemModelSimulate", - "SystemModelSimulateSensitivity", - "SystemModelSimulationData", - "SystemOpen", - "SystemOptions", - "SystemProcessData", - "SystemProcesses", - "SystemsConnectionsModel", - "SystemsModelControllerData", - "SystemsModelDelay", - "SystemsModelDelayApproximate", - "SystemsModelDelete", - "SystemsModelDimensions", - "SystemsModelExtract", - "SystemsModelFeedbackConnect", - "SystemsModelLabels", - "SystemsModelLinearity", - "SystemsModelMerge", - "SystemsModelOrder", - "SystemsModelParallelConnect", - "SystemsModelSeriesConnect", - "SystemsModelStateFeedbackConnect", - "SystemsModelVectorRelativeOrders", - "SystemStub", - "SystemTest", - "Tab", - "TabFilling", - "Table", - "TableAlignments", - "TableDepth", - "TableDirections", - "TableForm", - "TableHeadings", - "TableSpacing", - "TableView", - "TableViewBox", - "TableViewBoxAlignment", - "TableViewBoxBackground", - "TableViewBoxHeaders", - "TableViewBoxItemSize", - "TableViewBoxItemStyle", - "TableViewBoxOptions", - "TabSpacings", - "TabView", - "TabViewBox", - "TabViewBoxOptions", - "TagBox", - "TagBoxNote", - "TagBoxOptions", - "TaggingRules", - "TagSet", - "TagSetDelayed", - "TagStyle", - "TagUnset", - "Take", - "TakeDrop", - "TakeLargest", - "TakeLargestBy", - "TakeList", - "TakeSmallest", - "TakeSmallestBy", - "TakeWhile", - "Tally", - "Tan", - "Tanh", - "TargetDevice", - "TargetFunctions", - "TargetSystem", - "TargetUnits", - "TaskAbort", - "TaskExecute", - "TaskObject", - "TaskRemove", - "TaskResume", - "Tasks", - "TaskSuspend", - "TaskWait", - "TautologyQ", - "TelegraphProcess", - "TemplateApply", - "TemplateArgBox", - "TemplateBox", - "TemplateBoxOptions", - "TemplateEvaluate", - "TemplateExpression", - "TemplateIf", - "TemplateObject", - "TemplateSequence", - "TemplateSlot", - "TemplateSlotSequence", - "TemplateUnevaluated", - "TemplateVerbatim", - "TemplateWith", - "TemporalData", - "TemporalRegularity", - "Temporary", - "TemporaryVariable", - "TensorContract", - "TensorDimensions", - "TensorExpand", - "TensorProduct", - "TensorQ", - "TensorRank", - "TensorReduce", - "TensorSymmetry", - "TensorTranspose", - "TensorWedge", - "TerminatedEvaluation", - "TernaryListPlot", - "TernaryPlotCorners", - "TestID", - "TestReport", - "TestReportObject", - "TestResultObject", - "Tetrahedron", - "TetrahedronBox", - "TetrahedronBoxOptions", - "TeXForm", - "TeXSave", - "Text", - "Text3DBox", - "Text3DBoxOptions", - "TextAlignment", - "TextBand", - "TextBoundingBox", - "TextBox", - "TextCases", - "TextCell", - "TextClipboardType", - "TextContents", - "TextData", - "TextElement", - "TextForm", - "TextGrid", - "TextJustification", - "TextLine", - "TextPacket", - "TextParagraph", - "TextPosition", - "TextRecognize", - "TextSearch", - "TextSearchReport", - "TextSentences", - "TextString", - "TextStructure", - "TextStyle", - "TextTranslation", - "Texture", - "TextureCoordinateFunction", - "TextureCoordinateScaling", - "TextWords", - "Therefore", - "ThermodynamicData", - "ThermometerGauge", - "Thick", - "Thickness", - "Thin", - "Thinning", - "ThisLink", - "ThomasPointProcess", - "ThompsonGroupTh", - "Thread", - "Threaded", - "ThreadingLayer", - "ThreeJSymbol", - "Threshold", - "Through", - "Throw", - "ThueMorse", - "Thumbnail", - "Thursday", - "TickDirection", - "TickLabelOrientation", - "TickLabelPositioning", - "TickLabels", - "TickLengths", - "TickPositions", - "Ticks", - "TicksStyle", - "TideData", - "Tilde", - "TildeEqual", - "TildeFullEqual", - "TildeTilde", - "TimeConstrained", - "TimeConstraint", - "TimeDirection", - "TimeFormat", - "TimeGoal", - "TimelinePlot", - "TimeObject", - "TimeObjectQ", - "TimeRemaining", - "Times", - "TimesBy", - "TimeSeries", - "TimeSeriesAggregate", - "TimeSeriesForecast", - "TimeSeriesInsert", - "TimeSeriesInvertibility", - "TimeSeriesMap", - "TimeSeriesMapThread", - "TimeSeriesModel", - "TimeSeriesModelFit", - "TimeSeriesResample", - "TimeSeriesRescale", - "TimeSeriesShift", - "TimeSeriesThread", - "TimeSeriesWindow", - "TimeSystem", - "TimeSystemConvert", - "TimeUsed", - "TimeValue", - "TimeWarpingCorrespondence", - "TimeWarpingDistance", - "TimeZone", - "TimeZoneConvert", - "TimeZoneOffset", - "Timing", - "Tiny", - "TitleGrouping", - "TitsGroupT", - "ToBoxes", - "ToCharacterCode", - "ToColor", - "ToContinuousTimeModel", - "ToDate", - "Today", - "ToDiscreteTimeModel", - "ToEntity", - "ToeplitzMatrix", - "ToExpression", - "ToFileName", - "Together", - "Toggle", - "ToggleFalse", - "Toggler", - "TogglerBar", - "TogglerBox", - "TogglerBoxOptions", - "ToHeldExpression", - "ToInvertibleTimeSeries", - "TokenWords", - "Tolerance", - "ToLowerCase", - "Tomorrow", - "ToNumberField", - "TooBig", - "Tooltip", - "TooltipBox", - "TooltipBoxOptions", - "TooltipDelay", - "TooltipStyle", - "ToonShading", - "Top", - "TopHatTransform", - "ToPolarCoordinates", - "TopologicalSort", - "ToRadicals", - "ToRawPointer", - "ToRules", - "Torus", - "TorusGraph", - "ToSphericalCoordinates", - "ToString", - "Total", - "TotalHeight", - "TotalLayer", - "TotalVariationFilter", - "TotalWidth", - "TouchPosition", - "TouchscreenAutoZoom", - "TouchscreenControlPlacement", - "ToUpperCase", - "TourVideo", - "Tr", - "Trace", - "TraceAbove", - "TraceAction", - "TraceBackward", - "TraceDepth", - "TraceDialog", - "TraceForward", - "TraceInternal", - "TraceLevel", - "TraceOff", - "TraceOn", - "TraceOriginal", - "TracePrint", - "TraceScan", - "TrackCellChangeTimes", - "TrackedSymbols", - "TrackingFunction", - "TracyWidomDistribution", - "TradingChart", - "TraditionalForm", - "TraditionalFunctionNotation", - "TraditionalNotation", - "TraditionalOrder", - "TrainImageContentDetector", - "TrainingProgressCheckpointing", - "TrainingProgressFunction", - "TrainingProgressMeasurements", - "TrainingProgressReporting", - "TrainingStoppingCriterion", - "TrainingUpdateSchedule", - "TrainTextContentDetector", - "TransferFunctionCancel", - "TransferFunctionExpand", - "TransferFunctionFactor", - "TransferFunctionModel", - "TransferFunctionPoles", - "TransferFunctionTransform", - "TransferFunctionZeros", - "TransformationClass", - "TransformationFunction", - "TransformationFunctions", - "TransformationMatrix", - "TransformedDistribution", - "TransformedField", - "TransformedProcess", - "TransformedRegion", - "TransitionDirection", - "TransitionDuration", - "TransitionEffect", - "TransitiveClosureGraph", - "TransitiveReductionGraph", - "Translate", - "TranslationOptions", - "TranslationTransform", - "Transliterate", - "Transparent", - "TransparentColor", - "Transpose", - "TransposeLayer", - "TrapEnterKey", - "TrapSelection", - "TravelDirections", - "TravelDirectionsData", - "TravelDistance", - "TravelDistanceList", - "TravelMethod", - "TravelTime", - "Tree", - "TreeCases", - "TreeChildren", - "TreeCount", - "TreeData", - "TreeDelete", - "TreeDepth", - "TreeElementCoordinates", - "TreeElementLabel", - "TreeElementLabelFunction", - "TreeElementLabelStyle", - "TreeElementShape", - "TreeElementShapeFunction", - "TreeElementSize", - "TreeElementSizeFunction", - "TreeElementStyle", - "TreeElementStyleFunction", - "TreeExpression", - "TreeExtract", - "TreeFold", - "TreeForm", - "TreeGraph", - "TreeGraphQ", - "TreeInsert", - "TreeLayout", - "TreeLeafCount", - "TreeLeafQ", - "TreeLeaves", - "TreeLevel", - "TreeMap", - "TreeMapAt", - "TreeOutline", - "TreePlot", - "TreePosition", - "TreeQ", - "TreeReplacePart", - "TreeRules", - "TreeScan", - "TreeSelect", - "TreeSize", - "TreeTraversalOrder", - "TrendStyle", - "Triangle", - "TriangleCenter", - "TriangleConstruct", - "TriangleMeasurement", - "TriangleWave", - "TriangularDistribution", - "TriangulateMesh", - "Trig", - "TrigExpand", - "TrigFactor", - "TrigFactorList", - "Trigger", - "TrigReduce", - "TrigToExp", - "TrimmedMean", - "TrimmedVariance", - "TropicalStormData", - "True", - "TrueQ", - "TruncatedDistribution", - "TruncatedPolyhedron", - "TsallisQExponentialDistribution", - "TsallisQGaussianDistribution", - "TTest", - "Tube", - "TubeBezierCurveBox", - "TubeBezierCurveBoxOptions", - "TubeBox", - "TubeBoxOptions", - "TubeBSplineCurveBox", - "TubeBSplineCurveBoxOptions", - "Tuesday", - "TukeyLambdaDistribution", - "TukeyWindow", - "TunnelData", - "Tuples", - "TuranGraph", - "TuringMachine", - "TuttePolynomial", - "TwoWayRule", - "Typed", - "TypeDeclaration", - "TypeEvaluate", - "TypeHint", - "TypeOf", - "TypeSpecifier", - "UnateQ", - "Uncompress", - "UnconstrainedParameters", - "Undefined", - "UnderBar", - "Underflow", - "Underlined", - "Underoverscript", - "UnderoverscriptBox", - "UnderoverscriptBoxOptions", - "Underscript", - "UnderscriptBox", - "UnderscriptBoxOptions", - "UnderseaFeatureData", - "UndirectedEdge", - "UndirectedGraph", - "UndirectedGraphQ", - "UndoOptions", - "UndoTrackedVariables", - "Unequal", - "UnequalTo", - "Unevaluated", - "UniformDistribution", - "UniformGraphDistribution", - "UniformPolyhedron", - "UniformSumDistribution", - "Uninstall", - "Union", - "UnionedEntityClass", - "UnionPlus", - "Unique", - "UniqueElements", - "UnitaryMatrixQ", - "UnitBox", - "UnitConvert", - "UnitDimensions", - "Unitize", - "UnitRootTest", - "UnitSimplify", - "UnitStep", - "UnitSystem", - "UnitTriangle", - "UnitVector", - "UnitVectorLayer", - "UnityDimensions", - "UniverseModelData", - "UniversityData", - "UnixTime", - "UnlabeledTree", - "UnmanageObject", - "Unprotect", - "UnregisterExternalEvaluator", - "UnsameQ", - "UnsavedVariables", - "Unset", - "UnsetShared", - "Until", - "UntrackedVariables", - "Up", - "UpArrow", - "UpArrowBar", - "UpArrowDownArrow", - "Update", - "UpdateDynamicObjects", - "UpdateDynamicObjectsSynchronous", - "UpdateInterval", - "UpdatePacletSites", - "UpdateSearchIndex", - "UpDownArrow", - "UpEquilibrium", - "UpperCaseQ", - "UpperLeftArrow", - "UpperRightArrow", - "UpperTriangularize", - "UpperTriangularMatrix", - "UpperTriangularMatrixQ", - "Upsample", - "UpSet", - "UpSetDelayed", - "UpTee", - "UpTeeArrow", - "UpTo", - "UpValues", - "URL", - "URLBuild", - "URLDecode", - "URLDispatcher", - "URLDownload", - "URLDownloadSubmit", - "URLEncode", - "URLExecute", - "URLExpand", - "URLFetch", - "URLFetchAsynchronous", - "URLParse", - "URLQueryDecode", - "URLQueryEncode", - "URLRead", - "URLResponseTime", - "URLSave", - "URLSaveAsynchronous", - "URLShorten", - "URLSubmit", - "UseEmbeddedLibrary", - "UseGraphicsRange", - "UserDefinedWavelet", - "Using", - "UsingFrontEnd", - "UtilityFunction", - "V2Get", - "ValenceErrorHandling", - "ValenceFilling", - "ValidationLength", - "ValidationSet", - "ValueBox", - "ValueBoxOptions", - "ValueDimensions", - "ValueForm", - "ValuePreprocessingFunction", - "ValueQ", - "Values", - "ValuesData", - "VandermondeMatrix", - "Variables", - "Variance", - "VarianceEquivalenceTest", - "VarianceEstimatorFunction", - "VarianceGammaDistribution", - "VarianceGammaPointProcess", - "VarianceTest", - "VariogramFunction", - "VariogramModel", - "VectorAngle", - "VectorAround", - "VectorAspectRatio", - "VectorColorFunction", - "VectorColorFunctionScaling", - "VectorDensityPlot", - "VectorDisplacementPlot", - "VectorDisplacementPlot3D", - "VectorGlyphData", - "VectorGreater", - "VectorGreaterEqual", - "VectorLess", - "VectorLessEqual", - "VectorMarkers", - "VectorPlot", - "VectorPlot3D", - "VectorPoints", - "VectorQ", - "VectorRange", - "Vectors", - "VectorScale", - "VectorScaling", - "VectorSizes", - "VectorStyle", - "Vee", - "Verbatim", - "Verbose", - "VerificationTest", - "VerifyConvergence", - "VerifyDerivedKey", - "VerifyDigitalSignature", - "VerifyFileSignature", - "VerifyInterpretation", - "VerifySecurityCertificates", - "VerifySolutions", - "VerifyTestAssumptions", - "VersionedPreferences", - "VertexAdd", - "VertexCapacity", - "VertexChromaticNumber", - "VertexColors", - "VertexComponent", - "VertexConnectivity", - "VertexContract", - "VertexCoordinateRules", - "VertexCoordinates", - "VertexCorrelationSimilarity", - "VertexCosineSimilarity", - "VertexCount", - "VertexCoverQ", - "VertexDataCoordinates", - "VertexDegree", - "VertexDelete", - "VertexDiceSimilarity", - "VertexEccentricity", - "VertexInComponent", - "VertexInComponentGraph", - "VertexInDegree", - "VertexIndex", - "VertexJaccardSimilarity", - "VertexLabeling", - "VertexLabels", - "VertexLabelStyle", - "VertexList", - "VertexNormals", - "VertexOutComponent", - "VertexOutComponentGraph", - "VertexOutDegree", - "VertexQ", - "VertexRenderingFunction", - "VertexReplace", - "VertexShape", - "VertexShapeFunction", - "VertexSize", - "VertexStyle", - "VertexTextureCoordinates", - "VertexTransitiveGraphQ", - "VertexWeight", - "VertexWeightedGraphQ", - "Vertical", - "VerticalBar", - "VerticalForm", - "VerticalGauge", - "VerticalSeparator", - "VerticalSlider", - "VerticalTilde", - "Video", - "VideoCapture", - "VideoCombine", - "VideoDelete", - "VideoEncoding", - "VideoExtractFrames", - "VideoFrameList", - "VideoFrameMap", - "VideoGenerator", - "VideoInsert", - "VideoIntervals", - "VideoJoin", - "VideoMap", - "VideoMapList", - "VideoMapTimeSeries", - "VideoPadding", - "VideoPause", - "VideoPlay", - "VideoQ", - "VideoRecord", - "VideoReplace", - "VideoScreenCapture", - "VideoSplit", - "VideoStop", - "VideoStream", - "VideoStreams", - "VideoTimeStretch", - "VideoTrackSelection", - "VideoTranscode", - "VideoTransparency", - "VideoTrim", - "ViewAngle", - "ViewCenter", - "ViewMatrix", - "ViewPoint", - "ViewPointSelectorSettings", - "ViewPort", - "ViewProjection", - "ViewRange", - "ViewVector", - "ViewVertical", - "VirtualGroupData", - "Visible", - "VisibleCell", - "VoiceStyleData", - "VoigtDistribution", - "VolcanoData", - "Volume", - "VonMisesDistribution", - "VoronoiMesh", - "WaitAll", - "WaitAsynchronousTask", - "WaitNext", - "WaitUntil", - "WakebyDistribution", - "WalleniusHypergeometricDistribution", - "WaringYuleDistribution", - "WarpingCorrespondence", - "WarpingDistance", - "WatershedComponents", - "WatsonUSquareTest", - "WattsStrogatzGraphDistribution", - "WaveletBestBasis", - "WaveletFilterCoefficients", - "WaveletImagePlot", - "WaveletListPlot", - "WaveletMapIndexed", - "WaveletMatrixPlot", - "WaveletPhi", - "WaveletPsi", - "WaveletScale", - "WaveletScalogram", - "WaveletThreshold", - "WavePDEComponent", - "WeaklyConnectedComponents", - "WeaklyConnectedGraphComponents", - "WeaklyConnectedGraphQ", - "WeakStationarity", - "WeatherData", - "WeatherForecastData", - "WebAudioSearch", - "WebColumn", - "WebElementObject", - "WeberE", - "WebExecute", - "WebImage", - "WebImageSearch", - "WebItem", - "WebPageMetaInformation", - "WebRow", - "WebSearch", - "WebSessionObject", - "WebSessions", - "WebWindowObject", - "Wedge", - "Wednesday", - "WeibullDistribution", - "WeierstrassE1", - "WeierstrassE2", - "WeierstrassE3", - "WeierstrassEta1", - "WeierstrassEta2", - "WeierstrassEta3", - "WeierstrassHalfPeriods", - "WeierstrassHalfPeriodW1", - "WeierstrassHalfPeriodW2", - "WeierstrassHalfPeriodW3", - "WeierstrassInvariantG2", - "WeierstrassInvariantG3", - "WeierstrassInvariants", - "WeierstrassP", - "WeierstrassPPrime", - "WeierstrassSigma", - "WeierstrassZeta", - "WeightedAdjacencyGraph", - "WeightedAdjacencyMatrix", - "WeightedData", - "WeightedGraphQ", - "Weights", - "WelchWindow", - "WheelGraph", - "WhenEvent", - "Which", - "While", - "White", - "WhiteNoiseProcess", - "WhitePoint", - "Whitespace", - "WhitespaceCharacter", - "WhittakerM", - "WhittakerW", - "WholeCellGroupOpener", - "WienerFilter", - "WienerProcess", - "WignerD", - "WignerSemicircleDistribution", - "WikidataData", - "WikidataSearch", - "WikipediaData", - "WikipediaSearch", - "WilksW", - "WilksWTest", - "WindDirectionData", - "WindingCount", - "WindingPolygon", - "WindowClickSelect", - "WindowElements", - "WindowFloating", - "WindowFrame", - "WindowFrameElements", - "WindowMargins", - "WindowMovable", - "WindowOpacity", - "WindowPersistentStyles", - "WindowSelected", - "WindowSize", - "WindowStatusArea", - "WindowTitle", - "WindowToolbars", - "WindowWidth", - "WindSpeedData", - "WindVectorData", - "WinsorizedMean", - "WinsorizedVariance", - "WishartMatrixDistribution", - "With", - "WithCleanup", - "WithLock", - "WolframAlpha", - "WolframAlphaDate", - "WolframAlphaQuantity", - "WolframAlphaResult", - "WolframCloudSettings", - "WolframLanguageData", - "Word", - "WordBoundary", - "WordCharacter", - "WordCloud", - "WordCount", - "WordCounts", - "WordData", - "WordDefinition", - "WordFrequency", - "WordFrequencyData", - "WordList", - "WordOrientation", - "WordSearch", - "WordSelectionFunction", - "WordSeparators", - "WordSpacings", - "WordStem", - "WordTranslation", - "WorkingPrecision", - "WrapAround", - "Write", - "WriteLine", - "WriteString", - "Wronskian", - "XMLElement", - "XMLObject", - "XMLTemplate", - "Xnor", - "Xor", - "XYZColor", - "Yellow", - "Yesterday", - "YuleDissimilarity", - "ZernikeR", - "ZeroSymmetric", - "ZeroTest", - "ZeroWidthTimes", - "Zeta", - "ZetaZero", - "ZIPCodeData", - "ZipfDistribution", - "ZoomCenter", - "ZoomFactor", - "ZTest", - "ZTransform", - "$Aborted", - "$ActivationGroupID", - "$ActivationKey", - "$ActivationUserRegistered", - "$AddOnsDirectory", - "$AllowDataUpdates", - "$AllowExternalChannelFunctions", - "$AllowInternet", - "$AssertFunction", - "$Assumptions", - "$AsynchronousTask", - "$AudioDecoders", - "$AudioEncoders", - "$AudioInputDevices", - "$AudioOutputDevices", - "$BaseDirectory", - "$BasePacletsDirectory", - "$BatchInput", - "$BatchOutput", - "$BlockchainBase", - "$BoxForms", - "$ByteOrdering", - "$CacheBaseDirectory", - "$Canceled", - "$ChannelBase", - "$CharacterEncoding", - "$CharacterEncodings", - "$CloudAccountName", - "$CloudBase", - "$CloudConnected", - "$CloudConnection", - "$CloudCreditsAvailable", - "$CloudEvaluation", - "$CloudExpressionBase", - "$CloudObjectNameFormat", - "$CloudObjectURLType", - "$CloudRootDirectory", - "$CloudSymbolBase", - "$CloudUserID", - "$CloudUserUUID", - "$CloudVersion", - "$CloudVersionNumber", - "$CloudWolframEngineVersionNumber", - "$CommandLine", - "$CompilationTarget", - "$CompilerEnvironment", - "$ConditionHold", - "$ConfiguredKernels", - "$Context", - "$ContextAliases", - "$ContextPath", - "$ControlActiveSetting", - "$Cookies", - "$CookieStore", - "$CreationDate", - "$CryptographicEllipticCurveNames", - "$CurrentLink", - "$CurrentTask", - "$CurrentWebSession", - "$DataStructures", - "$DateStringFormat", - "$DefaultAudioInputDevice", - "$DefaultAudioOutputDevice", - "$DefaultFont", - "$DefaultFrontEnd", - "$DefaultImagingDevice", - "$DefaultKernels", - "$DefaultLocalBase", - "$DefaultLocalKernel", - "$DefaultMailbox", - "$DefaultNetworkInterface", - "$DefaultPath", - "$DefaultProxyRules", - "$DefaultRemoteBatchSubmissionEnvironment", - "$DefaultRemoteKernel", - "$DefaultSystemCredentialStore", - "$Display", - "$DisplayFunction", - "$DistributedContexts", - "$DynamicEvaluation", - "$Echo", - "$EmbedCodeEnvironments", - "$EmbeddableServices", - "$EntityStores", - "$Epilog", - "$EvaluationCloudBase", - "$EvaluationCloudObject", - "$EvaluationEnvironment", - "$ExportFormats", - "$ExternalIdentifierTypes", - "$ExternalStorageBase", - "$Failed", - "$FinancialDataSource", - "$FontFamilies", - "$FormatType", - "$FrontEnd", - "$FrontEndSession", - "$GeneratedAssetLocation", - "$GeoEntityTypes", - "$GeoLocation", - "$GeoLocationCity", - "$GeoLocationCountry", - "$GeoLocationPrecision", - "$GeoLocationSource", - "$HistoryLength", - "$HomeDirectory", - "$HTMLExportRules", - "$HTTPCookies", - "$HTTPRequest", - "$IgnoreEOF", - "$ImageFormattingWidth", - "$ImageResolution", - "$ImagingDevice", - "$ImagingDevices", - "$ImportFormats", - "$IncomingMailSettings", - "$InitialDirectory", - "$Initialization", - "$InitializationContexts", - "$Input", - "$InputFileName", - "$InputStreamMethods", - "$Inspector", - "$InstallationDate", - "$InstallationDirectory", - "$InterfaceEnvironment", - "$InterpreterTypes", - "$IterationLimit", - "$KernelCount", - "$KernelID", - "$Language", - "$LaunchDirectory", - "$LibraryPath", - "$LicenseExpirationDate", - "$LicenseID", - "$LicenseProcesses", - "$LicenseServer", - "$LicenseSubprocesses", - "$LicenseType", - "$Line", - "$Linked", - "$LinkSupported", - "$LoadedFiles", - "$LocalBase", - "$LocalSymbolBase", - "$MachineAddresses", - "$MachineDomain", - "$MachineDomains", - "$MachineEpsilon", - "$MachineID", - "$MachineName", - "$MachinePrecision", - "$MachineType", - "$MaxDisplayedChildren", - "$MaxExtraPrecision", - "$MaxLicenseProcesses", - "$MaxLicenseSubprocesses", - "$MaxMachineNumber", - "$MaxNumber", - "$MaxPiecewiseCases", - "$MaxPrecision", - "$MaxRootDegree", - "$MessageGroups", - "$MessageList", - "$MessagePrePrint", - "$Messages", - "$MinMachineNumber", - "$MinNumber", - "$MinorReleaseNumber", - "$MinPrecision", - "$MobilePhone", - "$ModuleNumber", - "$NetworkConnected", - "$NetworkInterfaces", - "$NetworkLicense", - "$NewMessage", - "$NewSymbol", - "$NotebookInlineStorageLimit", - "$Notebooks", - "$NoValue", - "$NumberMarks", - "$Off", - "$OperatingSystem", - "$Output", - "$OutputForms", - "$OutputSizeLimit", - "$OutputStreamMethods", - "$Packages", - "$ParentLink", - "$ParentProcessID", - "$PasswordFile", - "$PatchLevelID", - "$Path", - "$PathnameSeparator", - "$PerformanceGoal", - "$Permissions", - "$PermissionsGroupBase", - "$PersistenceBase", - "$PersistencePath", - "$PipeSupported", - "$PlotTheme", - "$Post", - "$Pre", - "$PreferencesDirectory", - "$PreInitialization", - "$PrePrint", - "$PreRead", - "$PrintForms", - "$PrintLiteral", - "$Printout3DPreviewer", - "$ProcessID", - "$ProcessorCount", - "$ProcessorType", - "$ProductInformation", - "$ProgramName", - "$ProgressReporting", - "$PublisherID", - "$RandomGeneratorState", - "$RandomState", - "$RecursionLimit", - "$RegisteredDeviceClasses", - "$RegisteredUserName", - "$ReleaseNumber", - "$RequesterAddress", - "$RequesterCloudUserID", - "$RequesterCloudUserUUID", - "$RequesterWolframID", - "$RequesterWolframUUID", - "$ResourceSystemBase", - "$ResourceSystemPath", - "$RootDirectory", - "$ScheduledTask", - "$ScriptCommandLine", - "$ScriptInputString", - "$SecuredAuthenticationKeyTokens", - "$ServiceCreditsAvailable", - "$Services", - "$SessionID", - "$SetParentLink", - "$SharedFunctions", - "$SharedVariables", - "$SoundDisplay", - "$SoundDisplayFunction", - "$SourceLink", - "$SSHAuthentication", - "$SubtitleDecoders", - "$SubtitleEncoders", - "$SummaryBoxDataSizeLimit", - "$SuppressInputFormHeads", - "$SynchronousEvaluation", - "$SyntaxHandler", - "$System", - "$SystemCharacterEncoding", - "$SystemCredentialStore", - "$SystemID", - "$SystemMemory", - "$SystemShell", - "$SystemTimeZone", - "$SystemWordLength", - "$TargetSystems", - "$TemplatePath", - "$TemporaryDirectory", - "$TemporaryPrefix", - "$TestFileName", - "$TextStyle", - "$TimedOut", - "$TimeUnit", - "$TimeZone", - "$TimeZoneEntity", - "$TopDirectory", - "$TraceOff", - "$TraceOn", - "$TracePattern", - "$TracePostAction", - "$TracePreAction", - "$UnitSystem", - "$Urgent", - "$UserAddOnsDirectory", - "$UserAgentLanguages", - "$UserAgentMachine", - "$UserAgentName", - "$UserAgentOperatingSystem", - "$UserAgentString", - "$UserAgentVersion", - "$UserBaseDirectory", - "$UserBasePacletsDirectory", - "$UserDocumentsDirectory", - "$Username", - "$UserName", - "$UserURLBase", - "$Version", - "$VersionNumber", - "$VideoDecoders", - "$VideoEncoders", - "$VoiceStyles", - "$WolframDocumentsDirectory", - "$WolframID", - "$WolframUUID" -]; - -/* -Language: Wolfram Language -Description: The Wolfram Language is the programming language used in Wolfram Mathematica, a modern technical computing system spanning most areas of technical computing. -Authors: Patrick Scheibe , Robert Jacobson -Website: https://www.wolfram.com/mathematica/ -Category: scientific -*/ - - -/** @type LanguageFn */ -function mathematica(hljs) { - const regex = hljs.regex; - /* - This rather scary looking matching of Mathematica numbers is carefully explained by Robert Jacobson here: - https://wltools.github.io/LanguageSpec/Specification/Syntax/Number-representations/ - */ - const BASE_RE = /([2-9]|[1-2]\d|[3][0-5])\^\^/; - const BASE_DIGITS_RE = /(\w*\.\w+|\w+\.\w*|\w+)/; - const NUMBER_RE = /(\d*\.\d+|\d+\.\d*|\d+)/; - const BASE_NUMBER_RE = regex.either(regex.concat(BASE_RE, BASE_DIGITS_RE), NUMBER_RE); - - const ACCURACY_RE = /``[+-]?(\d*\.\d+|\d+\.\d*|\d+)/; - const PRECISION_RE = /`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?/; - const APPROXIMATE_NUMBER_RE = regex.either(ACCURACY_RE, PRECISION_RE); - - const SCIENTIFIC_NOTATION_RE = /\*\^[+-]?\d+/; - - const MATHEMATICA_NUMBER_RE = regex.concat( - BASE_NUMBER_RE, - regex.optional(APPROXIMATE_NUMBER_RE), - regex.optional(SCIENTIFIC_NOTATION_RE) - ); - - const NUMBERS = { - className: 'number', - relevance: 0, - begin: MATHEMATICA_NUMBER_RE - }; - - const SYMBOL_RE = /[a-zA-Z$][a-zA-Z0-9$]*/; - const SYSTEM_SYMBOLS_SET = new Set(SYSTEM_SYMBOLS); - /** @type {Mode} */ - const SYMBOLS = { variants: [ - { - className: 'builtin-symbol', - begin: SYMBOL_RE, - // for performance out of fear of regex.either(...Mathematica.SYSTEM_SYMBOLS) - "on:begin": (match, response) => { - if (!SYSTEM_SYMBOLS_SET.has(match[0])) response.ignoreMatch(); - } - }, - { - className: 'symbol', - relevance: 0, - begin: SYMBOL_RE - } - ] }; - - const NAMED_CHARACTER = { - className: 'named-character', - begin: /\\\[[$a-zA-Z][$a-zA-Z0-9]+\]/ - }; - - const OPERATORS = { - className: 'operator', - relevance: 0, - begin: /[+\-*/,;.:@~=><&|_`'^?!%]+/ - }; - const PATTERNS = { - className: 'pattern', - relevance: 0, - begin: /([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/ - }; - - const SLOTS = { - className: 'slot', - relevance: 0, - begin: /#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/ - }; - - const BRACES = { - className: 'brace', - relevance: 0, - begin: /[[\](){}]/ - }; - - const MESSAGES = { - className: 'message-name', - relevance: 0, - begin: regex.concat("::", SYMBOL_RE) - }; - - return { - name: 'Mathematica', - aliases: [ - 'mma', - 'wl' - ], - classNameAliases: { - brace: 'punctuation', - pattern: 'type', - slot: 'type', - symbol: 'variable', - 'named-character': 'variable', - 'builtin-symbol': 'built_in', - 'message-name': 'string' - }, - contains: [ - hljs.COMMENT(/\(\*/, /\*\)/, { contains: [ 'self' ] }), - PATTERNS, - SLOTS, - MESSAGES, - SYMBOLS, - NAMED_CHARACTER, - hljs.QUOTE_STRING_MODE, - NUMBERS, - OPERATORS, - BRACES - ] - }; -} - -module.exports = mathematica; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/matlab.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/matlab.js ***! - \***************************************************************/ -(module) { - -/* -Language: Matlab -Author: Denis Bardadym -Contributors: Eugene Nizhibitsky , Egor Rogov -Website: https://www.mathworks.com/products/matlab.html -Category: scientific -*/ - -/* - Formal syntax is not published, helpful link: - https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf -*/ -function matlab(hljs) { - const TRANSPOSE_RE = '(\'|\\.\')+'; - const TRANSPOSE = { - relevance: 0, - contains: [ { begin: TRANSPOSE_RE } ] - }; - - return { - name: 'Matlab', - keywords: { - keyword: - 'arguments break case catch classdef continue else elseif end enumeration events for function ' - + 'global if methods otherwise parfor persistent properties return spmd switch try while', - built_in: - 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' - + 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' - + 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' - + 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' - + 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' - + 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' - + 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' - + 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' - + 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' - + 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' - + 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' - + 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan ' - + 'isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal ' - + 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' - + 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' - + 'legend intersect ismember procrustes hold num2cell ' - }, - illegal: '(//|"|#|/\\*|\\s+/\\w+)', - contains: [ - { - className: 'function', - beginKeywords: 'function', - end: '$', - contains: [ - hljs.UNDERSCORE_TITLE_MODE, - { - className: 'params', - variants: [ - { - begin: '\\(', - end: '\\)' - }, - { - begin: '\\[', - end: '\\]' - } - ] - } - ] - }, - { - className: 'built_in', - begin: /true|false/, - relevance: 0, - starts: TRANSPOSE - }, - { - begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE, - relevance: 0 - }, - { - className: 'number', - begin: hljs.C_NUMBER_RE, - relevance: 0, - starts: TRANSPOSE - }, - { - className: 'string', - begin: '\'', - end: '\'', - contains: [ { begin: '\'\'' } ] - }, - { - begin: /\]|\}|\)/, - relevance: 0, - starts: TRANSPOSE - }, - { - className: 'string', - begin: '"', - end: '"', - contains: [ { begin: '""' } ], - starts: TRANSPOSE - }, - hljs.COMMENT('^\\s*%\\{\\s*$', '^\\s*%\\}\\s*$'), - hljs.COMMENT('%', '$') - ] - }; -} - -module.exports = matlab; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/maxima.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/maxima.js ***! - \***************************************************************/ -(module) { - -/* -Language: Maxima -Author: Robert Dodier -Website: http://maxima.sourceforge.net -Category: scientific -*/ - -function maxima(hljs) { - const KEYWORDS = - 'if then else elseif for thru do while unless step in and or not'; - const LITERALS = - 'true false unknown inf minf ind und %e %i %pi %phi %gamma'; - const BUILTIN_FUNCTIONS = - ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate' - + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix' - + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type' - + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv' - + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2' - + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply' - + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger' - + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order' - + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method' - + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode' - + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx' - + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify' - + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized' - + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp' - + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition' - + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description' - + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten' - + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli' - + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform' - + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel' - + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial' - + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson' - + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay' - + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic' - + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2' - + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps' - + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph' - + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph' - + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse' - + ' collectterms columnop columnspace columnswap columnvector combination combine' - + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph' - + ' complete_graph complex_number_p components compose_functions concan concat' - + ' conjugate conmetderiv connected_components connect_vertices cons constant' - + ' constantp constituent constvalue cont2part content continuous_freq contortion' - + ' contour_plot contract contract_edge contragrad contrib_ode convert coord' - + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1' - + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline' - + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph' - + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate' - + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions' - + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion' - + ' declare_units declare_weights decsym defcon define define_alt_display define_variable' - + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten' - + ' delta demo demoivre denom depends derivdegree derivlist describe desolve' - + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag' - + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export' - + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct' - + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform' - + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum' - + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart' - + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring' - + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth' - + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome' - + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using' - + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi' - + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp' - + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors' - + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp' - + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci' - + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li' - + ' expintegral_shi expintegral_si explicit explose exponentialize express expt' - + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum' - + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements' - + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge' - + ' file_search file_type fillarray findde find_root find_root_abs find_root_error' - + ' find_root_rel first fix flatten flength float floatnump floor flower_snark' - + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran' - + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp' - + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s' - + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp' - + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units' - + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized' - + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide' - + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym' - + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean' - + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string' - + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default' - + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close' - + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum' - + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import' - + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery' - + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph' - + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path' - + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite' - + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description' - + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph' - + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy' - + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart' - + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices' - + ' induced_subgraph inferencep inference_result infix info_display init_atensor' - + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions' - + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2' - + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc' - + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns' - + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint' - + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph' - + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate' - + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph' - + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc' - + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd' - + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill' - + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis' - + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform' - + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete' - + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace' - + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2' - + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson' - + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange' - + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp' - + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length' - + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit' - + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph' - + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials' - + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry' - + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst' - + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact' - + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub' - + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma' - + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country' - + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream' - + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom' - + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display' - + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker' - + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching' - + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform' - + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete' - + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic' - + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t' - + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull' - + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree' - + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor' - + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton' - + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions' - + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff' - + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary' - + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext' - + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices' - + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp' - + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst' - + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets' - + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai' - + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin' - + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary' - + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless' - + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap' - + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface' - + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition' - + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name' - + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform' - + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete' - + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal' - + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal' - + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t' - + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph' - + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding' - + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff' - + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar' - + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion' - + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal' - + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal' - + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation' - + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm' - + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form' - + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part' - + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension' - + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod' - + ' powerseries powerset prefix prev_prime primep primes principal_components' - + ' print printf printfile print_graph printpois printprops prodrac product properties' - + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct' - + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp' - + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile' - + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2' - + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f' - + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel' - + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal' - + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t' - + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t' - + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan' - + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph' - + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform' - + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric' - + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace' - + ' random_logistic random_lognormal random_negative_binomial random_network' - + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto' - + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t' - + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom' - + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump' - + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array' - + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline' - + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate' - + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar' - + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus' - + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction' - + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions' - + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule' - + ' remsym remvalue rename rename_file reset reset_displays residue resolvante' - + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein' - + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer' - + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann' - + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row' - + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i' - + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description' - + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second' - + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight' - + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state' - + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications' - + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path' - + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform' - + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert' - + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial' - + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp' - + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric' - + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic' - + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t' - + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t' - + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph' - + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve' - + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export' - + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1' - + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition' - + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus' - + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot' - + ' starplot_description status std std1 std_bernoulli std_beta std_binomial' - + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma' - + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace' - + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t' - + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull' - + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout' - + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices' - + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart' - + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext' - + ' symbolp symmdifference symmetricp system take_channel take_inference tan' - + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract' - + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference' - + ' test_normality test_proportion test_proportions_difference test_rank_sum' - + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display' - + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter' - + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep' - + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample' - + ' translate translate_file transpose treefale tree_reduce treillis treinat' - + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate' - + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph' - + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget' - + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp' - + ' units unit_step unitvector unorder unsum untellrat untimer' - + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli' - + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform' - + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel' - + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial' - + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson' - + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp' - + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance' - + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle' - + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j' - + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian' - + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta' - + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors' - + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table' - + ' absboxchar activecontexts adapt_depth additive adim aform algebraic' - + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic' - + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar' - + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top' - + ' azimuth background background_color backsubst berlefact bernstein_explicit' - + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest' - + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange' - + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics' - + ' colorbox columns commutative complex cone context contexts contour contour_levels' - + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp' - + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing' - + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout' - + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal' - + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor' - + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules' - + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart' - + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag' - + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer' - + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type' - + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand' - + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine' - + ' factlim factorflag factorial_expand factors_only fb feature features' - + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10' - + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color' - + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size' - + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim' - + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command' - + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command' - + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command' - + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble' - + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args' - + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both' - + ' head_length head_type height hypergeometric_representation %iargs ibase' - + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form' - + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval' - + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued' - + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color' - + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr' - + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment' - + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max' - + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear' - + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params' - + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname' - + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx' - + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros' - + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult' - + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10' - + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint' - + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp' - + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver' - + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag' - + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc' - + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np' - + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties' - + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals' - + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution' - + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart' - + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type' - + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm' - + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list' - + ' poly_secondary_elimination_order poly_top_reduction_only posfun position' - + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program' - + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand' - + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof' - + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann' - + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw' - + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs' - + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy' - + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck' - + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width' - + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type' - + ' show_vertices show_weight simp simplified_output simplify_products simpproduct' - + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn' - + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag' - + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda' - + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric' - + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials' - + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch' - + ' tr track transcompile transform transform_xy translate_fast_arrays transparent' - + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex' - + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign' - + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars' - + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode' - + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes' - + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble' - + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition' - + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface' - + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel' - + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate' - + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel' - + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width' - + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis' - + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis' - + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob' - + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest'; - const SYMBOLS = '_ __ %|0 %%|0'; - - return { - name: 'Maxima', - keywords: { - $pattern: '[A-Za-z_%][0-9A-Za-z_%]*', - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILTIN_FUNCTIONS, - symbol: SYMBOLS - }, - contains: [ - { - className: 'comment', - begin: '/\\*', - end: '\\*/', - contains: [ 'self' ] - }, - hljs.QUOTE_STRING_MODE, - { - className: 'number', - relevance: 0, - variants: [ - { - // float number w/ exponent - // hmm, I wonder if we ought to include other exponent markers? - begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b' }, - { - // bigfloat number - begin: '\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b', - relevance: 10 - }, - { - // float number w/out exponent - // Doesn't seem to recognize floats which start with '.' - begin: '\\b(\\.\\d+|\\d+\\.\\d+)\\b' }, - { - // integer in base up to 36 - // Doesn't seem to recognize integers which end with '.' - begin: '\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b' } - ] - } - ], - illegal: /@/ - }; -} - -module.exports = maxima; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/mel.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/mel.js ***! - \************************************************************/ -(module) { - -/* -Language: MEL -Description: Maya Embedded Language -Author: Shuen-Huei Guan -Website: http://www.autodesk.com/products/autodesk-maya/overview -Category: graphics -*/ - -function mel(hljs) { - return { - name: 'MEL', - keywords: - 'int float string vector matrix if else switch case default while do for in break ' - + 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' - + 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' - + 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' - + 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' - + 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' - + 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' - + 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' - + 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' - + 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' - + 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' - + 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' - + 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' - + 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' - + 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' - + 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' - + 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' - + 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' - + 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' - + 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' - + 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' - + 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' - + 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' - + 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' - + 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' - + 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' - + 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' - + 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' - + 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' - + 'constrainValue constructionHistory container containsMultibyte contextInfo control ' - + 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' - + 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' - + 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' - + 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' - + 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' - + 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' - + 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' - + 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' - + 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' - + 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' - + 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' - + 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' - + 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' - + 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' - + 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' - + 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' - + 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' - + 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' - + 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' - + 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' - + 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' - + 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' - + 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' - + 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' - + 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' - + 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' - + 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' - + 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' - + 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' - + 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' - + 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' - + 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' - + 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' - + 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' - + 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' - + 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' - + 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' - + 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' - + 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' - + 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' - + 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' - + 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' - + 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' - + 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' - + 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' - + 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' - + 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' - + 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' - + 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' - + 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' - + 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' - + 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' - + 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' - + 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' - + 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' - + 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' - + 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' - + 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' - + 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' - + 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' - + 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' - + 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' - + 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' - + 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' - + 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' - + 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' - + 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' - + 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' - + 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' - + 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' - + 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' - + 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' - + 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' - + 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' - + 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' - + 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' - + 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' - + 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' - + 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' - + 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' - + 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' - + 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' - + 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' - + 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' - + 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' - + 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' - + 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' - + 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' - + 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' - + 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' - + 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' - + 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' - + 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' - + 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' - + 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' - + 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' - + 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' - + 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' - + 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' - + 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' - + 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' - + 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' - + 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' - + 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' - + 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' - + 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' - + 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' - + 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' - + 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' - + 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' - + 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' - + 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' - + 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' - + 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' - + 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' - + 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' - + 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' - + 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' - + 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' - + 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' - + 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' - + 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' - + 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' - + 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' - + 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' - + 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' - + 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' - + 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' - + 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' - + 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' - + 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' - + 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' - + 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' - + 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' - + 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' - + 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' - + 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' - + 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' - + 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' - + 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' - + 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' - + 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' - + 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' - + 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' - + 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' - + 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' - + 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' - + 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' - + 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' - + 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' - + 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' - + 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' - + 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' - + 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' - + 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' - + 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' - + 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' - + 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' - + 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' - + 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' - + 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' - + 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' - + 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' - + 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' - + 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' - + 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' - + 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' - + 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' - + 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' - + 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' - + 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' - + 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' - + 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform', - illegal: ' -Description: Mercury is a logic/functional programming language which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features. -Website: https://www.mercurylang.org -Category: functional -*/ - -function mercury(hljs) { - const KEYWORDS = { - keyword: - 'module use_module import_module include_module end_module initialise ' - + 'mutable initialize finalize finalise interface implementation pred ' - + 'mode func type inst solver any_pred any_func is semidet det nondet ' - + 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' - + 'pragma promise external trace atomic or_else require_complete_switch ' - + 'require_det require_semidet require_multi require_nondet ' - + 'require_cc_multi require_cc_nondet require_erroneous require_failure', - meta: - // pragma - 'inline no_inline type_spec source_file fact_table obsolete memo ' - + 'loop_check minimal_model terminates does_not_terminate ' - + 'check_termination promise_equivalent_clauses ' - // preprocessor - + 'foreign_proc foreign_decl foreign_code foreign_type ' - + 'foreign_import_module foreign_export_enum foreign_export ' - + 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' - + 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' - + 'tabled_for_io local untrailed trailed attach_to_io_state ' - + 'can_pass_as_mercury_type stable will_not_throw_exception ' - + 'may_modify_trail will_not_modify_trail may_duplicate ' - + 'may_not_duplicate affects_liveness does_not_affect_liveness ' - + 'doesnt_affect_liveness no_sharing unknown_sharing sharing', - built_in: - 'some all not if then else true fail false try catch catch_any ' - + 'semidet_true semidet_false semidet_fail impure_true impure semipure' - }; - - const COMMENT = hljs.COMMENT('%', '$'); - - const NUMCODE = { - className: 'number', - begin: "0'.\\|0[box][0-9a-fA-F]*" - }; - - const ATOM = hljs.inherit(hljs.APOS_STRING_MODE, { relevance: 0 }); - const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { relevance: 0 }); - const STRING_FMT = { - className: 'subst', - begin: '\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]', - relevance: 0 - }; - STRING.contains = STRING.contains.slice(); // we need our own copy of contains - STRING.contains.push(STRING_FMT); - - const IMPLICATION = { - className: 'built_in', - variants: [ - { begin: '<=>' }, - { - begin: '<=', - relevance: 0 - }, - { - begin: '=>', - relevance: 0 - }, - { begin: '/\\\\' }, - { begin: '\\\\/' } - ] - }; - - const HEAD_BODY_CONJUNCTION = { - className: 'built_in', - variants: [ - { begin: ':-\\|-->' }, - { - begin: '=', - relevance: 0 - } - ] - }; - - return { - name: 'Mercury', - aliases: [ - 'm', - 'moo' - ], - keywords: KEYWORDS, - contains: [ - IMPLICATION, - HEAD_BODY_CONJUNCTION, - COMMENT, - hljs.C_BLOCK_COMMENT_MODE, - NUMCODE, - hljs.NUMBER_MODE, - ATOM, - STRING, - { // relevance booster - begin: /:-/ }, - { // relevance booster - begin: /\.$/ } - ] - }; -} - -module.exports = mercury; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/mipsasm.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/mipsasm.js ***! - \****************************************************************/ -(module) { - -/* -Language: MIPS Assembly -Author: Nebuleon Fumika -Description: MIPS Assembly (up to MIPS32R2) -Website: https://en.wikipedia.org/wiki/MIPS_architecture -Category: assembler -*/ - -function mipsasm(hljs) { - // local labels: %?[FB]?[AT]?\d{1,2}\w+ - return { - name: 'MIPS Assembly', - case_insensitive: true, - aliases: [ 'mips' ], - keywords: { - $pattern: '\\.?' + hljs.IDENT_RE, - meta: - // GNU preprocs - '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ', - built_in: - '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' // integer registers - + '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' // integer registers - + 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' // integer register aliases - + 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' // integer register aliases - + 'k0 k1 gp sp fp ra ' // integer register aliases - + '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' // floating-point registers - + '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' // floating-point registers - + 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' // Coprocessor 0 registers - + 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' // Coprocessor 0 registers - + 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' // Coprocessor 0 registers - + 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers - }, - contains: [ - { - className: 'keyword', - begin: '\\b(' // mnemonics - // 32-bit integer instructions - + 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' - + 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' - + 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' - + 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' - + 'srlv?|subu?|sw[lr]?|xori?|wsbh|' - // floating-point instructions - + 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' - + 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' - + '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' - + 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' - + 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' - + 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' - + 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' - + 'swx?c1|' - // system control instructions - + 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' - + 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' - + 'tlti?u?|tnei?|wait|wrpgpr' - + ')', - end: '\\s' - }, - // lines ending with ; or # aren't really comments, probably auto-detect fail - hljs.COMMENT('[;#](?!\\s*$)', '$'), - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: '\'', - end: '[^\\\\]\'', - relevance: 0 - }, - { - className: 'title', - begin: '\\|', - end: '\\|', - illegal: '\\n', - relevance: 0 - }, - { - className: 'number', - variants: [ - { // hex - begin: '0x[0-9a-f]+' }, - { // bare number - begin: '\\b-?\\d+' } - ], - relevance: 0 - }, - { - className: 'symbol', - variants: [ - { // GNU MIPS syntax - begin: '^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:' }, - { // numbered local labels - begin: '^\\s*[0-9]+:' }, - { // number local label reference (backwards, forwards) - begin: '[0-9]+[bf]' } - ], - relevance: 0 - } - ], - // forward slashes are not allowed - illegal: /\// - }; -} - -module.exports = mipsasm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/mizar.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/mizar.js ***! - \**************************************************************/ -(module) { - -/* -Language: Mizar -Description: The Mizar Language is a formal language derived from the mathematical vernacular. -Author: Kelley van Evert -Website: http://mizar.org/language/ -Category: scientific -*/ - -function mizar(hljs) { - return { - name: 'Mizar', - keywords: - 'environ vocabularies notations constructors definitions ' - + 'registrations theorems schemes requirements begin end definition ' - + 'registration cluster existence pred func defpred deffunc theorem ' - + 'proof let take assume then thus hence ex for st holds consider ' - + 'reconsider such that and in provided of as from be being by means ' - + 'equals implies iff redefine define now not or attr is mode ' - + 'suppose per cases set thesis contradiction scheme reserve struct ' - + 'correctness compatibility coherence symmetry assymetry ' - + 'reflexivity irreflexivity connectedness uniqueness commutativity ' - + 'idempotence involutiveness projectivity', - contains: [ hljs.COMMENT('::', '$') ] - }; -} - -module.exports = mizar; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/mojolicious.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/mojolicious.js ***! - \********************************************************************/ -(module) { - -/* -Language: Mojolicious -Requires: xml.js, perl.js -Author: Dotan Dimet -Description: Mojolicious .ep (Embedded Perl) templates -Website: https://mojolicious.org -Category: template -*/ -function mojolicious(hljs) { - return { - name: 'Mojolicious', - subLanguage: 'xml', - contains: [ - { - className: 'meta', - begin: '^__(END|DATA)__$' - }, - // mojolicious line - { - begin: "^\\s*%{1,2}={0,2}", - end: '$', - subLanguage: 'perl' - }, - // mojolicious block - { - begin: "<%{1,2}={0,2}", - end: "={0,1}%>", - subLanguage: 'perl', - excludeBegin: true, - excludeEnd: true - } - ] - }; -} - -module.exports = mojolicious; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/monkey.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/monkey.js ***! - \***************************************************************/ -(module) { - -/* -Language: Monkey -Description: Monkey2 is an easy to use, cross platform, games oriented programming language from Blitz Research. -Author: Arthur Bikmullin -Website: https://blitzresearch.itch.io/monkey2 -Category: gaming -*/ - -function monkey(hljs) { - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - { begin: '[$][a-fA-F0-9]+' }, - hljs.NUMBER_MODE - ] - }; - const FUNC_DEFINITION = { - variants: [ - { match: [ - /(function|method)/, - /\s+/, - hljs.UNDERSCORE_IDENT_RE, - ] }, - ], - scope: { - 1: "keyword", - 3: "title.function" - } - }; - const CLASS_DEFINITION = { - variants: [ - { match: [ - /(class|interface|extends|implements)/, - /\s+/, - hljs.UNDERSCORE_IDENT_RE, - ] }, - ], - scope: { - 1: "keyword", - 3: "title.class" - } - }; - const BUILT_INS = [ - "DebugLog", - "DebugStop", - "Error", - "Print", - "ACos", - "ACosr", - "ASin", - "ASinr", - "ATan", - "ATan2", - "ATan2r", - "ATanr", - "Abs", - "Abs", - "Ceil", - "Clamp", - "Clamp", - "Cos", - "Cosr", - "Exp", - "Floor", - "Log", - "Max", - "Max", - "Min", - "Min", - "Pow", - "Sgn", - "Sgn", - "Sin", - "Sinr", - "Sqrt", - "Tan", - "Tanr", - "Seed", - "PI", - "HALFPI", - "TWOPI" - ]; - const LITERALS = [ - "true", - "false", - "null" - ]; - const KEYWORDS = [ - "public", - "private", - "property", - "continue", - "exit", - "extern", - "new", - "try", - "catch", - "eachin", - "not", - "abstract", - "final", - "select", - "case", - "default", - "const", - "local", - "global", - "field", - "end", - "if", - "then", - "else", - "elseif", - "endif", - "while", - "wend", - "repeat", - "until", - "forever", - "for", - "to", - "step", - "next", - "return", - "module", - "inline", - "throw", - "import", - // not positive, but these are not literals - "and", - "or", - "shl", - "shr", - "mod" - ]; - - return { - name: 'Monkey', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS, - literal: LITERALS - }, - illegal: /\/\*/, - contains: [ - hljs.COMMENT('#rem', '#end'), - hljs.COMMENT( - "'", - '$', - { relevance: 0 } - ), - FUNC_DEFINITION, - CLASS_DEFINITION, - { - className: 'variable.language', - begin: /\b(self|super)\b/ - }, - { - className: 'meta', - begin: /\s*#/, - end: '$', - keywords: { keyword: 'if else elseif endif end then' } - }, - { - match: [ - /^\s*/, - /strict\b/ - ], - scope: { 2: "meta" } - }, - { - beginKeywords: 'alias', - end: '=', - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - }, - hljs.QUOTE_STRING_MODE, - NUMBER - ] - }; -} - -module.exports = monkey; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/moonscript.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/moonscript.js ***! - \*******************************************************************/ -(module) { - -/* -Language: MoonScript -Author: Billy Quith -Description: MoonScript is a programming language that transcompiles to Lua. -Origin: coffeescript.js -Website: http://moonscript.org/ -Category: scripting -*/ - -function moonscript(hljs) { - const KEYWORDS = { - keyword: - // Moonscript keywords - 'if then not for in while do return else elseif break continue switch and or ' - + 'unless when class extends super local import export from using', - literal: - 'true false nil', - built_in: - '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' - + 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' - + 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' - + 'io math os package string table' - }; - const JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: KEYWORDS - }; - const EXPRESSIONS = [ - hljs.inherit(hljs.C_NUMBER_MODE, - { starts: { - end: '(\\s*/)?', - relevance: 0 - } }), // a number tries to eat the following slash to prevent treating it as a regexp - { - className: 'string', - variants: [ - { - begin: /'/, - end: /'/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - } - ] - }, - { - className: 'built_in', - begin: '@__' + hljs.IDENT_RE - }, - { begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript - }, - { begin: hljs.IDENT_RE + '\\\\' + hljs.IDENT_RE // inst\method - } - ]; - SUBST.contains = EXPRESSIONS; - - const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: JS_IDENT_RE }); - const POSSIBLE_PARAMS_RE = '(\\(.*\\)\\s*)?\\B[-=]>'; - const PARAMS = { - className: 'params', - begin: '\\([^\\(]', - returnBegin: true, - /* We need another contained nameless mode to not have every nested - pair of parens to be called "params" */ - contains: [ - { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: [ 'self' ].concat(EXPRESSIONS) - } - ] - }; - - return { - name: 'MoonScript', - aliases: [ 'moon' ], - keywords: KEYWORDS, - illegal: /\/\*/, - contains: EXPRESSIONS.concat([ - hljs.COMMENT('--', '$'), - { - className: 'function', // function: -> => - begin: '^\\s*' + JS_IDENT_RE + '\\s*=\\s*' + POSSIBLE_PARAMS_RE, - end: '[-=]>', - returnBegin: true, - contains: [ - TITLE, - PARAMS - ] - }, - { - begin: /[\(,:=]\s*/, // anonymous function start - relevance: 0, - contains: [ - { - className: 'function', - begin: POSSIBLE_PARAMS_RE, - end: '[-=]>', - returnBegin: true, - contains: [ PARAMS ] - } - ] - }, - { - className: 'class', - beginKeywords: 'class', - end: '$', - illegal: /[:="\[\]]/, - contains: [ - { - beginKeywords: 'extends', - endsWithParent: true, - illegal: /[:="\[\]]/, - contains: [ TITLE ] - }, - TITLE - ] - }, - { - className: 'name', // table - begin: JS_IDENT_RE + ':', - end: ':', - returnBegin: true, - returnEnd: true, - relevance: 0 - } - ]) - }; -} - -module.exports = moonscript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/n1ql.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/n1ql.js ***! - \*************************************************************/ -(module) { - -/* - Language: N1QL - Author: Andres Täht - Contributors: Rene Saarsoo - Description: Couchbase query language - Website: https://www.couchbase.com/products/n1ql - Category: database - */ - -function n1ql(hljs) { - // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html - const KEYWORDS = [ - "all", - "alter", - "analyze", - "and", - "any", - "array", - "as", - "asc", - "begin", - "between", - "binary", - "boolean", - "break", - "bucket", - "build", - "by", - "call", - "case", - "cast", - "cluster", - "collate", - "collection", - "commit", - "connect", - "continue", - "correlate", - "cover", - "create", - "database", - "dataset", - "datastore", - "declare", - "decrement", - "delete", - "derived", - "desc", - "describe", - "distinct", - "do", - "drop", - "each", - "element", - "else", - "end", - "every", - "except", - "exclude", - "execute", - "exists", - "explain", - "fetch", - "first", - "flatten", - "for", - "force", - "from", - "function", - "grant", - "group", - "gsi", - "having", - "if", - "ignore", - "ilike", - "in", - "include", - "increment", - "index", - "infer", - "inline", - "inner", - "insert", - "intersect", - "into", - "is", - "join", - "key", - "keys", - "keyspace", - "known", - "last", - "left", - "let", - "letting", - "like", - "limit", - "lsm", - "map", - "mapping", - "matched", - "materialized", - "merge", - "minus", - "namespace", - "nest", - "not", - "number", - "object", - "offset", - "on", - "option", - "or", - "order", - "outer", - "over", - "parse", - "partition", - "password", - "path", - "pool", - "prepare", - "primary", - "private", - "privilege", - "procedure", - "public", - "raw", - "realm", - "reduce", - "rename", - "return", - "returning", - "revoke", - "right", - "role", - "rollback", - "satisfies", - "schema", - "select", - "self", - "semi", - "set", - "show", - "some", - "start", - "statistics", - "string", - "system", - "then", - "to", - "transaction", - "trigger", - "truncate", - "under", - "union", - "unique", - "unknown", - "unnest", - "unset", - "update", - "upsert", - "use", - "user", - "using", - "validate", - "value", - "valued", - "values", - "via", - "view", - "when", - "where", - "while", - "with", - "within", - "work", - "xor" - ]; - // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html - const LITERALS = [ - "true", - "false", - "null", - "missing|5" - ]; - // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html - const BUILT_INS = [ - "array_agg", - "array_append", - "array_concat", - "array_contains", - "array_count", - "array_distinct", - "array_ifnull", - "array_length", - "array_max", - "array_min", - "array_position", - "array_prepend", - "array_put", - "array_range", - "array_remove", - "array_repeat", - "array_replace", - "array_reverse", - "array_sort", - "array_sum", - "avg", - "count", - "max", - "min", - "sum", - "greatest", - "least", - "ifmissing", - "ifmissingornull", - "ifnull", - "missingif", - "nullif", - "ifinf", - "ifnan", - "ifnanorinf", - "naninf", - "neginfif", - "posinfif", - "clock_millis", - "clock_str", - "date_add_millis", - "date_add_str", - "date_diff_millis", - "date_diff_str", - "date_part_millis", - "date_part_str", - "date_trunc_millis", - "date_trunc_str", - "duration_to_str", - "millis", - "str_to_millis", - "millis_to_str", - "millis_to_utc", - "millis_to_zone_name", - "now_millis", - "now_str", - "str_to_duration", - "str_to_utc", - "str_to_zone_name", - "decode_json", - "encode_json", - "encoded_size", - "poly_length", - "base64", - "base64_encode", - "base64_decode", - "meta", - "uuid", - "abs", - "acos", - "asin", - "atan", - "atan2", - "ceil", - "cos", - "degrees", - "e", - "exp", - "ln", - "log", - "floor", - "pi", - "power", - "radians", - "random", - "round", - "sign", - "sin", - "sqrt", - "tan", - "trunc", - "object_length", - "object_names", - "object_pairs", - "object_inner_pairs", - "object_values", - "object_inner_values", - "object_add", - "object_put", - "object_remove", - "object_unwrap", - "regexp_contains", - "regexp_like", - "regexp_position", - "regexp_replace", - "contains", - "initcap", - "length", - "lower", - "ltrim", - "position", - "repeat", - "replace", - "rtrim", - "split", - "substr", - "title", - "trim", - "upper", - "isarray", - "isatom", - "isboolean", - "isnumber", - "isobject", - "isstring", - "type", - "toarray", - "toatom", - "toboolean", - "tonumber", - "toobject", - "tostring" - ]; - - return { - name: 'N1QL', - case_insensitive: true, - contains: [ - { - beginKeywords: - 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10', - end: /;/, - keywords: { - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILT_INS - }, - contains: [ - { - className: 'string', - begin: '\'', - end: '\'', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - className: 'string', - begin: '"', - end: '"', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - className: 'symbol', - begin: '`', - end: '`', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - hljs.C_BLOCK_COMMENT_MODE - ] - }; -} - -module.exports = n1ql; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/nestedtext.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/nestedtext.js ***! - \*******************************************************************/ -(module) { - -/* -Language: NestedText -Description: NestedText is a file format for holding data that is to be entered, edited, or viewed by people. -Website: https://nestedtext.org/ -Category: config -*/ - -/** @type LanguageFn */ -function nestedtext(hljs) { - const NESTED = { - match: [ - /^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking - /[^:]+/, - /:\s*/, - /$/ - ], - className: { - 2: "attribute", - 3: "punctuation" - } - }; - const DICTIONARY_ITEM = { - match: [ - /^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking - /[^:]*[^: ]/, - /[ ]*:/, - /[ ]/, - /.*$/ - ], - className: { - 2: "attribute", - 3: "punctuation", - 5: "string" - } - }; - const STRING = { - match: [ - /^\s*/, - />/, - /[ ]/, - /.*$/ - ], - className: { - 2: "punctuation", - 4: "string" - } - }; - const LIST_ITEM = { - variants: [ - { match: [ - /^\s*/, - /-/, - /[ ]/, - /.*$/ - ] }, - { match: [ - /^\s*/, - /-$/ - ] } - ], - className: { - 2: "bullet", - 4: "string" - } - }; - - return { - name: 'Nested Text', - aliases: [ 'nt' ], - contains: [ - hljs.inherit(hljs.HASH_COMMENT_MODE, { - begin: /^\s*(?=#)/, - excludeBegin: true - }), - LIST_ITEM, - STRING, - NESTED, - DICTIONARY_ITEM - ] - }; -} - -module.exports = nestedtext; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/nginx.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/nginx.js ***! - \**************************************************************/ -(module) { - -/* -Language: Nginx config -Author: Peter Leonov -Contributors: Ivan Sagalaev -Category: config, web -Website: https://www.nginx.com -*/ - -/** @type LanguageFn */ -function nginx(hljs) { - const regex = hljs.regex; - const VAR = { - className: 'variable', - variants: [ - { begin: /\$\d+/ }, - { begin: /\$\{\w+\}/ }, - { begin: regex.concat(/[$@]/, hljs.UNDERSCORE_IDENT_RE) } - ] - }; - const LITERALS = [ - "on", - "off", - "yes", - "no", - "true", - "false", - "none", - "blocked", - "debug", - "info", - "notice", - "warn", - "error", - "crit", - "select", - "break", - "last", - "permanent", - "redirect", - "kqueue", - "rtsig", - "epoll", - "poll", - "/dev/poll" - ]; - const DEFAULT = { - endsWithParent: true, - keywords: { - $pattern: /[a-z_]{2,}|\/dev\/poll/, - literal: LITERALS - }, - relevance: 0, - illegal: '=>', - contains: [ - hljs.HASH_COMMENT_MODE, - { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - VAR - ], - variants: [ - { - begin: /"/, - end: /"/ - }, - { - begin: /'/, - end: /'/ - } - ] - }, - // this swallows entire URLs to avoid detecting numbers within - { - begin: '([a-z]+):/', - end: '\\s', - endsWithParent: true, - excludeEnd: true, - contains: [ VAR ] - }, - { - className: 'regexp', - contains: [ - hljs.BACKSLASH_ESCAPE, - VAR - ], - variants: [ - { - begin: "\\s\\^", - end: "\\s|\\{|;", - returnEnd: true - }, - // regexp locations (~, ~*) - { - begin: "~\\*?\\s+", - end: "\\s|\\{|;", - returnEnd: true - }, - // *.example.com - { begin: "\\*(\\.[a-z\\-]+)+" }, - // sub.example.* - { begin: "([a-z\\-]+\\.)+\\*" } - ] - }, - // IP - { - className: 'number', - begin: '\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b' - }, - // units - { - className: 'number', - begin: '\\b\\d+[kKmMgGdshdwy]?\\b', - relevance: 0 - }, - VAR - ] - }; - - return { - name: 'Nginx config', - aliases: [ 'nginxconf' ], - contains: [ - hljs.HASH_COMMENT_MODE, - { - beginKeywords: "upstream location", - end: /;|\{/, - contains: DEFAULT.contains, - keywords: { section: "upstream location" } - }, - { - className: 'section', - begin: regex.concat(hljs.UNDERSCORE_IDENT_RE + regex.lookahead(/\s+\{/)), - relevance: 0 - }, - { - begin: regex.lookahead(hljs.UNDERSCORE_IDENT_RE + '\\s'), - end: ';|\\{', - contains: [ - { - className: 'attribute', - begin: hljs.UNDERSCORE_IDENT_RE, - starts: DEFAULT - } - ], - relevance: 0 - } - ], - illegal: '[^\\s\\}\\{]' - }; -} - -module.exports = nginx; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/nim.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/nim.js ***! - \************************************************************/ -(module) { - -/* -Language: Nim -Description: Nim is a statically typed compiled systems programming language. -Website: https://nim-lang.org -Category: system -*/ - -function nim(hljs) { - const TYPES = [ - "int", - "int8", - "int16", - "int32", - "int64", - "uint", - "uint8", - "uint16", - "uint32", - "uint64", - "float", - "float32", - "float64", - "bool", - "char", - "string", - "cstring", - "pointer", - "expr", - "stmt", - "void", - "auto", - "any", - "range", - "array", - "openarray", - "varargs", - "seq", - "set", - "clong", - "culong", - "cchar", - "cschar", - "cshort", - "cint", - "csize", - "clonglong", - "cfloat", - "cdouble", - "clongdouble", - "cuchar", - "cushort", - "cuint", - "culonglong", - "cstringarray", - "semistatic" - ]; - const KEYWORDS = [ - "addr", - "and", - "as", - "asm", - "bind", - "block", - "break", - "case", - "cast", - "concept", - "const", - "continue", - "converter", - "defer", - "discard", - "distinct", - "div", - "do", - "elif", - "else", - "end", - "enum", - "except", - "export", - "finally", - "for", - "from", - "func", - "generic", - "guarded", - "if", - "import", - "in", - "include", - "interface", - "is", - "isnot", - "iterator", - "let", - "macro", - "method", - "mixin", - "mod", - "nil", - "not", - "notin", - "object", - "of", - "or", - "out", - "proc", - "ptr", - "raise", - "ref", - "return", - "shared", - "shl", - "shr", - "static", - "template", - "try", - "tuple", - "type", - "using", - "var", - "when", - "while", - "with", - "without", - "xor", - "yield" - ]; - const BUILT_INS = [ - "stdin", - "stdout", - "stderr", - "result" - ]; - const LITERALS = [ - "true", - "false" - ]; - return { - name: 'Nim', - keywords: { - keyword: KEYWORDS, - literal: LITERALS, - type: TYPES, - built_in: BUILT_INS - }, - contains: [ - { - className: 'meta', // Actually pragma - begin: /\{\./, - end: /\.\}/, - relevance: 10 - }, - { - className: 'string', - begin: /[a-zA-Z]\w*"/, - end: /"/, - contains: [ { begin: /""/ } ] - }, - { - className: 'string', - begin: /([a-zA-Z]\w*)?"""/, - end: /"""/ - }, - hljs.QUOTE_STRING_MODE, - { - className: 'type', - begin: /\b[A-Z]\w+\b/, - relevance: 0 - }, - { - className: 'number', - relevance: 0, - variants: [ - { begin: /\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/ }, - { begin: /\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/ }, - { begin: /\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/ }, - { begin: /\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/ } - ] - }, - hljs.HASH_COMMENT_MODE - ] - }; -} - -module.exports = nim; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/nix.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/nix.js ***! - \************************************************************/ -(module) { - -/* -Language: Nix -Author: Domen Kožar -Description: Nix functional language -Website: http://nixos.org/nix -Category: system -*/ - -/** @type LanguageFn */ -function nix(hljs) { - const regex = hljs.regex; - const KEYWORDS = { - keyword: [ - "assert", - "else", - "if", - "in", - "inherit", - "let", - "or", - "rec", - "then", - "with", - ], - literal: [ - "true", - "false", - "null", - ], - built_in: [ - // toplevel builtins - "abort", - "baseNameOf", - "builtins", - "derivation", - "derivationStrict", - "dirOf", - "fetchGit", - "fetchMercurial", - "fetchTarball", - "fetchTree", - "fromTOML", - "import", - "isNull", - "map", - "placeholder", - "removeAttrs", - "scopedImport", - "throw", - "toString", - ], - }; - - const BUILTINS = { - scope: 'built_in', - match: regex.either(...[ - "abort", - "add", - "addDrvOutputDependencies", - "addErrorContext", - "all", - "any", - "appendContext", - "attrNames", - "attrValues", - "baseNameOf", - "bitAnd", - "bitOr", - "bitXor", - "break", - "builtins", - "catAttrs", - "ceil", - "compareVersions", - "concatLists", - "concatMap", - "concatStringsSep", - "convertHash", - "currentSystem", - "currentTime", - "deepSeq", - "derivation", - "derivationStrict", - "dirOf", - "div", - "elem", - "elemAt", - "false", - "fetchGit", - "fetchMercurial", - "fetchTarball", - "fetchTree", - "fetchurl", - "filter", - "filterSource", - "findFile", - "flakeRefToString", - "floor", - "foldl'", - "fromJSON", - "fromTOML", - "functionArgs", - "genList", - "genericClosure", - "getAttr", - "getContext", - "getEnv", - "getFlake", - "groupBy", - "hasAttr", - "hasContext", - "hashFile", - "hashString", - "head", - "import", - "intersectAttrs", - "isAttrs", - "isBool", - "isFloat", - "isFunction", - "isInt", - "isList", - "isNull", - "isPath", - "isString", - "langVersion", - "length", - "lessThan", - "listToAttrs", - "map", - "mapAttrs", - "match", - "mul", - "nixPath", - "nixVersion", - "null", - "parseDrvName", - "parseFlakeRef", - "partition", - "path", - "pathExists", - "placeholder", - "readDir", - "readFile", - "readFileType", - "removeAttrs", - "replaceStrings", - "scopedImport", - "seq", - "sort", - "split", - "splitVersion", - "storeDir", - "storePath", - "stringLength", - "sub", - "substring", - "tail", - "throw", - "toFile", - "toJSON", - "toPath", - "toString", - "toXML", - "trace", - "traceVerbose", - "true", - "tryEval", - "typeOf", - "unsafeDiscardOutputDependency", - "unsafeDiscardStringContext", - "unsafeGetAttrPos", - "warn", - "zipAttrsWith", - ].map(b => `builtins\\.${b}`)), - relevance: 10, - }; - - const IDENTIFIER_REGEX = '[A-Za-z_][A-Za-z0-9_\'-]*'; - - const LOOKUP_PATH = { - scope: 'symbol', - match: new RegExp(`<${IDENTIFIER_REGEX}(/${IDENTIFIER_REGEX})*>`), - }; - - const PATH_PIECE = "[A-Za-z0-9_\\+\\.-]+"; - const PATH = { - scope: 'symbol', - match: new RegExp(`(\\.\\.|\\.|~)?/(${PATH_PIECE})?(/${PATH_PIECE})*(?=[\\s;])`), - }; - - const OPERATOR_WITHOUT_MINUS_REGEX = regex.either(...[ - '==', - '=', - '\\+\\+', - '\\+', - '<=', - '<\\|', - '<', - '>=', - '>', - '->', - '//', - '/', - '!=', - '!', - '\\|\\|', - '\\|>', - '\\?', - '\\*', - '&&', - ]); - - const OPERATOR = { - scope: 'operator', - match: regex.concat(OPERATOR_WITHOUT_MINUS_REGEX, /(?!-)/), - relevance: 0, - }; - - // '-' is being handled by itself to ensure we are able to tell the difference - // between a dash in an identifier and a minus operator - const NUMBER = { - scope: 'number', - match: new RegExp(`${hljs.NUMBER_RE}(?!-)`), - relevance: 0, - }; - const MINUS_OPERATOR = { - variants: [ - { - scope: 'operator', - beforeMatch: /\s/, - // The (?!>) is used to ensure this doesn't collide with the '->' operator - begin: /-(?!>)/, - }, - { - begin: [ - new RegExp(`${hljs.NUMBER_RE}`), - /-/, - /(?!>)/, - ], - beginScope: { - 1: 'number', - 2: 'operator' - }, - }, - { - begin: [ - OPERATOR_WITHOUT_MINUS_REGEX, - /-/, - /(?!>)/, - ], - beginScope: { - 1: 'operator', - 2: 'operator' - }, - }, - ], - relevance: 0, - }; - - const ATTRS = { - beforeMatch: /(^|\{|;)\s*/, - begin: new RegExp(`${IDENTIFIER_REGEX}(\\.${IDENTIFIER_REGEX})*\\s*=(?!=)`), - returnBegin: true, - relevance: 0, - contains: [ - { - scope: 'attr', - match: new RegExp(`${IDENTIFIER_REGEX}(\\.${IDENTIFIER_REGEX})*(?=\\s*=)`), - relevance: 0.2, - } - ], - }; - - const NORMAL_ESCAPED_DOLLAR = { - scope: 'char.escape', - match: /\\\$/, - }; - const INDENTED_ESCAPED_DOLLAR = { - scope: 'char.escape', - match: /''\$/, - }; - const ANTIQUOTE = { - scope: 'subst', - begin: /\$\{/, - end: /\}/, - keywords: KEYWORDS, - }; - const ESCAPED_DOUBLEQUOTE = { - scope: 'char.escape', - match: /'''/, - }; - const ESCAPED_LITERAL = { - scope: 'char.escape', - match: /\\(?!\$)./, - }; - const STRING = { - scope: 'string', - variants: [ - { - begin: "''", - end: "''", - contains: [ - INDENTED_ESCAPED_DOLLAR, - ANTIQUOTE, - ESCAPED_DOUBLEQUOTE, - ESCAPED_LITERAL, - ], - }, - { - begin: '"', - end: '"', - contains: [ - NORMAL_ESCAPED_DOLLAR, - ANTIQUOTE, - ESCAPED_LITERAL, - ], - }, - ], - }; - - const FUNCTION_PARAMS = { - scope: 'params', - match: new RegExp(`${IDENTIFIER_REGEX}\\s*:(?=\\s)`), - }; - - const EXPRESSIONS = [ - NUMBER, - hljs.HASH_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.COMMENT( - /\/\*\*(?!\/)/, - /\*\//, - { - subLanguage: 'markdown', - relevance: 0 - } - ), - BUILTINS, - STRING, - LOOKUP_PATH, - PATH, - FUNCTION_PARAMS, - ATTRS, - MINUS_OPERATOR, - OPERATOR, - ]; - - ANTIQUOTE.contains = EXPRESSIONS; - - const REPL = [ - { - scope: 'meta.prompt', - match: /^nix-repl>(?=\s)/, - relevance: 10, - }, - { - scope: 'meta', - beforeMatch: /\s+/, - begin: /:([a-z]+|\?)/, - }, - ]; - - return { - name: 'Nix', - aliases: [ "nixos" ], - keywords: KEYWORDS, - contains: EXPRESSIONS.concat(REPL), - }; -} - -module.exports = nix; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/node-repl.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/node-repl.js ***! - \******************************************************************/ -(module) { - -/* -Language: Node REPL -Requires: javascript.js -Author: Marat Nagayev -Category: scripting -*/ - -/** @type LanguageFn */ -function nodeRepl(hljs) { - return { - name: 'Node REPL', - contains: [ - { - className: 'meta.prompt', - starts: { - // a space separates the REPL prefix from the actual code - // this is purely for cleaner HTML output - end: / |$/, - starts: { - end: '$', - subLanguage: 'javascript' - } - }, - variants: [ - { begin: /^>(?=[ ]|$)/ }, - { begin: /^\.\.\.(?=[ ]|$)/ } - ] - } - ] - }; -} - -module.exports = nodeRepl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/nsis.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/nsis.js ***! - \*************************************************************/ -(module) { - -/* -Language: NSIS -Description: Nullsoft Scriptable Install System -Author: Jan T. Sott -Website: https://nsis.sourceforge.io/Main_Page -Category: scripting -*/ - - -function nsis(hljs) { - const regex = hljs.regex; - const LANGUAGE_CONSTANTS = [ - "ADMINTOOLS", - "APPDATA", - "CDBURN_AREA", - "CMDLINE", - "COMMONFILES32", - "COMMONFILES64", - "COMMONFILES", - "COOKIES", - "DESKTOP", - "DOCUMENTS", - "EXEDIR", - "EXEFILE", - "EXEPATH", - "FAVORITES", - "FONTS", - "HISTORY", - "HWNDPARENT", - "INSTDIR", - "INTERNET_CACHE", - "LANGUAGE", - "LOCALAPPDATA", - "MUSIC", - "NETHOOD", - "OUTDIR", - "PICTURES", - "PLUGINSDIR", - "PRINTHOOD", - "PROFILE", - "PROGRAMFILES32", - "PROGRAMFILES64", - "PROGRAMFILES", - "QUICKLAUNCH", - "RECENT", - "RESOURCES_LOCALIZED", - "RESOURCES", - "SENDTO", - "SMPROGRAMS", - "SMSTARTUP", - "STARTMENU", - "SYSDIR", - "TEMP", - "TEMPLATES", - "VIDEOS", - "WINDIR" - ]; - - const PARAM_NAMES = [ - "ARCHIVE", - "FILE_ATTRIBUTE_ARCHIVE", - "FILE_ATTRIBUTE_NORMAL", - "FILE_ATTRIBUTE_OFFLINE", - "FILE_ATTRIBUTE_READONLY", - "FILE_ATTRIBUTE_SYSTEM", - "FILE_ATTRIBUTE_TEMPORARY", - "HKCR", - "HKCU", - "HKDD", - "HKEY_CLASSES_ROOT", - "HKEY_CURRENT_CONFIG", - "HKEY_CURRENT_USER", - "HKEY_DYN_DATA", - "HKEY_LOCAL_MACHINE", - "HKEY_PERFORMANCE_DATA", - "HKEY_USERS", - "HKLM", - "HKPD", - "HKU", - "IDABORT", - "IDCANCEL", - "IDIGNORE", - "IDNO", - "IDOK", - "IDRETRY", - "IDYES", - "MB_ABORTRETRYIGNORE", - "MB_DEFBUTTON1", - "MB_DEFBUTTON2", - "MB_DEFBUTTON3", - "MB_DEFBUTTON4", - "MB_ICONEXCLAMATION", - "MB_ICONINFORMATION", - "MB_ICONQUESTION", - "MB_ICONSTOP", - "MB_OK", - "MB_OKCANCEL", - "MB_RETRYCANCEL", - "MB_RIGHT", - "MB_RTLREADING", - "MB_SETFOREGROUND", - "MB_TOPMOST", - "MB_USERICON", - "MB_YESNO", - "NORMAL", - "OFFLINE", - "READONLY", - "SHCTX", - "SHELL_CONTEXT", - "SYSTEM|TEMPORARY", - ]; - - const COMPILER_FLAGS = [ - "addincludedir", - "addplugindir", - "appendfile", - "assert", - "cd", - "define", - "delfile", - "echo", - "else", - "endif", - "error", - "execute", - "finalize", - "getdllversion", - "gettlbversion", - "if", - "ifdef", - "ifmacrodef", - "ifmacrondef", - "ifndef", - "include", - "insertmacro", - "macro", - "macroend", - "makensis", - "packhdr", - "searchparse", - "searchreplace", - "system", - "tempfile", - "undef", - "uninstfinalize", - "verbose", - "warning", - ]; - - const CONSTANTS = { - className: 'variable.constant', - begin: regex.concat(/\$/, regex.either(...LANGUAGE_CONSTANTS)) - }; - - const DEFINES = { - // ${defines} - className: 'variable', - begin: /\$+\{[\!\w.:-]+\}/ - }; - - const VARIABLES = { - // $variables - className: 'variable', - begin: /\$+\w[\w\.]*/, - illegal: /\(\)\{\}/ - }; - - const LANGUAGES = { - // $(language_strings) - className: 'variable', - begin: /\$+\([\w^.:!-]+\)/ - }; - - const PARAMETERS = { - // command parameters - className: 'params', - begin: regex.either(...PARAM_NAMES) - }; - - const COMPILER = { - // !compiler_flags - className: 'keyword', - begin: regex.concat( - /!/, - regex.either(...COMPILER_FLAGS) - ) - }; - - const ESCAPE_CHARS = { - // $\n, $\r, $\t, $$ - className: 'char.escape', - begin: /\$(\\[nrt]|\$)/ - }; - - const PLUGINS = { - // plug::ins - className: 'title.function', - begin: /\w+::\w+/ - }; - - const STRING = { - className: 'string', - variants: [ - { - begin: '"', - end: '"' - }, - { - begin: '\'', - end: '\'' - }, - { - begin: '`', - end: '`' - } - ], - illegal: /\n/, - contains: [ - ESCAPE_CHARS, - CONSTANTS, - DEFINES, - VARIABLES, - LANGUAGES - ] - }; - - const KEYWORDS = [ - "Abort", - "AddBrandingImage", - "AddSize", - "AllowRootDirInstall", - "AllowSkipFiles", - "AutoCloseWindow", - "BGFont", - "BGGradient", - "BrandingText", - "BringToFront", - "Call", - "CallInstDLL", - "Caption", - "ChangeUI", - "CheckBitmap", - "ClearErrors", - "CompletedText", - "ComponentText", - "CopyFiles", - "CRCCheck", - "CreateDirectory", - "CreateFont", - "CreateShortCut", - "Delete", - "DeleteINISec", - "DeleteINIStr", - "DeleteRegKey", - "DeleteRegValue", - "DetailPrint", - "DetailsButtonText", - "DirText", - "DirVar", - "DirVerify", - "EnableWindow", - "EnumRegKey", - "EnumRegValue", - "Exch", - "Exec", - "ExecShell", - "ExecShellWait", - "ExecWait", - "ExpandEnvStrings", - "File", - "FileBufSize", - "FileClose", - "FileErrorText", - "FileOpen", - "FileRead", - "FileReadByte", - "FileReadUTF16LE", - "FileReadWord", - "FileWriteUTF16LE", - "FileSeek", - "FileWrite", - "FileWriteByte", - "FileWriteWord", - "FindClose", - "FindFirst", - "FindNext", - "FindWindow", - "FlushINI", - "GetCurInstType", - "GetCurrentAddress", - "GetDlgItem", - "GetDLLVersion", - "GetDLLVersionLocal", - "GetErrorLevel", - "GetFileTime", - "GetFileTimeLocal", - "GetFullPathName", - "GetFunctionAddress", - "GetInstDirError", - "GetKnownFolderPath", - "GetLabelAddress", - "GetTempFileName", - "GetWinVer", - "Goto", - "HideWindow", - "Icon", - "IfAbort", - "IfErrors", - "IfFileExists", - "IfRebootFlag", - "IfRtlLanguage", - "IfShellVarContextAll", - "IfSilent", - "InitPluginsDir", - "InstallButtonText", - "InstallColors", - "InstallDir", - "InstallDirRegKey", - "InstProgressFlags", - "InstType", - "InstTypeGetText", - "InstTypeSetText", - "Int64Cmp", - "Int64CmpU", - "Int64Fmt", - "IntCmp", - "IntCmpU", - "IntFmt", - "IntOp", - "IntPtrCmp", - "IntPtrCmpU", - "IntPtrOp", - "IsWindow", - "LangString", - "LicenseBkColor", - "LicenseData", - "LicenseForceSelection", - "LicenseLangString", - "LicenseText", - "LoadAndSetImage", - "LoadLanguageFile", - "LockWindow", - "LogSet", - "LogText", - "ManifestDPIAware", - "ManifestLongPathAware", - "ManifestMaxVersionTested", - "ManifestSupportedOS", - "MessageBox", - "MiscButtonText", - "Name|0", - "Nop", - "OutFile", - "Page", - "PageCallbacks", - "PEAddResource", - "PEDllCharacteristics", - "PERemoveResource", - "PESubsysVer", - "Pop", - "Push", - "Quit", - "ReadEnvStr", - "ReadINIStr", - "ReadRegDWORD", - "ReadRegStr", - "Reboot", - "RegDLL", - "Rename", - "RequestExecutionLevel", - "ReserveFile", - "Return", - "RMDir", - "SearchPath", - "SectionGetFlags", - "SectionGetInstTypes", - "SectionGetSize", - "SectionGetText", - "SectionIn", - "SectionSetFlags", - "SectionSetInstTypes", - "SectionSetSize", - "SectionSetText", - "SendMessage", - "SetAutoClose", - "SetBrandingImage", - "SetCompress", - "SetCompressor", - "SetCompressorDictSize", - "SetCtlColors", - "SetCurInstType", - "SetDatablockOptimize", - "SetDateSave", - "SetDetailsPrint", - "SetDetailsView", - "SetErrorLevel", - "SetErrors", - "SetFileAttributes", - "SetFont", - "SetOutPath", - "SetOverwrite", - "SetRebootFlag", - "SetRegView", - "SetShellVarContext", - "SetSilent", - "ShowInstDetails", - "ShowUninstDetails", - "ShowWindow", - "SilentInstall", - "SilentUnInstall", - "Sleep", - "SpaceTexts", - "StrCmp", - "StrCmpS", - "StrCpy", - "StrLen", - "SubCaption", - "Unicode", - "UninstallButtonText", - "UninstallCaption", - "UninstallIcon", - "UninstallSubCaption", - "UninstallText", - "UninstPage", - "UnRegDLL", - "Var", - "VIAddVersionKey", - "VIFileVersion", - "VIProductVersion", - "WindowIcon", - "WriteINIStr", - "WriteRegBin", - "WriteRegDWORD", - "WriteRegExpandStr", - "WriteRegMultiStr", - "WriteRegNone", - "WriteRegStr", - "WriteUninstaller", - "XPStyle" - ]; - - const LITERALS = [ - "admin", - "all", - "auto", - "both", - "bottom", - "bzip2", - "colored", - "components", - "current", - "custom", - "directory", - "false", - "force", - "hide", - "highest", - "ifdiff", - "ifnewer", - "instfiles", - "lastused", - "leave", - "left", - "license", - "listonly", - "lzma", - "nevershow", - "none", - "normal", - "notset", - "off", - "on", - "open", - "print", - "right", - "show", - "silent", - "silentlog", - "smooth", - "textonly", - "top", - "true", - "try", - "un.components", - "un.custom", - "un.directory", - "un.instfiles", - "un.license", - "uninstConfirm", - "user", - "Win10", - "Win7", - "Win8", - "WinVista", - "zlib" - ]; - - const FUNCTION_DEFINITION = { - match: [ - /Function/, - /\s+/, - regex.concat(/(\.)?/, hljs.IDENT_RE) - ], - scope: { - 1: "keyword", - 3: "title.function" - } - }; - - // Var Custom.Variable.Name.Item - // Var /GLOBAL Custom.Variable.Name.Item - const VARIABLE_NAME_RE = /[A-Za-z][\w.]*/; - const VARIABLE_DEFINITION = { - match: [ - /Var/, - /\s+/, - /(?:\/GLOBAL\s+)?/, - VARIABLE_NAME_RE - ], - scope: { - 1: "keyword", - 3: "params", - 4: "variable" - } - }; - - return { - name: 'NSIS', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - literal: LITERALS - }, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ), - VARIABLE_DEFINITION, - FUNCTION_DEFINITION, - { beginKeywords: 'Function PageEx Section SectionGroup FunctionEnd SectionEnd', }, - STRING, - COMPILER, - DEFINES, - VARIABLES, - LANGUAGES, - PARAMETERS, - PLUGINS, - hljs.NUMBER_MODE - ] - }; -} - -module.exports = nsis; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/objectivec.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/objectivec.js ***! - \*******************************************************************/ -(module) { - -/* -Language: Objective-C -Author: Valerii Hiora -Contributors: Angel G. Olloqui , Matt Diephouse , Andrew Farmer , Minh Nguyễn -Website: https://developer.apple.com/documentation/objectivec -Category: common -*/ - -function objectivec(hljs) { - const API_CLASS = { - className: 'built_in', - begin: '\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+' - }; - const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/; - const TYPES = [ - "int", - "float", - "char", - "unsigned", - "signed", - "short", - "long", - "double", - "wchar_t", - "unichar", - "void", - "bool", - "BOOL", - "id|0", - "_Bool" - ]; - const KWS = [ - "while", - "export", - "sizeof", - "typedef", - "const", - "struct", - "for", - "union", - "volatile", - "static", - "mutable", - "if", - "do", - "return", - "goto", - "enum", - "else", - "break", - "extern", - "asm", - "case", - "default", - "register", - "explicit", - "typename", - "switch", - "continue", - "inline", - "readonly", - "assign", - "readwrite", - "self", - "@synchronized", - "id", - "typeof", - "nonatomic", - "IBOutlet", - "IBAction", - "strong", - "weak", - "copy", - "in", - "out", - "inout", - "bycopy", - "byref", - "oneway", - "__strong", - "__weak", - "__block", - "__autoreleasing", - "@private", - "@protected", - "@public", - "@try", - "@property", - "@end", - "@throw", - "@catch", - "@finally", - "@autoreleasepool", - "@synthesize", - "@dynamic", - "@selector", - "@optional", - "@required", - "@encode", - "@package", - "@import", - "@defs", - "@compatibility_alias", - "__bridge", - "__bridge_transfer", - "__bridge_retained", - "__bridge_retain", - "__covariant", - "__contravariant", - "__kindof", - "_Nonnull", - "_Nullable", - "_Null_unspecified", - "__FUNCTION__", - "__PRETTY_FUNCTION__", - "__attribute__", - "getter", - "setter", - "retain", - "unsafe_unretained", - "nonnull", - "nullable", - "null_unspecified", - "null_resettable", - "class", - "instancetype", - "NS_DESIGNATED_INITIALIZER", - "NS_UNAVAILABLE", - "NS_REQUIRES_SUPER", - "NS_RETURNS_INNER_POINTER", - "NS_INLINE", - "NS_AVAILABLE", - "NS_DEPRECATED", - "NS_ENUM", - "NS_OPTIONS", - "NS_SWIFT_UNAVAILABLE", - "NS_ASSUME_NONNULL_BEGIN", - "NS_ASSUME_NONNULL_END", - "NS_REFINED_FOR_SWIFT", - "NS_SWIFT_NAME", - "NS_SWIFT_NOTHROW", - "NS_DURING", - "NS_HANDLER", - "NS_ENDHANDLER", - "NS_VALUERETURN", - "NS_VOIDRETURN" - ]; - const LITERALS = [ - "false", - "true", - "FALSE", - "TRUE", - "nil", - "YES", - "NO", - "NULL" - ]; - const BUILT_INS = [ - "dispatch_once_t", - "dispatch_queue_t", - "dispatch_sync", - "dispatch_async", - "dispatch_once" - ]; - const KEYWORDS = { - "variable.language": [ - "this", - "super" - ], - $pattern: IDENTIFIER_RE, - keyword: KWS, - literal: LITERALS, - built_in: BUILT_INS, - type: TYPES - }; - const CLASS_KEYWORDS = { - $pattern: IDENTIFIER_RE, - keyword: [ - "@interface", - "@class", - "@protocol", - "@implementation" - ] - }; - return { - name: 'Objective-C', - aliases: [ - 'mm', - 'objc', - 'obj-c', - 'obj-c++', - 'objective-c++' - ], - keywords: KEYWORDS, - illegal: '/, - end: /$/, - illegal: '\\n' - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }, - { - className: 'class', - begin: '(' + CLASS_KEYWORDS.keyword.join('|') + ')\\b', - end: /(\{|$)/, - excludeEnd: true, - keywords: CLASS_KEYWORDS, - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - }, - { - begin: '\\.' + hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - } - ] - }; -} - -module.exports = objectivec; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ocaml.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ocaml.js ***! - \**************************************************************/ -(module) { - -/* -Language: OCaml -Author: Mehdi Dogguy -Contributors: Nicolas Braud-Santoni , Mickael Delahaye -Description: OCaml language definition. -Website: https://ocaml.org -Category: functional -*/ - -function ocaml(hljs) { - /* missing support for heredoc-like string (OCaml 4.0.2+) */ - return { - name: 'OCaml', - aliases: [ 'ml' ], - keywords: { - $pattern: '[a-z_]\\w*!?', - keyword: - 'and as assert asr begin class constraint do done downto else end ' - + 'exception external for fun function functor if in include ' - + 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' - + 'mod module mutable new object of open! open or private rec sig struct ' - + 'then to try type val! val virtual when while with ' - /* camlp4 */ - + 'parser value', - built_in: - /* built-in types */ - 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' - /* (some) types in Pervasives */ - + 'in_channel out_channel ref', - literal: - 'true false' - }, - illegal: /\/\/|>>/, - contains: [ - { - className: 'literal', - begin: '\\[(\\|\\|)?\\]|\\(\\)', - relevance: 0 - }, - hljs.COMMENT( - '\\(\\*', - '\\*\\)', - { contains: [ 'self' ] } - ), - { /* type variable */ - className: 'symbol', - begin: '\'[A-Za-z_](?!\')[\\w\']*' - /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ - }, - { /* polymorphic variant */ - className: 'type', - begin: '`[A-Z][\\w\']*' - }, - { /* module or constructor */ - className: 'type', - begin: '\\b[A-Z][\\w\']*', - relevance: 0 - }, - { /* don't color identifiers, but safely catch all identifiers with ' */ - begin: '[a-z_]\\w*\'[\\w\']*', - relevance: 0 - }, - hljs.inherit(hljs.APOS_STRING_MODE, { - className: 'string', - relevance: 0 - }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), - { - className: 'number', - begin: - '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' - + '0[oO][0-7_]+[Lln]?|' - + '0[bB][01_]+[Lln]?|' - + '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)', - relevance: 0 - }, - { begin: /->/ // relevance booster - } - ] - }; -} - -module.exports = ocaml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/openscad.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/openscad.js ***! - \*****************************************************************/ -(module) { - -/* -Language: OpenSCAD -Author: Dan Panzarella -Description: OpenSCAD is a language for the 3D CAD modeling software of the same name. -Website: https://www.openscad.org -Category: scientific -*/ - -function openscad(hljs) { - const SPECIAL_VARS = { - className: 'keyword', - begin: '\\$(f[asn]|t|vp[rtd]|children)' - }; - const LITERALS = { - className: 'literal', - begin: 'false|true|PI|undef' - }; - const NUMBERS = { - className: 'number', - begin: '\\b\\d+(\\.\\d+)?(e-?\\d+)?', // adds 1e5, 1e-10 - relevance: 0 - }; - const STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }); - const PREPRO = { - className: 'meta', - keywords: { keyword: 'include use' }, - begin: 'include|use <', - end: '>' - }; - const PARAMS = { - className: 'params', - begin: '\\(', - end: '\\)', - contains: [ - 'self', - NUMBERS, - STRING, - SPECIAL_VARS, - LITERALS - ] - }; - const MODIFIERS = { - begin: '[*!#%]', - relevance: 0 - }; - const FUNCTIONS = { - className: 'function', - beginKeywords: 'module function', - end: /=|\{/, - contains: [ - PARAMS, - hljs.UNDERSCORE_TITLE_MODE - ] - }; - - return { - name: 'OpenSCAD', - aliases: [ 'scad' ], - keywords: { - keyword: 'function module include use for intersection_for if else \\%', - literal: 'false true PI undef', - built_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign' - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - NUMBERS, - PREPRO, - STRING, - SPECIAL_VARS, - MODIFIERS, - FUNCTIONS - ] - }; -} - -module.exports = openscad; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/oxygene.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/oxygene.js ***! - \****************************************************************/ -(module) { - -/* -Language: Oxygene -Author: Carlo Kok -Description: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century. -Website: https://www.elementscompiler.com/elements/default.aspx -Category: build-system -*/ - -function oxygene(hljs) { - const OXYGENE_KEYWORDS = { - $pattern: /\.?\w+/, - keyword: - 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue ' - + 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false ' - + 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited ' - + 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of ' - + 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly ' - + 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple ' - + 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal ' - + 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained' - }; - const CURLY_COMMENT = hljs.COMMENT( - /\{/, - /\}/, - { relevance: 0 } - ); - const PAREN_COMMENT = hljs.COMMENT( - '\\(\\*', - '\\*\\)', - { relevance: 10 } - ); - const STRING = { - className: 'string', - begin: '\'', - end: '\'', - contains: [ { begin: '\'\'' } ] - }; - const CHAR_STRING = { - className: 'string', - begin: '(#\\d+)+' - }; - const FUNCTION = { - beginKeywords: 'function constructor destructor procedure method', - end: '[:;]', - keywords: 'function constructor|10 destructor|10 procedure|10 method|10', - contains: [ - hljs.inherit(hljs.TITLE_MODE, { scope: "title.function" }), - { - className: 'params', - begin: '\\(', - end: '\\)', - keywords: OXYGENE_KEYWORDS, - contains: [ - STRING, - CHAR_STRING - ] - }, - CURLY_COMMENT, - PAREN_COMMENT - ] - }; - - const SEMICOLON = { - scope: "punctuation", - match: /;/, - relevance: 0 - }; - - return { - name: 'Oxygene', - case_insensitive: true, - keywords: OXYGENE_KEYWORDS, - illegal: '("|\\$[G-Zg-z]|\\/\\*||->)', - contains: [ - CURLY_COMMENT, - PAREN_COMMENT, - hljs.C_LINE_COMMENT_MODE, - STRING, - CHAR_STRING, - hljs.NUMBER_MODE, - FUNCTION, - SEMICOLON - ] - }; -} - -module.exports = oxygene; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/parser3.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/parser3.js ***! - \****************************************************************/ -(module) { - -/* -Language: Parser3 -Requires: xml.js -Author: Oleg Volchkov -Website: https://www.parser.ru/en/ -Category: template -*/ - -function parser3(hljs) { - const CURLY_SUBCOMMENT = hljs.COMMENT( - /\{/, - /\}/, - { contains: [ 'self' ] } - ); - return { - name: 'Parser3', - subLanguage: 'xml', - relevance: 0, - contains: [ - hljs.COMMENT('^#', '$'), - hljs.COMMENT( - /\^rem\{/, - /\}/, - { - relevance: 10, - contains: [ CURLY_SUBCOMMENT ] - } - ), - { - className: 'meta', - begin: '^@(?:BASE|USE|CLASS|OPTIONS)$', - relevance: 10 - }, - { - className: 'title', - begin: '@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$' - }, - { - className: 'variable', - begin: /\$\{?[\w\-.:]+\}?/ - }, - { - className: 'keyword', - begin: /\^[\w\-.:]+/ - }, - { - className: 'number', - begin: '\\^#[0-9a-fA-F]+' - }, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = parser3; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/perl.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/perl.js ***! - \*************************************************************/ -(module) { - -/* -Language: Perl -Author: Peter Leonov -Website: https://www.perl.org -Category: common -*/ - -/** @type LanguageFn */ -function perl(hljs) { - const regex = hljs.regex; - const KEYWORDS = [ - 'abs', - 'accept', - 'alarm', - 'and', - 'atan2', - 'bind', - 'binmode', - 'bless', - 'break', - 'caller', - 'chdir', - 'chmod', - 'chomp', - 'chop', - 'chown', - 'chr', - 'chroot', - 'class', - 'close', - 'closedir', - 'connect', - 'continue', - 'cos', - 'crypt', - 'dbmclose', - 'dbmopen', - 'defined', - 'delete', - 'die', - 'do', - 'dump', - 'each', - 'else', - 'elsif', - 'endgrent', - 'endhostent', - 'endnetent', - 'endprotoent', - 'endpwent', - 'endservent', - 'eof', - 'eval', - 'exec', - 'exists', - 'exit', - 'exp', - 'fcntl', - 'field', - 'fileno', - 'flock', - 'for', - 'foreach', - 'fork', - 'format', - 'formline', - 'getc', - 'getgrent', - 'getgrgid', - 'getgrnam', - 'gethostbyaddr', - 'gethostbyname', - 'gethostent', - 'getlogin', - 'getnetbyaddr', - 'getnetbyname', - 'getnetent', - 'getpeername', - 'getpgrp', - 'getpriority', - 'getprotobyname', - 'getprotobynumber', - 'getprotoent', - 'getpwent', - 'getpwnam', - 'getpwuid', - 'getservbyname', - 'getservbyport', - 'getservent', - 'getsockname', - 'getsockopt', - 'given', - 'glob', - 'gmtime', - 'goto', - 'grep', - 'gt', - 'hex', - 'if', - 'index', - 'int', - 'ioctl', - 'join', - 'keys', - 'kill', - 'last', - 'lc', - 'lcfirst', - 'length', - 'link', - 'listen', - 'local', - 'localtime', - 'log', - 'lstat', - 'lt', - 'ma', - 'map', - 'method', - 'mkdir', - 'msgctl', - 'msgget', - 'msgrcv', - 'msgsnd', - 'my', - 'ne', - 'next', - 'no', - 'not', - 'oct', - 'open', - 'opendir', - 'or', - 'ord', - 'our', - 'pack', - 'package', - 'pipe', - 'pop', - 'pos', - 'print', - 'printf', - 'prototype', - 'push', - 'q|0', - 'qq', - 'quotemeta', - 'qw', - 'qx', - 'rand', - 'read', - 'readdir', - 'readline', - 'readlink', - 'readpipe', - 'recv', - 'redo', - 'ref', - 'rename', - 'require', - 'reset', - 'return', - 'reverse', - 'rewinddir', - 'rindex', - 'rmdir', - 'say', - 'scalar', - 'seek', - 'seekdir', - 'select', - 'semctl', - 'semget', - 'semop', - 'send', - 'setgrent', - 'sethostent', - 'setnetent', - 'setpgrp', - 'setpriority', - 'setprotoent', - 'setpwent', - 'setservent', - 'setsockopt', - 'shift', - 'shmctl', - 'shmget', - 'shmread', - 'shmwrite', - 'shutdown', - 'sin', - 'sleep', - 'socket', - 'socketpair', - 'sort', - 'splice', - 'split', - 'sprintf', - 'sqrt', - 'srand', - 'stat', - 'state', - 'study', - 'sub', - 'substr', - 'symlink', - 'syscall', - 'sysopen', - 'sysread', - 'sysseek', - 'system', - 'syswrite', - 'tell', - 'telldir', - 'tie', - 'tied', - 'time', - 'times', - 'tr', - 'truncate', - 'uc', - 'ucfirst', - 'umask', - 'undef', - 'unless', - 'unlink', - 'unpack', - 'unshift', - 'untie', - 'until', - 'use', - 'utime', - 'values', - 'vec', - 'wait', - 'waitpid', - 'wantarray', - 'warn', - 'when', - 'while', - 'write', - 'x|0', - 'xor', - 'y|0' - ]; - - // https://perldoc.perl.org/perlre#Modifiers - const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12 - const PERL_KEYWORDS = { - $pattern: /[\w.]+/, - keyword: KEYWORDS.join(" ") - }; - const SUBST = { - className: 'subst', - begin: '[$@]\\{', - end: '\\}', - keywords: PERL_KEYWORDS - }; - const METHOD = { - begin: /->\{/, - end: /\}/ - // contains defined later - }; - const ATTR = { - scope: 'attr', - match: /\s+:\s*\w+(\s*\(.*?\))?/, - }; - const VAR = { - scope: 'variable', - variants: [ - { begin: /\$\d/ }, - { begin: regex.concat( - /[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/, - // negative look-ahead tries to avoid matching patterns that are not - // Perl at all like $ident$, @ident@, etc. - `(?![A-Za-z])(?![@$%])` - ) - }, - { - // Only $= is a special Perl variable and one can't declare @= or %=. - begin: /[$%@](?!")[^\s\w{=]|\$=/, - relevance: 0 - } - ], - contains: [ ATTR ], - }; - const NUMBER = { - className: 'number', - variants: [ - // decimal numbers: - // include the case where a number starts with a dot (eg. .9), and - // the leading 0? avoids mixing the first and second match on 0.x cases - { match: /0?\.[0-9][0-9_]+\b/ }, - // include the special versioned number (eg. v5.38) - { match: /\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/ }, - // non-decimal numbers: - { match: /\b0[0-7][0-7_]*\b/ }, - { match: /\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/ }, - { match: /\b0b[0-1][0-1_]*\b/ }, - ], - relevance: 0 - }; - const STRING_CONTAINS = [ - hljs.BACKSLASH_ESCAPE, - SUBST, - VAR - ]; - const REGEX_DELIMS = [ - /!/, - /\//, - /\|/, - /\?/, - /'/, - /"/, // valid but infrequent and weird - /#/ // valid but infrequent and weird - ]; - /** - * @param {string|RegExp} prefix - * @param {string|RegExp} open - * @param {string|RegExp} close - */ - const PAIRED_DOUBLE_RE = (prefix, open, close = '\\1') => { - const middle = (close === '\\1') - ? close - : regex.concat(close, open); - return regex.concat( - regex.concat("(?:", prefix, ")"), - open, - /(?:\\.|[^\\\/])*?/, - middle, - /(?:\\.|[^\\\/])*?/, - close, - REGEX_MODIFIERS - ); - }; - /** - * @param {string|RegExp} prefix - * @param {string|RegExp} open - * @param {string|RegExp} close - */ - const PAIRED_RE = (prefix, open, close) => { - return regex.concat( - regex.concat("(?:", prefix, ")"), - open, - /(?:\\.|[^\\\/])*?/, - close, - REGEX_MODIFIERS - ); - }; - const PERL_DEFAULT_CONTAINS = [ - VAR, - hljs.HASH_COMMENT_MODE, - hljs.COMMENT( - /^=\w/, - /=cut/, - { endsWithParent: true } - ), - METHOD, - { - className: 'string', - contains: STRING_CONTAINS, - variants: [ - { - begin: 'q[qwxr]?\\s*\\(', - end: '\\)', - relevance: 5 - }, - { - begin: 'q[qwxr]?\\s*\\[', - end: '\\]', - relevance: 5 - }, - { - begin: 'q[qwxr]?\\s*\\{', - end: '\\}', - relevance: 5 - }, - { - begin: 'q[qwxr]?\\s*\\|', - end: '\\|', - relevance: 5 - }, - { - begin: 'q[qwxr]?\\s*<', - end: '>', - relevance: 5 - }, - { - begin: 'qw\\s+q', - end: 'q', - relevance: 5 - }, - { - begin: '\'', - end: '\'', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '"', - end: '"' - }, - { - begin: '`', - end: '`', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: /\{\w+\}/, - relevance: 0 - }, - { - begin: '-?\\w+\\s*=>', - relevance: 0 - } - ] - }, - NUMBER, - { // regexp container - begin: '(\\/\\/|' + hljs.RE_STARTERS_RE + '|\\b(split|return|print|reverse|grep)\\b)\\s*', - keywords: 'split return print reverse grep', - relevance: 0, - contains: [ - hljs.HASH_COMMENT_MODE, - { - className: 'regexp', - variants: [ - // allow matching common delimiters - { begin: PAIRED_DOUBLE_RE("s|tr|y", regex.either(...REGEX_DELIMS, { capture: true })) }, - // and then paired delmis - { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\(", "\\)") }, - { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\[", "\\]") }, - { begin: PAIRED_DOUBLE_RE("s|tr|y", "\\{", "\\}") } - ], - relevance: 2 - }, - { - className: 'regexp', - variants: [ - { - // could be a comment in many languages so do not count - // as relevant - begin: /(m|qr)\/\//, - relevance: 0 - }, - // prefix is optional with /regex/ - { begin: PAIRED_RE("(?:m|qr)?", /\//, /\//) }, - // allow matching common delimiters - { begin: PAIRED_RE("m|qr", regex.either(...REGEX_DELIMS, { capture: true }), /\1/) }, - // allow common paired delmins - { begin: PAIRED_RE("m|qr", /\(/, /\)/) }, - { begin: PAIRED_RE("m|qr", /\[/, /\]/) }, - { begin: PAIRED_RE("m|qr", /\{/, /\}/) } - ] - } - ] - }, - { - className: 'function', - beginKeywords: 'sub method', - end: '(\\s*\\(.*?\\))?[;{]', - excludeEnd: true, - relevance: 5, - contains: [ hljs.TITLE_MODE, ATTR ] - }, - { - className: 'class', - beginKeywords: 'class', - end: '[;{]', - excludeEnd: true, - relevance: 5, - contains: [ hljs.TITLE_MODE, ATTR, NUMBER ] - }, - { - begin: '-\\w\\b', - relevance: 0 - }, - { - begin: "^__DATA__$", - end: "^__END__$", - subLanguage: 'mojolicious', - contains: [ - { - begin: "^@@.*", - end: "$", - className: "comment" - } - ] - } - ]; - SUBST.contains = PERL_DEFAULT_CONTAINS; - METHOD.contains = PERL_DEFAULT_CONTAINS; - - return { - name: 'Perl', - aliases: [ - 'pl', - 'pm' - ], - keywords: PERL_KEYWORDS, - contains: PERL_DEFAULT_CONTAINS - }; -} - -module.exports = perl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/pf.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/pf.js ***! - \***********************************************************/ -(module) { - -/* -Language: Packet Filter config -Description: pf.conf — packet filter configuration file (OpenBSD) -Author: Peter Piwowarski -Website: http://man.openbsd.org/pf.conf -Category: config -*/ - -function pf(hljs) { - const MACRO = { - className: 'variable', - begin: /\$[\w\d#@][\w\d_]*/, - relevance: 0 - }; - const TABLE = { - className: 'variable', - begin: /<(?!\/)/, - end: />/ - }; - - return { - name: 'Packet Filter config', - aliases: [ 'pf.conf' ], - keywords: { - $pattern: /[a-z0-9_<>-]+/, - built_in: /* block match pass are "actions" in pf.conf(5), the rest are - * lexically similar top-level commands. - */ - 'block match pass load anchor|5 antispoof|10 set table', - keyword: - 'in out log quick on rdomain inet inet6 proto from port os to route ' - + 'allow-opts divert-packet divert-reply divert-to flags group icmp-type ' - + 'icmp6-type label once probability recieved-on rtable prio queue ' - + 'tos tag tagged user keep fragment for os drop ' - + 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin ' - + 'source-hash static-port ' - + 'dup-to reply-to route-to ' - + 'parent bandwidth default min max qlimit ' - + 'block-policy debug fingerprints hostid limit loginterface optimization ' - + 'reassemble ruleset-optimization basic none profile skip state-defaults ' - + 'state-policy timeout ' - + 'const counters persist ' - + 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy ' - + 'source-track global rule max-src-nodes max-src-states max-src-conn ' - + 'max-src-conn-rate overload flush ' - + 'scrub|5 max-mss min-ttl no-df|10 random-id', - literal: - 'all any no-route self urpf-failed egress|5 unknown' - }, - contains: [ - hljs.HASH_COMMENT_MODE, - hljs.NUMBER_MODE, - hljs.QUOTE_STRING_MODE, - MACRO, - TABLE - ] - }; -} - -module.exports = pf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/pgsql.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/pgsql.js ***! - \**************************************************************/ -(module) { - -/* -Language: PostgreSQL and PL/pgSQL -Author: Egor Rogov (e.rogov@postgrespro.ru) -Website: https://www.postgresql.org/docs/11/sql.html -Description: - This language incorporates both PostgreSQL SQL dialect and PL/pgSQL language. - It is based on PostgreSQL version 11. Some notes: - - Text in double-dollar-strings is _always_ interpreted as some programming code. Text - in ordinary quotes is _never_ interpreted that way and highlighted just as a string. - - There are quite a bit "special cases". That's because many keywords are not strictly - they are keywords in some contexts and ordinary identifiers in others. Only some - of such cases are handled; you still can get some of your identifiers highlighted - wrong way. - - Function names deliberately are not highlighted. There is no way to tell function - call from other constructs, hence we can't highlight _all_ function names. And - some names highlighted while others not looks ugly. -Category: database -*/ - -function pgsql(hljs) { - const COMMENT_MODE = hljs.COMMENT('--', '$'); - const UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*'; - const DOLLAR_STRING = '\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$'; - const LABEL = '<<\\s*' + UNQUOTED_IDENT + '\\s*>>'; - - const SQL_KW = - // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html - // https://www.postgresql.org/docs/11/static/sql-commands.html - // SQL commands (starting words) - 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' - + 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' - + 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' - + 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' - // SQL commands (others) - + 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' - + 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' - + 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' - + 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' - + 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' - + 'INDEX PROCEDURE ASSERTION ' - // additional reserved key words - + 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' - + 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' - + 'DEFERRABLE RANGE ' - + 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' - + 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' - + 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' - + 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' - + 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' - // some of non-reserved (which are used in clauses or as PL/pgSQL keyword) - + 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' - + 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' - + 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' - + 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' - + 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' - + 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' - + 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' - + 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' - + 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' - + 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' - + 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' - // some parameters of VACUUM/ANALYZE/EXPLAIN - + 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' - // - + 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' - + 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' - // from GRANT (not keywords actually) - + 'USAGE ROUTINES ' - // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc) - + 'TRUE FALSE NAN INFINITY '; - - const ROLE_ATTRS = // only those not in keywrods already - 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' - + 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS '; - - const PLPGSQL_KW = - 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' - + 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' - + 'OPEN '; - - const TYPES = - // https://www.postgresql.org/docs/11/static/datatype.html - 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' - + 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' - + 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' - + 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' - + 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' - + 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' - // pseudotypes - + 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' - + 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' - // spec. type - + 'NAME ' - // OID-types - + 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' - + 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// + - - const TYPES_RE = - TYPES.trim() - .split(' ') - .map(function(val) { return val.split('|')[0]; }) - .join('|'); - - const SQL_BI = - 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' - + 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC '; - - const PLPGSQL_BI = - 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' - + 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' - // get diagnostics - + 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' - + 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' - + 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 '; - - const PLPGSQL_EXCEPTIONS = - // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html - 'SQLSTATE SQLERRM|10 ' - + 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' - + 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' - + 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' - + 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' - + 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' - + 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' - + 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' - + 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' - + 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' - + 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' - + 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' - + 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' - + 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' - + 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' - + 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' - + 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' - + 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' - + 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' - + 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' - + 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' - + 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' - + 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' - + 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' - + 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' - + 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' - + 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' - + 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' - + 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' - + 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' - + 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' - + 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' - + 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' - + 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' - + 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' - + 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' - + 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' - + 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' - + 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' - + 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' - + 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' - + 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' - + 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' - + 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' - + 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' - + 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' - + 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' - + 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' - + 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' - + 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' - + 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' - + 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' - + 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' - + 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' - + 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' - + 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' - + 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' - + 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' - + 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' - + 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' - + 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' - + 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' - + 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' - + 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' - + 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' - + 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' - + 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' - + 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' - + 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' - + 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' - + 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' - + 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' - + 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' - + 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' - + 'INDEX_CORRUPTED '; - - const FUNCTIONS = - // https://www.postgresql.org/docs/11/static/functions-aggregate.html - 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' - + 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' - + 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' - + 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' - + 'PERCENTILE_CONT PERCENTILE_DISC ' - // https://www.postgresql.org/docs/11/static/functions-window.html - + 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' - // https://www.postgresql.org/docs/11/static/functions-comparison.html - + 'NUM_NONNULLS NUM_NULLS ' - // https://www.postgresql.org/docs/11/static/functions-math.html - + 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' - + 'TRUNC WIDTH_BUCKET ' - + 'RANDOM SETSEED ' - + 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' - // https://www.postgresql.org/docs/11/static/functions-string.html - + 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' - + 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP ' - + 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' - + 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' - + 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' - + 'TO_ASCII TO_HEX TRANSLATE ' - // https://www.postgresql.org/docs/11/static/functions-binarystring.html - + 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' - // https://www.postgresql.org/docs/11/static/functions-formatting.html - + 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' - // https://www.postgresql.org/docs/11/static/functions-datetime.html - + 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' - + 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' - + 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' - // https://www.postgresql.org/docs/11/static/functions-enum.html - + 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' - // https://www.postgresql.org/docs/11/static/functions-geometry.html - + 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' - + 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' - // https://www.postgresql.org/docs/11/static/functions-net.html - + 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY ' - + 'INET_MERGE MACADDR8_SET7BIT ' - // https://www.postgresql.org/docs/11/static/functions-textsearch.html - + 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' - + 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' - + 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' - + 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' - // https://www.postgresql.org/docs/11/static/functions-xml.html - + 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' - + 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' - + 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' - + 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' - + 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' - + 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' - + 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' - + 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' - + 'XMLATTRIBUTES ' - // https://www.postgresql.org/docs/11/static/functions-json.html - + 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' - + 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' - + 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' - + 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' - + 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' - + 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' - + 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' - // https://www.postgresql.org/docs/11/static/functions-sequence.html - + 'CURRVAL LASTVAL NEXTVAL SETVAL ' - // https://www.postgresql.org/docs/11/static/functions-conditional.html - + 'COALESCE NULLIF GREATEST LEAST ' - // https://www.postgresql.org/docs/11/static/functions-array.html - + 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' - + 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' - + 'STRING_TO_ARRAY UNNEST ' - // https://www.postgresql.org/docs/11/static/functions-range.html - + 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' - // https://www.postgresql.org/docs/11/static/functions-srf.html - + 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' - // https://www.postgresql.org/docs/11/static/functions-info.html - + 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' - + 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' - + 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' - + 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' - + 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' - + 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' - // https://www.postgresql.org/docs/11/static/functions-admin.html - + 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' - + 'GIN_CLEAN_PENDING_LIST ' - // https://www.postgresql.org/docs/11/static/functions-trigger.html - + 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' - // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html - + 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' - // - + 'GROUPING CAST '; - - const FUNCTIONS_RE = - FUNCTIONS.trim() - .split(' ') - .map(function(val) { return val.split('|')[0]; }) - .join('|'); - - return { - name: 'PostgreSQL', - aliases: [ - 'postgres', - 'postgresql' - ], - supersetOf: "sql", - case_insensitive: true, - keywords: { - keyword: - SQL_KW + PLPGSQL_KW + ROLE_ATTRS, - built_in: - SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS - }, - // Forbid some cunstructs from other languages to improve autodetect. In fact - // "[a-z]:" is legal (as part of array slice), but improbabal. - illegal: /:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/, - contains: [ - // special handling of some words, which are reserved only in some contexts - { - className: 'keyword', - variants: [ - { begin: /\bTEXT\s*SEARCH\b/ }, - { begin: /\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/ }, - { begin: /\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/ }, - { begin: /\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/ }, - { begin: /\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/ }, - { begin: /\bNULLS\s+(FIRST|LAST)\b/ }, - { begin: /\bEVENT\s+TRIGGER\b/ }, - { begin: /\b(MAPPING|OR)\s+REPLACE\b/ }, - { begin: /\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/ }, - { begin: /\b(SHARE|EXCLUSIVE)\s+MODE\b/ }, - { begin: /\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/ }, - { begin: /\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/ }, - { begin: /\bPRESERVE\s+ROWS\b/ }, - { begin: /\bDISCARD\s+PLANS\b/ }, - { begin: /\bREFERENCING\s+(OLD|NEW)\b/ }, - { begin: /\bSKIP\s+LOCKED\b/ }, - { begin: /\bGROUPING\s+SETS\b/ }, - { begin: /\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/ }, - { begin: /\b(WITH|WITHOUT)\s+HOLD\b/ }, - { begin: /\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/ }, - { begin: /\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/ }, - { begin: /\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/ }, - { begin: /\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/ }, - { begin: /\bIS\s+(NOT\s+)?UNKNOWN\b/ }, - { begin: /\bSECURITY\s+LABEL\b/ }, - { begin: /\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/ }, - { begin: /\bWITH\s+(NO\s+)?DATA\b/ }, - { begin: /\b(FOREIGN|SET)\s+DATA\b/ }, - { begin: /\bSET\s+(CATALOG|CONSTRAINTS)\b/ }, - { begin: /\b(WITH|FOR)\s+ORDINALITY\b/ }, - { begin: /\bIS\s+(NOT\s+)?DOCUMENT\b/ }, - { begin: /\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/ }, - { begin: /\b(STRIP|PRESERVE)\s+WHITESPACE\b/ }, - { begin: /\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/ }, - { begin: /\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/ }, - { begin: /\bAT\s+TIME\s+ZONE\b/ }, - { begin: /\bGRANTED\s+BY\b/ }, - { begin: /\bRETURN\s+(QUERY|NEXT)\b/ }, - { begin: /\b(ATTACH|DETACH)\s+PARTITION\b/ }, - { begin: /\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/ }, - { begin: /\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/ }, - { begin: /\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/ } - ] - }, - // functions named as keywords, followed by '(' - { begin: /\b(FORMAT|FAMILY|VERSION)\s*\(/ - // keywords: { built_in: 'FORMAT FAMILY VERSION' } - }, - // INCLUDE ( ... ) in index_parameters in CREATE TABLE - { - begin: /\bINCLUDE\s*\(/, - keywords: 'INCLUDE' - }, - // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory) - { begin: /\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/ }, - // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE - // and in PL/pgSQL RAISE ... USING - { begin: /\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/ }, - // PG_smth; HAS_some_PRIVILEGE - { - // className: 'built_in', - begin: /\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/, - relevance: 10 - }, - // extract - { - begin: /\bEXTRACT\s*\(/, - end: /\bFROM\b/, - returnEnd: true, - keywords: { - // built_in: 'EXTRACT', - type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' - + 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' - + 'TIMEZONE_MINUTE WEEK YEAR' } - }, - // xmlelement, xmlpi - special NAME - { - begin: /\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/, - keywords: { - // built_in: 'XMLELEMENT XMLPI', - keyword: 'NAME' } - }, - // xmlparse, xmlserialize - { - begin: /\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/, - keywords: { - // built_in: 'XMLPARSE XMLSERIALIZE', - keyword: 'DOCUMENT CONTENT' } - }, - // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and - // nearest following numeric constant. Without with trick we find a lot of "keywords" - // in 'avrasm' autodetection test... - { - beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE', - end: hljs.C_NUMBER_RE, - returnEnd: true, - keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE' - }, - // WITH|WITHOUT TIME ZONE as part of datatype - { - className: 'type', - begin: /\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/ - }, - // INTERVAL optional fields - { - className: 'type', - begin: /\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/ - }, - // Pseudo-types which allowed only as return type - { - begin: /\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/, - keywords: { - keyword: 'RETURNS', - type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER' - } - }, - // Known functions - only when followed by '(' - { begin: '\\b(' + FUNCTIONS_RE + ')\\s*\\(' - // keywords: { built_in: FUNCTIONS } - }, - // Types - { begin: '\\.(' + TYPES_RE + ')\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid' - }, - { - begin: '\\b(' + TYPES_RE + ')\\s+PATH\\b', // in XMLTABLE - keywords: { - keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE... - type: TYPES.replace('PATH ', '') - } - }, - { - className: 'type', - begin: '\\b(' + TYPES_RE + ')\\b' - }, - // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS - { - className: 'string', - begin: '\'', - end: '\'', - contains: [ { begin: '\'\'' } ] - }, - { - className: 'string', - begin: '(e|E|u&|U&)\'', - end: '\'', - contains: [ { begin: '\\\\.' } ], - relevance: 10 - }, - hljs.END_SAME_AS_BEGIN({ - begin: DOLLAR_STRING, - end: DOLLAR_STRING, - contains: [ - { - // actually we want them all except SQL; listed are those with known implementations - // and XML + JSON just in case - subLanguage: [ - 'pgsql', - 'perl', - 'python', - 'tcl', - 'r', - 'lua', - 'java', - 'php', - 'ruby', - 'bash', - 'scheme', - 'xml', - 'json' - ], - endsWithParent: true - } - ] - }), - // identifiers in quotes - { - begin: '"', - end: '"', - contains: [ { begin: '""' } ] - }, - // numbers - hljs.C_NUMBER_MODE, - // comments - hljs.C_BLOCK_COMMENT_MODE, - COMMENT_MODE, - // PL/pgSQL staff - // %ROWTYPE, %TYPE, $n - { - className: 'meta', - variants: [ - { // %TYPE, %ROWTYPE - begin: '%(ROW)?TYPE', - relevance: 10 - }, - { // $n - begin: '\\$\\d+' }, - { // #compiler option - begin: '^#\\w', - end: '$' - } - ] - }, - // <> - { - className: 'symbol', - begin: LABEL, - relevance: 10 - } - ] - }; -} - -module.exports = pgsql; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/php-template.js" -/*!*********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/php-template.js ***! - \*********************************************************************/ -(module) { - -/* -Language: PHP Template -Requires: xml.js, php.js -Author: Josh Goebel -Website: https://www.php.net -Category: common -*/ - -function phpTemplate(hljs) { - return { - name: "PHP template", - subLanguage: 'xml', - contains: [ - { - begin: /<\?(php|=)?/, - end: /\?>/, - subLanguage: 'php', - contains: [ - // We don't want the php closing tag ?> to close the PHP block when - // inside any of the following blocks: - { - begin: '/\\*', - end: '\\*/', - skip: true - }, - { - begin: 'b"', - end: '"', - skip: true - }, - { - begin: 'b\'', - end: '\'', - skip: true - }, - hljs.inherit(hljs.APOS_STRING_MODE, { - illegal: null, - className: null, - contains: null, - skip: true - }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { - illegal: null, - className: null, - contains: null, - skip: true - }) - ] - } - ] - }; -} - -module.exports = phpTemplate; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/php.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/php.js ***! - \************************************************************/ -(module) { - -/* -Language: PHP -Author: Victor Karamzin -Contributors: Evgeny Stepanischev , Ivan Sagalaev -Website: https://www.php.net -Category: common -*/ - -/** - * @param {HLJSApi} hljs - * @returns {LanguageDetail} - * */ -function php(hljs) { - const regex = hljs.regex; - // negative look-ahead tries to avoid matching patterns that are not - // Perl at all like $ident$, @ident@, etc. - const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/; - const IDENT_RE = regex.concat( - /[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/, - NOT_PERL_ETC); - // Will not detect camelCase classes - const PASCAL_CASE_CLASS_NAME_RE = regex.concat( - /(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/, - NOT_PERL_ETC); - const UPCASE_NAME_RE = regex.concat( - /[A-Z]+/, - NOT_PERL_ETC); - const VARIABLE = { - scope: 'variable', - match: '\\$+' + IDENT_RE, - }; - const PREPROCESSOR = { - scope: "meta", - variants: [ - { begin: /<\?php/, relevance: 10 }, // boost for obvious PHP - { begin: /<\?=/ }, - // less relevant per PSR-1 which says not to use short-tags - { begin: /<\?/, relevance: 0.1 }, - { begin: /\?>/ } // end php tag - ] - }; - const SUBST = { - scope: 'subst', - variants: [ - { begin: /\$\w+/ }, - { - begin: /\{\$/, - end: /\}/ - } - ] - }; - const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, }); - const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, { - illegal: null, - contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST), - }); - - const HEREDOC = { - begin: /<<<[ \t]*(?:(\w+)|"(\w+)")\n/, - end: /[ \t]*(\w+)\b/, - contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST), - 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; }, - 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }, - }; - - const NOWDOC = hljs.END_SAME_AS_BEGIN({ - begin: /<<<[ \t]*'(\w+)'\n/, - end: /[ \t]*(\w+)\b/, - }); - // list of valid whitespaces because non-breaking space might be part of a IDENT_RE - const WHITESPACE = '[ \t\n]'; - const STRING = { - scope: 'string', - variants: [ - DOUBLE_QUOTED, - SINGLE_QUOTED, - HEREDOC, - NOWDOC - ] - }; - const NUMBER = { - scope: 'number', - variants: [ - { begin: `\\b0[bB][01]+(?:_[01]+)*\\b` }, // Binary w/ underscore support - { begin: `\\b0[oO][0-7]+(?:_[0-7]+)*\\b` }, // Octals w/ underscore support - { begin: `\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b` }, // Hex w/ underscore support - // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix. - { begin: `(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?` } - ], - relevance: 0 - }; - const LITERALS = [ - "false", - "null", - "true" - ]; - const KWS = [ - // Magic constants: - // - "__CLASS__", - "__DIR__", - "__FILE__", - "__FUNCTION__", - "__COMPILER_HALT_OFFSET__", - "__LINE__", - "__METHOD__", - "__NAMESPACE__", - "__TRAIT__", - // Function that look like language construct or language construct that look like function: - // List of keywords that may not require parenthesis - "die", - "echo", - "exit", - "include", - "include_once", - "print", - "require", - "require_once", - // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table - // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' + - // Other keywords: - // - // - "array", - "abstract", - "and", - "as", - "binary", - "bool", - "boolean", - "break", - "callable", - "case", - "catch", - "class", - "clone", - "const", - "continue", - "declare", - "default", - "do", - "double", - "else", - "elseif", - "empty", - "enddeclare", - "endfor", - "endforeach", - "endif", - "endswitch", - "endwhile", - "enum", - "eval", - "extends", - "final", - "finally", - "float", - "for", - "foreach", - "from", - "global", - "goto", - "if", - "implements", - "instanceof", - "insteadof", - "int", - "integer", - "interface", - "isset", - "iterable", - "list", - "match|0", - "mixed", - "new", - "never", - "object", - "or", - "private", - "protected", - "public", - "readonly", - "real", - "return", - "string", - "switch", - "throw", - "trait", - "try", - "unset", - "use", - "var", - "void", - "while", - "xor", - "yield" - ]; - - const BUILT_INS = [ - // Standard PHP library: - // - "Error|0", - "AppendIterator", - "ArgumentCountError", - "ArithmeticError", - "ArrayIterator", - "ArrayObject", - "AssertionError", - "BadFunctionCallException", - "BadMethodCallException", - "CachingIterator", - "CallbackFilterIterator", - "CompileError", - "Countable", - "DirectoryIterator", - "DivisionByZeroError", - "DomainException", - "EmptyIterator", - "ErrorException", - "Exception", - "FilesystemIterator", - "FilterIterator", - "GlobIterator", - "InfiniteIterator", - "InvalidArgumentException", - "IteratorIterator", - "LengthException", - "LimitIterator", - "LogicException", - "MultipleIterator", - "NoRewindIterator", - "OutOfBoundsException", - "OutOfRangeException", - "OuterIterator", - "OverflowException", - "ParentIterator", - "ParseError", - "RangeException", - "RecursiveArrayIterator", - "RecursiveCachingIterator", - "RecursiveCallbackFilterIterator", - "RecursiveDirectoryIterator", - "RecursiveFilterIterator", - "RecursiveIterator", - "RecursiveIteratorIterator", - "RecursiveRegexIterator", - "RecursiveTreeIterator", - "RegexIterator", - "RuntimeException", - "SeekableIterator", - "SplDoublyLinkedList", - "SplFileInfo", - "SplFileObject", - "SplFixedArray", - "SplHeap", - "SplMaxHeap", - "SplMinHeap", - "SplObjectStorage", - "SplObserver", - "SplPriorityQueue", - "SplQueue", - "SplStack", - "SplSubject", - "SplTempFileObject", - "TypeError", - "UnderflowException", - "UnexpectedValueException", - "UnhandledMatchError", - // Reserved interfaces: - // - "ArrayAccess", - "BackedEnum", - "Closure", - "Fiber", - "Generator", - "Iterator", - "IteratorAggregate", - "Serializable", - "Stringable", - "Throwable", - "Traversable", - "UnitEnum", - "WeakReference", - "WeakMap", - // Reserved classes: - // - "Directory", - "__PHP_Incomplete_Class", - "parent", - "php_user_filter", - "self", - "static", - "stdClass" - ]; - - /** Dual-case keywords - * - * ["then","FILE"] => - * ["then", "THEN", "FILE", "file"] - * - * @param {string[]} items */ - const dualCase = (items) => { - /** @type string[] */ - const result = []; - items.forEach(item => { - result.push(item); - if (item.toLowerCase() === item) { - result.push(item.toUpperCase()); - } else { - result.push(item.toLowerCase()); - } - }); - return result; - }; - - const KEYWORDS = { - keyword: KWS, - literal: dualCase(LITERALS), - built_in: BUILT_INS, - }; - - /** - * @param {string[]} items */ - const normalizeKeywords = (items) => { - return items.map(item => { - return item.replace(/\|\d+$/, ""); - }); - }; - - const CONSTRUCTOR_CALL = { variants: [ - { - match: [ - /new/, - regex.concat(WHITESPACE, "+"), - // to prevent built ins from being confused as the class constructor call - regex.concat("(?!", normalizeKeywords(BUILT_INS).join("\\b|"), "\\b)"), - PASCAL_CASE_CLASS_NAME_RE, - ], - scope: { - 1: "keyword", - 4: "title.class", - }, - } - ] }; - - const CONSTANT_REFERENCE = regex.concat(IDENT_RE, "\\b(?!\\()"); - - const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [ - { - match: [ - regex.concat( - /::/, - regex.lookahead(/(?!class\b)/) - ), - CONSTANT_REFERENCE, - ], - scope: { 2: "variable.constant", }, - }, - { - match: [ - /::/, - /class/, - ], - scope: { 2: "variable.language", }, - }, - { - match: [ - PASCAL_CASE_CLASS_NAME_RE, - regex.concat( - /::/, - regex.lookahead(/(?!class\b)/) - ), - CONSTANT_REFERENCE, - ], - scope: { - 1: "title.class", - 3: "variable.constant", - }, - }, - { - match: [ - PASCAL_CASE_CLASS_NAME_RE, - regex.concat( - "::", - regex.lookahead(/(?!class\b)/) - ), - ], - scope: { 1: "title.class", }, - }, - { - match: [ - PASCAL_CASE_CLASS_NAME_RE, - /::/, - /class/, - ], - scope: { - 1: "title.class", - 3: "variable.language", - }, - } - ] }; - - const NAMED_ARGUMENT = { - scope: 'attr', - match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)), - }; - const PARAMS_MODE = { - relevance: 0, - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: [ - NAMED_ARGUMENT, - VARIABLE, - LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, - hljs.C_BLOCK_COMMENT_MODE, - STRING, - NUMBER, - CONSTRUCTOR_CALL, - ], - }; - const FUNCTION_INVOKE = { - relevance: 0, - match: [ - /\b/, - // to prevent keywords from being confused as the function title - regex.concat("(?!fn\\b|function\\b|", normalizeKeywords(KWS).join("\\b|"), "|", normalizeKeywords(BUILT_INS).join("\\b|"), "\\b)"), - IDENT_RE, - regex.concat(WHITESPACE, "*"), - regex.lookahead(/(?=\()/) - ], - scope: { 3: "title.function.invoke", }, - contains: [ PARAMS_MODE ] - }; - PARAMS_MODE.contains.push(FUNCTION_INVOKE); - - const ATTRIBUTE_CONTAINS = [ - NAMED_ARGUMENT, - LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, - hljs.C_BLOCK_COMMENT_MODE, - STRING, - NUMBER, - CONSTRUCTOR_CALL, - ]; - - const ATTRIBUTES = { - begin: regex.concat(/#\[\s*\\?/, - regex.either( - PASCAL_CASE_CLASS_NAME_RE, - UPCASE_NAME_RE - ) - ), - beginScope: "meta", - end: /]/, - endScope: "meta", - keywords: { - literal: LITERALS, - keyword: [ - 'new', - 'array', - ] - }, - contains: [ - { - begin: /\[/, - end: /]/, - keywords: { - literal: LITERALS, - keyword: [ - 'new', - 'array', - ] - }, - contains: [ - 'self', - ...ATTRIBUTE_CONTAINS, - ] - }, - ...ATTRIBUTE_CONTAINS, - { - scope: 'meta', - variants: [ - { match: PASCAL_CASE_CLASS_NAME_RE }, - { match: UPCASE_NAME_RE } - ] - } - ] - }; - - return { - case_insensitive: false, - keywords: KEYWORDS, - contains: [ - ATTRIBUTES, - hljs.HASH_COMMENT_MODE, - hljs.COMMENT('//', '$'), - hljs.COMMENT( - '/\\*', - '\\*/', - { contains: [ - { - scope: 'doctag', - match: '@[A-Za-z]+' - } - ] } - ), - { - match: /__halt_compiler\(\);/, - keywords: '__halt_compiler', - starts: { - scope: "comment", - end: hljs.MATCH_NOTHING_RE, - contains: [ - { - match: /\?>/, - scope: "meta", - endsParent: true - } - ] - } - }, - PREPROCESSOR, - { - scope: 'variable.language', - match: /\$this\b/ - }, - VARIABLE, - FUNCTION_INVOKE, - LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, - { - match: [ - /const/, - /\s/, - IDENT_RE, - ], - scope: { - 1: "keyword", - 3: "variable.constant", - }, - }, - CONSTRUCTOR_CALL, - { - scope: 'function', - relevance: 0, - beginKeywords: 'fn function', - end: /[;{]/, - excludeEnd: true, - illegal: '[$%\\[]', - contains: [ - { beginKeywords: 'use', }, - hljs.UNDERSCORE_TITLE_MODE, - { - begin: '=>', // No markup, just a relevance booster - endsParent: true - }, - { - scope: 'params', - begin: '\\(', - end: '\\)', - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS, - contains: [ - 'self', - ATTRIBUTES, - VARIABLE, - LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, - hljs.C_BLOCK_COMMENT_MODE, - STRING, - NUMBER - ] - }, - ] - }, - { - scope: 'class', - variants: [ - { - beginKeywords: "enum", - illegal: /[($"]/ - }, - { - beginKeywords: "class interface trait", - illegal: /[:($"]/ - } - ], - relevance: 0, - end: /\{/, - excludeEnd: true, - contains: [ - { beginKeywords: 'extends implements' }, - hljs.UNDERSCORE_TITLE_MODE - ] - }, - // both use and namespace still use "old style" rules (vs multi-match) - // because the namespace name can include `\` and we still want each - // element to be treated as its own *individual* title - { - beginKeywords: 'namespace', - relevance: 0, - end: ';', - illegal: /[.']/, - contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: "title.class" }) ] - }, - { - beginKeywords: 'use', - relevance: 0, - end: ';', - contains: [ - // TODO: title.function vs title.class - { - match: /\b(as|const|function)\b/, - scope: "keyword" - }, - // TODO: could be title.class or title.function - hljs.UNDERSCORE_TITLE_MODE - ] - }, - STRING, - NUMBER, - ] - }; -} - -module.exports = php; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/plaintext.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/plaintext.js ***! - \******************************************************************/ -(module) { - -/* -Language: Plain text -Author: Egor Rogov (e.rogov@postgrespro.ru) -Description: Plain text without any highlighting. -Category: common -*/ - -function plaintext(hljs) { - return { - name: 'Plain text', - aliases: [ - 'text', - 'txt' - ], - disableAutodetect: true - }; -} - -module.exports = plaintext; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/pony.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/pony.js ***! - \*************************************************************/ -(module) { - -/* -Language: Pony -Author: Joe Eli McIlvain -Description: Pony is an open-source, object-oriented, actor-model, - capabilities-secure, high performance programming language. -Website: https://www.ponylang.io -Category: system -*/ - -function pony(hljs) { - const KEYWORDS = { - keyword: - 'actor addressof and as be break class compile_error compile_intrinsic ' - + 'consume continue delegate digestof do else elseif embed end error ' - + 'for fun if ifdef in interface is isnt lambda let match new not object ' - + 'or primitive recover repeat return struct then trait try type until ' - + 'use var where while with xor', - meta: - 'iso val tag trn box ref', - literal: - 'this false true' - }; - - const TRIPLE_QUOTE_STRING_MODE = { - className: 'string', - begin: '"""', - end: '"""', - relevance: 10 - }; - - const QUOTE_STRING_MODE = { - className: 'string', - begin: '"', - end: '"', - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - - const SINGLE_QUOTE_CHAR_MODE = { - className: 'string', - begin: '\'', - end: '\'', - contains: [ hljs.BACKSLASH_ESCAPE ], - relevance: 0 - }; - - const TYPE_NAME = { - className: 'type', - begin: '\\b_?[A-Z][\\w]*', - relevance: 0 - }; - - const PRIMED_NAME = { - begin: hljs.IDENT_RE + '\'', - relevance: 0 - }; - - const NUMBER_MODE = { - className: 'number', - begin: '(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)', - relevance: 0 - }; - - /** - * The `FUNCTION` and `CLASS` modes were intentionally removed to simplify - * highlighting and fix cases like - * ``` - * interface Iterator[A: A] - * fun has_next(): Bool - * fun next(): A? - * ``` - * where it is valid to have a function head without a body - */ - - return { - name: 'Pony', - keywords: KEYWORDS, - contains: [ - TYPE_NAME, - TRIPLE_QUOTE_STRING_MODE, - QUOTE_STRING_MODE, - SINGLE_QUOTE_CHAR_MODE, - PRIMED_NAME, - NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; -} - -module.exports = pony; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/powershell.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/powershell.js ***! - \*******************************************************************/ -(module) { - -/* -Language: PowerShell -Description: PowerShell is a task-based command-line shell and scripting language built on .NET. -Author: David Mohundro -Contributors: Nicholas Blumhardt , Victor Zhou , Nicolas Le Gall -Website: https://docs.microsoft.com/en-us/powershell/ -Category: scripting -*/ - -function powershell(hljs) { - const TYPES = [ - "string", - "char", - "byte", - "int", - "long", - "bool", - "decimal", - "single", - "double", - "DateTime", - "xml", - "array", - "hashtable", - "void" - ]; - - // https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands - const VALID_VERBS = - 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|' - + 'Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|' - + 'Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|' - + 'Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|' - + 'ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|' - + 'Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|' - + 'Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|' - + 'Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|' - + 'Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|' - + 'Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|' - + 'Unprotect|Use|ForEach|Sort|Tee|Where'; - - const COMPARISON_OPERATORS = - '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|' - + '-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|' - + '-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|' - + '-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|' - + '-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|' - + '-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|' - + '-split|-wildcard|-xor'; - - const KEYWORDS = { - $pattern: /-?[A-z\.\-]+\b/, - keyword: - 'if else foreach return do while until elseif begin for trap data dynamicparam ' - + 'end break throw param continue finally in switch exit filter try process catch ' - + 'hidden static parameter', - // "echo" relevance has been set to 0 to avoid auto-detect conflicts with shell transcripts - built_in: - 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp ' - + 'cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx ' - + 'fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group ' - + 'gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi ' - + 'iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh ' - + 'popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp ' - + 'rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp ' - + 'spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write' - // TODO: 'validate[A-Z]+' can't work in keywords - }; - - const TITLE_NAME_RE = /\w[\w\d]*((-)[\w\d]+)*/; - - const BACKTICK_ESCAPE = { - begin: '`[\\s\\S]', - relevance: 0 - }; - - const VAR = { - className: 'variable', - variants: [ - { begin: /\$\B/ }, - { - className: 'keyword', - begin: /\$this/ - }, - { begin: /\$[\w\d][\w\d_:]*/ } - ] - }; - - const LITERAL = { - className: 'literal', - begin: /\$(null|true|false)\b/ - }; - - const QUOTE_STRING = { - className: "string", - variants: [ - { - begin: /"/, - end: /"/ - }, - { - begin: /@"/, - end: /^"@/ - } - ], - contains: [ - BACKTICK_ESCAPE, - VAR, - { - className: 'variable', - begin: /\$[A-z]/, - end: /[^A-z]/ - } - ] - }; - - const APOS_STRING = { - className: 'string', - variants: [ - { - begin: /'/, - end: /'/ - }, - { - begin: /@'/, - end: /^'@/ - } - ] - }; - - const PS_HELPTAGS = { - className: "doctag", - variants: [ - /* no paramater help tags */ - { begin: /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ }, - /* one parameter help tags */ - { begin: /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ } - ] - }; - - const PS_COMMENT = hljs.inherit( - hljs.COMMENT(null, null), - { - variants: [ - /* single-line comment */ - { - begin: /#/, - end: /$/ - }, - /* multi-line comment */ - { - begin: /<#/, - end: /#>/ - } - ], - contains: [ PS_HELPTAGS ] - } - ); - - const CMDLETS = { - className: 'built_in', - variants: [ { begin: '('.concat(VALID_VERBS, ')+(-)[\\w\\d]+') } ] - }; - - const PS_CLASS = { - className: 'class', - beginKeywords: 'class enum', - end: /\s*[{]/, - excludeEnd: true, - relevance: 0, - contains: [ hljs.TITLE_MODE ] - }; - - const PS_FUNCTION = { - className: 'function', - begin: /function\s+/, - end: /\s*\{|$/, - excludeEnd: true, - returnBegin: true, - relevance: 0, - contains: [ - { - begin: "function", - relevance: 0, - className: "keyword" - }, - { - className: "title", - begin: TITLE_NAME_RE, - relevance: 0 - }, - { - begin: /\(/, - end: /\)/, - className: "params", - relevance: 0, - contains: [ VAR ] - } - // CMDLETS - ] - }; - - // Using statment, plus type, plus assembly name. - const PS_USING = { - begin: /using\s/, - end: /$/, - returnBegin: true, - contains: [ - QUOTE_STRING, - APOS_STRING, - { - className: 'keyword', - begin: /(using|assembly|command|module|namespace|type)/ - } - ] - }; - - // Comperison operators & function named parameters. - const PS_ARGUMENTS = { variants: [ - // PS literals are pretty verbose so it's a good idea to accent them a bit. - { - className: 'operator', - begin: '('.concat(COMPARISON_OPERATORS, ')\\b') - }, - { - className: 'literal', - begin: /(-){1,2}[\w\d-]+/, - relevance: 0 - } - ] }; - - const HASH_SIGNS = { - className: 'selector-tag', - begin: /@\B/, - relevance: 0 - }; - - // It's a very general rule so I'll narrow it a bit with some strict boundaries - // to avoid any possible false-positive collisions! - const PS_METHODS = { - className: 'function', - begin: /\[.*\]\s*[\w]+[ ]??\(/, - end: /$/, - returnBegin: true, - relevance: 0, - contains: [ - { - className: 'keyword', - begin: '('.concat( - KEYWORDS.keyword.toString().replace(/\s/g, '|' - ), ')\\b'), - endsParent: true, - relevance: 0 - }, - hljs.inherit(hljs.TITLE_MODE, { endsParent: true }) - ] - }; - - const GENTLEMANS_SET = [ - // STATIC_MEMBER, - PS_METHODS, - PS_COMMENT, - BACKTICK_ESCAPE, - hljs.NUMBER_MODE, - QUOTE_STRING, - APOS_STRING, - // PS_NEW_OBJECT_TYPE, - CMDLETS, - VAR, - LITERAL, - HASH_SIGNS - ]; - - const PS_TYPE = { - begin: /\[/, - end: /\]/, - excludeBegin: true, - excludeEnd: true, - relevance: 0, - contains: [].concat( - 'self', - GENTLEMANS_SET, - { - begin: "(" + TYPES.join("|") + ")", - className: "built_in", - relevance: 0 - }, - { - className: 'type', - begin: /[\.\w\d]+/, - relevance: 0 - } - ) - }; - - PS_METHODS.contains.unshift(PS_TYPE); - - return { - name: 'PowerShell', - aliases: [ - "pwsh", - "ps", - "ps1" - ], - case_insensitive: true, - keywords: KEYWORDS, - contains: GENTLEMANS_SET.concat( - PS_CLASS, - PS_FUNCTION, - PS_USING, - PS_ARGUMENTS, - PS_TYPE - ) - }; -} - -module.exports = powershell; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/processing.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/processing.js ***! - \*******************************************************************/ -(module) { - -/* -Language: Processing -Description: Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. -Author: Erik Paluka -Website: https://processing.org -Category: graphics -*/ - -function processing(hljs) { - const regex = hljs.regex; - const BUILT_INS = [ - "displayHeight", - "displayWidth", - "mouseY", - "mouseX", - "mousePressed", - "pmouseX", - "pmouseY", - "key", - "keyCode", - "pixels", - "focused", - "frameCount", - "frameRate", - "height", - "width", - "size", - "createGraphics", - "beginDraw", - "createShape", - "loadShape", - "PShape", - "arc", - "ellipse", - "line", - "point", - "quad", - "rect", - "triangle", - "bezier", - "bezierDetail", - "bezierPoint", - "bezierTangent", - "curve", - "curveDetail", - "curvePoint", - "curveTangent", - "curveTightness", - "shape", - "shapeMode", - "beginContour", - "beginShape", - "bezierVertex", - "curveVertex", - "endContour", - "endShape", - "quadraticVertex", - "vertex", - "ellipseMode", - "noSmooth", - "rectMode", - "smooth", - "strokeCap", - "strokeJoin", - "strokeWeight", - "mouseClicked", - "mouseDragged", - "mouseMoved", - "mousePressed", - "mouseReleased", - "mouseWheel", - "keyPressed", - "keyPressedkeyReleased", - "keyTyped", - "print", - "println", - "save", - "saveFrame", - "day", - "hour", - "millis", - "minute", - "month", - "second", - "year", - "background", - "clear", - "colorMode", - "fill", - "noFill", - "noStroke", - "stroke", - "alpha", - "blue", - "brightness", - "color", - "green", - "hue", - "lerpColor", - "red", - "saturation", - "modelX", - "modelY", - "modelZ", - "screenX", - "screenY", - "screenZ", - "ambient", - "emissive", - "shininess", - "specular", - "add", - "createImage", - "beginCamera", - "camera", - "endCamera", - "frustum", - "ortho", - "perspective", - "printCamera", - "printProjection", - "cursor", - "frameRate", - "noCursor", - "exit", - "loop", - "noLoop", - "popStyle", - "pushStyle", - "redraw", - "binary", - "boolean", - "byte", - "char", - "float", - "hex", - "int", - "str", - "unbinary", - "unhex", - "join", - "match", - "matchAll", - "nf", - "nfc", - "nfp", - "nfs", - "split", - "splitTokens", - "trim", - "append", - "arrayCopy", - "concat", - "expand", - "reverse", - "shorten", - "sort", - "splice", - "subset", - "box", - "sphere", - "sphereDetail", - "createInput", - "createReader", - "loadBytes", - "loadJSONArray", - "loadJSONObject", - "loadStrings", - "loadTable", - "loadXML", - "open", - "parseXML", - "saveTable", - "selectFolder", - "selectInput", - "beginRaw", - "beginRecord", - "createOutput", - "createWriter", - "endRaw", - "endRecord", - "PrintWritersaveBytes", - "saveJSONArray", - "saveJSONObject", - "saveStream", - "saveStrings", - "saveXML", - "selectOutput", - "popMatrix", - "printMatrix", - "pushMatrix", - "resetMatrix", - "rotate", - "rotateX", - "rotateY", - "rotateZ", - "scale", - "shearX", - "shearY", - "translate", - "ambientLight", - "directionalLight", - "lightFalloff", - "lights", - "lightSpecular", - "noLights", - "normal", - "pointLight", - "spotLight", - "image", - "imageMode", - "loadImage", - "noTint", - "requestImage", - "tint", - "texture", - "textureMode", - "textureWrap", - "blend", - "copy", - "filter", - "get", - "loadPixels", - "set", - "updatePixels", - "blendMode", - "loadShader", - "PShaderresetShader", - "shader", - "createFont", - "loadFont", - "text", - "textFont", - "textAlign", - "textLeading", - "textMode", - "textSize", - "textWidth", - "textAscent", - "textDescent", - "abs", - "ceil", - "constrain", - "dist", - "exp", - "floor", - "lerp", - "log", - "mag", - "map", - "max", - "min", - "norm", - "pow", - "round", - "sq", - "sqrt", - "acos", - "asin", - "atan", - "atan2", - "cos", - "degrees", - "radians", - "sin", - "tan", - "noise", - "noiseDetail", - "noiseSeed", - "random", - "randomGaussian", - "randomSeed" - ]; - const IDENT = hljs.IDENT_RE; - const FUNC_NAME = { variants: [ - { - match: regex.concat(regex.either(...BUILT_INS), regex.lookahead(/\s*\(/)), - className: "built_in" - }, - { - relevance: 0, - match: regex.concat( - /\b(?!for|if|while)/, - IDENT, regex.lookahead(/\s*\(/)), - className: "title.function" - } - ] }; - const NEW_CLASS = { - match: [ - /new\s+/, - IDENT - ], - className: { - 1: "keyword", - 2: "class.title" - } - }; - const PROPERTY = { - relevance: 0, - match: [ - /\./, - IDENT - ], - className: { 2: "property" } - }; - const CLASS = { - variants: [ - { match: [ - /class/, - /\s+/, - IDENT, - /\s+/, - /extends/, - /\s+/, - IDENT - ] }, - { match: [ - /class/, - /\s+/, - IDENT - ] } - ], - className: { - 1: "keyword", - 3: "title.class", - 5: "keyword", - 7: "title.class.inherited" - } - }; - - const TYPES = [ - "boolean", - "byte", - "char", - "color", - "double", - "float", - "int", - "long", - "short", - ]; - const CLASSES = [ - "BufferedReader", - "PVector", - "PFont", - "PImage", - "PGraphics", - "HashMap", - "String", - "Array", - "FloatDict", - "ArrayList", - "FloatList", - "IntDict", - "IntList", - "JSONArray", - "JSONObject", - "Object", - "StringDict", - "StringList", - "Table", - "TableRow", - "XML" - ]; - const JAVA_KEYWORDS = [ - "abstract", - "assert", - "break", - "case", - "catch", - "const", - "continue", - "default", - "else", - "enum", - "final", - "finally", - "for", - "if", - "import", - "instanceof", - "long", - "native", - "new", - "package", - "private", - "private", - "protected", - "protected", - "public", - "public", - "return", - "static", - "strictfp", - "switch", - "synchronized", - "throw", - "throws", - "transient", - "try", - "void", - "volatile", - "while" - ]; - - return { - name: 'Processing', - aliases: [ 'pde' ], - keywords: { - keyword: [ ...JAVA_KEYWORDS ], - literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false', - title: 'setup draw', - variable: "super this", - built_in: [ - ...BUILT_INS, - ...CLASSES - ], - type: TYPES - }, - contains: [ - CLASS, - NEW_CLASS, - FUNC_NAME, - PROPERTY, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = processing; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/profile.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/profile.js ***! - \****************************************************************/ -(module) { - -/* -Language: Python profiler -Description: Python profiler results -Author: Brian Beck -*/ - -function profile(hljs) { - return { - name: 'Python profiler', - contains: [ - hljs.C_NUMBER_MODE, - { - begin: '[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}', - end: ':', - excludeEnd: true - }, - { - begin: '(ncalls|tottime|cumtime)', - end: '$', - keywords: 'ncalls tottime|10 cumtime|10 filename', - relevance: 10 - }, - { - begin: 'function calls', - end: '$', - contains: [ hljs.C_NUMBER_MODE ], - relevance: 10 - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: '\\(', - end: '\\)$', - excludeBegin: true, - excludeEnd: true, - relevance: 0 - } - ] - }; -} - -module.exports = profile; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/prolog.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/prolog.js ***! - \***************************************************************/ -(module) { - -/* -Language: Prolog -Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics. -Author: Raivo Laanemets -Website: https://en.wikipedia.org/wiki/Prolog -Category: functional -*/ - -function prolog(hljs) { - const ATOM = { - - begin: /[a-z][A-Za-z0-9_]*/, - relevance: 0 - }; - - const VAR = { - - className: 'symbol', - variants: [ - { begin: /[A-Z][a-zA-Z0-9_]*/ }, - { begin: /_[A-Za-z0-9_]*/ } - ], - relevance: 0 - }; - - const PARENTED = { - - begin: /\(/, - end: /\)/, - relevance: 0 - }; - - const LIST = { - - begin: /\[/, - end: /\]/ - }; - - const LINE_COMMENT = { - - className: 'comment', - begin: /%/, - end: /$/, - contains: [ hljs.PHRASAL_WORDS_MODE ] - }; - - const BACKTICK_STRING = { - - className: 'string', - begin: /`/, - end: /`/, - contains: [ hljs.BACKSLASH_ESCAPE ] - }; - - const CHAR_CODE = { - className: 'string', // 0'a etc. - begin: /0'(\\'|.)/ - }; - - const SPACE_CODE = { - className: 'string', - begin: /0'\\s/ // 0'\s - }; - - const PRED_OP = { // relevance booster - begin: /:-/ }; - - const inner = [ - - ATOM, - VAR, - PARENTED, - PRED_OP, - LIST, - LINE_COMMENT, - hljs.C_BLOCK_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - BACKTICK_STRING, - CHAR_CODE, - SPACE_CODE, - hljs.C_NUMBER_MODE - ]; - - PARENTED.contains = inner; - LIST.contains = inner; - - return { - name: 'Prolog', - contains: inner.concat([ - { // relevance booster - begin: /\.$/ } - ]) - }; -} - -module.exports = prolog; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/properties.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/properties.js ***! - \*******************************************************************/ -(module) { - -/* -Language: .properties -Contributors: Valentin Aitken , Egor Rogov -Website: https://en.wikipedia.org/wiki/.properties -Category: config -*/ - -/** @type LanguageFn */ -function properties(hljs) { - // whitespaces: space, tab, formfeed - const WS0 = '[ \\t\\f]*'; - const WS1 = '[ \\t\\f]+'; - // delimiter - const EQUAL_DELIM = WS0 + '[:=]' + WS0; - const WS_DELIM = WS1; - const DELIM = '(' + EQUAL_DELIM + '|' + WS_DELIM + ')'; - const KEY = '([^\\\\:= \\t\\f\\n]|\\\\.)+'; - - const DELIM_AND_VALUE = { - // skip DELIM - end: DELIM, - relevance: 0, - starts: { - // value: everything until end of line (again, taking into account backslashes) - className: 'string', - end: /$/, - relevance: 0, - contains: [ - { begin: '\\\\\\\\' }, - { begin: '\\\\\\n' } - ] - } - }; - - return { - name: '.properties', - disableAutodetect: true, - case_insensitive: true, - illegal: /\S/, - contains: [ - hljs.COMMENT('^\\s*[!#]', '$'), - // key: everything until whitespace or = or : (taking into account backslashes) - // case of a key-value pair - { - returnBegin: true, - variants: [ - { begin: KEY + EQUAL_DELIM }, - { begin: KEY + WS_DELIM } - ], - contains: [ - { - className: 'attr', - begin: KEY, - endsParent: true - } - ], - starts: DELIM_AND_VALUE - }, - // case of an empty key - { - className: 'attr', - begin: KEY + WS0 + '$' - } - ] - }; -} - -module.exports = properties; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/protobuf.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/protobuf.js ***! - \*****************************************************************/ -(module) { - -/* -Language: Protocol Buffers -Author: Dan Tao -Description: Protocol buffer message definition format -Website: https://developers.google.com/protocol-buffers/docs/proto3 -Category: protocols -*/ - -function protobuf(hljs) { - const KEYWORDS = [ - "package", - "import", - "option", - "optional", - "required", - "repeated", - "group", - "oneof" - ]; - const TYPES = [ - "double", - "float", - "int32", - "int64", - "uint32", - "uint64", - "sint32", - "sint64", - "fixed32", - "fixed64", - "sfixed32", - "sfixed64", - "bool", - "string", - "bytes" - ]; - const CLASS_DEFINITION = { - match: [ - /(message|enum|service)\s+/, - hljs.IDENT_RE - ], - scope: { - 1: "keyword", - 2: "title.class" - } - }; - - return { - name: 'Protocol Buffers', - aliases: ['proto'], - keywords: { - keyword: KEYWORDS, - type: TYPES, - literal: [ - 'true', - 'false' - ] - }, - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - CLASS_DEFINITION, - { - className: 'function', - beginKeywords: 'rpc', - end: /[{;]/, - excludeEnd: true, - keywords: 'rpc returns' - }, - { // match enum items (relevance) - // BLAH = ...; - begin: /^\s*[A-Z_]+(?=\s*=[^\n]+;$)/ } - ] - }; -} - -module.exports = protobuf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/puppet.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/puppet.js ***! - \***************************************************************/ -(module) { - -/* -Language: Puppet -Author: Jose Molina Colmenero -Website: https://puppet.com/docs -Category: config -*/ - -function puppet(hljs) { - const PUPPET_KEYWORDS = { - keyword: - /* language keywords */ - 'and case default else elsif false if in import enherits node or true undef unless main settings $string ', - literal: - /* metaparameters */ - 'alias audit before loglevel noop require subscribe tag ' - /* normal attributes */ - + 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' - + 'en_address ip_address realname command environment hour monute month monthday special target weekday ' - + 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' - + 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' - + 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ' - + 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' - + 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' - + 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' - + 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' - + 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' - + 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' - + 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' - + 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' - + 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' - + 'sslverify mounted', - built_in: - /* core facts */ - 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' - + 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ' - + 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' - + 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' - + 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' - + 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease ' - + 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion ' - + 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced ' - + 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime ' - + 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version' - }; - - const COMMENT = hljs.COMMENT('#', '$'); - - const IDENT_RE = '([A-Za-z_]|::)(\\w|::)*'; - - const TITLE = hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE }); - - const VARIABLE = { - className: 'variable', - begin: '\\$' + IDENT_RE - }; - - const STRING = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - VARIABLE - ], - variants: [ - { - begin: /'/, - end: /'/ - }, - { - begin: /"/, - end: /"/ - } - ] - }; - - return { - name: 'Puppet', - aliases: [ 'pp' ], - contains: [ - COMMENT, - VARIABLE, - STRING, - { - beginKeywords: 'class', - end: '\\{|;', - illegal: /=/, - contains: [ - TITLE, - COMMENT - ] - }, - { - beginKeywords: 'define', - end: /\{/, - contains: [ - { - className: 'section', - begin: hljs.IDENT_RE, - endsParent: true - } - ] - }, - { - begin: hljs.IDENT_RE + '\\s+\\{', - returnBegin: true, - end: /\S/, - contains: [ - { - className: 'keyword', - begin: hljs.IDENT_RE, - relevance: 0.2 - }, - { - begin: /\{/, - end: /\}/, - keywords: PUPPET_KEYWORDS, - relevance: 0, - contains: [ - STRING, - COMMENT, - { - begin: '[a-zA-Z_]+\\s*=>', - returnBegin: true, - end: '=>', - contains: [ - { - className: 'attr', - begin: hljs.IDENT_RE - } - ] - }, - { - className: 'number', - begin: '(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b', - relevance: 0 - }, - VARIABLE - ] - } - ], - relevance: 0 - } - ] - }; -} - -module.exports = puppet; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/purebasic.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/purebasic.js ***! - \******************************************************************/ -(module) { - -/* -Language: PureBASIC -Author: Tristano Ajmone -Description: Syntax highlighting for PureBASIC (v.5.00-5.60). No inline ASM highlighting. (v.1.2, May 2017) -Credits: I've taken inspiration from the PureBasic language file for GeSHi, created by Gustavo Julio Fiorenza (GuShH). -Website: https://www.purebasic.com -Category: system -*/ - -// Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000; - -function purebasic(hljs) { - const STRINGS = { // PB IDE color: #0080FF (Azure Radiance) - className: 'string', - begin: '(~)?"', - end: '"', - illegal: '\\n' - }; - const CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink) - // "#" + a letter or underscore + letters, digits or underscores + (optional) "$" - className: 'symbol', - begin: '#[a-zA-Z_]\\w*\\$?' - }; - - return { - name: 'PureBASIC', - aliases: [ - 'pb', - 'pbi' - ], - keywords: // PB IDE color: #006666 (Blue Stone) + Bold - // Keywords from all version of PureBASIC 5.00 upward ... - 'Align And Array As Break CallDebugger Case CompilerCase CompilerDefault ' - + 'CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError ' - + 'CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug ' - + 'DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default ' - + 'Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' - + 'EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration ' - + 'EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect ' - + 'EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends ' - + 'FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC ' - + 'IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount ' - + 'Map Module NewList NewMap Next Not Or Procedure ProcedureC ' - + 'ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim ' - + 'Read Repeat Restore Return Runtime Select Shared Static Step Structure ' - + 'StructureUnion Swap Threaded To UndefineMacro Until Until UnuseModule ' - + 'UseModule Wend While With XIncludeFile XOr', - contains: [ - // COMMENTS | PB IDE color: #00AAAA (Persian Green) - hljs.COMMENT(';', '$', { relevance: 0 }), - - { // PROCEDURES DEFINITIONS - className: 'function', - begin: '\\b(Procedure|Declare)(C|CDLL|DLL)?\\b', - end: '\\(', - excludeEnd: true, - returnBegin: true, - contains: [ - { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold - className: 'keyword', - begin: '(Procedure|Declare)(C|CDLL|DLL)?', - excludeEnd: true - }, - { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black) - className: 'type', - begin: '\\.\\w*' - // end: ' ', - }, - hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone) - ] - }, - STRINGS, - CONSTANTS - ] - }; -} - -/* ============================================================================== - CHANGELOG - ============================================================================== - - v.1.2 (2017-05-12) - -- BUG-FIX: Some keywords were accidentally joyned together. Now fixed. - - v.1.1 (2017-04-30) - -- Updated to PureBASIC 5.60. - -- Keywords list now built by extracting them from the PureBASIC SDK's - "SyntaxHilighting.dll" (from each PureBASIC version). Tokens from each - version are added to the list, and renamed or removed tokens are kept - for the sake of covering all versions of the language from PureBASIC - v5.00 upward. (NOTE: currently, there are no renamed or deprecated - tokens in the keywords list). For more info, see: - -- http://www.purebasic.fr/english/viewtopic.php?&p=506269 - -- https://github.com/tajmone/purebasic-archives/tree/master/syntax-highlighting/guidelines - - v.1.0 (April 2016) - -- First release - -- Keywords list taken and adapted from GuShH's (Gustavo Julio Fiorenza) - PureBasic language file for GeSHi: - -- https://github.com/easybook/geshi/blob/master/geshi/purebasic.php -*/ - -module.exports = purebasic; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/python-repl.js" -/*!********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/python-repl.js ***! - \********************************************************************/ -(module) { - -/* -Language: Python REPL -Requires: python.js -Author: Josh Goebel -Category: common -*/ - -function pythonRepl(hljs) { - return { - aliases: [ 'pycon' ], - contains: [ - { - className: 'meta.prompt', - starts: { - // a space separates the REPL prefix from the actual code - // this is purely for cleaner HTML output - end: / |$/, - starts: { - end: '$', - subLanguage: 'python' - } - }, - variants: [ - { begin: /^>>>(?=[ ]|$)/ }, - { begin: /^\.\.\.(?=[ ]|$)/ } - ] - } - ] - }; -} - -module.exports = pythonRepl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/python.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/python.js ***! - \***************************************************************/ -(module) { - -/* -Language: Python -Description: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. -Website: https://www.python.org -Category: common -*/ - -function python(hljs) { - const regex = hljs.regex; - const IDENT_RE = /[\p{XID_Start}_]\p{XID_Continue}*/u; - const RESERVED_WORDS = [ - 'and', - 'as', - 'assert', - 'async', - 'await', - 'break', - 'case', - 'class', - 'continue', - 'def', - 'del', - 'elif', - 'else', - 'except', - 'finally', - 'for', - 'from', - 'global', - 'if', - 'import', - 'in', - 'is', - 'lambda', - 'match', - 'nonlocal|10', - 'not', - 'or', - 'pass', - 'raise', - 'return', - 'try', - 'while', - 'with', - 'yield' - ]; - - const BUILT_INS = [ - '__import__', - 'abs', - 'all', - 'any', - 'ascii', - 'bin', - 'bool', - 'breakpoint', - 'bytearray', - 'bytes', - 'callable', - 'chr', - 'classmethod', - 'compile', - 'complex', - 'delattr', - 'dict', - 'dir', - 'divmod', - 'enumerate', - 'eval', - 'exec', - 'filter', - 'float', - 'format', - 'frozenset', - 'getattr', - 'globals', - 'hasattr', - 'hash', - 'help', - 'hex', - 'id', - 'input', - 'int', - 'isinstance', - 'issubclass', - 'iter', - 'len', - 'list', - 'locals', - 'map', - 'max', - 'memoryview', - 'min', - 'next', - 'object', - 'oct', - 'open', - 'ord', - 'pow', - 'print', - 'property', - 'range', - 'repr', - 'reversed', - 'round', - 'set', - 'setattr', - 'slice', - 'sorted', - 'staticmethod', - 'str', - 'sum', - 'super', - 'tuple', - 'type', - 'vars', - 'zip' - ]; - - const LITERALS = [ - '__debug__', - 'Ellipsis', - 'False', - 'None', - 'NotImplemented', - 'True' - ]; - - // https://docs.python.org/3/library/typing.html - // TODO: Could these be supplemented by a CamelCase matcher in certain - // contexts, leaving these remaining only for relevance hinting? - const TYPES = [ - "Any", - "Callable", - "Coroutine", - "Dict", - "List", - "Literal", - "Generic", - "Optional", - "Sequence", - "Set", - "Tuple", - "Type", - "Union" - ]; - - const KEYWORDS = { - $pattern: /[A-Za-z]\w+|__\w+__/, - keyword: RESERVED_WORDS, - built_in: BUILT_INS, - literal: LITERALS, - type: TYPES - }; - - const PROMPT = { - className: 'meta', - begin: /^(>>>|\.\.\.) / - }; - - const SUBST = { - className: 'subst', - begin: /\{/, - end: /\}/, - keywords: KEYWORDS, - illegal: /#/ - }; - - const LITERAL_BRACKET = { - begin: /\{\{/, - relevance: 0 - }; - - const STRING = { - className: 'string', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - { - begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/, - end: /'''/, - contains: [ - hljs.BACKSLASH_ESCAPE, - PROMPT - ], - relevance: 10 - }, - { - begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/, - end: /"""/, - contains: [ - hljs.BACKSLASH_ESCAPE, - PROMPT - ], - relevance: 10 - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])'''/, - end: /'''/, - contains: [ - hljs.BACKSLASH_ESCAPE, - PROMPT, - LITERAL_BRACKET, - SUBST - ] - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])"""/, - end: /"""/, - contains: [ - hljs.BACKSLASH_ESCAPE, - PROMPT, - LITERAL_BRACKET, - SUBST - ] - }, - { - begin: /([uU]|[rR])'/, - end: /'/, - relevance: 10 - }, - { - begin: /([uU]|[rR])"/, - end: /"/, - relevance: 10 - }, - { - begin: /([bB]|[bB][rR]|[rR][bB])'/, - end: /'/ - }, - { - begin: /([bB]|[bB][rR]|[rR][bB])"/, - end: /"/ - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])'/, - end: /'/, - contains: [ - hljs.BACKSLASH_ESCAPE, - LITERAL_BRACKET, - SUBST - ] - }, - { - begin: /([fF][rR]|[rR][fF]|[fF])"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - LITERAL_BRACKET, - SUBST - ] - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }; - - // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals - const digitpart = '[0-9](_?[0-9])*'; - const pointfloat = `(\\b(${digitpart}))?\\.(${digitpart})|\\b(${digitpart})\\.`; - // Whitespace after a number (or any lexical token) is needed only if its absence - // would change the tokenization - // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens - // We deviate slightly, requiring a word boundary or a keyword - // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`) - const lookahead = `\\b|${RESERVED_WORDS.join('|')}`; - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - // exponentfloat, pointfloat - // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals - // optionally imaginary - // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals - // Note: no leading \b because floats can start with a decimal point - // and we don't want to mishandle e.g. `fn(.5)`, - // no trailing \b for pointfloat because it can end with a decimal point - // and we don't want to mishandle e.g. `0..hex()`; this should be safe - // because both MUST contain a decimal point and so cannot be confused with - // the interior part of an identifier - { - begin: `(\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})` - }, - { - begin: `(${pointfloat})[jJ]?` - }, - - // decinteger, bininteger, octinteger, hexinteger - // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals - // optionally "long" in Python 2 - // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals - // decinteger is optionally imaginary - // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals - { - begin: `\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})` - }, - { - begin: `\\b0[bB](_?[01])+[lL]?(?=${lookahead})` - }, - { - begin: `\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})` - }, - { - begin: `\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})` - }, - - // imagnumber (digitpart-based) - // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals - { - begin: `\\b(${digitpart})[jJ](?=${lookahead})` - } - ] - }; - const COMMENT_TYPE = { - className: "comment", - begin: regex.lookahead(/# type:/), - end: /$/, - keywords: KEYWORDS, - contains: [ - { // prevent keywords from coloring `type` - begin: /# type:/ - }, - // comment within a datatype comment includes no keywords - { - begin: /#/, - end: /\b\B/, - endsWithParent: true - } - ] - }; - const PARAMS = { - className: 'params', - variants: [ - // Exclude params in functions without params - { - className: "", - begin: /\(\s*\)/, - skip: true - }, - { - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS, - contains: [ - 'self', - PROMPT, - NUMBER, - STRING, - hljs.HASH_COMMENT_MODE - ] - } - ] - }; - SUBST.contains = [ - STRING, - NUMBER, - PROMPT - ]; - - return { - name: 'Python', - aliases: [ - 'py', - 'gyp', - 'ipython' - ], - unicodeRegex: true, - keywords: KEYWORDS, - illegal: /(<\/|\?)|=>/, - contains: [ - PROMPT, - NUMBER, - { - // very common convention - scope: 'variable.language', - match: /\bself\b/ - }, - { - // eat "if" prior to string so that it won't accidentally be - // labeled as an f-string - beginKeywords: "if", - relevance: 0 - }, - { match: /\bor\b/, scope: "keyword" }, - STRING, - COMMENT_TYPE, - hljs.HASH_COMMENT_MODE, - { - match: [ - /\bdef/, /\s+/, - IDENT_RE, - ], - scope: { - 1: "keyword", - 3: "title.function" - }, - contains: [ PARAMS ] - }, - { - variants: [ - { - match: [ - /\bclass/, /\s+/, - IDENT_RE, /\s*/, - /\(\s*/, IDENT_RE,/\s*\)/ - ], - }, - { - match: [ - /\bclass/, /\s+/, - IDENT_RE - ], - } - ], - scope: { - 1: "keyword", - 3: "title.class", - 6: "title.class.inherited", - } - }, - { - className: 'meta', - begin: /^[\t ]*@/, - end: /(?=#)|$/, - contains: [ - NUMBER, - PARAMS, - STRING - ] - } - ] - }; -} - -module.exports = python; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/q.js" -/*!**********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/q.js ***! - \**********************************************************/ -(module) { - -/* -Language: Q -Description: Q is a vector-based functional paradigm programming language built into the kdb+ database. - (K/Q/Kdb+ from Kx Systems) -Author: Sergey Vidyuk -Website: https://kx.com/connect-with-us/developers/ -Category: enterprise, functional, database -*/ - -function q(hljs) { - const KEYWORDS = { - $pattern: /(`?)[A-Za-z0-9_]+\b/, - keyword: - 'do while select delete by update from', - literal: - '0b 1b', - built_in: - 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum', - type: - '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid' - }; - - return { - name: 'Q', - aliases: [ - 'k', - 'kdb' - ], - keywords: KEYWORDS, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = q; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/qml.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/qml.js ***! - \************************************************************/ -(module) { - -/* -Language: QML -Requires: javascript.js, xml.js -Author: John Foster -Description: Syntax highlighting for the Qt Quick QML scripting language, based mostly off - the JavaScript parser. -Website: https://doc.qt.io/qt-5/qmlapplications.html -Category: scripting -*/ - -function qml(hljs) { - const regex = hljs.regex; - const KEYWORDS = { - keyword: - 'in of on if for while finally var new function do return void else break catch ' - + 'instanceof with throw case default try this switch continue typeof delete ' - + 'let yield const export super debugger as async await import', - literal: - 'true false null undefined NaN Infinity', - built_in: - 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' - + 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' - + 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' - + 'TypeError URIError Number Math Date String RegExp Array Float32Array ' - + 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' - + 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' - + 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' - + 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' - + 'geoshape int list matrix4x4 parent point quaternion real rect ' - + 'size string url variant vector2d vector3d vector4d ' - + 'Promise' - }; - - const QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\._]*'; - - // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line. - // Use property class. - const PROPERTY = { - className: 'keyword', - begin: '\\bproperty\\b', - starts: { - className: 'string', - end: '(:|=|;|,|//|/\\*|$)', - returnEnd: true - } - }; - - // Isolate signal statements. Ends at a ) a comment or end of line. - // Use property class. - const SIGNAL = { - className: 'keyword', - begin: '\\bsignal\\b', - starts: { - className: 'string', - end: '(\\(|:|=|;|,|//|/\\*|$)', - returnEnd: true - } - }; - - // id: is special in QML. When we see id: we want to mark the id: as attribute and - // emphasize the token following. - const ID_ID = { - className: 'attribute', - begin: '\\bid\\s*:', - starts: { - className: 'string', - end: QML_IDENT_RE, - returnEnd: false - } - }; - - // Find QML object attribute. An attribute is a QML identifier followed by :. - // Unfortunately it's hard to know where it ends, as it may contain scalars, - // objects, object definitions, or javascript. The true end is either when the parent - // ends or the next attribute is detected. - const QML_ATTRIBUTE = { - begin: QML_IDENT_RE + '\\s*:', - returnBegin: true, - contains: [ - { - className: 'attribute', - begin: QML_IDENT_RE, - end: '\\s*:', - excludeEnd: true, - relevance: 0 - } - ], - relevance: 0 - }; - - // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }. - // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {. - const QML_OBJECT = { - begin: regex.concat(QML_IDENT_RE, /\s*\{/), - end: /\{/, - returnBegin: true, - relevance: 0, - contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: QML_IDENT_RE }) ] - }; - - return { - name: 'QML', - aliases: [ 'qt' ], - case_insensitive: false, - keywords: KEYWORDS, - contains: [ - { - className: 'meta', - begin: /^\s*['"]use (strict|asm)['"]/ - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - { // template string - className: 'string', - begin: '`', - end: '`', - contains: [ - hljs.BACKSLASH_ESCAPE, - { - className: 'subst', - begin: '\\$\\{', - end: '\\}' - } - ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'number', - variants: [ - { begin: '\\b(0[bB][01]+)' }, - { begin: '\\b(0[oO][0-7]+)' }, - { begin: hljs.C_NUMBER_RE } - ], - relevance: 0 - }, - { // "value" container - begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', - keywords: 'return throw case', - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.REGEXP_MODE, - { // E4X / JSX - begin: /\s*[);\]]/, - relevance: 0, - subLanguage: 'xml' - } - ], - relevance: 0 - }, - SIGNAL, - PROPERTY, - { - className: 'function', - beginKeywords: 'function', - end: /\{/, - excludeEnd: true, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { begin: /[A-Za-z$_][0-9A-Za-z$_]*/ }), - { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - } - ], - illegal: /\[|%/ - }, - { - // hack: prevents detection of keywords after dots - begin: '\\.' + hljs.IDENT_RE, - relevance: 0 - }, - ID_ID, - QML_ATTRIBUTE, - QML_OBJECT - ], - illegal: /#/ - }; -} - -module.exports = qml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/r.js" -/*!**********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/r.js ***! - \**********************************************************/ -(module) { - -/* -Language: R -Description: R is a free software environment for statistical computing and graphics. -Author: Joe Cheng -Contributors: Konrad Rudolph -Website: https://www.r-project.org -Category: common,scientific -*/ - -/** @type LanguageFn */ -function r(hljs) { - const regex = hljs.regex; - // Identifiers in R cannot start with `_`, but they can start with `.` if it - // is not immediately followed by a digit. - // R also supports quoted identifiers, which are near-arbitrary sequences - // delimited by backticks (`…`), which may contain escape sequences. These are - // handled in a separate mode. See `test/markup/r/names.txt` for examples. - // FIXME: Support Unicode identifiers. - const IDENT_RE = /(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/; - const NUMBER_TYPES_RE = regex.either( - // Special case: only hexadecimal binary powers can contain fractions - /0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/, - // Hexadecimal numbers without fraction and optional binary power - /0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/, - // Decimal numbers - /(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/ - ); - const OPERATORS_RE = /[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/; - const PUNCTUATION_RE = regex.either( - /[()]/, - /[{}]/, - /\[\[/, - /[[\]]/, - /\\/, - /,/ - ); - - return { - name: 'R', - - keywords: { - $pattern: IDENT_RE, - keyword: - 'function if in break next repeat else for while', - literal: - 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 ' - + 'NA_character_|10 NA_complex_|10', - built_in: - // Builtin constants - 'LETTERS letters month.abb month.name pi T F ' - // Primitive functions - // These are all the functions in `base` that are implemented as a - // `.Primitive`, minus those functions that are also keywords. - + 'abs acos acosh all any anyNA Arg as.call as.character ' - + 'as.complex as.double as.environment as.integer as.logical ' - + 'as.null.default as.numeric as.raw asin asinh atan atanh attr ' - + 'attributes baseenv browser c call ceiling class Conj cos cosh ' - + 'cospi cummax cummin cumprod cumsum digamma dim dimnames ' - + 'emptyenv exp expression floor forceAndCall gamma gc.time ' - + 'globalenv Im interactive invisible is.array is.atomic is.call ' - + 'is.character is.complex is.double is.environment is.expression ' - + 'is.finite is.function is.infinite is.integer is.language ' - + 'is.list is.logical is.matrix is.na is.name is.nan is.null ' - + 'is.numeric is.object is.pairlist is.raw is.recursive is.single ' - + 'is.symbol lazyLoadDBfetch length lgamma list log max min ' - + 'missing Mod names nargs nzchar oldClass on.exit pos.to.env ' - + 'proc.time prod quote range Re rep retracemem return round ' - + 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt ' - + 'standardGeneric substitute sum switch tan tanh tanpi tracemem ' - + 'trigamma trunc unclass untracemem UseMethod xtfrm', - }, - - contains: [ - // Roxygen comments - hljs.COMMENT( - /#'/, - /$/, - { contains: [ - { - // Handle `@examples` separately to cause all subsequent code - // until the next `@`-tag on its own line to be kept as-is, - // preventing highlighting. This code is example R code, so nested - // doctags shouldn’t be treated as such. See - // `test/markup/r/roxygen.txt` for an example. - scope: 'doctag', - match: /@examples/, - starts: { - end: regex.lookahead(regex.either( - // end if another doc comment - /\n^#'\s*(?=@[a-zA-Z]+)/, - // or a line with no comment - /\n^(?!#')/ - )), - endsParent: true - } - }, - { - // Handle `@param` to highlight the parameter name following - // after. - scope: 'doctag', - begin: '@param', - end: /$/, - contains: [ - { - scope: 'variable', - variants: [ - { match: IDENT_RE }, - { match: /`(?:\\.|[^`\\])+`/ } - ], - endsParent: true - } - ] - }, - { - scope: 'doctag', - match: /@[a-zA-Z]+/ - }, - { - scope: 'keyword', - match: /\\[a-zA-Z]+/ - } - ] } - ), - - hljs.HASH_COMMENT_MODE, - - { - scope: 'string', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]"(-*)\(/, - end: /\)(-*)"/ - }), - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]"(-*)\{/, - end: /\}(-*)"/ - }), - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]"(-*)\[/, - end: /\](-*)"/ - }), - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]'(-*)\(/, - end: /\)(-*)'/ - }), - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]'(-*)\{/, - end: /\}(-*)'/ - }), - hljs.END_SAME_AS_BEGIN({ - begin: /[rR]'(-*)\[/, - end: /\](-*)'/ - }), - { - begin: '"', - end: '"', - relevance: 0 - }, - { - begin: "'", - end: "'", - relevance: 0 - } - ], - }, - - // Matching numbers immediately following punctuation and operators is - // tricky since we need to look at the character ahead of a number to - // ensure the number is not part of an identifier, and we cannot use - // negative look-behind assertions. So instead we explicitly handle all - // possible combinations of (operator|punctuation), number. - // TODO: replace with negative look-behind when available - // { begin: /(? -Category: functional -*/ -function reasonml(hljs) { - const BUILT_IN_TYPES = [ - "array", - "bool", - "bytes", - "char", - "exn|5", - "float", - "int", - "int32", - "int64", - "list", - "lazy_t|5", - "nativeint|5", - "ref", - "string", - "unit", - ]; - return { - name: 'ReasonML', - aliases: [ 're' ], - keywords: { - $pattern: /[a-z_]\w*!?/, - keyword: [ - "and", - "as", - "asr", - "assert", - "begin", - "class", - "constraint", - "do", - "done", - "downto", - "else", - "end", - "esfun", - "exception", - "external", - "for", - "fun", - "function", - "functor", - "if", - "in", - "include", - "inherit", - "initializer", - "land", - "lazy", - "let", - "lor", - "lsl", - "lsr", - "lxor", - "mod", - "module", - "mutable", - "new", - "nonrec", - "object", - "of", - "open", - "or", - "pri", - "pub", - "rec", - "sig", - "struct", - "switch", - "then", - "to", - "try", - "type", - "val", - "virtual", - "when", - "while", - "with", - ], - built_in: BUILT_IN_TYPES, - literal: ["true", "false"], - }, - illegal: /(:-|:=|\$\{|\+=)/, - contains: [ - { - scope: 'literal', - match: /\[(\|\|)?\]|\(\)/, - relevance: 0 - }, - hljs.C_LINE_COMMENT_MODE, - hljs.COMMENT(/\/\*/, /\*\//, { illegal: /^(#,\/\/)/ }), - { /* type variable */ - scope: 'symbol', - match: /\'[A-Za-z_](?!\')[\w\']*/ - /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ - }, - { /* polymorphic variant */ - scope: 'type', - match: /`[A-Z][\w\']*/ - }, - { /* module or constructor */ - scope: 'type', - match: /\b[A-Z][\w\']*/, - relevance: 0 - }, - { /* don't color identifiers, but safely catch all identifiers with ' */ - match: /[a-z_]\w*\'[\w\']*/, - relevance: 0 - }, - { - scope: 'operator', - match: /\s+(\|\||\+[\+\.]?|\*[\*\/\.]?|\/[\.]?|\.\.\.|\|>|&&|===?)\s+/, - relevance: 0 - }, - hljs.inherit(hljs.APOS_STRING_MODE, { - scope: 'string', - relevance: 0 - }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), - { - scope: 'number', - variants: [ - { match: /\b0[xX][a-fA-F0-9_]+[Lln]?/ }, - { match: /\b0[oO][0-7_]+[Lln]?/ }, - { match: /\b0[bB][01_]+[Lln]?/ }, - { match: /\b[0-9][0-9_]*([Lln]|(\.[0-9_]*)?([eE][-+]?[0-9_]+)?)/ }, - ], - relevance: 0 - }, - ] - }; -} - -module.exports = reasonml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/rib.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/rib.js ***! - \************************************************************/ -(module) { - -/* -Language: RenderMan RIB -Author: Konstantin Evdokimenko -Contributors: Shuen-Huei Guan -Website: https://renderman.pixar.com/resources/RenderMan_20/ribBinding.html -Category: graphics -*/ - -function rib(hljs) { - return { - name: 'RenderMan RIB', - keywords: - 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' - + 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' - + 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' - + 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' - + 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' - + 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' - + 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' - + 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' - + 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' - + 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' - + 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' - + 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' - + 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' - + 'TransformPoints Translate TrimCurve WorldBegin WorldEnd', - illegal: ' -Description: Syntax highlighting for Roboconf's DSL -Website: http://roboconf.net -Category: config -*/ - -function roboconf(hljs) { - const IDENTIFIER = '[a-zA-Z-_][^\\n{]+\\{'; - - const PROPERTY = { - className: 'attribute', - begin: /[a-zA-Z-_]+/, - end: /\s*:/, - excludeEnd: true, - starts: { - end: ';', - relevance: 0, - contains: [ - { - className: 'variable', - begin: /\.[a-zA-Z-_]+/ - }, - { - className: 'keyword', - begin: /\(optional\)/ - } - ] - } - }; - - return { - name: 'Roboconf', - aliases: [ - 'graph', - 'instances' - ], - case_insensitive: true, - keywords: 'import', - contains: [ - // Facet sections - { - begin: '^facet ' + IDENTIFIER, - end: /\}/, - keywords: 'facet', - contains: [ - PROPERTY, - hljs.HASH_COMMENT_MODE - ] - }, - - // Instance sections - { - begin: '^\\s*instance of ' + IDENTIFIER, - end: /\}/, - keywords: 'name count channels instance-data instance-state instance of', - illegal: /\S/, - contains: [ - 'self', - PROPERTY, - hljs.HASH_COMMENT_MODE - ] - }, - - // Component sections - { - begin: '^' + IDENTIFIER, - end: /\}/, - contains: [ - PROPERTY, - hljs.HASH_COMMENT_MODE - ] - }, - - // Comments - hljs.HASH_COMMENT_MODE - ] - }; -} - -module.exports = roboconf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/routeros.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/routeros.js ***! - \*****************************************************************/ -(module) { - -/* -Language: MikroTik RouterOS script -Author: Ivan Dementev -Description: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence -Website: https://wiki.mikrotik.com/wiki/Manual:Scripting -Category: scripting -*/ - -// Colors from RouterOS terminal: -// green - #0E9A00 -// teal - #0C9A9A -// purple - #99069A -// light-brown - #9A9900 - -function routeros(hljs) { - const STATEMENTS = 'foreach do while for if from to step else on-error and or not in'; - - // Global commands: Every global command should start with ":" token, otherwise it will be treated as variable. - const GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime'; - - // Common commands: Following commands available from most sub-menus: - const COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning'; - - const LITERALS = 'true false yes no nothing nil null'; - - const OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw'; - - const VAR = { - className: 'variable', - variants: [ - { begin: /\$[\w\d#@][\w\d_]*/ }, - { begin: /\$\{(.*?)\}/ } - ] - }; - - const QUOTE_STRING = { - className: 'string', - begin: /"/, - end: /"/, - contains: [ - hljs.BACKSLASH_ESCAPE, - VAR, - { - className: 'variable', - begin: /\$\(/, - end: /\)/, - contains: [ hljs.BACKSLASH_ESCAPE ] - } - ] - }; - - const APOS_STRING = { - className: 'string', - begin: /'/, - end: /'/ - }; - - return { - name: 'MikroTik RouterOS script', - aliases: [ 'mikrotik' ], - case_insensitive: true, - keywords: { - $pattern: /:?[\w-]+/, - literal: LITERALS, - keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :') - }, - contains: [ - { // illegal syntax - variants: [ - { // -- comment - begin: /\/\*/, - end: /\*\// - }, - { // Stan comment - begin: /\/\//, - end: /$/ - }, - { // HTML tags - begin: /<\//, - end: />/ - } - ], - illegal: /./ - }, - hljs.COMMENT('^#', '$'), - QUOTE_STRING, - APOS_STRING, - VAR, - // attribute=value - { - // > is to avoid matches with => in other grammars - begin: /[\w-]+=([^\s{}[\]()>]+)/, - relevance: 0, - returnBegin: true, - contains: [ - { - className: 'attribute', - begin: /[^=]+/ - }, - { - begin: /=/, - endsWithParent: true, - relevance: 0, - contains: [ - QUOTE_STRING, - APOS_STRING, - VAR, - { - className: 'literal', - begin: '\\b(' + LITERALS.split(' ').join('|') + ')\\b' - }, - { - // Do not format unclassified values. Needed to exclude highlighting of values as built_in. - begin: /("[^"]*"|[^\s{}[\]]+)/ } - /* - { - // IPv4 addresses and subnets - className: 'number', - variants: [ - {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24 - {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3 - {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1 - ] - }, - { - // MAC addresses and DHCP Client IDs - className: 'number', - begin: /\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\b/, - }, - */ - ] - } - ] - }, - { - // HEX values - className: 'number', - begin: /\*[0-9a-fA-F]+/ - }, - { - begin: '\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\s[(\\]|])', - returnBegin: true, - contains: [ - { - className: 'built_in', // 'function', - begin: /\w+/ - } - ] - }, - { - className: 'built_in', - variants: [ - { begin: '(\\.\\./|/|\\s)((' + OBJECTS.split(' ').join('|') + ');?\\s)+' }, - { - begin: /\.\./, - relevance: 0 - } - ] - } - ] - }; -} - -module.exports = routeros; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/rsl.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/rsl.js ***! - \************************************************************/ -(module) { - -/* -Language: RenderMan RSL -Author: Konstantin Evdokimenko -Contributors: Shuen-Huei Guan -Website: https://renderman.pixar.com/resources/RenderMan_20/shadingLanguage.html -Category: graphics -*/ - -function rsl(hljs) { - const BUILT_INS = [ - "abs", - "acos", - "ambient", - "area", - "asin", - "atan", - "atmosphere", - "attribute", - "calculatenormal", - "ceil", - "cellnoise", - "clamp", - "comp", - "concat", - "cos", - "degrees", - "depth", - "Deriv", - "diffuse", - "distance", - "Du", - "Dv", - "environment", - "exp", - "faceforward", - "filterstep", - "floor", - "format", - "fresnel", - "incident", - "length", - "lightsource", - "log", - "match", - "max", - "min", - "mod", - "noise", - "normalize", - "ntransform", - "opposite", - "option", - "phong", - "pnoise", - "pow", - "printf", - "ptlined", - "radians", - "random", - "reflect", - "refract", - "renderinfo", - "round", - "setcomp", - "setxcomp", - "setycomp", - "setzcomp", - "shadow", - "sign", - "sin", - "smoothstep", - "specular", - "specularbrdf", - "spline", - "sqrt", - "step", - "tan", - "texture", - "textureinfo", - "trace", - "transform", - "vtransform", - "xcomp", - "ycomp", - "zcomp" - ]; - - const TYPES = [ - "matrix", - "float", - "color", - "point", - "normal", - "vector" - ]; - - const KEYWORDS = [ - "while", - "for", - "if", - "do", - "return", - "else", - "break", - "extern", - "continue" - ]; - - const CLASS_DEFINITION = { - match: [ - /(surface|displacement|light|volume|imager)/, - /\s+/, - hljs.IDENT_RE, - ], - scope: { - 1: "keyword", - 3: "title.class", - } - }; - - return { - name: 'RenderMan RSL', - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS, - type: TYPES - }, - illegal: ' -Contributors: Peter Leonov , Vasily Polovnyov , Loren Segal , Pascal Hurni , Cedric Sohrauer -Category: common, scripting -*/ - -function ruby(hljs) { - const regex = hljs.regex; - const RUBY_METHOD_RE = '([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)'; - // TODO: move concepts like CAMEL_CASE into `modes.js` - const CLASS_NAME_RE = regex.either( - /\b([A-Z]+[a-z0-9]+)+/, - // ends in caps - /\b([A-Z]+[a-z0-9]+)+[A-Z]+/, - ) - ; - const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\w+)*/); - // very popular ruby built-ins that one might even assume - // are actual keywords (despite that not being the case) - const PSEUDO_KWS = [ - "include", - "extend", - "prepend", - "public", - "private", - "protected", - "raise", - "throw" - ]; - const RUBY_KEYWORDS = { - "variable.constant": [ - "__FILE__", - "__LINE__", - "__ENCODING__" - ], - "variable.language": [ - "self", - "super", - ], - keyword: [ - "alias", - "and", - "begin", - "BEGIN", - "break", - "case", - "class", - "defined", - "do", - "else", - "elsif", - "end", - "END", - "ensure", - "for", - "if", - "in", - "module", - "next", - "not", - "or", - "redo", - "require", - "rescue", - "retry", - "return", - "then", - "undef", - "unless", - "until", - "when", - "while", - "yield", - ...PSEUDO_KWS - ], - built_in: [ - "proc", - "lambda", - "attr_accessor", - "attr_reader", - "attr_writer", - "define_method", - "private_constant", - "module_function" - ], - literal: [ - "true", - "false", - "nil" - ] - }; - const YARDOCTAG = { - className: 'doctag', - begin: '@[A-Za-z]+' - }; - const IRB_OBJECT = { - begin: '#<', - end: '>' - }; - const COMMENT_MODES = [ - hljs.COMMENT( - '#', - '$', - { contains: [ YARDOCTAG ] } - ), - hljs.COMMENT( - '^=begin', - '^=end', - { - contains: [ YARDOCTAG ], - relevance: 10 - } - ), - hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE) - ]; - const SUBST = { - className: 'subst', - begin: /#\{/, - end: /\}/, - keywords: RUBY_KEYWORDS - }; - const STRING = { - className: 'string', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - variants: [ - { - begin: /'/, - end: /'/ - }, - { - begin: /"/, - end: /"/ - }, - { - begin: /`/, - end: /`/ - }, - { - begin: /%[qQwWx]?\(/, - end: /\)/ - }, - { - begin: /%[qQwWx]?\[/, - end: /\]/ - }, - { - begin: /%[qQwWx]?\{/, - end: /\}/ - }, - { - begin: /%[qQwWx]?/ - }, - { - begin: /%[qQwWx]?\//, - end: /\// - }, - { - begin: /%[qQwWx]?%/, - end: /%/ - }, - { - begin: /%[qQwWx]?-/, - end: /-/ - }, - { - begin: /%[qQwWx]?\|/, - end: /\|/ - }, - // in the following expressions, \B in the beginning suppresses recognition of ?-sequences - // where ? is the last character of a preceding identifier, as in: `func?4` - { begin: /\B\?(\\\d{1,3})/ }, - { begin: /\B\?(\\x[A-Fa-f0-9]{1,2})/ }, - { begin: /\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/ }, - { begin: /\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/ }, - { begin: /\B\?\\(c|C-)[\x20-\x7e]/ }, - { begin: /\B\?\\?\S/ }, - // heredocs - { - // this guard makes sure that we have an entire heredoc and not a false - // positive (auto-detect, etc.) - begin: regex.concat( - /<<[-~]?'?/, - regex.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/) - ), - contains: [ - hljs.END_SAME_AS_BEGIN({ - begin: /(\w+)/, - end: /(\w+)/, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }) - ] - } - ] - }; - - // Ruby syntax is underdocumented, but this grammar seems to be accurate - // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`) - // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers - const decimal = '[1-9](_?[0-9])*|0'; - const digits = '[0-9](_?[0-9])*'; - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - // decimal integer/float, optionally exponential or rational, optionally imaginary - { begin: `\\b(${decimal})(\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\b` }, - - // explicit decimal/binary/octal/hexadecimal integer, - // optionally rational and/or imaginary - { begin: "\\b0[dD][0-9](_?[0-9])*r?i?\\b" }, - { begin: "\\b0[bB][0-1](_?[0-1])*r?i?\\b" }, - { begin: "\\b0[oO][0-7](_?[0-7])*r?i?\\b" }, - { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b" }, - - // 0-prefixed implicit octal integer, optionally rational and/or imaginary - { begin: "\\b0(_?[0-7])+r?i?\\b" } - ] - }; - - const PARAMS = { - variants: [ - { - match: /\(\)/, - }, - { - className: 'params', - begin: /\(/, - end: /(?=\))/, - excludeBegin: true, - endsParent: true, - keywords: RUBY_KEYWORDS, - } - ] - }; - - const INCLUDE_EXTEND = { - match: [ - /(include|extend)\s+/, - CLASS_NAME_WITH_NAMESPACE_RE - ], - scope: { - 2: "title.class" - }, - keywords: RUBY_KEYWORDS - }; - - const CLASS_DEFINITION = { - variants: [ - { - match: [ - /class\s+/, - CLASS_NAME_WITH_NAMESPACE_RE, - /\s+<\s+/, - CLASS_NAME_WITH_NAMESPACE_RE - ] - }, - { - match: [ - /\b(class|module)\s+/, - CLASS_NAME_WITH_NAMESPACE_RE - ] - } - ], - scope: { - 2: "title.class", - 4: "title.class.inherited" - }, - keywords: RUBY_KEYWORDS - }; - - const UPPER_CASE_CONSTANT = { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant" - }; - - const METHOD_DEFINITION = { - match: [ - /def/, /\s+/, - RUBY_METHOD_RE - ], - scope: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - PARAMS - ] - }; - - const OBJECT_CREATION = { - relevance: 0, - match: [ - CLASS_NAME_WITH_NAMESPACE_RE, - /\.new[. (]/ - ], - scope: { - 1: "title.class" - } - }; - - // CamelCase - const CLASS_REFERENCE = { - relevance: 0, - match: CLASS_NAME_RE, - scope: "title.class" - }; - - const RUBY_DEFAULT_CONTAINS = [ - STRING, - CLASS_DEFINITION, - INCLUDE_EXTEND, - OBJECT_CREATION, - UPPER_CASE_CONSTANT, - CLASS_REFERENCE, - METHOD_DEFINITION, - { - // swallow namespace qualifiers before symbols - begin: hljs.IDENT_RE + '::' }, - { - className: 'symbol', - begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\?)?:', - relevance: 0 - }, - { - className: 'symbol', - begin: ':(?!\\s)', - contains: [ - STRING, - { begin: RUBY_METHOD_RE } - ], - relevance: 0 - }, - NUMBER, - { - // negative-look forward attempts to prevent false matches like: - // @ident@ or $ident$ that might indicate this is not ruby at all - className: "variable", - begin: '(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])` - }, - { - className: 'params', - begin: /\|(?!=)/, - end: /\|/, - excludeBegin: true, - excludeEnd: true, - relevance: 0, // this could be a lot of things (in other languages) other than params - keywords: RUBY_KEYWORDS - }, - { // regexp container - begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\s*', - keywords: 'unless', - contains: [ - { - className: 'regexp', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - illegal: /\n/, - variants: [ - { - begin: '/', - end: '/[a-z]*' - }, - { - begin: /%r\{/, - end: /\}[a-z]*/ - }, - { - begin: '%r\\(', - end: '\\)[a-z]*' - }, - { - begin: '%r!', - end: '![a-z]*' - }, - { - begin: '%r\\[', - end: '\\][a-z]*' - } - ] - } - ].concat(IRB_OBJECT, COMMENT_MODES), - relevance: 0 - } - ].concat(IRB_OBJECT, COMMENT_MODES); - - SUBST.contains = RUBY_DEFAULT_CONTAINS; - PARAMS.contains = RUBY_DEFAULT_CONTAINS; - - // >> - // ?> - const SIMPLE_PROMPT = "[>?]>"; - // irb(main):001:0> - const DEFAULT_PROMPT = "[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"; - const RVM_PROMPT = "(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"; - - const IRB_DEFAULT = [ - { - begin: /^\s*=>/, - starts: { - end: '$', - contains: RUBY_DEFAULT_CONTAINS - } - }, - { - className: 'meta.prompt', - begin: '^(' + SIMPLE_PROMPT + "|" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])', - starts: { - end: '$', - keywords: RUBY_KEYWORDS, - contains: RUBY_DEFAULT_CONTAINS - } - } - ]; - - COMMENT_MODES.unshift(IRB_OBJECT); - - return { - name: 'Ruby', - aliases: [ - 'rb', - 'gemspec', - 'podspec', - 'thor', - 'irb' - ], - keywords: RUBY_KEYWORDS, - illegal: /\/\*/, - contains: [ hljs.SHEBANG({ binary: "ruby" }) ] - .concat(IRB_DEFAULT) - .concat(COMMENT_MODES) - .concat(RUBY_DEFAULT_CONTAINS) - }; -} - -module.exports = ruby; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/ruleslanguage.js" -/*!**********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/ruleslanguage.js ***! - \**********************************************************************/ -(module) { - -/* -Language: Oracle Rules Language -Author: Jason Jacobson -Description: The Oracle Utilities Rules Language is used to program the Oracle Utilities Applications acquired from LODESTAR Corporation. The products include Billing Component, LPSS, Pricing Component etc. through version 1.6.1. -Website: https://docs.oracle.com/cd/E17904_01/dev.1111/e10227/rlref.htm -Category: enterprise -*/ - -function ruleslanguage(hljs) { - return { - name: 'Oracle Rules Language', - keywords: { - keyword: - 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' - + 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' - + 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' - + 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' - + 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' - + 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' - + 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' - + 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' - + 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' - + 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' - + 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' - + 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' - + 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' - + 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' - + 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' - + 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' - + 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' - + 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' - + 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' - + 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' - + 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' - + 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' - + 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' - + 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' - + 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' - + 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' - + 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' - + 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' - + 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' - + 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' - + 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' - + 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' - + 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' - + 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' - + 'NUMDAYS READ_DATE STAGING', - built_in: - 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' - + 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' - + 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' - + 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' - + 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME' - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - { - className: 'literal', - variants: [ - { // looks like #-comment - begin: '#\\s+', - relevance: 0 - }, - { begin: '#[a-zA-Z .]+' } - ] - } - ] - }; -} - -module.exports = ruleslanguage; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/rust.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/rust.js ***! - \*************************************************************/ -(module) { - -/* -Language: Rust -Author: Andrey Vlasovskikh -Contributors: Roman Shmatov , Kasper Andersen -Website: https://www.rust-lang.org -Category: common, system -*/ - -/** @type LanguageFn */ - -function rust(hljs) { - const regex = hljs.regex; - // ============================================ - // Added to support the r# keyword, which is a raw identifier in Rust. - const RAW_IDENTIFIER = /(r#)?/; - const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE); - const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE); - // ============================================ - const FUNCTION_INVOKE = { - className: "title.function.invoke", - relevance: 0, - begin: regex.concat( - /\b/, - /(?!let|for|while|if|else|match\b)/, - IDENT_RE, - regex.lookahead(/\s*\(/)) - }; - const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\?'; - const KEYWORDS = [ - "abstract", - "as", - "async", - "await", - "become", - "box", - "break", - "const", - "continue", - "crate", - "do", - "dyn", - "else", - "enum", - "extern", - "false", - "final", - "fn", - "for", - "if", - "impl", - "in", - "let", - "loop", - "macro", - "match", - "mod", - "move", - "mut", - "override", - "priv", - "pub", - "ref", - "return", - "self", - "Self", - "static", - "struct", - "super", - "trait", - "true", - "try", - "type", - "typeof", - "union", - "unsafe", - "unsized", - "use", - "virtual", - "where", - "while", - "yield" - ]; - const LITERALS = [ - "true", - "false", - "Some", - "None", - "Ok", - "Err" - ]; - const BUILTINS = [ - // functions - 'drop ', - // traits - "Copy", - "Send", - "Sized", - "Sync", - "Drop", - "Fn", - "FnMut", - "FnOnce", - "ToOwned", - "Clone", - "Debug", - "PartialEq", - "PartialOrd", - "Eq", - "Ord", - "AsRef", - "AsMut", - "Into", - "From", - "Default", - "Iterator", - "Extend", - "IntoIterator", - "DoubleEndedIterator", - "ExactSizeIterator", - "SliceConcatExt", - "ToString", - // macros - "assert!", - "assert_eq!", - "bitflags!", - "bytes!", - "cfg!", - "col!", - "concat!", - "concat_idents!", - "debug_assert!", - "debug_assert_eq!", - "env!", - "eprintln!", - "panic!", - "file!", - "format!", - "format_args!", - "include_bytes!", - "include_str!", - "line!", - "local_data_key!", - "module_path!", - "option_env!", - "print!", - "println!", - "select!", - "stringify!", - "try!", - "unimplemented!", - "unreachable!", - "vec!", - "write!", - "writeln!", - "macro_rules!", - "assert_ne!", - "debug_assert_ne!" - ]; - const TYPES = [ - "i8", - "i16", - "i32", - "i64", - "i128", - "isize", - "u8", - "u16", - "u32", - "u64", - "u128", - "usize", - "f32", - "f64", - "str", - "char", - "bool", - "Box", - "Option", - "Result", - "String", - "Vec" - ]; - return { - name: 'Rust', - aliases: [ 'rs' ], - keywords: { - $pattern: hljs.IDENT_RE + '!?', - type: TYPES, - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILTINS - }, - illegal: '' - }, - FUNCTION_INVOKE - ] - }; -} - -module.exports = rust; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/sas.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/sas.js ***! - \************************************************************/ -(module) { - -/* -Language: SAS -Author: Mauricio Caceres -Description: Syntax Highlighting for SAS -Category: scientific -*/ - -/** @type LanguageFn */ -function sas(hljs) { - const regex = hljs.regex; - // Data step and PROC SQL statements - const SAS_KEYWORDS = [ - "do", - "if", - "then", - "else", - "end", - "until", - "while", - "abort", - "array", - "attrib", - "by", - "call", - "cards", - "cards4", - "catname", - "continue", - "datalines", - "datalines4", - "delete", - "delim", - "delimiter", - "display", - "dm", - "drop", - "endsas", - "error", - "file", - "filename", - "footnote", - "format", - "goto", - "in", - "infile", - "informat", - "input", - "keep", - "label", - "leave", - "length", - "libname", - "link", - "list", - "lostcard", - "merge", - "missing", - "modify", - "options", - "output", - "out", - "page", - "put", - "redirect", - "remove", - "rename", - "replace", - "retain", - "return", - "select", - "set", - "skip", - "startsas", - "stop", - "title", - "update", - "waitsas", - "where", - "window", - "x|0", - "systask", - "add", - "and", - "alter", - "as", - "cascade", - "check", - "create", - "delete", - "describe", - "distinct", - "drop", - "foreign", - "from", - "group", - "having", - "index", - "insert", - "into", - "in", - "key", - "like", - "message", - "modify", - "msgtype", - "not", - "null", - "on", - "or", - "order", - "primary", - "references", - "reset", - "restrict", - "select", - "set", - "table", - "unique", - "update", - "validate", - "view", - "where" - ]; - - // Built-in SAS functions - const FUNCTIONS = [ - "abs", - "addr", - "airy", - "arcos", - "arsin", - "atan", - "attrc", - "attrn", - "band", - "betainv", - "blshift", - "bnot", - "bor", - "brshift", - "bxor", - "byte", - "cdf", - "ceil", - "cexist", - "cinv", - "close", - "cnonct", - "collate", - "compbl", - "compound", - "compress", - "cos", - "cosh", - "css", - "curobs", - "cv", - "daccdb", - "daccdbsl", - "daccsl", - "daccsyd", - "dacctab", - "dairy", - "date", - "datejul", - "datepart", - "datetime", - "day", - "dclose", - "depdb", - "depdbsl", - "depdbsl", - "depsl", - "depsl", - "depsyd", - "depsyd", - "deptab", - "deptab", - "dequote", - "dhms", - "dif", - "digamma", - "dim", - "dinfo", - "dnum", - "dopen", - "doptname", - "doptnum", - "dread", - "dropnote", - "dsname", - "erf", - "erfc", - "exist", - "exp", - "fappend", - "fclose", - "fcol", - "fdelete", - "fetch", - "fetchobs", - "fexist", - "fget", - "fileexist", - "filename", - "fileref", - "finfo", - "finv", - "fipname", - "fipnamel", - "fipstate", - "floor", - "fnonct", - "fnote", - "fopen", - "foptname", - "foptnum", - "fpoint", - "fpos", - "fput", - "fread", - "frewind", - "frlen", - "fsep", - "fuzz", - "fwrite", - "gaminv", - "gamma", - "getoption", - "getvarc", - "getvarn", - "hbound", - "hms", - "hosthelp", - "hour", - "ibessel", - "index", - "indexc", - "indexw", - "input", - "inputc", - "inputn", - "int", - "intck", - "intnx", - "intrr", - "irr", - "jbessel", - "juldate", - "kurtosis", - "lag", - "lbound", - "left", - "length", - "lgamma", - "libname", - "libref", - "log", - "log10", - "log2", - "logpdf", - "logpmf", - "logsdf", - "lowcase", - "max", - "mdy", - "mean", - "min", - "minute", - "mod", - "month", - "mopen", - "mort", - "n", - "netpv", - "nmiss", - "normal", - "note", - "npv", - "open", - "ordinal", - "pathname", - "pdf", - "peek", - "peekc", - "pmf", - "point", - "poisson", - "poke", - "probbeta", - "probbnml", - "probchi", - "probf", - "probgam", - "probhypr", - "probit", - "probnegb", - "probnorm", - "probt", - "put", - "putc", - "putn", - "qtr", - "quote", - "ranbin", - "rancau", - "ranexp", - "rangam", - "range", - "rank", - "rannor", - "ranpoi", - "rantbl", - "rantri", - "ranuni", - "repeat", - "resolve", - "reverse", - "rewind", - "right", - "round", - "saving", - "scan", - "sdf", - "second", - "sign", - "sin", - "sinh", - "skewness", - "soundex", - "spedis", - "sqrt", - "std", - "stderr", - "stfips", - "stname", - "stnamel", - "substr", - "sum", - "symget", - "sysget", - "sysmsg", - "sysprod", - "sysrc", - "system", - "tan", - "tanh", - "time", - "timepart", - "tinv", - "tnonct", - "today", - "translate", - "tranwrd", - "trigamma", - "trim", - "trimn", - "trunc", - "uniform", - "upcase", - "uss", - "var", - "varfmt", - "varinfmt", - "varlabel", - "varlen", - "varname", - "varnum", - "varray", - "varrayx", - "vartype", - "verify", - "vformat", - "vformatd", - "vformatdx", - "vformatn", - "vformatnx", - "vformatw", - "vformatwx", - "vformatx", - "vinarray", - "vinarrayx", - "vinformat", - "vinformatd", - "vinformatdx", - "vinformatn", - "vinformatnx", - "vinformatw", - "vinformatwx", - "vinformatx", - "vlabel", - "vlabelx", - "vlength", - "vlengthx", - "vname", - "vnamex", - "vtype", - "vtypex", - "weekday", - "year", - "yyq", - "zipfips", - "zipname", - "zipnamel", - "zipstate" - ]; - - // Built-in macro functions - const MACRO_FUNCTIONS = [ - "bquote", - "nrbquote", - "cmpres", - "qcmpres", - "compstor", - "datatyp", - "display", - "do", - "else", - "end", - "eval", - "global", - "goto", - "if", - "index", - "input", - "keydef", - "label", - "left", - "length", - "let", - "local", - "lowcase", - "macro", - "mend", - "nrbquote", - "nrquote", - "nrstr", - "put", - "qcmpres", - "qleft", - "qlowcase", - "qscan", - "qsubstr", - "qsysfunc", - "qtrim", - "quote", - "qupcase", - "scan", - "str", - "substr", - "superq", - "syscall", - "sysevalf", - "sysexec", - "sysfunc", - "sysget", - "syslput", - "sysprod", - "sysrc", - "sysrput", - "then", - "to", - "trim", - "unquote", - "until", - "upcase", - "verify", - "while", - "window" - ]; - - const LITERALS = [ - "null", - "missing", - "_all_", - "_automatic_", - "_character_", - "_infile_", - "_n_", - "_name_", - "_null_", - "_numeric_", - "_user_", - "_webout_" - ]; - - return { - name: 'SAS', - case_insensitive: true, - keywords: { - literal: LITERALS, - keyword: SAS_KEYWORDS - }, - contains: [ - { - // Distinct highlight for proc , data, run, quit - className: 'keyword', - begin: /^\s*(proc [\w\d_]+|data|run|quit)[\s;]/ - }, - { - // Macro variables - className: 'variable', - begin: /&[a-zA-Z_&][a-zA-Z0-9_]*\.?/ - }, - { - begin: [ - /^\s*/, - /datalines;|cards;/, - /(?:.*\n)+/, - /^\s*;\s*$/ - ], - className: { - 2: "keyword", - 3: "string" - } - }, - { - begin: [ - /%mend|%macro/, - /\s+/, - /[a-zA-Z_&][a-zA-Z0-9_]*/ - ], - className: { - 1: "built_in", - 3: "title.function" - } - }, - { // Built-in macro variables - className: 'built_in', - begin: '%' + regex.either(...MACRO_FUNCTIONS) - }, - { - // User-defined macro functions - className: 'title.function', - begin: /%[a-zA-Z_][a-zA-Z_0-9]*/ - }, - { - // TODO: this is most likely an incorrect classification - // built_in may need more nuance - // https://github.com/highlightjs/highlight.js/issues/2521 - className: 'meta', - begin: regex.either(...FUNCTIONS) + '(?=\\()' - }, - { - className: 'string', - variants: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }, - hljs.COMMENT('\\*', ';'), - hljs.C_BLOCK_COMMENT_MODE - ] - }; -} - -module.exports = sas; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/scala.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/scala.js ***! - \**************************************************************/ -(module) { - -/* -Language: Scala -Category: functional -Author: Jan Berkel -Contributors: Erik Osheim -Website: https://www.scala-lang.org -*/ - -function scala(hljs) { - const regex = hljs.regex; - const ANNOTATION = { - className: 'meta', - begin: '@[A-Za-z]+' - }; - - // used in strings for escaping/interpolation/substitution - const SUBST = { - className: 'subst', - variants: [ - { begin: '\\$[A-Za-z0-9_]+' }, - { - begin: /\$\{/, - end: /\}/ - } - ] - }; - - const STRING = { - className: 'string', - variants: [ - { - begin: '"""', - end: '"""' - }, - { - begin: '"', - end: '"', - illegal: '\\n', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - begin: '[a-z]+"', - end: '"', - illegal: '\\n', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }, - { - className: 'string', - begin: '[a-z]+"""', - end: '"""', - contains: [ SUBST ], - relevance: 10 - } - ] - - }; - - const TYPE = { - className: 'type', - begin: '\\b[A-Z][A-Za-z0-9_]*', - relevance: 0 - }; - - const NAME = { - className: 'title', - begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/, - relevance: 0 - }; - - const CLASS = { - className: 'class', - beginKeywords: 'class object trait type', - end: /[:={\[\n;]/, - excludeEnd: true, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - beginKeywords: 'extends with', - relevance: 10 - }, - { - begin: /\[/, - end: /\]/, - excludeBegin: true, - excludeEnd: true, - relevance: 0, - contains: [ - TYPE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - ] - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - relevance: 0, - contains: [ - TYPE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - ] - }, - NAME - ] - }; - - const METHOD = { - className: 'function', - beginKeywords: 'def', - end: regex.lookahead(/[:={\[(\n;]/), - contains: [ NAME ] - }; - - const EXTENSION = { - begin: [ - /^\s*/, // Is first token on the line - 'extension', - /\s+(?=[[(])/, // followed by at least one space and `[` or `(` - ], - beginScope: { 2: "keyword", } - }; - - const END = { - begin: [ - /^\s*/, // Is first token on the line - /end/, - /\s+/, - /(extension\b)?/, // `extension` is the only marker that follows an `end` that cannot be captured by another rule. - ], - beginScope: { - 2: "keyword", - 4: "keyword", - } - }; - - // TODO: use negative look-behind in future - // /(?', - /\s+/, - /using/, - /\s+/, - /\S+/ - ], - beginScope: { - 1: "comment", - 3: "keyword", - 5: "type" - }, - end: /$/, - contains: [ - DIRECTIVE_VALUE, - ] - }; - - return { - name: 'Scala', - keywords: { - literal: 'true false null', - keyword: 'type yield lazy override def with val var sealed abstract private trait object if then forSome for while do throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit export enum given transparent' - }, - contains: [ - USING_DIRECTIVE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - STRING, - TYPE, - METHOD, - CLASS, - hljs.C_NUMBER_MODE, - EXTENSION, - END, - ...INLINE_MODES, - USING_PARAM_CLAUSE, - ANNOTATION - ] - }; -} - -module.exports = scala; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/scheme.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/scheme.js ***! - \***************************************************************/ -(module) { - -/* -Language: Scheme -Description: Scheme is a programming language in the Lisp family. - (keywords based on http://community.schemewiki.org/?scheme-keywords) -Author: JP Verkamp -Contributors: Ivan Sagalaev -Origin: clojure.js -Website: http://community.schemewiki.org/?what-is-scheme -Category: lisp -*/ - -function scheme(hljs) { - const SCHEME_IDENT_RE = '[^\\(\\)\\[\\]\\{\\}",\'`;#|\\\\\\s]+'; - const SCHEME_SIMPLE_NUMBER_RE = '(-|\\+)?\\d+([./]\\d+)?'; - const SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i'; - const KEYWORDS = { - $pattern: SCHEME_IDENT_RE, - built_in: - 'case-lambda call/cc class define-class exit-handler field import ' - + 'inherit init-field interface let*-values let-values let/ec mixin ' - + 'opt-lambda override protect provide public rename require ' - + 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' - + 'when with-syntax and begin call-with-current-continuation ' - + 'call-with-input-file call-with-output-file case cond define ' - + 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' - + 'let-syntax letrec letrec-syntax map or syntax-rules \' * + , ,@ - ... / ' - + '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' - + 'boolean? caar cadr call-with-input-file call-with-output-file ' - + 'call-with-values car cdddar cddddr cdr ceiling char->integer ' - + 'char-alphabetic? char-ci<=? char-ci=? char-ci>? ' - + 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' - + 'char-upper-case? char-whitespace? char<=? char=? char>? ' - + 'char? close-input-port close-output-port complex? cons cos ' - + 'current-input-port current-output-port denominator display eof-object? ' - + 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' - + 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' - + 'integer? interaction-environment lcm length list list->string ' - + 'list->vector list-ref list-tail list? load log magnitude make-polar ' - + 'make-rectangular make-string make-vector max member memq memv min ' - + 'modulo negative? newline not null-environment null? number->string ' - + 'number? numerator odd? open-input-file open-output-file output-port? ' - + 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' - + 'rational? rationalize read read-char real-part real? remainder reverse ' - + 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' - + 'string->list string->number string->symbol string-append string-ci<=? ' - + 'string-ci=? string-ci>? string-copy ' - + 'string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? ' - + 'tan transcript-off transcript-on truncate values vector ' - + 'vector->list vector-fill! vector-length vector-ref vector-set! ' - + 'with-input-from-file with-output-to-file write write-char zero?' - }; - - const LITERAL = { - className: 'literal', - begin: '(#t|#f|#\\\\' + SCHEME_IDENT_RE + '|#\\\\.)' - }; - - const NUMBER = { - className: 'number', - variants: [ - { - begin: SCHEME_SIMPLE_NUMBER_RE, - relevance: 0 - }, - { - begin: SCHEME_COMPLEX_NUMBER_RE, - relevance: 0 - }, - { begin: '#b[0-1]+(/[0-1]+)?' }, - { begin: '#o[0-7]+(/[0-7]+)?' }, - { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' } - ] - }; - - const STRING = hljs.QUOTE_STRING_MODE; - - const COMMENT_MODES = [ - hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ), - hljs.COMMENT('#\\|', '\\|#') - ]; - - const IDENT = { - begin: SCHEME_IDENT_RE, - relevance: 0 - }; - - const QUOTED_IDENT = { - className: 'symbol', - begin: '\'' + SCHEME_IDENT_RE - }; - - const BODY = { - endsWithParent: true, - relevance: 0 - }; - - const QUOTED_LIST = { - variants: [ - { begin: /'/ }, - { begin: '`' } - ], - contains: [ - { - begin: '\\(', - end: '\\)', - contains: [ - 'self', - LITERAL, - STRING, - NUMBER, - IDENT, - QUOTED_IDENT - ] - } - ] - }; - - const NAME = { - className: 'name', - relevance: 0, - begin: SCHEME_IDENT_RE, - keywords: KEYWORDS - }; - - const LAMBDA = { - begin: /lambda/, - endsWithParent: true, - returnBegin: true, - contains: [ - NAME, - { - endsParent: true, - variants: [ - { - begin: /\(/, - end: /\)/ - }, - { - begin: /\[/, - end: /\]/ - } - ], - contains: [ IDENT ] - } - ] - }; - - const LIST = { - variants: [ - { - begin: '\\(', - end: '\\)' - }, - { - begin: '\\[', - end: '\\]' - } - ], - contains: [ - LAMBDA, - NAME, - BODY - ] - }; - - BODY.contains = [ - LITERAL, - NUMBER, - STRING, - IDENT, - QUOTED_IDENT, - QUOTED_LIST, - LIST - ].concat(COMMENT_MODES); - - return { - name: 'Scheme', - aliases: ['scm'], - illegal: /\S/, - contains: [ - hljs.SHEBANG(), - NUMBER, - STRING, - QUOTED_IDENT, - QUOTED_LIST, - LIST - ].concat(COMMENT_MODES) - }; -} - -module.exports = scheme; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/scilab.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/scilab.js ***! - \***************************************************************/ -(module) { - -/* -Language: Scilab -Author: Sylvestre Ledru -Origin: matlab.js -Description: Scilab is a port from Matlab -Website: https://www.scilab.org -Category: scientific -*/ - -function scilab(hljs) { - const COMMON_CONTAINS = [ - hljs.C_NUMBER_MODE, - { - className: 'string', - begin: '\'|\"', - end: '\'|\"', - contains: [ - hljs.BACKSLASH_ESCAPE, - { begin: '\'\'' } - ] - } - ]; - - return { - name: 'Scilab', - aliases: [ 'sci' ], - keywords: { - $pattern: /%?\w+/, - keyword: 'abort break case clear catch continue do elseif else endfunction end for function ' - + 'global if pause return resume select try then while', - literal: - '%f %F %t %T %pi %eps %inf %nan %e %i %z %s', - built_in: // Scilab has more than 2000 functions. Just list the most commons - 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error ' - + 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty ' - + 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log ' - + 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real ' - + 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan ' - + 'type typename warning zeros matrix' - }, - illegal: '("|#|/\\*|\\s+/\\w+)', - contains: [ - { - className: 'function', - beginKeywords: 'function', - end: '$', - contains: [ - hljs.UNDERSCORE_TITLE_MODE, - { - className: 'params', - begin: '\\(', - end: '\\)' - } - ] - }, - // seems to be a guard against [ident]' or [ident]. - // perhaps to prevent attributes from flagging as keywords? - { - begin: '[a-zA-Z_][a-zA-Z_0-9]*[\\.\']+', - relevance: 0 - }, - { - begin: '\\[', - end: '\\][\\.\']*', - relevance: 0, - contains: COMMON_CONTAINS - }, - hljs.COMMENT('//', '$') - ].concat(COMMON_CONTAINS) - }; -} - -module.exports = scilab; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/scss.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/scss.js ***! - \*************************************************************/ -(module) { - -const MODES = (hljs) => { - return { - IMPORTANT: { - scope: 'meta', - begin: '!important' - }, - BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, - HEXCOLOR: { - scope: 'number', - begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ - }, - FUNCTION_DISPATCH: { - className: "built_in", - begin: /[\w-]+(?=\()/ - }, - ATTRIBUTE_SELECTOR_MODE: { - scope: 'selector-attr', - begin: /\[/, - end: /\]/, - illegal: '$', - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }, - CSS_NUMBER_MODE: { - scope: 'number', - begin: hljs.NUMBER_RE + '(' + - '%|em|ex|ch|rem' + - '|vw|vh|vmin|vmax' + - '|cm|mm|in|pt|pc|px' + - '|deg|grad|rad|turn' + - '|s|ms' + - '|Hz|kHz' + - '|dpi|dpcm|dppx' + - ')?', - relevance: 0 - }, - CSS_VARIABLE: { - className: "attr", - begin: /--[A-Za-z_][A-Za-z0-9_-]*/ - } - }; -}; - -const HTML_TAGS = [ - 'a', - 'abbr', - 'address', - 'article', - 'aside', - 'audio', - 'b', - 'blockquote', - 'body', - 'button', - 'canvas', - 'caption', - 'cite', - 'code', - 'dd', - 'del', - 'details', - 'dfn', - 'div', - 'dl', - 'dt', - 'em', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'header', - 'hgroup', - 'html', - 'i', - 'iframe', - 'img', - 'input', - 'ins', - 'kbd', - 'label', - 'legend', - 'li', - 'main', - 'mark', - 'menu', - 'nav', - 'object', - 'ol', - 'optgroup', - 'option', - 'p', - 'picture', - 'q', - 'quote', - 'samp', - 'section', - 'select', - 'source', - 'span', - 'strong', - 'summary', - 'sup', - 'table', - 'tbody', - 'td', - 'textarea', - 'tfoot', - 'th', - 'thead', - 'time', - 'tr', - 'ul', - 'var', - 'video' -]; - -const SVG_TAGS = [ - 'defs', - 'g', - 'marker', - 'mask', - 'pattern', - 'svg', - 'switch', - 'symbol', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feFlood', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMorphology', - 'feOffset', - 'feSpecularLighting', - 'feTile', - 'feTurbulence', - 'linearGradient', - 'radialGradient', - 'stop', - 'circle', - 'ellipse', - 'image', - 'line', - 'path', - 'polygon', - 'polyline', - 'rect', - 'text', - 'use', - 'textPath', - 'tspan', - 'foreignObject', - 'clipPath' -]; - -const TAGS = [ - ...HTML_TAGS, - ...SVG_TAGS, -]; - -// Sorting, then reversing makes sure longer attributes/elements like -// `font-weight` are matched fully instead of getting false positives on say `font` - -const MEDIA_FEATURES = [ - 'any-hover', - 'any-pointer', - 'aspect-ratio', - 'color', - 'color-gamut', - 'color-index', - 'device-aspect-ratio', - 'device-height', - 'device-width', - 'display-mode', - 'forced-colors', - 'grid', - 'height', - 'hover', - 'inverted-colors', - 'monochrome', - 'orientation', - 'overflow-block', - 'overflow-inline', - 'pointer', - 'prefers-color-scheme', - 'prefers-contrast', - 'prefers-reduced-motion', - 'prefers-reduced-transparency', - 'resolution', - 'scan', - 'scripting', - 'update', - 'width', - // TODO: find a better solution? - 'min-width', - 'max-width', - 'min-height', - 'max-height' -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes -const PSEUDO_CLASSES = [ - 'active', - 'any-link', - 'blank', - 'checked', - 'current', - 'default', - 'defined', - 'dir', // dir() - 'disabled', - 'drop', - 'empty', - 'enabled', - 'first', - 'first-child', - 'first-of-type', - 'fullscreen', - 'future', - 'focus', - 'focus-visible', - 'focus-within', - 'has', // has() - 'host', // host or host() - 'host-context', // host-context() - 'hover', - 'indeterminate', - 'in-range', - 'invalid', - 'is', // is() - 'lang', // lang() - 'last-child', - 'last-of-type', - 'left', - 'link', - 'local-link', - 'not', // not() - 'nth-child', // nth-child() - 'nth-col', // nth-col() - 'nth-last-child', // nth-last-child() - 'nth-last-col', // nth-last-col() - 'nth-last-of-type', //nth-last-of-type() - 'nth-of-type', //nth-of-type() - 'only-child', - 'only-of-type', - 'optional', - 'out-of-range', - 'past', - 'placeholder-shown', - 'read-only', - 'read-write', - 'required', - 'right', - 'root', - 'scope', - 'target', - 'target-within', - 'user-invalid', - 'valid', - 'visited', - 'where' // where() -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements -const PSEUDO_ELEMENTS = [ - 'after', - 'backdrop', - 'before', - 'cue', - 'cue-region', - 'first-letter', - 'first-line', - 'grammar-error', - 'marker', - 'part', - 'placeholder', - 'selection', - 'slotted', - 'spelling-error' -].sort().reverse(); - -const ATTRIBUTES = [ - 'accent-color', - 'align-content', - 'align-items', - 'align-self', - 'alignment-baseline', - 'all', - 'anchor-name', - 'animation', - 'animation-composition', - 'animation-delay', - 'animation-direction', - 'animation-duration', - 'animation-fill-mode', - 'animation-iteration-count', - 'animation-name', - 'animation-play-state', - 'animation-range', - 'animation-range-end', - 'animation-range-start', - 'animation-timeline', - 'animation-timing-function', - 'appearance', - 'aspect-ratio', - 'backdrop-filter', - 'backface-visibility', - 'background', - 'background-attachment', - 'background-blend-mode', - 'background-clip', - 'background-color', - 'background-image', - 'background-origin', - 'background-position', - 'background-position-x', - 'background-position-y', - 'background-repeat', - 'background-size', - 'baseline-shift', - 'block-size', - 'border', - 'border-block', - 'border-block-color', - 'border-block-end', - 'border-block-end-color', - 'border-block-end-style', - 'border-block-end-width', - 'border-block-start', - 'border-block-start-color', - 'border-block-start-style', - 'border-block-start-width', - 'border-block-style', - 'border-block-width', - 'border-bottom', - 'border-bottom-color', - 'border-bottom-left-radius', - 'border-bottom-right-radius', - 'border-bottom-style', - 'border-bottom-width', - 'border-collapse', - 'border-color', - 'border-end-end-radius', - 'border-end-start-radius', - 'border-image', - 'border-image-outset', - 'border-image-repeat', - 'border-image-slice', - 'border-image-source', - 'border-image-width', - 'border-inline', - 'border-inline-color', - 'border-inline-end', - 'border-inline-end-color', - 'border-inline-end-style', - 'border-inline-end-width', - 'border-inline-start', - 'border-inline-start-color', - 'border-inline-start-style', - 'border-inline-start-width', - 'border-inline-style', - 'border-inline-width', - 'border-left', - 'border-left-color', - 'border-left-style', - 'border-left-width', - 'border-radius', - 'border-right', - 'border-right-color', - 'border-right-style', - 'border-right-width', - 'border-spacing', - 'border-start-end-radius', - 'border-start-start-radius', - 'border-style', - 'border-top', - 'border-top-color', - 'border-top-left-radius', - 'border-top-right-radius', - 'border-top-style', - 'border-top-width', - 'border-width', - 'bottom', - 'box-align', - 'box-decoration-break', - 'box-direction', - 'box-flex', - 'box-flex-group', - 'box-lines', - 'box-ordinal-group', - 'box-orient', - 'box-pack', - 'box-shadow', - 'box-sizing', - 'break-after', - 'break-before', - 'break-inside', - 'caption-side', - 'caret-color', - 'clear', - 'clip', - 'clip-path', - 'clip-rule', - 'color', - 'color-interpolation', - 'color-interpolation-filters', - 'color-profile', - 'color-rendering', - 'color-scheme', - 'column-count', - 'column-fill', - 'column-gap', - 'column-rule', - 'column-rule-color', - 'column-rule-style', - 'column-rule-width', - 'column-span', - 'column-width', - 'columns', - 'contain', - 'contain-intrinsic-block-size', - 'contain-intrinsic-height', - 'contain-intrinsic-inline-size', - 'contain-intrinsic-size', - 'contain-intrinsic-width', - 'container', - 'container-name', - 'container-type', - 'content', - 'content-visibility', - 'counter-increment', - 'counter-reset', - 'counter-set', - 'cue', - 'cue-after', - 'cue-before', - 'cursor', - 'cx', - 'cy', - 'direction', - 'display', - 'dominant-baseline', - 'empty-cells', - 'enable-background', - 'field-sizing', - 'fill', - 'fill-opacity', - 'fill-rule', - 'filter', - 'flex', - 'flex-basis', - 'flex-direction', - 'flex-flow', - 'flex-grow', - 'flex-shrink', - 'flex-wrap', - 'float', - 'flood-color', - 'flood-opacity', - 'flow', - 'font', - 'font-display', - 'font-family', - 'font-feature-settings', - 'font-kerning', - 'font-language-override', - 'font-optical-sizing', - 'font-palette', - 'font-size', - 'font-size-adjust', - 'font-smooth', - 'font-smoothing', - 'font-stretch', - 'font-style', - 'font-synthesis', - 'font-synthesis-position', - 'font-synthesis-small-caps', - 'font-synthesis-style', - 'font-synthesis-weight', - 'font-variant', - 'font-variant-alternates', - 'font-variant-caps', - 'font-variant-east-asian', - 'font-variant-emoji', - 'font-variant-ligatures', - 'font-variant-numeric', - 'font-variant-position', - 'font-variation-settings', - 'font-weight', - 'forced-color-adjust', - 'gap', - 'glyph-orientation-horizontal', - 'glyph-orientation-vertical', - 'grid', - 'grid-area', - 'grid-auto-columns', - 'grid-auto-flow', - 'grid-auto-rows', - 'grid-column', - 'grid-column-end', - 'grid-column-start', - 'grid-gap', - 'grid-row', - 'grid-row-end', - 'grid-row-start', - 'grid-template', - 'grid-template-areas', - 'grid-template-columns', - 'grid-template-rows', - 'hanging-punctuation', - 'height', - 'hyphenate-character', - 'hyphenate-limit-chars', - 'hyphens', - 'icon', - 'image-orientation', - 'image-rendering', - 'image-resolution', - 'ime-mode', - 'initial-letter', - 'initial-letter-align', - 'inline-size', - 'inset', - 'inset-area', - 'inset-block', - 'inset-block-end', - 'inset-block-start', - 'inset-inline', - 'inset-inline-end', - 'inset-inline-start', - 'isolation', - 'justify-content', - 'justify-items', - 'justify-self', - 'kerning', - 'left', - 'letter-spacing', - 'lighting-color', - 'line-break', - 'line-height', - 'line-height-step', - 'list-style', - 'list-style-image', - 'list-style-position', - 'list-style-type', - 'margin', - 'margin-block', - 'margin-block-end', - 'margin-block-start', - 'margin-bottom', - 'margin-inline', - 'margin-inline-end', - 'margin-inline-start', - 'margin-left', - 'margin-right', - 'margin-top', - 'margin-trim', - 'marker', - 'marker-end', - 'marker-mid', - 'marker-start', - 'marks', - 'mask', - 'mask-border', - 'mask-border-mode', - 'mask-border-outset', - 'mask-border-repeat', - 'mask-border-slice', - 'mask-border-source', - 'mask-border-width', - 'mask-clip', - 'mask-composite', - 'mask-image', - 'mask-mode', - 'mask-origin', - 'mask-position', - 'mask-repeat', - 'mask-size', - 'mask-type', - 'masonry-auto-flow', - 'math-depth', - 'math-shift', - 'math-style', - 'max-block-size', - 'max-height', - 'max-inline-size', - 'max-width', - 'min-block-size', - 'min-height', - 'min-inline-size', - 'min-width', - 'mix-blend-mode', - 'nav-down', - 'nav-index', - 'nav-left', - 'nav-right', - 'nav-up', - 'none', - 'normal', - 'object-fit', - 'object-position', - 'offset', - 'offset-anchor', - 'offset-distance', - 'offset-path', - 'offset-position', - 'offset-rotate', - 'opacity', - 'order', - 'orphans', - 'outline', - 'outline-color', - 'outline-offset', - 'outline-style', - 'outline-width', - 'overflow', - 'overflow-anchor', - 'overflow-block', - 'overflow-clip-margin', - 'overflow-inline', - 'overflow-wrap', - 'overflow-x', - 'overflow-y', - 'overlay', - 'overscroll-behavior', - 'overscroll-behavior-block', - 'overscroll-behavior-inline', - 'overscroll-behavior-x', - 'overscroll-behavior-y', - 'padding', - 'padding-block', - 'padding-block-end', - 'padding-block-start', - 'padding-bottom', - 'padding-inline', - 'padding-inline-end', - 'padding-inline-start', - 'padding-left', - 'padding-right', - 'padding-top', - 'page', - 'page-break-after', - 'page-break-before', - 'page-break-inside', - 'paint-order', - 'pause', - 'pause-after', - 'pause-before', - 'perspective', - 'perspective-origin', - 'place-content', - 'place-items', - 'place-self', - 'pointer-events', - 'position', - 'position-anchor', - 'position-visibility', - 'print-color-adjust', - 'quotes', - 'r', - 'resize', - 'rest', - 'rest-after', - 'rest-before', - 'right', - 'rotate', - 'row-gap', - 'ruby-align', - 'ruby-position', - 'scale', - 'scroll-behavior', - 'scroll-margin', - 'scroll-margin-block', - 'scroll-margin-block-end', - 'scroll-margin-block-start', - 'scroll-margin-bottom', - 'scroll-margin-inline', - 'scroll-margin-inline-end', - 'scroll-margin-inline-start', - 'scroll-margin-left', - 'scroll-margin-right', - 'scroll-margin-top', - 'scroll-padding', - 'scroll-padding-block', - 'scroll-padding-block-end', - 'scroll-padding-block-start', - 'scroll-padding-bottom', - 'scroll-padding-inline', - 'scroll-padding-inline-end', - 'scroll-padding-inline-start', - 'scroll-padding-left', - 'scroll-padding-right', - 'scroll-padding-top', - 'scroll-snap-align', - 'scroll-snap-stop', - 'scroll-snap-type', - 'scroll-timeline', - 'scroll-timeline-axis', - 'scroll-timeline-name', - 'scrollbar-color', - 'scrollbar-gutter', - 'scrollbar-width', - 'shape-image-threshold', - 'shape-margin', - 'shape-outside', - 'shape-rendering', - 'speak', - 'speak-as', - 'src', // @font-face - 'stop-color', - 'stop-opacity', - 'stroke', - 'stroke-dasharray', - 'stroke-dashoffset', - 'stroke-linecap', - 'stroke-linejoin', - 'stroke-miterlimit', - 'stroke-opacity', - 'stroke-width', - 'tab-size', - 'table-layout', - 'text-align', - 'text-align-all', - 'text-align-last', - 'text-anchor', - 'text-combine-upright', - 'text-decoration', - 'text-decoration-color', - 'text-decoration-line', - 'text-decoration-skip', - 'text-decoration-skip-ink', - 'text-decoration-style', - 'text-decoration-thickness', - 'text-emphasis', - 'text-emphasis-color', - 'text-emphasis-position', - 'text-emphasis-style', - 'text-indent', - 'text-justify', - 'text-orientation', - 'text-overflow', - 'text-rendering', - 'text-shadow', - 'text-size-adjust', - 'text-transform', - 'text-underline-offset', - 'text-underline-position', - 'text-wrap', - 'text-wrap-mode', - 'text-wrap-style', - 'timeline-scope', - 'top', - 'touch-action', - 'transform', - 'transform-box', - 'transform-origin', - 'transform-style', - 'transition', - 'transition-behavior', - 'transition-delay', - 'transition-duration', - 'transition-property', - 'transition-timing-function', - 'translate', - 'unicode-bidi', - 'user-modify', - 'user-select', - 'vector-effect', - 'vertical-align', - 'view-timeline', - 'view-timeline-axis', - 'view-timeline-inset', - 'view-timeline-name', - 'view-transition-name', - 'visibility', - 'voice-balance', - 'voice-duration', - 'voice-family', - 'voice-pitch', - 'voice-range', - 'voice-rate', - 'voice-stress', - 'voice-volume', - 'white-space', - 'white-space-collapse', - 'widows', - 'width', - 'will-change', - 'word-break', - 'word-spacing', - 'word-wrap', - 'writing-mode', - 'x', - 'y', - 'z-index', - 'zoom' -].sort().reverse(); - -/* -Language: SCSS -Description: Scss is an extension of the syntax of CSS. -Author: Kurt Emch -Website: https://sass-lang.com -Category: common, css, web -*/ - - -/** @type LanguageFn */ -function scss(hljs) { - const modes = MODES(hljs); - const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS; - const PSEUDO_CLASSES$1 = PSEUDO_CLASSES; - - const AT_IDENTIFIER = '@[a-z-]+'; // @font-face - const AT_MODIFIERS = "and or not only"; - const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*'; - const VARIABLE = { - className: 'variable', - begin: '(\\$' + IDENT_RE + ')\\b', - relevance: 0 - }; - - return { - name: 'SCSS', - case_insensitive: true, - illegal: '[=/|\']', - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - // to recognize keyframe 40% etc which are outside the scope of our - // attribute value mode - modes.CSS_NUMBER_MODE, - { - className: 'selector-id', - begin: '#[A-Za-z0-9_-]+', - relevance: 0 - }, - { - className: 'selector-class', - begin: '\\.[A-Za-z0-9_-]+', - relevance: 0 - }, - modes.ATTRIBUTE_SELECTOR_MODE, - { - className: 'selector-tag', - begin: '\\b(' + TAGS.join('|') + ')\\b', - // was there, before, but why? - relevance: 0 - }, - { - className: 'selector-pseudo', - begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')' - }, - { - className: 'selector-pseudo', - begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')' - }, - VARIABLE, - { // pseudo-selector params - begin: /\(/, - end: /\)/, - contains: [ modes.CSS_NUMBER_MODE ] - }, - modes.CSS_VARIABLE, - { - className: 'attribute', - begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b' - }, - { begin: '\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b' }, - { - begin: /:/, - end: /[;}{]/, - relevance: 0, - contains: [ - modes.BLOCK_COMMENT, - VARIABLE, - modes.HEXCOLOR, - modes.CSS_NUMBER_MODE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - modes.IMPORTANT, - modes.FUNCTION_DISPATCH - ] - }, - // matching these here allows us to treat them more like regular CSS - // rules so everything between the {} gets regular rule highlighting, - // which is what we want for page and font-face - { - begin: '@(page|font-face)', - keywords: { - $pattern: AT_IDENTIFIER, - keyword: '@page @font-face' - } - }, - { - begin: '@', - end: '[{;]', - returnBegin: true, - keywords: { - $pattern: /[a-z-]+/, - keyword: AT_MODIFIERS, - attribute: MEDIA_FEATURES.join(" ") - }, - contains: [ - { - begin: AT_IDENTIFIER, - className: "keyword" - }, - { - begin: /[a-z-]+(?=:)/, - className: "attribute" - }, - VARIABLE, - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - modes.HEXCOLOR, - modes.CSS_NUMBER_MODE - ] - }, - modes.FUNCTION_DISPATCH - ] - }; -} - -module.exports = scss; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/shell.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/shell.js ***! - \**************************************************************/ -(module) { - -/* -Language: Shell Session -Requires: bash.js -Author: TSUYUSATO Kitsune -Category: common -Audit: 2020 -*/ - -/** @type LanguageFn */ -function shell(hljs) { - return { - name: 'Shell Session', - aliases: [ - 'console', - 'shellsession' - ], - contains: [ - { - className: 'meta.prompt', - // We cannot add \s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result. - // For instance, in the following example, it would match "echo /path/to/home >" as a prompt: - // echo /path/to/home > t.exe - begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/, - starts: { - end: /[^\\](?=\s*$)/, - subLanguage: 'bash' - } - } - ] - }; -} - -module.exports = shell; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/smali.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/smali.js ***! - \**************************************************************/ -(module) { - -/* -Language: Smali -Author: Dennis Titze -Description: Basic Smali highlighting -Website: https://github.com/JesusFreke/smali -Category: assembler -*/ - -function smali(hljs) { - const smali_instr_low_prio = [ - 'add', - 'and', - 'cmp', - 'cmpg', - 'cmpl', - 'const', - 'div', - 'double', - 'float', - 'goto', - 'if', - 'int', - 'long', - 'move', - 'mul', - 'neg', - 'new', - 'nop', - 'not', - 'or', - 'rem', - 'return', - 'shl', - 'shr', - 'sput', - 'sub', - 'throw', - 'ushr', - 'xor' - ]; - const smali_instr_high_prio = [ - 'aget', - 'aput', - 'array', - 'check', - 'execute', - 'fill', - 'filled', - 'goto/16', - 'goto/32', - 'iget', - 'instance', - 'invoke', - 'iput', - 'monitor', - 'packed', - 'sget', - 'sparse' - ]; - const smali_keywords = [ - 'transient', - 'constructor', - 'abstract', - 'final', - 'synthetic', - 'public', - 'private', - 'protected', - 'static', - 'bridge', - 'system' - ]; - return { - name: 'Smali', - contains: [ - { - className: 'string', - begin: '"', - end: '"', - relevance: 0 - }, - hljs.COMMENT( - '#', - '$', - { relevance: 0 } - ), - { - className: 'keyword', - variants: [ - { begin: '\\s*\\.end\\s[a-zA-Z0-9]*' }, - { - begin: '^[ ]*\\.[a-zA-Z]*', - relevance: 0 - }, - { - begin: '\\s:[a-zA-Z_0-9]*', - relevance: 0 - }, - { begin: '\\s(' + smali_keywords.join('|') + ')' } - ] - }, - { - className: 'built_in', - variants: [ - { begin: '\\s(' + smali_instr_low_prio.join('|') + ')\\s' }, - { - begin: '\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\s', - relevance: 10 - }, - { - begin: '\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\s', - relevance: 10 - } - ] - }, - { - className: 'class', - begin: 'L[^\(;:\n]*;', - relevance: 0 - }, - { begin: '[vp][0-9]+' } - ] - }; -} - -module.exports = smali; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/smalltalk.js" -/*!******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/smalltalk.js ***! - \******************************************************************/ -(module) { - -/* -Language: Smalltalk -Description: Smalltalk is an object-oriented, dynamically typed reflective programming language. -Author: Vladimir Gubarkov -Website: https://en.wikipedia.org/wiki/Smalltalk -Category: system -*/ - -function smalltalk(hljs) { - const VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*'; - const CHAR = { - className: 'string', - begin: '\\$.{1}' - }; - const SYMBOL = { - className: 'symbol', - begin: '#' + hljs.UNDERSCORE_IDENT_RE - }; - return { - name: 'Smalltalk', - aliases: [ 'st' ], - keywords: [ - "self", - "super", - "nil", - "true", - "false", - "thisContext" - ], - contains: [ - hljs.COMMENT('"', '"'), - hljs.APOS_STRING_MODE, - { - className: 'type', - begin: '\\b[A-Z][A-Za-z0-9_]*', - relevance: 0 - }, - { - begin: VAR_IDENT_RE + ':', - relevance: 0 - }, - hljs.C_NUMBER_MODE, - SYMBOL, - CHAR, - { - // This looks more complicated than needed to avoid combinatorial - // explosion under V8. It effectively means `| var1 var2 ... |` with - // whitespace adjacent to `|` being optional. - begin: '\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\|', - returnBegin: true, - end: /\|/, - illegal: /\S/, - contains: [ { begin: '(\\|[ ]*)?' + VAR_IDENT_RE } ] - }, - { - begin: '#\\(', - end: '\\)', - contains: [ - hljs.APOS_STRING_MODE, - CHAR, - hljs.C_NUMBER_MODE, - SYMBOL - ] - } - ] - }; -} - -module.exports = smalltalk; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/sml.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/sml.js ***! - \************************************************************/ -(module) { - -/* -Language: SML (Standard ML) -Author: Edwin Dalorzo -Description: SML language definition. -Website: https://www.smlnj.org -Origin: ocaml.js -Category: functional -*/ -function sml(hljs) { - return { - name: 'SML (Standard ML)', - aliases: [ 'ml' ], - keywords: { - $pattern: '[a-z_]\\w*!?', - keyword: - /* according to Definition of Standard ML 97 */ - 'abstype and andalso as case datatype do else end eqtype ' - + 'exception fn fun functor handle if in include infix infixr ' - + 'let local nonfix of op open orelse raise rec sharing sig ' - + 'signature struct structure then type val with withtype where while', - built_in: - /* built-in types according to basis library */ - 'array bool char exn int list option order real ref string substring vector unit word', - literal: - 'true false NONE SOME LESS EQUAL GREATER nil' - }, - illegal: /\/\/|>>/, - contains: [ - { - className: 'literal', - begin: /\[(\|\|)?\]|\(\)/, - relevance: 0 - }, - hljs.COMMENT( - '\\(\\*', - '\\*\\)', - { contains: [ 'self' ] } - ), - { /* type variable */ - className: 'symbol', - begin: '\'[A-Za-z_](?!\')[\\w\']*' - /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */ - }, - { /* polymorphic variant */ - className: 'type', - begin: '`[A-Z][\\w\']*' - }, - { /* module or constructor */ - className: 'type', - begin: '\\b[A-Z][\\w\']*', - relevance: 0 - }, - { /* don't color identifiers, but safely catch all identifiers with ' */ - begin: '[a-z_]\\w*\'[\\w\']*' }, - hljs.inherit(hljs.APOS_STRING_MODE, { - className: 'string', - relevance: 0 - }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), - { - className: 'number', - begin: - '\\b(0[xX][a-fA-F0-9_]+[Lln]?|' - + '0[oO][0-7_]+[Lln]?|' - + '0[bB][01_]+[Lln]?|' - + '[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)', - relevance: 0 - }, - { begin: /[-=]>/ // relevance booster - } - ] - }; -} - -module.exports = sml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/sqf.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/sqf.js ***! - \************************************************************/ -(module) { - -/* -Language: SQF -Author: Søren Enevoldsen -Contributors: Marvin Saignat , Dedmen Miller , Leopard20 -Description: Scripting language for the Arma game series -Website: https://community.bistudio.com/wiki/SQF_syntax -Category: scripting -Last update: 07.01.2023, Arma 3 v2.11 -*/ - -/* -//////////////////////////////////////////////////////////////////////////////////////////// - * Author: Leopard20 - - * Description: - This script can be used to dump all commands to the clipboard. - Make sure you're using the Diag EXE to dump all of the commands. - - * How to use: - Simply replace the _KEYWORDS and _LITERAL arrays with the one from this sqf.js file. - Execute the script from the debug console. - All commands will be copied to the clipboard. -//////////////////////////////////////////////////////////////////////////////////////////// -_KEYWORDS = ['if']; //Array of all KEYWORDS -_LITERALS = ['west']; //Array of all LITERALS -_allCommands = createHashMap; -{ - _type = _x select [0,1]; - if (_type != "t") then { - _command_lowercase = ((_x select [2]) splitString " ")#(((["n", "u", "b"] find _type) - 1) max 0); - _command_uppercase = supportInfo ("i:" + _command_lowercase) # 0 # 2; - _allCommands set [_command_lowercase, _command_uppercase]; - }; -} forEach supportInfo ""; -_allCommands = _allCommands toArray false; -_allCommands sort true; //sort by lowercase -_allCommands = ((_allCommands apply {_x#1}) -_KEYWORDS)-_LITERALS; //remove KEYWORDS and LITERALS -copyToClipboard (str (_allCommands select {_x regexMatch "\w+"}) regexReplace ["""", "'"] regexReplace [",", ",\n"]); -*/ - -function sqf(hljs) { - // In SQF, a local variable starts with _ - const VARIABLE = { - className: 'variable', - begin: /\b_+[a-zA-Z]\w*/ - }; - - // In SQF, a function should fit myTag_fnc_myFunction pattern - // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function - const FUNCTION = { - className: 'title', - begin: /[a-zA-Z][a-zA-Z_0-9]*_fnc_[a-zA-Z_0-9]+/ - }; - - // In SQF strings, quotes matching the start are escaped by adding a consecutive. - // Example of single escaped quotes: " "" " and ' '' '. - const STRINGS = { - className: 'string', - variants: [ - { - begin: '"', - end: '"', - contains: [ - { - begin: '""', - relevance: 0 - } - ] - }, - { - begin: '\'', - end: '\'', - contains: [ - { - begin: '\'\'', - relevance: 0 - } - ] - } - ] - }; - - const KEYWORDS = [ - 'break', - 'breakWith', - 'breakOut', - 'breakTo', - 'case', - 'catch', - 'continue', - 'continueWith', - 'default', - 'do', - 'else', - 'exit', - 'exitWith', - 'for', - 'forEach', - 'from', - 'if', - 'local', - 'private', - 'switch', - 'step', - 'then', - 'throw', - 'to', - 'try', - 'waitUntil', - 'while', - 'with' - ]; - - const LITERAL = [ - 'blufor', - 'civilian', - 'configNull', - 'controlNull', - 'displayNull', - 'diaryRecordNull', - 'east', - 'endl', - 'false', - 'grpNull', - 'independent', - 'lineBreak', - 'locationNull', - 'nil', - 'objNull', - 'opfor', - 'pi', - 'resistance', - 'scriptNull', - 'sideAmbientLife', - 'sideEmpty', - 'sideEnemy', - 'sideFriendly', - 'sideLogic', - 'sideUnknown', - 'taskNull', - 'teamMemberNull', - 'true', - 'west' - ]; - - const BUILT_IN = [ - 'abs', - 'accTime', - 'acos', - 'action', - 'actionIDs', - 'actionKeys', - 'actionKeysEx', - 'actionKeysImages', - 'actionKeysNames', - 'actionKeysNamesArray', - 'actionName', - 'actionParams', - 'activateAddons', - 'activatedAddons', - 'activateKey', - 'activeTitleEffectParams', - 'add3DENConnection', - 'add3DENEventHandler', - 'add3DENLayer', - 'addAction', - 'addBackpack', - 'addBackpackCargo', - 'addBackpackCargoGlobal', - 'addBackpackGlobal', - 'addBinocularItem', - 'addCamShake', - 'addCuratorAddons', - 'addCuratorCameraArea', - 'addCuratorEditableObjects', - 'addCuratorEditingArea', - 'addCuratorPoints', - 'addEditorObject', - 'addEventHandler', - 'addForce', - 'addForceGeneratorRTD', - 'addGoggles', - 'addGroupIcon', - 'addHandgunItem', - 'addHeadgear', - 'addItem', - 'addItemCargo', - 'addItemCargoGlobal', - 'addItemPool', - 'addItemToBackpack', - 'addItemToUniform', - 'addItemToVest', - 'addLiveStats', - 'addMagazine', - 'addMagazineAmmoCargo', - 'addMagazineCargo', - 'addMagazineCargoGlobal', - 'addMagazineGlobal', - 'addMagazinePool', - 'addMagazines', - 'addMagazineTurret', - 'addMenu', - 'addMenuItem', - 'addMissionEventHandler', - 'addMPEventHandler', - 'addMusicEventHandler', - 'addonFiles', - 'addOwnedMine', - 'addPlayerScores', - 'addPrimaryWeaponItem', - 'addPublicVariableEventHandler', - 'addRating', - 'addResources', - 'addScore', - 'addScoreSide', - 'addSecondaryWeaponItem', - 'addSwitchableUnit', - 'addTeamMember', - 'addToRemainsCollector', - 'addTorque', - 'addUniform', - 'addUserActionEventHandler', - 'addVehicle', - 'addVest', - 'addWaypoint', - 'addWeapon', - 'addWeaponCargo', - 'addWeaponCargoGlobal', - 'addWeaponGlobal', - 'addWeaponItem', - 'addWeaponPool', - 'addWeaponTurret', - 'addWeaponWithAttachmentsCargo', - 'addWeaponWithAttachmentsCargoGlobal', - 'admin', - 'agent', - 'agents', - 'AGLToASL', - 'aimedAtTarget', - 'aimPos', - 'airDensityCurveRTD', - 'airDensityRTD', - 'airplaneThrottle', - 'airportSide', - 'AISFinishHeal', - 'alive', - 'all3DENEntities', - 'allActiveTitleEffects', - 'allAddonsInfo', - 'allAirports', - 'allControls', - 'allCurators', - 'allCutLayers', - 'allDead', - 'allDeadMen', - 'allDiaryRecords', - 'allDiarySubjects', - 'allDisplays', - 'allEnv3DSoundSources', - 'allGroups', - 'allLODs', - 'allMapMarkers', - 'allMines', - 'allMissionObjects', - 'allObjects', - 'allow3DMode', - 'allowCrewInImmobile', - 'allowCuratorLogicIgnoreAreas', - 'allowDamage', - 'allowDammage', - 'allowedService', - 'allowFileOperations', - 'allowFleeing', - 'allowGetIn', - 'allowService', - 'allowSprint', - 'allPlayers', - 'allSimpleObjects', - 'allSites', - 'allTurrets', - 'allUnits', - 'allUnitsUAV', - 'allUsers', - 'allVariables', - 'ambientTemperature', - 'ammo', - 'ammoOnPylon', - 'and', - 'animate', - 'animateBay', - 'animateDoor', - 'animatePylon', - 'animateSource', - 'animationNames', - 'animationPhase', - 'animationSourcePhase', - 'animationState', - 'apertureParams', - 'append', - 'apply', - 'armoryPoints', - 'arrayIntersect', - 'asin', - 'ASLToAGL', - 'ASLToATL', - 'assert', - 'assignAsCargo', - 'assignAsCargoIndex', - 'assignAsCommander', - 'assignAsDriver', - 'assignAsGunner', - 'assignAsTurret', - 'assignCurator', - 'assignedCargo', - 'assignedCommander', - 'assignedDriver', - 'assignedGroup', - 'assignedGunner', - 'assignedItems', - 'assignedTarget', - 'assignedTeam', - 'assignedVehicle', - 'assignedVehicleRole', - 'assignedVehicles', - 'assignItem', - 'assignTeam', - 'assignToAirport', - 'atan', - 'atan2', - 'atg', - 'ATLToASL', - 'attachedObject', - 'attachedObjects', - 'attachedTo', - 'attachObject', - 'attachTo', - 'attackEnabled', - 'awake', - 'backpack', - 'backpackCargo', - 'backpackContainer', - 'backpackItems', - 'backpackMagazines', - 'backpackSpaceFor', - 'behaviour', - 'benchmark', - 'bezierInterpolation', - 'binocular', - 'binocularItems', - 'binocularMagazine', - 'boundingBox', - 'boundingBoxReal', - 'boundingCenter', - 'brakesDisabled', - 'briefingName', - 'buildingExit', - 'buildingPos', - 'buldozer_EnableRoadDiag', - 'buldozer_IsEnabledRoadDiag', - 'buldozer_LoadNewRoads', - 'buldozer_reloadOperMap', - 'buttonAction', - 'buttonSetAction', - 'cadetMode', - 'calculatePath', - 'calculatePlayerVisibilityByFriendly', - 'call', - 'callExtension', - 'camCommand', - 'camCommit', - 'camCommitPrepared', - 'camCommitted', - 'camConstuctionSetParams', - 'camCreate', - 'camDestroy', - 'cameraEffect', - 'cameraEffectEnableHUD', - 'cameraInterest', - 'cameraOn', - 'cameraView', - 'campaignConfigFile', - 'camPreload', - 'camPreloaded', - 'camPrepareBank', - 'camPrepareDir', - 'camPrepareDive', - 'camPrepareFocus', - 'camPrepareFov', - 'camPrepareFovRange', - 'camPreparePos', - 'camPrepareRelPos', - 'camPrepareTarget', - 'camSetBank', - 'camSetDir', - 'camSetDive', - 'camSetFocus', - 'camSetFov', - 'camSetFovRange', - 'camSetPos', - 'camSetRelPos', - 'camSetTarget', - 'camTarget', - 'camUseNVG', - 'canAdd', - 'canAddItemToBackpack', - 'canAddItemToUniform', - 'canAddItemToVest', - 'cancelSimpleTaskDestination', - 'canDeployWeapon', - 'canFire', - 'canMove', - 'canSlingLoad', - 'canStand', - 'canSuspend', - 'canTriggerDynamicSimulation', - 'canUnloadInCombat', - 'canVehicleCargo', - 'captive', - 'captiveNum', - 'cbChecked', - 'cbSetChecked', - 'ceil', - 'channelEnabled', - 'cheatsEnabled', - 'checkAIFeature', - 'checkVisibility', - 'className', - 'clear3DENAttribute', - 'clear3DENInventory', - 'clearAllItemsFromBackpack', - 'clearBackpackCargo', - 'clearBackpackCargoGlobal', - 'clearForcesRTD', - 'clearGroupIcons', - 'clearItemCargo', - 'clearItemCargoGlobal', - 'clearItemPool', - 'clearMagazineCargo', - 'clearMagazineCargoGlobal', - 'clearMagazinePool', - 'clearOverlay', - 'clearRadio', - 'clearWeaponCargo', - 'clearWeaponCargoGlobal', - 'clearWeaponPool', - 'clientOwner', - 'closeDialog', - 'closeDisplay', - 'closeOverlay', - 'collapseObjectTree', - 'collect3DENHistory', - 'collectiveRTD', - 'collisionDisabledWith', - 'combatBehaviour', - 'combatMode', - 'commandArtilleryFire', - 'commandChat', - 'commander', - 'commandFire', - 'commandFollow', - 'commandFSM', - 'commandGetOut', - 'commandingMenu', - 'commandMove', - 'commandRadio', - 'commandStop', - 'commandSuppressiveFire', - 'commandTarget', - 'commandWatch', - 'comment', - 'commitOverlay', - 'compatibleItems', - 'compatibleMagazines', - 'compile', - 'compileFinal', - 'compileScript', - 'completedFSM', - 'composeText', - 'configClasses', - 'configFile', - 'configHierarchy', - 'configName', - 'configOf', - 'configProperties', - 'configSourceAddonList', - 'configSourceMod', - 'configSourceModList', - 'confirmSensorTarget', - 'connectTerminalToUAV', - 'connectToServer', - 'controlsGroupCtrl', - 'conversationDisabled', - 'copyFromClipboard', - 'copyToClipboard', - 'copyWaypoints', - 'cos', - 'count', - 'countEnemy', - 'countFriendly', - 'countSide', - 'countType', - 'countUnknown', - 'create3DENComposition', - 'create3DENEntity', - 'createAgent', - 'createCenter', - 'createDialog', - 'createDiaryLink', - 'createDiaryRecord', - 'createDiarySubject', - 'createDisplay', - 'createGearDialog', - 'createGroup', - 'createGuardedPoint', - 'createHashMap', - 'createHashMapFromArray', - 'createLocation', - 'createMarker', - 'createMarkerLocal', - 'createMenu', - 'createMine', - 'createMissionDisplay', - 'createMPCampaignDisplay', - 'createSimpleObject', - 'createSimpleTask', - 'createSite', - 'createSoundSource', - 'createTask', - 'createTeam', - 'createTrigger', - 'createUnit', - 'createVehicle', - 'createVehicleCrew', - 'createVehicleLocal', - 'crew', - 'ctAddHeader', - 'ctAddRow', - 'ctClear', - 'ctCurSel', - 'ctData', - 'ctFindHeaderRows', - 'ctFindRowHeader', - 'ctHeaderControls', - 'ctHeaderCount', - 'ctRemoveHeaders', - 'ctRemoveRows', - 'ctrlActivate', - 'ctrlAddEventHandler', - 'ctrlAngle', - 'ctrlAnimateModel', - 'ctrlAnimationPhaseModel', - 'ctrlAt', - 'ctrlAutoScrollDelay', - 'ctrlAutoScrollRewind', - 'ctrlAutoScrollSpeed', - 'ctrlBackgroundColor', - 'ctrlChecked', - 'ctrlClassName', - 'ctrlCommit', - 'ctrlCommitted', - 'ctrlCreate', - 'ctrlDelete', - 'ctrlEnable', - 'ctrlEnabled', - 'ctrlFade', - 'ctrlFontHeight', - 'ctrlForegroundColor', - 'ctrlHTMLLoaded', - 'ctrlIDC', - 'ctrlIDD', - 'ctrlMapAnimAdd', - 'ctrlMapAnimClear', - 'ctrlMapAnimCommit', - 'ctrlMapAnimDone', - 'ctrlMapCursor', - 'ctrlMapMouseOver', - 'ctrlMapPosition', - 'ctrlMapScale', - 'ctrlMapScreenToWorld', - 'ctrlMapSetPosition', - 'ctrlMapWorldToScreen', - 'ctrlModel', - 'ctrlModelDirAndUp', - 'ctrlModelScale', - 'ctrlMousePosition', - 'ctrlParent', - 'ctrlParentControlsGroup', - 'ctrlPosition', - 'ctrlRemoveAllEventHandlers', - 'ctrlRemoveEventHandler', - 'ctrlScale', - 'ctrlScrollValues', - 'ctrlSetActiveColor', - 'ctrlSetAngle', - 'ctrlSetAutoScrollDelay', - 'ctrlSetAutoScrollRewind', - 'ctrlSetAutoScrollSpeed', - 'ctrlSetBackgroundColor', - 'ctrlSetChecked', - 'ctrlSetDisabledColor', - 'ctrlSetEventHandler', - 'ctrlSetFade', - 'ctrlSetFocus', - 'ctrlSetFont', - 'ctrlSetFontH1', - 'ctrlSetFontH1B', - 'ctrlSetFontH2', - 'ctrlSetFontH2B', - 'ctrlSetFontH3', - 'ctrlSetFontH3B', - 'ctrlSetFontH4', - 'ctrlSetFontH4B', - 'ctrlSetFontH5', - 'ctrlSetFontH5B', - 'ctrlSetFontH6', - 'ctrlSetFontH6B', - 'ctrlSetFontHeight', - 'ctrlSetFontHeightH1', - 'ctrlSetFontHeightH2', - 'ctrlSetFontHeightH3', - 'ctrlSetFontHeightH4', - 'ctrlSetFontHeightH5', - 'ctrlSetFontHeightH6', - 'ctrlSetFontHeightSecondary', - 'ctrlSetFontP', - 'ctrlSetFontPB', - 'ctrlSetFontSecondary', - 'ctrlSetForegroundColor', - 'ctrlSetModel', - 'ctrlSetModelDirAndUp', - 'ctrlSetModelScale', - 'ctrlSetMousePosition', - 'ctrlSetPixelPrecision', - 'ctrlSetPosition', - 'ctrlSetPositionH', - 'ctrlSetPositionW', - 'ctrlSetPositionX', - 'ctrlSetPositionY', - 'ctrlSetScale', - 'ctrlSetScrollValues', - 'ctrlSetShadow', - 'ctrlSetStructuredText', - 'ctrlSetText', - 'ctrlSetTextColor', - 'ctrlSetTextColorSecondary', - 'ctrlSetTextSecondary', - 'ctrlSetTextSelection', - 'ctrlSetTooltip', - 'ctrlSetTooltipColorBox', - 'ctrlSetTooltipColorShade', - 'ctrlSetTooltipColorText', - 'ctrlSetTooltipMaxWidth', - 'ctrlSetURL', - 'ctrlSetURLOverlayMode', - 'ctrlShadow', - 'ctrlShow', - 'ctrlShown', - 'ctrlStyle', - 'ctrlText', - 'ctrlTextColor', - 'ctrlTextHeight', - 'ctrlTextSecondary', - 'ctrlTextSelection', - 'ctrlTextWidth', - 'ctrlTooltip', - 'ctrlType', - 'ctrlURL', - 'ctrlURLOverlayMode', - 'ctrlVisible', - 'ctRowControls', - 'ctRowCount', - 'ctSetCurSel', - 'ctSetData', - 'ctSetHeaderTemplate', - 'ctSetRowTemplate', - 'ctSetValue', - 'ctValue', - 'curatorAddons', - 'curatorCamera', - 'curatorCameraArea', - 'curatorCameraAreaCeiling', - 'curatorCoef', - 'curatorEditableObjects', - 'curatorEditingArea', - 'curatorEditingAreaType', - 'curatorMouseOver', - 'curatorPoints', - 'curatorRegisteredObjects', - 'curatorSelected', - 'curatorWaypointCost', - 'current3DENOperation', - 'currentChannel', - 'currentCommand', - 'currentMagazine', - 'currentMagazineDetail', - 'currentMagazineDetailTurret', - 'currentMagazineTurret', - 'currentMuzzle', - 'currentNamespace', - 'currentPilot', - 'currentTask', - 'currentTasks', - 'currentThrowable', - 'currentVisionMode', - 'currentWaypoint', - 'currentWeapon', - 'currentWeaponMode', - 'currentWeaponTurret', - 'currentZeroing', - 'cursorObject', - 'cursorTarget', - 'customChat', - 'customRadio', - 'customWaypointPosition', - 'cutFadeOut', - 'cutObj', - 'cutRsc', - 'cutText', - 'damage', - 'date', - 'dateToNumber', - 'dayTime', - 'deActivateKey', - 'debriefingText', - 'debugFSM', - 'debugLog', - 'decayGraphValues', - 'deg', - 'delete3DENEntities', - 'deleteAt', - 'deleteCenter', - 'deleteCollection', - 'deleteEditorObject', - 'deleteGroup', - 'deleteGroupWhenEmpty', - 'deleteIdentity', - 'deleteLocation', - 'deleteMarker', - 'deleteMarkerLocal', - 'deleteRange', - 'deleteResources', - 'deleteSite', - 'deleteStatus', - 'deleteTeam', - 'deleteVehicle', - 'deleteVehicleCrew', - 'deleteWaypoint', - 'detach', - 'detectedMines', - 'diag_activeMissionFSMs', - 'diag_activeScripts', - 'diag_activeSQFScripts', - 'diag_activeSQSScripts', - 'diag_allMissionEventHandlers', - 'diag_captureFrame', - 'diag_captureFrameToFile', - 'diag_captureSlowFrame', - 'diag_codePerformance', - 'diag_deltaTime', - 'diag_drawmode', - 'diag_dumpCalltraceToLog', - 'diag_dumpScriptAssembly', - 'diag_dumpTerrainSynth', - 'diag_dynamicSimulationEnd', - 'diag_enable', - 'diag_enabled', - 'diag_exportConfig', - 'diag_exportTerrainSVG', - 'diag_fps', - 'diag_fpsmin', - 'diag_frameno', - 'diag_getTerrainSegmentOffset', - 'diag_lightNewLoad', - 'diag_list', - 'diag_localized', - 'diag_log', - 'diag_logSlowFrame', - 'diag_mergeConfigFile', - 'diag_recordTurretLimits', - 'diag_resetFSM', - 'diag_resetshapes', - 'diag_scope', - 'diag_setLightNew', - 'diag_stacktrace', - 'diag_tickTime', - 'diag_toggle', - 'dialog', - 'diarySubjectExists', - 'didJIP', - 'didJIPOwner', - 'difficulty', - 'difficultyEnabled', - 'difficultyEnabledRTD', - 'difficultyOption', - 'direction', - 'directionStabilizationEnabled', - 'directSay', - 'disableAI', - 'disableBrakes', - 'disableCollisionWith', - 'disableConversation', - 'disableDebriefingStats', - 'disableMapIndicators', - 'disableNVGEquipment', - 'disableRemoteSensors', - 'disableSerialization', - 'disableTIEquipment', - 'disableUAVConnectability', - 'disableUserInput', - 'displayAddEventHandler', - 'displayChild', - 'displayCtrl', - 'displayParent', - 'displayRemoveAllEventHandlers', - 'displayRemoveEventHandler', - 'displaySetEventHandler', - 'displayUniqueName', - 'displayUpdate', - 'dissolveTeam', - 'distance', - 'distance2D', - 'distanceSqr', - 'distributionRegion', - 'do3DENAction', - 'doArtilleryFire', - 'doFire', - 'doFollow', - 'doFSM', - 'doGetOut', - 'doMove', - 'doorPhase', - 'doStop', - 'doSuppressiveFire', - 'doTarget', - 'doWatch', - 'drawArrow', - 'drawEllipse', - 'drawIcon', - 'drawIcon3D', - 'drawLaser', - 'drawLine', - 'drawLine3D', - 'drawLink', - 'drawLocation', - 'drawPolygon', - 'drawRectangle', - 'drawTriangle', - 'driver', - 'drop', - 'dynamicSimulationDistance', - 'dynamicSimulationDistanceCoef', - 'dynamicSimulationEnabled', - 'dynamicSimulationSystemEnabled', - 'echo', - 'edit3DENMissionAttributes', - 'editObject', - 'editorSetEventHandler', - 'effectiveCommander', - 'elevatePeriscope', - 'emptyPositions', - 'enableAI', - 'enableAIFeature', - 'enableAimPrecision', - 'enableAttack', - 'enableAudioFeature', - 'enableAutoStartUpRTD', - 'enableAutoTrimRTD', - 'enableCamShake', - 'enableCaustics', - 'enableChannel', - 'enableCollisionWith', - 'enableCopilot', - 'enableDebriefingStats', - 'enableDiagLegend', - 'enableDirectionStabilization', - 'enableDynamicSimulation', - 'enableDynamicSimulationSystem', - 'enableEndDialog', - 'enableEngineArtillery', - 'enableEnvironment', - 'enableFatigue', - 'enableGunLights', - 'enableInfoPanelComponent', - 'enableIRLasers', - 'enableMimics', - 'enablePersonTurret', - 'enableRadio', - 'enableReload', - 'enableRopeAttach', - 'enableSatNormalOnDetail', - 'enableSaving', - 'enableSentences', - 'enableSimulation', - 'enableSimulationGlobal', - 'enableStamina', - 'enableStressDamage', - 'enableTeamSwitch', - 'enableTraffic', - 'enableUAVConnectability', - 'enableUAVWaypoints', - 'enableVehicleCargo', - 'enableVehicleSensor', - 'enableWeaponDisassembly', - 'endLoadingScreen', - 'endMission', - 'engineOn', - 'enginesIsOnRTD', - 'enginesPowerRTD', - 'enginesRpmRTD', - 'enginesTorqueRTD', - 'entities', - 'environmentEnabled', - 'environmentVolume', - 'equipmentDisabled', - 'estimatedEndServerTime', - 'estimatedTimeLeft', - 'evalObjectArgument', - 'everyBackpack', - 'everyContainer', - 'exec', - 'execEditorScript', - 'execFSM', - 'execVM', - 'exp', - 'expectedDestination', - 'exportJIPMessages', - 'eyeDirection', - 'eyePos', - 'face', - 'faction', - 'fadeEnvironment', - 'fadeMusic', - 'fadeRadio', - 'fadeSound', - 'fadeSpeech', - 'failMission', - 'fileExists', - 'fillWeaponsFromPool', - 'find', - 'findAny', - 'findCover', - 'findDisplay', - 'findEditorObject', - 'findEmptyPosition', - 'findEmptyPositionReady', - 'findIf', - 'findNearestEnemy', - 'finishMissionInit', - 'finite', - 'fire', - 'fireAtTarget', - 'firstBackpack', - 'flag', - 'flagAnimationPhase', - 'flagOwner', - 'flagSide', - 'flagTexture', - 'flatten', - 'fleeing', - 'floor', - 'flyInHeight', - 'flyInHeightASL', - 'focusedCtrl', - 'fog', - 'fogForecast', - 'fogParams', - 'forceAddUniform', - 'forceAtPositionRTD', - 'forceCadetDifficulty', - 'forcedMap', - 'forceEnd', - 'forceFlagTexture', - 'forceFollowRoad', - 'forceGeneratorRTD', - 'forceMap', - 'forceRespawn', - 'forceSpeed', - 'forceUnicode', - 'forceWalk', - 'forceWeaponFire', - 'forceWeatherChange', - 'forEachMember', - 'forEachMemberAgent', - 'forEachMemberTeam', - 'forgetTarget', - 'format', - 'formation', - 'formationDirection', - 'formationLeader', - 'formationMembers', - 'formationPosition', - 'formationTask', - 'formatText', - 'formLeader', - 'freeExtension', - 'freeLook', - 'fromEditor', - 'fuel', - 'fullCrew', - 'gearIDCAmmoCount', - 'gearSlotAmmoCount', - 'gearSlotData', - 'gestureState', - 'get', - 'get3DENActionState', - 'get3DENAttribute', - 'get3DENCamera', - 'get3DENConnections', - 'get3DENEntity', - 'get3DENEntityID', - 'get3DENGrid', - 'get3DENIconsVisible', - 'get3DENLayerEntities', - 'get3DENLinesVisible', - 'get3DENMissionAttribute', - 'get3DENMouseOver', - 'get3DENSelected', - 'getAimingCoef', - 'getAllEnv3DSoundControllers', - 'getAllEnvSoundControllers', - 'getAllHitPointsDamage', - 'getAllOwnedMines', - 'getAllPylonsInfo', - 'getAllSoundControllers', - 'getAllUnitTraits', - 'getAmmoCargo', - 'getAnimAimPrecision', - 'getAnimSpeedCoef', - 'getArray', - 'getArtilleryAmmo', - 'getArtilleryComputerSettings', - 'getArtilleryETA', - 'getAssetDLCInfo', - 'getAssignedCuratorLogic', - 'getAssignedCuratorUnit', - 'getAttackTarget', - 'getAudioOptionVolumes', - 'getBackpackCargo', - 'getBleedingRemaining', - 'getBurningValue', - 'getCalculatePlayerVisibilityByFriendly', - 'getCameraViewDirection', - 'getCargoIndex', - 'getCenterOfMass', - 'getClientState', - 'getClientStateNumber', - 'getCompatiblePylonMagazines', - 'getConnectedUAV', - 'getConnectedUAVUnit', - 'getContainerMaxLoad', - 'getCorpse', - 'getCruiseControl', - 'getCursorObjectParams', - 'getCustomAimCoef', - 'getCustomSoundController', - 'getCustomSoundControllerCount', - 'getDammage', - 'getDebriefingText', - 'getDescription', - 'getDir', - 'getDirVisual', - 'getDiverState', - 'getDLCAssetsUsage', - 'getDLCAssetsUsageByName', - 'getDLCs', - 'getDLCUsageTime', - 'getEditorCamera', - 'getEditorMode', - 'getEditorObjectScope', - 'getElevationOffset', - 'getEngineTargetRPMRTD', - 'getEnv3DSoundController', - 'getEnvSoundController', - 'getEventHandlerInfo', - 'getFatigue', - 'getFieldManualStartPage', - 'getForcedFlagTexture', - 'getForcedSpeed', - 'getFriend', - 'getFSMVariable', - 'getFuelCargo', - 'getGraphValues', - 'getGroupIcon', - 'getGroupIconParams', - 'getGroupIcons', - 'getHideFrom', - 'getHit', - 'getHitIndex', - 'getHitPointDamage', - 'getItemCargo', - 'getLighting', - 'getLightingAt', - 'getLoadedModsInfo', - 'getMagazineCargo', - 'getMarkerColor', - 'getMarkerPos', - 'getMarkerSize', - 'getMarkerType', - 'getMass', - 'getMissionConfig', - 'getMissionConfigValue', - 'getMissionDLCs', - 'getMissionLayerEntities', - 'getMissionLayers', - 'getMissionPath', - 'getModelInfo', - 'getMousePosition', - 'getMusicPlayedTime', - 'getNumber', - 'getObjectArgument', - 'getObjectChildren', - 'getObjectDLC', - 'getObjectFOV', - 'getObjectID', - 'getObjectMaterials', - 'getObjectProxy', - 'getObjectScale', - 'getObjectTextures', - 'getObjectType', - 'getObjectViewDistance', - 'getOpticsMode', - 'getOrDefault', - 'getOrDefaultCall', - 'getOxygenRemaining', - 'getPersonUsedDLCs', - 'getPilotCameraDirection', - 'getPilotCameraPosition', - 'getPilotCameraRotation', - 'getPilotCameraTarget', - 'getPiPViewDistance', - 'getPlateNumber', - 'getPlayerChannel', - 'getPlayerID', - 'getPlayerScores', - 'getPlayerUID', - 'getPlayerVoNVolume', - 'getPos', - 'getPosASL', - 'getPosASLVisual', - 'getPosASLW', - 'getPosATL', - 'getPosATLVisual', - 'getPosVisual', - 'getPosWorld', - 'getPosWorldVisual', - 'getPylonMagazines', - 'getRelDir', - 'getRelPos', - 'getRemoteSensorsDisabled', - 'getRepairCargo', - 'getResolution', - 'getRoadInfo', - 'getRotorBrakeRTD', - 'getSensorTargets', - 'getSensorThreats', - 'getShadowDistance', - 'getShotParents', - 'getSlingLoad', - 'getSoundController', - 'getSoundControllerResult', - 'getSpeed', - 'getStamina', - 'getStatValue', - 'getSteamFriendsServers', - 'getSubtitleOptions', - 'getSuppression', - 'getTerrainGrid', - 'getTerrainHeight', - 'getTerrainHeightASL', - 'getTerrainInfo', - 'getText', - 'getTextRaw', - 'getTextureInfo', - 'getTextWidth', - 'getTiParameters', - 'getTotalDLCUsageTime', - 'getTrimOffsetRTD', - 'getTurretLimits', - 'getTurretOpticsMode', - 'getUnitFreefallInfo', - 'getUnitLoadout', - 'getUnitTrait', - 'getUnloadInCombat', - 'getUserInfo', - 'getUserMFDText', - 'getUserMFDValue', - 'getVariable', - 'getVehicleCargo', - 'getVehicleTiPars', - 'getWeaponCargo', - 'getWeaponSway', - 'getWingsOrientationRTD', - 'getWingsPositionRTD', - 'getWPPos', - 'glanceAt', - 'globalChat', - 'globalRadio', - 'goggles', - 'goto', - 'group', - 'groupChat', - 'groupFromNetId', - 'groupIconSelectable', - 'groupIconsVisible', - 'groupID', - 'groupOwner', - 'groupRadio', - 'groups', - 'groupSelectedUnits', - 'groupSelectUnit', - 'gunner', - 'gusts', - 'halt', - 'handgunItems', - 'handgunMagazine', - 'handgunWeapon', - 'handsHit', - 'hashValue', - 'hasInterface', - 'hasPilotCamera', - 'hasWeapon', - 'hcAllGroups', - 'hcGroupParams', - 'hcLeader', - 'hcRemoveAllGroups', - 'hcRemoveGroup', - 'hcSelected', - 'hcSelectGroup', - 'hcSetGroup', - 'hcShowBar', - 'hcShownBar', - 'headgear', - 'hideBody', - 'hideObject', - 'hideObjectGlobal', - 'hideSelection', - 'hint', - 'hintC', - 'hintCadet', - 'hintSilent', - 'hmd', - 'hostMission', - 'htmlLoad', - 'HUDMovementLevels', - 'humidity', - 'image', - 'importAllGroups', - 'importance', - 'in', - 'inArea', - 'inAreaArray', - 'incapacitatedState', - 'inflame', - 'inflamed', - 'infoPanel', - 'infoPanelComponentEnabled', - 'infoPanelComponents', - 'infoPanels', - 'inGameUISetEventHandler', - 'inheritsFrom', - 'initAmbientLife', - 'inPolygon', - 'inputAction', - 'inputController', - 'inputMouse', - 'inRangeOfArtillery', - 'insert', - 'insertEditorObject', - 'intersect', - 'is3DEN', - 'is3DENMultiplayer', - 'is3DENPreview', - 'isAbleToBreathe', - 'isActionMenuVisible', - 'isAgent', - 'isAimPrecisionEnabled', - 'isAllowedCrewInImmobile', - 'isArray', - 'isAutoHoverOn', - 'isAutonomous', - 'isAutoStartUpEnabledRTD', - 'isAutotest', - 'isAutoTrimOnRTD', - 'isAwake', - 'isBleeding', - 'isBurning', - 'isClass', - 'isCollisionLightOn', - 'isCopilotEnabled', - 'isDamageAllowed', - 'isDedicated', - 'isDLCAvailable', - 'isEngineOn', - 'isEqualRef', - 'isEqualTo', - 'isEqualType', - 'isEqualTypeAll', - 'isEqualTypeAny', - 'isEqualTypeArray', - 'isEqualTypeParams', - 'isFilePatchingEnabled', - 'isFinal', - 'isFlashlightOn', - 'isFlatEmpty', - 'isForcedWalk', - 'isFormationLeader', - 'isGameFocused', - 'isGamePaused', - 'isGroupDeletedWhenEmpty', - 'isHidden', - 'isInRemainsCollector', - 'isInstructorFigureEnabled', - 'isIRLaserOn', - 'isKeyActive', - 'isKindOf', - 'isLaserOn', - 'isLightOn', - 'isLocalized', - 'isManualFire', - 'isMarkedForCollection', - 'isMissionProfileNamespaceLoaded', - 'isMultiplayer', - 'isMultiplayerSolo', - 'isNil', - 'isNotEqualRef', - 'isNotEqualTo', - 'isNull', - 'isNumber', - 'isObjectHidden', - 'isObjectRTD', - 'isOnRoad', - 'isPiPEnabled', - 'isPlayer', - 'isRealTime', - 'isRemoteExecuted', - 'isRemoteExecutedJIP', - 'isSaving', - 'isSensorTargetConfirmed', - 'isServer', - 'isShowing3DIcons', - 'isSimpleObject', - 'isSprintAllowed', - 'isStaminaEnabled', - 'isSteamMission', - 'isSteamOverlayEnabled', - 'isStreamFriendlyUIEnabled', - 'isStressDamageEnabled', - 'isText', - 'isTouchingGround', - 'isTurnedOut', - 'isTutHintsEnabled', - 'isUAVConnectable', - 'isUAVConnected', - 'isUIContext', - 'isUniformAllowed', - 'isVehicleCargo', - 'isVehicleRadarOn', - 'isVehicleSensorEnabled', - 'isWalking', - 'isWeaponDeployed', - 'isWeaponRested', - 'itemCargo', - 'items', - 'itemsWithMagazines', - 'join', - 'joinAs', - 'joinAsSilent', - 'joinSilent', - 'joinString', - 'kbAddDatabase', - 'kbAddDatabaseTargets', - 'kbAddTopic', - 'kbHasTopic', - 'kbReact', - 'kbRemoveTopic', - 'kbTell', - 'kbWasSaid', - 'keyImage', - 'keyName', - 'keys', - 'knowsAbout', - 'land', - 'landAt', - 'landResult', - 'language', - 'laserTarget', - 'lbAdd', - 'lbClear', - 'lbColor', - 'lbColorRight', - 'lbCurSel', - 'lbData', - 'lbDelete', - 'lbIsSelected', - 'lbPicture', - 'lbPictureRight', - 'lbSelection', - 'lbSetColor', - 'lbSetColorRight', - 'lbSetCurSel', - 'lbSetData', - 'lbSetPicture', - 'lbSetPictureColor', - 'lbSetPictureColorDisabled', - 'lbSetPictureColorSelected', - 'lbSetPictureRight', - 'lbSetPictureRightColor', - 'lbSetPictureRightColorDisabled', - 'lbSetPictureRightColorSelected', - 'lbSetSelectColor', - 'lbSetSelectColorRight', - 'lbSetSelected', - 'lbSetText', - 'lbSetTextRight', - 'lbSetTooltip', - 'lbSetValue', - 'lbSize', - 'lbSort', - 'lbSortBy', - 'lbSortByValue', - 'lbText', - 'lbTextRight', - 'lbTooltip', - 'lbValue', - 'leader', - 'leaderboardDeInit', - 'leaderboardGetRows', - 'leaderboardInit', - 'leaderboardRequestRowsFriends', - 'leaderboardRequestRowsGlobal', - 'leaderboardRequestRowsGlobalAroundUser', - 'leaderboardsRequestUploadScore', - 'leaderboardsRequestUploadScoreKeepBest', - 'leaderboardState', - 'leaveVehicle', - 'libraryCredits', - 'libraryDisclaimers', - 'lifeState', - 'lightAttachObject', - 'lightDetachObject', - 'lightIsOn', - 'lightnings', - 'limitSpeed', - 'linearConversion', - 'lineIntersects', - 'lineIntersectsObjs', - 'lineIntersectsSurfaces', - 'lineIntersectsWith', - 'linkItem', - 'list', - 'listObjects', - 'listRemoteTargets', - 'listVehicleSensors', - 'ln', - 'lnbAddArray', - 'lnbAddColumn', - 'lnbAddRow', - 'lnbClear', - 'lnbColor', - 'lnbColorRight', - 'lnbCurSelRow', - 'lnbData', - 'lnbDeleteColumn', - 'lnbDeleteRow', - 'lnbGetColumnsPosition', - 'lnbPicture', - 'lnbPictureRight', - 'lnbSetColor', - 'lnbSetColorRight', - 'lnbSetColumnsPos', - 'lnbSetCurSelRow', - 'lnbSetData', - 'lnbSetPicture', - 'lnbSetPictureColor', - 'lnbSetPictureColorRight', - 'lnbSetPictureColorSelected', - 'lnbSetPictureColorSelectedRight', - 'lnbSetPictureRight', - 'lnbSetText', - 'lnbSetTextRight', - 'lnbSetTooltip', - 'lnbSetValue', - 'lnbSize', - 'lnbSort', - 'lnbSortBy', - 'lnbSortByValue', - 'lnbText', - 'lnbTextRight', - 'lnbValue', - 'load', - 'loadAbs', - 'loadBackpack', - 'loadConfig', - 'loadFile', - 'loadGame', - 'loadIdentity', - 'loadMagazine', - 'loadOverlay', - 'loadStatus', - 'loadUniform', - 'loadVest', - 'localize', - 'localNamespace', - 'locationPosition', - 'lock', - 'lockCameraTo', - 'lockCargo', - 'lockDriver', - 'locked', - 'lockedCameraTo', - 'lockedCargo', - 'lockedDriver', - 'lockedInventory', - 'lockedTurret', - 'lockIdentity', - 'lockInventory', - 'lockTurret', - 'lockWp', - 'log', - 'logEntities', - 'logNetwork', - 'logNetworkTerminate', - 'lookAt', - 'lookAtPos', - 'magazineCargo', - 'magazines', - 'magazinesAllTurrets', - 'magazinesAmmo', - 'magazinesAmmoCargo', - 'magazinesAmmoFull', - 'magazinesDetail', - 'magazinesDetailBackpack', - 'magazinesDetailUniform', - 'magazinesDetailVest', - 'magazinesTurret', - 'magazineTurretAmmo', - 'mapAnimAdd', - 'mapAnimClear', - 'mapAnimCommit', - 'mapAnimDone', - 'mapCenterOnCamera', - 'mapGridPosition', - 'markAsFinishedOnSteam', - 'markerAlpha', - 'markerBrush', - 'markerChannel', - 'markerColor', - 'markerDir', - 'markerPolyline', - 'markerPos', - 'markerShadow', - 'markerShape', - 'markerSize', - 'markerText', - 'markerType', - 'matrixMultiply', - 'matrixTranspose', - 'max', - 'maxLoad', - 'members', - 'menuAction', - 'menuAdd', - 'menuChecked', - 'menuClear', - 'menuCollapse', - 'menuData', - 'menuDelete', - 'menuEnable', - 'menuEnabled', - 'menuExpand', - 'menuHover', - 'menuPicture', - 'menuSetAction', - 'menuSetCheck', - 'menuSetData', - 'menuSetPicture', - 'menuSetShortcut', - 'menuSetText', - 'menuSetURL', - 'menuSetValue', - 'menuShortcut', - 'menuShortcutText', - 'menuSize', - 'menuSort', - 'menuText', - 'menuURL', - 'menuValue', - 'merge', - 'min', - 'mineActive', - 'mineDetectedBy', - 'missileTarget', - 'missileTargetPos', - 'missionConfigFile', - 'missionDifficulty', - 'missionEnd', - 'missionName', - 'missionNameSource', - 'missionNamespace', - 'missionProfileNamespace', - 'missionStart', - 'missionVersion', - 'mod', - 'modelToWorld', - 'modelToWorldVisual', - 'modelToWorldVisualWorld', - 'modelToWorldWorld', - 'modParams', - 'moonIntensity', - 'moonPhase', - 'morale', - 'move', - 'move3DENCamera', - 'moveInAny', - 'moveInCargo', - 'moveInCommander', - 'moveInDriver', - 'moveInGunner', - 'moveInTurret', - 'moveObjectToEnd', - 'moveOut', - 'moveTime', - 'moveTo', - 'moveToCompleted', - 'moveToFailed', - 'musicVolume', - 'name', - 'namedProperties', - 'nameSound', - 'nearEntities', - 'nearestBuilding', - 'nearestLocation', - 'nearestLocations', - 'nearestLocationWithDubbing', - 'nearestMines', - 'nearestObject', - 'nearestObjects', - 'nearestTerrainObjects', - 'nearObjects', - 'nearObjectsReady', - 'nearRoads', - 'nearSupplies', - 'nearTargets', - 'needReload', - 'needService', - 'netId', - 'netObjNull', - 'newOverlay', - 'nextMenuItemIndex', - 'nextWeatherChange', - 'nMenuItems', - 'not', - 'numberOfEnginesRTD', - 'numberToDate', - 'objectCurators', - 'objectFromNetId', - 'objectParent', - 'objStatus', - 'onBriefingGroup', - 'onBriefingNotes', - 'onBriefingPlan', - 'onBriefingTeamSwitch', - 'onCommandModeChanged', - 'onDoubleClick', - 'onEachFrame', - 'onGroupIconClick', - 'onGroupIconOverEnter', - 'onGroupIconOverLeave', - 'onHCGroupSelectionChanged', - 'onMapSingleClick', - 'onPlayerConnected', - 'onPlayerDisconnected', - 'onPreloadFinished', - 'onPreloadStarted', - 'onShowNewObject', - 'onTeamSwitch', - 'openCuratorInterface', - 'openDLCPage', - 'openGPS', - 'openMap', - 'openSteamApp', - 'openYoutubeVideo', - 'or', - 'orderGetIn', - 'overcast', - 'overcastForecast', - 'owner', - 'param', - 'params', - 'parseNumber', - 'parseSimpleArray', - 'parseText', - 'parsingNamespace', - 'particlesQuality', - 'periscopeElevation', - 'pickWeaponPool', - 'pitch', - 'pixelGrid', - 'pixelGridBase', - 'pixelGridNoUIScale', - 'pixelH', - 'pixelW', - 'playableSlotsNumber', - 'playableUnits', - 'playAction', - 'playActionNow', - 'player', - 'playerRespawnTime', - 'playerSide', - 'playersNumber', - 'playGesture', - 'playMission', - 'playMove', - 'playMoveNow', - 'playMusic', - 'playScriptedMission', - 'playSound', - 'playSound3D', - 'playSoundUI', - 'pose', - 'position', - 'positionCameraToWorld', - 'posScreenToWorld', - 'posWorldToScreen', - 'ppEffectAdjust', - 'ppEffectCommit', - 'ppEffectCommitted', - 'ppEffectCreate', - 'ppEffectDestroy', - 'ppEffectEnable', - 'ppEffectEnabled', - 'ppEffectForceInNVG', - 'precision', - 'preloadCamera', - 'preloadObject', - 'preloadSound', - 'preloadTitleObj', - 'preloadTitleRsc', - 'preprocessFile', - 'preprocessFileLineNumbers', - 'primaryWeapon', - 'primaryWeaponItems', - 'primaryWeaponMagazine', - 'priority', - 'processDiaryLink', - 'productVersion', - 'profileName', - 'profileNamespace', - 'profileNameSteam', - 'progressLoadingScreen', - 'progressPosition', - 'progressSetPosition', - 'publicVariable', - 'publicVariableClient', - 'publicVariableServer', - 'pushBack', - 'pushBackUnique', - 'putWeaponPool', - 'queryItemsPool', - 'queryMagazinePool', - 'queryWeaponPool', - 'rad', - 'radioChannelAdd', - 'radioChannelCreate', - 'radioChannelInfo', - 'radioChannelRemove', - 'radioChannelSetCallSign', - 'radioChannelSetLabel', - 'radioEnabled', - 'radioVolume', - 'rain', - 'rainbow', - 'rainParams', - 'random', - 'rank', - 'rankId', - 'rating', - 'rectangular', - 'regexFind', - 'regexMatch', - 'regexReplace', - 'registeredTasks', - 'registerTask', - 'reload', - 'reloadEnabled', - 'remoteControl', - 'remoteExec', - 'remoteExecCall', - 'remoteExecutedOwner', - 'remove3DENConnection', - 'remove3DENEventHandler', - 'remove3DENLayer', - 'removeAction', - 'removeAll3DENEventHandlers', - 'removeAllActions', - 'removeAllAssignedItems', - 'removeAllBinocularItems', - 'removeAllContainers', - 'removeAllCuratorAddons', - 'removeAllCuratorCameraAreas', - 'removeAllCuratorEditingAreas', - 'removeAllEventHandlers', - 'removeAllHandgunItems', - 'removeAllItems', - 'removeAllItemsWithMagazines', - 'removeAllMissionEventHandlers', - 'removeAllMPEventHandlers', - 'removeAllMusicEventHandlers', - 'removeAllOwnedMines', - 'removeAllPrimaryWeaponItems', - 'removeAllSecondaryWeaponItems', - 'removeAllUserActionEventHandlers', - 'removeAllWeapons', - 'removeBackpack', - 'removeBackpackGlobal', - 'removeBinocularItem', - 'removeCuratorAddons', - 'removeCuratorCameraArea', - 'removeCuratorEditableObjects', - 'removeCuratorEditingArea', - 'removeDiaryRecord', - 'removeDiarySubject', - 'removeDrawIcon', - 'removeDrawLinks', - 'removeEventHandler', - 'removeFromRemainsCollector', - 'removeGoggles', - 'removeGroupIcon', - 'removeHandgunItem', - 'removeHeadgear', - 'removeItem', - 'removeItemFromBackpack', - 'removeItemFromUniform', - 'removeItemFromVest', - 'removeItems', - 'removeMagazine', - 'removeMagazineGlobal', - 'removeMagazines', - 'removeMagazinesTurret', - 'removeMagazineTurret', - 'removeMenuItem', - 'removeMissionEventHandler', - 'removeMPEventHandler', - 'removeMusicEventHandler', - 'removeOwnedMine', - 'removePrimaryWeaponItem', - 'removeSecondaryWeaponItem', - 'removeSimpleTask', - 'removeSwitchableUnit', - 'removeTeamMember', - 'removeUniform', - 'removeUserActionEventHandler', - 'removeVest', - 'removeWeapon', - 'removeWeaponAttachmentCargo', - 'removeWeaponCargo', - 'removeWeaponGlobal', - 'removeWeaponTurret', - 'reportRemoteTarget', - 'requiredVersion', - 'resetCamShake', - 'resetSubgroupDirection', - 'resize', - 'resources', - 'respawnVehicle', - 'restartEditorCamera', - 'reveal', - 'revealMine', - 'reverse', - 'reversedMouseY', - 'roadAt', - 'roadsConnectedTo', - 'roleDescription', - 'ropeAttachedObjects', - 'ropeAttachedTo', - 'ropeAttachEnabled', - 'ropeAttachTo', - 'ropeCreate', - 'ropeCut', - 'ropeDestroy', - 'ropeDetach', - 'ropeEndPosition', - 'ropeLength', - 'ropes', - 'ropesAttachedTo', - 'ropeSegments', - 'ropeUnwind', - 'ropeUnwound', - 'rotorsForcesRTD', - 'rotorsRpmRTD', - 'round', - 'runInitScript', - 'safeZoneH', - 'safeZoneW', - 'safeZoneWAbs', - 'safeZoneX', - 'safeZoneXAbs', - 'safeZoneY', - 'save3DENInventory', - 'saveGame', - 'saveIdentity', - 'saveJoysticks', - 'saveMissionProfileNamespace', - 'saveOverlay', - 'saveProfileNamespace', - 'saveStatus', - 'saveVar', - 'savingEnabled', - 'say', - 'say2D', - 'say3D', - 'scopeName', - 'score', - 'scoreSide', - 'screenshot', - 'screenToWorld', - 'scriptDone', - 'scriptName', - 'scudState', - 'secondaryWeapon', - 'secondaryWeaponItems', - 'secondaryWeaponMagazine', - 'select', - 'selectBestPlaces', - 'selectDiarySubject', - 'selectedEditorObjects', - 'selectEditorObject', - 'selectionNames', - 'selectionPosition', - 'selectionVectorDirAndUp', - 'selectLeader', - 'selectMax', - 'selectMin', - 'selectNoPlayer', - 'selectPlayer', - 'selectRandom', - 'selectRandomWeighted', - 'selectWeapon', - 'selectWeaponTurret', - 'sendAUMessage', - 'sendSimpleCommand', - 'sendTask', - 'sendTaskResult', - 'sendUDPMessage', - 'sentencesEnabled', - 'serverCommand', - 'serverCommandAvailable', - 'serverCommandExecutable', - 'serverName', - 'serverNamespace', - 'serverTime', - 'set', - 'set3DENAttribute', - 'set3DENAttributes', - 'set3DENGrid', - 'set3DENIconsVisible', - 'set3DENLayer', - 'set3DENLinesVisible', - 'set3DENLogicType', - 'set3DENMissionAttribute', - 'set3DENMissionAttributes', - 'set3DENModelsVisible', - 'set3DENObjectType', - 'set3DENSelected', - 'setAccTime', - 'setActualCollectiveRTD', - 'setAirplaneThrottle', - 'setAirportSide', - 'setAmmo', - 'setAmmoCargo', - 'setAmmoOnPylon', - 'setAnimSpeedCoef', - 'setAperture', - 'setApertureNew', - 'setArmoryPoints', - 'setAttributes', - 'setAutonomous', - 'setBehaviour', - 'setBehaviourStrong', - 'setBleedingRemaining', - 'setBrakesRTD', - 'setCameraInterest', - 'setCamShakeDefParams', - 'setCamShakeParams', - 'setCamUseTi', - 'setCaptive', - 'setCenterOfMass', - 'setCollisionLight', - 'setCombatBehaviour', - 'setCombatMode', - 'setCompassOscillation', - 'setConvoySeparation', - 'setCruiseControl', - 'setCuratorCameraAreaCeiling', - 'setCuratorCoef', - 'setCuratorEditingAreaType', - 'setCuratorWaypointCost', - 'setCurrentChannel', - 'setCurrentTask', - 'setCurrentWaypoint', - 'setCustomAimCoef', - 'SetCustomMissionData', - 'setCustomSoundController', - 'setCustomWeightRTD', - 'setDamage', - 'setDammage', - 'setDate', - 'setDebriefingText', - 'setDefaultCamera', - 'setDestination', - 'setDetailMapBlendPars', - 'setDiaryRecordText', - 'setDiarySubjectPicture', - 'setDir', - 'setDirection', - 'setDrawIcon', - 'setDriveOnPath', - 'setDropInterval', - 'setDynamicSimulationDistance', - 'setDynamicSimulationDistanceCoef', - 'setEditorMode', - 'setEditorObjectScope', - 'setEffectCondition', - 'setEffectiveCommander', - 'setEngineRpmRTD', - 'setFace', - 'setFaceanimation', - 'setFatigue', - 'setFeatureType', - 'setFlagAnimationPhase', - 'setFlagOwner', - 'setFlagSide', - 'setFlagTexture', - 'setFog', - 'setForceGeneratorRTD', - 'setFormation', - 'setFormationTask', - 'setFormDir', - 'setFriend', - 'setFromEditor', - 'setFSMVariable', - 'setFuel', - 'setFuelCargo', - 'setGroupIcon', - 'setGroupIconParams', - 'setGroupIconsSelectable', - 'setGroupIconsVisible', - 'setGroupid', - 'setGroupIdGlobal', - 'setGroupOwner', - 'setGusts', - 'setHideBehind', - 'setHit', - 'setHitIndex', - 'setHitPointDamage', - 'setHorizonParallaxCoef', - 'setHUDMovementLevels', - 'setHumidity', - 'setIdentity', - 'setImportance', - 'setInfoPanel', - 'setLeader', - 'setLightAmbient', - 'setLightAttenuation', - 'setLightBrightness', - 'setLightColor', - 'setLightConePars', - 'setLightDayLight', - 'setLightFlareMaxDistance', - 'setLightFlareSize', - 'setLightIntensity', - 'setLightIR', - 'setLightnings', - 'setLightUseFlare', - 'setLightVolumeShape', - 'setLocalWindParams', - 'setMagazineTurretAmmo', - 'setMarkerAlpha', - 'setMarkerAlphaLocal', - 'setMarkerBrush', - 'setMarkerBrushLocal', - 'setMarkerColor', - 'setMarkerColorLocal', - 'setMarkerDir', - 'setMarkerDirLocal', - 'setMarkerPolyline', - 'setMarkerPolylineLocal', - 'setMarkerPos', - 'setMarkerPosLocal', - 'setMarkerShadow', - 'setMarkerShadowLocal', - 'setMarkerShape', - 'setMarkerShapeLocal', - 'setMarkerSize', - 'setMarkerSizeLocal', - 'setMarkerText', - 'setMarkerTextLocal', - 'setMarkerType', - 'setMarkerTypeLocal', - 'setMass', - 'setMaxLoad', - 'setMimic', - 'setMissileTarget', - 'setMissileTargetPos', - 'setMousePosition', - 'setMusicEffect', - 'setMusicEventHandler', - 'setName', - 'setNameSound', - 'setObjectArguments', - 'setObjectMaterial', - 'setObjectMaterialGlobal', - 'setObjectProxy', - 'setObjectScale', - 'setObjectTexture', - 'setObjectTextureGlobal', - 'setObjectViewDistance', - 'setOpticsMode', - 'setOvercast', - 'setOwner', - 'setOxygenRemaining', - 'setParticleCircle', - 'setParticleClass', - 'setParticleFire', - 'setParticleParams', - 'setParticleRandom', - 'setPilotCameraDirection', - 'setPilotCameraRotation', - 'setPilotCameraTarget', - 'setPilotLight', - 'setPiPEffect', - 'setPiPViewDistance', - 'setPitch', - 'setPlateNumber', - 'setPlayable', - 'setPlayerRespawnTime', - 'setPlayerVoNVolume', - 'setPos', - 'setPosASL', - 'setPosASL2', - 'setPosASLW', - 'setPosATL', - 'setPosition', - 'setPosWorld', - 'setPylonLoadout', - 'setPylonsPriority', - 'setRadioMsg', - 'setRain', - 'setRainbow', - 'setRandomLip', - 'setRank', - 'setRectangular', - 'setRepairCargo', - 'setRotorBrakeRTD', - 'setShadowDistance', - 'setShotParents', - 'setSide', - 'setSimpleTaskAlwaysVisible', - 'setSimpleTaskCustomData', - 'setSimpleTaskDescription', - 'setSimpleTaskDestination', - 'setSimpleTaskTarget', - 'setSimpleTaskType', - 'setSimulWeatherLayers', - 'setSize', - 'setSkill', - 'setSlingLoad', - 'setSoundEffect', - 'setSpeaker', - 'setSpeech', - 'setSpeedMode', - 'setStamina', - 'setStaminaScheme', - 'setStatValue', - 'setSuppression', - 'setSystemOfUnits', - 'setTargetAge', - 'setTaskMarkerOffset', - 'setTaskResult', - 'setTaskState', - 'setTerrainGrid', - 'setTerrainHeight', - 'setText', - 'setTimeMultiplier', - 'setTiParameter', - 'setTitleEffect', - 'setTowParent', - 'setTrafficDensity', - 'setTrafficDistance', - 'setTrafficGap', - 'setTrafficSpeed', - 'setTriggerActivation', - 'setTriggerArea', - 'setTriggerInterval', - 'setTriggerStatements', - 'setTriggerText', - 'setTriggerTimeout', - 'setTriggerType', - 'setTurretLimits', - 'setTurretOpticsMode', - 'setType', - 'setUnconscious', - 'setUnitAbility', - 'setUnitCombatMode', - 'setUnitFreefallHeight', - 'setUnitLoadout', - 'setUnitPos', - 'setUnitPosWeak', - 'setUnitRank', - 'setUnitRecoilCoefficient', - 'setUnitTrait', - 'setUnloadInCombat', - 'setUserActionText', - 'setUserMFDText', - 'setUserMFDValue', - 'setVariable', - 'setVectorDir', - 'setVectorDirAndUp', - 'setVectorUp', - 'setVehicleAmmo', - 'setVehicleAmmoDef', - 'setVehicleArmor', - 'setVehicleCargo', - 'setVehicleId', - 'setVehicleLock', - 'setVehiclePosition', - 'setVehicleRadar', - 'setVehicleReceiveRemoteTargets', - 'setVehicleReportOwnPosition', - 'setVehicleReportRemoteTargets', - 'setVehicleTiPars', - 'setVehicleVarName', - 'setVelocity', - 'setVelocityModelSpace', - 'setVelocityTransformation', - 'setViewDistance', - 'setVisibleIfTreeCollapsed', - 'setWantedRPMRTD', - 'setWaves', - 'setWaypointBehaviour', - 'setWaypointCombatMode', - 'setWaypointCompletionRadius', - 'setWaypointDescription', - 'setWaypointForceBehaviour', - 'setWaypointFormation', - 'setWaypointHousePosition', - 'setWaypointLoiterAltitude', - 'setWaypointLoiterRadius', - 'setWaypointLoiterType', - 'setWaypointName', - 'setWaypointPosition', - 'setWaypointScript', - 'setWaypointSpeed', - 'setWaypointStatements', - 'setWaypointTimeout', - 'setWaypointType', - 'setWaypointVisible', - 'setWeaponReloadingTime', - 'setWeaponZeroing', - 'setWind', - 'setWindDir', - 'setWindForce', - 'setWindStr', - 'setWingForceScaleRTD', - 'setWPPos', - 'show3DIcons', - 'showChat', - 'showCinemaBorder', - 'showCommandingMenu', - 'showCompass', - 'showCuratorCompass', - 'showGps', - 'showHUD', - 'showLegend', - 'showMap', - 'shownArtilleryComputer', - 'shownChat', - 'shownCompass', - 'shownCuratorCompass', - 'showNewEditorObject', - 'shownGps', - 'shownHUD', - 'shownMap', - 'shownPad', - 'shownRadio', - 'shownScoretable', - 'shownSubtitles', - 'shownUAVFeed', - 'shownWarrant', - 'shownWatch', - 'showPad', - 'showRadio', - 'showScoretable', - 'showSubtitles', - 'showUAVFeed', - 'showWarrant', - 'showWatch', - 'showWaypoint', - 'showWaypoints', - 'side', - 'sideChat', - 'sideRadio', - 'simpleTasks', - 'simulationEnabled', - 'simulCloudDensity', - 'simulCloudOcclusion', - 'simulInClouds', - 'simulWeatherSync', - 'sin', - 'size', - 'sizeOf', - 'skill', - 'skillFinal', - 'skipTime', - 'sleep', - 'sliderPosition', - 'sliderRange', - 'sliderSetPosition', - 'sliderSetRange', - 'sliderSetSpeed', - 'sliderSpeed', - 'slingLoadAssistantShown', - 'soldierMagazines', - 'someAmmo', - 'sort', - 'soundVolume', - 'spawn', - 'speaker', - 'speechVolume', - 'speed', - 'speedMode', - 'splitString', - 'sqrt', - 'squadParams', - 'stance', - 'startLoadingScreen', - 'stop', - 'stopEngineRTD', - 'stopped', - 'str', - 'sunOrMoon', - 'supportInfo', - 'suppressFor', - 'surfaceIsWater', - 'surfaceNormal', - 'surfaceTexture', - 'surfaceType', - 'swimInDepth', - 'switchableUnits', - 'switchAction', - 'switchCamera', - 'switchGesture', - 'switchLight', - 'switchMove', - 'synchronizedObjects', - 'synchronizedTriggers', - 'synchronizedWaypoints', - 'synchronizeObjectsAdd', - 'synchronizeObjectsRemove', - 'synchronizeTrigger', - 'synchronizeWaypoint', - 'systemChat', - 'systemOfUnits', - 'systemTime', - 'systemTimeUTC', - 'tan', - 'targetKnowledge', - 'targets', - 'targetsAggregate', - 'targetsQuery', - 'taskAlwaysVisible', - 'taskChildren', - 'taskCompleted', - 'taskCustomData', - 'taskDescription', - 'taskDestination', - 'taskHint', - 'taskMarkerOffset', - 'taskName', - 'taskParent', - 'taskResult', - 'taskState', - 'taskType', - 'teamMember', - 'teamName', - 'teams', - 'teamSwitch', - 'teamSwitchEnabled', - 'teamType', - 'terminate', - 'terrainIntersect', - 'terrainIntersectASL', - 'terrainIntersectAtASL', - 'text', - 'textLog', - 'textLogFormat', - 'tg', - 'time', - 'timeMultiplier', - 'titleCut', - 'titleFadeOut', - 'titleObj', - 'titleRsc', - 'titleText', - 'toArray', - 'toFixed', - 'toLower', - 'toLowerANSI', - 'toString', - 'toUpper', - 'toUpperANSI', - 'triggerActivated', - 'triggerActivation', - 'triggerAmmo', - 'triggerArea', - 'triggerAttachedVehicle', - 'triggerAttachObject', - 'triggerAttachVehicle', - 'triggerDynamicSimulation', - 'triggerInterval', - 'triggerStatements', - 'triggerText', - 'triggerTimeout', - 'triggerTimeoutCurrent', - 'triggerType', - 'trim', - 'turretLocal', - 'turretOwner', - 'turretUnit', - 'tvAdd', - 'tvClear', - 'tvCollapse', - 'tvCollapseAll', - 'tvCount', - 'tvCurSel', - 'tvData', - 'tvDelete', - 'tvExpand', - 'tvExpandAll', - 'tvIsSelected', - 'tvPicture', - 'tvPictureRight', - 'tvSelection', - 'tvSetColor', - 'tvSetCurSel', - 'tvSetData', - 'tvSetPicture', - 'tvSetPictureColor', - 'tvSetPictureColorDisabled', - 'tvSetPictureColorSelected', - 'tvSetPictureRight', - 'tvSetPictureRightColor', - 'tvSetPictureRightColorDisabled', - 'tvSetPictureRightColorSelected', - 'tvSetSelectColor', - 'tvSetSelected', - 'tvSetText', - 'tvSetTooltip', - 'tvSetValue', - 'tvSort', - 'tvSortAll', - 'tvSortByValue', - 'tvSortByValueAll', - 'tvText', - 'tvTooltip', - 'tvValue', - 'type', - 'typeName', - 'typeOf', - 'UAVControl', - 'uiNamespace', - 'uiSleep', - 'unassignCurator', - 'unassignItem', - 'unassignTeam', - 'unassignVehicle', - 'underwater', - 'uniform', - 'uniformContainer', - 'uniformItems', - 'uniformMagazines', - 'uniqueUnitItems', - 'unitAddons', - 'unitAimPosition', - 'unitAimPositionVisual', - 'unitBackpack', - 'unitCombatMode', - 'unitIsUAV', - 'unitPos', - 'unitReady', - 'unitRecoilCoefficient', - 'units', - 'unitsBelowHeight', - 'unitTurret', - 'unlinkItem', - 'unlockAchievement', - 'unregisterTask', - 'updateDrawIcon', - 'updateMenuItem', - 'updateObjectTree', - 'useAIOperMapObstructionTest', - 'useAISteeringComponent', - 'useAudioTimeForMoves', - 'userInputDisabled', - 'values', - 'vectorAdd', - 'vectorCos', - 'vectorCrossProduct', - 'vectorDiff', - 'vectorDir', - 'vectorDirVisual', - 'vectorDistance', - 'vectorDistanceSqr', - 'vectorDotProduct', - 'vectorFromTo', - 'vectorLinearConversion', - 'vectorMagnitude', - 'vectorMagnitudeSqr', - 'vectorModelToWorld', - 'vectorModelToWorldVisual', - 'vectorMultiply', - 'vectorNormalized', - 'vectorUp', - 'vectorUpVisual', - 'vectorWorldToModel', - 'vectorWorldToModelVisual', - 'vehicle', - 'vehicleCargoEnabled', - 'vehicleChat', - 'vehicleMoveInfo', - 'vehicleRadio', - 'vehicleReceiveRemoteTargets', - 'vehicleReportOwnPosition', - 'vehicleReportRemoteTargets', - 'vehicles', - 'vehicleVarName', - 'velocity', - 'velocityModelSpace', - 'verifySignature', - 'vest', - 'vestContainer', - 'vestItems', - 'vestMagazines', - 'viewDistance', - 'visibleCompass', - 'visibleGps', - 'visibleMap', - 'visiblePosition', - 'visiblePositionASL', - 'visibleScoretable', - 'visibleWatch', - 'waves', - 'waypointAttachedObject', - 'waypointAttachedVehicle', - 'waypointAttachObject', - 'waypointAttachVehicle', - 'waypointBehaviour', - 'waypointCombatMode', - 'waypointCompletionRadius', - 'waypointDescription', - 'waypointForceBehaviour', - 'waypointFormation', - 'waypointHousePosition', - 'waypointLoiterAltitude', - 'waypointLoiterRadius', - 'waypointLoiterType', - 'waypointName', - 'waypointPosition', - 'waypoints', - 'waypointScript', - 'waypointsEnabledUAV', - 'waypointShow', - 'waypointSpeed', - 'waypointStatements', - 'waypointTimeout', - 'waypointTimeoutCurrent', - 'waypointType', - 'waypointVisible', - 'weaponAccessories', - 'weaponAccessoriesCargo', - 'weaponCargo', - 'weaponDirection', - 'weaponInertia', - 'weaponLowered', - 'weaponReloadingTime', - 'weapons', - 'weaponsInfo', - 'weaponsItems', - 'weaponsItemsCargo', - 'weaponState', - 'weaponsTurret', - 'weightRTD', - 'WFSideText', - 'wind', - 'windDir', - 'windRTD', - 'windStr', - 'wingsForcesRTD', - 'worldName', - 'worldSize', - 'worldToModel', - 'worldToModelVisual', - 'worldToScreen' - ]; - - // list of keywords from: - // https://community.bistudio.com/wiki/PreProcessor_Commands - const PREPROCESSOR = { - className: 'meta', - begin: /#\s*[a-z]+\b/, - end: /$/, - keywords: 'define undef ifdef ifndef else endif include if', - contains: [ - { - begin: /\\\n/, - relevance: 0 - }, - hljs.inherit(STRINGS, { className: 'string' }), - { - begin: /<[^\n>]*>/, - end: /$/, - illegal: '\\n' - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; - - return { - name: 'SQF', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_IN, - literal: LITERAL - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.NUMBER_MODE, - VARIABLE, - FUNCTION, - STRINGS, - PREPROCESSOR - ], - illegal: [ - //$ is only valid when used with Hex numbers (e.g. $FF) - /\$[^a-fA-F0-9]/, - /\w\$/, - /\?/, //There's no ? in SQF - /@/, //There's no @ in SQF - // Brute-force-fixing the build error. See https://github.com/highlightjs/highlight.js/pull/3193#issuecomment-843088729 - / \| /, - // . is only used in numbers - /[a-zA-Z_]\./, - /\:\=/, - /\[\:/ - ] - }; -} - -module.exports = sqf; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/sql.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/sql.js ***! - \************************************************************/ -(module) { - -/* - Language: SQL - Website: https://en.wikipedia.org/wiki/SQL - Category: common, database - */ - -/* - -Goals: - -SQL is intended to highlight basic/common SQL keywords and expressions - -- If pretty much every single SQL server includes supports, then it's a canidate. -- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL, - PostgreSQL) although the list of data types is purposely a bit more expansive. -- For more specific SQL grammars please see: - - PostgreSQL and PL/pgSQL - core - - T-SQL - https://github.com/highlightjs/highlightjs-tsql - - sql_more (core) - - */ - -function sql(hljs) { - const regex = hljs.regex; - const COMMENT_MODE = hljs.COMMENT('--', '$'); - const STRING = { - scope: 'string', - variants: [ - { - begin: /'/, - end: /'/, - contains: [ { match: /''/ } ] - } - ] - }; - const QUOTED_IDENTIFIER = { - begin: /"/, - end: /"/, - contains: [ { match: /""/ } ] - }; - - const LITERALS = [ - "true", - "false", - // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way. - // "null", - "unknown" - ]; - - const MULTI_WORD_TYPES = [ - "double precision", - "large object", - "with timezone", - "without timezone" - ]; - - const TYPES = [ - 'bigint', - 'binary', - 'blob', - 'boolean', - 'char', - 'character', - 'clob', - 'date', - 'dec', - 'decfloat', - 'decimal', - 'float', - 'int', - 'integer', - 'interval', - 'nchar', - 'nclob', - 'national', - 'numeric', - 'real', - 'row', - 'smallint', - 'time', - 'timestamp', - 'varchar', - 'varying', // modifier (character varying) - 'varbinary' - ]; - - const NON_RESERVED_WORDS = [ - "add", - "asc", - "collation", - "desc", - "final", - "first", - "last", - "view" - ]; - - // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word - const RESERVED_WORDS = [ - "abs", - "acos", - "all", - "allocate", - "alter", - "and", - "any", - "are", - "array", - "array_agg", - "array_max_cardinality", - "as", - "asensitive", - "asin", - "asymmetric", - "at", - "atan", - "atomic", - "authorization", - "avg", - "begin", - "begin_frame", - "begin_partition", - "between", - "bigint", - "binary", - "blob", - "boolean", - "both", - "by", - "call", - "called", - "cardinality", - "cascaded", - "case", - "cast", - "ceil", - "ceiling", - "char", - "char_length", - "character", - "character_length", - "check", - "classifier", - "clob", - "close", - "coalesce", - "collate", - "collect", - "column", - "commit", - "condition", - "connect", - "constraint", - "contains", - "convert", - "copy", - "corr", - "corresponding", - "cos", - "cosh", - "count", - "covar_pop", - "covar_samp", - "create", - "cross", - "cube", - "cume_dist", - "current", - "current_catalog", - "current_date", - "current_default_transform_group", - "current_path", - "current_role", - "current_row", - "current_schema", - "current_time", - "current_timestamp", - "current_path", - "current_role", - "current_transform_group_for_type", - "current_user", - "cursor", - "cycle", - "date", - "day", - "deallocate", - "dec", - "decimal", - "decfloat", - "declare", - "default", - "define", - "delete", - "dense_rank", - "deref", - "describe", - "deterministic", - "disconnect", - "distinct", - "double", - "drop", - "dynamic", - "each", - "element", - "else", - "empty", - "end", - "end_frame", - "end_partition", - "end-exec", - "equals", - "escape", - "every", - "except", - "exec", - "execute", - "exists", - "exp", - "external", - "extract", - "false", - "fetch", - "filter", - "first_value", - "float", - "floor", - "for", - "foreign", - "frame_row", - "free", - "from", - "full", - "function", - "fusion", - "get", - "global", - "grant", - "group", - "grouping", - "groups", - "having", - "hold", - "hour", - "identity", - "in", - "indicator", - "initial", - "inner", - "inout", - "insensitive", - "insert", - "int", - "integer", - "intersect", - "intersection", - "interval", - "into", - "is", - "join", - "json_array", - "json_arrayagg", - "json_exists", - "json_object", - "json_objectagg", - "json_query", - "json_table", - "json_table_primitive", - "json_value", - "lag", - "language", - "large", - "last_value", - "lateral", - "lead", - "leading", - "left", - "like", - "like_regex", - "listagg", - "ln", - "local", - "localtime", - "localtimestamp", - "log", - "log10", - "lower", - "match", - "match_number", - "match_recognize", - "matches", - "max", - "member", - "merge", - "method", - "min", - "minute", - "mod", - "modifies", - "module", - "month", - "multiset", - "national", - "natural", - "nchar", - "nclob", - "new", - "no", - "none", - "normalize", - "not", - "nth_value", - "ntile", - "null", - "nullif", - "numeric", - "octet_length", - "occurrences_regex", - "of", - "offset", - "old", - "omit", - "on", - "one", - "only", - "open", - "or", - "order", - "out", - "outer", - "over", - "overlaps", - "overlay", - "parameter", - "partition", - "pattern", - "per", - "percent", - "percent_rank", - "percentile_cont", - "percentile_disc", - "period", - "portion", - "position", - "position_regex", - "power", - "precedes", - "precision", - "prepare", - "primary", - "procedure", - "ptf", - "range", - "rank", - "reads", - "real", - "recursive", - "ref", - "references", - "referencing", - "regr_avgx", - "regr_avgy", - "regr_count", - "regr_intercept", - "regr_r2", - "regr_slope", - "regr_sxx", - "regr_sxy", - "regr_syy", - "release", - "result", - "return", - "returns", - "revoke", - "right", - "rollback", - "rollup", - "row", - "row_number", - "rows", - "running", - "savepoint", - "scope", - "scroll", - "search", - "second", - "seek", - "select", - "sensitive", - "session_user", - "set", - "show", - "similar", - "sin", - "sinh", - "skip", - "smallint", - "some", - "specific", - "specifictype", - "sql", - "sqlexception", - "sqlstate", - "sqlwarning", - "sqrt", - "start", - "static", - "stddev_pop", - "stddev_samp", - "submultiset", - "subset", - "substring", - "substring_regex", - "succeeds", - "sum", - "symmetric", - "system", - "system_time", - "system_user", - "table", - "tablesample", - "tan", - "tanh", - "then", - "time", - "timestamp", - "timezone_hour", - "timezone_minute", - "to", - "trailing", - "translate", - "translate_regex", - "translation", - "treat", - "trigger", - "trim", - "trim_array", - "true", - "truncate", - "uescape", - "union", - "unique", - "unknown", - "unnest", - "update", - "upper", - "user", - "using", - "value", - "values", - "value_of", - "var_pop", - "var_samp", - "varbinary", - "varchar", - "varying", - "versioning", - "when", - "whenever", - "where", - "width_bucket", - "window", - "with", - "within", - "without", - "year", - ]; - - // these are reserved words we have identified to be functions - // and should only be highlighted in a dispatch-like context - // ie, array_agg(...), etc. - const RESERVED_FUNCTIONS = [ - "abs", - "acos", - "array_agg", - "asin", - "atan", - "avg", - "cast", - "ceil", - "ceiling", - "coalesce", - "corr", - "cos", - "cosh", - "count", - "covar_pop", - "covar_samp", - "cume_dist", - "dense_rank", - "deref", - "element", - "exp", - "extract", - "first_value", - "floor", - "json_array", - "json_arrayagg", - "json_exists", - "json_object", - "json_objectagg", - "json_query", - "json_table", - "json_table_primitive", - "json_value", - "lag", - "last_value", - "lead", - "listagg", - "ln", - "log", - "log10", - "lower", - "max", - "min", - "mod", - "nth_value", - "ntile", - "nullif", - "percent_rank", - "percentile_cont", - "percentile_disc", - "position", - "position_regex", - "power", - "rank", - "regr_avgx", - "regr_avgy", - "regr_count", - "regr_intercept", - "regr_r2", - "regr_slope", - "regr_sxx", - "regr_sxy", - "regr_syy", - "row_number", - "sin", - "sinh", - "sqrt", - "stddev_pop", - "stddev_samp", - "substring", - "substring_regex", - "sum", - "tan", - "tanh", - "translate", - "translate_regex", - "treat", - "trim", - "trim_array", - "unnest", - "upper", - "value_of", - "var_pop", - "var_samp", - "width_bucket", - ]; - - // these functions can - const POSSIBLE_WITHOUT_PARENS = [ - "current_catalog", - "current_date", - "current_default_transform_group", - "current_path", - "current_role", - "current_schema", - "current_transform_group_for_type", - "current_user", - "session_user", - "system_time", - "system_user", - "current_time", - "localtime", - "current_timestamp", - "localtimestamp" - ]; - - // those exist to boost relevance making these very - // "SQL like" keyword combos worth +1 extra relevance - const COMBOS = [ - "create table", - "insert into", - "primary key", - "foreign key", - "not null", - "alter table", - "add constraint", - "grouping sets", - "on overflow", - "character set", - "respect nulls", - "ignore nulls", - "nulls first", - "nulls last", - "depth first", - "breadth first" - ]; - - const FUNCTIONS = RESERVED_FUNCTIONS; - - const KEYWORDS = [ - ...RESERVED_WORDS, - ...NON_RESERVED_WORDS - ].filter((keyword) => { - return !RESERVED_FUNCTIONS.includes(keyword); - }); - - const VARIABLE = { - scope: "variable", - match: /@[a-z0-9][a-z0-9_]*/, - }; - - const OPERATOR = { - scope: "operator", - match: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/, - relevance: 0, - }; - - const FUNCTION_CALL = { - match: regex.concat(/\b/, regex.either(...FUNCTIONS), /\s*\(/), - relevance: 0, - keywords: { built_in: FUNCTIONS } - }; - - // turns a multi-word keyword combo into a regex that doesn't - // care about extra whitespace etc. - // input: "START QUERY" - // output: /\bSTART\s+QUERY\b/ - function kws_to_regex(list) { - return regex.concat( - /\b/, - regex.either(...list.map((kw) => { - return kw.replace(/\s+/, "\\s+") - })), - /\b/ - ) - } - - const MULTI_WORD_KEYWORDS = { - scope: "keyword", - match: kws_to_regex(COMBOS), - relevance: 0, - }; - - // keywords with less than 3 letters are reduced in relevancy - function reduceRelevancy(list, { - exceptions, when - } = {}) { - const qualifyFn = when; - exceptions = exceptions || []; - return list.map((item) => { - if (item.match(/\|\d+$/) || exceptions.includes(item)) { - return item; - } else if (qualifyFn(item)) { - return `${item}|0`; - } else { - return item; - } - }); - } - - return { - name: 'SQL', - case_insensitive: true, - // does not include {} or HTML tags ` x.length < 3 }), - literal: LITERALS, - type: TYPES, - built_in: POSSIBLE_WITHOUT_PARENS - }, - contains: [ - { - scope: "type", - match: kws_to_regex(MULTI_WORD_TYPES) - }, - MULTI_WORD_KEYWORDS, - FUNCTION_CALL, - VARIABLE, - STRING, - QUOTED_IDENTIFIER, - hljs.C_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE, - COMMENT_MODE, - OPERATOR - ] - }; -} - -module.exports = sql; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/stan.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/stan.js ***! - \*************************************************************/ -(module) { - -/* -Language: Stan -Description: The Stan probabilistic programming language -Author: Sean Pinkney -Website: http://mc-stan.org/ -Category: scientific -*/ - -function stan(hljs) { - const regex = hljs.regex; - // variable names cannot conflict with block identifiers - const BLOCKS = [ - 'functions', - 'model', - 'data', - 'parameters', - 'quantities', - 'transformed', - 'generated' - ]; - - const STATEMENTS = [ - 'for', - 'in', - 'if', - 'else', - 'while', - 'break', - 'continue', - 'return' - ]; - - const TYPES = [ - 'array', - 'tuple', - 'complex', - 'int', - 'real', - 'vector', - 'complex_vector', - 'ordered', - 'positive_ordered', - 'simplex', - 'unit_vector', - 'row_vector', - 'complex_row_vector', - 'matrix', - 'complex_matrix', - 'cholesky_factor_corr|10', - 'cholesky_factor_cov|10', - 'corr_matrix|10', - 'cov_matrix|10', - 'void' - ]; - - // to get the functions list - // clone the [stan-docs repo](https://github.com/stan-dev/docs) - // then cd into it and run this bash script https://gist.github.com/joshgoebel/dcd33f82d4059a907c986049893843cf - // - // the output files are - // distributions_quoted.txt - // functions_quoted.txt - - const FUNCTIONS = [ - 'abs', - 'acos', - 'acosh', - 'add_diag', - 'algebra_solver', - 'algebra_solver_newton', - 'append_array', - 'append_col', - 'append_row', - 'asin', - 'asinh', - 'atan', - 'atan2', - 'atanh', - 'bessel_first_kind', - 'bessel_second_kind', - 'binary_log_loss', - 'block', - 'cbrt', - 'ceil', - 'chol2inv', - 'cholesky_decompose', - 'choose', - 'col', - 'cols', - 'columns_dot_product', - 'columns_dot_self', - 'complex_schur_decompose', - 'complex_schur_decompose_t', - 'complex_schur_decompose_u', - 'conj', - 'cos', - 'cosh', - 'cov_exp_quad', - 'crossprod', - 'csr_extract', - 'csr_extract_u', - 'csr_extract_v', - 'csr_extract_w', - 'csr_matrix_times_vector', - 'csr_to_dense_matrix', - 'cumulative_sum', - 'dae', - 'dae_tol', - 'determinant', - 'diag_matrix', - 'diagonal', - 'diag_post_multiply', - 'diag_pre_multiply', - 'digamma', - 'dims', - 'distance', - 'dot_product', - 'dot_self', - 'eigendecompose', - 'eigendecompose_sym', - 'eigenvalues', - 'eigenvalues_sym', - 'eigenvectors', - 'eigenvectors_sym', - 'erf', - 'erfc', - 'exp', - 'exp2', - 'expm1', - 'falling_factorial', - 'fdim', - 'fft', - 'fft2', - 'floor', - 'fma', - 'fmax', - 'fmin', - 'fmod', - 'gamma_p', - 'gamma_q', - 'generalized_inverse', - 'get_imag', - 'get_real', - 'head', - 'hmm_hidden_state_prob', - 'hmm_marginal', - 'hypot', - 'identity_matrix', - 'inc_beta', - 'integrate_1d', - 'integrate_ode', - 'integrate_ode_adams', - 'integrate_ode_bdf', - 'integrate_ode_rk45', - 'int_step', - 'inv', - 'inv_cloglog', - 'inv_erfc', - 'inverse', - 'inverse_spd', - 'inv_fft', - 'inv_fft2', - 'inv_inc_beta', - 'inv_logit', - 'inv_Phi', - 'inv_sqrt', - 'inv_square', - 'is_inf', - 'is_nan', - 'lambert_w0', - 'lambert_wm1', - 'lbeta', - 'lchoose', - 'ldexp', - 'lgamma', - 'linspaced_array', - 'linspaced_int_array', - 'linspaced_row_vector', - 'linspaced_vector', - 'lmgamma', - 'lmultiply', - 'log', - 'log1m', - 'log1m_exp', - 'log1m_inv_logit', - 'log1p', - 'log1p_exp', - 'log_determinant', - 'log_diff_exp', - 'log_falling_factorial', - 'log_inv_logit', - 'log_inv_logit_diff', - 'logit', - 'log_mix', - 'log_modified_bessel_first_kind', - 'log_rising_factorial', - 'log_softmax', - 'log_sum_exp', - 'machine_precision', - 'map_rect', - 'matrix_exp', - 'matrix_exp_multiply', - 'matrix_power', - 'max', - 'mdivide_left_spd', - 'mdivide_left_tri_low', - 'mdivide_right_spd', - 'mdivide_right_tri_low', - 'mean', - 'min', - 'modified_bessel_first_kind', - 'modified_bessel_second_kind', - 'multiply_lower_tri_self_transpose', - 'negative_infinity', - 'norm', - 'norm1', - 'norm2', - 'not_a_number', - 'num_elements', - 'ode_adams', - 'ode_adams_tol', - 'ode_adjoint_tol_ctl', - 'ode_bdf', - 'ode_bdf_tol', - 'ode_ckrk', - 'ode_ckrk_tol', - 'ode_rk45', - 'ode_rk45_tol', - 'one_hot_array', - 'one_hot_int_array', - 'one_hot_row_vector', - 'one_hot_vector', - 'ones_array', - 'ones_int_array', - 'ones_row_vector', - 'ones_vector', - 'owens_t', - 'Phi', - 'Phi_approx', - 'polar', - 'positive_infinity', - 'pow', - 'print', - 'prod', - 'proj', - 'qr', - 'qr_Q', - 'qr_R', - 'qr_thin', - 'qr_thin_Q', - 'qr_thin_R', - 'quad_form', - 'quad_form_diag', - 'quad_form_sym', - 'quantile', - 'rank', - 'reduce_sum', - 'reject', - 'rep_array', - 'rep_matrix', - 'rep_row_vector', - 'rep_vector', - 'reverse', - 'rising_factorial', - 'round', - 'row', - 'rows', - 'rows_dot_product', - 'rows_dot_self', - 'scale_matrix_exp_multiply', - 'sd', - 'segment', - 'sin', - 'singular_values', - 'sinh', - 'size', - 'softmax', - 'sort_asc', - 'sort_desc', - 'sort_indices_asc', - 'sort_indices_desc', - 'sqrt', - 'square', - 'squared_distance', - 'step', - 'sub_col', - 'sub_row', - 'sum', - 'svd', - 'svd_U', - 'svd_V', - 'symmetrize_from_lower_tri', - 'tail', - 'tan', - 'tanh', - 'target', - 'tcrossprod', - 'tgamma', - 'to_array_1d', - 'to_array_2d', - 'to_complex', - 'to_int', - 'to_matrix', - 'to_row_vector', - 'to_vector', - 'trace', - 'trace_gen_quad_form', - 'trace_quad_form', - 'trigamma', - 'trunc', - 'uniform_simplex', - 'variance', - 'zeros_array', - 'zeros_int_array', - 'zeros_row_vector' - ]; - - const DISTRIBUTIONS = [ - 'bernoulli', - 'bernoulli_logit', - 'bernoulli_logit_glm', - 'beta', - 'beta_binomial', - 'beta_proportion', - 'binomial', - 'binomial_logit', - 'categorical', - 'categorical_logit', - 'categorical_logit_glm', - 'cauchy', - 'chi_square', - 'dirichlet', - 'discrete_range', - 'double_exponential', - 'exp_mod_normal', - 'exponential', - 'frechet', - 'gamma', - 'gaussian_dlm_obs', - 'gumbel', - 'hmm_latent', - 'hypergeometric', - 'inv_chi_square', - 'inv_gamma', - 'inv_wishart', - 'inv_wishart_cholesky', - 'lkj_corr', - 'lkj_corr_cholesky', - 'logistic', - 'loglogistic', - 'lognormal', - 'multi_gp', - 'multi_gp_cholesky', - 'multinomial', - 'multinomial_logit', - 'multi_normal', - 'multi_normal_cholesky', - 'multi_normal_prec', - 'multi_student_cholesky_t', - 'multi_student_t', - 'multi_student_t_cholesky', - 'neg_binomial', - 'neg_binomial_2', - 'neg_binomial_2_log', - 'neg_binomial_2_log_glm', - 'normal', - 'normal_id_glm', - 'ordered_logistic', - 'ordered_logistic_glm', - 'ordered_probit', - 'pareto', - 'pareto_type_2', - 'poisson', - 'poisson_log', - 'poisson_log_glm', - 'rayleigh', - 'scaled_inv_chi_square', - 'skew_double_exponential', - 'skew_normal', - 'std_normal', - 'std_normal_log', - 'student_t', - 'uniform', - 'von_mises', - 'weibull', - 'wiener', - 'wishart', - 'wishart_cholesky' - ]; - - const BLOCK_COMMENT = hljs.COMMENT( - /\/\*/, - /\*\//, - { - relevance: 0, - contains: [ - { - scope: 'doctag', - match: /@(return|param)/ - } - ] - } - ); - - const INCLUDE = { - scope: 'meta', - begin: /#include\b/, - end: /$/, - contains: [ - { - match: /[a-z][a-z-._]+/, - scope: 'string' - }, - hljs.C_LINE_COMMENT_MODE - ] - }; - - const RANGE_CONSTRAINTS = [ - "lower", - "upper", - "offset", - "multiplier" - ]; - - return { - name: 'Stan', - aliases: [ 'stanfuncs' ], - keywords: { - $pattern: hljs.IDENT_RE, - title: BLOCKS, - type: TYPES, - keyword: STATEMENTS, - built_in: FUNCTIONS - }, - contains: [ - hljs.C_LINE_COMMENT_MODE, - INCLUDE, - hljs.HASH_COMMENT_MODE, - BLOCK_COMMENT, - { - scope: 'built_in', - match: /\s(pi|e|sqrt2|log2|log10)(?=\()/, - relevance: 0 - }, - { - match: regex.concat(/[<,]\s*/, regex.either(...RANGE_CONSTRAINTS), /\s*=/), - keywords: RANGE_CONSTRAINTS - }, - { - scope: 'keyword', - match: /\btarget(?=\s*\+=)/, - }, - { - // highlights the 'T' in T[,] for only Stan language distributrions - match: [ - /~\s*/, - regex.either(...DISTRIBUTIONS), - /(?:\(\))/, - /\s*T(?=\s*\[)/ - ], - scope: { - 2: "built_in", - 4: "keyword" - } - }, - { - // highlights distributions that end with special endings - scope: 'built_in', - keywords: DISTRIBUTIONS, - begin: regex.concat(/\w*/, regex.either(...DISTRIBUTIONS), /(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])/) - }, - { - // highlights distributions after ~ - begin: [ - /~/, - /\s*/, - regex.concat(regex.either(...DISTRIBUTIONS), /(?=\s*[\(.*\)])/) - ], - scope: { 3: "built_in" } - }, - { - // highlights user defined distributions after ~ - begin: [ - /~/, - /\s*\w+(?=\s*[\(.*\)])/, - '(?!.*/\b(' + regex.either(...DISTRIBUTIONS) + ')\b)' - ], - scope: { 2: "title.function" } - }, - { - // highlights user defined distributions with special endings - scope: 'title.function', - begin: /\w*(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])/ - }, - { - scope: 'number', - match: regex.concat( - // Comes from @RunDevelopment accessed 11/29/2021 at - // https://github.com/PrismJS/prism/blob/c53ad2e65b7193ab4f03a1797506a54bbb33d5a2/components/prism-stan.js#L56 - - // start of big noncapture group which - // 1. gets numbers that are by themselves - // 2. numbers that are separated by _ - // 3. numbers that are separted by . - /(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)/, - // grabs scientific notation - // grabs complex numbers with i - /(?:[eE][+-]?\d+(?:_\d+)*)?i?(?!\w)/ - ), - relevance: 0 - }, - { - scope: 'string', - begin: /"/, - end: /"/ - } - ] - }; -} - -module.exports = stan; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/stata.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/stata.js ***! - \**************************************************************/ -(module) { - -/* -Language: Stata -Author: Brian Quistorff -Contributors: Drew McDonald -Description: Stata is a general-purpose statistical software package created in 1985 by StataCorp. -Website: https://en.wikipedia.org/wiki/Stata -Category: scientific -*/ - -/* - This is a fork and modification of Drew McDonald's file (https://github.com/drewmcdonald/stata-highlighting). I have also included a list of builtin commands from https://bugs.kde.org/show_bug.cgi?id=135646. -*/ - -function stata(hljs) { - return { - name: 'Stata', - aliases: [ - 'do', - 'ado' - ], - case_insensitive: true, - keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5', - contains: [ - { - className: 'symbol', - begin: /`[a-zA-Z0-9_]+'/ - }, - { - className: 'variable', - begin: /\$\{?[a-zA-Z0-9_]+\}?/, - relevance: 0 - }, - { - className: 'string', - variants: [ - { begin: '`"[^\r\n]*?"\'' }, - { begin: '"[^\r\n"]*"' } - ] - }, - - { - className: 'built_in', - variants: [ { begin: '\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()' } ] - }, - - hljs.COMMENT('^[ \t]*\\*.*$', false), - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE - ] - }; -} - -module.exports = stata; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/step21.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/step21.js ***! - \***************************************************************/ -(module) { - -/* -Language: STEP Part 21 -Contributors: Adam Joseph Cook -Description: Syntax highlighter for STEP Part 21 files (ISO 10303-21). -Website: https://en.wikipedia.org/wiki/ISO_10303-21 -Category: syntax -*/ - -function step21(hljs) { - const STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*'; - const STEP21_KEYWORDS = { - $pattern: STEP21_IDENT_RE, - keyword: [ - "HEADER", - "ENDSEC", - "DATA" - ] - }; - const STEP21_START = { - className: 'meta', - begin: 'ISO-10303-21;', - relevance: 10 - }; - const STEP21_CLOSE = { - className: 'meta', - begin: 'END-ISO-10303-21;', - relevance: 10 - }; - - return { - name: 'STEP Part 21', - aliases: [ - 'p21', - 'step', - 'stp' - ], - case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized. - keywords: STEP21_KEYWORDS, - contains: [ - STEP21_START, - STEP21_CLOSE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - hljs.COMMENT('/\\*\\*!', '\\*/'), - hljs.C_NUMBER_MODE, - hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }), - hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }), - { - className: 'string', - begin: "'", - end: "'" - }, - { - className: 'symbol', - variants: [ - { - begin: '#', - end: '\\d+', - illegal: '\\W' - } - ] - } - ] - }; -} - -module.exports = step21; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/stylus.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/stylus.js ***! - \***************************************************************/ -(module) { - -const MODES = (hljs) => { - return { - IMPORTANT: { - scope: 'meta', - begin: '!important' - }, - BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE, - HEXCOLOR: { - scope: 'number', - begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/ - }, - FUNCTION_DISPATCH: { - className: "built_in", - begin: /[\w-]+(?=\()/ - }, - ATTRIBUTE_SELECTOR_MODE: { - scope: 'selector-attr', - begin: /\[/, - end: /\]/, - illegal: '$', - contains: [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE - ] - }, - CSS_NUMBER_MODE: { - scope: 'number', - begin: hljs.NUMBER_RE + '(' + - '%|em|ex|ch|rem' + - '|vw|vh|vmin|vmax' + - '|cm|mm|in|pt|pc|px' + - '|deg|grad|rad|turn' + - '|s|ms' + - '|Hz|kHz' + - '|dpi|dpcm|dppx' + - ')?', - relevance: 0 - }, - CSS_VARIABLE: { - className: "attr", - begin: /--[A-Za-z_][A-Za-z0-9_-]*/ - } - }; -}; - -const HTML_TAGS = [ - 'a', - 'abbr', - 'address', - 'article', - 'aside', - 'audio', - 'b', - 'blockquote', - 'body', - 'button', - 'canvas', - 'caption', - 'cite', - 'code', - 'dd', - 'del', - 'details', - 'dfn', - 'div', - 'dl', - 'dt', - 'em', - 'fieldset', - 'figcaption', - 'figure', - 'footer', - 'form', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'header', - 'hgroup', - 'html', - 'i', - 'iframe', - 'img', - 'input', - 'ins', - 'kbd', - 'label', - 'legend', - 'li', - 'main', - 'mark', - 'menu', - 'nav', - 'object', - 'ol', - 'optgroup', - 'option', - 'p', - 'picture', - 'q', - 'quote', - 'samp', - 'section', - 'select', - 'source', - 'span', - 'strong', - 'summary', - 'sup', - 'table', - 'tbody', - 'td', - 'textarea', - 'tfoot', - 'th', - 'thead', - 'time', - 'tr', - 'ul', - 'var', - 'video' -]; - -const SVG_TAGS = [ - 'defs', - 'g', - 'marker', - 'mask', - 'pattern', - 'svg', - 'switch', - 'symbol', - 'feBlend', - 'feColorMatrix', - 'feComponentTransfer', - 'feComposite', - 'feConvolveMatrix', - 'feDiffuseLighting', - 'feDisplacementMap', - 'feFlood', - 'feGaussianBlur', - 'feImage', - 'feMerge', - 'feMorphology', - 'feOffset', - 'feSpecularLighting', - 'feTile', - 'feTurbulence', - 'linearGradient', - 'radialGradient', - 'stop', - 'circle', - 'ellipse', - 'image', - 'line', - 'path', - 'polygon', - 'polyline', - 'rect', - 'text', - 'use', - 'textPath', - 'tspan', - 'foreignObject', - 'clipPath' -]; - -const TAGS = [ - ...HTML_TAGS, - ...SVG_TAGS, -]; - -// Sorting, then reversing makes sure longer attributes/elements like -// `font-weight` are matched fully instead of getting false positives on say `font` - -const MEDIA_FEATURES = [ - 'any-hover', - 'any-pointer', - 'aspect-ratio', - 'color', - 'color-gamut', - 'color-index', - 'device-aspect-ratio', - 'device-height', - 'device-width', - 'display-mode', - 'forced-colors', - 'grid', - 'height', - 'hover', - 'inverted-colors', - 'monochrome', - 'orientation', - 'overflow-block', - 'overflow-inline', - 'pointer', - 'prefers-color-scheme', - 'prefers-contrast', - 'prefers-reduced-motion', - 'prefers-reduced-transparency', - 'resolution', - 'scan', - 'scripting', - 'update', - 'width', - // TODO: find a better solution? - 'min-width', - 'max-width', - 'min-height', - 'max-height' -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes -const PSEUDO_CLASSES = [ - 'active', - 'any-link', - 'blank', - 'checked', - 'current', - 'default', - 'defined', - 'dir', // dir() - 'disabled', - 'drop', - 'empty', - 'enabled', - 'first', - 'first-child', - 'first-of-type', - 'fullscreen', - 'future', - 'focus', - 'focus-visible', - 'focus-within', - 'has', // has() - 'host', // host or host() - 'host-context', // host-context() - 'hover', - 'indeterminate', - 'in-range', - 'invalid', - 'is', // is() - 'lang', // lang() - 'last-child', - 'last-of-type', - 'left', - 'link', - 'local-link', - 'not', // not() - 'nth-child', // nth-child() - 'nth-col', // nth-col() - 'nth-last-child', // nth-last-child() - 'nth-last-col', // nth-last-col() - 'nth-last-of-type', //nth-last-of-type() - 'nth-of-type', //nth-of-type() - 'only-child', - 'only-of-type', - 'optional', - 'out-of-range', - 'past', - 'placeholder-shown', - 'read-only', - 'read-write', - 'required', - 'right', - 'root', - 'scope', - 'target', - 'target-within', - 'user-invalid', - 'valid', - 'visited', - 'where' // where() -].sort().reverse(); - -// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements -const PSEUDO_ELEMENTS = [ - 'after', - 'backdrop', - 'before', - 'cue', - 'cue-region', - 'first-letter', - 'first-line', - 'grammar-error', - 'marker', - 'part', - 'placeholder', - 'selection', - 'slotted', - 'spelling-error' -].sort().reverse(); - -const ATTRIBUTES = [ - 'accent-color', - 'align-content', - 'align-items', - 'align-self', - 'alignment-baseline', - 'all', - 'anchor-name', - 'animation', - 'animation-composition', - 'animation-delay', - 'animation-direction', - 'animation-duration', - 'animation-fill-mode', - 'animation-iteration-count', - 'animation-name', - 'animation-play-state', - 'animation-range', - 'animation-range-end', - 'animation-range-start', - 'animation-timeline', - 'animation-timing-function', - 'appearance', - 'aspect-ratio', - 'backdrop-filter', - 'backface-visibility', - 'background', - 'background-attachment', - 'background-blend-mode', - 'background-clip', - 'background-color', - 'background-image', - 'background-origin', - 'background-position', - 'background-position-x', - 'background-position-y', - 'background-repeat', - 'background-size', - 'baseline-shift', - 'block-size', - 'border', - 'border-block', - 'border-block-color', - 'border-block-end', - 'border-block-end-color', - 'border-block-end-style', - 'border-block-end-width', - 'border-block-start', - 'border-block-start-color', - 'border-block-start-style', - 'border-block-start-width', - 'border-block-style', - 'border-block-width', - 'border-bottom', - 'border-bottom-color', - 'border-bottom-left-radius', - 'border-bottom-right-radius', - 'border-bottom-style', - 'border-bottom-width', - 'border-collapse', - 'border-color', - 'border-end-end-radius', - 'border-end-start-radius', - 'border-image', - 'border-image-outset', - 'border-image-repeat', - 'border-image-slice', - 'border-image-source', - 'border-image-width', - 'border-inline', - 'border-inline-color', - 'border-inline-end', - 'border-inline-end-color', - 'border-inline-end-style', - 'border-inline-end-width', - 'border-inline-start', - 'border-inline-start-color', - 'border-inline-start-style', - 'border-inline-start-width', - 'border-inline-style', - 'border-inline-width', - 'border-left', - 'border-left-color', - 'border-left-style', - 'border-left-width', - 'border-radius', - 'border-right', - 'border-right-color', - 'border-right-style', - 'border-right-width', - 'border-spacing', - 'border-start-end-radius', - 'border-start-start-radius', - 'border-style', - 'border-top', - 'border-top-color', - 'border-top-left-radius', - 'border-top-right-radius', - 'border-top-style', - 'border-top-width', - 'border-width', - 'bottom', - 'box-align', - 'box-decoration-break', - 'box-direction', - 'box-flex', - 'box-flex-group', - 'box-lines', - 'box-ordinal-group', - 'box-orient', - 'box-pack', - 'box-shadow', - 'box-sizing', - 'break-after', - 'break-before', - 'break-inside', - 'caption-side', - 'caret-color', - 'clear', - 'clip', - 'clip-path', - 'clip-rule', - 'color', - 'color-interpolation', - 'color-interpolation-filters', - 'color-profile', - 'color-rendering', - 'color-scheme', - 'column-count', - 'column-fill', - 'column-gap', - 'column-rule', - 'column-rule-color', - 'column-rule-style', - 'column-rule-width', - 'column-span', - 'column-width', - 'columns', - 'contain', - 'contain-intrinsic-block-size', - 'contain-intrinsic-height', - 'contain-intrinsic-inline-size', - 'contain-intrinsic-size', - 'contain-intrinsic-width', - 'container', - 'container-name', - 'container-type', - 'content', - 'content-visibility', - 'counter-increment', - 'counter-reset', - 'counter-set', - 'cue', - 'cue-after', - 'cue-before', - 'cursor', - 'cx', - 'cy', - 'direction', - 'display', - 'dominant-baseline', - 'empty-cells', - 'enable-background', - 'field-sizing', - 'fill', - 'fill-opacity', - 'fill-rule', - 'filter', - 'flex', - 'flex-basis', - 'flex-direction', - 'flex-flow', - 'flex-grow', - 'flex-shrink', - 'flex-wrap', - 'float', - 'flood-color', - 'flood-opacity', - 'flow', - 'font', - 'font-display', - 'font-family', - 'font-feature-settings', - 'font-kerning', - 'font-language-override', - 'font-optical-sizing', - 'font-palette', - 'font-size', - 'font-size-adjust', - 'font-smooth', - 'font-smoothing', - 'font-stretch', - 'font-style', - 'font-synthesis', - 'font-synthesis-position', - 'font-synthesis-small-caps', - 'font-synthesis-style', - 'font-synthesis-weight', - 'font-variant', - 'font-variant-alternates', - 'font-variant-caps', - 'font-variant-east-asian', - 'font-variant-emoji', - 'font-variant-ligatures', - 'font-variant-numeric', - 'font-variant-position', - 'font-variation-settings', - 'font-weight', - 'forced-color-adjust', - 'gap', - 'glyph-orientation-horizontal', - 'glyph-orientation-vertical', - 'grid', - 'grid-area', - 'grid-auto-columns', - 'grid-auto-flow', - 'grid-auto-rows', - 'grid-column', - 'grid-column-end', - 'grid-column-start', - 'grid-gap', - 'grid-row', - 'grid-row-end', - 'grid-row-start', - 'grid-template', - 'grid-template-areas', - 'grid-template-columns', - 'grid-template-rows', - 'hanging-punctuation', - 'height', - 'hyphenate-character', - 'hyphenate-limit-chars', - 'hyphens', - 'icon', - 'image-orientation', - 'image-rendering', - 'image-resolution', - 'ime-mode', - 'initial-letter', - 'initial-letter-align', - 'inline-size', - 'inset', - 'inset-area', - 'inset-block', - 'inset-block-end', - 'inset-block-start', - 'inset-inline', - 'inset-inline-end', - 'inset-inline-start', - 'isolation', - 'justify-content', - 'justify-items', - 'justify-self', - 'kerning', - 'left', - 'letter-spacing', - 'lighting-color', - 'line-break', - 'line-height', - 'line-height-step', - 'list-style', - 'list-style-image', - 'list-style-position', - 'list-style-type', - 'margin', - 'margin-block', - 'margin-block-end', - 'margin-block-start', - 'margin-bottom', - 'margin-inline', - 'margin-inline-end', - 'margin-inline-start', - 'margin-left', - 'margin-right', - 'margin-top', - 'margin-trim', - 'marker', - 'marker-end', - 'marker-mid', - 'marker-start', - 'marks', - 'mask', - 'mask-border', - 'mask-border-mode', - 'mask-border-outset', - 'mask-border-repeat', - 'mask-border-slice', - 'mask-border-source', - 'mask-border-width', - 'mask-clip', - 'mask-composite', - 'mask-image', - 'mask-mode', - 'mask-origin', - 'mask-position', - 'mask-repeat', - 'mask-size', - 'mask-type', - 'masonry-auto-flow', - 'math-depth', - 'math-shift', - 'math-style', - 'max-block-size', - 'max-height', - 'max-inline-size', - 'max-width', - 'min-block-size', - 'min-height', - 'min-inline-size', - 'min-width', - 'mix-blend-mode', - 'nav-down', - 'nav-index', - 'nav-left', - 'nav-right', - 'nav-up', - 'none', - 'normal', - 'object-fit', - 'object-position', - 'offset', - 'offset-anchor', - 'offset-distance', - 'offset-path', - 'offset-position', - 'offset-rotate', - 'opacity', - 'order', - 'orphans', - 'outline', - 'outline-color', - 'outline-offset', - 'outline-style', - 'outline-width', - 'overflow', - 'overflow-anchor', - 'overflow-block', - 'overflow-clip-margin', - 'overflow-inline', - 'overflow-wrap', - 'overflow-x', - 'overflow-y', - 'overlay', - 'overscroll-behavior', - 'overscroll-behavior-block', - 'overscroll-behavior-inline', - 'overscroll-behavior-x', - 'overscroll-behavior-y', - 'padding', - 'padding-block', - 'padding-block-end', - 'padding-block-start', - 'padding-bottom', - 'padding-inline', - 'padding-inline-end', - 'padding-inline-start', - 'padding-left', - 'padding-right', - 'padding-top', - 'page', - 'page-break-after', - 'page-break-before', - 'page-break-inside', - 'paint-order', - 'pause', - 'pause-after', - 'pause-before', - 'perspective', - 'perspective-origin', - 'place-content', - 'place-items', - 'place-self', - 'pointer-events', - 'position', - 'position-anchor', - 'position-visibility', - 'print-color-adjust', - 'quotes', - 'r', - 'resize', - 'rest', - 'rest-after', - 'rest-before', - 'right', - 'rotate', - 'row-gap', - 'ruby-align', - 'ruby-position', - 'scale', - 'scroll-behavior', - 'scroll-margin', - 'scroll-margin-block', - 'scroll-margin-block-end', - 'scroll-margin-block-start', - 'scroll-margin-bottom', - 'scroll-margin-inline', - 'scroll-margin-inline-end', - 'scroll-margin-inline-start', - 'scroll-margin-left', - 'scroll-margin-right', - 'scroll-margin-top', - 'scroll-padding', - 'scroll-padding-block', - 'scroll-padding-block-end', - 'scroll-padding-block-start', - 'scroll-padding-bottom', - 'scroll-padding-inline', - 'scroll-padding-inline-end', - 'scroll-padding-inline-start', - 'scroll-padding-left', - 'scroll-padding-right', - 'scroll-padding-top', - 'scroll-snap-align', - 'scroll-snap-stop', - 'scroll-snap-type', - 'scroll-timeline', - 'scroll-timeline-axis', - 'scroll-timeline-name', - 'scrollbar-color', - 'scrollbar-gutter', - 'scrollbar-width', - 'shape-image-threshold', - 'shape-margin', - 'shape-outside', - 'shape-rendering', - 'speak', - 'speak-as', - 'src', // @font-face - 'stop-color', - 'stop-opacity', - 'stroke', - 'stroke-dasharray', - 'stroke-dashoffset', - 'stroke-linecap', - 'stroke-linejoin', - 'stroke-miterlimit', - 'stroke-opacity', - 'stroke-width', - 'tab-size', - 'table-layout', - 'text-align', - 'text-align-all', - 'text-align-last', - 'text-anchor', - 'text-combine-upright', - 'text-decoration', - 'text-decoration-color', - 'text-decoration-line', - 'text-decoration-skip', - 'text-decoration-skip-ink', - 'text-decoration-style', - 'text-decoration-thickness', - 'text-emphasis', - 'text-emphasis-color', - 'text-emphasis-position', - 'text-emphasis-style', - 'text-indent', - 'text-justify', - 'text-orientation', - 'text-overflow', - 'text-rendering', - 'text-shadow', - 'text-size-adjust', - 'text-transform', - 'text-underline-offset', - 'text-underline-position', - 'text-wrap', - 'text-wrap-mode', - 'text-wrap-style', - 'timeline-scope', - 'top', - 'touch-action', - 'transform', - 'transform-box', - 'transform-origin', - 'transform-style', - 'transition', - 'transition-behavior', - 'transition-delay', - 'transition-duration', - 'transition-property', - 'transition-timing-function', - 'translate', - 'unicode-bidi', - 'user-modify', - 'user-select', - 'vector-effect', - 'vertical-align', - 'view-timeline', - 'view-timeline-axis', - 'view-timeline-inset', - 'view-timeline-name', - 'view-transition-name', - 'visibility', - 'voice-balance', - 'voice-duration', - 'voice-family', - 'voice-pitch', - 'voice-range', - 'voice-rate', - 'voice-stress', - 'voice-volume', - 'white-space', - 'white-space-collapse', - 'widows', - 'width', - 'will-change', - 'word-break', - 'word-spacing', - 'word-wrap', - 'writing-mode', - 'x', - 'y', - 'z-index', - 'zoom' -].sort().reverse(); - -/* -Language: Stylus -Author: Bryant Williams -Description: Stylus is an expressive, robust, feature-rich CSS language built for nodejs. -Website: https://github.com/stylus/stylus -Category: css, web -*/ - - -/** @type LanguageFn */ -function stylus(hljs) { - const modes = MODES(hljs); - - const AT_MODIFIERS = "and or not only"; - const VARIABLE = { - className: 'variable', - begin: '\\$' + hljs.IDENT_RE - }; - - const AT_KEYWORDS = [ - 'charset', - 'css', - 'debug', - 'extend', - 'font-face', - 'for', - 'import', - 'include', - 'keyframes', - 'media', - 'mixin', - 'page', - 'warn', - 'while' - ]; - - const LOOKAHEAD_TAG_END = '(?=[.\\s\\n[:,(])'; - - // illegals - const ILLEGAL = [ - '\\?', - '(\\bReturn\\b)', // monkey - '(\\bEnd\\b)', // monkey - '(\\bend\\b)', // vbscript - '(\\bdef\\b)', // gradle - ';', // a whole lot of languages - '#\\s', // markdown - '\\*\\s', // markdown - '===\\s', // markdown - '\\|', - '%' // prolog - ]; - - return { - name: 'Stylus', - aliases: [ 'styl' ], - case_insensitive: false, - keywords: 'if else for in', - illegal: '(' + ILLEGAL.join('|') + ')', - contains: [ - - // strings - hljs.QUOTE_STRING_MODE, - hljs.APOS_STRING_MODE, - - // comments - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - - // hex colors - modes.HEXCOLOR, - - // class tag - { - begin: '\\.[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, - className: 'selector-class' - }, - - // id tag - { - begin: '#[a-zA-Z][a-zA-Z0-9_-]*' + LOOKAHEAD_TAG_END, - className: 'selector-id' - }, - - // tags - { - begin: '\\b(' + TAGS.join('|') + ')' + LOOKAHEAD_TAG_END, - className: 'selector-tag' - }, - - // psuedo selectors - { - className: 'selector-pseudo', - begin: '&?:(' + PSEUDO_CLASSES.join('|') + ')' + LOOKAHEAD_TAG_END - }, - { - className: 'selector-pseudo', - begin: '&?:(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' + LOOKAHEAD_TAG_END - }, - - modes.ATTRIBUTE_SELECTOR_MODE, - - { - className: "keyword", - begin: /@media/, - starts: { - end: /[{;}]/, - keywords: { - $pattern: /[a-z-]+/, - keyword: AT_MODIFIERS, - attribute: MEDIA_FEATURES.join(" ") - }, - contains: [ modes.CSS_NUMBER_MODE ] - } - }, - - // @ keywords - { - className: 'keyword', - begin: '\@((-(o|moz|ms|webkit)-)?(' + AT_KEYWORDS.join('|') + '))\\b' - }, - - // variables - VARIABLE, - - // dimension - modes.CSS_NUMBER_MODE, - - // functions - // - only from beginning of line + whitespace - { - className: 'function', - begin: '^[a-zA-Z][a-zA-Z0-9_\-]*\\(.*\\)', - illegal: '[\\n]', - returnBegin: true, - contains: [ - { - className: 'title', - begin: '\\b[a-zA-Z][a-zA-Z0-9_\-]*' - }, - { - className: 'params', - begin: /\(/, - end: /\)/, - contains: [ - modes.HEXCOLOR, - VARIABLE, - hljs.APOS_STRING_MODE, - modes.CSS_NUMBER_MODE, - hljs.QUOTE_STRING_MODE - ] - } - ] - }, - - // css variables - modes.CSS_VARIABLE, - - // attributes - // - only from beginning of line + whitespace - // - must have whitespace after it - { - className: 'attribute', - begin: '\\b(' + ATTRIBUTES.join('|') + ')\\b', - starts: { - // value container - end: /;|$/, - contains: [ - modes.HEXCOLOR, - VARIABLE, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - modes.CSS_NUMBER_MODE, - hljs.C_BLOCK_COMMENT_MODE, - modes.IMPORTANT, - modes.FUNCTION_DISPATCH - ], - illegal: /\./, - relevance: 0 - } - }, - modes.FUNCTION_DISPATCH - ] - }; -} - -module.exports = stylus; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/subunit.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/subunit.js ***! - \****************************************************************/ -(module) { - -/* -Language: SubUnit -Author: Sergey Bronnikov -Website: https://pypi.org/project/python-subunit/ -Category: protocols -*/ - -function subunit(hljs) { - const DETAILS = { - className: 'string', - begin: '\\[\n(multipart)?', - end: '\\]\n' - }; - const TIME = { - className: 'string', - begin: '\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}\.\\d+Z' - }; - const PROGRESSVALUE = { - className: 'string', - begin: '(\\+|-)\\d+' - }; - const KEYWORDS = { - className: 'keyword', - relevance: 10, - variants: [ - { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?' }, - { begin: '^progress(:?)(\\s+)?(pop|push)?' }, - { begin: '^tags:' }, - { begin: '^time:' } - ] - }; - return { - name: 'SubUnit', - case_insensitive: true, - contains: [ - DETAILS, - TIME, - PROGRESSVALUE, - KEYWORDS - ] - }; -} - -module.exports = subunit; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/swift.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/swift.js ***! - \**************************************************************/ -(module) { - -/** - * @param {string} value - * @returns {RegExp} - * */ - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function source(re) { - if (!re) return null; - if (typeof re === "string") return re; - - return re.source; -} - -/** - * @param {RegExp | string } re - * @returns {string} - */ -function lookahead(re) { - return concat('(?=', re, ')'); -} - -/** - * @param {...(RegExp | string) } args - * @returns {string} - */ -function concat(...args) { - const joined = args.map((x) => source(x)).join(""); - return joined; -} - -/** - * @param { Array } args - * @returns {object} - */ -function stripOptionsFromArgs(args) { - const opts = args[args.length - 1]; - - if (typeof opts === 'object' && opts.constructor === Object) { - args.splice(args.length - 1, 1); - return opts; - } else { - return {}; - } -} - -/** @typedef { {capture?: boolean} } RegexEitherOptions */ - -/** - * Any of the passed expresssions may match - * - * Creates a huge this | this | that | that match - * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args - * @returns {string} - */ -function either(...args) { - /** @type { object & {capture?: boolean} } */ - const opts = stripOptionsFromArgs(args); - const joined = '(' - + (opts.capture ? "" : "?:") - + args.map((x) => source(x)).join("|") + ")"; - return joined; -} - -const keywordWrapper = keyword => concat( - /\b/, - keyword, - /\w$/.test(keyword) ? /\b/ : /\B/ -); - -// Keywords that require a leading dot. -const dotKeywords = [ - 'Protocol', // contextual - 'Type' // contextual -].map(keywordWrapper); - -// Keywords that may have a leading dot. -const optionalDotKeywords = [ - 'init', - 'self' -].map(keywordWrapper); - -// should register as keyword, not type -const keywordTypes = [ - 'Any', - 'Self' -]; - -// Regular keywords and literals. -const keywords = [ - // strings below will be fed into the regular `keywords` engine while regex - // will result in additional modes being created to scan for those keywords to - // avoid conflicts with other rules - 'actor', - 'any', // contextual - 'associatedtype', - 'async', - 'await', - /as\?/, // operator - /as!/, // operator - 'as', // operator - 'borrowing', // contextual - 'break', - 'case', - 'catch', - 'class', - 'consume', // contextual - 'consuming', // contextual - 'continue', - 'convenience', // contextual - 'copy', // contextual - 'default', - 'defer', - 'deinit', - 'didSet', // contextual - 'distributed', - 'do', - 'dynamic', // contextual - 'each', - 'else', - 'enum', - 'extension', - 'fallthrough', - /fileprivate\(set\)/, - 'fileprivate', - 'final', // contextual - 'for', - 'func', - 'get', // contextual - 'guard', - 'if', - 'import', - 'indirect', // contextual - 'infix', // contextual - /init\?/, - /init!/, - 'inout', - /internal\(set\)/, - 'internal', - 'in', - 'is', // operator - 'isolated', // contextual - 'nonisolated', // contextual - 'lazy', // contextual - 'let', - 'macro', - 'mutating', // contextual - 'nonmutating', // contextual - /open\(set\)/, // contextual - 'open', // contextual - 'operator', - 'optional', // contextual - 'override', // contextual - 'package', - 'postfix', // contextual - 'precedencegroup', - 'prefix', // contextual - /private\(set\)/, - 'private', - 'protocol', - /public\(set\)/, - 'public', - 'repeat', - 'required', // contextual - 'rethrows', - 'return', - 'set', // contextual - 'some', // contextual - 'static', - 'struct', - 'subscript', - 'super', - 'switch', - 'throws', - 'throw', - /try\?/, // operator - /try!/, // operator - 'try', // operator - 'typealias', - /unowned\(safe\)/, // contextual - /unowned\(unsafe\)/, // contextual - 'unowned', // contextual - 'var', - 'weak', // contextual - 'where', - 'while', - 'willSet' // contextual -]; - -// NOTE: Contextual keywords are reserved only in specific contexts. -// Ideally, these should be matched using modes to avoid false positives. - -// Literals. -const literals = [ - 'false', - 'nil', - 'true' -]; - -// Keywords used in precedence groups. -const precedencegroupKeywords = [ - 'assignment', - 'associativity', - 'higherThan', - 'left', - 'lowerThan', - 'none', - 'right' -]; - -// Keywords that start with a number sign (#). -// #(un)available is handled separately. -const numberSignKeywords = [ - '#colorLiteral', - '#column', - '#dsohandle', - '#else', - '#elseif', - '#endif', - '#error', - '#file', - '#fileID', - '#fileLiteral', - '#filePath', - '#function', - '#if', - '#imageLiteral', - '#keyPath', - '#line', - '#selector', - '#sourceLocation', - '#warning' -]; - -// Global functions in the Standard Library. -const builtIns = [ - 'abs', - 'all', - 'any', - 'assert', - 'assertionFailure', - 'debugPrint', - 'dump', - 'fatalError', - 'getVaList', - 'isKnownUniquelyReferenced', - 'max', - 'min', - 'numericCast', - 'pointwiseMax', - 'pointwiseMin', - 'precondition', - 'preconditionFailure', - 'print', - 'readLine', - 'repeatElement', - 'sequence', - 'stride', - 'swap', - 'swift_unboxFromSwiftValueWithType', - 'transcode', - 'type', - 'unsafeBitCast', - 'unsafeDowncast', - 'withExtendedLifetime', - 'withUnsafeMutablePointer', - 'withUnsafePointer', - 'withVaList', - 'withoutActuallyEscaping', - 'zip' -]; - -// Valid first characters for operators. -const operatorHead = either( - /[/=\-+!*%<>&|^~?]/, - /[\u00A1-\u00A7]/, - /[\u00A9\u00AB]/, - /[\u00AC\u00AE]/, - /[\u00B0\u00B1]/, - /[\u00B6\u00BB\u00BF\u00D7\u00F7]/, - /[\u2016-\u2017]/, - /[\u2020-\u2027]/, - /[\u2030-\u203E]/, - /[\u2041-\u2053]/, - /[\u2055-\u205E]/, - /[\u2190-\u23FF]/, - /[\u2500-\u2775]/, - /[\u2794-\u2BFF]/, - /[\u2E00-\u2E7F]/, - /[\u3001-\u3003]/, - /[\u3008-\u3020]/, - /[\u3030]/ -); - -// Valid characters for operators. -const operatorCharacter = either( - operatorHead, - /[\u0300-\u036F]/, - /[\u1DC0-\u1DFF]/, - /[\u20D0-\u20FF]/, - /[\uFE00-\uFE0F]/, - /[\uFE20-\uFE2F]/ - // TODO: The following characters are also allowed, but the regex isn't supported yet. - // /[\u{E0100}-\u{E01EF}]/u -); - -// Valid operator. -const operator = concat(operatorHead, operatorCharacter, '*'); - -// Valid first characters for identifiers. -const identifierHead = either( - /[a-zA-Z_]/, - /[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/, - /[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/, - /[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/, - /[\u1E00-\u1FFF]/, - /[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/, - /[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/, - /[\u2C00-\u2DFF\u2E80-\u2FFF]/, - /[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/, - /[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/, - /[\uFE47-\uFEFE\uFF00-\uFFFD]/ // Should be /[\uFE47-\uFFFD]/, but we have to exclude FEFF. - // The following characters are also allowed, but the regexes aren't supported yet. - // /[\u{10000}-\u{1FFFD}\u{20000-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}]/u, - // /[\u{50000}-\u{5FFFD}\u{60000-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}]/u, - // /[\u{90000}-\u{9FFFD}\u{A0000-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}]/u, - // /[\u{D0000}-\u{DFFFD}\u{E0000-\u{EFFFD}]/u -); - -// Valid characters for identifiers. -const identifierCharacter = either( - identifierHead, - /\d/, - /[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/ -); - -// Valid identifier. -const identifier = concat(identifierHead, identifierCharacter, '*'); - -// Valid type identifier. -const typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*'); - -// Built-in attributes, which are highlighted as keywords. -// @available is handled separately. -// https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes -const keywordAttributes = [ - 'attached', - 'autoclosure', - concat(/convention\(/, either('swift', 'block', 'c'), /\)/), - 'discardableResult', - 'dynamicCallable', - 'dynamicMemberLookup', - 'escaping', - 'freestanding', - 'frozen', - 'GKInspectable', - 'IBAction', - 'IBDesignable', - 'IBInspectable', - 'IBOutlet', - 'IBSegueAction', - 'inlinable', - 'main', - 'nonobjc', - 'NSApplicationMain', - 'NSCopying', - 'NSManaged', - concat(/objc\(/, identifier, /\)/), - 'objc', - 'objcMembers', - 'propertyWrapper', - 'requires_stored_property_inits', - 'resultBuilder', - 'Sendable', - 'testable', - 'UIApplicationMain', - 'unchecked', - 'unknown', - 'usableFromInline', - 'warn_unqualified_access' -]; - -// Contextual keywords used in @available and #(un)available. -const availabilityKeywords = [ - 'iOS', - 'iOSApplicationExtension', - 'macOS', - 'macOSApplicationExtension', - 'macCatalyst', - 'macCatalystApplicationExtension', - 'watchOS', - 'watchOSApplicationExtension', - 'tvOS', - 'tvOSApplicationExtension', - 'swift' -]; - -/* -Language: Swift -Description: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. -Author: Steven Van Impe -Contributors: Chris Eidhof , Nate Cook , Alexander Lichter , Richard Gibson -Website: https://swift.org -Category: common, system -*/ - - -/** @type LanguageFn */ -function swift(hljs) { - const WHITESPACE = { - match: /\s+/, - relevance: 0 - }; - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411 - const BLOCK_COMMENT = hljs.COMMENT( - '/\\*', - '\\*/', - { contains: [ 'self' ] } - ); - const COMMENTS = [ - hljs.C_LINE_COMMENT_MODE, - BLOCK_COMMENT - ]; - - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413 - // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html - const DOT_KEYWORD = { - match: [ - /\./, - either(...dotKeywords, ...optionalDotKeywords) - ], - className: { 2: "keyword" } - }; - const KEYWORD_GUARD = { - // Consume .keyword to prevent highlighting properties and methods as keywords. - match: concat(/\./, either(...keywords)), - relevance: 0 - }; - const PLAIN_KEYWORDS = keywords - .filter(kw => typeof kw === 'string') - .concat([ "_|0" ]); // seems common, so 0 relevance - const REGEX_KEYWORDS = keywords - .filter(kw => typeof kw !== 'string') // find regex - .concat(keywordTypes) - .map(keywordWrapper); - const KEYWORD = { variants: [ - { - className: 'keyword', - match: either(...REGEX_KEYWORDS, ...optionalDotKeywords) - } - ] }; - // find all the regular keywords - const KEYWORDS = { - $pattern: either( - /\b\w+/, // regular keywords - /#\w+/ // number keywords - ), - keyword: PLAIN_KEYWORDS - .concat(numberSignKeywords), - literal: literals - }; - const KEYWORD_MODES = [ - DOT_KEYWORD, - KEYWORD_GUARD, - KEYWORD - ]; - - // https://github.com/apple/swift/tree/main/stdlib/public/core - const BUILT_IN_GUARD = { - // Consume .built_in to prevent highlighting properties and methods. - match: concat(/\./, either(...builtIns)), - relevance: 0 - }; - const BUILT_IN = { - className: 'built_in', - match: concat(/\b/, either(...builtIns), /(?=\()/) - }; - const BUILT_INS = [ - BUILT_IN_GUARD, - BUILT_IN - ]; - - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418 - const OPERATOR_GUARD = { - // Prevent -> from being highlighting as an operator. - match: /->/, - relevance: 0 - }; - const OPERATOR = { - className: 'operator', - relevance: 0, - variants: [ - { match: operator }, - { - // dot-operator: only operators that start with a dot are allowed to use dots as - // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more - // characters that may also include dots. - match: `\\.(\\.|${operatorCharacter})+` } - ] - }; - const OPERATORS = [ - OPERATOR_GUARD, - OPERATOR - ]; - - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal - // TODO: Update for leading `-` after lookbehind is supported everywhere - const decimalDigits = '([0-9]_*)+'; - const hexDigits = '([0-9a-fA-F]_*)+'; - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - // decimal floating-point-literal (subsumes decimal-literal) - { match: `\\b(${decimalDigits})(\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\b` }, - // hexadecimal floating-point-literal (subsumes hexadecimal-literal) - { match: `\\b0x(${hexDigits})(\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\b` }, - // octal-literal - { match: /\b0o([0-7]_*)+\b/ }, - // binary-literal - { match: /\b0b([01]_*)+\b/ } - ] - }; - - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal - const ESCAPED_CHARACTER = (rawDelimiter = "") => ({ - className: 'subst', - variants: [ - { match: concat(/\\/, rawDelimiter, /[0\\tnr"']/) }, - { match: concat(/\\/, rawDelimiter, /u\{[0-9a-fA-F]{1,8}\}/) } - ] - }); - const ESCAPED_NEWLINE = (rawDelimiter = "") => ({ - className: 'subst', - match: concat(/\\/, rawDelimiter, /[\t ]*(?:[\r\n]|\r\n)/) - }); - const INTERPOLATION = (rawDelimiter = "") => ({ - className: 'subst', - label: "interpol", - begin: concat(/\\/, rawDelimiter, /\(/), - end: /\)/ - }); - const MULTILINE_STRING = (rawDelimiter = "") => ({ - begin: concat(rawDelimiter, /"""/), - end: concat(/"""/, rawDelimiter), - contains: [ - ESCAPED_CHARACTER(rawDelimiter), - ESCAPED_NEWLINE(rawDelimiter), - INTERPOLATION(rawDelimiter) - ] - }); - const SINGLE_LINE_STRING = (rawDelimiter = "") => ({ - begin: concat(rawDelimiter, /"/), - end: concat(/"/, rawDelimiter), - contains: [ - ESCAPED_CHARACTER(rawDelimiter), - INTERPOLATION(rawDelimiter) - ] - }); - const STRING = { - className: 'string', - variants: [ - MULTILINE_STRING(), - MULTILINE_STRING("#"), - MULTILINE_STRING("##"), - MULTILINE_STRING("###"), - SINGLE_LINE_STRING(), - SINGLE_LINE_STRING("#"), - SINGLE_LINE_STRING("##"), - SINGLE_LINE_STRING("###") - ] - }; - - const REGEXP_CONTENTS = [ - hljs.BACKSLASH_ESCAPE, - { - begin: /\[/, - end: /\]/, - relevance: 0, - contains: [ hljs.BACKSLASH_ESCAPE ] - } - ]; - - const BARE_REGEXP_LITERAL = { - begin: /\/[^\s](?=[^/\n]*\/)/, - end: /\//, - contains: REGEXP_CONTENTS - }; - - const EXTENDED_REGEXP_LITERAL = (rawDelimiter) => { - const begin = concat(rawDelimiter, /\//); - const end = concat(/\//, rawDelimiter); - return { - begin, - end, - contains: [ - ...REGEXP_CONTENTS, - { - scope: "comment", - begin: `#(?!.*${end})`, - end: /$/, - }, - ], - }; - }; - - // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Regular-Expression-Literals - const REGEXP = { - scope: "regexp", - variants: [ - EXTENDED_REGEXP_LITERAL('###'), - EXTENDED_REGEXP_LITERAL('##'), - EXTENDED_REGEXP_LITERAL('#'), - BARE_REGEXP_LITERAL - ] - }; - - // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412 - const QUOTED_IDENTIFIER = { match: concat(/`/, identifier, /`/) }; - const IMPLICIT_PARAMETER = { - className: 'variable', - match: /\$\d+/ - }; - const PROPERTY_WRAPPER_PROJECTION = { - className: 'variable', - match: `\\$${identifierCharacter}+` - }; - const IDENTIFIERS = [ - QUOTED_IDENTIFIER, - IMPLICIT_PARAMETER, - PROPERTY_WRAPPER_PROJECTION - ]; - - // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html - const AVAILABLE_ATTRIBUTE = { - match: /(@|#(un)?)available/, - scope: 'keyword', - starts: { contains: [ - { - begin: /\(/, - end: /\)/, - keywords: availabilityKeywords, - contains: [ - ...OPERATORS, - NUMBER, - STRING - ] - } - ] } - }; - - const KEYWORD_ATTRIBUTE = { - scope: 'keyword', - match: concat(/@/, either(...keywordAttributes), lookahead(either(/\(/, /\s+/))), - }; - - const USER_DEFINED_ATTRIBUTE = { - scope: 'meta', - match: concat(/@/, identifier) - }; - - const ATTRIBUTES = [ - AVAILABLE_ATTRIBUTE, - KEYWORD_ATTRIBUTE, - USER_DEFINED_ATTRIBUTE - ]; - - // https://docs.swift.org/swift-book/ReferenceManual/Types.html - const TYPE = { - match: lookahead(/\b[A-Z]/), - relevance: 0, - contains: [ - { // Common Apple frameworks, for relevance boost - className: 'type', - match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+') - }, - { // Type identifier - className: 'type', - match: typeIdentifier, - relevance: 0 - }, - { // Optional type - match: /[?!]+/, - relevance: 0 - }, - { // Variadic parameter - match: /\.\.\./, - relevance: 0 - }, - { // Protocol composition - match: concat(/\s+&\s+/, lookahead(typeIdentifier)), - relevance: 0 - } - ] - }; - const GENERIC_ARGUMENTS = { - begin: //, - keywords: KEYWORDS, - contains: [ - ...COMMENTS, - ...KEYWORD_MODES, - ...ATTRIBUTES, - OPERATOR_GUARD, - TYPE - ] - }; - TYPE.contains.push(GENERIC_ARGUMENTS); - - // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552 - // Prevents element names from being highlighted as keywords. - const TUPLE_ELEMENT_NAME = { - match: concat(identifier, /\s*:/), - keywords: "_|0", - relevance: 0 - }; - // Matches tuples as well as the parameter list of a function type. - const TUPLE = { - begin: /\(/, - end: /\)/, - relevance: 0, - keywords: KEYWORDS, - contains: [ - 'self', - TUPLE_ELEMENT_NAME, - ...COMMENTS, - REGEXP, - ...KEYWORD_MODES, - ...BUILT_INS, - ...OPERATORS, - NUMBER, - STRING, - ...IDENTIFIERS, - ...ATTRIBUTES, - TYPE - ] - }; - - const GENERIC_PARAMETERS = { - begin: //, - keywords: 'repeat each', - contains: [ - ...COMMENTS, - TYPE - ] - }; - const FUNCTION_PARAMETER_NAME = { - begin: either( - lookahead(concat(identifier, /\s*:/)), - lookahead(concat(identifier, /\s+/, identifier, /\s*:/)) - ), - end: /:/, - relevance: 0, - contains: [ - { - className: 'keyword', - match: /\b_\b/ - }, - { - className: 'params', - match: identifier - } - ] - }; - const FUNCTION_PARAMETERS = { - begin: /\(/, - end: /\)/, - keywords: KEYWORDS, - contains: [ - FUNCTION_PARAMETER_NAME, - ...COMMENTS, - ...KEYWORD_MODES, - ...OPERATORS, - NUMBER, - STRING, - ...ATTRIBUTES, - TYPE, - TUPLE - ], - endsParent: true, - illegal: /["']/ - }; - // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362 - // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/declarations/#Macro-Declaration - const FUNCTION_OR_MACRO = { - match: [ - /(func|macro)/, - /\s+/, - either(QUOTED_IDENTIFIER.match, identifier, operator) - ], - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - GENERIC_PARAMETERS, - FUNCTION_PARAMETERS, - WHITESPACE - ], - illegal: [ - /\[/, - /%/ - ] - }; - - // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375 - // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379 - const INIT_SUBSCRIPT = { - match: [ - /\b(?:subscript|init[?!]?)/, - /\s*(?=[<(])/, - ], - className: { 1: "keyword" }, - contains: [ - GENERIC_PARAMETERS, - FUNCTION_PARAMETERS, - WHITESPACE - ], - illegal: /\[|%/ - }; - // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380 - const OPERATOR_DECLARATION = { - match: [ - /operator/, - /\s+/, - operator - ], - className: { - 1: "keyword", - 3: "title" - } - }; - - // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550 - const PRECEDENCEGROUP = { - begin: [ - /precedencegroup/, - /\s+/, - typeIdentifier - ], - className: { - 1: "keyword", - 3: "title" - }, - contains: [ TYPE ], - keywords: [ - ...precedencegroupKeywords, - ...literals - ], - end: /}/ - }; - - const CLASS_FUNC_DECLARATION = { - match: [ - /class\b/, - /\s+/, - /func\b/, - /\s+/, - /\b[A-Za-z_][A-Za-z0-9_]*\b/ - ], - scope: { - 1: "keyword", - 3: "keyword", - 5: "title.function" - } - }; - - const CLASS_VAR_DECLARATION = { - match: [ - /class\b/, - /\s+/, - /var\b/, - ], - scope: { - 1: "keyword", - 3: "keyword" - } - }; - - const TYPE_DECLARATION = { - begin: [ - /(struct|protocol|class|extension|enum|actor)/, - /\s+/, - identifier, - /\s*/, - ], - beginScope: { - 1: "keyword", - 3: "title.class" - }, - keywords: KEYWORDS, - contains: [ - GENERIC_PARAMETERS, - ...KEYWORD_MODES, - { - begin: /:/, - end: /\{/, - keywords: KEYWORDS, - contains: [ - { - scope: "title.class.inherited", - match: typeIdentifier, - }, - ...KEYWORD_MODES, - ], - relevance: 0, - }, - ] - }; - - // Add supported submodes to string interpolation. - for (const variant of STRING.variants) { - const interpolation = variant.contains.find(mode => mode.label === "interpol"); - // TODO: Interpolation can contain any expression, so there's room for improvement here. - interpolation.keywords = KEYWORDS; - const submodes = [ - ...KEYWORD_MODES, - ...BUILT_INS, - ...OPERATORS, - NUMBER, - STRING, - ...IDENTIFIERS - ]; - interpolation.contains = [ - ...submodes, - { - begin: /\(/, - end: /\)/, - contains: [ - 'self', - ...submodes - ] - } - ]; - } - - return { - name: 'Swift', - keywords: KEYWORDS, - contains: [ - ...COMMENTS, - FUNCTION_OR_MACRO, - INIT_SUBSCRIPT, - CLASS_FUNC_DECLARATION, - CLASS_VAR_DECLARATION, - TYPE_DECLARATION, - OPERATOR_DECLARATION, - PRECEDENCEGROUP, - { - beginKeywords: 'import', - end: /$/, - contains: [ ...COMMENTS ], - relevance: 0 - }, - REGEXP, - ...KEYWORD_MODES, - ...BUILT_INS, - ...OPERATORS, - NUMBER, - STRING, - ...IDENTIFIERS, - ...ATTRIBUTES, - TYPE, - TUPLE - ] - }; -} - -module.exports = swift; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/taggerscript.js" -/*!*********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/taggerscript.js ***! - \*********************************************************************/ -(module) { - -/* -Language: Tagger Script -Author: Philipp Wolfer -Description: Syntax Highlighting for the Tagger Script as used by MusicBrainz Picard. -Website: https://picard.musicbrainz.org -Category: scripting - */ -function taggerscript(hljs) { - const NOOP = { - className: 'comment', - begin: /\$noop\(/, - end: /\)/, - contains: [ - { begin: /\\[()]/ }, - { - begin: /\(/, - end: /\)/, - contains: [ - { begin: /\\[()]/ }, - 'self' - ] - } - ], - relevance: 10 - }; - - const FUNCTION = { - className: 'keyword', - begin: /\$[_a-zA-Z0-9]+(?=\()/ - }; - - const VARIABLE = { - className: 'variable', - begin: /%[_a-zA-Z0-9:]+%/ - }; - - const ESCAPE_SEQUENCE_UNICODE = { - className: 'symbol', - begin: /\\u[a-fA-F0-9]{4}/ - }; - - const ESCAPE_SEQUENCE = { - className: 'symbol', - begin: /\\[\\nt$%,()]/ - }; - - return { - name: 'Tagger Script', - contains: [ - NOOP, - FUNCTION, - VARIABLE, - ESCAPE_SEQUENCE, - ESCAPE_SEQUENCE_UNICODE - ] - }; -} - -module.exports = taggerscript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/tap.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/tap.js ***! - \************************************************************/ -(module) { - -/* -Language: Test Anything Protocol -Description: TAP, the Test Anything Protocol, is a simple text-based interface between testing modules in a test harness. -Requires: yaml.js -Author: Sergey Bronnikov -Website: https://testanything.org -*/ - -function tap(hljs) { - return { - name: 'Test Anything Protocol', - case_insensitive: true, - contains: [ - hljs.HASH_COMMENT_MODE, - // version of format and total amount of testcases - { - className: 'meta', - variants: [ - { begin: '^TAP version (\\d+)$' }, - { begin: '^1\\.\\.(\\d+)$' } - ] - }, - // YAML block - { - begin: /---$/, - end: '\\.\\.\\.$', - subLanguage: 'yaml', - relevance: 0 - }, - // testcase number - { - className: 'number', - begin: ' (\\d+) ' - }, - // testcase status and description - { - className: 'symbol', - variants: [ - { begin: '^ok' }, - { begin: '^not ok' } - ] - } - ] - }; -} - -module.exports = tap; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/tcl.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/tcl.js ***! - \************************************************************/ -(module) { - -/* -Language: Tcl -Description: Tcl is a very simple programming language. -Author: Radek Liska -Website: https://www.tcl.tk/about/language.html -Category: scripting -*/ - -function tcl(hljs) { - const regex = hljs.regex; - const TCL_IDENT = /[a-zA-Z_][a-zA-Z0-9_]*/; - - const NUMBER = { - className: 'number', - variants: [ - hljs.BINARY_NUMBER_MODE, - hljs.C_NUMBER_MODE - ] - }; - - const KEYWORDS = [ - "after", - "append", - "apply", - "array", - "auto_execok", - "auto_import", - "auto_load", - "auto_mkindex", - "auto_mkindex_old", - "auto_qualify", - "auto_reset", - "bgerror", - "binary", - "break", - "catch", - "cd", - "chan", - "clock", - "close", - "concat", - "continue", - "dde", - "dict", - "encoding", - "eof", - "error", - "eval", - "exec", - "exit", - "expr", - "fblocked", - "fconfigure", - "fcopy", - "file", - "fileevent", - "filename", - "flush", - "for", - "foreach", - "format", - "gets", - "glob", - "global", - "history", - "http", - "if", - "incr", - "info", - "interp", - "join", - "lappend|10", - "lassign|10", - "lindex|10", - "linsert|10", - "list", - "llength|10", - "load", - "lrange|10", - "lrepeat|10", - "lreplace|10", - "lreverse|10", - "lsearch|10", - "lset|10", - "lsort|10", - "mathfunc", - "mathop", - "memory", - "msgcat", - "namespace", - "open", - "package", - "parray", - "pid", - "pkg::create", - "pkg_mkIndex", - "platform", - "platform::shell", - "proc", - "puts", - "pwd", - "read", - "refchan", - "regexp", - "registry", - "regsub|10", - "rename", - "return", - "safe", - "scan", - "seek", - "set", - "socket", - "source", - "split", - "string", - "subst", - "switch", - "tcl_endOfWord", - "tcl_findLibrary", - "tcl_startOfNextWord", - "tcl_startOfPreviousWord", - "tcl_wordBreakAfter", - "tcl_wordBreakBefore", - "tcltest", - "tclvars", - "tell", - "time", - "tm", - "trace", - "unknown", - "unload", - "unset", - "update", - "uplevel", - "upvar", - "variable", - "vwait", - "while" - ]; - - return { - name: 'Tcl', - aliases: [ 'tk' ], - keywords: KEYWORDS, - contains: [ - hljs.COMMENT(';[ \\t]*#', '$'), - hljs.COMMENT('^[ \\t]*#', '$'), - { - beginKeywords: 'proc', - end: '[\\{]', - excludeEnd: true, - contains: [ - { - className: 'title', - begin: '[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*', - end: '[ \\t\\n\\r]', - endsWithParent: true, - excludeEnd: true - } - ] - }, - { - className: "variable", - variants: [ - { begin: regex.concat( - /\$/, - regex.optional(/::/), - TCL_IDENT, - '(::', - TCL_IDENT, - ')*' - ) }, - { - begin: '\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*', - end: '\\}', - contains: [ NUMBER ] - } - ] - }, - { - className: 'string', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }) ] - }, - NUMBER - ] - }; -} - -module.exports = tcl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/thrift.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/thrift.js ***! - \***************************************************************/ -(module) { - -/* -Language: Thrift -Author: Oleg Efimov -Description: Thrift message definition format -Website: https://thrift.apache.org -Category: protocols -*/ - -function thrift(hljs) { - const TYPES = [ - "bool", - "byte", - "i16", - "i32", - "i64", - "double", - "string", - "binary" - ]; - const KEYWORDS = [ - "namespace", - "const", - "typedef", - "struct", - "enum", - "service", - "exception", - "void", - "oneway", - "set", - "list", - "map", - "required", - "optional" - ]; - return { - name: 'Thrift', - keywords: { - keyword: KEYWORDS, - type: TYPES, - literal: 'true false' - }, - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.NUMBER_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'class', - beginKeywords: 'struct enum service exception', - end: /\{/, - illegal: /\n/, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { - // hack: eating everything after the first title - starts: { - endsWithParent: true, - excludeEnd: true - } }) - ] - }, - { - begin: '\\b(set|list|map)\\s*<', - keywords: { type: [ - ...TYPES, - "set", - "list", - "map" - ] }, - end: '>', - contains: [ 'self' ] - } - ] - }; -} - -module.exports = thrift; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/tp.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/tp.js ***! - \***********************************************************/ -(module) { - -/* -Language: TP -Author: Jay Strybis -Description: FANUC TP programming language (TPP). -Category: hardware -*/ - -function tp(hljs) { - const TPID = { - className: 'number', - begin: '[1-9][0-9]*', /* no leading zeros */ - relevance: 0 - }; - const TPLABEL = { - className: 'symbol', - begin: ':[^\\]]+' - }; - const TPDATA = { - className: 'built_in', - begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|' - + 'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[', - end: '\\]', - contains: [ - 'self', - TPID, - TPLABEL - ] - }; - const TPIO = { - className: 'built_in', - begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[', - end: '\\]', - contains: [ - 'self', - TPID, - hljs.QUOTE_STRING_MODE, /* for pos section at bottom */ - TPLABEL - ] - }; - - const KEYWORDS = [ - "ABORT", - "ACC", - "ADJUST", - "AND", - "AP_LD", - "BREAK", - "CALL", - "CNT", - "COL", - "CONDITION", - "CONFIG", - "DA", - "DB", - "DIV", - "DETECT", - "ELSE", - "END", - "ENDFOR", - "ERR_NUM", - "ERROR_PROG", - "FINE", - "FOR", - "GP", - "GUARD", - "INC", - "IF", - "JMP", - "LINEAR_MAX_SPEED", - "LOCK", - "MOD", - "MONITOR", - "OFFSET", - "Offset", - "OR", - "OVERRIDE", - "PAUSE", - "PREG", - "PTH", - "RT_LD", - "RUN", - "SELECT", - "SKIP", - "Skip", - "TA", - "TB", - "TO", - "TOOL_OFFSET", - "Tool_Offset", - "UF", - "UT", - "UFRAME_NUM", - "UTOOL_NUM", - "UNLOCK", - "WAIT", - "X", - "Y", - "Z", - "W", - "P", - "R", - "STRLEN", - "SUBSTR", - "FINDSTR", - "VOFFSET", - "PROG", - "ATTR", - "MN", - "POS" - ]; - const LITERALS = [ - "ON", - "OFF", - "max_speed", - "LPOS", - "JPOS", - "ENABLE", - "DISABLE", - "START", - "STOP", - "RESET" - ]; - - return { - name: 'TP', - keywords: { - keyword: KEYWORDS, - literal: LITERALS - }, - contains: [ - TPDATA, - TPIO, - { - className: 'keyword', - begin: '/(PROG|ATTR|MN|POS|END)\\b' - }, - { - /* this is for cases like ,CALL */ - className: 'keyword', - begin: '(CALL|RUN|POINT_LOGIC|LBL)\\b' - }, - { - /* this is for cases like CNT100 where the default lexemes do not - * separate the keyword and the number */ - className: 'keyword', - begin: '\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)' - }, - { - /* to catch numbers that do not have a word boundary on the left */ - className: 'number', - begin: '\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b', - relevance: 0 - }, - hljs.COMMENT('//', '[;$]'), - hljs.COMMENT('!', '[;$]'), - hljs.COMMENT('--eg:', '$'), - hljs.QUOTE_STRING_MODE, - { - className: 'string', - begin: '\'', - end: '\'' - }, - hljs.C_NUMBER_MODE, - { - className: 'variable', - begin: '\\$[A-Za-z0-9_]+' - } - ] - }; -} - -module.exports = tp; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/twig.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/twig.js ***! - \*************************************************************/ -(module) { - -/* -Language: Twig -Requires: xml.js -Author: Luke Holder -Description: Twig is a templating language for PHP -Website: https://twig.symfony.com -Category: template -*/ - -function twig(hljs) { - const regex = hljs.regex; - const FUNCTION_NAMES = [ - "absolute_url", - "asset|0", - "asset_version", - "attribute", - "block", - "constant", - "controller|0", - "country_timezones", - "csrf_token", - "cycle", - "date", - "dump", - "expression", - "form|0", - "form_end", - "form_errors", - "form_help", - "form_label", - "form_rest", - "form_row", - "form_start", - "form_widget", - "html_classes", - "include", - "is_granted", - "logout_path", - "logout_url", - "max", - "min", - "parent", - "path|0", - "random", - "range", - "relative_path", - "render", - "render_esi", - "source", - "template_from_string", - "url|0" - ]; - - const FILTERS = [ - "abs", - "abbr_class", - "abbr_method", - "batch", - "capitalize", - "column", - "convert_encoding", - "country_name", - "currency_name", - "currency_symbol", - "data_uri", - "date", - "date_modify", - "default", - "escape", - "file_excerpt", - "file_link", - "file_relative", - "filter", - "first", - "format", - "format_args", - "format_args_as_text", - "format_currency", - "format_date", - "format_datetime", - "format_file", - "format_file_from_text", - "format_number", - "format_time", - "html_to_markdown", - "humanize", - "inky_to_html", - "inline_css", - "join", - "json_encode", - "keys", - "language_name", - "last", - "length", - "locale_name", - "lower", - "map", - "markdown", - "markdown_to_html", - "merge", - "nl2br", - "number_format", - "raw", - "reduce", - "replace", - "reverse", - "round", - "slice", - "slug", - "sort", - "spaceless", - "split", - "striptags", - "timezone_name", - "title", - "trans", - "transchoice", - "trim", - "u|0", - "upper", - "url_encode", - "yaml_dump", - "yaml_encode" - ]; - - let TAG_NAMES = [ - "apply", - "autoescape", - "block", - "cache", - "deprecated", - "do", - "embed", - "extends", - "filter", - "flush", - "for", - "form_theme", - "from", - "if", - "import", - "include", - "macro", - "sandbox", - "set", - "stopwatch", - "trans", - "trans_default_domain", - "transchoice", - "use", - "verbatim", - "with" - ]; - - TAG_NAMES = TAG_NAMES.concat(TAG_NAMES.map(t => `end${t}`)); - - const STRING = { - scope: 'string', - variants: [ - { - begin: /'/, - end: /'/ - }, - { - begin: /"/, - end: /"/ - }, - ] - }; - - const NUMBER = { - scope: "number", - match: /\d+/ - }; - - const PARAMS = { - begin: /\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - contains: [ - STRING, - NUMBER - ] - }; - - - const FUNCTIONS = { - beginKeywords: FUNCTION_NAMES.join(" "), - keywords: { name: FUNCTION_NAMES }, - relevance: 0, - contains: [ PARAMS ] - }; - - const FILTER = { - match: /\|(?=[A-Za-z_]+:?)/, - beginScope: "punctuation", - relevance: 0, - contains: [ - { - match: /[A-Za-z_]+:?/, - keywords: FILTERS - }, - ] - }; - - const tagNamed = (tagnames, { relevance }) => { - return { - beginScope: { - 1: 'template-tag', - 3: 'name' - }, - relevance: relevance || 2, - endScope: 'template-tag', - begin: [ - /\{%/, - /\s*/, - regex.either(...tagnames) - ], - end: /%\}/, - keywords: "in", - contains: [ - FILTER, - FUNCTIONS, - STRING, - NUMBER - ] - }; - }; - - const CUSTOM_TAG_RE = /[a-z_]+/; - const TAG = tagNamed(TAG_NAMES, { relevance: 2 }); - const CUSTOM_TAG = tagNamed([ CUSTOM_TAG_RE ], { relevance: 1 }); - - return { - name: 'Twig', - aliases: [ 'craftcms' ], - case_insensitive: true, - subLanguage: 'xml', - contains: [ - hljs.COMMENT(/\{#/, /#\}/), - TAG, - CUSTOM_TAG, - { - className: 'template-variable', - begin: /\{\{/, - end: /\}\}/, - contains: [ - 'self', - FILTER, - FUNCTIONS, - STRING, - NUMBER - ] - } - ] - }; -} - -module.exports = twig; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/typescript.js" -/*!*******************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/typescript.js ***! - \*******************************************************************/ -(module) { - -const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*'; -const KEYWORDS = [ - "as", // for exports - "in", - "of", - "if", - "for", - "while", - "finally", - "var", - "new", - "function", - "do", - "return", - "void", - "else", - "break", - "catch", - "instanceof", - "with", - "throw", - "case", - "default", - "try", - "switch", - "continue", - "typeof", - "delete", - "let", - "yield", - "const", - "class", - // JS handles these with a special rule - // "get", - // "set", - "debugger", - "async", - "await", - "static", - "import", - "from", - "export", - "extends", - // It's reached stage 3, which is "recommended for implementation": - "using" -]; -const LITERALS = [ - "true", - "false", - "null", - "undefined", - "NaN", - "Infinity" -]; - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects -const TYPES = [ - // Fundamental objects - "Object", - "Function", - "Boolean", - "Symbol", - // numbers and dates - "Math", - "Date", - "Number", - "BigInt", - // text - "String", - "RegExp", - // Indexed collections - "Array", - "Float32Array", - "Float64Array", - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Int32Array", - "Uint16Array", - "Uint32Array", - "BigInt64Array", - "BigUint64Array", - // Keyed collections - "Set", - "Map", - "WeakSet", - "WeakMap", - // Structured data - "ArrayBuffer", - "SharedArrayBuffer", - "Atomics", - "DataView", - "JSON", - // Control abstraction objects - "Promise", - "Generator", - "GeneratorFunction", - "AsyncFunction", - // Reflection - "Reflect", - "Proxy", - // Internationalization - "Intl", - // WebAssembly - "WebAssembly" -]; - -const ERROR_TYPES = [ - "Error", - "EvalError", - "InternalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError" -]; - -const BUILT_IN_GLOBALS = [ - "setInterval", - "setTimeout", - "clearInterval", - "clearTimeout", - - "require", - "exports", - - "eval", - "isFinite", - "isNaN", - "parseFloat", - "parseInt", - "decodeURI", - "decodeURIComponent", - "encodeURI", - "encodeURIComponent", - "escape", - "unescape" -]; - -const BUILT_IN_VARIABLES = [ - "arguments", - "this", - "super", - "console", - "window", - "document", - "localStorage", - "sessionStorage", - "module", - "global" // Node.js -]; - -const BUILT_INS = [].concat( - BUILT_IN_GLOBALS, - TYPES, - ERROR_TYPES -); - -/* -Language: JavaScript -Description: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions. -Category: common, scripting, web -Website: https://developer.mozilla.org/en-US/docs/Web/JavaScript -*/ - - -/** @type LanguageFn */ -function javascript(hljs) { - const regex = hljs.regex; - /** - * Takes a string like " { - const tag = "', - end: '' - }; - // to avoid some special cases inside isTrulyOpeningTag - const XML_SELF_CLOSING = /<[A-Za-z0-9\\._:-]+\s*\/>/; - const XML_TAG = { - begin: /<[A-Za-z0-9\\._:-]+/, - end: /\/[A-Za-z0-9\\._:-]+>|\/>/, - /** - * @param {RegExpMatchArray} match - * @param {CallbackResponse} response - */ - isTrulyOpeningTag: (match, response) => { - const afterMatchIndex = match[0].length + match.index; - const nextChar = match.input[afterMatchIndex]; - if ( - // HTML should not include another raw `<` inside a tag - // nested type? - // `>`, etc. - nextChar === "<" || - // the , gives away that this is not HTML - // `` - nextChar === "," - ) { - response.ignoreMatch(); - return; - } - - // `` - // Quite possibly a tag, lets look for a matching closing tag... - if (nextChar === ">") { - // if we cannot find a matching closing tag, then we - // will ignore it - if (!hasClosingTag(match, { after: afterMatchIndex })) { - response.ignoreMatch(); - } - } - - // `` (self-closing) - // handled by simpleSelfClosing rule - - let m; - const afterMatch = match.input.substring(afterMatchIndex); - - // some more template typing stuff - // (key?: string) => Modify< - if ((m = afterMatch.match(/^\s*=/))) { - response.ignoreMatch(); - return; - } - - // `` - // technically this could be HTML, but it smells like a type - // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276 - if ((m = afterMatch.match(/^\s+extends\s+/))) { - if (m.index === 0) { - response.ignoreMatch(); - // eslint-disable-next-line no-useless-return - return; - } - } - } - }; - const KEYWORDS$1 = { - $pattern: IDENT_RE, - keyword: KEYWORDS, - literal: LITERALS, - built_in: BUILT_INS, - "variable.language": BUILT_IN_VARIABLES - }; - - // https://tc39.es/ecma262/#sec-literals-numeric-literals - const decimalDigits = '[0-9](_?[0-9])*'; - const frac = `\\.(${decimalDigits})`; - // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral - // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals - const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`; - const NUMBER = { - className: 'number', - variants: [ - // DecimalLiteral - { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))` + - `[eE][+-]?(${decimalDigits})\\b` }, - { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` }, - - // DecimalBigIntegerLiteral - { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` }, - - // NonDecimalIntegerLiteral - { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" }, - { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" }, - { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" }, - - // LegacyOctalIntegerLiteral (does not include underscore separators) - // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals - { begin: "\\b0[0-7]+n?\\b" }, - ], - relevance: 0 - }; - - const SUBST = { - className: 'subst', - begin: '\\$\\{', - end: '\\}', - keywords: KEYWORDS$1, - contains: [] // defined later - }; - const HTML_TEMPLATE = { - begin: '\.?html`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'xml' - } - }; - const CSS_TEMPLATE = { - begin: '\.?css`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'css' - } - }; - const GRAPHQL_TEMPLATE = { - begin: '\.?gql`', - end: '', - starts: { - end: '`', - returnEnd: false, - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ], - subLanguage: 'graphql' - } - }; - const TEMPLATE_STRING = { - className: 'string', - begin: '`', - end: '`', - contains: [ - hljs.BACKSLASH_ESCAPE, - SUBST - ] - }; - const JSDOC_COMMENT = hljs.COMMENT( - /\/\*\*(?!\/)/, - '\\*/', - { - relevance: 0, - contains: [ - { - begin: '(?=@[A-Za-z]+)', - relevance: 0, - contains: [ - { - className: 'doctag', - begin: '@[A-Za-z]+' - }, - { - className: 'type', - begin: '\\{', - end: '\\}', - excludeEnd: true, - excludeBegin: true, - relevance: 0 - }, - { - className: 'variable', - begin: IDENT_RE$1 + '(?=\\s*(-)|$)', - endsParent: true, - relevance: 0 - }, - // eat spaces (not newlines) so we can find - // types or variables - { - begin: /(?=[^\n])\s/, - relevance: 0 - } - ] - } - ] - } - ); - const COMMENT = { - className: "comment", - variants: [ - JSDOC_COMMENT, - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_LINE_COMMENT_MODE - ] - }; - const SUBST_INTERNALS = [ - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER, - // This is intentional: - // See https://github.com/highlightjs/highlight.js/issues/3288 - // hljs.REGEXP_MODE - ]; - SUBST.contains = SUBST_INTERNALS - .concat({ - // we need to pair up {} inside our subst to prevent - // it from ending too early by matching another } - begin: /\{/, - end: /\}/, - keywords: KEYWORDS$1, - contains: [ - "self" - ].concat(SUBST_INTERNALS) - }); - const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains); - const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([ - // eat recursive parens in sub expressions - { - begin: /(\s*)\(/, - end: /\)/, - keywords: KEYWORDS$1, - contains: ["self"].concat(SUBST_AND_COMMENTS) - } - ]); - const PARAMS = { - className: 'params', - // convert this to negative lookbehind in v12 - begin: /(\s*)\(/, // to match the parms with - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - }; - - // ES6 classes - const CLASS_OR_EXTENDS = { - variants: [ - // class Car extends vehicle - { - match: [ - /class/, - /\s+/, - IDENT_RE$1, - /\s+/, - /extends/, - /\s+/, - regex.concat(IDENT_RE$1, "(", regex.concat(/\./, IDENT_RE$1), ")*") - ], - scope: { - 1: "keyword", - 3: "title.class", - 5: "keyword", - 7: "title.class.inherited" - } - }, - // class Car - { - match: [ - /class/, - /\s+/, - IDENT_RE$1 - ], - scope: { - 1: "keyword", - 3: "title.class" - } - }, - - ] - }; - - const CLASS_REFERENCE = { - relevance: 0, - match: - regex.either( - // Hard coded exceptions - /\bJSON/, - // Float32Array, OutT - /\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/, - // CSSFactory, CSSFactoryT - /\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/, - // FPs, FPsT - /\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/, - // P - // single letters are not highlighted - // BLAH - // this will be flagged as a UPPER_CASE_CONSTANT instead - ), - className: "title.class", - keywords: { - _: [ - // se we still get relevance credit for JS library classes - ...TYPES, - ...ERROR_TYPES - ] - } - }; - - const USE_STRICT = { - label: "use_strict", - className: 'meta', - relevance: 10, - begin: /^\s*['"]use (strict|asm)['"]/ - }; - - const FUNCTION_DEFINITION = { - variants: [ - { - match: [ - /function/, - /\s+/, - IDENT_RE$1, - /(?=\s*\()/ - ] - }, - // anonymous function - { - match: [ - /function/, - /\s*(?=\()/ - ] - } - ], - className: { - 1: "keyword", - 3: "title.function" - }, - label: "func.def", - contains: [ PARAMS ], - illegal: /%/ - }; - - const UPPER_CASE_CONSTANT = { - relevance: 0, - match: /\b[A-Z][A-Z_0-9]+\b/, - className: "variable.constant" - }; - - function noneOf(list) { - return regex.concat("(?!", list.join("|"), ")"); - } - - const FUNCTION_CALL = { - match: regex.concat( - /\b/, - noneOf([ - ...BUILT_IN_GLOBALS, - "super", - "import" - ].map(x => `${x}\\s*\\(`)), - IDENT_RE$1, regex.lookahead(/\s*\(/)), - className: "title.function", - relevance: 0 - }; - - const PROPERTY_ACCESS = { - begin: regex.concat(/\./, regex.lookahead( - regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/) - )), - end: IDENT_RE$1, - excludeBegin: true, - keywords: "prototype", - className: "property", - relevance: 0 - }; - - const GETTER_OR_SETTER = { - match: [ - /get|set/, - /\s+/, - IDENT_RE$1, - /(?=\()/ - ], - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - { // eat to avoid empty params - begin: /\(\)/ - }, - PARAMS - ] - }; - - const FUNC_LEAD_IN_RE = '(\\(' + - '[^()]*(\\(' + - '[^()]*(\\(' + - '[^()]*' + - '\\)[^()]*)*' + - '\\)[^()]*)*' + - '\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\s*=>'; - - const FUNCTION_VARIABLE = { - match: [ - /const|var|let/, /\s+/, - IDENT_RE$1, /\s*/, - /=\s*/, - /(async\s*)?/, // async is optional - regex.lookahead(FUNC_LEAD_IN_RE) - ], - keywords: "async", - className: { - 1: "keyword", - 3: "title.function" - }, - contains: [ - PARAMS - ] - }; - - return { - name: 'JavaScript', - aliases: ['js', 'jsx', 'mjs', 'cjs'], - keywords: KEYWORDS$1, - // this will be extended by TypeScript - exports: { PARAMS_CONTAINS, CLASS_REFERENCE }, - illegal: /#(?![$_A-z])/, - contains: [ - hljs.SHEBANG({ - label: "shebang", - binary: "node", - relevance: 5 - }), - USE_STRICT, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - HTML_TEMPLATE, - CSS_TEMPLATE, - GRAPHQL_TEMPLATE, - TEMPLATE_STRING, - COMMENT, - // Skip numbers when they are part of a variable name - { match: /\$\d+/ }, - NUMBER, - CLASS_REFERENCE, - { - scope: 'attr', - match: IDENT_RE$1 + regex.lookahead(':'), - relevance: 0 - }, - FUNCTION_VARIABLE, - { // "value" container - begin: '(' + hljs.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*', - keywords: 'return throw case', - relevance: 0, - contains: [ - COMMENT, - hljs.REGEXP_MODE, - { - className: 'function', - // we have to count the parens to make sure we actually have the - // correct bounding ( ) before the =>. There could be any number of - // sub-expressions inside also surrounded by parens. - begin: FUNC_LEAD_IN_RE, - returnBegin: true, - end: '\\s*=>', - contains: [ - { - className: 'params', - variants: [ - { - begin: hljs.UNDERSCORE_IDENT_RE, - relevance: 0 - }, - { - className: null, - begin: /\(\s*\)/, - skip: true - }, - { - begin: /(\s*)\(/, - end: /\)/, - excludeBegin: true, - excludeEnd: true, - keywords: KEYWORDS$1, - contains: PARAMS_CONTAINS - } - ] - } - ] - }, - { // could be a comma delimited list of params to a function call - begin: /,/, - relevance: 0 - }, - { - match: /\s+/, - relevance: 0 - }, - { // JSX - variants: [ - { begin: FRAGMENT.begin, end: FRAGMENT.end }, - { match: XML_SELF_CLOSING }, - { - begin: XML_TAG.begin, - // we carefully check the opening tag to see if it truly - // is a tag and not a false positive - 'on:begin': XML_TAG.isTrulyOpeningTag, - end: XML_TAG.end - } - ], - subLanguage: 'xml', - contains: [ - { - begin: XML_TAG.begin, - end: XML_TAG.end, - skip: true, - contains: ['self'] - } - ] - } - ], - }, - FUNCTION_DEFINITION, - { - // prevent this from getting swallowed up by function - // since they appear "function like" - beginKeywords: "while if switch catch for" - }, - { - // we have to count the parens to make sure we actually have the correct - // bounding ( ). There could be any number of sub-expressions inside - // also surrounded by parens. - begin: '\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE + - '\\(' + // first parens - '[^()]*(\\(' + - '[^()]*(\\(' + - '[^()]*' + - '\\)[^()]*)*' + - '\\)[^()]*)*' + - '\\)\\s*\\{', // end parens - returnBegin:true, - label: "func.def", - contains: [ - PARAMS, - hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: "title.function" }) - ] - }, - // catch ... so it won't trigger the property rule below - { - match: /\.\.\./, - relevance: 0 - }, - PROPERTY_ACCESS, - // hack: prevents detection of keywords in some circumstances - // .keyword() - // $keyword = x - { - match: '\\$' + IDENT_RE$1, - relevance: 0 - }, - { - match: [ /\bconstructor(?=\s*\()/ ], - className: { 1: "title.function" }, - contains: [ PARAMS ] - }, - FUNCTION_CALL, - UPPER_CASE_CONSTANT, - CLASS_OR_EXTENDS, - GETTER_OR_SETTER, - { - match: /\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something` - } - ] - }; -} - -/* -Language: TypeScript -Author: Panu Horsmalahti -Contributors: Ike Ku -Description: TypeScript is a strict superset of JavaScript -Website: https://www.typescriptlang.org -Category: common, scripting -*/ - - -/** @type LanguageFn */ -function typescript(hljs) { - const regex = hljs.regex; - const tsLanguage = javascript(hljs); - - const IDENT_RE$1 = IDENT_RE; - const TYPES = [ - "any", - "void", - "number", - "boolean", - "string", - "object", - "never", - "symbol", - "bigint", - "unknown" - ]; - const NAMESPACE = { - begin: [ - /namespace/, - /\s+/, - hljs.IDENT_RE - ], - beginScope: { - 1: "keyword", - 3: "title.class" - } - }; - const INTERFACE = { - beginKeywords: 'interface', - end: /\{/, - excludeEnd: true, - keywords: { - keyword: 'interface extends', - built_in: TYPES - }, - contains: [ tsLanguage.exports.CLASS_REFERENCE ] - }; - const USE_STRICT = { - className: 'meta', - relevance: 10, - begin: /^\s*['"]use strict['"]/ - }; - const TS_SPECIFIC_KEYWORDS = [ - "type", - // "namespace", - "interface", - "public", - "private", - "protected", - "implements", - "declare", - "abstract", - "readonly", - "enum", - "override", - "satisfies" - ]; - /* - namespace is a TS keyword but it's fine to use it as a variable name too. - const message = 'foo'; - const namespace = 'bar'; - */ - const KEYWORDS$1 = { - $pattern: IDENT_RE, - keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS), - literal: LITERALS, - built_in: BUILT_INS.concat(TYPES), - "variable.language": BUILT_IN_VARIABLES - }; - - const DECORATOR = { - className: 'meta', - begin: '@' + IDENT_RE$1, - }; - - const swapMode = (mode, label, replacement) => { - const indx = mode.contains.findIndex(m => m.label === label); - if (indx === -1) { throw new Error("can not find mode to replace"); } - - mode.contains.splice(indx, 1, replacement); - }; - - - // this should update anywhere keywords is used since - // it will be the same actual JS object - Object.assign(tsLanguage.keywords, KEYWORDS$1); - - tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR); - - // highlight the function params - const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === "attr"); - - // take default attr rule and extend it to support optionals - const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({}, - ATTRIBUTE_HIGHLIGHT, - { match: regex.concat(IDENT_RE$1, regex.lookahead(/\s*\?:/)) } - ); - tsLanguage.exports.PARAMS_CONTAINS.push([ - tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types - ATTRIBUTE_HIGHLIGHT, // highlight the params key - OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting - ]); - - // Add the optional property assignment highlighting for objects or classes - tsLanguage.contains = tsLanguage.contains.concat([ - DECORATOR, - NAMESPACE, - INTERFACE, - OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting - ]); - - // TS gets a simpler shebang rule than JS - swapMode(tsLanguage, "shebang", hljs.SHEBANG()); - // JS use strict rule purposely excludes `asm` which makes no sense - swapMode(tsLanguage, "use_strict", USE_STRICT); - - const functionDeclaration = tsLanguage.contains.find(m => m.label === "func.def"); - functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript - - Object.assign(tsLanguage, { - name: 'TypeScript', - aliases: [ - 'ts', - 'tsx', - 'mts', - 'cts' - ] - }); - - return tsLanguage; -} - -module.exports = typescript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vala.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vala.js ***! - \*************************************************************/ -(module) { - -/* -Language: Vala -Author: Antono Vasiljev -Description: Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C. -Website: https://wiki.gnome.org/Projects/Vala -Category: system -*/ - -function vala(hljs) { - return { - name: 'Vala', - keywords: { - keyword: - // Value types - 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' - + 'uint16 uint32 uint64 float double bool struct enum string void ' - // Reference types - + 'weak unowned owned ' - // Modifiers - + 'async signal static abstract interface override virtual delegate ' - // Control Structures - + 'if while do for foreach else switch case break default return try catch ' - // Visibility - + 'public private protected internal ' - // Other - + 'using new this get set const stdout stdin stderr var', - built_in: - 'DBus GLib CCode Gee Object Gtk Posix', - literal: - 'false true null' - }, - contains: [ - { - className: 'class', - beginKeywords: 'class interface namespace', - end: /\{/, - excludeEnd: true, - illegal: '[^,:\\n\\s\\.]', - contains: [ hljs.UNDERSCORE_TITLE_MODE ] - }, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - { - className: 'string', - begin: '"""', - end: '"""', - relevance: 5 - }, - hljs.APOS_STRING_MODE, - hljs.QUOTE_STRING_MODE, - hljs.C_NUMBER_MODE, - { - className: 'meta', - begin: '^#', - end: '$', - } - ] - }; -} - -module.exports = vala; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vbnet.js" -/*!**************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vbnet.js ***! - \**************************************************************/ -(module) { - -/* -Language: Visual Basic .NET -Description: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework. -Authors: Poren Chiang , Jan Pilzer -Website: https://docs.microsoft.com/dotnet/visual-basic/getting-started -Category: common -*/ - -/** @type LanguageFn */ -function vbnet(hljs) { - const regex = hljs.regex; - /** - * Character Literal - * Either a single character ("a"C) or an escaped double quote (""""C). - */ - const CHARACTER = { - className: 'string', - begin: /"(""|[^/n])"C\b/ - }; - - const STRING = { - className: 'string', - begin: /"/, - end: /"/, - illegal: /\n/, - contains: [ - { - // double quote escape - begin: /""/ } - ] - }; - - /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */ - const MM_DD_YYYY = /\d{1,2}\/\d{1,2}\/\d{4}/; - const YYYY_MM_DD = /\d{4}-\d{1,2}-\d{1,2}/; - const TIME_12H = /(\d|1[012])(:\d+){0,2} *(AM|PM)/; - const TIME_24H = /\d{1,2}(:\d{1,2}){1,2}/; - const DATE = { - className: 'literal', - variants: [ - { - // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date) - begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / *#/) }, - { - // #H:mm[:ss]# (24h Time) - begin: regex.concat(/# */, TIME_24H, / *#/) }, - { - // #h[:mm[:ss]] A# (12h Time) - begin: regex.concat(/# */, TIME_12H, / *#/) }, - { - // date plus time - begin: regex.concat( - /# */, - regex.either(YYYY_MM_DD, MM_DD_YYYY), - / +/, - regex.either(TIME_12H, TIME_24H), - / *#/ - ) } - ] - }; - - const NUMBER = { - className: 'number', - relevance: 0, - variants: [ - { - // Float - begin: /\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/ }, - { - // Integer (base 10) - begin: /\b\d[\d_]*((U?[SIL])|[%&])?/ }, - { - // Integer (base 16) - begin: /&H[\dA-F_]+((U?[SIL])|[%&])?/ }, - { - // Integer (base 8) - begin: /&O[0-7_]+((U?[SIL])|[%&])?/ }, - { - // Integer (base 2) - begin: /&B[01_]+((U?[SIL])|[%&])?/ } - ] - }; - - const LABEL = { - className: 'label', - begin: /^\w+:/ - }; - - const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, { contains: [ - { - className: 'doctag', - begin: /<\/?/, - end: />/ - } - ] }); - - const COMMENT = hljs.COMMENT(null, /$/, { variants: [ - { begin: /'/ }, - { - // TODO: Use multi-class for leading spaces - begin: /([\t ]|^)REM(?=\s)/ } - ] }); - - const DIRECTIVES = { - className: 'meta', - // TODO: Use multi-class for indentation once available - begin: /[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/, - end: /$/, - keywords: { keyword: - 'const disable else elseif enable end externalsource if region then' }, - contains: [ COMMENT ] - }; - - return { - name: 'Visual Basic .NET', - aliases: [ 'vb' ], - case_insensitive: true, - classNameAliases: { label: 'symbol' }, - keywords: { - keyword: - 'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' /* a-b */ - + 'call case catch class compare const continue custom declare default delegate dim distinct do ' /* c-d */ - + 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' /* e-f */ - + 'get global goto group handles if implements imports in inherits interface into iterator ' /* g-i */ - + 'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' /* j-m */ - + 'namespace narrowing new next notinheritable notoverridable ' /* n */ - + 'of off on operator option optional order overloads overridable overrides ' /* o */ - + 'paramarray partial preserve private property protected public ' /* p */ - + 'raiseevent readonly redim removehandler resume return ' /* r */ - + 'select set shadows shared skip static step stop structure strict sub synclock ' /* s */ - + 'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */, - built_in: - // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators - 'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor ' - // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions - + 'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort', - type: - // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types - 'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort', - literal: 'true false nothing' - }, - illegal: - '//|\\{|\\}|endif|gosub|variant|wend|^\\$ ' /* reserved deprecated keywords */, - contains: [ - CHARACTER, - STRING, - DATE, - NUMBER, - LABEL, - DOC_COMMENT, - COMMENT, - DIRECTIVES - ] - }; -} - -module.exports = vbnet; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vbscript-html.js" -/*!**********************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vbscript-html.js ***! - \**********************************************************************/ -(module) { - -/* -Language: VBScript in HTML -Requires: xml.js, vbscript.js -Author: Ivan Sagalaev -Description: "Bridge" language defining fragments of VBScript in HTML within <% .. %> -Website: https://en.wikipedia.org/wiki/VBScript -Category: scripting -*/ - -function vbscriptHtml(hljs) { - return { - name: 'VBScript in HTML', - subLanguage: 'xml', - contains: [ - { - begin: '<%', - end: '%>', - subLanguage: 'vbscript' - } - ] - }; -} - -module.exports = vbscriptHtml; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vbscript.js" -/*!*****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vbscript.js ***! - \*****************************************************************/ -(module) { - -/* -Language: VBScript -Description: VBScript ("Microsoft Visual Basic Scripting Edition") is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. -Author: Nikita Ledyaev -Contributors: Michal Gabrukiewicz -Website: https://en.wikipedia.org/wiki/VBScript -Category: scripting -*/ - -/** @type LanguageFn */ -function vbscript(hljs) { - const regex = hljs.regex; - const BUILT_IN_FUNCTIONS = [ - "lcase", - "month", - "vartype", - "instrrev", - "ubound", - "setlocale", - "getobject", - "rgb", - "getref", - "string", - "weekdayname", - "rnd", - "dateadd", - "monthname", - "now", - "day", - "minute", - "isarray", - "cbool", - "round", - "formatcurrency", - "conversions", - "csng", - "timevalue", - "second", - "year", - "space", - "abs", - "clng", - "timeserial", - "fixs", - "len", - "asc", - "isempty", - "maths", - "dateserial", - "atn", - "timer", - "isobject", - "filter", - "weekday", - "datevalue", - "ccur", - "isdate", - "instr", - "datediff", - "formatdatetime", - "replace", - "isnull", - "right", - "sgn", - "array", - "snumeric", - "log", - "cdbl", - "hex", - "chr", - "lbound", - "msgbox", - "ucase", - "getlocale", - "cos", - "cdate", - "cbyte", - "rtrim", - "join", - "hour", - "oct", - "typename", - "trim", - "strcomp", - "int", - "createobject", - "loadpicture", - "tan", - "formatnumber", - "mid", - "split", - "cint", - "sin", - "datepart", - "ltrim", - "sqr", - "time", - "derived", - "eval", - "date", - "formatpercent", - "exp", - "inputbox", - "left", - "ascw", - "chrw", - "regexp", - "cstr", - "err" - ]; - const BUILT_IN_OBJECTS = [ - "server", - "response", - "request", - // take no arguments so can be called without () - "scriptengine", - "scriptenginebuildversion", - "scriptengineminorversion", - "scriptenginemajorversion" - ]; - - const BUILT_IN_CALL = { - begin: regex.concat(regex.either(...BUILT_IN_FUNCTIONS), "\\s*\\("), - // relevance 0 because this is acting as a beginKeywords really - relevance: 0, - keywords: { built_in: BUILT_IN_FUNCTIONS } - }; - - const LITERALS = [ - "true", - "false", - "null", - "nothing", - "empty" - ]; - - const KEYWORDS = [ - "call", - "class", - "const", - "dim", - "do", - "loop", - "erase", - "execute", - "executeglobal", - "exit", - "for", - "each", - "next", - "function", - "if", - "then", - "else", - "on", - "error", - "option", - "explicit", - "new", - "private", - "property", - "let", - "get", - "public", - "randomize", - "redim", - "rem", - "select", - "case", - "set", - "stop", - "sub", - "while", - "wend", - "with", - "end", - "to", - "elseif", - "is", - "or", - "xor", - "and", - "not", - "class_initialize", - "class_terminate", - "default", - "preserve", - "in", - "me", - "byval", - "byref", - "step", - "resume", - "goto" - ]; - - return { - name: 'VBScript', - aliases: [ 'vbs' ], - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_IN_OBJECTS, - literal: LITERALS - }, - illegal: '//', - contains: [ - BUILT_IN_CALL, - hljs.inherit(hljs.QUOTE_STRING_MODE, { contains: [ { begin: '""' } ] }), - hljs.COMMENT( - /'/, - /$/, - { relevance: 0 } - ), - hljs.C_NUMBER_MODE - ] - }; -} - -module.exports = vbscript; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/verilog.js" -/*!****************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/verilog.js ***! - \****************************************************************/ -(module) { - -/* -Language: Verilog -Author: Jon Evans -Contributors: Boone Severson -Description: Verilog is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. This highlighter supports Verilog and SystemVerilog through IEEE 1800-2012. -Website: http://www.verilog.com -Category: hardware -*/ - -function verilog(hljs) { - const regex = hljs.regex; - const KEYWORDS = { - $pattern: /\$?[\w]+(\$[\w]+)*/, - keyword: [ - "accept_on", - "alias", - "always", - "always_comb", - "always_ff", - "always_latch", - "and", - "assert", - "assign", - "assume", - "automatic", - "before", - "begin", - "bind", - "bins", - "binsof", - "bit", - "break", - "buf|0", - "bufif0", - "bufif1", - "byte", - "case", - "casex", - "casez", - "cell", - "chandle", - "checker", - "class", - "clocking", - "cmos", - "config", - "const", - "constraint", - "context", - "continue", - "cover", - "covergroup", - "coverpoint", - "cross", - "deassign", - "default", - "defparam", - "design", - "disable", - "dist", - "do", - "edge", - "else", - "end", - "endcase", - "endchecker", - "endclass", - "endclocking", - "endconfig", - "endfunction", - "endgenerate", - "endgroup", - "endinterface", - "endmodule", - "endpackage", - "endprimitive", - "endprogram", - "endproperty", - "endspecify", - "endsequence", - "endtable", - "endtask", - "enum", - "event", - "eventually", - "expect", - "export", - "extends", - "extern", - "final", - "first_match", - "for", - "force", - "foreach", - "forever", - "fork", - "forkjoin", - "function", - "generate|5", - "genvar", - "global", - "highz0", - "highz1", - "if", - "iff", - "ifnone", - "ignore_bins", - "illegal_bins", - "implements", - "implies", - "import", - "incdir", - "include", - "initial", - "inout", - "input", - "inside", - "instance", - "int", - "integer", - "interconnect", - "interface", - "intersect", - "join", - "join_any", - "join_none", - "large", - "let", - "liblist", - "library", - "local", - "localparam", - "logic", - "longint", - "macromodule", - "matches", - "medium", - "modport", - "module", - "nand", - "negedge", - "nettype", - "new", - "nexttime", - "nmos", - "nor", - "noshowcancelled", - "not", - "notif0", - "notif1", - "or", - "output", - "package", - "packed", - "parameter", - "pmos", - "posedge", - "primitive", - "priority", - "program", - "property", - "protected", - "pull0", - "pull1", - "pulldown", - "pullup", - "pulsestyle_ondetect", - "pulsestyle_onevent", - "pure", - "rand", - "randc", - "randcase", - "randsequence", - "rcmos", - "real", - "realtime", - "ref", - "reg", - "reject_on", - "release", - "repeat", - "restrict", - "return", - "rnmos", - "rpmos", - "rtran", - "rtranif0", - "rtranif1", - "s_always", - "s_eventually", - "s_nexttime", - "s_until", - "s_until_with", - "scalared", - "sequence", - "shortint", - "shortreal", - "showcancelled", - "signed", - "small", - "soft", - "solve", - "specify", - "specparam", - "static", - "string", - "strong", - "strong0", - "strong1", - "struct", - "super", - "supply0", - "supply1", - "sync_accept_on", - "sync_reject_on", - "table", - "tagged", - "task", - "this", - "throughout", - "time", - "timeprecision", - "timeunit", - "tran", - "tranif0", - "tranif1", - "tri", - "tri0", - "tri1", - "triand", - "trior", - "trireg", - "type", - "typedef", - "union", - "unique", - "unique0", - "unsigned", - "until", - "until_with", - "untyped", - "use", - "uwire", - "var", - "vectored", - "virtual", - "void", - "wait", - "wait_order", - "wand", - "weak", - "weak0", - "weak1", - "while", - "wildcard", - "wire", - "with", - "within", - "wor", - "xnor", - "xor" - ], - literal: [ 'null' ], - built_in: [ - "$finish", - "$stop", - "$exit", - "$fatal", - "$error", - "$warning", - "$info", - "$realtime", - "$time", - "$printtimescale", - "$bitstoreal", - "$bitstoshortreal", - "$itor", - "$signed", - "$cast", - "$bits", - "$stime", - "$timeformat", - "$realtobits", - "$shortrealtobits", - "$rtoi", - "$unsigned", - "$asserton", - "$assertkill", - "$assertpasson", - "$assertfailon", - "$assertnonvacuouson", - "$assertoff", - "$assertcontrol", - "$assertpassoff", - "$assertfailoff", - "$assertvacuousoff", - "$isunbounded", - "$sampled", - "$fell", - "$changed", - "$past_gclk", - "$fell_gclk", - "$changed_gclk", - "$rising_gclk", - "$steady_gclk", - "$coverage_control", - "$coverage_get", - "$coverage_save", - "$set_coverage_db_name", - "$rose", - "$stable", - "$past", - "$rose_gclk", - "$stable_gclk", - "$future_gclk", - "$falling_gclk", - "$changing_gclk", - "$display", - "$coverage_get_max", - "$coverage_merge", - "$get_coverage", - "$load_coverage_db", - "$typename", - "$unpacked_dimensions", - "$left", - "$low", - "$increment", - "$clog2", - "$ln", - "$log10", - "$exp", - "$sqrt", - "$pow", - "$floor", - "$ceil", - "$sin", - "$cos", - "$tan", - "$countbits", - "$onehot", - "$isunknown", - "$fatal", - "$warning", - "$dimensions", - "$right", - "$high", - "$size", - "$asin", - "$acos", - "$atan", - "$atan2", - "$hypot", - "$sinh", - "$cosh", - "$tanh", - "$asinh", - "$acosh", - "$atanh", - "$countones", - "$onehot0", - "$error", - "$info", - "$random", - "$dist_chi_square", - "$dist_erlang", - "$dist_exponential", - "$dist_normal", - "$dist_poisson", - "$dist_t", - "$dist_uniform", - "$q_initialize", - "$q_remove", - "$q_exam", - "$async$and$array", - "$async$nand$array", - "$async$or$array", - "$async$nor$array", - "$sync$and$array", - "$sync$nand$array", - "$sync$or$array", - "$sync$nor$array", - "$q_add", - "$q_full", - "$psprintf", - "$async$and$plane", - "$async$nand$plane", - "$async$or$plane", - "$async$nor$plane", - "$sync$and$plane", - "$sync$nand$plane", - "$sync$or$plane", - "$sync$nor$plane", - "$system", - "$display", - "$displayb", - "$displayh", - "$displayo", - "$strobe", - "$strobeb", - "$strobeh", - "$strobeo", - "$write", - "$readmemb", - "$readmemh", - "$writememh", - "$value$plusargs", - "$dumpvars", - "$dumpon", - "$dumplimit", - "$dumpports", - "$dumpportson", - "$dumpportslimit", - "$writeb", - "$writeh", - "$writeo", - "$monitor", - "$monitorb", - "$monitorh", - "$monitoro", - "$writememb", - "$dumpfile", - "$dumpoff", - "$dumpall", - "$dumpflush", - "$dumpportsoff", - "$dumpportsall", - "$dumpportsflush", - "$fclose", - "$fdisplay", - "$fdisplayb", - "$fdisplayh", - "$fdisplayo", - "$fstrobe", - "$fstrobeb", - "$fstrobeh", - "$fstrobeo", - "$swrite", - "$swriteb", - "$swriteh", - "$swriteo", - "$fscanf", - "$fread", - "$fseek", - "$fflush", - "$feof", - "$fopen", - "$fwrite", - "$fwriteb", - "$fwriteh", - "$fwriteo", - "$fmonitor", - "$fmonitorb", - "$fmonitorh", - "$fmonitoro", - "$sformat", - "$sformatf", - "$fgetc", - "$ungetc", - "$fgets", - "$sscanf", - "$rewind", - "$ftell", - "$ferror" - ] - }; - const BUILT_IN_CONSTANTS = [ - "__FILE__", - "__LINE__" - ]; - const DIRECTIVES = [ - "begin_keywords", - "celldefine", - "default_nettype", - "default_decay_time", - "default_trireg_strength", - "define", - "delay_mode_distributed", - "delay_mode_path", - "delay_mode_unit", - "delay_mode_zero", - "else", - "elsif", - "end_keywords", - "endcelldefine", - "endif", - "ifdef", - "ifndef", - "include", - "line", - "nounconnected_drive", - "pragma", - "resetall", - "timescale", - "unconnected_drive", - "undef", - "undefineall" - ]; - - return { - name: 'Verilog', - aliases: [ - 'v', - 'sv', - 'svh' - ], - case_insensitive: false, - keywords: KEYWORDS, - contains: [ - hljs.C_BLOCK_COMMENT_MODE, - hljs.C_LINE_COMMENT_MODE, - hljs.QUOTE_STRING_MODE, - { - scope: 'number', - contains: [ hljs.BACKSLASH_ESCAPE ], - variants: [ - { begin: /\b((\d+'([bhodBHOD]))[0-9xzXZa-fA-F_]+)/ }, - { begin: /\B(('([bhodBHOD]))[0-9xzXZa-fA-F_]+)/ }, - { // decimal - begin: /\b[0-9][0-9_]*/, - relevance: 0 - } - ] - }, - /* parameters to instances */ - { - scope: 'variable', - variants: [ - { begin: '#\\((?!parameter).+\\)' }, - { - begin: '\\.\\w+', - relevance: 0 - } - ] - }, - { - scope: 'variable.constant', - match: regex.concat(/`/, regex.either(...BUILT_IN_CONSTANTS)), - }, - { - scope: 'meta', - begin: regex.concat(/`/, regex.either(...DIRECTIVES)), - end: /$|\/\/|\/\*/, - returnEnd: true, - keywords: DIRECTIVES - } - ] - }; -} - -module.exports = verilog; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vhdl.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vhdl.js ***! - \*************************************************************/ -(module) { - -/* -Language: VHDL -Author: Igor Kalnitsky -Contributors: Daniel C.K. Kho , Guillaume Savaton -Description: VHDL is a hardware description language used in electronic design automation to describe digital and mixed-signal systems. -Website: https://en.wikipedia.org/wiki/VHDL -Category: hardware -*/ - -function vhdl(hljs) { - // Regular expression for VHDL numeric literals. - - // Decimal literal: - const INTEGER_RE = '\\d(_|\\d)*'; - const EXPONENT_RE = '[eE][-+]?' + INTEGER_RE; - const DECIMAL_LITERAL_RE = INTEGER_RE + '(\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?'; - // Based literal: - const BASED_INTEGER_RE = '\\w+'; - const BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?'; - - const NUMBER_RE = '\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')'; - - const KEYWORDS = [ - "abs", - "access", - "after", - "alias", - "all", - "and", - "architecture", - "array", - "assert", - "assume", - "assume_guarantee", - "attribute", - "begin", - "block", - "body", - "buffer", - "bus", - "case", - "component", - "configuration", - "constant", - "context", - "cover", - "disconnect", - "downto", - "default", - "else", - "elsif", - "end", - "entity", - "exit", - "fairness", - "file", - "for", - "force", - "function", - "generate", - "generic", - "group", - "guarded", - "if", - "impure", - "in", - "inertial", - "inout", - "is", - "label", - "library", - "linkage", - "literal", - "loop", - "map", - "mod", - "nand", - "new", - "next", - "nor", - "not", - "null", - "of", - "on", - "open", - "or", - "others", - "out", - "package", - "parameter", - "port", - "postponed", - "procedure", - "process", - "property", - "protected", - "pure", - "range", - "record", - "register", - "reject", - "release", - "rem", - "report", - "restrict", - "restrict_guarantee", - "return", - "rol", - "ror", - "select", - "sequence", - "severity", - "shared", - "signal", - "sla", - "sll", - "sra", - "srl", - "strong", - "subtype", - "then", - "to", - "transport", - "type", - "unaffected", - "units", - "until", - "use", - "variable", - "view", - "vmode", - "vprop", - "vunit", - "wait", - "when", - "while", - "with", - "xnor", - "xor" - ]; - const BUILT_INS = [ - "boolean", - "bit", - "character", - "integer", - "time", - "delay_length", - "natural", - "positive", - "string", - "bit_vector", - "file_open_kind", - "file_open_status", - "std_logic", - "std_logic_vector", - "unsigned", - "signed", - "boolean_vector", - "integer_vector", - "std_ulogic", - "std_ulogic_vector", - "unresolved_unsigned", - "u_unsigned", - "unresolved_signed", - "u_signed", - "real_vector", - "time_vector" - ]; - const LITERALS = [ - // severity_level - "false", - "true", - "note", - "warning", - "error", - "failure", - // textio - "line", - "text", - "side", - "width" - ]; - - return { - name: 'VHDL', - case_insensitive: true, - keywords: { - keyword: KEYWORDS, - built_in: BUILT_INS, - literal: LITERALS - }, - illegal: /\{/, - contains: [ - hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting. - hljs.COMMENT('--', '$'), - hljs.QUOTE_STRING_MODE, - { - className: 'number', - begin: NUMBER_RE, - relevance: 0 - }, - { - className: 'string', - begin: '\'(U|X|0|1|Z|W|L|H|-)\'', - contains: [ hljs.BACKSLASH_ESCAPE ] - }, - { - className: 'symbol', - begin: '\'[A-Za-z](_?[A-Za-z0-9])*', - contains: [ hljs.BACKSLASH_ESCAPE ] - } - ] - }; -} - -module.exports = vhdl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/vim.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/vim.js ***! - \************************************************************/ -(module) { - -/* -Language: Vim Script -Author: Jun Yang -Description: full keyword and built-in from http://vimdoc.sourceforge.net/htmldoc/ -Website: https://www.vim.org -Category: scripting -*/ - -function vim(hljs) { - return { - name: 'Vim Script', - keywords: { - $pattern: /[!#@\w]+/, - keyword: - // express version except: ! & * < = > !! # @ @@ - 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope ' - + 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ' - + 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 ' - + 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor ' - + 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew ' - + 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ ' - // full version - + 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload ' - + 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap ' - + 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor ' - + 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap ' - + 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview ' - + 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap ' - + 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ' - + 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding ' - + 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace ' - + 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious ' + 'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew ' - + 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank', - built_in: // built in func - 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' - + 'complete_check add getwinposx getqflist getwinposy screencol ' - + 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' - + 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' - + 'shiftwidth max sinh isdirectory synID system inputrestore winline ' - + 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' - + 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' - + 'taglist string getmatches bufnr strftime winwidth bufexists ' - + 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' - + 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' - + 'resolve libcallnr foldclosedend reverse filter has_key bufname ' - + 'str2float strlen setline getcharmod setbufvar index searchpos ' - + 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' - + 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' - + 'reltime cursor tabpagenr finddir localtime acos getloclist search ' - + 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' - + 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' - + 'synconcealed nextnonblank server2client complete settabwinvar ' - + 'executable input wincol setmatches getftype hlID inputsave ' - + 'searchpair or screenrow line settabvar histadd deepcopy strpart ' - + 'remote_peek and eval getftime submatch screenchar winsaveview ' - + 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' - + 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' - + 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' - + 'hostname setpos globpath remote_foreground getchar synIDattr ' - + 'fnamemodify cscope_connection stridx winbufnr indent min ' - + 'complete_add nr2char searchpairpos inputdialog values matchlist ' - + 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' - + 'argc count getwinvar glob foldtextresult getreg foreground cosh ' - + 'matchdelete has char2nr simplify histget searchdecl iconv ' - + 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' - + 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' - + 'islocked escape eventhandler remote_send serverlist winrestview ' - + 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' - + 'exp' - }, - illegal: /;/, - contains: [ - hljs.NUMBER_MODE, - { - className: 'string', - begin: '\'', - end: '\'', - illegal: '\\n' - }, - - /* - A double quote can start either a string or a line comment. Strings are - ended before the end of a line by another double quote and can contain - escaped double-quotes and post-escaped line breaks. - - Also, any double quote at the beginning of a line is a comment but we - don't handle that properly at the moment: any double quote inside will - turn them into a string. Handling it properly will require a smarter - parser. - */ - { - className: 'string', - begin: /"(\\"|\n\\|[^"\n])*"/ - }, - hljs.COMMENT('"', '$'), - - { - className: 'variable', - begin: /[bwtglsav]:[\w\d_]+/ - }, - { - begin: [ - /\b(?:function|function!)/, - /\s+/, - hljs.IDENT_RE - ], - className: { - 1: "keyword", - 3: "title" - }, - end: '$', - relevance: 0, - contains: [ - { - className: 'params', - begin: '\\(', - end: '\\)' - } - ] - }, - { - className: 'symbol', - begin: /<[\w-]+>/ - } - ] - }; -} - -module.exports = vim; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/wasm.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/wasm.js ***! - \*************************************************************/ -(module) { - -/* -Language: WebAssembly -Website: https://webassembly.org -Description: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications. -Category: web, common -Audit: 2020 -*/ - -/** @type LanguageFn */ -function wasm(hljs) { - hljs.regex; - const BLOCK_COMMENT = hljs.COMMENT(/\(;/, /;\)/); - BLOCK_COMMENT.contains.push("self"); - const LINE_COMMENT = hljs.COMMENT(/;;/, /$/); - - const KWS = [ - "anyfunc", - "block", - "br", - "br_if", - "br_table", - "call", - "call_indirect", - "data", - "drop", - "elem", - "else", - "end", - "export", - "func", - "global.get", - "global.set", - "local.get", - "local.set", - "local.tee", - "get_global", - "get_local", - "global", - "if", - "import", - "local", - "loop", - "memory", - "memory.grow", - "memory.size", - "module", - "mut", - "nop", - "offset", - "param", - "result", - "return", - "select", - "set_global", - "set_local", - "start", - "table", - "tee_local", - "then", - "type", - "unreachable" - ]; - - const FUNCTION_REFERENCE = { - begin: [ - /(?:func|call|call_indirect)/, - /\s+/, - /\$[^\s)]+/ - ], - className: { - 1: "keyword", - 3: "title.function" - } - }; - - const ARGUMENT = { - className: "variable", - begin: /\$[\w_]+/ - }; - - const PARENS = { - match: /(\((?!;)|\))+/, - className: "punctuation", - relevance: 0 - }; - - const NUMBER = { - className: "number", - relevance: 0, - // borrowed from Prism, TODO: split out into variants - match: /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/ - }; - - const TYPE = { - // look-ahead prevents us from gobbling up opcodes - match: /(i32|i64|f32|f64)(?!\.)/, - className: "type" - }; - - const MATH_OPERATIONS = { - className: "keyword", - // borrowed from Prism, TODO: split out into variants - match: /\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/ - }; - - const OFFSET_ALIGN = { - match: [ - /(?:offset|align)/, - /\s*/, - /=/ - ], - className: { - 1: "keyword", - 3: "operator" - } - }; - - return { - name: 'WebAssembly', - keywords: { - $pattern: /[\w.]+/, - keyword: KWS - }, - contains: [ - LINE_COMMENT, - BLOCK_COMMENT, - OFFSET_ALIGN, - ARGUMENT, - PARENS, - FUNCTION_REFERENCE, - hljs.QUOTE_STRING_MODE, - TYPE, - MATH_OPERATIONS, - NUMBER - ] - }; -} - -module.exports = wasm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/wren.js" -/*!*************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/wren.js ***! - \*************************************************************/ -(module) { - -/* -Language: Wren -Description: Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a familiar, modern syntax. -Category: scripting -Author: @joshgoebel -Maintainer: @joshgoebel -Website: https://wren.io/ -*/ - -/** @type LanguageFn */ -function wren(hljs) { - const regex = hljs.regex; - const IDENT_RE = /[a-zA-Z]\w*/; - const KEYWORDS = [ - "as", - "break", - "class", - "construct", - "continue", - "else", - "for", - "foreign", - "if", - "import", - "in", - "is", - "return", - "static", - "var", - "while" - ]; - const LITERALS = [ - "true", - "false", - "null" - ]; - const LANGUAGE_VARS = [ - "this", - "super" - ]; - const CORE_CLASSES = [ - "Bool", - "Class", - "Fiber", - "Fn", - "List", - "Map", - "Null", - "Num", - "Object", - "Range", - "Sequence", - "String", - "System" - ]; - const OPERATORS = [ - "-", - "~", - /\*/, - "%", - /\.\.\./, - /\.\./, - /\+/, - "<<", - ">>", - ">=", - "<=", - "<", - ">", - /\^/, - /!=/, - /!/, - /\bis\b/, - "==", - "&&", - "&", - /\|\|/, - /\|/, - /\?:/, - "=" - ]; - const FUNCTION = { - relevance: 0, - match: regex.concat(/\b(?!(if|while|for|else|super)\b)/, IDENT_RE, /(?=\s*[({])/), - className: "title.function" - }; - const FUNCTION_DEFINITION = { - match: regex.concat( - regex.either( - regex.concat(/\b(?!(if|while|for|else|super)\b)/, IDENT_RE), - regex.either(...OPERATORS) - ), - /(?=\s*\([^)]+\)\s*\{)/), - className: "title.function", - starts: { contains: [ - { - begin: /\(/, - end: /\)/, - contains: [ - { - relevance: 0, - scope: "params", - match: IDENT_RE - } - ] - } - ] } - }; - const CLASS_DEFINITION = { - variants: [ - { match: [ - /class\s+/, - IDENT_RE, - /\s+is\s+/, - IDENT_RE - ] }, - { match: [ - /class\s+/, - IDENT_RE - ] } - ], - scope: { - 2: "title.class", - 4: "title.class.inherited" - }, - keywords: KEYWORDS - }; - - const OPERATOR = { - relevance: 0, - match: regex.either(...OPERATORS), - className: "operator" - }; - - const TRIPLE_STRING = { - className: "string", - begin: /"""/, - end: /"""/ - }; - - const PROPERTY = { - className: "property", - begin: regex.concat(/\./, regex.lookahead(IDENT_RE)), - end: IDENT_RE, - excludeBegin: true, - relevance: 0 - }; - - const FIELD = { - relevance: 0, - match: regex.concat(/\b_/, IDENT_RE), - scope: "variable" - }; - - // CamelCase - const CLASS_REFERENCE = { - relevance: 0, - match: /\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/, - scope: "title.class", - keywords: { _: CORE_CLASSES } - }; - - // TODO: add custom number modes - const NUMBER = hljs.C_NUMBER_MODE; - - const SETTER = { - match: [ - IDENT_RE, - /\s*/, - /=/, - /\s*/, - /\(/, - IDENT_RE, - /\)\s*\{/ - ], - scope: { - 1: "title.function", - 3: "operator", - 6: "params" - } - }; - - const COMMENT_DOCS = hljs.COMMENT( - /\/\*\*/, - /\*\//, - { contains: [ - { - match: /@[a-z]+/, - scope: "doctag" - }, - "self" - ] } - ); - const SUBST = { - scope: "subst", - begin: /%\(/, - end: /\)/, - contains: [ - NUMBER, - CLASS_REFERENCE, - FUNCTION, - FIELD, - OPERATOR - ] - }; - const STRING = { - scope: "string", - begin: /"/, - end: /"/, - contains: [ - SUBST, - { - scope: "char.escape", - variants: [ - { match: /\\\\|\\["0%abefnrtv]/ }, - { match: /\\x[0-9A-F]{2}/ }, - { match: /\\u[0-9A-F]{4}/ }, - { match: /\\U[0-9A-F]{8}/ } - ] - } - ] - }; - SUBST.contains.push(STRING); - - const ALL_KWS = [ - ...KEYWORDS, - ...LANGUAGE_VARS, - ...LITERALS - ]; - const VARIABLE = { - relevance: 0, - match: regex.concat( - "\\b(?!", - ALL_KWS.join("|"), - "\\b)", - /[a-zA-Z_]\w*(?:[?!]|\b)/ - ), - className: "variable" - }; - - // TODO: reconsider this in the future - const ATTRIBUTE = { - // scope: "meta", - scope: "comment", - variants: [ - { - begin: [ - /#!?/, - /[A-Za-z_]+(?=\()/ - ], - beginScope: { - // 2: "attr" - }, - keywords: { literal: LITERALS }, - contains: [ - // NUMBER, - // VARIABLE - ], - end: /\)/ - }, - { - begin: [ - /#!?/, - /[A-Za-z_]+/ - ], - beginScope: { - // 2: "attr" - }, - end: /$/ - } - ] - }; - - return { - name: "Wren", - keywords: { - keyword: KEYWORDS, - "variable.language": LANGUAGE_VARS, - literal: LITERALS - }, - contains: [ - ATTRIBUTE, - NUMBER, - STRING, - TRIPLE_STRING, - COMMENT_DOCS, - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - CLASS_REFERENCE, - CLASS_DEFINITION, - SETTER, - FUNCTION_DEFINITION, - FUNCTION, - OPERATOR, - FIELD, - PROPERTY, - VARIABLE - ] - }; -} - -module.exports = wren; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/x86asm.js" -/*!***************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/x86asm.js ***! - \***************************************************************/ -(module) { - -/* -Language: Intel x86 Assembly -Author: innocenat -Description: x86 assembly language using Intel's mnemonic and NASM syntax -Website: https://en.wikipedia.org/wiki/X86_assembly_language -Category: assembler -*/ - -function x86asm(hljs) { - return { - name: 'Intel x86 Assembly', - case_insensitive: true, - keywords: { - $pattern: '[.%]?' + hljs.IDENT_RE, - keyword: - 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' - + 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63', - built_in: - // Instruction pointer - 'ip eip rip ' - // 8-bit registers - + 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' - // 16-bit registers - + 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' - // 32-bit registers - + 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' - // 64-bit registers - + 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' - // Segment registers - + 'cs ds es fs gs ss ' - // Floating point stack registers - + 'st st0 st1 st2 st3 st4 st5 st6 st7 ' - // MMX Registers - + 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' - // SSE registers - + 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' - + 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' - // AVX registers - + 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' - + 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' - // AVX-512F registers - + 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' - + 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' - // AVX-512F mask registers - + 'k0 k1 k2 k3 k4 k5 k6 k7 ' - // Bound (MPX) register - + 'bnd0 bnd1 bnd2 bnd3 ' - // Special register - + 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' - // NASM altreg package - + 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' - + 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' - + 'r0h r1h r2h r3h ' - + 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' - - + 'db dw dd dq dt ddq do dy dz ' - + 'resb resw resd resq rest resdq reso resy resz ' - + 'incbin equ times ' - + 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr', - - meta: - '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' - + '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' - + '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' - + '.nolist ' - + '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' - + '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' - + 'align alignb sectalign daz nodaz up down zero default option assume public ' - - + 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' - + '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' - + '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' - + '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' - + 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__' - }, - contains: [ - hljs.COMMENT( - ';', - '$', - { relevance: 0 } - ), - { - className: 'number', - variants: [ - // Float number and x87 BCD - { - begin: '\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' - + '(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b', - relevance: 0 - }, - - // Hex number in $ - { - begin: '\\$[0-9][0-9A-Fa-f]*', - relevance: 0 - }, - - // Number in H,D,T,Q,O,B,Y suffix - { begin: '\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b' }, - - // Number in X,D,T,Q,O,B,Y prefix - { begin: '\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b' } - ] - }, - // Double quote string - hljs.QUOTE_STRING_MODE, - { - className: 'string', - variants: [ - // Single-quoted string - { - begin: '\'', - end: '[^\\\\]\'' - }, - // Backquoted string - { - begin: '`', - end: '[^\\\\]`' - } - ], - relevance: 0 - }, - { - className: 'symbol', - variants: [ - // Global label and local label - { begin: '^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)' }, - // Macro-local label - { begin: '^\\s*%%[A-Za-z0-9_$#@~.?]*:' } - ], - relevance: 0 - }, - // Macro parameter - { - className: 'subst', - begin: '%[0-9]+', - relevance: 0 - }, - // Macro parameter - { - className: 'subst', - begin: '%!\S+', - relevance: 0 - }, - { - className: 'meta', - begin: /^\s*\.[\w_-]+/ - } - ] - }; -} - -module.exports = x86asm; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/xl.js" -/*!***********************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/xl.js ***! - \***********************************************************/ -(module) { - -/* -Language: XL -Author: Christophe de Dinechin -Description: An extensible programming language, based on parse tree rewriting -Website: http://xlr.sf.net -*/ - -function xl(hljs) { - const KWS = [ - "if", - "then", - "else", - "do", - "while", - "until", - "for", - "loop", - "import", - "with", - "is", - "as", - "where", - "when", - "by", - "data", - "constant", - "integer", - "real", - "text", - "name", - "boolean", - "symbol", - "infix", - "prefix", - "postfix", - "block", - "tree" - ]; - const BUILT_INS = [ - "in", - "mod", - "rem", - "and", - "or", - "xor", - "not", - "abs", - "sign", - "floor", - "ceil", - "sqrt", - "sin", - "cos", - "tan", - "asin", - "acos", - "atan", - "exp", - "expm1", - "log", - "log2", - "log10", - "log1p", - "pi", - "at", - "text_length", - "text_range", - "text_find", - "text_replace", - "contains", - "page", - "slide", - "basic_slide", - "title_slide", - "title", - "subtitle", - "fade_in", - "fade_out", - "fade_at", - "clear_color", - "color", - "line_color", - "line_width", - "texture_wrap", - "texture_transform", - "texture", - "scale_?x", - "scale_?y", - "scale_?z?", - "translate_?x", - "translate_?y", - "translate_?z?", - "rotate_?x", - "rotate_?y", - "rotate_?z?", - "rectangle", - "circle", - "ellipse", - "sphere", - "path", - "line_to", - "move_to", - "quad_to", - "curve_to", - "theme", - "background", - "contents", - "locally", - "time", - "mouse_?x", - "mouse_?y", - "mouse_buttons" - ]; - const BUILTIN_MODULES = [ - "ObjectLoader", - "Animate", - "MovieCredits", - "Slides", - "Filters", - "Shading", - "Materials", - "LensFlare", - "Mapping", - "VLCAudioVideo", - "StereoDecoder", - "PointCloud", - "NetworkAccess", - "RemoteControl", - "RegExp", - "ChromaKey", - "Snowfall", - "NodeJS", - "Speech", - "Charts" - ]; - const LITERALS = [ - "true", - "false", - "nil" - ]; - const KEYWORDS = { - $pattern: /[a-zA-Z][a-zA-Z0-9_?]*/, - keyword: KWS, - literal: LITERALS, - built_in: BUILT_INS.concat(BUILTIN_MODULES) - }; - - const DOUBLE_QUOTE_TEXT = { - className: 'string', - begin: '"', - end: '"', - illegal: '\\n' - }; - const SINGLE_QUOTE_TEXT = { - className: 'string', - begin: '\'', - end: '\'', - illegal: '\\n' - }; - const LONG_TEXT = { - className: 'string', - begin: '<<', - end: '>>' - }; - const BASED_NUMBER = { - className: 'number', - begin: '[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?' - }; - const IMPORT = { - beginKeywords: 'import', - end: '$', - keywords: KEYWORDS, - contains: [ DOUBLE_QUOTE_TEXT ] - }; - const FUNCTION_DEFINITION = { - className: 'function', - begin: /[a-z][^\n]*->/, - returnBegin: true, - end: /->/, - contains: [ - hljs.inherit(hljs.TITLE_MODE, { starts: { - endsWithParent: true, - keywords: KEYWORDS - } }) - ] - }; - return { - name: 'XL', - aliases: [ 'tao' ], - keywords: KEYWORDS, - contains: [ - hljs.C_LINE_COMMENT_MODE, - hljs.C_BLOCK_COMMENT_MODE, - DOUBLE_QUOTE_TEXT, - SINGLE_QUOTE_TEXT, - LONG_TEXT, - FUNCTION_DEFINITION, - IMPORT, - BASED_NUMBER, - hljs.NUMBER_MODE - ] - }; -} - -module.exports = xl; - - -/***/ }, - -/***/ "../../node_modules/highlight.js/lib/languages/xml.js" -/*!************************************************************!*\ - !*** ../../node_modules/highlight.js/lib/languages/xml.js ***! - \************************************************************/ -(module) { - -/* -Language: HTML, XML -Website: https://www.w3.org/XML/ -Category: common, web -Audit: 2020 -*/ - -/** @type LanguageFn */ -function xml(hljs) { - const regex = hljs.regex; - // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar - // OTHER_NAME_CHARS = /[:\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]/; - // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods - // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, regex.optional(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*:/), /[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*/);; - // const XML_IDENT_RE = /[A-Z_a-z:\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]+/; - // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, regex.optional(/[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*:/), /[A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*/); - // however, to cater for performance and more Unicode support rely simply on the Unicode letter class - const TAG_NAME_RE = regex.concat(/[\p{L}_]/u, regex.optional(/[\p{L}0-9_.-]*:/u), /[\p{L}0-9_.-]*/u); - const XML_IDENT_RE = /[\p{L}0-9._:-]+/u; - const XML_ENTITIES = { - className: 'symbol', - begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/ - }; - const XML_META_KEYWORDS = { - begin: /\s/, - contains: [ - { - className: 'keyword', - begin: /#?[a-z_][a-z1-9_-]+/, - illegal: /\n/ - } - ] - }; - const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, { - begin: /\(/, - end: /\)/ - }); - const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' }); - const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }); - const TAG_INTERNALS = { - endsWithParent: true, - illegal: /`]+/ } - ] - } - ] - } - ] - }; - return { - name: 'HTML, XML', - aliases: [ - 'html', - 'xhtml', - 'rss', - 'atom', - 'xjb', - 'xsd', - 'xsl', - 'plist', - 'wsf', - 'svg' - ], - case_insensitive: true, - unicodeRegex: true, - contains: [ - { - className: 'meta', - begin: //, - relevance: 10, - contains: [ - XML_META_KEYWORDS, - QUOTE_META_STRING_MODE, - APOS_META_STRING_MODE, - XML_META_PAR_KEYWORDS, - { - begin: /\[/, - end: /\]/, - contains: [ - { - className: 'meta', - begin: //, - contains: [ - XML_META_KEYWORDS, - XML_META_PAR_KEYWORDS, - QUOTE_META_STRING_MODE, - APOS_META_STRING_MODE - ] - } - ] - } - ] - }, - hljs.COMMENT( - //, - { relevance: 10 } - ), - { - begin: //, - relevance: 10 - }, - XML_ENTITIES, - // xml processing instructions - { - className: 'meta', - end: /\?>/, - variants: [ - { - begin: /<\?xml/, - relevance: 10, - contains: [ - QUOTE_META_STRING_MODE - ] - }, - { - begin: /<\?[a-z][a-z0-9]+/, - } - ] - - }, - { - className: 'tag', - /* - The lookahead pattern (?=...) ensures that 'begin' only matches - ')/, - end: />/, - keywords: { name: 'style' }, - contains: [ TAG_INTERNALS ], - starts: { - end: /<\/style>/, - returnEnd: true, - subLanguage: [ - 'css', - 'xml' - ] - } - }, - { - className: 'tag', - // See the comment in the \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo-med.png deleted file mode 100644 index f18d99e6227c08d6a3033f1674112c55ff226734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3183 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/PUT - }ifelse - pdfmark_5 - }forall -}bdf -/lmt{ - dup 2 index le{exch}if pop dup 2 index ge{exch}if pop -}bdf -/int{ - dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop -}bdf -/ds{ - Adobe_AGM_Utils begin -}bdf -/dt{ - currentdict Adobe_AGM_Utils eq{ - end - }if -}bdf -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_AGM_Core 2.0 0 -%%Version: 2.0 0 -%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Core 209 dict dup begin put -/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def -/AGMCORE_str256 256 string def -/AGMCORE_save nd -/AGMCORE_graphicsave nd -/AGMCORE_c 0 def -/AGMCORE_m 0 def -/AGMCORE_y 0 def -/AGMCORE_k 0 def -/AGMCORE_cmykbuf 4 array def -/AGMCORE_screen[currentscreen]cvx def -/AGMCORE_tmp 0 def -/AGMCORE_&setgray nd -/AGMCORE_&setcolor nd -/AGMCORE_&setcolorspace nd -/AGMCORE_&setcmykcolor nd -/AGMCORE_cyan_plate nd -/AGMCORE_magenta_plate nd -/AGMCORE_yellow_plate nd -/AGMCORE_black_plate nd -/AGMCORE_plate_ndx nd -/AGMCORE_get_ink_data nd -/AGMCORE_is_cmyk_sep nd -/AGMCORE_host_sep nd -/AGMCORE_avoid_L2_sep_space nd -/AGMCORE_distilling nd -/AGMCORE_composite_job nd -/AGMCORE_producing_seps nd -/AGMCORE_ps_level -1 def -/AGMCORE_ps_version -1 def -/AGMCORE_environ_ok nd -/AGMCORE_CSD_cache 0 dict def -/AGMCORE_currentoverprint false def -/AGMCORE_deltaX nd -/AGMCORE_deltaY nd -/AGMCORE_name nd -/AGMCORE_sep_special nd -/AGMCORE_err_strings 4 dict def -/AGMCORE_cur_err nd -/AGMCORE_current_spot_alias false def -/AGMCORE_inverting false def -/AGMCORE_feature_dictCount nd -/AGMCORE_feature_opCount nd -/AGMCORE_feature_ctm nd -/AGMCORE_ConvertToProcess false def -/AGMCORE_Default_CTM matrix def -/AGMCORE_Default_PageSize nd -/AGMCORE_Default_flatness nd -/AGMCORE_currentbg nd -/AGMCORE_currentucr nd -/AGMCORE_pattern_paint_type 0 def -/knockout_unitsq nd -currentglobal true setglobal -[/CSA/Gradient/Procedure] -{ - /Generic/Category findresource dup length dict copy/Category defineresource pop -}forall -setglobal -/AGMCORE_key_known -{ - where{ - /Adobe_AGM_Core_Id known - }{ - false - }ifelse -}ndf -/flushinput -{ - save - 2 dict begin - /CompareBuffer 3 -1 roll def - /readbuffer 256 string def - mark - { - currentfile readbuffer{readline}stopped - {cleartomark mark} - { - not - {pop exit} - if - CompareBuffer eq - {exit} - if - }ifelse - }loop - cleartomark - end - restore -}bdf -/getspotfunction -{ - AGMCORE_screen exch pop exch pop - dup type/dicttype eq{ - dup/HalftoneType get 1 eq{ - /SpotFunction get - }{ - dup/HalftoneType get 2 eq{ - /GraySpotFunction get - }{ - pop - { - abs exch abs 2 copy add 1 gt{ - 1 sub dup mul exch 1 sub dup mul add 1 sub - }{ - dup mul exch dup mul add 1 exch sub - }ifelse - }bind - }ifelse - }ifelse - }if -}def -/np -{newpath}bdf -/clp_npth -{clip np}def -/eoclp_npth -{eoclip np}def -/npth_clp -{np clip}def -/graphic_setup -{ - /AGMCORE_graphicsave save store - concat - 0 setgray - 0 setlinecap - 0 setlinejoin - 1 setlinewidth - []0 setdash - 10 setmiterlimit - np - false setoverprint - false setstrokeadjust - //Adobe_AGM_Core/spot_alias gx - /Adobe_AGM_Image where{ - pop - Adobe_AGM_Image/spot_alias 2 copy known{ - gx - }{ - pop pop - }ifelse - }if - /sep_colorspace_dict null AGMCORE_gput - 100 dict begin - /dictstackcount countdictstack def - /showpage{}def - mark -}def -/graphic_cleanup -{ - cleartomark - dictstackcount 1 countdictstack 1 sub{end}for - end - AGMCORE_graphicsave restore -}def -/compose_error_msg -{ - grestoreall initgraphics - /Helvetica findfont 10 scalefont setfont - /AGMCORE_deltaY 100 def - /AGMCORE_deltaX 310 def - clippath pathbbox np pop pop 36 add exch 36 add exch moveto - 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto - 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath - 0 AGMCORE_&setgray - gsave 1 AGMCORE_&setgray fill grestore - 1 setlinewidth gsave stroke grestore - currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto - /AGMCORE_deltaY 12 def - /AGMCORE_tmp 0 def - AGMCORE_err_strings exch get - { - dup 32 eq - { - pop - AGMCORE_str256 0 AGMCORE_tmp getinterval - stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt - { - currentpoint AGMCORE_deltaY sub exch pop - clippath pathbbox pop pop pop 44 add exch moveto - }if - AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show - 0 1 AGMCORE_str256 length 1 sub - { - AGMCORE_str256 exch 0 put - }for - /AGMCORE_tmp 0 def - }{ - AGMCORE_str256 exch AGMCORE_tmp xpt - /AGMCORE_tmp AGMCORE_tmp 1 add def - }ifelse - }forall -}bdf -/AGMCORE_CMYKDeviceNColorspaces[ - [/Separation/None/DeviceCMYK{0 0 0}] - [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] - [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] - [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] - [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] - [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] - [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] - [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] - [/Separation(Cyan)/DeviceCMYK{0 0 0}] - [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] - [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] - [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] - [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] - [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] - [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] - [/DeviceCMYK] -]def -/ds{ - Adobe_AGM_Core begin - /currentdistillerparams where - { - pop currentdistillerparams/CoreDistVersion get 5000 lt - {<>setdistillerparams}if - }if - /AGMCORE_ps_version xdf - /AGMCORE_ps_level xdf - errordict/AGM_handleerror known not{ - errordict/AGM_handleerror errordict/handleerror get put - errordict/handleerror{ - Adobe_AGM_Core begin - $error/newerror get AGMCORE_cur_err null ne and{ - $error/newerror false put - AGMCORE_cur_err compose_error_msg - }if - $error/newerror true put - end - errordict/AGM_handleerror get exec - }bind put - }if - /AGMCORE_environ_ok - ps_level AGMCORE_ps_level ge - ps_version AGMCORE_ps_version ge and - AGMCORE_ps_level -1 eq or - def - AGMCORE_environ_ok not - {/AGMCORE_cur_err/AGMCORE_bad_environ def}if - /AGMCORE_&setgray systemdict/setgray get def - level2{ - /AGMCORE_&setcolor systemdict/setcolor get def - /AGMCORE_&setcolorspace systemdict/setcolorspace get def - }if - /AGMCORE_currentbg currentblackgeneration def - /AGMCORE_currentucr currentundercolorremoval def - /AGMCORE_Default_flatness currentflat def - /AGMCORE_distilling - /product where{ - pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and - }{ - false - }ifelse - def - /AGMCORE_GSTATE AGMCORE_key_known not{ - /AGMCORE_GSTATE 21 dict def - /AGMCORE_tmpmatrix matrix def - /AGMCORE_gstack 32 array def - /AGMCORE_gstackptr 0 def - /AGMCORE_gstacksaveptr 0 def - /AGMCORE_gstackframekeys 14 def - /AGMCORE_&gsave/gsave ldf - /AGMCORE_&grestore/grestore ldf - /AGMCORE_&grestoreall/grestoreall ldf - /AGMCORE_&save/save ldf - /AGMCORE_&setoverprint/setoverprint ldf - /AGMCORE_gdictcopy{ - begin - {def}forall - end - }def - /AGMCORE_gput{ - AGMCORE_gstack AGMCORE_gstackptr get - 3 1 roll - put - }def - /AGMCORE_gget{ - AGMCORE_gstack AGMCORE_gstackptr get - exch - get - }def - /gsave{ - AGMCORE_&gsave - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /grestore{ - AGMCORE_&grestore - AGMCORE_gstackptr 1 sub - dup AGMCORE_gstacksaveptr lt{1 add}if - dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known - {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse - /AGMCORE_gstackptr exch store - }def - /grestoreall{ - AGMCORE_&grestoreall - /AGMCORE_gstackptr AGMCORE_gstacksaveptr store - }def - /save{ - AGMCORE_&save - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - /AGMCORE_gstacksaveptr AGMCORE_gstackptr store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /setoverprint{ - dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint - }def - 0 1 AGMCORE_gstack length 1 sub{ - AGMCORE_gstack exch AGMCORE_gstackframekeys dict put - }for - }if - level3/AGMCORE_&sysshfill AGMCORE_key_known not and - { - /AGMCORE_&sysshfill systemdict/shfill get def - /AGMCORE_&sysmakepattern systemdict/makepattern get def - /AGMCORE_&usrmakepattern/makepattern load def - }if - /currentcmykcolor[0 0 0 0]AGMCORE_gput - /currentstrokeadjust false AGMCORE_gput - /currentcolorspace[/DeviceGray]AGMCORE_gput - /sep_tint 0 AGMCORE_gput - /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput - /sep_colorspace_dict null AGMCORE_gput - /devicen_colorspace_dict null AGMCORE_gput - /indexed_colorspace_dict null AGMCORE_gput - /currentcolor_intent()AGMCORE_gput - /customcolor_tint 1 AGMCORE_gput - /absolute_colorimetric_crd null AGMCORE_gput - /relative_colorimetric_crd null AGMCORE_gput - /saturation_crd null AGMCORE_gput - /perceptual_crd null AGMCORE_gput - currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf - cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf - << - /MaxPatternItem currentsystemparams/MaxPatternCache get - >> - setuserparams - end -}def -/ps -{ - /setcmykcolor where{ - pop - Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put - }if - Adobe_AGM_Core begin - /setcmykcolor - { - 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput - 1 sub 4 1 roll - 3{ - 3 index add neg dup 0 lt{ - pop 0 - }if - 3 1 roll - }repeat - setrgbcolor pop - }ndf - /currentcmykcolor - { - /currentcmykcolor AGMCORE_gget aload pop - }ndf - /setoverprint - {pop}ndf - /currentoverprint - {false}ndf - /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def - /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def - /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def - /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def - /AGMCORE_plate_ndx - AGMCORE_cyan_plate{ - 0 - }{ - AGMCORE_magenta_plate{ - 1 - }{ - AGMCORE_yellow_plate{ - 2 - }{ - AGMCORE_black_plate{ - 3 - }{ - 4 - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_have_reported_unsupported_color_space false def - /AGMCORE_report_unsupported_color_space - { - AGMCORE_have_reported_unsupported_color_space false eq - { - (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== - Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf - }if - }def - /AGMCORE_composite_job - AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def - /AGMCORE_in_rip_sep - /AGMCORE_in_rip_sep where{ - pop AGMCORE_in_rip_sep - }{ - AGMCORE_distilling - { - false - }{ - userdict/Adobe_AGM_OnHost_Seps known{ - false - }{ - level2{ - currentpagedevice/Separations 2 copy known{ - get - }{ - pop pop false - }ifelse - }{ - false - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def - /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def - /AGM_preserve_spots - /AGM_preserve_spots where{ - pop AGM_preserve_spots - }{ - AGMCORE_distilling AGMCORE_producing_seps or - }ifelse - def - /AGM_is_distiller_preserving_spotimages - { - currentdistillerparams/PreserveOverprintSettings known - { - currentdistillerparams/PreserveOverprintSettings get - { - currentdistillerparams/ColorConversionStrategy known - { - currentdistillerparams/ColorConversionStrategy get - /sRGB ne - }{ - true - }ifelse - }{ - false - }ifelse - }{ - false - }ifelse - }def - /convert_spot_to_process where{pop}{ - /convert_spot_to_process - { - //Adobe_AGM_Core begin - dup map_alias{ - /Name get exch pop - }if - dup dup(None)eq exch(All)eq or - { - pop false - }{ - AGMCORE_host_sep - { - gsave - 1 0 0 0 setcmykcolor currentgray 1 exch sub - 0 1 0 0 setcmykcolor currentgray 1 exch sub - 0 0 1 0 setcmykcolor currentgray 1 exch sub - 0 0 0 1 setcmykcolor currentgray 1 exch sub - add add add 0 eq - { - pop false - }{ - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - }ifelse - grestore - }{ - AGMCORE_distilling - { - pop AGM_is_distiller_preserving_spotimages not - }{ - //Adobe_AGM_Core/AGMCORE_name xddf - false - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq - AGMUTIL_cpd/OverrideSeparations known and - { - AGMUTIL_cpd/OverrideSeparations get - { - /HqnSpots/ProcSet resourcestatus - { - pop pop pop true - }if - }if - }if - { - AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not - }{ - gsave - [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace - false - AGMUTIL_cpd/SeparationColorNames 2 copy known - { - get - {AGMCORE_name eq or}forall - not - }{ - pop pop pop true - }ifelse - grestore - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - }ifelse - /convert_to_process where{pop}{ - /convert_to_process - { - dup length 0 eq - { - pop false - }{ - AGMCORE_host_sep - { - dup true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process and}ifelse - } - forall - { - true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - (Black)eq or and - }forall - not - }{pop false}ifelse - }{ - false exch - { - /PhotoshopDuotoneList where{pop false}{true}ifelse - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process or}ifelse - } - { - convert_spot_to_process or - } - ifelse - } - forall - }ifelse - }ifelse - }def - }ifelse - /AGMCORE_avoid_L2_sep_space - version cvr 2012 lt - level2 and - AGMCORE_producing_seps not and - def - /AGMCORE_is_cmyk_sep - AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or - def - /AGM_avoid_0_cmyk where{ - pop AGM_avoid_0_cmyk - }{ - AGM_preserve_spots - userdict/Adobe_AGM_OnHost_Seps known - userdict/Adobe_AGM_InRip_Seps known or - not and - }ifelse - { - /setcmykcolor[ - { - 4 copy add add add 0 eq currentoverprint and{ - pop 0.0005 - }if - }/exec cvx - /AGMCORE_&setcmykcolor load dup type/operatortype ne{ - /exec cvx - }if - ]cvx def - }if - /AGMCORE_IsSeparationAProcessColor - { - dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or - }def - AGMCORE_host_sep{ - /setcolortransfer - { - AGMCORE_cyan_plate{ - pop pop pop - }{ - AGMCORE_magenta_plate{ - 4 3 roll pop pop pop - }{ - AGMCORE_yellow_plate{ - 4 2 roll pop pop pop - }{ - 4 1 roll pop pop pop - }ifelse - }ifelse - }ifelse - settransfer - } - def - /AGMCORE_get_ink_data - AGMCORE_cyan_plate{ - {pop pop pop} - }{ - AGMCORE_magenta_plate{ - {4 3 roll pop pop pop} - }{ - AGMCORE_yellow_plate{ - {4 2 roll pop pop pop} - }{ - {4 1 roll pop pop pop} - }ifelse - }ifelse - }ifelse - def - /AGMCORE_RemoveProcessColorNames - { - 1 dict begin - /filtername - { - dup/Cyan eq 1 index(Cyan)eq or - {pop(_cyan_)}if - dup/Magenta eq 1 index(Magenta)eq or - {pop(_magenta_)}if - dup/Yellow eq 1 index(Yellow)eq or - {pop(_yellow_)}if - dup/Black eq 1 index(Black)eq or - {pop(_black_)}if - }def - dup type/arraytype eq - {[exch{filtername}forall]} - {filtername}ifelse - end - }def - level3{ - /AGMCORE_IsCurrentColor - { - dup AGMCORE_IsSeparationAProcessColor - { - AGMCORE_plate_ndx 0 eq - {dup(Cyan)eq exch/Cyan eq or}if - AGMCORE_plate_ndx 1 eq - {dup(Magenta)eq exch/Magenta eq or}if - AGMCORE_plate_ndx 2 eq - {dup(Yellow)eq exch/Yellow eq or}if - AGMCORE_plate_ndx 3 eq - {dup(Black)eq exch/Black eq or}if - AGMCORE_plate_ndx 4 eq - {pop false}if - }{ - gsave - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - grestore - }ifelse - }def - /AGMCORE_filter_functiondatasource - { - 5 dict begin - /data_in xdf - data_in type/stringtype eq - { - /ncomp xdf - /comp xdf - /string_out data_in length ncomp idiv string def - 0 ncomp data_in length 1 sub - { - string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put - }for - string_out - }{ - string/string_in xdf - /string_out 1 string def - /component xdf - [ - data_in string_in/readstring cvx - [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx - [/pop cvx()]cvx/ifelse cvx - ]cvx/ReusableStreamDecode filter - }ifelse - end - }def - /AGMCORE_separateShadingFunction - { - 2 dict begin - /paint? xdf - /channel xdf - dup type/dicttype eq - { - begin - FunctionType 0 eq - { - /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def - currentdict/Decode known - {/Decode Decode channel 2 mul 2 getinterval def}if - paint? not - {/Decode[1 1]def}if - }if - FunctionType 2 eq - { - paint? - { - /C0[C0 channel get 1 exch sub]def - /C1[C1 channel get 1 exch sub]def - }{ - /C0[1]def - /C1[1]def - }ifelse - }if - FunctionType 3 eq - { - /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def - }if - currentdict/Range known - {/Range[0 1]def}if - currentdict - end}{ - channel get 0 paint? AGMCORE_separateShadingFunction - }ifelse - end - }def - /AGMCORE_separateShading - { - 3 -1 roll begin - currentdict/Function known - { - currentdict/Background known - {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if - Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf - /ColorSpace[/DeviceGray]def - }{ - ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }{ - ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put - }ifelse - ColorSpace 0 get/Separation eq - { - { - [1/exch cvx/sub cvx]cvx - }{ - [/pop cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll put - pop - }{ - { - [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx - }{ - pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll bind put - }ifelse - ColorSpace 2/DeviceGray put - }ifelse - end - }def - /AGMCORE_separateShadingDict - { - dup/ColorSpace get - dup type/arraytype ne - {[exch]}if - dup 0 get/DeviceCMYK eq - { - exch begin - currentdict - AGMCORE_cyan_plate - {0 true}if - AGMCORE_magenta_plate - {1 true}if - AGMCORE_yellow_plate - {2 true}if - AGMCORE_black_plate - {3 true}if - AGMCORE_plate_ndx 4 eq - {0 false}if - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - currentdict - end exch - }if - dup 0 get/Separation eq - { - exch begin - ColorSpace 1 get dup/None ne exch/All ne and - { - ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /Separation - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - }if - }ifelse - }{ - currentdict ColorSpace 1 get AGMCORE_IsCurrentColor - 0 exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - }if - currentdict - end exch - }if - dup 0 get/DeviceN eq - { - exch begin - ColorSpace 1 get convert_to_process - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /DeviceN - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - /ColorSpace[/DeviceGray]def - }if - }ifelse - }{ - currentdict - false -1 ColorSpace 1 get - { - AGMCORE_IsCurrentColor - { - 1 add - exch pop true exch exit - }if - 1 add - }forall - exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - currentdict - end exch - }if - dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not - { - exch begin - ColorSpace dup type/arraytype eq - {0 get}if - /DeviceGray ne - { - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - ColorSpace 0 get/CIEBasedA eq - { - /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def - }if - ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or - { - /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def - }if - ColorSpace 0 get/CIEBasedDEFG eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }if - currentdict 0 false AGMCORE_separateShading - }if - }if - currentdict - end exch - }if - pop - dup/AGMCORE_ignoreshade known - { - begin - /ColorSpace[/Separation(None)/DeviceGray{}]def - currentdict end - }if - }def - /shfill - { - AGMCORE_separateShadingDict - dup/AGMCORE_ignoreshade known - {pop} - {AGMCORE_&sysshfill}ifelse - }def - /makepattern - { - exch - dup/PatternType get 2 eq - { - clonedict - begin - /Shading Shading AGMCORE_separateShadingDict def - Shading/AGMCORE_ignoreshade known - currentdict end exch - {pop<>}if - exch AGMCORE_&sysmakepattern - }{ - exch AGMCORE_&usrmakepattern - }ifelse - }def - }if - }if - AGMCORE_in_rip_sep{ - /setcustomcolor - { - exch aload pop - dup 7 1 roll inRip_spot_has_ink not { - 4{4 index mul 4 1 roll} - repeat - /DeviceCMYK setcolorspace - 6 -2 roll pop pop - }{ - //Adobe_AGM_Core begin - /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf - end - [/Separation 4 -1 roll/DeviceCMYK - {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} - ] - setcolorspace - }ifelse - setcolor - }ndf - /setseparationgray - { - [/Separation(All)/DeviceGray{}]setcolorspace_opt - 1 exch sub setcolor - }ndf - }{ - /setseparationgray - { - AGMCORE_&setgray - }ndf - }ifelse - /findcmykcustomcolor - { - 5 makereadonlyarray - }ndf - /setcustomcolor - { - exch aload pop pop - 4{4 index mul 4 1 roll}repeat - setcmykcolor pop - }ndf - /has_color - /colorimage where{ - AGMCORE_producing_seps{ - pop true - }{ - systemdict eq - }ifelse - }{ - false - }ifelse - def - /map_index - { - 1 index mul exch getinterval{255 div}forall - }bdf - /map_indexed_devn - { - Lookup Names length 3 -1 roll cvi map_index - }bdf - /n_color_components - { - base_colorspace_type - dup/DeviceGray eq{ - pop 1 - }{ - /DeviceCMYK eq{ - 4 - }{ - 3 - }ifelse - }ifelse - }bdf - level2{ - /mo/moveto ldf - /li/lineto ldf - /cv/curveto ldf - /knockout_unitsq - { - 1 setgray - 0 0 1 1 rectfill - }def - level2/setcolorspace AGMCORE_key_known not and{ - /AGMCORE_&&&setcolorspace/setcolorspace ldf - /AGMCORE_ReplaceMappedColor - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - /AGMCORE_SpotAliasAry2 where{ - begin - dup 0 get dup/Separation eq - { - pop - dup length array copy - dup dup 1 get - current_spot_alias - { - dup map_alias - { - false set_spot_alias - dup 1 exch setsepcolorspace - true set_spot_alias - begin - /sep_colorspace_dict currentdict AGMCORE_gput - pop pop pop - [ - /Separation Name - CSA map_csa - MappedCSA - /sep_colorspace_proc load - ] - dup Name - end - }if - }if - map_reserved_ink_name 1 xpt - }{ - /DeviceN eq - { - dup length array copy - dup dup 1 get[ - exch{ - current_spot_alias{ - dup map_alias{ - /Name get exch pop - }if - }if - map_reserved_ink_name - }forall - ]1 xpt - }if - }ifelse - end - }if - }if - }def - /setcolorspace - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - dup 0 get/Indexed eq - { - AGMCORE_distilling - { - /PhotoshopDuotoneList where - { - pop false - }{ - true - }ifelse - }{ - true - }ifelse - { - aload pop 3 -1 roll - AGMCORE_ReplaceMappedColor - 3 1 roll 4 array astore - }if - }{ - AGMCORE_ReplaceMappedColor - }ifelse - }if - DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if - }def - }if - }{ - /adj - { - currentstrokeadjust{ - transform - 0.25 sub round 0.25 add exch - 0.25 sub round 0.25 add exch - itransform - }if - }def - /mo{ - adj moveto - }def - /li{ - adj lineto - }def - /cv{ - 6 2 roll adj - 6 2 roll adj - 6 2 roll adj curveto - }def - /knockout_unitsq - { - 1 setgray - 8 8 1[8 0 0 8 0 0]{}image - }def - /currentstrokeadjust{ - /currentstrokeadjust AGMCORE_gget - }def - /setstrokeadjust{ - /currentstrokeadjust exch AGMCORE_gput - }def - /setcolorspace - { - /currentcolorspace exch AGMCORE_gput - }def - /currentcolorspace - { - /currentcolorspace AGMCORE_gget - }def - /setcolor_devicecolor - { - base_colorspace_type - dup/DeviceGray eq{ - pop setgray - }{ - /DeviceCMYK eq{ - setcmykcolor - }{ - setrgbcolor - }ifelse - }ifelse - }def - /setcolor - { - currentcolorspace 0 get - dup/DeviceGray ne{ - dup/DeviceCMYK ne{ - dup/DeviceRGB ne{ - dup/Separation eq{ - pop - currentcolorspace 3 gx - currentcolorspace 2 get - }{ - dup/Indexed eq{ - pop - currentcolorspace 3 get dup type/stringtype eq{ - currentcolorspace 1 get n_color_components - 3 -1 roll map_index - }{ - exec - }ifelse - currentcolorspace 1 get - }{ - /AGMCORE_cur_err/AGMCORE_invalid_color_space def - AGMCORE_invalid_color_space - }ifelse - }ifelse - }if - }if - }if - setcolor_devicecolor - }def - }ifelse - /sop/setoverprint ldf - /lw/setlinewidth ldf - /lc/setlinecap ldf - /lj/setlinejoin ldf - /ml/setmiterlimit ldf - /dsh/setdash ldf - /sadj/setstrokeadjust ldf - /gry/setgray ldf - /rgb/setrgbcolor ldf - /cmyk[ - /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx - /setcmykcolor load dup type/operatortype ne{/exec cvx}if - ]cvx bdf - level3 AGMCORE_host_sep not and{ - /nzopmsc{ - 6 dict begin - /kk exch def - /yy exch def - /mm exch def - /cc exch def - /sum 0 def - cc 0 ne{/sum sum 2#1000 or def cc}if - mm 0 ne{/sum sum 2#0100 or def mm}if - yy 0 ne{/sum sum 2#0010 or def yy}if - kk 0 ne{/sum sum 2#0001 or def kk}if - AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace - sum 0 eq{0}if - end - setcolor - }bdf - }{ - /nzopmsc/cmyk ldf - }ifelse - /sep/setsepcolor ldf - /devn/setdevicencolor ldf - /idx/setindexedcolor ldf - /colr/setcolor ldf - /csacrd/set_csa_crd ldf - /sepcs/setsepcolorspace ldf - /devncs/setdevicencolorspace ldf - /idxcs/setindexedcolorspace ldf - /cp/closepath ldf - /clp/clp_npth ldf - /eclp/eoclp_npth ldf - /f/fill ldf - /ef/eofill ldf - /@/stroke ldf - /nclp/npth_clp ldf - /gset/graphic_setup ldf - /gcln/graphic_cleanup ldf - /ct/concat ldf - /cf/currentfile ldf - /fl/filter ldf - /rs/readstring ldf - /AGMCORE_def_ht currenthalftone def - /clonedict Adobe_AGM_Utils begin/clonedict load end def - /clonearray Adobe_AGM_Utils begin/clonearray load end def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall - /getrampcolor - { - /indx exch def - 0 1 NumComp 1 sub - { - dup - Samples exch get - dup type/stringtype eq{indx get}if - exch - Scaling exch get aload pop - 3 1 roll - mul add - }for - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /sssetbackground{ - aload pop - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /RadialShade - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /r2 xdf - /c2y xdf - /c2x xdf - /r1 xdf - /c1y xdf - /c1x xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - c1x c2x eq - { - c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope c2y c1y sub c2x c1x sub div def - /theta slope 1 atan def - c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if - c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if - }ifelse - gsave - clippath - c1x c1y translate - theta rotate - -90 rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax xdf - /xMax xdf - /yMin xdf - /xMin xdf - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - /max{2 copy gt{pop}{exch pop}ifelse}bdf - /min{2 copy lt{pop}{exch pop}ifelse}bdf - rampdict begin - 40 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - c1x c1y translate - theta rotate - -90 rotate - /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def - /c1y 0 def - /c1x 0 def - /c2x 0 def - ext0 - { - 0 getrampcolor - c2y r2 add r1 sub 0.0001 lt - { - c1x c1y r1 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2y r1 add r2 le - { - c1x c1y r1 0 360 arc - fill - } - { - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r1 neg def - /p1y c1y def - /p2x r1 def - /p2y c1y def - p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y p1x SS1 div neg def - /SS2 90 theta sub dup sin exch cos div def - /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y p2x SS2 div neg def - r1 r2 gt - { - /L1maxX p1x yMin p1y sub SS1 div add def - /L2maxX p2x yMin p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - c1x c2x sub dup mul - c1y c2y sub dup mul - add 0.5 exp - 0 dtransform - dup mul exch dup mul add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - /hires xdf - hires mul - /numpix xdf - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - /xInc c2x c1x sub numsteps div def - /yInc c2y c1y sub numsteps div def - /rInc r2 r1 sub numsteps div def - /cx c1x def - /cy c1y def - /radius r1 def - np - xInc 0 eq yInc 0 eq rInc 0 eq and and - { - 0 getrampcolor - cx cy radius 0 360 arc - stroke - NumSamples 1 sub getrampcolor - cx cy radius 72 hires div add 0 360 arc - 0 setlinewidth - stroke - }{ - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - cx cy radius 0 360 arc - /cx cx xInc add def - /cy cy yInc add def - /radius radius rInc add def - cx cy radius 360 0 arcn - eofill - rampIndxInc add - }repeat - pop - }ifelse - ext1 - { - c2y r2 add r1 lt - { - c2x c2y r2 0 360 arc - fill - }{ - c2y r1 add r2 sub 0.0001 le - { - c2x c2y r2 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r2 neg def - /p1y c2y def - /p2x r2 def - /p2y c2y def - p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y c2y p1x SS1 div sub def - /SS2 90 theta sub dup sin exch cos div def - /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y c2y p2x SS2 div sub def - r1 r2 lt - { - /L1maxX p1x yMax p1y sub SS1 div add def - /L2maxX p2x yMax p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - grestore - grestore - end - end - end - }ifelse - }bdf - /GenStrips - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /y2 xdf - /x2 xdf - /y1 xdf - /x1 xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - x1 x2 eq - { - y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope y2 y1 sub x2 x1 sub div def - /theta slope 1 atan def - x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if - x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if - } - ifelse - gsave - clippath - x1 y1 translate - theta rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax exch def - /xMax exch def - /yMin exch def - /xMin exch def - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - rampdict begin - 20 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - x1 y1 translate - theta rotate - /xStart 0 def - /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def - /ySpan yMax yMin sub def - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - xStart 0 transform - xEnd 0 transform - 3 -1 roll - sub dup mul - 3 1 roll - sub dup mul - add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - mul - /numpix xdf - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - ext0 - { - 0 getrampcolor - xMin xStart lt - { - xMin yMin xMin neg ySpan rectfill - }if - }if - /xInc xEnd xStart sub numsteps div def - /x xStart def - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - x yMin xInc ySpan rectfill - /x x xInc add def - rampIndxInc add - }repeat - pop - ext1{ - xMax xEnd gt - { - xEnd yMin xMax xEnd sub ySpan rectfill - }if - }if - grestore - grestore - end - end - end - }ifelse - }bdf -}def -/pt -{ - end -}def -/dt{ -}def -/pgsv{ - //Adobe_AGM_Core/AGMCORE_save save put -}def -/pgrs{ - //Adobe_AGM_Core/AGMCORE_save get restore -}def -systemdict/findcolorrendering known{ - /findcolorrendering systemdict/findcolorrendering get def -}if -systemdict/setcolorrendering known{ - /setcolorrendering systemdict/setcolorrendering get def -}if -/test_cmyk_color_plate -{ - gsave - setcmykcolor currentgray 1 ne - grestore -}def -/inRip_spot_has_ink -{ - dup//Adobe_AGM_Core/AGMCORE_name xddf - convert_spot_to_process not -}def -/map255_to_range -{ - 1 index sub - 3 -1 roll 255 div mul add -}def -/set_csa_crd -{ - /sep_colorspace_dict null AGMCORE_gput - begin - CSA get_csa_by_name setcolorspace_opt - set_crd - end -} -def -/map_csa -{ - currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse - {pop}{get_csa_by_name/MappedCSA xdf}ifelse -}def -/setsepcolor -{ - /sep_colorspace_dict AGMCORE_gget begin - dup/sep_tint exch AGMCORE_gput - TintProc - end -}def -/setdevicencolor -{ - /devicen_colorspace_dict AGMCORE_gget begin - Names length copy - Names length 1 sub -1 0 - { - /devicen_tints AGMCORE_gget 3 1 roll xpt - }for - TintProc - end -}def -/sep_colorspace_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - currentdict/Components known{ - Components aload pop - TintMethod/Lab eq{ - 2{AGMCORE_tmp mul NComponents 1 roll}repeat - LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll - }{ - TintMethod/Subtractive eq{ - NComponents{ - AGMCORE_tmp mul NComponents 1 roll - }repeat - }{ - NComponents{ - 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll - }repeat - }ifelse - }ifelse - }{ - ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get - aload pop - }ifelse - end -}def -/sep_colorspace_gray_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get - end -}def -/sep_proc_name -{ - dup 0 get - dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ - pop[/DeviceGray] - /sep_colorspace_gray_proc - }{ - /sep_colorspace_proc - }ifelse -}def -/setsepcolorspace -{ - current_spot_alias{ - dup begin - Name map_alias{ - exch pop - }if - end - }if - dup/sep_colorspace_dict exch AGMCORE_gput - begin - CSA map_csa - /AGMCORE_sep_special Name dup()eq exch(All)eq or store - AGMCORE_avoid_L2_sep_space{ - [/Indexed MappedCSA sep_proc_name 255 exch - {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx - ]setcolorspace_opt - /TintProc{ - 255 mul round cvi setcolor - }bdf - }{ - MappedCSA 0 get/DeviceCMYK eq - currentdict/Components known and - AGMCORE_sep_special not and{ - /TintProc[ - Components aload pop Name findcmykcustomcolor - /exch cvx/setcustomcolor cvx - ]cvx bdf - }{ - AGMCORE_host_sep Name(All)eq and{ - /TintProc{ - 1 exch sub setseparationgray - }bdf - }{ - AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and - AGMCORE_host_sep or - Name()eq and{ - /TintProc[ - MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ - cvx/setcmykcolor cvx - }{ - cvx/setgray cvx - }ifelse - ]cvx bdf - }{ - AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ - /TintProc[ - /dup cvx - MappedCSA sep_proc_name cvx exch - 0 get/DeviceGray eq{ - 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx - }if - /Name cvx/findcmykcustomcolor cvx/exch cvx - AGMCORE_host_sep{ - AGMCORE_is_cmyk_sep - /Name cvx - /AGMCORE_IsSeparationAProcessColor load/exec cvx - /not cvx/and cvx - }{ - Name inRip_spot_has_ink not - }ifelse - [ - /pop cvx 1 - ]cvx/if cvx - /setcustomcolor cvx - ]cvx bdf - }{ - /TintProc{setcolor}bdf - [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt - }ifelse - }ifelse - }ifelse - }ifelse - }ifelse - set_crd - setsepcolor - end -}def -/additive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 - 0 1 numarrays 1 sub - { - 1 exch add/index cvx - c1/get cvx/mul cvx - }for - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/subtractive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 1 - 0 1 numarrays 1 sub - { - 1 3 3 -1 roll add/index cvx - c1/get cvx/sub cvx/mul cvx - }for - /sub cvx - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/exec_tint_transform -{ - /TintProc[ - /TintTransform cvx/setcolor cvx - ]cvx bdf - MappedCSA setcolorspace_opt -}bdf -/devn_makecustomcolor -{ - 2 dict begin - /names_index xdf - /Names xdf - 1 1 1 1 Names names_index get findcmykcustomcolor - /devicen_tints AGMCORE_gget names_index get setcustomcolor - Names length{pop}repeat - end -}bdf -/setdevicencolorspace -{ - dup/AliasedColorants known{false}{true}ifelse - current_spot_alias and{ - 7 dict begin - /names_index 0 def - dup/names_len exch/Names get length def - /new_names names_len array def - /new_LookupTables names_len array def - /alias_cnt 0 def - dup/Names get - { - dup map_alias{ - exch pop - dup/ColorLookup known{ - dup begin - new_LookupTables names_index ColorLookup put - end - }{ - dup/Components known{ - dup begin - new_LookupTables names_index Components put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - new_names names_index 3 -1 roll/Name get put - /alias_cnt alias_cnt 1 add def - }{ - /name xdf - new_names names_index name put - dup/LookupTables known{ - dup begin - new_LookupTables names_index LookupTables names_index get put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - /names_index names_index 1 add def - }forall - alias_cnt 0 gt{ - /AliasedColorants true def - /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def - 0 1 names_len 1 sub{ - /names_index xdf - new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ - /AliasedColorants false def - exit - }{ - new_LookupTables names_index get 0 get null eq{ - dup/Names get names_index get/name xdf - name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq - or or or not{ - /AliasedColorants false def - exit - }if - }if - }ifelse - }for - lut_entry_len 1 eq{ - /AliasedColorants false def - }if - AliasedColorants{ - dup begin - /Names new_names def - /LookupTables new_LookupTables def - /AliasedColorants true def - /NComponents lut_entry_len def - /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def - /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def - currentdict/TTTablesIdx known not{ - /TTTablesIdx -1 def - }if - end - }if - }if - end - }if - dup/devicen_colorspace_dict exch AGMCORE_gput - begin - currentdict/AliasedColorants known{ - AliasedColorants - }{ - false - }ifelse - dup not{ - CSA map_csa - }if - /TintTransform load type/nulltype eq or{ - /TintTransform[ - 0 1 Names length 1 sub - { - /TTTablesIdx TTTablesIdx 1 add def - dup LookupTables exch get dup 0 get null eq - { - 1 index - Names exch get - dup(Cyan)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0 0 0 - } - { - dup(Magenta)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0/exch cvx 0 0 - }{ - (Yellow)eq - { - exch - LookupTables length exch sub - /index cvx - 0 0 3 -1/roll cvx 0 - }{ - exch - LookupTables length exch sub - /index cvx - 0 0 0 4 -1/roll cvx - }ifelse - }ifelse - }ifelse - 5 -1/roll cvx/astore cvx - }{ - dup length 1 sub - LookupTables length 4 -1 roll sub 1 add - /index cvx/mul cvx/round cvx/cvi cvx/get cvx - }ifelse - Names length TTTablesIdx add 1 add 1/roll cvx - }for - Names length[/pop cvx]cvx/repeat cvx - NComponents Names length - TintMethod/Subtractive eq - { - subtractive_blend - }{ - additive_blend - }ifelse - ]cvx bdf - }if - AGMCORE_host_sep{ - Names convert_to_process{ - exec_tint_transform - } - { - currentdict/AliasedColorants known{ - AliasedColorants not - }{ - false - }ifelse - 5 dict begin - /AvoidAliasedColorants xdf - /painted? false def - /names_index 0 def - /names_len Names length def - AvoidAliasedColorants{ - /currentspotalias current_spot_alias def - false set_spot_alias - }if - Names{ - AGMCORE_is_cmyk_sep{ - dup(Cyan)eq AGMCORE_cyan_plate and exch - dup(Magenta)eq AGMCORE_magenta_plate and exch - dup(Yellow)eq AGMCORE_yellow_plate and exch - (Black)eq AGMCORE_black_plate and or or or{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - }if - painted?{exit}if - }{ - 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - exit - }if - }ifelse - /names_index names_index 1 add def - }forall - AvoidAliasedColorants{ - currentspotalias set_spot_alias - }if - painted?{ - /devicen_colorspace_dict AGMCORE_gget/names_index names_index put - }{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx - 0 0 0 0/setcmykcolor cvx - ]cvx ddf - }ifelse - end - }ifelse - } - { - AGMCORE_in_rip_sep{ - Names convert_to_process not - }{ - level3 - }ifelse - { - [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt - /TintProc level3 not AGMCORE_in_rip_sep and{ - [ - Names/length cvx[/pop cvx]cvx/repeat cvx - ]cvx bdf - }{ - {setcolor}bdf - }ifelse - }{ - exec_tint_transform - }ifelse - }ifelse - set_crd - /AliasedColorants false def - end -}def -/setindexedcolorspace -{ - dup/indexed_colorspace_dict exch AGMCORE_gput - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - currentdict devncs - }{ - 1 currentdict sepcs - }ifelse - AGMCORE_host_sep{ - 4 dict begin - /compCnt/Names where{pop Names length}{1}ifelse def - /NewLookup HiVal 1 add string def - 0 1 HiVal{ - /tableIndex xdf - Lookup dup type/stringtype eq{ - compCnt tableIndex map_index - }{ - exec - }ifelse - /Names where{ - pop setdevicencolor - }{ - setsepcolor - }ifelse - currentgray - tableIndex exch - 255 mul cvi - NewLookup 3 1 roll put - }for - [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt - end - }{ - level3 - { - currentdict/Names known{ - [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt - }{ - [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt - }ifelse - }{ - [/Indexed MappedCSA HiVal - [ - currentdict/Names known{ - Lookup dup type/stringtype eq - {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} - {/exec cvx}ifelse - /TintTransform load/exec cvx - }{ - Lookup dup type/stringtype eq - {/exch cvx/get cvx 255/div cvx} - {/exec cvx}ifelse - CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx - }ifelse - ]cvx - ]setcolorspace_opt - }ifelse - }ifelse - end - set_crd - } - { - CSA map_csa - AGMCORE_host_sep level2 not and{ - 0 0 0 0 setcmykcolor - }{ - [/Indexed MappedCSA - level2 not has_color not and{ - dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ - pop[/DeviceGray] - }if - HiVal GrayLookup - }{ - HiVal - currentdict/RangeArray known{ - { - /indexed_colorspace_dict AGMCORE_gget begin - Lookup exch - dup HiVal gt{ - pop HiVal - }if - NComponents mul NComponents getinterval{}forall - NComponents 1 sub -1 0{ - RangeArray exch 2 mul 2 getinterval aload pop map255_to_range - NComponents 1 roll - }for - end - }bind - }{ - Lookup - }ifelse - }ifelse - ]setcolorspace_opt - set_crd - }ifelse - }ifelse - end -}def -/setindexedcolor -{ - AGMCORE_host_sep{ - /indexed_colorspace_dict AGMCORE_gget - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - map_indexed_devn - devn - } - { - Lookup 1 3 -1 roll map_index - sep - }ifelse - end - }{ - Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll - map_index - MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse - }ifelse - end - }{ - level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ - /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin - map_indexed_devn - devn - end - } - { - setcolor - }ifelse - }ifelse -}def -/ignoreimagedata -{ - currentoverprint not{ - gsave - dup clonedict begin - 1 setgray - /Decode[0 1]def - /DataSourcedef - /MultipleDataSources false def - /BitsPerComponent 8 def - currentdict end - systemdict/image gx - grestore - }if - consumeimagedata -}def -/add_res -{ - dup/CSD eq{ - pop - //Adobe_AGM_Core begin - /AGMCORE_CSD_cache load 3 1 roll put - end - }{ - defineresource pop - }ifelse -}def -/del_res -{ - { - aload pop exch - dup/CSD eq{ - pop - {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall - }{ - exch - {1 index undefineresource}forall - pop - }ifelse - }forall -}def -/get_res -{ - dup/CSD eq{ - pop - dup type dup/nametype eq exch/stringtype eq or{ - AGMCORE_CSD_cache exch get - }if - }{ - findresource - }ifelse -}def -/get_csa_by_name -{ - dup type dup/nametype eq exch/stringtype eq or{ - /CSA get_res - }if -}def -/paintproc_buf_init -{ - /count get 0 0 put -}def -/paintproc_buf_next -{ - dup/count get dup 0 get - dup 3 1 roll - 1 add 0 xpt - get -}def -/cachepaintproc_compress -{ - 5 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - /string_size 16000 def - /readbuffer string_size string def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - /LZWFilter - { - exch - dup length 0 eq{ - pop - }{ - ppdict dup length 1 sub 3 -1 roll put - }ifelse - {string_size}{0}ifelse string - }/LZWEncode filter def - { - ReadFilter readbuffer readstring - exch LZWFilter exch writestring - not{exit}if - }loop - LZWFilter closefile - ppdict - end -}def -/cachepaintproc -{ - 2 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - { - ReadFilter 16000 string readstring exch - ppdict dup length 1 sub 3 -1 roll put - not{exit}if - }loop - ppdict dup dup length 1 sub()put - end -}def -/make_pattern -{ - exch clonedict exch - dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform - exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub - exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub - matrix translate exch matrix concatmatrix - 1 index begin - BBox 0 get XStep div cvi XStep mul/xshift exch neg def - BBox 1 get YStep div cvi YStep mul/yshift exch neg def - BBox 0 get xshift add - BBox 1 get yshift add - BBox 2 get xshift add - BBox 3 get yshift add - 4 array astore - /BBox exch def - [xshift yshift/translate load null/exec load]dup - 3/PaintProc load put cvx/PaintProc exch def - end - gsave 0 setgray - makepattern - grestore -}def -/set_pattern -{ - dup/PatternType get 1 eq{ - dup/PaintType get 1 eq{ - currentoverprint sop[/DeviceGray]setcolorspace 0 setgray - }if - }if - setpattern -}def -/setcolorspace_opt -{ - dup currentcolorspace eq{pop}{setcolorspace}ifelse -}def -/updatecolorrendering -{ - currentcolorrendering/RenderingIntent known{ - currentcolorrendering/RenderingIntent get - } - { - Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/Saturation eq - { - /saturation_crd AGMCORE_gget dup null eq - } - { - /perceptual_crd AGMCORE_gget dup null eq - }ifelse - }ifelse - }ifelse - { - pop null - } - { - /RenderingIntent known{null}{Intent}ifelse - }ifelse - }ifelse - Intent ne{ - Intent/ColorRendering{findresource}stopped - { - pop pop systemdict/findcolorrendering known - { - Intent findcolorrendering - { - /ColorRendering findresource true exch - } - { - /ColorRendering findresource - product(Xerox Phaser 5400)ne - exch - }ifelse - dup Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd exch AGMCORE_gput - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd exch AGMCORE_gput - } - { - Intent/Saturation eq - { - /saturation_crd exch AGMCORE_gput - } - { - Intent/Perceptual eq - { - /perceptual_crd exch AGMCORE_gput - } - { - pop - }ifelse - }ifelse - }ifelse - }ifelse - 1 index{exch}{pop}ifelse - } - {false}ifelse - } - {true}ifelse - { - dup begin - currentdict/TransformPQR known{ - currentdict/TransformPQR get aload pop - 3{{}eq 3 1 roll}repeat or or - } - {true}ifelse - currentdict/MatrixPQR known{ - currentdict/MatrixPQR get aload pop - 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq - and and and and and and and and - } - {true}ifelse - end - or - { - clonedict begin - /TransformPQR[ - {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div - 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind - {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div - 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind - {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div - 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind - ]def - /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def - /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def - currentdict end - }if - setcolorrendering_opt - }if - }if -}def -/set_crd -{ - AGMCORE_host_sep not level2 and{ - currentdict/ColorRendering known{ - ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if - }{ - currentdict/Intent known{ - updatecolorrendering - }if - }ifelse - currentcolorspace dup type/arraytype eq - {0 get}if - /DeviceRGB eq - { - currentdict/UCR known - {/UCR}{/AGMCORE_currentucr}ifelse - load setundercolorremoval - currentdict/BG known - {/BG}{/AGMCORE_currentbg}ifelse - load setblackgeneration - }if - }if -}def -/set_ucrbg -{ - dup null eq {pop /AGMCORE_currentbg load}{/Procedure get_res}ifelse - dup currentblackgeneration eq {pop}{setblackgeneration}ifelse - dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse - dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse -}def -/setcolorrendering_opt -{ - dup currentcolorrendering eq{ - pop - }{ - product(HP Color LaserJet 2605)anchorsearch{ - pop pop pop - }{ - pop - clonedict - begin - /Intent Intent def - currentdict - end - setcolorrendering - }ifelse - }ifelse -}def -/cpaint_gcomp -{ - convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not - { - (%end_cpaint_gcomp)flushinput - }if -}def -/cpaint_gsep -{ - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get - { - (%end_cpaint_gsep)flushinput - }if -}def -/cpaint_gend -{np}def -/T1_path -{ - currentfile token pop currentfile token pop mo - { - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 exch rlineto - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 rlineto - }loop -}def -/T1_gsave - level3 - {/clipsave} - {/gsave}ifelse - load def -/T1_grestore - level3 - {/cliprestore} - {/grestore}ifelse - load def -/set_spot_alias_ary -{ - dup inherit_aliases - //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf -}def -/set_spot_normalization_ary -{ - dup inherit_aliases - dup length - /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if - array - //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf - /AGMCORE_SpotAliasAry where{ - pop - AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval - AGMCORE_SpotAliasAry length - }{0}ifelse - AGMCORE_SpotAliasAry2 3 1 roll exch putinterval - true set_spot_alias -}def -/inherit_aliases -{ - {dup/Name get map_alias{/CSD put}{pop}ifelse}forall -}def -/set_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias 3 -1 roll put - }{ - pop - }ifelse -}def -/current_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias get - }{ - false - }ifelse -}def -/map_alias -{ - /AGMCORE_SpotAliasAry2 where{ - begin - /AGMCORE_name xdf - false - AGMCORE_SpotAliasAry2{ - dup/Name get AGMCORE_name eq{ - /CSD get/CSD get_res - exch pop true - exit - }{ - pop - }ifelse - }forall - end - }{ - pop false - }ifelse -}bdf -/spot_alias -{ - true set_spot_alias - /AGMCORE_&setcustomcolor AGMCORE_key_known not{ - //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put - }if - /customcolor_tint 1 AGMCORE_gput - //Adobe_AGM_Core begin - /setcustomcolor - { - //Adobe_AGM_Core begin - dup/customcolor_tint exch AGMCORE_gput - 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not - current_spot_alias and{1 index 4 get map_alias}{false}ifelse - { - false set_spot_alias - /sep_colorspace_dict AGMCORE_gget null ne - {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse - 3 1 roll 2 index{ - exch pop/sep_tint AGMCORE_gget exch - }if - mark 3 1 roll - setsepcolorspace - counttomark 0 ne{ - setsepcolor - }if - pop - not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if - pop - true set_spot_alias - }{ - AGMCORE_&setcustomcolor - }ifelse - end - }bdf - end -}def -/begin_feature -{ - Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put - count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put - {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if -}def -/end_feature -{ - 2 dict begin - /spd/setpagedevice load def - /setpagedevice{get_gstate spd set_gstate}def - stopped{$error/newerror false put}if - end - count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse - countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse - {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if -}def -/set_negative -{ - //Adobe_AGM_Core begin - /AGMCORE_inverting exch def - level2{ - currentpagedevice/NegativePrint known AGMCORE_distilling not and{ - currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ - true begin_feature true{ - <>setpagedevice - }end_feature - }if - /AGMCORE_inverting false def - }if - }if - AGMCORE_inverting{ - [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer - AGMCORE_distilling{ - erasepage - }{ - gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse - /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore - }ifelse - }if - end -}def -/lw_save_restore_override{ - /md where{ - pop - md begin - initializepage - /initializepage{}def - /pmSVsetup{}def - /endp{}def - /pse{}def - /psb{}def - /orig_showpage where - {pop} - {/orig_showpage/showpage load def} - ifelse - /showpage{orig_showpage gR}def - end - }if -}def -/pscript_showpage_override{ - /NTPSOct95 where - { - begin - showpage - save - /showpage/restore load def - /restore{exch pop}def - end - }if -}def -/driver_media_override -{ - /md where{ - pop - md/initializepage known{ - md/initializepage{}put - }if - md/rC known{ - md/rC{4{pop}repeat}put - }if - }if - /mysetup where{ - /mysetup[1 0 0 1 0 0]put - }if - Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put - level2 - {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if -}def -/capture_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put - }if - }if -}def -/restore_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup known{ - Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put - Adobe_AGM_Core/save_mysetup undef - }if - }if - }if -}def -/driver_check_media_override -{ - /PrepsDict where - {pop} - { - Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne - Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq - { - Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and - Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and - }if - { - Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix - }if - }ifelse -}def -AGMCORE_err_strings begin - /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def - /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def - /AGMCORE_invalid_color_space(This job contains an invalid color space. )def -end -/set_def_ht -{AGMCORE_def_ht sethalftone}def -/set_def_flat -{AGMCORE_Default_flatness setflat}def -end -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 -%%Version: 1.0 0 -%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Image 71 dict dup begin put -/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def -/nd{ - null def -}bind def -/AGMIMG_&image nd -/AGMIMG_&colorimage nd -/AGMIMG_&imagemask nd -/AGMIMG_mbuf()def -/AGMIMG_ybuf()def -/AGMIMG_kbuf()def -/AGMIMG_c 0 def -/AGMIMG_m 0 def -/AGMIMG_y 0 def -/AGMIMG_k 0 def -/AGMIMG_tmp nd -/AGMIMG_imagestring0 nd -/AGMIMG_imagestring1 nd -/AGMIMG_imagestring2 nd -/AGMIMG_imagestring3 nd -/AGMIMG_imagestring4 nd -/AGMIMG_imagestring5 nd -/AGMIMG_cnt nd -/AGMIMG_fsave nd -/AGMIMG_colorAry nd -/AGMIMG_override nd -/AGMIMG_name nd -/AGMIMG_maskSource nd -/AGMIMG_flushfilters nd -/invert_image_samples nd -/knockout_image_samples nd -/img nd -/sepimg nd -/devnimg nd -/idximg nd -/ds -{ - Adobe_AGM_Core begin - Adobe_AGM_Image begin - /AGMIMG_&image systemdict/image get def - /AGMIMG_&imagemask systemdict/imagemask get def - /colorimage where{ - pop - /AGMIMG_&colorimage/colorimage ldf - }if - end - end -}def -/ps -{ - Adobe_AGM_Image begin - /AGMIMG_ccimage_exists{/customcolorimage where - { - pop - /Adobe_AGM_OnHost_Seps where - { - pop false - }{ - /Adobe_AGM_InRip_Seps where - { - pop false - }{ - true - }ifelse - }ifelse - }{ - false - }ifelse - }bdf - level2{ - /invert_image_samples - { - Adobe_AGM_Image/AGMIMG_tmp Decode length ddf - /Decode[Decode 1 get Decode 0 get]def - }def - /knockout_image_samples - { - Operator/imagemask ne{ - /Decode[1 1]def - }if - }def - }{ - /invert_image_samples - { - {1 exch sub}currenttransfer addprocs settransfer - }def - /knockout_image_samples - { - {pop 1}currenttransfer addprocs settransfer - }def - }ifelse - /img/imageormask ldf - /sepimg/sep_imageormask ldf - /devnimg/devn_imageormask ldf - /idximg/indexed_imageormask ldf - /_ctype 7 def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall -}def -/pt -{ - end -}def -/dt -{ -}def -/AGMIMG_flushfilters -{ - dup type/arraytype ne - {1 array astore}if - dup 0 get currentfile ne - {dup 0 get flushfile}if - { - dup type/filetype eq - { - dup status 1 index currentfile ne and - {closefile} - {pop} - ifelse - }{pop}ifelse - }forall -}def -/AGMIMG_init_common -{ - currentdict/T known{/ImageType/T ldf currentdict/T undef}if - currentdict/W known{/Width/W ldf currentdict/W undef}if - currentdict/H known{/Height/H ldf currentdict/H undef}if - currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if - currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if - currentdict/D known{/Decode/D ldf currentdict/D undef}if - currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if - currentdict/O known{ - /Operator/O load 1 eq{ - /imagemask - }{ - /O load 2 eq{ - /image - }{ - /colorimage - }ifelse - }ifelse - def - currentdict/O undef - }if - currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if - currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if - currentdict/I known{/Interpolate/I ldf currentdict/I undef}if - currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if - /DataSource load xcheck not{ - DataSource type/arraytype eq{ - DataSource 0 get type/filetype eq{ - /_Filters DataSource def - currentdict/MultipleDataSources known not{ - /DataSource DataSource dup length 1 sub get def - }if - }if - }if - currentdict/MultipleDataSources known not{ - /MultipleDataSources DataSource type/arraytype eq{ - DataSource length 1 gt - } - {false}ifelse def - }if - }if - /NComponents Decode length 2 div def - currentdict/SkipImageProc known not{/SkipImageProc{false}def}if -}bdf -/imageormask_sys -{ - begin - AGMIMG_init_common - save mark - level2{ - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - AGMIMG_&imagemask - }{ - BitsPerComponent ImageMatrix/DataSource load - AGMIMG_&image - }ifelse - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - cleartomark restore - end -}def -/overprint_plate -{ - currentoverprint{ - 0 get dup type/nametype eq{ - dup/DeviceGray eq{ - pop AGMCORE_black_plate not - }{ - /DeviceCMYK eq{ - AGMCORE_is_cmyk_sep not - }if - }ifelse - }{ - false exch - { - AGMOHS_sepink eq or - }forall - not - }ifelse - }{ - pop false - }ifelse -}def -/process_mask -{ - level3{ - dup begin - /ImageType 1 def - end - 4 dict begin - /DataDict exch def - /ImageType 3 def - /InterleaveType 3 def - /MaskDict 9 dict begin - /ImageType 1 def - /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def - /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def - /ImageMatrix[Width 0 0 Height neg 0 Height]def - /NComponents 1 def - /BitsPerComponent 1 def - /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def - /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def - currentdict end def - currentdict end - }if -}def -/use_mask -{ - dup/Mask known {dup/Mask get}{false}ifelse -}def -/imageormask -{ - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - } - { - save mark - level2 AGMCORE_host_sep not and{ - currentdict - Operator/imagemask eq DeviceN_PS2 not and{ - imagemask - }{ - AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ - [/Separation/Black/DeviceGray{}]setcolorspace - /Decode[Decode 1 get Decode 0 get]def - }if - use_mask{ - process_mask image - }{ - DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and - { - Names convert_to_process not{ - 2 dict begin - /imageDict xdf - /names_index 0 def - gsave - imageDict write_image_file{ - Names{ - dup(None)ne{ - [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace - Operator imageDict read_image_file - names_index 0 eq{true setoverprint}if - /names_index names_index 1 add def - }{ - pop - }ifelse - }forall - close_image_file - }if - grestore - end - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - /Adobe_AGM_OnHost_Seps where{ - pop imagemask - }{ - currentgray 1 ne{ - currentdict imageormask_sys - }{ - currentoverprint not{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }ifelse - }{ - BitsPerComponent ImageMatrix - MultipleDataSources{ - 0 1 NComponents 1 sub{ - DataSource exch get - }for - }{ - /DataSource load - }ifelse - Operator/colorimage eq{ - AGMCORE_host_sep{ - MultipleDataSources level2 or NComponents 4 eq and{ - AGMCORE_is_cmyk_sep{ - MultipleDataSources{ - /DataSource DataSource 0 get xcheck - { - [ - DataSource 0 get/exec cvx - DataSource 1 get/exec cvx - DataSource 2 get/exec cvx - DataSource 3 get/exec cvx - /AGMCORE_get_ink_data cvx - ]cvx - }{ - DataSource aload pop AGMCORE_get_ink_data - }ifelse def - }{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - /DataSource load - filter_cmyk 0()/SubFileDecode filter def - }ifelse - /Decode[Decode 0 get Decode 1 get]def - /MultipleDataSources false def - /NComponents 1 def - /Operator/image def - invert_image_samples - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }{ - MultipleDataSources NComponents AGMIMG_&colorimage - }ifelse - }{ - true NComponents colorimage - }ifelse - }{ - Operator/image eq{ - AGMCORE_host_sep{ - /DoImage true def - currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse - { - AGMCORE_black_plate not Operator/imagemask ne and{ - /DoImage false def - currentdict ignoreimagedata - }if - }if - 1 AGMCORE_&setgray - DoImage - {currentdict imageormask_sys}if - }{ - use_mask{ - process_mask image - }{ - image - }ifelse - }ifelse - }{ - Operator/knockout eq{ - pop pop pop pop pop - currentcolorspace overprint_plate not{ - knockout_unitsq - }if - }if - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/sep_imageormask -{ - /sep_colorspace_dict AGMCORE_gget begin - CSA map_csa - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_avoid_L2_sep_space{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - }if - AGMIMG_ccimage_exists - MappedCSA 0 get/DeviceCMYK eq and - currentdict/Components known and - Name()ne and - Name(All)ne and - Operator/image eq and - AGMCORE_producing_seps not and - level2 not and - { - Width Height BitsPerComponent ImageMatrix - [ - /DataSource load/exec cvx - { - 0 1 2 index length 1 sub{ - 1 index exch - 2 copy get 255 xor put - }for - }/exec cvx - ]cvx bind - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Name findcmykcustomcolor - customcolorimage - }{ - AGMCORE_producing_seps not{ - level2{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ - [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - currentdict imageormask - }{ - currentdict - Operator/imagemask eq{ - imageormask - }{ - sep_imageormask_lev1 - }ifelse - }ifelse - }{ - AGMCORE_host_sep{ - Operator/knockout eq{ - currentdict/ImageMatrix get concat - knockout_unitsq - }{ - currentgray 1 ne{ - AGMCORE_is_cmyk_sep Name(All)ne and{ - level2{ - Name AGMCORE_IsSeparationAProcessColor - { - Operator/imagemask eq{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor - }if - }{ - invert_image_samples - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - [/Separation Name[/DeviceGray] - { - sep_colorspace_proc AGMCORE_get_ink_data - 1 exch sub - }bind - ]AGMCORE_&setcolorspace - /sep_tint AGMCORE_gget AGMCORE_&setcolor - }if - }ifelse - currentdict imageormask_sys - }{ - currentdict - Operator/imagemask eq{ - imageormask_sys - }{ - sep_image_lev1_sep - }ifelse - }ifelse - }{ - Operator/imagemask ne{ - invert_image_samples - }if - currentdict imageormask_sys - }ifelse - }{ - currentoverprint not Name(All)eq or Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - currentcolorspace 0 get/Separation ne{ - [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - }if - currentoverprint - MappedCSA 0 get/DeviceCMYK eq and - Name AGMCORE_IsSeparationAProcessColor not and - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse - Name(All)ne and{ - imageormask_l2_overprint - }{ - currentdict imageormask - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end -}def -/colorSpaceElemCnt -{ - mark currentcolor counttomark dup 2 add 1 roll cleartomark -}bdf -/devn_sep_datasource -{ - 1 dict begin - /dataSource xdf - [ - 0 1 dataSource length 1 sub{ - dup currentdict/dataSource get/exch cvx/get cvx/exec cvx - /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx - }for - ]cvx bind - end -}bdf -/devn_alt_datasource -{ - 11 dict begin - /convProc xdf - /origcolorSpaceElemCnt xdf - /origMultipleDataSources xdf - /origBitsPerComponent xdf - /origDecode xdf - /origDataSource xdf - /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def - /DataSource origMultipleDataSources - { - [ - BitsPerComponent 8 idiv origDecode length 2 idiv mul string - 0 1 origDecode length 2 idiv 1 sub - { - dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch - origDataSource exch get 0()/SubFileDecode filter - BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx - }for - ]bind cvx - }{origDataSource}ifelse 0()/SubFileDecode filter def - [ - origcolorSpaceElemCnt string - 0 2 origDecode length 2 sub - { - dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div - 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx - }for - /convProc load/exec cvx - origcolorSpaceElemCnt 1 sub -1 0 - { - /dup cvx 2/add cvx/index cvx - 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx - }for - ]bind cvx 0()/SubFileDecode filter - end -}bdf -/devn_imageormask -{ - /devicen_colorspace_dict AGMCORE_gget begin - CSA map_csa - 2 dict begin - dup - /srcDataStrs[3 -1 roll begin - AGMIMG_init_common - currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse - { - Width Decode length 2 div mul cvi - { - dup 65535 gt{1 add 2 div cvi}{exit}ifelse - }loop - string - }repeat - end]def - /dstDataStr srcDataStrs 0 get length string def - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_producing_seps not{ - level3 not{ - Operator/imagemask ne{ - /DataSource[[ - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def - /MultipleDataSources true def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - }if - }if - currentdict imageormask - }{ - AGMCORE_host_sep{ - Names convert_to_process{ - CSA get_csa_by_name 0 get/DeviceCMYK eq{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - filter_cmyk 0()/SubFileDecode filter def - /MultipleDataSources false def - /Decode[1 0]def - /DeviceGray setcolorspace - currentdict imageormask_sys - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate{ - /DataSource - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - /MultipleDataSources false def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - currentdict imageormask_sys - }{ - gsave - knockout_unitsq - grestore - currentdict consumeimagedata - }ifelse - }ifelse - } - { - /devicen_colorspace_dict AGMCORE_gget/names_index known{ - Operator/imagemask ne{ - MultipleDataSources{ - /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def - /MultipleDataSources false def - }{ - /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def - }ifelse - invert_image_samples - }if - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - currentdict imageormask - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end - end -}def -/imageormask_l2_overprint -{ - currentdict - currentcmykcolor add add add 0 eq{ - currentdict consumeimagedata - }{ - level3{ - currentcmykcolor - /AGMIMG_k xdf - /AGMIMG_y xdf - /AGMIMG_m xdf - /AGMIMG_c xdf - Operator/imagemask eq{ - [/DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ]/DeviceCMYK{}]setcolorspace - AGMIMG_c 0 ne{AGMIMG_c}if - AGMIMG_m 0 ne{AGMIMG_m}if - AGMIMG_y 0 ne{AGMIMG_y}if - AGMIMG_k 0 ne{AGMIMG_k}if - setcolor - }{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - [/Indexed - [ - /DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ] - /DeviceCMYK{ - AGMIMG_k 0 eq{0}if - AGMIMG_y 0 eq{0 exch}if - AGMIMG_m 0 eq{0 3 1 roll}if - AGMIMG_c 0 eq{0 4 1 roll}if - } - ] - 255 - { - 255 div - mark exch - dup dup dup - AGMIMG_k 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_y 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_m 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_c 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - counttomark 1 add -1 roll pop - } - ]setcolorspace - }ifelse - imageormask_sys - }{ - write_image_file{ - currentcmykcolor - 0 ne{ - [/Separation/Black/DeviceGray{}]setcolorspace - gsave - /Black - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Yellow/DeviceGray{}]setcolorspace - gsave - /Yellow - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Magenta/DeviceGray{}]setcolorspace - gsave - /Magenta - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Cyan/DeviceGray{}]setcolorspace - gsave - /Cyan - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - close_image_file - }{ - imageormask - }ifelse - }ifelse - }ifelse -}def -/indexed_imageormask -{ - begin - AGMIMG_init_common - save mark - currentdict - AGMCORE_host_sep{ - Operator/knockout eq{ - /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ - /CSA get get_csa_by_name - }{ - /Names get - }ifelse - overprint_plate not{ - knockout_unitsq - }if - }{ - Indexed_DeviceN{ - /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ - indexed_image_lev2_sep - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }{ - AGMCORE_is_cmyk_sep{ - Operator/imagemask eq{ - imageormask_sys - }{ - level2{ - indexed_image_lev2_sep - }{ - indexed_image_lev1_sep - }ifelse - }ifelse - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - level2{ - Indexed_DeviceN{ - /indexed_colorspace_dict AGMCORE_gget begin - }{ - /indexed_colorspace_dict AGMCORE_gget dup null ne - { - begin - currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse - get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and - AGMCORE_in_rip_sep and{ - [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] - setcolorspace - }if - end - } - {pop}ifelse - }ifelse - imageormask - Indexed_DeviceN{ - end - }if - }{ - Operator/imagemask eq{ - imageormask - }{ - indexed_imageormask_lev1 - }ifelse - }ifelse - }ifelse - cleartomark restore - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/indexed_image_lev2_sep -{ - /indexed_colorspace_dict AGMCORE_gget begin - begin - Indexed_DeviceN not{ - currentcolorspace - dup 1/DeviceGray put - dup 3 - currentcolorspace 2 get 1 add string - 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub - { - dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put - }for - put setcolorspace - }if - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - end end -}def - /OPIimage - { - dup type/dicttype ne{ - 10 dict begin - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /ImageType 1 def - /Decode[0 1 def] - currentdict - end - }if - dup begin - /NComponents 1 cdndf - /MultipleDataSources false cdndf - /SkipImageProc{false}cdndf - /Decode[ - 0 - currentcolorspace 0 get/Indexed eq{ - 2 BitsPerComponent exp 1 sub - }{ - 1 - }ifelse - ]cdndf - /Operator/image cdndf - end - /sep_colorspace_dict AGMCORE_gget null eq{ - imageormask - }{ - gsave - dup begin invert_image_samples end - sep_imageormask - grestore - }ifelse - }def -/cachemask_level2 -{ - 3 dict begin - /LZWEncode filter/WriteFilter xdf - /readBuffer 256 string def - /ReadFilter - currentfile - 0(%EndMask)/SubFileDecode filter - /ASCII85Decode filter - /RunLengthDecode filter - def - { - ReadFilter readBuffer readstring exch - WriteFilter exch writestring - not{exit}if - }loop - WriteFilter closefile - end -}def -/spot_alias -{ - /mapto_sep_imageormask - { - dup type/dicttype ne{ - 12 dict begin - /ImageType 1 def - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /MultipleDataSources false def - }{ - begin - }ifelse - /Decode[/customcolor_tint AGMCORE_gget 0]def - /Operator/image def - /SkipImageProc{false}def - currentdict - end - sep_imageormask - }bdf - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_colorAry xddf - /customcolor_tint AGMCORE_gget - << - /Name AGMIMG_colorAry 4 get - /CSA[/DeviceCMYK] - /TintMethod/Subtractive - /TintProc null - /MappedCSA null - /NComponents 4 - /Components[AGMIMG_colorAry aload pop pop] - >> - setsepcolorspace - mapto_sep_imageormask - }ndf - Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_override false put - current_spot_alias{dup 4 get map_alias}{false}ifelse - { - false set_spot_alias - /customcolor_tint AGMCORE_gget exch setsepcolorspace - pop - mapto_sep_imageormask - true set_spot_alias - }{ - //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec - }ifelse - }bdf -}def -/snap_to_device -{ - 6 dict begin - matrix currentmatrix - dup 0 get 0 eq 1 index 3 get 0 eq and - 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop - { - 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def - 0 0 transform - AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - itransform/AGMIMG_llY exch def/AGMIMG_llX exch def - 1 1 transform - AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - itransform/AGMIMG_urY exch def/AGMIMG_urX exch def - [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat - }{ - }ifelse - end -}def -level2 not{ - /colorbuf - { - 0 1 2 index length 1 sub{ - dup 2 index exch get - 255 exch sub - 2 index - 3 1 roll - put - }for - }def - /tint_image_to_color - { - begin - Width Height BitsPerComponent ImageMatrix - /DataSource load - end - Adobe_AGM_Image begin - /AGMIMG_mbuf 0 string def - /AGMIMG_ybuf 0 string def - /AGMIMG_kbuf 0 string def - { - colorbuf dup length AGMIMG_mbuf length ne - { - dup length dup dup - /AGMIMG_mbuf exch string def - /AGMIMG_ybuf exch string def - /AGMIMG_kbuf exch string def - }if - dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop - } - addprocs - {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage - end - }def - /sep_imageormask_lev1 - { - begin - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - { - 255 mul round cvi GrayLookup exch get - }currenttransfer addprocs settransfer - currentdict imageormask - }{ - /sep_colorspace_dict AGMCORE_gget/Components known{ - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ - {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer - currentdict imageormask - }{ - currentcolortransfer - {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }{ - MappedCSA 0 get/DeviceGray eq{ - {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer - currentdict imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - /sep_image_lev1_sep - { - begin - /sep_colorspace_dict AGMCORE_gget/Components known{ - Components aload pop - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - {AGMIMG_c mul 1 exch sub} - {AGMIMG_m mul 1 exch sub} - {AGMIMG_y mul 1 exch sub} - {AGMIMG_k mul 1 exch sub} - }{ - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} - }ifelse - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end - }def - /indexed_imageormask_lev1 - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - currentdict - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceGray eq{ - {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }ifelse - }ifelse - }ifelse - end end - }def - /indexed_image_lev1_sep - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end end - }def -}if -end -systemdict/setpacking known -{setpacking}if -%%EndResource -currentdict Adobe_AGM_Utils eq {end} if -%%EndProlog -%%BeginSetup -Adobe_AGM_Utils begin -2 2010 Adobe_AGM_Core/ds gx -Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx -currentdict Adobe_AGM_Utils eq {end} if -%%EndSetup -%%Page: 1 1 -%%EndPageComments -%%BeginPageSetup -%ADOBeginClientInjection: PageSetup Start "AI11EPS" -%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 -%ADOEndClientInjection: PageSetup Start "AI11EPS" -Adobe_AGM_Utils begin -Adobe_AGM_Core/ps gx -Adobe_AGM_Utils/capture_cpd gx -Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx -%ADOBeginClientInjection: PageSetup End "AI11EPS" -/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 - - - - application/postscript - - - Print - - - - - 2011-09-14T17:17:28-04:00 - 2011-09-14T17:17:28-04:00 - 2011-09-14T17:17:28-04:00 - Adobe Illustrator CS5.1 - - - - 256 - 60 - JPEG - /9j/4AAQSkZJRgABAgEA8ADwAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAA8AAAAAEA AQDwAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAPAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUPqMxhsLiUOsZSNiJGNFU06k+ 2Txi5ANeUkRNc6efs9ozFm1C1LHckzAknNxxeR+ToDhJ/ij82q2X/Lfa/wDI1ceI9x+SPA84/NdH c2tvIsyalaxuhqreso3wHcVwn5JjjMTYlEfF6PmlejdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdiqVeangTy5qLzuY4RA5kcLyIFOoWorl2nvxBXe1ZxcCP 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 - - - - - - xmp.iid:DB8FD065152068118083E201C16005E3 - xmp.did:DB8FD065152068118083E201C16005E3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:05801174072068118DBBD524E8CB12B3 - xmp.did:05801174072068118DBBD524E8CB12B3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:D27F11740720681191099C3B601C4548 - 2008-04-17T14:19:15+05:30 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F1174072068118D4ED246B3ADB1C6 - 2008-05-15T16:23:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 - 2008-05-15T17:10:45-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:EF7F117407206811A46CA4519D24356B - 2008-05-15T22:53:33-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F07F117407206811A46CA4519D24356B - 2008-05-15T23:07:07-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:35:43-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:40:59-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to <unknown> - - - saved - xmp.iid:FA7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:26:55-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FB7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FC7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:20-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FD7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:30:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FE7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:31:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B233668C16206811BDDDFD38D0CF24DD - 2008-05-16T12:23:46-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B333668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:27:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B433668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:46:13-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F11740720681197C1BF14D1759E83 - 2008-05-16T15:47:57-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F87F11740720681197C1BF14D1759E83 - 2008-05-16T15:51:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F11740720681197C1BF14D1759E83 - 2008-05-16T15:52:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FA7F117407206811B628E3BF27C8C41B - 2008-05-22T13:28:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FF7F117407206811B628E3BF27C8C41B - 2008-05-22T16:23:53-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:07C3BD25102DDD1181B594070CEB88D9 - 2008-05-28T16:45:26-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:F87F1174072068119098B097FDA39BEF - 2008-06-02T13:25:25-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BB1DBF8F242B6F84 - 2008-06-09T14:58:36-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F117407206811ACAFB8DA80854E76 - 2008-06-11T14:31:27-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:0180117407206811834383CD3A8D2303 - 2008-06-11T22:37:35-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811818C85DF6A1A75C3 - 2008-06-27T14:40:42-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:04801174072068118DBBD524E8CB12B3 - 2011-05-11T11:44:14-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:05801174072068118DBBD524E8CB12B3 - 2011-05-11T13:52:20-04:00 - Adobe Illustrator CS4 - / - - - converted - from application/postscript to application/vnd.adobe.illustrator - - - saved - xmp.iid:DB8FD065152068118083E201C16005E3 - 2011-09-14T17:17:28-04:00 - Adobe Illustrator CS5.1 - / - - - - - - Print - - - False - True - 1 - - 7.000000 - 2.000000 - Inches - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 0.000000 - - - Black - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - CMYK Red - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - CMYK Yellow - CMYK - PROCESS - 0.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Green - CMYK - PROCESS - 100.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Cyan - CMYK - PROCESS - 100.000000 - 0.000000 - 0.000000 - 0.000000 - - - CMYK Blue - CMYK - PROCESS - 100.000000 - 100.000000 - 0.000000 - 0.000000 - - - CMYK Magenta - CMYK - PROCESS - 0.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=15 M=100 Y=90 K=10 - CMYK - PROCESS - 14.999998 - 100.000000 - 90.000000 - 10.000002 - - - C=0 M=90 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 90.000000 - 85.000000 - 0.000000 - - - C=0 M=80 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 80.000000 - 95.000000 - 0.000000 - - - C=0 M=50 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 50.000000 - 100.000000 - 0.000000 - - - C=0 M=35 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 35.000004 - 85.000000 - 0.000000 - - - C=5 M=0 Y=90 K=0 - CMYK - PROCESS - 5.000001 - 0.000000 - 90.000000 - 0.000000 - - - C=20 M=0 Y=100 K=0 - CMYK - PROCESS - 19.999998 - 0.000000 - 100.000000 - 0.000000 - - - C=50 M=0 Y=100 K=0 - CMYK - PROCESS - 50.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=75 M=0 Y=100 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=85 M=10 Y=100 K=10 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 10.000002 - - - C=90 M=30 Y=95 K=30 - CMYK - PROCESS - 90.000000 - 30.000002 - 95.000000 - 30.000002 - - - C=75 M=0 Y=75 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 75.000000 - 0.000000 - - - C=80 M=10 Y=45 K=0 - CMYK - PROCESS - 80.000000 - 10.000002 - 45.000000 - 0.000000 - - - C=70 M=15 Y=0 K=0 - CMYK - PROCESS - 70.000000 - 14.999998 - 0.000000 - 0.000000 - - - C=85 M=50 Y=0 K=0 - CMYK - PROCESS - 85.000000 - 50.000000 - 0.000000 - 0.000000 - - - C=100 M=95 Y=5 K=0 - CMYK - PROCESS - 100.000000 - 95.000000 - 5.000001 - 0.000000 - - - C=100 M=100 Y=25 K=25 - CMYK - PROCESS - 100.000000 - 100.000000 - 25.000000 - 25.000000 - - - C=75 M=100 Y=0 K=0 - CMYK - PROCESS - 75.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=50 M=100 Y=0 K=0 - CMYK - PROCESS - 50.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=35 M=100 Y=35 K=10 - CMYK - PROCESS - 35.000004 - 100.000000 - 35.000004 - 10.000002 - - - C=10 M=100 Y=50 K=0 - CMYK - PROCESS - 10.000002 - 100.000000 - 50.000000 - 0.000000 - - - C=0 M=95 Y=20 K=0 - CMYK - PROCESS - 0.000000 - 95.000000 - 19.999998 - 0.000000 - - - C=25 M=25 Y=40 K=0 - CMYK - PROCESS - 25.000000 - 25.000000 - 39.999996 - 0.000000 - - - C=40 M=45 Y=50 K=5 - CMYK - PROCESS - 39.999996 - 45.000000 - 50.000000 - 5.000001 - - - C=50 M=50 Y=60 K=25 - CMYK - PROCESS - 50.000000 - 50.000000 - 60.000004 - 25.000000 - - - C=55 M=60 Y=65 K=40 - CMYK - PROCESS - 55.000000 - 60.000004 - 65.000000 - 39.999996 - - - C=25 M=40 Y=65 K=0 - CMYK - PROCESS - 25.000000 - 39.999996 - 65.000000 - 0.000000 - - - C=30 M=50 Y=75 K=10 - CMYK - PROCESS - 30.000002 - 50.000000 - 75.000000 - 10.000002 - - - C=35 M=60 Y=80 K=25 - CMYK - PROCESS - 35.000004 - 60.000004 - 80.000000 - 25.000000 - - - C=40 M=65 Y=90 K=35 - CMYK - PROCESS - 39.999996 - 65.000000 - 90.000000 - 35.000004 - - - C=40 M=70 Y=100 K=50 - CMYK - PROCESS - 39.999996 - 70.000000 - 100.000000 - 50.000000 - - - C=50 M=70 Y=80 K=70 - CMYK - PROCESS - 50.000000 - 70.000000 - 80.000000 - 70.000000 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - C=0 M=0 Y=0 K=90 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 89.999405 - - - C=0 M=0 Y=0 K=80 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 79.998795 - - - C=0 M=0 Y=0 K=70 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 69.999702 - - - C=0 M=0 Y=0 K=60 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 59.999104 - - - C=0 M=0 Y=0 K=50 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 50.000000 - - - C=0 M=0 Y=0 K=40 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 39.999401 - - - C=0 M=0 Y=0 K=30 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 29.998802 - - - C=0 M=0 Y=0 K=20 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 19.999701 - - - C=0 M=0 Y=0 K=10 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 9.999103 - - - C=0 M=0 Y=0 K=5 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 4.998803 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - C=0 M=75 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 75.000000 - 100.000000 - 0.000000 - - - C=0 M=10 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 10.000002 - 95.000000 - 0.000000 - - - C=85 M=10 Y=100 K=0 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 0.000000 - - - C=100 M=90 Y=0 K=0 - CMYK - PROCESS - 100.000000 - 90.000000 - 0.000000 - 0.000000 - - - C=60 M=90 Y=0 K=0 - CMYK - PROCESS - 60.000004 - 90.000000 - 0.003099 - 0.003099 - - - - - - - - - Adobe PDF library 9.00 - - - - - - - - - - - - - - - - - - - - - - - - - % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 -%ADOEndClientInjection: PageSetup End "AI11EPS" -%%EndPageSetup -1 -1 scale 0 -101.598 translate -pgsv -[1 0 0 1 0 0 ]ct -gsave -np -gsave -0 0 mo -0 101.598 li -441.385 101.598 li -441.385 0 li -cp -clp -[1 0 0 1 0 0 ]ct -14.7505 90.4185 mo -8.4873 90.4185 3.98047 88.9546 0 84.9165 cv -4.21436 80.7603 li -7.2583 83.8042 10.5947 84.7407 14.8672 84.7407 cv -20.311 84.7407 23.4717 82.3989 23.4717 78.3599 cv -23.4717 76.5454 22.9448 75.0239 21.833 74.0288 cv -20.7793 73.0337 19.7256 72.6245 17.2671 72.2729 cv -12.3506 71.5708 li -8.95557 71.1021 6.26318 69.9321 4.44873 68.2339 cv -2.3999 66.3022 1.40479 63.6685 1.40479 60.2739 cv -1.40479 53.0161 6.67285 48.0405 15.3359 48.0405 cv -20.8379 48.0405 24.7012 49.4458 28.2715 52.7817 cv -24.2324 56.7622 li -21.6572 54.3032 18.6719 53.5425 15.1602 53.5425 cv -10.2432 53.5425 7.55078 56.3521 7.55078 60.0396 cv -7.55078 61.561 8.01904 62.9077 9.13135 63.9028 cv -10.1846 64.8394 11.8823 65.5415 13.814 65.8345 cv -18.5552 66.5366 li -22.418 67.1216 24.584 68.0591 26.3398 69.6392 cv -28.6226 71.6294 29.7349 74.6138 29.7349 78.1851 cv -29.7349 85.8521 23.4717 90.4185 14.7505 90.4185 cv -cp -false sop -/0 -[/DeviceCMYK] /CSA add_res -.74609 .67578 .66797 .89844 cmyk -f -46.3564 90.0669 mo -40.7959 90.0669 38.2202 86.0864 38.2202 81.814 cv -38.2202 65.4829 li -34.8257 65.4829 li -34.8257 60.9175 li -38.2202 60.9175 li -38.2202 51.9038 li -44.1909 51.9038 li -44.1909 60.9175 li -49.9268 60.9175 li -49.9268 65.4829 li -44.1909 65.4829 li -44.1909 81.521 li -44.1909 83.687 45.2441 84.9741 47.4688 84.9741 cv -49.9268 84.9741 li -49.9268 90.0669 li -46.3564 90.0669 li -cp -f -73.2227 76.9556 mo -66.2573 76.9556 li -62.7451 76.9556 60.9307 78.5356 60.9307 81.228 cv -60.9307 83.9214 62.6284 85.4429 66.3745 85.4429 cv -68.6572 85.4429 70.3545 85.2671 71.9351 83.7456 cv -72.813 82.8677 73.2227 81.4624 73.2227 79.355 cv -73.2227 76.9556 li -cp -73.3398 90.0669 mo -73.3398 87.3745 li -71.1738 89.5405 69.1255 90.4185 65.438 90.4185 cv -61.75 90.4185 59.292 89.5405 57.4775 87.7251 cv -55.9556 86.145 55.1362 83.8628 55.1362 81.3452 cv -55.1362 76.3706 58.5894 72.7993 65.3794 72.7993 cv -73.2227 72.7993 li -73.2227 70.6929 li -73.2227 66.9468 71.3496 65.1323 66.7256 65.1323 cv -63.4478 65.1323 61.8672 65.8931 60.2285 68.0005 cv -56.3066 64.313 li -59.1162 61.0347 62.043 60.0396 66.9595 60.0396 cv -75.0957 60.0396 79.1929 63.4927 79.1929 70.2241 cv -79.1929 90.0669 li -73.3398 90.0669 li -cp -f -100.088 90.4185 mo -93.4155 90.4185 86.8599 86.3208 86.8599 75.1997 cv -86.8599 64.0786 93.4155 60.0396 100.088 60.0396 cv -104.186 60.0396 107.054 61.2104 109.863 64.1958 cv -105.766 68.1753 li -103.893 66.1274 102.43 65.3657 100.088 65.3657 cv -97.8057 65.3657 95.874 66.3022 94.5864 68.0005 cv -93.2983 69.6392 92.8301 71.7466 92.8301 75.1997 cv -92.8301 78.6528 93.2983 80.8188 94.5864 82.4575 cv -95.874 84.1548 97.8057 85.0913 100.088 85.0913 cv -102.43 85.0913 103.893 84.3306 105.766 82.2817 cv -109.863 86.2036 li -107.054 89.189 104.186 90.4185 100.088 90.4185 cv -cp -f -135.44 90.0669 mo -127.128 76.3706 li -122.738 81.3452 li -122.738 90.0669 li -116.768 90.0669 li -116.768 48.3911 li -122.738 48.3911 li -122.738 74.0874 li -134.27 60.3911 li -141.527 60.3911 li -131.226 72.0386 li -142.815 90.0669 li -135.44 90.0669 li -cp -f -148.959 90.0669 mo -148.959 48.3911 li -176.411 48.3911 li -176.411 55.6499 li -157.095 55.6499 li -157.095 65.4243 li -173.543 65.4243 li -173.543 72.6831 li -157.095 72.6831 li -157.095 82.8091 li -176.411 82.8091 li -176.411 90.0669 li -148.959 90.0669 li -cp -.953125 .761719 .101563 .011719 cmyk -f -200.525 90.0669 mo -194.906 80.936 li -189.345 90.0669 li -180.214 90.0669 li -190.75 74.4976 li -180.624 59.5718 li -189.755 59.5718 li -194.906 68.2925 li -200.115 59.5718 li -209.246 59.5718 li -199.12 74.4976 li -209.656 90.0669 li -200.525 90.0669 li -cp -f -225.576 90.4185 mo -219.489 90.4185 211.938 87.1401 211.938 74.7896 cv -211.938 62.4399 219.489 59.2202 225.576 59.2202 cv -229.791 59.2202 232.951 60.5083 235.644 63.3179 cv -230.493 68.4683 li -228.912 66.771 227.566 66.0688 225.576 66.0688 cv -223.762 66.0688 222.357 66.7124 221.245 68.0591 cv -220.074 69.522 219.547 71.5708 219.547 74.7896 cv -219.547 78.0093 220.074 80.1167 221.245 81.5796 cv -222.357 82.9263 223.762 83.5698 225.576 83.5698 cv -227.566 83.5698 228.912 82.8677 230.493 81.1704 cv -235.644 86.2622 li -232.951 89.0718 229.791 90.4185 225.576 90.4185 cv -cp -f -259.056 90.0669 mo -259.056 71.4536 li -259.056 67.4146 256.48 66.0688 254.08 66.0688 cv -251.681 66.0688 249.163 67.4731 249.163 71.4536 cv -249.163 90.0669 li -241.554 90.0669 li -241.554 48.3911 li -249.163 48.3911 li -249.163 62.3813 li -251.212 60.2739 253.787 59.2202 256.48 59.2202 cv -263.152 59.2202 266.665 63.9028 266.665 70.3413 cv -266.665 90.0669 li -259.056 90.0669 li -cp -f -290.311 77.1899 mo -284.281 77.1899 li -281.53 77.1899 280.009 78.4771 280.009 80.6431 cv -280.009 82.7505 281.413 84.1548 284.398 84.1548 cv -286.506 84.1548 287.853 83.979 289.198 82.6919 cv -290.018 81.9312 290.311 80.7017 290.311 78.8286 cv -290.311 77.1899 li -cp -290.486 90.0669 mo -290.486 87.4331 li -288.438 89.4819 286.506 90.3599 282.994 90.3599 cv -279.54 90.3599 277.023 89.4819 275.209 87.6675 cv -273.57 85.9692 272.692 83.5112 272.692 80.8188 cv -272.692 75.9604 276.028 71.98 283.111 71.98 cv -290.311 71.98 li -290.311 70.4585 li -290.311 67.1216 288.672 65.6587 284.633 65.6587 cv -281.706 65.6587 280.36 66.3608 278.779 68.1753 cv -273.921 63.4341 li -276.906 60.1567 279.833 59.2202 284.926 59.2202 cv -293.472 59.2202 297.92 62.8491 297.92 69.9897 cv -297.92 90.0669 li -290.486 90.0669 li -cp -f -323.848 90.0669 mo -323.848 71.6294 li -323.848 67.4731 321.214 66.0688 318.814 66.0688 cv -316.414 66.0688 313.722 67.4731 313.722 71.6294 cv -313.722 90.0669 li -306.112 90.0669 li -306.112 59.5718 li -313.547 59.5718 li -313.547 62.3813 li -315.536 60.2739 318.346 59.2202 321.155 59.2202 cv -324.199 59.2202 326.658 60.2153 328.355 61.9126 cv -330.813 64.3706 331.457 67.2388 331.457 70.5757 cv -331.457 90.0669 li -323.848 90.0669 li -cp -f -350.947 66.0688 mo -346.44 66.0688 345.973 69.9321 345.973 73.9702 cv -345.973 78.0093 346.44 81.9312 350.947 81.9312 cv -355.455 81.9312 355.981 78.0093 355.981 73.9702 cv -355.981 69.9321 355.455 66.0688 350.947 66.0688 cv -cp -350.187 101.598 mo -345.504 101.598 342.285 100.662 339.124 97.6177 cv -343.865 92.8179 li -345.563 94.4565 347.26 95.1597 349.836 95.1597 cv -354.401 95.1597 355.981 91.9399 355.981 88.8374 cv -355.981 85.7358 li -353.991 87.9595 351.709 88.7788 348.724 88.7788 cv -345.738 88.7788 343.163 87.7837 341.465 86.0864 cv -338.598 83.2183 338.363 79.2974 338.363 73.9702 cv -338.363 68.644 338.598 64.7808 341.465 61.9126 cv -343.163 60.2153 345.797 59.2202 348.782 59.2202 cv -352.001 59.2202 354.108 60.0981 356.216 62.4399 cv -356.216 59.5718 li -363.591 59.5718 li -363.591 88.9546 li -363.591 96.271 358.381 101.598 350.187 101.598 cv -cp -f -388.992 68.7026 mo -388.173 66.8882 386.476 65.5415 383.9 65.5415 cv -381.325 65.5415 379.627 66.8882 378.808 68.7026 cv -378.34 69.8149 378.164 70.6343 378.105 71.98 cv -389.695 71.98 li -389.637 70.6343 389.461 69.8149 388.992 68.7026 cv -cp -378.105 77.1899 mo -378.105 81.1118 380.506 83.979 384.778 83.979 cv -388.114 83.979 389.754 83.0435 391.686 81.1118 cv -396.31 85.6187 li -393.207 88.7202 390.222 90.4185 384.72 90.4185 cv -377.521 90.4185 370.613 87.1401 370.613 74.7896 cv -370.613 64.8394 375.998 59.2202 383.9 59.2202 cv -392.388 59.2202 397.188 65.4243 397.188 73.7944 cv -397.188 77.1899 li -378.105 77.1899 li -cp -f -398.175 32.2979 mo -441.385 32.2979 li -441.385 23.4107 li -398.175 23.4107 li -398.175 32.2979 li -.828125 .570313 0 0 cmyk -f -398.175 20.852 mo -441.385 20.852 li -441.385 11.9629 li -398.175 11.9629 li -398.175 20.852 li -.660156 .226563 0 0 cmyk -f -434.528 0 mo -405.025 0 li -401.241 0 398.175 3.18066 398.175 7.1001 cv -398.175 9.4082 li -441.385 9.4082 li -441.385 7.1001 li -441.385 3.18066 438.315 0 434.528 0 cv -cp -.394531 0 .00781298 0 cmyk -f -398.175 34.8023 mo -398.175 37.1103 li -398.175 41.0293 401.241 44.2105 405.025 44.2105 cv -423.479 44.2105 li -423.479 53.5962 li -432.536 44.2105 li -434.528 44.2105 li -438.315 44.2105 441.385 41.0293 441.385 37.1103 cv -441.385 34.8023 li -398.175 34.8023 li -.953125 .757813 .109375 .011719 cmyk -f -406.281 44.2105 mo -405.025 44.2105 li -401.241 44.2105 398.175 41.0293 398.175 37.1103 cv -398.175 34.8023 li -415.359 34.8023 li -406.281 44.2105 li -.811765 .643137 .0941176 .0117647 cmyk -f -428.819 20.852 mo -398.175 20.852 li -398.175 11.9629 li -437.395 11.9629 li -428.819 20.852 li -.560784 .192157 0 0 cmyk -f -417.775 32.2979 mo -398.175 32.2979 li -398.175 23.4107 li -426.351 23.4107 li -417.775 32.2979 li -.705882 .482353 0 0 cmyk -f -%ADOBeginClientInjection: EndPageContent "AI11EPS" -userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse -%ADOEndClientInjection: EndPageContent "AI11EPS" -grestore -grestore -pgrs -%%PageTrailer -%ADOBeginClientInjection: PageTrailer Start "AI11EPS" -[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 -%ADOEndClientInjection: PageTrailer Start "AI11EPS" -[ -[/CSA [/0 ]] -] del_res -Adobe_AGM_Image/pt gx -Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx -currentdict Adobe_AGM_Utils eq {end} if -%%Trailer -Adobe_AGM_Image/dt get exec -Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec -%%EOF -%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.1.0 %%For: (Jin Yang) () %%Title: (se-logo-outline.eps) %%CreationDate: 9/14/11 5:17 PM %%Canvassize: 16383 %AI9_DataStream %Gb"-6BoaO]E@CSir'/\t!CU=n?MGE+>[i7H-*:>b_4gKH#S0==VE+"@4pF/5jQ$79[F:2XaK3UcRLqth3P)fMd_is5F#.mLr/35: %++O(Tc.`cdDEn,mTAR2,BB*9bV`S\#q;R=IHi*+fh_/a"gCPQ.].Z)"KiIK8.j"!%pX(;q&+)T1rPSLk+$T_ie&SZLI/j05j1CAE %^An#bmSC#Nh#6:!DrI2;GQ7C!h7J_t]\C/IrUkZ/0/e;%IsZS?m`k:^Vt[AZ6X09u!j2@ep4p-G^A6k$n,MFmVk;lBJl)JOC@Rq2 %LSg_Er0tNPs5E9f5CE(b=4$*!DuT`!I/Q3W1&mR=rp%bkcS,Xg#ki94O8nnaIK'9sj_t.sf5JBOqu,\RY)Frpc!]olQ=usq=MuThL#aF)-6Xp],u"M5JPD<#+5BkYQ+7W'2KX_i1I`1 %oAMVMs+PdpAb#NOq`>V\*W1rK_>4m[44>\m?qR@N[I#o^N@eR#qLTU9k#\cjs7GRC[r4M/>e2lop2<1/rMH]iLK=3eNSm!Es,-g9 %Y/7,%It$uT\dfRbqo@:51u82l=8[[-r#Usd_s=ccAJTH?GB\lC>Oh\j_om?/P(\eqbiL'*nf"s0+8GP=e&cTd23$S9[j49XVB5pW?)aE;;n2Ieoo>E6@M"!?`)uiDVNX=UbZcV[V=u\/4 %NHL7OK^&>@cZtOr(3u582a>D/kMC:;\SqChm('9]f&.XOL#^).fFkA1O.*iD'uU'V(620lQtM,F`UVo*r.Lj*ouGtFF+iIiXG,]P %hn4i*,s8C/IXIpM!;9[f8(W^sa0Uf6Gi!OKGi[Y,loFfuhodV;H>sDm_)aP:`Cq6l50]kbDfL1")f%0Wj7mjopf[NSF`;Hb$cQr< %4$7T^#0(Q"@Dru#2XEG6$KHa+$XH]&GO?Kt3kq$E%=>6.U1<5t@kE*j\'E=kp\_olkFK`Ib\PLF_^ukmL[hk@G(.GYTt@`"/=i\n %qi'?gpC7/ll%VR:e(ZA!(+Brm+Qkb)^WA:&CQ4OE]YZqk&A^(GR\@rQd_"bb*Yir0&pdc<9%q %j_(pYDqb6hZeb38p-8SE0D9aI[/]sbE8](0J,Yl$&(>T)48d@hb+J>?rt".2@2IpC5DS9=F3H@WQiAs6pt"K7C!&/5pa?(D'p-2; %#.Cc0:VY4a;tQ^XUAr.hE_&*+:B1,8haaK)rrT&uhr-N8] %T%57k5DaMe$_*[(I+[NUJH+Xo/GMGYO8(gZVV)tqEQ;dbp/>`+EsqR?^-*[)s68DN940\K(#SG6#gsfDT9H$^BfBOQ2)n/6[bS(,0b$esPQ)BV)"/]'`?!GG'Y52s*HbJ%JYj01Gm+)+HJk;YL-1U+o>@t!du]\dS5rTNGs3)`?F'HPEPZ&XBa,"T?$ %'-'a=:cmVe+9p4CAAgj,AR8;io,%d4$Y#R+9BJ*e3jd>)Jq**->Xq$;s7#H/bXZGq599#od7ho.e74r:898n6'r*g@+YnC"VcY%u %&$re)^*mkB-HCX4a"kL1_=8Y6!fkdVZE=B$`^p^:HWh6<-!1OoLS!FBGV"YHXero-ZAT@!*j""cYZPiR<[K>'n1%?%HX'o_3F+:k %+LWC$T4:FENk!(*OnN+#7pZMeeK0400;oC8%lcno0VB%b=-T<29RD"qT_Su*CQX2K7MhS9gkXOrdK%.Y9mq&JedLLC[P%INJ56P: %l8mq44e:>rldJ;$ %csl+0*)q8Nj?b;Bf;<.GbC:\lel/TC:hsu!aDu/Us2kPTpN`C8pq7"-:#drQ=5Xh.;-%1u,ql=p*^fQ$_l/N<3rV_N/I5HG[q<$^e %]XdpaVq59C[C^qbO8o1@ld%f-q\oRC^V9R'mH6G&YMXg'Z\o85hnB$]k)R30LZtT5s7"M72o#7bl$[oKTna/.Gk:@`G?qNio(p6_ %GQ7:-Vsb[EqH*,lIsCqVNo7>,=)\*=hn4\(C2Go^'ofs'o_itf@Ish*=hNZZL$kul?M+*cn*d^RhL,+\qqIFQ(gOGl@&CB(>]BhM&T/2s0#BA:@sac*W21S+(fLR#]YCZ7aHhnMWWu$X^3Gbts;R5hXj3 %PeB4F3P#NS,pf1-_70JX_*fJ@#1cc/`bhF9g`?eW1-^%tffQJk"H`)9q1#%boH6Aejfogj64Z&Xlt;r=nJf79426PknAd4K7pYU- %KG[US6Oq(g:"Y2+fS;gR`[P))*KH=<`Y@U'l-R2)]=Nf1bR9TrniqU[Hf(pK@fID8o"-(g<_T?$W]"\T#B0a`,XNZtQ[[Z>dHuT(Kk/I'A-Uf+?(o %QB;srQ;SJ3Q]i5MQP:7$QaP0aep!H:aO8F(&;FLJ@SDP5Aq;ibiW/7/4#*QgV[TDt:"lIMg8>%;,HR)_l16^D$+cO$NG[f5DkLq0 %*?;[%..?2b^^PQfVkuRDaglrO\BVXucNbl=1;TtN(fVnCel:dp9*+j,CW[.0^)Y9-Yee1#_73qMi[2KgntrWHI'_So2fLAMCpCL+ %YU3ctC!MH!kR_tMr=EK>e:6h5huCFbfaODn]?VF`Y+P?5luh^%O\SiA[qRpBoKsQX4sU, %m\DC`_P.&()Z8-NZmbO?j@(MUZ8$g7.,.2D/]temSuf3RQ-*.M:<_R\X%7:'uu6nWun5U-GuK/>Ynj8D-Vg8_IT.M#+L$ %KPcZdN,aetN-1)'N-UA/N.$Y7N.Hq?N.le;7So50OjT:&&di(nj!8+\iMBp/j!J7`j!S>M0o2XTsll>FA72Ou-*]Dng=Yi,O&0E-asH"V5q>`TF2"8spsrKLWCq(4O&[/\hOs%+9WanWVUjT+oq8GS^.Q'g]WTGa %q`!EIJb-f]5CE8*c"E,Na3Wgb7.MlO'MF2'mLL&G'YtL&'Zk[Si]&W?68p,+-\@$`Wh#6KUYoGl!.rRf\V^DVBT(4O_t!e9-/taI %;5;h08Jp^+t.KrQ>%J0fc^ %AnZQLl.&CkA5FmDa^@ookt!Q=$4,4=B]Faj"Y%<"QuQ1S4E0&HY>u]Jfk/PSKcMWR1`bm\G'?bC=(L,YOO8pgl9t49l4+E#'Nc.r %]PNmsV3G.A[F>d$2J^tVj^>r6.*&U.XA"U6f7Um8.:j_/[,#]$F)jt'K,RDuc*[u8%D+=9QnHSWZ4hL.1-.Ml@Y.2WG[Lo?(2.65 %jruYKi>"7E0]*,&ruJ2^"r8XT:D1#KTQ^nB3C/]:j*4W9Gn1pS,9?BqUTkf9%%jCr7bkDh;FNTMB?XFF;^?-kVZ,'j,gA#(;;8<* %$>ds)[V,dpnZY9%Sq+a!?mG,J6Z6A=A_>oI2L9o9*GkZ\B\*8U_2btA#)GVN,*?8rK7R@E8hVOSoZ'-th"bFE=nY`"(JF+QOoJr] %`]:Rl/*H&kc3c=X5dR1u[soU]!?USI95>eKOhaJb[k/=?EVtHr'U\qoX2op4j"opc>lc#*!F+5:L(]mtRS.*;MQ13B^fL48GmZ;R %Ut*!LR$&Vj5SOF@7rBNP"kauU9%kR3?1/6]'c$$nH.Io7=oQk9"[oqY#AQ(.$U@T %b1,Nf$[/TZ[MKgTXVi*&2Lo'N^.TTW"<\luNZHU:#SR+X:*a'%T`mJ4K8:.k#(%ImFuO9!+T(WdKX1hG>G.09LbWlg$rA1\SUfH9 %JFDoV#B.sR#khL)/ffIK3M;!$51dD:*U!+#6E(;g:#/%EXqc>u8%1O$qk%8HXgtKI;nEf\3g@IolX(Y14\04VSGl>RC2J!=2?5JE]bg[$=3ml3 %hZNP]/bm0(TIT[BT9sFVFX6:qSb:@5flmn_n5/Fj`1CL%Ib=(u0J3-JY1>0pMW=#@hVC] %m0%knQIBbil2Rfn+5W+LOWcE1-)?OZ(Zosq1]IB`4)R>R/jP)%3.XIq&"lO&+pGcR%f@8,h9U2/%s2iI_tsAB5OA.AS^J/B>f6bY %M*l#eXs#12,.GK/1U4khX:UfX7!*QIe.h.\2FK_R&P]'e'@Fla;8u*49P.!SG`#m:eg(>5%,?Snjt$Ya'="'\;!s!-14bBN*/-'f %KIATAS:qf+@TUX2K>hCA0/\(F"_d()ZH"mkVrdhNbDVT7:=Xr=W1"Y=k-u=b)#$nDX';2rED=/"es3 %o=k?[km0m[QisY+3[&+0kbs8lclXY/CojLd4kEg5p9=*>/mZIV/1"d<+PZA&_^'q$9dE"#-n2 %[0Ml,0@"_RgFWrX>:.-.I_]-hT6s_rh?.nhqfc %R)mG;O+pAI5RFARD1=[LSpeWSqq:(ich:Ihla-N7lhgLfd6/@9auYCo7$5P= %@[250rW12kGi&#>i02@@m%=!X>8D8eU9_I72J5Z;qf5U*8spJA%4/I"<32AAMVgKRfNKUR+@1'G9/6t$d!tmZeoNU*Db/+7_E'DP %@^.5N*pN`$fW/pG:]InQ-/I,^AJ\nm?9?%^1a);N&S %=0^mWeseUes-Yq41t#-@f$JnU9dd:9L5tn2eB_NgP!mR@7;^i8"9,Q[2?.,S3Jn!u+BF"U=\lM9$eU7u5V3%Y[0jie)=XLZ%p1U' %Y_D#.gh^Y[jI83ScKh1`-t>;iMc,QVs;6ck6A01m-Tm#$%!R)+d.GOD2Kl-+A2cF<)c %GO!I43qN$)I*IAK\aT(.3g(8dMT/A6-!=28:DGOX8]s %eIp&>L'0A6_5`=2l;s:t=?:6'R7_'@Q_CPsUbZ%VP0"+88'Iu+amnY:=;GrbZMP#@GIFa6Z8MJK/Xt9g:.d]!,kVudI[UPl8mITX!:L!q\nO(2s69J` %Na4ZpdN.akg"$5!Q)X=SWD]$S=t4Bg`7;KYN/ffe(JV(nkDXo^I%n)4rF5Z;e4sI;R*0oH-U0f"r,R2-ja3fDG:DDGgf3e[C?Y9U %hLRkpG6+^;ed`4oI*G:.g"A]@*@Xd<1tU=!H&hf8K'2\ekVKDii+]2b[r+6HG1:^(#49p/nnG(F>#dgBcT3p'c>oZ+PJg"q81/?ohaL3M2+/orANlSQ=kl56&W9!8F*)"=kjpDTg@`n7J+$s5]M"tQSLf`d-_ %bP#Duou2k3]L'H;@GB!.&\e$uqCoLFL_."4nmJ,B#5('13c5T=`kf,u1F"6ou>.%&];BHW4o!V0sF'<25'm %OiSh2a:&YI8uctdca@:4V3Xh-m:WoaRB;jb#0Yh2-jsn?DE96&Oi#U4=2KnBiq-+Tb@444'!hAT@MXL#,k'GrT&.Cm>_>0C8K`@r %!)8i0"CRBd4Uu?Rg49;o!VC!Hi@l+CeF:5=`*fL4>;imd1'k1S)-[QpJsVkGA>]@jXR6gjcHR4!]HjQ"\C<1.fUnqDeC4S %;jcu\d1-uk&OR$H6WsDYGXJRr^^nn^ZD%loMco0t\59=`]p\2d*Q#5'>[R0-VSP_f4Iok88Ki>)3EA-C:G$s'iR<[U@J,H)Eq2aj %*[?f=V$jlK5,*OckpIq![.*?!>cj^M)HbgN;,$)[,XWV\C7@uY!\\7l^m6B,YR&ri/F]I?=e[C.:BlpT%5AsB%r %4Hfn2Zf&a?MZ=HEp2NYnc5UgV&dm2&m?^OKRLldj8k1Up#Z7]DQ\?jS=OqVZAF;;oG>_J$gHu;1M`CgWV\QNF5'qm.\?C.n.-dKm*aIH0n2Pa3g3EJo*.Sq9NW=W$HgiRFKA*[.eoLl %]Y%N!=#7Q6T@W[mg0RM.<4'>^(-6821#&a>Gn3%A.p$oJlD@g-_g7:9c[b:mc,5=cMQE\>\sON$@SS?\e3>qpO7jP(QkCh9;?:TC %is&DuE6b%rm/rmW#t8%WUrA%<6.5uj[m3K;If"0%XRh6\q41T/nAau\R17I-CiI*H*oi4HrmBi(_8#aLiQPq8S3*/a]Y'IU#`K"7X/)Dq[?8,#ZR*I)!FH/*QKbAmI./dSd$miAlW^jqS.q(#^c!$^-74K2c*dm+BQNhr@ %#0Z%bO[&CGA\M-&"?ilRFa8('gJ]srVZ+,*-B7Z(h^H1hWn1oa7@0msg3!_/[b\+/PDQm')-B%XDp9pZ0VY"7M^ %\nkSZR;K"J\$`Co?X(WZ`eTbG>S^el@qOq`_FYg@P_-m^4eh!\X]^aj:>P] %#>Y2iBceZGZCLH9o0"4IH\of<#o\2Ja*.`.MV?Q+<+n9Gqb1'QoP1RJ*m2>H7)^SZ5aMt`R5?8X6F6-\g;'(FEe@iDtF)FMt`8C<6IS'e(E^I[cFiqK1Z+L?$%[\$8qK[fq0d, %_T.\)WIU-6+El#XF%uiX2 %P%1(bl^uu$E5OKTGEcLelS%^N\D`k;449A2e[k7.eXqXmdlKZeUOhNKkB@^UM'W(n6)/k+EB4qJF'LhO`W-(`#j?;]!T\e:F@!4f %r6/c3q4d-6RbB+pH`e#@pA(Zq]q4gE^0K+U?e"!igok\b:5/"O='3"5_0"r.0&iJVXDO:?X/pOf8FNu&T?S+Y(W@Ukir1lrV!Sf(lL#R'ZF][DEho\T=)iS`iB^(r=rUFq78Aq('/hh %pI9$h5SmLDE4'^4!]mdTKa8@fZgr5EETKI/=!>Y9eoW:n/ks^!PeWdoX"1[DOtJo*OK5ghfpj[]q12F"^6qCs\@%FDE)N"2"n]ME %E\!!4hSdtqn>]frP,oE_W=rEe%E]kY@$YZ`47i1Vqn6Wko>DI&HaA$,Fn;bC?^^:g\GLZdr,B=FY[)W)?LOaP]sGn/)D4Z[FdLM]]e5#PgfKuoKH/;cMnTMi`^"#6kk':l&O%8fS\!m3I4R]E7kcag/Xldsja)eX!b-O1; %4Mo(Vguo(9W!4pNbrf)\]A;7?2!*'f?QIB^e>6$u5=[G@^H.ifqJn;l=5@1abdA0%AL0Jc(N]SV)bOh`oH0["R,K+*PJW-[2U9%% %Hu]g/]8UaBP*%@p1%f.uE;$0/1NtUV?_h5X?B93r%]"1!C=hipo%k'DWhd>od5O0eK/re&cGC,a8=nQ9S3-e.ZkH&RHH8R7L %\mLgWYPX].II:!6B/'[^VQH0&eLb^IWJR[RQ,M3_g?LD(opJHl9MJ==-_hGD4QMkNP=0Jh@Wpk^.jrE[c\TU`qu1/MXWJk6 %]&*_@"n$ABF\JfaUibm^E&/+bB#;;7@GHEqbS"(_6DU#GB1$ki&X"+?/K>p#UnuDEg07b<"0JMu2%6j*1G.+2Q:=U3YT0"uh`Z#o %mn'LFnX:urkIktAn$5?&Rf.@,1>e:9k!q*']lX_Bj]JU)-16Wb1aG]s-*mLhP`!31=;-G/,*dCobP]iYEar'eunAR#luLk1gts3X8WafP/t %Nh>FV/0>`k]C`L;S4`(SL[EMW^%1[PD!mJZ0HNH6Gl!gJ0X^K30sf7%H"WMCB9*=CUA*,0pf2^gTDo-Pp`J&]8+lLbjn+YNLK]QZ@!)@a;)0G\&BV %&e@L_nRkjYH8b\.KLiGZiHed-pT#UA'f-!d`Pjk5Zn-h4qi`iOdsX3hN2@W&QXsGcH<)3$Xq!WOWEn0>?s-i+IuGXl8KpY+g0Y`1 %36_""RaZm`gN'ETA:JA1N+$6894<*V3(pneA><9+N3$p=$:dQGjD4208uH=!IcI&lTDC>XB&m:gPf)X3(it"V50[YZmcSt`Q*Ud/34PQj3%5Jp'aoi.Q@r$^sO5;:im2U"(L(TYk#gfUcE<,9(fGdTnq1M360UV&"I;8FX28OmO@_4XBVmVC?FQ>3K?E3Q1\$1Ze#FIQA9-<\sPWdGWt00L5Dj_6UlnK/g7de+b!(8fo"92?P5T]VlA#PlfYDo\`Fu` %Mjna_A:VW'^/r7a0^$*k4g(g`1chpg$&PE=86k=>C.1o18126"LdDFR<\bXcTtj8'0+K8@$VBeT178V8HN`_4F?n7q9m]:1UrUOd %<*a";D=$qT]uI>A*.+gJi*k&L*]r3HV?6@j7,gE!Hm+%8!0aX[j-@=S0@=)hE.+UWe %d5K7D=k\ZMM%rP@g8]L]Y-,>Am>Wa&XKN6Z?"#$Gb;F15BX,_1F/\XHV+]!s&dGHJH*mF1klB3jXjWhQCpj=iXccf3'oqN:PI<-^'G:>Z1:f`rld)7uGEcE9>qqdo595kNj9,ca).b %oe`YdY"C"K]/&[gk10NrLS@GcXT9arSm;m%H!M5$ZL.n)&qG!dnDqCs'J8Ic'_H@Tpg\3%?[8<3Cb+n$Uj!qeVRb;lSHI)/drGP?4ohRFm+$WY)/D[t[U;Cs;/4Y$mM()g/U-'%*qIM+K$,IY/4?O!@C\aaH&PP+Hi- %m+Kfm5"/./B_4m7Q33P(4IL[=M.F+(F@WcR]?bA+i=:$!ZJk,#me%ul],CZRdfr6i-%Gi9om94Y:7T\8\pe<0i(<&k'92QJkm-as-\tS:i,W$VWNeHN0$YE+,k"P>-jkiHVhH]3Vh8;qhb^mA*@WLZ;Of %L^t[N<_GTWZ7fZ0/cPTL[@L9<4fQjieVK9\*)_XI*lM-"-YH@@Qd57l)X9?4b0a.KRQFGrX\3es:=Yie=81aSq?ubmS(=H_'[>0L %.%'9AA?-NnTq^t`i_cjo)QOG7<,**JOMj.X7C,mgWDq\`I.`&!QcKmrk=G^5jq^8G)EGjn,3W8VkEoHVSSR:+F,Q]4NLXM(l]]@C %!E_YjsD;N:p@<^bd]T%IuWLKj?]$ub>p?L&f=LECZ>tch[CA0iPi2F([[=5-p>O>tG;PplXfM\RbbaQXIc/<=NQt1_,6shocI)5)Zc1RjXc!,?on1^Lh]01Tb^N %]]hGb/_N/<)-p\YTV,;O7p#bjm,L6J$]k%.c?&>WG&Dd"J0Kbf3Ppm*>`f1/;!D!Jj*fIjPB>&SB@SK73bEjoZ$4E4]>je:)ORZL4^ %eH\j>f5>kII*2pTD9D/T/=kC1H"]4(S:"Fe@*N#*Z22pGD:K0J]?sG;!S'VEhFr7.*U3&E$+;85((t:XS4-j%79L=8;2f'0(-+Ga %YcO_VBoK*MXt$sT@d?b23HHCOp1!?VJ!gYICQ:k?L=]7=C1?R3(PVR\HrTl?rkgY$isuP'89^:/8H%fH1F]?hRZ3 %^SI9VTBs>0*_ICA<(#>`B?:%:_k]/C=g^gqJZK+A(2qX\=[Obdh&--P9X:eE6ch\E-Y:aC,Cc6\=iol)bC6R\(#\%"`SgRN3K&1> %k5N49<.,up#1+uQ.5O<^.P";:1%F^;%3_C/P%O?AiJVHM*OA6p`5T54G!N?/o)FtX2,VV7*j,7[-G=nnJF,WJfYP5pM're+YC,A"N+)!$q$'@ %F)/HsXK`e\P3@L6>(Z*hS4VR.AgeFXJdeSHHtfPtg1R5>=C\ %@WN3Zf/&Q4jI5ZG[ZY9.er`gJWZfGYdTuQA(;62+=`LjJBIeQ!eoVB!k6d$6jcEPNu<1$]#pN13O1T %k9>!Y79<\KV*d;a4Wa,E^N5-p5o0Vf"-[?o\;/W.lR_//l;-CjX)`5!3K%c[5,1crImVe1f=0V]k1%68,^HauMT>"?l7D]q1X_UQ %4(<4@nGS[p,E0&Rd3VsF+IDUrSG"C$hu9_8>)^#=Td\XBVrg9`LIXJMmf[WNk.[-@?&V9<`UDQRQ#TQep-f%6ZclK?cJS9De$+6X %T21p,*$UiW:n8bqb!L6'5UQh5b/,]4^\G$bZM'4pXu7P:T;i6LfFt5s6B>Zk]Wo;W%;igq)M%:D)gr9KQD*NHiWDL<&V<,bcE9f'^Hp"eKsRGg5]>d%sJk(>&YM'R^<8I'1FI.4`t'J71m:9PcY@[Di(L!49g %dcL@Y/qt11S*p__;=]:"l.]+e5#]&K$^"%ebgJ<.(]LIRE5g\=(QY^ir`i(6csj$3>WX*=c/u8SeH*:%"[eM*MflD9H6fbPmOBr4 %UQ5GKR+4l9HSeAIqUp;q.4N[:?Y"hHF+6nW'NTK3Mma50#9M67Knb.pj]/)oL7l>:RKn\R:Y-G3D/BeqYjpJG0S@EAo %Qqp=l`H33ERBjA*(/A/tXLHg([8YZkZX)$F.;=(@9X23%d4K654ElS?apj6AJp^CW=!d[8,X+e,gJZZrRT3;HAEGN)C6kfd;Ia>t21e:jIj&!naY=E5e&jEWH^Q\J1^J+m %phf)Qoc$ZCflHf,aT(M)1-]$f#q/$?QrS*NHneEBpnbeKWPR+Y)9Z8&IC>(uOE;@4.`%o40l3IAZqiBdP:KrsH)Nk4\srSi4*)b2 %DG8pB.*EfWEu0-M_0;c;^T6G2%WQ`BfYc`M*&kc)1QlWkKUtZtBr%=gld^g)WN)4`[HopXZffiGXn:,9s-^K^LJen!@hoPfgQSp` %$g$W$SP?)#c8ZnN]U-=\KV&sb!k]*=rbsUj>n51XT&/Db<\8Cgd]M9I?Xn`?3P068TUeo/k[]$m*.H]3;^=_f]UV3hu/RF]s<=S.G$qG\5YK#KU^P0#918d+leje3*4Mo7RPd$T!]^Gou@2H9;dMgbB-]@D7(CW\k^o.>d]/j\R'D,/M4 %/oT6ChP@QlZb;.DHF8e%O76Wdl,*V6XuW@&M(?i-ObcJ,VuH#.%[]ZV[' %4Ym#)Ag1R"&"Db,6en0UT-Y$gs %T=HK:Uc`<51Q.=HBqWd"R3lY0IhE6)T0EcnU&b3MNjlS!$,WQt,\^&sl&E>uNaOmbRZ.,f'#.P1V(RM&?WgCb;P/bfI\$gcs>@4R-'mp:\24NuQmgM0N?d %8^(W-m/)kQZ'6GY3MO-oP@]RdUGlNFGUhg8[b7Ma*7LVLbla9bdn=hQ>=WbrfN6B.\n1*8Yfj1PB&eb[G-K5+l;ViP3d^(\@8AJ^ %UQsE0NOHe.XkRS\C[J+GG%%p=(JVE11&$5sD7X>ubknWlpHgSnfSH^\k%Tmk1q;E#/_NO$bpIImCa.9-B.YK%Pk9cZJM`,fE,J): %X6$+nE=jHmoSCj7&;KQ-k,-&4"g;*PW\lYK5iW(FMcH*m[8o$pC&gPl8[O,\Aig`5cPT!u8&VSS$MnqCgTL/h$D6OPI)lt*F0/NW*dhVlC# %?h::p/f.CVb"):_.N&F*K=Q41^lj`MP[sH]jt[l!./d_k4]0T@WI8g:\`Vhur)]>?&*Sr9d\#7Y^@+-"r^L_d/rStkVD?kc#tU%h %RFJ#f<>*g&OIkbW3GPJhfPt[f&=J_lIXf]d%f<;>rKG^E3IAi^m+-VD#fq*h$pAR7f`O[!WEHo,jpC.G5m"0#5hqR)d;h$a2V#M. %ZSQY4Z^.5ok!)6MPGZ)WJ%\CFrU@JrOqa:\]-H:orU=H?+82^T&R;K\I(7CIfWqLEL2^hH %*L\K6*M+<@/gNA4fB"m&5*=g7KS;Wn3ku!L[$iB*H2UBLnET@N_.?O9j:%i;e3%UMZptSLln;ot]CiuVkKS.ge7q%:*!bdrG:hE9 %F=t+1cS^V!,hD:Wa"+":e^<[DdV+Q-`:NM$r?&EUkuri"T6:P6Z>@aJC0a]Zq82:Adn&`pf.UG?M-esMrD;_LQ''8PI.6^%K6:t" %q&!IF,Kj.NKU+eg_rR0moD-0lJ?%G%'Yf'bR?/g3H!-s.foH74bNn!u.Y,BU'nB&RMJ^'0rhl>\89cBuo%\pA1T %&e>lm!sRiJ!Ps.IA&ESr-W<8HEaI_QX;RWK`ci"sH39YhD5!=\`URWFshCi%bB;^i+_un\_Oo^&@Hrm>#Vpr3G@@r>4U_ %hr-Mc^\QFGc_'*Bq>^rqq"FUBhoSCHPf(PRH+o?b`]J,-""$OD0r!"^HrnbpN0/J5?j/^M1[,9a= %c$$_pqWf6[s8(d=f3%i]GQ/IYrP.;5:*I7QLj&&FD5Vo.Q\F/Z*:KYVC$rU8YccmN3UV-/qa]m2H><#*TI#4(pO.Q\^71fd_)`VD %k&6e;R.0q._)As4akt"&p+A_!VE*%#.a[5UhXY(>U\VVV0e %QXf!)!q[L'3R;XN-\(SX%O9E_![eWEN$8Q"nfG-E%p5%DrKN0]dAGRn":V$`%?)8IQC]2YBjU00Z]ft_-e;J60+E*u0XDP' %Jg6f:W@b>(&LdUa:@/[l;h2SU1V%-536O$&KFbk:W;duM5j'?`#nDE-6Ga>nq-`YW8t$^[CDnBfFa34G?=]jaYD/"V?f7` %!BYP/P^=*XmL"%?\BnO[$tKr'+T+T.-`;=(5E-VN/ETc`02f@X2sPq6]+@=5;NHD_GB:R0,6BCsWgl`!Fj(us$a0b.i"]q5@$>q>/8[g?b+&/L %"jSeL%PXumP4(,.@eVJUn711I>"a3IgKBIC+8am#m5CB^!*B?(7gM7^RCil#pNB$R/#7OG+m9er[sS6X(6Ak'JiHtHg+*F4G*j,( %=G%0t8!>)PODGl`b9huKTud;C1/5Kd(GLt-#`I%5U5oa+*TcGeQsmf^[]0dJ]!'SlpF/?d'm6S-P+EnKW.YX7j%Z2/LW>U?0f`XX %=32]gg&iso]9B5Dom0(>WtZ,)HCbC!3Ycn4B8OE2n17Ht,'4CQidMl%\=hR.+/DNB+G0QC'2Ff[YWiW_oOXR-UNWtr=d9q %G(hAXa*'#`m27un@k$87)"`O#%qXDG@3=OFeRr9^5l<,@=Z;oaPc&.^*Ftf`9?04a(>anCj83HH %;9I8E1GdjIT*)0>i2FfDnae<(OdcH*"p0nlFq0n1$B.uq3R!lpiMA;NrS7#8$56IS>hU\g3=J.5lj$!d@Dm_ZoM)P)PsO$nDTB`Z %`"QJCJCkm9;pp8HlBl=?$0SEB#]$S]l1fJiM:U('C)`)9r#!Ws"K%Po=aT"2@D]ShoInM#nSZ-&N%l>UpPcuRll5*l5X7D!A]OiO %>4"en%?d>N>#KnX%MF:,Q##!t*D9A!nn`/2RBaK*kLeLZXq(,+q6^^4A(Nb\jjuOJb-%(pf5^,J8j/>;#EZCQ9;FojLr"Gs-OIl" %#FZ`EisTh'6"L-0l@eM7JgqnM3!YL-/,@^ZbnpLGFpX7U_R\mB"KX*41.[`EP.BbB*>UaRNtMVP=0b(&ZfOr6(ulrM@5']?j>EPb %LbfNDEVGk3(GMITF9uPJe4>9"'5VUm=H8.S0Dkerah*4_i="p+i<..A^b&^L_Z8VT*`**?*8kaWGS1)*55L(Y6g#iR'p4=oJ1M=2 %TVLB68%a]^"U..ar90Jn1pSq&%8lY'"?8 %!DBO(r@G,a1gsL>rKcr;/8YCWSFFn!mubqDk)d;j*U0R^0b3?d+SuWs>6.:t,J@fA&+GM1DCop^+L:%L#'E&7.np %PMlS%KX!R,0Z+a]\"'a:-2+9$_d#A-[3n*Yb"k127r9=tX-DD7N.l<6O$`;N[lT+JHdu&Bm?LRsmF>!"o'sfhAtWKobm,R*]*eqN %!3LmU$C*),T4VM;*RtB$Ntdle"4eML$r!Wa8/uN)Fs-ZA&KYYP:k&Au'E8CQqO]?5+s'FKkecNlf@RK5YYU39Q>j^2E8E=;a:e":N]FQ#[,*-euP"s=/BHC#7Xd*k&dB91M+4gSsLB_?uiOp9]TlPbikh&0)$9pLQg++$B %Ss&X9flMfR'67CZnN9\s+np6R5Shjh"?b@3NG/B9`10J95sKRh]#',hCD0&#od(V?W;Y'mg.uQo0pWnMM$M(-&9[BU&LpU[!hQAS %T(8*n!5;,T3:o<6E@<,7R0%cUlcCWm01\$B(mk@S8.$=_.aUqdTrM?`5PN[:_LsGh7YL!kM`S;>IF/t]17G[O]HA"FCF:2)b'@<`+_NsYK'oN0:beo6gb<^iW5SNWsM;t]a4u*l@A2,5=_$5HP6t'+d)8n-6S[PU4@k&8:f:o"AbfJ:b=s'Gq]54*OYot*9q#@ %c2M2bs(=RMJ++SFd"&1j+.G]qYP'%8Kf=3Wd$/Pd)]3#0+INB],EQt5=HA=7?nrf$gh %$3]d":qs!L(5K4%S%P2#'JPo(=tMJr[!!-+D]9*M*\kA'AcP//2GKs\9`]kIW7B=&f6.p>qb[efLsE8Yd/\j*HU8@`[LWmknl2'' %"9f&n+KEb+$q-BVb!/jls.ce/m8D7nZqERRW4",5*SRKbJp""-]&t&J?r4k:p'#"6C0p-"L0>B--H65N&SbS7H%m4I %P\8Ll*RCZHB8kZNWY(DNad"^qUM>Nkj9RMH%%Q3H@cC0BbgKj#7V=/][r=bU#pH;:0""^r*[=C==dAqcgRW*)F^KUN=6:"7K0 %Q`)TH'$CHldB(^$L^FgC)o#Je2Hr?8$4@9BY(XG7)(eGFdtbp;X8"'[>i.MISA3WcP7.k9L1Q&aq[k^h_PF9 %e14(nCaW+H>Zo@8$3nUbN6BQ_r/,+P/2uUt9ik`BZrM0/hb2@KTmWD,cVdG/bW&0Sp?RA09,a;[4$jS$d4mTne7PKo>bbTsNg;4c04oW9jcRJV1_?TD! %KE$5!m=8W_l"]"f&lE(eB[`aPX^l#*VM_9*) %#FNDf@RDf(foZm6bZHfs`6SnB7WI!OoOA,J._d$ORW1OoD&l*BFoO9.^XheM9'cJm%'s.70[.<*p10k?k',s[9tC.jTABJ3s+J,m %3rtlWgjBB=$&\`3E"X(NpM/3K$i9^mdlCg]SFQN1k'quq)Bg6!\I<7s9.F[,_Pq@$i2!m?g>IPMg+^!sHg87ZfD+VO+X$'?JV!#CKA_j1mijAfrfTH_?(&7d%g#' %&/rH]"A"+q]!O^).Fn^/T+Wd]=eH@_QF5Cch2E+K"JSMGE?@7*o_FnVMk87n_dHlX_)'HkS/$iZ&qK!.TMlt;&s+2pF1MRto6QN? %"HbgApJBl",4bn"&)]3s9_>%(!'7;Pg*OQ-1V28A@_i3^F/Ukb2I(rFbg;atAQ5'mN`UlZp@g=ZADKa:JKp&KShc(r3V@th;;lV]0m@:T[B%((^AllYfq$Q,,=PD %^/mB@02=nQ&/SsH9L;1RoPhh!&HYf]7Bs^QoH3oo0m@%%1%5U]u@ZHPF<,=5N%],bPA2#\oVDP=5M&PNDJ-.loBA+CmLeKWIpHWe+42%odE@+9E9V07)e(s3k-c<05H8#8F;p3u$+LKLQpA$a1>,ScST3 %YCV1I3mg02([is5s+K*Ze"3:2:oH#+=R9G!HC/@FlfJ#iJGU,5^up&KF^E6=M28p59bTV@WugEn$ue7%B>Ap'CZ(Iq5!M+*5?Ds8 %O2>G>%N4cf4oofn$.bCUS1Q+eC"FL1T%_5XW'.uBEe9eB"9n0RAAC_4e"^AsoZ7i8B#YAqL['H3H5A[g_3oX&*Ve.jNi6TNZ6ZQ7 %1Z6j*M=uY'V*r`T#eUXAPMMOlR_/nmAB)Co"@b%"@!`(,`,$tdIC#Q(2E=4*43tiM;6WM%IJ)\M/G#"LVHIYh@-+m-Hl9-7iM2L( %ps9X$(&>,;pV_2G$Cdi&1-=u.dt,;'`sW#?B=0?"F?$^cc`/*qLFhI[oc0WOJ^7f$/>6RQ[HKH$FYcf1*ak`p;FVs?p?jKV\76=NTL58_^^W^R2 %rW/BBR1d1`0J"oqX*cQNA'G)@7@jEX%oM&^$tGqZ'h6s6S:F+ab2b0`3YJL"_]&C9n%!33<3JJf1K$k.hk#/oZ^ %ZN,&;WbF^?1Mm+G;O>07+\)iLo@_=QJs.Nh0C\4`7a&,tC9T-ZDb1,[`-=(!u"`*Vogf?2q %Gf@ZLlbcqN#.+oGkeL:\0r);#lO]e*+_Su2?LBC*+;&RQPKl-#G6,"L%==3!ec5pm;-hKgE:!)70\k=i$rL^D7J--ANZHsobQgH; %_Sl86#*Mn?Q)fcM^skg03gn+I9Ib7eGeh7HL7L7tY+'9G^uHp0JdE)V@*l$FrM0ndHDAT2.^]!2.P1kAq0LVKXhYQ]h7Ie: %!'7[%EHo=AP,h9_=RB&tb&f).Mk:N[&PA;&/;Y^bd7GO=$mZe*$oOj75V/q5'Tj&O^;+u4&QF^!dQ %?.ZmY&janoZHO'7BK$,WkgQ+\:\5t\0`WbA^Bj4r1$(kW?(\WX,egUt2-=jS5c=J_n&`3=2lTH=!9#c_/o3Na.`,eK!C><8L6RGM %2+uji2d;o8P6t72IHI,RP.F7)i.,;YK2[J7Eioa)/Fiefca17kK/Q_$3IC,nq$O?t_%jGL6Au`&^*A=nd7KF866l+2,dS(9f2S"R %@2ep-2NV10d73b#GpQjUjCBtFj(ROcVl %h;4PT)Ca+.)2.=eUr",@YH/0mQ,N/!Kkb7g6fi&r'RD'5c5&b)PdCa^Prju?APJMmR4G]$1'cKkUfRDVeAG3_[&;D+$j:=4Q*35+ %0*!uXZ0N5/3Q;qfOV`sc[Bm.lX+DRMP^Ash3U--p[G0WH=0o(=[&o %ChISt)46pHGsGuDc,RlF`R:E16U_+?R35E*D9aV)fj#I=?YH$!OY$Q8i,$QO"<17'N,DNgeLY2I!FVgu%91dg/83IL0i((cD,udS %jEPMA<`Gq]`EWh_oIA/23eUV[VO">&g]3e=GRa_MSEq1;ejW/YoLpSCkafH1f6nmh0AJ;SF[TX&G_M%)BN>U8e&^@1)b:Skb*^6a %)!f=!c;nWjJQ?t][OT&T`'MO.>`8Xq+ODKM($8&;5aJe_?HnDhEYK6!6lsTo'rmr[9UGfc#si3)KbH<$A_hSfo`Fcs6]q_"fP8eS %Jsk,'"2Q9t5Y\=?GJorq/IZG>&&koVR9>4O4;[U:@gj)j-6s!7k\$eYV__.1L7+0Q^Ci6"U82!o>F:$a6AglCJcX:$UW`gVPags# %d7NLI@1>tRY(k6$-j%Xn>QV.S.Kg;80JJe:]dFm\!BT&VF/,5$UTrNum#b#rJ;E1g*DKOsc?P/qhV5,26Vm[55h+0d&T4OuMJQ9L %_PgtFMkW1ec6_PIf96H@=a:WO\(X)j8rtKNoTb"kD[t9?Yg?IQRb`'$(c]WtED7'7-l^9N+#,Hq2F>#f!lk23oGEsWXUTq5i.e8G %_D%@V'!@W+M'@j=/q`PiF@N!umF",?Y*Z]8)ATYK`IP`aeBuRP2,MB:LZ`k,\6kCBgkCKQlmr0&h/S$\3cCm.:p!mV'J\HG-hmd\j]*Ne7.<1b*Ra"f;F %D&`*o>G&CDB^P1S[R$6kIFEgC"emihl5RV[&/u18+"Irt!mSVKSJWmCd\GR$EBWL]Z*a(Ho&47#iS3,DYUeq=c3UB';0X2r` %OFa-[1j5ObUU))P'1EW9osij78d(JAgbNXIF-U0s*#8o/3N9C7.[qn%`if9Gbic4\UsoNgVq)ofI%"pF'>YaBMY+!+^fI@9V%#G< %,LC141#7:q@%J'FW?K.NF9kCBMlJj:oq3-5;I'.]m;Q%I-78OJ+g5$)Msi'nLX.3EnmY %"?)NCecQ1c!Dlcr-m8E!';,l$[E4ka<*cN^'A_F^W+X#bkACEW(ppH5JhTKVGe":)LqsG/hl"n;;0?hd6%FJc3ZnK-)mE7D?mmpp %.gIK1>>C#te]T,'U0)!m3:3dQjKN[+PX44iV^#9Vfm84-1p.-Jg.hng]a%k`&D=f@bMYpCO]hGsl9p\FJA.fj*Y:D@2le %JC%,"7U>?e-uaME.:%G1A"[Q@*NOLr!R5j^?p;%EYUKZH&n`(A7@#AOEgKlIaJkkW.5J-)8*hoA6c2P[Psg1CQ6/;07bs!-A$:P@ %g8l4G/;4EbXHV',>_G@B;Rh'b(XRSRP*ZLEj5\D4$HQBgm %63J)"`,S[#!BT&of!-UVPcILHfY5E9^kp7cfe/kC:fqBY?sof_!n@X4A:.Db;sonQM/JJk-<5e^O[=S>eIFueD$:4aB[Kd^)#7_U %0^0H5Ye^]ucDi4dDD$TC%A'_F=4M;p0*A+qI[NVA7ms6;,%Ps4$1RJY#3;:qAGeYKer_-*fgiNtS98kgo/C+HHaNQYu;'YhTR$;\Xb %9L;@ARZ<=!h8GIbQlGOb%^0oq=N:;PjX5?%X8TY<%S1ZRUh$;=Q."3i6YEF0(=4?oQf( %'p0,M4mA=ID^5b>/%WBZoh=F!>A6K9kARGY(NE$YF&E.1q+/WpZLS9QXcDH%+9P38'>bu,Acdmdh9BE3p,_D'nH*J.;#i^X]M$fRZI#:+-2\YnKANrV5UI]R;M`p;L,8U %XZKQX'f@MQ_2DQ`/\Q*$03,!='JiAS`i4hY"F@77D+p'Q0\=4EOT0nK-0Xc[;jApT/I5@0Ysfl^P#+%@.LM'0M!A-D>LQZ6E9;/Q %%n0gdApqGJT3T,4(uM)V>(piQEPe$m>7G_L/UoLA97F>kt'L,'VdZ''>@Wn*][>TqGt`J0K>UF=cnglX],'A\R8fnH(G#?78IquPFb]njd$C0L7i=[1`>UkjY_US[TJaAXU2J\Z*mk7;SGt,DM$U'BHXY&liLNp&R+9; %Cq"FHX/^IKqkT]/9\rEJ:7=u=9snKYlT4)VT[:Yg^_]VZ(jK<)RjNPro,#=4X)n.r;SmG_;Sq0TBC-3\eoWUIBl)NTS(#>UiV7&3OoL=P5WIQF]e<(73H9=jed;\C>iO %S_9.uo#sQurLKuQj-A2u/p8_U@ESW^Su;OHm%K\IPGmgOlcuLZGG5egB_1M_8(nRi:/qfN3GfmC'rS-2m)WmKlSA&& %WTo/J'hb*R6eYQFWa9O-RAMHX/;>pAierJ79L42D%"f$L4gnkV\n%V#Pa=hpjg97@/O %J5c*Fm$%*RWG-XaYMBOcnXpY'Wggjl9n7AglBt(j:9U[$I0+EkF/M^&Pss#iHh8kj!ao'Z@\mK6J>Xm1H)pO20q2EL:>YcCW$c4: %c1Um?lglD:WS0HPMc*`ClDr^5ed;P\qi>7QZ2fM40m5WeR$--;bG/[O10RSu^Ci5S:^EJG%9tA!-4Q:u+Z:-^BsO$rO"fG@C'/bPd#9,j(qb(NBqnRZcAdaUjN %\A0@>7;Y:)3_oWP.0e-J5H6dfGC-0tVI36"X/EqZPtP-'$b'bVRWVM,eXdr:2U92pJ0&i'FUk`9.KQ;tlCi?.[WtI)94p?nU=$i_ %b-lgLaT6TJg180JnCfc:jb.JK`&p?#'C:0fu]VS7!?ParD&9@.l7J?=hZ$l;7_8b,$D%6:[]#@!2FB#+>pP %W;dDGe:jTk6A9'4_1'i*C49XOXb$r0,Ud\*TE]AK@^Y'*-McYP]AQu4#Te\ %+9m!MqjD_d[iO(7)GnYnA#hJ_YV8e>C+>.b^%Yuk"8Peor\:eahi=+%C/Gnkn,WcF1HB`lVK)qeqZHCN*0P^D/!_22jW*^nOa %fqcrp[^!CH&C@GFT1lrr]NDF[YOq=m\rBa'<2s([JlAiY"B3lT5rjedDC5[36,^RtaYnd_Sl\'Dd&Qjc((MF2Y7V&V6W.FAuDaPiMD9CVc%BZWk$$Io;li`)R_qs %X!c8Y[FOENX9NDB-63oe)78)Z3&M#%`h<7.:9R)S19;ACq`>UZI5'6dqY2Bl:jB@OB^?0gV)(qBcJh%5%AXp.,e_`1f&h8?6fBA( %G$F%=I&=iLn5)R;8duC!23+d-244kjGY!^U$Ec#'&cm[$*3'NtbG(QM/+A=8ij7c2/"4M %J/L4KIAb"((T4,Ze\oFmK'6j,-6_hhD*TQC`;-XWBrnQVe5c$2Qo*WcJAj_W7\CGM6rlTCX"NJ/rD3pQ35leq8)U?(mU[t^b\E">9U)Eth=UbXT_)g\=+Nro %SAp=]\:i3C9ip?.e!,["Tb[`="f5"OSbn75=H1:u*ii8L`X$2%f0[9Kqj+lSKh.&+D;rbjPpSPqbH2aDkUhL&l4];uW,[HmCX8T*IQYDl8*7L['MYrqoF1c$P]0hUXDBLbjqbTSI\f-[heSUN8et&_I2#t)<'eY0. %"m3\SY=]:$%5B;I:bs)k6.f3O$YQgGP*@I@F&5>uVuspWFWkPM*,TW5qTk`(^I@3-NTMBISn2)oH %+:q>48geE,!inf([VN579/Vc(;6OG,f\3.]WfBlRnn"qaJf,tVBFtb7Zg*IjQU4lX7a%NX#CsKYhmR,^U.Hodi5b,$S?&Wqm>:1e %F\u%L'38"lP??IjqB]?:fki,E!e3dbf>7^pm"+G7/>f,0V$j*S:b/`HW%%"A8I",n1lIP9BgEk8'l`&dQr_D+Gj`7AWN5V1G"M)rBso@:oC3>"4OqnhbYk\ae9"26c]5XcP@q&lWNK#H1^3(C=A:HW_:YF)d1R&+(O(K_!h %Amhr*@JIOb^#5=A:8Q](8N-!91e8(R.lBO&2_0LE8TMtR`l6HBU5bd17,f=kltSB`+F)2;@VY)Gb:B*+^l!_kdM0(pSE@rF#4/,p %W/6TUDi.Wg&dP,+#6Sdb;M>g:-_56-LVDpGZY3_R't]^UOcPW64kXo&[Yiqa\r,SA`XN%[8rpM\HN5tDU=_bC,=c?a0=hI?@tYM;:P6O&ocdMC[>%4s4^]L`J>Gt"$Q7p1Aq.:/j8MtQAC+D1i;5]K2lu8CS$FCG&s'Ib+,`:7!bL: %pT.Ib((>B]b$hFWdid";.THb)sqWZ>6LFEqMe\iYoemm@$8Ci[-\AZWdM`Q:=`Fds]_/6^BrV\rSlU@M1"q?,EQ. %Dq&[SG%W>Q)d[$AYQl'rin6lD%HJ:J&>rd,PNM.gTqS`5^oQ]8JL\uSi.D0&.bTnKOe3(j@;E55^G"AqD&BSJV'+nD^+8nb:X#]*sCJr0pUKN4!9`5C8<4\%X9;7C:nSiG0m]0;F4/M#51f_qOi5GI4#rfZ99`<(k2(:YDB%LU$g %$(sZglpDV2NQk0TPSkp,Y6d8JI*=SOB\,g.%.neo3HQleh^Y7`I>-,9M3XRp?r'K(t&0qE%i4JjB):5d8N+%eod9e/!8sGt\kX9orVUn3Ibu"\]am(TFeP&PV07b+2uRT7jRQ&a.OOc.gpG3BYO7i'MVM(YCV8j[Gqf@@g/K*E*FDh9?GWt: %@qmBgc9K1&K/qWdSGF6#8M0Y6mCqQrP!PuA/NLCLS\]AikFJB:AEKhn6PRB/V&5(p;P6(S,Ii&t8dlKiFOY]7IVu&(f[ZR->$CGh %d@P&k6M5pu4[=/Qoob.GJ>#$ieQ=pg9W=FGNL79=G]=Gj[ebI?(g[oT%_X[U0dpG1*LeGL0lTE1VU`0mWu!!`9_H?]/=H0=)`cCm %ZYrW9(PTio[9pVZMPQV,R%)V34Ok*0S/i:l68L[M`9*2`L(;]C<+hJp*_O.Y!Hor\:ocJ-.ckF=++(t?a0C8s@3uoe?GNhq:l;@= %bRn)Y/!,MDeTrIgH4Dg;QXq'"]n"Wegu::J%mfkSe!(04W\+*E=DTmp@,MgTh2?o;i:DaAZ7=GQs]9.ce$kQDOG&285`Wj>mkf %dS3,^aYc'e'YMs!J)*NfcIU^/GaZEK^dDk\g;c#-3Yj1XK^n %/>kL@Z/:^*3V5>OAM>k&&U=NEqtj7*>(QSs)*d01k_"$.HUa=(6+fU>20*[Dd@h*,Pg44uABd!\h9: %0Ph=!@n2j;:;5qRK&,/i%[oITcmg))Fe*Xi*cb>u2L()AEeSJ3cc %9-iQ6[f=fYDO6UB6'@2MmEH'*I"?O#7[RqL$>4#YKu7:1R/&Q"OnbB:`D@0NMb=4C;6[5UhN9=?)/7ih>jF[FG(.0pXcSdg?dli$ %A4%^6&qQQ8Jq=iFP?U&'mqW$bi^huG6boTPb\nOj!1Pg-$3F)^o!RiIQtDcUC:$8gZ'-'irT2KZ5WWt-"'1Vr?j#]S:>sSU>.T]b %JKX*"!FhE$2rM7rFD=?dS5)6^]e+qddA,29G+t%U^CX[i;cHd2+!=fd?TjlIYb9`Kgaim;G0s^%Xa[S8p4ts?%7FE$ehs7&[+kY8 %Jgski%MGg8A\F:RNf'aRJ-9PI96CI*<%W#.Itkj`8M+Rq^BO`O\[_`=CrdNVHS#?;4NSTU,lKMQYr!:c?_\'@R01*`CfZ>8(m@nJ %W3&[R('<51b\CS'+o#29-k_Yr2n,a[/?5+@+NeNiq#B#ofB#&R.o#XBn.,>V,OC6k>^j8KSDFD %rU_JPFihe[Q%cn;J7Oer1Z9[g=B.HO\Lue9ep1+)S?-4u5r(RMb=8E=.a`4@O?gGS!=<,]7PG"na5/-"(ZX'V)E!9lT]G^s5uY`F %(?/dY#m^F//(^'F.MQQIQ3s;.?-:Xg>.fM@`\)N'f,31PllLh?b*:!Oa++MQe"A*N?-9j$cOh5%+/E7r/P.)C?QqmE[@,-q2Y(@B %E6CT<7q*7Kd3c^tLZWJD;0^h*Zq32o=_EJE]XuJB6+C>XF %>>Q5"%(^FG1dP;QN?2>8-#*g8Eq4%_W$0ADa?nB.mS(0UH7^n%b\iS!L1r'M(J`Q1_j?'k#gr_$O0erIEN"4LliHYX7C#"LC?mD/ %\MQQZ;fj&iMTD"Z$+aerOej\q*-S.ZjS[@mY %,]"'8$r71k"+,lKu7'iInaY-r?bZ5*^c.`\DZ8X;dZ`QAc]^&/R]%<]m0r4`Oup_M%6g6eON'\o?%niQDJ+4 %A?Za>./"&Q%+5d!2e9K/YAb)rmfZjcjH?>OKN:d1b,aE.\XO09[N6j"VE %Q$'!D72>@uoFMW %>c?m1e'&c+(8mC3;r`*b6%jCeWULm4^luK6Md+iOK?t_Wj1Nk>>#>Ea3QFH=R7VjX+XK9)FS\8$^`84CgHes\K]=GEOoZj#H=N#f %.#C[FX!&n4:X>_pq)==!^d-S%?Xn[i&%^`i.Vbk69*%l2!%<]!Vi?L'><4jphq5?Fn,uZ2ESK)q+ %BZ3-Em>simnE*"fc%$OBQ.H$3R+G7c"m*WBS:;B2TW*q4K9`fR"N-KU_dQC6\7=G!q;&VJMR8PKpQhB[j`l_fT`IL1HTYX8mi)2F %/4TO:(Y77QE=_IUe`%UVK\'Tun(m]$5'"d#a@KI]/&Ys2Tt]thQp5B*"VXON^ChlJ)NH:@&M&E" %3J$*'!G(WSdC*-WI*4h\7]K:7bk&A#I9(AI;#.USU$'73WFcaBc8)UJ0RYit-P7-Oe3mt#(Q8>Ui+f4g4[kb/WoA.Z(&)9[7NieI %,%Okh'p]s-_Y12`<&>r#h0RX3nLBbBHQqfnomn;f3&(!@W6UF+37:9a%HHc><-,[HXMf%4^/:eT1E'J:qBXigPq>IU3CftpJ&ZBd/$a03U@-TUD!:>8u]c^PtZ445I:M9/u:DuTb_P=TRO?!7tE!13X;_ecDjmZH_W$aIe:1=Y3stkLB!O_G`n"V:)0%4o9N9841+H_o#_#U'`VACsgZc&>7c%qQ2(FTt$M=KR %=uUfZR6_i1DU>VB'j$0ih:]&`$EIeA,:CH\*a)'$oTeoN'I?VaVU(8`[A*+;6H[.s+0bSB1:Y)jMj==8r^8%@rC!UA'pR8@=ikJK %G9n'\Nf\8nW`_56Lo5]f!+nAE@jObicn&LqXq"W<9b@WA@?:KD..i4gEZue'iV!M.K&rms.qu+"N#Mo]6'k8"Xi+ZLmXELoT;3?Z %^a[dRW?V.)TgS!4j!or*P):8mL6;\$KUSD>VL^<4QDn_t#'9a=AelXD=@/l"PDuV>/L.A#?9O4)SEDtJ]#.KoOGc=b[USi&c'ZBnf>HDXUag %`g\=7k_]kJf53At79u@B@8VaEB8>K^n%%`3lXE.;h"9KLM#8,^8ot'e]%!aG7uW_,0cOlE[J&OCA#C-5D:K"\U/3 %9V`/(XG$ENZ`eqF&Nr]Cf_W/j7A'b.B\5/rrUOb;CktGYfd)2EZ.'EW %@Y,6V$IP,(]DR++Pf]1E1*0[f:+B"rk&s'1cf^K@q#LT(b,_bb>p[IuHIa=hY]ZIg:-`iqjJ"6l=;#.Rao!G'&8eM;7%fcP+,gR& %"(9Xrm+/M"P6+:R2W7&kN2hi%3#/SB=/aNRW%th)'`E`5:YGug,=.iYmNarjMm?7&qFY[uLm:7=4;2;=oo-p&GZS7Dg&he3Y\K=urrM`BrDNZ12S6kV4o\WTLZbngZFpmb2.eOn5gKTd-)MF1h> %`h)p*Q:3/n&]4PVc%-n`V)UOB*0\mp8_>E$%19P!EhVRs7/*Oi5fC9)kPSHK3HB3^B/EQ3!J[@p:dml(bK"N*MoC %2-]'OZ#\06Ti[h\0JFIuEWXUrO:GRp^aQ@A?*^V(6:nqW"+sBd($[.:4P]V9Z(T2SKRL,pLkZ+#?SJ9E'U\dhmEnl]*lR?AX+$@e %;2%'XU$oG1UfS0NN(GBQ>mlLB6;O(J>SMsh!VtOI?9BMI+m%XJ'>'&,W$]AI]5PW%N1Ytg:mC?Gc9(0/pPqJW6>'DGEa7[6>=]KK %oE-SORat&;2=0J7>(*aFX9c3AMOpo@/WjrKQmj"R_F?P&6!g@D4isjkl5B$q#^$Fds(YmIb@4o&NTmcICt+LKjV)&@MZ-\8WD(lB %B_YVdocK8XB_7T/DtGq9[[GY#o.1_Ufqj:_[*A:]tW<8u[O&A1X %\/JM6Y[G,3l-S:P^b3!"_,off&Ot5HWJ#4QotY,VoI/rrnrHbFpQ<".AjTR&J/PVtRsc(e5["JF'R;ce<^Y&on'Z2.6?Yet:k).G %1/=GV.*&[u*T)Q#<5V^UU#WIZ+>/[BdC$2&9qR.;Y)[rjl8DH!%MRtJKMl5j>YhP('sk-.dlr_6MG`(0S8>GP0A":`DtSZO76paP %8MWnOTgJ^.,Y2f9>D1O./"s/rHkjQU:NKYn[O:(.r!k4]4qsl/!%SqMUI'B7=9teM8kh#G %]hu\JF#k\5/&.pL@&egY@'ih/F#ofjF%KFc3bR"qLf!\h-LR,FcRMu9V\/>t8:sm?dipXllY!1@TYfg@JF0]D,N=0Wg/,@*@6,*= %T48:hmmfol=7/`ol3DG*:7el,jp&=Z22&pt>`$G%[CtK5D?O7VdqaGd)aV;OG[gVf+n2MXKN^?)bU[Zo;<,\GN/3W4]MIAhh<[Ej-)dK3N6-RjZ<@gK*<#C&Z!6>+=W#q,,+Oau"*c,d!N$M%QP:/#-J*P]T^D&XQCcb'rh@<4f-]88C:?% %AVhT>"fPO2G,!.OMBjU!X%p3n.;)#5$=Rcd=h-T'5g\R`Pu2DUR>bspmFOiN!>8g/8KHH`H$;(WUBBd(/!g[=h-Gsq@:a?,i`I7e %KW$BU:/i=7(@(e1d3sBf[cGKY6DDM]<=at.`+p\l!LD?H[r14$9b.uSY^T[T73]&A?I-Ta@'gZI,O2]C"o_Hdi5G)`SqH<27HMJ) %BK5S*X&)$R.&tCql=Ge3XYM:c'XqrE8%i(L>LG;C$Mu"=-,J/FbB/:=7Tk[G3iSF^mJt)*=3@(B[RFJ/;Dcsc!8hN?!Mpkq!D=*&$tkm)mmru/foX_);:6El2eFF4KL?e]Hnlm@U[P+* %`1.AuYu$rO.b"ubAN"s;>jJf%\.a\XW#OQ:P)'CU4fH5_\.Y"o`[niD"@Q@HYaEkhZSJ\$,V5Jll"JqB"'<"PWis!bF2=`jSkG95 %%sShE0n1X`D%AucUru3a=#"C79"nQVOUNNITDjuZM_37pK^#g`U-TWkIPm2aHkd>G_\M_pb"?-CG'(oC*ho1g,1G-Q-breZG04]& %/HOi`k1AoV1e*b.cUt"`8[66O@4^Y1Q+4sYNFKj2>0XF)T2G=O+di=nNf%C0'fNo]i2O?S3e$i*'\Cp+"Zi7A5jOY&;CI&1Sq?ncoMnWIB"=H-9^$-GlH-^e-`#Fj3_q@3%E<[Y:Cp`)ACs5?3N>b0:28-O-SI5G5(eP@k+lq]0TR,,jEGCho+bX^#-N %WUNgh]f5U>[3Z4/G>.2!k++ccYQp+N.Q&5c#Y:55M3,fuo_hXgQc9g-f.bVVY8UeDil\S('B*[[; %.2Rq@/PO$W?YqI6Qtm^1W=9/6 %9ds'T$Im1p;69R]fGC_b,t=bjf0T%fIm]T<>R$=k'<=s]Z*)dM=\:%+j9&[=VSaP[&!aT$16V*WHgoi!(T[RprfjYP>j'"E]bX:"@-r-3QOKX'OPcc-OqLQ;/ %C8((7<60@Wg$82O$G!r?8/"qiPTh`6\m\npB7pqZ*J@ZX>=ir/"!JN?Q-mNnS-D8ffi/#`#hl2]-Mnih2>5u]rQk`JQ0.%]!3s#5g[o1DYl\0R3(U$bfVD2-8$%t;d#TTE:WV.Qm***:'Fj(:+!i? %/>j,A@/'1lK-/F+RnC!eC5`_BKeom3^b3m3TM#r,.U4nGZ'OJga!Dit>:O1iogk0jZ"4Mh7bjU#jf\GK1oT.2;`fFUiZP5=eJJQ_ %QWqfCY.dBnNYh]efhkjjoqO2r1W]7pOO[[KX56\2]?8PG)j6cAd1*EJN*Pp[KN8,ab%F_jj[9%13-LuKLfuA@3GP*U3RCu)K'MCO %l?T704W`df->>u,?rWO*:^arf3@ap:FYQsr8_[ro<@o2anZIK?<%.P,=g*1_cJKLn*Kdbo[5pp,JL+0-ARuS_@>H_ukY[n.[7JU\ %6`C][`\>gd=_Wg_9qI>>T.S$'4k#%E6N+\ji_hp$$;2^3/K@K]M-)9Y?so@>7FUt=Kqf$&,'I-fetZ2BTp@3m+T7bk1AZ$a:7d_Y %*pu)&mCh)<]jqX/$$*+KjjD/EX[ej((`>.EDBlIeuI%gL:uOJ5r'e(:/XB2?Y^ %6*tohXL^37eiL9o'L:7\<+98qZ;bpC %o!J]Sb$#0Cd/R(HP^0YjNFg#8XgJcs-JHtq7P,d[WQ$Jg/Arh6\0U00T9[(*.MlM;N2[b['M!.7pl._*r8L@%'.+C*KfsAB>[H6FB<+R9)@NcSl&/Q(5F<[gG>naK[^lg#bf(#o=Kp*hp<4%/`7o,aW9.c/f,3ZgW,7J'#oU,2T %0f&B)i"Q&E8MeQ\a_!&3M>;u1G4Ou:+"Unu$OKm^g($SQ82`!G:U1jpZ06K\%V%rf^>KaV;,RF\b`q*\86+qfV2E405b/0N9<]%5 %:'*MK@#-qs0:]INKI+tm#JfD'NV*$$41>t@%"aO8(#TVQU@:Sq_P`Q>UO99
      :S&:Bb:4[9&iqB4dLT;de^VTrA0ZhY,+Nm(7^;BSdD:T#Otdia;\RPZahXA?4$JLA %]Li/gU_("g>iJ*[0pRdpgm,iW-$`ETeloTF<2lLt)Fat^S1jC?B7):1^Qd`;-I;PF8a9D\h6i>PSE0jJ\Ei>(C2mutj\cjTWr&q@ %d+iPMJJATRd%LU$ptHRQE=.W6!`;uWZl.!6`irEFhn8:j,#CE1E1RZ[HrMr@.',`$Q.U.Ek4Eg(`Q_)8F5#1pRi#i_50TU`[(Hb# %3u(eL*gK\XZLO,>",UN5^#Eu'A\DAB-H;DX>W[p\@E"NdMOd_UU'iW=N!E>b+u>4>_P0eGWRq""d3>NDF;.=kM1/hHCMBA4;$Uf% %+kIL=3Qq&;+^h7?//9#frY)H3()CIX5Tc2&L"cZC0^:9MRTcOSrIFAG9V3X)72?*&.]u_n=.t(.-o\$LArT,nO7/P7-3q<&eh<@rX.S\(GpDDuR,N.E\3\TMoBh4:H]/!o@D-EcoGjr#o^fec?i2pE>5Km]J(mS>W3BIfiK5L@V< %g<*B@2uBkC"OkSE>0)t4aK'&f?o>9uR[II+*3b-EZ"[s@-9a>.ckc3&(380`=`Cu.k"9f&1CnCIB5\s.n((1J`N6m*_m#Pe\<+2P %aDl$.6S;tG2R=qRq3VQ#RgXM5c&C!ifqXa)dq2?i1Olg#lai;q].8NBAD9$6EqdZ6/c!-*bi"1+ib$2M.ku=4^T?l^nsm0EU>Hu. %MlZ4/7\99>:A.$RFu.ToB3'8B6/KgCDl'9h1YA2-m`TnGZP<7JY5L[nIPZboRI.c)%+&MsB^uW!jhO8h29AFLp4EF4d\t/21%Apacq"'qZHVIPT %-A,ZhmB8qdfHq/G;%5ED$$YqV=?#=9&1B\DNgo@M:&fSrnHK??JlN(i#f[uWHa!E %\B07`iC[G7V$f'0)*pPXnop";/FS5_BqH_@a2/dYr@=*Qb]><:YjS3'B")i482d+-:(s/96j\;?<-7=,' %5CJ)sI0V9LS%sG2.t!OH^<&7I`(T"KYeQaq*j3jgI=KD6Il/$DN;G2ErWOAC-KflR3l"'.JVC*+c2%Q)CDiAJ#L*S^HW3qB.kf+= %1pi0$[*(WilU*5RP1[Md`NEqkan8q0bEsON`!qY!q.,6u0*+/MO:a=kO_[D**%".S@2TF^0i8Y!ki>V6*BpZ3>up"ZF$L*.(CD^,C%>Mrh.a#h\2JD",Zj %#dcSUk2^XoSic&5gS2Hn:nR,!<,7Z#/^^rmU3%@-hjQBA$^>Z@qRIqM %h&`A8K`J;JQ+'#Zf;.?:SZ?[[eo*kUfH^j[+r8Z=1e@t^#RfP7Sup'CRl#p/P_j7'`?l1,S$]FlnCXCc>bI'm;+rmi.$o`?Rj==P %2U%`1R2,Lo8]SA,h:\V"C_D?f,S-FWNA`4WQfq(H<2WGge-,p(#2*aTQ?@bq[7U,(6k$\%/[m=7C$8`RFYe'M1#lc0-#u-^2_n#! %a\up9Zo#*rR[GqUXI=k@RtY+d9HRMep0fi$)=W`BJX;RTUVZ`BJr[ZrMSjTO?7^bcShgS=!\,f4LX %'/q`&G3-t#jOc>rnJ3nSRTY*AFMOH8K-eRBR>\R2Dm@T-Ch5sdA55%g/=ZI&Mn,>E4O;b<65QptX%^uS:?p.&eLK0N>J!Z8D)9qT %R?tOI_qWE0D.a(Aas*uDNgmT$47ei?PikMNF?>>jQ#>F!b?i9K?HDkYAqk58O_Y%;)<\?moXD/>lV."tcMKqWr'E#a1[BK56bf&6 %hp2,V`=Yr:#rJ%TG-Vf=)%Cc\,W%LrRd:DT9FWRSLF3&=:9KD1=/*f%EB@;l'eO,T?nANn1mp3:3&h]K3h"hF9brg+@n;ehUs294 %aB?sP2eb%@/?l!.)-5Hr/@Y5Z1c\lc1WM=TAet/TG&Z&,G]"FY3",(5$VWWV:7e$S4VcREP81%<+Ojp@>2U^\_-p=5*As7IG-WMj %(meFU9PkE?3SdVt(M]("Wl[3MA>\)&@T>-h27Tn,GdNp0>79e&4.*Z-XC"\NYQZYa-LY'#Tkl*G=iGbHk=Ah8;d86fCU1>7@!&I% %hjQZI$_25Fr,YT0\m;+T,Q1o#-Z=Q7YK=Q2AEqpkl8N8SCiKV2n-V'5#b,Xa$d=>5/;R$7`#[Wj'->.?@q1_YZ,m.%jG[@%QY^\> %[TG$r(bXQZQqcG]SK++450a@Rk5rh>P7_maGA*1QFM^W'A1q4r3c2*q2Yg9qEii)]=doi&9t&Y#1[G0uljga4:t+^;g>K2PoA)=8 %EL0dLG;ASem(=ngh^7B%P9%/-,MZ`JDR'p/nJEou*k1s-RnUu:=I1OmjsHGd%c6@T7s'AXH@^?fJYfs"B>'N+]!,^(fX0DWgJ+"% %2P9_-gts>PG`,DrG4+mhVnBiY^;,-QA4^_1W@r:q[qOK"FRCa?pBF'6P=p?Pn,/D2^VONsaF)lUa`$b706$A=H28J=rX8)mX\&W= %RKC+e%np^Q1ohP%.NgRK,rEdp//;Q+Q"k!^FBGLAYYZjE=]Jq)!_'G!7C0/9NZ&auH5Uj6NU=S&gGLsZofAP,4a'g+W@N_1C5Xq7 %O>La=9T,Cq=pLm,1M*8kb!ID?B%<2ZI?tt^@&gdmXTC9d[:g?@f!Hs_[&`.B.d'Jum-*$#Mt)an[^p:95$=6HREH?q!EE-PRe;@M %C(W>h(,[T^2/=?mX!T^i.lD)s2=!.P<-VTF#1]dpeZ:L5<0+%Z];f#qC5[bJHsdkOXO(`=WjM*ViE`^g/b-#]EOD'6nr21;c2m\- %BNna5`O2)p=tFbi`k"(;h+f$(MDMHXY.)Kj2eVMno)#i)j_!M0LTWpF[nU_;e9"o:51aP;c`)D_,XK';KVm6d9p27*$&pG*UF&^` %!i8eYIVFA3Bd]lY9`W_3)jR"5BRum(rB_iJmrL3A.9qoF/Uk2MH_Br:A!j,n#!qCH>`!'VhRY7q7f=4*5 %fV!e3&k9=O-(@;eD9C",m$8@uArABbM-G&@_V(aNgkXUiU&f*DL@-0#SIgoA.8(K@9q,+\%FW`1V]:Var,YT0\f%R)_iW;(3U*-j %KpRh,e&%q^1X32*.1#[Tg&;MUT6m=9FFQ=1?Sn7%Q"P\%&@:5Ycj:[!?VeX,b_5MA)j7u^;qnK.LjSjmHsJZ8.V:k8!f#lKaT'`/ %#-;8/=U3!Q2Hr:h6))Y3Di#M#"B?]0'$l*6m8k+B#eWVITlWHX/HNg3h1YI!RM8WDiUADFB=DWs92XWeiL)nJ%E:=rpo%PrVMf%o@KHf7(U*=1reL'`W`Li,?G3mqI><9RW^ke>BqJ_F^3kA.e))g^nD%=j %HZAWd]sF`a9tE(HiV-ug/tTbhpqLb<)LJr++-GHfWr?jX@bS^9Dm'+\rqc!KhG\)he[N-cs)HeWs06\NT&*`PI.QXoodZ$5nNC`=JHA%bBKlZM&`lH'VIDX$>KH^,jnn#CCAPp>3B@jG,Ver2TU:0_\Uk:`R]mK=Q1[pX[fiK=SJ.Ib`!!>M&h# %0_\Udmeu,2c)Xp4B.k<5^%iL0Ich[1:570jgkk\TO1&J=8*,8Ep8Y^CWkm39HiE*cmH#5Bs"$luBa=':/H"Ub+'r6crp2Si%<^_$ %(Uf#uG9kE,cLZJWX`a#uk;.PPq7[3fau]+:*B3mT5@9qq\N5*523d:ZqN$)>s7POF`Ts_Hn6"MGZgVoucK7sTX_K;t[g@$of%-+S %(%FNcG/^V%>5m^D4V;nL)IMS8s-GZ+Sj(qf&$8dQ0me6,4EK"tH,nA*rkI"5a&3>M"0_*+iOd-M@7YC$bT5goRM3 %pY#$$R[3c(h]#I?]J:o#]0#HP6aluLSs"G5l[Q[Tlf=/.Itq;-Fj8a[k3B,X7l\cDJ%tl'A_5?n0%b#WcH\)G %04)Va$`cG]@`rc,J5Pq>QDQ^TFMKo1j+U/`3aqO&jfQ %Gpi$98A2T[q5:RscnB1IM!eXr?#(h=1H5%eO4IlnhtK08f>2['lY'Sq1;AjJ!W1S3h+%GEB(f:^q.5$2gj>IZffXf?XLP'pLnes6/J&1F_g?\>"T\mhWD0[-4eiAsQ. %*WQ\V[YsAk=7!LnNF+UaAo3`O:H6So\fu=le>g9V4hn.F\K;f'?&J:U%Wd0<*8iLmA8^gR+K`g5HJe%%AV^%DY+p-abBotq3=BW`laT.pj^HOfG@E?b.q=r.YSh=KK\+eGHPC-s=%D,. %bjb8ek3DL5d-63g20m`D>KG9q:%j80.bg[E]N+pT%?_hiOrdI)%L`Dq%m%4Bl@7c\N_Xl)UZG^6VG %2>(p]XlM`OQU:77&%&6:[Kd9/E1S)qZd8A.>F.CVK(Eea"7j!oB5:##]LRp1>l]gF`V;[AI];N*]60+Y@G@kqgS@h$N4!MlFcF]0 %\S]%h-EWUNf/LA\iYY.G+FSa>Pr/_VqnQQ5Zm&@qJaKk]!;nij?,DKH27<7l\j@F42gT90!+a\T5/WMg4Alu %Beh6.^"&5cZ)Z47Yca#]=\!XooNF=cAf]S!oNp5!Z?NrK&)#M-aKAk:"h2eDd_0+PJ%bdAip*^KBCEQ=foZ3eZK1.Rh$(IBH>U]"#ntE!LMIY0.Va21KD`rQjTuS,N.lqfR%^[/Qat0(3?"5A,mb?0AJD5GMqe3_;NQ0lS_h#PS*[JO`*"1jgeMcorfHfm].DBQdH44dE$khNS"D@ZZXWOs %i-.6WSIU+H:YiD`nN2SoM>^3/KHg0>_=.#1'SqD!l/6bHpmjTB2\1A8VHUHP^XM%?ma^_D3M5*H4ZLhI#:J6BW4Wc?C2Fi(?bRcP %^"bDH2dTLnDYME>iju13AmH?uhMZ`mB?[sc1T`ZbqTI2fqq-B.=4Y8l0+R7;l^==@VTXHqQe8L34CbLWokW[9=Cn#jSd3-_jm0[Q %?1,;*50).19;Tp91UY\TVtT8u=I1(Ui6GG/h"MlF)(V2=]5hP3+a<*qFd\#q5M*;K%N"?lVXb^OVcJ">+*a^7[^6OW;]h'EC7Q0q %(Vr,>A+tEB.-Q5'C)JV73YIe*RWIc0Sa\)pJ1m!GiB?r?eo_>WK5][$5Q($9@[5T=4)LQ.l3>ObQP\!"\)tDPR)SZ@HhM#V2)!AD %XcDaE5M"PN?Ol5C7l,'aIbNR;`;4&hb1^?0T;CNBbthuuDuP/m3rZKekJ8u:Qt?TPCen13Wk*:+buUtu*DEffQ[VpT\VFn-ZAonu %Z\)t80[1*)g&;*Nn&snk-f"Oc2ldipC&E'!s)bM-K6-CB>?R<"p!Z+lH`nK[YcdEeDn,'Fm(XHDor80I/P2)`P+"2^^[!NIDTXo'F %Dt`%*l`-\2L-IM/$b(/[iV;Bng%js?X$>KHXt4@tI.;VJo&o8[4cF3Tm'Pf\Oe`W4hS[8\_8QRWt3Yh %^3F_tQb8%/mQH1QA#-*Ys.82Co9B>(B#11S);%u5BX"u,%Z^07,SbL9U&.tBm&uq0ASiCKJH?j9GIG4L>?_m4_:R0A2@f(]J&^7N>CY[EQf[AR58&rZRNW4(2p9PlX`'!*ce<0&7%BZa.lh2mR%,rHLP3c)A"![tB1o %@.50F^+\!oqf:^dX&BN=-Jr*&^3(a'5HMi5Y.bo-^4XCKYkS\Dhne;fG3NE)XfroA[eSG8:d/!/X1.j6'G2GE2Ypl<2W"n[[(8ht %T2P,DGd/mUkl]gFf9H[^Y?B1kmpm.>S-Tn^V;fk %s4:\n9G(08`h1)TPj"$\t2*+-,XqKO!NmZ"]GGl&KGoVV.YK4C$6BBUgFm6&3.SmQHkgr`$qkO%!Sm51\mB=LB]Y5V7h\AEl %doVid0tZj,Y&YKL6>a99r4&d&dsdkdcfOhhrBi2T?*<59qM1(uh<@[?A%gfQlX88l1I#8l_S/#pgY8`1=2*sqrR7oTaVB*6LE]ZC %p[=a*`mV3LN@gJ'YHlWH(N_6YQ?,%O_j8FAk2d+dk8/>FU[,KDVB*11[eGd2[6:I8&#/KoC0;O`]nh9uOn&;Ib)XnW\UVG_[lrWWT?gD7Y\O+.LE[\$;TleT_6-I'IW`'FK)P"LRI/VOe`S---mX6R4 %:9`&omDq"'OnPj@#b&HWOW?E@[3gB1E\=DuROc9@;iS!SUcb7FRBR@is"g55LH`k>1A %5NIR3g)\":`PK:_hHB)c2>7JT"84q=2P'dGf&)?qO*]6,]+M4-DR.04ge!$BTZ0kF39;brm6PTjnj&^A.6h7K!`eJ,YkMiVB+[ %H$B5cc.13[h=Jluhn;.a^3mZj>@%Kjhu*@q8)<<)rnfs?IInlds).FpUCe@:cZf1Lrh'+Ts-#nOhY>?f2ZN7Gf57,>q7dpjV\9_L %8=O*&:;$8uk5)#lLR_VVp@"Lo%Y)V4)0`c\J:u.Y*mPp+-673 %dt\Jmj.A[oS_G-N^SJ^?-a>I>e(_Sul(`BjIpO37G;<9=2u71Q`Fr%f++/Ml`fn73@Is9l.%GCQcOJGip\VqM1cU+*P1u591gbAQ %_)o:IEl5HhDq^C=s1@1PT*t,`cm?=A:HDu!?JMHB^,lY;d>M.B3f?c4OQZE/j1IPG5?>tdj3;kiPFfA:V!$V0)#K<7KBo)c(j"+O %2f+NQ8a#ZGa:t"(b.1_*:W>(j9R8h+f(Nff;P&JNRkFtqi_@4Y)ba_ZE0ram0)lL:D:5#jL[j9^^"as`pDA@/@Vf@-O8!FfpF"OI %L_kiZA@ABfI=bV._qJ_I%R\C6mlHraL:sLe4,KZK$R_oLDL(*5[6/A5-gucQqV:a++%$k!mtHs=9[=Y?on23>qp%6pnd`."ceEs. %c-@[n[8/0qV;VGUb&>"@PQ06OreCHB]?tcHCi9'ls/)]p'*5:jBO\ad@5`VXK&bX`U!FC2'bf!SCIn&<55#;@bN4aDX>gg(gpd3g %b@c&`_7jf9"4C9HJ,dUi)`GJ0h<(@0KtH[6q?!GXCQDg"C]@&1DF`;KTDOe,2G^VGMc2f#9g2#5M9cj-pP@)/@:J$A^!6T0k7r/d %7)D.6!X\I!)!JMXC?IGV;'5?>ON:TIa+<5O!tP!61Rt6PoM%F.?T0_>I.-i##F?6V),'eQe-AW5(K9>V69k)fb."8(9W''0]Wh". %kZ6O\=m#<$HWjFPmi3DR\\n6^EIdW;\q(b=o9"U+"I[A;``(`<,RGj<@p!=FH[\qB4g3Lo^Pjbcf:+^Jda1+2pc%VN1)AmVU$HrJ %o#H%o$ZDbq6Ls1+SC=NVaCDh>N*Y'Wm!QHfI[h(#FVG`T,P0%)GmnMT"P:3/FP4\ekd^2(0tD"hfi1ToT0eB)Chm;%0s87"1`BLU %8ND":T79$#9p\AKb:W/;e)X<\e*,WJnB=$M %O6j4B`1;(8s5td0Q/CHpIuh:PqY,BpjA4r=p,&Cb0qLju4PoldX5'm+>4lgJ)m(#nq01?@Ms'!roo+mthgCd@jmVEUb6t]2e+o'f %7o?j72G]?Pb#N)jd/3aqS&sVI4VgeIDWp[?o>1.Y\*,>*IHrd;T-)cNE:ZquE%Ci*-Y&nhr/L)ud,@$(9'[/f*Ni2H&(l/Kmr5S` %NGpN94`n!,KOZ@tJ(GtdMKrPoIE%;T]sF2"7r?>)e#A<$&0)'fhUmoLDgEH8+75?s,BSB6]nZ\>3pt(Np`pAlggG!nrA]Dl7pA;E %n8lUBTimOYoR8S:qdboWI+S+TGCBtq*H[^0]"IW%T.ddt^]]isY]C_a_99"Tndqc#1jTaH_JD@+cfMnNq3%D?$>7\)5([Sj!hF.U %U'!4/3k_HW`ro&k1O1?je/+%`2q@]c1MfT!rG`l4"C45ck5iV1ejCdZOAEPB:.6L*F2!&L6^l'3iK1)c\Jl\6NoQ%b_Rre;DcX/k %0Y8GdOr]_@25)atV_k%feeQ:fgnIq,TO3EfTDm*f7XaSndFjFkpH$7ulqODs*WDCqP2IF4DP5_6TnKa-ZDnc1f %GMi=?p@H8\`J[X.C)0&0S*t;YJ&%iH7D$gZhsoU9B"3etkDo!/r#c*:1\!sZ8Nsoam`F/JZg[ngjL[XIrQL==2^o[Q/o*bfs4bNG %e`O>:0!bTPqVpVo?9IDkTbE1Oc[UR/m)?rE=4P&u*O>V?UDH.$?'Kj9Wq9g#UNsP@>CNs&lJueHg-N,LqU+]HGkB&8];NDKSA.?' %VF/6smTO?056:gs?YDreOB)]ZgiBiMtK^J2OV>T+A=ZJ'P+6&9HTdW+dgbW,=`Ku\A@Y8 %Qdl]"I^),Z%qQD-l^[=Jau3QiE8:L71nLLj472j-m&A.mL8U6m=G,q5ok$D$ZPn`\Zg!(BPrp+*L]]8u5$q)onO55nIPI7A>ZH,n %dgk',\"9_p^;j#%ql2j&V"\;7Zd(b4r9r]g+p2Mn=l8\eX=rLTT"(ipS\(J`&B3&&kcahB1Ujsob$H3rHLl!fY]lPj'lGDa1`QL- %l,B_W"SEi/_s$#>&QW7?D%W8I[nuaPQ&&-2HVrAr5moiSLeWU74>JYj6]$tEQ6i4sIA@Cu_W?2ICAt*7sqQ+;t %Ii=[(fF2a^+b$)5$?8jQo?,`o7h8YV:%9.O+s6Ehe:Kl.DuB(`q4[9:`_lIAI[T=t4\1d1'0d.@1%]X27mYQ.(Ik#sSh7>SMJJ,\ %A?;cr"qiZS`,c$;fI=dZ6aD9FPaIe#r>[q#$^1'a2N*`hI,+JL*/\k@EZ:uH`PXME_%2f\hGX-H330&F.6akRjM^XINib:]Aoi-U %3U9USbGVZn5N4^WI^j3Ac)9q+BNto(Go@KW32c%abmph&Co!^KkRtJfN+Eq]hrf/=>D)Z.SQrUl@6-Qgl-[%Sc^kU%j/5i)l18m] %R@'mDigG)[_U.tf]MB&b-]Yp=]V\AomJM$XG?M>Jq+_chL@;+hLocZ`S&(/'2l-+t]6TucC$Zj&:N[o'KnL,f3Hg16T*[->(ujb: %Wd?2OJ1S"7;[7lo,M!)E5)%Wbh@WNn]7TtEm_LOe]rsObouO,i#h-Slle9*!cMlN(PK68^GeqS<[#%iYV26o27?n %#h/I&eE4cu*2\pI6mJ]i6mFlDCZo(uTc;W9e`UEFX"drhZCZBjVWnmc6d0sO_$o\Db5)f8AV]&"EEi-K1LHUFp>/#^H91,`nE`". %a%qkFlFTRcag7u@rn$LXqCkFn(ZfX'Ui>#_P8D7+c6&PMd@EEq4Zp6`\@H'4Qu;^sLZmC2p,Hnohpl$\>TFT'1a!jdl8W1iC+PAI %$<_hk'h-7mP6Qt4E3]U.4?*;uU2bN1Ah%#l(5@;6dmJVlFP$%idL`^\(YJpII(KA72<5RZ7TfY+]U8U'SX=h+.^LH.3tlpS^9&t\ %#l\n[?R,a(R!b1[UI"q.HIWP-,3N#@S/;jA,1M_cD#%T"2.pE.1UHBb:pEe#m@>'SA*+;,D4*6Ie4oO?=$%T1:Zm;R?TmR6N[]TpUlE="r0b6_l/r1*4r:o;%.EkiB<-a,66=\ %f/j*iYF#1<+@EFtKm?M<[lkGBT)KqKDmP:6UYXEM1L&nRdm4_,3D8t6=X*pKcI"'%55/m2.ZUP^P:;VQ %77bnRmHa7!&d@IHA0"cG(bMD#\N%$H`td]T:/0<1cXR\003;GM^7`)[!U%(u&!LRr9b=g.BkVWBjH7s%!UlA+(K"ZdcY4TFUQ(lP %KC-YR_$=70gOa?;jh:'/;]!,qjA&M"j%&q9Ga9D]BHFcuT;Np;*-R`jfJln_/*%3b`L+%#=$H#@$ %_^uQArGX,L/dh?..7,Y*'@2amQNi;M._M5)OGI>o+]U]9(EO"I+9j %r04#n!"p8+f!C2mV42r'LjBIp@grM^@KP[["L_!1Lcr]+fMnL7U]\4[Neg %]X-l'NCgm/AB7!\9oAAlOIeU^f"%]('0WZ"oKr@24#fImC&TD= %4ql5&>9'8kE8KT,b\C1k]Ao(V>dl[VLNol[1IBdn"HH9a"h37#nZIokb6@3hO<7S+-I&n<2FC]@>P+04>DKT87DGgk%C^jRp;*1&4'9*1,@d_/"\(1*R3VuZA)^d_VDIbeIk4d&[as1n_]!pFl)G]M_Y3nh7T %D]8>!3/#$8k$D?$(/B,Jn(?:5*D!h=[3"n;X`6ejHR6M,b#c+V7JC!tqn;5C0hK'Pf%ah7JOHKNG.3%p52E$kNk5-6P=k74P=VUo %6U9q_rqehMfjZG1FVZj0WPdjj'ZFdYm,0"D!7mS]Es/)2[DE/gW@5\:2P]1PEu:!JIos %n>1t/(5SlCf+o#1bV2Ef=,+MpKf'jWo5Iej4+WGiJao)DH %4$tU5GKqc?)s8frpI!-BS[WL&UaA#l]7kG14>-?dDKnZh7<)VmqTaH;%ASDoTJJ9^0$o?N"sPGO*2"A:^QTq6_tVf&"d7o-*I3AZ %Nl/u#cQ@>%%07TnjK+"k&q!),%Q"i_P%AVn42W1'"%ruHSc-?*`!L_YD4o6Y#>PWA0$.hbdE:CDg"7bJ55WUhe&TJ>B2AA:q7LlHdc91IH?RC*XmhZ!n`9Y3glhb$5IVs# %Nj-bT6o+'dmt&[#h6[$S%^CssIPbiBbN[%hcol)YpS7u/JHOTR+Qd*86o[3uEgpbZ0u:*F.-n\712h06bLuWUr>)l:1@n<)>CKNM %*/Fu;F'S]2KQMheJ3&RNPPrW*.o:L*k)ojXOQLT@m:AYgqb)io!cBD%\`(AQ5SIZ[Kq/e&GQU;+'A%3SR4#a@i7Y@k=1^?.K! %5bgO[?F6q?ks^Ia52NK0Tk"!`4"@i@f(@lr[gK4I*R&0&F^XD7buYs64rri8#&Gp/J7)9$:7r(!DJcJ,+V1j"cQPNKcXYdW0:?YA %du:f<3$gYj1GUm;.t.MdCZL!4o7Q*cg>b?7l4\V#juMgUR`Tt])R>5$1QB2c'\Qc87"2_(1q3&3IJepiJr/=Qo5X5U`#N1e6'moQ %rM>?E(f6Yl':%ub%"*P]ZMk3[kA&NX`GM\ %KO_1mJrh^$=MfY=8F5ciAjjK[E5Zh=!(,,k)3'tQg6./T,%F#9I,B3AndP`]`R"](!PQ7GCfnRJ7$HNGE95mgHXZ&XQI-LSEP%(* %&C(c&CCt#gF;%P:,XqJ\Y>G#0qTJp>0%[;9')]<\?UYMr'oO(pWpY(hu=IF9jB>W*?ZU;P7CAT/tbJpP_MVMUu#'%SqM-Y]k7 %+WDg>9"c11Si'&@4/HL"nDA5IFE5/*@G*A>hfOu7`c-IJLuXa?HmqiTZCqMpNQl"akBd#,IGZM/r9dVMT9FuLBf!1"YGE+61"PjP4P:o<_&.gAQlbS`. %itD/,@Rh(dRt,RK!445ZU-Li)(5k.*@E7VjgJ`'0o@6%0k".I4e)P)lFma6s4?RqUglp(5FkOA-BJq+LAVG>9f-U=3GIT7i]TP!1 %0)L%bOWQgV!TO>_C+[_e\`\"iYf\:6S$m/HCZ?,L1MpIY]6EjNhU7+i>WU:;GL@Yi5dq7!"i+ps4C:MOQ%'/*>$_2Ug3;/&1uY8U %RB'S(1dJb/&srtlZc?fhT+LnX&2=Li[]>EYF9:16/O:d.LpD\BH_Iq)KE_rV:0),j1^WY?O^E;$M)61AD\V7p`T&/9a9TjDi8XrF %'EmP>ka.CYm)]j^^qP+akt!q7!QNdsOXK?QSjDSoJ^Y!8XR.GrV2HG"_#3/O>_n46>3:q2fS+-Nep&E.l\tKNo-.![/@&br=;-Q6 %P0!E>n%-S(fR/aA,2am+7+].GQI?Q/":$nLGrfo^5c:X/:BA?mR,[ikN]bR;(k&^>!`R?0rW;3Oe^LE^Y9N1mkaa1g0ke+0_>.S%I4:Rj4;HFXS(H+K:-TIgX=b:OBLC3T\(jrkQg`f\gG3j(YAE!)8OEk`_4SP(#RBI-!MT%^@<)a)NPij/4FQ(f/+;YBDS"`:NEd:&Gq,@[J/21f)pPT*T9GF1P'@V'ARaQLB %+pER'=GSLh+[6>gV@\[g87CJj'V+@\&i@_NqfNR,5qqZ!+k60K^rh_N%aqSmK`ESDbFukU[bY@8m.kB_9X8muq:.X+dm3:@4`7kD %Pok90h(I(Ha.?#r%oW*33=*ONd'i[+S[+^eUrP_QjT7ledX.5cc0KhD*Y^H^"2h_?h&Gr+8^urgh_o[4e4I##!L?ob_<<+A>ka>'G %>^jf2];Xaf4>Gk]%2$mfn\51&DiOe!mP[a$r9Nj5_>uj9-(+ah@AnfK%[`#C@0]+h5iYYnOr@(nhG8)(Fo@Cd"X=-X%OalcI_n4. %SJ">;C`MKJ-^>ef)4b3bbWU@V) %P>mTP]gB^*R)gEeMJJB&Q[\R4DGB=T9dm7"fY[]6djOR'pXD?SH@";AiH%FKp:ZCF.7P:]&rpfN;qd#/n\\\pUUMpq)s0X"H*9_iAYtji %0,,\E"mn:X/t_11p+ZneX+`FjAno4A>'UpNiQcnb&)pHWJ4,\@&U.):+^<`s,>l';3_eO6kmY+&5gW(%l0.mhB%Uk2`17*>]V09m %qs]F>d#h0IaTVpBEY8?uP':Va$f<(#M3.ITZpFD/5*s`q*ph9I35QGh5B.$T.UL.IB*46R;thRXRd/iOI:T)lFk[sV5uYWBm?3Z-@,['67pOU3(;M@gHQ)o3HBrF,2(SgujJ %V0eF58)tJ;piR/Z$\jh9/O=">92\6uLaN`PBHSRoB2V9"1bnLEoopgkMoZiD-,`Aa'%J8t-Rk3G3hl*W'pGH_*W[^hlsi*HN_$@Z %_WU1W9rY>P`W4SY?Ak^8[ZSA6]e@Gr9ZI_CB"fGVIF@lKl!nMa1K6&Rp;fB+_m;H1#@-9tfD+=NfIt>m(nD,Fj]j%;E>tj])fr=Z %G6nJhc'Nq0J1^ee+3dF;- %34'nR)M]!inbPc9[/jD5";(be0E;9;JITq<]a*bPs4m);(sa%=EGWd)>-CC@PBI"],UYaA1Ir?+rH$r:X9;%BOZr;[T0A!cLm_aK %"/S]HL1^?/e"8:dgC\CBE0eADA3lmnKooo(gpB?oK[bW$7>m+ZBNN=R3qt/5",smK#&pYTIh?Pg#MuP<<=Or??Rh %GJ9HB!QK4f3_5BCDSgg*)RCXH#]plV35f[#DYj"s(fiSTA=/*6>YsMTT#Nm[fq8fXB'_fN]/5RF!bikCDIrR79sF="52k5/b\u4f %&UZ>g2`mcPZSbI#^IOiHp7'uEU=PJK-qZV2Rb15.PW.2k6]OENHdcc0p)fu80G`V'Waj%Md[>Lh'KT=@2=\e8eS20E_:>%;)[L[ %>@SmTrC#"V+p"Lgg'OX>-ATtf`!:!!iTe21MB383r1u0)]FOPA%SXRtM<`9-S>QQ41YQ5UcG^Ahj&)dU,RSA/ef %/,Nrp;3i2u&Q9MQf0u>gRcf'FiSg,Ln43?bQ""\H#@Nmu7IITb*p+MS1Xu,UpWR4^CE(hQ.[7TA(3soI9I8>B1=&@XRCc'_e]4GW %1bVuU<\:\F\t*Ud9VT4j0OY`iDLDrSUWYERQq[Pd%Dm;..I^:PK8V!bkMUT?=1r+t9`sB6DqIY?(k`62$llE\16oP/<=kS&9X\`T %4V]p^N:#E`#6A$t#SVK4L))KPA8<*iFakfNkKRMsStc'os3s2[f(Gt(qRQGlZeb_d;oH7ic"lHb5imc$F=K,Dm/_3Z %YMLI'@,XGBJgtDmX)7=1H.t$FTV26d',r%,,GK3k2st\iN_L,[-uHU,XPCUDG@$(A':hNZ@l`e'5"\JehZ0l?a^XWEKVYqQ!=`7u %c&?RbFYYcN@I3E_nX'Jh=%"(,mkXP^H+b]e9DWRBp^$/`OQD"g0e;m]W+UYm)A-bQSkHP>ik'8P_&EaI&3Fd$b<4Y",#2H0<0*`1 %4dmd[2fdMrO89';F,[s+"(WKo=?'hTNjsE&+R4;sjDgj(LCQrT+b\ciRW-H7%nGqHY'qlc%H:&c2pYBQ+T[R4jK,5[k>(d!+F0FS %Uq#XH03#Ltel_J`:>ZMVHiW5aMIo#o1`4Bmk_M'\;2bRP8,_k9UM;6HC1<0'G#M0kn;pM<^+9>h5a$(/;MDK@%sb]GV?U[9*4V5V %[c=^"J]lsD'SoJ>V;Zkg,(FJao9hpPo1hTM(:>.R`R@>n]++i]1oOSD(]2cGSanmSQ&:o.P.:_0T=h5@cfaQlKq^"+%;4siVocM_ %H"hFMhK*Y=$K1JbS^1Z+CR#0-QbAoAmr&@nqV-O]Mlp%bC8kD[StP;Wj[\nOoL\?CKI5DN(Y89,I'(VZe9'rcBnFF97[G6@4"sfT %Yep7l+d;JaHj@rSmiX<'#T!f-m,C)LL:_8X.:4pU_rdHa6Kj^*NO$(9/!GpiPRC92rgpkR@*:j[R=*aY!1[4GG6;nCpGV+&62C\9 %/HahIq)1bJ;8IrfKqp>GnWrUrf.Q%!TH?TapVL-`b`raa)OEcKLHSMBJ@B.Te^dpVo2W`Br7'?0mq`'!Tl.]V(Z=kZ:1q&Mkp.&l %\IHW88Z=fKn*R3`L-SUU3+&#t"iH%A-Orsrf63CB47pSq?!7ZY0`Vh-K0I@;ni[*E"sbBEY9O_?eCT'9L%O>4QfNU88Ya;[DV(1) %[6WFqTBl464tYn0<*V&kisOBLm@[3SBu4\Zc3lXd,+,>Bq;hl?B6r[>6FN>mKW)6sBEp$Um$?gXbHX/'ku8:=8ra!Hom5b\51kL, %^(OWbqaegS!O?5)8EPe8cgX^#Ne5Obl$cCEh4\?;b=g%Ep%G.HQ]`k6mq\kI/60'$@J_kU7e[hbW-<59[Q; %9nfbr0-O2V$,3]i&rYL@]o<2%W=I$i/JbN9/CqbG8"NFqI29ldgc(ZJ4]8#ql0)jLLo6KA4S^r!:-FL\G=&=8?bgtC)e#"Y,)\^g %?%O#A'Op)#u'8kGAG8H)2T&^0L)]U*/Jo+E+#/_+[;X[Y:E$A1p$1M92\-J\9B2Zb[UA),hZfKH[RF4jq@*bQM< %4YnM>G5Ab8aWC$?8rGU(5/d/W\fV@PK3[p2@mk\79!m)%)eIKchWHh9!FLk(b3+&fp1tVGNKu/!^AGJWDeo=K5VCSK#dP5CPZ//; %\JY;/@[t&)+GlQ!%Gsq,#\tY1P&i:Fc'o[*46:Pb0oVl59#TM`rTqY>(O[Po3R2R3ORh]C2/eIOn#B3a=^hJ#6=61W`"!lLa2cNB33@::UncffGJLmT1#=i`)o2P"m:;R::TSiK@6SiSGDN %#fDMPdHBc`%<*SEY_O^N#',P1'"dKB8P=0b=WF7mcNF$-J'"J4O+Q'L0IGC)-m]HGZF'Y25WYj(X-k6=8@n'gEbCIg".*n3*"Lq% %dSbA\"H%%fm.D&/6oH@T\0ZG&93>N3_?m@Oa"Qs#62-2PJF&CqDQrX$S+)UC!D84?'4<,@[jtI*(len?;V`(JC#sPBY4R&^r(l7. %[dIit/r=XFPAsCXUI,cd)'&5MT=SBq__BkHs2KY*ml":D$1@o6"E8hc2g^MX/\c#uV^[*/Dd1$LXR>K54Ski;^3f_9q)@cF^V@=R %s7Y>5^A.6hKh-[illpA;MjM2ZDsK?G?m)!hNl&!j\,C71">_'G+?l>mcIMSbP"YE!#NkVP!.k386M8(hc*qr9-cF-?@q.JAqua$Z %c\Eq$F;"X/`1_+;T&fMlM\;]j49,Idj[4//,2.0-lX;^?Nfk5ca"EtU+og:3?L,Dqi@)R//LlV1_+_U6kmDb3^(>UYm#Fn5P>pm**CO`'t`_E$AOaaV)@3Ls10<4ICZr">E/6M)N.>I1L6$7ll".brna" %a35\LOn+GoU9Sd(S^:$bc,hn?O$'9=%5a?G89rXnnfp:i6%h?S=V?Obg4;6fG<8($BLrt]@$CE[.,Y0BPiUeRH&+5u"94HSJC,9i %a[)!i'YGu*E\WVtT'\)eFrbO'??D6P7k"C"ct>M>bQi*9MeeGiXQ3a^bb]l57e'??$jTafIN+2/TQi5A(:beL[*36D2%PHE>Y';$ %9gJM'q$AD&_%6eX(F!Xepg/@+anlu#6L3!B^qLXI:`OH*qSk?jG3=ZO9QnfRFTsCJT-K(5(Mr6Hb%2^araB@=EoKi2B]Be\,[+X4R0J^]IsZn9@sDERkak@k[XA->bho.H8)>Q. %<*.c5a,eNlhd$3Kk4KU`XYg*/G"Ka:5:kn(jYJV.9(&Ct+iR?X_?ALG"n-E#NtNXopX"=OL?pnnXJ^>'#4crL3\jeD\PE^,NiXGN %55b+AFbTk:="3fsdXQ!*,FD!7Tl"L(N?+R`!nFh;KKJ,;&3lp+Ag2>OCR+&-d(IT:qf&*G4^iu!CiOE9@t=Xha/ML$hBN.gVKk[gLbuMiW_^Oh#Bq?.kS9PsBoA*(UKEZ^s*?=K8_Z%\;(78gjBC %^tL\rQn8d0T\o1gK+B4N-tFIlhuACF.h55Z(d2+0Zm<_6l*rDW`igV5W/dl-==Qg2j%NITc]9&$f$UbDW=`2cOc@Dfq09g1!Br/Y %-i\CO7#l2J.o#hT=[EV=Duutl+dcie)EO(.G(.Z!$j)sVpL`Pdq`c=(t!,\K@Q;_%^+Yc>:Q_`mA,RqH:,NjD\0*=1$OX$1"`QM+$+TSR-4)PoUn;#2j_)-C#,piJ?m]7L*]/3YSaM\1e3=%O8r6j.Q9[?'QiCknRAY?>Or9%h[WNH:7\8\WKj_q@lOVe*1:CTbQZi %g%,ACqYKnZ5Fh..g'S"*Lu#r.I*1gpaR+c,0:\KWX?O?P?Dl,OWbm_0t9JZ_QR#,$&\FF3lM.1$p&5,E;LYinG*6fqaFTQ %.?o4sod'[Xp\6**(@+0U@Up#qST:nsZS0507rUd"N_GJcJTDYe,aI\hRc,Sa[WWo,YU.@7obNV_ij`Qu+H>e<;YUNK%_sBtDerQc %/V;Z6&D_.<+)91g-\?V3KsiEl8!c7b2gZ3$2EGX?8LEt3*%@J;Wf_3I%u<4%$Vb^A9&MRf,""=/:ni_#lQ*SrTiEASb7j^"4*Xc) %>SE8G2!1g8!F]!cdN^*CG"/WU#\Y5*aeGKE+l!(2!<;Y$=P8g":.nBA$b^"mHO?^gO%]I^sOW6L0ndt:MZJ^[#0Mdgd1Z.j?lJ-Q:X0bdB)WmKh]fonFc[fq%aXpOJ65oAPo %K/KUJE$&UPPk]p;F[0o-HrW5+*(p'eCF1\LGOCSRtU2IB[Zlhb@D5>$ZEO&ML_JDi\YS6X-4IS")QpREONITM`f]kq1Rb"=s5;jC]'V!!:'C %*D1M[,8-N&?JsBg\h0n:jQ<_5&NnDf%!eu-7u'DhI<#\0Vo'tSkKt(*%I$jpkb$r,B(Zfb4(9Vj\':'(qePPA2jh&(g473SQQ3\EA0-Ka%<51B_"0KIR>!UCRAG %G^3:dR-.\r';^#Tj9;;?&5*]Y7Gj#dNVl:*0Mr!$&!/l)mbYb*:sPf!'fg'P/Nnm#h"AeXeT:R5GdsED^dEl@k)2Blj&eHLTEF$d %JlG/kk)hU)Zg?R7AA+aN+p-iN#/C&nhNO@+kF0[< %>/s*#>iZG7'i\@(#9-Q(M5A%P]@pfEMjLduZ=Y$0X!8Zk`1+rX\FjnRAVSLc/Y$#da>(c:\mrcAN_8)$DkYl^)/t8VLV.q]a6,CG %+e5amnY'J=e8c&tOc2K&?NSodX;_b%i[nneO^2b$`ZsLOS>4"DMC5&`%(mD'6[U936-6^4689I\T.&C]k$>UqTS=8]kNR)p'XXd% %!I#6C42o>"M0H]^`]VNW>tmS_\1_!m3Glr^TTP(Q3+/#k8#oklH)OXqRK3%/S-`"E.j %V0M[o89AAR'%`F^a6EDI!Zl*j"5-%pC?\OtKIRKG\-&WdEH>u2m,-fZ_,=,:XP6KhPW#hB$V*=iP'L\%B=ZkZeK?!`!==%uKIP.d %97r/-:E/l@UEC$`U4N4BJNu6I8;q(k;g;fOf!RsrOBZ[iEjA__"qBL6t-2*(i"Q05:O@-tc$hP.MYII)K:Netm %b0a?^W)otM+MgK+EUa4Y'dZ-B3WoKk6$&*Wg.6rP**'p%-_)E,ON<_]*(W8I-S+7`PQh!co,&AGP!oU@OEqfu%RF%JEG%>Yq2^2G %O*poDbSk$(kM),%=$&1B:>r)5Elf#aEgB(B8ZY_c.k^D6^/0+qWcnM*2:1Nt`(gcaU"pX*LK];%q*I+ZGmL[SW1[3;i[EeuLdY'qFFCYZ=DroXM=D^s-q0Oh+h;cur;%MG=+Lpb&@m#Pf0mOFekkTNrd5rni70naU?C<^_KNgMoe9*'1W9=;)AR#\8nRc?T%:e'tWI2ub^; %$.l]ARG,2]QTc9c7(>e\etA=W$a4(g.G])_j_[9H25bmiPYiShAF>6s[!\Nu$\< %:mIHM>*'1"a.]D_=6/OQa)13JF=7JG)"\WIlm++1S,?EgX_&O%9?0V3h5-C$MC>]NJ7VN:DO0u?W%$MYBs5)80T %U*8kb-GLpRHP!mFqWfo>H(b\$qJ/!';1UonJlcS2cFR %:C9.hd'BW<)E_:U849_6Tt^j7ctZ)+fFgD,;;NIo;s:;76XEO+s %2ArNMNkcJh":4d_3%.(p@%J:b(F,G?]j]eW[%QVZN\lQm?iZ]KG)TUt-ln9-5kU^p1&S;=Arcp%KRbZMbFj3qUC`BL\d)cT>sZCg %/n.9-a:1XJObJEia]em[.B!I`;%JF-(FQj(*7ib#)]R76'^]nM57fgdTFoiXZVc%QG"%4l[DRr=74p-7-*O %rUTd-I'Br$&.lIS,6G8!N^2SF-"mm!mLl_K[hRSWSd3uBdcB$Ol1k+K,.I\oK+FHWm&k>@;6gmq1e"EcbG$i'6N]J&^aQ=9)XRWr %&r85>Y#,rGN@tD:Wq)`*QHe@r8!U[T#fZ20j'_\DUnm!_a]1!.Li7YGjQ4e(6fV2oX9:0N/EVBF.I*lGj^9+232nt#k\BH;Z_ %hkIs(Ns00bVa)b`WsF=a'uBY22(!8ikXjt>n%jR#9]:YbL78l-N%R-A&::7B*mc2<3gTpY(igNuGYN+"gfp(+\id(4*32`)ZjR&'p$'*)MJE70T$Kq1=(h["06P:=.dFG5nGjE]_#mt*/=.<7iO:l;jhb'bQ@GJ7MdW+:Nsi+W#D %`dnb+p5ThDr$Q?'0fpJii+N`9=T_#:ks597OM[=1Q[qRUu]c^9_W@fX/4L9a!7&D4aZ %FAY$@!4>5)3R545f3#m-3A;A;f^)PWZ#U*aYQ[r[dGU/3:SUR]n;[ld!4n.oO/BjX17hl)&@0ik@imA7 %D@i`sIb?J3KlF.j*uK)o*\K+"DLd]nr%Y8V4T*$WUDO4kBtR]8f7`Ui'$?&'!,l="YS@\Gpj?@sM^sb!Q"Vl=mhc2 %(O-]l)2[[$#VrX^E%E_Y?6:2_4qteQ*`+6V.If!"kr(b$NZ?bT>jsXV %j_lD2s54RO]A*>I_n!<]LFC`?q@I@6?UOkPkaLI9#piKC*$'V/6I.Y24WrttMrK'I3#lAVbg7d6l?*/DJ;EYG^1\a1&Gc)i^M/:^ %K(#YX&98?G8k7oL9VInTh_Tq)5aq,Bq54b"X&40dq0]-Of=6bW6\p?WJ@iT#6!ip5=]?$U]+nEn!gP)%huFcg`NrD^*N.$QG<`an %LQWc:ddT6h;VF*+n\CC"jL.0/Edh5L^q>jBE_"FF5Z-$IG'Tr@ZVL!0"AC[=N&/Uhle'N#a:9BDPmH3WU#VNPQaehO#,4'[Q;o2X %4?Qbo[n/7sT2qc`1W(S#/X(-n&nrHu9kb1/mgTt(,@hM!pRs8SVO4%-W1OfUD$=;PQc\sBHuMRW/Q3!q>#kqh<)7]Y*!C53+-R`2 %M"HbTbMQ4aOP!C('\sr_6(8]d()]4kqYWl!YR.88p'I<=jmJ+fR*IS=SVa.=`PGKuSf %\p8SsI.QaEqD6`'k,,J8.)8SN&Z*?Co2dSfjb2A(?RC"K>ars@#o=,KI$$_C;cT-d#H/VgqnNbPZI4M[5)MVC,t!G1eS[tn.Neit!S\6Kn%aiM%[?,YG6$,9+,EHK %5^g6(+b/'[L<-L[AOP`$`hK1=3Xf7QKY(R1&JE`DODn8+@E'Gs=)/n6e'('oTL5aB[:U!JU_6=K^(rk3`e2Tu1@("m112X5DFVe, %,\XGQ$p9JOQ(0rGlT@S\`uuAc/4td4"`+Jf+fM-^K5jH1PSqe2VK4fDkcBIZ%"B+3_E9Q(I\(sonCJ:t'?D-1gp9kqnq=cO4?_7U %%3^c:,#"nBK0e5B5a;@5eiBFL%4AGV %d>J.f:6OJWcR"d*eaVi]L3&.F_'Ms7\24f"1^&qM8drT7&m]G%S3WV-$605rC[\MDK**>4,.1^.-?V9lNpTc %i&/_.AM?H8[8RhQX0+u;8Kgng[''FYp>11jNFU]ara(,!:^.P._Hf<)\#1&GGeu0> %N'ep9KE/tX,*Ho.qoA0Y^KPFA*]*p)8aKrXF72\"<-Qr!HWYX^<:%^H)XMS.,]++8Q?o?)8shA1@Re^9K;`?W6C"+a&o&0XASIKe %Z2`eN$Im)2q(d&C;QES=aO@qe"D!tu>cA+OnkpOZJSINC"5)"u]FWi!2r?kDLuNJmAZJe6U8);;is"%QQ'@ %;6=f>&T!:I9s']]oHPZ2bg'oV.`sSg3Rs*t!^0a"aNXnh_ZN,KK?pAl64"W5Dns[(U)-6$qF)q@C#*6\oqW(9DQ:d00SgV"k=U7f %_gi;_TF>g1]8BYm8n)+LWET'.LH,>7)W1L`=3M,Uur9Lp)[SqGE99k;;&/I1u<+&h/&RM!G8*--(j:T"N;NYlq( %ABrb:%^F_oXR*MJU3(AQ^kddk65GmU/jc"@\:uT*Gr.W%;540cGO*KLEi!5bq!]7@;B^in:>*j--sIeU=4\2]<`"+#YS*+4%cX8n %N0q-=-_[2(PH>%T,fh`W6j\iAi_4_'HA;L8\3WcH":Cgt&X"Ts6sNjB,I\(+'JXM1pCk1Gpb_/!6FB`+&D&>BP$?2N`MQ>b0lCJ] %?"$a2>)NY_An=A-JlJ'b@ZhN1/>]W&_=08Ad4KAX9DBga&JRKk7H+`-43iROjs)%CObb6I6iu`ESPWRKORefc"CY*A/>^'7)6gB- %c-ei[WQ'N0@;a,^:?iLN,4[L>Tdl2P`S!dYI2Z&F(%up2_\HoX-r*/XBXeq#]9cClM"gurhkm\f,jkb^=,G%o.mpgM&g0_&PpS9r %>=haGr;.(XZ;?.>1#"&3@8h^bTRbre'_o97CWTXblEK13K=-JNd,`c2N^N\jN3$;h't2t%;.R2h`H/rU:u_5 %V6Uk]E\c,Q;)KD`(^e7d&k%Tu`3bYhm)6KOj2qlXVOL(6G'5'#!;`jt;S',i6T'So_MQ]kF.=-hY"?-4@(1nH)DS"B&Nd^o?qJX1 %1VSoL96>;'quf01Skr5$JVNcNf<21mnn_2l(HPG9cg,t^'7@: %*7L-a`%/Yd*Y!A6h749IjT)qZ8GSLPV7_Xu-Etq6q2m@K$+gI1a,AS_BHVGRLh_ZT<=do'6Ki1$n8el_&Gnc6!XfL(LB1ndZKE)3 %Oob?o;!Kj\\'1Pb-A%'B1W#JDCtS8o+u!()#7LcV'cN5&%G_-ac-U?!:9Hkkn)?6\1^p&j(SSpl&r$k1V!'a6,oG`3]rso\4/<(H %7'%P_aanU9HAk8]VKDGs,rSk^b"7dHIMZhD2qLcODki2s1i5sn1LpiOAl;h/u85@6K*.r-:Z!6dAV+Ug'-c]o_#-`_i@-` %Mc*.i)teT!p&N8V,Qt?.,R@mOLn,r69!Kb4+lF?Y*asslb_&!8MKGq+2Nm6V,1;3BNEPF %.u&>ih/-gYN>^Aa0kMDC!KnV!Lt;s9pK1tX,SkV[Lh9d$J_MrA1h(hZJPgqf)SN[Y_B^fti]o(]@2D&d#kF<27>]?W#RWMBVnhd6 %0K2N'U:i:`WAQ.\dfdI\&6sGo2JGuRJ2['MKfJ*P:6cX$pb92U&V.!T`VoZsa9*fJX+Y@XS9+l97ON7aF&"FnA %dhD4oC5an"=fa;4a-6b4Cf4jT;ta%ECk7P#A'\5_@UfGJ1/'YaHGQ?`7l@%rOb#.2-3V4b7*RANm$QlWP*q0;@K;fr/VC42:l#c/ %``D"'E%22e%ffSMnOH': %J64%*kBXg0Dh.86)\iQElt2i;*[s.'>*S"bY;$03-cBP8-.)CYE9CfqJHtKeVpCOQ5blFg-2GQ!d`?aO%>6+5^G%YSNW!h9V]KPJ %BYK+e)Iegs-_tbgaj-^qeK?ag1--0c5V1j$^c`?E]0jHe3HWJ:h4Ve&![g=DJ-)H:,[m?(0o.!J";q*ZaB9Z\!/;hnM^QJhA5eKK %Mg/?%#,\IP/.626A+hB=e3(a",m#rSoO5j2'SO,cTLlt_JkuK<_i^PbN"(b<0&bQ@!N:>D_tHdh3?'\>)&AiOr$@^!#6..=S18jjV(tRk>BZ4If\R;aO&b(,<.?+?sAtYFmkq)]G>@Kq01p((>"IP21qX88TSLLC>=C@)h\(R)&2W %JrDeu(W,&]PF"SF1,5Doe;IYkI_e(%6u5M4`(rc67g)EqS@"uQ6,[NX%lAkmVX$.c.?DS+7l)EuF9oMcRk>1.KEs>0%:D1,jptji)(nN!Ju]Ob-$>G+aW,2!k%PT&!hB#j$kEk#+pJ"q)_E!E8L"`DQ]r).S)bI'8d#fRH@*4+Tp*$sKJq6tq322XKBL %6W#PV6iut_8/.;S8;u[[@9,qB/+0D[PW0mc+i,IB.EH9'/.sfC6"(G1Ob,1W3I")aM_MGu"uuhaTgo]5Jq,Kd5;,?Akq5F3/@Oal %q,!#V."P,I$8hJW*!Kk#6-%W3[$%msN)0mD#5,EYGEd?]qF%h(A7bnFcG0JoGW&BLrhM'4m>7D(B"5r7.JAT]*I %+Z$B"/jSET;R'XrBb$rRQF8)EA:e)2G`=E]+ap]2OJ^B(U5W!3@P">k-e_5a>p@"&^'cA_S.25H.=:;oJP-ppVB;^nN/@='bhQ&( %3L2?$">(MMgn55cH=+VO05BncGuQ.P41*1>Do2EE*!hBHR!h;u#GOWe_KdB?90)K]#tIV]5uV)4;Pjj)m->3MI)U1>S&:"PFs2ES %Xp>hfC)$A1_9F`^(h,Mt+:WI,;/[7Mf.FFXm#&\,dHdQdF"p"sWbNBb@%,]Oo6?HlcjP %B@>"`\YD%pMK&jdML9Q?RdAt\--/=!it'm7pH+7o80(,ROD60tWU)<7^s^qd*b(6,JXB06XA%8=TAr#clWbt-B's!7V*9G!LSE)H@_TFN8-7)18W;l %0Y#9`Q6[*P66,PoJ_%i'S830F_DW1OnJ!`r)f[:sj\YKbOG/Xd+Unr7 %=JS'Zmn5Ys)S'Rtn3iH\=+f;)i'N$\%a-(CE6af3a9W8"MEBB*Pj-\1][[D@_-:DQ&&&5nH>Qd@p19@HH74ZK`EnT %lr8(:#VV)J64p,1L15pl^l@D@YehUO\2#]a<`/"Yp<,T"5q(9FF@6VT@Vtb3-?3`4.3u]^)7TbQABUHH%Y)'-+9L##NBt"0P2ZP^ %^e>DB:J"oG@&t(NJ.V@KJi=(ps6YiL_'+/G3A]Z>7k9C:4jP#CrL)1pA&MnDP_E2)@K,?2dg7e4U %i43P=K:`BnU0&**1AhD-:9<5<Fm*HlV!nMrg4M;2o3!'FW&WV5Q %d&e=e`B(GR=JI!Ji,G3g;+sIoac#tR0,>mTQbo+5'5"63pcP??h+)R(C_bpKR&cHY&jju2&I`X",3Xgk2%e@e)q%T78YQ"%(^:/O %',Z62&_Kq=MrRs?VfsD(5WUEtV`6,MoO+-K;2c#S3*s^o%8SS?E["l'".*P#,'!%G/iCQ:*<3!0< %fH!>a?_sG%i:&t[RZn!pC]s2\bUTSFP&ln&!?&hDHKsk:R0,-PP2XWd1:8Hclp^[TIF<TY\Oh<`(UCq %2R.YMd%AdL^@9+O/).ZUA@]!?%A)]r&>44n8GMNDYE,<6C/c1!5og %>j;bH_=a+?))0L;Q_;@].'Bc_fA["X(kBdb2[Mh^;RRN__DV"G0pN'IetK=eSn_DkPsrPeaL*BA-Irf;91_41&4F;ZHeH$hf\DQD %CU,f$r\5Y@bLhLKi!$#hp..NL'i*US*eJ:bg/Y%l&l7\,>X1kM)HU$90l`,YmJs"b.J(W3$l/U(HOKYi=52(_Pb?7q,/K*:;Tl1Q?X$lkcRR0qpIH,,F"Of<0Ycu9It,'\Gns) %@>8#D0p-O!WO]?unBHc&2VR;o6n&0+jh^%m"?dX_p*Z;0W*\`\,BA;?gK6eWR4m.IJpJXH2G2K4S;E %YGccA1F")\,Ort#Es2-@N*F-]pdb\tHZg^UK#%HaET[06Qm@7$_@)cFJ+4>[`Lq^p-.?o\i]X,8k1.Cl8/`TS\H#Z'eJlhC',$Ak %M>/YK$KPcTRhp<0TreAO:\"P#?)X2S%3P5AaVs13-%(jqUlZ$kOV1uR"Cn[o.2/&,ZZVFI/KS?6"+X/WclD0ku!`A6mHW"3]ZmmU40\@YB7e&l$%?=2Vo-M?_ecA-Jdk".F26sK2;9*2! %?nBN6WGWRSqRVXijW^R"8+!s?QJa:70*:#`@>?RW/I59&JhWq1.@IOCOX4*6^gMt]=U-@*&-cRL7@n%PALO8^+A.:r2\nSE.0.MQ %b.K+COuOS*5TFRD$BbbsjLmis(kto8*!V\c=76`aSRS %?S^s]6nd?l.,`YcP[4W#NJV79;ZmdWGdOhfH341"&5YX)0Q7SMb[6MeEJr8H_60s-#Gcd.HkD$/5jDbJ[><..!"=O06/Wp)9":TM %g!VjkhT4stGg%iil#93cYGp%hE4EMFc`n443M#gT"':X]bPq'j9$G.'L$fIgoPDJE@(VqRJ@MVDH#/\0o %]JuJCrj<"<7RDIp-cIZd,:J %?so_TesCdpUHaiG`Y13Vp4Vc=pfB^t#d.a#!!%AaDg;t/&.#mkXI6-)"(NSu&X\CPYTh.j6_etK-#+9-_N3'd"\pmK0,6:'C&7R4l&8_NBSV2FE`kkh-_3UNgPHYtIRM7Jq`:E\W?m]'8NPp`@-P`_E2Y.Z[e6t^=(!<)!2fh7i %8lB2Q"AV_H1c=8Wjlh6`LBh"_/f^q6563a:Z\[aA6E&h6UOp?JgI*$h[-]P:L$>=j8AYfidTD&)pd1C&F$7YkcqsXT?6[dI?D<0o %*@iB.g"9h?B7V&%\7-aO;CIYJE[lCLk_O0tA/+Qr>ap*44/\3[@nB^q=LhNOhYOh-7T] %=:$uH2;J>L7m8(s^:=**k\V+I.5*B<3[IM^i3uQ5q%br*n`%tTskIS.+J`',M75deXh$mLZO75-.:8V6r`(ul06Oi6O;'5Gu5U4E_[T\q<"a].qCJdd'#PR)l11+.M. %C$o+qdY&US4:EE:?LVLKLJfj_&/XU8U%n>+SAR??*^VA4%asqo^18Xe9'I[H8JAc;PQ!#mKkQcYU12UO`/a*G`J7!Q3s/Bm_'clkN%ZdREE`cLg,Y$g$0>p)A_cQiD#*D!LGZ0"q$N' %GZL8hGFH>_9S-ebEUD5Agn;+"Lk.$9XEg*Vh%RJWaO$hiEJV*e[71k/"R63WH`KF).h/1&U;I,nM<&3gh?JLqOfXj69ZP%,G52b;X"6;CJHlfUC'k#^'[_jiIQ`=5Za"V-G2_P#m)ITY^'m?9]1pG9I\@'oH,Rh$@C9d'U=E`BLqkN'>huHE`[@*%56_hD%n`'!eX_WXC*/ %$>2[N(bNQ0q*qUU<@5M<-.<(W<`XEE".;:tfcV9K=M9Of%g='o9BnK%/G-LgFC%4JA0C\2_.SUh6G=$=.Rp7e=YQSc5c#We9:Ih` %9#pF:5QEZ6RLV%pN_Dm7e@n1fae"$66Un:ZaS[7mAL(Fg74&V^%:T8NX$"0C4;u"%L/m42aEna:M+a)(KN+,:+8OiG#BpD9:<67M %W)1U:KH!&tSM?@1^b4QDbVFkPVi1';JDpai#bdX=5p1(KZ(U5hANAWO5rYVU8=K<$@o3Xi$jZqle&M:#%1,=ENbsR@p(jsDItkZKa@-XnE1Dk-A7B&_1@haC %k.\b:&]VWqlTR`Nim`Xr(#XCF>TZfoW#$dT[PYFg"JI!T%])RV&0Wb.cKdX;:6\A&6L(QN`i#L9%[%1L,8Us@0k9`.72I.$64#s8 %"0=:DCdjZB!21X:a4u@;MX4bO)+7@9LPU1a+hNC.6^!*7%08.2R3<-DR0J>Eo8WsN23@`Qb_$K]_6?JfP"(]CB1&/D6=Pf`S<0Rn %7ES1KVBq"]^fQqQ#-f'$He<%C?DQGrN?rQ>:d\4q3>=g))%0P`+F.Be&lR18"]UI0RtaD.A1W3uWpF1?H#/-`7l-gXV`[]K'YZku %+dSL7!Tq84K2>*hP9D)oN-:oX'g<96E8t=lg^mtWR,)Y40[ %[Yis%H@;8Qj!roU"Q>YLJ;@ATr=BM?J=RuU_J4>UVhBc0^I$>0ZJRhSB+1Vj*oL'-8+cO_?q %;Ek:dU_tIgi9+6]A'&FM'Vt1PYZVDtZ++Mp3o\k4nU!rK79R#f1+OGj0:_KAF2i4eZ\fk`E3sj0$=?>^8G0hs'.d5+oI)]#RF_aI %0#B!42TYP`Ar0&kEJ+1l4S<*>K=t2uH!#iX)/#IRXJ>grg,(3%.L,_NjGMn/fSg7"tYR?-t+)N5+D+K\-?ZO;Ql^*0I^7r5Z!;M_@Q/Z;+`*=b8]eH??6oTq@clD34ocgq-EG-9L!)&#] %P3P9.>.V=ZJn@g]4PQ0>^G&L.>=Mp.&n!C!m#ec2FN'1qA@SikbQtF0i;2:Trtj=1&2k[YIo %!"EbX`9n2g6=W"\MZtMU4jp^f)QO"I>fIsbggm?tgQfIRlrKOh(O,=J!^)>d$?'&mS]fiB4,_/PCL8;O!8 %!%*S]JI2f9K8,1qA-O>f@q0&N)!-J3"XVNd=9>'#`(G>B!CtU/P+_#0&L8W'"L!g&U %BaDop>oH":l(2m@M7?S;(FrT"@'PNe^*9B/WV[iK1aqn_5p>o0eVk2)8kb]fb[@hgdPX@1&GmZ_"$fmQ86U(k;?j=g7pc[*p*3L%3 %\Ihb:`+1@J"V:^)arge$;c+s;%505'Aaa__7O?F@<'ro,Eo#0Y!jrEBV4=MoSAtbfFD!jk?oXAofaMkP'Jb)+6cY>0A0j&7W)f%ZUj1m$1@Ed8#+O]8*U^b'"$Y+WB9c5?YkCS3VMoU#uj %(9.5fXU!?OKPeg[J]*'U!@4EAPVZ/31)XLOgio_FR"jE#-I*)mm7Rm&=?!.Do,YPa6GYdQWb\hnLgF7";[p6fj9k3`P%J,4^8Qp& %P`Z*)N+Pif3E$7J91^e;Aop8!\CT.:a,o`t(MK7nld,=D5G.)nXtU+gd*]p`9bb?5Ous^s#e%e!:Z8;f>APi3gE`\L,r^DfME9J* %"3kb$JafR]he@)W9W`Q(C"$SQ8n)gg=\-\$!c>mFXEFT5WalcX$7nGKT`4PN;NWZQ7q@O^M8XhH!0p^Fl\>NG7G(^]H&rF_i58h< %9!#JAi%1ocl[%mW=LT49aom%##sbL,"9^migDVk0Ju2%Y]gi>Air\>U+V?2_ek8C^U_TB?)+sp/mQ[=0q[!2?E$bht,OH1j8ZJ"; %!g6'q8E"kgGr[T):V_;7LV[+BWO\^J97eOc3CO(Uf\*P+QPh^d"tnuDJ4uTIH=#_@5oV^t:AH$^bQOra?+'MlH^g2SlV5kn<)Q*0@E<`^2dU3(]L9l@K]&MD)-KXOf.cj"j0XNQK`l0q11)C*5h0YppCg %"Hhaj[#FGdN_Bf_g(J(2(J5BB4"iieGCLn/nONX++V[fn$]9aC\g-04,a(_!b9X$kMVLJuK7"Q6!cpA!h-hf1-MI*U#"Ts'-&Nrf %NW9V0bOU`17rb'AU*ml>&]c._H3-N)'88i]?t<8:(CEAFodRF=9Et)sC*c`'/C5N/Lsqp9BhTI3G=L'>5TEDGcm+Wn0>ecmX&FE$ %4<,3;/K*3sNa[9oB#^Pcg*WQ),-]FIgr+MhkGaRVR)q2"P+05ek:*g]+;U2:)Wlo*bZ1>#9OegK_cXeH:dFb)(dbHMJGrL@.([bm %3Vo-a/>me)+Pi'(p`NrPpH')"8;KCEOGH8lpam>Q&g]gVZti!+ %70^0Mp^lDmM:hh6ed<^X.m")GU]gGs7lhg`YdZ-N++^0]&:):r5SF)6;q!_F)+EW@$oN)K@^lJ>4tGPf %_G13,9ZML^&ql!+%$.lnYtu<-j;Wa0E%f$G9I#0X*I0ng\@`B+.//-3Dl&-R4\NqAE3\?T"%0\9g@?VEO4Bkb*mEq:dB$=@J*!D-)g_4,#WBN^< %Ah$8Gm17&D@ldit+WMjQATq&=il-bi`1b-]EX/?gc7"@!$GBLb#(0elIG'NE8clt63E!D.6)P8aiap0#\P&:qbtqkR8c=S%LNJ#J %QBGC%7u+V(EQV[-+:2X"=Jok0_IB22&VaB5'=Qptl.&@99iuL& %%UESo_$'OUl@`/llW=;mi8mcGn8\g_`f!.fJODhM[3mVg9Ld0@"oUaI3uHU-^S^c'S]8WrR2 %m%U;udsru_#%S3=)/9ne+!+s$N7ghA5G8o03*$H//4-GFlKpoWL@FFRYnFm@=>A^Sm_IId7LbM,443PG:rgaf"[m^S+=\n(7sHZ: %$2:MHY!rEnHLTZ6gJ'0!CFC@^Tke0GJ_:;\09]pCm%KUpPoDlO^l3#?p82I+c?b>BO9BP9WgoqQf*V=.O]+4Y66`V$OH5c8W2VcQ %XkGJ0fXNV2@Ko,B>(o"H)$CDl*"8K.mULek^l.>G"Do)PP/N8(d+CIdjZ5+EPlt]=,lXc.Q5bCk]6%JDFX@GE/-a6">n%MZ]EeG' %5b@P"e0!PcJ4Ks"2seAs-q%06*6=gb"@b]*E(_8RJZW>rj:&ppB#7>C/(e@3<5Pi?VXfAm)GDH]K<(^H+]def\Q&sCLWu(qiK0`6 %A5]?M:)oTB'+YF2$#1hMmD,\G3G^R0,gq1'?qZ6K@j)sSL5M1[,WP9I-GJ]XNGS8Z;?DK9 %iioIga=112TL'AbYQG=c8Mh]_X4HhEK'Xf[#U0BpUaJ`gC%WZQgGC6Z[OB?j-Ess)mCR!V=:Mn^4H.`W!.,#nZDHohjo@\V)W2Yk %YY7hbg'K"e4?";I846=k8Kh4=OQquC$F-Ir*/eF^];AsZJq9>T<-_>9V2V3UJ_H&c!d?^tA;l1@>,+&+.q&mGj^XrjTE'\*$*V+@ %_!rVB'XB`YH+6UP`7PSCHEuV!]Q&ePUVr!=KZo+lLD+@b.1.?$;H772.Q2?V5Y#dfj*Xq`WraI%hqNklK$cTc'$+$UcdQ %$)DKoLY3oR)GVD.'])JB5%31RYY"n_@($(AeWG)1RHY(*[?u@&UnI?*,@DWB'(X#YZc0^:W2CE*#4Rlahs*iiMCJqDKqb!"&Oc$^ %A7LhYD?.Sl>=+Bbif80TOR5!+0PHm`pGFu]f/23jVPG(#.X.M-#*g,u/ll\.:X?W8S\n)"UjgmrS9>F4nqsKNbDDjSO@(7de?FH! %0KLCUhU;?;1;VW!X_,9FZL0pILO4ab$T@='6*o07\(e#SF1Y:f]*:C^[16P#s-1j@a&]e-p/(.a:ApjAHue()D"a]k.JfK7qW"[3 %)smKJVB(Z9X)'YS>Q$jKSLc6s2)X-P?F/=a/GFJHhhRB"SWhl]RFj-[@h%or;?8$)P];\U[1f;NZC'gi_=d8GPC\q7=3TRsF"4\o %nkX[[kiJXrX'31t;IT4lb(2X5DS54UlDMnEb&OV6fP7tu[JimD%0>\Hcg6-_Nl;Er&e$>k`%J$;63]>EXJBlAI0Zq]`j.0ZNu],b,,jfYq0.ARtmM4"'LX'E,bnVPe9:3LMk35oSY!na$qp"#a)JdV`/L %UrW*6J1F@&7gG>Y\(mJUq#_'3j]*50.BB;`[ic=7%lIXT)g*16`Vjjqp+?1qq?#Jk`kT/omF&G[A+!Orh3G[thN;E:T=\E)>p8^: %6ru(7Jh,V)(F$?i3XH1f'2Y8R'c(9f&1TLlPYS68=0gh=ZLYKF>)C,1qgY-Bfb*;*PdBqk,.S^I*hpj@Ft>S)')sCGk&;MuKK2Yh %$j)lcl4d9(/(!-@P$_a&opE'1,t(4=T]gJCPc(,6+O:BGj2^tSQ9]=BVGtNJm_l1,*(5W%ZaIkeA52;3\6Jk^?(I5D*0d$]ObUG^ %_V>PZ?="%45mW"Q"F"F"(p+b`PppQcAG7<==K5O%kS]7HGp'k9U'P>2e>im#NX>OjKG>Yr>`/X(2,f@#&L!.%_)4am*p^tq3b4Hj %K*&j:TclEa_njpi.EsEm]^p3?k/fj.-DbG(VQj/tkSj>j6q.,C-"kFkW3lJF&-L@1L-mgHmq4FR0(AF%X9:%#ZtEnQ^61Hf^QF@3 %ZK4S%bbV0<9,E[Vq/=GF;LS]<*)M/'$9f'EP(6j]aZh>d"(168BLX0jDK^V_)*K^[Pn6(:8Kt95e+@p;]k:Z31bLqS#DW9h:95T/ %I=U:DVLCG@oe`Y4c4Y^MC?Pqg2j=m*D2%CA&S8WI3tgu(]He&+f^(PO`q)f@a@O1R!f4KU&=XEM=UCQq?=9%hU\kZ/G^seam$(LM %$;79EIlf6P&\DJN7`=57?=:!>PTJ6&'f*SNk=TBE-XWWA#l@834M57,C`+Dt#sq9&e^4S&a88gF2236W %K7P0LNXSTZ.Odij.*I@ToUO2n?BS)`?BS#o;+9ZZ.*.`B\O\K6@RW"ASuem]h5P1m8h0KZad4:l7>lN$DC6uP,.qW9'e2f;KT&GS %,26VE%QZ*(_`*kl]*HSQXkms)S>^IOdV;`^HKY6jb)TC6DXtf*U<7\L$]FGl(/\ign5k(C^:q7g]!`6Q^o?d?Y'"[H5N0sBp[lOV %k>W_Nbbn`$1Z4bh5F/Nf^aGK[X#COFHD]L_SM>6[!Z-iV3-LC"JlkV.$"ri*X+57_L^]r0lkq`ZI"@YLA!FF %%iiU'@BSl0#6eO.54rWf^W.KD^Y<%@kqSrl\Tn3G^@VPW-[[?c,u!pU/8E-:n/54S %-qAkG84Z2&"W7d_`i:`2TNEHtHNlo$*fUoKMNA>+&Dn32EOLh3cQN'T@:*gV)@EOJ2RNB\XtBXsqO.<-"sWqMN)`nV$trt1%=2>W %bY2>rUE-"tORYD02SVquS4(&CmBt.h'N!KE4rhhc#NmP]l4#A20[K5%?Q)I#44"bRSn[Z@J"aDTg$8DEZG-EW[e` %HHK?SC6koq3qb!HAXF;oT`h8;B.CRYL/?:F4X7hU&bc[;RhA[<.*@<*c\ItQAWNOE&rDA\7)8Zi-3F0?r7Ul/j[Y&dY*XTAI!MM\ %''os%S/0&35?30o#?_X7RhE&1qE&tROt;_cWBdNU-]o2NK[PHKooeZ#A>C>P?;^h`3EMRH#$6(P]R`(GB_KYC1qRlYO=eCmJc@(D %CfZY@/6rq'!nuV6o\eD$3d\b54sXa]TR)cB1QiB%S&HNj/J*3E!jRLIDaHmb7?VIac+uM2N'rT0I7"1XC2u9_@NK6uW+';dPmWK. %KhBYkhB(nVao^S<"&jM5 %f7jI8jo8LP6J-T\8)b*3+2a^>gL9o+jG>SS#WDqKiX4^&EGjF51ZqJ%M?IA,N)N5g7\AlJ[2_n^/&"VeI4n*K9)ml2KBYc,Mc4 %0K_0QbZ@uk`kAk5E#YcCa2k>VE]N$;ru_)\gfrPNmPZ#:DQg?KDnN-Pe2s45n)gPWD^reoOjOVKF9):?).hq:+5TjUg+>sRGt9bZ %&3/MZb<3Lq:ln;:!Vu;"'FU2+"bK()R'G;_Db6X+4AfZT %M'(n\KY>MY(J"mldPF9jflX/"EMu;lP**^pNFrj0(Mho)5fkeI4ps[`R#cr0Nja:bq"12;W'dd-n0LJo,hdVnC'@4=M+#^@,lf\L %3FH@VR$'"9$in-GC.pIJ0Ec?*YU,ggP71K+#`q\'!fgfSM)j2g\\)6JAR^YQ]$,g_U7`hS3\W*$C8![_'CnUpc5i,JEj8`9K7f&>q!#bXUT*\>rk?IKjM>A$#A40!)fI`miaI/G._35Nhj[0Blajthh %3UM>_bdI\:eI]m6D\BYAKbcUcYn]Jd*eIM:*1HuN!X$h(YhnI/_^MdA(n7PY0Z%u=E+_$IkA2!8fj''J9&]*+Y7R]HA)XKAK]Wt: %BY0OWI_NZ.Y0+^n`S)Y,Mtm\faW;".QV8s!Z6uZc/C^ml7$Xt<5fmB+eYEfhNaORsr%MpqE-^S\1;uq<,le^2g-Rum %nWKnZ3o)Ls+GFTt$Ndu;M(mj(78Xs:6_,#=&g!MWA6BX?%l$pc>'^IJ3[@AD$]qJXFS+!rUkQHd&.l-,Z0r6[6InOYDeD0*8gWUa%2i+VTYI^S1&CA=L7JYY)o_A06R&9>[]k[_XA#]7GA/bkFp+e%n6\5d/gkeQ^,1&Bf-=\>Ua((6$EXRN"c\"PMl.MUB$3:-jGY70@N[7/C"?H`\Hik4\S@XHZb;d\sY/_!( %N-q[?j9$H@KOc$qk2GioOQ%l>pg(I"Vhe3-*]06m:1WRE"j0KT!3D,=M7$92UAQ`P=utM=&VJ5MJhgpRCG8W"mF'6'f5AjpOnOc^ %DPuE6P_:)#K`_#glqh6$MKuHnk$g/TXFsKqROgn;X5YD.!p3[=\=TcEaB;a?V=:h=h3iaM+:+G>6GkCeb,L\6E#`_QDIj&A(.mC@\"5:.]$YZ5`coH$-Gk,Ag7R2`UAVgA+huf'$DGj@.QbF.EX\Ml>rq %C'o[+\lNKnO_b1]!pTMnpao7_5Y,NYBO+i`&(3u_-D%Rf_#t1^Pd?`T5@NJL/pLW*-8Z5`fm-=.+[k__OUoHm8,Y&lX@+qg %BaU0XLp:E0]7@h\.ji#]O=)*.A,.,[X&M3i1i)-P<=c;)r:m#/N!Llcf*q77?!uZC5`.OL=Iu>;bk=4(VM&lJW/$ML;6\Jj$M^>o %P$1lMLN%OSdVG)#?A0H+6RKZga/!fH+=#Ys4N(,Yc5A6;>:>Bq'&!!$"iTAdIYX'ULS"#M]q6#NX<*TI!hX+)IK\hk(FATJ'e@1j %Q\:f#^#`G;^"4VB_:X)*1ehadh;9a@?oN(C81*7iZ`X`!tk8Jg/-9jn"4B']Z/Kb?L6O5Xb]`)N13r366PPTuAI\ %)oS*+e\Qp"=E"/+;%2U;ES\dj/^);"H?s+eeOGn]`YGX(C)#bAnUN_`/JT/FMjkMJ]HSk".Mb@JCJ1S<%?`!>>4,8':"%/'_&7>K*S)\O/n$Ceaa'7SJcYXcX?0VgYOp7\9N:,&K\BDdGiDAlPc4XV9opU;1Bm %8l:fYb>,Tu+Y[E,Y;X*;oicVsNiQ$5rhU=n8-:h3+bhu0.$c+d7O-cj)1<"U-5$F=#c9PFQXPkC"[ %!,;.K/^S)@Ong9GJs%=a()$\+dEN2T^!d=T)rfhYcu[&qM@`&5HU?WSHb-`1]r@!8&Ao8p>]lJ*H\s"e/]Of=,*t!O5[oGf7ETcZ %USe=l6MsW5e6(-U,AI?4&7i.)o-Y8k$&Hs"`')UHNOjsW=`j3E06+`dTI7NW\LJHD\o<$99G/9ERuJs#)=k].Z/P@,gdWI %aLk*\P8mJ2/B%?O;:8O/+`O>5^P&X]K'on[R%=m!-U[)#F`TPr3`KZmBgE@E+KucjCCm^GkXj]Mc?BYId]r<N#rcJZ^chYb6<^.)I[dgt]Ord*G6=+YaOX69iN2@W\t(N9KJmO3Pf1]F"C:'InDYAuZVmKUBssiW+cb5^UYLNoKC3PYhMc %1U8&Gc,WI(FHGdJN84(#`N.6&0&)&p?eI#@NB8HbS)jKDVB;?+d#0Wge5W-#dl<3"p4.#d]E`C='QLLrd7[(J6m@1"@D][;c2IG& %(`S5"OW#1^naX>bYq,<&GRSh)T<5W0_ErtIbmBjoFX,VZ"Z%J=]E+11\o`bnKJ%,I %bUX!uX,oWse$Sjgqtah7)(XE+OlXJ+geebb$FEhshg!/-3/E[.[Pg<1e"c95G[h!t>Q4M[:bSW6bljB[0L6mCLUc9`n\pSH,Nf4A %N&EI_^a&@jCC.L4i=PJ^q%j:)Kn`XT58U>gV980bER)!/8H%ktS!ZlZjQ#^4XikU0M_9URP"-])g^-\j9Z\5g3),"%[)mG\lSeZ8 %Q@#J9e?Ydm3$A`R>ETD@i\q-W-#AWli7dm%+ClZcF*a?/&:b*C29Pn^cR0kTJ?9N#9cM9:ZrNRhUV1%]9b(Fd,^!d]^%f/W>TD;W %)U@:U3/lFP@<)*m;^UqE?I-UKfj\q#>1VA3^qDo4pR5^TP7VE2B<6thncP"\YGYV)^%?V6rLidDQWC:?=`h[&FB:FSW3b$LU:P-bR'=<7Ii37^e[i?-mQUAH7!9Hj^V;EJ!rcZp[HlS7GjifSMLa"o?X:ToO8Te:T8gL` %R-u*m$\H*>l7[tif/Jng`]_qFEOnuaJn!SfY9)NEqe-lghQE"nAt$Ee?"[X`>= %0n!KIpY4G)42g4^5I7/jLF5'R&(lJU9+@uugP#YDhTHDc5Ilr@Bb%M@)Oo5Bn^p!BJ-a34'_XN[=;84)LII9N@H]h.KAk/rFeC7po*-VX3c0(ONg#Z>rsg_mU!Zn+CF:AR'baV]KQl&Oh+cU %E&e63@&W3@mX$D^HS[[YU#eXUC1E5f\[@]S3aF*PkM/;McJd5qUnteL62S,R"0I3(%PM^SL8:`12q'`'R;:r[ns@:].jdVmI<8VlG/'8PeD=urY\`@^oQ_4U+, %J)TgR:A=JmIlO^#P-\(@^3/7O,3Rcn-SiGTAq.KudhE\cXgT0oe9@fcX&G,f;C\XUmV8"K:)q$\gZl8<=H"&V^L;HhcCi@q@AVh! %2+e>AFq2i&K?HB'J"^n,ZecWpDT>b(1=D1U:qKGIdg^SY[8D4KhE#^V+B.YKC$K6a(k9)s[aQ/a/O!P!IasYB$8!eZ4Dmd'K<8a\ %l\+pupW"iV8PY8Qg,s.o%flXHh!IOf'd:D:p-aDu`]M'3Gumt!p=,]`LB,9`#UiU3j,O.=(u:q9I" %i)';+3j>=?jge\gp=48ZMd+jrh6B2(%Kufp]lE7sdHL=$=;HlGGMdLGNUC42e(7Z*rNg\G:\fk$WAha]`aO8S[eH*RU=7K4n%+V& %XaE#lU":#W)Adj4BMe+u\4S74XYI,c=5'gt=4e=qBQ0V^;42_NpS.rMAFG!HnanYLColD;S# %I,uA&Bfc9fPO?uK;85,i#SZ:#dnM.s^ai&H;7$(!*SDT#H23QE-q72XJo.lW]q.]hB %TB=6#DGBpl2u4NB1(hqIpn%!e0:es`1+*(F&mAhbSV%S+T/`.udf:ba33fa"NL=_#9BN1k3@aRZ3PssX`;)tg7jWUL@&,'4VH,oJ %^tB]mphqaIki5qoF&_/\k4i-+JPQrER!di+a18V\qm)(GBtL#!jpJG^T&pnu#pe0Sp5J2h2?HUIIJ;(k9O8R%$5#-BA]) %+J5,cjp1bQF0ipb5bFN/4s4.OQoXF)I$%ZIoe7KT,+0B5/igsnUrVB#H%^7.a5#fs?';M$JX$@k?BW(aBIj3nR(57u(/'#`k<$/D9,-ndfAh'SLn53A/lO68Wt><_0SqV:Z3!@^.I[CUYHQB2'f7:O`,GEL*$+.&JWCW1^MU8Eub %DYf`i5->@_i?s'[PqS/GO,V5J(7"'kO&&,Br^:QE^59)lA%/>Q/+%u""_;KOq9Y/p\HQMmXNrI@+->JlU6!m+5<",jC\XP_aiFFm %!@47(5Q7ha,G*XSk4Xl%&X4FLVgd]*0_XN`:5JdC_B>E(4[*uhq9uQpUqR.u8>&^QopZmak(\qXpH5&e53D&)h!jiB.6QJ-ld_V3 %55qZQ@QrX;1:MX9'&GF"If)phLQbIsCt$EpT9#KL;<3#BY<85em_cfCmej+X/2Ci;&"c[b5+P0?l)N@V?aJhlLF:W%PA@e^3,pNr %dVCa&+80D+2q3:MMS5!3+'O&.dl8LIa*PJgdgTgIE4T6A:;76%7\QsArQi/V_0qLS5E\]X90*Nh:ab5d2+?^!^-r$?spe034P'G&Oj5qa]!iI/jaEG,d?^D!]NeK170'CP(8UjmtX``CS?KGn7 %I5L/2RNIg/qeo-3J(756F_f]dU<.ntB7b]>IOU)H?WX7)Zt*tUN(=ZX+-CceR"+1)puGN#"l]Y]bZ0H*U#A47/0a,?;#F0BSq#m' %q;`@<`$>=(=%i`qL-'=*F=Bq$lILoRdeITNhDYV16BHhjmpk'lZh;&eAq[][.p'dcfb%prHe&&s(\Zk_%$<;j"E;3[.<+H-i!XUn[jG27K(QI_XD[T5`Ak2b"ZqrZB+blLIs*^cLidouLIe]b&9Mu&EZ]=H>S1pada"r?[qYLa_rrF>SSSq8G/)Gcq#)q4BcV[SQ1Dh;@B^i5`JHs#1?>o&"XmAcdcoUNiQ//?>6u>^?GcE %VqeKgRg4(HEP"I@:m7>08u2LCc4n6\afBh2/&9_YmB1,\iW1c`Id4ZCG5Eg<486NH0')B?F/I2gC/Qe,C^?-DY=mM %oU":(p$<3$kRT32o4J!tnfM2hO.AmBQbP*iaWJWHP-"6$Q+VJM)5S4MJc:b`nj'ao\s:V$NR\YW)gd%%G-L. %%^J][.embh:(WD5ckR">E60>J*c7*EBR\h5XHHp/d"f?5'WW@C[TQBp^;U)\4O$@=6*V;l[g>E41X--L65LIhVd.M%8l8N(Wc%#!:am9(c`*q5EOJ7<_J*EQ+pt %T!M=caI?9ZOT1R0ha4SL %*lBD,(eZBT1>3;G1AW%%2)j%-V<3MXeU0cm$+;slGn]PkL^$uqP#?XZ]Eu\VHaBp!^*o%0*+`>8-s*i[-)@m)l.:WdX]?NRj`sdd?JM5X&B)D&mh>04+G58^A+L?>]D,,ZiY_ %n+<(c2fcG%`$X'HB4jstP3uTM_Vs3nTbF:"-Pa%%hAgiFrqf(I("6ZN%7@a0!%\J?Y96mQ]ZT]l^cQ %Fg[BC]NR'q/]QQ3GVqQf/OHiONJg<,NRru@CBRR>*tDBDVmJW)Y%FQ88.BU$cn9!sS[A-;7e%rTVc3YHTo %-F35q(J='.)K%\5e+TE3#Mh:EoDbMDNH[?SDQGe_K+k.k\YA5k3s^&"Ygg:5mEVi!HDeYFXh0n-%Yt$1Df^C9%P+#up?JRDmorQQ %38b@P&!c6_&&4nLY1;VL9^dfJoP1jTId0\hebYrQYdf0Aqs?3dr$prYq#0$lNGmcr`fD'G*,8cWCLoKu5>KrR=.tNOJKl8jguA=o %^V?s>2.2,;Q.kf$#Ci?0?gkQIegIl`ZoP(CJ,8Ul_#1SE]E]_=l,VOQm-anf&c[+qrlnN0"]fLpF&\A`]iJ+*>i%DD:3Vn_\tWdfLjeP_n8Is2fg5)`8Cs)bfs29u)OmcfM\]qJf^QfDFX"`@f*ErD:+ %Em[u0ZoX!1n)hM,W,aQ2QU2W-lJ]_\lNkf$"7'1BqL[asda="eM#AL^:rM/9MZQ$.+DDhD@Y!7)?]6iCM1fkf/Iuo'sDY!7u %6\b0WDIs`SV'$).bbO`[/9bt/pdCW/Tf$0//`R_HAgc^ClW2U5nUCF^EL3Dre9ks$o]JWijMJY+acZtJkQC.p+-Sa,clG+)Bqor1 %Gh$R9QMH,Xb.ODi8?^#pn:BB%mUH%60A>a(D6Bl.-0rIELSN)$h\B5hidQGY5%m49T-q,plEW:d7[HJSA&EX[:j5HgE'#Sk\NYTfgo1JY#]ttX;o#[Y=&Ll/&1C0Bt*CHGMMMUT1RQmMLqc`)"lbDTNgk*0k.K5\mrZ&"+GGo$A$ap.iP#/id8<4Cpe*j4kM;KT\@K701*Fp>=_$"C>AdffW'MnlQ\sa)gp_!Z %N"1lou %2@jg-m2!1Rn/lkcB2ei="c7*]?WVK_mZs\q1HONbc!LFOacUr0Njen'i6mNHR`,Vne3\esZ@+ZTk71dEgWfH@qS3R27b>ZT<'/"Q'?Kje+\,:(@]\Uj[J(HjK]&HWH;8+C&ZCTm$hs?oM4Pq5eN2(6/.o'<: %KRp*JJVc%K!`&#m]A@8QRdKh&++sL6SCT06B")!8Au/:jV7%d'/O<[lkkXQ93_l]t7e;&7XkU*?M2,Elj,Huc0A_\@\nb1ggC!aK %S(RR=BD"`C*1"qIM7)r?1p)7eG3dB>*gh3PE9I2)S#HdMSaTk+(OdOP:Kkm+ogUb#j?_nGL/Zs@hX5Q6:PS;"amWe0TrlJUJ8&"< %bJgkCI:OcQQNn;bqjr#jE`2l][V3/,C%Y9W3lp>jVN2n7a(7e4+n)mW`3[[:MP%HUA&Y17pfK_0:YK*`&@\*@kO&7:iFgTQ(q=?b %2dpOY-8at@kFeEJj.eJ[.IiO_[5>;'`C9O&F4gD#^")F]9gn<10YCX(3Fm0WQPpb:2R]q]]!R,DrOmSAN.'!KdH-Csr"YtSgL\E> %]@lCkoX"mfWEWrCebn5tRhImg`L4]*g@QislgEV-2l#UZj^s(@72X>e>7S\NTNd2bIbe9PmkK@:YSGh[oHeNT\:q-&'A?%C`2^B/AXa>N]@4CkmqFm[/jb`\@hb:X6:q*g\mc0iu!dd=S)?jf8."Q7nX_ht=E3)[FF/Wj4 %La#s8biK^>*:G@J@AS@2%kE71r(<$oSc$Pc;sS7d`JsD&2;HnC]sY>l\+UO#Hq5g/)eR1NKn+%Ts>.7H3fWO6+#`]o_ %\!_!?4ERt3k9H<5De\phi?#!SFgP<;mgM*]0RKl/,=eY9aM*p?LLM,X`_1*YbD %T4sfJAYOF90V,1]0@am/rqUG6@i23/]%"r"Tc7p9[[/I^Rg3h5SK)ZPq=2JugK0k/hQ4Baa&U6d:Nhe&mH2W)S[uk<689G@._W`+ %InAGUg7m8mAc6qQdk+U`XQ?]ZR=s(^0u?iY][OB`9!\V2m-lK>GPN8/S1Sm'$jIpk\n?f](KBU*oS,hZqHUN;cnK'5k]RMH,T>7X %De[H_k2`KsWTJ2=jUG\f<9<*3GFJd'I)*>mh3c_pY@]ZHYE`Xj04YCtb]=4#s#6t<2SlI]ga0Y34juchRfH(j1qd6r? %(T\e0?j#`nK@\tf5%CVaWhoYUl*SOt*N7#$f!c0ZrRPuOU6.Q"lRgN84JH#>Ph_K4Nr4[AAk %je%VJY8I40D.:J5(48$8cHtf4Gmpq*h3)U+c^*EpZJN^iNAGP-CM%=RGkSa1rC3R2T/#V/kH*L\Cs(Vag;,X@7gmL[DG);)ai*-`p1Di#?]Vp#1 %l:]VICA$YON6['.H>hBo7_N+WhXlE"BD#a^mN-L(qJrdhP8Vf\ej67cZjn09O.a[\!&QL7YG0I)e`N!@m'(O"B4\L6[SlRGHc/'R %8-CjD-T9%GC7VpZ(gal;K$"l^K"U4L$QuWS9`C!:Q>c"*D(H.M6rhE13>=F.N#?c'Y+Tt1#ApSlG'5kDe#9.9cKecqc)rZ/U36j7 %EJ]GnQo05]0l+V4#"ebeLFGZfcdMBqD1o"#D,t>mpN$Qo[,^8LEi&8*?.JIM[MVEO".QDWRdJ@3n#2YfGhCptp6/-O4@Y5gB;?esXup3q"]QaB>N)la`E7om(dr4RX=RF!km?@9B"beqT5( %PuhT8qL57D)Rs09IOO_\^/p-W=o)3b%q\^3ZP"Pe(FO;MIc8LTW1Skg0C1eAD]d#6u`HmptAf"qd'qnVsoh9)KCk(L38`G\8C6i!#A[g-*SFjCjbt6`ZCh=U^<:SVJHf,MU %:&tJRT=YZ)0L^c/4@!f('&=8Vla'@(*JO-E[9M\a7H]e#bFZ7,(cMYB1Haclc$no-TZB%ZE?/+-dXUQ_>eI1!G`,k;Y@ltbS %0l*Gj#>Qmjf;pT)J!)9GAc4`DjLT`cI6U@nS3!hK3Bq<4AK\TrVgf]9#93>#S%TDIbNqqYEA2&"EqlRMmGtA"N_\KY0"K^"C_`-4 %PnkAgdqJZ-G3B]Kl_p'V4>TcfiBEWbG7LQ %VVib($80j1ff#m>;pM+11t"$/C"V`AO3reb^WWCm-Mof8?#s)XYHieU,ROXJlW-W[IO7>9=0LD;fNo&+76SpJpbSOU=$'LkS:7%g@[Z2-$Re3>;idNqr`qP2"+R[Pn&r92=e/8)piZX]'`Gcq,Y7NhK]@G\>@C9HhZepYB>$M %o4$bh]m)WM"/[X,:,.*TMSjA%=$GG5kKAsAG/478RdJ\JO(l'th_l!qR*$.D="\-//_:HPX:a4[pW]%B@CFtZ>TVJJbM_Oq'?=7h %;mKiT]>ahF-f*[P[W:Pk's)J'mIs5>knbnHnH!&\]?tg1?uU/` %;>eE/qJ,fegQc.#?b]lK>WqYL+&%(8QSq"4]a$4e(^O>e0lEeB@T<2(V?b]k&Y("c\2LJRj4C;2aJ%]j6Z.=_;hl**! %qtD0`0*Ye>?MX/r>km>FaNLhj$^Ut]Xr=@COQ$%^"1NU%p.JChgA_sh>ZqlH"6`PhpD@lO7,:t %#o4<:qn#'U?LBYa5/$pajo)gboZ)_=C[^tXK&p>!RCW:aT#omB=FK&`Fi.h+DVDRNGBg;k]3BLNCL03;;8(F`C"pm2l+u5rioAb! %#@G,L]9>^42_WL+Lqe1FCYbV$5M/-siLYPg`D:mKUX#V"d%gBe(RU@-ij\ID%`[b\b.F-_2c-ej$eFI1K\A %nVi+uQ2uCelVnFb=1Pakk %IJ:oDkP5\2WZ>9?5JJ^TQF*!):U:A^l`M:GY8qXGh.u=8Da4*Xr`bd6]Qmq*D;X.*>m\8m^AbXo4*_LrHhm@Sc;5.]HEisP>Batg %FOQjPLN9obj`/Vd8L>4V>$/Feqr.@1p!pKRnX`8Fh#BM,>4S7TnNlp>rLLdfb<+#TkMnoi16\PScR/Y'hIe7kETbtm9&EtZGJ*)#_u"^HA2s.rfQa^7s4hS$4fJ@cNh-#UC%^/_[Ouo6-8aETmI\BgX.NI"Y1J]*-_>U'E4B49 %4Pf&V3FNDhXL.#CDi8h[K8kZDY<:Y:io*EI()C1+R]fba]N]3`:VD4-'.34/m_/"J[s#,b_u8>\_3;4O&(:+DrUAR(&\7qCh`\!I %qQ1U4AbCgQs5k-DSef#Nhn8^6WS>O!2mL#%hL>7tqrcX&O+297=Q'1i\8giV@/o_5nB]TfZXtI=;.XB.***JX\##gOOh^2Jj6uGkDOT#&\(i;+Uq:e_Vt&,nip4'k@t477m7.]I %J:Ck]^@Sj5CUIIjU2-Bpb0K:1(Jh*t&([JEr%%VaI&eLBG@!I>>\QFsQ7uB)'`6?+hm@9TO*;-&gV[nHaL":r/B-9)1JaH:os1Qrf"T&pLe9?o"^gq$Ohpr//O?iudAYgh.A/As5qu)dHb*H^:KWkb`G=NPaoGT^4jLI@3,u&#H2Z3SA@6/Gb=JY9j_DaA-#Cb_P]H82p,p\MsGDDh_Ip/"Yj07mAW4Ru %KWT8ZDrG;WGfV(o^8uAqq:a"%Ff>g+f*dAhbs'-%J+o^0#9^XEDp>=76V`GrfRs)(Cu\QdR%(;SD_h69:MmbVFQ8efPk&DIN(WifedL-IIg_,b(==?@8uk5M3O>pqF65g$Q3'n"+,m=nTt$3)PhG7^]%44h$TJ(l7tHY2J%\ %e]aga@8Eq:=j&hQ:-3]jNjHqU;e4(N3YB3E]S[B(=]@ri9X,7DFh, %`Eh4_0'0[^dVR`J[cRSS,1@S%12GeFe9nNIoX_ec\$c$a':[U&X,4J0pn.R?>8`m0$8!fpQ(_Z@U2-K3J%,>jIJ)4$qmG"Yn_O(4 %Vi/Sj^:e+5Qot5ag9&7F)HSNO,8F^tgHQFVE[t:"p:mD+`4'c6^n]H?lHO8."0[>I^GnOHe^q3mgO$??X[`ojl!+[YduZ3Qc7Spi %og076k?*!>2P5$bh+*)N?p*)'26VqEe<"B:`E/+2SJN5Qo4crn(5;ZN/H(nRR_EROW4qY@s/n##J&]DhCt\%YsOl^\"70;bY(cMiGX?f(`)Z&Ob+/$ClR]>!X& %I]EhTq;1-%lYj7Vf2ll3Aq)3EHhT&:^,nR3oJU"qS/"*UW6N0YrgfOFg<#DJh7NXLao6atZ@5tt1V!'djk\,7::/n@.e`3l=B^/[ %H07EiXS>/##k77&T!gde,2Zk:^FuZ/:?.i5mHabW84qd*\*hqtleC=`epkk,Y[\d4J$JaY;]ee!)h.O^jm=FN^Ue]9f^g3"q(1VI %E!@B?3;8nEE_$%[43,&ql(<$[e(="aF^OsTmU!0I?e[e$#ES>gq0K#N,kIf)kP(%_2h,,iGuNUA+1Tqrepi&e\CNdEk,7gL!FoOm %D6J/EVQC]!fA+JkDu!t2gq?#,U,[N"H@EO)e`oHQgqIb%Q5YA2HgFf(qT[:YrUn_)HiNf7]q92%^[Vq?Id+6ZV;8bhZ%'X\FS#&O %IX]#BZuoK!I.,fshrRqh:Ajp6Vl$=W\+lt9^NEb]GJCci3#g2IRs.Ys5Q??*ltbXQX?P,Io^0O%f=\k=qWa3T`J+MVDo7iAkJ?n1 %W42V=[r95UV&QI;G?@K-QXBZV4MLR`\(:MQV[(8'msVZOI[-GUU:[<.$]D[&+5GP-TCUg7]3B&s2k6I'BXmm8rr-[(m*u3!g %n-bKVX"SX&IU7EYm^>&tgdUt^QYZJ)kGQk*S^jKh`O.e`QflQ>j5hB6)Op,`,N=ki-BAu#\H=_fh"L2c]=Y_^nJL"7Xc>@>_2ZLK %C3mV,\TRYEH``q?s4X&c4dfWs/)VI8#bf0.67SNOUm'XCkm=%oc^m@Jm43INB:'%=ce3`]i0f^D=j=6`.5*C8B3CT=9M+JO]HXk.PLJH`/Pn+ %Iu?1'LYf?Q.,snCYa8Z"V:+%kUFBX3kHtPIZkL\fjT\u.c)l'6A+b4N1h28DDq30+UK`l2UK:I*YC=A3X,Q3lBF#YuWK\k0jL_:9#-4url,MoKlMBre %fZLB>B%[>UYPOY*Dc_XN`KU#L[?(_Q;VfU(5tMlr&^0@g*\9MoI9Q'7bs#=KD2`VSE()qk98#sg!`d2Ngd^>XZ %kPFeZR]#m2TP%uco)#&_QN#F!E<#o3Ua4LG^!II2DQj(;Io3\ilAsWmUtW@$Xu7e;5Dpd,lJNJGIGDsqn't%^opqZ(P3/caLW>*\ %K7-Z#ub.#CIeRm7Dqkb$8V4$3:Y,H9jH\lA5@/%1!r"VK-SFp2Iq3O %qSR==\s7*f.)7L.J(2[%:@e[%IrgIV,%Q`IrFBV`[pIj>>G\iQ?-;o2fh>]R2b6KV;I]6UCc8Hge>H5n$VoD>Tgq_1+?$al8q,/k %^eaG:D74qd?^g5MQ:aq.iRPj3"?uU\*'aG:BWFQs>(!H$0.J'.VmP.V*>h[gfb]8%N*h!pP-<4sp@)'@#";KU=mNgScg[HX+[9n5p4SIN`JG6XuB/bg*qlRj&GA`g(cj#P.hT*Xm3R%+W[;YL67`jK)8C=*Cgqb8EZNG0W %\+U5g9[r7G0Ql5Wrql(_Ktf+=FC:q>Xi\[8he<6NBX.)-rV/A)XD^6DNpGHaF;),L\$URYb1FNiEK(msjfQ%DH2A,bnO_oOj6"2C %DX9(IN-ptq*+nZT69]h(Zo[(C)`(]"X]:-=k[OVujf)J@]7'TmhVWA2aCDlnR=7`6dTWhHWIL.RN=JPBo*UGoH+O!\r0ref46*a2 %h,gjl_t&8GItcPmA``K"mMP\NEmAsh1I!u]"N!Mp8>Z/4HaZkQ.':l6Nt$V,\+O^S3QdjFep"Q@#5-jgetpg.DEN(mBD#>Gq;%aX9Z:T,/CR4,H:jfm#+:BOP&*G8 %hQBlac-!lbDg?R!f=-M>-#(/p8+ie6_e2.0?@%c9q*qQ-q6JO)_is/HA!$KG-JG>PMGbiT@P"dg)k&\7JK?FE`D!T@HL/1IJ#0NKrk+`IWN=S:UiOuRge6scbU:)77N,?,X.;`ZV@)X; %M>O`5Z\2FgH`u=X@dA[5G5^sDG6H@&hJQWSrSA2.Bo7rVjitopj+M3@^^JD?1d#SmJEsNB.XG`(-!`:#UYK:(N;U%4SK'bY5Z1DK %bp8d5Fn=Qh^:kV;@H\;:0E8?+l/8C)9L:PgOin6ek0(PMc/m.#TDD4\-:^BmY46:5eQ3KE%X2-,`S]Fmc=KJMAfm'6U`*$YMmpiX %S+!A)IX@o:QTm&``aZgL2YmoiD231>H[T\,E7\=!FkHoe/%$l*_5N$b48.u!mhZ:V\(X^[jm@iP?#0AHAb7/@^Uq`i/(n`gS'*!X %+It)!leAt'87VW;0/]=Bo?VZ=i/HF;>JCu@ET6H6?X'p,\o6ZSQ.s/_V-B/P@+G&]/*p0mU!g.:RTAT.."&V3ZFP!s;O)a?\nq?- %onJ+lrpeTPaT)PAint^8msPoTCi`#ac/i!hf/epkN%_60P-k2e.Wl+8QWtbAW0Z:hSfa9JfgN/(QE&^EcdF]EBR?h>8Qa>=IhXAQr7f\%uPDO %j'S=\H'!'1ZgK0O5L\k#3nAFsOc?1OOO$?7;YcK`L*3>`ECi0%G4Gm2[8(^D,_=^[cA,^O':J(RSKg %.BQmO$$m^tk"ln7UL!(gr=]H^^Womq?3))@I7]I1OSp0b.FZ#sJR^naY-0uho"TP+RlfnK?"pL6'q>.piNt>P^1?Mqc&6I\Xg7Z= %Ah3G5NeLh$bgd'R,J_on]S:U@J+H41rlNLD?"[FH!Y(hk'[X(n:hg_!c6sO\))uqPC\pC %WIG[V,Gc\7K9ZuBg%p<(0C!_Vf>F*6lU,ll/brEuDqu17Okq_XJ_>1=[?+#L40>;?da`Sg3+A(=GGGK1[BR`;ZPLtkdR$#fj`_(R %8B&(16gCE)N`=))k>o,ppQ7'dDhV:KEUs"WE>pFWXR9nN+I*R45Jt^6#L\N7VYRNAC`t+F:ee=!q!'WHIFiU1g1k\7:\&OmleQo> %'R9/Q@@u")i8j4=oa[_@9[7DLK"q.k1OrHg:U!`PWTm"b;CMiK;>e0*[?+R^XJ*As@Q+*P!CXXC]rf9A^aKUq)boo"'Mhk/GVM$*Lc"E_)G?)+gV(=CoMFHGXo.MGhp0d6K*P:'+b)[7DnV7` %RGI4h8s#2^WdUsQKC\0FE::j_l1%B'pI)UA46@D>Uo=*CWrd?iQW\DLlY(:9h:oQQbbSO,Su-sC4cpf#*Ss!nUp9"A=KboPl-Aat %444V24DA]9Y.5eUh-P1j$9B'PT&-jj`uYAtg1S\hG3\KdGLmdX[tcn$Y"3L)5IUnrZnIVQrOp[S-oY:@0e %.:=<4n$WQfScg)]O)o:OU_bCPj8F>Z'reK?=H%1T'L7][g@E$.1k0`?SW.n=Qm#!J]*1a1O!=PPP:26W-!Z=EKXKZ/<1^`cV6SpM_M544QMt^?q7MT3`MChksdVhjF+co$;VCU%q"IesAP6L,iA] %eVns*oOQ!@8R_)!qUF\Mqhn72D3(lc %p2YNQA>DA:8I\Y>[jS_1_`<-R(X!I+4*fUFrc*:fBt8QXF6NGl/GWD*HU#3HQe)Y'\NIW&hTAK_:Hui(^MV;pT;Pred!@`=Z1$$$ %qQ8B$d&"VpdIZT\-`iqe;_7b:o6B'\qKb09]QKee*JEGd4(p38'qRDrF](iq^NicppX*f`/NVmYNa;_$PX %qc:.74VpRSrlDeTX"hr"X.$2@mZV#QoN,C[2Xa%.oi1g`4manl*ok75\AG>d$esqMX=ulMpeMLVRdke(W.t>BOnG3SHIHthNpkr* %C1t??,*uIp.-ULIei>XX8Jc$*IIbjWc`;!n@bolp_'Ft[Dr\hVo?[Fn%Mo.WS?B@/8:e(.if.r;?GH1 %=7/V5Mb?jA?pm1\LHe7hQ)o'iOeTsEnj<1H,8H5IND-$Gp8Z.Idc]`RKS>Y8s!CY#6!j3_c&oHKCe->uAG&Qi[1RYCo0c3`Ih/?Z %*X(s3ej9^RZ&SFr'.FK;,^:P&n)"dm/;aB+S,6;hj$c2.SWkL"i_rrM;>+j?dAQ3^B!nNTkfI3.6tC&!cei0f]D_X+Tk3-A9dqg, %D4L&"^*gYZI&Cb<.ZF27U2.pYdCi>*,B]$F!6oi]Dl>1Qjl9'j`0]0mL_"94P5;9UT?gT.0oEj#R[Ii%N-d@.$BTH;WRI-Isf+CZ6*q'"#L)s9F/tX+K__O9[Ip%Cb %Rbt9K@ql,ObB/!1%-m3<8;PBZ(s6D %nrMrB)Y80c(d*9SF*q,]a4s.?cKg;tZ,4goTCAbeZ3X#Q+(/onqU+p<'aqqI#-h29OZ:PD/"8uY33.0bLe`4s\q>'FWH7XSPio'5 %lF&q5A)>/0X.IP2lFCca<=ePtH=B1AgUQ)YdKDD=Ca7lDVL%$3GDk]h#(\r6PAfNiIrsDL5OPnj.)\:![[0sVGb"*H/f(2mNOE;, %E;[^iG;k?-Xds$O2o2mHopfMkZk]?*eN503la&gL7N6m>Zla!IDAi_(#F9Go'Q$Q!V"spPZOEBdYBrrArg/%89!q54ZoJ)MKOMNq %oNOPhAoJ7!aX!hF%ZCi)bRG8[4137qSWpaAAluV8QTD@9%u]V#^2o]Mo-\>qs1-9LRhQNP!Lbb!fQ!BUTGThcp^^&s'o8IB%2b_: %"XeS*s3U*FeLr\DEQbb&l`J3if-!#?hY<>$`eS;Pu0*sBp_6^N7Q21c!65kbu-)1AU[iSPBM':a\DK$ %>BW0s6EK"WAU&X71u?mY[$CMYH@NfAFO2=PLX)9u=>JY?_CFHpYmBprD):sNoQ;]/b[9\ogB+3kndN)K!rZiF/I&m.>#tgNELH&lU7[]=(+i],&X]XK$(2iE.c%E"\A%$A5C0@"AFr&AGiT%0i#Mssj_t'_>A*$4^n07;2lliDT+BClB[h6dtEUj:JUjeWr!ksY(Z&?-X %W]N2O"C/PU/jeP69A"EBA=^F($ctFR,i@@"&)Len*#t,qTi$E;c[Oq/aYo_`fF8eV0NUikY&+-kc12S-%H)j>7g;@VW_CW;ppkFt %<0+Ob/EmtIqqf?;h2@]\5"M!t=J%qqGf4BZ3`7A$VY$`;ddV$nV)SFEXu,X!G;)nGaW[0gV"0PpQ&\0mbo\2/8c&0/Cj^fk30@,L %NhFs4OUU3/_\8V:?HS$@s.KVfq2T%a9`$S62#;F:C%o7E'MJ:A3q/0ckY7fP2GTEE/7?c@&`t\g80;o?3\OhUW8fRR6$A(XA[Sd> %V@GPc;Y9bo*#5i7@0TN,UH#dgr@(3oGu'Irr7K9JflokPDa=FYYB[*PZrL=5GfYSBu%%S@A:3=*\Y4l4PfldXr),^;1@#B1Fq6\uc:$ArO*Vmg+_(G %M$Xr2S]c!ue3C,!Y]O)`4$7'p_sm:%mY3o(6Ba/H@e]9fI$RmB,L-h8AsI86?S8YOJ(E>/@\MR_@jVeGf89jrZ5?3ZIkS$Jo6?l$aYf.P54jdA8'2C[of/DtBj1T"\T_OQHbpi&#@RJXb"cRj&JCb( %*6lIl3.m#CGukChK@PKt#lB>EiEM9d@Rg8Z<2W''`.W*o(0M;VbFYho]0EGK$[iLU[bU((?MHOnMs!lS)t?7K^W!jrL0FkQG&tjn %3HVVCS'7OHA.22'6g((-7s+;AEp,WJOpjCtCr(ofFT*/"FLL*Y3HY6g=@L)`8S$p%V$i!_VfrY]fAfn,?,kkm7#8@IFrEp3GY %drVR&cCp^=>[%E'\[%SWLX&,:Nqd,#3HV\3aZ^SS#H=Si\*\SJhE)ClES)R*QWtcKp#(JWfl6ab9ue/tlGKiKVt]Ki*!dMJ]rKhh %IC,uKpA!pu!uk1fBdIP)=*q*KC#dZNP/2Gd^!iVsMLCQ3&"*AWXDm2EZ+cmT\^9AX7'7lu,s9RJdC\J%q%s[Ro';HCarHEf;USeu %?.3a4"gQAH6qa0k7lh!OSKDo9$kb^>lkM?(2hT?pYIZ,-r.c$qRI"NM#oPTS82qLLI+F+YQL*bAD.?p!"XUd+Y>>*U*%5[Wn3%1h %>FGaJ6Q1u$#$[sD3+2G)=R>+/bp,.Qb'XVqZQ>Qt(;3*c]p??m]_<#\81CD]pMDj"em\(%*f/pdQYlS/PG,=U^u;3^lNi]i[jS>6 %AuF:dC3dBrSloHcVrZ&($Zs!IkOJKSSUli`a7gF8s,sSiXh7T]]TZb$?0THen>Wh)KNG'0h,6)Ck:c<5I-=K3cRjJHdrkZ,k4'n< %TUZi`B!@n&7ppD]&04q9+'t?a;1JgkI!CP%"0=:V/20dTr#dSN2AO3tJR>R+ISmKrO\;LNf\-3*T@_O""bY%J/`(dJL %?]JAB+O)pbQ7!Q3s-4t:M<1"`+'BXZ*9BuJa!!uKm>Q:0o#FesY4oMXHX_?Z6mkd,h %$)4E`oG/!PLcLb6hCK3m,%Kr%/KYik`C1)_piOV1be[?(LJC1g0);,7%o/#Rl]Ul-NhRctX/.)d,9jHg+u1sG;?K^>.7?Qnhr>)8 %cWM_6QY2/r;!\)Ifcr6P+RO6],=3=&1_H.4Cr+dL173gYLragPU^#rD$'?DeY&XI.&Eu46P&iS7V/1 %j'eHhIcD]?#f-rK3JkL4o/XpCo27bGbpTFl6S#&:cLci_6_!WH4)J=YJ]p3e'Hqm@ioku0[U;p"9hpV7thSJ8YUt?I2cl"k4?3c\VP7NFNk&I9D59DNSrF==;_mu=i55:^n526Ql((p,rr(a390-:\!eh]p+LjV1K %)aQWN\>IT-Z^lh+^.HR2+3o0#W0S#SmsMX\>60Lbd#;b%Fc`BV=2n(T*!6Ta;d`]*.F!gIb+6lO1OR/#l %q,uO()EAopHT!p9P7O,\ODr(tOa'4?r%S7c%[gQ8-Q.L8/jp=daGeW(`Q'YUK7Hq9\R_LB&*B(n#%l(.1SAS@]i3G:FRmcgQ4TB-+$kY4FFC<4M2QQ?J/]YMCG).q_D,U[KL#[A=0;rnMP@n;1:2Y7;eQmN.LZ:3$7Wd/! %4BV04^%XhH.]=%ZB.d4F2km$c %c=Almr2jI0-?Q&6/Z/K0h:SG(WP'A1b-tH,SWlYRUq^]KA@F)(XKujF%(gttl\T_odsHH86JD%7a*2drNO5s7eab!SdLX*5kCrQT %Smb-$'a.PZ2>Ko.o5_qHGBr$/o(ACF6hLP_HokI(jSC2qNPRkEe#0Jd=i\]"]BnhPPMSQd`&[$d!3flV,:Gk[EqZXhP< %aJ-kZlhtl3P>15+ %9BUA-m#9.;RkE@-bTiV&N>Rs?5-Je6TM2NaACJ*NdWsF(Rsb<>YSMbtqI5SiDXssi2-Ha' %=dpXHimT#8fPSPCqHgRGVQX&[dA8Sco$"^PS[WeTN_\V>.MA:'.bRQ`@SUO.@hFk-C^CFi=jLEFEc`b3.L8mWcFu"j/\S>FJL8crg)l3mAjt8?^LkM2,ban1>p_UN2\]gV1q\E#l0&5U:n'2p@\`,PC=T:r$T4bDb[j+M[4-n&QFY415D(QEe5&F&?tpL4,e-7%&r8)qQk6`\-cGj3K\@E'B,deSmurU)p2s2VfhJlAR_"n1__WD %^j5FrVkF)ii;'Y)VkF)m\.d]t#FgS$#*8QgG"P*=;b3BGKt51*:-? %6\EeY$?pQjPS]]_'Wt?jXSG7rV7bL#d&4aO4YJ6XI`O>\mel@`@ZA"`(%/rqC6$tCZR==1%kKZ[C\8T,Ynhin]/d,MNfI/0DS!bi %BBGsKC]"J0$[5n*TqgFb7Gpk52^e$L5WEi,kM0XcXi1A#Giuq)P*f]Ef1_9HGu=.eh3+/h>u=Q4q$Ac,VZS7i6sRp6q\CrH.81@Q %C@0T_&uD[3Qo$/e+9Q)N(+=614O]\?kti8_^<:[u.a.'1;Agg<.CJm0FM=YY=.VoS@e)QGKXDJA/8[5an6F;uS`*UuLL]Og=lT72 %X-GWCThmHT5:W5g-2PbHJ?KFA:5\Hgg07'k9Ti'F[380Rci;IB.gU+=P!rl$11WqA,S&b'&MKb&WP;+%i7m!&uQNNFK!>g %LTOgn](!drbBPDn%KGk>XBd28ddWX*=72]F=H\_#2dT(#f:GNA/;qb[hK,bl.rfjoM);X5=FBeA_j7QhR[ICrJIb//6>B:j)l;V, %X,\=kaE#M#2m0mMON*GS?t[_E>8l@N1\ZqWn':3L#?!"5'_^hdR:Ec=72+gQC3C\?O0E)e(h%PUHNe\=n@I`Rt`QVYt6(iI:$s@9F-T!\1`PV//A()sn %proZok1rJ/ZKT]4M,RSQGmR4;8>ih(8\\#Ga,-R6$+-Q'3A%p/'5(eqlDej;T!`KC2^W=;9Xg5dfNTN%^(,t8hDXM=H/h=:*q"d# %&D9UgiT7;U4L^;QDPFOZ&gsi@Rk!+9IEO\"^"0ZP.3m%0>;S&BE7RZqhq61[V?SQ>l"5a(34?\9sjLB?iJdE6+'hj7A50#_Rs9"JF2:`qYG(e-++=`!C)o;UiOoX>kt/s#*h"TQp5BLrOEZ5W"YU;*-I6HX3KPM*+'C!AOhP!]L.C0#ljoC.MLVt]//6!+Pcft'5=b'q%!%6gK;6g2>joEgg*(J6U%%@>iU=N7U!SUYpB8,S4#9,6&0Ph4A %;Jc1\5`;65HGc=a'f?@QC_!,K7\2(;d%a5I3IpaNV:M9\;9`F30763s=c2cIA,1mKq'MgCs.h&M:dqhg']mea7f49kfo,F?OtL)" %gl(_tejo]U7JXU^,L<\E?`=Vh,#oZoqR7"LV'7mlM?SEkRUTU6haUg7K2.Kq,TM2LK"a#0nqSeV[!kOtGrVVH5Lg<\[f?`$1M5l#';ugp?lfUJT[hGdj %eFdlW8+aFD4?R%=B?IgB"[,:[5Q@4fbWYJ6lh^Dq\f.h_F/\Ef*u9lY"-lYf5Q@R_lRD$HlMA&f8QqiI>plM=ZZ>Ah+;\E@Vl %\pjV],Tc:llMC=tg?=`m;a%jr5EsOfp]AU[Ks&HT;dDU$MQ?M?c/tCllfXK+&9up;(U^E<^F,($*mCC^T9g!OS_Qf,/q5C)4)aI2 %#)Qbb>sJAfB)=$/l0J3!WU3qB:0Wc4g*$poH@0cF+1&!)m.L.j,V]JYhCs4U,?cN[B1D0&Fo?--m>7il>/nqUFoBN`.DNHg1Y;"eFiF:l5-uPhc*ag%W+4/f5LLrGcIbcKk7-mIZpI9\uMCS/S@rHqY;6%E`fTGlh^E! %FE5fqj125(-)Pe`.;LSF5#luEGC?O5UjqC#VlO0U+22SN %f=u4Q_inoJn=<-N#?@Z"\lVH3ri/loqVdit^[=%EU9`3RhVB7nM1a-4X&r78Mo([`gH7.W'Sg\5dh;)L8"V.JccRCAp?!>oXN5V873h3eUGNrrpT`A@Ra?)U-Zt4s^NASCF/N'1%Y&IaD3f^jHBNdP %Cbf5Jltj9GM\#uF4'opPiKrPq@jN"Pl%`7,+E;_\?!mFGQC?!enG8LHHB(4"-L%t$*#ek#rsF*t?>]FljeB@fJJF*"%D8mpaKiI %eh8GAX^Ck6Q7!RtOTI%V22$]fdJ0qKC,WS-"i.R7>Wn_WCSoij>AQLrp>'ui*2lPF?-\Ol@cqX]ClM`"]g%``Gd*L/*]u"(em_52 %;6=4hii8=m)odN4P4a?4>'[4e&,'/t_6$J@elpX>ZS801Dq4F.,K-_%Bn=b9-*f5QlPtpF_qg885QS;M>DA7>/eX6PgRe:J%m3rl&/&&B;r5ljch-=h\Z'rJ+3C$F=AkEj[M_+TMja5MsHfR7X32sr7'gZIc<+iG6sh4/fk.Z %#S2GsXQiaY\6g@pY;>_/8P*Rla)cu`ltg7kY:J1[oTgP:\TN%QK6_fki/PLC"Th#_jNf%PYs9:+pj$2o^\tfSN5'6^^3]uuf3(%X %m.6XC*o4j3]B3D]C59FY*@1<_I""^VcM=KW.kA5@\D+[R9rbRM7$OF8^".%J(#6<(6h`PKeOnMKiJ*jP0D@IMQ>E'k#H+49Zh9h<$EJoUr7ul. %]A*"nLP(#"YdVqYQ]@YQ2qs2_qI&R"j1M?V>M+bdhtd`^dF#@+!lj*BBR24B]Q?2"@5"@L7!?9ciRE+L\%rIS2O2-RijAdAjOn.)?[B.,t<:;5sr0&B^"2Ka+A0t %`['`7V[.+O__7;,/;L\q&^*"IY-m^iHZ4sK&PVB8(d5Q"P5B0CYalB7(8+\'dp?C1;KaIlQaF`Pl&c;3^ih.0!YDZ>Uk0iMuDu$]->EZ'?eI<'cbHu1V!)uT*!4I10@L7Um;Zp*+`7HWi`$HhFYFdY-F&RD2Qe.(p@^M[9N4+XQ %l$`RZa"OQth@lHuDk-7_fK9W`Z]M^EQ&F2&M$/l>:I2AKQGDE_W[;1j5'FLa?o)<#?DW %O?)7\rD26>jo/B*4XHr" %,&Hg1>LDtfK*Xfc+p.K#doh">MZgi;"RS\So>_t?ekp"i@!Ts7;Va&S;\FZbCL[u#+l*)6[tkS37T[cApgBkE0\.,RRb9Ded(Uq] %I[h6#-l-oCI.FQUEt;TP@[ZmsV..7[J@9e1!+>LfEoR9.ErTRX5%n`:8J'tN[TS>N@U4^Z=k2T.%-+-g$8EKK;@2J43t"ijq-#Q: %!2*7A/1!!a;@"2\_s3fsJA:qi'fqr1k'q0*lS(Yg&e-0\!/q[tm:sqZod6!K?4H]2ok(6caQRP#5M2LLrAZj15MW)IjK[Q300L88 %FbHIm^lufd6/6?5Zgq5`/Nk&60g?Nd*X`FOPKO1d#Ru:m_TlZ#EcIDu+F]e!!8t,d+M`C5(0>\[qWa>_SYSX=55.7r(>VQ=I3A@_ %J[p %aj#b!c/7eel2?!7,_rf^esA&Q814k17Ut1)jbguX*5Pj,E2!RS*I<\6Qu.2ge2mD.aKMX;/O(`kY$H3gd`cY/c);NIpn:>[RK)u\Z?9NHF]6/a)8j %(@n_q=K/UFZ6ql_rT:?9lh:=%>jjoUIJ831$g!(?jg_b,V24g$;uaD;OOnY6/2#$09W0a"^"[?b>IB()J(=CRgA5V5Nn,9:0?hBr %`U>((Oo"GTiq^'EFt=NW4Va1Nr8$sE4O5mGj6?7cO$>;)J;69qBo>%cFd#PLHc,,U,IcDfX7'lDNu^<5l@$.L7Uk,cUWq6NFg]`% %>jg)pS#=;rV(pFHp=LK0]s1@M8A"4q%u8qb3M'C0'B4^Dl4iut_4QT*7+)F\)Z.-@YfW1 %coPR&b@sX9fs9brS\\J7I3Lm1:"E^#nqs-Zdt+Y-58T/=/8<+Y8Jb$'A/nXYC&P5r?<.k$i$qpcaNnlF`O;n&Xmt1j8'jQ7S_rc[W=FB__[:;*@Trb/\#tDD4-0C&'9Q+bnWRFL1tOjLk4&h5ii4A"E)FU7:h2 %Z-7K3dEVMdnhR,V75sNSF58".AT,t5B/,^BpYMY!c6>8+1Y9-<.;i\KCk))mr2(e)&bA^E$NkcGAJXPWZ]QpZX.1qEM:7X6]VZc0Apr[tS`W?59TTsk-=:A2?/"4K:-Fs*s>EA&m@G$qQs %I4*6^O3%/BfRR,5"3ID.)@>](A!7&l%]r$M^T2dH#`d=>q4,X"W.P6Nk$^.5nnZ^Zgc-ciT).5!oJhX[#6\pt-.DcAm[Zr.Lu1@KonhjQSKa)mi^ldiml+,u7a` %oH&bE2LF/PK@L4-[RM\DA2-!kXrfls,qFEa`u6cf6n?%"XWCX[]=;iSNqMP!$tAJVl$3\268<9u4Et[3M,2TBR$,L'lXNl,ScC*^ %N0\]a2Pi]!LI$j!5tVq7o:n^LfrtHQVuAKG.,fA$LR*0h+7*%P(PIR^LRCnS?(%s0A'37hZn\-tV.!a/5u845FVk5]hF_ZZk`iu( %;d>>H^fYu2&OJ\AWVZ:]%Y,MSg&W%;5r2=]CN62#+&%STfaEQ]MV\Sr/#Up`fe?ZFg*%[;:.piEk=b8-OQBp>UK>m1qF9ut>eNT4 %%8IcX`78XVd,:.>6";8rA8#r)^n;b7$QC"S1,+NS*$I-uARH'^5=0%&b.sZm)cioai08dYZJQK_1cT&S&Eb?+BQ2,0?n>JpE6>th %.Jr'jK2VsYE@_\gK2ZXrRQ2J0f&/dG(aO5jkcM[NZ8%.LF""2@YVCs]*o#9(*&\"&5WN_els8Z7RGRh!-'Q\rg`-:liX=aO[J0Os %ds:_,D\ut#[/VlM5Q!/^M@6_Is2Q[Hf[tJ.V8)l1rQIS5.!&Ii%*/&8Vt#-6k@+/CKebQWmrhI7l3l\WrPb%U1j"A\K3+a0K0,': %d'^J&ZVZ5Q5Q=OG0:)Qh^\2/2;&1D]O;0'EPSO,",c`]u=&B\u=SRh0HKX4us2'h6pu;IFrj*^uln2Q!0FQ24ngGi(n;4Zja[J[a %jb<.?0,5e)05K*c% %.#=U.[YS`s@O5mm+Miu+oij#RU;Xqc7Z5%r%7X1q2HLSl%baorQUSh=-o/!b:cVib&-Q\*i(^b\a:+!A'pY%""R%_DrKe1B %%_lBOQH3Nn.Yp3I9J3UZINu\@!kZ5M/-^n5YXCq,Lr/b>S5VBM_)"MW&BKA]Q<+k^'n-667)#T*n=fY^#,L;fUI>fQ,/RD`=]gd8 %U*'PdaClFQ %=cuaWO2Mgm6e;/EK+_^OHssA^,t4ITn-U\^Q_I<@(aL(0?O#?fZ:HOmlSpkh`UQL)Uu4?kS>7>P14_NHqS#"FOs&s3b/SIoBX%DiWCWCYZNHo9:q_&T^"Ek)T0_LiOt[THnYaBpLe %em`)I^RAhe;5bmG`GtBj-='u:RbSUVoXQ%/IJu1qDC3e0e$OR02_@Ui=M(i!%2[G6K8fk^n>Cbs@d$"hE0IdUM$`Zj35rc)I*;02c %N/O#fEuIanWX/fu,L^'Z&P3#""(N-HJOgdl50ng1BKFT:r=i15QuA"ohI&0GNgpX)$AbfX'VNM[r<.`f7$^3^jqo.P*9b:3%,jH; %@0M>".\NaMD4uR,#=5SY#Ksol!ckR&`%j)%%B)^W@$"$tC&h,n79e#Ir31Kn2; %)-Q%I[]'W4>CrhP=H+u@(76'Vj9m*O1?_ft>Xeqg!tLI$IKF409bEjJJ5K:f$_3m,(kL*joDl"n$lEuGT^"q5QjF(R[U>*uHGPEM %9Jq@RQ@RS%PG>PHK0`ssJHt=6.?B#@=F?;iRoi]B15nKJ*fFdhC]Jn(U[r(#_WjZY?C$['M)Jei%a+oNNNYUF!<_,(gPjP9rjXqqpS'+YMC&JYb9hA$kX%gm3e(b%h^o3gNnb\33PJEkd %#5`(/PK=A2VQgOMR!Ee56sAc*(Vl^i)!VMV9LSF1/=f9g;%a;[9P$6+XU4nIln.ndA.*]Z*,l!:JRKf6*&*i\'"e^_?_ppoi$[M, %Jn'V>,W*UkE2lHQ^c=SNSD[[>64eO$7G+9t(ui;F8eYAl!N&Q_*CV'``>eluJ>s1.WLI^4JVPN!&I%>oF_sGIXKi3/&H*nXFDF35 %R-3`&--"hJn3i>U=(/E7`"0jXk5X7d4?tS%Aj]ZSl7EG35mM8fg>.1ASMlbjX>iIgui3C]mQ/-dX-ZiP)'ETltfWrZ[g6>QQ9d#B@JdVJuA@V#*m%3Qi' %"#tG>6tA-i7lUu"`6N`83/1:!ipRN-kCBIA1h'j"M;[Da0G[nP!3'?\J-(UI(_QTfibDFD>!Vfr?4)O@c"OjRH6P_):4a_8JN %oO1tmk_(\7Z:R1:CgJ3I6"3Zs*3R2n@cfKIgBbl5k!YUWiT(nMc#W#J0apRqPL0O4*[>B6_e9[>-3Bb?pPc28N7h%Cg#*!iShV,\ %>>F7\G9XMl#+/pjV.RMZi_`B@r.%5l7P$"+ULe&2VkU%3M.(pG-&bcbbm"S"!%0:KAA,k\/Wc_:+Q+@5+tqp_6P5-h %!6,n$;BT"F'I<#GL_l,%#j@T%%D(#>+6cL-QSm;')P&1/=tGQhG*(R#(um=hT#_`P;%&PKV@M.0EZe"sPHbfl6BEStE0UK"$8c/S %8*8&#ljo%FA0gI]d-;fu*ZDhN5Y=Rn9Lj=*n09W'P,PJl'V$s)(MJ)gdWlE@l\qpaL(%\P=^DW)QjglRqF]UlLI:LL+G,-K2X<;V %IQ6?>R8"I39JD1*k-/M%"Q:Vc>L6(X'sjl,-m0Zh)GNa'(>"A8eJK?.P?%e4;kHLR"Uq_j0f8qTMR)>*+sKnBc/1L;3ZD8+huXp( %4^>Yhpg:7s^hX:689&/dN^EdR&N:FL1$4S%/$(up.%5ccRiJkbn\M!3`TSiHkh%(P/15JD/G`dBI %@%[r$*:^F&!oOY`Zo-D2BQ=:$.!,_3 %F=i?9L'qA$Z]J9/:,;lX;ROKQd=>XmjD@lc`]G#S_'K1;.=+PIDr=2i+nMeEJ?"jM"$sj*";X.(FI!ba["1W_@O)nL-GrA"9p(Wo %-dl49]je^nl:+U("qJ4rp5[OpKnLH8OX,MH6ma#<;atU4dmo^2L::VK!5">DBch%`i:kABJ-H\rE0=UtJVi@gUGjNpaQTcL9,alW %UGA*Nm%uHTf9l$"Ij"#lG+;^.*A9.!l%!O0e=%rV#O>%ZjjI]+.st2g?t9D72IN&F8?n;Jd@LbP$F<+N159`m#7^uu7eMtt1!bclk>1IG6M?th_ %U+"MQZ6k46QQ^u.&PslqF`2eaO#W*X$,g&%jVU$j!mD9*"X6JmZ3IN8bW?jB#3:XenOh+ %BIIhc[tf2F5u9#E'fb^CH-T4^khW6QG@27Re!s_"$0E`pCt2l%Of4m]+mdWo`h2q %XD]@a[b_%o7$b6GO9Pm%)\M/c_":%kAF*I?%*OcW^u?$p%Ef&h_.@p*ZT'%EWk#8+eq!ke<.YslcK>Egh:5XUgWE&f=1'Om^Fa?S5)Z'nXNTo0g6l6!So=Wb@Cf2]LsaZC;Lco?lBC:'X4 %T=[#0T6kDQ&pgejl,lg%#L0nI0G"_Q%fr@`:*O[%67<56UhqnbZn\!tg-D"?Cln_4q5%;bor/1=/9E]lbcds7$9\!pHRfOJ'R`Bh %U^sUKGd=SK+r,crJ3FV2##KB6^PebK#_=\L.B-8cNZ;-u(e$@:XKI/nP'naYKcrOU24B?ZnM2Bb6&jZr:&i_oAAAFS%Dm#U@&!*I %kB+4m%U*/XLI@_KKXNlsa((TGf2cs_[`/Rt%EedRaT5F5#_3A#^cea#-I4lJq/'%b4e6RC&V+9kmLa;Ml5&'9q!$[cUDHXq^2\lc19non3j+M`S,PlO!bC$`&*0]P/$h!?u$j`a7b/RWf> %fnX<__X^4QWG2[I)F)R/fN+[W9-t/j?@1Me_u!MR(jd8dr(h7iiTI+'IMhg.iQ8t&YW!KpLV8Dh>Q6q?!hU=5-^0PgB'fNu"eAM7~> %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.png deleted file mode 100644 index 261ca8cb573f5e2b010ec987c9e5cefe4cea483b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5751 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg deleted file mode 100644 index 17e8ab78e8..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/se/se-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-icon.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-icon.png deleted file mode 100644 index 3ead895d9d1700a348d9e086de797b2a1922e1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmeAS@N?(olHy`uVBq!ia0vp^^FWw`4M-kt-CPZ%BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztuo!u|IEGZ*dUN-D-)$F}10V0-@Y`j}u&U}o%Mn?wrsa+? z0*?e=OjdaJLE?jy1HbF7Y2G)tZOFX!M(wP)X~TH`hG-JTYul)d`i!`8It| zI)ks5GVWA;sA$u|e#p5(0Zz4lIKzY@0Fvh5Z)yMFfS~RbRM`KmS$(4DcJ}p4*7s|q z^J~A?=B$tZ|9k)DGp@B&v(DN5*I8!1zc0(`tkpMnb32dxM}=DRZS|Ty2*@2`2HJ|C zK$de|eDj;3G<2y_`nq+CJvH5S`@iqjJYgjM^~15R$>D#CUp%*eeS=;2UeQ*qO}oFn zG&;9^wuD}D_HMJ!Mpuv4?CuTyFSE+q>VI{6`SW-Au5Hur%{x+5Bz3w>ICJwEtFr6; zmUSkbiyuFJk+ykFa{aH9$J+((t-7FmuV9H}pVjBYm#1rv-2PS{{(EEl^9xg}j;vl~ zw0}O&`ro3@D{k%+e0T2SujdzHFa6BFcOZGnu4s+e2Qf0YZv20FnE7WoPjCa!M;!bQ z8xho@<~OsLD|=2qD-Cbr319mE{&kOB{em}#IoD^-%AM%#diltTb;;4Z*N^V4*uObO z@K#vp70th!|9vw$d;i|UyY`lvMJrdFKlkWkiqz(xoBBUwUfX#6`R9uAt$p8r{V-dq zx0PSsPRDr9=gmKge_5z~4!!bK>GchN@y`-pAMU;XfA@_Kzm{%0^TBQL-5~3C({EaR ze)>FjPtnS+YsHFcl(#-t`XBQr`%QfQ{cX>gpmB=qc8>nToBzLMd$sGtZQd(~{r@f( z@%^5&`Ear3`PtWwu2_|1Bj?Ujzn4G%j>hXU=I*15PWb1<|0nSJ%>G~h zu1=4aajTepcG-y!NqhTBZy(cox?ia5vV7|FzZc6Qa?SG018!{J^shAhujRdhy6|+l z-LmJjgTLnN_r5(%GH%D0ze>*zy=6m6pJ-m%^!;nap_OCKz zjeNG~_3_((KYXwF^J(JZHD~Sk-`&^$ENm@x^kt6N<+EmPuSJ)_Jo!7eyY9VR zF1Y*e*2tyLAM+Q_51RRKX~+}JdyaeFJ+xdBbeMZ~tzME|&NoIxW \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo-med.png deleted file mode 100644 index 808db99e7b1aff54cdc50493639ab3aeac9153d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcma)7X*8P&8;!Ln6&1BqDxso=D(y=xT`VybM2UoMh#Hz#7g|EKrnQEM(6M{1iS1a5 zj+Tki8Xam&RbnZM7NcTqX_?WHe3|q8`u=^-dCqh1bIv{Y{=9T|w{uDgS_&{2ObO?N zCBR@3TrrQ6lM-Lm*#KQJ5Zzsgjv|prOwmZ4|9>xBxFi-=RoBJFB`z8m8zT^TXuSYs zHJLqfdOD~f-tc+(oE5RDN;tvI69#)3W4msOf|E-IXF}c68)Qy>6o<>+#$oM`?PSfvI7O(v;Yl!*(PUzO+TUi*K#zr9}yM*_38y#Wjg!$r|54g`py6Z5^{%FKO z`oai>MoGcoApqndxFKbR5RiW6+87)^6pg?S5wE>Y^HQV5!jhLTAYR|g>*KUYL|`!y zXt|2jOLGHrCi8#VqVg-E3MMIA-izGW(o!5nD*?m8QP$9aJRTUrs&XxS0*}-O{28VM zEts#0@{n z`}Z!S7=b}=Q!*BKX;sB}JCBorD3t-HA<8}Arh}?Dg(F@pIc-%3dC{O03rI65jIbL=d zF*-h0>M+V6!JAgLSzw(J`U?(L#*0h(`?tHpslp|yCi)ZH2ioPe+3YV!{xV1ie8Z^M zux`Ikw%kQ^?1P5WAF4y$B(t8n-c199cO6$cZ-JU3XdQWH`m?!HL#vlwo7P+61~2op zF5ac7hgKL-D$N1|3)m|@@a}QjGoj4k>_!0(n}^-<1Ru0_EARD)ou2=ZLkqI$oWVqS z84burH7$P!Duh2kD@Z1C`ZzH$CR{gG%>>ZznpFx(gBRWKHaI8DglD$d1B}|W=*(8X zeDtJ2{XU;0{A8{T96yiN<57)Vv8Y_+lg|k`K~Bq`^tWtlE#}xs^|iY7jm>v%ukx{l z#bLg&rb%r2UfBxHV{(JX)mtxEbScEiYVLORGW2GCZ)@DT9J8YO}D!ydBM&lm= zh3piHKdin}I71Ms@}f;=T1W+E`GVNmgPb(*xJt7q9mZ!@*{f5-@G16yaZdBA=_l<(IOV7zt$w9JV!UcdSXFC8)+{dung zNrpNu_MZq$N)5Vg368F3FRJBCxSlZCg#--b&MQi5@aspFKOTIj2n~El6cU@8dBZLv zzDT9~rv*V>eN9z>r}-=#aPhr5)mH%K_{EzzE+>o54V9xx9h!s(SNtiJ_F*{v8*F-h z7vX93)^-W*#OUFT6t|CROZ~vEEF^koRW>bWhmupzQM&?XhOCN2EWFG4@KQ>Yo}g_? zTQh9Ci)wc9jIajr+1Eqw^WSKdtVt9f&)2`@XQ*gWxy3gwNl9x6m5b!LMU=~<$xM6x z_^6Rpb5q&PFfD=g*25MPwn*DxyQY@i>ed8rkedsy`C zea_FfetK0`%p*!@iGqTaxl2S9Degw(POgWK#OM(q`%ALI^WvV>i>(%1{rKRj9o#n_ zwotqO^rECuTHcaEBds(a(Xgw{=(^_`9hBd5ssh}UwtE;{fT7VzwyFk-UDX+tzjjhC zX~tlBG$+2cSk#n79eqcs;d0rb(kIK}hQmo0g^z-d$g5*_dVj65`ipa?^6|i$c9>Gh zUcRv*2!qnUH4H|4i21if?A%4(C$Sfl{#z*8Ez=f`M+eTc{(W(dZrFNza@>Ca=YUX~ diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps deleted file mode 100644 index 79ddf390c2..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.eps +++ /dev/null @@ -1,6143 +0,0 @@ -%!PS-Adobe-3.1 EPSF-3.0 -%ADO_DSC_Encoding: MacOS Roman -%%Title: sf-logo.eps -%%Creator: Adobe Illustrator(R) 14.0 -%%For: JIN YANG -%%CreationDate: 5/13/11 -%%BoundingBox: 0 0 442 77 -%%HiResBoundingBox: 0 0 441.4063 76.5157 -%%CropBox: 0 0 441.4063 76.5157 -%%LanguageLevel: 2 -%%DocumentData: Clean7Bit -%ADOBeginClientInjection: DocumentHeader "AI11EPS" -%%AI8_CreatorVersion: 14.0.0 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 14.0.0 x367 R agm 4.4890 ct 5.1541 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 24 8 %%BeginData: 5164 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8FFFF93B58DB68DB5C3FFA8FF %A8FFA8A9A8FD60FFFD0FA8FFCAB58D938DB58DC3FFFD06A8FD61FFA8A8A9 %A8A8A8A9A8A8A8A9A8A8A8A9FFCF8DB58DB58DB5C3FFFD07A8FD60FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFCACAA1CAA7CAA1FFFFFFA8FFA8FFA8FD %E1FF7DA87DA87DA87DA87DA87DA87DA87DFFA8756F766F756FA7FFA87DA8 %7EA87DFD61FFA87D7E7DA87D7E7DA87D7E7DA87D7EAFCA696F696F696FA0 %FF7D7D7DA87D7DA8FD60FFFD0F7DFFA76F446F446F44A1FFFD067DA8FD3D %FF7D527DA8FD14FFA87D7DA8FD07FFFD0FA8FFFF9AA076A19AA0A7FFFD07 %A8FD3CFF522027F8A8FD14FF7D27F87DFFFFA8A8A8FD5DFF7DF827F8277D %FD14FF7DF82052FFFF7DF8277DFFA87DA87EA87DA87EA87DA87EA87DA8FF %FF767CFD0476A7FFFD07A8FD3BFF5227F8527DFD15FF7627F87DFFFF52F8 %F8A8FF5253527D5253527D5253527D525352FFA7442045204420A1FF7D52 %7D525952A8FD0EFFAFFD2CFF52F827A8FD05FFA8A8A8FD05FFA8FD05FFA8 %FFFF7DF82752FFFF77F8277DFF7D527D527D527D527D527D527D527DFFCA %444B4445444B7CFF527D527D527D7DFD07FF7D7D76A8FD05FFA8527D7DFD %04FF7DA1FF7D7D7DFF7D7DFD05FFA87DFFFFFF7D7D7DFD04FFA87DFF7D7D %7DFFFF7D2727275252FFA8522727275252FFFFFF272752FFFFFF27274CFF %7D27F87DFFA127272152527D7D777D7D7D777D7D7D77FD047DFFA84B4B6F %4B4B4BA1FF7D527D527D52A8FD05FFA22727F821F852FFFFFF7DF820F827 %52FFFFFFFD0427F8F85252F8A8FD04FFF852FFA82727F8F827CAFFFF5227 %2727F8F827FF27F82027F8F8A14BF821F8F8F8204BFFA827F827FFFFFF27 %F827FF7DF82776FF27F82027F8F8FD25FF27277DCA7D5227FFFFA8F852A8 %A84B2052FFFF4BF8277DA827A87D2752FFFFFF7DF877FF27277DFF522727 %FFFF76F82776A85252FF7D2727275227FF7D2727775227F827A8FF272727 %FFFFFF272727FF7D27F87DFF7D2727275227527D527D527D527D527D527D %527D52FFA8524B524B524BA8FFFD067DA8FD04FF7D2152FD07FF2727A8FF %FFFF2727FFFF2727A8FD05FFF827FFFFFF52F8FF7DF87DFFFFFF52F87DFF %52F852FD06FF52F827A8FFFFFF7DFFFFFF52F8F87DFF27F852FFFFA827F8 %27FF7DF82052FFFF52F8277DFF525252275252522752525227522E52A8CA %20202027202076FF5252285252527DFD04FFA8F852FD07FF2752FD04FF7D %F8A8FF2727FD06FF5220FFFFFF2752FF5227FD05FFF87DFF76F8FD07FF52 %2727A8FD04FFA8A8A876F8277DFF272727FFFFFF272727FF7D27F87DFFFF %522727A8FF275227522752275227522752275227FFA120F820F820F87DFF %5227522752277DFD05FF4CF827275276FFFFFFF8274B524B5227207DFF21 %52FD06FF7D2052FF7D2076FF27274B52275227F852FF5227A8FD06FF52F8 %27A8FFFFA82727F827F827F87DFF27F852FFFFAF27F827FF7DF82152FFFF %52F8277DFF7D527D527D527D527D527D527D527DFFCA27524B51274B7DFF %FD06527DFD05FFA8522727F82727FFFFFD04274B272727A8FF2727FD07FF %2752FF52F8FFFF52F84B2727274B277DFF7620FD07FF522721A8FFFF2727 %20FD05277DFF272727FFFFFF272727FF7D27F87DFFFF5221F8A8FD29FFA8 %A852F852FFF852FFFFA8FD05FF2752FD07FF52F8FF2727FFFF2727A8FFFF %FFA8FFFFFF5227A8FD06FF52F8277DFF52F8F852A8FF5227F87DFF27F827 %FFFFFF27F827FF7DF82752FFFF52F8277DFFA17DA87DA17DA87DA17DA87D %A17DA8FFFF7DA87DA87DA8A8FFFD04A8A1A8A8FD0BFF2752FF4B27FD08FF %274BFD07FF7D2752277DFFFF76F8FD08FF7D20FD07FF522727A8FF7DF827 %7DFFFF76F8277DFF272727A8FF7D202727FF7D27F87DFFFF5227F8A1FFF8 %27F827F827F827F827F827F821F8A8A827F827F827F87DFF27F8272127F8 %76FD04FF7D52A8FFFFFF7D2052FF52F876FFFFFF5252FFFF2752FD08FF27 %2727A8FFFF7DF827FFFFFF7D52A8FF5227A8FD06FF52F8277DFF7D20F827 %5252F827F87DFF52F82727522127F827FF7DF827274B7D7DF82727522727 %27202727272027272720272727A8FF2727202727277DFF2727F827272052 %FD04FF7DF827527D522727FFFFFF2727527D272027FFFF274BFD08FF52F8 %52FD04FF52F8277D5227F8A8FF52F8FD07FF4B2727A8FFFF2727F827F827 %F8277DFF7D272027F8FD0427FFFF4BF827F87DFF27F827F8F827F827F827 %F827F827F827F827F8A8A827F827F827F87DFF27F827F827F852FD05FF7D %2720F82727A8FFFFFFA82727F8274BFFFFFF2752FD08FF7D2752FD05FF52 %27F82727A8FFFF5227A8FD06FF52F827A8FFFFA82727F8525227F87DFFFF %7627F8275252274BA8FFA85221277DFF7D522727 %%EndData -%ADOEndClientInjection: DocumentHeader "AI11EPS" -%%Pages: 1 -%%DocumentNeededResources: -%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 -%%+ procset Adobe_CoolType_Utility_T42 1.0 0 -%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 -%%+ procset Adobe_CoolType_Core 2.31 0 -%%+ procset Adobe_AGM_Core 2.0 0 -%%+ procset Adobe_AGM_Utils 1.0 0 -%%DocumentFonts: -%%DocumentNeededFonts: -%%DocumentNeededFeatures: -%%DocumentSuppliedFeatures: -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentCustomColors: -%%CMYKCustomColor: -%%RGBCustomColor: -%%EndComments - - - - - - -%%BeginDefaults -%%ViewingOrientation: 1 0 0 1 -%%EndDefaults -%%BeginProlog -%%BeginResource: procset Adobe_AGM_Utils 1.0 0 -%%Version: 1.0 0 -%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{currentpacking true setpacking}if -userdict/Adobe_AGM_Utils 75 dict dup begin put -/bdf -{bind def}bind def -/nd{null def}bdf -/xdf -{exch def}bdf -/ldf -{load def}bdf -/ddf -{put}bdf -/xddf -{3 -1 roll put}bdf -/xpt -{exch put}bdf -/ndf -{ - exch dup where{ - pop pop pop - }{ - xdf - }ifelse -}def -/cdndf -{ - exch dup currentdict exch known{ - pop pop - }{ - exch def - }ifelse -}def -/gx -{get exec}bdf -/ps_level - /languagelevel where{ - pop systemdict/languagelevel gx - }{ - 1 - }ifelse -def -/level2 - ps_level 2 ge -def -/level3 - ps_level 3 ge -def -/ps_version - {version cvr}stopped{-1}if -def -/set_gvm -{currentglobal exch setglobal}bdf -/reset_gvm -{setglobal}bdf -/makereadonlyarray -{ - /packedarray where{pop packedarray - }{ - array astore readonly}ifelse -}bdf -/map_reserved_ink_name -{ - dup type/stringtype eq{ - dup/Red eq{ - pop(_Red_) - }{ - dup/Green eq{ - pop(_Green_) - }{ - dup/Blue eq{ - pop(_Blue_) - }{ - dup()cvn eq{ - pop(Process) - }if - }ifelse - }ifelse - }ifelse - }if -}bdf -/AGMUTIL_GSTATE 22 dict def -/get_gstate -{ - AGMUTIL_GSTATE begin - /AGMUTIL_GSTATE_clr_spc currentcolorspace def - /AGMUTIL_GSTATE_clr_indx 0 def - /AGMUTIL_GSTATE_clr_comps 12 array def - mark currentcolor counttomark - {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put - /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop - /AGMUTIL_GSTATE_fnt rootfont def - /AGMUTIL_GSTATE_lw currentlinewidth def - /AGMUTIL_GSTATE_lc currentlinecap def - /AGMUTIL_GSTATE_lj currentlinejoin def - /AGMUTIL_GSTATE_ml currentmiterlimit def - currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf - /AGMUTIL_GSTATE_sa currentstrokeadjust def - /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def - /AGMUTIL_GSTATE_op currentoverprint def - /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def - /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def - currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf - cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf - /AGMUTIL_GSTATE_ht currenthalftone def - /AGMUTIL_GSTATE_flt currentflat def - end -}def -/set_gstate -{ - AGMUTIL_GSTATE begin - AGMUTIL_GSTATE_clr_spc setcolorspace - AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get - /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor - AGMUTIL_GSTATE_fnt setfont - AGMUTIL_GSTATE_lw setlinewidth - AGMUTIL_GSTATE_lc setlinecap - AGMUTIL_GSTATE_lj setlinejoin - AGMUTIL_GSTATE_ml setmiterlimit - AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash - AGMUTIL_GSTATE_sa setstrokeadjust - AGMUTIL_GSTATE_clr_rnd setcolorrendering - AGMUTIL_GSTATE_op setoverprint - AGMUTIL_GSTATE_bg cvx setblackgeneration - AGMUTIL_GSTATE_ucr cvx setundercolorremoval - AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx - AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer - AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or - { - currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne - { - mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark - }if - }{ - AGMUTIL_GSTATE_ht sethalftone - }ifelse - AGMUTIL_GSTATE_flt setflat - end -}def -/get_gstate_and_matrix -{ - AGMUTIL_GSTATE begin - /AGMUTIL_GSTATE_ctm matrix currentmatrix def - end - get_gstate -}def -/set_gstate_and_matrix -{ - set_gstate - AGMUTIL_GSTATE begin - AGMUTIL_GSTATE_ctm setmatrix - end -}def -/AGMUTIL_str256 256 string def -/AGMUTIL_src256 256 string def -/AGMUTIL_dst64 64 string def -/AGMUTIL_srcLen nd -/AGMUTIL_ndx nd -/AGMUTIL_cpd nd -/capture_cpd{ - //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf -}def -/thold_halftone -{ - level3 - {sethalftone currenthalftone} - { - dup/HalftoneType get 3 eq - { - sethalftone currenthalftone - }{ - begin - Width Height mul{ - Thresholds read{pop}if - }repeat - end - currenthalftone - }ifelse - }ifelse -}def -/rdcmntline -{ - currentfile AGMUTIL_str256 readline pop - (%)anchorsearch{pop}if -}bdf -/filter_cmyk -{ - dup type/filetype ne{ - exch()/SubFileDecode filter - }{ - exch pop - } - ifelse - [ - exch - { - AGMUTIL_src256 readstring pop - dup length/AGMUTIL_srcLen exch def - /AGMUTIL_ndx 0 def - AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ - 1 index exch get - AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put - /AGMUTIL_ndx AGMUTIL_ndx 1 add def - }for - pop - AGMUTIL_dst64 0 AGMUTIL_ndx getinterval - } - bind - /exec cvx - ]cvx -}bdf -/filter_indexed_devn -{ - cvi Names length mul names_index add Lookup exch get -}bdf -/filter_devn -{ - 4 dict begin - /srcStr xdf - /dstStr xdf - dup type/filetype ne{ - 0()/SubFileDecode filter - }if - [ - exch - [ - /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx - currentdict/srcStr get/readstring cvx/pop cvx - /dup cvx/length cvx 0/gt cvx[ - Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx - names_index Names length currentdict/srcStr get length 1 sub{ - 1/index cvx/exch cvx/get cvx - currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx - Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx - }for - currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx - ]cvx/if cvx - /end cvx - ]cvx - bind - /exec cvx - ]cvx - end -}bdf -/AGMUTIL_imagefile nd -/read_image_file -{ - AGMUTIL_imagefile 0 setfileposition - 10 dict begin - /imageDict xdf - /imbufLen Width BitsPerComponent mul 7 add 8 idiv def - /imbufIdx 0 def - /origDataSource imageDict/DataSource get def - /origMultipleDataSources imageDict/MultipleDataSources get def - /origDecode imageDict/Decode get def - /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def - imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse - { - /imbufCnt imageDict/DataSource get length def - /imbufs imbufCnt array def - 0 1 imbufCnt 1 sub{ - /imbufIdx xdf - imbufs imbufIdx imbufLen string put - imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put - }for - DeviceN_PS2{ - imageDict begin - /DataSource[DataSource/devn_sep_datasource cvx]cvx def - /MultipleDataSources false def - /Decode[0 1]def - end - }if - }{ - /imbuf imbufLen string def - Indexed_DeviceN level3 not and DeviceN_NoneName or{ - /srcDataStrs[imageDict begin - currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse - { - Width Decode length 2 div mul cvi string - }repeat - end]def - imageDict begin - /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def - /Decode[0 1]def - end - }{ - imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put - imageDict/Decode[0 1]put - }ifelse - }ifelse - imageDict exch - load exec - imageDict/DataSource origDataSource put - imageDict/MultipleDataSources origMultipleDataSources put - imageDict/Decode origDecode put - end -}bdf -/write_image_file -{ - begin - {(AGMUTIL_imagefile)(w+)file}stopped{ - false - }{ - Adobe_AGM_Utils/AGMUTIL_imagefile xddf - 2 dict begin - /imbufLen Width BitsPerComponent mul 7 add 8 idiv def - MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ - /imbuf imbufLen string def - }if - 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ - pop - MultipleDataSources{ - 0 1 DataSource length 1 sub{ - DataSource type dup - /arraytype eq{ - pop DataSource exch gx - }{ - /filetype eq{ - DataSource exch get imbuf readstring pop - }{ - DataSource exch get - }ifelse - }ifelse - AGMUTIL_imagefile exch writestring - }for - }{ - DataSource type dup - /arraytype eq{ - pop DataSource exec - }{ - /filetype eq{ - DataSource imbuf readstring pop - }{ - DataSource - }ifelse - }ifelse - AGMUTIL_imagefile exch writestring - }ifelse - }for - end - true - }ifelse - end -}bdf -/close_image_file -{ - AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile -}def -statusdict/product known userdict/AGMP_current_show known not and{ - /pstr statusdict/product get def - pstr(HP LaserJet 2200)eq - pstr(HP LaserJet 4000 Series)eq or - pstr(HP LaserJet 4050 Series )eq or - pstr(HP LaserJet 8000 Series)eq or - pstr(HP LaserJet 8100 Series)eq or - pstr(HP LaserJet 8150 Series)eq or - pstr(HP LaserJet 5000 Series)eq or - pstr(HP LaserJet 5100 Series)eq or - pstr(HP Color LaserJet 4500)eq or - pstr(HP Color LaserJet 4600)eq or - pstr(HP LaserJet 5Si)eq or - pstr(HP LaserJet 1200 Series)eq or - pstr(HP LaserJet 1300 Series)eq or - pstr(HP LaserJet 4100 Series)eq or - { - userdict/AGMP_current_show/show load put - userdict/show{ - currentcolorspace 0 get - /Pattern eq - {false charpath f} - {AGMP_current_show}ifelse - }put - }if - currentdict/pstr undef -}if -/consumeimagedata -{ - begin - AGMIMG_init_common - currentdict/MultipleDataSources known not - {/MultipleDataSources false def}if - MultipleDataSources - { - DataSource 0 get type - dup/filetype eq - { - 1 dict begin - /flushbuffer Width cvi string def - 1 1 Height cvi - { - pop - 0 1 DataSource length 1 sub - { - DataSource exch get - flushbuffer readstring pop pop - }for - }for - end - }if - dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and - { - Width Height mul cvi - { - 0 1 DataSource length 1 sub - {dup DataSource exch gx length exch 0 ne{pop}if}for - dup 0 eq - {pop exit}if - sub dup 0 le - {exit}if - }loop - pop - }if - } - { - /DataSource load type - dup/filetype eq - { - 1 dict begin - /flushbuffer Width Decode length 2 idiv mul cvi string def - 1 1 Height{pop DataSource flushbuffer readstring pop pop}for - end - }if - dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and - { - Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul - { - DataSource length dup 0 eq - {pop exit}if - sub dup 0 le - {exit}if - }loop - pop - }if - }ifelse - end -}bdf -/addprocs -{ - 2{/exec load}repeat - 3 1 roll - [5 1 roll]bind cvx -}def -/modify_halftone_xfer -{ - currenthalftone dup length dict copy begin - currentdict 2 index known{ - 1 index load dup length dict copy begin - currentdict/TransferFunction known{ - /TransferFunction load - }{ - currenttransfer - }ifelse - addprocs/TransferFunction xdf - currentdict end def - currentdict end sethalftone - }{ - currentdict/TransferFunction known{ - /TransferFunction load - }{ - currenttransfer - }ifelse - addprocs/TransferFunction xdf - currentdict end sethalftone - pop - }ifelse -}def -/clonearray -{ - dup xcheck exch - dup length array exch - Adobe_AGM_Core/AGMCORE_tmp -1 ddf - { - Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf - dup type/dicttype eq - { - Adobe_AGM_Core/AGMCORE_tmp get - exch - clonedict - Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf - }if - dup type/arraytype eq - { - Adobe_AGM_Core/AGMCORE_tmp get exch - clonearray - Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf - }if - exch dup - Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put - }forall - exch{cvx}if -}bdf -/clonedict -{ - dup length dict - begin - { - dup type/dicttype eq - {clonedict}if - dup type/arraytype eq - {clonearray}if - def - }forall - currentdict - end -}bdf -/DeviceN_PS2 -{ - /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and -}bdf -/Indexed_DeviceN -{ - /indexed_colorspace_dict AGMCORE_gget dup null ne{ - dup/CSDBase known{ - /CSDBase get/CSD get_res/Names known - }{ - pop false - }ifelse - }{ - pop false - }ifelse -}bdf -/DeviceN_NoneName -{ - /Names where{ - pop - false Names - { - (None)eq or - }forall - }{ - false - }ifelse -}bdf -/DeviceN_PS2_inRip_seps -{ - /AGMCORE_in_rip_sep where - { - pop dup type dup/arraytype eq exch/packedarraytype eq or - { - dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and - { - /currentcolorspace exch AGMCORE_gput - false - }{ - true - }ifelse - }{ - true - }ifelse - }{ - true - }ifelse -}bdf -/base_colorspace_type -{ - dup type/arraytype eq{0 get}if -}bdf -/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse -{ - /pdfmark_5{cleartomark}bind def -}{ - /pdfmark_5{pdfmark}bind def -}ifelse -/ReadBypdfmark_5 -{ - currentfile exch 0 exch/SubFileDecode filter - /currentdistillerparams where - {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse - {flushfile cleartomark} - {/PUT pdfmark}ifelse -}bdf -/ReadBypdfmark_5_string -{ - 2 dict begin - /makerString exch def string/tmpString exch def - { - currentfile tmpString readline not{pop exit}if - makerString anchorsearch - { - pop pop cleartomark exit - }{ - 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5 - }ifelse - }loop - end -}bdf -/xpdfm -{ - { - dup 0 get/Label eq - { - aload length[exch 1 add 1 roll/PAGELABEL - }{ - aload pop - [{ThisPage}<<5 -2 roll>>/PUT - }ifelse - pdfmark_5 - }forall -}bdf -/lmt{ - dup 2 index le{exch}if pop dup 2 index ge{exch}if pop -}bdf -/int{ - dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop -}bdf -/ds{ - Adobe_AGM_Utils begin -}bdf -/dt{ - currentdict Adobe_AGM_Utils eq{ - end - }if -}bdf -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_AGM_Core 2.0 0 -%%Version: 2.0 0 -%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Core 209 dict dup begin put -/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def -/AGMCORE_str256 256 string def -/AGMCORE_save nd -/AGMCORE_graphicsave nd -/AGMCORE_c 0 def -/AGMCORE_m 0 def -/AGMCORE_y 0 def -/AGMCORE_k 0 def -/AGMCORE_cmykbuf 4 array def -/AGMCORE_screen[currentscreen]cvx def -/AGMCORE_tmp 0 def -/AGMCORE_&setgray nd -/AGMCORE_&setcolor nd -/AGMCORE_&setcolorspace nd -/AGMCORE_&setcmykcolor nd -/AGMCORE_cyan_plate nd -/AGMCORE_magenta_plate nd -/AGMCORE_yellow_plate nd -/AGMCORE_black_plate nd -/AGMCORE_plate_ndx nd -/AGMCORE_get_ink_data nd -/AGMCORE_is_cmyk_sep nd -/AGMCORE_host_sep nd -/AGMCORE_avoid_L2_sep_space nd -/AGMCORE_distilling nd -/AGMCORE_composite_job nd -/AGMCORE_producing_seps nd -/AGMCORE_ps_level -1 def -/AGMCORE_ps_version -1 def -/AGMCORE_environ_ok nd -/AGMCORE_CSD_cache 0 dict def -/AGMCORE_currentoverprint false def -/AGMCORE_deltaX nd -/AGMCORE_deltaY nd -/AGMCORE_name nd -/AGMCORE_sep_special nd -/AGMCORE_err_strings 4 dict def -/AGMCORE_cur_err nd -/AGMCORE_current_spot_alias false def -/AGMCORE_inverting false def -/AGMCORE_feature_dictCount nd -/AGMCORE_feature_opCount nd -/AGMCORE_feature_ctm nd -/AGMCORE_ConvertToProcess false def -/AGMCORE_Default_CTM matrix def -/AGMCORE_Default_PageSize nd -/AGMCORE_Default_flatness nd -/AGMCORE_currentbg nd -/AGMCORE_currentucr nd -/AGMCORE_pattern_paint_type 0 def -/knockout_unitsq nd -currentglobal true setglobal -[/CSA/Gradient/Procedure] -{ - /Generic/Category findresource dup length dict copy/Category defineresource pop -}forall -setglobal -/AGMCORE_key_known -{ - where{ - /Adobe_AGM_Core_Id known - }{ - false - }ifelse -}ndf -/flushinput -{ - save - 2 dict begin - /CompareBuffer 3 -1 roll def - /readbuffer 256 string def - mark - { - currentfile readbuffer{readline}stopped - {cleartomark mark} - { - not - {pop exit} - if - CompareBuffer eq - {exit} - if - }ifelse - }loop - cleartomark - end - restore -}bdf -/getspotfunction -{ - AGMCORE_screen exch pop exch pop - dup type/dicttype eq{ - dup/HalftoneType get 1 eq{ - /SpotFunction get - }{ - dup/HalftoneType get 2 eq{ - /GraySpotFunction get - }{ - pop - { - abs exch abs 2 copy add 1 gt{ - 1 sub dup mul exch 1 sub dup mul add 1 sub - }{ - dup mul exch dup mul add 1 exch sub - }ifelse - }bind - }ifelse - }ifelse - }if -}def -/np -{newpath}bdf -/clp_npth -{clip np}def -/eoclp_npth -{eoclip np}def -/npth_clp -{np clip}def -/graphic_setup -{ - /AGMCORE_graphicsave save store - concat - 0 setgray - 0 setlinecap - 0 setlinejoin - 1 setlinewidth - []0 setdash - 10 setmiterlimit - np - false setoverprint - false setstrokeadjust - //Adobe_AGM_Core/spot_alias gx - /Adobe_AGM_Image where{ - pop - Adobe_AGM_Image/spot_alias 2 copy known{ - gx - }{ - pop pop - }ifelse - }if - /sep_colorspace_dict null AGMCORE_gput - 100 dict begin - /dictstackcount countdictstack def - /showpage{}def - mark -}def -/graphic_cleanup -{ - cleartomark - dictstackcount 1 countdictstack 1 sub{end}for - end - AGMCORE_graphicsave restore -}def -/compose_error_msg -{ - grestoreall initgraphics - /Helvetica findfont 10 scalefont setfont - /AGMCORE_deltaY 100 def - /AGMCORE_deltaX 310 def - clippath pathbbox np pop pop 36 add exch 36 add exch moveto - 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto - 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath - 0 AGMCORE_&setgray - gsave 1 AGMCORE_&setgray fill grestore - 1 setlinewidth gsave stroke grestore - currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto - /AGMCORE_deltaY 12 def - /AGMCORE_tmp 0 def - AGMCORE_err_strings exch get - { - dup 32 eq - { - pop - AGMCORE_str256 0 AGMCORE_tmp getinterval - stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt - { - currentpoint AGMCORE_deltaY sub exch pop - clippath pathbbox pop pop pop 44 add exch moveto - }if - AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show - 0 1 AGMCORE_str256 length 1 sub - { - AGMCORE_str256 exch 0 put - }for - /AGMCORE_tmp 0 def - }{ - AGMCORE_str256 exch AGMCORE_tmp xpt - /AGMCORE_tmp AGMCORE_tmp 1 add def - }ifelse - }forall -}bdf -/AGMCORE_CMYKDeviceNColorspaces[ - [/Separation/None/DeviceCMYK{0 0 0}] - [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] - [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] - [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] - [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] - [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] - [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] - [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] - [/Separation(Cyan)/DeviceCMYK{0 0 0}] - [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] - [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] - [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] - [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] - [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] - [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] - [/DeviceCMYK] -]def -/ds{ - Adobe_AGM_Core begin - /currentdistillerparams where - { - pop currentdistillerparams/CoreDistVersion get 5000 lt - {<>setdistillerparams}if - }if - /AGMCORE_ps_version xdf - /AGMCORE_ps_level xdf - errordict/AGM_handleerror known not{ - errordict/AGM_handleerror errordict/handleerror get put - errordict/handleerror{ - Adobe_AGM_Core begin - $error/newerror get AGMCORE_cur_err null ne and{ - $error/newerror false put - AGMCORE_cur_err compose_error_msg - }if - $error/newerror true put - end - errordict/AGM_handleerror get exec - }bind put - }if - /AGMCORE_environ_ok - ps_level AGMCORE_ps_level ge - ps_version AGMCORE_ps_version ge and - AGMCORE_ps_level -1 eq or - def - AGMCORE_environ_ok not - {/AGMCORE_cur_err/AGMCORE_bad_environ def}if - /AGMCORE_&setgray systemdict/setgray get def - level2{ - /AGMCORE_&setcolor systemdict/setcolor get def - /AGMCORE_&setcolorspace systemdict/setcolorspace get def - }if - /AGMCORE_currentbg currentblackgeneration def - /AGMCORE_currentucr currentundercolorremoval def - /AGMCORE_Default_flatness currentflat def - /AGMCORE_distilling - /product where{ - pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and - }{ - false - }ifelse - def - /AGMCORE_GSTATE AGMCORE_key_known not{ - /AGMCORE_GSTATE 21 dict def - /AGMCORE_tmpmatrix matrix def - /AGMCORE_gstack 32 array def - /AGMCORE_gstackptr 0 def - /AGMCORE_gstacksaveptr 0 def - /AGMCORE_gstackframekeys 14 def - /AGMCORE_&gsave/gsave ldf - /AGMCORE_&grestore/grestore ldf - /AGMCORE_&grestoreall/grestoreall ldf - /AGMCORE_&save/save ldf - /AGMCORE_&setoverprint/setoverprint ldf - /AGMCORE_gdictcopy{ - begin - {def}forall - end - }def - /AGMCORE_gput{ - AGMCORE_gstack AGMCORE_gstackptr get - 3 1 roll - put - }def - /AGMCORE_gget{ - AGMCORE_gstack AGMCORE_gstackptr get - exch - get - }def - /gsave{ - AGMCORE_&gsave - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /grestore{ - AGMCORE_&grestore - AGMCORE_gstackptr 1 sub - dup AGMCORE_gstacksaveptr lt{1 add}if - dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known - {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse - /AGMCORE_gstackptr exch store - }def - /grestoreall{ - AGMCORE_&grestoreall - /AGMCORE_gstackptr AGMCORE_gstacksaveptr store - }def - /save{ - AGMCORE_&save - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - /AGMCORE_gstacksaveptr AGMCORE_gstackptr store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /setoverprint{ - dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint - }def - 0 1 AGMCORE_gstack length 1 sub{ - AGMCORE_gstack exch AGMCORE_gstackframekeys dict put - }for - }if - level3/AGMCORE_&sysshfill AGMCORE_key_known not and - { - /AGMCORE_&sysshfill systemdict/shfill get def - /AGMCORE_&sysmakepattern systemdict/makepattern get def - /AGMCORE_&usrmakepattern/makepattern load def - }if - /currentcmykcolor[0 0 0 0]AGMCORE_gput - /currentstrokeadjust false AGMCORE_gput - /currentcolorspace[/DeviceGray]AGMCORE_gput - /sep_tint 0 AGMCORE_gput - /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput - /sep_colorspace_dict null AGMCORE_gput - /devicen_colorspace_dict null AGMCORE_gput - /indexed_colorspace_dict null AGMCORE_gput - /currentcolor_intent()AGMCORE_gput - /customcolor_tint 1 AGMCORE_gput - /absolute_colorimetric_crd null AGMCORE_gput - /relative_colorimetric_crd null AGMCORE_gput - /saturation_crd null AGMCORE_gput - /perceptual_crd null AGMCORE_gput - currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf - cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf - << - /MaxPatternItem currentsystemparams/MaxPatternCache get - >> - setuserparams - end -}def -/ps -{ - /setcmykcolor where{ - pop - Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put - }if - Adobe_AGM_Core begin - /setcmykcolor - { - 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput - 1 sub 4 1 roll - 3{ - 3 index add neg dup 0 lt{ - pop 0 - }if - 3 1 roll - }repeat - setrgbcolor pop - }ndf - /currentcmykcolor - { - /currentcmykcolor AGMCORE_gget aload pop - }ndf - /setoverprint - {pop}ndf - /currentoverprint - {false}ndf - /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def - /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def - /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def - /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def - /AGMCORE_plate_ndx - AGMCORE_cyan_plate{ - 0 - }{ - AGMCORE_magenta_plate{ - 1 - }{ - AGMCORE_yellow_plate{ - 2 - }{ - AGMCORE_black_plate{ - 3 - }{ - 4 - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_have_reported_unsupported_color_space false def - /AGMCORE_report_unsupported_color_space - { - AGMCORE_have_reported_unsupported_color_space false eq - { - (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== - Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf - }if - }def - /AGMCORE_composite_job - AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def - /AGMCORE_in_rip_sep - /AGMCORE_in_rip_sep where{ - pop AGMCORE_in_rip_sep - }{ - AGMCORE_distilling - { - false - }{ - userdict/Adobe_AGM_OnHost_Seps known{ - false - }{ - level2{ - currentpagedevice/Separations 2 copy known{ - get - }{ - pop pop false - }ifelse - }{ - false - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def - /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def - /AGM_preserve_spots - /AGM_preserve_spots where{ - pop AGM_preserve_spots - }{ - AGMCORE_distilling AGMCORE_producing_seps or - }ifelse - def - /AGM_is_distiller_preserving_spotimages - { - currentdistillerparams/PreserveOverprintSettings known - { - currentdistillerparams/PreserveOverprintSettings get - { - currentdistillerparams/ColorConversionStrategy known - { - currentdistillerparams/ColorConversionStrategy get - /sRGB ne - }{ - true - }ifelse - }{ - false - }ifelse - }{ - false - }ifelse - }def - /convert_spot_to_process where{pop}{ - /convert_spot_to_process - { - //Adobe_AGM_Core begin - dup map_alias{ - /Name get exch pop - }if - dup dup(None)eq exch(All)eq or - { - pop false - }{ - AGMCORE_host_sep - { - gsave - 1 0 0 0 setcmykcolor currentgray 1 exch sub - 0 1 0 0 setcmykcolor currentgray 1 exch sub - 0 0 1 0 setcmykcolor currentgray 1 exch sub - 0 0 0 1 setcmykcolor currentgray 1 exch sub - add add add 0 eq - { - pop false - }{ - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - }ifelse - grestore - }{ - AGMCORE_distilling - { - pop AGM_is_distiller_preserving_spotimages not - }{ - //Adobe_AGM_Core/AGMCORE_name xddf - false - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq - AGMUTIL_cpd/OverrideSeparations known and - { - AGMUTIL_cpd/OverrideSeparations get - { - /HqnSpots/ProcSet resourcestatus - { - pop pop pop true - }if - }if - }if - { - AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not - }{ - gsave - [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace - false - AGMUTIL_cpd/SeparationColorNames 2 copy known - { - get - {AGMCORE_name eq or}forall - not - }{ - pop pop pop true - }ifelse - grestore - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - }ifelse - /convert_to_process where{pop}{ - /convert_to_process - { - dup length 0 eq - { - pop false - }{ - AGMCORE_host_sep - { - dup true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process and}ifelse - } - forall - { - true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - (Black)eq or and - }forall - not - }{pop false}ifelse - }{ - false exch - { - /PhotoshopDuotoneList where{pop false}{true}ifelse - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process or}ifelse - } - { - convert_spot_to_process or - } - ifelse - } - forall - }ifelse - }ifelse - }def - }ifelse - /AGMCORE_avoid_L2_sep_space - version cvr 2012 lt - level2 and - AGMCORE_producing_seps not and - def - /AGMCORE_is_cmyk_sep - AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or - def - /AGM_avoid_0_cmyk where{ - pop AGM_avoid_0_cmyk - }{ - AGM_preserve_spots - userdict/Adobe_AGM_OnHost_Seps known - userdict/Adobe_AGM_InRip_Seps known or - not and - }ifelse - { - /setcmykcolor[ - { - 4 copy add add add 0 eq currentoverprint and{ - pop 0.0005 - }if - }/exec cvx - /AGMCORE_&setcmykcolor load dup type/operatortype ne{ - /exec cvx - }if - ]cvx def - }if - /AGMCORE_IsSeparationAProcessColor - { - dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or - }def - AGMCORE_host_sep{ - /setcolortransfer - { - AGMCORE_cyan_plate{ - pop pop pop - }{ - AGMCORE_magenta_plate{ - 4 3 roll pop pop pop - }{ - AGMCORE_yellow_plate{ - 4 2 roll pop pop pop - }{ - 4 1 roll pop pop pop - }ifelse - }ifelse - }ifelse - settransfer - } - def - /AGMCORE_get_ink_data - AGMCORE_cyan_plate{ - {pop pop pop} - }{ - AGMCORE_magenta_plate{ - {4 3 roll pop pop pop} - }{ - AGMCORE_yellow_plate{ - {4 2 roll pop pop pop} - }{ - {4 1 roll pop pop pop} - }ifelse - }ifelse - }ifelse - def - /AGMCORE_RemoveProcessColorNames - { - 1 dict begin - /filtername - { - dup/Cyan eq 1 index(Cyan)eq or - {pop(_cyan_)}if - dup/Magenta eq 1 index(Magenta)eq or - {pop(_magenta_)}if - dup/Yellow eq 1 index(Yellow)eq or - {pop(_yellow_)}if - dup/Black eq 1 index(Black)eq or - {pop(_black_)}if - }def - dup type/arraytype eq - {[exch{filtername}forall]} - {filtername}ifelse - end - }def - level3{ - /AGMCORE_IsCurrentColor - { - dup AGMCORE_IsSeparationAProcessColor - { - AGMCORE_plate_ndx 0 eq - {dup(Cyan)eq exch/Cyan eq or}if - AGMCORE_plate_ndx 1 eq - {dup(Magenta)eq exch/Magenta eq or}if - AGMCORE_plate_ndx 2 eq - {dup(Yellow)eq exch/Yellow eq or}if - AGMCORE_plate_ndx 3 eq - {dup(Black)eq exch/Black eq or}if - AGMCORE_plate_ndx 4 eq - {pop false}if - }{ - gsave - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - grestore - }ifelse - }def - /AGMCORE_filter_functiondatasource - { - 5 dict begin - /data_in xdf - data_in type/stringtype eq - { - /ncomp xdf - /comp xdf - /string_out data_in length ncomp idiv string def - 0 ncomp data_in length 1 sub - { - string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put - }for - string_out - }{ - string/string_in xdf - /string_out 1 string def - /component xdf - [ - data_in string_in/readstring cvx - [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx - [/pop cvx()]cvx/ifelse cvx - ]cvx/ReusableStreamDecode filter - }ifelse - end - }def - /AGMCORE_separateShadingFunction - { - 2 dict begin - /paint? xdf - /channel xdf - dup type/dicttype eq - { - begin - FunctionType 0 eq - { - /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def - currentdict/Decode known - {/Decode Decode channel 2 mul 2 getinterval def}if - paint? not - {/Decode[1 1]def}if - }if - FunctionType 2 eq - { - paint? - { - /C0[C0 channel get 1 exch sub]def - /C1[C1 channel get 1 exch sub]def - }{ - /C0[1]def - /C1[1]def - }ifelse - }if - FunctionType 3 eq - { - /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def - }if - currentdict/Range known - {/Range[0 1]def}if - currentdict - end}{ - channel get 0 paint? AGMCORE_separateShadingFunction - }ifelse - end - }def - /AGMCORE_separateShading - { - 3 -1 roll begin - currentdict/Function known - { - currentdict/Background known - {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if - Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf - /ColorSpace[/DeviceGray]def - }{ - ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }{ - ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put - }ifelse - ColorSpace 0 get/Separation eq - { - { - [1/exch cvx/sub cvx]cvx - }{ - [/pop cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll put - pop - }{ - { - [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx - }{ - pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll bind put - }ifelse - ColorSpace 2/DeviceGray put - }ifelse - end - }def - /AGMCORE_separateShadingDict - { - dup/ColorSpace get - dup type/arraytype ne - {[exch]}if - dup 0 get/DeviceCMYK eq - { - exch begin - currentdict - AGMCORE_cyan_plate - {0 true}if - AGMCORE_magenta_plate - {1 true}if - AGMCORE_yellow_plate - {2 true}if - AGMCORE_black_plate - {3 true}if - AGMCORE_plate_ndx 4 eq - {0 false}if - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - currentdict - end exch - }if - dup 0 get/Separation eq - { - exch begin - ColorSpace 1 get dup/None ne exch/All ne and - { - ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /Separation - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - }if - }ifelse - }{ - currentdict ColorSpace 1 get AGMCORE_IsCurrentColor - 0 exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - }if - currentdict - end exch - }if - dup 0 get/DeviceN eq - { - exch begin - ColorSpace 1 get convert_to_process - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /DeviceN - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - /ColorSpace[/DeviceGray]def - }if - }ifelse - }{ - currentdict - false -1 ColorSpace 1 get - { - AGMCORE_IsCurrentColor - { - 1 add - exch pop true exch exit - }if - 1 add - }forall - exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - currentdict - end exch - }if - dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not - { - exch begin - ColorSpace dup type/arraytype eq - {0 get}if - /DeviceGray ne - { - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - ColorSpace 0 get/CIEBasedA eq - { - /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def - }if - ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or - { - /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def - }if - ColorSpace 0 get/CIEBasedDEFG eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }if - currentdict 0 false AGMCORE_separateShading - }if - }if - currentdict - end exch - }if - pop - dup/AGMCORE_ignoreshade known - { - begin - /ColorSpace[/Separation(None)/DeviceGray{}]def - currentdict end - }if - }def - /shfill - { - AGMCORE_separateShadingDict - dup/AGMCORE_ignoreshade known - {pop} - {AGMCORE_&sysshfill}ifelse - }def - /makepattern - { - exch - dup/PatternType get 2 eq - { - clonedict - begin - /Shading Shading AGMCORE_separateShadingDict def - Shading/AGMCORE_ignoreshade known - currentdict end exch - {pop<>}if - exch AGMCORE_&sysmakepattern - }{ - exch AGMCORE_&usrmakepattern - }ifelse - }def - }if - }if - AGMCORE_in_rip_sep{ - /setcustomcolor - { - exch aload pop - dup 7 1 roll inRip_spot_has_ink not { - 4{4 index mul 4 1 roll} - repeat - /DeviceCMYK setcolorspace - 6 -2 roll pop pop - }{ - //Adobe_AGM_Core begin - /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf - end - [/Separation 4 -1 roll/DeviceCMYK - {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} - ] - setcolorspace - }ifelse - setcolor - }ndf - /setseparationgray - { - [/Separation(All)/DeviceGray{}]setcolorspace_opt - 1 exch sub setcolor - }ndf - }{ - /setseparationgray - { - AGMCORE_&setgray - }ndf - }ifelse - /findcmykcustomcolor - { - 5 makereadonlyarray - }ndf - /setcustomcolor - { - exch aload pop pop - 4{4 index mul 4 1 roll}repeat - setcmykcolor pop - }ndf - /has_color - /colorimage where{ - AGMCORE_producing_seps{ - pop true - }{ - systemdict eq - }ifelse - }{ - false - }ifelse - def - /map_index - { - 1 index mul exch getinterval{255 div}forall - }bdf - /map_indexed_devn - { - Lookup Names length 3 -1 roll cvi map_index - }bdf - /n_color_components - { - base_colorspace_type - dup/DeviceGray eq{ - pop 1 - }{ - /DeviceCMYK eq{ - 4 - }{ - 3 - }ifelse - }ifelse - }bdf - level2{ - /mo/moveto ldf - /li/lineto ldf - /cv/curveto ldf - /knockout_unitsq - { - 1 setgray - 0 0 1 1 rectfill - }def - level2/setcolorspace AGMCORE_key_known not and{ - /AGMCORE_&&&setcolorspace/setcolorspace ldf - /AGMCORE_ReplaceMappedColor - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - /AGMCORE_SpotAliasAry2 where{ - begin - dup 0 get dup/Separation eq - { - pop - dup length array copy - dup dup 1 get - current_spot_alias - { - dup map_alias - { - false set_spot_alias - dup 1 exch setsepcolorspace - true set_spot_alias - begin - /sep_colorspace_dict currentdict AGMCORE_gput - pop pop pop - [ - /Separation Name - CSA map_csa - MappedCSA - /sep_colorspace_proc load - ] - dup Name - end - }if - }if - map_reserved_ink_name 1 xpt - }{ - /DeviceN eq - { - dup length array copy - dup dup 1 get[ - exch{ - current_spot_alias{ - dup map_alias{ - /Name get exch pop - }if - }if - map_reserved_ink_name - }forall - ]1 xpt - }if - }ifelse - end - }if - }if - }def - /setcolorspace - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - dup 0 get/Indexed eq - { - AGMCORE_distilling - { - /PhotoshopDuotoneList where - { - pop false - }{ - true - }ifelse - }{ - true - }ifelse - { - aload pop 3 -1 roll - AGMCORE_ReplaceMappedColor - 3 1 roll 4 array astore - }if - }{ - AGMCORE_ReplaceMappedColor - }ifelse - }if - DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if - }def - }if - }{ - /adj - { - currentstrokeadjust{ - transform - 0.25 sub round 0.25 add exch - 0.25 sub round 0.25 add exch - itransform - }if - }def - /mo{ - adj moveto - }def - /li{ - adj lineto - }def - /cv{ - 6 2 roll adj - 6 2 roll adj - 6 2 roll adj curveto - }def - /knockout_unitsq - { - 1 setgray - 8 8 1[8 0 0 8 0 0]{}image - }def - /currentstrokeadjust{ - /currentstrokeadjust AGMCORE_gget - }def - /setstrokeadjust{ - /currentstrokeadjust exch AGMCORE_gput - }def - /setcolorspace - { - /currentcolorspace exch AGMCORE_gput - }def - /currentcolorspace - { - /currentcolorspace AGMCORE_gget - }def - /setcolor_devicecolor - { - base_colorspace_type - dup/DeviceGray eq{ - pop setgray - }{ - /DeviceCMYK eq{ - setcmykcolor - }{ - setrgbcolor - }ifelse - }ifelse - }def - /setcolor - { - currentcolorspace 0 get - dup/DeviceGray ne{ - dup/DeviceCMYK ne{ - dup/DeviceRGB ne{ - dup/Separation eq{ - pop - currentcolorspace 3 gx - currentcolorspace 2 get - }{ - dup/Indexed eq{ - pop - currentcolorspace 3 get dup type/stringtype eq{ - currentcolorspace 1 get n_color_components - 3 -1 roll map_index - }{ - exec - }ifelse - currentcolorspace 1 get - }{ - /AGMCORE_cur_err/AGMCORE_invalid_color_space def - AGMCORE_invalid_color_space - }ifelse - }ifelse - }if - }if - }if - setcolor_devicecolor - }def - }ifelse - /sop/setoverprint ldf - /lw/setlinewidth ldf - /lc/setlinecap ldf - /lj/setlinejoin ldf - /ml/setmiterlimit ldf - /dsh/setdash ldf - /sadj/setstrokeadjust ldf - /gry/setgray ldf - /rgb/setrgbcolor ldf - /cmyk[ - /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx - /setcmykcolor load dup type/operatortype ne{/exec cvx}if - ]cvx bdf - level3 AGMCORE_host_sep not and{ - /nzopmsc{ - 6 dict begin - /kk exch def - /yy exch def - /mm exch def - /cc exch def - /sum 0 def - cc 0 ne{/sum sum 2#1000 or def cc}if - mm 0 ne{/sum sum 2#0100 or def mm}if - yy 0 ne{/sum sum 2#0010 or def yy}if - kk 0 ne{/sum sum 2#0001 or def kk}if - AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace - sum 0 eq{0}if - end - setcolor - }bdf - }{ - /nzopmsc/cmyk ldf - }ifelse - /sep/setsepcolor ldf - /devn/setdevicencolor ldf - /idx/setindexedcolor ldf - /colr/setcolor ldf - /csacrd/set_csa_crd ldf - /sepcs/setsepcolorspace ldf - /devncs/setdevicencolorspace ldf - /idxcs/setindexedcolorspace ldf - /cp/closepath ldf - /clp/clp_npth ldf - /eclp/eoclp_npth ldf - /f/fill ldf - /ef/eofill ldf - /@/stroke ldf - /nclp/npth_clp ldf - /gset/graphic_setup ldf - /gcln/graphic_cleanup ldf - /ct/concat ldf - /cf/currentfile ldf - /fl/filter ldf - /rs/readstring ldf - /AGMCORE_def_ht currenthalftone def - /clonedict Adobe_AGM_Utils begin/clonedict load end def - /clonearray Adobe_AGM_Utils begin/clonearray load end def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall - /getrampcolor - { - /indx exch def - 0 1 NumComp 1 sub - { - dup - Samples exch get - dup type/stringtype eq{indx get}if - exch - Scaling exch get aload pop - 3 1 roll - mul add - }for - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /sssetbackground{ - aload pop - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /RadialShade - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /r2 xdf - /c2y xdf - /c2x xdf - /r1 xdf - /c1y xdf - /c1x xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - c1x c2x eq - { - c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope c2y c1y sub c2x c1x sub div def - /theta slope 1 atan def - c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if - c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if - }ifelse - gsave - clippath - c1x c1y translate - theta rotate - -90 rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax xdf - /xMax xdf - /yMin xdf - /xMin xdf - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - /max{2 copy gt{pop}{exch pop}ifelse}bdf - /min{2 copy lt{pop}{exch pop}ifelse}bdf - rampdict begin - 40 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - c1x c1y translate - theta rotate - -90 rotate - /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def - /c1y 0 def - /c1x 0 def - /c2x 0 def - ext0 - { - 0 getrampcolor - c2y r2 add r1 sub 0.0001 lt - { - c1x c1y r1 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2y r1 add r2 le - { - c1x c1y r1 0 360 arc - fill - } - { - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r1 neg def - /p1y c1y def - /p2x r1 def - /p2y c1y def - p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y p1x SS1 div neg def - /SS2 90 theta sub dup sin exch cos div def - /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y p2x SS2 div neg def - r1 r2 gt - { - /L1maxX p1x yMin p1y sub SS1 div add def - /L2maxX p2x yMin p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - c1x c2x sub dup mul - c1y c2y sub dup mul - add 0.5 exp - 0 dtransform - dup mul exch dup mul add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - /hires xdf - hires mul - /numpix xdf - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - /xInc c2x c1x sub numsteps div def - /yInc c2y c1y sub numsteps div def - /rInc r2 r1 sub numsteps div def - /cx c1x def - /cy c1y def - /radius r1 def - np - xInc 0 eq yInc 0 eq rInc 0 eq and and - { - 0 getrampcolor - cx cy radius 0 360 arc - stroke - NumSamples 1 sub getrampcolor - cx cy radius 72 hires div add 0 360 arc - 0 setlinewidth - stroke - }{ - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - cx cy radius 0 360 arc - /cx cx xInc add def - /cy cy yInc add def - /radius radius rInc add def - cx cy radius 360 0 arcn - eofill - rampIndxInc add - }repeat - pop - }ifelse - ext1 - { - c2y r2 add r1 lt - { - c2x c2y r2 0 360 arc - fill - }{ - c2y r1 add r2 sub 0.0001 le - { - c2x c2y r2 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r2 neg def - /p1y c2y def - /p2x r2 def - /p2y c2y def - p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y c2y p1x SS1 div sub def - /SS2 90 theta sub dup sin exch cos div def - /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y c2y p2x SS2 div sub def - r1 r2 lt - { - /L1maxX p1x yMax p1y sub SS1 div add def - /L2maxX p2x yMax p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - grestore - grestore - end - end - end - }ifelse - }bdf - /GenStrips - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /y2 xdf - /x2 xdf - /y1 xdf - /x1 xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - x1 x2 eq - { - y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope y2 y1 sub x2 x1 sub div def - /theta slope 1 atan def - x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if - x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if - } - ifelse - gsave - clippath - x1 y1 translate - theta rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax exch def - /xMax exch def - /yMin exch def - /xMin exch def - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - rampdict begin - 20 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - x1 y1 translate - theta rotate - /xStart 0 def - /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def - /ySpan yMax yMin sub def - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - xStart 0 transform - xEnd 0 transform - 3 -1 roll - sub dup mul - 3 1 roll - sub dup mul - add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - mul - /numpix xdf - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - ext0 - { - 0 getrampcolor - xMin xStart lt - { - xMin yMin xMin neg ySpan rectfill - }if - }if - /xInc xEnd xStart sub numsteps div def - /x xStart def - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - x yMin xInc ySpan rectfill - /x x xInc add def - rampIndxInc add - }repeat - pop - ext1{ - xMax xEnd gt - { - xEnd yMin xMax xEnd sub ySpan rectfill - }if - }if - grestore - grestore - end - end - end - }ifelse - }bdf -}def -/pt -{ - end -}def -/dt{ -}def -/pgsv{ - //Adobe_AGM_Core/AGMCORE_save save put -}def -/pgrs{ - //Adobe_AGM_Core/AGMCORE_save get restore -}def -systemdict/findcolorrendering known{ - /findcolorrendering systemdict/findcolorrendering get def -}if -systemdict/setcolorrendering known{ - /setcolorrendering systemdict/setcolorrendering get def -}if -/test_cmyk_color_plate -{ - gsave - setcmykcolor currentgray 1 ne - grestore -}def -/inRip_spot_has_ink -{ - dup//Adobe_AGM_Core/AGMCORE_name xddf - convert_spot_to_process not -}def -/map255_to_range -{ - 1 index sub - 3 -1 roll 255 div mul add -}def -/set_csa_crd -{ - /sep_colorspace_dict null AGMCORE_gput - begin - CSA get_csa_by_name setcolorspace_opt - set_crd - end -} -def -/map_csa -{ - currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse - {pop}{get_csa_by_name/MappedCSA xdf}ifelse -}def -/setsepcolor -{ - /sep_colorspace_dict AGMCORE_gget begin - dup/sep_tint exch AGMCORE_gput - TintProc - end -}def -/setdevicencolor -{ - /devicen_colorspace_dict AGMCORE_gget begin - Names length copy - Names length 1 sub -1 0 - { - /devicen_tints AGMCORE_gget 3 1 roll xpt - }for - TintProc - end -}def -/sep_colorspace_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - currentdict/Components known{ - Components aload pop - TintMethod/Lab eq{ - 2{AGMCORE_tmp mul NComponents 1 roll}repeat - LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll - }{ - TintMethod/Subtractive eq{ - NComponents{ - AGMCORE_tmp mul NComponents 1 roll - }repeat - }{ - NComponents{ - 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll - }repeat - }ifelse - }ifelse - }{ - ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get - aload pop - }ifelse - end -}def -/sep_colorspace_gray_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get - end -}def -/sep_proc_name -{ - dup 0 get - dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ - pop[/DeviceGray] - /sep_colorspace_gray_proc - }{ - /sep_colorspace_proc - }ifelse -}def -/setsepcolorspace -{ - current_spot_alias{ - dup begin - Name map_alias{ - exch pop - }if - end - }if - dup/sep_colorspace_dict exch AGMCORE_gput - begin - CSA map_csa - /AGMCORE_sep_special Name dup()eq exch(All)eq or store - AGMCORE_avoid_L2_sep_space{ - [/Indexed MappedCSA sep_proc_name 255 exch - {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx - ]setcolorspace_opt - /TintProc{ - 255 mul round cvi setcolor - }bdf - }{ - MappedCSA 0 get/DeviceCMYK eq - currentdict/Components known and - AGMCORE_sep_special not and{ - /TintProc[ - Components aload pop Name findcmykcustomcolor - /exch cvx/setcustomcolor cvx - ]cvx bdf - }{ - AGMCORE_host_sep Name(All)eq and{ - /TintProc{ - 1 exch sub setseparationgray - }bdf - }{ - AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and - AGMCORE_host_sep or - Name()eq and{ - /TintProc[ - MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ - cvx/setcmykcolor cvx - }{ - cvx/setgray cvx - }ifelse - ]cvx bdf - }{ - AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ - /TintProc[ - /dup cvx - MappedCSA sep_proc_name cvx exch - 0 get/DeviceGray eq{ - 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx - }if - /Name cvx/findcmykcustomcolor cvx/exch cvx - AGMCORE_host_sep{ - AGMCORE_is_cmyk_sep - /Name cvx - /AGMCORE_IsSeparationAProcessColor load/exec cvx - /not cvx/and cvx - }{ - Name inRip_spot_has_ink not - }ifelse - [ - /pop cvx 1 - ]cvx/if cvx - /setcustomcolor cvx - ]cvx bdf - }{ - /TintProc{setcolor}bdf - [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt - }ifelse - }ifelse - }ifelse - }ifelse - }ifelse - set_crd - setsepcolor - end -}def -/additive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 - 0 1 numarrays 1 sub - { - 1 exch add/index cvx - c1/get cvx/mul cvx - }for - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/subtractive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 1 - 0 1 numarrays 1 sub - { - 1 3 3 -1 roll add/index cvx - c1/get cvx/sub cvx/mul cvx - }for - /sub cvx - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/exec_tint_transform -{ - /TintProc[ - /TintTransform cvx/setcolor cvx - ]cvx bdf - MappedCSA setcolorspace_opt -}bdf -/devn_makecustomcolor -{ - 2 dict begin - /names_index xdf - /Names xdf - 1 1 1 1 Names names_index get findcmykcustomcolor - /devicen_tints AGMCORE_gget names_index get setcustomcolor - Names length{pop}repeat - end -}bdf -/setdevicencolorspace -{ - dup/AliasedColorants known{false}{true}ifelse - current_spot_alias and{ - 7 dict begin - /names_index 0 def - dup/names_len exch/Names get length def - /new_names names_len array def - /new_LookupTables names_len array def - /alias_cnt 0 def - dup/Names get - { - dup map_alias{ - exch pop - dup/ColorLookup known{ - dup begin - new_LookupTables names_index ColorLookup put - end - }{ - dup/Components known{ - dup begin - new_LookupTables names_index Components put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - new_names names_index 3 -1 roll/Name get put - /alias_cnt alias_cnt 1 add def - }{ - /name xdf - new_names names_index name put - dup/LookupTables known{ - dup begin - new_LookupTables names_index LookupTables names_index get put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - /names_index names_index 1 add def - }forall - alias_cnt 0 gt{ - /AliasedColorants true def - /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def - 0 1 names_len 1 sub{ - /names_index xdf - new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ - /AliasedColorants false def - exit - }{ - new_LookupTables names_index get 0 get null eq{ - dup/Names get names_index get/name xdf - name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq - or or or not{ - /AliasedColorants false def - exit - }if - }if - }ifelse - }for - lut_entry_len 1 eq{ - /AliasedColorants false def - }if - AliasedColorants{ - dup begin - /Names new_names def - /LookupTables new_LookupTables def - /AliasedColorants true def - /NComponents lut_entry_len def - /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def - /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def - currentdict/TTTablesIdx known not{ - /TTTablesIdx -1 def - }if - end - }if - }if - end - }if - dup/devicen_colorspace_dict exch AGMCORE_gput - begin - currentdict/AliasedColorants known{ - AliasedColorants - }{ - false - }ifelse - dup not{ - CSA map_csa - }if - /TintTransform load type/nulltype eq or{ - /TintTransform[ - 0 1 Names length 1 sub - { - /TTTablesIdx TTTablesIdx 1 add def - dup LookupTables exch get dup 0 get null eq - { - 1 index - Names exch get - dup(Cyan)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0 0 0 - } - { - dup(Magenta)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0/exch cvx 0 0 - }{ - (Yellow)eq - { - exch - LookupTables length exch sub - /index cvx - 0 0 3 -1/roll cvx 0 - }{ - exch - LookupTables length exch sub - /index cvx - 0 0 0 4 -1/roll cvx - }ifelse - }ifelse - }ifelse - 5 -1/roll cvx/astore cvx - }{ - dup length 1 sub - LookupTables length 4 -1 roll sub 1 add - /index cvx/mul cvx/round cvx/cvi cvx/get cvx - }ifelse - Names length TTTablesIdx add 1 add 1/roll cvx - }for - Names length[/pop cvx]cvx/repeat cvx - NComponents Names length - TintMethod/Subtractive eq - { - subtractive_blend - }{ - additive_blend - }ifelse - ]cvx bdf - }if - AGMCORE_host_sep{ - Names convert_to_process{ - exec_tint_transform - } - { - currentdict/AliasedColorants known{ - AliasedColorants not - }{ - false - }ifelse - 5 dict begin - /AvoidAliasedColorants xdf - /painted? false def - /names_index 0 def - /names_len Names length def - AvoidAliasedColorants{ - /currentspotalias current_spot_alias def - false set_spot_alias - }if - Names{ - AGMCORE_is_cmyk_sep{ - dup(Cyan)eq AGMCORE_cyan_plate and exch - dup(Magenta)eq AGMCORE_magenta_plate and exch - dup(Yellow)eq AGMCORE_yellow_plate and exch - (Black)eq AGMCORE_black_plate and or or or{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - }if - painted?{exit}if - }{ - 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - exit - }if - }ifelse - /names_index names_index 1 add def - }forall - AvoidAliasedColorants{ - currentspotalias set_spot_alias - }if - painted?{ - /devicen_colorspace_dict AGMCORE_gget/names_index names_index put - }{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx - 0 0 0 0/setcmykcolor cvx - ]cvx ddf - }ifelse - end - }ifelse - } - { - AGMCORE_in_rip_sep{ - Names convert_to_process not - }{ - level3 - }ifelse - { - [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt - /TintProc level3 not AGMCORE_in_rip_sep and{ - [ - Names/length cvx[/pop cvx]cvx/repeat cvx - ]cvx bdf - }{ - {setcolor}bdf - }ifelse - }{ - exec_tint_transform - }ifelse - }ifelse - set_crd - /AliasedColorants false def - end -}def -/setindexedcolorspace -{ - dup/indexed_colorspace_dict exch AGMCORE_gput - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - currentdict devncs - }{ - 1 currentdict sepcs - }ifelse - AGMCORE_host_sep{ - 4 dict begin - /compCnt/Names where{pop Names length}{1}ifelse def - /NewLookup HiVal 1 add string def - 0 1 HiVal{ - /tableIndex xdf - Lookup dup type/stringtype eq{ - compCnt tableIndex map_index - }{ - exec - }ifelse - /Names where{ - pop setdevicencolor - }{ - setsepcolor - }ifelse - currentgray - tableIndex exch - 255 mul cvi - NewLookup 3 1 roll put - }for - [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt - end - }{ - level3 - { - currentdict/Names known{ - [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt - }{ - [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt - }ifelse - }{ - [/Indexed MappedCSA HiVal - [ - currentdict/Names known{ - Lookup dup type/stringtype eq - {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} - {/exec cvx}ifelse - /TintTransform load/exec cvx - }{ - Lookup dup type/stringtype eq - {/exch cvx/get cvx 255/div cvx} - {/exec cvx}ifelse - CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx - }ifelse - ]cvx - ]setcolorspace_opt - }ifelse - }ifelse - end - set_crd - } - { - CSA map_csa - AGMCORE_host_sep level2 not and{ - 0 0 0 0 setcmykcolor - }{ - [/Indexed MappedCSA - level2 not has_color not and{ - dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ - pop[/DeviceGray] - }if - HiVal GrayLookup - }{ - HiVal - currentdict/RangeArray known{ - { - /indexed_colorspace_dict AGMCORE_gget begin - Lookup exch - dup HiVal gt{ - pop HiVal - }if - NComponents mul NComponents getinterval{}forall - NComponents 1 sub -1 0{ - RangeArray exch 2 mul 2 getinterval aload pop map255_to_range - NComponents 1 roll - }for - end - }bind - }{ - Lookup - }ifelse - }ifelse - ]setcolorspace_opt - set_crd - }ifelse - }ifelse - end -}def -/setindexedcolor -{ - AGMCORE_host_sep{ - /indexed_colorspace_dict AGMCORE_gget - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - map_indexed_devn - devn - } - { - Lookup 1 3 -1 roll map_index - sep - }ifelse - end - }{ - Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll - map_index - MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse - }ifelse - end - }{ - level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ - /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin - map_indexed_devn - devn - end - } - { - setcolor - }ifelse - }ifelse -}def -/ignoreimagedata -{ - currentoverprint not{ - gsave - dup clonedict begin - 1 setgray - /Decode[0 1]def - /DataSourcedef - /MultipleDataSources false def - /BitsPerComponent 8 def - currentdict end - systemdict/image gx - grestore - }if - consumeimagedata -}def -/add_res -{ - dup/CSD eq{ - pop - //Adobe_AGM_Core begin - /AGMCORE_CSD_cache load 3 1 roll put - end - }{ - defineresource pop - }ifelse -}def -/del_res -{ - { - aload pop exch - dup/CSD eq{ - pop - {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall - }{ - exch - {1 index undefineresource}forall - pop - }ifelse - }forall -}def -/get_res -{ - dup/CSD eq{ - pop - dup type dup/nametype eq exch/stringtype eq or{ - AGMCORE_CSD_cache exch get - }if - }{ - findresource - }ifelse -}def -/get_csa_by_name -{ - dup type dup/nametype eq exch/stringtype eq or{ - /CSA get_res - }if -}def -/paintproc_buf_init -{ - /count get 0 0 put -}def -/paintproc_buf_next -{ - dup/count get dup 0 get - dup 3 1 roll - 1 add 0 xpt - get -}def -/cachepaintproc_compress -{ - 5 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - /string_size 16000 def - /readbuffer string_size string def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - /LZWFilter - { - exch - dup length 0 eq{ - pop - }{ - ppdict dup length 1 sub 3 -1 roll put - }ifelse - {string_size}{0}ifelse string - }/LZWEncode filter def - { - ReadFilter readbuffer readstring - exch LZWFilter exch writestring - not{exit}if - }loop - LZWFilter closefile - ppdict - end -}def -/cachepaintproc -{ - 2 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - { - ReadFilter 16000 string readstring exch - ppdict dup length 1 sub 3 -1 roll put - not{exit}if - }loop - ppdict dup dup length 1 sub()put - end -}def -/make_pattern -{ - exch clonedict exch - dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform - exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub - exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub - matrix translate exch matrix concatmatrix - 1 index begin - BBox 0 get XStep div cvi XStep mul/xshift exch neg def - BBox 1 get YStep div cvi YStep mul/yshift exch neg def - BBox 0 get xshift add - BBox 1 get yshift add - BBox 2 get xshift add - BBox 3 get yshift add - 4 array astore - /BBox exch def - [xshift yshift/translate load null/exec load]dup - 3/PaintProc load put cvx/PaintProc exch def - end - gsave 0 setgray - makepattern - grestore -}def -/set_pattern -{ - dup/PatternType get 1 eq{ - dup/PaintType get 1 eq{ - currentoverprint sop[/DeviceGray]setcolorspace 0 setgray - }if - }if - setpattern -}def -/setcolorspace_opt -{ - dup currentcolorspace eq{pop}{setcolorspace}ifelse -}def -/updatecolorrendering -{ - currentcolorrendering/RenderingIntent known{ - currentcolorrendering/RenderingIntent get - } - { - Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/Saturation eq - { - /saturation_crd AGMCORE_gget dup null eq - } - { - /perceptual_crd AGMCORE_gget dup null eq - }ifelse - }ifelse - }ifelse - { - pop null - } - { - /RenderingIntent known{null}{Intent}ifelse - }ifelse - }ifelse - Intent ne{ - Intent/ColorRendering{findresource}stopped - { - pop pop systemdict/findcolorrendering known - { - Intent findcolorrendering - { - /ColorRendering findresource true exch - } - { - /ColorRendering findresource - product(Xerox Phaser 5400)ne - exch - }ifelse - dup Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd exch AGMCORE_gput - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd exch AGMCORE_gput - } - { - Intent/Saturation eq - { - /saturation_crd exch AGMCORE_gput - } - { - Intent/Perceptual eq - { - /perceptual_crd exch AGMCORE_gput - } - { - pop - }ifelse - }ifelse - }ifelse - }ifelse - 1 index{exch}{pop}ifelse - } - {false}ifelse - } - {true}ifelse - { - dup begin - currentdict/TransformPQR known{ - currentdict/TransformPQR get aload pop - 3{{}eq 3 1 roll}repeat or or - } - {true}ifelse - currentdict/MatrixPQR known{ - currentdict/MatrixPQR get aload pop - 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq - and and and and and and and and - } - {true}ifelse - end - or - { - clonedict begin - /TransformPQR[ - {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div - 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind - {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div - 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind - {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div - 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind - ]def - /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def - /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def - currentdict end - }if - setcolorrendering_opt - }if - }if -}def -/set_crd -{ - AGMCORE_host_sep not level2 and{ - currentdict/ColorRendering known{ - ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if - }{ - currentdict/Intent known{ - updatecolorrendering - }if - }ifelse - currentcolorspace dup type/arraytype eq - {0 get}if - /DeviceRGB eq - { - currentdict/UCR known - {/UCR}{/AGMCORE_currentucr}ifelse - load setundercolorremoval - currentdict/BG known - {/BG}{/AGMCORE_currentbg}ifelse - load setblackgeneration - }if - }if -}def -/set_ucrbg -{ - dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration - dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval -}def -/setcolorrendering_opt -{ - dup currentcolorrendering eq{ - pop - }{ - product(HP Color LaserJet 2605)anchorsearch{ - pop pop pop - }{ - pop - clonedict - begin - /Intent Intent def - currentdict - end - setcolorrendering - }ifelse - }ifelse -}def -/cpaint_gcomp -{ - convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not - { - (%end_cpaint_gcomp)flushinput - }if -}def -/cpaint_gsep -{ - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get - { - (%end_cpaint_gsep)flushinput - }if -}def -/cpaint_gend -{np}def -/T1_path -{ - currentfile token pop currentfile token pop mo - { - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 exch rlineto - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 rlineto - }loop -}def -/T1_gsave - level3 - {/clipsave} - {/gsave}ifelse - load def -/T1_grestore - level3 - {/cliprestore} - {/grestore}ifelse - load def -/set_spot_alias_ary -{ - dup inherit_aliases - //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf -}def -/set_spot_normalization_ary -{ - dup inherit_aliases - dup length - /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if - array - //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf - /AGMCORE_SpotAliasAry where{ - pop - AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval - AGMCORE_SpotAliasAry length - }{0}ifelse - AGMCORE_SpotAliasAry2 3 1 roll exch putinterval - true set_spot_alias -}def -/inherit_aliases -{ - {dup/Name get map_alias{/CSD put}{pop}ifelse}forall -}def -/set_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias 3 -1 roll put - }{ - pop - }ifelse -}def -/current_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias get - }{ - false - }ifelse -}def -/map_alias -{ - /AGMCORE_SpotAliasAry2 where{ - begin - /AGMCORE_name xdf - false - AGMCORE_SpotAliasAry2{ - dup/Name get AGMCORE_name eq{ - /CSD get/CSD get_res - exch pop true - exit - }{ - pop - }ifelse - }forall - end - }{ - pop false - }ifelse -}bdf -/spot_alias -{ - true set_spot_alias - /AGMCORE_&setcustomcolor AGMCORE_key_known not{ - //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put - }if - /customcolor_tint 1 AGMCORE_gput - //Adobe_AGM_Core begin - /setcustomcolor - { - //Adobe_AGM_Core begin - dup/customcolor_tint exch AGMCORE_gput - 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not - current_spot_alias and{1 index 4 get map_alias}{false}ifelse - { - false set_spot_alias - /sep_colorspace_dict AGMCORE_gget null ne - {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse - 3 1 roll 2 index{ - exch pop/sep_tint AGMCORE_gget exch - }if - mark 3 1 roll - setsepcolorspace - counttomark 0 ne{ - setsepcolor - }if - pop - not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if - pop - true set_spot_alias - }{ - AGMCORE_&setcustomcolor - }ifelse - end - }bdf - end -}def -/begin_feature -{ - Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put - count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put - {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if -}def -/end_feature -{ - 2 dict begin - /spd/setpagedevice load def - /setpagedevice{get_gstate spd set_gstate}def - stopped{$error/newerror false put}if - end - count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse - countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse - {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if -}def -/set_negative -{ - //Adobe_AGM_Core begin - /AGMCORE_inverting exch def - level2{ - currentpagedevice/NegativePrint known AGMCORE_distilling not and{ - currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ - true begin_feature true{ - <>setpagedevice - }end_feature - }if - /AGMCORE_inverting false def - }if - }if - AGMCORE_inverting{ - [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer - AGMCORE_distilling{ - erasepage - }{ - gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse - /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore - }ifelse - }if - end -}def -/lw_save_restore_override{ - /md where{ - pop - md begin - initializepage - /initializepage{}def - /pmSVsetup{}def - /endp{}def - /pse{}def - /psb{}def - /orig_showpage where - {pop} - {/orig_showpage/showpage load def} - ifelse - /showpage{orig_showpage gR}def - end - }if -}def -/pscript_showpage_override{ - /NTPSOct95 where - { - begin - showpage - save - /showpage/restore load def - /restore{exch pop}def - end - }if -}def -/driver_media_override -{ - /md where{ - pop - md/initializepage known{ - md/initializepage{}put - }if - md/rC known{ - md/rC{4{pop}repeat}put - }if - }if - /mysetup where{ - /mysetup[1 0 0 1 0 0]put - }if - Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put - level2 - {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if -}def -/capture_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put - }if - }if -}def -/restore_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup known{ - Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put - Adobe_AGM_Core/save_mysetup undef - }if - }if - }if -}def -/driver_check_media_override -{ - /PrepsDict where - {pop} - { - Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne - Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq - { - Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and - Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and - }if - { - Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix - }if - }ifelse -}def -AGMCORE_err_strings begin - /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def - /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def - /AGMCORE_invalid_color_space(This job contains an invalid color space. )def -end -/set_def_ht -{AGMCORE_def_ht sethalftone}def -/set_def_flat -{AGMCORE_Default_flatness setflat}def -end -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 -%%Version: 1.0 0 -%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Image 71 dict dup begin put -/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def -/nd{ - null def -}bind def -/AGMIMG_&image nd -/AGMIMG_&colorimage nd -/AGMIMG_&imagemask nd -/AGMIMG_mbuf()def -/AGMIMG_ybuf()def -/AGMIMG_kbuf()def -/AGMIMG_c 0 def -/AGMIMG_m 0 def -/AGMIMG_y 0 def -/AGMIMG_k 0 def -/AGMIMG_tmp nd -/AGMIMG_imagestring0 nd -/AGMIMG_imagestring1 nd -/AGMIMG_imagestring2 nd -/AGMIMG_imagestring3 nd -/AGMIMG_imagestring4 nd -/AGMIMG_imagestring5 nd -/AGMIMG_cnt nd -/AGMIMG_fsave nd -/AGMIMG_colorAry nd -/AGMIMG_override nd -/AGMIMG_name nd -/AGMIMG_maskSource nd -/AGMIMG_flushfilters nd -/invert_image_samples nd -/knockout_image_samples nd -/img nd -/sepimg nd -/devnimg nd -/idximg nd -/ds -{ - Adobe_AGM_Core begin - Adobe_AGM_Image begin - /AGMIMG_&image systemdict/image get def - /AGMIMG_&imagemask systemdict/imagemask get def - /colorimage where{ - pop - /AGMIMG_&colorimage/colorimage ldf - }if - end - end -}def -/ps -{ - Adobe_AGM_Image begin - /AGMIMG_ccimage_exists{/customcolorimage where - { - pop - /Adobe_AGM_OnHost_Seps where - { - pop false - }{ - /Adobe_AGM_InRip_Seps where - { - pop false - }{ - true - }ifelse - }ifelse - }{ - false - }ifelse - }bdf - level2{ - /invert_image_samples - { - Adobe_AGM_Image/AGMIMG_tmp Decode length ddf - /Decode[Decode 1 get Decode 0 get]def - }def - /knockout_image_samples - { - Operator/imagemask ne{ - /Decode[1 1]def - }if - }def - }{ - /invert_image_samples - { - {1 exch sub}currenttransfer addprocs settransfer - }def - /knockout_image_samples - { - {pop 1}currenttransfer addprocs settransfer - }def - }ifelse - /img/imageormask ldf - /sepimg/sep_imageormask ldf - /devnimg/devn_imageormask ldf - /idximg/indexed_imageormask ldf - /_ctype 7 def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall -}def -/pt -{ - end -}def -/dt -{ -}def -/AGMIMG_flushfilters -{ - dup type/arraytype ne - {1 array astore}if - dup 0 get currentfile ne - {dup 0 get flushfile}if - { - dup type/filetype eq - { - dup status 1 index currentfile ne and - {closefile} - {pop} - ifelse - }{pop}ifelse - }forall -}def -/AGMIMG_init_common -{ - currentdict/T known{/ImageType/T ldf currentdict/T undef}if - currentdict/W known{/Width/W ldf currentdict/W undef}if - currentdict/H known{/Height/H ldf currentdict/H undef}if - currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if - currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if - currentdict/D known{/Decode/D ldf currentdict/D undef}if - currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if - currentdict/O known{ - /Operator/O load 1 eq{ - /imagemask - }{ - /O load 2 eq{ - /image - }{ - /colorimage - }ifelse - }ifelse - def - currentdict/O undef - }if - currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if - currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if - currentdict/I known{/Interpolate/I ldf currentdict/I undef}if - currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if - /DataSource load xcheck not{ - DataSource type/arraytype eq{ - DataSource 0 get type/filetype eq{ - /_Filters DataSource def - currentdict/MultipleDataSources known not{ - /DataSource DataSource dup length 1 sub get def - }if - }if - }if - currentdict/MultipleDataSources known not{ - /MultipleDataSources DataSource type/arraytype eq{ - DataSource length 1 gt - } - {false}ifelse def - }if - }if - /NComponents Decode length 2 div def - currentdict/SkipImageProc known not{/SkipImageProc{false}def}if -}bdf -/imageormask_sys -{ - begin - AGMIMG_init_common - save mark - level2{ - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - AGMIMG_&imagemask - }{ - BitsPerComponent ImageMatrix/DataSource load - AGMIMG_&image - }ifelse - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - cleartomark restore - end -}def -/overprint_plate -{ - currentoverprint{ - 0 get dup type/nametype eq{ - dup/DeviceGray eq{ - pop AGMCORE_black_plate not - }{ - /DeviceCMYK eq{ - AGMCORE_is_cmyk_sep not - }if - }ifelse - }{ - false exch - { - AGMOHS_sepink eq or - }forall - not - }ifelse - }{ - pop false - }ifelse -}def -/process_mask -{ - level3{ - dup begin - /ImageType 1 def - end - 4 dict begin - /DataDict exch def - /ImageType 3 def - /InterleaveType 3 def - /MaskDict 9 dict begin - /ImageType 1 def - /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def - /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def - /ImageMatrix[Width 0 0 Height neg 0 Height]def - /NComponents 1 def - /BitsPerComponent 1 def - /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def - /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def - currentdict end def - currentdict end - }if -}def -/use_mask -{ - dup/Mask known {dup/Mask get}{false}ifelse -}def -/imageormask -{ - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - } - { - save mark - level2 AGMCORE_host_sep not and{ - currentdict - Operator/imagemask eq DeviceN_PS2 not and{ - imagemask - }{ - AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ - [/Separation/Black/DeviceGray{}]setcolorspace - /Decode[Decode 1 get Decode 0 get]def - }if - use_mask{ - process_mask image - }{ - DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and - { - Names convert_to_process not{ - 2 dict begin - /imageDict xdf - /names_index 0 def - gsave - imageDict write_image_file{ - Names{ - dup(None)ne{ - [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace - Operator imageDict read_image_file - names_index 0 eq{true setoverprint}if - /names_index names_index 1 add def - }{ - pop - }ifelse - }forall - close_image_file - }if - grestore - end - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - /Adobe_AGM_OnHost_Seps where{ - pop imagemask - }{ - currentgray 1 ne{ - currentdict imageormask_sys - }{ - currentoverprint not{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }ifelse - }{ - BitsPerComponent ImageMatrix - MultipleDataSources{ - 0 1 NComponents 1 sub{ - DataSource exch get - }for - }{ - /DataSource load - }ifelse - Operator/colorimage eq{ - AGMCORE_host_sep{ - MultipleDataSources level2 or NComponents 4 eq and{ - AGMCORE_is_cmyk_sep{ - MultipleDataSources{ - /DataSource DataSource 0 get xcheck - { - [ - DataSource 0 get/exec cvx - DataSource 1 get/exec cvx - DataSource 2 get/exec cvx - DataSource 3 get/exec cvx - /AGMCORE_get_ink_data cvx - ]cvx - }{ - DataSource aload pop AGMCORE_get_ink_data - }ifelse def - }{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - /DataSource load - filter_cmyk 0()/SubFileDecode filter def - }ifelse - /Decode[Decode 0 get Decode 1 get]def - /MultipleDataSources false def - /NComponents 1 def - /Operator/image def - invert_image_samples - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }{ - MultipleDataSources NComponents AGMIMG_&colorimage - }ifelse - }{ - true NComponents colorimage - }ifelse - }{ - Operator/image eq{ - AGMCORE_host_sep{ - /DoImage true def - currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse - { - AGMCORE_black_plate not Operator/imagemask ne and{ - /DoImage false def - currentdict ignoreimagedata - }if - }if - 1 AGMCORE_&setgray - DoImage - {currentdict imageormask_sys}if - }{ - use_mask{ - process_mask image - }{ - image - }ifelse - }ifelse - }{ - Operator/knockout eq{ - pop pop pop pop pop - currentcolorspace overprint_plate not{ - knockout_unitsq - }if - }if - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/sep_imageormask -{ - /sep_colorspace_dict AGMCORE_gget begin - CSA map_csa - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_avoid_L2_sep_space{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - }if - AGMIMG_ccimage_exists - MappedCSA 0 get/DeviceCMYK eq and - currentdict/Components known and - Name()ne and - Name(All)ne and - Operator/image eq and - AGMCORE_producing_seps not and - level2 not and - { - Width Height BitsPerComponent ImageMatrix - [ - /DataSource load/exec cvx - { - 0 1 2 index length 1 sub{ - 1 index exch - 2 copy get 255 xor put - }for - }/exec cvx - ]cvx bind - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Name findcmykcustomcolor - customcolorimage - }{ - AGMCORE_producing_seps not{ - level2{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ - [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - currentdict imageormask - }{ - currentdict - Operator/imagemask eq{ - imageormask - }{ - sep_imageormask_lev1 - }ifelse - }ifelse - }{ - AGMCORE_host_sep{ - Operator/knockout eq{ - currentdict/ImageMatrix get concat - knockout_unitsq - }{ - currentgray 1 ne{ - AGMCORE_is_cmyk_sep Name(All)ne and{ - level2{ - Name AGMCORE_IsSeparationAProcessColor - { - Operator/imagemask eq{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor - }if - }{ - invert_image_samples - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - [/Separation Name[/DeviceGray] - { - sep_colorspace_proc AGMCORE_get_ink_data - 1 exch sub - }bind - ]AGMCORE_&setcolorspace - /sep_tint AGMCORE_gget AGMCORE_&setcolor - }if - }ifelse - currentdict imageormask_sys - }{ - currentdict - Operator/imagemask eq{ - imageormask_sys - }{ - sep_image_lev1_sep - }ifelse - }ifelse - }{ - Operator/imagemask ne{ - invert_image_samples - }if - currentdict imageormask_sys - }ifelse - }{ - currentoverprint not Name(All)eq or Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - currentcolorspace 0 get/Separation ne{ - [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - }if - currentoverprint - MappedCSA 0 get/DeviceCMYK eq and - Name AGMCORE_IsSeparationAProcessColor not and - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse - Name(All)ne and{ - imageormask_l2_overprint - }{ - currentdict imageormask - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end -}def -/colorSpaceElemCnt -{ - mark currentcolor counttomark dup 2 add 1 roll cleartomark -}bdf -/devn_sep_datasource -{ - 1 dict begin - /dataSource xdf - [ - 0 1 dataSource length 1 sub{ - dup currentdict/dataSource get/exch cvx/get cvx/exec cvx - /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx - }for - ]cvx bind - end -}bdf -/devn_alt_datasource -{ - 11 dict begin - /convProc xdf - /origcolorSpaceElemCnt xdf - /origMultipleDataSources xdf - /origBitsPerComponent xdf - /origDecode xdf - /origDataSource xdf - /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def - /DataSource origMultipleDataSources - { - [ - BitsPerComponent 8 idiv origDecode length 2 idiv mul string - 0 1 origDecode length 2 idiv 1 sub - { - dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch - origDataSource exch get 0()/SubFileDecode filter - BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx - }for - ]bind cvx - }{origDataSource}ifelse 0()/SubFileDecode filter def - [ - origcolorSpaceElemCnt string - 0 2 origDecode length 2 sub - { - dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div - 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx - }for - /convProc load/exec cvx - origcolorSpaceElemCnt 1 sub -1 0 - { - /dup cvx 2/add cvx/index cvx - 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx - }for - ]bind cvx 0()/SubFileDecode filter - end -}bdf -/devn_imageormask -{ - /devicen_colorspace_dict AGMCORE_gget begin - CSA map_csa - 2 dict begin - dup - /srcDataStrs[3 -1 roll begin - AGMIMG_init_common - currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse - { - Width Decode length 2 div mul cvi - { - dup 65535 gt{1 add 2 div cvi}{exit}ifelse - }loop - string - }repeat - end]def - /dstDataStr srcDataStrs 0 get length string def - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_producing_seps not{ - level3 not{ - Operator/imagemask ne{ - /DataSource[[ - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def - /MultipleDataSources true def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - }if - }if - currentdict imageormask - }{ - AGMCORE_host_sep{ - Names convert_to_process{ - CSA get_csa_by_name 0 get/DeviceCMYK eq{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - filter_cmyk 0()/SubFileDecode filter def - /MultipleDataSources false def - /Decode[1 0]def - /DeviceGray setcolorspace - currentdict imageormask_sys - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate{ - /DataSource - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - /MultipleDataSources false def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - currentdict imageormask_sys - }{ - gsave - knockout_unitsq - grestore - currentdict consumeimagedata - }ifelse - }ifelse - } - { - /devicen_colorspace_dict AGMCORE_gget/names_index known{ - Operator/imagemask ne{ - MultipleDataSources{ - /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def - /MultipleDataSources false def - }{ - /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def - }ifelse - invert_image_samples - }if - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - currentdict imageormask - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end - end -}def -/imageormask_l2_overprint -{ - currentdict - currentcmykcolor add add add 0 eq{ - currentdict consumeimagedata - }{ - level3{ - currentcmykcolor - /AGMIMG_k xdf - /AGMIMG_y xdf - /AGMIMG_m xdf - /AGMIMG_c xdf - Operator/imagemask eq{ - [/DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ]/DeviceCMYK{}]setcolorspace - AGMIMG_c 0 ne{AGMIMG_c}if - AGMIMG_m 0 ne{AGMIMG_m}if - AGMIMG_y 0 ne{AGMIMG_y}if - AGMIMG_k 0 ne{AGMIMG_k}if - setcolor - }{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - [/Indexed - [ - /DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ] - /DeviceCMYK{ - AGMIMG_k 0 eq{0}if - AGMIMG_y 0 eq{0 exch}if - AGMIMG_m 0 eq{0 3 1 roll}if - AGMIMG_c 0 eq{0 4 1 roll}if - } - ] - 255 - { - 255 div - mark exch - dup dup dup - AGMIMG_k 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_y 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_m 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_c 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - counttomark 1 add -1 roll pop - } - ]setcolorspace - }ifelse - imageormask_sys - }{ - write_image_file{ - currentcmykcolor - 0 ne{ - [/Separation/Black/DeviceGray{}]setcolorspace - gsave - /Black - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Yellow/DeviceGray{}]setcolorspace - gsave - /Yellow - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Magenta/DeviceGray{}]setcolorspace - gsave - /Magenta - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Cyan/DeviceGray{}]setcolorspace - gsave - /Cyan - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - close_image_file - }{ - imageormask - }ifelse - }ifelse - }ifelse -}def -/indexed_imageormask -{ - begin - AGMIMG_init_common - save mark - currentdict - AGMCORE_host_sep{ - Operator/knockout eq{ - /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ - /CSA get get_csa_by_name - }{ - /Names get - }ifelse - overprint_plate not{ - knockout_unitsq - }if - }{ - Indexed_DeviceN{ - /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ - indexed_image_lev2_sep - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }{ - AGMCORE_is_cmyk_sep{ - Operator/imagemask eq{ - imageormask_sys - }{ - level2{ - indexed_image_lev2_sep - }{ - indexed_image_lev1_sep - }ifelse - }ifelse - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - level2{ - Indexed_DeviceN{ - /indexed_colorspace_dict AGMCORE_gget begin - }{ - /indexed_colorspace_dict AGMCORE_gget dup null ne - { - begin - currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse - get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and - AGMCORE_in_rip_sep and{ - [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] - setcolorspace - }if - end - } - {pop}ifelse - }ifelse - imageormask - Indexed_DeviceN{ - end - }if - }{ - Operator/imagemask eq{ - imageormask - }{ - indexed_imageormask_lev1 - }ifelse - }ifelse - }ifelse - cleartomark restore - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/indexed_image_lev2_sep -{ - /indexed_colorspace_dict AGMCORE_gget begin - begin - Indexed_DeviceN not{ - currentcolorspace - dup 1/DeviceGray put - dup 3 - currentcolorspace 2 get 1 add string - 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub - { - dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put - }for - put setcolorspace - }if - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - end end -}def - /OPIimage - { - dup type/dicttype ne{ - 10 dict begin - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /ImageType 1 def - /Decode[0 1 def] - currentdict - end - }if - dup begin - /NComponents 1 cdndf - /MultipleDataSources false cdndf - /SkipImageProc{false}cdndf - /Decode[ - 0 - currentcolorspace 0 get/Indexed eq{ - 2 BitsPerComponent exp 1 sub - }{ - 1 - }ifelse - ]cdndf - /Operator/image cdndf - end - /sep_colorspace_dict AGMCORE_gget null eq{ - imageormask - }{ - gsave - dup begin invert_image_samples end - sep_imageormask - grestore - }ifelse - }def -/cachemask_level2 -{ - 3 dict begin - /LZWEncode filter/WriteFilter xdf - /readBuffer 256 string def - /ReadFilter - currentfile - 0(%EndMask)/SubFileDecode filter - /ASCII85Decode filter - /RunLengthDecode filter - def - { - ReadFilter readBuffer readstring exch - WriteFilter exch writestring - not{exit}if - }loop - WriteFilter closefile - end -}def -/spot_alias -{ - /mapto_sep_imageormask - { - dup type/dicttype ne{ - 12 dict begin - /ImageType 1 def - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /MultipleDataSources false def - }{ - begin - }ifelse - /Decode[/customcolor_tint AGMCORE_gget 0]def - /Operator/image def - /SkipImageProc{false}def - currentdict - end - sep_imageormask - }bdf - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_colorAry xddf - /customcolor_tint AGMCORE_gget - << - /Name AGMIMG_colorAry 4 get - /CSA[/DeviceCMYK] - /TintMethod/Subtractive - /TintProc null - /MappedCSA null - /NComponents 4 - /Components[AGMIMG_colorAry aload pop pop] - >> - setsepcolorspace - mapto_sep_imageormask - }ndf - Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_override false put - current_spot_alias{dup 4 get map_alias}{false}ifelse - { - false set_spot_alias - /customcolor_tint AGMCORE_gget exch setsepcolorspace - pop - mapto_sep_imageormask - true set_spot_alias - }{ - //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec - }ifelse - }bdf -}def -/snap_to_device -{ - 6 dict begin - matrix currentmatrix - dup 0 get 0 eq 1 index 3 get 0 eq and - 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop - { - 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def - 0 0 transform - AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - itransform/AGMIMG_llY exch def/AGMIMG_llX exch def - 1 1 transform - AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - itransform/AGMIMG_urY exch def/AGMIMG_urX exch def - [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat - }{ - }ifelse - end -}def -level2 not{ - /colorbuf - { - 0 1 2 index length 1 sub{ - dup 2 index exch get - 255 exch sub - 2 index - 3 1 roll - put - }for - }def - /tint_image_to_color - { - begin - Width Height BitsPerComponent ImageMatrix - /DataSource load - end - Adobe_AGM_Image begin - /AGMIMG_mbuf 0 string def - /AGMIMG_ybuf 0 string def - /AGMIMG_kbuf 0 string def - { - colorbuf dup length AGMIMG_mbuf length ne - { - dup length dup dup - /AGMIMG_mbuf exch string def - /AGMIMG_ybuf exch string def - /AGMIMG_kbuf exch string def - }if - dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop - } - addprocs - {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage - end - }def - /sep_imageormask_lev1 - { - begin - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - { - 255 mul round cvi GrayLookup exch get - }currenttransfer addprocs settransfer - currentdict imageormask - }{ - /sep_colorspace_dict AGMCORE_gget/Components known{ - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ - {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer - currentdict imageormask - }{ - currentcolortransfer - {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }{ - MappedCSA 0 get/DeviceGray eq{ - {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer - currentdict imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - /sep_image_lev1_sep - { - begin - /sep_colorspace_dict AGMCORE_gget/Components known{ - Components aload pop - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - {AGMIMG_c mul 1 exch sub} - {AGMIMG_m mul 1 exch sub} - {AGMIMG_y mul 1 exch sub} - {AGMIMG_k mul 1 exch sub} - }{ - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} - }ifelse - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end - }def - /indexed_imageormask_lev1 - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - currentdict - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceGray eq{ - {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }ifelse - }ifelse - }ifelse - end end - }def - /indexed_image_lev1_sep - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end end - }def -}if -end -systemdict/setpacking known -{setpacking}if -%%EndResource -currentdict Adobe_AGM_Utils eq {end} if -%%EndProlog -%%BeginSetup -Adobe_AGM_Utils begin -2 2010 Adobe_AGM_Core/ds gx -Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx -currentdict Adobe_AGM_Utils eq {end} if -%%EndSetup -%%Page: 1 1 -%%EndPageComments -%%BeginPageSetup -%ADOBeginClientInjection: PageSetup Start "AI11EPS" -%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 -%ADOEndClientInjection: PageSetup Start "AI11EPS" -Adobe_AGM_Utils begin -Adobe_AGM_Core/ps gx -Adobe_AGM_Utils/capture_cpd gx -Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx -%ADOBeginClientInjection: PageSetup End "AI11EPS" -/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 - - - - application/postscript - - - Print - - - - - 2011-05-12T01:30:58-04:00 - 2011-05-12T01:30:58-04:00 - 2011-05-12T01:30:58-04:00 - Adobe Illustrator CS4 - - - - 256 - 44 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgALAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A75+gtV/3x/w6f1wq79Ba r/vj/h0/rirv0Fqv++P+HT+uKorTNI1GC/hlli4xqTyPJT2I7HFXkX5i/lb571jzrqmpadpnr2Vz IjQy+vbpyAjVT8LyKw3HcZgTwyMiae/7I7b0uHTQhOdSA32l3nyQ3kr8p/zA03zbpN/e6V6Vpa3U cs8v1i2biitUnisjMfoGRjgnY26ht7S7d0mTTzhGdylEgemX6nsur2OoS6jK8UbtGePEjpsoGbF8 7UbPT9TS8gZ4nCLIhYnpQMK4qyrArsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV 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 frHp19+HfhX7PLenXFL/AP/Z - - - - - - xmp.iid:07801174072068118DBBD524E8CB12B3 - xmp.did:07801174072068118DBBD524E8CB12B3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:06801174072068118DBBD524E8CB12B3 - xmp.did:06801174072068118DBBD524E8CB12B3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:D27F11740720681191099C3B601C4548 - 2008-04-17T14:19:15+05:30 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F1174072068118D4ED246B3ADB1C6 - 2008-05-15T16:23:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 - 2008-05-15T17:10:45-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:EF7F117407206811A46CA4519D24356B - 2008-05-15T22:53:33-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F07F117407206811A46CA4519D24356B - 2008-05-15T23:07:07-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:35:43-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:40:59-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to <unknown> - - - saved - xmp.iid:FA7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:26:55-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FB7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FC7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:20-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FD7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:30:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FE7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:31:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B233668C16206811BDDDFD38D0CF24DD - 2008-05-16T12:23:46-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B333668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:27:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B433668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:46:13-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F11740720681197C1BF14D1759E83 - 2008-05-16T15:47:57-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F87F11740720681197C1BF14D1759E83 - 2008-05-16T15:51:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F11740720681197C1BF14D1759E83 - 2008-05-16T15:52:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FA7F117407206811B628E3BF27C8C41B - 2008-05-22T13:28:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FF7F117407206811B628E3BF27C8C41B - 2008-05-22T16:23:53-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:07C3BD25102DDD1181B594070CEB88D9 - 2008-05-28T16:45:26-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:F87F1174072068119098B097FDA39BEF - 2008-06-02T13:25:25-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BB1DBF8F242B6F84 - 2008-06-09T14:58:36-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F117407206811ACAFB8DA80854E76 - 2008-06-11T14:31:27-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:0180117407206811834383CD3A8D2303 - 2008-06-11T22:37:35-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811818C85DF6A1A75C3 - 2008-06-27T14:40:42-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:04801174072068118DBBD524E8CB12B3 - 2011-05-11T11:44:14-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:05801174072068118DBBD524E8CB12B3 - 2011-05-11T13:52:20-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:06801174072068118DBBD524E8CB12B3 - 2011-05-12T01:27:21-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:07801174072068118DBBD524E8CB12B3 - 2011-05-12T01:30:58-04:00 - Adobe Illustrator CS4 - / - - - - - - Print - - - False - False - 1 - - 7.000000 - 2.000000 - Inches - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 0.000000 - - - Black - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - CMYK Red - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - CMYK Yellow - CMYK - PROCESS - 0.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Green - CMYK - PROCESS - 100.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Cyan - CMYK - PROCESS - 100.000000 - 0.000000 - 0.000000 - 0.000000 - - - CMYK Blue - CMYK - PROCESS - 100.000000 - 100.000000 - 0.000000 - 0.000000 - - - CMYK Magenta - CMYK - PROCESS - 0.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=15 M=100 Y=90 K=10 - CMYK - PROCESS - 14.999998 - 100.000000 - 90.000000 - 10.000002 - - - C=0 M=90 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 90.000000 - 85.000000 - 0.000000 - - - C=0 M=80 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 80.000000 - 95.000000 - 0.000000 - - - C=0 M=50 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 50.000000 - 100.000000 - 0.000000 - - - C=0 M=35 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 35.000004 - 85.000000 - 0.000000 - - - C=5 M=0 Y=90 K=0 - CMYK - PROCESS - 5.000001 - 0.000000 - 90.000000 - 0.000000 - - - C=20 M=0 Y=100 K=0 - CMYK - PROCESS - 19.999998 - 0.000000 - 100.000000 - 0.000000 - - - C=50 M=0 Y=100 K=0 - CMYK - PROCESS - 50.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=75 M=0 Y=100 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=85 M=10 Y=100 K=10 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 10.000002 - - - C=90 M=30 Y=95 K=30 - CMYK - PROCESS - 90.000000 - 30.000002 - 95.000000 - 30.000002 - - - C=75 M=0 Y=75 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 75.000000 - 0.000000 - - - C=80 M=10 Y=45 K=0 - CMYK - PROCESS - 80.000000 - 10.000002 - 45.000000 - 0.000000 - - - C=70 M=15 Y=0 K=0 - CMYK - PROCESS - 70.000000 - 14.999998 - 0.000000 - 0.000000 - - - C=85 M=50 Y=0 K=0 - CMYK - PROCESS - 85.000000 - 50.000000 - 0.000000 - 0.000000 - - - C=100 M=95 Y=5 K=0 - CMYK - PROCESS - 100.000000 - 95.000000 - 5.000001 - 0.000000 - - - C=100 M=100 Y=25 K=25 - CMYK - PROCESS - 100.000000 - 100.000000 - 25.000000 - 25.000000 - - - C=75 M=100 Y=0 K=0 - CMYK - PROCESS - 75.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=50 M=100 Y=0 K=0 - CMYK - PROCESS - 50.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=35 M=100 Y=35 K=10 - CMYK - PROCESS - 35.000004 - 100.000000 - 35.000004 - 10.000002 - - - C=10 M=100 Y=50 K=0 - CMYK - PROCESS - 10.000002 - 100.000000 - 50.000000 - 0.000000 - - - C=0 M=95 Y=20 K=0 - CMYK - PROCESS - 0.000000 - 95.000000 - 19.999998 - 0.000000 - - - C=25 M=25 Y=40 K=0 - CMYK - PROCESS - 25.000000 - 25.000000 - 39.999996 - 0.000000 - - - C=40 M=45 Y=50 K=5 - CMYK - PROCESS - 39.999996 - 45.000000 - 50.000000 - 5.000001 - - - C=50 M=50 Y=60 K=25 - CMYK - PROCESS - 50.000000 - 50.000000 - 60.000004 - 25.000000 - - - C=55 M=60 Y=65 K=40 - CMYK - PROCESS - 55.000000 - 60.000004 - 65.000000 - 39.999996 - - - C=25 M=40 Y=65 K=0 - CMYK - PROCESS - 25.000000 - 39.999996 - 65.000000 - 0.000000 - - - C=30 M=50 Y=75 K=10 - CMYK - PROCESS - 30.000002 - 50.000000 - 75.000000 - 10.000002 - - - C=35 M=60 Y=80 K=25 - CMYK - PROCESS - 35.000004 - 60.000004 - 80.000000 - 25.000000 - - - C=40 M=65 Y=90 K=35 - CMYK - PROCESS - 39.999996 - 65.000000 - 90.000000 - 35.000004 - - - C=40 M=70 Y=100 K=50 - CMYK - PROCESS - 39.999996 - 70.000000 - 100.000000 - 50.000000 - - - C=50 M=70 Y=80 K=70 - CMYK - PROCESS - 50.000000 - 70.000000 - 80.000000 - 70.000000 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - C=0 M=0 Y=0 K=90 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 89.999405 - - - C=0 M=0 Y=0 K=80 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 79.998795 - - - C=0 M=0 Y=0 K=70 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 69.999702 - - - C=0 M=0 Y=0 K=60 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 59.999104 - - - C=0 M=0 Y=0 K=50 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 50.000000 - - - C=0 M=0 Y=0 K=40 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 39.999401 - - - C=0 M=0 Y=0 K=30 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 29.998802 - - - C=0 M=0 Y=0 K=20 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 19.999701 - - - C=0 M=0 Y=0 K=10 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 9.999103 - - - C=0 M=0 Y=0 K=5 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 4.998803 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - C=0 M=75 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 75.000000 - 100.000000 - 0.000000 - - - C=0 M=10 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 10.000002 - 95.000000 - 0.000000 - - - C=85 M=10 Y=100 K=0 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 0.000000 - - - C=100 M=90 Y=0 K=0 - CMYK - PROCESS - 100.000000 - 90.000000 - 0.000000 - 0.000000 - - - C=60 M=90 Y=0 K=0 - CMYK - PROCESS - 60.000004 - 90.000000 - 0.003099 - 0.003099 - - - - - - - - - Adobe PDF library 9.00 - - - - - - - - - - - - - - - - - - - - - - - - - % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 -%ADOEndClientInjection: PageSetup End "AI11EPS" -%%EndPageSetup -1 -1 scale 0 -76.5156 translate -pgsv -[1 0 0 1 0 0 ]ct -gsave -np -gsave -0 0 mo -0 76.5156 li -441.406 76.5156 li -441.406 0 li -cp -clp -[1 0 0 1 0 0 ]ct -139.704 75.6875 mo -133.931 75.6875 129.41 74.3447 125.655 70.6699 cv -128.993 67.2773 li -131.706 70.1748 135.392 71.3057 139.634 71.3057 cv -145.268 71.3057 148.745 69.2559 148.745 65.1563 cv -148.745 62.1172 147.006 60.4209 143.042 60.0674 cv -137.409 59.5732 li -130.732 59.0078 127.185 55.9688 127.185 50.2432 cv -127.185 43.8818 132.471 40.0654 139.773 40.0654 cv -144.642 40.0654 149.023 41.2676 152.083 43.8115 cv -148.814 47.1338 li -146.38 45.2256 143.251 44.377 139.704 44.377 cv -134.696 44.377 132.053 46.5684 132.053 50.1025 cv -132.053 53.0703 133.723 54.8379 138.035 55.1904 cv -143.529 55.6855 li -149.51 56.251 153.614 58.583 153.614 65.0859 cv -153.614 71.8008 147.98 75.6875 139.704 75.6875 cv -cp -false sop -/0 -[/DeviceCMYK] /CSA add_res -.705882 .682353 .631373 .741176 cmyk -f -180.679 49.6074 mo -179.358 46.4268 176.298 44.377 172.681 44.377 cv -169.064 44.377 166.004 46.4268 164.683 49.6074 cv -163.918 51.5156 163.779 52.5762 163.64 55.4033 cv -181.723 55.4033 li -181.583 52.5762 181.444 51.5156 180.679 49.6074 cv -cp -163.64 59.2197 mo -163.64 66.8525 167.187 71.2354 173.725 71.2354 cv -177.688 71.2354 179.984 70.0332 182.696 67.2773 cv -186.104 70.3164 li -182.627 73.8506 179.427 75.6875 173.585 75.6875 cv -164.544 75.6875 158.632 70.1748 158.632 57.877 cv -158.632 46.6387 163.987 40.0654 172.681 40.0654 cv -181.514 40.0654 186.73 46.5684 186.73 56.8877 cv -186.73 59.2197 li -163.64 59.2197 li -cp -f -212.816 47.1338 mo -210.938 45.2256 209.547 44.5889 206.904 44.5889 cv -201.896 44.5889 198.697 48.6182 198.697 53.9189 cv -198.697 75.2637 li -193.689 75.2637 li -193.689 40.4893 li -198.697 40.4893 li -198.697 44.7305 li -200.575 41.833 204.331 40.0654 208.295 40.0654 cv -211.564 40.0654 214.068 40.8428 216.502 43.3174 cv -212.816 47.1338 li -cp -f -235.159 75.2637 mo -230.708 75.2637 li -218.189 40.4893 li -223.614 40.4893 li -232.934 68.4082 li -242.323 40.4893 li -247.748 40.4893 li -235.159 75.2637 li -cp -f -271.531 49.6074 mo -270.21 46.4268 267.149 44.377 263.533 44.377 cv -259.917 44.377 256.856 46.4268 255.535 49.6074 cv -254.77 51.5156 254.631 52.5762 254.492 55.4033 cv -272.574 55.4033 li -272.436 52.5762 272.297 51.5156 271.531 49.6074 cv -cp -254.492 59.2197 mo -254.492 66.8525 258.039 71.2354 264.576 71.2354 cv -268.541 71.2354 270.836 70.0332 273.548 67.2773 cv -276.956 70.3164 li -273.479 73.8506 270.279 75.6875 264.438 75.6875 cv -255.396 75.6875 249.484 70.1748 249.484 57.877 cv -249.484 46.6387 254.84 40.0654 263.533 40.0654 cv -272.366 40.0654 277.582 46.5684 277.582 56.8877 cv -277.582 59.2197 li -254.492 59.2197 li -cp -f -303.668 47.1338 mo -301.79 45.2256 300.399 44.5889 297.756 44.5889 cv -292.748 44.5889 289.549 48.6182 289.549 53.9189 cv -289.549 75.2637 li -284.542 75.2637 li -284.542 40.4893 li -289.549 40.4893 li -289.549 44.7305 li -291.427 41.833 295.183 40.0654 299.147 40.0654 cv -302.416 40.0654 304.92 40.8428 307.354 43.3174 cv -303.668 47.1338 li -cp -f -324.53 46.4971 mo -324.53 75.2637 li -315.488 75.2637 li -315.488 46.4971 li -311.733 46.4971 li -311.733 39.5 li -315.488 39.5 li -315.488 34.9063 li -315.488 29.6758 318.688 24.375 326.061 24.375 cv -331.207 24.375 li -331.207 32.1494 li -327.66 32.1494 li -325.504 32.1494 324.53 33.3511 324.53 35.4717 cv -324.53 39.5 li -331.207 39.5 li -331.207 46.4971 li -324.53 46.4971 li -cp -f -354.087 59.7139 mo -346.923 59.7139 li -343.654 59.7139 341.846 61.2695 341.846 63.8848 cv -341.846 66.4287 343.515 68.125 347.063 68.125 cv -349.566 68.125 351.166 67.9131 352.766 66.3584 cv -353.739 65.4395 354.087 63.9551 354.087 61.6934 cv -354.087 59.7139 li -cp -354.295 75.2637 mo -354.295 72.083 li -351.861 74.5566 349.566 75.6172 345.393 75.6172 cv -341.289 75.6172 338.299 74.5566 336.143 72.3662 cv -334.195 70.3164 333.152 67.3477 333.152 64.0967 cv -333.152 58.2305 337.116 53.4238 345.532 53.4238 cv -354.087 53.4238 li -354.087 51.5859 li -354.087 47.5576 352.14 45.791 347.34 45.791 cv -343.863 45.791 342.264 46.6387 340.386 48.8301 cv -334.612 43.1045 li -338.16 39.1465 341.638 38.0156 347.688 38.0156 cv -357.843 38.0156 363.128 42.3984 363.128 51.0205 cv -363.128 75.2637 li -354.295 75.2637 li -cp -f -390.494 75.2637 mo -390.494 71.8711 li -388.129 74.415 384.791 75.6875 381.452 75.6875 cv -377.836 75.6875 374.915 74.4863 372.897 72.4365 cv -369.977 69.4678 369.212 66.0049 369.212 61.9756 cv -369.212 38.4404 li -378.253 38.4404 li -378.253 60.7041 li -378.253 65.7217 381.383 67.418 384.234 67.418 cv -387.086 67.418 390.285 65.7217 390.285 60.7041 cv -390.285 38.4404 li -399.326 38.4404 li -399.326 75.2637 li -390.494 75.2637 li -cp -f -416.446 75.2637 mo -409.005 75.2637 405.875 69.9629 405.875 64.7324 cv -405.875 24.9404 li -414.916 24.9404 li -414.916 64.167 li -414.916 66.3584 415.82 67.4893 418.115 67.4893 cv -421.593 67.4893 li -421.593 75.2637 li -416.446 75.2637 li -cp -f -436.469 75.2637 mo -429.096 75.2637 425.967 69.9629 425.967 64.7324 cv -425.967 46.4971 li -422.142 46.4971 li -422.142 39.5 li -425.967 39.5 li -425.967 28.6157 li -435.008 28.6157 li -435.008 39.5 li -441.406 39.5 li -441.406 46.4971 li -435.008 46.4971 li -435.008 64.167 li -435.008 66.2871 435.981 67.4893 438.138 67.4893 cv -441.406 67.4893 li -441.406 75.2637 li -436.469 75.2637 li -cp -f -51.9624 26.9282 mo -.000488281 26.9282 li -.000488281 16.5942 li -51.9624 16.5942 li -51.9624 26.9282 li -cp -.36173 .282292 .271336 3.05176e-05 cmyk -f -51.9624 43.667 mo -.000488281 43.667 li -.000488281 33.3335 li -51.9624 33.3335 li -51.9624 43.667 li -cp -.517784 .428779 .407355 .0620127 cmyk -f -51.9624 59.2617 mo -0 59.2617 li -0 48.9277 li -51.9624 48.9277 li -51.9624 59.2617 li -cp -.636347 .559503 .528374 .281163 cmyk -f -51.9624 10.3335 mo -.000976563 10.3335 li -.000976563 0 li -51.9624 0 li -51.9624 10.3335 li -cp -.16965 .126406 .120455 3.05176e-05 cmyk -f -51.9629 76.0313 mo -0 76.0313 li -0 65.6973 li -51.9629 65.6973 li -51.9629 76.0313 li -cp -.697627 .675227 .638575 .739559 cmyk -f -80.3838 26.9282 mo -58.2456 26.9282 li -58.2456 16.5942 li -80.3838 16.5942 li -80.3838 26.9282 li -cp -.257298 .97525 .943297 .238193 cmyk -f -80.3838 43.667 mo -58.2456 43.667 li -58.2456 33.3335 li -80.3838 33.3335 li -80.3838 43.667 li -cp -.343328 .97052 .868589 .526909 cmyk -f -80.3838 59.2617 mo -58.2456 59.2617 li -58.2456 48.9277 li -80.3838 48.9277 li -80.3838 59.2617 li -cp -.574243 .753933 .672236 .776303 cmyk -f -80.3838 10.3335 mo -58.2461 10.3335 li -58.2461 0 li -80.3838 0 li -80.3838 10.3335 li -cp -.0256657 .974395 .923949 .00140381 cmyk -f -80.3838 76.0313 mo -58.2456 76.0313 li -58.2456 65.6973 li -80.3838 65.6973 li -80.3838 76.0313 li -cp -.697627 .675227 .638575 .739559 cmyk -f -108.472 27.4126 mo -86.334 27.4126 li -86.334 17.0786 li -108.472 17.0786 li -108.472 27.4126 li -cp -.36173 .282292 .271336 3.05176e-05 cmyk -f -108.472 44.1514 mo -86.334 44.1514 li -86.334 33.8174 li -108.472 33.8174 li -108.472 44.1514 li -cp -.517784 .428779 .407355 .0620127 cmyk -f -108.472 59.7461 mo -86.334 59.7461 li -86.334 49.4121 li -108.472 49.4121 li -108.472 59.7461 li -cp -.636347 .559503 .528374 .281163 cmyk -f -108.472 10.8179 mo -86.3345 10.8179 li -86.3345 .484375 li -108.472 .484375 li -108.472 10.8179 li -cp -.16965 .126406 .120455 3.05176e-05 cmyk -f -108.472 76.5156 mo -86.334 76.5156 li -86.334 66.1816 li -108.472 66.1816 li -108.472 76.5156 li -cp -.697627 .675227 .638575 .739559 cmyk -f -%ADOBeginClientInjection: EndPageContent "AI11EPS" -userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse -%ADOEndClientInjection: EndPageContent "AI11EPS" -grestore -grestore -pgrs -%%PageTrailer -%ADOBeginClientInjection: PageTrailer Start "AI11EPS" -[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 -%ADOEndClientInjection: PageTrailer Start "AI11EPS" -[ -[/CSA [/0 ]] -] del_res -Adobe_AGM_Image/pt gx -Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx -currentdict Adobe_AGM_Utils eq {end} if -%%Trailer -Adobe_AGM_Image/dt get exec -Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec -%%EOF -%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (JIN YANG) () %%Title: (sf-logo.eps) %%CreationDate: 5/13/11 12:16 AM %%Canvassize: 16383 %AI9_DataStream %Gb"-6CQE#:E?P)cp`JeE!#BOOp5hCakmA6JkH;#C[\0n=2N3@:mV.Z,h2aitO1`'=rl1._P:*[lX(oY[<(1n1AL,C86O"cen`!VW %D*S!on_870^Y=565JOl&e"*slF)lJJ.d!e8rl;Y.]_u89j5)/!U"XoefgB'C,C*samp5J9CB*PCO!!5-r:91"TAI6ZiJ66epRaYL %nB8H"+('N1qqK`[_)JRdroNPEpRhHFDYsG+Rt!A(D>lTopA"(SgZ,3X+'sGJ^@!?O>5-e=O71qTqfb8Rpp[`)iScL7f`.8Kr5TnP %0Ba2OB(0/WI.R?XDr:O43dpnm?[mU0J&!_cDs?_/hL>8%Y5olQ0Z`)-rla3k!sGQe^\ZR>]`%9S%pqN8rpoL+a8bf?H0"-ahg]nL %q;7nA"=6b5SXjEmmN:;7q#:6X05kQZ>]BGr%]1OoInDkK7B5s%R.%c_DS?K%hp!nIf59C$ro)\fs7dm6esgk*^O5n:p\_nCIeSSp %C@h8E2t-`1G]t"@2"CVDc#8&Ys7Z%KIXLknLP_\@:&jq9[r:0AfP:?k"F&,?%jhgYKY:]Eg-rn>Bh;@:(J0DEpPKfd)/8GIiOQK^\Q0( %[\uAV(\Af_aF3LU(&c/tL6qr2jm>Q)"N%J#hmS!2l2GV9ipl\:=J=oe5ccNUu!+Gl*!Y[X\4, %\-?k6H&r!GM#Wfns6k+K)E+@`2%s@]^KPesYI)peLTKI_n%\s03rC-ghl0 %#lhs>`nq'@GJ\"`D"@2&(;:UaO*-IQK^&?kaE`ek(3u58Ir+O.Yq/Gl@/^*]ZRVJ#n@mL]?rq17%FBo(2C.M?>hY`?/AA*Zr]hf&Cu(H/U^FdGr;n>l7jp=kARIkRZ7\[o:Mh\&6epf).,6 %+9%>/(r,V>GYYb#rf;3kmEAXhft)BPk4f7Ah29+-.uJ1'ElJg5"l1!+VEF<03hCJC0$bJs>ZX>NNQ7'eo]b-m\**5ULI]WOPHgP- %SEGWR378>tDqj[7`dFVp[I#N9VhY)-h2:q9s0-X`+l2C"Q$&DI3oGg9-F%]_%3;L0=.d\7E_C0qqSD&_'s7Bna5=8]r.?O/J(ei? %0jfXMOS5/n;W?$i2uhs_T6&RrBDL4spm^uHJ$rS\gj\jUq.dZW8GgXrLBE$D^\MNB5>9CCmI5U3=8o:npc#jXRs/p5*]Ft[qJVg, %^C>J'NUSUf4MnA2e0sg5+0j/j7,R>h=M&gZSbH5.^55h49&I\u1]Ol\%IK53P5e,NUeg6I^&DrZfkiV_r[%Ken(N3)2d[R*ReE4u %rZB]b+W_:>(]N8:K"uTmX)t!Qnht3S%c$4=pBJVM90DLSc%Pj#hs@2Z^7RK5C5U&WepfN&QohJ6pY7ehrbQ4m5(/kt>6.h\5dV4a %(4U8tRmaTkpTSiCC]Tl_=aN_er.ND"CVLC,KHE"!j&3a,93qVW/tdgjAP_miTK;no1!^f0a9i#)Q2[dh.s %@*WJfn9=A(C]-3;hE8Da%e(!XD_03MX;KM:_9k@cTH65OmC7()UR9afOMCHINa1I@hE'n*o3.[]LR;bh!^a2HIfY$HH=j4/mu-L$ %(_PLYofLgH1unK\"?T5V^iRfR/`5rn=eYU.hj_B'#n+t.j50[Zpqr`Xh_Xe]L(tY#/M+?'B-i"9qb?BKGQ;ZoNR/SncWaZWrE%m= %`W5UDES^:>&@6=nOYSX"qo*k`$Wi8?_cq/^:$,cdc#1GOJuot+hZnMicPnraq3gmB"J;V'Y/tUC\E6].m5Xe>GS>=^dXJ[A2r^,B %)BiPtc@G(U`3tN4ha\Sm1NYITQ8,SASBtF8UqNADZT9U*l310g6d.0]liJ]"e') %rmm?PF,T?3Dn^-$r0u8!;kL>LPr_jG2:Z;B_6]/Oj*Hc.M0n0+`PT,KrcSNO0AN8*[TF1AT-CaaR;96:-0(bEVS?dkPVUXUbNRcX %l[Yb(Fcr/c[>7>Heju4o9[-1ZAG,\6*S8o-B2.Prf67*7mGLQZf@8rqePM\94$PNuUaS;94tAPL*7;hYXVe`)N+`hTSTqV_I]fbHH_7\=qcDW$H!k,$7"*^2ru&Phh:=H %(Kt%?Gci_J_Qh8=e/c>C+ZPm3A;d"'j;k7IC:PCs=,oVdPU#L/oX(HmNm$7eYp)IcI`'5Yb5nBn-+%6<^T?q]XmR-u:&(6(c@M,c %Vl]Z>XEuBPp2tFOn'#:C>]?sO2UZ>_hGH0tfo'Q;?N!B0ZcR"8MlY-f$(`W2K'/D3J9ME!^Si["F"-FBR1m!Y'1kmO[l$3P7@FPA %Ta^%&n_Z0MG$IJm)>^g_,,0iL;p4'`j2bl(;f7Zb7XJrh=MfHka*!&T%h,0)bt9"@^?SqEMTGP)cFiJshU5D3ra!&Uo50d;.S&o. %9&tZ!p%\"R.e>kCD.%73:ZQfJeSZ'2V2]JS73\DUbROEWVs?Fm9]flF)mIi94:\"'k8dlIV3S^%?QD=ZMcrOJC\R&qWd]ForSk"F %IsV.Z48uD^:#C?ipro`Unh`oohYM[+oq"jS&_/%B# %hYdJhGn"iEqJNMf3dptgpNPBdDa/^J6g^(%Nr:^!iVpQ:KDOcWGMCG.rp]fsJ,&[#II24UWqJ&QJn"[CNG&0X)LVJ[O$#_+:Qc(. %-Z)%sq3-.4e3V'oaEC5:cW5T"jrp\!,SBVLQ3gQ11bs8DQTDr1T+r?],VVshBU+oDNEYM]As/3_tE]D6@A %Xnc$SR9u@r1MriPVEL0]FI\AW'q7JEXg^*N?mCnH1R)?7U9\"8KZ=OMG?2]F[XRu#"fZR\j1D@:%=p.u7ek`1,_d'Iq, %BUO;PGCC(ai/dI4"*LptKh.`_SEFADc+KTko6rmIa"RZig710V&46dbPctJKYRC>I#fep@ %41aWi,cKIOJhQ76k^!RLHp=GV6Ra^!)k+#Pc.ISZCq;H5k44b=cPVVZhL5(OmH#EoDW?P2W/&B[L5@ADqdt4=SXmE.?/",GtE!QH!(M,@XWD[K.II;"C^L[,K=gb@hr`6 %+qC7UoFk\m.:stSDW3SBi]\EV*+>Bh9V5,M,T(,]S\@ZAD4k^oNc_m'=@c[3#LbQn!50X+3>W5?[s=>7q#KMY-e7N"_dfnqL8A@kd)-257X4h/jhi@pGhG! %Ag;r*+`HC!D=b2P2r!_C\(ts5gEWB+h)Ra*)-/0&cn`heB"-U`G5L(re\leB3:$>154%;nR=3qYrFWh#n'D9E5Jk^NJC#?6/\od\ %R.G@N*4CXY@=L6VNju-OL*7Hjg#A!q/GkWO=HqjOcjlKQs/OhQ0CGVeJ*'0#lo"QF=5osM7ELHc(1h"RAl6!pZ'ISUkK^kC%OJ4s28sWANCntmDm%j!Q(drdUA\p@F2o[hs3Q=,"42sD&4iT\*5K5t.6,l7,6R/PNaN3R9#RLYh %P&ZYiP42@'PAuekPOXhkZku2/)CeJ2/B(7Z*4&Ni/r-29rn0rt8YL>anD?]-OclOd.8bu*f.=m6;5>QLA)P+YC%PQjr>=B3B*/O5 %(=`'kiAs?7)V$T6[Mm;?aE0As:G_o]BCYJJGJW,<@n*+E+^9_E^G0*op8Y^Y+/htJ$&"SmU8jjRO\YV`?;V[=^%VQ-,ck5p2Oh,F %FI2Rs"N7eCH;.]1F7r_TTbe?Q+beS6fkG4"4\u[cg?u#kX2=264M-+?_co)rI.QC=+5VGIH$9)oEuS8R"b^@,:tbf@U6d'kU6m-- %03]D$VGHDf"QMnS&43cs%Kk6^;J!;!sX("pAHAJe!lSn8h1K5jX?iktQ*X,"?C %%`X'[H/m:S%TA*X;^s$[g0ptTS?4U0/#"JU[51a2C(c\A(nIUDfG+RuAqDTQ!)#F*OA-CMQih0c*GfE]'ZmSq,Acui\p(CO-_O`M %+9aj\%N?N#)2L\68Y-C&49W-\SC8SW?ub@fWFsmWA\M85?]=oG)&_VunuS@NQT?Y<"D4);7D&L3&J+A=k?(n4H&;_g3k]C0+Go,# %Unu-8=B\-7KH$OT&*aMk#S5RVg%,1h1.*mb`(h"HaiK"Gn.5((A5#OpEUPV.6V`1\%#Bu"6s'i&).5CX37!QM'Me-t9?p %U:#%87hBgiSV0F7a/3o;GQr5HU3MbLIBp=;Pd,1.#2$3(.Q_]/"aM6#;s?Lc@A;9Y2N?pj4u_ %Ck7?W(e=]?,leDJ5cX0gg)`QRhnob5$[fCu+;9Pc@65F$7Wpio[lj`Kh#S&COHWrO%NU(]Hf,EH/J'#o`)DbZ %:37C7i&M'V-IU0K9c(NLU(^iU9'_?!iX[Rp*F+COmta@VW@gTI'9VdW$T\R]pVEk[lYVj+(K0Rq8gOBsP\<3Oosn,mq0n'l@T^PO %0A*kJW]'NcZ)0l+gq3R%_;Blef#d.e@jBYNq\Rk]BhL0cE2F3)5)_<0"*I_R[7l]PtO1XEfAE3e[ %.)?38OEpn,!Y[!_p2o6Md-3aA=am633uliGa8KG]hsZeqR-,Y?5YE(p'6=UC+VqU7esM:?#%E;-"=KqEH_RB.8$aB0)2MrM[@E%B %mYN\_8mjDiP/1'""1'5T2h:j'hEK9oUdn/R.#HkkI]gDF"4>V59?oK6HrX"4pL?8 %J>.o)7Q^FX%.\pmj_W!#>HIO*_M[Q"WR<@+n;eYU^AdWqgUlnWFD#%]=+DtFZdKO7!A(ELLm]YPlJZ1>NtZju-Mk[&jL4aNh%bbUnff](9`*``gsh!%k/N]N9-U6$2k?fhQ"gV3*lO!Y"&menY0I]B])2W)MuREGZA-K4KP,kj8==G3FgebX)Djucb+^sO*eJdUI\NXOb+to(e(M]YL>^DfalD5?93ISfphrhIWinD:-hjf(X(rW.:up^8mWr\ %;;tD=.nmocl)j`o@tUmpdK1%<(UYO;Wu:c15@co)_t\u)CbDe&@jMmpin5K*%2s%g@1Na-*=YX$,`a$=-9mSs^8IRuB1!;X+fg#< %)d4Li4cleaPJiJ:]-TVg;'ks"%;IEa4,8nEne29Qa0R&;ZM[QV\@\cObpq23:98AcI4*a,So7?35F(Y&[Pt8(IBUG(EkP*<.at^l %cgj1ko,u3q''38X7qFR#nA(PcIRiY9OQ;FB]-Wkn8+LsM=ks*'5TtO`!dZ'LgkjIc)S)H=]QEpU[_i?O3.3Ll=7O=8MNL+5=-`^d %"\=\7EGa^@FF_fFFHkM+EOdTSIP"j.nqg;rkd!',F:B9uAoJ"@?,`6O=`?dt;AlPfa^bU/Z6UV3 %o!lBSA!&UJ.#mVNph#].*9jCu'$ENJOTnukP9#ao$m_rH@AiP1:Fe(=5,o#U`]`q>Iqjc4RUWG#-KPU'&[Ub#EkJt'QGoAGm/B?) %SLlD&ClSEkb@\/HPEJ]K8NfOrT-aWI&f,$m_#"+`DOQRPIsV-[@oj/JFGK`s[^CX!AZC,XWg'?CQ:b@2EV43/USCQH7FQ%t3W3AY %-[Ntb0=F)9m3q[\<:47br7GKSjk.`;H_e]+1#2Z]<:Lc>BR=pk5TeXj)6-B]%ZOQ(Au0*[[ZFidbYo\0[Ik]>^jegeQd_VR]X#B& %<1.X[FQ2YcmG8<+WAWed;X(QgJ7>*mC,en-U%hNWrs*,\8q4Zns@l$2`+Fme:U-"nI;(Kk$]:T6`72U+A@e$%H8d@AARt,'IX2i %WafucJj3K'V`3/(3j-ED*[L5t)(U%WVU>l]PoB>BLK9/p:Yu#j2`9r!4iXOD\03ft8be1,J4hO]Qa7qhN&CBnj!:qK8sC7N3,Da+(X&s7B)L;HrM.NO`5D24gH%G\>g,'jDCL&>*GSii,O1DAEbpkQ %!6%3L&Vs>$LdiA@3ZqirU9GeM^qgaV!-%8qVMDj&,cF%^RQ,&b`QY`G\[C@fQ,"J?,Ce8gk.6qj/o"/Ak/Pai$3$Xn3=5WNj*t58 %ON%9;aRNPgJ2@\5%g8V7AlGIU3$,"e"LXViXVd>sI:Q06%[od0Qgc+R6jP6@d_2/ca\k__Rp+OlDS%]/0l7Ac]>IG\g8*PH;S"*, %WIM((),%p4V(s]^3<`!ql6D3i!7$b?CQ!Ia(OpTKp(Sd(m'-RJ@JV\\P@WruE"gV/'IX<]2cC2fklqJ%#9k'7&]?])h?d=L;@MXU %82$'[1UUUoJP9,o"k*c(&j:dWia?Lhm:ncN+q)1K-86;-!(\F:,6<<5rn!;Mlu[l%D5/9/2/(`fgIV&>:O80( %mS((RNJ):i-'WbSAo1SOP0-l:af6dt6],'/e<7!*O#$BO(81#.-*`6*9*m)K5,gs#@6.a^YoT(a*,c-kD?>3+e2?As$].&^=1IZ*K0E`CRMib[AP7]JmD_:l!nA^cnkK^?:u;%+[9<%H"# %+UU;sFWDcrHd0R$PZ?c;;!.AgS:JK*MHL+T4i'9dbYoG[RA*'1Wf,O*?C;B<9Hlm3m=*2.!)In,QiX7Bq3=NtZBr1d67W#>DlSI8]-`aZ7\lpTog07F[YhG;k0W^FG+b`@24W*G';VEGU %WE&hZ3)>j+rb!:05:Q"oZ"@_-G^LYE=FCZ$0&(0!\ZXZZjV^-j:DPs%?7=Db9O-h9YuVq5-ZZiB$,/*]m+#M$\Q5:):,V3,%A'<` %.C%hR8@I0iXW_3RL7!'0UV>k"#UGeA3g(5BVn;1qQ(1kD2oBod]2GeDHp^*"lP6h@R^T2/HgN?mfVi8f=3:"SH4!]Um'P;;\`SY> %)"4'te]jP<&#U.F9dt3>43kg8;Ac?^EWdHN3?BkcVS#P*Y_e>Y8."I#p7,n;E:tXnBo/#h2pWr&&U63<,#QO@Dr8$qAj?8957 %hri*t0Wh[tFDX.[);G+bb=dV?p)V#Ukq,qUoeO?>J),[&Tin %;ePL/"BsPt>"Y,R/(]GX@o=mQX>QIj]9[']ZEd2k$(S.hiFKN9>OsW)#Jp_&YX&s)PqO7?/h@m!EL`0F;T %0-.cKpsS-mFEh@(d`5rPrQjg!aZk8HnJE#pF%G %V7XK5mOmM^U:XI<`+=:ms&!9d&B`]?9*Wf%m_Q8"f/DP4U_Zn(!WIE;?^&&:Gl@k@q$h2\FK-,]FQ<.gN)]*\Mqli#M_6F;*`ZN- %r(H;DVU3\FML!4ek\"1,r4!iCJEASfHpniWMn)/K]iOjiMHNqj?WM!HX15!n'5dK$f)$^rFBo&Fje7Y$QSZ.TLdWo]V4Y?:(\Q47 %HKdl3oM_fWI_PdY(YI[S$%!h(0-om3f8r4=-.Iq9V8JW0?TNR^L]8*2pcjDRrC')&U*6/Wm"4$B0NhI6$.5_ar5"gt;dT<#h50SC %GGn[8.27B;G$&A%n*B<]XKc'51$GN.EKaa2f:H7:E(cs'LKnl@Bsmr^r=1cn=[&V)G.mnGIYSlr/>!NP4C>2u^KCGkkVTF%dkhtF %:3V/20p,#d%iR:YG8dB3;)ZH`]/'X&=@PQB)[mi"1scEJEq;)V1"&M>a#18#&GFm%DB/7H(OA7-;g>jKiBOVG"Mme3^=lVIjn\>g`_NApcCm'Q@h2Sb#EUhA4K8>0*fk>'^idYJ@2bYtD<*pnUYq%5oVmpjaXE[!1[$*VOj+r8rhh^@u74 %_Wp8h^V$`'Fa'JuLDu?:NbU@TLD$Vn]Tl,eQIhk0%]dA>E4Gbk>]KN6GkppF6sU_]rGrZop8bO!V(WX+ %Fk,l%`EZVe;-)+DE\Zal\tP?h9`O'3MAbhZ4=Q3pC[]sNP#!]>CmQl:=#/2m.]2(H31mm`lHGemlPD"YeYJl7<-je$RYg\@Ue(2DoLI[$%qF9NsZWX?L\3NiD9B %qde2CLkcu!A!1NN<6VLmHK>8iq&/_tA,edDH?)&pILgm^rXeO\F_5/a-U`,M'JIFOmg'YOE0LdFRO=G?%d5Yrf%2$FLthO@UrRo+ %j40Z@k4)%+."Cc$f"%!glXSfEQ?Aa=Y1J?mS8Na*WRd,nB&.B@c%JWE:hN.>-4uC\ %#q[,?6D11$[+\_fhZL!ZV)=cWd1S%\L6b;'kHGqmn)$9L'CSMlQgpLpmcV9*>OSj#F.3&LrA*8oEookFrOm:^iT41CL#847SA:.$ %bD"a?Wj-<79Z^N)>q'3WO,[m(-#N:^'&H*9Pr^jmXgG0,GGPFZ,l5uDNOA"Ima=(TEhSfd9Gpl@A'3N:g]*KG2VtA`ZSKpgkUZCB %5P5f7`ikYa2qG.u^'Ofi(,THNV5sS.Zgk?0F-c4BX4pD<,U0s17RQpESDL-V'L>O_=>ZqlBd^diiMb:F_Q41k-m?CXXQ[>4.t6bW'[i`2?e0/mrm^EMKO8@OGCS$*KN %5dE;/9'?+Z=djO:CC''rEB<)!&F %oJ2kYcsE#\p#oP4m(,7QbbTDjT7^^')>u:Q^a4gW$#"g"nDZ.N+)"C[2JpXF16VU<=YPSmBe4u"Ol7k]As&'^q(o=f,qBrQjcH[V %5:`:rRJMnmH@G/*:mdAl`D?KW$E^M]KiKpAQLE$q%cnrZ"Xg-K>MaE/I=B:R=Yfs)oBp)/muof&c+>Nagn&8=]Wfp %Qs%Q)bl[^!On?U`\nWL=X:b"("5bCTh)``BZAbj!*+aUKia.LF%DY1MNdk5-R!epR>rl)Bn?3RR:(/!arR]1\dkUcf1I@8#$$^HG %Hg-X,4rY\Y$i9YNJ7lGt,3>t@8,c#T!.!X=8rLVIOOI%O+h#P(HcD?DWUBshRjpB.4M]>d'2Wc\[KC!p79+Ml\?-Wq;$ET^23CF6 %c_HsL\nBQnF7225G6H %/94ZB,JA3o?`q9_lcP-.ji+h%@U48aY.RkT?[]-kOTqq.D=]o9`EOJI?4-uEbd:7Y.KSN=,)NiSsK.!:l/.:\g%P0 %>*5Zq=m/6HPM?eTB%e8$qn5ZtM2++504j8LR4jcZQfRs)(B38I_K]c_%q['Tp$#J'/u)[61=++19uQBg0%RdLqeL@>eB8irI4'>R %gWd"KDk10Zj'kRPJ]\Lh/I&'OBG+GH/?K8SeNkP(<25kae7/s\SXk5Vh3b(P)/5dsXlL&R1X(O8m0+"'-?.oRP$8jPIWQ`[]'qi@ %abGYNKgS<9(G6lAV%Gqg^ha/mQ7n@>ph;4"_tpoZ88`.[:N9;CPROeKRI:lqDGE3qEf[895E1])?:*Z8%MIChN`sh/bbUG14[^HI %""P6!UekGFJenZThM%bL,+2,[Siq[K-orJbO/>(7YPk/t^$;;*ohDpnWfB83!*)WA#,l!WheO+#BGAK- %]9.6d4Zgcs/pFG/IdMAcec/9dY-OAThGjcT]6@N5l4LJ[_J1[L4ffEOjXqVKZ.]\n=_qY,+c$`(qMU>K]A1_I:OptQ[&)%$BBRMU'QoBIC;SSdSN!]Dn!k#Q!0\@QEqd/?[#]\foP$9&mY-ubrr%m'3J7gK;8brY!5]?YP2*HSo"k;or0\_aK1SQX!e#'_E%M6`O"ngXe$l)fN"ohG#r;Sb1mnCnkaFb\M_1``3\b15HjB>:"I"n)RF1U=VtmKr*jtV9lI-oi4V%\HCrIQE[is$1rG[oBVgT9;cI]6S4cac5CB@XQfZ"5fNkGIe_'D'Z2V++sjbZ_R$Sh>&qbe)7N:&s$dlm^cqO0&1Zqfl/A%XRs!/#+_(Ujd>`(Gg(I^)6ZSA1d4bRJ;c+H6' %-XPe]kLo$D%Xp]q3%olRQZ"J^9c)C?I'CpQrOd7ITA8D@?C0F3E-41#lll?".<'KRfq&tc#$eZB>Umo^!XYT+/'Dn4F(Gr3?r"QN %c35Pb0>7BU(V$\MQH:Jl`GiIo[GA">cDg2ceTOh:f>I-[C;^>h&$)NJh*-7%2F,c]"cKg\70EG9Ae]i7<1KQOUhr8Qj7!j'mh=rmHA+Qq:nSR.&k$`JogUrMs1T?kB %g:GdoWV5W)k#G0H8Ih:oZau9d_2C^`@+B[YB[U5SS=QM*OfE9$2R.#eA@n44`mjF%+MgolT5+=(MmqE^R\`\pA[&")24-7bR@:tB %.&rT>AinaEJCL8r8"0t4",ihORj%&1lm %AW-]-aP04^gh@`:BtfoQSpV<;kF3ii:Ot)bY[=^uj-eIY(Z*Z%D+cbjS'WIY!")nPH%Z?_b!+S_\+"XGB1ek=ft"ZTXaZHWgddhU %jZ=ncl%uX-;o))A(+8YuS<=7oD-#fp^J1Kbf3Ppm*>` %f1/;!D!Jj*fIum.>&SB@9b-qj\QcCMSiEq0dV(JF7O1o@[D@^kg+A<(V^.pL;dOCHFC)SUdILR`o^cgM21+l4l;'dT5sEcr4+=\ZBS(fqGXO+d'WH`aMZ;Bk-Kqld5ZdRH@L:c@/JEe!1)BanKOD,O:Tl[cXdS$[Fk\JC?G%0%N8 %Cb'3JGpqdMD#.W%O)mN9)*M`fY8+AF4?TGW4?kr@1!eV1T36rLDa_bKg',hQYcZEnd4lLLadYmu-93'd8l>(cXN+eE.7U]Eb9QP" %#NA\IE\JMbnRqdVp8`X\o,thMn_JddgdZJ@Y55^B'f&+1-;eV/0k,1A"Go\_'."tu8t),,.=iZeAL(WCVA#-2 %#bC6aND@1XXi5ASEUZB=N)2@.Bs#b\p\]RR#(TUk.9-Ph?=P:]o2IE9o<3nG.S#Ft5 %'iE7GEh&gMVm6ZW'=71j53GEtdZ`N\])"uS758QrJ[6&%SYg3Q9`_8')Hl=C)l5$"FCh7!BqR"B>Kh]/Chkr3r<[mTUG+&p`XMC= %rfl&W-*3=Wbot.-;pt7K&K8a<=Or>XF_#7[a';pA!@i:cm@L,lM_JcG":\+=4"`!UEZ)!\027o+8 %Q"jHu>"5JTGd!$r1`Vb3AWjWh9.JH8L1!5.0G!R%CQ.WooGUuIF47gH-*=O]eu7t7 %=t%=Ti28$<8mKno!>q]\/bH+\r`E*TT)HRTD!-J_Bs^jq()sPmHZ^UVF:[\X+l*(^VGEZNH#::Y+l[q_.=RBNH7`+;Db<,LOh]r!^^S*ZZ'eFYZ>bG"1PeE25-h:5(kl_@2?\P+'CpS?U[eok+3G1Vg'H9F4ZO:%H;@QBo!`$KH(-e,!W %>#))GCreBS@i:>)_^)1C#eO/"cjjcph&mPpio*#\\;hqG@N#klb@$cgeY_rCdWhE5Y<7`HQ$QZf_;bk14GUU_GL_1DI:CaO %(nE8d/\.f_)Es574Q>oKmP>'qN7[(1XTIOZ2T%[8nsn[-)*ADV807)i?;H`Bc".sVSj%1G$nNd!7371=P>N;Rb$*$#!D?G@-(aU^ %[[_mT`\g[V(ZW_R6fnLVp.H8tDJ@$bE=P^m:b1SqE-*_Jn5+57,uZk#F55dfD>BS+p2LVDmFPL`Fk*,&=]XYF3-#ej %\9pc4SH"8Hl`P0>S'@pbh+@0NY8!&J(Y)[XJSo!LHZm?g&`E762'\'g+ONV].3Ou9;OmG07c3''E%Q`JkYMu[kYq)G\&0HEnhWS% %9K^l=VMk!.Vtb[e>C"ODe%UV\E0bTWjSV`SSqcX5q0_2/jq,q)L$B)O<#2JQ"?Jhn;ANldqSe4)PdM0:\D!%/IB"b"@S`ek#sFII %?;\cH?HKf=jW\\',!(^ZrNYe#"]a"$,Bnr,RQHe-.Kjs)R9)PE'DL:mdf=W+a.S0?-'*:,@/#Jk[Je!\bWr^'dXq-RD(7am5(Tn]b%0m`@O/>Ic8':%Ti!;Hh$;,jNjYj %$n\@Ac*\3?encBH;B;t\f5-8+A[.9hN.i/0`*?_ON>%ZG#3hrE<_W7]S10qcA`;-Mc?ai>>W[(&0ae3TjC4^aX2!F"cX^b=@.QS^hO`3k %e4a^2#@GZkQT94cKe*/*=-*qBnu3)#52U.d>o$:-eVh`N4[7j,81Tj-L7*U(16\ALqn6o[u"r %5gj3lW!_:B$[Gl>Nr+Qs-($WLJen!@hoPfgQSp`$g$W$SP?)#c8ZnN]U-=\KV&sb!k]*=rbsUj>n51XT&/Gc<\8Cgd]M9I?XefB %3P068TUeo/kN>_u.Gj6NVf9r+jd%5H%PI()bgdE#O]$^Uo\$;Z/EcYJaInO,Cce$"*etQD?)MkQND1Uq84#.or]o!qHr:_>BUL6"#lAK?o:);NV.1/hCZ`obXGG4]Zj$:QqNiR %Y$b?^=^HF6p8d`'d-Jin/RpF!1&1%UQMA'fK.mXCUGt0gUS38VMd]hr9Ror.0+toW>KMN>fP^:217*'HoTj$^q&np6$F$,=9VLfO %cL\[i?@RA*-FrliJTQl0/+5fH(sn7pT@Ef)r&q\u`^]n?Y&:%2H#Q;5^;1I#6!E:NWO(IpIesijj\p*[W[-ZSbd?o*^ %^Gou@2H9;dMgbB-]@D7(CW\k^o.>d]/j\QBgRP'H>i)Ee]LcmaA[BV(E4b8CbCqTT0APnVUQJ%=rteCGlUJ>]M1nZH`&aG:a4[@; %I]OFPY.sQ#gi]eXj7nf"AFqk?9=`uBLE>!0%5Go07fM-\$!#&,7hTJ17EBH8m,/('Re:T7Ue`GgS7l#UDRk<&*a\iYUWRG5pu\fB %gl)@D(,&G=j]q^R>drYKeEUc?DDe7VEl3l!-T=IWn`MVI/ha+@MRiZXmH&%&Y#n07>/`S19]K,BQS6#9/k2fYG1EaZil[e+)!0i$ %)jNF(9bCAO,E[o&>Pe8o2riF:/XTJ>7L:S(UR6?bb4=7*[:o!Xs0)mqCmQ0%kpSO&.il[ClBa0!?+lYKiE'6iQ=!61^@XB%2+D)Y %e9Q.GQkpWBa#pJ6lH)KcfDa;okO$q!4LR!hhW5EO*Z=uG1D);"LX#GQ+n!V;c]X'.1DpP:*BcTa#RsTT;r[-W$*cZ>$:]W(QnE]4 %hVORi2kc9go-TNtX!G0>/Z[[hWnL8/11c`oPYSoDR0"ZbRB$eu?ArKrX&aXel2i2Ok9ck)!`[CdQ%u9(*a[*$:7)*p=`,XN4-M0O %hl.4/''SZ+)O;Z(UYN%m+BS0JN*FcKBY8FAP's)'UoqY"nt:QX/3`'dJNf]:L0WeoeEi:-3a_(RSbem;F4&ga!b.\RIk$G'UQ[!*qh,8=QNg_,n-RJFrm(/R!rK\G!91"Ls7s&ou;fkP4F,8[Eij.LSCFY+\]c5]t!^%PRM-U7Q %R$$kbCH3,<7NSGdri$[o;/P">p\Jknmd6T:`:I_;@\/q3^(8DA.G]Bktt2QU"m#MZ>W:,NiiZ\QgDp=)Dj>%sP]BNmUG\ug._et1T3(RA9Hd=g6lEuug\VJB5V]FPs00,/J[NVKM_T%%3Uomom13VOJEn(LFNo0q1HS*ps$3GP-nt7bgTiBbsBV\lDPhU.I"1LPo\tAs&$_l*bs8o73I/\]p7dn,coJk+N-k(3:g>b+jl? %hX5ia%Nk8_(TKb=<]u9L/[1&;Q\@'!kb*-GcR1pPRTD@i\VQ\U515KhaY9Y1bf)(4Q?8q#,c__=QXkcBoU#CI6q(%Mp;p01c,$7P %Y;?P-ckk0-5IK$ihfg^NNS($ZMs7+91>7`p8<%;Ne>+j"'%G!aT'I=UC8^sUEGITHR?M-0J']8Iql=B.PLI6+HcWtgep]L_aE1Jl %4`I[Z"%A$F=hRGi$0A!N!j-'"glnheE\hbpe\1@V1NO&4QCk_M5=?6C]h"don@\U\'UYc0,N7Y\n7Qb`p8W-F>cu1r\BK

      qRO@9DrH%2llKi&fbG=:B)+Y(5 %H/&O9NuFDH04cNC[Gd&8k.5#:24[MQK67^+QX$`W8tlLrofD@-8niEj[!K8>g7fqaHotI07kI*>Q6H%$>sc4U)mc>D=-Ra> %Y^,jt;Yp=aMjHf*(Ulds'`*2gjK^cf]_pu$h&9oi`g>;uneD\/V2rtW3Te2kXPPc/cr?OTGsD8(Y=N3RhhIulN:]T@G&9=uMri0% %F1^;b^)QKY0ARZ:WTjq$P_juP07)00&E>7`,=5VK9)H*a>GYK20?MJN8!@0Mc=t3"ORc$]5IKD`K:e`g`GO/-8p'-"]gnjNeXD2NMOpl0L$^ %m+OD.bQ%\5gV"mYB]Wa[b9R_oKBRmXqk)cJ/46P9\`lct>;nQ$AoT %o'WR9reN4Ha7@2kpWn>bO8gm2q7ct*+*[>4hqn=ts-iAi-29_)#(A-crI?G+4'(:?*[jf/TXJ0Zoo22a"94tAF/&GoaEQV2h[0:O %.ueOu6hS=PJ&(M5ho>f3qg:Wi5f7b!#]qbD1Z6+9mLhVcC'8VY[.E)qE,5s"LV[Z]pPn/qS/(M">O*ulQ+t3Sgqpi+[e]i4s6e-u %GFq(5rqsgK?NTGp^4o7a"+?VeEVJA)q#X4dh;)FT\!oHBS4I$AMBFUqHd'o%?qlUS;_3AcRpth2 %0SkHBnE/r=o_]P%o4fY?SN-Ld@]dWHdU6\u1M^DL35TC#g&e;fJC6[Je1P`%c7kP5OaC,[ZQ)n1p]15H`Xag/$nf>_i8A5q,THj= %ch8EUUspN*kSm!U)(#!<.eb"h@J3N!7]7r17PKJ)$Y"L6sdfDVG.FCFJRjZO2B=6:=%@E1F@dUD*+Yqs$LC:?m]\`-Eo^[oaQtq_/$?N;uV% %.d%Fa*Abe6_Q*^d'u6"ro*Vj.YfT$ZQM.$pj[n5uJI1JW!J]-2ni\c.cZemq#DNdY_!Gc*9#bdHIafE4% %D\J"7F1eCkJt=]Ab9p\/!N?&ALpJDT?9p!D_oPZm)MI$3RLDbQZ>Di[RliV89a7heC%?\c)&##_YR!T=qUbd':i7Yr$k$[P=7%Eb %I@\)8:BA&+BNVC&N#Vjd-1h?sh?4blolq*)-3l*s.%)>GHbe``G;>Gp?I($/Pld[WcP(k!`rZ]rQ3dBlcQ\W!_>rODm\aKL$`]3H %6)rEB+ugW'iD_f?a5`gf08:mVQU5FK&ONknT1K6dU1_g:V<@8&XH;h#YZ7T][CZF+%hJ+h40[U9a!]j4olJ1,'rIKAqlru,BC(/.V0H'M0GY9cP[WU&I0]pV %:V]/FpfA<G]G!fUk9]%`b0]*'1Yn(`"0?b*W63EUF-=kjc%/._J]IpT#L&23hGq*HbaAXnV)!,jh"1(D %'3;hPg+,0D]`+G-*uK9W&I1eR2o/No#$oQe*>_M6-bS"2YrfaoU^-kJ1"?UEcq;?p:"B'$Q63&IT7!f\d7D*"Oi3p]4!MG7bM+(Y!$5#EV#t>I)8( %!Pf^=TFOdY^u+)>,Qsiin,_p2c;2)'!Y[]s=X9e.8%mrDGSLMl$@nH;d7(%,1,+eTQt12Q_#Ehu[g>HUHU)sd.mTE,Q_P4c*:I9A %-IOWan^F23bhZJ;$Xl5V".#pYkn//RS7732S4902E)[tb!V7@_2X!XT#q-GLLbS;f!32Xl=7C8,5BM$U9-a7>Y26Pk38cuW2Q6:; %cM7P4BGH5&S8nQDH;:2U"WVeRZIR9K%-?*DFV;]E`R]fnQH'9"0J("gMg.j[5(IlQGj*N;aCd\XaB5g0$rsnV?fn7/q[P#Y!D*Ap %!fiBoQO4/X2IO7@,UfT;!%KsR=:.;+L[mEP#.[J=1o.T':l0iq"VDJ57ghY?6d9tbp%'+L%eNp3o4W[[cA=Rf`$bMb6c1esL:Ckf %ZV,]H%aHu`a2l:[4>7\1J7P2F$+[@U$@\!X]T=fpY7!#s`p+8S$tEu.Elsu=fVA9OF866oT(I7U5P=(Y[=,!T;K@gR(575k]1A4OPdSr;*rOrY6dP %5?jLC4IA1WL!^d@B)r9*,,@=$5!)%+aoq3Tk]m..8/b>P!(405cBSdQRS4T<[:]RaOcs?B)*u+14q'i94O+O23^"^\GsqJ8Rq5_)OQ)0kB`qWapf8^@g<_sr8;+"Y@Io`9#f=mcOhX#aE[g)o15F*guHca=]!-Nn74I8V?,<]E\=I!rS3P#$570W>mRRa %LNMmUN^Kl2344O\]DNpH4?3%dW+uWu:k?b%n4`6>Pc$VEn7=r&U#u`<6SZ0p']:cR:K@dN6+W3AJLR7DUqfj%!prAoWlc(KF&.37 %9XmFV7#8Q@W+-2r(9J`I\pomS,t9KLitX %RXed4M#n/6+9bdZ&@=p;Tj!!-o3_RH3bnZq3RigD2uAY)r(hdKs560kU&e?_5;nEl?gU&XT^=MeIfL=]'q'R@o;oqRr/eQpN5YMO %n>8M<=3Wd$/Pd)]3#0(HNB],EQt5=HA=7?nrf$gh$3]d":qs!L(5K4%S%P2#'JPo(=tMJr[!i]3:E'^-*\kA'AcP//2GKr19`]kI %W7BJJV=tR-aTb9?ZL96m2.@oE&%YJSDf#`Ju_muYN"SG.[.1AF(#>onu@j%eq=8no)r1AXjk`C,YTgS+58$tbln'FB!*3;N8 %copPg"+r?=[4`q$;"I$"2q5F30JP1.O&4k'cSO'iTKJuumW_3T$-uH.6I.F:\=bN5/dO70gHrq6e?g>@[4E`8:s22O/C^tu]L"1X %astoHcuTQ%/-r"I_ZKE92(S(O4*"V86IW=Q-2Q.P %YN$$PQX]:a/K5-\`11+l7*A=>qN`Loe+MnGb %RA=c9"Z'j9\G!-2CX#'^oJu"f=kKBQ48@n>\dJKH"J[uprW7$>.Ku!cf6A7pI70nGp#eX!"IM^X##LlaN&TDG_%PHQ %O+rOBG=[*R?h'3P/o\BL;fAe*ZX$W0"'1?aH?=6&E.Bsm-oR$)QlUIISJgb=..M?`[8WU'')X]hS]WnO82K[HTWQ+9C#)"6Y@$Vh %;l+X:@"qgd@i4?87shO<47bQ*O/C_2eM$@iq1$7gKUmY=")^;UZ33UGC,cM/aEof0VLlNGk]@<%P;8`%d/6\$=!Ij$1m`c1^T+D2 %+k0,hoK-RY);#7`3O6PDV^5CU!5gob-cfd`nd0bsa\*N87L835i$')d5n!g&7["7l$9:'r=J/VTC_(?&-CG-#@F%aQ3i5DDF_48Y %![h%-5YW@YR"pqg5TH?ZjYBZFM*!sA4?E=Ih:-t+A3tZC6q\)8J7hOG1RLVgLi39sVhP"(EZ*B#jPe5[fc\`k`44A!.#?kaSV*!XDhcW>t%0@1Mi7q %5rg$jigMijJT1uW(ZWI>!=OcQbibO2IUH4`2FP_*+RSW(:H@![/3B_?l>M+TN:9I`%H`LZDJ#TV*LIe%f?B %kY-Rna3&Jg^uA],S@L< %C'VT@!7:^"f8#&NFb.-8jE4G4&C;TneMfb1`#[bRhTB`'-7A1RAo`T*K9\l_QJB%dpdX*?W,GKdXlkYb9mM`F28NF`!TEkBAWtS=aQP=RRV(N=I'M>jiX#QbjJ0At@%b(LjGE3q-O35)INWdi4*^QoKA$RK_ %E3d.:M/?#1N+Y9;=WsAnChV$emDNc?ZPbnQWJ)?dXH#"sM1C-=h7^;AGu/J"UPo#8*o% %HI4MRq4H64TRqi/GXg)l4[UC[6"mVk^@5mboF/6J^BX\nksYQm6bKmUrtB,\:.L126(tlGA"eOgl=$:_YF!R""7CM<".pZPeTi`N %&eY-dRjN6]=$=df);oV*c@Gd5f"`fRI"$22J#_^K+,.g[*AZQVI0/]f'f*OfaJq9^1@,Ma,"*1j1&X8ei %#:r$c!qQ^'J8c@sg-JbIYusR^B4usm8'.Q,jUb/s'm1,hGm.mWjGPmP@3#OGY^@*9Ymnc %7R>_/T>5RH;$Ieof+,qC'KFE)JOKfE?OROC@X^m$M11*$]*uV3B`rbS;AS>\o]QTX-SGI"B:_HnH6!\["A!l*Y)+-.[(Vf)-DITl %p)KblO)f>;6QjM'%)d3LGCXFEm3&*sKRn4'Pl\.8p/uokNiHeY+#E9a0N+7Q(*Q0[AFnmDEO1i]?n_$6MVaY3)qA=pOO93uA1&CN %Qt84?CRb#:o;&s[_YZ'FnUU@99FQl])NknsJk66>B6cEs-GL1tT4]%F$`jPhOo>'bMnh)4=tJ&d`>ppF]8bk"\D)[n"6OLL)!EIV %,iU=>7sZX)!)kr`cUjI4ZE,1#LQtFIfET/14?L$;%/R\IA!?TEXd]=Xk>:fi=?2Mj>ibPmJncHmjYJQNQ5ktlR)5XTNl54RXD5Wb %`7-j++=!oPGlWjFrYUAORt5WWg-H=!gtooLd7=eJ'pW)8u?W/E<2G]aBL#Jq+IN([u(DalkA`uBl`$GEsEaf;&;on#QeYp %]%Km5JZ^r#m&*`C+Kn?(!3ag[+IoX!:2C*"3U,D&;ZP1deW%HS:6o-rR`4QbnuPNO6Fs]*X;[d'q9,LGU)TXKP/onodEAT9Z$$\9 %l7#0_7%GuM=f(eOku9u6SJYpEI8$@U`nL[iXh7D%\?G3Z1V6%OE/H3G_A_g]?jCQ9=n>$W@M/dYde8UG^4[poEp:T^*CTFgjfQ@V %6NfI+06g:Lh7lKddKBiROa^`^\[`o#()RTnh/>hupfU/ikIK@$5"mG".JHCs#:4MXG/+.!r!lI:P0pfiaKW_f5bF3%$A16:8X[4$ %J:%N&ces[b:*IW8AD`NdS`h??25(V.#*RYqQYWTnNHlH;QZ`pGQF@=eQ1@P_'ZnI+!63F/_b/=ER;D7L5"&Y&<]%)3#?pcj[d6>uY5BpfH#VS4[78KgN2RUq(M'1^^o/0P:b:E/`M)b0$9p %hm0+Pf$'E5Db79O7T(ac:$U[d.b[g9(BspubfX"XRMPso;s4G*5`ThR@,M3`=RE3VbGsJk+m!$C-:Me/=M(,pN[jkI5hk";Uk60r %CuDlGs4"FW>SEbIHD7L(G0j'5_TN$g$$]3'20"R`A34RjaM@"]a_,/8g233n==an"3)h_RSd?U[hr_#WPg-T^'[HfQP`pLt`4@@r&"^lG!km&Q %q7:L_q1T'.^5`JX*Nr;%)U6F2dPPugjUS#G"RiFIe8nW4`:h[G-K=pXI@se()T$Q %Nc@c+749+sFWW=lGW%n#Acg!NT_'(gOKBPIul;D;E6ch]>`nX.lQ\3J:PS %7#DSWm>J97../-ehq*jS`C0fX^*q"^X99Q[;3`-SnfB:o&DLkW"!q.T0e2"("Z6EO\RGmC#'bH]FVVUJCqt9E,phd;W#bY8fdcT9 %oHj",0m.;r7:-,A#Z/&7[u^9.l^,>fi*fHS)^<Ba:W[0Mr=<"d>HUg1cgH'aeI& %EEVFFfP=H$K"4hG#ZO"4[ebj=#])qU<^^?!;c7]g9L0;k9*.e4 %nf?"q#KUDT4RLWn1"j^PlH[;Y9sYZ2:k:mp<=Fb2`a>_B9#2738Y=3l?^,qqQ5bB`;QBl0\7r]PneB)/@u,H08?D*N7ob6fZ"37; %H(CJbg!bVK&RD6`m&32pW#Kbpm4"`.0=`8\:F^"8k_m6R;Ta:c!A"5NWX8o?Is1tdF(K3ojrRNh.ej.5=pO_:=SU[2^cBVB=%koI %+A9B&#%YY[L"u,ql*[HN\?I)@^a^?9!NdBpW@T_;433ZhPWC@n`4G6q&55s&Z?;ZIJgA*%O0T+fAA\iSXCjK1,XWuit %!,T^;.Pi68cH\2Mlo9fDSJ.[VFgY]SicS6?(fd]NZA:T;7=;D+E>7dSri='J-.,bhqtdBq!pqZD\NPT0J5Ts2_XiaP4Z1Qu$S2X3 %8UHH.]+LR@WY/'bmo-3bAR95me[0<6m==2_\6n3oR$gN:M,VlCZ+c]01(84/T$uXu:AIMTZ^>gg7^/,V5t0C.OMb.j`M-S%]ht5c %\V%G%Vc/"+!`eD6nelWOLRk1!eZA'RWt!@Z17EdMgW$=N'Ue:/^moWo@?=gCjgD1&,'V^4,6BrV@njUl9DV@[&M3I7P5AhP'*>k< %PoqBN5jP1;Lm+n,8]`BT"Uh[S:E!h6E4.8?OM##V)e]I+VFnQ+ks2U:NfSf$,cONEO.;UE/a6nSDrWKNW>H@+9(g3'MEM)gY9RmXOTpp4iE"$L_2AqJ %GKHi,QAua)3*cE)ZmJ(/Z0aNEU'(&\$UceeK,XLi+t7WTc-Zl=cptZPGTR9Vc&K9W-GLU %OtGU*hoVCEm0nQ[;\GDMV>=:RofPTL&ZcIY&gYi*KZ-EO&D+LgO&`UM2!,-rDH:S@@r7*TNQN9hZS9ci=Hm(sC2uSiac+KXf-^Sb %Pa)f>$B<.V2Q*traN'Ro2r@Td8a0^_5[Y:iLoUc+"P.3cUC;^U3[Z9*CCtO:BbAeR>W'YK9i%Uoc]ar!EoiSsKSEX]:2)K7c,sg6 %Q&aZ91SpBm5l>k=#HJ_g0(;-e;Xo\r9S28:)$3uM50\XP9K"t>M %i0q'*\uc3f0R#2$:*u^!k@aUEPiqOL)(VrT\E6O[';#@0qQ,V#VCet7AKbR@*Z1/A9rsLJi9Z`:kfF/nXX`11:GA/*Y9KMSkGZk( %6D?s@i+4O+.!,_YF)G+52_dn[-9d>\Bq[(l'fTB6,O!G>aEi,D"/l.Dr:)c3E2arQD6%&EYB+Wf)`5W+;4!1Y+bZ#3i&dRhU! %K'mY_49h*C:T[>c660#t2$r(DnMf_'eib)-6BLNL69F*>I4Y8+I9:;hhX'R4k,NZ&M_

      o0Q0%Ffjqs7=S'nW`jfPEX/RBVC#m% %WH4+q_C>Ot<@q5i('&TZd[R^,h\F,LQ.hcF%'8@s(XgU@WegdF@ %V>MhE;[A)=RF&aGEadC88Jbi'k3:(>[O*'er1mTREZO9@HR2KI.0It=(%tc%*%E->Sr-M<,CP_uWcM&u3/278:25o(B4ZRgZ`HN7 %.LiD95)r/J?]KOHV:/)NWJdN40!@h[8RAK,ugMk!0YT")IGPcaXe>^Hrnu:0Eo#Jg;-`fjW-e_j"P1VW!_#YX9ODk&Aab@;`-8i:o?tR5:U8X[Xo0o %UI(A9+rSW(75V$G3__c;!)U55`(fG7W$#2J^SleI_BA,."O?;Lcr$LR1WNlfl$>3O1%A;\KkV/63@.K,\6bk4mk^.Y"BmrkfAct) %T^''a?)4^-,Z':t*IeZ'Wc_,Mfiq5#bq)JtRC=3+V@sLC4.Ue/?K,hBFd`LK1[s%3%4Ni%;l6#+ij.)ERS#,1Po-@e;*7gA'\4!@ %X`e#>@&^.G,Y?]UZfVI8>+s@+Z688cG$8i/g3!NaF]UJ9Hdt#TQN.(j2=m$2QeRE5482>XDl_W+F[i3rFX&m=MEik,XVI(aR-o-< %:_uM.*1gt&W9\`Z;Zs4[5@WU@1[ij[W:H-_X$'W:#-YYS[ao.nJ!W`0WCPKGog^Vl^)iTM3^6"9QF^@LQ-F_15n\b. %!3X\j<$:&f$t+84l4I?;R!(%2(9O#eXI><`Bku?*9El`qG-&K(2S8C*sb2TMdgBJ]qT#Bb>E,*HBZ=hVRk;:u1amAl:d %'Ea%Z$]E$]OAe1Be`8:Lj4lr%Ytd&XNFcsuB7;Jg7:N_pY01HMN!Z,W#[ODQK"]0d'tu#Y_$poHEDjX'-!;FB&=DYG6f7GG'FmF, %\#;iU%Y-TO?Cg?m9Y&"rHebr8LXF$t&hHM#Ze9*?7b.PqlF-OaM*!=b9iJ'KM_,+[-]KGrmq(lO.J:XTYf:CYYo#;snOf0*h3WZ2 %56ft0.:TAZ+`q\]'+0aBBTO7*MKO?tiGqgr%1YW?d)=("kB4>#"4)9d@@[0^,U$jVTW8teU;+&#QM-SoSN-49N@+A7MVXkHV[TX^'.'3V\d1pm>kQ>`JA`WL=@F86-f'Z% %e:+5VOF:7dMD/(n@1F3fTmB\!<(%#tRH@J1l/lDt:<*DTRf6V85tb>Y6#a>Z154G#6mqS$%2#Z)Rs7:RXT6+(]&0 %p#H3BEPVoBW%b2\N2nWO(uKm##p_;J-YD<0*5>fS')Y>=dFa-jTm(9m5.*"p>osl=VZFTh7'C;JrFu=&[T_ %os#cpE1SqFP8\.$+H0@5Xh$6 %%YDZn%b[[:o3HhSX01D=8-D"C:#@H%cQ%4iURK1%2Q=D-;+#c)'43<. %c`ccb8WU/F%(rHO',MUhR]BZa<"ug2bC!:ON)_1P"+@\C@M)`sfNgS_^>_s`4pU#?S&;6.ED7a85kS+eC^uY7>MYIC+*nLM./%Q1 %r-9#9am#DQ)JHB4M@,pBKC0V_r/&mNcm]Ni0ELJP#'GEjIY7?`X@-uONFB[9BW-`",9_8m>M)6/EeR8WX"V[+NF`)r9t(C-Gn'ou %,iDYDL'3CX\rjqIL>lt%W+mG->u[R,2V5/U#t.5maq?Rc.Rce#:m2_m"B/%Ga,H:6cKQ9=>\ORs$Df1#&1fccdYg[V@'1Z)W1RNU %_HSYY)RS-tN438+"L3WY*Jil3%SNSmcjrPO03PlsK;;gZ=P%9*QlHf2N8\0#S2YY3r[1@i&M=<$c2BQBfHL0&E.dm%GhBacV+(lqp4T=p$E3O%!MiT@GiX8Me:HKO0tR*8\TNV^2JWR\@X"KSs4E %0L-a2I@Cd:*TTgdV`Fm?.>a>=U,(_nJnIiDR+_J4?oR=2e/TKR-'F9IZ-sp!`Hn2VL%oYOgc%l?<*>0rZnRa.Pnus-TJ/6`j9*Y4 %QpmCm.RpVXdF=VXO6^CLq"_@43._V-0roB;*#oF;rg"$J^Y<:R7.kg%?YDFBjUC;aLeRO'0R?Hc?!]`a3FLO;_SI>se\CEARM%N[pG>/Z]B\6)OK13P&Rg_5Y$;VP#9('\%8] %,+-([6]m96<9JB,=79+F_.&moR]k5em;r??3\jE&.t/p.1(@!W?BD)jW:%<)16DWWY0M>N(/G?;C1^9eB!+.#*(@QC5$nPL(Bpg+ %DrNh_"`/>g<9.W#4n]G#1'?7,pH:30Y=ROYr[iJno*)dLa&pmmMKJF%u"4=bcbq?o8A%3)7[b:jp\IA\q^&Q@1/4FrSu9 %4GcUsqk-qDkH,.XP.Y57e/DCYK)#WTQ^Tu;@hi6Yah+`\ZO6&L6AZ*1Egt8R\+i %8p`SBJ3\i,BWt'E$YWl04D:0jF-qNGj!cH/Zbt?3kd#2oe"!a(DFpB]pGp7TA\tN=j:S?:n)*ul$KPjAp_fYm+0;O"1U;*3i[$(U %Oc*.o^A?1eVt[!Zf(?jKg!bJL@#)2)ZIbGALlRZ$]C:n5mj"U-'Ie+hu@RFpIiZr=d"`emEH'*I"?O#`]Vcg(!b/](Cl'd@-5e"8)auc %`D@0NMb=4C;6[5UhN9=?)/7j#>jF[FG&C[^<_,jDYNat"Z6>EVM*OfW5sYq4afQQ$pU(*CE?oL_+lH98ju8o$!1Pg-$3F)^nj`=o %Le/r+)K!hrlsrS3J,,H787ui.^hPV@lp-!S.6LejQ>WI1+G`$aJ/IFb*OotoSJkBGVj!a2hNl$mkX"JG4433M016W3'U@4e#7-[G %=3kIj/EjMVQ_]8%>r3C7X.QK'4X*]h"4Lb]o3hGb*'$QaXPP$s>$ %)kf>iM1bsrEn]%R`-b,q_,cU\eh54X*c>7\X#]GGC-7P-)CgJL8R+qZ_P4a?b-!;Q6@gB.Wre*fbOm^l5C7=W*(P$cMgb^+TjD7V %D**8'k/c@S"A$[W:J5G$9>.b#g,0ce"M8Xl6QZkMMu2gY/GJYTaJqd1('gK>/BK/fNgsSP@JTIB`CoE&m$s>a%?Xr9mQkNb9NaR; %(f16QkQPNF;`P3Z*9$EsTA.o^Ootjc,spZmMj_e&Q!Zue[k,c&8;mW$mo`[/W#T4E0NXJc/R(V/^6NY)hY7FMO*r5)2$H(8Wa[7X %irDbMlt+2Y4>L'KB5rq7_7]5Ij\p=:$Y/CIR;lhP5rp'WHpRS\^6aQ>]Q3fU[$$E,X@2jc)bduS@+5bMlgmN/-#Q[BPbJk[5@c]E %l,1jah[:gtal^d`d(B2VU`[\`A<0+6!b)\]%hL"u+f_tQ$.&/IACqU`8%g&9ErH1^1bm0?k@G(6nc@hLO<%Wr/"0&_poAH7"dT%J %8O/TU4bZakf6i2fc2@'q*DC&_&"e?'^j!ZEP.Y?rXUGpb$R?!%6EUC121<(5,F4BFRPE`_%B1Au:tI %jGZTV_#V[#g]fZ,`m=2XL07K[Z'Ia?r)konTp:7^a8t?&<*t`0Ppe6*"7'uA3rUPap)p]T00PE'`*AW>l083IUs!dDmHl_'`\mtisiSO43*V_#m=Lr#=q.J$:1JA %,96BU\q8PY4L8!oWiSO<9E<;7bO)"H]iso+a9:jM%hNs]Y`+#0/??0-WH$,BK^. %&.A)4!hn2_H(tBS?_EbEf-(5bCRrtmL[R`/[^@IY2lYSa&@@ODXE%uYEAWVraD(1VPFtC8hH`1"Y&_1hSNNk %N?fZ7qp<`bCW!H>/#e>C;5eN5W$)ZgLV:u"6#\&;V2WmMs%qsM'RDN(P$Bb(4*isNf]0hR-S+4kjo/[dAU6[@8sqko\uT?D=f*Qg %R9hLt' %\Ts8gmL=\ %AK'W=S9M8F.uF<^k?,eO1W^0SLEQJJ$m,`iQpVHph$ZkCk4iqmA,lqrf+g]F6)\opt,IWE1gcLn'tN, %mP;K85h"0l[,Nk_3RB[*:8*>fG.>=&e^pE>$6P,`U#LcoOcRqB5r*VHD(W+7j4uV4bKU_"ib7 %E0ApW*`tuq7PJ*0C"W03*]FLT+MV.4k9@$=lb033?.g:4<+peYoH)0\^k[ZZ0o>H!s+,Ih4M(jMokO",l<[S*D;]C5eV\UMPGsJ= %(G-a`>Wg16Mr'oa/$7ut\Xnqh=g,mn;\mOS7_.&bF`tUr'&BaEJY@gN$<+l0i)"S>GXVV#qf&bjc2bRm+TirX-nhp>YDf[0\JqJp %*)#M+2dE@C$Un^m=V2KXS!Htg(>mV4W%/ZX#'Rf4;#,Hq0Vhjjo5#t5f#$EfMgG&")oR"a]Kc"DA=;4Jp%n^f*]7$)[KM7_Uu7;5X)Dj=2eL%+"E]FKq\(DOK^iJMiM(KS!3).pFUJ"](<>6\E#aA %?W>Ve_AL.IXI$5t[9.E<*"+ji7J"\?Q*>9aIP;.fn\_oGj(emZ4A,7r$]Vb(jT3A:ZZ<0F]f7]>04><\>ofqgBDV`[XKH])SBM30 %^e3V!Xb:=i;9GoiptA$3(A.Pr86NIa!EpO0#5>U-@c9PM+&N>M*!t`;).b\>2J9Im\N(I2&!6?5'XOlR&5R^+!R)`<@jObicn(c\ %V@HdD8J)3=U!EbJ6"gWrj[_r1_rV+_!R$OX3iBA`0Wr_M%m"6YBpC7ci9kpun`;Spk;\1l0N9<).!0.H?sNMDZ%QT,WP0VYKM5*8 %##ij6$-U8q&qda/;DJW3'J(EVMTNk,.$fup!jAcG6-eL2,i)l[,\ge6J;>HAipk1r,d))XK+s>3@Nq$H#`edn\5lOCH%t*HH#9[: %;[K'r,+hI/<\=fN:5T]'86GR+-0/AVPR!T>ouaZ[?\YK$QEDL!.'Jd=A.Dme5u&TSKql4sQB>"]\-jjcI>tF!ISIo^,)PL8GZYC[ %r`Ii^P6t1LL.$4C:LXgg\m9mGZ-.P,f`W7$$d(m%(mu+,PN0+:Q_H*lqlm$9osK3fi('r] %1_ufnW#9CS&c5aia_IL?`H)*4*6p!CR5@/_l,/co1U[$NnLu)&<#PQ%RQ&k %00d6D<=:k;185ecNIkO6X=Po[1aBQ3CTDE2'h1AtG%V4PjB\*Xh1Z9lL*YeUhnt".`4P3dKD)j %5f?43&tD-t"p_kRqVjdhnZ'h$5JC0_5/["CA"i$?%J#$8*/+X9QL##33@DbjO`P_(,X(r1s!V!;d,4VL8W!CfZ51thj'g5rQ_#$#5%mVIcWQB2mrPX&=>V?GWEqd#mhY(WD:i"C&CE=at9 %agCTN5H0efcnh`8#YWr1Vq>&%>!s9p[WBe%j;b.Hd$AsI'4cL4r$<6mq,fA.5UjN5(_Q<@^oGfJV/$/\"cuPs_N?N#;&Lm(-sTEB %:npTZAc;a4oG@']8Jmh^XEi."/*/'oa"n;[!Z/oZA\-m-C7&(.\ %acV:_R4'X(d;l?&'3b%T4:Q>RVIdeVM-f@2E$[g$(b'6VF!cO,$'nt(,qKU`S>&*V %D;GS/aJV>?p/!A`IK7cDaXWDA^L;_k4L5c`C8!qqA@5cq3.?edG+o`rS3/He'diQMQshHdSOt_CiapO5SF'PqSg2iC*6iO+d'A`k %?$X4.Y)$AHY"6F"I[`8)hR,d#Mo]p_f@TkN-CYRd@c7n.%>;/t8;kPDpZMF+YqUM9X&iBi//t>iV5%>_QMVp7M%BHYb9L:#M1e3= %RmC9nLEHWno^sqc8k).i_(@`l&JItm$[ZU%b"cHZb"G6%[SPTFR*4;(IM<0L@cb^NOb[Kk[$WCr%YKb$Um6FK3&r+-aJ$kZdA;u;#:Gip]RP6_0X5P\)5d%[")'4e^ %':Fhr=_Nf5g.,W2g)NQ_^Y'c%P:7bF-sr(:2:pF]YX$[o+@oKZ@d(+6YXPV[V(4EGTN(J_C52jl")AMrN)_AhZo'/6$Z.i_X4,.# %7ajZ&KQ,T:^h)b@/*T[s:Td0*4`fkh#Yk*rN/5c[flg*jUm2K^OnUBX8n`MB>h[K0OBmtmPaCK`N8n\0P[jUp*M8$0'Z3piTu49< %+O1KcdC$2&9j\5&>opX=kSDM9)4$\G&5%YEEA]p`7EiV$n+LY';j>WM?t](N3*\T[^XX8E'`j:eK;=1I6A4o[S05@aD%TfEXb=,\ %o0j(7=00p\CV\HiIV"gj5I]$8<[lkGnb4.h\^H_=ebdd+C\p]dM=H+_"c7_iYd#7USWKoFOH4Xan"cFBB8A$I*^:%S%*_;tLs%;R`eA %(=tb5)2lD(Kq$knlKa;.j"t8I^Zpo`*Q3VC,:PA:h>S^jtD6=-09L4r)KJ'd.$'i"R<;F,t!=@Z,bIF4.b6M&H %0W&?8r?+;K60K3Q:n$-qZSqGfYq2YJh1t&XcAN1XFdsiR+fe\btPIOqbS)"AJWE),b6Ni>as%d8'Fd[ %ZGG65M/@A*!THQBL$jnW=g2%oL&:pe?V[_.3s]u5G"#M\*gIGe3N3HrE`t&+JY:DU,,[jq"A"3f8nu[Qc%gq6(_%#]=ZL"(mI%Vo&Q\$p/b\;SS.J\SgPP2?e3^]1.Z)$/ %CJ0+M/L5Xi?aZOd8$$6q'OZ37HHRL=4mAXA.+SnZTSR6h^oLJ?.i<+(l=>$!$T%^Yf"m4#;`k<8[=ZQkL!aktPo$,V5YtFTCW4KT %LJt#cF=9o=&-omP+BuBf/BmI9d$m]p7Z$Sa6umXW:,0Ibkp.e3QW?\NF72>?*<#-9s-r;j:iK_&T4$ %L+?!$QGW'?N*EKM42l#o1;@kW=??M1X/Q5d^6\sR8X*,C=X(STll8fUUdU5pjB.cm4)lMkije!3al5#LIYpY>A-++oAuCXpjT4$i %)df(?la@S0_Rk'f/i@HgP$8[R)1^]4k91p$T8bi/koLj?q'F:r$?9I4Ue`[ %%MuZ_`1T7Dq/VTB)+#H0IT%!t>Fsj\j(n7H#,1e^eC=)jZ_1D=1lIF;qH>2&[-9Tl^d;t\68:Wui/=GW#/'1.Nt?W!"+k.CQ:5.rq5e!P-5J/=Hu01g %eXn]3#!8W$AheI\JLs5C]u]1bJD.[!Z`M*Ao;PSol"qf/%&Ii55)D=4c7@NOL5k,d#'=576GmJ.^3r:HM,4o0cnAZ2&tq'//jHZJ %D-"YFXW,31%FgPT!C((#_daiD#/rD9`7ZL>J.8CV>%j!p?opBH7tgL7UgN0f<7aSgBEQ#(>7p*4!uQm6.uSG<3?;>Ulk#Ql8VI"l %JnM*em7Z=,d&N540,(Q&%rP\'QUFrn%YJ>d.i\"\bj8+?U8i5i6HG"7,*W<hV^W3Wn.aG28=*qkb`,Ho.@cotEgZ-T %"_g&qo+^dK6di1CP['Ym3a`WB<=VJb+rcaC#I,6e"!FYuS-MI9BHtPK?s8*Wg;'q[qKSuM4X2?Mr`Uj7(=f&EF(7kR@$I\>^(Q`7 %S2428f2AUi5?5l)f"qH^X0^!1"G!0o`B]\5i'nO+iu1;][WK9E%I6%%0]%>$d(@f@#Md2C)6ZTi;=H:mVuX %@*M3Y=M-DS(n!-[3mf_^%:Q8F)L/D[/4,cF11uAX.@I-X&*SBqrO#SWMbe4Og!)8b[#,*>BTAd(Q*-NK?Qk]VBkQF>&c\RDW*Y@f %#lUUsARWVs]HtT2k:"mT(%NU^^mQVENZJkfmdVg,bQFqG2KElZ[ihiZRQ<8sng1.[bHTZakA %)S%pLpu?,p@DUJ)6I3jub7?j=HYKX-6\4\U;i>H_G#E\9YB6N%P4r+X"ct6^jG9CZ91o\b?u*\`\c<7_VsP"AIX#?,=^Q3nbu(oCN"[(U&0i5-OlNKf[8.$[c1jiS_,G)^P\D:q`UfB-H^c8muQ %Xji^QT`brgA!aBA9Sq"\Tn07uQ).E;D5Ngh*U+uOUQiFfiF#gTIHau3g/tB+5j5d_\GWbb[B:htFHVWGMf**oghq4=\MA(87#PYX %AG#]Zp*02t)="m'<2&`BO?hDj&K;]_Y)>rFRanM;W\2l>ncc1#]lro>Q^fC1P5AE2%g[UD>&e1EeiK.O'L7ui<8u,@UoEQecI_K\ %-u1CS5lY?!;!-<.KPrLP+[a7t/K-1pYum>OW?RP.B_]qO %G.]IbHD>8p(GoM:OA2.*&YZXh6G]$gf@If*-s6p,4/k>-'i_$9Whch!ipU`LiY %U"&M39Ti9$4UO(>G3.GVA8YPb,-!C1CN1[ia!e6^qbOI*S0b`+GH"K&6+#X(QKPD/!cVGHpl>4`CB'H2!?+E]4,<, %;W&5U;F*(]da"^?@>Xek#OL[.+[0$)TGA0CpnSphXH76Z7mG+-,fZRZ'sS]-)TRG2'Lt^u=AiXdZV7As?^n)eN""3uE3KHqZ0!=9 %_\%XEErElF[q9%To]6NiFKIt-m#[cB$OKf\Ys-D`iAL><()"4LrR/*Bj,8\85f2e!9Wio&RL3TIa6#WYjj"nV9j`dA09'%&SlL'/ %)81-W2-=9_b$l.?b\F%Ymq&1I\e^/1/33'lCGV#_Q&nuP%?l+[""LQhC-tFq!Q.,7Nk?!W=B"C?mnpj$]`RSb#3&Rs]#n%d(I?t10 %mPhGe$3hm,Tt&>:[k(Lr&/K6hU9%+'23=XD@Au#sH.iWoTXkos4I$NM?I079YQh@6@`o(Gj3u*b2`!26agY=(`(19@DWTTBQ<.LA %a23_\UQWbc2EXl,+E/kb$N=(DQIE6P@LROt[F;W$96VZ %<_CUH3jKjmnd_\3kP>m%`6*r'#?QR-r8a:6Be8U2O0Q3]MmsSiO=Big/"2i/(eQR[+B=q3_`NKITiUZoJ];VMP*CcY1BZn:5ZCQ# %E%?\e:pTg521QbBfQ$Lj&d@&)=C$,COZ\4W"MW=f_ %m%^CNV%5(0.nMG>r25BVWJS9fAd29l>H=1Fe]\&`a;5enQ:^(G,6r'0?Yq!rXdoX)/n;%pf/<0h-?Af,o)%k""J![SX>13R\VLoE %MiA^sAiA^\k%$9kZB:2.Oh3W9kLn&b?'@E4au!ttUc.gGS%5\#=g@9JBM5dN1GB^dBCn1:[& %A>o8BRS45*X:PgFM'gim$sngK_kP7rd:C71Z=l)j2C>poRQMWc`fCFLO=$/^PB17d5=rh*dUYM/?q>";WAJm%eoJ.IF=n$ZQO/\> %-D/Kbo?8,=RLu;hKDT84-`>(cdq%@(@-VI3qDA"t-FeYr]L"1OU:"5p'sCJu!GR-;WQD6kjC"EaCMNE$2&Mu5fV0^[V4&B'C\at[ %DQ4)V/F9CN>Q>j"7;lcC/Q_PK[`8QF/%]>Ec\$61`[gK:Ck\S)B]M1=E:9YA5iJc/HuaEpY_e %q3h_@9t%eP/RY&5YXLG%j)&+$+MbRNt)'"Zjn$0tC\Xl3pk*oUeVOV&!Cbfs'Y]2Uh]:0etPC2:_mdMRHp]MgePJ+WNF5GtG %Dt9f%0WhNeAT&6lY@iQ-1<;Dbk,3IgRiM.rPMO+kH6W*E=nF@K`>.E^Mjo3Ja1oalhl%#=;+Y/il9M[>_:i&sV=$XU6Ge[r$?bHa %PnFPn@Lhe2&'aq^;mdn5(Sb)6c(_4cdB&I-QdZeYTP!;FR*"jsApooO[8cG&/'SDQm:n85atM!X %1"5f+R^HerY>S;mC7Eal<\!3Y3*6b'_l+_NJ_eiGO5VD`u-IPE2olgt-$2CGGrL\Hl1XJ>YuidphuQ9)rK,$AJbecjBr=$r3"hBSkI,rQ;O=?+Dfl><%oEnqk5r;uiI>oM!_5 %:(>pT-:-,aR8fApC4`1[8S?SL^1qXu9sJCiM7;&4FA:,-25n8>P->6ZYmL!+(/*?ZHtF&ABBoiRRcJ6_1i;P,h$3S^-;E7uV-JY% %Y";SOK@I%8i&.M)-><(@'R]XrohEg0N@4drA:[ClK(=F=$/lM*iJ3\6.rrNS%H7M%@[g]/8]97.D/9hI2Q.`GBHp^qP>*gT.H8Js %a^pA>F"MBD"hn^!EDB>S2JG@EKV3,&6UsP>9hNh_qU-/0Bp06RJj?_0[b@NgSY0q=d_/Bf__+m2/W4B_\e\`1$G"uSnZe6'Ej[*/ %A(/g&H]3+'d&J%p#@S]SU7o0/9Y5ESUrbdsFf %cu3Of\+BUNE=Q7J]hQ"VpLgeUsJ78''X(_^^'9kK@k%ZUk0N[D5*P6Ic$(t)q2 %C%IE[EgAQX9q"a('"Og,0P@lIs:W<"UA-H^'#W::i-?tBuE#;T&7nmTk %[4Fop`haG.;k(^>Q0tWn$T6$Le`<371/k;dZ)SYE)VeF.4BbJ)XU00R2,%=$eupDbfE@OCPBX+M:pu\7XC=@tj[bm!;k)cQCU1=L %@-,9FiO@q1_YZ,m.%jG]Ve %QY^\>[TG%-(bXQZQqcG][2bY\50a@Rk6/t@P7_mgGA*1QFMpc)A1sK]3c2*q2Yg;'Eik@H=doi&9t&Y#1[G7"ll*T@:t*Rlg>K2P %oA)=8EMlo\f.ubpm(=ngh^7B%P9%/-,MZ`JDR'pOnJG&@*k1s-RnUuj=I1OmjsHGd)W'Wh7s'AXH@gEgJu-'#B>'W.]!,^(fX0DW %gJ+"%2P9^`mdG]S]L=5t5PKEI;r6FgT3sj$ZD9GTe0hfY>;Y_!3qjE[H\3NVaX+]fGCE5VhdEd_AA2ufj>Zo,-b/o?4T,^YrsAE! %r%JYH;LU06)W9b!%Y]o9P,`c>LJjVf,`H6(8Q*p]hVe.k>S %[7-O,8=DD/`l1[?Xb5''R5.WFAYKf1ZYE.>^<;sK0NHqr=;`HVS\>@"[-Y,ohDXNDk>!EE-P %Re;@]C(W>h(,[T^2/=?mX!T^i.lD)s2=!.p<-Xk1#1]dpeZ:J_/G.gHo^/`au-GNoG>Acl7n^'-!l^"O;KUQe8cK@eNo2Y(J-:uQF5+s_(:m7^=IR9fe %r2<2N1dS+jUgKQ5C0F9q<"hO)W1kVPV4&)t9sUc*@]Lg^^B"94]meYELU6Rapf+);FQ9otf$$.)jL %Bkp;jWg:,]g;]Y#6WumArN/?u[uO1c,+`RIe4n7WG[F?mdlOg %2*'omDo,.;g1fMDX-r,&e`8L[Zs*H!VOr2_"E],Ti&@[T0BF*b$cFTb&itS2iS1WiAM[b>EC8`QA8:qk$#sLjcaWSf5fHD9M*q"W %p$$tsYmth7^Xg3*/>&IrGqMUX^KhHked8@;>a8CqPV(cR+\(D?9E,Emjd;J#gUq_iBi"?\WL9`FQit0[j!eo6L1,@/=mQtJ-=Rb5 %au5d$S3N)E7]^'Pf2(ZYP@W0RU\$5cEpH79WXV?UK;oG#Gak^ocbcCVH0:Kr7?fqB+MD!A%0o^qR#4jB*]NABV1->!rT?J]q#)9M %s8&pGeus_qeR*6t^Uq1h^:UoSl0seR[&iRX*;oJ2r'bc+Vsf-1e'!ZmoU(7qQuiJ%iW9reCHbqs`o3rq?6WGCN`mnXnDLB1_lHHKt0!isXb: %?G>GMs*ap$fZA(Q5(^L`>MJ[VFuqlM69A.*^EpX#]Y=8gG&-[!>MZ$GcS'bDq/1A>jRNOoe'3sRkPX]7pu^E*lh#VG2f%!ad(hTI %rmR]fDeHP"FO,Rup">sE4hLXbkL3LIDAt68V^pB+$.o*Y).1$.gZ72&gE5q>Yl0 %3ar"'\ocPV[ntCfhY"L]^Ra2O^-A7)0'c^_]OBDNhqq_pSZUTEL\AEXX8d0Z\Np=r(jf"^]&V#2SWB6[-A6)c,n5\Y;^AQ %mcH'h0C](=LTQ"!+.o1?=a[Qbp9p_:HY[PH>I:m5)Qhd-CX7ISf%unNe"kW'rq5F5m1Zi#AfL9PC$s6;[*V*r;Pm.f/LHmh6F0:9(grNf?_e#?_$,.2UFMNRi^es-(FXeSY$GJU`V8IX\m&\ %=-NX4l+=EC02A^3\W+4q9@$p2YNI!6YIE6$IQ_&1Gl8Hd`?pLRgDBe4Rl>93muF%0ZMtlOE/,5,Cfn[2GIMKccd'9i42%0Q4riJP %#X87@Xo%ehm+pdfm>HJoH?4L`4b(JRhY?TBgpE1k2qN!::-YJ8_i52`a@kaK5dR'<>i+98kANSk\NNmIqln24jfA+pr?nrU'BX6% %ekE:Qg#]\ST07:%2g[L;EYjMr2JC9W4#mfD->iRNfkpPW8(9i=]=GGcq_l&>*lB(Frd?s`^V1RRZ/c@]tp.;X7Mm*EmG %[>[!MP&/EAb/o:s%O1eoO=;Y%ZE9['75ei]^%5D)COSO7p09<@qc_"BVr,d'Km.PA?gOEm#9Ha>NSHF)nSR/C= %BRJoSkO.!FS%FN$"Y'#/o@on_d??Yf"Dt`[T&Nk"\I[=[L-F=bp:D^3:>5c6ZJEe_V=o_=m7.S5>tH4f2`I)D\*)rS1HSe4'Tl7r %0.p&`a3/YJM4orAB?oD+^:nhNJ*P2<]A]jID?Fa)6XJ)WaQm\\aKCquJ%<,gp#hgfS"Dn2OD2#Xeok_2HSV)Dr3VtGhoq[.)V\#) %Aqs.dHb2T#g6Sr7c-e&LH)],-af_c=SO;0rh44Gs.a)_lm*CDYmrS2()u-p'q\sA4gO:Em?=[8i,gEf;G3hcR8J["mZXXOo5G)7h %T3m%sIX-CNM)i7qj+G[g^X!B-I;C-0Dg_%DXoUO_qtOd64HG`FZb_[2p#qkmF:QQeAQsWoc#1Y+SO:^VhYqhHH?Oa[IXUsWdpI=_ %0Y0;>O.%)Vg^3:[+obiLr2N6$c>>H;2I?KObI;_ED>g'8);!e)ms26DZ>4gD$.;3@,2:/@m!&&"G^#7[A:nI"m2NiW(XU`O!4,o# %($+Mkfa&\lk2PrP'E$>@,7O&=D.70[H2V+7o4Kt#l)mO,ra2:icGk\g'DCcG2m;C'Dn+a<]X$.qkN(m\ft4;/lbO/*^f@j+Gh[,^ %aY9.=][s>?mOm@7d(",6p-oAVDW]\)2il=IffI6EgRG8>)^8ScnDKMRhbHD;0pY:AhVIG`7Y`$ls6sX^lo+fu)Lq?gD1)#oYFaG7 %H+bglW('(c]6uN"jRi<.lL`K&@<[ulmP+(F0O&/eS37`Dbl!dnReL;&L=m>dmuoD,31jDn%u4l0j;nsEZb]\Vm>',RJ]#]MafZXV %HT4]?>kW-(LM>gc94Bj<0H9A'>7ZL76Kc^ZJ]#]Maf_1%HT4]/<42r?UV7L'bQ^/J[dSK;"qEH(-+gVKmGT`Ng\Xk,0H2R4D;P>b %$lil.96P.Spg!?]h*LXK0Io(f?]R$u]>to#!E %;S3r']`#.(ZY[M1]PM1=I_T^5nn%E8<=AZkinrpchd)h&GdU\[j#1@M>dn[Yd?EAWJ):5k=l$>U45]H$e]g-!M;@0;R5oB$:A",N %=&?TSD<%5OAP_s(V\Js*G!.]T&N.[1X[%kOXGk5=l>q$+`=h6HVU %1#&Ei4fn>O..5\72Zr]Zp>P(\3-cT@hUpNNPetOaW$@t:]5KSgi:eDUI0b*?6N3M3YO2#sm6et,iTf.E&FsYC %Yda(=h]rBpqou(N7lP;XI,"@Ci:Y'Y2t,mqC>&<_@)M,SoPUn8!O:GZPFLlK*aI$0fue^RhS]rfQ^9YGc#)Y*`D8_UV8"+DJIcsJ %1RE%7hLXae[b8)K\nCJRHVC?l-M)a4[6^\-DXWbC]Au.iH,\Inhp_V9\9`A.VEeV(\]aXV52#l#2P"3PIr+1WXR:dg&#X[I[e%.B(*3S!:L*(2!h]n %:)n<3m/8hh^WkVRo2ug/Vh-\V4/'C$'C,I2<:6Cql7)=;4L#UYO)SCk]ePQXMVN8dCtn)+T2O8AZ+KONmQ%1'q1(t]q4;YB[lC;"s7u<[ %c#6s`IaRTM7'kRTp?VibTaC'Ao!co!Sm>IionW@!N=V((\)oV[c+-Y0jPO1U8@Er_hn47+pA>CniqE:r=i8[?# %.9Zf-1+H)3T(q/!gL\k#:q>K.SW`T*kJoQQ2egB]NTi/3-=sgB/c"eno`fBPI.bCdaNSSMcfaVVLK0Q!nqYhi^.,$?(LYYI*UV#< %SJn,tU27*J[VJpgN]K&W;fQQrDoge7Ylj.WXtB[e;r_Z$TsnT4p.gU\;e'%&)IJnHG'CLud./V(AoDQ_cgFO]s*A`@+0EdHcQ$G? %dmKl2O(K%2rHS24r8m>As*]*?I5YGT?FoI]rBdj\NnT&5\aB^fi]WUTQ$N],PNpKU5_2K-oaoS&UdPN=jjNb2?d]"=B6=Pdl'>5@=Sk%amu8/FL8F.OiheIs0Eg/Af9BrB?C %hVJ2+mP=#2]AuK;F0Fq(qV)3tdZ4*J2ouTb]3:]8`:'9%H>J$l[N%B[4ZVl]"teP=`u;(-oDlk'Qb6M>,Oi(X'R-s6p4S#3h%PiI %bf9MGK+t?qI,#hJQJ<7c`:rENhV?jGF)R8MZT%[Q#2e:qgDbNeK5Y\tN=RHDGTGfpJ92tRr(1P/kAWuiDMN4(p8Q*jJ!G&8tI`'iCS[Ic:=U7Xd$ %ZgEe#c1Z`@f,9Ob`F0R`!RA[b]R>#$k4J$NO'&4a7Wiqg!ffiCeFie)([KSC1CfQZ(X8ETEOrfrd-c7_#B7!dHh.R0U]Bh@J,ah9ID3P^]6`N2SkS^W)ljgV2sqFT:GM)mYI;(og@"""JpVq1nb&`l]!PP* %k'k5BGluhfIHbH8".gc%qBM$R^#lPCR=E/ZSDIT-rHrb%!O)AQD%MdP%?=Z$GN5("R0m"VSb^8W&\[^mXRpZPs*@uHr9O>V!B %\fpbZ)R='.B'TuR-OCj.]X[k,oO=BO@t/[icd%='i3rRMS?E'3q:RdC+oATeCQ4eM52)8"k-3]"]ko,gQEF!3ULqtJm)$cF(1$oXlaJ(+gLU.trk9PBn%eeRp)W0hl.3?00n-aH %@8J<$?Xs3*b)Z!,&=#AWKD0.PDVJ$GO2KWtaL6/;*'P7'NsBYm4`Hnip=3]amMnC0dff2hr.Ni(E6?18l*g$jLc8_?rpbXJOEV:s %T]T<[hF1HAA#A'7/Z%-'S%H+pG#[.DP5FsfhONK;]XZc%(Wj+EoA/Ylo>c(l*1D1.4-DsJs'[^Ejli;VUZ-TDIJ3CUg.e0o/3=2s %DXhknZTmj?fd"cuosJUKa,^BY+_(`c!<9Pl]mfij7MUdIRIHma[6]f;/li6k5A]J%`Dl/j4f"8e,!OI/_U6Fo@)J^]$jOYl(Ef5@"/3F*[8%o6Tr_LYL:YMq/RBgh^]&\$(ljh>/h@Kt40mS[`RR7ue90JKQ"9a43:.L=*ZRMFXETRi %D3)=a&]0g&^HFRU0m2jOs*9T!GeNn:p@S#H;KWbtr.2T%](?`;6N*k%nP9D[84D^s@eeU]eX=Bbq'GYk*r/R17F\S(MI)dk^TJ'2 %3U4$&$i/JedHdRW#+KN&rhqd'/WS-egem6DqI'+Zmu>B;3PF^1=d39^\!eOS%IS?&_n$n5lD'aGDAVkbi]c\>J/eGaVf]_6EuJc) %,NfKkR&$b2B]PX>`lH,6O%Oo'VSg<2H,kOY]%3OPel_D$6D_u8`\*K:l@S7:L\@Z&BiOX7W79"i=Wn5DheNY35LN`UYYZJP6.!jq %SNX:$@E]GjdA&d&l7S9,K^VrMk53O*1[[onUgcadgEWQDUcG%@S^nirlTB(Oe!*uV[dXQtVYb3L2;S!MotK[4g)FW7>Bf.6LDu7? %$tah@][f2_?'k#$hSdq91`h).g\86'Y>jQd*b)>J`n5!86X&H[ZYB52gtCA2:Q=>SR*^>;RI[skn'_6I`S^4cW>SuSeDd',r\n+g %m0L5HH0$&A#dsG#&fdcel=1`?bSZBo^4J1IB712U>UD>H@)cc_8Sq+%S$[sK*UMPC1E_+8rqFb2^OG_M5:lg,?`=@XI[*iI`lJ*7 %s(n`ChaMH^'2jmgYr2='OEO<_2G\a3ds.deU!l)fpPZVFl&RPnXHN`!`mjf09Ild6ldBC9V@#`=V&,4aC[6cTiEI>rnjCqL"m=rA %h5@_4T3`TK^U,q6cBg0-0+HLBOZ.$DfOZ*cEV9^E2V!NEp"`hA%5Dd?-\ldJU['a0ps9u^2a %FsM&tb+`*@3qhp5H?u$Y*kr+jOA7[6m-$f8+6%4o`h50b'11/fpS>N5sM5"ImkH+rqb/hVbB>L]2qQaIRPViR\83":-W&,ptT\nG^b1fXkF0ZB[aR0UHNJ,/KFFh+&aiaIeMG*caU4Ef&%0X %\nHA]9fmU8@IP3o`5ZHZ1R:7Yp=.VgBg(J44n\XA^:O0+)f2JG]8]Bc%W/-f@!>2chK/dF@9O.;QEa8/1jUlkT6ZY>YcMRNtHJO,J"E#9EAe2_fVbnD<+eBJSsoBu.EKNjVa)30cD) %1[;'uk/D0.7PGJ["(2PMoOk:WdiLKeHbaG0Fm;u0)"=F^oj$2 %N_qI*c*$YJO\3N]%\6I`VLC5OgF>d0L.cmQE$L)kc'7kG8s]0\j75L3qiHjUfBCQpl;.jmMI[_;cQo4?)/lk(1ck9q;`E'9lFB]G %f#qR*?Z[sF9C5%a*V6#^*hPUh#26o1Mj#+D5MH\Zf`C[B%tAourQhCVT)U$^5KZpTjJlq:je(h=pdDmG%4+D\g+Vq7"n@7[)>kl'EaYcVD/1WGqRfQeM.+f?ND4F7MiI %^>>/7o:5\6;)t8>^Nt?TGP^UNcX6Y4o[fp4T)H3Lp#=llBCG>@iu@d9F]2#.?\!2j;i=?N9U;b:k:(LqO=#j*6.ZbRQW[4SWq1Pu %ek'B'ZDi1qO0)%o2As,O+:L&r'P*S>:[a9ofb_RZ,I\Ao[pJS/Qa@=Q^+g\*MipAm<)*'_-&XBm\>G&Hl&S.lSS#U!rDH51YdF!P %X`-D0mS(6:dU$p+Z<2(QP(1CA^;iMQe+)KGDcFF/)h[Ft0f?#"\k`OC[VVGRLf[>uVB09pUYE4SB+Ir;41Ua"m[6$!o577u!`%p@ %F)(-q7<1C&\&tLjl=!/"lddT`I)sr7Vtn9bBeEIHRAeN;qpj2U8RHGr.uO;`f(,U@L8<$hHn7/gn&>j;1g:BY>_hB5S*1nUQ/,-Q %,PJ*X7Jp*15J*6hG%8ss#0S(A7oC[t@Gd-Z::N(4'`HZO[;u;"3iIeBB/^KU"QG]fcDY8R)=@(SYGtfnI0?t!qD92"+Jr0Ks"8aA %H7f[GEUpt,0f!BAUdqkr6_*9e#.CUU=.-T'rD+mul %Yd(41ck7!jibA"IPJ9uG/r^?HlAk%ZqOumqC\rB21=>VE:>]\3Mk/;Vq:Um,`R]$4.o(^Su0Lt %,W0uB1\fD[%r"17QCmE5Dqr.S<54nB7bAQ;@HU/S.`"F2SKAhIFlTdpT0uk,iXW3&6sHRp#JnI.4kXbkNZU>BGOX`Yg<0FoGF3W3 %d/31%Y.[E[UL1X'.ad1CP$P4MY]B?AMi/i#]uhBDXlq_QY3XaI(";T%fpGNe4J*h^ %:A#$j0'9SGVgA&:-1-PldX>k7G#Cf;=IknQm%T""ihT@KiT5p*a3TB`@Cp1Gq9-%$rbM3]I@6YmU]!gtI`cA+O$RGlb15P$@f8:d %&d!OV343j3#nnsde)GhSelUp>>+!sm4sh6i)HJZP)c5ZV.`C$k[KDC[I_-:D8ir5)Kq'rE$?ipsomr=(m(IYBAA;lHp#W**g8O8; %j'P.AP$R8(i)4s6!"[VX)j2CIIPu'Pp5!n9QupHG5f0OS3grfZ%EjH$[.V7m:%k[RqYQdXO#RNqPOAV.U^$LFGY,>/)O$O>23+!tAFdZ$-E^it>G&Vd^$B%P2US:.OcIY-FGAq;hQU'B %C4Kr[iPs`p%e9L.2JZs[pT;/kTPa#`"0rAra#*bCd*QWN^=0&<7m"s<4G30qp-Ck,5_^j0aA-51P*);Oh:Vm%k2HI47180UHQ8_S %nj'dbnng#=2P8L#fY/pd?96HiO`Xcj*mT;8AC,Mh4X=N^qTcGmaWA7SZVR,O?d9f`4ofL,bE86]%/DCX6M25NP@fA"qoNWZ`Sf^H4\n]I%;(/._7T9SVK*.b*;BA7s(InWK^^obsV**NAX5Tt$sR1'.;!65Zc-LCe.>YU01l#$,D7Il0o`9'G,4]tMU %3P;M(mXu)HH(*kb#@>HAGChN30#]aUMMaGOah4nsfYb-g'#dVb&cO6j7_Y)RUj/\^eW6A-l/R-1%:scc))&Oa+%LL;*PM(n.;Uo# %prhU*ZXcY][/(IFgXPf>/*^*t\d#jBS20H(P.ArW+c#sA;hi(j4e:jLpbY^n?%).(jWR+TT)77R,"^L&A3:j]mS-Y,!LD'tmC %%HSj0A#<61?Zh*L.CD1AkpdOPdQN3;,%s9mMqNW`]@mBXQ&0fo?O5IEe^Km %bYDB(>;CcYOVcheRO?8\%T;Rq=UV2V,ri^+V<:G"(s"KO89.qp26POcq`K+Q93[jkNM68\1\AV1X.PfDPApFNSJa)u1ZR#jH+BD^ %]<]i[1^eWr)*;"2N&K3\AN&`RE]CZlG0!s/@>!db#I?KaB?$+:nnhN)5K]pHoFO0V:AulY%9ql6R3[I7;+<.U\=3O!u795 %']V?g379?S]VWQL$iE&^1TW(6M[g&a5+Hg>ktohh:YRI3F9Vd7mM0**kmN%4p#t_,JN0>*^:+AboKZUQ4muX_l&u&ST2JH6g0P*_ %-JN4^1\lPs3[l$5/`U&;:tc+R/L\SlNtfVafVVl>S$@:;Cm1MM8lI %Fp[])O-0u&\#*Y1FhTf#InODh*C@-%nu[_2$'Mh,SpR,kN/N^PO4!Spg(&Nj+qK8FcE;)18Ju3#K@i.I4H9&o5sI@H&=Gf8H'9tO %E.APm3*P,ToM5tsf]2TqhRr3mbEjkDo-,c\B0)(!Og!H/q66@`8%Uc1N&0j@o[)Ekgml(X82k1s%WTff?1a=u:'<Ojp%9@EMRUWo)e/t:bf;XU2='qC^G-5I^/fh]=nr#*J9$,i(;0N*!=A)b9?t_T)]b>T>p3%8U\o?i6VJ;+[!df!qO+%P\m]knAlEtK!&aBa,BR%HO=9aqprk\k@o0 %7mu:]dlpR*Nn!2J1d,8f-g$W3&^)fZm(*)Uq=Gt!HB+c+YU93AB96HW42i+OYWW5&Rk@IkDL;*K6sp%3&W`O[^sKdRm1u\51jI,7 %/'c4b5q(+t`F#T02GisNN$Y)1HqQb\m.j>]&$DajZ")'J^fh_K-1!lsE1k(QUtE3AdttqJ--'=oT,uR&%TPZm/KC4E^_927iDNqN %4-F@jGT(Qr%V%j9bb!:1,\`FsS3:T\-L7PHee%a"H0nPG6BjRPJS6 %!tL*3"coL>1`9lm_6'[:6Bp/;O&C1VC'Imk,60b[bMbh]#j02h?n^iM<8`U5Ob&gh@hVrX<"i$&i'ZA9kjjuRp?`F'GSXu$0lb20T=PCbXoTD6A_KaP5$UF*/`5j8]P[+6'M!Erb,Z?.Y)/DJ^Y>KJtM#>"_"kC=Et5CG==,JUlN %.WJRgV.oeBS(Z9Ak6HcT__2+SahA]:)X-'%B8sgXfPpbNRulHLMVO-g;4k9;G*V_1!6APiN`uX2KWkhT:*laMi[?^B!Hnfn'/DCS %cR4rI_lsBe29EAE$j>c<#a.6eV&Wm$!C*X?[4G:#.:"dp2Tq8D]WUUc%7Xtp?-cZaas1YL34u;4n.&>i3MJ2Fgj'@VZ?*Og6TNEZ %7!9Be["7t#.=52b"'b=+HOF5kF4olV4/YPRR1)_YOAu:"15Zfp'9Y-0/bd#&C$nCmolJL&!tfe_]MR%\H1Q,;QP&H"9M"b)S_Otc %":+Z&_!a<[-]3i@<5H5allcTjAe.R3oJ]Ma.&3U#SfL40C2:s`%cgqd5#G+UFdcAKSC(M5=s/EJh"fZ$I&mFL"<`ujU@2c-nC29U %PY^0,e]E_ZV9R3HnR^FOc1>loc*Nc6m+i"Qq1'FPa($a,k>(mXP7fdA?>JKDs!VNU!s?k45gQ6j9ICG`E6Z'P1@!R2WBjNl5a'W0 %A$AWNm$qe$XXFoJ^l4RUCd&JsML<^PqcC*"!,t^qY5E+l(^$[I7;YB>`R;#2 %N/^#8c'4F-5Nf_B&XOj:3VGkUZu1#Z7-Fnq8"6\n-UBfU3_ClsT+a.u(oqa'721gG[F02VX_5+2([k)jICr^Uebq`rSW!V=#A?0h %i8Noc/C@rP+eT&E-#tKBlZ$ZL(A+SaO(DTBd:89HR]h89aKP"5.rYP5@.&n?Rq"O14MoVVmKTL3E9Po#n#[":0J!CnhZ-f0Z8KuKMQ8WSi+`X"mK&5ekrHr>"m %U^mT.B"B^oQ\WmBGJ53d;Q&s0&T)!IaAn7VEfu5'a,V%qPm#"j5WWC*cm;PQV$W?_B9k/7p0f,2nohp**WVP[D$s#=fdk,NeifEO %ahVjBo8=2k&Lja\e1pqi'B%4aj,S[SHhq/?1jkB&,F!O_i?Jl'(1'0u.9RoR#@E#'.!Phd5=lbA\;I^?;.;UsgEHqgRfkT'`[Z)(,sA_M7jWMsf/P7p]P]I6.:YF,aD7F!J?g%HW\sL+TpF?jpK)e'Jj6OO(&eRXjrT"VbR"Hej6=aZTHH>o:G:M1<+Gp`\$:;VW3;NiG=Ho;Q0]@a`9o`.WF]C %YQHo*6kRM4*#r9`MGuk-$Cht)hO%`8J`9OG=fRMW:Kf](Uc4CQ$?8It8]r)i."pH-7$tJ;3+Mcu!!VqcAXpD6T0tHM;e^234RHB %*+[)mA>TDpN^YjdmpkgVR!lr)-SE*liu@oF"U$:"_#f0%s'\&FZ]d,*qoojG,^Cm,i2Ks"cncS:^ot"bJ`XndA"#!<3T-4DoB\`> %8Fbl.8HbA%4N1m+JJY`CN2Opa&\^V[HC:os%t=U)<_g^:`7U1q6.r+Q`RRF3)$n4(HYLImg"9i&PCD*R3V!W.!X_qA\?A8 %ZAN9$Oc$)&Psan8nDo&lW6.L3*[uh6+A"'%(lk[@ZDs_W=ZUXlLp`E`TNN#+`!PH>#tQ"P5qQP*H>aV#$f[@/pul$(CLphHcH+1A %k(W,.VD6_5(0<2J?[cehBEt14KR2>gQZSnB6tQUopQ'=pHDBqUWTf-Gl':ULKJE015]HeX&R[=KmI)abW`TI'nXQW0$G+I#&oZip %O#Gm6=!'?b..Hu*'m!n\IVSd[>hFm_8N(BT;(YnU#+N%KZsnLfoj*#'DX3E.5k%"Bq#WEm%,?'\lRe2-r,^`l(ouk?E%K-bX]ms: %6G!YI,aUV0*=1jPq)NG)dX=:98<5a%dmiL4+#E7bTQH"eOG])Sr943m+5LOTUFF8VL(c%*W16D@5-<-56L$j1H4[(V&ACki&6>]; %807oVX*%nt6P:W3>!Q=Lm.K[-jX6qc,k]g&2mUbJm>Yfs?pgikK<.#o'V+ck4t.,!!-K??K3rf[L;tB+[roSZp8CX?"\!>&0W*,h %G-iKe@K_,Ge2Tc$Uk,>JQ(<=a^rTH!KP@nNh5Pfmd)a"mlAS\97PpP1(1d['GChi3^6Um)qQike08WY%mHZV7[%e`YU#!"ua+nQ# %*>3X]_1b0IfsN6ui3RCuR1B^)Pdb;&]sP(%f,[.`'%-5`fOlm7S-h:-hQ&h7_[N^ML_cR6Y-ej$XWDT%>nBUZEYDSr>9fZa$+)Cj %3.i^Zi\`%37`I,aWhVlZ.H5Lp!m(pk#$Pn(AWWV3!&l+J@&qAR\RgRhS8A8d3@DVXc'71;Pg<%&?8Zr&OQ;aX*YG$pJ/,F*po#m$ %"9S60ic.qZE(+*75RVd;H;`uqSpkB246Fho`7:\G %:-A[k)6GF!ir"=oYp^OYO+JPk2\9u+Rp[.4)IG@SKs`^n..N90Jgj`R;o6r5b[\@LnaNC]\nAXJapEfmrTlf"aMO6X^taNPIHi4_ %c=@s#P+e-`5051POm;)Z=Fu6na-l-D;c>,.qJbq]VC>/kW.hBPsqiB?1ijtFT]o9O*PN0Vp#$HaY0^P<(KS$JRa=F?3C-jE=S!0P:I_VS(tpE/Rs'ri:'f3Z161dBZ[Yh^WFSVHpMq1dX(5pSILC! %B/e"T\c^>P4@nA:.p?9Mk,2Pf!<*SMQ#Q'>c+SJ+'1m58cRA!GFjhP9D1pVd[>7k2(9(a %,=3pr\VdsESiW(]F[`PS,-t!2R/3;^^<,Pn)D>&k7oJ2`7qu57W'V%T>8Z]h5j]^6Ku;k:O,K&/U);R#a$JnpNK`'`keEBk_VnB6 %m'Z)f,&MdOcc,=-cdPht.-&+jF'=aQ;kp*h8:tNX.*abr#DFgb'pWl_drQPo)usrPgfQs!"[sjX*KcmJ68Ku*8O$*kLO@eq3.l"jpKZQ9=m\f$^mRu@m@fUiEn_8b8buiW+bc@sN;uX0l78b'-Mi[4m2\`.:g8Oso;-Ff %iGhJY'Mkck`tFJ^nteCZ3_l;R]U=ArE1K1B&[ZhOVIkSr4*t%D##d_8[f"O5<2p$bmF+`jlX[CD%0DEJEhj=*lL[a:4n-_Q`]Xdm %i(.ub,c+29X+Ss5Z9"i%;pUDD5))'Y"eT"O[kbYBCsO]JCQ6;5i1s+.IX36!6gX %Y]T$RHtNX]p=YD;[jdaT0d@"k=!Y,Wb.DBj=QLZ23Jlg\d'p9;JM0&n01fLll %k/,>H&`p<.cg'<5":RYfJ:89$nj/&;gV2VlLF%3RaC@eU3V1jG;HfWd(cYd&;u;1+._?pL-Tbs&9!dn0&j*!<6SJpdKVK[$4HF;h %P[0=qUZm'"S0**$5C"H$Gt96,>tg=snZn@djZ"j%[E?Cur4#85;h@Zc3;?S6#bm%%M$?\i$rg^[(Q\m0<$3h66/kiXZ7.&lAHrds %>m#"1jbmF8dk81N=$8O.KO'[,Io9:;uVP8p.4c+3*G9p1;`-ZUqF %)EZpp-,<9%kGenc,@-j:W9b#@QE3Llj-J==:^ECA73+K)KZZo1(1l*]"Xu$XLR=7Jo2HuR,k6D]GtPeCZEnf`pV_*P(=`a:YY^%W %V!+2n"1f,jq:H/78m*"'lr!,0F_Y0e'DpgcR[KKLp!c`[[<-P`%TSt)+[kMJ46\k`jVKr/`M87X8Ma5mLM<@sNJ]XMGn7-"pnkEX %2b_M_D;+cj.>)i(,OrL/rYRVkp]',`X/1ATt1cV15oNBE`:WIW@7d,H>ICt)t'jNR5H'1Ntr %[P^V42$ATaPh1u(Y/#t-+SVM[Q2;)m[TDf="ROWZq.D7'h.L3;_9LW3&c.Z$(%dZ:Q%Eg'-nX.O3d,ZN?bnA:+0+TojM>OkP5.j4 %$cTNb.]Ju@,Z7$f;LM1tb*gBdd)3[8Ub3+c7\P2G2Th%$:OB6sgCQb7<9;Ym"16ATb(t">TT)]V#PDdNd%9kVMfLq3:T$@C*5/"s %6jQ?4ZDXGY?m`$GP"6YYKQkLh61,+#\7ot#`%Xb1jiQO2J<^5<-TDp*iBY"+&IiEjl-d[J:e\BEM2)?dLX1Xm(:iB2'///JY:.bg %PQF&N9qm!H;HnpMQB38(?(dKE^Sg0Qs2=m83?6B!]^SH&1$1o$k.,uMY>qn1[J[n2mDn6jPV@#KZa_hKDYT"6rg %q5c]cNp1`i5TToq:bf,_p]6`6J/GdRD"._JG^tFOC$u3#D#i4BR-lj'Mjtb4;'N%G%\s8\=7tX!e4f-)*fn]VRm/`;(.m[T:rF/oB])-JT+sC>i!]:.M"8NR\EoE="Y:#[:%V=% %k>th3*tEZZm>8eT'*^OHY>;b8d]a!U!%YlI_$H1:@2Alki5(aOPrfE'Nho4-WJ[1$WTCl*deEB19lQ(X%*EqH=CslN+qOC?.*3H) %5nb9Io1W%T[$?143&!ASqIr3Jg'F#LLGL.qiYD`t@HnAb5?Yu@;;W6`3/BT)B(@`R%P/psoe_o/5?UmkdNoJ/)dMZq,]UaND*WN$ %,9=9uHq=rmTS*(!^gZ-@OJM;p0o1_,4hjMk+Cc-2h]N17H,It4S;2FlI\Q%N&Q$VA\q8UUd"RKhJk3L$_A;H^n@jU4O>ukPO[8^MEXsH>L0VhfO%:!GFk/?HV@23%(#F9Ul/+6Sj*dkb+u_RC^;DUj#s>DZ'HVH=*eiT7&,rk?QJ-.L8tF( %_P9EdYiK@s#5;]2:V*33Tb1E?+O\;->*=.a0Al-BR %g.I1Qh*U52kd!Pt=Zs*1"/P%%H(Zi);O\*m)G)_kH1:\aeJ/"FcK]p,GIgL_3Wg6tLM;14$bu"p5J='=/3)-m=d?r?,KA2Yq5k!YsTIE0U9#Kb+d!m)+4*=L* %5uXmFl=[+RI&MEpHNT@rTX:-;FY./RF<'S=O`scuQN6nBqj$=c!XbEY^$&=[cHES_3_nD)_@\b8]HZ,^OfEsc(0c-gQ#";Ai&fL=Pih6E%baCm %m%cU-?!p!'/fYOM-Zq/q#j689%Kj4)OnP(6IZ#u;\SM^k!q5q4's3%)7=2f;pfj[N/m:u"8Yu5J-G:[a/>Jhn;UV=&R,rq$FH$Md %T[-VM%?[0kSum>>If_aZP^VO9B0YBbLMV-,3L&BE7)]?n">ts3O.>"V('P^>MUHT''6*)(-MLK(DP(g`iMZL0'bJo^GReLe(`")W %8^61f%Nnoj(qcbj=Y;\-6+"0Xgn/@jVAJpV1;FhIo[SLE21RbtI7Q94&U=]n_>JjkhB+#FKF^B`]nI]Q+N6-Kl8qu#:"MAu6t;GF %.653W4WWjZI@:0@6jgjJ!\H!3B/`qsKII::T1]]l8-;4\&M.$$,h.ull=6N%/8T`mU\K9mTJo#&-j5[15m$F;G*cTJ8g/9<,>e,KOi*!L)E'#+oe+l %:;HSapsk$jUt4PrR/OFO#Gg3>5uo&#bCQ[Hp5L@kZpQNo&Wg37`QpDUTG,.(U+4f[E$J:%S=*6"MhTFpHcUj7"1AoeV9d6AP<'ud %gC(]8HA^`CO.&>d)c0CeP3!."25+$'N.iYQU^qFA;KX925Y-Q.9EP?l^8FVgA*o4;jq,m%$op\0_Luk1`!kp,K;%moN7]^6OXNTu %k!f]M_L5)R)d!e&8r@DcR*7hp_#OW[cHMTB^5;dakt_M\$`3M$?bF$Na;rbi`8?9hVJkE[8>%4UN_Kmr6q0Z[="R%a %@E'p\d:_5g8<'>$Tb2u*S^*PFfsEdhul*RnPp"o!0WJiZMRWYM7R(8c8:j5l/S`[TM3pZs1K22IJ1piJXk=\P86!7h@m %X0a*e$?]:V)GMpt-p^Z5,!&EZ6ATTaC!B(V.A.1D-3c(X(4fAfR>9UR6?9c3W^#1m?d[%7SohgZ@3@_@&W%32AnZbhtC2'@CDc22lEIl63]`Zt>[8oEdrm/,%AamS"$Y0_Vk6H%%li79N'* %NqdHHO?1E_I39"9Id=on.87#(2,(Q %?2dNtV6J`\pWr#5kEu5^k;+S4d-F["A3LZ]aDoos"LR-a=[g`/+".AYWh,@iN6X[^;0WdlbXsd6)bnZF':^42mKbk#*FD20LaLHh %Pu"rgj\V;U)!n>ie!o:SJsl`O*SQkjp101np2FFLGZtG=jgbXe>-pc*Iff`ENiqo.Mt<1.0/i;Fp6jVCoNuP=;dM?lA1F#R]7Ztp %dXW#Wljp/c$S;c5X*EX)K)N'=1I)5*g/2^7%qH^*#(]2hd#7YVWp6eOO8:I&J- %GV>_FfIe!3,jUH!HIOM1uF*UDkdHd6p)e6B %YGiuSk&$G^PM3@<$X5a(P'LUXUU_j7'bMS;!EjWnKIMTq;hI`?O$D]`7mRQV6Tt5G*+de0 %U*]-RP>cc)kQgU%kL^`N&q'^\!"9Hf00iGA^Z$5iQL''pMPIkF0WqtE64PWbM2N``/dVO[fA7*'#b&Bgr'`AoiM[r8\4e-13f.[p %^k(P[Gd:RX77e&;R)dPRO:g1KGnd6m3!;t5N\f-d:3%T[]BA2rAlbOjHTE185ID^LlND*OY&6q,.AJoq(UE^j^Z$C1ljKZ5Tm?rO %;&qg&$gcB97+nD3r*4JL95L0/N@FU>g8+"rtG/[EWlsD0+uq@d2>3]7ZdP_ %JQh+$4r'2P$QAfVIM,.!s5SBnIqW,$K3++ %6PNth*EA,=oHnegaRe\:,"4h[_si:++WhLJnFr(rg_)Br_](jP@ZkIl2C'8tQ3pWST8+Gr[;XHcEd(DJ64QF8\+Rr@@BcC93_RUO %@QU4qN'&nsW)"th5k5s?l%QqDL8"bs=6))I6Q/,W %o6'YXKh^7gBe+`(%&bkZ]P6Ag>DgjSZt54/Af>9s%rh.YCek`S@G`g84iuH2khXZC5C4VU:,>Qd/c`s"+*&9FT1")OVH\QSmO=41 %A)38BB65uiBdtbMd$<&Q(9)/:#Yj:OK$MZ0rW8O>j*ZlE[I`#Fs%_ %N*;l&*K4N!"e/sZr3;>a/ccpt!F,,]6214@+W-aX(QdHr#nc4-M#)WH2]RN?c4+5/mh(q`TH6M>-L=&_38nH4-u]T^',;T7Fs@@u %412J\INjEh_f6L!Qa$YNc=?bR5DZgf5\oTI)Tru_%u?6%c`hTZQVUE>NLdb8JCn-K&?%1"";9lG6&Q"i(O1,;VqAGegsHHD,/7D( %Nc.-`"?/^'i5;Ek\gs:RPSutR9p+`5ANkT_LC^br!.FhbW6s2$.=haLAJQQm1%R`YUPS=E@bDa80N;cpQVcIt)@jK1:J**C6SA0j %N_+OD.jCLANGNX!QepoSE:iht0+--d5+u0tF,=eN;'$T/Ks)^0r-Ng1k.ZF'bu14"^f?'(KSj.^H]8?e#n@S/^a!ME%k4$q;0S45 %L#+,r)IfmLPQSL-:]%H8#")-1,]ohRLI!/&&""baP]"u,ag+t'4MP(#B,'CZY^XZaJZnD9@6kPNJZ21J0``t_!%70DR+SCcs,@"+ %Od!XT7n4ul:6m7Kr%;YlaAn*'+%gNS7gZ?Zi(ccN!0qA^oc.i+XLbGrOuDqS#Uuh]IHfDU9rL1p %fLpc*e&_^n!G_tBlVYkHOA.3G$NU?4,H\0MRPcRH&/a,CK(%_lY]+%a-:[dQ&GsE6*`PTe@[Z6#-bq,DLkU5OE;36epl%,.6Rjdc %JYC)@i(fi]c[$op>6Z#[hUg+#J;[jQiu6J<@haG05uEXi#orgYJkQNH)5%`N2ohoJ1b1o47::sL*p4DEc*_hVj#ImZ8+qmr-%c!? %ENC,]!GoSO%+KQ5o2G)j._OdS(P$D`e>"0AUl5Nq$\W=Rm+B?QVX$%f'lVZ^9HdXke-?1`PD@?D8i=CR'E/j"!\XI]aAMR3R5?fD %PZNP,VUEM99(srcbchfio(R62s*u>Q]Tr8">2S1JjHAWa-ECP1'-)^bn\Hur-j(qgk5e6tGS=,N_^D5bO?j3j$tA-9iFP9DJ.r2G %ceEiai]-1YCFP)gR#%)-][u2'MH:UV6P@3`OrJZd'&5lej[B8aVNk*maGGZ9C'SjK2nq<'Z-]?dGJ#:PL=n.%la"o`[9@6-d58&rpG@m=&@&,E=,S=/WPEMD7Mc0`L9`=M-EG;m!hmnV2X=n&&F3qj`;SPphYcM-Bj"7q,n %r!SH`+r,Vh[RmcOM"tHG4!pE+3f*%Y$d]uA,U2G@O(Df,8CS;jV,oZ#7feH9):/8c\bAc@d];`&L;ZBQluRE;-&A:mq`6@=9enKM %H_cOdHki&A4_:Os+BR;hT86kaA=DJs+_2+:l81jiTeR1S]C1$9P+"k/Ge1u$.jDiG65r/U@7rRq6gJ&%pC#j01FT=E&QQ&m?r$Tj %NC/k2!._bE5so*P^[jUhq0X-AAKTU;bR]Je(E/-f=lMPLFf#jW*":$R6)(R*Qn!u4![^PPqE,2%X#Ht %j=hJ7I/t@6JDc$R]oT0I"c8j>53Z\R/7I.R!Oj5;u97< %6P?Q-h@j7aK!mpk;rkKd&G)],8MQcjQ:foJeOOoWLM7Y\"98ZN-#O?ifHTtTL1EnOQ%i0(4K%-L1NX65!J^`Y"DeW+:oM.])emBX %A_5?Jm:*HA6N)TW$jU/Y(e:cBo4URjHl.E8$BXjp?a5Dse^+C<$tM4QIo&J)eU6pq^D4MX1( %J@Q5-$2Fmr6?G7ieO0DZ_d)JRK(q+N(BNkd0SD:S\;0]EXA7pMmMN*q[K=uX6j6Qs(MW7-S0^B#*g]9JSqi"qguc;nY[1$]h,t<2 %0oIJPW_WC+7_r9@-`nm&O0=0N#!cE`A4kM0102He["OCD&P3$*(MR+-`*MWJWq*Dr_M'/W=A/#\b&Cd&F %GU!n%E-a%m'*,/>G7ZVKTbQ^\:l0&u<$-.3c%W\^'E^cYL."I+BO\i[@8n[q&Yc(cZA9?=Zc&'GE.lSH,I8Z[68.P%6BP3):#u1" %e5(K_5UaEM?o2qC>3Zis0EK)q19t$h;&f(Sg3D&gEn+74Z;q-/hf')^EBj!<@dpZVR5rGj:N:/;!GgtuNfp5"NkAe+&[sDg(J:gl %[^_?leWI+KLE-*O/VEU7^`ec#-U!okfi\7+&I@G/O-o&i;Y4/oEQN&RS;2c[diE!n'0N9":'c(e$mGdE$k50BpJO:T]F/-`_jPkI %.mZX\bhP+7`'6]^\np76\h\O.=t(&3g4=/\TGA %2IslG,&Vc'n;]82+>>_B2O'j:-!+X\Ju3pM"U*OUaZI`jX&i.kS(ueq>@[fQZmiT;Ws(\[L--HBXqN)cH^?=@"ih@^K>^KS"D;VX?)M=;6*[LGq.L@f[?I#5#G=5gD&+`8W.\,1KU>28lZW'nI"@X"IDi*eL@_6g.X%6bG=aJ,*/=mLJ9eUXR7D@P/`&=nh %N\_pR6BjH89?)Wi!U_u#9%$+N]U3YGmR,!0c-KeJj:]Y=.jI"Yf+2\Q3$MmAqcal?s_W],t?kr %d/4/`&`Z8A=4/>&$mQH@'aFCGS-\mHkX1XaZ&o%6Ra %-.W\#5*&.l"+h=A%[!&I,!dFc7nSWVe_rT`GS21]1ReZESH)Y^I3C:P@j.>qm-\b$b=o]XE,,:(&O]_J0;WJR) %q&"l;e<3XULJH381ZW^4KCoi?"!i>cb(c$t&$T7a-4d*biF,:X*7^jP9GJO?H?%opNt@5''"j0K1\$Jb'pJ\*Lab`CYM5,p!MAiR %"SLd%,ai3*epo3*I>f+`#`*.X67d(g.r'3TZ %H":Dt-NX:@bF0oW)]K`r"k4>QnF("`^'<"T.4i0K$" %)bNZiTc7&1MA,ub=..2`Q$!?]3-aE9a%[Nkd;=A#%7[.G/fQ`pPR>qZ*#.m4;jn;2"ES\7i"1+q<^9F_?j7e9;mr"_-A%UM7K]8Q %_Jggf+q,JF@\46`e0-$9)3PauFLqhkWsPQH+[e]a#7Cnj3*74+['7]Qj6!XcS0DqLDH?b,/2C=?K/.s^5EXj[n7?B-qLDc %LidS!(#X""F@1(h%:W9Q[lL6m#aMn*78B04CUbTX^O[lNi$R`;'uJcM26\?8%>dRbZjY5j,]G]=IhsT>_+IZVRT*_-E*gn1KAcu( %@3RB;:s6jPY'oQ5dMmUshu%HH0Of[,FM3"A"]>JDBgBLgoU\YX*)FDhaS7)#CsE$m5eWMu*]5(kOhc'98r6oMSkl@-5e)H"\2BBO@4V_i'.#c_HD28Y`BhQW %[Ksf6Gd42<>BR*21FEm!2M>hh,*/ZF)[\>I<8G$"Q0p#`E:>1Kp]C`*$T"*&H,n`XBJ5>_fP;6Y%W;>-&5^=2"P:7#fep$d8d:b9 %$R.9-#*Kj_cQk1On49;f2bKIqKh!+",q/,36QEB018QDhq%<_c7W8nU4p&S*.6rtRVDX?mMTdmXYUBYG*JI3+<"PBj]h4F330$q6 %K5t8`P9#P^K\$rt;7'mG]:IBA/RDAO=bA"'n;`SG30,?l.8@n@"Q9U"&ZFq#=?8=H(o/^fcn8PFJljo[PCY/aW!'Im`l#(EX')\c %Kj,EA*#cNK8;2P^6't1mQY-YWi@1M`QQTfijrfhKM0WKZPZ9;f*jJQ:&gE'0i!=9O$;+9UO@Vpl!0[a%g.m8,-)$eJ4&1rI#tYPu %MF"f9E_)UlO2:rY)Bq=588j?.E_s;rI"^N7*gI?*0k5Z(JPqm[1`e(;5l>CkD]Z.f0mYO-J8I/?lHL4W>FOhR@M6]Un7(GHJ>]eR %!@5Tg6Q9Hi@O#R"ZXTX/+9AB"-D#TMM5Z1Tr?amFW#0L2(CLam;b5Y5,+3rm,=:O<^I)pimY`#!#".`hSp_ZJ3J9qfiYo!T`.'.f %@W<^@je$MTA`nULlQrG^-BE]^Ob_*?NSc"@on3q`:LJZ\EY9;fiIaohZCT?i#;\6U+pgk4jUdTG9-pT-82Ok!/1P%/5\GXp-I?pk %7'1OoR"`.A7k"R96u2o%6^('XphW8-6O!cLk`Z%R_Nb,b9L-p!MXr5k21R@>@7_?(ZEB9>W-O>iWJF7>)"Npt_>r"S9G4'BjLk[j %$C2Ao#iH\_oXng-W$S?p+%M8OeajlkB@9a*,%!i+?a`4?.D.qXj7sI(6mU_Y %?in/9)_))GFQ9GP?a,[8@Ser&OTmtP_hPd-YV'&`F)LE\:Ag%7MT)OoP^C7eEAeqPRsj2*Y=O88?L"T?oG@03]J,] %Do/BXTgfMX#-%YJkJ@&sBJY:q6-87$)QFrZ"Hh%pmT-7PEPQZ?68:@)#1mc]QmK.g5,@h*OH8W,$ZXf9erbok]V8im$-8aY!iPD5 %rLFj84lQUkV63!i!'28hTF2r.i6m4"$&ejbFs9Mu"M,V:Ih0/V-s<<"d>:DN^jFNA=doa$moL!4iX'it&r'jQ7KC&bF?@",Kps!B %G&$33=@@PE'9qIT5QCt)a+e;>@EK^*[Lo@@S.Hp\LgKqb&8OhP.Dqg*F@@3SAi %@[TkH5oM;=MuZO;lXlsn`\WAE3;HmK/@#56.X$E&#T0U7M29R]Df"(D9a71s*f1$^?'-N`/WgRg;kC(PQ<2jA5q(\\A3b_o4Jj7% %RBsu\&-RENG_O@WU!LPB-2?.ED(L18mnnm=%S$RoKik+Jl/0I#2gmP.1*<,Z?:+R8Q6N^eV^nq-5m1E %8dVef1jC.G+^CW63^fS@/;3e0NCaQ#BIr/.&IFm\N[_"ZV]N2T@Rh&?\;6BS_R'<"1J5W@"f45@rl2;si?ArV&i"/1,m`b)on=oM %V@k2)*P.Ng(t1R<<[(hkPK"c-/66FB*('(inoM-\Wd+7c@*FEV>a_qp(BQ1,=T %7kho89FjOL!;,hOI$\m3it@B:j+F5A5bq'k#2%NNLA2,;+s_pSOlJdfgKY=CmaNZ=Mh50WbZNpOU.H@o_EO\nPS?Hd,+i79"N".@ %LFl^S#E/,^!.SurrGTYo6 %pCfu%'B'7g.h#u@dq/UpBL72.r0oD&U`"e^R)N>4Xm6.21,<7dW6(8f4+ZZDYn5q;+*cgNXJVXoEM::hQ %&HX'V">*4+CP=b/V1PYROdp3-s2$Z0amg'#>T;WLo&W\V_iTS2J05:3/m+o3Wpd8S+W;eD5jUn&*ERmKV4^)*Pn(t^-!nl`8B;&H %,)SIe0.)*n_-i%dA_Ng`.;/e$doj7rnWeo&X76=e!+T1\M0MQ2J;!tZ-1"TQ@gF*5&KVO^C5-2QKtrZV6*S3MPIM5X-F&0G;sfou %!eO7KOm!&fK#QI-78:ME,Z70`#r?N*%*1/ADE7XZ\q(,\LG]8r:6Z,&-jJh!M"R#)2>/>V`<%0p4K77uKZbacoRf,hG[?V&;FM]V %.)7`seR=U+#B;RN[h>YK"6.^BNFglN((meA&H#*cR$-gc>'6VB;%FD_)G0Ha\3HB40hi'PnJQ>idihOXZO3DK,TV_r(5;l&!hWIB %E\-l@+QoFU;Y:?M/"Sb87(,-f$<2c5pN@2%9IfSn"nukE5L_[-0"QJ[JiPZ,th"oMq.T;!_7t-iuC+ca5$qJ]8PC3t/GflAO_.B$*?XDPj!d %]5cs5N0n-8ZWIN;P=5*gI"X[d3taC[U56_h8M#?@-_Bh)U&CsWBFQSU6qOC]"<23P1Q1_;_OkAtA8s([Y^7_F'cpRVeWW8-B<9uo3=DTf<*r[MQ>(dA?_#]Qj/Dh'3kLfiBpgW$Dm9L4$>[!ia=nEoL3FYlsUPs.7 %.nb^&\/YgU^]DIg)B+SR(b5)Y&>].B4f_&\"&"FR7LA!K.#8aS1tmPf6S?-QHSDb%Q6^DPAf\3'9PKfeJqMsP&^Lj'@MioJ+k3:? %Jq4:dH/XU5a]W<,M-227j\Q/^YR%UR;%8$JMWQD]`:I%g7MY?$.5P/Ii+BiHWAgIQf3@NO^dt5,JdS-F\AC"+MsDp(gb$_),Rce+ %fl"/'=4B0`;C8bSLI)W#XCXt(('uiAf:J3DX!PQIP&2ZlLk(ocZ?O-i\LqHuae&,MC69[";A/3*#24#rSR^(R5R,"^JlQtfglU:U %+[:_9!^I2G3((StLa4!#a%`;d;V=_eJtrhVE3sJT`)!JM^Z_Vr9GP]Z+at$I#L`dPZPqGUoI+]OZl)_I$IU,B9rNeFVGeVD.FC#e %Ydi'fDeQ$a)C7;fQQj7f&rmlGM'l_em^a+B09)/16?rl072\h<`:AWkpJ1o-Ak53tM4C>6c(1,QDam.$d5G>Y8dU#$%k^X&kXg]e %T4hD:GbrlMa8mK$X[IOm(Tb4PogJLB[4@ZhBHXC&KXChC#+:Bsf7\Qusd<*6%g[/ %W3:[65'$aLTeHWVCrR-%E"FO#%?`mdpRr4t!<3o[C.pn4&JS?oH')tr!=i7RYs"ig6"p#j>h;[t;rrOV76WCeJLHK)t[_ %k55s],_6SQ/S-+/N0Jn%n2<[u&28nfR %e0M"`+WJ!:jgbX'3_6@U#LO<;d&/]5rc#t_iD-?h$\cl:+oXEbi$\ds"/ga:._:tr*AQBMJpSaR8*J(Ko`B,t+Hd`83gOt8>b*%L %&/S4354hW'&mD6-daB%m;i%M(!oG12$B@7M^;j^Q0kA*pBcrE=Yn3iR<[#X6PrT%L"BhI6Y^$;>b6VMp?2[UF-"$&!Yt1->cU*d` %@KlAIVdJ?&nk2-/&\>m2,Ki0:fkhiZ,EkMFUMqb\i7)_XV2W8W+G,P0A.%Zf_iRl=3$u#;)(,$])5:0AUV\R;<9BI.Nu:7I"e[P< %KA4Ak`toLjY/[ %PA8eX"K1;J8UZ`Kb-3#(@$>gR`=lAm*1]@X94ep?"%L5+=`T>NaN!(+*KSU"i%%>K!oGV=LR,Fc %7&L\a(fB+R"Bp>s&hF,m0LX$a!u+!+K8?j&Sn*sp.&%.n8q[?!$B:_n!9Ha_h@jFV%7h=DXTkgKVZ9!=l_K2B(_t;(;#,P4*[/Q1 %p>HKtItX!sUV_OR.hopTEFTn(EDIK`'N#**[M-Y87?ZSo+mgG^Qpr0!n8[UJk'Jf9Jt5i]GUb`*!jutkS1,%EOCf@&LGPTo)Zo^IY.VVG*;!1T\^@`02/nt6l$!10fOV@*!N;S;%V6q!jY,1U9sMbL4+[;Kj,W&gq&'B$A"p+d:?pJJ-#k7Q?Gr?+J8l> %$A]K&%Ut3-9+pB&;0FhLeWocWCsS4sJhRPQ(egA6nX0`7J^?%U4G6fC75Q>q)FrBuakQrYM$54$/Xbf[UDa4E\#8FMNWicbB77^C %";i))Q$rZTT6;Kp[0LlAHd3k&g!D<-2RTZ^g\\VuT %@p#H[J-!n36%0)DAZ2`h1PCQf[4T!$C[c9e.:*$>963S8c)%^`ns+f-JXD*YR(Wc %80M3RGD(SbD8DoXj>M`+'F,6C#[h_miIp5*a!r2pYUq.n'*MYc0![H:(E4P\-(Z8T6mm\E8Wj9#LUeFm+Xi"GM\SY7!8&W,?]M6" %PtJ9WVU?`k7Zo&d$lk+Lr'E(NXX0"GMa8^*XH7Ga.nZeYL709M3sBQbJe"$7a9_O0S@3-H`.,qW!R2,cZrCRhREhq]PQ,H4e7!?YNkkUqt_JtYl_ae`a %ma1Em7RDqXab[#rUk3Y./dB7]"fZCD090j+Wr56\$j%dt-"\JdV$*#5#G5:lC)o8j,Bb>Ua,('B,M9iC!m4 %`f;5['^-f.s("N;#d6e#qV[%Se3Z!Ri:B/aCe)A,8RMZViWYKq %:]b&CM\$MO(kuM=!'MQcgE[R,jWUMFni=rK7F:F6L]E_dGF"A8![`U*^-f$JXYh<&GUYBr*cWV7h.1-,0GVTL_VREV7K_3EUF=QL %)A1;8'>[RtF54GfV!jh8 %.7G69m[JFAFNHtqRV6;n.pJ@**cd4eTnL-h&h$4CV.1#N+% %H:+#^6C=TTL2q2MW.&;"F@C;=5Wk0.%,'A8YVMBc&nhSp1$:gAcqq[$)59T!"\4(\(&C/n]S]13!KQ1E8ci=!^ha.\?plJM+D/kI %7qu!H$HlKoMD./smh"^JEQj)r#U)Ll,iBCC.hr^LUb\rD_ZahI-_Qbr;o_.&do^Mi8!#A(4rt\s6ppGL68,nED(<&6l$/p&&(iV$&lTT`Os'/>S?H*P\qeF,X[;o2M8+@MhUIL %c%ZOhZ%=DNRY(NK"[QRXHBO]E0EhngraeE`0O'Q05mRY:V1esaE?QWcVZBK=P=*WO%8m2/AXZ@G"^M0+"\Pr9B9GM+nUP4S:fU!% %TZ\b%D5M6JKHJQ08YfnT$)P3]3SQr#,5qR2"O2K1L05NA,pOST\u`J.iiR/H7"Wf!N0%r\gKnLK)_24Q#e,\6=4NDZ6ZNUPiJZ6E %\GoA*U/j%h!FhbSXe>7e=sF,@lNnJ&A.nHm0MaDQ*JB"V"U6FcO^-VI\PkPD?NUA.;6G"s!B)\ZJPu@H`?fj4"qHL*;W7,+30]P= %2&)HH!&oT0;loNiPON5c$Q3!!pESL&80ffbFqR\EP('3X#9MY@oJe!]]qIdSX:e.tKIk,>?3.ZgUG>IR!h:m[f)pmHHm=;R-3\t5 %&Qh?D>9u5c"tqp3(.anhDoSLg,SgsNB4d(rJK#5.mKsPjL'04T#gs!0!-(#j^c`%bBhDZ_Mh@h!(>C-H9Iqrme&<"la9Df-ThmH& %:]sSqdNW+]#5r.+8;=WI)Sem`rs5o_h#t#>c<3A-k6hG!Grp"O!>NJBkDA!j32FB0LNO(Ag`rU4TJ0L-H)8.Q"p])[0G>p!r;`\7 %^;Q6B-OR"k:_YXVC(LdOZ/I1o!OjkM`VhUbKg78BG_+mcllbm;o9GH)AMs3.-AX>c-[qr7I.XIrme.ljK3,p`g+ %H$(M]P(X,:!,u95@!88Dne+i%"Y`+L7<"=sW#iL*R"ZE9O.!NiGnEXSq@6o(!FdRbHj0is8NiprKND[hX3)QJRQ*^R'+;i,$lG-H %N+`KI6-0OdB[&@V<1S4Y0Wfo%D.EF#J9ci;qNgKIbVL3XGpjr8#f-gML0%oSA3O1;3!jtt=_A;8_7bVp7`%UZ:#&hPQObrQ-':P< %e5W]'eHV0HQ6[Ugbt^OSLpC`.6qYJi8#49c7Zte]W,a]sC4+1QKMUPG<#MdUKF9IMmN$sI!h9Z*_.0h[4g4@C+FkC9$fZmXK?SG$ %paAh/b`P>10uXCA.e'H;'E'J^'rErCfdrUj_F/'j>T)8(,lM1GPnS?hJ4bAjJfXsqBI+amd1$G/(,8+O0NNH-g6+QHP$\Ee %&><]aon+Z"=A1"UKc81Ur*>,>YmgZM>]MJg]Fl6nN'A!HIuQ^Z#W/CdTPYFYEV0*I*f[4FF7Oq'9`@E/.d;_=!!)@:0bRO))a>W" %Pl2>SL6VZ1@5qaF/bB%P@_dD^AS!H+kosid^h?(uMFCch8%iphq"bCb_W:8TJ45n]0a<)um++cY"/6odO+GPji3D:=60j>B_o;(! %Y8(X!$H]Asgq@[@PJe?Z[Eg=SfYGnoE@?2X/L&^Q7np3m+g[p$Y\#pD@(?Q8N4k24*)()!Nm'p%F*AT1$_CAm&T!:L`/]Y'WfX3= %=XU:]i*.SJ/"%\-S],a"](4@'.1Z&HWT@P/,%d?bVH-7h!48No*BDU=d3oRIN^W`,ndKMkjR9kl,s4a)ggM!+,sFAM'XT$_aaH`, %:PrK`iq\K"`W>!j.TVFf2%ju,0_`GSc4JgIMP3&SZg'u"FlLb)_?#r0`?`u`9!rbbd0.^e#'dRd])BK20lIqB27S.P+L"5i(:"W1 %dZEG)ShMD)dX^Y1L\tLef0S&BQrJ@;1DJ'n(.S\-+E3luJP]]069hh[l2jBXieU>EC(O#^kWI54lE_ %'2al7#1;s1;JPd6fpNIOB#7qO@Im74QUl#X3:9_FKPC^od%*J9,0[8IM'hTO8ej._AXjA/@fiou^sXNNrj"@JB&I4l,82jef8-8] %%W3FFdc,q=8];*6C`3mrocG?6+$"&`M>IDI#_(:qX8RXS>=;`q`6mFK9!?2t&'8o^o3*oD_h2*H9R6[jL %-PR\B,Qe/U(qU5'm2DQMSl?8r,eS[?UG)i!L`FTX+rhd]:"\t-GbIr[^a0G@3MK.k#\(AXS6dDBQ'dIEX9c%4=K8P1Bm8ika;>@Y %r&[_GI98?O"cj;FjodJBm?h[K&0/X&M!b8)<=k><>b[J!lf?G0K2iYb9c(5tO8eK2_%qto6+T)1]SYrd(0)n/pjO*>&nuHJ'82d+ %6ujLqQ:Rc)jON=sO!9.Kd!m:.rUbc#a;[Fk2[qB+CI[J?Gt=n8&M8cR"a=k&bS-:9V7HXNJ5[=r5]%tX7C;#b,oQ'?Nm=R+>+@&J %BL[k`qH'>5@CDCV4:67f>cU`joBG5@aL$C4H.&KKHJoXePg6bag*PZU1\+W1h"!=Cj_fj=Eq+3Gg12Vr/Lc26%#=,)5"_]%c/5&R`3TH8@L@.1p?Xb2;$$5lF+'QCJRY%#>K\1+GOL"-kN\&6e&,90L*J %CelcmG"?@TC7rAR3OPCGn:_M_k0[.6K,$fHd]/[L^^VPj==9:h$Zkf+4L5l3?9Z]&WBQ9dInSo>3d"2IsUj[('i)@(6:4fHAl*#9TCb68NB>7N>S8; %%M5Nffn>gi$BQ(&s*U\?,Xh/7fcoEDi]^Ipat3&T6NMf`@OnrN8-TdtiNXVH1PtgJ5e0-#^cc`eM8S* %AjpaR7gKdg!p.*=&Lraj911>,'q<8^9)iJj5G(7=#l_e^-3sr'm1ah;b*5!iP"3VbiHe1C3ADdT^j=po_-&3)\Y4:A?72I-70JIP %Z`X(j))ha(/u5e'9V8qC@B&dNr6>j/N=mR)JTH@mG_0qjQ@qU/iJVCon$N4@oIuCE"qja@#'^\elkll/bd.o]Y_8cSl@4I]0^MuS %7(Es9UfG96Lkc6`#npT\8GEmUA.l[5$#3p"D\8+5@onM$U'`LT1QjCC/LcU'RFfZqLod4`^3K?MM3X='_!*)]Z^r$ %(TPY8QJk>GW]Z4f:';_2\"b!.#h[#m%Rhu_,#9m1n_R@S6:2oNa'2Fl %%oBSB)0n]S5pf^iQB;Q*@LY3/L.#RWHq!Pt&Zr$gMXtDW_.jCk2FJ^O<7)?'98j1*[\X<:d]h-/K7QjSHj'Vd`0le&"Rm*[@gYAb %Z#X(F@L$:5:^DYJ$fu.k!=M6HA-E:cf$&+q1a\;%dgCqa5S8Qo+q-B[LPX#F`TX<"6.hm-_aP-R2@1hEP@>=]:';mR/V]?K(eo!> %+XC%N]b3'X".SMt?49^E-sG_'jiRatJrR^lN]D0I0G0bI`3tj*(Ujq>ridq"ZN?0tEN.u__;7Ek#g]Ff%7Bak0XUo`C1C\jA"\LI %&C\HpZ,C&!g7e59KQ/+[aHI0':[*_h]e\RSD(P=tF9T1p&l3Zel&_=%%;75;s)@lQVDg,k.lIr"?s-]I3U+g[EmDsU.VBKj>iJHN %$@Ii]ZV!XrJ32QtgU+HcFA[>sfh/J'Foro]d-Z!YM6S5n$inYh:+A:;D#g\6Q5Q((,g=5'"_8.t4),=?B-M?L."eIX,"m#0$6X/k %1W#D)2I<0P]F#_f0R&9I8W5FiZ/)WZe"DB55jKX'YF[+Xa.^q^PK92sk^XYa`i+LrnE\R1WsmU:'b#VZ6Tr6.-(Gf*$5isZ$0B]t %]K@qe.<@'(%iX?AJ1bP8+JWlU,/nX;+d0bVlbnDU-03?/EXN%e'0V[-#uAJl8uau_aF\"hk2;Jt<`]1g+:D]'<[.ML`N[._@[L=2 %@V)Xt/d,emT3bul#gQPkHm?6*A!\&j8=&U1_tQG;08EPj9'dfiXVc>:k>Iji0:%"9-pU$.IX>V;8VM9r-)Nl@36h:$>2^sj>HPu&^q+F'hA;33UsVN68C %eh@JPL>a=4i?tW?lnCdViE*9rn:TC49I6oqX.fS;dq+@@SYGfLqTh/S/QP#7(sk!;D;#AQD^W:)H"S\`mKl,)Q_&$HX3:%%!bdYaSj<,ar<- %MLpNf#%fVgj[D1q16QeaC,9H.h!HAL0bRA%)oYCf'%Xj#4pLie$;ahHoD0sE*:N'Q68k_R&(`Oo)#F>%:R2ZX2_L5Y"f3T'!!>NLO=qB@/I&(<4cLV"!+2/`XhH'U.$L<..%3^F6.DK%2E".k"u&0P-1mQOmT=*4fm]+lK;Qb0?c/XZ7AG:s %N6GatIZ%9rHednOArqDA<,3SJZqjp'V=*O38\K6$hQIHkbH[\&O@(7de?FH!0KLCU5,S3-A:h(s=7p>"=k,Ck^[;tg0A*5sHM(#` %h/"uap!$[Jl'hFPe(B.Rs'7g(qMiZJ^T&A6]"JT#Yk@lbrQL/"s#k(?HMo=r$-V^ZF0JE?]%=#J4DjH:]1'#Xb@b@4fW!J,V56qb %r?(*.4!gj0'Agb#KWLLcc9EGpQQp?8u+>*bY!!.LU9TY*tQ2FY!;YSIAW %qOqLMEhfdi2naR\IJF6M++8^_GKrFEZ?BY\iA#PGr5Y'cbMJ@nGFlEHNa3f9Wb/!NHD5TaFVT0,4-#(t_b8@ON6u %'%--HG,t.Gl3L;@]$j85Q)"`#sGqq+P5'NQ"DL#1*Vl9rO7NW_*;3D=FQ4N@L)rn3A^_kfJcoU4XHA)/pDc)6p1;.fVC@k[qVYg %A%K\Z-W.YYTi*UW,?.e<3f!gY5/VpiPjYlG-l.(',I)nK-F@)i"hmkmB"sIG2i3-OPYN`b:rCA&n2HJ\aR0'm@iG'o%+it(<&d2MEN#NT<7Of3'R)+hp5,a) %L#8"He %-?Sf9Q@pBq1q&$@-C-5Ng`I\pWQ*PR0@2-%BI))q6_>ih1oEIki::QRb+V95jE3.1,eT7j8I?dBdHd-16X4k2B-AqM-RpdkVQsPt %kIP#^08F#!j:T@g@R`I_;8k%af3F`^kt.$k9/MP"ok`HE=k^f8e'KS_Oj!eCO\/$Ma-[lh:saZ(QM0'[ohqX?Cc7f:Eq6b<.kPs? %]:V`#:6<64)_[(@D`=Pjh2>d]W-LX4q8(e=dd#!?Ej,rg^:Ur,]Rg(h#Ca4]L]1pH%/oPMm]^c9G3[qamtK=nX:kd-bW&=qYA1?( %]52;3J(JBRT*sof"/sZ-FZkg:)?LLM=?rH?`hRdC]3t=:B)h,BA`";Trnc(92\Yu%=R6u=VG;,-&lV^caGah&328.V&'SG-`)'m0s,Jp;P5_>OA&[,s26]Bg^l^>91+\[*$#(Z_ %I9m]91gbWjVB#iI85Z&Dm_X#o]k`>BN7-_J"W[$K'DS-fV8/'EKf`50ok3,okb(0YM8UP&'L`e50h<.C_Dm/Hg5*(J:rH;[`'R'. %d`WTh])i\l<_rE,KGZ/HM[_s>@Ck!D(4XJD`Lg9tZesG$AAA"OQ'LtH1bZrT4YQ$F9O(uY?!URq=3:GkgEg7:Hi"`f4PN%qe\(h,BW4!a"1U,iXN//qggm`9h"IA`n*.0E>f=[J/>aJT<;DfO?i?YNPebM[hb!g2AD'!N %"^7H]$*QV$P88hONb#mJ)?ngbOqRQ,\[qDl#g(!`)jkl([`uHQ;cng,baOcWDJDkOnaRK60@Qn6t[=#%#F$3`ma6%rs%@1W!XAHBX(JLN^XZSM#SdW_Gh(a#=# %rq2V]r-Srh%B^Y609%]5Klfr(0p:(Khg,eAXkh_2.ZZ0NjgC`oXMneN;HXK1_j.XF?QGBOQMtWEbSr=s%EW*m=kJR\NaXWR'\BTM %o)o"\@Aic_%a*SRK>YHl/he$D6"sr-;*D)VlCD"YI5U0)#b5FT?>:K=l\3*!\=E20YMd`?e[sZ8n+3BDFF5;qnVa";;%(bK)'9:f %1-+fuiV8I?[&`b;e4*fVI[GUfacX5:CdU:Vip?:Hb1&Bt7<"!!P.-%'r$ksUS869IW0fmgfpQGh"pRg?^+KFj4QO!_)-Bh/eq!aGd8n:B-: %2+2L/4N]/L*6eha>lR>)#GM2F?=@q06W5:*'\NMo,]dntIp9oqpO>h^eG^+m#)i77Y9M1i?ElcD>83YP=t38PWXr[o01[iB\?,3O %@V0*:)[[uiB&.)c.)GCRf]-Y<#=))bS'c6^6j%UcW00Q::c0[!0)#prtF`*s1L!.gud]a3PcWR6,cO"E@K3>h)n16FiU-6e[j8J'L@Q%!CL<^miSJ.(F+ %"To5gdr(tB=TSSsYM>KFb^+_3mNL!S_Mi.Vab$sTn-JhD1QltQIAVB_!B/W":F0?gn:fQ(!,uq %5U+!/'FV!$\ahFHX<=C:E]/l\'EYdIcGhj`L2o0gi2BOe3p/#HL;Z(GE]0UO]b&m=9*i!n-+Tf?k]/t>P;EkpqgMD,>2l=KJj_q4 %Z[s`<@c8IW@7pt=+Uj,oaE[eAEJS@9=H0\C(CL;]&VnqQARktJe'SGb8He43BEeapOVAH5LE.8K+p!!_d!3Q.8(%W';BRlp-,UnZ];P-_;3&F0)EAWs,C976PNr)778T4KQe.W2bYYP`u %oP%a[1@$BWP>XsX$5Yea7IiU28F@4/%'DSp`!b-U"`Vt%l$QrI_?Llr,O6IQZ?2cW#p_n[0"kXnaDGI)PEqI2$:2D7'?OE/aZsrb %-VX*sQUXH<1:8IM.AX-Nq\#"'aAsTW)Y6=K)M7m/]',pUmFf[EAM0:$VSAN-UIk&(7H?mq$LO-Q6G_#T#(:Sa+JG;e&a;[d2Fg<6 %CC$oH=Y=k\DAYY"a-n29i8I/8[1V+5*^9tqlR[VSdOi$qN7.0f %_$j`rqh>iQ0$+*t12LF-;gtIr0O@pBhGY#=MKaZX@J8;\U0QE+RmjL9HmNR0C8HDiV+Q)r9fEFC!6UT1_.:c+gb29QP,MKuHaI,k %$O'DtTe,S!XcVEltkYLfFoO#(ga;/dIiD"mFH&>N$+EUP9YH>(4;-Zt"2.4"/7gl:PTTjBVcK9e(tU8G<6/-E/[Tc5Qt80ffeA5;?`D %TJ(TfZWZG+>k3&bb1^+k2O[Dr'0S/F]ZO2+N+PaeIH_G[U&DJt!!84c.'4iU<:3D[+StVldRa,=j,AbINV]QlnJ"b5#$M$")r"VV %-(AripKs49`u)Ff+&!s56.R5e\S6pFG+-f_k@-Ff/+,F'Unb^=4sV5*TWWc3aW<;R-@s6Oe): %AL/KU%0WO,mte8Zp,e]XK-?jpo0]6"ME4]$F-krK<^KB6Zc9D'%,8"!Anr^@,a8%=$AFeWdb"C@fa;a&da-7d>+Cb,&B^*9\h]Nm %Uld'!4D@/L#8g\pB/-636G0:&n@4LHX?8%Fk;aE3&47j`cqhWH_rf %<^p/k*aYc?nO8]\d8.'O)8^ea`MB5&[r#0qLG4]N#j0dk>+A@fIg.$*p2.:u:iF)oRd"e\Q9e3,\\_d0JgaES\dj/^#UjXn9si %WsgYnol%@3W)47!_unaS4WIY88K((sKo8bJ-B$6))p>34$^W02kT'F4)-J8r<^+>H<_ZBIfuIU`'9)]< %n:V3o-bFG];*r_0UnXQ(K8Ss7A>@-tb^:lF=9!-:]Y;`g"=c+YA@C]\10j#0%[#!iNq2l0PK\R?)@@`(.>2b4;dM.I(+#cqX\9JQ %!_\-B]S%`3CbSZu"EK=ZAV!Znp+$`b',M&;`%=.U_aH9L:ngWfK`Z#$dP:HJg1M=jnt&/jp'[W]l=ClsnqH$qr,FopWl,nK(0\i!5/e8.EDt/UYZ03"(g7:Y,Yb"qb!4Z4&*0Z=Yi%Y8H*n5aXQA %iFtZ\HS![9n;SX)chO).F8DI\mUC)aUE.:W72ZVAVYhL183Dc1[85ii-Hh0E0O1DIL+mpg!&):jh_!jSnCGM_(M9Z;R %/`cRD.PF#BCN'`:=j5kVQP9_eO>V\7O[]uqOD0p6e$.JVX#1O%)m'Dk]r?s6E1R!PnPLhKlSV=Db2all:_k8:'F)Q!3/HZr]670B %8c20j3emnF(VT/.2h7*Jdm+[]200fpmhsfN+Y6fnD&6/F+C#o$0gR#T)ZUF7`Ydb[5ZfR89B.)kS`+aFh"]Q:$kl#A1Y.FlXhXDt %Lj2E8XB=aZE)-=jO_()F*l@P@)9LD>rf!q(_d3&n/K2\7Y`%^a@-:,XCoEmu>0@1f3T$bk5SBoN":G6hC-/2CZOVc'\8`/#Gch.n %AXGeU//50Ch!B.dWMN(;@"LbsVoV\/8?7K511QkLFi%E6KWB_>%G\cd[$ck&2-05\/gR.rf(P,U8^f+X?$u%/hPqasHN&9?Kmg8VB %dcD?e;h5 %-ELa`0[P\F@dc7IUbJXXn&D.`73m7IMG^e[2As8G"6SAE8W)54*`m>UieBg^$P:(Xn:&2gO-o\(kVnu4e5J&Y7R"*C*^)W'j-!/g %FR2\EdR81F!"oSF=cjF-ZQ\(b:aMe_38K!P$`$a'S!$'g3L_l^6Z_m@=4If`R.'O-(P<]4_AL=T-sarf"O]M1Ef1PZT1I>;ATWMN %:Es$c'%LitBUqR-)7GLXq@IQK@s:W(WD=)(Ydc\2do%Kd3F!,)1;W;7SYdci(f%$V-;15!J;jn-5sn&p_)p)En=>]8*B6Sq/OO@el.C8lL!lVddbq"4&oO)O_m(^8_D3O6TZ'fl26V7dK$+\GTjZ`*M!\M&:WS(u2ff %FZ'hNY>2mHU)Ec.#ddYh3!q=)_-O098E$LiYoGC@pdRj14`h!5I!YN0)j$eZg5Z'0JF7%;@M+%4OHC]!<(qLiUOkO24Y3VFer0n# %e%:qYf3PLs(YIR,reSWJ6i"Lc9*o[SfQur]2Bq"iZ9KPkZcCrUik*81LlfqPI]Jk)*r5tj^3f,UM#(13PJbC'f:GhC@!_PXW;uLl %DcQqLEP>QbE)6EE7H!H#Z:L%,*AV*_k/f?Z--0dWUaMgS<)^S04JF@9_D0aGJg3eXKe_J'?=ElSBFQ'j)qGt`OrMdg(]ZUu41L.m %g&oNQonP8o^<1n%M\rp#`b6,=r-$lt4W)R!V!qU]$UhgkBG`/q"$22&oVe(l_Je!]`f/LF<`h>B,:^m(:L32p*)TsGfnepF1N-B@iF3g,?U/QiXMBdDi[UFIL6aUh %p=]<.a"+!u-,lhL#.lfeo>4P?lfu)HAh(_`;kH?,FfX=JfuX*95rZhJubV#u)oK@I!XprfY?02O^Q3s1d4` %;QoaK8d^E)Io^Dd&*oe7Mp=NG\'P"Wl.d]`\WU;\l-5N#r)Rt?*j'ap<-GGnerS+Y5Gfo;Z.?#M0!$/!4t-X>lgbd#*f/-g@'m(Y %`'frA@cS&IL&7pmSoh%-710eKK9(G`G&$FDn.][.(&b.:eWYjbZ$Is9)Nd9]NHSl,!V)3[PY;l-Q %L[C]!YT'fL=c71f%]mT!?I=F;mtS`X>;oYh9*\dH08i>jXFaKa+ngqkoG1AKID7.a;g042(1Opsu#F %[GqlfEG)pUDZeQ[jk4D/`(beV[8lYBtO,>?>DW6@,Lo;o`dt#TYJ]6FR/3lr;`j15mf#G %aM(YZPgEC;C$pu/(0s*M6&annrb3!$oWjkO?u42Dqg/l!k7T4nMm4'f*.N#[Y1<-?WR=K!K4mM,9PfGMDhPD)V#t"pHeiGdgACP: %O'cUC:R]hkjlaE@3-s?0:*Wj0oB\7-b=_`/hV.G4)#_XY]).ZF>?gLSTCO<<5<.;TYoh3h3<%>'blc;;QafX[`N:l%Ya:jID;VQN %c,/ %lL0hXB150N\*01Qh!uN2;J#c*g(\nonrGN9<.?ar2X"jDHs>63rCALn9I#"Y@`Cd %,#-uW9_?h>cKi\=nC_gTN`(s`':[%\k4/C\jM:MK#N/[PL1#I^E#ck?o:OYtra!D2^V],AC_BscUI^F+,nje/`7XS^*97cCa5f@T %(d#I@Ss+iUV"0SAa\Id8=1gqq+)Zp/N#`!Vr+DN#s%['ZR2A"4`f<8L7^d$Je<:Pra1kS5r`9puMT_QdpCi(t`9-SWT'$cVa5g?p %fK?ke^a&j+]_<)/a&OdTj@( %;0-4:QrlKMq8`K`9&d.`Vp#'nXYU[_8POl0m\43.6.^&f,&8Cb_dp0`dXGt'O`BEa2IK;".\Wi_oLh?T,9c+41>+6E:cm6+91CJ&uRtL&t'S##%mYV5^`Ml %/K`BYnhICsHq1DrTD0Ro5\keo"Q(CJ:J;ipU5]$=0R`^C_HOE>X8YhOIUW;F(dS'TL\o!i1-+,;#*AERi^7$,OZC %D?$gRi5bRHJ(TVR@q,H4?4o!riREp99#SG!/%S%GQl5?G4Jr%klBk3(,!KkM %EI?3YO""BjZ`t;m#qeuBpjmrJ!Y`NI#M;LU><;W3X2m0*dHY#i14)=1dO6e5XWc96L4hLWM(IU.L*]pYZ;0enS&C)QHG0"G52IZA %m=2PN,`Xu/p'r%>2W:fs4l?!JaYPh;gAp5V`5K%]6Q&,f'rGiWbXpgTLXu&J@i:8mRe2J=qS\me@a6m(?A>pfPNM5b;*l7`KuW+UFeVb"KjKNI]E[/br'@R %:t]RWWkJ8s9)YtmYE++lUU/kQkaXTGEn=;kg6hW-,=fSqc/P_)Kl9g*kh170BPk*qo#^gKa6hd2^#%*tX0)?oZ(A9(FWZUmAY[ir %/a]KcXEAhoBqI5Xn6^K>dp?=[ZobC9V[FsPV"[$5l`jZ2TFFu1h1f6^8Vs1VR,'5U4`b%*DOnnO1GRutGdqR=Y3re!1D0Zd_&Mnd %Alk,pHohK"Wm)`.:T\`m-`(VmS9M*/U=;7-h-AZteDl9r0uJpi#g87D(%` %Dtg<'UB0WKUtQZ1a'Q*[5Oa]ZmEY`;I*DT5:>GTH[!LHmI68Uk>1b4+nd.M_&i(6L4s%3p^%=;??#As^FaEsj(F9YcG+Z6J)]`"l %d5ihFV0KQ=QM?1JbahYL7VqG]c1oW/qcE3hPjr".5@S*YG,L'fV`&:D^D)G->g5V];j\<:J4d)gGH;Qo`BrA/4@CEXs-.XJ7(MJBHX;0h;A/5_9+5(R1EFSn88--_9^0@nK9=bn/ckg`65k9(+USaLl(]1Yn45[`cn47Kj*gMB<,C_A3KGQDk`lMd".aAW)1fRe-Gt[Tq3eo %+#X"qhd'/o>^o``c<6i9jGg8Ta:]#Xrd4kI[foWK5,0CU %^J+HQ[P3S9^4iXi*5a2*BVcGA)/ZUZN4t&Lbmh($Tt+T<2'5\46k% %J!WTXS^#]VnA"iF(?[9*V5ec*@'HVRgn?5.OGgan,PCqP>-%)C9>,L?/q])=1K[l=1?cBIOfNd'V@D-!qpNa_5u0[Jg27n=E%bPm %ic3<:qn5nr3_?BZH.qQ705fiYmBKBeZqjGeBI)EEn:cM&nNnU1G<_GDNd5^(C&-*P_Q,kd:50gO_e[7$j6nf=D&a=pHJ/>OZ/aDA %;*^LC;YNE7BYAMl>3ouMa_8(mYaWPcimDN2@'p9j`\bsNKi12ac-4nK3arq-*2C%R9^a %1Y.o1(A\:5YgH>a;N@91^m@5p-:Z""j.=O(L99[rG;^I>,HlM6:XchpE_6*E@a[j]ei %2O3fugC_cdLhh,]S8:T(k6EZ)g;c&*Gk.cWhiINc9t]Wg6Q9f23(df6lIFa(VdR'0qOotV\*IuT\:*biXlX;u`BUK8Q8\FAr[)Q) %IgbsC)o$Tsa6rE"SCXsc+^cBa9:ZQA8K1p8M_-p#-T]U)mFpg04-mTfJ?BhJ/#;#/mb)b'0M<-7rr[,b2m]lpfi?`J+- %9kb-T^=0WiGB;5aCR$@9B5_X/gWaK:mOC8G:I4D]<^(9/iG5(Z8r&u2l%r@sI?b[%GZK$dj/ZqHSW8^0UK6G&hgONA6_7*B7XjPK %B/eNt*D0_uV#28V,[!1LJH@ANb_OKf=3iR;fXkN6H"`@MUlH6Y*/,I/2iJ\I3G@B=?F(SfD2EJ>ah6u%;s0l'5h/Dqc %H];X4pNo)LqFXgJ?TstPhW[UG^"PM0Fa@A.UOAOKgKf=Odfn$H0Jn'8J7?'SUNq\<3% %r^*a@k=0O-;]f3:fjF:LHG?*9i65GEFa&>9G.R9_&S/4TXSQ-Y?gTE5Sl)\V0*Z8bGMq(;FEC]<#J+SVR^d&)0/G@dbputbJ$`R0 %%A*U^&q+hZ_sMs,lPKoS4SDfGIBd+`B/G&$\]f\QPtbMQT&IruEblb0;$5Q#He %8H6_R>g!OfQW[UJb2_h8K552-hL&;iXgDlHIJ(nGPqN(tDUmi+fA!]J'A?NmDR%%ojlaLVQ1H-'aD/WbF %+?+SR:OC>UX'Y'(q:7^Dnk!H!C]@H(SA=Qn%toYq;KE`prUR<&K3i9*r`d(87slVs@[Ur]4rI]Y\eg=>ke]h.iRPq6soVa+Zb@#dT61[d3pnqT3HXRkN?< %r&'6u%;i=XeC;9qV575)5@:6VMaQ(`!n/A]0]$bPYaG9`V8qb%8W+8#\eWF_7;(a_EFt*Wc`1I'S5\Uho"_mSD=URdF7bcuXaN(T %%iN7i%-[6nr7@dAN]]^>oC,*`%tQ13DJWX&%&EIIK.pL'KeCToi[udBPuPBf?qL$0*A)R%io.IVnI;/QL@"AMI48[O*N*kS\JG\` %,J.3^fBkG.pZ7B>_fadm1ZuLoO(nRlpY:RJ)i(Q4-1.=%OV>@),3)gIPZMZC1n++/^W_#SmTuZ4>Wk*^Wmp8AD2N>@CX(.@Xka%0 %(S7;fq).b2H;EHUB@cJ:caGpff[U?nmj]Bg;^d:jp>&BZ[%Bf!YRS2/^s>WnYl[L'tT[R8#nc)l1kBBO=T<;ZPBT:mKJj?FA6FDo\X4*omR8Rk?fE"tJe+`$O[a%Z*j./fk]"bj*7!c;Aei %eX*5i5M.Tk>A3[UC):);mdM([j(Z!j,XP+@kNq2\O=m0k(-PR,:Z %4M8ncjm)*PeJFOl%9($5BFngkZ*W?P%dnQtDO+BV'A:"\SF3fFfhh8RQQ&YESQ#GmajN(1W\3PK-t\%:8i3Riiil%m*XL&S0Mj]$LO&23?eYXFO024/*rn"X6#qZKAGSNDdYT,:Kt5" %*=/`PD7),m<+!NaWHHT;m*>8&.\1iJ]/a)A;r;Z]G.$KCcOVh$DdI7-\68[Q^H_tAePOU&`i0o[%[>%(B%rj%nS>A,/7fPh"3/B" %K!(*c:WAh*]X)?iNEjhUN?L*KGGa>-loVSscq?"Zh@`) %Nm""Bo^/aB^uSA;$u^b+kt-6jZ-t'm@r9kfe_fZ[pNafC\+S;$dNc67^?VIgR:1\GlL$]f-#gDhTD1GbMg)(SYbB?HIiU=n+5rDp=ecb %9)-T!jY+jtDl0C5%_O09@peq&S0#W'0Ah7]g8`A7TDd/H]t5@&miANY>eJg^4heUMBDQ^ek2HioBYe_b)P"gQ29aIqqFoLI@dXmW^lhcj7_cSqIfW0n`HikVt%s6G8m0Gln:;q+5A8gDLXWO>2R!l(%&cH3C<1e^BqRO]8askQtH[@_?Olej9/J,$skYfbJ&\+fLS %OT3%CJ*ij,le\,]Vc(3KBD#>ORD7cHG"_S3GPhCRk@c^TW8oD;mdJ)X/a%c$O0Glp8()dm7n?D17[A6JQR %o#`S?HDTJH&DD@%95SBYjid%VK=Rme=0'jj^F\-Qf.ZSU>1pU([.Uu\>MAkKp2"Hd&)?M)`?0<,\S(WnXhOc,_.c)$Z>'W1l)1=-G47/;cc..6&VgE:Rk3`&tk245giQYBas<\'n-j6TNfhij`X],SQ); %9hisk?9"KY>A9O;mn%WQrP++o6f)nAm^3ko[sC7lD*@-SNXk0t9GYW2S+sI`T2;uXcEXRZNMYTR3dm:Ef4M1XgoPn3YMQDLH1u3Y %e2s3_?@?XNWO;B%H#H#<*^WV6+Ct_o;#Fa47TJjQ5-ql$KnQeIVIpS?1R]5PNd4 %gUhC[S=c[Z[A0qWZO_#-1okXN?[mQ8h&VOa2jRc-:Mpp5]rXDJlgjAqnV!TWBA8F %mS?Of4sMpfL7cXK'J"Qm5OIUErt9fei7%K,.O\Me="W5YYJj@ajd!UXmUR&4m^Y+kePWQ6IqfjdT(h+e?buI@?a5tWrdOjb4KG,4 %)f-/Ai;2HiZQr722l4E*'Ll^CAb1:Ps!rK9n.;;8j$(VX3b!?ok29Y7X8d'\KB"dJ*"2+5s!M0=J,*Nf%9(`.F*W8jOumk[UriO9hCJD8s/2s'Ym]S)b6!s\o3V*Vb4(jb^772c$dquA %S8:/#qL(ip(ZP^BBW"U"knbg#l[ADgF %QRC8b#!6pr$Gt;7dXL2pX5uDJiQBUS?c1l)Q?VXfY?IF!QSs2OO&p8'cclmt[CN`5:7l&h`N,JVj\%f,q#/dqV&,EY%EL4Q>oaFa %N71$8Kama_+Df!f[F_UJiX\gkXZYk'qK:R$QD-kk+"od*o?tb&g9T>Z7h<3bl5^Ws[.3)0ReaH9^#ZYOtXfUZNk3S8SpiHH@QY/,@e/o+c0B;$J] %.2CJ'b<#*1J;m&nVciZRs$>nad*VE`rj:ZG["!GifA6>gb/9eF^o?@p^?7]hT+/R/j\Ig"$n3X2``BFlrq^Zsi:ZJmm[RTfnSdj! %apt5EME;rGKBq""lUPUTX*F$\a'70H#kpulg< %_cqW%GLG**LM[P#]-B6fQ-UP$\pO>R_qj-bAUU(k1H>8Rq<6LK-e`JYo_7]X=B[m?+8H:/p&C*m!kc/Ba%[)2aE*=6]=t\jBmaF) %IFV[?8a1M?l^l>7]_u6MqDJ/cR4P]@6n!t-o_IN;)LJ:DP$fRqN+;bhB0dN,@U/"`j0 %'jKMEh%R-(3('E0W8*0Yj*]@D"9rH7Dp;'l^`oK"dZJA`4fd1i\:p_XB^OJE(/mVi; %$gX8umbU8tY^6o:8m]-?d@=QJM;J';n*bY:2>YrT`T74b(G-u<#T)SC,YrMmJUqj'AngfXMtLS\O2\b7m`]_gi,A,bE6hVmJM %[qiraab_U\Hb)-nbo?Q:SK7T`mk3DO>18s\H?udWk3q.(9)[hi3lMDPD*>Od14SEMf!D"GT9$INlW`eOHgo5DY1NN[Ej2rl0K$Oi %Vu>t(.9]u&^KTB*hAd/pe1u;/IH1mfo]N_GpO%=%COHfL0J/>Drnbk.Vjs>2D7l>7Gdm2l3H-eRk*DL'Jp8NldDDDX1$c<=JF_[l %g@"n%\`&VGpV.c]8O!&dn`tg2^&J>]e`fu;GB,ZY*c9f^1,m0I*o$PQCO'coS_b@_PM'/im.XkLhlg_aoC?qnfK4'Pj0JBS@S@i[q3jTI"gtglFq`7pB?$XC^hq_D8eEtZ3ek4ID2j8$6kMQ*h=M4OjAWmd.3+59W&cE@N[C>V\VHJ2QoP/13 %lfd'4eu^bESokkJ;sN21>5P %mGRrkf%0Md"r>C7a8'N&eOl[]@U0K&m,s-[(Wm].4 %lcrN`SiJB=C\trqik>4:DqnXOCjFXQ]V<,fFJJS@3SaH+oqR3OiJgM'<5lM$\'3'F^fQO;5BlD5C:h"Els^pCi=jj)?$E(%RSsgT %V>XKN29AY?f5C"moTl*:R/Oll(S3hJ?eIY=mhC0cY%9EWP^d[pfKXlI&8qOE3@aCFgj:1Lmd93)0.R:lPNL$EXi>IorbL]Rg/>9M %1X2U\lc%+4>^:Oc=6;]J4FMNo:.-u>j^rdTeJuf7h-G@"F#K_1B&(MC2.m`VQL6E\l'#fBEO@eiErImSDS!+Kp^1Zum)met5?HWS %3OjY.h)XRZqUL&J]`@Z^Ig?biBHD^jPU<`sJCpLs)'H1pCQYFs>:LG0KnE0XIVd62[?BITHSI_@ekh><"\`!d0Bf=gd91Z10/H0

      c_:m,^LM:ak\Q3'd\;!4)QT"S5%RaOn %mE^R2a$1qY$BiisUQ_n7Y3b%!r5tMe?8\=(q-miJoCTFTHD*`tQ,gq)Y.M-.O'N-_G4!moe*5Nu^l,i!?F^Yp[_I9.r,cR,7?Y+B %C9)^K8*(-DD-_Y_EOGZ/j.D[!DdP/&d+K8Ge8.toVB2@Sh<*! %a(a62SX`]?B+fE?cE9'l^O4^:>^=!^ZFBDcs0(h%f2L:d^9<'6TS*<=\`&]<$8i.SUlZ&m/'1Bb$0CMls79Ro2j0YH/6`>PZd2bb %O_p(7)NA>uqJ"CB3naeofCt8J^Ui=T1oa8NpL>Q3K.0p_Zc6e(bCVUqfMUWCa^&fYD!_O0aHph:<6#6m$+GE9fQ>@CUG$#J]X6:O %++)K5o:tf7A5'?gdr.fTg?S,=l6"8lSI\<[o*uOkRrn>Ll;'a<*)GkLRaiO@OuI#Qe^L2Hp&$'sd>5G14.Mt22_ACC"8.oi,j?9>@)<4\^P[?'=*Z74B$ %[G*qC2(LeG?b(\)Io/^O;g2gWRl:''0YNs^t6*j2Hp&X6cC3KqqJ:eA55a6S9erK=_HD2:jCqQ,4FJfu9YJ[#PC+;Hk-OYaocWs`,C?)ur56]Z^OLFsP#+r_P]^'` %f#o1Gp!qg+61rRn+cA]XT(-S`eaKIc3o"UH$U9]aLUS/O*dr,5+B"V854n*U[0qfTMjH7`TPG@P:GiGq^3m'lfU_qTeDrr0mg:=6-OoYp&FbeK35kchr=XjpJlXWRF" %;B`KK?-2ZRa.(l0GA`++J.CU. %:O^Zq\oG)l,U,oG.>l---S3BKCo"J$UuJab2c-4SJMbk`F5q#W)CW')HJpB26qu&4Ya1j\&TeKogAZaY33<\j)%piWlTrFs-YE,$\ %>1tkFoLhkF6EnKOPCQT7Au#%h6+8`\-:S7LV?4R8"D;f%8HN8feliKK"c!bZ %QA(FmCFj$PP)]0gVQaF?iJf_ee+-ph[Aagq`=-#R$q"([rodDaJ+S.cPU7L+U[HHh"Y'(\o#7tk3'A6TcI"WI5g%;(XLhmL]i"?i %6"gJ3@2Nfb+E2nf,OrLtqZLPBI^rTCjYLlT+I6W:3N+EL%BOXN]2 %@oR:!6KSG;Kd]bbnSi*]t-.e*ppj2-l3%reu&Te.?n-?Wd*bu5O_Z#h<7r7?ZagWL^6Z^I<(@G0CPib %qh$B4DSWDEV`"N`QpU+nIr+Ztj61USM/kotfG$&>rA+6E@5M389^GONmJ#jhDp\IXo##u>7'l99js/R]bf$&"[=b[$JQB;KpT?^V %s0+D8>j-QMeniU:S%rW?d$dmDat)nc"J8F=fA\h!mD20UQ9=]j#R/nCM>h3eb6,W!p3_/fkb$!hY=EBkO.bO&uor)6ll.+ %"Dq_204I4PCKl"Eq.ink4>Z7Z5R@+S=-g(ZmDO]TC^`!1VZ"\M='SG1i15lFUt6;4'C?kqFta!YSb\L.89i47lO,8Z(DQ/C;8r)8 %h$?9jNF)PI%STjj`iNZbB<$$MIm>U:dm>1EU%p6kHU=$C@a).>d^,+m^?QHD@eM4>h0tuPka*E/Sumq%K/;g0I]su5[jQOQ5?d*R %R5j*hZ&I>jMWKbqo11X&/UqZX1<6k-/GK,EO.Q@c@bL#B74`Y);iTnL,Cq@_FjcY).9=Q\8Rl1V"HBI29%t`> %AT:K\!'F$I\M4,;P"X>W#@$h`J\FB':9hf@9%HDb'+g>.)6f63F15t,$=b?"1Lk%!lV>u% %oR?FOFFWFI[%TUJf(U6oSjXZ%Na%XAMl]WPr]"^>]npXHd\AOh*-i2\jmT%UYeF]_N?iAHj&GFp:E`nf:Noa.RQ"(mF._8&hRn1R %YC(56GbOfSLB^9EH'9Vt7e&_gRP&"_LH6lSjo9kCMI>AcZ8U*,B-RWD0+6'C]7jVB&0R2sh" %8%e`Y1I+nXcA5AVgG=YWVG]%@V:,+eO%n,iA=`)9ki$s:V@_SJb"@)9pE]UFrHq?bg5I:Y`:V'_G@*:=&*(TTs4j+-=X@#G?28A` %&^>3@Xd2-dI3UnFGFZNc5j,Q9Z`p7Qcb5&Mci^G\ejQ[6dF\6$&7.PD<<1sokEfJlGPrI(p\!uZ\Pn#,Z8\,d%8`[;h %U7H\c`Sg,nC!0n&mJaH[+F:ZA[?Ne7Lp":E7ZueVZTj]#]6OFu.R.hHD;F#k.7E9No(cI=U_0_L7r&VR-AqP5SUK>o?/PH>3^39` %HEiSFWC.9o(F&$2'PW$\0$dfcA`@$E*QJ\[rStNE9\P]o!PR,K\WQhDMgD_k0YAU+J*F=l7ofng=3S&GI@U3Z4'n %H>:AG'F*HcE7`j"*q3I7t?W0=-**gF9he.7EW)mU?$YpEk4apZMEA;ahL"TRt9LmH4^R#*4o`fbfEVkE;lo %HlmSGspM^'*TkA/6)N@f2VTN,<+$?E-9>H3n_fiH5aEa %hIUf'HQ@RmWZ?&C?1,9?)#NOZ9#3Q+;t'nbkqB[lDY&5g_AF>V_=%o)j_Lq/>% %97PQQQ"GCAXPdQ+I+Wpd7h#9ghgLZYNG;e&4q?2D:HN4epD*)[44ejT:@4r8RNGLIFd;MTN598;@^bT@?ZA5oshn+puMds*>GD4T%([BIMG-ERFTCu%ZCtMNh*0V$`nX!RGo!R1VD/N[?or!:;^RFKCbNt!uSGqL- %lSBNmllB=>]UnFmY+#;/;4h/BHc6j#l$[]&bN,&2oB520Z9j!9GB3Q/Ud"ai')'W;V_]=iriDG.BjX5kc8J;EV[%fQ^7fU!q(h/> %ZtNgM``Dj&f;MJ\]19Oup$%%3*TuZ,gPlLiRJJ(s1Z!\17kEn0agqWAdoDjL-plNi,LpO(<:I&"35g,dItqAfDQLHS[5Lai,g %i#BuOjQR43U3NID;W,UP9L6)+=+T5#9oE>Ppp&AmJ9Hh%7apNehP"gWnOV(TM`i'f;)s4*S3(Y`;Wj?<'GchG]ZV?@qhdNW.T*S6 %^!MSLP!l,Sn<"$_lLE^761f;B2.70;f"XXQFKlWbs&Mo7?Oifu%ea4#Z47(W#umYOqPOl.Ih8^]8"1q!`R39B.T'UC=J?Htej#F5 %,`1mfGON7``X7/_>:D%!CfAtSdG/r-75dTh0rfZH,`dEm"-KS<^4*E$pGi*mOE7&bVO[F0XPKBL^/oV>jNc*fHdLsQ>shiA9\nn( %2r`+C&YLT)V^"R>XBt8'Apj+nZ(A<%.K?2NgP3%pFHZ(\Q[^c[5?X_e2Y5H8@-u4gS.O_H;%8dmXeRXapf94-<\YGia!1UbN %!R%p)p-@fLIe8t3d3hb;Hc>`.2/3#1:0Pk2bj<8o\Vd=BaR256C`>)TB_(76'W`L2G.M:+8%74^F\MGcFOeJu/)gaBjpk#*,lS#T %jL*H0nnQ[P[dRrFfqbN[$:OV:-`"12,*(dm#@a!O[X=J1*1?R+SA@u7F %0T1AWL0-W^c[q9^5*bYRH[kA2WZj"RDDGuP+%ihT\T4dm\n!\dJ&??aPODo7g_u?g0^"/'>OB4umh%UeS>mqmX*Ph&:=UReA'LNrj**cb&7,hl8t:<5'P-3cp)_W@Zt7j/3l"gCPQ66#ok/p'`A+9C'UJGAHVdABu*s*3'"=67'm?rA^^'a=h2p!dlP%W %od?*F)(TNH88O@U-p'L9YDjYTN)fOuWoHX5\hGkkN:tG&c.l$lb>KT'ApbPR-dD/3PLnT>D)h3q#IBGFp;6.EUri<2Ffdbd2ql/Y %dQs)\#+[brOX/ZeJsYqA=9R=TNY*6VI1;)Gj4?9h[]@h&H%F*j"q9mN=ijX2F$U,e/oug"W3#%J`.[A#C"4fZZ)>t^3Teh)+ku\M %N5Ib.UD_*p;BF.u*BWt%TKQ"&B96`PH7mR]hT^Bu5`ZK][eHknCr_l#/,*q1=2Hu?qL7eT82ek]8^$6*o#/FeV\0.`^_2V%fJ&o^K/,adrQU?n1/+GUF".0f[R='^@?U7iQ<=s<^9%B;rI'"l;@G+;YVFsB.g3mKgm5Snlhe;T2YF5>+]Qtu?[EVK %CsClt$g6dL:jd;FrHFB(5)gR55A%/rEN7cG]d-uda=6ObQ8QYO(ZL>G=`dF."4S.M'_h72K;2'^[;iV\M-hgm^`AS\\&L'Hl\^dO %+#kisMGkK7P(g%N'?M*ics`(>F=uO.28!@C8a`Gq9V'At*8q?gK3nY'#bP(a)(kQeEil=*\5+C7(T%!m5b#BVL#P:P/]"\UQR\ZH %CCk]#-:oQVVBaOYj"RLIbWMmgHDMU!9SOH%#kg$HcJ(JNE*&8Zk=*$K5IN %Z[KQun654L];!MROAHfHhWbhmeNF:D]G4E^@e+gA9/('(ab;Z&n>Q.9GnK1bS;q-ieeibnH9I235eRrVS$ZrcF`Njq_QSRn7A"^W9\ILLE1e_jO %Co0A'(*&*\H58^HJSUr=e?5A:i-Lo_mYp+9O50qDfeR$eqH=1'b9H8h\JdeKIM)IK&CPIoI(Z](GB;"Ibp$U5eCF%LP^W!BK12%W %DVs@OHEDm0="uOHiBpeTWu.jL&c8/u`EEZ4?c?tI*qm9K/XH-'WJ>URoNr!2L:R=iGVsTEKhq,b@S?qtQZ=&Pko\5m=N4P/3':ao %_k>]b:EuJT+^(4CfR:BB=X7&8MXs2HMp?47>on(As/`U=a-b(VF!M>4RR[Kj=^[]]5.d^-i9++f-Z[1FSBfY1W^PdO4b;)*]eEFn %q3bfn;CF/.\OQ,`Tk+9E.iB[8DnNa3[SRian&C7YYTB`ub/BR)_q$Re,eu,\S;BNlK8<"fWPB4#eLRCgp5\V# %>?rEsB)J7";2c,B1V&GZ=eE;!H<)X=%6Qc]@gk%pDYt9n&'gbU\ZL.C&jtiCTHhj9MdYcH&TeM`DZL9;5D%13(0gi,kDu;-5mrFad.npM0NrE%(cq]k$uGUR(qQ,llTig"T#H9u3e%8Q[`o9$k)N=A`jn:U>Sf %qLABD5sZ4J*hQeNro^NBgGVe[.1#90pJ:`H*!gCao0!NAE(tu?OI?R%i'7XU %lIJ<_]m*T+gtnVn5=-4p@Z%F/7uXCa@,E#mjgCFlfjh@^Z_5+mVu#E\PJFYoSqgq@fWf0fbq:IQN3JQ%33YZSM]'Po%6=S5!lrn# %_S7?95q=uQN=LR12l105^o+Wt'=:6rGX41NitlqET(s):CVq%+oGg(r*1o8!_Sl3UKCa1GWbcATd?2-65sqN&W@V02ffA1'YV+#% %5aWsH-Z+i$(WW%s?X`E#PBS'iC:Xo+HQ]lOCtY5Dn#W!i:%`Sr\>;Drc;b%EK$UrJ7J<\>=a9#T5L7'M]?0!t=WUq#ZhN$]G4oSa %\BcSK;+8j^-nrrtXVu"P\[b2nM$mWs9U!JC=s/W*E0)7&)j3[h1l;r*,PHR'\OZ_ER:48PGKBg,PK8]0j^Uf`O(XLDVlLI8Q4l>) %1eI\Y+"k4di@=)X;?/t"7dJD5;%q:+Hk(L>T680.o:9WWrS7u#hP%jRga@p?k0nZBU`n`<-0QNa1*YalOopaRN=s*]5CAp\SBSgM %Qk,f7egC3b:(IQJq)-9BG=TIas4&8abD=4Zi/#U/VprKp?=AZ2(jgW2n=5d:_WiD=^PcB@W)U!oEYtRA@c=/>_gR$RrK/!(1&q:CXF-6Q`bPG@V3C+\Lg3Pg<9J6b^ %D9`7MjSFH.AG#(`#l*&rd03=Q?kBInoV'sk'<2mNa*:q:(KX*l7t$K9_*QF8hb0u*fh9t`^.7ikBC@$5AW."fM0Z!>9NhoI%T-BK %R6#g[>kn3:k/"r\SUs'(?8`jB!LuRa4Ik:8e`GcK:t0g-)9@>`o=,Bs$K@Kr&*Gn]AU]hH2BL.ln#28&>;dNTnrr[p)'rF#tV4eP70Wfi.Em* %!nYg%@^G6gM-Ms''@3Z8[@%]SWS`5WE(rZ6[--RdO_JK]O,0aOU=0Z'o=\2E992rJ@HWDg)Z!RrLu71h78H3Rc>CA,SoE/6Jk(QA %Q3)`@(>2`n^j>3G!`O!cU)gS3]b3[jmXI<^@j022n(a=*627c-38D\eq!/h!7!*a:N:%\MqY4jgSE.%KJ1/0,'VJ)&Jo %0n8(DKO;7i'TThY#_V+8'.BA@<8g&l_Kj2B)#^e$T4(9j!qQ>$5N(!PorKXdNUT\iXAT=CMc^L9TrL^Y&OhES19-:^ZX$*@B',98 %YaZ"')SO%uL#[A=0;rop--rG$$uU7KlL(Y'iOB[/1HOg+4P96AAW=lYd5/cBVmn:M]JmR-\kgkpla0^E3b*p*&/2CBRKn(2H&p-DGHsYa]b+hQemM\fbDNZldq[0=Zg!oC6[Fdh$\C,4R0ZmqH1=4$V6J[m.`I %fPXWEY."2qY;Du%s*T3,2fte%j1>M\]dj2)j,$7tb_`RAUC%[ckV`?NaS@mWHQ-;[ktqW)S'l_CWCA=XWkW0tSLrO4&3VqbUiLn[ %j^(d^@`JmIDOhPZG+eTKYt&oI3a<0%-hr@p4).+.A+e$l,[t-)Vboa8;hNA@khbV\1Wap=*V$XjP, %$urF'.#FJ_\NY1^$:l@2m@RJ:\"I7VXSiOP28IH.TKFI%]@7V;+3-QP)LZoU,3j/Lec^*oOktB1FS!I[_P6;-quAMhkOQuAN;(4@ %Lo0d$$+faAcn2)>d<&^7BdC6*1nE7nH(9Um&5D>j.PRdi>\H0eD7Nn.*BV:W %6.pa$QQcHneYp6dp\lYdV?7J1kEG:$GDhG\U[uBdA]?Z$`K]L;0VX@?ZZ)?p_hR\WFLQ4X4!"26OQ_^AoB>@V$27\]gR#SQ+L:#Y %%[V?,l0$DO\`_!'5hEG"XR\s=jZs4c[%rj;`$\=2]Z,7-.a:NQoTg,G#ZXqbjb))?%:P:>p %V=rU.DCF4f:ZM(o:10FK1_^3q^j0n]dnik@i;#+idnijYgPKhJK?[Nm/Hts[pf7[C.-P^m\2!i=oe>KNor<^*flaQY)2N'r6*bh] %KnHYs\2#C=/M.3\)d%GAQj)&I%$l)f+KB6,M2\]u6#0Vf)7aof=kWLXARN5R^GFATZWk!HM)Td5g=I"9SY>J45F6sqZ#2`8Db8/R %eXA*@K-Fm08M'XuGr"1Nja0EVm_WVHA%gD4Tq<)*f&$G\Ae*(4 %AHp^PA\htRKZ2a098gfN&AIYT'+Q&NSh"'l*-u\gNX/V1;Xg2H*1JSs=:ZD[lN/e0K!(NWl12^LgV#jGjK9n/&@n3C %\=O0I#_ojTRJ2[Q`l%pf8o6`&4],Z'@t??p3uJSk[B$UQKaM'NQ3?XW=ENKr=[u)@/-#?&^;!B#U/*Zb0B6dQWFn"hROta$ZlIAkmD4'0><4^,#9R4T;0s8Im[#SQKTUpcj %Y0\G+e?^7:eVF4!JS6LhoM!^E+l8YlmHQ'+fde+K5XmEn@#CiA,KdhIubuc9$0S$\l^(dBJ+@@RW<'4O??K/")+h;Cn %T9]V3W"YUX:+<5e*^S2-Em1>gn%QGj7ZrSDm[S>.(gbgRr?L!B\9U[i.OUD-EV8"F_7C4u:Hh/c.l*Z/j",39724p5;k"81V46\Z %?QR&$.lu']mBZ.>f`bnfd."*9@P%8m6.P/rD?sqH.=d`E35W9fA$Yq#el@60u3cm0G=b+:VQm69nW&rVUP7+&3!`!Fo %>`,c-PAAVtD#^T828\1'cE]uTd`a-lpO$C]HDjbGOec?Zk],U$9`f0'5Gr)"BBF$393p*9bA5DJle61#PkePjW-b/qlK`s;lsjm8 %QT'*Y0t):1pgiFUSGT#]P/2pp?H`0i.9joW/?Dcqk,fD;a1B4T\@M^Cak/p[i+f3NAq]NC9I14*)mNs"G`+*/JAn^q="GI2XSGH?DFf/[$sNq3L2lu5-PC/dXuSN/t)WK+jM,F$tZWN@-9k$U.kfh=Sf"k'^P,FLl,XL(gu*"Yhb %iEon1I^.ouCY[;_ii'Sr>><>qOANa='a?'6H-_`d'JLr3EPVA&47BA4@%\"90Y$ZlHY/ZP;-?^2SWk(!lVj3e'+ %(dQ$Eq,)Z#5Q180'4Vam"iuQ%[!^rF:k4cWc!UOnrCXadZb9O).3En+[RHAM&UjHcPOcsd(&jDmHpJY'QBRP/a,Kd4.#TJ7M^1He %_PJXAS'@#l?R4a.k=8ij;EguUQ&?pL,GPUE;)5OV#)e)+_=XgXMr+tdY`-2f)"[SYh$pc2?9b0"9=PpuQIdeF3Mh#mqY=dsS*Or? %O1]r@;'BjR4FCI"DrL<$)etDGI_h2[N4aW=-UXuVeUi)FJrj51$L%=uont(_"a$_hrVX:iMI"Gsf?_j+RB1jYA,u/Dlf[.KY7mr- %jRr+t,Pp52cH[8=Uo``bcu\:@o=t+Eg(RgIYFk8M=2Cri'(YnpLP8+O5in3]cem:G49[l'.7%!:C"ShCSUs>I]cbn6XZMK^:)7Tk@qRNIHkKN5S\?d\B4GC-4q?>kbQ]ftH5HCD&aU@8(o071g+As#ulY#7e]O]E4cdgfr %rVROh/_DB1p%+Sej%jYdq=rP=CLPN/(Q_CP3?R-FH2XgJ4JttW1ri9r59JZJi+^qpfXu\4Q9;bK?l=7gBP[CnlqZPfpal\khV:[2 %RYF+RrVZDZSYlbUcg0cT[bG#V2]lD:6Q5TEHqThj<`ZuSoC9)9R"B3oQp%J^/esutOh+Y$5=]+.-EEc!(g9&*T*:MNb:C/C?9`oq %LE^6%oD88qoiq4B-6o_OK!@MZ]RC:!f-TMNo?Z\<3Zm6a-sW+ISB^@Y58^!5l:4ZR.'MNE.%/iMg9:8*0[NQQF)&06]XD3-mffQbOTK %Zcfaur]?=tqq^;$Do]JHhs$^P]C3IknEY?I=].2IX%+PPkG@(^cisH;qX.*#;#K;QCs(n""r7DSKKtak-"Krc.2s.c(-2 %EkRs)Wdj'ro>AoIYK`PFIlfggI8YNXURcs`*4nDk:9B?:L7J0_\%eQ'^*i?EiI-43R/7`T=h\]Z>f@''a.8Uep3W(\'N7(uIID-9 %X8dH*i#;1Oq.TE%V+5%gH@MH0P^DFgn*\[l>.1bA`VajECh[l&p@bsT)W)'&Z8jM1A#j6bL]_"qESGffG$iODO@*l]J402YVpBa2 %D0Mn#i5I7k%-[+i'oe-]&u5.8,9#%e<<"dpFk\OP$qA54WZ\uL'47rJ=+hh^0YsHfC$nJP7d&<^"rNO@gT@s>8T(C)MZ*M&U!mQP %ED7P=g1c6@c.VVfU2-FQ]_Gd&b!Y4e7R!uf`cm<(c%DSHpiW@7,sG+?f/qt:Y\d3SHsPR`ml'90&*g_%2659V %B;YLkVh1S#S]@:\R.^opc5NQOc#aMWY4/FfCF;V?pQbt"&3 %rCGSQ^"bLflkf$oil]9qY5."/[iRXMChmjhfk!'Q[-fk&3T:XFD:I$b=V%$)K:^q4;4fY]_tYl5^rABqrtMpqA+8[GNa;Am%`(D5 %4bm?H"7Nk:B1.'.(0$Ef;h:>a^q8'Z,(`>IJAam;05$fM%s9=WgQ9k),^qc'E"3atp8/^?ff2@@`r2h\)AWtYHB(K,^jbp)g[&?u7.og`@=Ph2mgZZI>/GK$_Jf__"]AdTW %GBD;mXo0S9`8XkT)PSOd\;E>=[e@[*gDCqpl)u7'$"8lJedOE7T73K?;L'P?*3MW`^92TuG>YjNBq8iS_=bO)$&-5fbr)%+$N:=] %r*:*2"Vcrm:%Hqm^q'`<.Q<);CE-rF]g,CWhX4Q]T/3;VM4lAVTHg6hcC*+3.@s;\+u),!V2%KR")!(qsmiq`]LE' %X&Ij*=Y1*KKY`Geig&=ZI!.^$/YsuU'[cYStOOH9GtD_=cib %U8s0@S'tZV$E2l-m9ifOb7J.$hV.ot5*?U]2stoeERc%<^[>su1(]AEJmS.)IM+Af9j)k4337^"b"-q3]U`3Vdt;Ks_0eO_VpSJ# %UIQ?fD%\;POBL>K?L+'Rb*HG(.f,\FYU%5bL-#Dl8rd\Jb;=sp`q2!I`cnI3[YgWQ6TLji2ho:Z`q %HO5)Beq#4bc-rA(><;57W.%(V)Hh\!ea\@4KR90pfo>7PM8]PJ/KS&H"a;2r(J,5uHItoigqGt@9Ruhu9Me3G$%=F->9R+Q?25L% %cLl%PX!=/A##R0(3$&\['>.EIlh+mf-RpSnT*>[V.?AO5>>4OKK;'sM2mHerVR'[;f=A4jORB6@hgaFluFK#a#e%(ua>#>$F;4O5[-noa1gc8$*N=*8O-dE'D]+'lJ[2".lbR%kr %El&lWEP-9nEP,@XZT0?[:]g;g48ZX2E70XO87liZ.l('88buK(0.LJ"`FWkF,%EDDfJ;Tl,0qC/N]+DZ;09n34JS&!64G5Qna0Qh,VJ%AnR6d.Y$&8Qh=X,cS\.inX %N"#NP_CRsg1aD(&\t:pPa/O@E1mGEUHGg9K5668*F25a9&-';:5B$1/`U,S)'HX[+8g.\tN]R')gK?:Lff:Kh.cR$LWZ1oWbTGcq %]3ISRqbe(WZ,r'e*@Rk]=6A:2EuekDCuQ/0X6NT\HrEqluqhAokeiOQY6[7;cB+Cgh+Rh&Ghg7fTj %-:bZ!aq7K14ZqCZfAk0?oMJ*XeW!r#5rh#3,ja?E9mrA+"%'E+O+/%"gj:R9&N;k)qfu=0^*XBNVrA[`H)Q'KXoBT>[\$iV#dmh* %@N:)KP>"4?[Uf$lL.bnpif(.?nE=)P1<((i3.Q`KhL&pX!SP)1"NgIu(Q'=)doFb)\FEh80K*C)V*YMr)IN]&@5]C"tgKsZ@qB8D6bUFT:g&luiT.>)J1['P:WmJ8`aqtU36&OdA@W%,kt[!4e5lAn\0+)`6RBJ-S&.IQWqr8ljZ %=g>3B\dn&E*ha]J2._NCq6rS.1,jgT1>$)P>9mq,Y!$L[11]q2E#ce5,s#Q@&W> %+rne?'U#`Ve*C9j-e'eYl/js\rp8h\$%:^ZF1ViN_:K=Mrb-4Rb9"'oX,$SW$eH_gp=sP%7?Y(E^&Ih&EW!7JD!p.$sU[Kp4d,XlISkSbSku6Vt3C!(lL)ZpVWrhcfP#ASEe\#8lC^&M\s.VilsiPS^r %d0KU_[.["'1[ZoC@'KQ<+gheLD9e#;LP..:#e-sckbMAK,H>H44X)jW=/`jAhKt"(J %\h3$O.A^sn06:@?CJtT+jJ?]dl#k;P5A\d`^Pk[_bJX8(-3;OZYM-kZ>SM/)i=3[:'rK2L"\L%W75I2$8cs/]%8%4QQ,n %4p$Rc@VfGkN(ok&mrN7lWT1=KKKYI5SL!7*NTX%L^3\=>)hi8FKa;>&_UYa8%XdH5c@SQL"aG+7@)8ti!b6;4A-/.M5tpK[*nr4W %n%O%sAcZpA$a(L=qeC9i-HmD1ZpQ&tBn_PQ_8B+c3kkltUM^Bj'edAiD4H97hd)X,7MV`T_.Fi[8>-i7pd5\i> %@?>2OUG?89Q_TEcb-YPfj_94gYY@9e8*d*_(^k4Ka#omUh25(bXJ5<'=2?bT3\QL6nU!oX42epUonV\?9?-HQ#E-[U`F**llVA:4 %_cLY_)7pe+^]8B_UlMZ0[9m3+U&m`P:;m[^8a3[HTWr.Mc!]Qq0eIZ47WRSIiYAc56eiApCEf50=[`Q.au:(KPSc>KITd,WF6 %LIF9S9a:R4;^FbD^:R&3-IU-;dLpbjn0X=mrmDF'Qgi#/p\rSRGF'k@c0d61mk3S?.qKZU]!2r@/u-FZ4XE7c8F.i)-[SHrZj6%L %r?lqaqQ0%G6/MWL:C/+:-?kaSP.kiSgd\R1?!8+h(ui8'B+)B-LV_;"H-K=7eO %TRflN0"MGj^\K64NN>k5f1CWG-sT>DKd^#aFD]r]#EMJ"c(uW"_CPhE>i*=&eR4KNGYbVasEZ %'FHTC9@<2601uJ2'*P@l051SYji+/H(,SSrTKk,K6:m)m8jO5gkXu&l,0H&cQ1tF$bAsrneHf!X$oP'hT%AL2EiG_Q!Yi]Z9i].\ %VTkAOWrVE^9$eH@Hq/gmAS@$'i'`j>$RDtWSQ>5MAs$>KhQ-.+;Lh88<)O('Jgq??&hifQ8M(2LZjsg4Q%G`D.On=!:;ID%$TnZ" %cjG@S"/V/Y.$[CsZm6>RTd10QC4RmT.djcC"?_lm!Hh9gW"Q:'AOK-BiD/s,<3cl':3&HN_L;a"VkJ;Ki%*fs.MS\A,i`W>S\qCi %.Yo!XV9B7E_2;Jo8j!fE"\r)EgeV('<^;5U.oC)$NPA?"J[>iU1#IND8cjqje>`d#fe.e=_Ot>[<`'0l/#%6`!iLliZik1s+\k#S;#SaZhQ?_8P9t1&77/fU*0%"4g2/"n*h;RU4`YROJ+F\(NlUD_@PPncsR\0oSo^r-0W(Y$O$tB:4sdU6jY8- %[l"_:ZfM5nSLqr0U+<1U)K1u3.WgAsO0(ER(6ge?5RBQ%/Wg+\_pCr_e-`hi,7/`Ujh`Jq!TuFF %`#fjc-@]7+/H:=Li1j:G!2^/?.p7QiIReAW"V"=*AOV,]aTYgJ2,c@!Am3'PBa"eth@s9jL2!ed$![Y;JTR6/X@YkDTV)@a5\2C% %Wj@>EOC3Yu!ca*$D$I7E2,55V_%:R\kR2T"6Sm0g%'tltj^hITdm[IR3Q(roY<]@\dh`i$iZ`C]DbXR>FI\(bLPSnl%t?)55q,B+ %!ON7\6'+B=X`jnBrtlHSXM>OW$REY1oSluTlC/H\JKTjPoNC<)->1On#,HO]X$R,*m#,K2hpt63`R=@2]Lri++@,Qc352FBSun_X%]8(>e$b?nKbj;"Q&8s%5hoPT9XSIYm9dLicW'(F_'6 %1o)>_[hN?KOWV.Q6*sFQ5WhJtcpMu=Tn`ac1aimjZ?-MDq%@XscpO6/iZ[elOi[%rZuh^^843dfk!,Pp6k36a5p>n4H4*]PCagQj %!s>:98[]fEg+%j`=GdC(#hEnH/eX7$0Bl(?Zbe2r1m(dIC*HW6J/#[Sl5DJr/HrRnJDj@%O=arXTcRkndFL]dJZXd1,$P`*0\t5H %LhRbTOI?G0TVUkq:00kt<=h,_dFdhC?Y465,20WaPeXRRi)lXXH44YaQ.-(hQ&W1m'2B`Z-[>iK*(:ta?s^_:f6"&_23`h$nfs"(>l_M<_BlGaXeM+e"L][9CS;$%_r-&)MLZTR\QNCH5XARJd"h`7 %AhY\H0oL*r5>5Nm75drs/13mhAe`g"f#hBcaLWjQcb\1eAJL70eiY/?/I`";dWNX%JD[$t7)^X+`[[Y1d)]G[aCpR^79cr!KWrCi %O$F9_fM;MQ#t,MmVl>VD,eL9c7O;ON[0sc@d1je?ZO$1QLZD].Jr/&JkdCia/8h'!M0?]Cm\PU'EMK=@Q[k5!e(QF9@A\s=1pE[, %bTO.`9,nioE2'R>DAJmOK/"ZE'(HHR?UT(4U#JKpa-@987UW74$j/eHmL)SJbb>m@5.J:h;?39, %p:^,Xp]S70O1npE,;THU&;W#t=3QuG!1$SY,tgMA'g]e*=%Z!nT]`7jYW@=Q=Yg#3VX\>r:okH9A5:7@?%Z-b&:'+7779dVBp-l. %pF*?/G@jD4&X/%#=,MCn3.dWuO81jIClo%_Fj#q_l6Os6q4"ACZ++eeF'4H#;q&emim+crWc3.c\UK%=`EUeFYu+,g7D %"u_tu)pHjaFfU>^[(Bs=Va8M+,4_c$:1Mg!gI2b=4BTNZ]@UWqd;-)0?<3j7;M]qa=_+X)p4otC$8R96A;s3SUI6q%4Gnq*@8Tl9 %h=dBgZ5[5#3*TpSL/ig>/(-Vs.'Y%^m*S'Z(o^bL1e_AsBUD6,BXh2_N5h]<[*sh?Em^B.L`B-%U,U\det*pdXUSTV">l_]#dot; %OHgSsPs`JnA[Y\k+5QlMU9.gCi6\J(G)D$KY2E%uD2i"k*8!CtJuu8qMI9a[6(*WdBFNsJ^b?q$b:%(-,oWk`RYFGYY@^GoYPpdS %90AUA'!t;`GmM'7+.Rpp+u1,@%[PjFlUt?D;'a_1J5K_'8!]Uf8HcHS''gc1?3Vn]A-UabdSLb`IL%DSR@&+Z09bIZm3rBo7A%%] %>#kri.*DZXDRRL_$FPDN2&Z(Q(M)T=Tc[YlQcP;pGcBnT0cC&XQ!)P@8pI^:l-n#WbbN8Y%PpDg&T/)(5_Au&KG=p'5nUq(dEFLV %Dd+@)J@A-e*hXfIPH?!pAddsDrkJrlN!T\>LSY7<.+jdlRe=b9"Qp"I8,uj\6\>EJ!j$4$7YmgsS-,_H(+cf1(-_%?O!:JeMI=s? %H5j@,RQ7CL_?,N>6e45VCkF$q-:(;5bQ;#HXH,K$*$P]d",^<(GQAWN7Yu^AfZ:[iOmXDs@*>?;d?ZDk`0N[S1QN`X<.`)F/5F+e %=HDuK#biY[==e_(RSPcWQ:jnL&IA1f9*c]J^@Nf^0:CCh[VVBq\)kinN[9R+a(L<$q4+a);]_?OTYmKRVsbFL6Zo[UA2&pFFqKP( %^mB#&q4U<@r?85AZp'aP^fZ]?Asc"T1I)^%7Gmkq5P-A05@dc^eu-SYQP>EqL06o$"+5+PVb5D0.'c'Je=/@3("=VfDM;mA[Ho+, %,JeuY**r:gZTi":;=d_Kf:uUS43Sn#*@P10$P#bt.'c&_Q)L%7P!&-Gp"Q80`u!AVDr^9cqU+_=0V!54r?$7sI2hk"PMrG^*PW-b %5pc#Wq0Ff!4/kaL5C$k&B`~> %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/sf/sf-logo.png deleted file mode 100644 index 45767830953c96b9140e0b3469513fbf46f46754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4135 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 k%D(I~4> \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.pdf deleted file mode 100644 index c07d5a838874e625b0dd2c5a7efedd454c48c4df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17396 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 a2w`8(@$T~%lZqSfzF&Uvi@*7&-~BJ7xIydy diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.png deleted file mode 100644 index 505d39f45acf7c236a6b90d0b2de9674b63407f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37920 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 WWy&_6BFinIn%s_g9j!SMboDRGVULOc diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg deleted file mode 100644 index 55a0f055d7..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-br.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg deleted file mode 100644 index d26e2f39b1..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - logo-community - Created with Sketch. - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg deleted file mode 100644 index 1582354f76..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-community__breakdown.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - logo-community__breakdown - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.pdf deleted file mode 100644 index d89bfe296fdd7db4b37ecc7dea72c70041a1f226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16452 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg deleted file mode 100644 index 3766bc8911..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-es.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.pdf deleted file mode 100644 index 3f80840e49c02cf5a77ec27c0f7662aa09a86520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16805 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 bm?;0A!Z$zsSh#W%Y@MHe@{_;*$KU)f>3;Y< diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.png deleted file mode 100644 index 300efdda48896a0865d16fd60a06161acdf9865e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39406 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⩔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 Lc&6&~)tLVS{<&X7 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg deleted file mode 100644 index a8b6c78ef6..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-jp.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.png deleted file mode 100644 index 303eecf4be9295faaf9af24e707388b0b30f3fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76649 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

      -VrTv-yng3mFxB_CisW>80D7HTQkpFgl0=}+!v zjz4*RustaOs6Ot2Nh1APwfZQyiW*992ndHwjAr&9Ibr$gKIPNpLtkC+F6IrR#X1NL zz4$83?ka@}FU5-Cif=~H{X+flmL!+bU{@~e7& zqEK|%sNyZS)mSG$u6tPeS%jyvu#nwekLrULS+Z^VlcM)Ii6_HV+_=YFu8nA4Hmx`- zqe>SOE2}jf{4l{E?=2^aEqUya*jI>4qu~wV2MPnY?e8330lEI)x_#k?oPoce z@yi5QsimQCAf)#~)`_UGuw)TLdKoWuJ`h}rN7$BJVv`Bo(Q!ANWR}ws4Uhku?jI}*8RztV*i_x*W5{o@Q zt}_UL@;tY&+!j>$H9GhuvJyH5Z*iuiL%wU_jMV+MzWDGMgHhs4`4cFBG3SVk7&72K z;nrt()vVduoa#&#n2p~HB;Y(S->A5R3rZ0)0p0=YR95}4@Q8S?IX}(ET1XtJJn@D` zC`SZNXl-Vrqv5rpSMp;<39S0|Pr42--xlAuTXKB|i!-M&4hYNOI2lY|jB8bi6I*Oy zez+dHVuf8VM2r|4n&cMlICtWhLy2`$L6uM@V0E@FQH}8S(~NFwX^_WIWfJljka;At z4~8OQ(#1|DMl;u{sO_T`2h9<2BTrFA5|10o#4}>6_y+q2=%GiOEH}}Q*F=QOR2%e} z8uEfielV;WNUn)~C-w(52@C)t0DDNt>u2Iwhs)?tqlKN>Lb)<#IV}LX0$z9`_-WlU zlaC1I9ev@Zp9&AD@j1}4bw>H-N$6P`*OIgc*RC$jOrKm`Fd72lekfy+6@+qab#K8T z8c(hgAB5;mHxK{zzo1?I$o9A9{q31CN0)>BhB`;dH&1g^k?F57#sX~7D z;|M&+*85w=jlGd-SBj7Vl&4eGkHfn|jMa>hOPIvJIrdMPEN1fMddTmr>FhJPztY|K zJO}reSYPKYNf(!%O`yI>U4Y3 zMhivvHzx6ciyfsko$5b2o~OEHk<$W$97wsD?n%9s%;EJ}T}bgF|D>Q1Xmoho^1{;a z4?^w{_YP-V^t!Ga9hF`-J#;%NriW=!75@gm>Bah$^r_3VxI)6@ zpQk$^qi9I^ZT+;szZ#1Ss=kK;u4LUwN$LxY8cg+?k5~)t7uwmXRO`M4^hK>rEmpb_ z4${ewun_jW{(Uh7Ru}b1JeS`DEONsmNZV_?^6R{vR2)1CWLnCBpdo=tOE1Q&hsnf? z21wm)aXhogk{%?xV~m>e$Kf#^)cbB({xm27fP=kpJzVXq{{c@Xl;JiyEPtB{N-PAz zy0PX?0Ex5x;)B^xSm%;FXxO@!ASC#%QPimR8daoUPMvcTr!dZ9R=$@S| zHgXCddaLdVjOhN5^iAqJhQEy*LbOPqj$uyrm?K{bG8&&oXD^IOS5{k?P@gLsMTDRA z9U$}XcZ7)2zN@V{mQijSH1cD8on$zX*}TZ&2Jd!949@(V%)y&Evc`aq9hzxzfZF1& z)cXzu4k{rPG%>4Pka-ctY`oP@#3Se`PNSM(WXNYm1T@Y#5kP7L|9R-~w1Ys_uvL5m ze~10k93ZWLM&$rwC+_5e8XVKVUbtCQ`O7Fgd4^gR#=OWT8&CU(;?qU#XrF$>3*s-f zTOkgt&-xmd^4hVaen^$W)^vnzPDj_D_ed5@e$;J6BZ*tZ<`3ngdjH**|ia zne1U6>$Zg7PtdQi_>#C5PDC88pOOt-%Qb2eix@)!)M^3)EcCu^c)cpUd%u<^bq8$b=mN~Z|Lk56m$k3 z+5u$|3;S#u{p^C@z#8NgQ`#xf3Y}4)#T>>$(*k4$b*)k^b*!7KRaJP+cp^jebWJ6S zvja01n3XHOiYAyup&nkr4BPU(&rj5IH;8Xn9q#D{^GOav%nRdjSacXA_N;tgnL0s^pXd+jl)SG3gM;CFbs+D@5!RPIu9aZ z{=naP^+})DdC>ZjV36_k*m1N8hn1b4Efo|qse&5X`vN!4mjnS{BLkAO2iN_slY@_o zAL@y-tm=A8v9`7K13Rvr5dEb`{W*y~<+@$&Pg#X3vlsS9IrM7{UfLFNT9{tW1y`?vakhM`34oG-B@8MH%#kZMzP zbqPK4YWPU&tUESQ8u4SdzHh(v$-LZcPlt7Jon;}?l0@0agSw`=hmWNxhugkxP=eZ_ zeQL(gy4Z(amu!@=R$R!!<}F_*qjq4jlX-gqq3xdOfe$^n zXp@kl1F)M#mYY_@y+e(?Z+iQMUn$L2Kwv}v!SHVgcatgWI#?2aB*14ro_MpX$w+Cov8 z*4{!;XT!dTyo^qf)fO!ASQdMdo{Zg4C7|&jxBXRgs%beZDQ=@q4c{3{Cve^%!rfb0 z0sdTos|s0Z0>uN41g!TD1_uY}gOV!(SyBy!FO3=>X!RW7=X9^mNpDG? z0T;A$U3!&-FcUVNAGWMRLe$hykZ1rtA*qAG)DUMp59WANf4v?U19$+~#Ms1W&fFtV z4EUnZwSN}0!Ua9yt-^9#@X(?Y{Mkx^>_pQB-qrgNe%{OhQwC5~S((-v0h)Iqyqg$A zQDMwOackOx!2K@@S>DkmBnZjo{Lao!v~}g?dy+j*4>7R;9w+mz6kS|Cq_1*izz<1` z`n|)WApyD0X%k!LD2RO_%)45|IEmuc4?^Zslh^d`g~ZwYVcFMNUa|A;p&ny8FQOnJ>%%BnNif>wB6Z1IoVv=14a)O#W+8MLok87ES|{ z4=}=}XIjn=&|Ngknja`rRUw_trGjTKX=RbWL-3V7DKMBcL(uB|oHNRd z64*p5+3N*p{}F{*o1u5uS!+Xcnm%It*ZVhP(46+`uj1s6W^g$gXZvucRG}6cYJ>2( zoep^to7^fi(ZpkN1+%r9Y)AnSq{qj-3ia`i&OrwXZpZ~*l-Ppt(?NOjW{GAvNXch~ zn5g_RaB2S6ILI`J?r&-1r<+~>v+ zRt=s=EHLNae=!*dqrfuut2KIu_GQ)tw%2qtL^JCoPA|g8R?X|Z&(i+ac&tbeh2M2~ zM=xg?e*0WbA0iGKo(#`79GjSmu5N1E6$$S=_eER1!z|u@v5Vj+S&R|$-M3FXX;#nF zXaZnpTp6uXr$PH&1!Ff>(vYlg%^I%U2sCYkd~7yez{z2I4tr8`X54{RQ=g@GcJ#_v z+f?Ckxcj0g6W?mFas0%H*sHCRLUsz&M!3}PX#ep=& z#wLoQP=vWACW5|&4kg=qW>JVS=*(b>dRAt>)5}3mAJt!>e1t!86ca?%H;IGAj-x-G5S7jV#4MW+gMNJf5?K3~Oy7YX_U2i*eV#t7VC-%QrBBb3k116lH4((D%3 z*Ug{};qSPIt=&_* zY&&i`N@7PMeyZcjqw40|S&L05N;?n!kL2-SQPjxXI+ANNG)UCsk0>SGe-+M9KKCw6IA@~$Bm zrq(*Lvda$q6XP6#{{R-gJaY;tul;atH>1hdtu&fNAQmK8O6P2n+hTRG`&idk$*Un+ zoT^-4G7zcgOgJ51HXBCyJ;8`qEP_~Re(&25M`Y=9X!{8cbXzxF23`hyd6a(;YpN7% zwoiBuaWrM^wv@o+MCdLi<{A^LK(RH+EOZu68*fvFHH&;>|U?-g9C?(lj*b^~m7HGuI;pt6-3j z`T|J|$Z6B0og<)v(Gq`JMvN&E;vzjxNTSb>nhQ8Kc36;W#1g! zxB~BWmr&Q*`=e-(H$FL{a35xKxAT3Y=k6sJzYKdIni~8 zXmtFJ95GmIz}?nTwkBi&UAaCndKEr)@#nVP3>4WlfvnbxwN*XOn)pJi6UfUqUa!*W z?s*c`3Jkk@4`v8}iQ6SFbL1VTk)WNfQHEjhBtf{K>FkLnx$ekBuMbabMc~bp8OIh>9a}gEtOl7+3^Q!pQQ;Q@ zWD{-jV)E%SYJSX@k}8s%BL@Za(@W>LqsTGzl&_wMrfC$2wBe{m*(Ql~IAWYlDRTyn z9&39T3;8{Dhb4gy^>vfP+J#&8f==U86d{t=`IV9}1-^ZJ(zUqe&yv;N08y5ySMdke z$La5=x?G!LBHJl<4Bq2T*?FEPRSW{hYqX3TLoBi;UL7VJ39`&u8&>9+f$}sbl9zv~ zvb@=B#{WAW=D)cqg)#Y+-s1@3OlSwzi9a8?i_Ii-+U{c~7pdqaL>dg79*A<78pN-L zVysYvQO1=${>6V=oJb=R+eo@E*zzeu#Suuh4=zx5A2>||DlyqU3!xW`4BklBM(&aV zgPeaV6iLcS3OL{zow?X~}!fM=6?cS`kpZv|2j#_NP!G2a?5rTK0x0gr6 z;d|fs_nEC6WXk34@b}D`9;D-D;dAXsLifF9NT|e|22Q*el!GC5H|%TJTac^d3qM(! zp}bA4BM*~WJx1rfC(8J^S8v0<6l^ZGi7u{QL0?ty99jtAnc1;m%e|ciJab26ahq@y zgDZ}+A89)_frt7BBV35QG7S`Y2!ykE;#rp&Z_NSXa}fnBvGBmvkewTC%th}dyzHZEP2=E>fXR9fj+-+UkZ7{>Cb zgz{erFisjPOINn;aWW)_W*Yr>SatEdJ`lk}N{xqEh>`~P*vSxnStt;eo{-tFzsp|m zk-Y9}46&82hDHndu6(b;1DgS!kl6ulZ(ILJyVCYk*%KG4zLbo{xh0JAL>X6Z;`Lc3 zl`lb{Y(nbKH~vXVb^G=5L`Z7PwUHqmJ9eB2mWSF;%P6yfoddbLiibj(sd)LC%Ad1~ z(bZ71y|raHKMh^MalXS7M>3AdxeKJR@0-(p#Dq{@F)#wJ8qATugAY$pa-nNi&!?wC z@ila>>FM!@2~Dt-jW@hnUBkYS4=7D5f7aZTBluAVPOTcy*R~JP^yBXv;nojj4OI zAI9;C=RWXmdl-|4H)}>W13uIF@nI(hZi;^ut6c8x#?7RIfne{?`f7e*bA>C<3hUViFT$lNg!#GqCjdXof~&K zxrw)Ymz5pnR2NgFD}#D`@IGk{J6y<5Ed=p)*$K%am3ESDq~wVa9vl_-2s_xvW6^^Y z^+y?Mg1hLNN%(6Go-fiRm#Om&2wz{E>^aeDGY%YZsTT`TMvtGvX zM9q9-c?W{+#qNf$;~nC+y`zj9kOfkqZ>4;;>l!8%`(r#Wb1Oo3jsipb4Tg+8*VW8l ztAIl0U**dLkL{=epU13qgjow+LtC5PxaVa(g--GASTNx7HSR=X^?8Y{^R&J3DDWl3 zY^=$=v))VIBRnN0I_p6Hz`cxko8U0S<+FW{WYa-%p@9;IgZNF5HozRUYB@b|*du?Y&yeaX8HV#^S@6XqG>R{H0`Z==>j1cOY zT?$B<#hnt9uwbYN9qmjtcgZUUsdZqMewdLvk2eW!dI=jHk^Ju5_sSlo3w1>JX0O}q zJ(Dk$-k2qv)#?ZFs0#7{cLAA@8roT)?#J&aDQHA7KV(NFc#1)kh23=Y+;WNFS&gL2 zw}l@@Asgeq_S)Y(6!x16Nnbd`!!S{pDPd`b^8#MidvW>@mV20H+Jia~k>?~pKu~er zPQD&x5|ysyaVr(rnb!#Ir;W7oKQ%khaPdPaHofbz86%=oo)TAGH-;Sqoh|`r9hX{G z%{h$VUY_`@4n^ z_K33WDE$VP?GqHC3GERSr_}MchI=fv^S&^ii2w@VdCcpJf|)NX;Yq5ZLd$ zt;x}O@D46+%qjDhzCCLnm*rTyAHN43;UxJJkx%`*5J-5VKUEGBSm<6)b|UiIGt#fK z%lxn>;%PsduzCj?EDGf08Wi37Isyw?p zgVrh0#+dFlZshD1m@l#?z3fF~%n%%!VZAo5YIdjX+JpyE>GMcSD9j>|`wM-fR#GSZLKhLR3^;$cPra85Kq>27^G>k%-j3E&nphG_PW!Y$Sj7t6N z@~~$Au!JC#(V`sHd(F`B58y_5Kb1{fPv%HiPJgU}zII zQtk6Df=(5e9H#3#RuCLNj)u4oE6Cr0;kYyN{Gy6fL7HgoUGvU#DG!YYYlb1*`c%Y9 z2aYJCD-31?qH|RLu9af=#FV5p6Y0B#3ArOxP-kxFMpzoX%OqY?IH-b(5(p&eMj)lE z{!5-1J9#~Y&FPbRQ^1*H$8AoUjJAp+k!TCqN64gIh_04|N>)%>$_-BZF&Q$Q-YV31 z*J?d0$FY{oy<_;sh%8ijm~ef?ntI7yM+&0zFhLX)y3URKVs4{9eL&nlKQH%@Xi77p zd5obgRX43aEX}#XdCt-d%{+G^K^5lWmdJq2n)G%tdQL~(V^fbsvAf?1j0(?Vp#??m zM1)q$qlhvXmjW2ZY%`h8|AuUPq+*;j>W}cg%(b>Rjx}*w^`v;u+mTNAo0tr|DgTyH zh-9;$41yvbXyPR*+ekb=yN`@pw!uYX0F*L8wW7XgzT6H@Mc$j%22gNQ6urx)x2(su zf_UVo$xY8qSPrAktzI<{b6NQ*@c$E0z&z}Gw;YFS)XCO7dsu?2sJ5wCcyCwvTGO)i z)RM#hJ_{5_enBb~tI4Qmbhpc;T1qqR{LF@zX41dzpC805{A-fwie)Wu(pqENiU>9_ z!xYchzKC)6u zgRIj0AL;QLFRpUAqN%f#L5yVQVBPKKNJnB?wzZ*fnpy8c+J!?!CmXn)QG}r=qJSM) z)%{^)p16a(&7Q!n%{8w`_Woa_Ozk{I9E8%kdw8O0e4Z|Qe_9-4km9poXUB_tH@O1; z*2XCnC0G>$^xA({g)}^5=f%P_yXInZtUC9c=Q{o>e?4I(vB`U(x%;e4fX zP}Ka9o2~9Gum!LjKxxK5lJY1(<;WQ9xcGQ;Foww!)6`d{h zLB+8Rf+?WFh9C>4jQ6lhYglPl1Cu}oYroE0Q1oqBq-Y=FzmR3G7WhI z#BKja`+TC|A5yiqliz#8<3EsvY-2-iqq<`dx-ag9<~ET6CT59K^@;D7a9eg;M{! zk;4)FhrytZ?t!4OfQAZ-Dsc5)_p+OAZn{?l-#$4CX=EL3G-LW+Zj6_EQ|w3*d;e>; z)*g%;mhhY?$SbwK86n6OMTFN%^IE=X0Rb_$@ZSww4zJKvUQ!~r`zMpfGS|h1B0XJx zP_HU4n`9YEuOK{6UcpQc}oZKoh)ONlf^k{@rzMlNSb68MjQc_ZS?cehn zvga>bIJ$*XtHe1mctU<&zm7wxXvEQo1=pDTxwj*AJ3Op~JM75zPTA+u^+aiYDeM{Y zf3IQ}lC*FW@$*mL1qP!RTYt`pVmN-_jownJ*GnoSUFa9p5k_DO4x)0~uE`|@@i2&9bCyVzB!2f=9_16wm z9e!u0SoKc7cM5YzKh)ahb2?Nws>gt~1EX>Jygal5#sf&Z>kt7}6SFanpM+3c0f#FL z*X!IvvJwC^k5ZB^>~mfIs4u}!5v+i9I@CcN#4S8Ruxa;!HnTlsM;8zOi9Etl+N=JE&A zhcESWNBQJsx0Hxb6HbEOU(KX903N+2-7F8rLF~rm`^-3B;6dE94}3@}3epT6r_%0k z+*3rX-AX5+P(PMt5>GPdFV@UQ8(r_X>-hGfd|hXC*zc}j4%_vfOV3<-d5yGB63a#_ z>oGS1);mte$sD=+2w6#mD>ua^s!#uI5EWD$F>1uD1^(A=KrQ@eM?^9ZQnbh-7|b013%EJzrew=UGyV2XvKmPAPUF`b_rQ z{gVLVkj$OUcpDG|X1Z(IYG=D=kLM(}`vdBD;9ruZfz+ue8Sb9pz>aPI6Av+i{FYKn zZ}P4KDXXV1n5m_vY#OAptf32gF9?JM#DuEpYch54Y-~uSinMETA0kEM3Rn zxv>Vqu!BMU{z}QX8{J1iLP^j)x#@dIVFgC>#-27fj3)nUZBS7mS47gh(3l!pjF(_P zSdRGzVALkWSdQ-vFDBYy+hp5rGSO0OMZiDJDr2){E(gu< zEYy{Z+!Ve$zFn%(XqEO^R|7#TLt(f4OQIjfm5|S{-w#!W*gk~^M<*$G_1URCiq^;`fcd7DXd_TBX#8KPt;A@@i5kp zkBNov^0hetUb_+|Z$oZAOk`Cd)$g`2vz$#07R!c3wi}(bqqbu`$5VVQ!`zkv_~h3Z zoaI^#0uH95-KbC{a>pt2dLL>Kk+pl$jye<+Ob-(%<<`KeAsTgwy4s`+`3YgW6(KMRi)(G?6f3L zoFrGxa43fGE|l&?+fPA{SZ63DDRZvFm(|o1BUHvAL7PyF(e(^ZuUi%0Pb8Omup;1x z>Tksf@igc##(v1ErbQxcnj@Xrh*%7N5@S{|i#{Jm%Hh;KBM&yYiC*=OI_i7>=fR|FdNdLbk=)tsZolYxx8tKeW*X53NXa2!r9 zjGca)XUpJj2|{lt_{AEKVNOQpXwxwq4o*PE^8Pa^9=|SywN)ATGSk(vZ2;M26MoD^ zAA0ZjkqG+-ZW}yVLKtCrtLadeiVm}-+UNLuo0X>4tue8MPK>DIxkyrB66YYrU((|k zP$nZRq!`OA<3A)O*99EGH(p6NdcC^^7xblss`nS7H1@_IU1om3&=I?bL0kcPbjdvKxL{vrlevz~Iz{JYN1uw_9s{)fq&& z6xbJMkwEllPV=cbl3i>J8vKP|+x+wY@7F&Nc;QX}D-n5Fq(yYxJ*%+|_R*0)=0qq2 z8J}cq?DcNdmUstRd0JVGpxU9^ldlNlZS~=;btC9HF%2$OfV~JK4kwe+QIlgmVQ@Bx z+uxjMs*c-&4%KM^L(zpB=ubC-h~kh!0cUQ+(mCsL+ES>`bWr7zEO14|VPUiroc>D? zBx!VC!P0DE*U^vjfUxz2r10v7B=&Ce3*)*cIm;&*E_{bJ2OE3g9?4i$#iwh%u`Gz) zt?qO{puoGCuNaQv{|`Bpphft$`a`0lmMz*E4h^|bmn)Xrq^{AP6TUQZib3$K zH=wMEWbQc540zq?x5Vg~v6l7$R-eQjj2yt!^oF$1q74+o?iohPVzV2H*Ex_acLKt> z22VOc?S`^3?tzVy4;&AP>r|}qhYWl(Q#AbJUG7D-0^s$oH^+{TkC%?o*7f8;J7`8M zUpsu!m}BBeKFW1Aq%p}k>d$qq4Z3!RXiOi@uYS98asA*`?0F@gDBn)OU=WM1-J z{qHD6E%K9@h}Z>=m>*UnLcr{7j)@){_em*s{n=CpB=3~fgptWSRNkn#ge(}8+owj2 zMFr*bATx9iM&Ip=@GxNlZ(-Sa^WNuXe()rFc{=$)No2igZe{g?V;uQate%mD^xgrs z^exsV0!gxr4De&%v2chjRpXA-yr4f-Cy3I!gb(c-;c8!W6|X?xeH*5c-6%x5u=s_= z`aTTt6hW8LKF(^La>OjynOM+R5dr_kSB{9L?I#yV$(DkSl=3TYKMLKNtIk#Fzt@F1 znu5jeif++l4rR#kj>3zzh9J~&&A7Yn6XjJ8qZFvhe%gZJ3P! zCIvXMy%Atpbb3AZ3}5a7B0$%|4V$q@Ud+jfT9bqioue~UP;y;z9h_eGyO2AP^gsv7 zB89&*E}bp@TgmW>SV32pot@w2x1IDq72sUCg__`oBIrG9pukC{WmJX=V^cyv3e5YpbBYL{&JE zJkfuz&L-l)))`M1P6(?d%WK={VR-Vyt1UW-zUY;?Bjxb6LU{cui{T8`H8C+MFEiTh zg+4`WB*?+&L0FC>y=(u^*Lrs?rRAEf@R<^U5D#<*9XMgMotE_JWyshY^|xH-R?5mC zA-Do%P7J0h{=aR=CPK}|5AArJf{ettQ$SvJSby7&V9bc+LFS3(Z`DXladiwp>w|te zL;lR3p>^7X{k_rD-uFZRwo-0(j20c^8I&w(m{e(8NK-{xNg+=+IwKtZ35d~lg~cz1q9N+)JN4}@ zEqdoU^Y8}T9ous~F+f78UzwOFP_0~92BQ&?^lExk+-abGhC?_H!37c437oATUU~$1 z;E}KPib{5oNzN`4m(4n{lv_cc4a6k|zGD}juyS!Lm4lilKOjF^Iuu|mgR)&2bUnJ< z(17;u!QKUR4t$d(hJnTZTy+1Tbi6!*tiGZn{|B{ z1bA9%o(6&vvtX|$hgtT7s#91mQ|9GHTX>nNK8YOh=lbBLs|QI%zfcs%s;0)qZ?9{>87Al;r{B2Wh9ch?ZoRv4GSMwAp;!7Gvw7xsdjEuMj z8z?&{l63zlRg8~GZ~?Ft90B?9s01^1U4TaV=}X4}64bacSjNo{GB|6tggx@ahVG>8 zD^zAwjx+5RTY!@;)|tPLa)cU}sw`S4s=q;B@Wda7G5Y&0{MI=Amp&xuCMer?ThU_S z-w7b!7vG`$+}&FmwHMCdJHr5}R%u#JC?r{2{A|NUxr@yi^HE_@!DBlhIWoX?DK_ir zjpc!nX+n!zI@_Jc*&xYcg<%$YteLxI^``;gh_9wzVy@ooLZD=m5&M-l!G6$|@b!@S5s(Wz>V9~AowfBi+U^IIhvJcj~|L3ps zv1-fya%=!P9BOpEC3b0?al^<1^rE!D=z3R!WN$B=CyFifzvInfjA#)6ug|Bu!1 zD7|ZE{CBHC@{fs@s55sB7mp zL*~>Ae~2gtd|WSQmcqNaVg8!~^Vt(~MAC0GMRQ^y`DCp>b?H8fK)fJR3>3a8H4vu9 zY+uwyp4^-b(M%Rq+EmRpST4E~*;sj^uRN>|qy?6$vcvQjl4eAZF6-6t#q1Ec9I!lS zqoP&ukGmnQ9ihir#l;q6Mi(UTWL+kf@jq@i-+BELy2O3=7c@%m;p21NN(7-pe~PW{)~Cz3$b`>U|0wvURsTj;L zvMVcX*u+nL0gLR;k?w9}r(Wxz``4VHvEL_p*d~K!MT4O!HdPp;OQWTnXxTQgNpY1? zf^9i-S$SL2DXrEZzt=F1a%9VQ(WNeEJ%JB>P@?3iYb3eKX`*{G@LZ{{I z78xm(^H|65wf273){XqKshNBqE0`QETCbT14}Y4cnJ9!12a`d&8UJeRH9w4o;Xwn( zDc-~1$V$b-JqPg}Ao7c0ADG}-Rh;sCdLxu5PNAGBXI)xV7LEEx#RV2p9}n_L16;jh z9@8jSmGMJ+hzfz^K3Z|+Uiz!nzGIbrU%!Z6n%A`(HZJVUxq)A>9=bRHi!f1cSXtE= zL3c%t)^^m+&pRw2Qe`YH$;tWz>+U1bX^;+|E&0LJq2L_BqaB65S50}`yOme z!c3o+7gcv^Q4~U=-~?Zd8}4Q$kbq48#P|Mkqh(Nh+DBAG*TEJ$Xkk04qe;O16xi;F zv->cvc%?!omYt2dsnZ%M)M1VGq>>Qu?T`h=BPKOp<754QZME#Yk=&8AcUte3f?7LG zVN#`6kBEkon(MU*?Adv8=jT!U<*?}1Kifwb81VTUdp7_cy9UFD!CGw8*#rz8o3d3c z0(666FT_7Qt@pS?92Abf8uH~8&8yOAZfV*9F0KbbVN+Mr<$X9*L@8QFdU_8)laSvp_*KDh(L(z>MmhYG|5=w=ZUYToLKMX=~(=PkMPJ z@;A>d-pBc=GaLoC@pelg!p!G4qw%Cz)BBf zLF?P%She3^$v`J8*{M`Q_vkxfyezOiS5@9p;;2mGE=H0>)6lt4Ft39VGZ5yi-5zf; z!d$Yi^4|Q=u$Kp-v_|{=E*1e1h?$l9M_|_9gEc9G$)FcBo;b>xGwkjvED=B(Qt7ZQ z4JyVH^A|KR*^2>8*kblyFN_s(UULdSl>Cr7fC#yhtmG<<&dllhF9B?K;clb?6bd$~ zJPXlze&Oy^8N5q1@zz}|dq$rIIpzz#`#+A0B&$@j4nmGo zSh{XP-13zia;t0}?QMj)Rn9fBd7Ip-*xL5Orq>rD={TXJS8YzsGU<9O_~$t7)J>Mn zos2gE=XInPRcA@2+rc`I|H+Xyk)W3PWNJcE3=y3i1*z-@=~;^~D6P0GrglcVY}Q)& z0GE;()x@;YX1A4H=*Bo3f6~7_wJKJdjKz)=E93He_{30hVOl2uGmIsT?tKO^#kjOY zoE*fG=0@cH=2;dYmbKuaqMm+o!kpB zOpDsZGrx{}SQ(t8E1<)VRBOa!$_+vviGVQKA8C)H6Fr($u!4=CREO7kYauuh`JjIAfi$-feZQ}SoLQDNtUW`@3%TVj zuc%0x=f~}%QVg}I$?9JoTwyjIMokMdUp;cvQVVu4ENpIwR2cm4Ia?CzZp9}$Hu~0P zh~+*S1>_BIkuq+4tJx>Mi?FIu{tM?J-Uv*-+JTD5TXs2x-X;7ELViuN=+IH)pUHs) zz>AqIX*E<+tjbNKt2M2*^L8oZc{%|C=u zNzNk%2tUj-(RM4ZO!l~R(yyk&C;OZB1GhfKT}aLH$Zk;r zElEE(W!%Ny!n65yt_VK~RAF+mhIAFet6r3V`tU_qiCY*9ZXtIeHo2^%vdj13_3N2) z%*{UgD5q8!Zf$D94<3;)<9@#x2@f1cPK=qj9*EfCYSx(Q`;S+K7c-DkCBoae&^GyP>d<6d&$r?p|ojvTQ4lX z#m7wm2YBFpre~VN1%W)Vvw7HbaaUZFgAyfj= zye$Km^3l8SM8BPVxTJrY=bC25EW&u;m2{_Zq0GdZr9E}`>SO)&AAGwGSQjvUJ)t+< z8vL&rWl_A#{`6_?s2}!twC)fURU}5Es?JUjCjxr((Q52lvFH6c*k1G~rgr1t5ggRi zVsn?%emluaSo=fe-y^LrC~sQw^;vKyP#yq&lKjqI#isDnyxnl;P zDFY)8s$Fb@S6?3wvRn-XPG_hMN-Zp5svr6D-dgf+`2rVpfG6nPI5tx`zgzBft0fxV zd1-efA&N^#yaeNR9RVm+M82A#P{O9S{wKDhUPx>8v17qcaaj-ZF6#O7tR<)XgaW*Y-QZn8O*mY7YNIU=RCtr^tY_*J*_)u{z(>!D-J&`d+?de@TB_p)}2S z4O}%QLG~drRPthH{mQ3%PdR#gQ*iCNKp;1pdsb zlYLEBSY3k=TQ^zL9fFJ9oF9_->!qkCzu5G+{pHm$qvVISTD%w5L3S2S;+38G>pT%3 z`5r3NlF+10Rf0c4$j+*{Oy|VAH_N>&*j+C=@J^~;UCoptb%qoR-)f6vx`tu#2K&Ob z1kidC__z)Y&vMXeJeuAf&xbsKu;l_w023J3UJJ<;-*t?UwwpY~dFs--G;-d74`FV; zMHma0$gb7YC@+k`?=a~sRJQ-YjM8ZSfG8R?#9%M%-03gxdo_UNEA+Kx0m0t^-aq3# zeJ3tzb=I2c=RsbOCH+-&27RL}ldVA^knot0#E~g>I6a8UD<~8rJSYnO*l8vp_KgbaH&OS{^3eZrbd^z2c3o6Z zL_$HjQHi0u`vn#0?rxCo29c6RhEC}&>6Y#gq+_U|hHjXF`5wMMti@XVVBP1&K6{_N zk22q;8*0{)bpeZFnQ>Po?`imJL&h~x<$Qdj2oF3wn*nW6B1@tON zvNxl#h+pe*XRYkk_Al}LV~CSTf=D3+h5phk4uDX-MZquH7~6Y6K8m>ZA4y-}4x(A% zy!7ada8gO+gb0B>)i4+#7&Nlqf|vG+ii%X7gq$sz-yalc`1N*vNq2F@gtd3s!fOr<0mDFUwnWf;dvu&niL>!v6?g!WY~25m|1r`I38yn3G- zk%yYBCGq!$5SRJ>QN@mc5Eu6&8o}F-Mv-4M(g`p^XhWtXBS;8PNhHB}FTQjQcOXw% z*7_BiEj&-gCejv9#3ol3+k{;wPW*}v6S;Tg(|&(*algkk$Qo@E+wI;k39)umzVMw5 zpKB2_uu5U8!y4Q$2uRx`Rxb)n-3lK(^RkUxG*9M%mf05KpJN#uW)2A4hx3*hFeJi) zhQXk4+r~};Wr?7^7Yj}G*oNi%(*=0ga0uO?y)zT#nq#JVx`I9PJbmRP-A^j0y`J9+ zNh{u0VWEgiCWU;ZLVTetRLlYz+;ppAxoj9oY@v7i4R^&d(DcHoFY(|iB$!@?iunR1 zzzdm{_`>GXYR^Yis60SOVia9Tez$=NF$VC@#kD-!8i>&wYfRY2ANGX+!7s2reM_@) zgI|S(bi~Ay&3E_jme-6E4+V9B<~T@lcwKIZQdMGg%!L#iQU8T$N3^M^G4)-gmwNO^V8r$p zt#6QE>#8k$IUWPw(+oH3*7FXzEX;%xngIo$6j>Kn{87>2LQQws+y-z@#{$*CT!SJ; z^^n0~O{}3FQ?VHuf%3cmf-=(M04np?J0-hjHl&f3Ia66V`*^Xb@(3P5d2$7V=-4GS#fK$O>+snV;{ zGOxf;cPYYh*(R{++JC@&W`UCB2!v{o&@1Kr?Y4?#rQ)B2u)Fu_KNdt|>g(iPffl;l zJPDS;R{xS0u9C@AtI+Y7$f=Rxxm5+V$rEi*e#@}B<}udD8u2mf4z~b*Cbe4k!b$)6 z$GgY+R}C8Sd@_TQcQ5I(iuM_QNjRV-_<7|wy;4yZ!wy~dbP>N!Qt{xHv>V43-(&Uo zeldx)ssKtg)R1vT82yt4x!XevLSn7x?~>1zY{#67k`$+Vcn#3Vw12gf9_7(SL6+w3 z&uC|CmC7q^f(t>0=?k3WfAXmw$h!z{=&7vuF?9C}$SJy1C4i5@P%mK$TGIdcrJyZd z(ze>L`F%N34<1M%usA&&cx!6Cb}RnZ?L5|=u2vTG-g{cO0&IsUd4{TQJ@QEo6qKIP z9koDQIM;y=yK4a)c4YeB`tN<-(#xmTBnIZ$%*H`)7@2PDZhXG|Y{wYQ!sG;f##8hq z(f;HLF5Q-tC%))xxD5O|kjVZw%1q|gu5r;)Edtg+JAGh5=5KSfJ)NgHX54j2+Un$+ zIAW!DJw3cgsQl|0Dh2+VbfBLKNfL>-d?ry*`8;f-m!&B+mXljFHb1mgSlbh?jfl9n z5!ck1)JpX(*iVXB_^+F9THpCE5v3V2#Dh$M1sNv8uRk!XF0|4G{`wng%iHyj^utlSQ7&qy0;mcV(-`R9?1L%= zhxva@%MbJS#89)#d=l+X&W?-A5PBmBMYioD?K=v^QVAhceUi4w#A+oP_qmHEHpBMY zTb}6&fpK|upOh5Jty6-pZU&^RI={DHZLZXd%tb@Qlc6)U21!{*C!_&-4o3%YkwC?k ztRiFGYqu?i>EYS+M8nFVTI-^{>uJ>IErG9)_TUoVN zBg=jS%Es9u>L2b2djxnj?2XG)+K^|(&+uPc}2Ku$x4;@EW(o0V4 zo5pXXQkoYkb<3Jx`j>272=0DZX0vxFGm`7o6q5PM%1sFzVTmAp45ts=ET!KBhy8d< z>&f0z9^%_}zZ-_8diu`w?lEV%ksvu`Y#sV2vdn#o2*aPjTutE-K1n4;T>;_X`GmxC z;qT4@62He7Dpwnwi${#Z4ns?9{cO|?O^@rwjbaUht zW7$?Mt!7+7AUF6&DN78@Y$+@PO2K5Y-AbMg80y~q>KXPvj9QzjB+98A3<&x_RE27~ z$OP3x+axrm25a_jmSK)}8pF#hzj$tz&nR@Z{_71$U>mN2dU;#ByV8rhmkh~^1%GOyfTw1n9(3(tsIYN^q5`&Ez0s6^izs8P0M%+1r$H6sa`vG`&|plFPEhP4g)z; z%gvcaL9{QzfN((kxsw)|f(A=6ePwKeFCS;{2Gh?p;7GQ%L%de$s7kp+rvQYogJyfj z(m5@!f3r%@@6Irj-hyd)hOBB^y)W`w(#1JCSmp0U9p!sc+HmRZ)qwE|ctTG~^+>v?;O!rA)mTTbDG1xuO2c^#ok zWaiVk&Tw$ES94Vp2vh|Vz-#(pQ8-onDt7r*z zGuO)UJ-xOS&nQHc4$MV=+~rUGb4sZ0@Jc`IkfFEMUBs+08Z)>N`Y)Os!g`p}8NZEj zL?*YXJ$J=Acgxa*G)>wE2O0c%o&Nzc#-b~NF`7(H=edDrpe0)|69`aulGB6C1}xu~ z#0Dy@4G#6A;blua2i(Lvxu3FA4KqwU&@0hCxvDkdQ8YeeX;x@Ev(G427~gNKxLFeO z7ADv*f0>XWQ2vF7a?Prw#brQQlqTYTf7zF=f1=Q?PURJSM}4S3W-~VGI1?^K_mL^P zBIWb_YT@uB0=E5tUKDYhjkT-AN$DxQ>|^LT>N$S0!2Z#MOpe0#UL7tDWl*1&n@tvv z-Os?c6>KZCu`spK_$n1e6aigasW1CppDKjKfm%%H^{=u)#F@8FQ;tg z>+!sw0f=!Hp<=7IJZPKUGEJJX?4j*9l1#28u%rF!J!o%vG``_b0d>pU8eok+>KZ{OISuZqW9;(u{P zNeVfZd6)Gu;n!6=3`mvt;4^IToB9EBrEH zt0{f9$$PfP@YB>>laZXQtw3kxNqOZ}Je~N$=A{4flF#hXS2?|lZ*v;<$m+p$L3$%M zL@EuOpWgtoRsU15rmV&Ls4;1^v3>zQq?hr=zz;!$b7gyMQ0{y*TIfEjRsOof-D3H_ z(Kv{uvzn`%ZNo*Cpue2ja*;yiun|m;o7y3Rho99})cx*EFKhZ=d)YkeKocK-^>S;O z`(Tlf{-@}p&9(GKcX&>epZj{1p7R(0;#O*gu7W&Kh=M*b)I1|pyjH03ssx~y}^XReAh@E{=;^{Tn{=%aRf(t}K1`7luM!-4J$0=Db=&qXX#4Yiz ziCTnL^{f2j-p(uZLo?6yh)tT?N~A9t=R`U$OhLU}Fugv`cyXY0jor{H%iTdfA0bmT z%r`%9f2lW(o$Vbc+BcqyZpQv`&lLUQBI4q7$P}vUx;(iU(6l{#>}cA;^7}UZhdnBx z;so79E$;vk)3M>?*}njFkfZ%9 zVFIl~f!x=%xm>qR(lKQ26RDhLc(%?BBH{t)o=`HilI>=NyIszXT@prh*&jP=g8;vg zW6?4;U>%;CSr&mdIR*fxe)84@6H)A>NDmhO$it2#LD9R=SHxor^ZqoIo64k{iFqup znQTg3&*%3C22tabbF-@rG$LXNEXc7sE;l^enLU z=^st~TRF}?a({_8>s?7S`|}OOYSXZ*Tw8+$=Q_z~WB4L`(c`Anv{4-d<@eQVe1QEp zdeaEkWzMW096|(>R^@-#L|1*i)JLfN?v)50{`2Jk0X9JvSZYb4a2!cqCGBEuj))oH zz`Z!V?*W_`=(HA}ecI~8a}<4=ek#=yDoT0_R{c2kBCpf;EbOVBB$TO?lPSQ53u>TQ zj9uL;|96-9RK;4qLUB~(>oaYP2e5=WilR%`1nzx#Opy*OwWBxGP|*S0&iJ70I6C@i zmsao5defZyK$awt|MDSoA?i{rRohfh?uWae$guC1i5>@>l;YTvO@-z!Dcj8T@=pEH zq}+V6Tz^w%Oz&G{~A2mGFQ=H*SXj@}){IaXV59)QROS|6hh ztfCxa0Zv&TsCV!c&oMmI&c} z%6{C|;UD+?*Iu9hp(LY8hgM79@go2nGCKm^BHk^0wh=}HJA3_huuTv?YP)#sfVFHy z|%Wk$WL7f@r^4s3d+2kzmCgWQ?_{y@(iRN^wx;+`Gd?5cW zou^g2qmqu{%*+eUz{%fnWz!gEA7|4Q8b)KyjF_|3qjoNzc6A7YP2BquF^J$|X8 zD0*~FMD*L3_^|P<$>JaRh8G<$XLY?T-r70j$7j1qTq_#>QjD#1e-xPGL z$61ZS63o1q5|D7jTb5zWn7mj(SW^B6fC8c^kh3Y#(Lb%0D^iw+%Wt*?ww^Kl7qa!! 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg deleted file mode 100644 index e63d3d049c..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - logo-meta - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg deleted file mode 100644 index e426e87dfc..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-meta__breakdown.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - logo-meta__breakdown - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg deleted file mode 100644 index b707cd4ec9..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-print.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.pdf b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.pdf deleted file mode 100644 index c2f2c8410631d5070a758a872ee8d602ef939bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16850 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 z 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 M;S+}{4)|aF2bQD0@Bjb+ diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg deleted file mode 100644 index fd3b1c6fe2..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-ru.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg deleted file mode 100644 index 46825a8a39..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-screen.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow.png deleted file mode 100644 index 0cc8969f9fa98ab15bc7e85809304a35085127e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74599 zcmafbbzD^Y`n8})2`GYeNH+okA}!t09STE-Gz<)(BGNFFGy+41bccd4v~&(2or3}c z((lG|&b{~d-gCJB;CvWo&)!e2^*rlK$a7UWJREYI8#iv?DacD}+_-_Mc;g0|8`f>$ zHznH*DZoFstRz(=Z`>%4!aaL|apQ)>4FzdQEibff1a>OX*QsAW3)7n|A3U-Zx$BW= zXGNlWk8zHq(~rTaA$#xDlmKqn)9#AoLj zt}>rZmmRM`hK@xWaO0nTNXTLohmXsGu!!mcL`A{x5wTthj9{dopehU3EBuD2fBYcu z#x0!yX&W;^yucM`0FUg9%22QJmp*<)yu{X{+If8+5Em*?@1DdBv|D%o{zu?5!f!#N z`X`|QBQpV<2~?rtgblzs!N-Z6%o0Az65Y>c*~8D;ccgzbnq8w zjRmV%T_1encpDF=@JcSTdwV+Nxb&;C1}F62U-u-m(Zp!EbNx8N5vvUWJP|rpnpH!j zYfk4(3J6v5%Iu0pB)=A#w*j#+g5L*=kWZxUtM z2=s1Z-7;*Oee!YAr1}siyALBNQftmF5&nrm&`)^UT> ztg!ioobT~?Ba+Mf4hcKaVx(-wH5ov=h0b78(SnUdi-o@0kgd2gR%S|%J?wfG-ZgA% zTlW$2F2iB?!L`p4puwOxg^Od7X{UquAgwk?2^yXAGq;8<^$g#qN0q3ZA_R6GUiTb9 z9BreGK~1QQ#!!AawO3%UDO?shx{`RWSf=O6QL^2Zhned&^#h2tU(C;!O*O0DO1!$& zSB?43-0pJUb?HN81ywvxAze-G8h*&q2m7vPr`MLDk64dTjvwu9PL9hZj{2+}nsmFh z8Z8H-NNz8L)Qrl+oE+Mr-^F=&?VWgYOJqIX7386s)oODLO}C6|m?PC}+1R5MnJ_pi zjDE_%TkRluck$uvYlA)mLq2YGe;nqNg58m9NAOs6F{%H-?QMdRgNh#>G0muBZV2h8 zZ&;Yug*==cjlB#kWp#HlR3gW3Lqy3?&=Dp-Zpzye{z*I(k&KeSy1u5lq7lNpTLL%c zR?$IkJfE1_obRnFy+I{1C`Co_>t;|C=fA&w?G12W)w8l41*hAz-$eNgQr5KxF@K7| zDB33s+(|YTZz^q?LY$X)FaAeuO$7=XpOu1&5Z!aI_l$;u^u;6ick*n-CDmO@S5W@~ zZI^=mwSFzdiDu~^e3&U!!R_*t2 z?d0#F7RhG9IZ~&I(cD`C-iU@&Pf%uE@L#oqKu{uIyOTj>OP`$N>I(|TInAZK{#{Mdc|8OceLgBueIW5+-Mfg zU&c3X=+YYH4kmc#o8nfz&D868q-7R3*mtJ0dc`Q>=q)vUE zHzgMC16h%w_v20=3jO;Iot0vRn|`KHxDeksrRc+NJcQSF*1KjvERZimNLf$af3FgS z%p=^);2m>tKFpc~_qwzWSL-PJ6ayu4`Z;VddJ|uJA7)BuvT=^AU*@siOIX;>puZ-4o@9Q!acv~uDImVZf1e1~~Fh~B+dgpGUrqijSaU-DMLop$SHqC7CKyui?mTkegL9{u8z;)pa^xUUdl6P;S*VCERj;cNm z=~#kB-}xbP8(huBMn;o#(qmY^sF-@)GX%_|qp2SLQjzq*vNx2-T}Ugc9;@4dPI0{O zcpj4O(|`YdSOpn|!?id<@&T%6JyM;G5LNsWiajUV-$vIEY(|y91&iWloh3Mz04yJH@+-=sSH`anB zkwxl--Rab#4F9WSEL7jndt`X=MWCpm5b4?!4l2S?6Sy0^SusV59<{UohMeB{ z+RK|@J<1xz9YZe}F)|f|hcHtoAe{iBg`PyE{6)l4a4a>c%m_4M;%!VAGmq#1E-U&5{Rx2&ebP zkT2Dko(})EFYF*o%l^zjPBwv>#I96qqU_N6dH`K>)WlOu{~cwOVCtE3V^${F|8!u#9H8PX`7hP?bIZf4zajNJA{otM{UY75Sz ztjDIc#cJoFDrKVbP=7&CmQX<+(|3kdV30x2r*0a($&xZY&8EwEMk~+bKo%Ch%^A|Q zzC48e?0hmqNhf7pSww8B}&b}fqs0ZsaV!UqfsQ7WE*Ob}e+vhq~uKh=EDCx_u4Z{rpo2cl1 zx-lV`J5({h+ib|nH_(ez`ht`zXP);PJ##y=YO?PdY(P!nn#;(1>^5MZ8T5#CP!b+c zYqT2mYJkK>gzQ~wdnVu+EHx@6HY-wglUNn{oPLcM?_->1Po9+~l#g9htwGpfnh8x= z)$Wl;oUpmq>V+Kl1YP^amU=YHg7~lD(>DSau7DM?2HV2IL-Sw;%Fx^~xM0CHXZ=N? zFR>=-pwgIo24|vnE;qiRt5;yS#IVLSf@-VbAp)#Na~>oPyw1 z4X2r@y6%P>N`#rwbI!xYNy!@KPb}tJo3T#6+S%;TeLC%9sTCE~HC73|#f56A9yN$2 z2+?E75z~EI0#UH#|8(t?;I0S&SZ_O}+~T4;5{p;$+-)b+8;{N5iVU|sf3e+NOT%Az zI4kx_PvN!}FYKHV0QRv){S%7-DwY@dxcb44;Lhpvqljyxh8i$D>aHM7VM2j!^=zI? z4X!^H@#yS2G{a zap7G%PNK$o6{SJ&d>^LRSieft<&4Au`!A=%oU{9dR`7NNZ;OtXe4Uu0MCekWsu*&^ zYIV3$$`p7#OF%(PaVmzx>HSZvDXxnd`75@xfwQ`CQVy`A2xrIcAY?aun6BP=qiiR4 z(=>^h>A}jgKFC)+llj9`jgzbv6WktNg++W-21209$i?4gWLo_D!Reo0t8tH3Jvr1M zz04d49vkIFNpme##&*hVKQnREp=n>SXzk#b3XzTVdHtPzzbBJFQ+^uLG#!qZb;-M3 zXYsaiAU_=uc?%}|0J-&S@S#b#m)yAgat+k66yu?mI9pql%S5u|X^v08Dr5|WQAtM5 zt0;CE*tU@UFU&rf4CGPC2GN3@ht&k4=R>ng{T44_&C{4y={vUMr(cb>gImmg+G-O$ z9cn(Zjb0LrbPYpj@bUgHc=9a+xbB4oj$3`r0X;NxtNRVozf=9EoN$U=OGX$ZMA`Tx z9AGFCU5=w3ojgZL6wE}JPgSqy%_nzh)u%BPA9DXL7@Q~!*uiN%l9pacs>j*!6Gf5J zBQ<4?p6ZLYd7RA#HSMOaDQlJ8o64GP`?Vz_W3Iy{Hv(G#?sEv!Sm^zNa=85T3@i>C zTlCF*6?f8dzC06^r0?UHp>#fEkRq>eT)_L~Xot4TA?|5eC2V!;e_oms;~)X|7e!zM z`f5+|=W;IBvf0XmB8tS7y~~QqR?DE`vUn9chklsfB!Dd`V!eFNv8LK?m+Ee1L4U>+ zlr<4g-o?IiU0hE}196>V_QTB;4Wh6$Eq|_HI?>bMxUcK7&rNpxgz2|03(hsTP_#y^ z2MQ(H=AX<3g!8=yom`zmm&_UoubZ@ZF#>aI_9>A9-7Q(>;mMQxN`_W&qEDjU-%19b zs4fnssql-#VJ&eg!rr;RE=A!y6d?SH3?m`>{}myh)B_4U1r>i>3Sew+3`wQF^_C#3 z9udG@lR#6rnA7u^{N{Ra&vi-YZYl2-iK_H5A-ptxO0VshW zae2kIbZy};8>%97>^m`|p=g}N)qZp$b-z+hUVkmRNxo?L!o6C$m9~4c%Yyv-Lgej< zO;K&j2=3M#)K35FHG*p?s|5OIm6}^vAK>kjScVIIF&W`& z^|7oHAOWijlhs;CDhhuxZag4rIgs-_bBW=}HJ4|x1|Ty=^RebuQ%jD!L(cbQ zC-|%744978r*Y^|lKEou>Qrg&G&d%DMN4+bwpgjU?3at|UEMe3qonR$_T5T&pWnY@ zxfZ>s;XXnk^HlVpZvzlU=TuAU6cN0P3dIlLSuXzlZ--81_fBd|F?iclUWckg;qy78 zpc<={DIEBtn#Zr4-QXuLy$rVIZxWM!{$~;g%)03$vf>c54uN{E{hvFZ5U?e=@bC1X zs|U8Q^1A&HI@u0t4#djKpasT=a>9|v+2M0{ew^yH-e=_^E6Z!za}-CI@mxm}|J)V% z`0K7AnwuTarep^JHb9kf!vtE zWHTq0tbeBSnG3h%O^9Zhj&j?-_a<y3=Vb7sR;S)+L)yn-@HH}Fv;3ka z)yVF9d$3B(_nbkd+Jt#nKS_gur76<0s4Dn6mTs>?+otK^$Z2naTNohh^3AbjjoiHN zSTcgApswnKCFj{Zo1NZ?p2pU(-ekI1O^*VDiB_lmu6d;b|H|B@wjD&eu4RWtp+x@0 zHIXFIMh}D%_2&oRY5;~kuJ>G3kxhac)xL`LJ7X`rJY;2GjsoIni}-*YGF~H2H6GGecZtZZ44^4UmiC9yd%hhJs<7d$Ne-VOYo|~ zTh*O}Yw3!W><~b|oqNl&?dKDcfkZfJR1ps^T?60Ab!vrOW2u`YwCYb^u`4pM-u>-m zwrRC@ge|Gdg`YVb`}7YB`7f<3$C0ERH`>jWxE^c;Nrvyle&`$Wa6R~t}hv8H{!M2QZ2(4^Q$DOdhIZUYfb378~{coAsXVXsKvP#|OFE`ooOG@_X z@JhsYxA+sT#i=G&I8`ID;gtAOS$>gQ1DHm=Cw!~+Ies&3wnfGrlHiMs7T*p3*Mv37 zct%SMefzv)JDHgsRUk@UD%Ys;;x|28iCnY)i~luUJp;FUL8EEl4_KHmoiH&C&;|16 zp9vkjo~=E2)!3!~O|;VSDD$ncKuNW>;R&W>NM6|!h7iLnl|?aE#D&xeI1O|iNDI&f zU~w}PHs^q|e&ym)Cs9=>?6R@{i_miks9*M?sOWw}a+VwhqtVZ1!cy0@Uc+PR&4C6)+WSj2K8Vif{ zXc{HlGVqKdxLOJ7?Q%shM~Z@~ujOcgxUZsy0}a)O&4CKN6WGZ>ttGp&=&X66RfZ~w zF~+=<$Y}mFk#YOf3D)R+)bMtsv5kdzqgBhpG=?C%lun7}xyJlq*|zMnt!oVQ9P4Uh z^R^_F9uhvvon{rEu$@;m5G9=iu!ExUi+-c~=k_&%k~Zf>Vb!2|dZnAE(F~6Iv-zie zDEBw$6bymaM3KZC7O>PxQAwhq!ZvNFqbFn))?+^p_Fa!rX7%~dtlGbuu3zg@b4q{2 z-mH==(A6>aQ1zTnlUKha7SA{V0f$~uly&UPHHY5Bg&XVoX9eg2A;}~{_Y7YWA{4!^c z%B!qjJ?(LRE&8=YCyc%ke@ZR&<&;a7@io?gn*yoPSQd(HO8)mq=Y$X-0f{)h=&WX?)VhwI9th5(2@!#4G$yh*2BrBs8(HRx zTc*Z9TOea~EdB5)4N-lF@slz>21m58V|bkP`@8WeYHhXZKdlvw7TEJWem)j=+ObbU zd#mV^+j;i&2PPf5WP= zy9QRxuTR)`#N0@|@@MI4GYnLo&(=aNwOppK&lxQ^jE??$B^Rv{s1VB(^nlCgi83mG zhjJ-S_@PyFI1`I58&QlTMiSYA`Dk#jF4v`I;klc+(IcnN*af8-pHbT@>ofvWYkW?A3Z zG>m zDIC%vRld58;n#Vu)TvRnbk%2cPym=u$~O58m<+pWS8V<5nz>Clu%V#=dXJbsvV`2^ zr_WBlHk7nkhA@j6?p^wEu3EAGkATZz21F*J;^X)qBBQ7K72yURAh6l@bDHO*yGs|+RDU!o2*oZ4p{fk9Ey$w_g@f2R*^ zbYXzcrD~GNQP$DC_pXXufgPhzgI%F}IrSfYn*vH`lt#(IxI2cmv>@ArZoHHEAy9{PB1?GT=s6lD5* zGBEt|9=r8dUjLul@ij2(_;K%kn%B!1M`Po{=>`?#f?D%~+Hi5C`IN1qCc;x=Md}qUKpW>c<&07Ha~? z=eqeoI7_XJ%~?_Ga4jy(X|>YS@8+@p;e>ywrHG2#^3}6zipWj8E6oZ0b!D|lIBrq> zR?NUDfJTHi7gwG>Sr5g+QF?7Jxb#FkVoEi5wya{RZ_+&RMle;co2pJzf>8zRCs~P(HUwO3L#2NrPCyBO&JaKBN^Y!D$QM2_Y+j| z`Tt8CZGgl>Y%Oi=h=`*DG3K?r7WVT5O$U)bsyQ5TbxVkMt0xVTiYYV>_vWmY6-#V9 zoQ`-E;?66s)>4K|0~zO7(&W>-+A=4vgx>k&WzY##PO^Zy(Kh(gB8Fy~(-ZX7yjP5s zHey%cx{mz!`hty=Gw;hH$Wo}O9`s>_{4QKTKY^00$4gOD|N90d?~&^3dxtB2up*No zkK=qs`TMP;tC(T!zB6HdnRn!)i2OXMTkSHQuS^IMcOgVLly`1UiSl(KM|6b}9JuZ# zP1i^O(Hy^pFqu7zH#+b2?J^lYJwj>icG$GZFwL;G)5 z>lnjmU*U`ya7juw8|S^84`)(Us-G$`-)I2V4knnar|Hr_22(uZcY$Kv+; z${>x8rL8m%yps}+o|uzQ)tukhtR(3K#)GlTzZ@;aWn65_8I+0$Blnf9GRkAO5!1|mbO;fL%z9lgFEuj2YZnc^FW&j z6d|EadhiL4LxG!9*Ty)`MXysi`YH9N6wBIa6@IJatw=VN`ce@Sbvp+DL*-g4Ww6MB zjqB&M$y9{oQ#xo~_K%T($4HVIyg>3rnxMyyX1ipokrf_sNe-6VNXGbkkQQlwm50W%D)HWK4DkAMMym=?X=f4=%=#&E(u6U0T zFqqP`2fK;KKKGAiUw*eLQ&!bN&s+1$2fVjP&3!_D^tD-o5K7{s?wPw8C;e;b`$;S? z#>$Q@cv^so#*MM;$36dCb~i0Vz#>nOiv4LauR4kQ)fnj}@vA(GSn~o3Oani|l~9iA zT?(gW)Y<<5(h{o}vJvFkWV=XX7Jh$${pwSrY#naTVlO+R!jec*o~*tNl}Vt*7oe7n zCJI;BpL+EEh3I~S0PshR1N|q*I4Q(H7L$5e@{wKK_=H^Ov(|5#3B`Mv7pbKhP*}V2 ztO!TiBy%2syu9i&*7?5gRV*FIgk7Xk#RWW3YQ^K@2a0L%uWVOu;^FMM|5N<~G5>=ycuY!$;99UF@; zKDXZCbGbKrizWqC%1Q{Eo6_I|YJD^_z(6Q6@oWU;2v95vn};s%DHn_^kC+m= zO1$S2mDHiaCH4USlVYs=(O8Tb8+c>(93JV;xt^{byGQJL9`rHl1H}Z4ky(E6{LMwr ztrztSE)+W(W5E~?AH4jVwT6qN1T-gcMFr^fZ6W`s*Nb7d@oYlXF7{TF7``b|E~V}q zFeJd&$L1SH2EZd4$g#pf6H;8kDwPCb?y6;zgN#T$q_$!FI=`Byz?kpSNLg+zgYU*7 zFe%#2(G9D$Q_6a5L3o1hWcbnJzjKyW{8nLMVP_BR>)!or!2|T)$Tlz#JDP>+L+l!? z!73af#qL_QhUZ`{k?U2(U;}Pa78Gu+Y_ul{{U36#HN+T~* zs4gUn?~i=8mkN;H5C}K}3*A#Q;-Fusa8nc750d_JrcId3t@zBL;;J_4w!WEG&1u=G zmECFwfu~YiGqz50>XwXHXO8f%Bx*^I33g3fLS_k2$I9bL9>&PHw&|w=!{7YU)0^s; zcTV#EhBUxk1FzswJT8)8VBc|A^bhNa0VDeZO@<5ZtAUD^Y}&eiuVIaKCq-BNpvhj@ z;Xv+YWj`PbuH{gd_fMRt70r{fHC0I9>WlJA(F6p~mk1+K$2DbCmx{CjY|{|Bc*&ya zo~s!ZP6v?o2T|Nk))1C7upY^8N1)xRU|$&6i$P#nQ~mjiyDXGwWHN;j3XdPCMs2YE zVZsamC7gHA*$pb|p7}3_mSh!Ue3EH*dG%O>u(ma_1ma(hAZqRdSimV~C{bTVOo0PC z{TojaE!A;E20>cF`8I9ih+nCXY=50HDsQ`@MzE@4phpW*FiMZDL3YF5m`cok^2OF} zMzSJf@!#+^qRfDBCQ%d1hMA%pjjD-%AoAw`aBaH(A*ouJ&0(O=g%l#_G^!fO!?%M( zM(SzyYnQWk;q5k>`Eiet^i{T_O6H+64XT5|={-Nfd!);}8?Mk}(k7sVLHQ{aQSfS; zx}es9^>`~Ak5Ms@YHE(gihtJ)xy<@7Ft{X+e%}O+9-vD|5cJb6bBzpN;23lvHFPkM zeTdK7SugMI-aIr#)C_Bcfwy&Z;q4@djrkr5!@TZGX85{{@I>Rfqh?7eCL@}kLhgx1 z&H0D@_+f5PVN2jB{gE6*k)+@!2+tu3KSu=g7rXq+Ls!`@b}zrUcovZsxE;$V^2Y!? z^AoTIvvl@JpPy0w`<;f&K%dP+m!^G%b-uokLTCONmyw85;w&yrJt`S&0aN}K=UaEXbS_;oj zk7t;JL{+q~qp?2n;9j?hM8|(8R5nOmofDD|tMmn@n2vbPLECB7R34iBkNGM+TUqH!}y? z=$Zg$`MBH&d5qt+xt@!5q;>CyVP+8{*p2SR;X$LZ=?tHxoLrJ+qnt6hU2%&73Gq3H zhc9rS(|VmZoTV})O2w+F0PiR>jo2=HJjj#u+!%t)Mie~O03R>v zGV1$9@(ef>6u0_OmC)cN7HOh_c6RfOFxmf3=3vkCTvL;8(u9PfcIwN*`OlU+%3eLz z2)5c*1J3Uy31MeGP@EAB8Yb=ZFTd{`Xz^y*`GF3I-h)rie|gZf*hbsQ@WT&V@uyivo!n%iS#5j=c{PXxv`96?0u zJJ46>O@_L>XuY4EjP${ZUem)x2=&J9VkQ0mZo4-EOK{yhJ$C6CEqFh*iBe+QMq+Q+ zC2*Twpsxj?*FvzcfQW<(1BV(=-m#szQKAx1+2G?@`|*@mF%kfl5wRU~tp&v!sB0a??__D#ig%QD?Y!`uERrqcYAyVY? z1osc&!_A>@z6Tbn|1r%9JR@8nrERTYZvJyD7`T88LOaHymZpe+LhxEAN2Aom2f4zZ@i$CQO%g$B{`kfjL)7 z8;{n)A6KQ(3QpKVHzZyB9_QGXg?btF9)?mU;)GrdExLcC+nFn?vNPOLN(yd=ftKh| zN^1^99A$q~;<0jA%=%1NOE#iGJsCpx>3;;O5fT#jDk! zVp17^k-5fMvFmQ$59y%iZE!0`P>PNL=c%5MoDP}xt>8ICDC*BcZ;Cdy^43=vL8n$K zb}!}}LroGC`(T;|BxJo$TU*^hg$QcSGCA^@){opi#{k4Dr~G%-_}4312wHuGzw}A9 zMe(~!qLg7LE|c=fW&+kf_uRh3fXV1RXVpm*TppFls#(4r{7??4{XXfIcuPTZ*OCB{ z8z^V)h8CfXb@TlCw~xHq@SYoQV|B2QEnB2~nzHEg4vram3HG2BR7q>X+x1k=iCB=+ z2Rg_nM z7tp&;K?`<7CJOaXhdSl%(~-&3W-5RwGx53ZrtL|7Z1UUq@=Dzr05oEW1m`htH@Xk^ z;?+JBZF;EGh<~T55m%C(Y-w>8t+!q9{9f_-G)~O{;`a~7Zhokm4d*C4%X2wU7DuVqVJHm->wUarn#_3d}394FjUlmwh;Na zCe2#EK~h$G^{iWbN{skt-Gx;#?Bth4G2&iL%uY|y)kzWge>m@$!~LxY+`cgZO(G8; zQnSouvi&1hY54($T~H6J(piSeu+!l=ti8n~(e0TWegJ5AShcmx*cF})q~R~Woijnb z1X%YV&_Tb~E8i`3veQZ6*MCRSAzoM6eMJAmX~TeuDEYQYVbLb;gEB5B>$0djR7Q;1O5D-@ zy_zLO3*&sNEL{qH5&SYF@Ybbpo4#(y6W$V(r_5KG;GP=Oq^+6fgj3Tzw&3D&a7{hr zrGDvA@UOq=(oGN6fpaJ88M9fN=Q3drc=k>13f$(oavugqbgV+I@01BJ8{;8+aWeAb zMPo#H)kWm+$%^kr%EWneO!#R}E9Q2tPr_tBztxAWNSqEd6W(*Kq>AOBtKb%5=?i0D zv*7w3yB%4(mV6c5oq-j94Hy1%c89_GLsIfES@n07x}^v}gc}0EVlN#cpB+yxBX^fKAd0I)Vg%WUtaZA%R_llPP-a%P(z<1f$|_>AP+J3~I=6ETTPz)pcT zt_Fr}vXhVB?!ALW!C6M6+|-8xE6$>lW2IB}4lZXueC$-$?Gn>N3{8=y#VBQyqc&U{ z=^`AM4H6vT!8@GvO2J)ebN-zMg;BfyZ+_zZH%SAga=4_~OF^^#C%<#y?$rkM^CW&o zC>^hRcjZdNPS@K|6jHHh2GsFlFb}7EVFX>)Auq0ew#Fwx;mbj1slL0pm@&%-C1Bpu z-=i@w@vE>psit19_&^s;hFW3G1EB^f| zuo%GP{cQew5nKDFC*RVt_%-;86%9|ipvpeqp|f3atg4uf^-(+nls?@`C29RbyGei&0nb-U@CK2?? zo=fDwR?IJw@UOoGP*nAc6teLp%H^TK%Ri4+1)AZ&gLH*lw(l#8XFdD>3HP5v2Te1j z`s~9mcqNqpq&|IHC1yZqt9DypG5`a>xKt&SuI9z&E4+~l@u&FT1n|Fd_^uWZNsyY#%;47ai-Da)XnNKX1>SEnMx#*La=*COyg{XP`+ zCB9K5E(UgV=N0j8mBU*HqmdQJbxW;o~D+3|i+RkmFf zue$kxs%(nno{=SN=#51p6^A&@?e28p$%tv|Y8?|p=CYF5iSZsgJ7B1pbQCe}@O9b- zaT;(l0pTy+HS~F^M;f||exFJCz3&esX7+tH9@&$pvRqJVrrmDIo_v=iW}E0#G?qlr zn`LillUq3@Yk=s zCjRFrk4R7HU`%u|>`}b3nHR>^#t}{a*)FA?aoJ;cg&ZjuGJd`R33N*C9gFKlj*Yiw zFy@r1M6QfC%%f36tt|g?s!yeN)RZZ72R8q^zlg;8X#)bf(Dy_KvcKKBQeJn8`7XIR zq~b33W;T2~$uRLp(H*-q(fLk(Iz<5@(T%bAi)m<^sH$zfl3#H*fp7+mf&bl#XQz$y zi4e!6Re-4c9?2@mE*vPk1LzyTnFrVj7vQ6!yYEAq> zH)L2}OLSfhnXA(_c0@&990a_aUv-+K zo`P8M^w&2%%l^HU-ZcmIRoW)%2wCwNsx2|)x%Ob;p76xCYoy2Napr5DugEsyDY;o>R%~q=iydZLOoyi2q$64tiVJ^ZLppm5GLF-DL z%Av!S@l@VQJ*qU$@GEhCw^N>d@%MD=oe)%b!j71tpM4b6K~QmVQiYIw#pMaoBwve5 zm$;E$y=P+g{^hyR=`PD_6g`%fa?j-6@nO1AL6frMcC*o82}nj~Xs_ZSsP|0d;VO(K zL<11d&DfzG-OAtK$Luceis5~_E-zH-;ZG6NacBH8t_!)gnRGB5#KTAy$|M!MNg^(Lo~{2!I7i$V~-ERA{CA3#F--dVxn&n=K9T7 z^bPjjjz3d0jc#Ud?bmj1oGwqtTrr%;D0)(jYTtV|PJv!=538Ly(0QpdzUd8Ky}73{_*`5Vljh)J9Ly4Zgf>1Q%3tdq=kzNv#=x7#$H%L? zN2R8KRAJUvF@iE0P;qn<9_Jm!+_%`u8|qWW%_#la{7Z5AH1EvA?`e+W#j!z`9n#8h z!B5`*>0W=L#YwQo#|Rd8xwWLXNlo>(s~6D0hB~hCiRE@r%UrElT#E;NhCe{Zcf^c0 z&yvsZUAVV#W~Iakz>N8=Jv`r>6u&SMv>r~|A%mXi`%4GQ1-p|qN}>N;dGacSYWyTO zl94>7c z4Md7AOEWu+e(b-tVwP8(xsH)TWDAcuJLp2b;6I0(J2Z^BU7^0GmQdIcTLNreJ#uG$G>8F*cX4}tL*nDzn>#7lvri)9 zV`+HL4SpQ1s1OmlpbCVO*J+@$zvOIk4hm{&YK{cG)AGm&U)^UM9L%`%X8st(H!Y-v zKf0B(xlK*eJ9gVbA{#4_aa zgKwT6E7rTc&*yV~m{gA*&*utXX^6OwA%a|YJ6!^^!Y5r@nJX_ydF(sTB3FFnTDX~e z#p)pAHx=n_9PjMC?h|p5Q_$~jcKP1!qfksfnN^?45`W7kLb>3nObdZ3;R0>?%~(6u zF)4$fQoWj&Q)kM^TapTKJw7k%EBgAAwr3LD>-ietUmpuP)ca=o$Ffl6#~rQAhNUkd z5M57Y9gQtUNnl^ij6U(VmG+(zPg56H%7< z(vM6&YC3JA8&_s!6CySVlS&t~ghKAZi;6UN(>(2ZFym8$bt^$no9zI>q`O@6@x|59 zy;t(WErfo5*Qw-!T*!WMNU~16X!jGwaOSo!*iC!vGj^A+lB|Zxo@?R9@OyS+T;esW zJx4p{jRlAc5hodsye?|_R^V?rNwe1TB3ndUe!5MmCpC%;mUe#oN^`dZ=A4YJ*>NNAhQUSRGfqw3JSsp~vn7TbIYk zaxJo>tuBZ3y$@1Cr&&rBXE6GnY_CQ!)7_$#msxJ-GI7{^+L1RAQrf$3xsXGO4@ z8V@-ihqWn}faR76NaK770o26_3-$i2u`IvpfLk)D)Unsk>Zv*#bH%`1MMUw1LmZ@2 z->UC$NxD=RW2PZ$yjw;ra#ol#FE;z!p&~+Iq_HRXPQ4t`X==n&GQo+9mj1SfLdSja znDfQQ$Id%*Nn+0s3K+ z&d7nrxEtvD5OT5NaD7PxnmBvYz<*!%u&)L*p`-PNyYX1d+~f zj-wy-!=!CgRQeZ6Rej#2vLDCTPaDZcJJw+KTvdUR5Qv z<%(vZI(TJG`iDciC&bU?H%8`+rkwLkcR&?X=mnt^99lD4Jq@93!M{ z3PUk!u5@;v5G8)J%nt_Rsl4?9-Nj3gJrqbAr6heA%E3Qj4H~?+HZ($sV0Y}Jcd2$b zQQ%Ix{m3HdkUOP@;fe0!)AkQXC2-N9&K}XBf!K|jR!-)-kXG^Rj5cIqhO#RPvlk9| zsKb%6Wi>Nn%f1BYhWXc*wif3=`kPz4D@&%$_Bw<)Z^ldXJ!^dBjDfl4C!$v!hg3r9 zdqu;qHt>}DXT&p8Zxu!s{R(pV=99cl13ORbi_jf+@`PF4nRfi9BB>Y`%cA0VNv5y< z6ZTf!|HqHU+J)F0H=uE!ZljalJZnU~`Lc?lycU<*-{)z63l1L5sx_FUZ-2;;@Mcv3I1K~f>Uawf!CfA^OHafPa~Rj4A+?ERMj zwMm_Ju42P#uAp;ZpD5&`FUjgC(H1LtvD$~i=yaytEkVsL{ZM7&S0=8<%#plA&Q-{GUz+8EpKxQ^1DUip<_IL)rs96%cMu{-lkDkKAwQB z!Ffvi1QOops=?-L#+BtHOotl;H0HtDUiLp(k`^~Oy!p6P@>-r5=(gD7C)|JGAI>jl zT9cABF97_7$iwVQM&JM|4oN(co%vmcN}lM{xO07<3!%cW8_}EE(mqVnhnP~H$#s=_ zEvYSQ-$SO`+)U=eq%3-xHK}5~vTXHMa9v_iPK`%*v6KV6N#D~b4Brf>B=NsG+lPOk}m#fKzAbZQ_-0$M1 zcd7e1Ctf+9By~5``t5Fy+=EH5`;9(PJcl77`O`XLX$dkZ>A>W&tY z`#SzoMv*>KFiFz?emK<0h`Zm(=iZ-Wdb&!#-a=Z30&^w1j5gfmH@E!eP`~=_Wjpen zUL_y+0ZEdszj5PTUiNp(y2p(hS6)?7b#2^{-?9aeBz5~Q-|xlp@2qas^{RXEkvwN$ z!5@=w6ZUzY8Z#n&jI(ljYmyp`h#wax7OhrlMkWP~sVA95My&L@DcA zl5~AsT7Ai#l6s&q2Bn-_1TjJmdIFLpbtmW14{x-Q{09#N1}>l{FYXD~x7`wMXx&|h z)c;F22{-VT^Pr?rbux9*o%TCxUXL}^{6wZT_G+57kFoTWSKbZpFlM48J5#=Qkg?QH z!VPVYe_Sa~a$3NhwxqJ6a%OLLPpce+eOo$HkUzlX;A?L=9dYM-@4mNe#IVZC>W0^O zezWzQ-f>b0-j5`ydvCv$YQ?|gv$a7Ev(DS#_D@wof_6_iJ3$)NCqegz}PGDm&%pAQ$y#bD=4o4%bW_N#x}YDc~whRAX4 zjUy_m9?!*-#oOwi->*zuWe@J^4+$i;R%{t0YyXdfgWFBjAU?hVxaw zPB`(o@>?hBN1Fj`BO>2_S1)*G{sQ;HUq9lLS=S!&qn&}a(PQ+H11%evaz^=n{3*u^ zCGqa~*8^iPz(8bH!_N<}s2|1R#xj52*pTNxoHjPZ|M?{#C%{c)TKfZ$#`Xg(ZGB!& zLp+vWJ@l?O?o_yPV)JLQ&aRHmrf8$NChF-GC;Hq+yCaQl-?p^AT)X#9P2wTj`TFwu zwqGT&3Pl4f;GT5o?dn-7qbe_xJt42B*&Xm^kkN;ZGBekjH688`Om}qRfY+s9zXDz- zN!?Kfasv40@q~Fw_T}n+11Yc<62ut^EsO= zD~PA=i8UETI$KT{|4}-e{%t36Uu}?FMD(-UZn<@yJN>wq-TCh{x7J-=wvkNTM(N|- z?}KF431nGE2PRP}$8`_1wzjVI+G+hL(&3eN$+66z<(Q_*>-K_PzwF0H^f+o!RYk=G ze7~o*wd8pCy9uNJndkeHB}tVQnN8qkKS!XYwnbPAf&K;LIQfe`UEQzB`Kq&}RPKL| z_uth4y&|7m`^bgA&&g=`SzgZ|wBs&2J}txQJ{VA7eiSk)rxK;^XRrJoKh6)DKH8Yn z$Fg8AGEQK&ujEPo+0oJQ@xEUeCy;`@d*pm{GP?AM@`m=W6ct;0$&aXe-Kko0zEi$* z!0aGrbsOw;W_heBdYwJ1c7&JB%Bav;#?r^jHtHN$JNj?o!*-K4^7!_f zZ+mL=@X=!e6IdF7^hmZljnxCUs+_DnIgv2;NMK$~mFy--PcFnHsm$I~+iUmCmx~ck z3fzXzc0e*^X+p)Hlar60-oGeR8l35O<@eQYG6LhEY}2RHeoaNiZgPV3z;x=!vklqnnAa`w@_2;3aaL{1-X;&x@(C`{`yXi$ii;bLpF} zz5Z9Zeb&yYR4|Zr7A{=aD<@X|G?21>l#ww$N62Sd&YbIcZr*c;%5j@#+h=R$lIZ(V z?j0ZK&u^_ye!ixS`gq!1w_OsYe(L9WTcuN47eyM{PSQo8F_J9(m3*Sb^1RC#>7JYg zjK~+jk4?AJ9&4(;yL(2>xQtZXM* zlABLt6v3V!uKwVq4Wp}avlBi>E$_!l8SQhg+{5(gQ5B>1^|9%^Xv*s(sr-QYvD{yK+hMa6e|P0xZLomB2GRaS z8*Or;=GnloIx6?BuHOW&%UH+DpTRgmsMX5-_uv1CO~T9gQ}-T=?x-0#Zt?7QaK?l7 zxk7m#e^q7%n#WYU+lF^XUfq7nt#@r0mA35_@~DKohmMo|T24}jH#@wlbCl+yP^zLP-KxP%@8Hk^d}IWx@5Ub_4=dmAYCQj zbJOKF-s=9!viuVPIl)sTUrZ;*d!2uEHb(zsPp>}glUFnMtfao}U*Y1?{p4iEynbr^ z&?>Qx(U-ma@zC>r%CR`$0y6UMD+v>STCU2=i_t}Xa?AVipt#dJUrs7sIbp(tVn5r? z)waA$lKy}8t^+WR;%d+AovIr)wkeWM)sjJAiVK)(Oz$lw0RjnzK=LOcjRZomWt$QL zAwUumnsH1s7(y?h+D^dOV2ZK9l4W&+Yh0z1?rwMfZ)6|H@=3bgo!y29i7w&$_L->Wi=v1k%f@~2kYSKVFwUv8 z+28gW9I%YX3iAqP@Mq`S)9NoT5WqgzS0UQ>A++t(*v0oGP0vWu{7@B~oA`dO1HI^5 zpS4MmiD3$&(q7_9Nhf&6+JZX+$Z;^{^YpuhG--D=LLZ+ycdqVK$MU^&kuv)Y(BIRk zHd2Ky#=89@j4bAcbfhhRCa@pjS!b3FCBwf-rK!{h_R$y)5uv!`S@n7x)G_aqb^ z*O;%ZYH$Sb4jD)&dk!hMJ@a%F-4pzoWKm-w?u*Ms(@qt7@Wj0l&(2e7?`7|L6jAV3 zV;}5)fCHxt)-Ybs3)3y#E}s`8`rux?qo+EEt#>z$gDnHQ)3$Hf`esQ<$sp0q7?jSz zd_WcjTLGdj4ihb-8}u;m8HRV;(QdSrOdIgDcgz3|hn_p}9N!H-0?F{A$^ZdIhQP4= zZ@k~HPQ(pIG8{d3N-d8JUKUj|jtaxs)sp9++mhZCJW7oJw}1wNOt zrzNlmYQtpojXsix82Lwjd%x`;dZW%f-qZ;5I{(eVZWzP|$|Pk%@2O6ee?3m6$2 zHRvb6RqdIS08b~4q;N9bBhudS21cjvCTLonGJyal?}&_MPZotjKQK{E%A(lEYZZ94wjmv9o;tRu zpzwZ-X+M{aIiD~DBf{Z&N9>)EBS#92;A?7X;@N0kk_84vbYDiOAblE-N|0g>4=37> zYnz%JS-WFi{RgadeKKAJD^hy}kli!D6aJzVc6S`ZlAcG<5{G<{R_7&(TgQa4q{gTnCN z^nAXFcb_lP?@pRDDFFM!u^x0&!X`CC+wFc=hSG#ksgq71!1ue%nX+loO}j&Vb$z z>FcZPlIdDMXkx|v?I=R&D_Dg2RvG3vU|kx(fRcyLoo!*G z3HzAd!tNL)M7hy#YV`}bRn@=k(vHB=hx-VG9IQ7?bi`?n0W1KXS zjv6(pAJVG6il~=^dgDP|vxEQ?YvciV@*ZKSwuhB4#+{6PSzZMTj_j}Jp=i!GjXiCm zI(f%$#!}~j5#Iuo)>H9}-7KE+Hx$#-NXn&Ov~ba%Fb}@u8zj^p_7Gs?fM`eb73}Gk zYmd;kwTBEJ{u+L5{Pv7@f58}BSW-|TwSuiXI-yW#Fy@;Rx}W#xw@xzxb40fdrS3Es z_^uaCH%;kjFgVXD4uvl8T7Ew}H+hYn?e<|L)q(*PNopHNMZjqU%JRzi9-FU2`8&+% zw$g<@--ZItM?V!MZ|&;Z7U<|d5=GB89hvsCOdw2AQPFrgosVa#=Aa_djdx&B@Bao4K0B+Dn@rjC}o#J#5NyDxW zw}uA;>jhml? zf^)nloo%8~;1I!Q3(|+I$34zd4z}VGGeN?WqA)aMk{J6JU#xngx<~O|z^lyuv1G}Ts7C4I_9=;>V6d1p(V59eq%rLr^aWDodw*bl^Ex6q z`21YhfidzIQ0h(*Mo>u^502U(X+5k(g7|J~A&ilS|r4m0H5r__)q3kaUAtoGLSvrJ>` zVg&?3oZw<}y*8!wkY-x?T+h8qr7orn0$JBD{{q5X+II5+H&DF;dzH{D@R0XQ837#< z1lFi*3^YHXM#q&%$@@%@25--t^2H|(HK)i*ia=Re*+A@PGzSVq*A*);aIS-D?NdPW ziAJ?gX^?(0X3Ut{xpU|0X5r!~^*;RY!(n{#tQkfDGiW7f?+@)hzS&5x3?#}(x@%8j z;_R4_l()2D?fSpLq;uk~t-Ab+(mEtM_>2+S1bLg8!J0IpH3zZ-tFt?@TL+SX;rE;0 zZ^yNS*%0_1db4KD8mMX7@K`K1j2d(}j8p}bu?oE3DsVqn;C}YhNC|%SiqOdO7(b4b zJxy0}LBUD7L7u^VA;rA4bKE1O2KUHH_@-<^e@4-_5u#}kVqk}8!i~9FF4I^)+#$Jm zPw#_qq!eRY2-iH_caD2-$Bf83FqTeS)x2t%%THEHH-|{lyI}xu(va6_Bu&T62A$F5 zhW?k7zJWXx4rA1Lh(@>#EL3@qQF| z6c-d9qZ_e11(H;xzC|Et=;ZODqM~syn63EswE8Qh5r8AI7SzsBM$(k-<&+SPuZUW9m#?nYIePzcyWfZbI&qv0j5N60E}tgr zGxYN!7%=~X&q6IjdtY<}MIwHn%-Y+C8c07+j>0{CJl=JlMEN1|XL>_R)6_&f%5bi@ zxVXZI>L0+!=*ga>xaX1Sg1rZ$`Rg#2&(kus6?JuWTdZKiqop^k-Bc7~F|H&yp3u&I zA7O=--8vY<*9U0E@pUbApWCGsuMb1vl^C1vkN>v&O@rG0jg5_8+NI-kecYQAUfh3! zg5oC*ww1OllF=ATJ{BRD zlQg*FBNRyMaj$1O*-kRF@$TCK-1Zh_fGN)}&+B0AOSqF(GVQA}))2rN?aTgq3>de3 z`SR`7C|IwBw9%u9&OWkELDe*czz!qn*><1NlKhebV=TJVRNFo+jB)LY#+D|_?Vo zQa?aXY-(zHO9(B2M6mul%wYNl0!i8?h4G<1yI;=m>gwukwuuQQP?%SE9M;Q{*eU3X za6Udek%&@w<|krIol9>7=&zUm4+uNU`yJ%+@-k3rc~?>3e&l=6F+EA;v2 zue^PpJ~GOp=i$!_oKVKOWhCXYzz73~8UIt-gHO5;U2qmsKECM$lRG_4f9wS9gfuB# zh4Zs%fIjNQJq^Xi8nlln$<7byGzi9!B9PIGpd{TtAmUdFSbjHC|U zU~$rjX1pItpSp&YhWYVxHokc@;_Wu-3#*E(5Zv2edP8ZnJ$j}LM$(&}j z_CKf$DGV=xE#b427g~^jcu9_7x-mCA{qYsyY2`m+_nw+1h_oUj2?C==jY4{A_6JAV zp?oz!FKArdT+!IvIKvBrQcv>nv?5I{P1Er?08Rmwh>V-Yz36%>Z{|EEhOX{OiWHtw z8w8v-lJdTR!NCY*1y2^$hduWF&62r7Vl-|LA_+>)#V5Ob8-%tdr+}A48A*G>6CS_K z4Xc~~+_<`FBqiEJ^!r?tb=vCI#WtN|$W(F_H5!f^9fwupxYG|8Q zaV`79=s^;*t5`FEz?O}hu7wdH&qS4^i$aMWfn&lS_82mFq#yP}Ln@9hkUq3(+!2SB z!q6}YW5jz&3)`)r+eXrE%}e*w4I^n>Xrwf4VgWJ{>1c(!>!M$maswpp=acH1n*JMa zQ^xOx=7xWBK4Gvs68G{aPVg%>;Bjv4y(wRLyF5#$6jb*z@fJ-!A8(#uQA zN{hKe$j)eAtK=-#Yh2ynJhg50s6Q$fv~O>-?Sxm;QnMQKNIAU!u@)-MFCHZ` z{M`8w8u*i?;1T<@uWD?xJdf@w1LhW|;$8mZuIJR>&LhAKa(iK6;i1mAq*`zn0T@X$ zw6jD-d%MfKYAxLmz#NVud(A`m&Q3Sky_Og0O|LD^E9P6hSU!dg8@2#z3+L3GwpL5+;XOVE@d0Oehc zBy|V|*cs{DqCQTh+f5`tjNWybluQt4ENz3b_R7nyxcm@qfK1e;tmhEz`u=4~94~8l45A^#djV;X+ zDAmr#bKD@3Bgh;D-3uC98viAdZaUH8d(GC@u6i2E|L-~|cX}I1p$x&C^*#sjRit}C z00z6C6c-d6-Aj?AE@Awdom4>=3K=XWsdxPj;WuyGd>Wh|b6kL;&nBQCdJOLh+mTZk zD|3-BMLoxTBJN0mAk*0cJoAAg)D=+=5TI}6(L5DN>H+eqNoxocheB83y>^VX+NzdK z1cEx%AGY%j*s)~{d(9>vqN)dot{*Fkm^Ctz9G61D`@E-!XQ&uhl*XOm*sHo5l<67M87sEp#(|?k<%Q3XznOVW$r|!0@ zS`&=`_8z#}355y_h4cCk8hEDD=_W5Tjdc=hVRlqyD2js*itVXAwHq@G|dk7R2divcRb*Pj9qC$3H&Z1Hzzm3Ex+q|nf~U+ zOyKcWw7ugWi2A+IE^j-Gq-;_{bJGiUX{Bp@^hef)HS76aduKR^L0TJ0Ij$^b+<`G^ z9|tj3qTD56TBO0)=noez`Wb59W08WYCJh3eM$)quwk&kmX;K=26(c@Jpgg}k zuYfPcbgo4+M; zmV3PH9-%iZTkC8qin@~sjL#pRgDK}^(QV+~cx_*je_ARSNxNcG-`xD4#^$EO5Jhz{ zqViUEy%zr)vZq8OXUy~4pJ6zL=oz1 zbNnm2bX0wN2w?l2o6GXbEIS<9YhBeAfdHP#w-HIIjHDvKR5V;e07g#$+lxQdN{fu`;>c%fg|IJea<5?JszOOUOEaYy-V(A>*KQEiD>t%U9ZhP5& z*S0(N4~!YF;N9!w)&(k(6z<}T8h3ZaUj6MI0(b(iDJdxl+2MfFz-&A9Mb?cNM4G70 zUF6cqDflfx)Ggi=gxKycyk9k)#&~9k;4X5iA6_8PKT13P;zh%%P5TINBk8_0@61$P zpW8=BQIHV>sQ$S65fJ1req5tkxG<4~F;sVW8YwBu%Td zSd_^*pX?$K@Z#xropkQ)(pv9-A|ul<+(!rYUdpAbwD)LI&V@3Ry3`k{8TSyNzxs4@ z&eWB+c)4h((t+-o`o+08G$44EPR|a zFWB3b?=uWX5n1+_Nt$(83RYB94A}g?&97m>InhC$(%wkQu`MYqJOjpPITq3mcD7$g zoOubJ<8k(=xLX^t zZ-JTkEzA|}!)Jy@=&!I=n2c;RKgW7uDn9pM&G1}LnQ7eR)?8~)PM(9k0#7toOO^H- z0gRi@L90 z^t;_pyZ$@Y(ZScym|l5*XiV$#epZH36aB<)uNc7YsuUc>Wr6`!)D!~rvU%~f^E{JHGBD*g!JDN+Mj!DBIw_Zm$HCDz}XTAF^D>X`B8H9*+~c()06Za@g%`8*oL zZ49?;+VU$nffPB?E+xyf%-}J#t7}^vq3NKM3vIhyg+XPv0Q1VLw2Z)h z4b6>%k%{C)INJRbpD7Kio9@P1;So3){T1`d>3nX9HN$yLEzSAaG$$YLU?@rHT-@Kt z*dYIbv308aTq+LZ2;jbYM@5px(NN!hLZB$W=r9=Oj`I`GX~3&yM2%~$%Bcmlm#x+n zU(fJ7{ccHq$$^;ImW!87JVo$%DtAT~PuU#Bo%_q0tK>v!1j-bZ75%p_(kdNFUkG)% z-rhkb8R5voZPP}q#OcMDTrVbCaB)uFUY~NKT$iHiPl*tq7tGbc&Qtu;K4aub*l*`r zEc%^{3Xn+pU08V|bIKQ=>~co^@Ero}OgohjLm1y!h`rj-+{B-cv^#2QYBr>u&^{Iz zk(5o?XX)4o?RW=~3M0CUf_wRKD7t=*@9vjU@^@Wx^GBil&`l6dtOE>V`~LIce;x(8 z3)}(@DVhcogV~B&>WNn#eVNlg_oNjoR&4C4jNi`ll+sYHpT1$uy4hF&eXj@pw+A$G zT77fle|osCPWOR8Wq#$5ZINv-l9JJV6t#0%8A*4d2j$uXgX!b#fazgf^ds2}qstbU z1-BB)ws!Ku=s-rvK;i3x@&C%@A6|2N@ZBKQi#|Am{>1oOpI|FTOK$uVH5{T(U5nqL?NW3#+#pcrQ3QHe-xK}|&T3v)TP75Cy6N?0qf%E9yg&0G%aF3XN%PU7AdZKy{s#`|h2*QfMV zw)=Jdt}M(8eS-JMA>FUJ{+m(H4W$N&eaCgVtu}}`{MJodxij7zt0Y9!!*k<#zi~P6 zo_TfNym@@h*6X1RrM<$_?V@3fuV{3_Nut^6~Mu@8~zb+JYR zi!(=7uGndy>qbQV^b&#Wn^wGm_TOloK5{fQ^y~2Vd3b0wFL`pSZ7raQRi?YexN4^x z0>)|GPT2XW)1dZKI|Ni+g@Bs~@QA>|!op)ojJ?xUA%)5RQYaO!!~zFHdios0_8Ru* z^=sE%AzCSEuoxmG+%uG7Q^ISIdQiBcm@8dqhITxRq?=Riu2`~UNfePg-(S3NQ3e!s zyQFQzbFdZrnVwSL*tjs&{VAXK~#=8?xmmA;%yA_o21Y zo8%FSxthZKf)B8UKHOwg@x__J6OKF~s;*keu z-YDrrtQB*DKWF4*-C^}U?jq_pf8yTehL?x%K7M5J2aA8e45JFa3%)5J(;o(#0(O+4 zw3j}?{HX)??|dkSUd6T_ua6lsrgrY!PN(~XwfI~i+TK21XJjIjgs0n`kE8u}xskN5 z_enx#e0~y!sdb3ze$?k;q&53xp-^Q+XR>5S=(8{IykULF-oc`Mb5+Z#+P*3k z7Z>lv)4w96DWAt-FIE!jtBwrUxuf3BtrV`d!VfTd5py`t4W-ck6vFAJ1WrG7R^$*- z2Yv1zLn#E_nSR$ZLn)q_Lfm^LBCxkh1KSb3m<$cf7uAt00E_~a=s&KZrD2{EI6!$ln&|8!CuloO6Zd~T_M@FKaPYvVmo8n} zYPCIJa3s;mkD!{q7&J@;rGN)+Bt64zBPmZK8Dr6k&*hrr=Hz4+p?`13awav?aReZnI((17%$YNbFt!LWl5#K*)*GS>002M$NklB;o$p#8xegTCi0aI%A<^= z-M~dU)JwaalI>><#+I3g)UJSX@=Ci#QZ5`8>g%EC`F-wyenm(HdMn29ZL$g7l^*9Xv&?x;S zwir3x4I?S%AJ26M#)#hm(38;q*P>;zOHZ~wvMZ16`joV2g#H)?$_lLVCD`|YvYr@8`{qoQ=!(GC!LO6*&#raS|K3|Mgrq8PkdcEnY%KCG^~+u*wXw5@6b=7D{tva z&a=OnhiP05e?^ma_EBg0-A!kB*I(Z6E6Zg^VBGvkq}iZ+Bmr z;pm(*k+*%i&h*#YBKn55su3&kdAw~}#V^`!9(e@2YkW=;?5HAw5um?Yz9x5S&2_nh zhlHT4xE2;9=@vFtMTTOdHs{6*|7EqlswWQu$j>HHaccxJGoO`5I>m`Xz#IbH8*=F0 z!w#!&YI@0B%@iz6spu#j%A(Q3oJOh`k-?a?{zP~?lvbtFeSyVm`=B9voTX(1j>3Zd z6XAHK3Bl6R(tCh%p$OU&HB?( zC)aE}_sY{*nc129!@+o#2m@(%z8h9Ie1Li4shSqJ5Z5e6rFW+*`ZuQBldRC>?@>(F zU$9bFbRA@aMCxPCju(f->y=*Mu-fmvkTh|LN|C`3_i$2ace!B7P?~i2>SL2GYN8-! z?Pd5}1n<7PSxkQ~ymjN&)@dU?M%3v)!qY1zcT697AbWZe>?7)M0|9#VqOG}8s{fd~ zUq%r;P_M+q*7cNcqUFSZ@JHy34bgNJJ@*mN4I)edfkoMZRjXF5b6*P8qC!9%0-_Zg z;y81cQg*-We`2g}7ul-L=y;Lz6465X(b{Ra&^ zhG0ZPTLc zhqh@5B7phOn#=$_)~@l_E;~GGJeV0go{uATX$h=PqlR{wKzhC-h5I84$M~Oe=NIm1 z=A-~Hn7^IfKj%Q)18*m4hjtoChoA0ty4^&)sB;Pdn+VvNAJ}ZWx9Z3UqWv5Zq?hrC z|K19UxQ58|IT>2!;fTImDT1D88d!H9%eQ{8LRZtM6oyjRPllBglq8+)(~7K#>LA-z zIo2z#x0{F;v*$4HJ#EyeQKB<=^~nZzu*5yLcb^4aC=kdDC_|}moEaG>oMr-oxPgOs z_zpqT=~V{uIL8cqY50pzx3*Q4&u^=$xC4==lft)+EJ{#Sof3!uy8S= zlTx_`1@^5lJf7>9v8(DSr5%R8e`60!sM||hy}7Uc#2TVM@2=&0KC(sNV$l4z}J`u99`SgwA`{l0xKfD z@|Hn+?r}24llcP4+9JiM@dIwCw?)Lil{W-5G7(YyqBF7dhzOsfXXIoe+K%oLQP1y* zp?fJKX^+6E3%)^sr`^Rmlt+}xbx^t~paqX_Y-#+fn~be$UbQTknK2g6IG^*#b_8PK z$az+nLN>Yuc*kzFQde{x#`KAzY4$}=k4B|juk^)t=XIpt-L`qN`_HK1VVdMFz`&mK zDduBMT~77-XSz<1dIhD2i>??-6SWPGiCiqCj$y>O29c*v8y$LmYgPIB)@kK0ho_fM zX`fMX3cIs>Xrj96oIM11Bxdf^70>2Y)f}b;wBteT4SN*bt&JDi-Sq0$9QT}ZSE}@F z4V(WA7bQKs`m06JQgjpo3IPcapxVnqxnQJ3D7|jPc$z*qhLv?YZR;nL__x)y)O~J? zh^j0P0ukIH4j)BDMI)mm$`#lJ4mQP&q!+=P{TT<_@FnR^hY2QO8Y@a)z`lk*@+xZq z-zyIh5WkYGQ_)|x((iISk+J6qIpp&8zQej+7Q^DZ$S~7vr%&2j+qnT9igIrcta~F! zb$b4)mQ}Uhax~8W8 z+M#2mE{|j@8Bqe`1bvFv=SI>&Lk6ozQY&DpI?^G4w7aK)DbL>l-GGT9f99n6=K2NQ z&b#uHJIU-z^3Rto{W=#O1GOcCA0NlCm7o;HU&z39^X?u7m1Elmi&7glv%*+umZwR! zQcrXpymOO|Cgp7_LunE{!2W#j9w;VMnU_SfeH39sksj=H!(h{N-FU5SJ6n&a(^dF9 z**2~GS8dZPj%4?9&mMJ%LLld+>Ua88tvop+gB*f|&Kx{!x+vNX(b<}l)&Cz3(N<)= zK!DMKqMBufCdXo3lt7A(LLki%2(ZALA|YVZ(das`YWzqfzesV^63ouLRVYnGETs`B zEhs&JMUDBGPw(rXpz%o3xem7BThcI89}bO8zElEG^7(*41HSLI(!VnTg3<@1!iF711AzT_&0@EA(Ke`vvw9UTCGR({=b> z#3V@1!?@yTs@G)YK<2W^$(BvFT&LqpvW2}UN9j+H3fHqV$n)mSi%tH~4li&j?gIiI}D~_2b;4@8aM1e=yglBSSFw}x_3@PbFb!_oLyO2*unuX{qZFBSngqQ<_JiOzC6-R`$-@A?lIIb1)}ZIW2|sM zgY;F@^E_Y(Hjjbz_4Q+|$Y7;Tg!wy~bf?U@i2imh{qB+vmK=(H;z5Vr9+a%+^Di?@ zC_`xyXfYBSmqan?iom!VfS3G1`1}Zwrw_)W#%JOAtG6KP^gsCg36ZDY4bP}3mX2|s zFoX!x`kbjN|1T$_e<7jTEl~Pyl7)3FemZh8f_KZpkK#iN0+i7KVklvDqiM>ERTP+t zjzT~J1fY1vYoC28k`<%FC=y98POE)e+a;JdXT^Wp{f6xIFep4?myW8R9te~al#DfE z#ygO9PX{GdM$%-!W$f@|in&z=sl0B*o}>+KwbxfWovD9=^k*ms)+9L?8DrOrAHw`o z3Tc?N^mDd(k4cku_qiQ=oLiSjXHx9hwLM!Szp*Zbdo_P}`Q;DDkcyGd!P>TNo#>wA z-nGQ{COd5WVZOLOyhBN~tPrq<0FSgoO=-4);|_1x{jz^+O&Vuv@k|HM&q}sVH7w1) zF-6{tF?F6ZNSUN+7;e79q>Gw1iB`P0YjPMYX3McM&amxoMqlE3GBb3Pp)?7!pn3GA zp)`?bxI6fMr$^!QYfO;m7`jo1h|>+&^Yj&bSGCV5KaJgb$go6p)w#q7(Ca^0-*0O5 zjk!ZJLR6!_fk$gg;*##2MF8|{dc&7ryVs&>$rS`B5oTBj7=iThB6g*7R3i!j?-9WJ zXQ@ao3}QHv5);w!=ZNGJ>6K=9wU?ksITS7D5hyGy9Ivz3TW}&A>|krkNSY+LSc@E% zWKqY9afge{?96){Z^&c=onFuyebi(%CyVF8i~m474P=w-$5G$&=nAay4=c+nbL2hO zJ3iEtNY?H=X_U?Ge$MP~M#;%$>j*DT>CM&6&0h(p>i|I>QAh*y=OArLY3Bed#4xl| zoS-WkO%@H<$n%yy~UrNdBfH3r@ z%eUuFsktj>pMfPB)h5GR^h*bt>60WB2y}6w^A>rSbd|C6l6~ z5J-0f;3U&55(AAf;SLogB_)HPoEDd+k7siTkS9gTt!Skt0>uTz$FP|328?sU(%2_J zN*PHLfRgA`X?|%L&Py{FfwS@NWli6m&9bk@CNR=$^+645kqGhopr)l}HTEs?bnmd8 zywDhpxN5Wvg+im@uv`?!!n1EmzZ!G+;kNpqqM~8|B1^`5Cc}<~o3W?xpFQTmRP#K# z2>1UprYbp7n4RhfS&4`uifa+leZMRbONteRK#Cz?Z$2Or4DRrjk)3g`NSdN(Arf;9 zwr=~QD0;T(P&V3Xb`UM7nKnGx<~K2cBVfbKPJBt+S*Ek^h@<8?C7yowG^e@19=KVA zdcQ3L|K1kIo*x^ND942#cpQS=lYc@V(; zEG*)tFt2c;Zp2=Lbi$4QT@X`7(k@{1^=FhsEqk-~MccylW~9WNYoVSiRXPoej6UT` zV@Wh(5bKc$aq>`T{xkl!m*4PscUJ+%h^vO#p0LHc^KrXTb{%bP6S1Di=&21i&O?q_ z*i$&-Mq5JL2#^Pa(z8H}8|;gViz_TtO;`obw6J$}!UimyWE$mBT}{3FXSjH5)-Oh}6v z?#>evG9mP&zQB%zQzq?hU!wMQ9nl{FM4gVp z=L%x5`=e3vNqE8Pt%x}NFFtp*O)vjm`-}rhd!vzV*Z5)qDS2PWox1V}O{2%abM#d_ zsE#in5CMIAx?!D0@(MGQQjMt;+i7&;C{fb`0T`Bqrk=wKOSqvFJ#o6o-UyK3gCglE zTB(OXQGU@Wu(`eh$(*>K&`!2X!)AS!p-Hmetw}*9PoDe^ zjJ!=Is|hd8BD%1sQYftBo!h z32W3eMlIc^%23)D-Ud~M(jG9vfRTd<@saraiW%%lUGJzx#OX$SUc+Zv`?L|Kvs(_> ztB2}obvkEC&42n;)tnv(21jAi{un+`sEI#7_nm%IYCaTCSy7Y(flb2rFi2{r6c+}R zBBT)T4+1Q}wu7`4Tw#t!ylxReE zC(5%pzjzdsizAW($iYHbFMcZG-HH9iJvEeKKCz&-xp|d?P&r0=r(?!!#~MhIFrH;8 zl$lAgYp$3^|7EU%Dyg9FZBCwS+nj9I zWZS>n^M2p{g4;glbN1SM?X|Y()iv86p)CE0SiQqzo4xL$ce6WWO}9XVts6eRywN&E zYR5bL;$}%VwlY-(A+U>FpQ(~9XYxR{f^uZ000&P`lg*n9uBz6^i*!BZU>K%{Q(N>VR`wvKB59 z)E!HggJHCEB5~h~A=uF6Pb?96*SU(|!L+$@aOuHkRSLgKsaWJ5R(c+Y%D+j}VXNF| zd>8bv6mmxT7~--s(){4Cx8J8ZvAiK4by5OnsY%OB?aK}!NvC+C=m~o)8fNRT7}WOD zt!nTmj2YOM%vm$4Zu!k@@WT?42ZYWQwAdw_q-QT!)*##J0s;W*vE)s*AeqVWH#18i zOc}^-ixl8Ze~ii9N^M9IP)733oTW8Ytf|2PV4xVrO^2WbetD{iW3pbpZgD5x@o+jbTo_m8I(*Kr!Nz_$BjFKNcd= zl(d7%hswLVxOix`z8FYr-GOnEY_qndlAHigph5aYyeOCh*9`|o-mYGtA9(SvxdjlL z6>uHYOkO@hYhEQ~cfyl`xI`lMb(%Y^r8Wm{BI!#oE&y=$lLLY@dwHd5Ze1D_C@j{igtZ-E83bm%2~%>9cO<(gDRQ}jn5 z98-#h?9U7~-%)fpteK;r{fG=&wH*B%sK6~Z$Hq56Mz(-}Z--LoQ_KGO+FI>75zLUU z=Y6#2o%o-xa+7gH+?IhbeEgdybpeB>5C|lW&lbMlv`Hc1i{yNm58j6d?N_)31YAQ) zVmnITo5onEnrmF7&I9$jjf{b9cePeeL}=ycH!wuU-)iB?`r?UN5Yv?Ral0aE`3)-j zX%1D2V(Qj3;AmjdL~%vt;t5p$G?6<#hr_J!P=oFTTXvxc!wX7|MnXY~kk?uM#qM_e zEegqZoc=|LX*nik)%CNhEdR8vB;I0+DL{~IQseJ^^Sm$AC`ko6PvLev%9{5Gy3L5l zT`BmD1sw+Ow6uUhRJosW`Rpi1LO%S&Cp{TIF)IS_yBi)O0=k|l`s`qNV?tlHe1;!R zAxg|kwUz=VkU!5wFv}^>z>cFq>ID&zK#B0Gx^xH^~^-_Fu@0?_o%#$4+-=;*-99SaKWUSJ%bgN=|&)QEenv0 zzCj}TOtXCwsQLN-!FOyPBw+9US+6Qb2wBHs!j#k(a%}CvPKuF8;*D!PSMPc*^|KpJ z0-^SYiX6QKgEun&d}_mT>xL(H+K#3ELvVcZsasBR{yeOGd5lO892gj0@dVqFil!!9 zEdTY=yO$pXhLhmojNOac_8*dQ8>msf`3>9FuDpm4M^77BW;;~yIa?D0Dp!hk2G*FZ zO6F9>9sz(ZaB#`EQPY&_9D*C`yhD+C?z=Cwucf3+RU$OAEt#BeZ6*DUv-U!mgjlw~ zH`0^KK2`|@gJyL&DRR6chg&0Vm2$%IY=F0tUjplP(QU5DzA?@-YNr9inZ=2eDL4); zZg&u}cOn(`^)I}6nI>J@h#Vj&{=zsOB1CAg@Iz@T>vPVxhsRL=PD^phqJ#{EcNF7o zA3;Zs3LmRk5+Yi{$&{-M74DB`i)6LM!}f9DWj;=|v^&{N!otaRBH$vtjXZyjMgMdY z#Ml1ugJYt$3C=Okkkg5MRc`wUl9)VmUR8~u#KJ!Tt}N1S#k**Q8haB> zGm!=5kR<2vj$+8CGNIG;wbRMXA%hAb%j>{CkIkj2p0ZL6BSz5_c5-{b(%cs0b6tt7 z4-er4f(HZC3n0K##iE*6DRuFCQE3=8@F{91Qqt5+hdJNxYR|emf`V7lpFD7rAe(^s z;Re1`H3=~KDG>8G{JkCJ?jI&#Q6hb(6L?gMcU&R+oK zA!*qjDTIZUpQMsN^7ELdJWoW3I1h;_5`_HsB2rujN;67aqqd*rF_>EFl-?EdL|e!P2gruO5>AmrFg4MW9&Ru@#0jaXaA zu{loPX{KOLO+b16Oq*5f)OFdGLcc~eyKJ&4DZm0sgc8oB1QD0f^S4s;D&5Z|74Avrs;ol7LYVH`5=WW0vfRJ zb5yxQzcUBQ7&@^5B^B`^t&o)SQQVII;5Y_75rZ=`GM<`H81L;@2ItONzMkw|T$97d z63ZBp#VB}Zd1s?6`t+T~eAQ6mie5aho0Je#>&oGEh+MZLn5|<8kAbN8Nq#*Q%&%{X z8G677FtHbReDDWIL)&4JCPk{2lHDo}S>Ny7q#S&T{y<`O{LXvDN<&xB(9qz-WeqF2 zW;iUPTe#becmJaEs+GT?g3sn6p{%UzqPRq#g}I1`vAU@l+%@sLsd6cG;M+h9NX!EJ z{0ERDIECNgXWGvSE1ko=a_^$Yd4*LjnY2+mm<|C}z(5NC2fX&j8vo52v#N#lpQ%mz zKNj97C~0X6Ax2v79&^91)z9KlmN#HR&o|Cj2G#AM&e#~U*gpXWz4aOB=;X44>n!5X zfW8tUJ&<6kX-3H`53TSLstahsAf5@E0q@4e?nDa0uMZDv{1%+f8HHkD{*w$upg3`T zM-~zYXUDA&w>^z!CtPYAZTvJ9gzRHMV!W$K>@C^0g2NQiy5*@!NkKJ`$p*ZH4^$-Q zV$|DXF37Xzgh|%ORFP}zlvdNXjb1@wH>k}2h8;&p7f&R+(5GQR1&RGq!)qS9@mt^1 zu!F`Uxnt>W71!Rw(t|76N?cw9^)Q8P#S4Jlp0(eH0k%X6Ysq#pf>sumX|d1mP*n|& zHl**GQ83co?Z#c>GTr3ollp0dt6hX@VwQ;B!*JLbZ2U|m3g3l67$3dhN)NFi+b0c% zcz5JK`+Z6d^tW06ID0&QHg4)L7qddt$1M(^?m*6-Wm;{be3f4KpmZRIT)m_P-(rm0 zYUz?N6G+62Y!Is$lWDUa{<9AZmn z|7>eG1*xCEcIv{ZdX5l@GK|{9`yYdP`%l#(o|SG!&Z)w68aIn|Vp%879)Ba}F%FEnKg+|@ki9dAAO}x@a2-lLD1_m5b__ElH1SVuKFNBcCxlX2rcZwNj z%xO!qA%d!k3e`2IH1JMGg2`o~#Dy#>0`0|)iCZZK+5p4ex=k7W8D|5gdi-#tLzv_F z-#A5z1HPV*@`^$@EQXK`&nC=;X4HmVmxZU$;(bzKdh|guF6ngJ=3Rb-=K)9bW55-A zBaZrDUG1im0-4Fd`|{$09U^cihj;9(RVJm@?r!LTon6v5ov8D1%tX1imaWDG{i2{A z8EAbX;BvG2d@8{^qzBXXRqBxZkq#~y5=``e!FqQ*{M{E67Nj?KTA<;J1!E_5^HeT3XU@rTJYKgO{!$ zKZ`H-BZSrOsrWY>n$WFvVQ_KM<(+ny*PDK7^S?(sPz2%(t+aeh=Zukg5=4}AMwec= z?{gRRsGaRtict@3eiLA$MU&JDEmILn_`LPz3q7LeyuinW=Sw4t_5N9H%9PkcM`k9Qa=6 zFL3C9UG(z>^dI-0JhW}Ih3`bCB53@f4GId%%+F9LWy`#cPS7){Goy_M`OF~~3CyY2(9!N+SJb3G_9J zUsh}p8IFf^K^kli$@YJJgA=>*@>jKE?9o2U<|DoA{9?Kgn*K=90uvW?ke?YA1j)v$ zWgJH#5}!;G8B%F^`7E$MKp5h16e^A8S`BU5O*_Tt)7DkwQ|1}{(oR01U8q!L=(DFU z`aQ8d3?L#HVCzH|?MVM+N*vAHsgS?~J|65cO$v@#)1cRr&db ztp9kGL!I46ugJ&(LxvhKopv`;sC1MjPD4{Ml71PVAC5xjl)^RrxTXWzND}7wV8*6o zh5(+3P80ujnTk?3{a%S3jPl-Pal4zWV|z#lYvRvtiA3r_#!)?2Jb|vFmO~4?>3Yfv zgznb9cBfshbw-UU(I>fa;viA-U377L=5o0#3sX=F6%m311B$}s^PHNoth`lv$!vWK z3qSY^%D3JkDmL-P7}H`)7ip-frVkj0fbf9VvgSNfSWN^7x_Zbsp|G#_dEp9RqNye) zCzFl!F`x4ksAF~sdJ`$+Vfk+U_Al!zvXD~${RfMXJwUJJRr6i)K}vM+j531NjpNh|1n%_=EN16Uzkt)XIk8clo;*5))@86Ve9`K(@(9v9Ts z)>hlkH@(}h48srOi?vF|#2-ut-s2ivFi7N&kFCmRG6f~85f(z3fVGVX>-F=famt#Q zQH*$(#;Vo}(TcUjmWdDBNo+C>hvr1-9Oz(?z*>$P9l=pE7g`L(cHHi5@fY2`($2ef zo`8`K0V-X<#yTC@TuB6#{NMC23bofniXQQ783KQN9pjI6`)AHu&cyN%A4>Q^p4Kj_07xH~zsKlJBfRw(jp< z*BpA(&>mvwmf^Cb&8E_JpOuuN08;`i48tUZo?f?L10jpLvd0Z^C?PJ>Zm+uDR$)J` zd2~wPb+;p*yiMP-Ft;F2*_Jnqi)_RONv@<_IiG&Zu5NHm>lJPV3%G+U+$Z+-e|Hd= z@Lt;@T-5PwPaWd7h=1I$q!vBCNV{SM&P`!qIxj+kVR^CS&trW@;cLA8#2yjF%KXuV z9$!MZvu=c9K$tL*HQ2huU{gC2Rh}UMO{ZB`Sjkj0r9h6 z5M+y&&0T6*LJAy14Nr;{rT5m4joOL6fW&~W=%=BEZshX^U{0#a3gzmE z(Z#Q_IpltE+@2j=l(hs}AAnCPteBO_HJ$dWfeADK&{|AWhhe zsJ+ken%}I@Y|-;yq0)%4oYgG>>`%O&J$zhWXk4{QW`8X=Y}m{3jFgN8rKZl{=RN5Z zY*dwa$v`cRq`to%2q#bjHAd-UL;RtLzK!{e@v~F2bD(u1Mr1f#rqdUvUnOOnx_aiaAMLf#3kaA3YP$ULM!S{>;1feK32Y z)#Z_T8vdKV6ENAZ+Z*Bz=WuWv>q?CKae#aZF_uU%CaJ$yQSsd&fLL7F;hjg}r>0zw zVG_Y|tuaz2Bt}$%O+klYpAy4a;6VP*b>HmQYyid+(@%rN&^z^9nnC-qE!ahHYoLx< z#?YrXyGByaI6C09k*Vq?OjRtc_6^@k;BEZ#@(nbSW}-mK6uO^=ICAr|hiZa$8CrBf zYhE*2UPWD)wHbDLq#R^ar*Zg-|D>gN*_&E5(nl;0Iuw~Trth5<*7%Z&DpRttImGp> zq-M|T%`B#QZm3&y0>9bfaO>L0CuvJGNBlywc2tyGb&i1~Px5~F+6e31DA6Tj%#_(h z5ZcXVy_PhP*11fA)j%U<=c@LXJOU|W%4Ce&=H3P$?xlrdF8Kti!oODst!aavsmB+J z&^~*Fe#tG6&usxU8G&o{?=+Ic0s*)Bw!7*PdwkfmY=6qr;b#a1qWEo3&J>h?GP z4dvUA&F-xKUHeE#f||DWnql$a3ZkGF)ldNc#5}St#%ah9(EO>W;0V^8NQ{~E8$JOG zfG`a~a^qK8~sMa_JY`}gn_KHAv(b1nq!Ltk}L7&r?O4BeyJ&t(~i z-2r@Y zidb- zkI)47=U_y_9Ltt&ts?haLtaEXPCon|xsjWD_DKi!?rUSPnzZd#h7yU+ZSkP0XD^3% zcoaYpiwk6oqrmL!4%?Y1zeiFWcyEvFQf#)CU3Jdczi^xEgY-fcEnL6f_sZxAgCcd5uUGUH%m%xD`8ew{-PrX-V9H!a@!1W)%*srY~(t zwGa0QxQWVSs8ylI=m;vC5Ob1$U$tftRXZE%mBw3|bV)S0OC9hk7KzH`BV3B2iTRn> zZq>azS=>H-{4H_i;V3%_6;N_~tBXq#$dZ-oR||m{Zl|Tk+5R1H#kLCh+Z8Cf=>DOv zKV45$N(u_5WMzuw^$Amr7~SAG8F28Bj@My41@sDA#1F;SmPMNwbo14G{Av4PCYKxZ zAcrf%T$2R>^;5D&`iBn}m}-B!k3-!-B7LX;@`He4lf2p#I=E_g8(6)S7;zj9bdNCq zH%Aa`gwLr1GUlWc51}+&XiZ~11D@M?B^j&(Y+O5LcgLIOoHfb5hIR*v4(V=LZUkWX zm8R_b8%m(=x$vJ2xx7U$7whH8n0u@w=2vn2U~Kjg#qpU) zGj}L*#WKRX0N+AG);`Qm%P_;S@Qx1C=g&Gv$C&;nQn~}bT;TwR3ZyBzR1s|6#K9<@ z!b=;tgW!)C{{5J%dYy>J9Av6KP{yHd>$N%?_=mJ7OboljzObq~!8^EgPxUmZL7My9 zfMxy(HQ7#Lzx9hd&!>)gZDQFaEZhpoyKas0Op0Waa4K>+$e)#s3Y=`;9%~+<{$=$g z{oDXfoiMe(ayR>mLV2B(D*u)%iR;gH?po`(*d%a-6*N^^!?)hbRbH9(+6tBd3HJK~ zO(Zc=``C>w3>NPPp5to9bpc3GrgkgINDBinXqve^&_3O)ioZjb2G_L{ZJg$QnRPJb z@|P`%DCo?Ouy)2D9J@Mf*tiA(wU?dO3->sPNo6Hn-uP?KxY3-(f^mB!eiuy%%Ch|IFWXC1Z#9i#ugs2J)tO(NPu^ffaa_BK# zcS5H*_?JX)|L&4AUa76{5OC}c!5Rg80R=;5?mB^R2wgx0`MzG=qaa=jKsvbbA=S-? zYw4`s$MwRxKS7wKh4P}0!{^(F_9smdX2Wjs^N0pUj-&@THOXFSn}It5_lD<;FSRmA zfgUPip0Q7B6LHHgV~T_!BS4L&`lBX~=UxkDVYEpFxhTuc+wt8i>QVm374i=#1%XUX zTaM(xVb?ELP&9GD!Op&LFA-U? zCGHZ3=s`>Rf@6gtr0MYpj?U%6*EhF*Lq-Lz44P=n!)pKcL!5(<=5(e?#=7IS(% zJAaL#lI-4TdBu!pYq650rE3EBn~$@}d`v}SU+FM4Dpwg`pmP(F#3j$@izmI*Y^@u) z4@RKl-b!uGTvfQwS8{kSAsCZ06|42uEP@0czb|)Wmo)tdoksF2+1_M|6OeFff=g_Z z?dd}M&XL=DgwYO0`B&~pY?&TJl@~yi2L*O#WJ`9iPQ-6ZTBMbXnsp4>9*ZlNm3Qu% zfmMBg^`{IEmWK8{oI3|?jJ?7b|5SElr1K~{B7*JPtLp^Xg~cgXzcUcmL(VYXo}Qd! zv9Nsi%5^o?c~=GU4PWuiB_ax)(SkqRX3&{sM&UI&d2ZC9&ht` z#th@hPG)sJ_`J{5Vx=&@^#4{0Gz|&(XXW;tFN9^`Dks_K`jmvNyo?OFhksV6`qRWa zVNk7>P29k6yw4se+$zFysv1f|kygQaLBoxxu*QvjUmGbwEFxGL?4RvjXwuPa( zGsbR8)fkY`!*f?oJ_97?Fo|_9^?&`bVgQc5k7VK5Ai8zrmRjCHVh!aCAJY2E(*Qms zgv1kH+COy;y2^@<8OekYLwfH7t2oZOhuE;ztNePMOo2R-T?_Hoelw_H@@H~VjP7m= zX1MjoylKed(0OX&q8e52q_VKtq!!Y3^nx$jzx6lOM>AfPdyBhauIb-P0|b!mbuD>M zShZsBity7lO4H7#VOU*iRm$bEz3qv}MIHLc=$e5XI`X_J+de0cK!=2R@IzN#c8|Lw z9jsVg^_KHKX!4zk^$NYm&efuhV?s9RgLKQj@__%Ms09542}%>(MTP|@!%SE=Ym>$( z)!Pm^UX1?XS+24KXhz|PV)Sgg7;-n@h1A@GykA&cl+T>9=Xa(9e&!q;i;si2-9V{f zYJ&J^61rN*=`xTuDeO8j^qu{%Ps3VL=ccUgcW@FG6%D+iX8_WMqk8pHnR?ot^smJk z&A*E0*J1aLTc7q1%uLRsGq?G$_-y+h*Pb>_;ycR!nS)a)hX4d0bD=u+$lpwj9rtRn zSgS;qvm+!fiV&X){ji6!nFi>4K8k`n(bQ7;gz}iWulTYD1p0!`ln^u2<+a2>5|89m z(K)un#Hb(AR6|9GEWr)P;Jttw3fL4tJqJ2MTkrd?x4^o~437}e(9vNW(U3+m%?rs^ zap#*?pqcdJ16-*J@Dy>OM31efZ5Qou6d35&fWqV!VKoiNV7m;?Ybe{O!}33Wn$t^- zs;G=#@KpdrQ+_oW|wgrrAzRHdx_XMCbh6cXI;%>R?1#Qlf zvCfYST^{EUA6NM-0iN1tbJVUS;UV3}^)=;u*bhoETc7#Rd0!xLx7VpIP$ih7({M#g zEK?xVsdH)X72M0XTcs^m;<)H)@rhO-(jl>-B%(tmW&nEIv>dJ|JYU%yXrlvb5OOpN z1$oZhf(1Eus^lcfI5_u#0_PxU@Hwk!n8qu3-WvzvS6)s7EG)MbhN8^X(8|E^jS_-Q z$5UYBlOqQMl&aMecT0CaMEr2287(br(}3kR&;=UbopaY4@Z~eowW?ThIx80ZQ)=jJ zF0j@QZI7rpRb=>4Y-1)C-V63t!!Ft}Dknav|C{VoUWSx{@*$o=`}hi6mki?$M=KwmB?N#9QZAGq>&omMGtjdpQ2*uAMh~ zW6%2RV{+uWJ=f_G?t9o)Zjvk#a0x2sU`Yl`_+&U`4pp#vg>(}?V~(@;BrH>}VC*lm z<#yBnn@ewRCT66M31~!r0w_~42p)|H(6rl9gj47qsdDo}6JP7>faeS=FQ(Y^3HB7A z3KRCjc32j;MJu!U16mnhT_l_rV3yOl3lG`K&s07|KSui`-+%H?&~s3-t$BQoNDx?0 zYP!XG3vSe2{drqg{^kkNyqAuGq818Gp~#Qk>wb7wU*Snn?8s(vbaS-8(lFH0>q<^A1vP2}lqAeYd$Yykmv#W1*vkn_}+{Bz@4 zW3%qf*DbUo=r)JD+OUex@8o54J702;aBG?xCnoDc3^?_Yc6Wz+xmG<)An-sR<;jnZ z?4XA&Bc4}k@&A&NAZZVNQAh3=@;6-T7j%h*YO4SG)j1_$p$$2r+-mPAK`7#+2KvC zX@)UQV0!G*+Z-sv$vv+~Bov#8dFpC>FZm990)XSiguC^=3f)=$z=>87O(*;Ug--}$ z?Rv2BTkC4qFZjATHE;XMTV8rz+MO-f@cg<5} zZghUGe{86GaCH9OGqF{2&aBp5H9iXm`k%ro<~PgY1~oXpR{DI6#C)-(ZN%FFzg1b{ z%m!GzPVXqj`PdA=fpH}!O%tZtQ?T8{kHYgiZ+JKf2d$WXkz-s_(ZxNaFPgb0d1r{q zTJs5jMa(*yzcwF}lc5{rY(45e7bKoZ)W;7%|CsqHoR@$CQmfii=2;bMW6cFtRo_`%BGBSDQ zEI^w|2P_*$`8|aJHeE9wUz1QUj8RcHfSN7w5vRd8h=Gm%ulwlw)qHb!ILrChd0u%w z?9VAT*~wdDpRphfe5s}H{o=xsc=!fvXgOU!dcFzrcM55?HAh-erKkOf^|74LQ^ z*}R`n3@0lI1W9s@1DW~bo^{6}WA$Da9L2t%S_D2+WVxw=G=c#6aD>7Ha8crLt`ido zKA1=$e|lML8Pih(_a|W#kQY%}iP;utsh!&|sh48XYMv6V+|@-x-0wDmO< ztpm#G8o3Bhf~&Q&(dV4!NI@#5y~bw^XHjom>1Ds!+~uPvQRPbgb7P9vy-x%fdS1Pv zt#ixG@2H>G;D2nZ5snTPiMGv|yYLN#v1Rc67ktI)?OuM7xBSahK=gXJD-?1%s0%Ep zUDklJ-m~|?yXbx2=B5jVs{cf4ns$)zD+>d>GSR?FlPKxy>qi&7-7-}Jl$Du@W^qz2wCxTp+TBSr*O-KsBWYq zwgiq!TaS5$wbwdtyN`&fE~JonqxOcjg=uktM<|DjC)>lh6H1ImW&_&5i5zO%GuYSz ztSrs!shU;JR9o?+UkXU9EVv||W>g1!M2!rJqD`6kPJ64-!+SYHn-2s8XiqJU&|bOi z{WVtN|D6OCI5;WMC_$0E{=>P>l4R?6s#dJI zXRoRAJxgBro4a-m{?;Z%>chqocSgJj)Lkn{fkbEhK9AYj!9td#jI(GbY6Zrl^{sv5 zk#WIC$JUki-;QfbcKH2p1P(I1(Ipya7&kvp>@h&G%KEV-_vzOR$6cD}#dV3}p#8s` zVY#NG@7uA@h7V(>HDwq7^@p{^+8%i-M0Cn<(SQ@WVccv@yI*LXsC; zhB|KZCt}^@hT&liQu_F8uh{XWBqb#clgvo2@8Y6XRJyhE|F*n)jygLFW@l%|UAN+$ zTtzO{7>sf=$S^D!IL8Gg6*@8vdup~JJCLWh*2H3%V0^x;p6s2aBqy7SuaTO! z_SGtAin0zF_(i+?gbIu)snvCw>L#@v#7<=`zx zJqJFvsHMeJ@*Zj>h6bPmd%07A8$7?JV@iEmy5{U*jYllt9{P8e7Mh8`-Gb&EZgp0m zq>zRqi9e>e&#p?YanAk)o5aaRSf6~reP;*;DeK%^%`^tuG&!Fq9Z^0}d6G zke-5!!TD@|bEn6%xoevLwe@xUh0>74-;w(+tz-)6YX7>ZG{&dt%byKi;*FVa!eC8T zg)PG^dekoc^a3RDol&pu>~uIb=1A3EjobR zu~U-ZKV4&~Je=qa9Q_f(rRJR{1_Q+!2<=_FijA3U-5!K$JW=Cw&V}|dEdqro z4y|9zQ5If3H{;9Y$7FI0Mz(wOXYKz(b4mslQXD^?&64nI=%<#|57LFh=oaToWO`^g z_(M!|wCuUR>sK8Xt95fgKXQ4AQ1B4I$=3VA4jYHYe4N#(kD*CokfBbmUklFvFE-`JB*frS7+QhW4_CjJ#{~DEhBJR4@Sf@%IcY( z%MKG_h_xT_ebmckGGxJifzU0$laP+_yVwHuksJa&6UGN`U#94r@P4A$t}_b#xP&VT zBEZCqF>hY$GF{UQXh3nO^Y&enYsa-Cii^LV_-uBiu>XZ-`dNLFv%(9-&AdVjB~64B z4?^sQB*Xx54aTU1psbI+CHO)^vqVD@LFx93hKL4I{6dz92nk3`YmVAJWNnCxfRU}p z*R5eUsP3<P%P1;?PM1vSZ&7HQV+N$5RojI?n@|(BkPq-Td~noX?XBb-MQptCQm^1^5K- zfc=6-L3q+VyH1ADgd$m=>j{-VQ$mFIHnxWcREL-vhX=|*fYtpb>%@Z{2-n{*FNXB@ zWfVv8kq936Zc7)XtyD}&kW0ar&M^Jk@*|u~qSO%rt(`^Uh;95p-vjgae{Hw|+namz zp<{7YtxK$@bB%o-_V^!_a+x`|RW?xwwvoGJiMrq|;$UP#V4$cR2rYQ4d^EatZE_u5`i8HS{qVKG^4zH8N z@df-?dSZT?q{h`}TWP99rIXbQxC(nTh#4@j7`RHArJp=FCCBVsK1*R6BlZ^|%i}-Z zrhhW=G~ey-OL^_#azVc!&Y6k{NqvI|9+|ylq1UJ}V2LW!zarWqz^;$6IhE7FMkg)H zVcG^A?hxO7IUCWI%JBP;f6w=#R-gsrbfnBHG|dhazS-JmAh}I?*)-IyohAu>{Vgmr z+0)~ngN|1=JrIr>eI?Sf!P4-EynYh>SC{74Q&%Bf;K1cv9D83p(a9yqrv3WmbSviY zVpI5pB-pz?_u1IyAX@l#m<$vZGWC66szb^TT&jl-ETtQnT!Mx#r&r=GRASby@I8~$ zjziS$*qh&I^fx4&5?jnbU+lZ|LUsS8(Pk6sKpo{p&;~wO@RMQH7%mF$31(Hj3Z$Yv z*aHRnuVjQnzVbQ-yu$o>h%mGr1kmRL4=ixp3&zft>$QVawj2$g(bdjMjfx*Kr>fKy zgu6v&4scD7FGgny()CFs3-y}C+dwy0OE8aoC#>NQ_0>hAb{8Jo4{|}8 zU(L>Tyojci_N^V-hU;#2o}RBVsRuap3W``v%EGcdtFLQ~iq#9+rx{GJu&AKH0z2I2 z_~)EYWlpk^F zaKh z(sfgg?Y;Vq{P4Kxs2&~6UXMHukL zCBXEM{o>DxBEt7l42X^;NBSeD#45U*KS}kD2_ahB`XkD@hbQZH)Bk?2-hDK@x^mz= z0Q|TBPqJy}DW$>J%xve7!v=t@O1-2%Og)?i{@r4T(D(BkrzO~r4!a)x3H+1gi?gYc zvK#_gTjbn?p2uZ6giYv!?gVxlP4ZM_UW>C zHDzkzsO&$}cgn1||ACX-e2}=vSwL; zd+Lc%O<#@eOY)t9V7F~qVWcz<(e$roBa1LO*Ofe^`wz!X7a15feok>&u7nzcoPX|w zIDG$D+?{?*m8cF|Ns$*VQ@5vX-iA4HhFfdr`Ittz@$I0lxP`IXmk_1lsTelsvB}6R zYD{{f>xdw9Q8CjnF}y;$1)F#U`g$IlS{&#d0gmT0)Mc#piT#t}?|2YzvD6y$B+=gG z&fhOSB*R;cdY)5W1ENzb20+&QY7TMaEwK*na3))p)Day=9(9>!Apo(fktlk>=Utdw z{GyV&G0l@>ce*}y+Tx3oK8Izu-(JO#o{JAGZI)|@l^!hH>=VD@SRmO$`E59qCQ82-x|7{;jbM*Y*7xwcOqZAzI~b6^~<`E!WJ~R#~a?Q z>}TnjLVQD)j|cm}5CGy1pg|CPKlNfw&*eHJ`HHWz?ku6PWXDeL_~}Nv$%fEe+JRUi zdMD>R9Mg{xg09I3uJiP}r5RuZe6V= z3(xfLL?>U#>Q`VnGBeoLaq)DN9&PU=G#_Ih)GiHt8~wofC=6i6fub=AI$*7qKeh+f zPPbXR@0BY4kLIFL2h}XGs;UYBwfJCTrO@G32WtV*N&8>gjSfP4=Gb)1us32iE_Ao5 z|22K`f$XwwHaUEe<#wwk7x=#Wv>jcm#bjVnYDH&7h3)z1fpfH7JhLXX%{6g{jxV8a zY(Yb&JR|d+bt+~@%ajv;86ixNKgeRE=#khpRI~H>+TtTZv#Ese=ImHe5ffW`t3pu1 zn1l)FXaC=HfWAbkZn#G?7qLkYHDjtRdibvp%Dm{pTv;cID*TU{PtQG;55bnHCeJuW zIk?i(`?gSm5e@~D?M**XF(f|h(OWRdnKHg)gG`&q>o`t@?Q)Z`k)mxxGUnv&=}>OfV**M0$X?Zmw?1Og7`}KX~_3 zwNpFS{4gCAdU_F^rk(_&HnAK5&CZSd+1e+4Ql?f%8^UdX3YSP0JqAR!whCKxwv%6l zZ~9o$)yy!Wj^>W2aQ9V`lz&YJsW7 z7r{0lFiXvc9r}>vK4a0HFw!%2vS&73{A*21!m!vtOc{h({JkWflk^{wF(ma12jE`Q z-H=LN>ge0vG>jq^OoDUtGGuovu5E@4!xOz#DXu?ENJK0l zYI=;IdJepiSQkk54gGN;W5QkF(#t z4U%yO3-$XEDZ~;bJT!kjy&M>@op#F1y*q51q97egP{a)~NdKhEO@_-XEr+JdvfCSm z_jj7zII?`e(e^kbb=;xed>UaxwpRNfHX@6p?1H_vLY!QDD>T1)=KBUwv#r7bp2{Nq zO+gs138b~jnkG{jMySm!#2q}_{;7fsBv$)%3`Ux|DNZN|#{&P)#fockolW~-S{m9H z%7^ymizoZ^s7A#xa^vj2y|23?1V(_OWG3g4DD7MtTI8gA_f}qxjb)f~+_sGeE`xq+ zvx}OtyAtusvo1&)LHto5{NS9YptgX-CXC(nY*@UnW_-OJxLc?&l0*_+T=clq&5g+l ze8248`-;!I_-uD5w}0<0ktydwyKSj3oT;J%*LQ1x=Sgi37gKr`Jp%o*0Ri z`X#=nf@}%4V!)?rG$M}Z?nH+*so?f5;o&Xj}xW5y!^8I3|sY`p!TXE2hI3yEp}fDVGl4WOk!<6M@GJ=PGs}CmPg*e>Z$7LW^sm#FrstSn zBr~!~YXE&J>RI0ff7+1D1c08)R~=M4qtd>AowEo5>f22oxoZ!QVji>T;JM)qt+pZON{_xyCw?`h6;A zXlMxDXIA8Hs6AdEt%Il&zCE+N0Xk@F0hL6SR_0O>eI?coN9H|mf)6&vuVcIDGev*? zY3ZhI==+r`TvSP-^_rHS@X4G5@h6<`AEtI=PXUPGxjn&~@Ap+zMQO1Da8TqK zwM{Y4b2Vtnyn)qSjON_b2xjFDxvd+dTxNuyOy9wbU;Rc4oX25PXNd5}Pa)N{M zYdYbin7J4IFN|BlM{QS^z|~Jl8tj&QRhYwm2-QY9*e~E26ag~C`+hHh=N}U@w0n1- zUPsppt#z?lsiWs(k-AUU43>5k(rBX}9)wvq3`CvmHp6?(hV6Oq(`iI6r7F#KJp!^^@zm!Eqj|btq1844JpLi>rF0c23ObO`6VhCeCmKBo6 z2Iy2fT1ntR2AXWuzjBaI+rCUDnRW6yaXvkfaY&tDsqxpbKER z+^%gnh1ubj@wyv+l|`bucF-l?3Nsd&lWGqYA%81OES7Ia^msi%j)$jgo=)!TTCquQ z9TDB4wHKxKxDK5v&oGTJS75+O5BW;;eX>F;mBm!KsbNY$Uc zqIJv8(bQ{pF|;gWpQ$@1Ei%oH#a+!c#jtudR-Sh9!z;1#59 z2k?#=9&PAy4XyXdjkOx*B<;Y+L>#JD>uu!j97A~HtQw||LL{ZwFXVOVS_}5>-vFB5 zpnKv%Y!g;;S*HYEajNx{n6bCt7g+y%Uo?gdNx}R-_TDO}(k0j$Y~0v3EdySy@$CE7!`D{jGytG~7+6 zJLHIK>emp)ygE=zVIB^XpTVTq11;L@`>v(*z6s8defo89wW+G9gnybc0p9Sho;g&& zLnl5v;7)dapZnka`2tm;={cnx^(OY+Iz6J2r`xL!O3RD8}gc>z3205etWvy-)h z1msD`6S^PJOwbtaj~g0_6A$DZ=2UX*4895eNZ@-<2pdIMm70pK4*eJ=DHU(_nj5R> zb?#T2BC8rkgU^VDmHb~Wl{+`1f35+YPl0@bWDeXoOlxpBFk|0#G~#EbrfrfkY~v=q zra_8PTd(h{uGbp^Sh+_?k)IO*_oc^;-8%`0AB_35Bu>3xn0A8h9z5yUw5635r6)13 zeVS6b0RRLVdp`=N1-Di={x2JTy#(LIE(o@DPH*RW=Wl$ElM9W%#eCwyB;2M8c*@^{ zr%wk%ZVYF(XE5bc*_{@(f)<0G628F13e7_|G&g^^sSG0#1>_QOR(2K*9>FxYo7HT~ zdA7x9e4CUG*MHs#7yBzHGIpSt1a~8x1GEYGqS_OVl32AXc;^DBTrmNgdEIhvq%8w%?=KZC$vf{;G=cKL0(R$76R zZ3AVF*1oe0qDYmjy-c#wwQ93*h)#6F9$UgVpbw7Gx;OV=_u`mJ{&!W?<~YAcqA_{^ zNvBH56A?CiwnSlUdB+U;X0%s%z+Oy8EJ1^;7L5^n5q66wXJ6g|_@r^+>ntJ@rDPWO zoJ046D2~$!VhFH+Hn6nT$1W#S&W-Y1a`z4QG;x55%t%~SI_tU2cqi7mDu6hd1NI2wJ^~7j-LuKP1 z+hE`GpH&@LP9Sioj=oZWpd#n*;oZqyk6?fq3xkqv6M!5`J}frW(Rn7CDyohtRbAyv z95Voly%H_uX0JNjQih&vdfgQQPan~qqzo)kM{ zJ;>I*ig{V@(g%xgUFb^$JxWW(tZ1yh_Xk(_OwLZTnCi0)f?rf}7B|6N;RT7u7%6?r zP&7&Cd$2d}Pa=94QQq(Bg4#3QD68zQzgigwRNTjt<($0A!jfTAJ-- zL|LiH;Ok#!HdlOkvmqW@h^>%tq$fQzoqfGx-tx8#VktpM0>TSDz^oa|r*0G`Rfkj> z(dC3aiGK~`)z;U-sXhWEhebQ}B5atXA$N18J zr4>E-$-pzzQuA{?d`3FxAQe$eo0XvbYi9LYb@^YRz^tk&`KgL_fAEK9@vr7xh0YNV zxwVht5{EI`D-)We34fI(ETT4KG4(-N(^Br{364mgc1{({XI zWboI@q8)StAD)YyTw)>@We7H15hYxRX=gA@v=O`?)t? zr(Cc{yQ%2{=gx^Q#u(GGSty9Ur=C*fKf7hWHp9txPy=!Wb@jvT?B)&dx0ja}Bqm`b zvEWN_*=V7Tu5S$8&ln`|^U>bxTcnJURaUVD+-RG*@QZv%9gJbMExd1)Fw;(Ot|D3i zAzMjm_HQz{()`_OsUV+0PON_#IR28UA&rUHQEgUg3cVKQ+EafILa>*EjSi2*XelJ- ztXmR5fJ>2z`Om{Irx9dEGtT{3>qN4XLd~RlM1p;ALJ|-?X!t5(sv`C5oF?b_yW*{_ zdXT8QvP!J zmN(eOZ%P`peN7Ka<$pM~k8}+eT4_)po@f#yDYo11^yR0Im7Ow`0_xc2ODCzNxB-&A za_Le@(OYEtTp-#h*|MSIZOhSIT&HY=+5j3Ahey1v2`BS4IT~iNFHGqU{$nEP%?zp)CwPfB;1*LUQZ$P|i zYaos2Uvm+I7g|}pX?S=h((GKE&8O)3dgK$whN*%vrU4UFwG4+12CU)B-xsPk36n`q z??qL_ zFI*m~Os)uSUGJysB3;}?Z1OU-G`Ur=@JTnDgr*vZ{a)A^YxcZ5sXWqq^=L6N*a$P* zZxc-+e9kR>CS6~nSWi*IF4PP8!wJ|v8(aD2u4OWAaE~9m4lL1>+F$={xePl*N5`Ftva$zanx1`u zM2>N~M3g&KJ-rw!DgOAPYtw8({pAhx*g)8B+CeaLqJR*dl03GBvPZek%N7|jJ*ZL( zCv@4F`gK6q4C>moRJYga-eTcwsFJ%t8)g&qX2&g+I9RMwr`3b2{n~I; zXB8(WM(b#jQo?A^Mn^i6@I&eEspJA-a?93ykCGmZh7`JOKCVs(ba&-kc={nI90CzUrGSEy?P-DjjmxnkTMy zP9xuWY&#aD*a2jH09+%j`HnwQVwiV`hv?xq3?SRb+|}hS^)Q+|au^6} zu~7Pt(q^UQoNuJ1$~u5w;JkRIh#tge@MdK6klP~-Zm>fZJOKMF@^RU1c2Kty-8{R= zsZOfLM?b<{Gfy3m6xqmjukBHhYc`>S(tIgqm<%=0YR7mfm@sUuw*|y?FPEa?G<{g$m zCz54b%>xPnrLVQVxat?uhIk03YhtfLCaJl5Zq}Fc(E?U}aPM7EjVj-|mrS{CFK-l5NTjR0OED zP)*}?CBRFwHGRq*Gl~9s^CqzQW(Q$~fj>)4Kc*d;dthjtFyIfHU|h@h0B>Qpuw<{c zb=KM|ouw=gS2nk}roNynO3m_*jNb(Vm>H*G5|=9Je}XVg3p0bEjs*Dsxdd*K#{Cq% zJv#@$pJ)Rl(-yQ%fBsbN{ncTVd*h{GkFU@ZJb=G{BaBD5bE~SR`iQJUW?v^N%hLZG z{toI_0k*Izp413BRbvaPU!TLXF<2bpMo^q0**aw&Ra))!`t6(AiwAAEk$BhHN z(M?2q#o(^shgs)GppDR);N)ZWcB;{TjDign<06q?u0*&0^Rj2z5gKx3N^}{Zre1^u zqovVmuM~6A+T(z~-u}zxL8}Jx$mcxkT=%QJ9K|yhY-qt&z%E1;41#nl`Ui&rL2YdW zFxm9i<6Vnyx|?gURe-3OS>x>{eeC23c!D9&dHGEFO`O^5ad%WVU#9a>NF*B3?|K3F zxLVoc+|4K8JwSo+xh^;p48zVGt+lS_nPkQHLGbdIRURJS)4-Yzv1OJn{5Y;qEp=|j zR$H>6pQ4SDJo35KPj~t8`Q=xLCqInKo!^iVeKezgXqoCQbGvv7HM zbgQZ=o}pxm!cy~<7d^2*0nK_K=kR@*wMBwn>KtyP8C||gv;Ls*>s_&gMeJ=F=jZO* zA|`|vp^b`xz%1Rl)fh;lm{UzB5nknO(m~znxOrc^75b(S?dZgDk+`M%vL=c^n_qo$ z3wNcc$LdVYT6$)sgW4$btDvh8iqP%+=TNe4keTj&N7^iv4VQGO-ZkC$dzt!bU-avn zNU4+im-kWH?^PqJC&qCq2uv;7K|j&it44xjA>c4&Ls9PQ2p2YrgKtdESlk``J0z+> zPSjR96N9LTI6bJh7*~{j`@Re1X*Yzyo@M5w`9 z|IBc7XH58QjzC-?A037LLge?(1Gpx|fgI@U*ROc8G?dSQOFduQzt8Xh5&fR={tiGp zZ|k-|xYv1-&stM;h{KZ;;FWIGgKio@c8UjfsB0KM$s2tdFDRKRwEBKJ zF+>;9$5gYnhB7T<%>2fU#M3Vh{IOK)Rh>g`U)nftJAvc=%=<*;@3mL)-fGz6Gm8uN zY^J7y2Xz<8(q;Qh$z6jctwRxi&`f@0q}!cftYtG4HqtT&8q~~E)gR2Ho4?V2BY)3c zSy{;n=}o=rEPF^V5Z_gwJS@6K8ei)!v2KFVP;6Kc_0hr6vlMOz*R=|raUoPSrYovV%!qz?5>>b2l! zO=Q_2p+<{3+$PY#ctDmeDvXsjVB{ku?(VRHac6{2m|CI7A1T)*vin{9^0hpLT$#`2 zn@<57wxfmkz>SI@W?QqxbGj3#Y-uD40|DUP%Dgi*w|N@ar|15$EoHhzD`TqNQ|HHP z$72q4Md=VqIdVI;ZasdWFZ|%UIP@D9YYtZ$b00LoyzSr=3cPmZT zR3U1H_l8q8%$k(I_h%(rwvYA<2Odd)guXWFkL2V6 zp?`#h?xQGRDU)P3nrP4^eR6hT=kc*neBDg^}=}N`IymaV`&)wW=dM~ zZwU$Yuk4mkj#}B$Jr-rM!=8hF2<3CI>4$=525M(^y~BCGR_`k^>jX zEp>&iH75IyD=~FL58b}hRB%as4bTKi`Knd22{=l=2y_z-@gl~&|w!W%z~}Gl&{YXGIAeb>0GGmuIvSct9^VM zNLJHUuCJ3a8)$_DMxs~HPQd6Oi19ewt+WpOPEOQ9VK0sGbKUMqech1cp^^?4Z8v$? zy(upP7Jw`glwSaoiSCUELOwWAX+{?cYZcU0y4CNxra7Fju(Pprn702tAPYY={hbVz z{^{gE+!H?HVORWudqiLz;mJMRV{JXni8iAxoo6E!3lj$*8)4^e@&@5P3U>}=b1T)6 zxf#>jxw}CJzDKZFZ*f!o^~RcWKb@kysq8>H(ZvkMfnN5~?OAR6SrE}WD*etDm$&;? znEw@OGe}UxSMPyDo|3w%kF2yi#3w$n;am@T-x~ppe7AFZFHRP3XaNFocaX;tC@@CG_lJkx{{e>Wc zpN;4ijY4Dv$$taN)p=niPgD<)zpa<0@Y$Y=k!3U-yB_xDPRQK{xor zDv&|*ME{_WjKG&O_%xA3NpE|zu7>O4SE zySfpFV)T)1By+Q}&F>eunQ`Vw58B%5D#u^Xg#^4QPKC~qvf!1C53%1(Fa3~0^7uXc z*9=E*c{Rs~2OH25KD_Wc2Fe7{vWq4fCG@h8JaAbdZiX7KS)Q^TUc07HXiq%IkDU;m zKQZ$v)C(1~@Tr?}S(@@}Bd&BJUTo9ehiV<&6T2b6;_DMt8Z|y_=c1+iadW(^~AG%8m zvWATW&=mf@FvUYYYT$NuD2?(0=HYYl=4*f(`54bDLr1pX&#gSql;kG1K7}!MX=VEV zdqYPBB?Y$XxgG9#swl+Oh*}xQftHH%R=i0o$rh%ZNY?q186yCjNtjDPVE9)Y=nNskKE&?Fj&GPmm zTXT4!#2z`mqvSk@hXLU;6FHPir%54SkSjfB@(Fs%aa(8YE4)M0S>suK_xIXB+xg>N zGK9H_VF`feM@^`l8d`P2;u7(}8k(oQ3S)Yhng+N*G@Sz61g4%yrrwa}@WIEAV&j}k zD!y{kRrI@oJqzZ*D8T^Zoe)VO*q2Qax)eNCv`z#^k_+L|w8 z@@-<(Y;h|j(Jr-ohbbKg8yGVd0b|BmjNQcoxns_CPP(?!X}+6@k}%$b2LWI@iel;& zh@?t>MFKSf(jD@z`UDUeue-~u%DPa7>LTXffBRY$)DoWA*S}&2pj@0$H%6H#2pa0)wOj1mC!{*cA@R<0*B;xwL(K(8801zk!997; z9v5{_BkpzdAjS!A+E;%>1Atwq7~9dHtJMAx;bLL8v{~0ruw|nc5b)32(XK``S1)FMCx9BxhNGQTD$7M>>k3%>~ z+c}lZX4OZsnK-3ExVSghlnSAP+LVQ&JJ^QH;u?(!gsY=WuK;O#hb+rqX5>uj>laY7 zOee@i3an~~SQo0gc^PW+0tu?bsKEH-4iyPT*4E!Y1RK(7!6SLd9 zF00DRS@SO?MUShbcQ8K>9BjF-%B05`usgryUF}w1r&m-}p}H;nf_=Z<&W|$T>0Y|V z8T@_}b#l5Xw;hcte+07~l^zY~eTA*iF`I*bNVEjC61vONy;y1OPeO1(HJ#4cji3?@ zng3f5KNZA8a&GfGg1fY6$zcF4-Yi>Y+l68Arh|JTwD2?D_SJNGLs*)W!Vy)=M?d_) z04pLI;X;tV{UxN0aayCqUG2x2ZfL$+&(YDg!&{Jr7HWjCOUp3S`4t6H2TogJ7_(MB zgT*`!&Z<*4o!lg~ujj2PK6->*gg#kvB2047_P(&Vq`n54W+W zvJNU!a?iGt;@Hf0l55-wU1{MTP1#KS@;%^8!Z)=|VrzDwYNQ2c%uTKm-zd`^9qWEK5`3a{)(bXqWn5{wQkWAU?k)scfIKoPnI2yA=C!=6 zFBjh$pTY$ReBwLI&|HjJ2FJ*aqMG(p$ldINhs;Q12ThV=CgWsPy3bGb>$liQDK>tk z)toz0#sg*+5DQK9Cf6p*>NEvEe3{^J-aql(L2=A%U|OW?(e6^S5LClManVlQ-QbC& zzCaN9&Bf2j#Fk8<1>D-eiDiUpA(H9LPYm0&^E;QIFiNbUmMppt51miMT*TZ<9xcUO z*tU^95J>9G1GMKI4Hs;B0Rya8ed&kXZVM`eHpo=LPapgx{FRaPIMy0IarnyZqA9yl z4x8@dWWCi%hZ8?q5nd1J6p*NqahVdG&;f$8W@{F`;z7%#b?vdV4_n$l(E6%al73?1 zaWp4-H&Kho30JY^$x`|r_$)Xk*D5^T=kfv*rxMfS&PH#p(=n#!g)_XTFS$~v?%}`H znKx+NQ7nOyv2_LE6yFp2a;8-xo8f4HC>14BXM|w=M6`>JCrmuv)Mv6x zkca;d%j8dyZE*iO!50vT((&1x7Bc^eG;$bp{D9tYF~aW`bm02p`A0WL^41K&b;0%U zbycnPt<-dFoNR2)yZmpnu}7!R#(wf+^n*Ekai?7~VJHx$k#zAR#tt!^&gK`!dvn-$M_jTKmbagg zt1BwlCDJGWKxK2t2N#4KZrourdG{D!&T%I>9sI?y7hJ@CA#?`<{7o~!9_KD7(RX9$ zuaR&7R`;!h#X|))yF~-Vzh8p4`3298q-n>dM8PzO?j3^_{Y=80WN~XoQi#`C?IzSi z8IOzHF%y8Q=J*t(w9KpHdSA#GlHkb0VQf(8g*-inH0Eao6jW$t5NdkHO#@Ncy~(mu zDjMiml1Qz0}yJ^-sn&I--r6MYz>iDxkc*0oQaK06fp5`cZwc-kb~i82$jW z2*Uqn5&EH9Y{=vo2~DjQ40~RalZy{Hu;Cbn>cYHAh>&(U;H4MXlT^Fi#2m@t;j%*( zgE@~8=n3ejJ$rvQmfz{M8Jz}LcYd42*uHW4!xt4XE>k_b!?Dg#e@`c#RxLVmyavo{ zvv1fu`HqM}?Y{#tQwVlu zt`1*r!|3NPbIx*hk+{qK27w9A5bEIa<-fEmSTe98abSPOFt|d+?_?t8hTUAFH^?cX zGz}Ho&$1lKYIzEsLk`}M1F^BNkkUV!y9KmMuU=myPEmOOQLq%DSAhD2L6@WaQ@+h{ zniK&qEdzcs2wcE8d!czzZIKWJO!;?*I}^6|SKUXuP~lRT$R58lxqYW6D4uM*UGl*# zd(E?qLCx!D&P)4CtVeGH;C&dOabY2cXFpL{8%ZiNvKUyf5pM?4FHUAvb}pCSk7`8_ zK!hDSrPpAt=s{r-C;&xRDDl_R8<{xRF67+~<_A&tjl@XTd0#vw>DH3>$l4Iy(DZ4| z-YQr4i&Q0&2VzDDN9^CtkEd+8ji?riDTxg%1h0HN-lS)NMcS8SynHHBPEZzx?(lHt zQ%4zoPnw1-!wNHRf-ccJzO7D`@TvhvcoAQ}hqu>r1dxW|Bo@=G)2Q3+LJn6B*WUVB z^IgX0l(#{XL5)9^H3C3-QuPqs6-uIIZjChN$sAb``H83wD2+TQB=XE9t-GzRtv}6B znZH>E4FfGVhEFS|Q4$^3;NFVowGVbA`%%bQ)F1y0uH<&=2`A0suq|=6r2G5(56>y$ zNO*IqNl;9A^3ODxAoQatnH()Vr1GxFZ)JicZAC538$EZ84S&EdqIs|fixQlA7_FgA zCQEM^!g$)O_dUV94-4M0?aBzI-$2-_eb0me?LOU}bk7bzgJhq+Pqtu}<6*fF83b=- zd4ES!ExS*Wd}Xo(5G~_& zj}-_!y~2*EXZyj&m;Qs!!cPN<@FkC`Dl+_^X<$9sW{}0@CfsD|x=nBp)bbxCRPPm9 zg^-WY6T;H_wX0EmX2{Pygw)l#2a*F&z$`dc zLLIc7ESN3^u@wC4q#8TSD0GjAx5=&dsY|Hzck` zous=$%EX`R1DX|N|F`;GBpu{<=M4oe1Tv($OX?hJh~v~ij}Or=PFlbVib43oZl=TZ zg4<%ZfV87LBCthOGgm8r>wp8~CPKA;fx!e9JdP%|#`Sp+Pis*pYo1;x-&+Te`=HhH z8n#+?MLnv2-t-Q`_s!im5^{IOXLfDG{lS zeGMga7WJ6x(mAuYrfvAIZ_~)|_4%0eSar~qQM;@CxE(0=#3Miajal9#!MW6C^z&vW zx6{Sg;rm&*t|s(gy*jb+>+$JQWp%HUg9E0Nhh->ukGs=4DkVqn3u8Z79CX z-~Iw2mF*t55O$dzBEdWz`cQBfQEtwI>#fsfia1O52}3~T(SvVIWx+X!+n^FIj97~Q zJxwJrs}Bri^$KJR&f<3oPRQw~oupZ)F9uf{M1MumowDkay%}kl{YAY!uKRAK1WIeV z5$?8YmsY4Ojdi<_Z8dCsF@MSAeF|u|XV458ag>prUs5{=(KYFT4q&)c9W@k8~mIw>trCOh*GjGtukc{nbe zER?_8C}N%d`VM51LG(FdZik3^@i6oRdcNG-tX1)U3Cq?5NsTY8$YJq0G1I4-EOEyv zA>cGvXKdrNeHSE4jd#fR{;pyP`O76|-k4cmkP2pV5C=;7RQ_HsNGxYk0%BsMv#h)M z6277J?K&>O;Ky?CV0%sIar?745#(i=Uhk#fcBf%u?BY#wT{~65RXWC#ahfX@)y* z=%W>0zE1LWv|R)#9KQ5r)RRd*CMRz7j5o{@%PAi2`2Lx$2|WM1e2BvH4w2Z*)lY_# z6Z-Ph5^(<3EfR>v3M6`mA8A=<>8ajz*@#s1v8!9;Mi{73TS&P`E9V#FiaMNd1jpVt z@96r5IwX=>Ocb$Sw2?YOm4rRTGJ&7~CG<`JxIEI7Z!$(&LK z&TQS+nZ;QLD0mdV0OG$vnq-mdr5e?@d8=s)dIP+()uig~F>t?_f0dX_2q+6$@lTC8 zUH!Da=A)pYREV{lW*uh%>qvX29w#%+WT@P?4`iNFC@WZLaBg~CgO_Y?$jx)cg0qeL zO#Cy0H&CkD*qkddZ?8x8{?Qzwf)r;0{D}Ox-GaiP`x32&_y>$xS+6%1K*NKag}o6< znSU~f^2Q0b;jRnsJP50&BOEblKK^vxM6wtT5W2=;j3(Y}U%7H#i_L4S_t5+qVT_H18`BVP0 zT3&S`;A9BzSkC2((!qyLM|0$dm7bOhY%?#Cu|IYD%3qA!(!+PXK? zyh8Y3-x9*(XuUBZY)_@N5elxgJDg5oc3xYAg~kpv9A1sZVrGr(Lat_aG?Hc%izc3f z>CS9nvk970kgVN&{kMX46-(cQ{rY?S%w~AtQ@X3c;`*t3d_IvwA<%xb9_uo8=rp(G zp8GCdIfSH|jDs2<66yNk}n~Fg}w;BNN>$nUYy~*A7>~{e0hzHjlFiNtEe{J zrIlsxWU&N0ZkxjUOLMbVNZ6E&5?(D-R0MN3A%w~(CyIF7VXO4_XOCh0qTlMWpd9>( zWxU39?Kn_lk9H~&V#RfU(|Rh)Si+&cJ>SCWV{Ik#WMDc9~rOnu5~c{yfUMVU!xwKQGKWUJ!v`SOM2LP|_nCG;V&Jy+BCxw>^;#LH}09jM&pFu7aM zo@1S408RbUR4i6jfCp=R3~n;Y%S5_DB}%Ok#sI`pir_=Ge1;l)Q;gCqsKjrXd_S=$ ze{flH|1^W@DdZ%Hzv2&!#U~m)o;Hn@%U-p`L(0O5ibz}#Hxd9AMtKC@|;!DLb0Z$N4@E~5|{Zg89HKqaciSIGp^ z;MTYm^s?FvTkm|43_FhFgD~#zy{1z-8(&P>Hz562!kpA6FUk94zBFbBr)jj%F@yu? zr1=I0L5kgYiqkPA^Q^}}vRZ;=P#f@mAKSwOuI5^`9-8Jx6rX$tfghbXYmJTXd%j8& z;-X|FVU>$ycRor}bcfRoYa=26J-Mi-^5a%`V%3UMIA`YQ>mbKEsQ>}4kCOsAfn^AL z<_FY19dwX9BDAA4sO=iFy_2Vx`mmc5YL8eKvLqR*Uw`f}QO6j3&~gbW_@#sH=!3GY zmDwpAi77!q)0>{)4SjG&PX$qSVUD>BnJr!LwXqgt`*Iic8rxL$Lh{UCTy@8?U5p-I4P>H_Q_AiGc)rLvtXVyr^mNQSAX?u^wlvLkbR8 zdMh|c@Y9cav_X&DKUgSsq5AwA=CtYit8t1&DUByQp-e*r3`H!q#ogdcwRKGb8GMhw zT$bH6{mKe{^?V&;op{pEbx5Eebh!H4g7}~UAX*rYh71%XBm8jm(LwgK76}6n)lHIcUfep2xKUbsfTni31EDA8+O4I zY3NP3Rm-VkW5DaAU|OB{6G~NFNB|^H9aKjZnfX3fB+OjCBl==mi@^)7;Z|MQ$_77v zd6r7~t0_|K+h?Xr_6790tvr?Koz#6Q)nt#k!L`Qpc)!KW2mQoBNg~uGxasbt^iK() z;+E!zXQ-5jM|#52m6?QA^Y(xbutK_3|)!SsbN1SLEWj&o0~GS8->7k6CdlW4OZ zFU7ryDil1RK2yw}p%ZhrYst~oRjc2}$O*j24a!6`njO1rF3LU@?fTZ#4Jbj0pKCH} zPa5Qoz*j3#=Lq@LyKoT{)Y&mr_^Jzs`dCK$!Y5fM-;sOmYK>JALq_*BR zop?1h6Sg78ZYkP#dE&Wnm!UM?02FS>m7|>eVZzUv3#AB;GYlK00W;l?3uq+j_rgBb+^)*d6x^!D0 zyJI&6nW{BmxBlG(%}9MNSLVH#EW?32=^h$Gl|=^GZ@7_1o@Qp*J_prT)_xSjWkkGb zN{5S675vs`X#EbMx?31lI$1#=P1ApMXRr_}-xg41U|!1%|F)Qfv_z{ikP%RSn2Tuj z`mDkS*)SmMeE+jJd#}z{k0{>xI&3l!a zPk0Mb@JMh3igGj-QcCtm$wEWET!>#qL07q0T%H?(kgN7?ur=Jt`;GZ*+(4C@^pUU3 zC#GKVOC7Eo$2?svI|`42+;>MtUOm&TI1@dndCd z_y$oS_5 z91EQ`J{iM=qex7H*H99VTFOx5in$Sxk3To zj(a-WmKf?%u+W$J;DXE+(<5MZH$!Khu`C2UA|k~cZ=-TV^Z-5g(a}VwW)ftulOpj# zlF$`r+O71nNsmV}JeeH=!@oJ-tZh#vJD{fh8Milwput2t0DK+fx<8zStRzl%jlR;g z^iz3lqoB@UiW0eUE-=Z$bi*O(6b!RkP{}o7`~D*YfQB*eC+tglwH&)Gbqejf!sTTh z7V3zu*^{pw>IcCVgAb8Nzt7}8&8!#r(r?=v{C%QO=P34%TAU9yWDn8E-Yck}nNamK zO#eHSTz2@O83DY4@ZVwN= z+kMbdM)N4}MzGWVdPCx~zS}Mj*d>)BUj8O{Pc8bAh z#-ijwJ+yEw$h2I~BRJ)5)PtU$Q)c>k+vWi4Sr~hdZ+$75nY(l#^k(xwg;y}xXPG#Y z_w(*K^BXO0tmCRADCthSy^S|2W6CM066sIt1Z<`^+ri+gFvQR*SP`&;W1fJyy17V) zm`g_;K&;TZe3zzr#K?yCl*erDb)u0N1qa3k!WhZ(#LqfyAO z6B!(n@=JNofGLgWr(n|nxizI3BHKG|SJ{EkBsSDOvaiK?^8-KfzJG?pv7`adQ_oAx zr)O4!`Nmb``xw|icP0kel8@X4A{up&pbF5gyb+uJBo(VOWI*pbX?3(ncH4`ao}(*Gq2Ual-HMD0^q<~y; z^OJsNeNW-MkVO>~odPzONlQ{JNa=UZyR~yW0DZia0|DeJ+_jHFcd(UcB>6e1fw{-J zjc@U2f9HiDfbS8T&l1V{)Y5B}?M?QNgoH6jy&!mA%0oRo>$mw2AHxE zQ09U#l9~gCs!bm_(=}dy9$H%~gMWDTyKs8<%B2;L0{^-eNYF6~V91X%8w-MS7W~|3 zM#%G^WSZwoHk4msnC1cfOznUiknp>iHip`*S8FJ~w=_SMc%;v@39RG51f$=Z>!#R1 zF=hdFEN9LNH&gPId0#h{h&N3Ng36Teg~Fe&FlR-S@aBU_`Q=Rwx{7smkJW5^etZsGeD6Ke=LV*hsi-jI8NLz+nf^Zh!*e zPy1pp%81KppxubL_6v>Yo{L(HSO3TZCJ3Bp$iJ7krDTJMWTDiu3f%fh++E3Loc$^F zIPv)cNY5@G=40HW?7{mm2zKxa<483GUC9AVKs!M{kY%Gh9D9Kv6t;58HiR#jLv?xG zNn&?7F7dQc-;sSe*9ks-v}uWs5#HE<$K?-^1fPCBblGZZsW66wFU%3qvY{Sutdk`} zRt0_bE#^O{t(ee4LHG;SlCuGZnJL679W;X$%6xDYAIrxF`qX! zZIWEQx~sZ3Iry^4V9GgzqtpcioCW-pI%sWpzF|~sjTY&!RV~LygL-}07WAz056G%i zdDx>n`5K0mIT9^H8;&P_V?4_O1&ZZ{5|ECP>P&VwR}4Oc&6t$p_Be(#sULr)gbx*` zson^5Q!xt&Q+Co9Om>DLK+P%nd8}{Fd=4fSvr|2zzSeB+1)2+rSudQ6Ai?K&OliI# zdEj7r2Y+$r{hK_6lxjYKj5-O|kKTzk4YETVZkc7uFcONt>*SGwq*dIQx2dYDGh#|%w3I+U z%h58$?TySj@7L;p-`>~>-F4Sk$t!4G!^j%WU6#K3e7jMx^ ze1?E}DDlO%i+mkp-12r7d}>tJ^Qtbumkq^`*!3~~-o>&ZjTD5pIk`aES4SA%^a=-G zfVUA(fWh6U+BnSpeQrro+P>=%l7h}+I4JOSUS+{soO=rCjV?3Vw}gQAb%HgeL)HUk zLfowwC>;Z4M(hKGK3Vn1H^X^?c~P>RW1h4;2X=$GXIjiMb|_tkyDjG;u1`N_F2o6> zNBj)70Wk0u{5Xs>&l1YY%BlT_`~5}}4eq0}3I0qYJdY1(S^86%+<$;&Ck}pqS=uT^ zXmXi>>Qd0m1TaFaITns|Wf!q+LujSg4wvK=?3!2~2aM1rt1-~~44!zG6gant7ex)i z)e`L^oU!^_l^KKu=&hqMQhR=}aj(Z))vpuXij}Cu`y1RaAX5d+qB1hmDLSpt>9kU3 zQY+?k6JSnhH!OaGc;>}>;ngLF+w1bPSMd&ibr5Z?E{BSS-jl>Sn=H9uHOW!?CNSAy zG$1(7N&+d{2>F?ng}O7NB{#D`o_jx05ZE1yFOl%+Y2EY(kJc@&!SiK&2ppE$t@Viq zR@GoZh;#H1s}aim3%dtOjDcbd(@qR@DPis3D-6%heebcMh5|J6GwZXmG)MD^yh$#t7EifVO|e@9EP-OO*r>?K1G z`CsmE?}AR}ceBK%s?!AvuB}GtJxdMq(O&Z(2-04I3{c zCpSq4?jQioGqK4|6%YVZWLd+wG#ZMhPh}^;YZa8qp;2%}e*%okOfYn>n;|uIfh;_- z8cGm%>cr0XvC|i5UTz{Z>Vw_3tQfN)Z|(jY$Mc6Cg}JChIZ{XjTzwpy0kR-SlTyfA zC!m^fr5>>*41Ap=_r(t|_oJoYgOdwJrTfoW)Tx7=_S&CV`KsxAVGIYG?g%&R3QC#` z;%bOZ(Mi-T2i4WNnOOh})c8i3)Y#|J4VZwL09H?vwzIqR?zr5Qf7qSp>nNBWuGi;y zcGQ%}#`Rtr27m7b78DZFY7;!vh#IVG5ti>6(`L;EYG?IvLH-{!0}>@SZ$5VnI)LU= z3$@i?k-(9hoO|<|HMO6P=t_Y7K z(=X0nIU8zoC*dpK-B35xOx{d33IcVcg~YLzOOZSfNm% z>49?~s^y}R`58R@Pmex4=xTi!(dT~sUml=l7gw58b%T!XlMD90KmHU#qSR~us$Boq z?+fig&nV!w(wGJOTes?e8uveMWlm*+_g_X0{LWAO&w;D&)BU5k`QHcr1)<0q>~k9a z!xKj;BxfXoei z$!}F-n)?6AV}Tv1rB@*T+Y18oe*U3zBdXkRvj1t~$v&O?KfK+i1^$2M{(pJd|5u!Q zKvoDaBZ@?gcAJa%AD8j}wTr;pHZEmcG4=*lsKn%p32wlI3%tNcg}4mb!3N9~iv!Q= zs1lVsCpduW^vem56Br5SB?T!^spV$7c?waEcVNl{s`qU^=u2FVZp;t>mM&6X&jd{( zF7qt`l}5a5=0sL2iyVQ0IU4xb>#@ - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg deleted file mode 100644 index 2f6631e1e2..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stackoverflow__breakdown.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stacks@2x.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/so/logo-stacks@2x.png deleted file mode 100644 index d283cadf344dad03fc55021c65772a31dadc28b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12207 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg deleted file mode 100644 index 6247da7911..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo-med.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo-med.png deleted file mode 100644 index a1a48626c7f526ab841e5de2641bbf0deacc236e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2393 zcma);c{J1w7stmMT5OeML_5D3I}{3%O& z1VRAj*9l@m{46_p9>oXA&e{>nCy&RIl9K%2p;15ip8|gSe+GYwuXI2{HT+A;A@(*7 z2t-_`>7taU_JDHPr#QRd8x5wNQj6N2H$K@llqm-fXh?jQK_J8u@Rnwd5gzj_Gid~3 zn_&6vSc=up<#NIGXOI8 z27NYnB)#X+&363E7t?exb8{m6JoX`FwRy^8y=|_e_(wjg0sU#86+~@Na_2g87=;b2 z!I#G9O0S$4GR`3@ii`sfwG6%=fes}eR)Yq(caD~BH(*(F8TkkGQ&3+AbK1s>eH5S@ z#Y7IHZWOzsx;{8enehL-54va^)tbW0TZznyAwOH-uXC<*xvLKpumPVF=k^qQY z(F)RIiT2c77Jc!@I-*8H8ccWarlE52fl=n6O#Y7ME5dr33boo&1Z03zV3Rn4Hr z=TzXYyTJ0yqDE{C^^tfU>R_(r9vw1)j5;H+|6Yl+!r1EjMgLq_WmNHu)3Ixs80~X6 zDXW}u$y0%qMWw*packPoU&2<))>lmkKEdi(Pmh|kaAV_QBT>T#_P1jl4&r2U--`9+ zQ(jr=)EutP0JJ5Ck%2)r^}yP$1wY_cd}KP)qgGwBu8l<(?Utc+Ig(T_ZOVWnUGulS z49AKJQphMh5KIpUmQPd}B|B$7y?x=qmLn7QbAb{{*h3uc&d+I{th{xfZccsm3ACQ} zjgdztm~hwRc%aq8A$YcD)FSWgD-_E*^d1!rnspO>UO}GR1j}FJM-Q7>SU3!rCyDh< zp@TXt=qJcV0)8f7fFGjr(C)ghT6QXXChw})~S~FC8^_%&fXGpZ0-IK#QkUmxo4lV$CHZSw8 zt((`^D#(1`MIoUQ-`zn|M~f{yTNc z9V}_ckJc*}7LS)Nc?9UePts2m?{rhx^#3ro52{o4TF%Lm+SpA)K^qHb+YUE8Y14^x z1ia^-xIn)88{lR}mK9vnzzM(Dyp9g78KC(lbc*Ck>YIlEvlC{atSBcr#x z*D&JuW(E|y+Tb)3Dp|cVJ2IU!%=YJK!*-c#pFuZnmg9~8ywguU3 zZ7W1{P+d=$8g3nf{?!|}84bB{O5IDxVz$GN9skHcsf9_`lh{hN@|K6@q+qYB0jM9z zXlcTyXzg<~l;erK`Vvy*JOA*HFQJ^-lx0Mg z{1^Y!?fq3}W>u($Mlv?b#PgyGL}W3i?;Dx)!yG$spsg3E<(}kHb*BzgP-3J)Tzc ztvfmd%VAZ<=ewZD-sQ0G(Jl(v##&U)2zd`!w*Q5%MU#)Kozvr_SHkFvh0Iw$!E8yV z(e|?|zITDTV*&+tt?5XQwu2MDF+o?H``*v0T%gDHtVfmdCZ1B z$t4UUz3a=)L|_tIWoj64*|d=p7OvKT@*u14 zI+IMoIiPhb>ne>5nF0ue7ee$8cs?%tIsLWyC)i$C@4uad!M=Wh;NkKvQ@(RS;ITHA Jcg#H#{s9CIcVPek diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps deleted file mode 100644 index 886ae257b9..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.eps +++ /dev/null @@ -1,6050 +0,0 @@ -%!PS-Adobe-3.1 EPSF-3.0 -%ADO_DSC_Encoding: MacOS Roman -%%Title: su-logo.eps -%%Creator: Adobe Illustrator(R) 14.0 -%%For: JIN YANG -%%CreationDate: 5/12/11 -%%BoundingBox: 0 0 443 98 -%%HiResBoundingBox: 0 0 442.2369 97.4356 -%%CropBox: 0 0 442.2369 97.4356 -%%LanguageLevel: 2 -%%DocumentData: Clean7Bit -%ADOBeginClientInjection: DocumentHeader "AI11EPS" -%%AI8_CreatorVersion: 14.0.0 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 14.0.0 x367 R agm 4.4890 ct 5.1541 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 28 8 %%BeginData: 4962 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C4527F827F82727FFFF85366160FD74FFF827F827F827A8FF5A613636 %3685FD72FF27F827A8FFA8FD04FFAF5A3714A9FD71FFF8F827FD09FF3636 %36FD71FF27F827FD09FF85363D85FD70FFF8F827FD09FF84361485FD70FF %27F827FD09FFA9363784FD70FFF8F827FD05FFA8A8A8FF84361485FD70FF %27F827FD05FF52F852FFAF363D85FD70FFF82027FD05FFF8F8F8FF843736 %85FD0AFFA8FFA8FD17FFA8FD09FFA8FD0BFFA8FFA8FD0BFFAEFD09FFA8FD %0BFFA8FD09FFA8FFFFFFA8FFFFFF27F827FD05FFA8527DFFAF366136AFFD %07FF7D2727F827277DFFFFA82727FD05FF7D2752FFFF7D047D5227F82727 %A8FD05FF7D2727F8277DFD04FF5227A85227F82752FFFF2727277DFFFFFF %52272752FD04FF5227F827272752A8FD04FFA8522727262752FD04FF7D27 %27277D2727F82776F8F826FD0AFF853637366184FD04FF52F827275227F8 %F8A1FFFFF827FD05FF7DF852FFFF4BFD04F84BF8F8F8A8FFFFFF52F8F827 %4BF8F852FFFFFF27F8F8F82727F8F87DFFF8F8F87DFFFFFF52F8F827FFFF %FF27FD08F8FFFFFFA827FD06F827FFFFFF52FD08F82727F827FD0BFFA936 %611485FFFFFFA8F827A8FFFFFF7D7DFFFFA82727FD05FF522052FFFF7DF8 %2052FFFFFF272052FFFF7DF827A8FFFFA8F827A8FFFF52F8277DFFFF7D7D %FFFF27F8277DFFFFFF5220F852FFFF5226F82727522727F8A8FFFFFF52F8 %27F8522727F82652FFFF7DF827F8272727F852FFF8F827FD0AFFA9363736 %5B84FFFFFF52F852FD09FFF827FD05FF7DF852FFFF52F827FD04FFA8F827 %FFFF27F87DFD04FF7DF852FFFF27F852FD07FFF8F8F87DFFFFFF52F8F827 %FFFF4BF8F84BFFFFFF7D7DFFFFFF7DF826F87DFFFF52F8F827A8FF52F8F8 %F827FFA852A8FF27F827FD0AFF363736AFFD05FF7DF852FD09FF2727FD05 %FF76F852FFFF52F852FD05FF27F8FFFF2727FD06FF2627FFFF51F8A8FD06 %FFA827F8277DFFFFFF2726F852FFFF27F8F852A8FD07FF52F8F852FD04FF %2720F87DFF7DF827F8FD06FFF8F827FD09FF84363685FD06FFA827F82727 %52527DFD04FFF827A8FD04FF7DF852FFFF52F852FD05FF27F87DFFF827FD %0652F827AFFF27F87DFD07FFF8F8F87DFFFFFF52F8F827FFFF52F8F8F826 %F8272752A8FFFF52F8F8F852FD0427F8F852FF52F8F827A8FD05FF27F827 %FD09FFA9363D85FD07FFA852F820F820F827A8FFFF2727FD05FF7DF852FF %FF52F87DFD05FF52F8FFA827F827F827F827F82727FFFF52F8A8FD06FFA8 %27F8277DFFFFFF4B27F852FFFFFF27F827F820F827F852FFFF5220F827F8 %F8F820F820F852FF7DF82727FD06FFF82027FD09FF843736A9FD0AFFA17D %7D4BF827FFFFF827FD05FF7DF852FFFF52F852FD05FF27F8A8FFF827A8FF %A8FFA8FFA8FFFFFF27F87DFD07FFF820F87DFFFFFF52F8F827FD04FF7D27 %522727F827F87DFF52F8F8277DFD06527DFF52F8F827A8FD05FF27F827FD %09FFA9363DA9FD0EFF27F8FFFF2727FD05FF52F852FFFF76F852FD05FF27 %F8FFFF2727FD0AFF52F8A8FD06FFA827F8277DFFFFFF2720F852FD09FF27 %F82052FF5220F852FD09FF7DF827F8FD06FFF8F827FD09FF843636A9FD06 %FFA8A8FD06FFF827A8FFF8F8A8FD04FF27F852FFFF52F827FD04FFA8F827 %FFFF27F852FD05FFA8FFFFFF27F87DFD07FFF8F8F827A8FF5227F8F827FF %FFFF2752A8FFFFFF27F8F852FF7DF820F87CFFFFFF5227FFFFFF52F8F827 %A8FD05FF27F8277DA17DFFFFFFA9FFAF85363D85FD06FF52F87DA8FFFFFF %512027FFFF52F84BA8FFFF52F82752FFFF7DF8204BFFFFA8272052FFFFA8 %F8277DFFFFFF52277DFFFF52F8A8FD07FF52F827F8272727F827F852FFFF %2727F82727522727F8277DFFFF52F827F84B2727F82027FFFF7DF827F8FD %06FFFD05F820A8FF5A363637363636AFFD06FF52FD04F827F8F820A8FFFF %A827F8F8F827F827F852FFFF52F827F8F827F8F827FD04FF7DF8F8F827F8 %F8F8A8FFFF27F87DFD07FFA827F827F8F8F827F8F827FFA827FD08F852FF %FFFF7D27FD07F852FFFF52F8F827A8FD05FFFD0627FFFF855A615A8584AF %FD08FFA8522727275252FD05FFA852272727A87D2752FFFF52F87D7D2727 %2752FD06FFA82727275252FD04FF5227CAFD08FFA852F827277D52272752 %FFFFCA52FD0427F8527DFD05FFA8522727F827277DFFFFFF7D272727FD0A %FFA8FD21FFAEFD07FF52F852FD1FFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF %FFA8FFA8FD0BFFA8FFA8FD07FFA8FD35FF52F87DFD7DFF52F852FD7DFF76 %F87DFD7DFF52F852FD4EFFFF %%EndData -%ADOEndClientInjection: DocumentHeader "AI11EPS" -%%Pages: 1 -%%DocumentNeededResources: -%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 -%%+ procset Adobe_CoolType_Utility_T42 1.0 0 -%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 -%%+ procset Adobe_CoolType_Core 2.31 0 -%%+ procset Adobe_AGM_Core 2.0 0 -%%+ procset Adobe_AGM_Utils 1.0 0 -%%DocumentFonts: -%%DocumentNeededFonts: -%%DocumentNeededFeatures: -%%DocumentSuppliedFeatures: -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentCustomColors: -%%CMYKCustomColor: -%%RGBCustomColor: -%%EndComments - - - - - - -%%BeginDefaults -%%ViewingOrientation: 1 0 0 1 -%%EndDefaults -%%BeginProlog -%%BeginResource: procset Adobe_AGM_Utils 1.0 0 -%%Version: 1.0 0 -%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{currentpacking true setpacking}if -userdict/Adobe_AGM_Utils 75 dict dup begin put -/bdf -{bind def}bind def -/nd{null def}bdf -/xdf -{exch def}bdf -/ldf -{load def}bdf -/ddf -{put}bdf -/xddf -{3 -1 roll put}bdf -/xpt -{exch put}bdf -/ndf -{ - exch dup where{ - pop pop pop - }{ - xdf - }ifelse -}def -/cdndf -{ - exch dup currentdict exch known{ - pop pop - }{ - exch def - }ifelse -}def -/gx -{get exec}bdf -/ps_level - /languagelevel where{ - pop systemdict/languagelevel gx - }{ - 1 - }ifelse -def -/level2 - ps_level 2 ge -def -/level3 - ps_level 3 ge -def -/ps_version - {version cvr}stopped{-1}if -def -/set_gvm -{currentglobal exch setglobal}bdf -/reset_gvm -{setglobal}bdf -/makereadonlyarray -{ - /packedarray where{pop packedarray - }{ - array astore readonly}ifelse -}bdf -/map_reserved_ink_name -{ - dup type/stringtype eq{ - dup/Red eq{ - pop(_Red_) - }{ - dup/Green eq{ - pop(_Green_) - }{ - dup/Blue eq{ - pop(_Blue_) - }{ - dup()cvn eq{ - pop(Process) - }if - }ifelse - }ifelse - }ifelse - }if -}bdf -/AGMUTIL_GSTATE 22 dict def -/get_gstate -{ - AGMUTIL_GSTATE begin - /AGMUTIL_GSTATE_clr_spc currentcolorspace def - /AGMUTIL_GSTATE_clr_indx 0 def - /AGMUTIL_GSTATE_clr_comps 12 array def - mark currentcolor counttomark - {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put - /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop - /AGMUTIL_GSTATE_fnt rootfont def - /AGMUTIL_GSTATE_lw currentlinewidth def - /AGMUTIL_GSTATE_lc currentlinecap def - /AGMUTIL_GSTATE_lj currentlinejoin def - /AGMUTIL_GSTATE_ml currentmiterlimit def - currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf - /AGMUTIL_GSTATE_sa currentstrokeadjust def - /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def - /AGMUTIL_GSTATE_op currentoverprint def - /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def - /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def - currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf - cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf - /AGMUTIL_GSTATE_ht currenthalftone def - /AGMUTIL_GSTATE_flt currentflat def - end -}def -/set_gstate -{ - AGMUTIL_GSTATE begin - AGMUTIL_GSTATE_clr_spc setcolorspace - AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get - /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor - AGMUTIL_GSTATE_fnt setfont - AGMUTIL_GSTATE_lw setlinewidth - AGMUTIL_GSTATE_lc setlinecap - AGMUTIL_GSTATE_lj setlinejoin - AGMUTIL_GSTATE_ml setmiterlimit - AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash - AGMUTIL_GSTATE_sa setstrokeadjust - AGMUTIL_GSTATE_clr_rnd setcolorrendering - AGMUTIL_GSTATE_op setoverprint - AGMUTIL_GSTATE_bg cvx setblackgeneration - AGMUTIL_GSTATE_ucr cvx setundercolorremoval - AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx - AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer - AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or - { - currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne - { - mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark - }if - }{ - AGMUTIL_GSTATE_ht sethalftone - }ifelse - AGMUTIL_GSTATE_flt setflat - end -}def -/get_gstate_and_matrix -{ - AGMUTIL_GSTATE begin - /AGMUTIL_GSTATE_ctm matrix currentmatrix def - end - get_gstate -}def -/set_gstate_and_matrix -{ - set_gstate - AGMUTIL_GSTATE begin - AGMUTIL_GSTATE_ctm setmatrix - end -}def -/AGMUTIL_str256 256 string def -/AGMUTIL_src256 256 string def -/AGMUTIL_dst64 64 string def -/AGMUTIL_srcLen nd -/AGMUTIL_ndx nd -/AGMUTIL_cpd nd -/capture_cpd{ - //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf -}def -/thold_halftone -{ - level3 - {sethalftone currenthalftone} - { - dup/HalftoneType get 3 eq - { - sethalftone currenthalftone - }{ - begin - Width Height mul{ - Thresholds read{pop}if - }repeat - end - currenthalftone - }ifelse - }ifelse -}def -/rdcmntline -{ - currentfile AGMUTIL_str256 readline pop - (%)anchorsearch{pop}if -}bdf -/filter_cmyk -{ - dup type/filetype ne{ - exch()/SubFileDecode filter - }{ - exch pop - } - ifelse - [ - exch - { - AGMUTIL_src256 readstring pop - dup length/AGMUTIL_srcLen exch def - /AGMUTIL_ndx 0 def - AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ - 1 index exch get - AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put - /AGMUTIL_ndx AGMUTIL_ndx 1 add def - }for - pop - AGMUTIL_dst64 0 AGMUTIL_ndx getinterval - } - bind - /exec cvx - ]cvx -}bdf -/filter_indexed_devn -{ - cvi Names length mul names_index add Lookup exch get -}bdf -/filter_devn -{ - 4 dict begin - /srcStr xdf - /dstStr xdf - dup type/filetype ne{ - 0()/SubFileDecode filter - }if - [ - exch - [ - /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx - currentdict/srcStr get/readstring cvx/pop cvx - /dup cvx/length cvx 0/gt cvx[ - Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx - names_index Names length currentdict/srcStr get length 1 sub{ - 1/index cvx/exch cvx/get cvx - currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx - Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx - }for - currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx - ]cvx/if cvx - /end cvx - ]cvx - bind - /exec cvx - ]cvx - end -}bdf -/AGMUTIL_imagefile nd -/read_image_file -{ - AGMUTIL_imagefile 0 setfileposition - 10 dict begin - /imageDict xdf - /imbufLen Width BitsPerComponent mul 7 add 8 idiv def - /imbufIdx 0 def - /origDataSource imageDict/DataSource get def - /origMultipleDataSources imageDict/MultipleDataSources get def - /origDecode imageDict/Decode get def - /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def - imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse - { - /imbufCnt imageDict/DataSource get length def - /imbufs imbufCnt array def - 0 1 imbufCnt 1 sub{ - /imbufIdx xdf - imbufs imbufIdx imbufLen string put - imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put - }for - DeviceN_PS2{ - imageDict begin - /DataSource[DataSource/devn_sep_datasource cvx]cvx def - /MultipleDataSources false def - /Decode[0 1]def - end - }if - }{ - /imbuf imbufLen string def - Indexed_DeviceN level3 not and DeviceN_NoneName or{ - /srcDataStrs[imageDict begin - currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse - { - Width Decode length 2 div mul cvi string - }repeat - end]def - imageDict begin - /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def - /Decode[0 1]def - end - }{ - imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put - imageDict/Decode[0 1]put - }ifelse - }ifelse - imageDict exch - load exec - imageDict/DataSource origDataSource put - imageDict/MultipleDataSources origMultipleDataSources put - imageDict/Decode origDecode put - end -}bdf -/write_image_file -{ - begin - {(AGMUTIL_imagefile)(w+)file}stopped{ - false - }{ - Adobe_AGM_Utils/AGMUTIL_imagefile xddf - 2 dict begin - /imbufLen Width BitsPerComponent mul 7 add 8 idiv def - MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ - /imbuf imbufLen string def - }if - 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ - pop - MultipleDataSources{ - 0 1 DataSource length 1 sub{ - DataSource type dup - /arraytype eq{ - pop DataSource exch gx - }{ - /filetype eq{ - DataSource exch get imbuf readstring pop - }{ - DataSource exch get - }ifelse - }ifelse - AGMUTIL_imagefile exch writestring - }for - }{ - DataSource type dup - /arraytype eq{ - pop DataSource exec - }{ - /filetype eq{ - DataSource imbuf readstring pop - }{ - DataSource - }ifelse - }ifelse - AGMUTIL_imagefile exch writestring - }ifelse - }for - end - true - }ifelse - end -}bdf -/close_image_file -{ - AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile -}def -statusdict/product known userdict/AGMP_current_show known not and{ - /pstr statusdict/product get def - pstr(HP LaserJet 2200)eq - pstr(HP LaserJet 4000 Series)eq or - pstr(HP LaserJet 4050 Series )eq or - pstr(HP LaserJet 8000 Series)eq or - pstr(HP LaserJet 8100 Series)eq or - pstr(HP LaserJet 8150 Series)eq or - pstr(HP LaserJet 5000 Series)eq or - pstr(HP LaserJet 5100 Series)eq or - pstr(HP Color LaserJet 4500)eq or - pstr(HP Color LaserJet 4600)eq or - pstr(HP LaserJet 5Si)eq or - pstr(HP LaserJet 1200 Series)eq or - pstr(HP LaserJet 1300 Series)eq or - pstr(HP LaserJet 4100 Series)eq or - { - userdict/AGMP_current_show/show load put - userdict/show{ - currentcolorspace 0 get - /Pattern eq - {false charpath f} - {AGMP_current_show}ifelse - }put - }if - currentdict/pstr undef -}if -/consumeimagedata -{ - begin - AGMIMG_init_common - currentdict/MultipleDataSources known not - {/MultipleDataSources false def}if - MultipleDataSources - { - DataSource 0 get type - dup/filetype eq - { - 1 dict begin - /flushbuffer Width cvi string def - 1 1 Height cvi - { - pop - 0 1 DataSource length 1 sub - { - DataSource exch get - flushbuffer readstring pop pop - }for - }for - end - }if - dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and - { - Width Height mul cvi - { - 0 1 DataSource length 1 sub - {dup DataSource exch gx length exch 0 ne{pop}if}for - dup 0 eq - {pop exit}if - sub dup 0 le - {exit}if - }loop - pop - }if - } - { - /DataSource load type - dup/filetype eq - { - 1 dict begin - /flushbuffer Width Decode length 2 idiv mul cvi string def - 1 1 Height{pop DataSource flushbuffer readstring pop pop}for - end - }if - dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and - { - Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul - { - DataSource length dup 0 eq - {pop exit}if - sub dup 0 le - {exit}if - }loop - pop - }if - }ifelse - end -}bdf -/addprocs -{ - 2{/exec load}repeat - 3 1 roll - [5 1 roll]bind cvx -}def -/modify_halftone_xfer -{ - currenthalftone dup length dict copy begin - currentdict 2 index known{ - 1 index load dup length dict copy begin - currentdict/TransferFunction known{ - /TransferFunction load - }{ - currenttransfer - }ifelse - addprocs/TransferFunction xdf - currentdict end def - currentdict end sethalftone - }{ - currentdict/TransferFunction known{ - /TransferFunction load - }{ - currenttransfer - }ifelse - addprocs/TransferFunction xdf - currentdict end sethalftone - pop - }ifelse -}def -/clonearray -{ - dup xcheck exch - dup length array exch - Adobe_AGM_Core/AGMCORE_tmp -1 ddf - { - Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf - dup type/dicttype eq - { - Adobe_AGM_Core/AGMCORE_tmp get - exch - clonedict - Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf - }if - dup type/arraytype eq - { - Adobe_AGM_Core/AGMCORE_tmp get exch - clonearray - Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf - }if - exch dup - Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put - }forall - exch{cvx}if -}bdf -/clonedict -{ - dup length dict - begin - { - dup type/dicttype eq - {clonedict}if - dup type/arraytype eq - {clonearray}if - def - }forall - currentdict - end -}bdf -/DeviceN_PS2 -{ - /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and -}bdf -/Indexed_DeviceN -{ - /indexed_colorspace_dict AGMCORE_gget dup null ne{ - dup/CSDBase known{ - /CSDBase get/CSD get_res/Names known - }{ - pop false - }ifelse - }{ - pop false - }ifelse -}bdf -/DeviceN_NoneName -{ - /Names where{ - pop - false Names - { - (None)eq or - }forall - }{ - false - }ifelse -}bdf -/DeviceN_PS2_inRip_seps -{ - /AGMCORE_in_rip_sep where - { - pop dup type dup/arraytype eq exch/packedarraytype eq or - { - dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and - { - /currentcolorspace exch AGMCORE_gput - false - }{ - true - }ifelse - }{ - true - }ifelse - }{ - true - }ifelse -}bdf -/base_colorspace_type -{ - dup type/arraytype eq{0 get}if -}bdf -/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse -{ - /pdfmark_5{cleartomark}bind def -}{ - /pdfmark_5{pdfmark}bind def -}ifelse -/ReadBypdfmark_5 -{ - currentfile exch 0 exch/SubFileDecode filter - /currentdistillerparams where - {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse - {flushfile cleartomark} - {/PUT pdfmark}ifelse -}bdf -/ReadBypdfmark_5_string -{ - 2 dict begin - /makerString exch def string/tmpString exch def - { - currentfile tmpString readline not{pop exit}if - makerString anchorsearch - { - pop pop cleartomark exit - }{ - 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5 - }ifelse - }loop - end -}bdf -/xpdfm -{ - { - dup 0 get/Label eq - { - aload length[exch 1 add 1 roll/PAGELABEL - }{ - aload pop - [{ThisPage}<<5 -2 roll>>/PUT - }ifelse - pdfmark_5 - }forall -}bdf -/lmt{ - dup 2 index le{exch}if pop dup 2 index ge{exch}if pop -}bdf -/int{ - dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop -}bdf -/ds{ - Adobe_AGM_Utils begin -}bdf -/dt{ - currentdict Adobe_AGM_Utils eq{ - end - }if -}bdf -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_AGM_Core 2.0 0 -%%Version: 2.0 0 -%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Core 209 dict dup begin put -/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def -/AGMCORE_str256 256 string def -/AGMCORE_save nd -/AGMCORE_graphicsave nd -/AGMCORE_c 0 def -/AGMCORE_m 0 def -/AGMCORE_y 0 def -/AGMCORE_k 0 def -/AGMCORE_cmykbuf 4 array def -/AGMCORE_screen[currentscreen]cvx def -/AGMCORE_tmp 0 def -/AGMCORE_&setgray nd -/AGMCORE_&setcolor nd -/AGMCORE_&setcolorspace nd -/AGMCORE_&setcmykcolor nd -/AGMCORE_cyan_plate nd -/AGMCORE_magenta_plate nd -/AGMCORE_yellow_plate nd -/AGMCORE_black_plate nd -/AGMCORE_plate_ndx nd -/AGMCORE_get_ink_data nd -/AGMCORE_is_cmyk_sep nd -/AGMCORE_host_sep nd -/AGMCORE_avoid_L2_sep_space nd -/AGMCORE_distilling nd -/AGMCORE_composite_job nd -/AGMCORE_producing_seps nd -/AGMCORE_ps_level -1 def -/AGMCORE_ps_version -1 def -/AGMCORE_environ_ok nd -/AGMCORE_CSD_cache 0 dict def -/AGMCORE_currentoverprint false def -/AGMCORE_deltaX nd -/AGMCORE_deltaY nd -/AGMCORE_name nd -/AGMCORE_sep_special nd -/AGMCORE_err_strings 4 dict def -/AGMCORE_cur_err nd -/AGMCORE_current_spot_alias false def -/AGMCORE_inverting false def -/AGMCORE_feature_dictCount nd -/AGMCORE_feature_opCount nd -/AGMCORE_feature_ctm nd -/AGMCORE_ConvertToProcess false def -/AGMCORE_Default_CTM matrix def -/AGMCORE_Default_PageSize nd -/AGMCORE_Default_flatness nd -/AGMCORE_currentbg nd -/AGMCORE_currentucr nd -/AGMCORE_pattern_paint_type 0 def -/knockout_unitsq nd -currentglobal true setglobal -[/CSA/Gradient/Procedure] -{ - /Generic/Category findresource dup length dict copy/Category defineresource pop -}forall -setglobal -/AGMCORE_key_known -{ - where{ - /Adobe_AGM_Core_Id known - }{ - false - }ifelse -}ndf -/flushinput -{ - save - 2 dict begin - /CompareBuffer 3 -1 roll def - /readbuffer 256 string def - mark - { - currentfile readbuffer{readline}stopped - {cleartomark mark} - { - not - {pop exit} - if - CompareBuffer eq - {exit} - if - }ifelse - }loop - cleartomark - end - restore -}bdf -/getspotfunction -{ - AGMCORE_screen exch pop exch pop - dup type/dicttype eq{ - dup/HalftoneType get 1 eq{ - /SpotFunction get - }{ - dup/HalftoneType get 2 eq{ - /GraySpotFunction get - }{ - pop - { - abs exch abs 2 copy add 1 gt{ - 1 sub dup mul exch 1 sub dup mul add 1 sub - }{ - dup mul exch dup mul add 1 exch sub - }ifelse - }bind - }ifelse - }ifelse - }if -}def -/np -{newpath}bdf -/clp_npth -{clip np}def -/eoclp_npth -{eoclip np}def -/npth_clp -{np clip}def -/graphic_setup -{ - /AGMCORE_graphicsave save store - concat - 0 setgray - 0 setlinecap - 0 setlinejoin - 1 setlinewidth - []0 setdash - 10 setmiterlimit - np - false setoverprint - false setstrokeadjust - //Adobe_AGM_Core/spot_alias gx - /Adobe_AGM_Image where{ - pop - Adobe_AGM_Image/spot_alias 2 copy known{ - gx - }{ - pop pop - }ifelse - }if - /sep_colorspace_dict null AGMCORE_gput - 100 dict begin - /dictstackcount countdictstack def - /showpage{}def - mark -}def -/graphic_cleanup -{ - cleartomark - dictstackcount 1 countdictstack 1 sub{end}for - end - AGMCORE_graphicsave restore -}def -/compose_error_msg -{ - grestoreall initgraphics - /Helvetica findfont 10 scalefont setfont - /AGMCORE_deltaY 100 def - /AGMCORE_deltaX 310 def - clippath pathbbox np pop pop 36 add exch 36 add exch moveto - 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto - 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath - 0 AGMCORE_&setgray - gsave 1 AGMCORE_&setgray fill grestore - 1 setlinewidth gsave stroke grestore - currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto - /AGMCORE_deltaY 12 def - /AGMCORE_tmp 0 def - AGMCORE_err_strings exch get - { - dup 32 eq - { - pop - AGMCORE_str256 0 AGMCORE_tmp getinterval - stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt - { - currentpoint AGMCORE_deltaY sub exch pop - clippath pathbbox pop pop pop 44 add exch moveto - }if - AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show - 0 1 AGMCORE_str256 length 1 sub - { - AGMCORE_str256 exch 0 put - }for - /AGMCORE_tmp 0 def - }{ - AGMCORE_str256 exch AGMCORE_tmp xpt - /AGMCORE_tmp AGMCORE_tmp 1 add def - }ifelse - }forall -}bdf -/AGMCORE_CMYKDeviceNColorspaces[ - [/Separation/None/DeviceCMYK{0 0 0}] - [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] - [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] - [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] - [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] - [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] - [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] - [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] - [/Separation(Cyan)/DeviceCMYK{0 0 0}] - [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] - [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] - [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] - [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] - [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] - [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] - [/DeviceCMYK] -]def -/ds{ - Adobe_AGM_Core begin - /currentdistillerparams where - { - pop currentdistillerparams/CoreDistVersion get 5000 lt - {<>setdistillerparams}if - }if - /AGMCORE_ps_version xdf - /AGMCORE_ps_level xdf - errordict/AGM_handleerror known not{ - errordict/AGM_handleerror errordict/handleerror get put - errordict/handleerror{ - Adobe_AGM_Core begin - $error/newerror get AGMCORE_cur_err null ne and{ - $error/newerror false put - AGMCORE_cur_err compose_error_msg - }if - $error/newerror true put - end - errordict/AGM_handleerror get exec - }bind put - }if - /AGMCORE_environ_ok - ps_level AGMCORE_ps_level ge - ps_version AGMCORE_ps_version ge and - AGMCORE_ps_level -1 eq or - def - AGMCORE_environ_ok not - {/AGMCORE_cur_err/AGMCORE_bad_environ def}if - /AGMCORE_&setgray systemdict/setgray get def - level2{ - /AGMCORE_&setcolor systemdict/setcolor get def - /AGMCORE_&setcolorspace systemdict/setcolorspace get def - }if - /AGMCORE_currentbg currentblackgeneration def - /AGMCORE_currentucr currentundercolorremoval def - /AGMCORE_Default_flatness currentflat def - /AGMCORE_distilling - /product where{ - pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and - }{ - false - }ifelse - def - /AGMCORE_GSTATE AGMCORE_key_known not{ - /AGMCORE_GSTATE 21 dict def - /AGMCORE_tmpmatrix matrix def - /AGMCORE_gstack 32 array def - /AGMCORE_gstackptr 0 def - /AGMCORE_gstacksaveptr 0 def - /AGMCORE_gstackframekeys 14 def - /AGMCORE_&gsave/gsave ldf - /AGMCORE_&grestore/grestore ldf - /AGMCORE_&grestoreall/grestoreall ldf - /AGMCORE_&save/save ldf - /AGMCORE_&setoverprint/setoverprint ldf - /AGMCORE_gdictcopy{ - begin - {def}forall - end - }def - /AGMCORE_gput{ - AGMCORE_gstack AGMCORE_gstackptr get - 3 1 roll - put - }def - /AGMCORE_gget{ - AGMCORE_gstack AGMCORE_gstackptr get - exch - get - }def - /gsave{ - AGMCORE_&gsave - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /grestore{ - AGMCORE_&grestore - AGMCORE_gstackptr 1 sub - dup AGMCORE_gstacksaveptr lt{1 add}if - dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known - {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse - /AGMCORE_gstackptr exch store - }def - /grestoreall{ - AGMCORE_&grestoreall - /AGMCORE_gstackptr AGMCORE_gstacksaveptr store - }def - /save{ - AGMCORE_&save - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gstackptr 1 add - dup 32 ge{limitcheck}if - /AGMCORE_gstackptr exch store - /AGMCORE_gstacksaveptr AGMCORE_gstackptr store - AGMCORE_gstack AGMCORE_gstackptr get - AGMCORE_gdictcopy - }def - /setoverprint{ - dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint - }def - 0 1 AGMCORE_gstack length 1 sub{ - AGMCORE_gstack exch AGMCORE_gstackframekeys dict put - }for - }if - level3/AGMCORE_&sysshfill AGMCORE_key_known not and - { - /AGMCORE_&sysshfill systemdict/shfill get def - /AGMCORE_&sysmakepattern systemdict/makepattern get def - /AGMCORE_&usrmakepattern/makepattern load def - }if - /currentcmykcolor[0 0 0 0]AGMCORE_gput - /currentstrokeadjust false AGMCORE_gput - /currentcolorspace[/DeviceGray]AGMCORE_gput - /sep_tint 0 AGMCORE_gput - /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput - /sep_colorspace_dict null AGMCORE_gput - /devicen_colorspace_dict null AGMCORE_gput - /indexed_colorspace_dict null AGMCORE_gput - /currentcolor_intent()AGMCORE_gput - /customcolor_tint 1 AGMCORE_gput - /absolute_colorimetric_crd null AGMCORE_gput - /relative_colorimetric_crd null AGMCORE_gput - /saturation_crd null AGMCORE_gput - /perceptual_crd null AGMCORE_gput - currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf - cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf - << - /MaxPatternItem currentsystemparams/MaxPatternCache get - >> - setuserparams - end -}def -/ps -{ - /setcmykcolor where{ - pop - Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put - }if - Adobe_AGM_Core begin - /setcmykcolor - { - 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput - 1 sub 4 1 roll - 3{ - 3 index add neg dup 0 lt{ - pop 0 - }if - 3 1 roll - }repeat - setrgbcolor pop - }ndf - /currentcmykcolor - { - /currentcmykcolor AGMCORE_gget aload pop - }ndf - /setoverprint - {pop}ndf - /currentoverprint - {false}ndf - /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def - /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def - /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def - /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def - /AGMCORE_plate_ndx - AGMCORE_cyan_plate{ - 0 - }{ - AGMCORE_magenta_plate{ - 1 - }{ - AGMCORE_yellow_plate{ - 2 - }{ - AGMCORE_black_plate{ - 3 - }{ - 4 - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_have_reported_unsupported_color_space false def - /AGMCORE_report_unsupported_color_space - { - AGMCORE_have_reported_unsupported_color_space false eq - { - (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== - Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf - }if - }def - /AGMCORE_composite_job - AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def - /AGMCORE_in_rip_sep - /AGMCORE_in_rip_sep where{ - pop AGMCORE_in_rip_sep - }{ - AGMCORE_distilling - { - false - }{ - userdict/Adobe_AGM_OnHost_Seps known{ - false - }{ - level2{ - currentpagedevice/Separations 2 copy known{ - get - }{ - pop pop false - }ifelse - }{ - false - }ifelse - }ifelse - }ifelse - }ifelse - def - /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def - /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def - /AGM_preserve_spots - /AGM_preserve_spots where{ - pop AGM_preserve_spots - }{ - AGMCORE_distilling AGMCORE_producing_seps or - }ifelse - def - /AGM_is_distiller_preserving_spotimages - { - currentdistillerparams/PreserveOverprintSettings known - { - currentdistillerparams/PreserveOverprintSettings get - { - currentdistillerparams/ColorConversionStrategy known - { - currentdistillerparams/ColorConversionStrategy get - /sRGB ne - }{ - true - }ifelse - }{ - false - }ifelse - }{ - false - }ifelse - }def - /convert_spot_to_process where{pop}{ - /convert_spot_to_process - { - //Adobe_AGM_Core begin - dup map_alias{ - /Name get exch pop - }if - dup dup(None)eq exch(All)eq or - { - pop false - }{ - AGMCORE_host_sep - { - gsave - 1 0 0 0 setcmykcolor currentgray 1 exch sub - 0 1 0 0 setcmykcolor currentgray 1 exch sub - 0 0 1 0 setcmykcolor currentgray 1 exch sub - 0 0 0 1 setcmykcolor currentgray 1 exch sub - add add add 0 eq - { - pop false - }{ - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - }ifelse - grestore - }{ - AGMCORE_distilling - { - pop AGM_is_distiller_preserving_spotimages not - }{ - //Adobe_AGM_Core/AGMCORE_name xddf - false - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq - AGMUTIL_cpd/OverrideSeparations known and - { - AGMUTIL_cpd/OverrideSeparations get - { - /HqnSpots/ProcSet resourcestatus - { - pop pop pop true - }if - }if - }if - { - AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not - }{ - gsave - [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace - false - AGMUTIL_cpd/SeparationColorNames 2 copy known - { - get - {AGMCORE_name eq or}forall - not - }{ - pop pop pop true - }ifelse - grestore - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - }ifelse - /convert_to_process where{pop}{ - /convert_to_process - { - dup length 0 eq - { - pop false - }{ - AGMCORE_host_sep - { - dup true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process and}ifelse - } - forall - { - true exch - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - (Black)eq or and - }forall - not - }{pop false}ifelse - }{ - false exch - { - /PhotoshopDuotoneList where{pop false}{true}ifelse - { - dup(Cyan)eq exch - dup(Magenta)eq 3 -1 roll or exch - dup(Yellow)eq 3 -1 roll or exch - dup(Black)eq 3 -1 roll or - {pop} - {convert_spot_to_process or}ifelse - } - { - convert_spot_to_process or - } - ifelse - } - forall - }ifelse - }ifelse - }def - }ifelse - /AGMCORE_avoid_L2_sep_space - version cvr 2012 lt - level2 and - AGMCORE_producing_seps not and - def - /AGMCORE_is_cmyk_sep - AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or - def - /AGM_avoid_0_cmyk where{ - pop AGM_avoid_0_cmyk - }{ - AGM_preserve_spots - userdict/Adobe_AGM_OnHost_Seps known - userdict/Adobe_AGM_InRip_Seps known or - not and - }ifelse - { - /setcmykcolor[ - { - 4 copy add add add 0 eq currentoverprint and{ - pop 0.0005 - }if - }/exec cvx - /AGMCORE_&setcmykcolor load dup type/operatortype ne{ - /exec cvx - }if - ]cvx def - }if - /AGMCORE_IsSeparationAProcessColor - { - dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or - }def - AGMCORE_host_sep{ - /setcolortransfer - { - AGMCORE_cyan_plate{ - pop pop pop - }{ - AGMCORE_magenta_plate{ - 4 3 roll pop pop pop - }{ - AGMCORE_yellow_plate{ - 4 2 roll pop pop pop - }{ - 4 1 roll pop pop pop - }ifelse - }ifelse - }ifelse - settransfer - } - def - /AGMCORE_get_ink_data - AGMCORE_cyan_plate{ - {pop pop pop} - }{ - AGMCORE_magenta_plate{ - {4 3 roll pop pop pop} - }{ - AGMCORE_yellow_plate{ - {4 2 roll pop pop pop} - }{ - {4 1 roll pop pop pop} - }ifelse - }ifelse - }ifelse - def - /AGMCORE_RemoveProcessColorNames - { - 1 dict begin - /filtername - { - dup/Cyan eq 1 index(Cyan)eq or - {pop(_cyan_)}if - dup/Magenta eq 1 index(Magenta)eq or - {pop(_magenta_)}if - dup/Yellow eq 1 index(Yellow)eq or - {pop(_yellow_)}if - dup/Black eq 1 index(Black)eq or - {pop(_black_)}if - }def - dup type/arraytype eq - {[exch{filtername}forall]} - {filtername}ifelse - end - }def - level3{ - /AGMCORE_IsCurrentColor - { - dup AGMCORE_IsSeparationAProcessColor - { - AGMCORE_plate_ndx 0 eq - {dup(Cyan)eq exch/Cyan eq or}if - AGMCORE_plate_ndx 1 eq - {dup(Magenta)eq exch/Magenta eq or}if - AGMCORE_plate_ndx 2 eq - {dup(Yellow)eq exch/Yellow eq or}if - AGMCORE_plate_ndx 3 eq - {dup(Black)eq exch/Black eq or}if - AGMCORE_plate_ndx 4 eq - {pop false}if - }{ - gsave - false setoverprint - current_spot_alias false set_spot_alias - 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor - set_spot_alias - currentgray 1 ne - grestore - }ifelse - }def - /AGMCORE_filter_functiondatasource - { - 5 dict begin - /data_in xdf - data_in type/stringtype eq - { - /ncomp xdf - /comp xdf - /string_out data_in length ncomp idiv string def - 0 ncomp data_in length 1 sub - { - string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put - }for - string_out - }{ - string/string_in xdf - /string_out 1 string def - /component xdf - [ - data_in string_in/readstring cvx - [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx - [/pop cvx()]cvx/ifelse cvx - ]cvx/ReusableStreamDecode filter - }ifelse - end - }def - /AGMCORE_separateShadingFunction - { - 2 dict begin - /paint? xdf - /channel xdf - dup type/dicttype eq - { - begin - FunctionType 0 eq - { - /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def - currentdict/Decode known - {/Decode Decode channel 2 mul 2 getinterval def}if - paint? not - {/Decode[1 1]def}if - }if - FunctionType 2 eq - { - paint? - { - /C0[C0 channel get 1 exch sub]def - /C1[C1 channel get 1 exch sub]def - }{ - /C0[1]def - /C1[1]def - }ifelse - }if - FunctionType 3 eq - { - /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def - }if - currentdict/Range known - {/Range[0 1]def}if - currentdict - end}{ - channel get 0 paint? AGMCORE_separateShadingFunction - }ifelse - end - }def - /AGMCORE_separateShading - { - 3 -1 roll begin - currentdict/Function known - { - currentdict/Background known - {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if - Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf - /ColorSpace[/DeviceGray]def - }{ - ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }{ - ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put - }ifelse - ColorSpace 0 get/Separation eq - { - { - [1/exch cvx/sub cvx]cvx - }{ - [/pop cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll put - pop - }{ - { - [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx - }{ - pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx - }ifelse - ColorSpace 3 3 -1 roll bind put - }ifelse - ColorSpace 2/DeviceGray put - }ifelse - end - }def - /AGMCORE_separateShadingDict - { - dup/ColorSpace get - dup type/arraytype ne - {[exch]}if - dup 0 get/DeviceCMYK eq - { - exch begin - currentdict - AGMCORE_cyan_plate - {0 true}if - AGMCORE_magenta_plate - {1 true}if - AGMCORE_yellow_plate - {2 true}if - AGMCORE_black_plate - {3 true}if - AGMCORE_plate_ndx 4 eq - {0 false}if - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - currentdict - end exch - }if - dup 0 get/Separation eq - { - exch begin - ColorSpace 1 get dup/None ne exch/All ne and - { - ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /Separation - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - }if - }ifelse - }{ - currentdict ColorSpace 1 get AGMCORE_IsCurrentColor - 0 exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - }if - currentdict - end exch - }if - dup 0 get/DeviceN eq - { - exch begin - ColorSpace 1 get convert_to_process - { - ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq - { - /ColorSpace - [ - /DeviceN - ColorSpace 1 get - /DeviceGray - [ - ColorSpace 3 get/exec cvx - 4 AGMCORE_plate_ndx sub -1/roll cvx - 4 1/roll cvx - 3[/pop cvx]cvx/repeat cvx - 1/exch cvx/sub cvx - ]cvx - ]def - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - currentdict 0 false AGMCORE_separateShading - /ColorSpace[/DeviceGray]def - }if - }ifelse - }{ - currentdict - false -1 ColorSpace 1 get - { - AGMCORE_IsCurrentColor - { - 1 add - exch pop true exch exit - }if - 1 add - }forall - exch - dup not currentoverprint and - {/AGMCORE_ignoreshade true def}if - AGMCORE_separateShading - }ifelse - currentdict - end exch - }if - dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not - { - exch begin - ColorSpace dup type/arraytype eq - {0 get}if - /DeviceGray ne - { - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate not - { - ColorSpace 0 get/CIEBasedA eq - { - /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def - }if - ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or - { - /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def - }if - ColorSpace 0 get/CIEBasedDEFG eq - { - /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def - }if - currentdict 0 false AGMCORE_separateShading - }if - }if - currentdict - end exch - }if - pop - dup/AGMCORE_ignoreshade known - { - begin - /ColorSpace[/Separation(None)/DeviceGray{}]def - currentdict end - }if - }def - /shfill - { - AGMCORE_separateShadingDict - dup/AGMCORE_ignoreshade known - {pop} - {AGMCORE_&sysshfill}ifelse - }def - /makepattern - { - exch - dup/PatternType get 2 eq - { - clonedict - begin - /Shading Shading AGMCORE_separateShadingDict def - Shading/AGMCORE_ignoreshade known - currentdict end exch - {pop<>}if - exch AGMCORE_&sysmakepattern - }{ - exch AGMCORE_&usrmakepattern - }ifelse - }def - }if - }if - AGMCORE_in_rip_sep{ - /setcustomcolor - { - exch aload pop - dup 7 1 roll inRip_spot_has_ink not { - 4{4 index mul 4 1 roll} - repeat - /DeviceCMYK setcolorspace - 6 -2 roll pop pop - }{ - //Adobe_AGM_Core begin - /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf - end - [/Separation 4 -1 roll/DeviceCMYK - {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} - ] - setcolorspace - }ifelse - setcolor - }ndf - /setseparationgray - { - [/Separation(All)/DeviceGray{}]setcolorspace_opt - 1 exch sub setcolor - }ndf - }{ - /setseparationgray - { - AGMCORE_&setgray - }ndf - }ifelse - /findcmykcustomcolor - { - 5 makereadonlyarray - }ndf - /setcustomcolor - { - exch aload pop pop - 4{4 index mul 4 1 roll}repeat - setcmykcolor pop - }ndf - /has_color - /colorimage where{ - AGMCORE_producing_seps{ - pop true - }{ - systemdict eq - }ifelse - }{ - false - }ifelse - def - /map_index - { - 1 index mul exch getinterval{255 div}forall - }bdf - /map_indexed_devn - { - Lookup Names length 3 -1 roll cvi map_index - }bdf - /n_color_components - { - base_colorspace_type - dup/DeviceGray eq{ - pop 1 - }{ - /DeviceCMYK eq{ - 4 - }{ - 3 - }ifelse - }ifelse - }bdf - level2{ - /mo/moveto ldf - /li/lineto ldf - /cv/curveto ldf - /knockout_unitsq - { - 1 setgray - 0 0 1 1 rectfill - }def - level2/setcolorspace AGMCORE_key_known not and{ - /AGMCORE_&&&setcolorspace/setcolorspace ldf - /AGMCORE_ReplaceMappedColor - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - /AGMCORE_SpotAliasAry2 where{ - begin - dup 0 get dup/Separation eq - { - pop - dup length array copy - dup dup 1 get - current_spot_alias - { - dup map_alias - { - false set_spot_alias - dup 1 exch setsepcolorspace - true set_spot_alias - begin - /sep_colorspace_dict currentdict AGMCORE_gput - pop pop pop - [ - /Separation Name - CSA map_csa - MappedCSA - /sep_colorspace_proc load - ] - dup Name - end - }if - }if - map_reserved_ink_name 1 xpt - }{ - /DeviceN eq - { - dup length array copy - dup dup 1 get[ - exch{ - current_spot_alias{ - dup map_alias{ - /Name get exch pop - }if - }if - map_reserved_ink_name - }forall - ]1 xpt - }if - }ifelse - end - }if - }if - }def - /setcolorspace - { - dup type dup/arraytype eq exch/packedarraytype eq or - { - dup 0 get/Indexed eq - { - AGMCORE_distilling - { - /PhotoshopDuotoneList where - { - pop false - }{ - true - }ifelse - }{ - true - }ifelse - { - aload pop 3 -1 roll - AGMCORE_ReplaceMappedColor - 3 1 roll 4 array astore - }if - }{ - AGMCORE_ReplaceMappedColor - }ifelse - }if - DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if - }def - }if - }{ - /adj - { - currentstrokeadjust{ - transform - 0.25 sub round 0.25 add exch - 0.25 sub round 0.25 add exch - itransform - }if - }def - /mo{ - adj moveto - }def - /li{ - adj lineto - }def - /cv{ - 6 2 roll adj - 6 2 roll adj - 6 2 roll adj curveto - }def - /knockout_unitsq - { - 1 setgray - 8 8 1[8 0 0 8 0 0]{}image - }def - /currentstrokeadjust{ - /currentstrokeadjust AGMCORE_gget - }def - /setstrokeadjust{ - /currentstrokeadjust exch AGMCORE_gput - }def - /setcolorspace - { - /currentcolorspace exch AGMCORE_gput - }def - /currentcolorspace - { - /currentcolorspace AGMCORE_gget - }def - /setcolor_devicecolor - { - base_colorspace_type - dup/DeviceGray eq{ - pop setgray - }{ - /DeviceCMYK eq{ - setcmykcolor - }{ - setrgbcolor - }ifelse - }ifelse - }def - /setcolor - { - currentcolorspace 0 get - dup/DeviceGray ne{ - dup/DeviceCMYK ne{ - dup/DeviceRGB ne{ - dup/Separation eq{ - pop - currentcolorspace 3 gx - currentcolorspace 2 get - }{ - dup/Indexed eq{ - pop - currentcolorspace 3 get dup type/stringtype eq{ - currentcolorspace 1 get n_color_components - 3 -1 roll map_index - }{ - exec - }ifelse - currentcolorspace 1 get - }{ - /AGMCORE_cur_err/AGMCORE_invalid_color_space def - AGMCORE_invalid_color_space - }ifelse - }ifelse - }if - }if - }if - setcolor_devicecolor - }def - }ifelse - /sop/setoverprint ldf - /lw/setlinewidth ldf - /lc/setlinecap ldf - /lj/setlinejoin ldf - /ml/setmiterlimit ldf - /dsh/setdash ldf - /sadj/setstrokeadjust ldf - /gry/setgray ldf - /rgb/setrgbcolor ldf - /cmyk[ - /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx - /setcmykcolor load dup type/operatortype ne{/exec cvx}if - ]cvx bdf - level3 AGMCORE_host_sep not and{ - /nzopmsc{ - 6 dict begin - /kk exch def - /yy exch def - /mm exch def - /cc exch def - /sum 0 def - cc 0 ne{/sum sum 2#1000 or def cc}if - mm 0 ne{/sum sum 2#0100 or def mm}if - yy 0 ne{/sum sum 2#0010 or def yy}if - kk 0 ne{/sum sum 2#0001 or def kk}if - AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace - sum 0 eq{0}if - end - setcolor - }bdf - }{ - /nzopmsc/cmyk ldf - }ifelse - /sep/setsepcolor ldf - /devn/setdevicencolor ldf - /idx/setindexedcolor ldf - /colr/setcolor ldf - /csacrd/set_csa_crd ldf - /sepcs/setsepcolorspace ldf - /devncs/setdevicencolorspace ldf - /idxcs/setindexedcolorspace ldf - /cp/closepath ldf - /clp/clp_npth ldf - /eclp/eoclp_npth ldf - /f/fill ldf - /ef/eofill ldf - /@/stroke ldf - /nclp/npth_clp ldf - /gset/graphic_setup ldf - /gcln/graphic_cleanup ldf - /ct/concat ldf - /cf/currentfile ldf - /fl/filter ldf - /rs/readstring ldf - /AGMCORE_def_ht currenthalftone def - /clonedict Adobe_AGM_Utils begin/clonedict load end def - /clonearray Adobe_AGM_Utils begin/clonearray load end def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall - /getrampcolor - { - /indx exch def - 0 1 NumComp 1 sub - { - dup - Samples exch get - dup type/stringtype eq{indx get}if - exch - Scaling exch get aload pop - 3 1 roll - mul add - }for - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /sssetbackground{ - aload pop - ColorSpaceFamily/Separation eq - {sep} - { - ColorSpaceFamily/DeviceN eq - {devn}{setcolor}ifelse - }ifelse - }bdf - /RadialShade - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /r2 xdf - /c2y xdf - /c2x xdf - /r1 xdf - /c1y xdf - /c1x xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - c1x c2x eq - { - c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope c2y c1y sub c2x c1x sub div def - /theta slope 1 atan def - c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if - c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if - }ifelse - gsave - clippath - c1x c1y translate - theta rotate - -90 rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax xdf - /xMax xdf - /yMin xdf - /xMin xdf - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - /max{2 copy gt{pop}{exch pop}ifelse}bdf - /min{2 copy lt{pop}{exch pop}ifelse}bdf - rampdict begin - 40 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - c1x c1y translate - theta rotate - -90 rotate - /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def - /c1y 0 def - /c1x 0 def - /c2x 0 def - ext0 - { - 0 getrampcolor - c2y r2 add r1 sub 0.0001 lt - { - c1x c1y r1 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2y r1 add r2 le - { - c1x c1y r1 0 360 arc - fill - } - { - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r1 neg def - /p1y c1y def - /p2x r1 def - /p2y c1y def - p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y p1x SS1 div neg def - /SS2 90 theta sub dup sin exch cos div def - /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y p2x SS2 div neg def - r1 r2 gt - { - /L1maxX p1x yMin p1y sub SS1 div add def - /L2maxX p2x yMin p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - c1x c2x sub dup mul - c1y c2y sub dup mul - add 0.5 exp - 0 dtransform - dup mul exch dup mul add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - /hires xdf - hires mul - /numpix xdf - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - /xInc c2x c1x sub numsteps div def - /yInc c2y c1y sub numsteps div def - /rInc r2 r1 sub numsteps div def - /cx c1x def - /cy c1y def - /radius r1 def - np - xInc 0 eq yInc 0 eq rInc 0 eq and and - { - 0 getrampcolor - cx cy radius 0 360 arc - stroke - NumSamples 1 sub getrampcolor - cx cy radius 72 hires div add 0 360 arc - 0 setlinewidth - stroke - }{ - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - cx cy radius 0 360 arc - /cx cx xInc add def - /cy cy yInc add def - /radius radius rInc add def - cx cy radius 360 0 arcn - eofill - rampIndxInc add - }repeat - pop - }ifelse - ext1 - { - c2y r2 add r1 lt - { - c2x c2y r2 0 360 arc - fill - }{ - c2y r1 add r2 sub 0.0001 le - { - c2x c2y r2 360 0 arcn - pathbbox - /aymax exch def - /axmax exch def - /aymin exch def - /axmin exch def - /bxMin xMin axmin min def - /byMin yMin aymin min def - /bxMax xMax axmax max def - /byMax yMax aymax max def - bxMin byMin moveto - bxMax byMin lineto - bxMax byMax lineto - bxMin byMax lineto - bxMin byMin lineto - eofill - }{ - c2x c2y r2 0 360 arc fill - r1 r2 eq - { - /p1x r2 neg def - /p1y c2y def - /p2x r2 def - /p2y c2y def - p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto - fill - }{ - /AA r2 r1 sub c2y div def - AA -1 eq - {/theta 89.99 def} - {/theta AA 1 AA dup mul sub sqrt div 1 atan def} - ifelse - /SS1 90 theta add dup sin exch cos div def - /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def - /p1y c2y p1x SS1 div sub def - /SS2 90 theta sub dup sin exch cos div def - /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def - /p2y c2y p2x SS2 div sub def - r1 r2 lt - { - /L1maxX p1x yMax p1y sub SS1 div add def - /L2maxX p2x yMax p2y sub SS2 div add def - }{ - /L1maxX 0 def - /L2maxX 0 def - }ifelse - p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto - L1maxX L1maxX p1x sub SS1 mul p1y add lineto - fill - }ifelse - }ifelse - }ifelse - }if - grestore - grestore - end - end - end - }ifelse - }bdf - /GenStrips - { - 40 dict begin - /ColorSpaceFamily xdf - /background xdf - /ext1 xdf - /ext0 xdf - /BBox xdf - /y2 xdf - /x2 xdf - /y1 xdf - /x1 xdf - /rampdict xdf - /setinkoverprint where{pop/setinkoverprint{pop}def}if - gsave - BBox length 0 gt - { - np - BBox 0 get BBox 1 get moveto - BBox 2 get BBox 0 get sub 0 rlineto - 0 BBox 3 get BBox 1 get sub rlineto - BBox 2 get BBox 0 get sub neg 0 rlineto - closepath - clip - np - }if - x1 x2 eq - { - y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse - }{ - /slope y2 y1 sub x2 x1 sub div def - /theta slope 1 atan def - x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if - x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if - } - ifelse - gsave - clippath - x1 y1 translate - theta rotate - {pathbbox}stopped - {0 0 0 0}if - /yMax exch def - /xMax exch def - /yMin exch def - /xMin exch def - grestore - xMax xMin eq yMax yMin eq or - { - grestore - end - }{ - rampdict begin - 20 dict begin - background length 0 gt{background sssetbackground gsave clippath fill grestore}if - gsave - x1 y1 translate - theta rotate - /xStart 0 def - /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def - /ySpan yMax yMin sub def - /numsteps NumSamples def - /rampIndxInc 1 def - /subsampling false def - xStart 0 transform - xEnd 0 transform - 3 -1 roll - sub dup mul - 3 1 roll - sub dup mul - add 0.5 exp 72 div - 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt - 1 index 1 index lt{exch}if pop - mul - /numpix xdf - numpix 0 ne - { - NumSamples numpix div 0.5 gt - { - /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def - /rampIndxInc NumSamples 1 sub numsteps div def - /subsampling true def - }if - }if - ext0 - { - 0 getrampcolor - xMin xStart lt - { - xMin yMin xMin neg ySpan rectfill - }if - }if - /xInc xEnd xStart sub numsteps div def - /x xStart def - 0 - numsteps - { - dup - subsampling{round cvi}if - getrampcolor - x yMin xInc ySpan rectfill - /x x xInc add def - rampIndxInc add - }repeat - pop - ext1{ - xMax xEnd gt - { - xEnd yMin xMax xEnd sub ySpan rectfill - }if - }if - grestore - grestore - end - end - end - }ifelse - }bdf -}def -/pt -{ - end -}def -/dt{ -}def -/pgsv{ - //Adobe_AGM_Core/AGMCORE_save save put -}def -/pgrs{ - //Adobe_AGM_Core/AGMCORE_save get restore -}def -systemdict/findcolorrendering known{ - /findcolorrendering systemdict/findcolorrendering get def -}if -systemdict/setcolorrendering known{ - /setcolorrendering systemdict/setcolorrendering get def -}if -/test_cmyk_color_plate -{ - gsave - setcmykcolor currentgray 1 ne - grestore -}def -/inRip_spot_has_ink -{ - dup//Adobe_AGM_Core/AGMCORE_name xddf - convert_spot_to_process not -}def -/map255_to_range -{ - 1 index sub - 3 -1 roll 255 div mul add -}def -/set_csa_crd -{ - /sep_colorspace_dict null AGMCORE_gput - begin - CSA get_csa_by_name setcolorspace_opt - set_crd - end -} -def -/map_csa -{ - currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse - {pop}{get_csa_by_name/MappedCSA xdf}ifelse -}def -/setsepcolor -{ - /sep_colorspace_dict AGMCORE_gget begin - dup/sep_tint exch AGMCORE_gput - TintProc - end -}def -/setdevicencolor -{ - /devicen_colorspace_dict AGMCORE_gget begin - Names length copy - Names length 1 sub -1 0 - { - /devicen_tints AGMCORE_gget 3 1 roll xpt - }for - TintProc - end -}def -/sep_colorspace_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - currentdict/Components known{ - Components aload pop - TintMethod/Lab eq{ - 2{AGMCORE_tmp mul NComponents 1 roll}repeat - LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll - }{ - TintMethod/Subtractive eq{ - NComponents{ - AGMCORE_tmp mul NComponents 1 roll - }repeat - }{ - NComponents{ - 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll - }repeat - }ifelse - }ifelse - }{ - ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get - aload pop - }ifelse - end -}def -/sep_colorspace_gray_proc -{ - /AGMCORE_tmp exch store - /sep_colorspace_dict AGMCORE_gget begin - GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get - end -}def -/sep_proc_name -{ - dup 0 get - dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ - pop[/DeviceGray] - /sep_colorspace_gray_proc - }{ - /sep_colorspace_proc - }ifelse -}def -/setsepcolorspace -{ - current_spot_alias{ - dup begin - Name map_alias{ - exch pop - }if - end - }if - dup/sep_colorspace_dict exch AGMCORE_gput - begin - CSA map_csa - /AGMCORE_sep_special Name dup()eq exch(All)eq or store - AGMCORE_avoid_L2_sep_space{ - [/Indexed MappedCSA sep_proc_name 255 exch - {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx - ]setcolorspace_opt - /TintProc{ - 255 mul round cvi setcolor - }bdf - }{ - MappedCSA 0 get/DeviceCMYK eq - currentdict/Components known and - AGMCORE_sep_special not and{ - /TintProc[ - Components aload pop Name findcmykcustomcolor - /exch cvx/setcustomcolor cvx - ]cvx bdf - }{ - AGMCORE_host_sep Name(All)eq and{ - /TintProc{ - 1 exch sub setseparationgray - }bdf - }{ - AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and - AGMCORE_host_sep or - Name()eq and{ - /TintProc[ - MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ - cvx/setcmykcolor cvx - }{ - cvx/setgray cvx - }ifelse - ]cvx bdf - }{ - AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ - /TintProc[ - /dup cvx - MappedCSA sep_proc_name cvx exch - 0 get/DeviceGray eq{ - 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx - }if - /Name cvx/findcmykcustomcolor cvx/exch cvx - AGMCORE_host_sep{ - AGMCORE_is_cmyk_sep - /Name cvx - /AGMCORE_IsSeparationAProcessColor load/exec cvx - /not cvx/and cvx - }{ - Name inRip_spot_has_ink not - }ifelse - [ - /pop cvx 1 - ]cvx/if cvx - /setcustomcolor cvx - ]cvx bdf - }{ - /TintProc{setcolor}bdf - [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt - }ifelse - }ifelse - }ifelse - }ifelse - }ifelse - set_crd - setsepcolor - end -}def -/additive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 - 0 1 numarrays 1 sub - { - 1 exch add/index cvx - c1/get cvx/mul cvx - }for - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/subtractive_blend -{ - 3 dict begin - /numarrays xdf - /numcolors xdf - 0 1 numcolors 1 sub - { - /c1 xdf - 1 1 - 0 1 numarrays 1 sub - { - 1 3 3 -1 roll add/index cvx - c1/get cvx/sub cvx/mul cvx - }for - /sub cvx - numarrays 1 add 1/roll cvx - }for - numarrays[/pop cvx]cvx/repeat cvx - end -}def -/exec_tint_transform -{ - /TintProc[ - /TintTransform cvx/setcolor cvx - ]cvx bdf - MappedCSA setcolorspace_opt -}bdf -/devn_makecustomcolor -{ - 2 dict begin - /names_index xdf - /Names xdf - 1 1 1 1 Names names_index get findcmykcustomcolor - /devicen_tints AGMCORE_gget names_index get setcustomcolor - Names length{pop}repeat - end -}bdf -/setdevicencolorspace -{ - dup/AliasedColorants known{false}{true}ifelse - current_spot_alias and{ - 7 dict begin - /names_index 0 def - dup/names_len exch/Names get length def - /new_names names_len array def - /new_LookupTables names_len array def - /alias_cnt 0 def - dup/Names get - { - dup map_alias{ - exch pop - dup/ColorLookup known{ - dup begin - new_LookupTables names_index ColorLookup put - end - }{ - dup/Components known{ - dup begin - new_LookupTables names_index Components put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - new_names names_index 3 -1 roll/Name get put - /alias_cnt alias_cnt 1 add def - }{ - /name xdf - new_names names_index name put - dup/LookupTables known{ - dup begin - new_LookupTables names_index LookupTables names_index get put - end - }{ - dup begin - new_LookupTables names_index[null null null null]put - end - }ifelse - }ifelse - /names_index names_index 1 add def - }forall - alias_cnt 0 gt{ - /AliasedColorants true def - /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def - 0 1 names_len 1 sub{ - /names_index xdf - new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ - /AliasedColorants false def - exit - }{ - new_LookupTables names_index get 0 get null eq{ - dup/Names get names_index get/name xdf - name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq - or or or not{ - /AliasedColorants false def - exit - }if - }if - }ifelse - }for - lut_entry_len 1 eq{ - /AliasedColorants false def - }if - AliasedColorants{ - dup begin - /Names new_names def - /LookupTables new_LookupTables def - /AliasedColorants true def - /NComponents lut_entry_len def - /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def - /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def - currentdict/TTTablesIdx known not{ - /TTTablesIdx -1 def - }if - end - }if - }if - end - }if - dup/devicen_colorspace_dict exch AGMCORE_gput - begin - currentdict/AliasedColorants known{ - AliasedColorants - }{ - false - }ifelse - dup not{ - CSA map_csa - }if - /TintTransform load type/nulltype eq or{ - /TintTransform[ - 0 1 Names length 1 sub - { - /TTTablesIdx TTTablesIdx 1 add def - dup LookupTables exch get dup 0 get null eq - { - 1 index - Names exch get - dup(Cyan)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0 0 0 - } - { - dup(Magenta)eq - { - pop exch - LookupTables length exch sub - /index cvx - 0/exch cvx 0 0 - }{ - (Yellow)eq - { - exch - LookupTables length exch sub - /index cvx - 0 0 3 -1/roll cvx 0 - }{ - exch - LookupTables length exch sub - /index cvx - 0 0 0 4 -1/roll cvx - }ifelse - }ifelse - }ifelse - 5 -1/roll cvx/astore cvx - }{ - dup length 1 sub - LookupTables length 4 -1 roll sub 1 add - /index cvx/mul cvx/round cvx/cvi cvx/get cvx - }ifelse - Names length TTTablesIdx add 1 add 1/roll cvx - }for - Names length[/pop cvx]cvx/repeat cvx - NComponents Names length - TintMethod/Subtractive eq - { - subtractive_blend - }{ - additive_blend - }ifelse - ]cvx bdf - }if - AGMCORE_host_sep{ - Names convert_to_process{ - exec_tint_transform - } - { - currentdict/AliasedColorants known{ - AliasedColorants not - }{ - false - }ifelse - 5 dict begin - /AvoidAliasedColorants xdf - /painted? false def - /names_index 0 def - /names_len Names length def - AvoidAliasedColorants{ - /currentspotalias current_spot_alias def - false set_spot_alias - }if - Names{ - AGMCORE_is_cmyk_sep{ - dup(Cyan)eq AGMCORE_cyan_plate and exch - dup(Magenta)eq AGMCORE_magenta_plate and exch - dup(Yellow)eq AGMCORE_yellow_plate and exch - (Black)eq AGMCORE_black_plate and or or or{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - }if - painted?{exit}if - }{ - 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - Names names_index/devn_makecustomcolor cvx - ]cvx ddf - /painted? true def - exit - }if - }ifelse - /names_index names_index 1 add def - }forall - AvoidAliasedColorants{ - currentspotalias set_spot_alias - }if - painted?{ - /devicen_colorspace_dict AGMCORE_gget/names_index names_index put - }{ - /devicen_colorspace_dict AGMCORE_gget/TintProc[ - names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx - 0 0 0 0/setcmykcolor cvx - ]cvx ddf - }ifelse - end - }ifelse - } - { - AGMCORE_in_rip_sep{ - Names convert_to_process not - }{ - level3 - }ifelse - { - [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt - /TintProc level3 not AGMCORE_in_rip_sep and{ - [ - Names/length cvx[/pop cvx]cvx/repeat cvx - ]cvx bdf - }{ - {setcolor}bdf - }ifelse - }{ - exec_tint_transform - }ifelse - }ifelse - set_crd - /AliasedColorants false def - end -}def -/setindexedcolorspace -{ - dup/indexed_colorspace_dict exch AGMCORE_gput - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - currentdict devncs - }{ - 1 currentdict sepcs - }ifelse - AGMCORE_host_sep{ - 4 dict begin - /compCnt/Names where{pop Names length}{1}ifelse def - /NewLookup HiVal 1 add string def - 0 1 HiVal{ - /tableIndex xdf - Lookup dup type/stringtype eq{ - compCnt tableIndex map_index - }{ - exec - }ifelse - /Names where{ - pop setdevicencolor - }{ - setsepcolor - }ifelse - currentgray - tableIndex exch - 255 mul cvi - NewLookup 3 1 roll put - }for - [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt - end - }{ - level3 - { - currentdict/Names known{ - [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt - }{ - [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt - }ifelse - }{ - [/Indexed MappedCSA HiVal - [ - currentdict/Names known{ - Lookup dup type/stringtype eq - {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} - {/exec cvx}ifelse - /TintTransform load/exec cvx - }{ - Lookup dup type/stringtype eq - {/exch cvx/get cvx 255/div cvx} - {/exec cvx}ifelse - CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx - }ifelse - ]cvx - ]setcolorspace_opt - }ifelse - }ifelse - end - set_crd - } - { - CSA map_csa - AGMCORE_host_sep level2 not and{ - 0 0 0 0 setcmykcolor - }{ - [/Indexed MappedCSA - level2 not has_color not and{ - dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ - pop[/DeviceGray] - }if - HiVal GrayLookup - }{ - HiVal - currentdict/RangeArray known{ - { - /indexed_colorspace_dict AGMCORE_gget begin - Lookup exch - dup HiVal gt{ - pop HiVal - }if - NComponents mul NComponents getinterval{}forall - NComponents 1 sub -1 0{ - RangeArray exch 2 mul 2 getinterval aload pop map255_to_range - NComponents 1 roll - }for - end - }bind - }{ - Lookup - }ifelse - }ifelse - ]setcolorspace_opt - set_crd - }ifelse - }ifelse - end -}def -/setindexedcolor -{ - AGMCORE_host_sep{ - /indexed_colorspace_dict AGMCORE_gget - begin - currentdict/CSDBase known{ - CSDBase/CSD get_res begin - currentdict/Names known{ - map_indexed_devn - devn - } - { - Lookup 1 3 -1 roll map_index - sep - }ifelse - end - }{ - Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll - map_index - MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse - }ifelse - end - }{ - level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ - /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin - map_indexed_devn - devn - end - } - { - setcolor - }ifelse - }ifelse -}def -/ignoreimagedata -{ - currentoverprint not{ - gsave - dup clonedict begin - 1 setgray - /Decode[0 1]def - /DataSourcedef - /MultipleDataSources false def - /BitsPerComponent 8 def - currentdict end - systemdict/image gx - grestore - }if - consumeimagedata -}def -/add_res -{ - dup/CSD eq{ - pop - //Adobe_AGM_Core begin - /AGMCORE_CSD_cache load 3 1 roll put - end - }{ - defineresource pop - }ifelse -}def -/del_res -{ - { - aload pop exch - dup/CSD eq{ - pop - {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall - }{ - exch - {1 index undefineresource}forall - pop - }ifelse - }forall -}def -/get_res -{ - dup/CSD eq{ - pop - dup type dup/nametype eq exch/stringtype eq or{ - AGMCORE_CSD_cache exch get - }if - }{ - findresource - }ifelse -}def -/get_csa_by_name -{ - dup type dup/nametype eq exch/stringtype eq or{ - /CSA get_res - }if -}def -/paintproc_buf_init -{ - /count get 0 0 put -}def -/paintproc_buf_next -{ - dup/count get dup 0 get - dup 3 1 roll - 1 add 0 xpt - get -}def -/cachepaintproc_compress -{ - 5 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - /string_size 16000 def - /readbuffer string_size string def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - /LZWFilter - { - exch - dup length 0 eq{ - pop - }{ - ppdict dup length 1 sub 3 -1 roll put - }ifelse - {string_size}{0}ifelse string - }/LZWEncode filter def - { - ReadFilter readbuffer readstring - exch LZWFilter exch writestring - not{exit}if - }loop - LZWFilter closefile - ppdict - end -}def -/cachepaintproc -{ - 2 dict begin - currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def - /ppdict 20 dict def - currentglobal true setglobal - ppdict 1 array dup 0 1 put/count xpt - setglobal - { - ReadFilter 16000 string readstring exch - ppdict dup length 1 sub 3 -1 roll put - not{exit}if - }loop - ppdict dup dup length 1 sub()put - end -}def -/make_pattern -{ - exch clonedict exch - dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform - exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub - exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub - matrix translate exch matrix concatmatrix - 1 index begin - BBox 0 get XStep div cvi XStep mul/xshift exch neg def - BBox 1 get YStep div cvi YStep mul/yshift exch neg def - BBox 0 get xshift add - BBox 1 get yshift add - BBox 2 get xshift add - BBox 3 get yshift add - 4 array astore - /BBox exch def - [xshift yshift/translate load null/exec load]dup - 3/PaintProc load put cvx/PaintProc exch def - end - gsave 0 setgray - makepattern - grestore -}def -/set_pattern -{ - dup/PatternType get 1 eq{ - dup/PaintType get 1 eq{ - currentoverprint sop[/DeviceGray]setcolorspace 0 setgray - }if - }if - setpattern -}def -/setcolorspace_opt -{ - dup currentcolorspace eq{pop}{setcolorspace}ifelse -}def -/updatecolorrendering -{ - currentcolorrendering/RenderingIntent known{ - currentcolorrendering/RenderingIntent get - } - { - Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd AGMCORE_gget dup null eq - } - { - Intent/Saturation eq - { - /saturation_crd AGMCORE_gget dup null eq - } - { - /perceptual_crd AGMCORE_gget dup null eq - }ifelse - }ifelse - }ifelse - { - pop null - } - { - /RenderingIntent known{null}{Intent}ifelse - }ifelse - }ifelse - Intent ne{ - Intent/ColorRendering{findresource}stopped - { - pop pop systemdict/findcolorrendering known - { - Intent findcolorrendering - { - /ColorRendering findresource true exch - } - { - /ColorRendering findresource - product(Xerox Phaser 5400)ne - exch - }ifelse - dup Intent/AbsoluteColorimetric eq - { - /absolute_colorimetric_crd exch AGMCORE_gput - } - { - Intent/RelativeColorimetric eq - { - /relative_colorimetric_crd exch AGMCORE_gput - } - { - Intent/Saturation eq - { - /saturation_crd exch AGMCORE_gput - } - { - Intent/Perceptual eq - { - /perceptual_crd exch AGMCORE_gput - } - { - pop - }ifelse - }ifelse - }ifelse - }ifelse - 1 index{exch}{pop}ifelse - } - {false}ifelse - } - {true}ifelse - { - dup begin - currentdict/TransformPQR known{ - currentdict/TransformPQR get aload pop - 3{{}eq 3 1 roll}repeat or or - } - {true}ifelse - currentdict/MatrixPQR known{ - currentdict/MatrixPQR get aload pop - 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll - 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq - and and and and and and and and - } - {true}ifelse - end - or - { - clonedict begin - /TransformPQR[ - {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div - 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind - {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div - 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind - {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div - 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind - ]def - /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def - /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def - currentdict end - }if - setcolorrendering_opt - }if - }if -}def -/set_crd -{ - AGMCORE_host_sep not level2 and{ - currentdict/ColorRendering known{ - ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if - }{ - currentdict/Intent known{ - updatecolorrendering - }if - }ifelse - currentcolorspace dup type/arraytype eq - {0 get}if - /DeviceRGB eq - { - currentdict/UCR known - {/UCR}{/AGMCORE_currentucr}ifelse - load setundercolorremoval - currentdict/BG known - {/BG}{/AGMCORE_currentbg}ifelse - load setblackgeneration - }if - }if -}def -/set_ucrbg -{ - dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration - dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval -}def -/setcolorrendering_opt -{ - dup currentcolorrendering eq{ - pop - }{ - product(HP Color LaserJet 2605)anchorsearch{ - pop pop pop - }{ - pop - clonedict - begin - /Intent Intent def - currentdict - end - setcolorrendering - }ifelse - }ifelse -}def -/cpaint_gcomp -{ - convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not - { - (%end_cpaint_gcomp)flushinput - }if -}def -/cpaint_gsep -{ - //Adobe_AGM_Core/AGMCORE_ConvertToProcess get - { - (%end_cpaint_gsep)flushinput - }if -}def -/cpaint_gend -{np}def -/T1_path -{ - currentfile token pop currentfile token pop mo - { - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 exch rlineto - currentfile token pop dup type/stringtype eq - {pop exit}if - 0 rlineto - }loop -}def -/T1_gsave - level3 - {/clipsave} - {/gsave}ifelse - load def -/T1_grestore - level3 - {/cliprestore} - {/grestore}ifelse - load def -/set_spot_alias_ary -{ - dup inherit_aliases - //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf -}def -/set_spot_normalization_ary -{ - dup inherit_aliases - dup length - /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if - array - //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf - /AGMCORE_SpotAliasAry where{ - pop - AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval - AGMCORE_SpotAliasAry length - }{0}ifelse - AGMCORE_SpotAliasAry2 3 1 roll exch putinterval - true set_spot_alias -}def -/inherit_aliases -{ - {dup/Name get map_alias{/CSD put}{pop}ifelse}forall -}def -/set_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias 3 -1 roll put - }{ - pop - }ifelse -}def -/current_spot_alias -{ - /AGMCORE_SpotAliasAry2 where{ - /AGMCORE_current_spot_alias get - }{ - false - }ifelse -}def -/map_alias -{ - /AGMCORE_SpotAliasAry2 where{ - begin - /AGMCORE_name xdf - false - AGMCORE_SpotAliasAry2{ - dup/Name get AGMCORE_name eq{ - /CSD get/CSD get_res - exch pop true - exit - }{ - pop - }ifelse - }forall - end - }{ - pop false - }ifelse -}bdf -/spot_alias -{ - true set_spot_alias - /AGMCORE_&setcustomcolor AGMCORE_key_known not{ - //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put - }if - /customcolor_tint 1 AGMCORE_gput - //Adobe_AGM_Core begin - /setcustomcolor - { - //Adobe_AGM_Core begin - dup/customcolor_tint exch AGMCORE_gput - 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not - current_spot_alias and{1 index 4 get map_alias}{false}ifelse - { - false set_spot_alias - /sep_colorspace_dict AGMCORE_gget null ne - {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse - 3 1 roll 2 index{ - exch pop/sep_tint AGMCORE_gget exch - }if - mark 3 1 roll - setsepcolorspace - counttomark 0 ne{ - setsepcolor - }if - pop - not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if - pop - true set_spot_alias - }{ - AGMCORE_&setcustomcolor - }ifelse - end - }bdf - end -}def -/begin_feature -{ - Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put - count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put - {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if -}def -/end_feature -{ - 2 dict begin - /spd/setpagedevice load def - /setpagedevice{get_gstate spd set_gstate}def - stopped{$error/newerror false put}if - end - count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse - countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse - {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if -}def -/set_negative -{ - //Adobe_AGM_Core begin - /AGMCORE_inverting exch def - level2{ - currentpagedevice/NegativePrint known AGMCORE_distilling not and{ - currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ - true begin_feature true{ - <>setpagedevice - }end_feature - }if - /AGMCORE_inverting false def - }if - }if - AGMCORE_inverting{ - [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer - AGMCORE_distilling{ - erasepage - }{ - gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse - /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore - }ifelse - }if - end -}def -/lw_save_restore_override{ - /md where{ - pop - md begin - initializepage - /initializepage{}def - /pmSVsetup{}def - /endp{}def - /pse{}def - /psb{}def - /orig_showpage where - {pop} - {/orig_showpage/showpage load def} - ifelse - /showpage{orig_showpage gR}def - end - }if -}def -/pscript_showpage_override{ - /NTPSOct95 where - { - begin - showpage - save - /showpage/restore load def - /restore{exch pop}def - end - }if -}def -/driver_media_override -{ - /md where{ - pop - md/initializepage known{ - md/initializepage{}put - }if - md/rC known{ - md/rC{4{pop}repeat}put - }if - }if - /mysetup where{ - /mysetup[1 0 0 1 0 0]put - }if - Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put - level2 - {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if -}def -/capture_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put - }if - }if -}def -/restore_mysetup -{ - /Pscript_Win_Data where{ - pop - Pscript_Win_Data/mysetup known{ - Adobe_AGM_Core/save_mysetup known{ - Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put - Adobe_AGM_Core/save_mysetup undef - }if - }if - }if -}def -/driver_check_media_override -{ - /PrepsDict where - {pop} - { - Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne - Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq - { - Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and - Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and - }if - { - Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix - }if - }ifelse -}def -AGMCORE_err_strings begin - /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def - /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def - /AGMCORE_invalid_color_space(This job contains an invalid color space. )def -end -/set_def_ht -{AGMCORE_def_ht sethalftone}def -/set_def_flat -{AGMCORE_Default_flatness setflat}def -end -systemdict/setpacking known -{setpacking}if -%%EndResource -%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 -%%Version: 1.0 0 -%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. -systemdict/setpacking known -{ - currentpacking - true setpacking -}if -userdict/Adobe_AGM_Image 71 dict dup begin put -/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def -/nd{ - null def -}bind def -/AGMIMG_&image nd -/AGMIMG_&colorimage nd -/AGMIMG_&imagemask nd -/AGMIMG_mbuf()def -/AGMIMG_ybuf()def -/AGMIMG_kbuf()def -/AGMIMG_c 0 def -/AGMIMG_m 0 def -/AGMIMG_y 0 def -/AGMIMG_k 0 def -/AGMIMG_tmp nd -/AGMIMG_imagestring0 nd -/AGMIMG_imagestring1 nd -/AGMIMG_imagestring2 nd -/AGMIMG_imagestring3 nd -/AGMIMG_imagestring4 nd -/AGMIMG_imagestring5 nd -/AGMIMG_cnt nd -/AGMIMG_fsave nd -/AGMIMG_colorAry nd -/AGMIMG_override nd -/AGMIMG_name nd -/AGMIMG_maskSource nd -/AGMIMG_flushfilters nd -/invert_image_samples nd -/knockout_image_samples nd -/img nd -/sepimg nd -/devnimg nd -/idximg nd -/ds -{ - Adobe_AGM_Core begin - Adobe_AGM_Image begin - /AGMIMG_&image systemdict/image get def - /AGMIMG_&imagemask systemdict/imagemask get def - /colorimage where{ - pop - /AGMIMG_&colorimage/colorimage ldf - }if - end - end -}def -/ps -{ - Adobe_AGM_Image begin - /AGMIMG_ccimage_exists{/customcolorimage where - { - pop - /Adobe_AGM_OnHost_Seps where - { - pop false - }{ - /Adobe_AGM_InRip_Seps where - { - pop false - }{ - true - }ifelse - }ifelse - }{ - false - }ifelse - }bdf - level2{ - /invert_image_samples - { - Adobe_AGM_Image/AGMIMG_tmp Decode length ddf - /Decode[Decode 1 get Decode 0 get]def - }def - /knockout_image_samples - { - Operator/imagemask ne{ - /Decode[1 1]def - }if - }def - }{ - /invert_image_samples - { - {1 exch sub}currenttransfer addprocs settransfer - }def - /knockout_image_samples - { - {pop 1}currenttransfer addprocs settransfer - }def - }ifelse - /img/imageormask ldf - /sepimg/sep_imageormask ldf - /devnimg/devn_imageormask ldf - /idximg/indexed_imageormask ldf - /_ctype 7 def - currentdict{ - dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ - bind - }if - def - }forall -}def -/pt -{ - end -}def -/dt -{ -}def -/AGMIMG_flushfilters -{ - dup type/arraytype ne - {1 array astore}if - dup 0 get currentfile ne - {dup 0 get flushfile}if - { - dup type/filetype eq - { - dup status 1 index currentfile ne and - {closefile} - {pop} - ifelse - }{pop}ifelse - }forall -}def -/AGMIMG_init_common -{ - currentdict/T known{/ImageType/T ldf currentdict/T undef}if - currentdict/W known{/Width/W ldf currentdict/W undef}if - currentdict/H known{/Height/H ldf currentdict/H undef}if - currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if - currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if - currentdict/D known{/Decode/D ldf currentdict/D undef}if - currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if - currentdict/O known{ - /Operator/O load 1 eq{ - /imagemask - }{ - /O load 2 eq{ - /image - }{ - /colorimage - }ifelse - }ifelse - def - currentdict/O undef - }if - currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if - currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if - currentdict/I known{/Interpolate/I ldf currentdict/I undef}if - currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if - /DataSource load xcheck not{ - DataSource type/arraytype eq{ - DataSource 0 get type/filetype eq{ - /_Filters DataSource def - currentdict/MultipleDataSources known not{ - /DataSource DataSource dup length 1 sub get def - }if - }if - }if - currentdict/MultipleDataSources known not{ - /MultipleDataSources DataSource type/arraytype eq{ - DataSource length 1 gt - } - {false}ifelse def - }if - }if - /NComponents Decode length 2 div def - currentdict/SkipImageProc known not{/SkipImageProc{false}def}if -}bdf -/imageormask_sys -{ - begin - AGMIMG_init_common - save mark - level2{ - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - AGMIMG_&imagemask - }{ - BitsPerComponent ImageMatrix/DataSource load - AGMIMG_&image - }ifelse - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - cleartomark restore - end -}def -/overprint_plate -{ - currentoverprint{ - 0 get dup type/nametype eq{ - dup/DeviceGray eq{ - pop AGMCORE_black_plate not - }{ - /DeviceCMYK eq{ - AGMCORE_is_cmyk_sep not - }if - }ifelse - }{ - false exch - { - AGMOHS_sepink eq or - }forall - not - }ifelse - }{ - pop false - }ifelse -}def -/process_mask -{ - level3{ - dup begin - /ImageType 1 def - end - 4 dict begin - /DataDict exch def - /ImageType 3 def - /InterleaveType 3 def - /MaskDict 9 dict begin - /ImageType 1 def - /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def - /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def - /ImageMatrix[Width 0 0 Height neg 0 Height]def - /NComponents 1 def - /BitsPerComponent 1 def - /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def - /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def - currentdict end def - currentdict end - }if -}def -/use_mask -{ - dup/Mask known {dup/Mask get}{false}ifelse -}def -/imageormask -{ - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - } - { - save mark - level2 AGMCORE_host_sep not and{ - currentdict - Operator/imagemask eq DeviceN_PS2 not and{ - imagemask - }{ - AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ - [/Separation/Black/DeviceGray{}]setcolorspace - /Decode[Decode 1 get Decode 0 get]def - }if - use_mask{ - process_mask image - }{ - DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and - { - Names convert_to_process not{ - 2 dict begin - /imageDict xdf - /names_index 0 def - gsave - imageDict write_image_file{ - Names{ - dup(None)ne{ - [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace - Operator imageDict read_image_file - names_index 0 eq{true setoverprint}if - /names_index names_index 1 add def - }{ - pop - }ifelse - }forall - close_image_file - }if - grestore - end - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }{ - Operator/imagemask eq{ - imagemask - }{ - image - }ifelse - }ifelse - }ifelse - }ifelse - }{ - Width Height - Operator/imagemask eq{ - Decode 0 get 1 eq Decode 1 get 0 eq and - ImageMatrix/DataSource load - /Adobe_AGM_OnHost_Seps where{ - pop imagemask - }{ - currentgray 1 ne{ - currentdict imageormask_sys - }{ - currentoverprint not{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }ifelse - }{ - BitsPerComponent ImageMatrix - MultipleDataSources{ - 0 1 NComponents 1 sub{ - DataSource exch get - }for - }{ - /DataSource load - }ifelse - Operator/colorimage eq{ - AGMCORE_host_sep{ - MultipleDataSources level2 or NComponents 4 eq and{ - AGMCORE_is_cmyk_sep{ - MultipleDataSources{ - /DataSource DataSource 0 get xcheck - { - [ - DataSource 0 get/exec cvx - DataSource 1 get/exec cvx - DataSource 2 get/exec cvx - DataSource 3 get/exec cvx - /AGMCORE_get_ink_data cvx - ]cvx - }{ - DataSource aload pop AGMCORE_get_ink_data - }ifelse def - }{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - /DataSource load - filter_cmyk 0()/SubFileDecode filter def - }ifelse - /Decode[Decode 0 get Decode 1 get]def - /MultipleDataSources false def - /NComponents 1 def - /Operator/image def - invert_image_samples - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - 1 AGMCORE_&setgray - currentdict imageormask_sys - }{ - currentdict ignoreimagedata - }ifelse - }ifelse - }{ - MultipleDataSources NComponents AGMIMG_&colorimage - }ifelse - }{ - true NComponents colorimage - }ifelse - }{ - Operator/image eq{ - AGMCORE_host_sep{ - /DoImage true def - currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse - { - AGMCORE_black_plate not Operator/imagemask ne and{ - /DoImage false def - currentdict ignoreimagedata - }if - }if - 1 AGMCORE_&setgray - DoImage - {currentdict imageormask_sys}if - }{ - use_mask{ - process_mask image - }{ - image - }ifelse - }ifelse - }{ - Operator/knockout eq{ - pop pop pop pop pop - currentcolorspace overprint_plate not{ - knockout_unitsq - }if - }if - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/sep_imageormask -{ - /sep_colorspace_dict AGMCORE_gget begin - CSA map_csa - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_avoid_L2_sep_space{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - }if - AGMIMG_ccimage_exists - MappedCSA 0 get/DeviceCMYK eq and - currentdict/Components known and - Name()ne and - Name(All)ne and - Operator/image eq and - AGMCORE_producing_seps not and - level2 not and - { - Width Height BitsPerComponent ImageMatrix - [ - /DataSource load/exec cvx - { - 0 1 2 index length 1 sub{ - 1 index exch - 2 copy get 255 xor put - }for - }/exec cvx - ]cvx bind - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Name findcmykcustomcolor - customcolorimage - }{ - AGMCORE_producing_seps not{ - level2{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ - [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - currentdict imageormask - }{ - currentdict - Operator/imagemask eq{ - imageormask - }{ - sep_imageormask_lev1 - }ifelse - }ifelse - }{ - AGMCORE_host_sep{ - Operator/knockout eq{ - currentdict/ImageMatrix get concat - knockout_unitsq - }{ - currentgray 1 ne{ - AGMCORE_is_cmyk_sep Name(All)ne and{ - level2{ - Name AGMCORE_IsSeparationAProcessColor - { - Operator/imagemask eq{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor - }if - }{ - invert_image_samples - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - [/Separation Name[/DeviceGray] - { - sep_colorspace_proc AGMCORE_get_ink_data - 1 exch sub - }bind - ]AGMCORE_&setcolorspace - /sep_tint AGMCORE_gget AGMCORE_&setcolor - }if - }ifelse - currentdict imageormask_sys - }{ - currentdict - Operator/imagemask eq{ - imageormask_sys - }{ - sep_image_lev1_sep - }ifelse - }ifelse - }{ - Operator/imagemask ne{ - invert_image_samples - }if - currentdict imageormask_sys - }ifelse - }{ - currentoverprint not Name(All)eq or Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ - currentcolorspace 0 get/Separation ne{ - [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt - /sep_tint AGMCORE_gget setcolor - }if - }if - currentoverprint - MappedCSA 0 get/DeviceCMYK eq and - Name AGMCORE_IsSeparationAProcessColor not and - //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse - Name(All)ne and{ - imageormask_l2_overprint - }{ - currentdict imageormask - }ifelse - }ifelse - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end -}def -/colorSpaceElemCnt -{ - mark currentcolor counttomark dup 2 add 1 roll cleartomark -}bdf -/devn_sep_datasource -{ - 1 dict begin - /dataSource xdf - [ - 0 1 dataSource length 1 sub{ - dup currentdict/dataSource get/exch cvx/get cvx/exec cvx - /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx - }for - ]cvx bind - end -}bdf -/devn_alt_datasource -{ - 11 dict begin - /convProc xdf - /origcolorSpaceElemCnt xdf - /origMultipleDataSources xdf - /origBitsPerComponent xdf - /origDecode xdf - /origDataSource xdf - /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def - /DataSource origMultipleDataSources - { - [ - BitsPerComponent 8 idiv origDecode length 2 idiv mul string - 0 1 origDecode length 2 idiv 1 sub - { - dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch - origDataSource exch get 0()/SubFileDecode filter - BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx - }for - ]bind cvx - }{origDataSource}ifelse 0()/SubFileDecode filter def - [ - origcolorSpaceElemCnt string - 0 2 origDecode length 2 sub - { - dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div - 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx - }for - /convProc load/exec cvx - origcolorSpaceElemCnt 1 sub -1 0 - { - /dup cvx 2/add cvx/index cvx - 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx - }for - ]bind cvx 0()/SubFileDecode filter - end -}bdf -/devn_imageormask -{ - /devicen_colorspace_dict AGMCORE_gget begin - CSA map_csa - 2 dict begin - dup - /srcDataStrs[3 -1 roll begin - AGMIMG_init_common - currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse - { - Width Decode length 2 div mul cvi - { - dup 65535 gt{1 add 2 div cvi}{exit}ifelse - }loop - string - }repeat - end]def - /dstDataStr srcDataStrs 0 get length string def - begin - AGMIMG_init_common - SkipImageProc{ - currentdict consumeimagedata - }{ - save mark - AGMCORE_producing_seps not{ - level3 not{ - Operator/imagemask ne{ - /DataSource[[ - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def - /MultipleDataSources true def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - }if - }if - currentdict imageormask - }{ - AGMCORE_host_sep{ - Names convert_to_process{ - CSA get_csa_by_name 0 get/DeviceCMYK eq{ - /DataSource - Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - filter_cmyk 0()/SubFileDecode filter def - /MultipleDataSources false def - /Decode[1 0]def - /DeviceGray setcolorspace - currentdict imageormask_sys - }{ - AGMCORE_report_unsupported_color_space - AGMCORE_black_plate{ - /DataSource - DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse - CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get - devn_alt_datasource - /MultipleDataSources false def - /Decode colorSpaceElemCnt[exch{0 1}repeat]def - currentdict imageormask_sys - }{ - gsave - knockout_unitsq - grestore - currentdict consumeimagedata - }ifelse - }ifelse - } - { - /devicen_colorspace_dict AGMCORE_gget/names_index known{ - Operator/imagemask ne{ - MultipleDataSources{ - /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def - /MultipleDataSources false def - }{ - /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def - }ifelse - invert_image_samples - }if - currentdict imageormask_sys - }{ - currentoverprint not Operator/imagemask eq and{ - currentdict imageormask_sys - }{ - currentoverprint not - { - gsave - knockout_unitsq - grestore - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - currentdict imageormask - }ifelse - }ifelse - cleartomark restore - }ifelse - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end - end - end -}def -/imageormask_l2_overprint -{ - currentdict - currentcmykcolor add add add 0 eq{ - currentdict consumeimagedata - }{ - level3{ - currentcmykcolor - /AGMIMG_k xdf - /AGMIMG_y xdf - /AGMIMG_m xdf - /AGMIMG_c xdf - Operator/imagemask eq{ - [/DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ]/DeviceCMYK{}]setcolorspace - AGMIMG_c 0 ne{AGMIMG_c}if - AGMIMG_m 0 ne{AGMIMG_m}if - AGMIMG_y 0 ne{AGMIMG_y}if - AGMIMG_k 0 ne{AGMIMG_k}if - setcolor - }{ - /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def - [/Indexed - [ - /DeviceN[ - AGMIMG_c 0 ne{/Cyan}if - AGMIMG_m 0 ne{/Magenta}if - AGMIMG_y 0 ne{/Yellow}if - AGMIMG_k 0 ne{/Black}if - ] - /DeviceCMYK{ - AGMIMG_k 0 eq{0}if - AGMIMG_y 0 eq{0 exch}if - AGMIMG_m 0 eq{0 3 1 roll}if - AGMIMG_c 0 eq{0 4 1 roll}if - } - ] - 255 - { - 255 div - mark exch - dup dup dup - AGMIMG_k 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_y 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_m 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - AGMIMG_c 0 ne{ - /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop - counttomark 1 roll - }{ - pop - }ifelse - counttomark 1 add -1 roll pop - } - ]setcolorspace - }ifelse - imageormask_sys - }{ - write_image_file{ - currentcmykcolor - 0 ne{ - [/Separation/Black/DeviceGray{}]setcolorspace - gsave - /Black - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Yellow/DeviceGray{}]setcolorspace - gsave - /Yellow - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Magenta/DeviceGray{}]setcolorspace - gsave - /Magenta - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - 0 ne{ - [/Separation/Cyan/DeviceGray{}]setcolorspace - gsave - /Cyan - [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] - cvx modify_halftone_xfer - Operator currentdict read_image_file - grestore - }if - close_image_file - }{ - imageormask - }ifelse - }ifelse - }ifelse -}def -/indexed_imageormask -{ - begin - AGMIMG_init_common - save mark - currentdict - AGMCORE_host_sep{ - Operator/knockout eq{ - /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ - /CSA get get_csa_by_name - }{ - /Names get - }ifelse - overprint_plate not{ - knockout_unitsq - }if - }{ - Indexed_DeviceN{ - /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ - indexed_image_lev2_sep - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }{ - AGMCORE_is_cmyk_sep{ - Operator/imagemask eq{ - imageormask_sys - }{ - level2{ - indexed_image_lev2_sep - }{ - indexed_image_lev1_sep - }ifelse - }ifelse - }{ - currentoverprint not{ - knockout_unitsq - }if - currentdict consumeimagedata - }ifelse - }ifelse - }ifelse - }{ - level2{ - Indexed_DeviceN{ - /indexed_colorspace_dict AGMCORE_gget begin - }{ - /indexed_colorspace_dict AGMCORE_gget dup null ne - { - begin - currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse - get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and - AGMCORE_in_rip_sep and{ - [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] - setcolorspace - }if - end - } - {pop}ifelse - }ifelse - imageormask - Indexed_DeviceN{ - end - }if - }{ - Operator/imagemask eq{ - imageormask - }{ - indexed_imageormask_lev1 - }ifelse - }ifelse - }ifelse - cleartomark restore - currentdict/_Filters known{_Filters AGMIMG_flushfilters}if - end -}def -/indexed_image_lev2_sep -{ - /indexed_colorspace_dict AGMCORE_gget begin - begin - Indexed_DeviceN not{ - currentcolorspace - dup 1/DeviceGray put - dup 3 - currentcolorspace 2 get 1 add string - 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub - { - dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put - }for - put setcolorspace - }if - currentdict - Operator/imagemask eq{ - AGMIMG_&imagemask - }{ - use_mask{ - process_mask AGMIMG_&image - }{ - AGMIMG_&image - }ifelse - }ifelse - end end -}def - /OPIimage - { - dup type/dicttype ne{ - 10 dict begin - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /ImageType 1 def - /Decode[0 1 def] - currentdict - end - }if - dup begin - /NComponents 1 cdndf - /MultipleDataSources false cdndf - /SkipImageProc{false}cdndf - /Decode[ - 0 - currentcolorspace 0 get/Indexed eq{ - 2 BitsPerComponent exp 1 sub - }{ - 1 - }ifelse - ]cdndf - /Operator/image cdndf - end - /sep_colorspace_dict AGMCORE_gget null eq{ - imageormask - }{ - gsave - dup begin invert_image_samples end - sep_imageormask - grestore - }ifelse - }def -/cachemask_level2 -{ - 3 dict begin - /LZWEncode filter/WriteFilter xdf - /readBuffer 256 string def - /ReadFilter - currentfile - 0(%EndMask)/SubFileDecode filter - /ASCII85Decode filter - /RunLengthDecode filter - def - { - ReadFilter readBuffer readstring exch - WriteFilter exch writestring - not{exit}if - }loop - WriteFilter closefile - end -}def -/spot_alias -{ - /mapto_sep_imageormask - { - dup type/dicttype ne{ - 12 dict begin - /ImageType 1 def - /DataSource xdf - /ImageMatrix xdf - /BitsPerComponent xdf - /Height xdf - /Width xdf - /MultipleDataSources false def - }{ - begin - }ifelse - /Decode[/customcolor_tint AGMCORE_gget 0]def - /Operator/image def - /SkipImageProc{false}def - currentdict - end - sep_imageormask - }bdf - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_colorAry xddf - /customcolor_tint AGMCORE_gget - << - /Name AGMIMG_colorAry 4 get - /CSA[/DeviceCMYK] - /TintMethod/Subtractive - /TintProc null - /MappedCSA null - /NComponents 4 - /Components[AGMIMG_colorAry aload pop pop] - >> - setsepcolorspace - mapto_sep_imageormask - }ndf - Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put - /customcolorimage - { - Adobe_AGM_Image/AGMIMG_override false put - current_spot_alias{dup 4 get map_alias}{false}ifelse - { - false set_spot_alias - /customcolor_tint AGMCORE_gget exch setsepcolorspace - pop - mapto_sep_imageormask - true set_spot_alias - }{ - //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec - }ifelse - }bdf -}def -/snap_to_device -{ - 6 dict begin - matrix currentmatrix - dup 0 get 0 eq 1 index 3 get 0 eq and - 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop - { - 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def - 0 0 transform - AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch - itransform/AGMIMG_llY exch def/AGMIMG_llX exch def - 1 1 transform - AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch - itransform/AGMIMG_urY exch def/AGMIMG_urX exch def - [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat - }{ - }ifelse - end -}def -level2 not{ - /colorbuf - { - 0 1 2 index length 1 sub{ - dup 2 index exch get - 255 exch sub - 2 index - 3 1 roll - put - }for - }def - /tint_image_to_color - { - begin - Width Height BitsPerComponent ImageMatrix - /DataSource load - end - Adobe_AGM_Image begin - /AGMIMG_mbuf 0 string def - /AGMIMG_ybuf 0 string def - /AGMIMG_kbuf 0 string def - { - colorbuf dup length AGMIMG_mbuf length ne - { - dup length dup dup - /AGMIMG_mbuf exch string def - /AGMIMG_ybuf exch string def - /AGMIMG_kbuf exch string def - }if - dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop - } - addprocs - {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage - end - }def - /sep_imageormask_lev1 - { - begin - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - { - 255 mul round cvi GrayLookup exch get - }currenttransfer addprocs settransfer - currentdict imageormask - }{ - /sep_colorspace_dict AGMCORE_gget/Components known{ - MappedCSA 0 get/DeviceCMYK eq{ - Components aload pop - }{ - 0 0 0 Components aload pop 1 exch sub - }ifelse - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ - {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer - currentdict imageormask - }{ - currentcolortransfer - {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll - {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }{ - MappedCSA 0 get/DeviceGray eq{ - {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer - currentdict imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll - {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll - setcolortransfer - currentdict tint_image_to_color - }ifelse - }ifelse - }ifelse - }ifelse - end - }def - /sep_image_lev1_sep - { - begin - /sep_colorspace_dict AGMCORE_gget/Components known{ - Components aload pop - Adobe_AGM_Image/AGMIMG_k xddf - Adobe_AGM_Image/AGMIMG_y xddf - Adobe_AGM_Image/AGMIMG_m xddf - Adobe_AGM_Image/AGMIMG_c xddf - {AGMIMG_c mul 1 exch sub} - {AGMIMG_m mul 1 exch sub} - {AGMIMG_y mul 1 exch sub} - {AGMIMG_k mul 1 exch sub} - }{ - {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} - {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} - }ifelse - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end - }def - /indexed_imageormask_lev1 - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - currentdict - MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ - {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceGray eq{ - {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer - imageormask - }{ - MappedCSA 0 get/DeviceCMYK eq{ - currentcolortransfer - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }{ - currentcolortransfer - {pop 1}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll - {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll - setcolortransfer - tint_image_to_color - }ifelse - }ifelse - }ifelse - end end - }def - /indexed_image_lev1_sep - { - /indexed_colorspace_dict AGMCORE_gget begin - begin - {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} - {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} - AGMCORE_get_ink_data currenttransfer addprocs settransfer - currentdict imageormask_sys - end end - }def -}if -end -systemdict/setpacking known -{setpacking}if -%%EndResource -currentdict Adobe_AGM_Utils eq {end} if -%%EndProlog -%%BeginSetup -Adobe_AGM_Utils begin -2 2010 Adobe_AGM_Core/ds gx -Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx -currentdict Adobe_AGM_Utils eq {end} if -%%EndSetup -%%Page: 1 1 -%%EndPageComments -%%BeginPageSetup -%ADOBeginClientInjection: PageSetup Start "AI11EPS" -%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 -%ADOEndClientInjection: PageSetup Start "AI11EPS" -Adobe_AGM_Utils begin -Adobe_AGM_Core/ps gx -Adobe_AGM_Utils/capture_cpd gx -Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx -%ADOBeginClientInjection: PageSetup End "AI11EPS" -/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 - - - - application/postscript - - - Print - - - - - 2011-05-12T01:27:21-04:00 - 2011-05-12T01:27:21-04:00 - 2011-05-12T01:27:20-04:00 - Adobe Illustrator CS4 - - - - 256 - 56 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAOAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A43+WXkZvPPnSy8tC9/R5 vFmY3Zj9biIYml+xyjrXhT7QwJfYP5Lfkt/yrNdYH6ZOrfpY25/3n+rCP6v6vb1ZuXL1vbphQ1rP 5ZavbPPqOlXxmuOTyiEKYpKE8qIwZqn7s3WHtKBqMxt83n8/ZU4kzhLf5In8vvPd5d3a6Pqr+rI4 P1W5b7ZZRUo577DY5DX6KMRxw+IbOze0JSl4c+fQvRM1DvHYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Hf+cYf/JzaL/xivP+oWTAl9xYUKMd7Zyzvbxz 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 sVf/2Q== - - - - - - xmp.iid:06801174072068118DBBD524E8CB12B3 - xmp.did:06801174072068118DBBD524E8CB12B3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - xmp.iid:05801174072068118DBBD524E8CB12B3 - xmp.did:05801174072068118DBBD524E8CB12B3 - uuid:5D20892493BFDB11914A8590D31508C8 - proof:pdf - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:D27F11740720681191099C3B601C4548 - 2008-04-17T14:19:15+05:30 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F1174072068118D4ED246B3ADB1C6 - 2008-05-15T16:23:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 - 2008-05-15T17:10:45-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:EF7F117407206811A46CA4519D24356B - 2008-05-15T22:53:33-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F07F117407206811A46CA4519D24356B - 2008-05-15T23:07:07-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:35:43-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/pdf to <unknown> - - - saved - xmp.iid:F97F117407206811BDDDFD38D0CF24DD - 2008-05-16T10:40:59-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to <unknown> - - - saved - xmp.iid:FA7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:26:55-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FB7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FC7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:29:20-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FD7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:30:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:FE7F117407206811BDDDFD38D0CF24DD - 2008-05-16T11:31:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B233668C16206811BDDDFD38D0CF24DD - 2008-05-16T12:23:46-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B333668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:27:54-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:B433668C16206811BDDDFD38D0CF24DD - 2008-05-16T13:46:13-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F11740720681197C1BF14D1759E83 - 2008-05-16T15:47:57-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F87F11740720681197C1BF14D1759E83 - 2008-05-16T15:51:06-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F11740720681197C1BF14D1759E83 - 2008-05-16T15:52:22-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FA7F117407206811B628E3BF27C8C41B - 2008-05-22T13:28:01-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:FF7F117407206811B628E3BF27C8C41B - 2008-05-22T16:23:53-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:07C3BD25102DDD1181B594070CEB88D9 - 2008-05-28T16:45:26-07:00 - Adobe Illustrator CS4 - - - / - - - - - converted - from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator - - - saved - xmp.iid:F87F1174072068119098B097FDA39BEF - 2008-06-02T13:25:25-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811BB1DBF8F242B6F84 - 2008-06-09T14:58:36-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F97F117407206811ACAFB8DA80854E76 - 2008-06-11T14:31:27-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:0180117407206811834383CD3A8D2303 - 2008-06-11T22:37:35-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:F77F117407206811818C85DF6A1A75C3 - 2008-06-27T14:40:42-07:00 - Adobe Illustrator CS4 - - - / - - - - - saved - xmp.iid:04801174072068118DBBD524E8CB12B3 - 2011-05-11T11:44:14-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:05801174072068118DBBD524E8CB12B3 - 2011-05-11T13:52:20-04:00 - Adobe Illustrator CS4 - / - - - saved - xmp.iid:06801174072068118DBBD524E8CB12B3 - 2011-05-12T01:27:21-04:00 - Adobe Illustrator CS4 - / - - - - - - Print - - - False - False - 1 - - 7.000000 - 2.000000 - Inches - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 0.000000 - - - Black - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - CMYK Red - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - CMYK Yellow - CMYK - PROCESS - 0.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Green - CMYK - PROCESS - 100.000000 - 0.000000 - 100.000000 - 0.000000 - - - CMYK Cyan - CMYK - PROCESS - 100.000000 - 0.000000 - 0.000000 - 0.000000 - - - CMYK Blue - CMYK - PROCESS - 100.000000 - 100.000000 - 0.000000 - 0.000000 - - - CMYK Magenta - CMYK - PROCESS - 0.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=15 M=100 Y=90 K=10 - CMYK - PROCESS - 14.999998 - 100.000000 - 90.000000 - 10.000002 - - - C=0 M=90 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 90.000000 - 85.000000 - 0.000000 - - - C=0 M=80 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 80.000000 - 95.000000 - 0.000000 - - - C=0 M=50 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 50.000000 - 100.000000 - 0.000000 - - - C=0 M=35 Y=85 K=0 - CMYK - PROCESS - 0.000000 - 35.000004 - 85.000000 - 0.000000 - - - C=5 M=0 Y=90 K=0 - CMYK - PROCESS - 5.000001 - 0.000000 - 90.000000 - 0.000000 - - - C=20 M=0 Y=100 K=0 - CMYK - PROCESS - 19.999998 - 0.000000 - 100.000000 - 0.000000 - - - C=50 M=0 Y=100 K=0 - CMYK - PROCESS - 50.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=75 M=0 Y=100 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 100.000000 - 0.000000 - - - C=85 M=10 Y=100 K=10 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 10.000002 - - - C=90 M=30 Y=95 K=30 - CMYK - PROCESS - 90.000000 - 30.000002 - 95.000000 - 30.000002 - - - C=75 M=0 Y=75 K=0 - CMYK - PROCESS - 75.000000 - 0.000000 - 75.000000 - 0.000000 - - - C=80 M=10 Y=45 K=0 - CMYK - PROCESS - 80.000000 - 10.000002 - 45.000000 - 0.000000 - - - C=70 M=15 Y=0 K=0 - CMYK - PROCESS - 70.000000 - 14.999998 - 0.000000 - 0.000000 - - - C=85 M=50 Y=0 K=0 - CMYK - PROCESS - 85.000000 - 50.000000 - 0.000000 - 0.000000 - - - C=100 M=95 Y=5 K=0 - CMYK - PROCESS - 100.000000 - 95.000000 - 5.000001 - 0.000000 - - - C=100 M=100 Y=25 K=25 - CMYK - PROCESS - 100.000000 - 100.000000 - 25.000000 - 25.000000 - - - C=75 M=100 Y=0 K=0 - CMYK - PROCESS - 75.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=50 M=100 Y=0 K=0 - CMYK - PROCESS - 50.000000 - 100.000000 - 0.000000 - 0.000000 - - - C=35 M=100 Y=35 K=10 - CMYK - PROCESS - 35.000004 - 100.000000 - 35.000004 - 10.000002 - - - C=10 M=100 Y=50 K=0 - CMYK - PROCESS - 10.000002 - 100.000000 - 50.000000 - 0.000000 - - - C=0 M=95 Y=20 K=0 - CMYK - PROCESS - 0.000000 - 95.000000 - 19.999998 - 0.000000 - - - C=25 M=25 Y=40 K=0 - CMYK - PROCESS - 25.000000 - 25.000000 - 39.999996 - 0.000000 - - - C=40 M=45 Y=50 K=5 - CMYK - PROCESS - 39.999996 - 45.000000 - 50.000000 - 5.000001 - - - C=50 M=50 Y=60 K=25 - CMYK - PROCESS - 50.000000 - 50.000000 - 60.000004 - 25.000000 - - - C=55 M=60 Y=65 K=40 - CMYK - PROCESS - 55.000000 - 60.000004 - 65.000000 - 39.999996 - - - C=25 M=40 Y=65 K=0 - CMYK - PROCESS - 25.000000 - 39.999996 - 65.000000 - 0.000000 - - - C=30 M=50 Y=75 K=10 - CMYK - PROCESS - 30.000002 - 50.000000 - 75.000000 - 10.000002 - - - C=35 M=60 Y=80 K=25 - CMYK - PROCESS - 35.000004 - 60.000004 - 80.000000 - 25.000000 - - - C=40 M=65 Y=90 K=35 - CMYK - PROCESS - 39.999996 - 65.000000 - 90.000000 - 35.000004 - - - C=40 M=70 Y=100 K=50 - CMYK - PROCESS - 39.999996 - 70.000000 - 100.000000 - 50.000000 - - - C=50 M=70 Y=80 K=70 - CMYK - PROCESS - 50.000000 - 70.000000 - 80.000000 - 70.000000 - - - - - - Grays - 1 - - - - C=0 M=0 Y=0 K=100 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 100.000000 - - - C=0 M=0 Y=0 K=90 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 89.999405 - - - C=0 M=0 Y=0 K=80 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 79.998795 - - - C=0 M=0 Y=0 K=70 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 69.999702 - - - C=0 M=0 Y=0 K=60 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 59.999104 - - - C=0 M=0 Y=0 K=50 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 50.000000 - - - C=0 M=0 Y=0 K=40 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 39.999401 - - - C=0 M=0 Y=0 K=30 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 29.998802 - - - C=0 M=0 Y=0 K=20 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 19.999701 - - - C=0 M=0 Y=0 K=10 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 9.999103 - - - C=0 M=0 Y=0 K=5 - CMYK - PROCESS - 0.000000 - 0.000000 - 0.000000 - 4.998803 - - - - - - Brights - 1 - - - - C=0 M=100 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 100.000000 - 100.000000 - 0.000000 - - - C=0 M=75 Y=100 K=0 - CMYK - PROCESS - 0.000000 - 75.000000 - 100.000000 - 0.000000 - - - C=0 M=10 Y=95 K=0 - CMYK - PROCESS - 0.000000 - 10.000002 - 95.000000 - 0.000000 - - - C=85 M=10 Y=100 K=0 - CMYK - PROCESS - 85.000000 - 10.000002 - 100.000000 - 0.000000 - - - C=100 M=90 Y=0 K=0 - CMYK - PROCESS - 100.000000 - 90.000000 - 0.000000 - 0.000000 - - - C=60 M=90 Y=0 K=0 - CMYK - PROCESS - 60.000004 - 90.000000 - 0.003099 - 0.003099 - - - - - - - - - Adobe PDF library 9.00 - - - - - - - - - - - - - - - - - - - - - - - - - % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 -%ADOEndClientInjection: PageSetup End "AI11EPS" -%%EndPageSetup -1 -1 scale 0 -97.4355 translate -pgsv -[1 0 0 1 0 0 ]ct -gsave -np -gsave -0 0 mo -0 97.4355 li -442.237 97.4355 li -442.237 0 li -cp -clp -[1 0 0 1 0 0 ]ct -gsave -0 0 mo -442.237 0 li -442.237 97.4355 li -0 97.4355 li -0 0 li -cp -clp -19.3945 78.6338 mo -1.10938 78.6338 li -.369629 78.6338 -.000488281 78.4453 -.000488281 77.7852 cv --.000488281 .947266 li --.000488281 .375977 .369629 .000976563 1.10938 .000976563 cv -19.269 .000976563 li -20.0117 .000976563 20.5059 .288086 20.5059 .947266 cv -20.5059 5.67773 li -20.5059 6.34082 20.1318 6.52832 19.3945 6.52832 cv -11.2407 6.52832 li -10.2505 6.52832 9.88086 6.90967 9.88086 7.56982 cv -9.88086 71.1582 li -9.88086 71.8184 10.2505 72.1064 11.1162 72.1064 cv -19.269 72.1064 li -20.0117 72.1064 20.5059 72.3867 20.5059 72.9521 cv -20.5059 77.7852 li -20.5059 78.3486 20.1318 78.6338 19.3945 78.6338 cv -false sop -/0 -[/DeviceCMYK] /CSA add_res -.722656 .664063 .667969 .832031 cmyk -f -61.2715 47.5186 mo -56.4541 48.9326 53.1187 51.7578 53.1187 56.3857 cv -53.1187 69.7813 li -53.1187 79.7783 43.6074 78.6826 31.749 78.6826 cv -29.897 78.6826 li -29.1528 78.6826 28.6621 78.3984 28.6621 77.7393 cv -28.6621 73.1162 li -28.6621 72.458 29.0303 72.1719 29.7715 72.1719 cv -31.2544 72.1719 li -38.2939 72.1719 43.2368 73.7148 43.2368 68.0557 cv -43.2368 55.3477 li -43.2368 51.3828 45.9575 45.9131 51.5151 43.9346 cv -51.8867 43.8389 52.0059 43.6504 52.0059 43.46 cv -52.0059 43.2725 51.8867 42.9893 51.5151 42.8018 cv -46.4482 40.5371 43.2368 36.7666 43.2368 32.2339 cv -43.2368 17.71 li -43.2368 12.1411 38.2939 6.52344 31.2544 6.52344 cv -29.7715 6.52344 li -29.0303 6.52344 28.6621 6.24023 28.6621 5.58105 cv -28.6621 .95752 li -28.6621 .296875 29.1528 .0175781 29.897 .0175781 cv -31.749 .0175781 li -43.6074 .0175781 53.2427 8.46631 53.2427 18.4673 cv -53.2427 30.6313 li -53.2427 35.2539 56.5781 37.8975 61.521 39.5947 cv -63.3735 40.1611 64.3618 40.2549 64.3618 41.668 cv -64.3618 45.5381 li -64.3618 46.4814 63.4966 46.8555 61.2715 47.5186 cv -.6875 .140625 0 0 cmyk -f -37.5352 33.9375 mo -37.5352 35.0093 36.5659 35.8877 35.3828 35.8877 cv -30.5371 35.8877 li -29.3525 35.8877 28.3857 35.0093 28.3857 33.9375 cv -28.3857 29.5508 li -28.3857 28.4761 29.3525 27.5986 30.5371 27.5986 cv -35.3828 27.5986 li -36.5659 27.5986 37.5352 28.4761 37.5352 29.5508 cv -37.5352 33.9375 li -cp -.722656 .664063 .667969 .832031 cmyk -f -93.436 78.7432 mo -86.458 78.7432 80.9902 77.083 76.4502 72.5391 cv -80.4858 68.3486 li -83.7671 71.9307 88.2236 73.333 93.3521 73.333 cv -100.164 73.333 104.369 70.7939 104.369 65.7295 cv -104.369 61.9746 102.263 59.876 97.4741 59.4365 cv -90.6616 58.8281 li -82.5889 58.1299 78.2988 54.376 78.2988 47.2998 cv -78.2988 39.4385 84.6924 34.7227 93.5205 34.7227 cv -99.4063 34.7227 104.703 36.209 108.405 39.3516 cv -104.452 43.4561 li -101.508 41.0996 97.7251 40.0488 93.436 40.0488 cv -87.3813 40.0488 84.1851 42.7568 84.1851 47.124 cv -84.1851 50.7939 86.2036 52.9766 91.4204 53.4121 cv -98.0615 54.0244 li -105.292 54.7227 110.255 57.6035 110.255 65.6436 cv -110.255 73.9424 103.443 78.7432 93.436 78.7432 cv -f -144.054 78.2178 mo -144.054 73.415 li -141.111 76.9072 136.992 78.7432 132.369 78.7432 cv -127.908 78.7432 124.208 77.3438 121.686 74.7256 cv -118.742 71.7549 117.484 67.6514 117.484 62.6729 cv -117.484 35.2441 li -123.537 35.2441 li -123.537 61.7139 li -123.537 69.3115 127.406 73.1523 133.627 73.1523 cv -139.851 73.1523 143.97 69.2207 143.97 61.7139 cv -143.97 35.2441 li -150.023 35.2441 li -150.023 78.2178 li -144.054 78.2178 li -cp -f -188.787 74.9883 mo -186.602 77.2598 182.902 78.7432 178.697 78.7432 cv -174.158 78.7432 170.372 77.6094 167.01 73.1523 cv -167.01 97.4355 li -160.954 97.4355 li -160.954 35.2451 li -167.01 35.2451 li -167.01 40.3135 li -170.372 35.7705 174.158 34.7227 178.697 34.7227 cv -182.902 34.7227 186.602 36.208 188.787 38.4775 cv -192.992 42.8418 193.835 50.0068 193.835 56.7324 cv -193.835 63.459 192.992 70.6172 188.787 74.9883 cv -177.435 40.3135 mo -168.437 40.3135 167.01 48.3486 167.01 56.7324 cv -167.01 65.1152 168.437 73.1523 177.435 73.1523 cv -186.434 73.1523 187.78 65.1152 187.78 56.7324 cv -187.78 48.3486 186.434 40.3135 177.435 40.3135 cv -f -206.359 58.3916 mo -206.359 67.8252 210.648 73.2412 218.555 73.2412 cv -223.344 73.2412 226.123 71.7549 229.403 68.3486 cv -233.521 72.1045 li -229.319 76.4746 225.449 78.7432 218.385 78.7432 cv -207.451 78.7432 200.304 71.9326 200.304 56.7324 cv -200.304 42.8418 206.781 34.7227 217.29 34.7227 cv -227.972 34.7227 234.276 42.7568 234.276 55.5107 cv -234.276 58.3916 li -206.359 58.3916 li -cp -226.961 46.5127 mo -225.362 42.583 221.665 40.0488 217.29 40.0488 cv -212.922 40.0488 209.22 42.583 207.619 46.5127 cv -206.696 48.8701 206.528 50.1846 206.359 53.6748 cv -228.22 53.6748 li -228.058 50.1846 227.886 48.8701 226.961 46.5127 cv -f -266.062 43.4561 mo -263.786 41.0986 262.105 40.3135 258.917 40.3135 cv -252.863 40.3135 248.987 45.291 248.987 51.8418 cv -248.987 78.2178 li -242.939 78.2178 li -242.939 35.2441 li -248.987 35.2441 li -248.987 40.4854 li -251.26 36.9053 255.805 34.7212 260.595 34.7212 cv -264.546 34.7212 267.575 35.6816 270.522 38.7383 cv -266.062 43.4561 li -cp -f -302.311 78.9346 mo -302.311 74.8984 li -299.451 77.9248 295.415 79.4395 291.375 79.4395 cv -287.008 79.4395 283.468 78.0088 281.034 75.5713 cv -277.498 72.041 276.572 67.9199 276.572 63.124 cv -276.572 35.1216 li -287.51 35.1216 li -287.51 61.6094 li -287.51 67.584 291.294 69.6025 294.739 69.6025 cv -298.19 69.6025 302.058 67.584 302.058 61.6094 cv -302.058 35.1216 li -312.992 35.1216 li -312.992 78.9346 li -302.311 78.9346 li -cp -f -338.937 79.4395 mo -332.045 79.4395 325.821 78.6826 320.271 73.1318 cv -327.417 65.9873 li -331.033 69.6025 335.747 70.1055 339.106 70.1055 cv -342.889 70.1055 346.843 68.8428 346.843 65.5645 cv -346.843 63.377 345.667 61.8643 342.223 61.5273 cv -335.319 60.8574 li -327.417 60.0977 322.54 56.6533 322.54 48.5771 cv -322.54 39.4951 330.531 34.6167 339.445 34.6167 cv -346.256 34.6167 351.97 35.7959 356.177 39.749 cv -349.449 46.5596 li -346.925 44.2891 343.064 43.6143 339.276 43.6143 cv -334.903 43.6143 333.052 45.6338 333.052 47.8213 cv -333.052 49.417 333.73 51.2686 337.593 51.6045 cv -344.485 52.2783 li -353.148 53.1201 357.527 57.7441 357.527 65.1455 cv -357.527 74.8145 349.286 79.4395 338.937 79.4395 cv -f -374.848 60.4336 mo -374.848 66.0693 378.303 70.1875 384.441 70.1875 cv -389.231 70.1875 391.59 68.8428 394.364 66.0693 cv -401.011 72.5449 li -396.552 76.999 392.266 79.4395 384.354 79.4395 cv -374.015 79.4395 364.092 74.7324 364.092 56.9844 cv -364.092 42.6904 371.828 34.6182 383.184 34.6182 cv -395.375 34.6182 402.268 43.5332 402.268 55.5566 cv -402.268 60.4336 li -374.848 60.4336 li -cp -390.496 48.2422 mo -389.318 45.6338 386.881 43.6982 383.184 43.6982 cv -379.474 43.6982 377.044 45.6338 375.861 48.2422 cv -375.194 49.8408 374.941 51.0156 374.848 52.9512 cv -391.501 52.9512 li -391.417 51.0156 391.169 49.8408 390.496 48.2422 cv -f -433.992 47.0654 mo -432.309 45.3818 430.886 44.4541 428.188 44.4541 cv -424.831 44.4541 421.128 46.9814 421.128 52.5303 cv -421.128 78.9326 li -410.192 78.9326 li -410.192 35.123 li -420.875 35.123 li -420.875 39.3271 li -422.977 36.8037 427.181 34.6182 431.888 34.6182 cv -436.176 34.6182 439.206 35.71 442.237 38.7383 cv -433.992 47.0654 li -cp -f -grestore -%ADOBeginClientInjection: EndPageContent "AI11EPS" -userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse -%ADOEndClientInjection: EndPageContent "AI11EPS" -grestore -grestore -pgrs -%%PageTrailer -%ADOBeginClientInjection: PageTrailer Start "AI11EPS" -[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 -%ADOEndClientInjection: PageTrailer Start "AI11EPS" -[ -[/CSA [/0 ]] -] del_res -Adobe_AGM_Image/pt gx -Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx -currentdict Adobe_AGM_Utils eq {end} if -%%Trailer -Adobe_AGM_Image/dt get exec -Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec -%%EOF -%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (JIN YANG) () %%Title: (su-logo.eps) %%CreationDate: 5/12/11 1:27 AM %%Canvassize: 16383 %AI9_DataStream %Gb"-6CNCc1Pp#o2n/pqR,4)g@A-0h?!ks[6;9rD6[Om2Ecd#e9L4\ij,jqnYSo1u"g0]?U'9B5r@MMIK4>mMFaZ9SJOhedn#Npdo %^0'3@^3b'Fp\jCV5CU"ZBjpD'+!(:EbSOXa\!u8^J""lsE6/RYrP^a("T*+Oi.(Y-,DO%ph[KM/h:p]1n#jE[TjPS3c$T6^'7MZb97MG4rU9f."f&=VK(X'^ %ombK?!)P,Zps\]8^VBU:nF>f&k5OdurDF^4nc$H'X,m8bbr[=@f.Usto65\oIfJC#lJ\1u@;m%#![kbZ;sM1L;OoIrIds7YrF-W' %U(YhHq!cPQs+,BL&Tf&nbMW6soBl4k5Mk5SS.d;je)0#s]=s!(jn?=@X7,.MTS)eg %=89\`a7$2R!5\)A5N=$eC(^+FYSM/[I_8.Wnbdp@5$["DiVoH``-1*c])\?/Lo;=h;P_TD&,7)BI\>5@\QA,"HdJoc(LW6:L/n-9 %j3@3e&S>d*[eoc!/_G51HB(BV&%mI:#/Nna&ZH+Z6\INj9"/bOH$CQJL)/USrD(Mhtkl'q6fpdY$3f"j;^J+:3p-FbYA'E3o^ %n;ZpEm"sn^HcA"]J+:5B2a[&*nOn9Tk]uMW2L[]I>h;M^n.4*epVVKc-XK)fC]9>q %%"Db=Hp:nFSeZ.$mt^r&-[\!^J,GX'NY)+)CZ50L^V#G_,s8C/I!h[J!01=S8(W^?a0Uf6Gi!OKps"*V3-$&V5F6`Jp#6ndK6?\N %'Jo:HYVj0QIuEcNs'dS"DgXd@'5ia.@NBhXo7^Y^mN%lZIKF#giiqF"@N1>t0njU5pP#b!cT@2JB:Y[m''']%_;@p$Xo(0! %hj!$rK7"&Vb&@86?OR$(b&@7s8,cbBo1t>C3C\F?Pb7'#^F?qnB=6aFjZ!4,0/ac(Pi)DFh=Bb"Rt&$I_t4r#%fbX5jj3d[J&D/o %IbbNPgdV2are6t(^]N9;m5AI8+3XE%\D%J9@"%N0[sa&7e8`*+q%iteFO4b/p&&M#AV(g9H_EV]*TE$bk&7&>q?ESY2q2Wp[Y_[. %[b#HA(NlciJlZCJ-`mRm%@/6@U!DTSYms:Z5213`"+/gC0-cJslZ>dG=*e48b'PN3]dhpehqR]BXN[]D9gAKd*nM#o2/[YD390Kn %C^n]/2mcJi?<@TQLT(PI0a& %^*g'-pWe3Y;h,4nV57V=nt*L3]3W1G2A(De9'L/$+'@EJ_;B3KSn7nUs.VH2q6-eE^GiRQFG'`Wg[I4:%B<4]leBOm-cDWP.03lug0S7>83YOI0"0D5?VeB=esVn>FTY@$BsOnYH-T\=V\);i&b&\mFM;[gcQ-n4mVIS0L]ir0uXLugsW%d^9C %]k@md/r1GpT?[',CY^:j*m!Pb`R^I&(Z$F`DHC9%+:`C^-*B]`IGqg.T$Sk$H<\6Tl*4UG4K%0J*E-5&Bu7'>6;oBU %1`#@\e$>FKP^-fmU#f6r&,7%:*Ubg+@p)O%9KT-(n1@;;\=U4"BO,iXI7]l6Psn\>jH6X4KmjDBWLdD=Y:>\*Ic`f% %gGg^ho2mE/hmnlaS8[WSGJ%WP0s.7!KJ($@6>X*W8@/a\a]);J@7^KdO_mrJ6lk5$ZVNlMRc-ISDE=jY]!1Y*r\[VDmkbt4H_9W\o2%Vle^%LnF/`n,5NfWHY.jr8qW$[! %(uY)[j]e,@b>/Z#+)g[$5$bolV=nc%hAh4JUoQ9LHA*I<'Vq=ag*Nur;Ss5Dr-iT&J#CXf(cnegrX %0(/-LhHbVT\_LM?p$)28dgmdX52:Vdo`""@F/btMJ%WM-I/eI!2LG,hp\i-Vhd&TN2gbs7,gVl95(PfQHfZl4tit^)[A;! %s1,l@rd*Q"%P-GR)>r[g#[IeA9TnlqL9Y5pl7]OZKc!PaKKIXV)2^A=agpRa\Jk3fj.o*_"T`?.:YIC7Q[d2lYHNJqP?`5$G4#AehrcBWGNU(a;50OUmgD\mmm!JOal8d3Y!-)h %T+=0QW9-%L_ZB"N:&;U%nd%t^@BmDE^AfRVbJ72/"n-s@!JH0Gmf@BMqb&a@%"+pZXFM7XcMZC#$mC9Y6msK8_^_b*->]CB %@%AiBT-*#`0[,&*=#6^n$"Yusa3D+7GHd1=.Lr>VNs##06A[G9AR*2sgr(e/?0YhJ*5#7Cn6JC";bSVle&nIDPYKl/*FOMR7=t8g %ko5ohSeIHI/[rprEjOORGCV7\(D55o?O\i)btI7Nn4V97+>6"?a3iN!Y=B[/1\c.W4E)27hRM<;k:mnn1_"^F?[bL0ZG88O[ %6pi;*]Fh#PZWFT!ZC;W`6(QtAGrsQqm?Qp35:M,r#61YpR$;SgihWAA=W5&FPguS2-Y64K:"Eu2EEPk99A)kh9%e1jSJ3Tn8YJ(O %r8f\)d@X9.P`hgnV6$JoV/3@Q7"&6M_D]Cm`]1su`]D+$`]V7(`]hC,`^%O0`^7I.,H/])aQQ/##mE&HEK[Sin5:s(EKdYknWP[a %)+7@@.SWkq`Cj&JZVih:gRT&Xfgo7=Tm&<^cVdAu&uCObJeVLo?Ab)D85C5F^crjgk_%+V.D.b7"r;TV:u>c9lN#Tf<6HE;.OYZK %e"XJ\&`dI=D8Te+,W)%%4KU'SLC6h+MPD<;sI8Q]uMT4 %]gU7BF9n_7mCLa',P@_5eL!r&._O'MZ^^8Vf5R>Vk4@E,lN`MagWqR_J`U$".$b:,h/>)q.=s"+.?`5e`NEYGKPj75:':qJ<,3XO %42JTS!;&U!`[h<>Te/T0%*Ja+Q&(cmX9Up^"p7^Oo#[VhZB2:'aDq]2^E4jZ>%J4o\680g&eV/($;"s!qW=SV&[k5c)K"10hi0n0NBs]o&?h* %KgFS[\;W(&OZ+JZZ\'nlW3h6_.qkBEP7bAFTOSLnY^HcJ]nQ8h_hp!ROWmqie_&R+).LpudKc5uNt3uAKMb\N9ZEgSV0RSk#C %>n0LFj_UMCT+Oe[XIP^D;j3;"_rsL:_lcP72+Q;n"(6t@"gVVC,\@E'Gmt^=$(EN`"qRrcHg'=[O!N)T/WbQAD20DKLBp9l^a/XY %7KG#&R@O3tqe0u)MofVbA#2CnL:S5t,rB-JDT_:l0$7e.6"Hus[=;*bi85=eG0$*^do4:!l0P9/3g %i"7$7Ps%9-+u;W.8aJiBPoNB#(]H^lJrC"M2=X(hrWo5V\s$Q#k-=.^ %%N[l@GKSQ_JaNF\6.oTk?Dj%>WN=SlPb6OLjQ.j![`]&e&K.:D)&sidJ6`c$$QunM5XZS341b(p,lA+A863Mn'+ACS&S1q\m"&-h %Fgp(Um(\)bc3j>_JjGD>`XJp)!&_'_%_1mAq!K&Fn.O)*_O_.NV0ek:%d7:*I%3u-J>G6bOj7YCnI\PZ"USm5Vi`R&K7IPXm9J(] %iS0?6_Ae:iR)/6`qN"emL+J_18r>a^_WImViG.>[aN('7UL:c7\_`u!CmdmpgL5`68oeNTj$V!.<\e] %XqqWC*2a*5MY8hqgo61DX,_Whp21C\k.]lNS\Y!VAcJ6@`rG2`m[@sD%"U@)6HVCfg?a!%`o$.6]+rE.$&Hq6-]io/"/ljr8-,rg %"94NZpEQ6jHTJ^T@=>K:Cc@j.>%rh=.:N@c`$$umViVR$OXjn#O]^U.X:Ue-7s&l@e.h.\1djM4,+;%S4/.iVU5Vk\R*;(2n/T9[ %bXi!i(k?:jKObQZ/t#[VKhO+U7#jST4cr2XN*@H_9Fs];L7[$4ZD/:JStUaWhdp?d%O,ug<+KUY&b@Hm %Ikid/F8t%uZ]W3khgBotrU=b8#X&F3fPBG$(G>`+eLn#tV#^),/5_Yh^[@6/_2.80eF?L8:[;0:=*6XLo_2JfIlK0@hRqfY'm/M:>ITOF(@/F3E+kWM!h %qQA8T-Bd[ai7Io!\e``1HI6Ln\t8nBTYH;DFfnpA]YShnEoPmI8e?@lD[1=\jt/#>nVE/^&bmR8)BcEMe\Y&t1S?_GmV$g596! %2V;7q/Kd?#;+i[XR\=*b6e6<6N%[cHk/'/6P1WWD %\"lOJWT:de6*3P(:SaO#a\Q:U3M%OBQK<=b_-L]uD,cq[<+:7flmpIioR(_crP!@aZFuY@mV;uLOm?#I=.,X+HC!_sRKm!PO=8G, %4=[C/L'Qj7niKJ4M'R;0gF^P6CQd:>P1:R,!Yj'a+J=c@S3'SoAg>n8Q.HNGbBEZ:'rN\HnLB!3:,2=[p8#!>U]BX6H`g(JV@HF+ %VN+PI3\FLQd''Fl0ZF*A#Ce!g8)e %V5D1&)(-^eAZ1K2AXLJscWBP/G3[;\kKZ$Pd'rJhf/iNRNdSg"YIO&k`nHOj22fICFsU9j6r+ON#E^93EYMYR,X`@S=/'V-7O5bl %C=cd&4r*cjaA_V("ZmIaSCf3q(=m"NmO=%G>#l"^V\p,sS5fo4-P`s88dZt`K6n/aU[l<74ZY9-pap%B"?UWOunZbrM]"*QL=Vjo-'s:Js91 %rEr;8@I/Br@esZjb/Faaa,;WVpfLMc7qu^aG4.[d%5@T30Qe23%g"V7[RaU"$QC=OKPpZ,E_;ncYg(QR)WTCdO;hD?m0fc %:h3I'0O@qtot)Q@`Ad35(V#1#d1@33[K8n0M?QlH]!LnepP"ktk2TH%XENkq\$r[ab8 %hIN8D0G>tKQ,)!cXR)(:9%/GnC=GTk=ug,Co&<0Rb[HRt0qOrR%Conk_H361>^?^flm8WIaMF2_-P7Y*,3A1RgNmDl5CSlE-FCgXW@fAZ/f@SWnE:AI!8:uf\=;3);;`sSdM:^j-9"&Xq% %d>/f?#:'^K'UD,q34K"r!,d5AoWZr,"BB,3'1^<4R(3ha2])BJ'DQ'XjNh)L>ST%r7EoQ%>Tt;7("c`;"JLmTG='lA'E^?XdL5-p9J)W4 %+Oa=__/r##6qneW31([_3u^sWaTBhu#n37b!0RZ(8-#<;s-4i6CYddOWATr,00=F&dFq=-[aC3(*40R`D5@&Z-[h3ZmRXeNV1`il %,a1#.-*`5O)*m)K5,gnJK6.`#)oX?RR,c-k@?Cc_L27-NhX6["T%EBu#Ef4_-WCJ2Le9*0^*Cd`c %EQfC]bp#lS,FX6Q@mpuJP*'^cQ,kt$d;lH/AL@OT-UH'0pi,aI!;/\U\-+&>NA24U"Y7(!Uh*P`&@/H2759`,;5NWVKd^bAk&lo! %mPRYH=([HH:$E0)ZNhD?=3N5ji!JiA@\2'Dn$L!,NB6(7pa8ZHd5t!pFEl=E#-5_m>Dh8E"71r[W%%K47\&5?d_/g[M(krO))L0W %]&$gJ:]nH$rC*qX5GRP8enEfJ']7ic_I5]9)J@c"CZP2h[Q^A/I^WE1bcA-ZVbSsm&O,Nm1s %;ZHA`nU&4q.+V)Z)c&-*!OL,2j(3@*0rJ#5]t@a.m)^HLbTl3`LPZ\X0]pNArC"qT3PcLYPJ%n$/(_qW^o?R4Xem["g0-QG"#d0HX];[>LRs-`1HTGs;pMp^4iR;r6$5!H %iPT@uAlD;Bc&Qj%V\B@#mi?s`H]A>)kpc(!!c2?+##`>;O?MdV#+YVu79\]Han7e$9rA7FJWKoPmF)ZRc4eq&1J\kGRIB``2E9!g %_=?$"N!$Nc-^WEps6_t%1S:(TmW_bmVo*p9P*oc#XYQJLb`$VcZ1=j/AfbqEhb0%kkNPkZgNpQWGe_IK_+]8c.\@PV3Q>k^9)R58 %e;*G@PZWgb*XPcKKXhLLF*VLIWG"89n:c?u48c'=9M[<2reP3OnQ7LYoJBq;jj?)*:Y#f>r9%%IeC)ZhUXWJJ>,.>t?(*fi>p[j$ %FQW([?CH!HoN"cARR!4bRC%>36?fE;UAO>8!MZ%2='@3@c]ST %Pp?6"%e4L[2j4$2:B%Jiro&emB1BbYC+l_>q*UGDJJ17]g4t]E/8'@gHk/d+?K3bhL(7SN0j`lp?K3bhl?J7(8Y%i)MX\$kf+).L %I$kI?9L8O)bbb>b*BsA`+"88KG'KWBFrl1PF*pC]eD,aF!?!8oGc!6;56$^[o++QIRb],4i2\H`1j10&L8N"QU(IcGUJ#`ZOka6\ %cUE&[Ef&!)5l[t+*$LQS-_q$B_;`kL7]/0&,bu2SUB1@?oO!fn(3ofj:&,ZDg2s>b#'B#&T8chA)2m:l)2jM'igs+U48_V5n>t!` %a,5/YcKJnI?2V&OU4DATXF*JRSVoKo9g)Q9LPhL"AKOuic`=RPQp#<\N7N>/>'+'S:?Aa>m`.,nc\OumlD:,a_cQNZX*X#1^%>7( %Q[Z[Ir"%H=.g^PK@BUsC-eFGEFsYY+jgE"X%UV;FHADM8FSJ(Qb5G=-^8E.C`nh/F;aY2'dNh6XRdim`5#6IgB6BQT]&"TCaeqr@ %^=m"a3PV`'I^I+0[RR$a:<@X-?!4?dniJRs>oaI/,Mf*hchS/Yg$#=P.eH>19m:Yf@ %(0tT&MU1YFITGl#/!hKf=!OsH/%WIcF_?"P!rBKGN80;@0!=ErC?8%jFDTJ8&N]Jqjm*J4R0,$JKcgV(;k7U&1dNcmrc(!CY2#mH %](FcEY1b48F#mXI7nV)%AgStbk!D-+]e[8QT_>dT>=l3O-FR*/Qh=gUAtOIbL8>`(;M(.E@Jou2^2eVE:?]?f6T&)4,qbJf7rokq(a41i.\k->\$G:@selVcBY?'S_XTb;HU8kg[n %SL^?'o@i/=LT_`t?$5p7-XJl^mI7O$a#a,g;FALPp(7tsO!%a=DY@D_!t"VGC\U#'dsMK0b!6R0^#gtoX8-?a070`[hN%B*\!k@b %]^2c__p5p]Xlb'h070`[qJ/9%ZDk02]s0Y7@Fq5$lITnmBN06dfonSk^VR]3:Y:q0E]k?.ogq/BI>fPE&a[d5IR!^]"J+0>8"*ZNF?_h3B?B93l%\uJFC(@,(RD7^Z%OftN %hk0GO5NjSH.#lE_GC/V4F,+haB@==oP0aaFh]h7?M?A@qH0SqNa`RP:KoE-X%V;aP7q#A1Pr0e[+0$9l3!C2R%0bZ:.?gg %\B-J]-AgkY`U(aF=&+j@T+R,KpA\'n-`>GVpY]]J&+L]DB1>pE6=cu^nP[U*N_j-h8'0\iH#i`CJ1?1\ILTb?\38/3H+cH;:uql./q!C4.IDf);U- %0[S6<>4!',n!7#(dMhhdBHo+YP*SR3kHGrHn)$9I'CT8LQgpLXmcQ`V>OSp-Aj?1Wr+3ThjhQp`qKqQI_W.n''>H3L3.^IWQ6Wrt %A766mRdf.8G&ee)_9C2gnes0j[(9JR51k\`g!l2\,Rln/A+h_AnIbPd9#a9Ie#(T %KjQ>D0)/,>>DVHYESJoGHbYJ\Cu5Mtr6@kV$bQ9/ng\m@oX@qYtXTN9'sR":UOb*ZnkjQC8hbX$=9fif7sP(TZgrOeKG"I6=H %-d;tlVG9o'dh>376IO)rllH\P4W[r\2le"B*BB+S4WZi2QWZL,G'<.d4ZSegCCeUbLO/(@dAnra?>eodIRCj(ODY^dB4!%WLh(@o %Pg9*>XB]&tKsg9tb$DEne]M'p'!j%gb=n_4>-?!\<@(>hJlF3[/s8Y.b-kKMRSjeA/__O'o=DK8/+uPJ?Zu7-UaOL %IK>6"%%UY=ksZ"&njT'7,^qlm,e9.\.2R'.KY]0C@?J&[WjY-u9%8LPrusk"aUQknP.I8;rEM'O@,EXu-h!C9OC3L"VIHP9qj5]p %KD)[rX%*[MAEVLZ#:?hcqeRhLe*)jY"AVO!90henK-uGBqEVB:YUNeZPa:[>b_.^X9OfP'[gZo,2j8%le";rV9j(oJ.%>V/oiZ#/ %bZ&NYrUWs9L;Jo)1Oem"T] %D\gE$NMNaIdTIgZ;iQm")#0+ol/l-7P\FD$nL49E&bf2IC]OInE;][?a5lQIo?tH3KR^/W6XiS"ks&70RZ?@I*"\8Y9u*esghV]C %ot_2"S']3r%X=j4-W9AcG3".;&s,VDVR/mQ#BC`?EL0)1 %*4feEWdX7rF]*>g'2ID=g:Jh[3)56s3H\'?n2\`?+bls<2.Y&8qfsI(n4;s0q0^G"lAWKRro`<4?fg!C\b9%+I?eSTjk %>"3i*n@r4`YL\t?lcQ8Njjgs5C0c+mY5Et(Puh=s='r15?a+$G^&!>oqLZEWJt:j.p)9Xq)PQ^?U%0+qnf"4m)PQ`?#aJJTaK%nn %2'9]YPh19gYPA`9o-(d/6R_-H^S?/^J,7:"Ist/mV4Z$WDq/UO/?`pttin&p@N1Q@1B:om9J949q::)36 %-Sj))Cc]*Q@*Z.6T(ZrfRM$-PP$cAU$Sl'7\Sm_qo2tdC`sC_%&NuSB][iunmCA0r7`mhA@hoZ_*k>DQMX@V"rD5/RU\F0>SS^7) %3kor`jc,HIeH[Qg=LMn-riJb"qD5N/ZrRF",a44"\l)<]e5phi7X&@"ntr7;%^qNfN/oY+T!oLu&=C7q4%RY27/P@@dF3g4,G&_= %LfucKUuBB@,j.#DV^.Y3JVN8bi!-p]'&Bd@kSfV*)Y$a2(C*P:Qu(+CMHJJk1!Xg#PA3=CNm(friogjb=8@k[d8T\5P@-OA,)$+L %)7H>;?mUC@#EmepUimsH9SK&qJlX;R+DHh4254^2@q5hEY-HP9f)!Bij&gD`[FVVQ0W?pjQ0tp)51]SN=p%pn+FWTN<^UIf,cQ][ %-F22kf%S2K+'E;'9r!rSeWO&i$)M;^CYe&p[4BrZej/o&D&PjLZkPA1.ur>k)Xh(Kt>u]-qiDoh=?$TcRD-hS>6dt=iCACjM]oN/nPZA2h`Up%Y1-3f2[QAX] %l`,'9dIo=Ct%QgS*i/^qD6$q>GZ]<^*7Cq>>N>+g4E/I'[0h!S[[*CM^:b%a6S,=;)?CY*a@T@KM5X(uBAX&3<:WR\Ak %`W\4Qke?30h6f?!clE:+B[G#+`eJYZe`9Q %jf*7`82:N^$IR.#`JK7=k(bF[/IGuBKiPtGk8A_+'0\H+%<7@0B_"&/DN],pM63\Ailh@"-H!9J1XaeL"- %>0NQekj`]ca.+0bnjkLAi("3#m$i:M6o/VP3GPNZ*%@_Cj %QrDmJ_^6B^lE#dfU1#D^P7/`7p-pSqN]:`#pXs@SHmci`Tb2rk'48Xr135qb457se"_%tSVs+DAcmM-.^(Q]Y8n["e4.U)Q/h5q.(;;;F+c1g %AahLiJ;=()p\^ZL@ZEJY:Lj+Nh5M%C\At-IE'10-&qI %@)Cl#qgVRr$ZfmJCdMA8gUgJ/mAf9<>&IFo-WP1MCsT+NHk>hPRdsmPI1^hSim45sb=OSRP:E,%NVFpE+dK"ntch[CA6MHi2F([[=5-p>O>t?;PplXfMX%8b_jM9c/<=N %+C7D?#`J3N+7F5#67W5$FCR',a[b?JBZiMX:k/7PU/TE&M#n1N74XSPq[:aCNs"o`$BC59C3dS6kSZPCpj2YjP;5KO5 %=ok>Ym4D8>1_,6shpW$15)Z3!RjXaK#IY&WIZ#[b-]i@5kc+S=>eX^IZ&A*r1Jtlrc>N+JJ$!':g(g>`p8+1qOCb_H*"l5,mqUXET-=GipU7`/LG*2A7YBHgsg- %\?:mOMV-FR26gNPFgbW:a?)H@.qp_Na4t`B4/YqkC(3_2L=lcXc>2T"C7d6_:$^edK;nIr3K9p)&qfXc)pHunO&g`OWm1CVHIj'm %4.s0`b8X$6[jE,e-,CA9g-buoMR+_TU*tqO/;g\``$/i,!LD8XCQ3=6d8^A%>&6>p3G8&=ellm\o.O&$FjABJ`,L%r7]H>`e0Cgb %Uo;Ve5c2RV];DOmOa1U]#:)&Gh,%pP&:^. %,*Qgl@oHi8dU$)-`Q0-VIV(?]jKb1(Ad5bn:,.!BGfaE$[_';\%TVDBQ3"?#TN,BbWJRB[1*2UFR@\M@3"D@Ni5&NV`C*X`B`Fu# %imSCUqp]1m.K\W@pq:NVrSIB?JC!5eWT9h^)Tip %,`**_e[68t7Ie<3o7Sjk.oEGVT$?]ei&g(fkXJ=>iJ.R[(V`(0Zc+)OYHC+ni<-d<@Eb\71i;NuHqZHP-/W/<$7V%R^2Wm&kUQElGYAHCLo-H'J\ZZ0jUkfXs"fqU=" %M.cMY`25$%9UX%aYb06Er4ASL!&:QLP;&d6qQTq"/gB6k8TXU5T1eKKI)aK-QAp%4m=@tr7I1r %_$:kcq*I,nFp/&U=TNdZ2[K_]'e %IIYhXGL^-,^0B&,qW"qR"cTX6;QrLBE:jN,KR0AsY^S=ZM[kPpFuT#Pf"VImHkG]K>!Nn<^Bf#HRs+B\g@cc`3k2D5h1^&eS7t3i %OkYrW6m4Gl5>Ug7_Q;l-^bCI[U1ZX[a.,Kgi#e7s4-$8/7SD9WYp#=>-V'nQ(U,M^_X1-:qQ(S'kN9Bp,46h@i`f!X=/*Z:BhcG9 %O+pq!_=Y\UIa8230pi\c)%7fUm*Q58ZNef(-GIcm?1MRI`k5Geb&65#AI`N7Fln3[0mDcB4tC5n`g+?HLRh$/3f#UUl_6*`I2nD3 %UA7$Q2TL'[#\25MerF%NYI6+_Sl2'T*Glm^eFYYRj.Y_8eE25-h:5(kl[p5@F.#-gmod8[LB&.="PpE.uac@o#eZ@>,eurD*4u*^iS.TG+JSEeL+DR %>W)>iHD@KmWFcPbO]jk2[lH2)\Ja`,>Y$=LP%H2%^fu8FJ6^%T,"g0o,+$D/LCn>Lca^&$UL'9SOI`2ZXIUnW2iBNQC6?nEr7\9P %*%kE]Mq7,:d?9EVV;QEQbq1QWiBD*$9m\IPga^ZWC=Cs:,L:),RDInpNT@&KlM2\cfj*Ygmcc;>Lqn$8[)g-]H8:?[7TkXP2diW5 %G`4"4Te0nbJoUJ5c@sVdg5pc:"8f?^-Kd5FV`9GYC8_keGW7`C_!k0B[4,!7UdNqt$#TL+,HM' %KXUeP&19shCDsdZn`]lFI=>CGcS!Y[#U")`n\iNEZW]L&gLp-RKPo'YU*pE").KTs<&Y))K(,QeN0-MFCA<._+]>`30"omffmF8JQ3(l]sDlD/.KXRF=O?c4o=gf.D)%.Qc7[kW#; %pdu]2/)-rsi5pElal)pA_4)nrr&P3SPAmGu.u9YHV<2qE1E2eFB=*tbCuR,^$cfte@q*cOQnep05bfb/%O5&WE/8Z;A %?K^5#E#P@=WNG7>.p;Wk`suj'eiM]kYflk;Cq`91cZpQ/mpfGV=J^8RX,` %<_\U<)68^s;5.Z#Nh'>8#T>;fKkQ_ua%1/D.FUQKC!M8-+NPng[uio;D`HtlQ@hCkIYX-0pinN?T_Q0/B#3`r`B:'gCPP,OLU3C( %VR\JIC`.@3>UV %>N_?&`"#RaG2]qrgS+VlpF/O/]__hi0`QWkRZo4PrU/#5r %Vm<67/C+'VFCsN5d^YTBES0s'Jhn2IQMU]Br%WO-i5qh,!RU1?$HSq%O'a_E]=O6jIuXI]ff:GjgdiW>g%67Ef"8kGQPf0L(JPD/ %2LB.INb*MsJRQf6H)ZYTYM1!`:FerEN&e&]i2\4uipSo;67\/*i`LPgL'hB@L98ZV!C@R88FYVT-''B_43t+O*7%J[>EXj*K;9G8 %^q(J2$>&[8m/-VJqU6B;ah:4TUhd>?GrGk]!Soa1:?NQ090eN%2F<2A04#(DY;`4RduN0I1,&.9+^pTQ@%j4V`/?bDpk(\fduaCgobqdEoCN[$Ptm#CSXi+s%sHa]TI';B44^Z %YtjK=EV?r"+*31Je$"-^FPU`X3'O0!&Nrna;D'riTgs6eFSs"Fl=-!Z@9;hW %.B^nRMc'2N]MY(AjqLZq1(q,g]VQ-GHIH2[;M$pjC6W/hAe^H47[[S0UDD+^qB&`]S`R/P2B;rkGE'3mYPRe4BP26qSbUatXQ@K# %M,-8E>)cCK/%'RsK+o&^<.kj/R#:e<>*(,>AS9oLa8**OHR9>cZS@a %ATn)Oh;[!_>WF^qF+\?Jg.gq>F-bKf`\Q<$Ai4_23GP,@@>3ldSC.idp6/[B6i[he"sTgmXubgrc#]8BEbq1LoQqgus*\ %QnrQs-Pc6ck-#fNGBck@OWe?Nfh+/b_5h3#-V0KoLjXb1LBqj:7.mVBUV^m],`qYS:`U+9m+pg*_ncqg>'6i&3GLh>#3q+HVgc$S %1(e7$6(M"D_?`h,/2HNslR'Jj&YnC)b>om#dtkre*T6arSi4cJRgCFD6:jnZlJnROd\G7L,ak?o,U8_gmI(!:i[8HcF6%8PJ7jdc %XMVNe*(ZRijC2H(]:Z"=a#rpHC/BXb:SL2_/E6#-6PWe3eN:JA4eI,HWuA!C7)^YuksqdbBN,E&kS4(r3`8n>fo)LS/EllG]`K77moT0;N/SbC=E %6iM)7p4GXrVRg7#Oc.I*.7-_Qlr>ge.'FX(BJotPL1H:,S!gU^DJYl7R<+a\r6.2$+hF$TrT3#(7I'5pLXh`e^bjR^#tOH>5EPcH %K3C#6aj9m,9&;r(0SW?03.GVnSlS+=qmANW)Hmr1IgC6e)2S<2uSs!Vn5\Y2#8YMn`&$kFX8r7TL!5+8A!4?LmThac(e+pqUYqB#-E\0`C'(bd$USpJ5I%>A+V6mfp>.n/ZD,HjK545`VUR!649,%5% %/tnl&V3t5`'1t;jfK?_e.=M!f`T&,hP?Xb'$[k2nEnMEB?@Hq!DN6Mkj3)LSq2C*Ue46I**-5XsB().8Cb#/=]V#5P-R:IIDo:"F %7X?:[\[J't`H%id\R"ZA?T7_gVs4cd1$]9o/#ei>$5BK4P1*Y8No$Kl=.4MZe$p8)Z9'$cj7_!/76)kAA[Pj1'XDf%\lra!Gpe7? %43jI5-a__9Q0X!hp_ns,JYnKS>)K*XVK4Ps*h/tDK20?MJN8!@0HUhXE#u,Q()/tY^?$bs*cGr5YR"X9PaHFn %+hp6N[d/XEQQ %lnG*Ym^PgH@`6@"0>@CD0E&%cW%jqIT^O*ulQ!`GXY2K?' %jin_!Gi6.$T4I$HWQ?*2Q4-OD(Hj>?@Y>?df(#5;rmn6)#p1f?Cr:r9rW9g@M[2]8`^$_jJKB;fb:f'K`f$).=%4:Y&+EUR %JUnHldR7`PlW<3Mb`XRVaCu)ksf^>8oU)+8dHMhhpD-a`dkl70IAdS %fa\>/!:>,[!E.?J+E-KZnR-"qHGGPk*4eT0(F]hWX_8PZV^c'`m8CM\JS($P0YiAXq(n+$]R]K)1ME#W6jd(&%")N^$0K990ZNL=(,N]d&7O):lTJ#/HhrFUor_,#a(m0$s!e=E@BpY<#+NtTFqVHha[/HCf]ZUi=Kq+[_'h*rM=JTjY'rL`> %!TG%!Q2jpF.H!6VOS=H1"/[T!-bJOV.(*HHHWVid76eqY\<-h_QkK]AQ@"H)Qn5LgQ2nF_N[WN-&a+TimtK$#Ha2BRPM-,i_!2Lu %O&dS\"2fg5;=s.k"mllnN58^^!@ngS"TUiY9dB$?KE=4D$q76`#i;>uO:b$l*RMtVp'!dH!GnUuHsNqr7*Zo+_@VMe(4ZgXgBfRN %Jm%G?4,S,eV_?@pJ8QhTqp-'\Z%2IVe&VNQ;R_/_\`Vuk-EMU+ZmTm7Gl9fqh_=U0,7][.YCisU$p(#).kX!iT(#ti`9mX1,sCIiMQ(3TE8KB&YibkJMLXfOBH8+kp+^iZT7V?@ %^bc0res^eqR'>uYiu?!?GW4P#`gF39HUQh7oS%>gTLV(3B#jrP>4#M-%?d>N>*=F;%MF:,R;;!3'h_Mnnnd\]RB\rTk1D_bWXb"i %q6dq9`NJmQQ!`jq.(c'G?H'$^.eQ21h1N'D?QpMr5RcKW57'T@4ja+8.!u'@1oP3j662/YFAN-o(?_@DMiqEfdtf1*m>q=94.M4T %8AM50>Qu'D5Vi*)ZGV@Yi_^m#nHp$;@^J6g&7\u.1CPV.)gKW>#i^e1!r8TGCs0ml;n %-@>g("1TXmHl)k=d0&Y6Plpq)*1hgKZlf3rG!kFShA$,+4TJV1Ud.G`j,\F"#mq#iQMAi2WBWj[+9Q&8`N]I@_iNZ7++alG0-H976dMp,;!PaN(bP0H,duA=WE$\[&pVIL[L5O>&&c$SW45neAnK@qabAb$L=bU\YC?q)$TmoQVcKe`7dZIAj5F %EfVskb*>0t^!FTr#_!gp:%<@*9(@%'57blV,J+nGIap7sQoOFb,fg%o%^midaooBsKlpBp+!`sH==O_]q[h`*Pj3n>iOZi`A0329 %,L$kDYFfUiT4((dUP2:XK;fMi(nKW#(4\(a6HTDgZNI#L9E79f2%KZe8L)@\@&Q!:5'$a,P:cp>enb=3Ej@5E,=m(9LOgk9a#QIX %Ve-&gO!pX_8iY:5f211^l[aUS%5Y6X>`Y+G\Np6qllZCa+7(THM$sD\aa!Z`3C8H,3DY0M*iY?bHTZTs$`Z/fT'X&*1]TUl(fTZb %5?FXA_h=Io(IIH\+Vd)[j3T8::@2K\/jG1*&!"=GlIpt;A>$424B$ShjXEt*I-FIHW-JI(:^A[0"o+&.P@]?Z9Mg'<[EY&YcH>Wn;o`7;Kt@PqV@ee9iFSZSI7jbrDMT(,Nk2D;G(OmJ^ON1k)Z3N5h_;H=`44FVe"(h0S18kdU!K@O:f2<7nL^/#+bU+G9e0Z<"X*\+G %r-;Zf\i'T*'*8K4C'&tn,mr:lJ/"AF5gUG2L26mRc]%rrl_saejA8'o^=[odirA4Hq[Xa$!ZH%.raV_%o[WpC!89&br_;fN[KZNBaP[KE?^O-Ict6Z,PZQ_C!SU)$MkZT2J=o#McF9ru_llX__T8!8;8>(*fFjbE(4OMiPidXodh^ %)S6M$%D"_<]+:IXclASC9EJno5,FQKXAB3CCVs3!p6<_h",B0#4mV1E_r4j!=b>o^rY1*ZRY.P&^G$4!jt$I.?2dX:5'0=QpWt)6 %bTkl:KQlXQILar&>3MDrW.@5PLYGu,,Aeo,a:gTi]"_AE`=f=?7=r)cgW*t8QKUNWj7\ODtjV)Aa:c=G#='QreKLniRoLuSXbp"o:.(cMNQ1V-"^ZH&A(FgoITmiWs9/&9uJo"'l:7r8pN*n\\\hJUj>P9]*hRsTkd3lK&7fI#mnaiY#[%A>OiOWA7=?QBY?iFe(6YZHnkIjX4kOcs3 %""Fc@c)2&6'+*ce5/I=,6dI7ORhcF."Z'j93;5*3/'[MkqOI,D/8W\5*W5I1\dJKH"J\/trW7$?.Ku!cQZsJ076m[`p#eX!"IM^X %##Ll]N47Hr_%PHMO+rOBG=[*Z?1CF4(HC67WAdn;d7u4k"Y5<14hA@R35?MG'Pg1kb`9?`g9c!LPk_eAgaUNP)LOUHS]\G/80dP8 %TWQICC#'lcf?\U*WRAA-1!Qf^0f8L*UYT.Q[JA,GdA4`7I_#6?rs=/eFoj]`\G6ua&et;Di?Znqn&_Li-M6ssVfTYD1#i!8c2Rol %dm?;jEtR'uS(qa#6ELqp^GhINJXqmj,<@r2>&jcI0[(2PJijeoT>>_*H"-ug0b!8$huXhD5n!g&7$A%j$9:'r=J/W/C_(?f-^b6$ %@F%aQ3i5DD[:`,E!]sHA5YW@YR"pqg5TK1UjW[O6N]TKF4?E=Ih6?qbOpUYU!A-Um!M1mbc_))&,JF2k-((/3f1dnVjM;[77sEZd4_fO#nL?)W\GNt<_^8ZirP`/B[#I0=]>Md$756$,W_'*(1Q?0(rT %.TSO8cE8?8nH$'i\Y,H'-ZMkNaanF<3Z$hqHN=M3"O-$LBmsGk#rVq0(a'i\UEot?(M/%>)F(pb[AZW,F93TulbWsj,U!.7MgiR0 %&VoFIl6)cE`7)M0/EfcZ5f_#glG2Cd#jf)Tl@<2l4$_DjkS\26]n\k6\i2og%$)#D$*rdC!Zcq;G7]0=GVR8@NBjkPNK3.Oi\6QD:Ol;mGij7/,S1L:.7OJ&>a'ilFVJ^2k\0[R8$ic[ %JI6aI!71.8G!jkABqHT5/$(d6=eoHIX]p?pjUHb:%LT*+lnQ%" %Y7\>m3%Hcb>X.E[N%VU.]AP1n^T:7JlCbWX1[nFOTXTP;bg?R/!A3Fc8kSm3$-;M_(j'>c/eFFj8C_b,ide`DL,bPY:#\oVDP=5M&S`LkfCpR&PguCuP$Lo+XL;r#uG.\#5S&#a=+3-JpGStT7RGA*dkI8M!7%PUUkFDo4-"+.O'ci[f&@.fX %6<5B]AO1(h%of\,+9E9V07%4Ts3k-s<05H8pF'43B.0Q<#`Ua`(Z%iS*WXgZkJ6!B:\89@ie?LkT2;#]5>j$ajl]_:7[**?K]&Q?*'a8@ed:XP]_D34tC`'!lhci*Y"(0%uFSI9F3^0nZSVm>If6cMg,_^Bh1RT9YXQ`".U>lE/#A:Fs %$Zu/]*M6=t_![u1Doh)Ah$\TG,@q0%9.F!1e8C"$/nj#9]babTPaF3>C4# %Yp'/XpT>/#Vou/=-S+RG^N^(V#6Lrhrl3@LdrLgs%"3W?PLlsJWNG]I/#+9ZQLge^;o]W,&aO08"';/*,!35`TLC!N5 %-uoTTp4?Ni3Q>`Z0;hK3=f^pM6A$?@ka[AmP-Gm\kBQCpe_&TlLl)fLp5)iT`9,oH!QI=%V?)+hZie*7>lpLK*!MGK7k]qhSTFmZ %JPTA>[QNTYjFr4o&q^!ehMmQ;DZoG(?H2:8G\8]P#S@=UkP%"C:go]Q: %'DiAb?Iu`&[^cL$X/HCQ9E]p[DVaMJGCWb/0bDX^UJ>V0VLI%.S#67ZS]_t-(S!%eau#=46,d/u/qnCeqd)-H %Jb#-2d6nd38L0FLA>>Jmm6g;L8?/R%OV;lO^h&e^4/Pq$qWWYUoBO4Ag0qX":uBF]Zj[ar?$g1M#TB3WbEu^lG%7b/[e?eJU*h[P %!FRDS7;1S7.5t_9`l&l#nX\dD_2:S_3o)H6:Yt)]S:B`-@F..oNkmSHQJM'LL,21)ob(F]k]kG7FT#%YBW0[KCiP]FchdEj?O4EO>;@ %P]ULuS,454`+&?#8/qihn9YTAlBTAhG_FIO@iA?0d]#Ykae454VEL9W'\=W&JYtEcOt+Vb]Y,P$1fC,:1C2TT6%q>W?Vrn(.Z*+! %$JE][p6htT;r@3ACaW-m-pGlb^#*3+QEOCOdm3:MMsXEIS:AQ<]F %OE.N\1Bq]'=M*skNb\3SJX3_68-O.nfR`@7r);2OE(tjlkR"Oeg-J$p%PJ??,N+$X@hH`u7^fWYM$sefQb5h#XkaJX*@=F3"qD@W %S7dFEn[C6Q0P+b^J:+&9&k05/@"P^6!s<@1;)5^X3E<>C@0D,JHL2iENaP/*%Z>T>>%sah4=%s_#I'pX"Y/YDd%sf`DU_`)ZJ!a5 %RPO7ISRM":ub%"0-.(b/jc+uPgSH_kH;m`HOQ#o.#FA."9G %9Y6a]s:#))8%5r_243*d+K^6TJ;?t!4GaY %!5\mD%OoN`ai@,+::Kaqk[pi.X:?:AA:o%JU3K!p;jF.'*b'9a2Cd8(;a5FZkhGhUge\4nfs5:E;9)]R7<&m09?9].-4a37o-BK: %[=d\-+B/4%)[1TF*2r74TeBP+]BLk#Y`g*fMBn'U2NmAi@c61t#jmKU)#&[2@phV]GL0t'\'O=i%"me"i>Pj\8@#2]1>%IV7jK#, %0?piiHC5_RO\o=^$j[jMr3g)d*@.r]iV=K#m[%GiGC;bPG*W-$mPr$.m_Ip?&L)FsL2b`lV3,fH!aqXE*#[>;"(.TBP:0BC`f%iC %+!qZXo9#lr8@>82TgqW2A[Hkd']hK50WUR30k.\A;O.s6h1P(k]()N)-ihUA`L%L-THcFpOs=/e@n?`2$ghQ!A?-hBV&M(]L*.pH %9EW$1SfW2`75$V^@(__e&p/3E%Xc?6Q2*K;&pVro3k!/)0*,\gaBX>OLC:cf9A`e>E)9)7bjO]Ff*&P&cVZ4q=*IL#1!sK)fahr_Sf8P6T!+>.L %5ubFZeC+S@,Da:'3a_qbKe&#d@%cmJjf7Mec9Toj34q?&jUOW?o_Zc(n-ITMJ0D7E^\+ %Ti7un\[Z@g7Ih/45[t(GW#/[f7?>Ru7q0ToJb(o_ag7lO73fB;X4^@&7Z]Q>?eSFFWEO=2@-gk<(=[_0;8_H<8=m,N=`k/.-a!p)8$s,<0F<-(Gb.-W8[g0rUGUA>#CXTeVttW@Wm4],1[Y5Q4%[Dl?IpoB)k:DL1]sef%8d]d0\;M>3UoSU+MFSo %CK\tOm]r6M%.*nO2=VkCl$!Pn?m?aB\R/B$+jetM$.A#OBRN\`Z#dH=.2bR]@"B*R8V^UaSF&oS,]D?+#24WcWKM0c3Y8ERj5V6a %8ZEH@,A1TiMkjY'@a+O,(d[]o.kdRhH\=FA7\0"Dc"WHt(Pl5M.N1&/T^5om=Dn>Dk/hA%Nbi<;3[^(SNn(/p5AT]OECl.pjG9N. %P)"EqMc6g;X&`<,-<'N/[[&mpTo=003K2Lh(tQ%^%9;cciO1D7iZ-KrPTR:.OQdW)+q^3*ar6MtL>/WM;k7UXZ"h@YRF)HbjK`Ud %I2ROW9#[HjOg6o@ol-sZ<]uE`:=Fis_<)[I'#Bie`("lcF^bBr"OD&tPT@gnjjL3;#C$?kTO^fHa"\?3uN!3[(YJ7j#'Pc"YB: %!aW"^d"gBj"WN^gJnJMdHE\g0&6._@XHR@fH`p3HJg`,m)AO0S;f!Mu8g#3W8mcsE>pZ>*o`Kb29Hl)2j:RcOQ&RO%[d'ABZ %]hXKI*p9h+*bkJ!_!,"2N8b031gpU6FbQq2(@!n7W[p0^6+D8k]nj!sJJ!MpA1OY39F? %6ere#PuJc,-',ju.r3Or'm?$G]Y0nE0TBC.3\eoWVb)S1NTS(#>V]0T&A72]Yd/2a.!:IC/2!cUZD;'eE1r5`3jU'sjd@,KolnXV %N&Op%]@a+HL-5W(Gb0q>?k9B\RRC^?=Ed_=\J(eN7[n$$4ec6km!\Re-n(*ijAbf6K$t4(

      {#if data?.metadata?.description} -

      +

      {@html data.metadata.description}

      From 096829d269b308c1cb7c724ef0f3f4d985e65a5a Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:41:58 -0400 Subject: [PATCH 043/257] feat(docs-next): refactor ClassTable with v-truncate-fade and flexible props MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Matches the original stacks-docs docs-table pattern more closely: - Uses CSS v-truncate-fade (height fade) instead of row slicing — the original removed v-truncate/v-truncate-fade classes on expand, never re-collapsed - One-way expand: button disappears after clicking, aria-expanded='false' while collapsed (matching original jQuery behavior) - expandButtonText prop (default 'Show All Classes') for non-class contexts - showHeadings prop (default true) to hide the thead row conditionally - headings prop to override individual column label text - expandable prop (default true) to opt out of the fold entirely Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/ClassTable.svelte | 81 +++++++++++++------ 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/packages/stacks-docs-next/src/components/ClassTable.svelte b/packages/stacks-docs-next/src/components/ClassTable.svelte index 80be67ed91..be367c940d 100644 --- a/packages/stacks-docs-next/src/components/ClassTable.svelte +++ b/packages/stacks-docs-next/src/components/ClassTable.svelte @@ -13,22 +13,44 @@ responsive?: boolean; }; - const COLLAPSE_THRESHOLD = 8; + type ColKey = keyof Omit; interface Props { classes: ClassTableRow[]; + /** + * Show an expand button when the table is tall enough to warrant it. + * Defaults to true. + */ + expandable?: boolean; + /** + * Label for the expand button. Defaults to "Show All Classes". + * Override for tables used in non-class contexts. + */ + expandButtonText?: string; + /** + * Whether to render the column heading row. Defaults to true. + * Set to false for tables embedded in contexts that provide their own headings. + */ + showHeadings?: boolean; + /** + * Override individual column heading labels. + * e.g. { class: 'Selector', description: 'Notes' } + */ + headings?: Partial>; } - let { classes }: Props = $props(); - - let showAll = $state(false); + let { + classes, + expandable = true, + expandButtonText = 'Show All Classes', + showHeadings = true, + headings = {}, + }: Props = $props(); - const collapsible = $derived(classes.length > COLLAPSE_THRESHOLD); - const visibleClasses = $derived(collapsible && !showAll ? classes.slice(0, COLLAPSE_THRESHOLD) : classes); + let expanded = $state(false); - type ColKey = keyof Omit; - - const colLabels: Record = { + const defaultLabels: Record<'class' | ColKey, string> = { + class: 'Class', modifies: 'Modifies', output: 'Output', description: 'Description', @@ -36,7 +58,11 @@ responsive: 'Responsive?', }; - // Show columns in a fixed order, but only those with at least one value. + function label(col: 'class' | ColKey): string { + return headings[col] ?? defaultLabels[col]; + } + + // Show columns in a fixed order, only those with at least one value. const orderedCols: ColKey[] = ['modifies', 'output', 'description', 'define', 'responsive']; const activeCols = $derived( orderedCols.filter(col => classes.some(r => r[col] !== undefined)) @@ -44,18 +70,25 @@ -
      +
      - - - - {#each activeCols as col} - - {/each} - - + {#if showHeadings} + + + + {#each activeCols as col} + + {/each} + + + {/if} - {#each visibleClasses as row} + {#each classes as row} {#each activeCols as col} @@ -73,14 +106,14 @@
      Class{colLabels[col]}
      {label('class')}{label(col)}
      {row.class}
      -{#if collapsible} +{#if expandable && !expanded} {:else}
      From 04b40e7f9d3a31d17e6e2eb56563dcff75e931f7 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:43:49 -0400 Subject: [PATCH 044/257] fix(docs-next): make ClassTable expandable opt-in (default false) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 70 docs-table uses in stacks-docs, only 15 use the expand button — it is explicitly opt-in, not the default behavior. Changed expandable prop default from true to false. Added expandable to avatars and badges which had the button in the original docs. Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/components/ClassTable.svelte | 2 +- .../src/docs/public/system/components/avatars.md | 2 +- .../src/docs/public/system/components/badges.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/stacks-docs-next/src/components/ClassTable.svelte b/packages/stacks-docs-next/src/components/ClassTable.svelte index be367c940d..77f6a41475 100644 --- a/packages/stacks-docs-next/src/components/ClassTable.svelte +++ b/packages/stacks-docs-next/src/components/ClassTable.svelte @@ -41,7 +41,7 @@ let { classes, - expandable = true, + expandable = false, expandButtonText = 'Show All Classes', showHeadings = true, headings = {}, diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index 810f0d3be6..3b8b6ef1f2 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -30,7 +30,7 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod ## Classes - + ## Examples diff --git a/packages/stacks-docs-next/src/docs/public/system/components/badges.md b/packages/stacks-docs-next/src/docs/public/system/components/badges.md index 4cabce5222..fd20a6bf1e 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/badges.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/badges.md @@ -47,7 +47,7 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod ## Classes - + ## Styles From 551dc35ca148833ff77e34cc4054e0e97e09b771 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:48:15 -0400 Subject: [PATCH 045/257] feat(docs-next): convert banners page to mdsvex MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Banners use raw .s-banner CSS classes (no Svelte component), so examples are rendered as HTML divs with Stacks classes. Key additions: - All 7 variants (base/info/success/warning/danger/featured/activity) each shown as base + important pair, code block first - Interactive JavaScript demo rebuilt in Svelte: variant select, important checkbox, show/remove buttons, dismiss button — all wired with state - JavaScript API documented as markdown tables: attributes, events, event details, helpers Co-Authored-By: Claude Sonnet 4.6 --- .../docs/public/system/components/banners.md | 344 ++++++++++++++++++ packages/stacks-docs-next/src/structure.yaml | 1 - 2 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 packages/stacks-docs-next/src/docs/public/system/components/banners.md diff --git a/packages/stacks-docs-next/src/docs/public/system/components/banners.md b/packages/stacks-docs-next/src/docs/public/system/components/banners.md new file mode 100644 index 0000000000..f654087d04 --- /dev/null +++ b/packages/stacks-docs-next/src/docs/public/system/components/banners.md @@ -0,0 +1,344 @@ +--- +title: "Banners" +description: "Banners are full-width notices used for system and engagement messaging. They are highly intrusive and should be used only when essential information needs to be conveyed to the user." +figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Product-UI?node-id=5982-7648&m=dev" +--- + + + +## Classes + + + +## Usage guidelines + +System banners are used for **system** messaging. They are full-width notices placed in one of two locations: + +- **Pinned to the top of the browser window** — Use when the banner relates to the entire website (e.g. the site is in read-only mode). Add `.is-pinned` to pin the banner above all other content including the topbar. +- **Below the top navigation bar** — The default placement. Use when the banner affects only a particular area of the product (e.g. a subscription is about to expire). + +Refer to the [Classes section](#classes) for more information on how to apply the correct styles. + +## Examples + +### Base + +```html + + +``` + + +
      + + +
      +
      + +### Info + +```html + + +``` + + +
      + + +
      +
      + +### Success + +```html + + +``` + + +
      + + +
      +
      + +### Warning + +```html + + +``` + + +
      + + +
      +
      + +### Danger + +```html + + +``` + + +
      + + +
      +
      + +### Featured + +```html + + +``` + + +
      + + +
      +
      + +### Activity + +```html + + +``` + + +
      + + +
      +
      + +## JavaScript + +The `.s-banner` component includes a Stimulus controller to show and hide the banner programmatically. While it is optional, including the functionality to close the banner is recommended. + +### Example + +```javascript +document.querySelector(".js-banner-toggle").addEventListener("click", function(e) { + Stacks.showBanner(document.querySelector("#example-banner")); +}); +``` + +```html + +``` + + +
      + + + + +
      + {#if visible} + + {/if} +
      + +### Attributes + +| Attribute | Applied to | Description | +|---|---|---| +| `data-controller="s-banner"` | Controller element | Wires the Stimulus controller to the element. | +| `data-s-banner-target="banner"` | Banner element | Marks the banner as the controller target. | +| `data-s-banner-remove-when-hidden="true"` | Controller element | Optional. Removes the banner from the DOM when hidden. | + +### Events + +| Event | Fired on | Description | +|---|---|---| +| `s-banner:show` | Banner element | Fired before the banner is shown. `preventDefault()` cancels the show. | +| `s-banner:shown` | Banner element | Fired after the banner has finished showing. | +| `s-banner:hide` | Banner element | Fired before the banner is hidden. `preventDefault()` cancels the hide. | +| `s-banner:hidden` | Banner element | Fired after the banner has finished hiding. | + +### Event details + +| Detail | Type | Description | +|---|---|---| +| `dispatcher` | `Element` | The element that initiated the event. | + +### Helpers + +| Helper | Description | +|---|---| +| `Stacks.showBanner(element)` | Shows the target banner element. | +| `Stacks.hideBanner(element)` | Hides the target banner element. | diff --git a/packages/stacks-docs-next/src/structure.yaml b/packages/stacks-docs-next/src/structure.yaml index 02a0f7bd27..32eeec9dd7 100644 --- a/packages/stacks-docs-next/src/structure.yaml +++ b/packages/stacks-docs-next/src/structure.yaml @@ -232,7 +232,6 @@ navigation: - title: "Banners" slug: "banners" - legacy: product/components/banners - title: "Bling" slug: "bling" From c13e710ec35440aa7a6551c00c342199ee7b468e Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:52:14 -0400 Subject: [PATCH 046/257] feat(docs-next): extract BannerDemo component for banners interactive example BannerDemo.svelte owns all state internally: - visible starts false (banner hidden on load) - Style select defaults to Info, drives the variant class - Important? and Pinned? checkboxes add their respective modifiers - 'Show example' filled button shows the banner - Dismiss button on the banner hides it - When Pinned, is-pinned class applies position:fixed to the top of the viewport banners.md is simplified to with inline state removed. Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/BannerDemo.svelte | 67 +++++++++++++++++++ .../docs/public/system/components/banners.md | 53 +-------------- 2 files changed, 69 insertions(+), 51 deletions(-) create mode 100644 packages/stacks-docs-next/src/components/BannerDemo.svelte diff --git a/packages/stacks-docs-next/src/components/BannerDemo.svelte b/packages/stacks-docs-next/src/components/BannerDemo.svelte new file mode 100644 index 0000000000..3ed9010876 --- /dev/null +++ b/packages/stacks-docs-next/src/components/BannerDemo.svelte @@ -0,0 +1,67 @@ + + +{#if visible} + +{/if} + +
      + + + + + + + +
      diff --git a/packages/stacks-docs-next/src/docs/public/system/components/banners.md b/packages/stacks-docs-next/src/docs/public/system/components/banners.md index f654087d04..867dacf7b1 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/banners.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/banners.md @@ -7,6 +7,7 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod ## Classes @@ -279,39 +262,7 @@ document.querySelector(".js-banner-toggle").addEventListener("click", function(e
      ``` - -
      - - - - -
      - {#if visible} - - {/if} -
      + ### Attributes From 53afb4341fc02f7e51240034897fdf6a65adc8de Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:54:42 -0400 Subject: [PATCH 047/257] feat(docs-next): scope Stack Sans Text to nav and branded UI, not body text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously --ff-sans was overridden globally so Stack Sans Text applied to everything including body prose and examples. Changes: - Remove Stack Sans Text from the global --ff-sans override; body text and examples now use the default Stacks system sans-serif stack - Update .ff-stack-sans utility class with a complete font fallback stack and a clarifying comment about its intended use - Apply .ff-stack-sans to the left nav
      in +layout.svelte so all navigation, logo, search, and sidebar controls use the custom font Content headings (h1–h5) retain Stack Sans Headline via the existing CSS rule. Body copy, prose, and Example containers use the system font. Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/app.css | 8 ++++---- packages/stacks-docs-next/src/routes/+layout.svelte | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/stacks-docs-next/src/app.css b/packages/stacks-docs-next/src/app.css index c8a1520a2c..8c33fbd154 100644 --- a/packages/stacks-docs-next/src/app.css +++ b/packages/stacks-docs-next/src/app.css @@ -108,9 +108,6 @@ /* Override Stacks defaults */ html, body { - --ff-sans: - "Stack Sans Text", -apple-system, BlinkMacSystemFont, - "Segoe UI Adjusted", "Segoe UI", "Liberation Sans", sans-serif; --ff-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace; @@ -131,8 +128,11 @@ body { src: url("/fonts/IBMPlexMono-Regular.woff2") format("woff2"); } +/* Docs UI chrome font — apply to navigation, branded shells, and UI controls. + Body text and examples intentionally use the default system sans-serif. */ .ff-stack-sans { - font-family: "Stack Sans Text"; + font-family: "Stack Sans Text", -apple-system, BlinkMacSystemFont, + "Segoe UI Adjusted", "Segoe UI", "Liberation Sans", sans-serif; font-weight: 400; } .ff-stack-sans-headline, diff --git a/packages/stacks-docs-next/src/routes/+layout.svelte b/packages/stacks-docs-next/src/routes/+layout.svelte index eab6030857..f14c156fd0 100644 --- a/packages/stacks-docs-next/src/routes/+layout.svelte +++ b/packages/stacks-docs-next/src/routes/+layout.svelte @@ -25,7 +25,7 @@ -
      +
      From 64a8bb5c3ffd0259bbf0a856788d0ade89112bd6 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:58:17 -0400 Subject: [PATCH 048/257] =?UTF-8?q?feat(docs-next):=20apply=20ff-stack-san?= =?UTF-8?q?s-headline=20to=20nav/TOC;=20orange=20=E2=86=92=20theme-primary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Font: - Apply ff-stack-sans-headline to the left nav
      and the TOC
      + ## JavaScript From 3f5ddca1c2c384fb5bda27e291f0c3c146e257df Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 15:53:02 -0400 Subject: [PATCH 059/257] fix(docs-next): add is-pinned to static banner examples; bg-black-100 on demo controls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit is-pinned + ps-relative matches the original stacks-docs bannerExample shortcode pattern — is-pinned provides additional banner-specific styling while ps-relative keeps position:relative for inline display. Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/BannerDemo.svelte | 2 +- .../docs/public/system/components/banners.md | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/stacks-docs-next/src/components/BannerDemo.svelte b/packages/stacks-docs-next/src/components/BannerDemo.svelte index 44779c096c..5b7cc21df3 100644 --- a/packages/stacks-docs-next/src/components/BannerDemo.svelte +++ b/packages/stacks-docs-next/src/components/BannerDemo.svelte @@ -35,7 +35,7 @@ {/if} -
      +
      + +``` + + + +### JavaScript + +```html +
      +    …
      +
      +``` + + + +```javascript +import React, { Component } from 'react' +import { IP } from '../constants/IP' +import { withAuth0 } from '@auth0/auth0-react'; + +class AddATournament extends Component { + componentDidMount() { + this.myNewListOfAllTournamentsWithAuth() + } +} + +export default withAuth0(AddATournament); +``` + + + +### CSS + +```html +
      +    …
      +
      +``` + + + +```css +.s-input, +.s-textarea { + -webkit-appearance: none; + width: 100%; + margin: 0; + padding: 0.6em 0.7em; + border: 1px solid var(--bc-darker); + border-radius: 3px; + background-color: var(--white); + color: var(--fc-dark); + font-size: 13px; + font-family: inherit; + line-height: 1.15384615; + scrollbar-color: var(--scrollbar) transparent; +} +@supports (-webkit-overflow-scrolling: touch) { + .s-input, + .s-textarea { + font-size: 16px; + padding: 0.36em 0.55em; + } + .s-input::-webkit-input-placeholder, + .s-textarea::-webkit-input-placeholder { + line-height: normal !important; + } +} +``` + + + +### Java + +```html +
      +    …
      +
      +``` + + + +```java +package l2f.gameserver.model; + +public abstract strictfp class L2Char extends L2Object { + public static final Short ERROR = 0x0001; + + public void moveTo(int x, int y, int z) { + _ai = null; + log("Should not be called"); + if (1 > 5) { // what? + return; + } + } +} +``` + + + +### Ruby + +```html +
      +    …
      +
      +``` + + + +```ruby +# The Greeter class +class Greeter + def initialize(name) + @name = name.capitalize + end + + def salute + puts "Hello #{@name}!" + end +end + +g = Greeter.new("world") +g.salute +``` + + + +### Python + +```html +
      +    …
      +
      +``` + + + +```python +def all_indices(value, qlist): + indices = [] + idx = -1 + while True: + try: + idx = qlist.index(value, idx+1) + indices.append(idx) + except ValueError: + break + return indices + +all_indices("foo", ["foo","bar","baz","foo"]) +``` + + + +### Objective-C + +```html +
      +    …
      +
      +``` + + + +```objectivec +#import +#import "Dependency.h" + +@protocol WorldDataSource +@optional +- (NSString*)worldName; +@required +- (BOOL)allowsToLive; +@end + +@property (nonatomic, readonly) NSString *title; +- (IBAction) show; +@end + +- (UITextField *) userName { + UITextField *retval = nil; + @synchronized(self) { + retval = [[userName retain] autorelease]; + } + return retval; +} + +- (void) setUserName:(UITextField *)userName_ { + @synchronized(self) { + [userName_ retain]; + [userName release]; + userName = userName_; + } +} +``` + + + +### Swift + +```html +
      +    …
      +
      +``` + + + +```swift +import Foundation + +@objc class Person: Entity { + var name: String! + var age: Int! + + init(name: String, age: Int) { + /* /* ... */ */ + } + + // Return a descriptive string for this person + func description(offset: Int = 0) -> String { + return "\(name) is \(age + offset) years old" + } +} +``` + + + +### Less + +```html +
      +    …
      +
      +``` + + + +```less +@import "fruits"; + +@rhythm: 1.5em; + +@media screen and (min-resolution: 2dppx) { + body {font-size: 125%} +} + +section > .foo + #bar:hover [href*="less"] { + margin: @rhythm 0 0 @rhythm; + padding: calc(5% + 20px); + background: #f00ba7 url(http://placehold.alpha-centauri/42.png) no-repeat; + background-image: linear-gradient(-135deg, wheat, fuchsia) !important ; + background-blend-mode: multiply; +} + +@font-face { + font-family: /* ? */ 'Omega'; + src: url('../fonts/omega-webfont.woff?v=2.0.2'); +} + +.icon-baz::before { + display: inline-block; + font-family: "Omega", Alpha, sans-serif; + content: "\f085"; + color: rgba(98, 76 /* or 54 */, 231, .75); +} +``` + + + +### JSON + +```html +
      +    …
      +
      +``` + + + +```json +[ + { + "title": "apples", + "count": [12000, 20000], + "description": {"text": "...", "sensitive": false} + }, + { + "title": "oranges", + "count": [17500, null], + "description": {"text": "...", "sensitive": false} + } +] +``` + + + +### C# + +```html +
      +    …
      +
      +``` + + + +```csharp +using System.IO.Compression; + +#pragma warning disable 414, 3021 + +namespace MyApplication +{ + [Obsolete("...")] + class Program : IInterface + { + public static List JustDoIt(int count) + { + Console.WriteLine($"Hello {Name}!"); + return new List(new int[] { 1, 2, 3 }) + } + } +} +``` + + + +### SQL + +```html +
      +    …
      +
      +``` + + + +```sql +CREATE TABLE "topic" ( + "id" serial NOT NULL PRIMARY KEY, + "forum_id" integer NOT NULL, + "subject" varchar(255) NOT NULL +); +ALTER TABLE "topic" +ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id") +REFERENCES "forum" ("id"); + +-- Initials +insert into "topic" ("forum_id", "subject") +values (2, 'D''artagnian'); +``` + + + +### Diff + +```html +
      +    …
      +
      +``` + + + +```diff +Index: languages/ini.js +=================================================================== +--- languages/ini.js (revision 199) ++++ languages/ini.js (revision 200) +@@ -1,8 +1,7 @@ + hljs.LANGUAGES.ini = + { + case_insensitive: true, +- defaultMode: +- { ++ defaultMode: { + contains: ['comment', 'title', 'setting'], + illegal: '[^\\s]' + }, + +*** /path/to/original timestamp +--- /path/to/new timestamp +*************** +*** 1,3 **** +--- 1,9 ---- ++ This is an important ++ notice! It should ++ therefore be located at ++ the beginning of this ++ document! + +! compress the size of the +! changes. + + It is important to spell +``` + + + +## Line numbers + +Add `.linenums` to include line numbers on a code block. + +### Default + +```html +
      +    …
      +
      +``` + + +
      1
      2
      3
      4
      5
      6
      <form class="d-flex g4 fd-column">
      <label class="s-label" for="full-name">Name</label>
      <div class="d-flex">
      <input class="s-input" type="text" id="full-name"/>
      </div>
      </form>
      +
      - -
      -
      <pre class="s-code-block language-csharp">

      </pre>
      -
      -
      using System.IO.Compression;

      #pragma warning disable 414, 3021

      namespace MyApplication
      {
      [Obsolete("...")]
      class Program : IInterface
      {
      public static List<int> JustDoIt(int count)
      {
      Console.WriteLine($"Hello {Name}!");
      return new List<int>(new int[] { 1, 2, 3 })
      }
      }
      }
      -
      -
      +### Offset - -
      -
      <pre class="s-code-block language-sql">

      </pre>
      -
      -
      CREATE TABLE "topic" (
      "id" serial NOT NULL PRIMARY KEY,
      "forum_id" integer NOT NULL,
      "subject" varchar(255) NOT NULL
      );
      ALTER TABLE "topic"
      ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id")
      REFERENCES "forum" ("id");

      -- Initials
      insert into "topic" ("forum_id", "subject")
      values (2, 'D''artagnian');
      -
      -
      +Append a number preceeded by `:` to `.linenums` to offset the start of the line numbers. - -
      -
      <pre class="s-code-block language-diff">

      </pre>
      -
      -
      Index: languages/ini.js
      ===================================================================
      --- languages/ini.js (revision 199)
      +++ languages/ini.js (revision 200)
      @@ -1,8 +1,7 @@
      hljs.LANGUAGES.ini =
      {
      case_insensitive: true,
      - defaultMode:
      - {
      + defaultMode: {
      contains: ['comment', 'title', 'setting'],
      illegal: '[^\\s]'
      },

      *** /path/to/original timestamp
      --- /path/to/new timestamp
      ***************
      *** 1,3 ****
      --- 1,9 ----
      + This is an important
      + notice! It should
      + therefore be located at
      + the beginning of this
      + document!

      ! compress the size of the
      ! changes.

      It is important to spell
      -
      -
      - - -
      - -

      Add .linenums to include line numbers on a code block.

      - -
      -
      <pre class="s-code-block language-html linenums">

      </pre>
      -
      -
      1
      2
      3
      4
      5
      6
      <form class="d-flex g4 fd-column">
      <label class="s-label" for="full-name">Name</label>
      <div class="d-flex">
      <input class="s-input" type="text" id="full-name"/>
      </div>
      </form>
      -
      -
      +```html +
      +    …
      +
      +``` - -

      Append a number preceeded by : to .linenums to offset the start of the line numbers.

      -
      -
      <pre class="s-code-block language-json linenums:23">

      </pre>
      -
      -
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      [
      {
      "title": "apples",
      "count": [12000, 20000],
      "description": {"text": "...", "sensitive": false}
      },
      {
      "title": "oranges",
      "count": [17500, null],
      "description": {"text": "...", "sensitive": false}
      }
      ]
      -
      -
      -
      - - - - - + +
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      [
      {
      "title": "apples",
      "count": [12000, 20000],
      "description": {"text": "...", "sensitive": false}
      },
      {
      "title": "oranges",
      "count": [17500, null],
      "description": {"text": "...", "sensitive": false}
      }
      ]
      +
      From 29409ab0715b6e5b72c4d81c6bb8aa16ae647d53 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 16:48:27 -0400 Subject: [PATCH 078/257] fix(docs-next): restore search button, add figma+code to code-blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Search button now always renders; disabled when Algolia env vars are absent rather than conditionally hidden — keeps the header layout intact - Add figma: URL to code-blocks frontmatter - Wrap highlight.js in backticks in language examples prose Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/components/Search.svelte | 8 +++----- .../src/docs/public/system/components/code-blocks.md | 3 ++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/stacks-docs-next/src/components/Search.svelte b/packages/stacks-docs-next/src/components/Search.svelte index 70639f575e..008574c526 100644 --- a/packages/stacks-docs-next/src/components/Search.svelte +++ b/packages/stacks-docs-next/src/components/Search.svelte @@ -44,8 +44,6 @@ } -{#if searchEnabled} - -{/if} \ No newline at end of file + \ No newline at end of file diff --git a/packages/stacks-docs-next/src/docs/public/system/components/code-blocks.md b/packages/stacks-docs-next/src/docs/public/system/components/code-blocks.md index 0be285e0ce..adf06832e7 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/code-blocks.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/code-blocks.md @@ -1,6 +1,7 @@ --- title: "Code blocks" description: "Stacks provides styling for code blocks with syntax highlighting provided by highlight.js. Special care was taken to make sure our light and dark themes felt like Stack Overflow while maintaining near AAA color contrasts and still being distinguishable for those with a color vision deficiency." +figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Product-UI?node-id=610-18805" --- - \ No newline at end of file From 46a16d0c31f8d26f7bd8c2029693bc079a963cb5 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 16:53:13 -0400 Subject: [PATCH 080/257] fix(docs-next): use Link for search button; fix mb128 forehead on imageless pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Search: switch from Button to Link component - Page template: make breadcrumb row bottom margin conditional — mb128 only when the page has a hero image, mb24 otherwise Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/components/Search.svelte | 6 +++--- .../routes/[category]/[[section]]/[subsection]/+page.svelte | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/stacks-docs-next/src/components/Search.svelte b/packages/stacks-docs-next/src/components/Search.svelte index f812b1da48..f694782eec 100644 --- a/packages/stacks-docs-next/src/components/Search.svelte +++ b/packages/stacks-docs-next/src/components/Search.svelte @@ -5,7 +5,7 @@ import { env } from '$env/dynamic/public'; - import { Button, Icon } from '@stackoverflow/stacks-svelte'; + import { Link, Icon } from '@stackoverflow/stacks-svelte'; import { IconSearch } from '@stackoverflow/stacks-icons'; let docSearchButton = $state(); @@ -44,6 +44,6 @@ } - \ No newline at end of file + \ No newline at end of file diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte index 0cbe074203..cb62ddfaab 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte @@ -42,7 +42,7 @@
      -
      +
      -Un\32CD& %T^(&GPUWVQa'pG!.DA?/8(S,FNF=L@VoNt^S!T(UP4GhCG<%5r"&l+qetOLb%PjmGK^OKf46lD!4W`6B&G*_)45^g$/Ghh`==@A0 %kju%TXE[R"0%CF06qr2SXm2($Hm#@jT(*L0'SQ$`-OX9)d1eRGLc!J%d5]m6[M9ei,B=&.WIUd7f%XrDHZhWFO2:K"TF %1+&j).+Mt@6*1k-8*'CIT"C-\W1_1]b.4/P_&&/ %$@>Hm%M]QZ:IQc/OZl>ueN(_k*()V_-+1h#UU!,4=lpkfPm5c-+%IT60?:e_dV6i/SX@P]\ZAKGA/cUKAgL0C'T!2+U/KJN<2&@% %5F#[XSarPg"(JZ>Z>0dOQ+D?HbZm/>ot56j#)5u&2.Z(lJo0I/*!>D%GEh8EC8V[u8uUU5!K8p3Bmcq>-bX3#n6KU0^_F^$EsGuK %Q$3eiO2IcM6WTiq?oB\QK*]cHct*;H*:e3NrC=inaB!83oSom-LVR5%(b.#" %Gifk04'f&L-RR\"\1g@',,YS/!7u#-f)*N6$\;>Sf(o)k-`DDF<#7!b.gZoAJhQDWYfTVWe6%^e/6(1,&1+ %i]9L1MA^YT[Y?%CVC>Gb6QsBb! %B[t=&VI"-nPiM(@-k>/R.[^X^4.ZJs:7FD`;\%7d.GLRsF,*c9;;JT:CkF3M:S9=TYJkWe %%FbXlqHft1cu+d%<$sL@KCT7iH;,TH@Ei,l^LL0p#@m/-O)GR3KguN/`nleU3Wmpn/FMQR6--<+10TZK/Y6Uh:Y`q1DMqbdc]f7[ %hIdE];aU\7N?_)D9dYK#*g5M.KG(QM/sqE#l8/HeY%o#!G9hup72h? %>b%7W<"g'P$DJV"RY8>?[0*8T*Tt=TV_Q5$cqq\3U!n*j!Z(eQGQXdu+^9ZI_1>B13.aGKm-%EMl`1M^SZ6FD!5a7I<\=b6fN^/- %dQU0bORYZA@i/bW%XlkEW-7pWo1,N*/m&J;M]r\Z6I0\o5]K;i$[jeN2""P%gZ^]%kGZHbH70FEJdj@F2MMQSiACIsY6Km2H'f %ETZWq9rrm`]05IT)44t^8ig[/&X:_Sm$ll4M+'0RM`_7dFXtm;qi1/3p1;2k_N73@IaH^VeY@Gd,"ai91oGq!2%RCDU+;0%6dcZ/ %#TT#Q/U9(N1cQ`iQVn&12lc]_4%SJ7:"MT"=OdJ,-d=sA+(]&0PE2`T)frcFZ%\Ob=(beJaRJK'8TjXM;qi2jbNoQP6HoRQ@2r>q %#H3C@PVoBW%b2\V_)7;02PAl55+6_+qnsa?5)?4A@;r %b[Cm\)YMgfNN+Y^4>KLAMFh5lK>(E1HpX)OCOHo@5`%iIn:33UO*6QCd!1\.P=EPb3W<.M:;Er;]mDq!p1dKeGYC' %*OO_O9([ki(a^5RL5L46&on5^KH1J,bg9++oaQ=8@i9eudk(W$T#8>K#rkqj+b:iNDBs5+Tt$OHWZ6gf(Y.`$of4Qo!g/UtZ:%E\ %8jSSQa@QdgJgi)5A&_,+kO]3/Y-`jI%B1a)&1fccdYg[V@*BdGW1RNU_HSYa)O/lTN438+"L3WQ*Jil3%SNSmcjrPO03PlsK2K=n %YccH20f^YD(rO0$ERZ6[oWBJGXCFnTM@1DWQ&Q!d_qAN_%XJ2N@H@bXEMTd^I3]2)<2(P@qapC.%$L)S98\cG$QoLDi-MSH:^CZ+ %!$rOk+2T2`f\DQUR?<[-S=fu0a.*fnG+I^25`\F+6g&d?WZ]-k7,uh`+*0ShRD_[KN_s;hLoWUSn(>Sq4&sCj\n.]mNf/*/-@8:@ %>&kl2+FB=bJ_%UEb[W@_Z]Ajj`M=C2*C;F&>7U,\iR8D@?-^gUR0ohio."fqe8p\! %.?PMp4&D2!8SA6LJ@?V(:$j&NoU2dJs%M[50Mdh3PQsr^BLN\:7"5eJ.?Sq95UZCQ28(>g.#p%g%T\Yd+_OEAHO8aM(!";[#hCaf %1u`,nBI'>@'g1Q5&b/[FrGQjSetJf#XZFIDfuWHT2[6?GEA0mEJ5`'Bhl4SD^Y_!J5VgDk^ElDEX##"Em_%SQ-CJjMf--#ZqGI_j/gsPef+FOd;^DX+D)uFG;EqYh!Nbn61bJ+p %ceb-Da)PAMU/-;`kWas/:E708@o[CE,!jZ9]4kJXg"P/"is#Se5m^$uF?kpCpXA$terZ0ISV=6/!-Ej1LCJ3rVOZ9-X`"Lu7DDN[ %'/Bn-IXhjiFi$P8KKb%]E\\4#FWgV44F1,*8EnGm>LHH[)ZI03:o4rU/O*oLblF? %GmIa-+!OMLHm\PBX@$9N=9HH.*[c1<1'UH%'7=t-QDq*5Ct-7@,:[8+-ETm"YOV]\ncl\TS6&4KpO:We8n,$T9o5+ %0^7IB;Yl)aAXDa=^;8p%?;[g#N\&",]-;=L^itDiTpX.h;hBm[kO$&;]Zd]3iXnstrl,7aFB-FpKU.&+GR`hfVNP^bA4b/\K1sGK %YYaJa')WIbiJL`QdGe^E!LiZ(F,r7P1cfCF$?=n2g06.DP#D#@\KNVnt2ND!lk+NO*!RSAf[[ %Fg.OQn,,XPOQEg/: %^E+5@/igDSOGlj*Aekb]+KB,M-Kh<]6]:Cn%2Qg@s%PTgVfXRi8Q77&$=m!feeU,`756$*H^(fW'P-D(H`d]I7/fd`O3E?=e4U(8 %4G&_53\+2jkhObp#fMkD3JW-e0(>?W;8=(r;LoDYQ;^r4+h#hX3G=%)Z'?@Zna`q"+kbZK!2F'WG^s8Y.6Uj<9@`6/R+**'6DSnr %")QA=$'H!!0WtHb_Huo#CKUkN23U5uu\^<=Num58Vg5=!NWZ+[#l5qKsnA.nV4 %<0rXr_c8,S"^3C+%X0?tdqS=b3Z+@E[9Z.1Qa(lK3\"&T#93gq+DuNpg$)K(P^AG[G[2uil>98t!WNcUnqtC[B!d\e;8Omm`?0q6 %_"p2/Q%@'Yb(k\P1g/WY1@d#P)eA!P-p@9\@+SBEKIMeDA;gUE7:!)Q:?R`Qh4DRu$%dH[kfTgi-l-uChs65B6OV?4&G-A$a7d2! %g^m2A0p2=q%hRA- %m74i6ng&^:%[p.'D%h%#S,<KiIcm)Vt8qm"QdD;3?.?O.[8Fm]se' %+MqIXJl1?eiOdTR".WboWeHcJ/I6u0cl/'hS_$->(T&&^ElK?<@"@>E[t0mepo-A`Qphl3lT*J4TB3[9oQj=F3Ij;Dl3jo#dV0)" %@"X]@j,`2:%l3%_g]N]c()f24+d,YZfZSV1cY,SSi?SuJ?*jZpXp[,ff7mTQ5UC\u=F.N@JDU-Q`cpuY_U7kc8@k8r40:/hKFK06 %Di!UYk7I;5M]5[t0X1b!ct(olY09T_i0$8h$c3S`,-)^BW)(rS]WUbJ;LPOW$5G;s0V?V![uL#p``jT"Y`TtLmdsp*8,4]SXZC'J %U'U3HXZdlP$E9sk7pFgW=UTnmc.f+2>F?7('IuZfp$sS9)X<^?pieLo@iGU9KE2GJ1.;e.ML-_H&oD/FWfN%Aj-_X[/9AooaC$CZ %AD$8;.E[_EJd#0p?E/Hs$`m.inZ7X'[]jOW$P1fr`f %q07cMkcIQpj>B!uaZjV&AkHfHU"0hh.S*QPA.&d52Ni_%m6aCEXprQ@YGr`kF1Hf.XAp&Me;L@M/U!'2^+fc?O.(bOo_DG!+i:7]&@LYgN\Ue)CkFu-4-^ABf2U&Ur %21%W,A\N7%G.N`LqFsps3BdgZbl!"(2[P6iRg.:+0%-e4YO`BRqsXX'5n9mR!^h.C24;"0;@Asp2r('3i:A)4k'0FOO8qBd<+Xl7 %>Z$4Q!'N\C2U,F/Kt,ooMm83>i5IZ>*SNKa)-^,C+%$=>87e6a8t#=]>$k4s4Pp]l$-)9.n`d %OD3j:;2\@F[Ae..ll\VVKN*1+0&T@ZWPpIUiB_.=ZZ4jcH7^NHaIH``Qcp^>5i9#]?g.!1:k:V@+h#(i1^M,ta<^pZkk2k8N_pFY %TLV@GOItr.%J+KXesmt_T>ePd5D'&4I(bkV$+\7GM?D*u44(:ZGiV-EbW1@imc&2:/#k6e9,0W'_aDBN;im'oJjD/8P&9:$ZUQJ5 %_/4rig57g"@egF7JQ@%*OH4ZIQ;UOCCuG4Y56O\tbRZ8#%3l]BA/b0TU;n8V+3A8YqRXQUC.15SirG:'CtCW-GjF*,/.[L>#5<1#4;!f+Dj %_(,T.gkUMnYlOQrKa`o>Tt\bB^,!E'E]6hj\BCT/hJoN,&ZX.)ZQ_*;2D$9gB&D*/BF>W8!'B+R./Z52fVVfjo5#uGo&'pCg."NP %[*1#D05JGq[2k$Rfs0OXG-?5?7$pt2-E(4]ei<1Lj:ckcltl3B/64_aoYIKON[?j9#+5q=Qbr*1lg3oE^/a@dn:'=. %&XhKNpXQ%rGL_OC5]4&F?05/TDg@@+*\;XE,-8M8m2m6HJ#.?2"oKhF!GYKc`;TLjsb!Gd4lC/q2C#[+tqY#Tjf1D$^JKO%N'!;XE:Y)8te585m/ %$erPE6GiY&X#bEDXX)AZm[NGdC_KHMG0)].^F66*KO*?8aEfEW>D`l&`3HO$;)LS[W.^E\pd#L(j+h\ma4Ce>H)K'AW&3ole-EKs %h9*.No]j52]nSDG\2m=JcAicA=Bld^3@P1)^e,6608-6t.#Fr]^37l&'n&:Z;AO/!JCOmd_>SCSXS`=b,77lC7RDO+TWH/b8nKTB %/%OS]Je@A^JS7ME&rl]`cslU!F^D,9aT.QQHbQ/3anR8Sb/1>V@K93b5O1,o-l-pUu=V,gA"G %:8'jf$^*.W3co6nY+f#LD78IuT9B7YTdD.>WFsD-ASPGK_-CZQB>2L03^L?2\J %LNq9=**q.SoXHLL-*']!50U$GH#9/op`3FA)@KCre."p7-XULNCU?V@??qqJ[b59YF]1*X8F"g2,D!>,@gN+/<<< %.E62m`U)cAd"T1Fk&Z9>%HD5((s7Na5tI.5jTbpjC-dWD+PK]HW/XHB-,Q`S1QoA[[Kr4EA`Q3j[pUUFhK@N%S]S*a4!YPr*!L,! %313;XRTKjg!N6R((0W?>TFVmXSaq=+S=O(GkChJJ,^7iq %i^SP^`a6I@68UDYbA %6Y>`*ReKj[73bD:_Z(%hJK<1GEFgA69N!B&@FrY9OKgs5$S;l3\h@=m)ZFqScm1F%n>Kq;e3[44'o:nj.:B'[8q\G\&m8X8+,(SE %jQJG#fb,rrQ#jA?SambST&F@F'7cC&[-?iX#&urqP&s,*9)>Z+(qaXb:`#8WmOk]&),3"4m';=81c,d?N$6H?^tbRN&&ps++;V.5 %g6jlh'l$6oY$(1V:.]i[-]O(,.3oN5h/*@9H+YBGUR:DTh_(gef47f>SK4qb;Pf)J>s %Q,spP%A.Adln)XbHrImfg'kN,11YVhMHn2me:CN> %>H&\O>Rdc+Qn[Bukg82J^b3!"_,mOs&Ot58WJ#6CotY,VF=V'GnrHbFpQ<".gn7TH)uFB_X,XTc1(k$QZB%!c`3&MCsSdC&1HCn)E9M6*ke_B:(@`+d< %.K\,`qTTf6_22,;2FEoiWe'+@l;'oZbIGYD2Ys&@F3Zd+t\$R4*5>S/nek[tX2j4aV&Q:Z^.W5Bf:+NnQ",+ug7eUVMD!$gKPYuji6 %,%3NCCnG2GNUI'BG*C6G&aBI?oo?2_S`U-dY,qu9;n*Bs>AJN$/)1EAFJHnU!&oL]bOEI@g.^F)mKo_/LmT"SUQ$T[NAQ8Ir %(tpZ#Tb-sd.c9AP+Q7Zq)&H6ZE_sl50c`@B#PDd@_T6,?gtYAi[;G@Jb;(QtI7Pu$8K:U$"u;,?M2H).k&go,K";\*&]?9?e8B`8 %0[5pO6^o6a,1J8:3a9(6Xdi+:R%[PkK=*QLq_%(;W#%U/\hbgJ_.Jr\_@P`"2.4"iUncSed@AO\7U;hsc@8?[')L#;;1q+8'f4'/<1-LD"PI_D-oWsDCoC5TXK<\i7gBh9)I9>SW$Qd8lp#W7rL1peRlA'>LGk %%Z5$:PnPsKiP6tI6@FBYW(,C=QQZj:9!@GTS@38nkg^$nP*W@LfFOZ7\VuJFhZ8T+G,\4k^/@(\L#,iqiCY,O)#kPiEig$))*`6T %P$5"!(rY:l9>q#^ASR+.9IEqMPf7UL`Hp7:Z8rn1CLM;#4$&YV]5"E+Xt'Nl3rL$qZEu[@1UaL?uj@OGMr& %:I`:ii;:V;0dd*!//5"B$M=F/R>nBbf6SmimKB7DC'OF',U1*C&#sTV>`$Q]6PeS+"!YrpQqci)>3T*I&=/?0Zo'LrJ]h;.`D^'g %\R8oUa/)B!"2'N/OM;LcZA5+fdc$qpWu/3V3FArL8;7b5O5D5"Cs-l>@=53DBFr1^:JF!e3X`6YiA,ZpAL0'24.>7g%oILlOm27f %'B"d!)eHK.V>tTPoBkWZ)PYC7CF.EoUtF\40]r#$6G %\'Kj['rk`rp.JJ=6mrRK4SK4)t@%Slq[eZWc0a\aGGHte-@C;_s#f\dXHu#PR&a` %$JQ2h9/BZ47[s3&JtAHXR+e&6ko6Mk<:`j-BikI,09qt9fEA"m_+7+-@s\.tejEpIA/1U*J4LVrjHp*E$W(0a1+]:b?4'i]a@X+\ %'^LcJok/VcCb?N_;H5Uj_E<`&@qBa6V<[SL[G5[L*$@k-=SP!iD?`6GFEJC*;!nEf?C]"l^/f3Rl9ud&Ka^m%0SjfL81AA/8\\A6 %L,%<6M,G9*WgZhcZm\`uMaju6,@QqP15-R511!&i1]@hlWaQf6Y"l&bS](q8D8G/A@g?eh.72;b;kGp9u$5dJ>^,B^&NeJB\)$pQ( %]F["H@Mo(q.#XeDOCB/$+[7+0ZHI#f/^RLfWMM/$GXbTJZa6lWWWZsH_2LY20@_\N9NH%4/$knrEb`^*&UNJ8fQ58(kM[P$2*W3( %q_fj.6/1T*deYDH\ea$ocD/u,]76Hp"\(fsR!bcAEA#`Mo27RnS9XBCjN?.JU8&5)_$I6'-FRDC&;lH"Voomn[]g94@ZBddHPb[E %/oN+`0T.W'-W)*lq:]88)#X+Q+g%0om:8K[+U,2d"gFn?OXd:gV,/8\Ao=/O.#]biFF6B\]HORS\+D@bA`YFH/f!X*4?!Z,kk1d> %+qUM="e/Xi7`'^-V[sAHpYf)(+4',69!\LiN"Epq1Tm[l/tZ-/QU\hMF5;en>*`[^Q[foiY*:*Z,=1V6k"3o:EI4^P]4`#.TItF^ %l1c9UK;9+rI39YDNOR/d'Y$^G3a!oe7s9M %60gq]JY$Th<$0+\pG:(Zn^qJ38NTNIUWA+=>3KP?;;'9lK=O6Ag.##A9&Tc0G6QKo5f"8gH=lQ%hiZkh>7mg0?bl1HkLUe-?C-0#b5N0P;#__SK1iM7!Bj3elm"1i7/634Q1_@](M`4\@#3C:QG4 %d]RRBUX'nEkZS;TiN1MWhJ8*R'l";REIR`;^m*J&<#W8E=BIV\fF-dLl:?,f3_IMp*tFUU1$64#YO-A\)@/]/$CAN9\2KSiK0cgu %V!+,coQFlZPq-F(+BgV2,,T6$HO8a]6F5+q9nf;^p=A$'fT %8-*g\5Tpnt,>1HA-"":9U9(21!<%tt8sr`fgS&GnIVYp9%#Hn([8BRfBrWlq'alb=5L)h\j(frZYfK6M$"M]u8W&-[-[\Eq#T5Dc %9@7/#NlUOZ&apWp'aE6(dU=$^C:/$/#_Ipei53n%CXl=@ %K9$:!YhBB]O9RkDHl%_MSJLug]1f8nASGe`KeURF_uVs2G)-[k4t),<.mC*@,7>cdQ09UKN5Sh?\KVMN7H6#\("H/Z!1(iri_2mC %b%mi2`5k1a#mX,-&6hm23uh[b4P)5+J#`irTMIIrdBsnWo0[\=.3ql``qh6mKU:?K;Fp#opIj+AN\;H>!=<[c0Y%01=t5W1+"Mo* %_OWh.RQ_N8?Q(R`SeZODJmQ#&%9D/G7*ItNXEKp&?5>S79;/B$R_q>#eoskea7ARLK`pG[%iE5Z %[sG.lV^>FsAYGm1n+m%/rC.Q)`o%+C8e@#tAYBur0T-;MAT:&+JLkXD9BGuodp=1!`O,^/)*uJ:77.L#'#\+44XXd#:T'<1beuK= %hcaP(,;$ihQ"qZtYJBjlKa"/?+k;3]Gbg?bbH\]Tn[EhNSut'eA&na)S]7M1?qV?T:9%OGJJW@HK;ns7RDoJ?<[YH-CO,;T&JSM3 %#UPU$+#&MY1f'gDK/=a8CQ$r;AU:s"0GIUN$B/Qn$!1%4ZSEr%O3tAPD1OM\FdGQlX\tiV5^3LQf+Rs)$\M:k="9<4:`ggE)rk^t %7Nmb.Pfp]R;M6tn+H*q!RN6M237R%1<;4K,.Fa1('0-Q*#abA/L$iY+loC+]]9fk6=6u$log&tSQr;T!AFr0&33.dX#,OXgBLQk2B%qlqQR8 %h3eR/R5J)W(fk\i-h8$'3KDX+aN;ZJC6iEW+*/WMF!Ar:RM!+XHZYKd>0TX@k-%g,?)Ou;f4E=kCti]2mYi.BSF9\,%%bNaY%A[* %&sGi]bBe(QcZpraqSU.T\B(8EjB5:>A5D9)=#7PAAq_$=jOIN,>$?50K>!`>5+NM)P!WO#[@bO`YNG=UZi)8=!NI[P^'C6iA-BTe@aBF%UK$0t4H8<X$o)DC&"]]i%C'6q?\V^`#UFHAo"C"ch=fKQ[1r7aBj`RRW %5Y\IO9e]4?3N1O"<>F:i'c*kW`iKJiXZ@!Eh4.aqI]k47=HtbFatQlX,$W)lpnR1KS.` %>K^>S@ChrGT3(..X0V:r)>pLNIl1EF3e:[uC9YiP\9]l=D';oc^2I8^&hWZ*'Na;>Hqi,GQff0k`l'ar@`$*>?CS.V1iEog'p>M/6"IA5+eBiVh='-u3Ut %P]^'-'jBnQ>Ul"GW\n7_lcE+AceMg&VEi[4X5C!Xb5$"\+s*cL<9s!PC\:ZmqFjigR]%"/6+N\/]cqki[C4I\*MiF&f8aSm#jRa2&'=0FC#^IYC\$9Jl$98I&t=cFuQ&H"SLG/6FA<=g([99 %3_Hl4rN/[*2aJloTqA@ue]f5Eb63&iWk8XA]da3Ch->@A[!j5,^a`LF'!\)nTLqP\6s04mjk>=AYY'O-6((iQ=0*#hek$g]"HO9I %a9gSA)T?6PN,jfcZ:].?A&DPES6:A\WcXaEe=BU.cRL+%>4U#Pd:ef.FGdf>7Whl\7@bPtXcTYcBiuf3>cVtM;oGo`e8ialP(p,/ %=LUV72e7<;A;OQoLas>hF7N;13A&eJQYNBk261=5s(3HVVk2L=blCq6/Q?6rS$uM^37bAY-Sd&"=dITcbfSYbHCjKt?^aPj8`qpmQUf4>O1)9::_jL'9W7ETZt27fAI>t_Z0jCM-JE)5PA=#7a\ZH2\@.N.D"g$.s,Xt;H_ %=**4Go&D*BuIM\ULpNi33CUl^j&LdPCP#'Wb.0CGcF&DKCW-'LjTh:5'!(S`<>is1ZC)HO %B<*"d'7=OnghToU[Pa"]"oDMh-Z4N7DM!A@b#Gj1e8CqoX751EE9^I!pSpo8CK^VU%"L4<^^4>`$3t")X`/mFE.S7ub*TVm>B.U! %=Cl%NGZ %i/h6^2[aA(4]X'Q[WT==.Q?c0Msacgh1D3,7cR]ar2m7,f4fnRN5JY=i[Gr/$-qQl5B<#\Goc3k_9cHKEaHZ\4Q;1"YXqVE:J\2o %=8ArLEaNIFljB5*SU%iidTu&-T#:Lin:]C!`UDq106t\jI-)*dk>di?.\HP_pNhgr]gh0k,CZgm`)jM1fCI4JWUhWVp63_po)XMRp;L0CR28kk(tq@=7I,-"Wh-7VhkX&W-b>-+]S0rgR;(=lS?bctE* %UKXjr>1mCk'p,_18?KGV!KqiB7Uh\GUC42pn/Z*:=VMPXU'@ibUQ(t?:VP`WUeS8/cX'@6=d,bLkK96=`D1sJ,EkHZ6 %XD1]3CJ.oL3L7=plaFq:pYfL_>k5kaR,r'6FB->l3k*pK*k[(\YKF",ai([2g/mD1X)Z=bL^P98$=VaG[@L4E/^aB!Wb&n:rDP!K %>/r!IVB2b#'\uJs<0/2%Bp'ekQ)aIL'1>Q18Y&HTW#A[c"KbXgJuVFD2*l%Y-,HV0APH!:mS/"g0'b*"rlaW*h6Th#kt!n\>\YS6*4qYkE)2tbIgH#.4!gQsqZ4IZ/:Pjq"J6iLS]d]?3##\Z`Bh_$iPcO'@$7MN>:7?0 %qgDe:*s366D'T/?5&Sjd %9DsU!qlbX$nV9=]If-B2eo-*.e_dO5^:QD?\imh)q='Kb[&hG8*;o1_r5CMjVsf-1o8E3uoU(7qj^/i(EU]kJs8);)f<I6>?2sPHc;&;M?GF*u %S\FRWopW9C2"1sVs)dMmgY&\Kh/i$ZII`_+:G.+njlD\pgW&j:l,kl#_DV@?`YWR:2L52fk,3D>B32!DF*iIVSN4XbT)7A$P8-'d %4[5LM4aV0ip4(tr:7/eM0&:[=/[TSgGP1Cpn#*WBn'C."bOUsGDqNV5pUB=pVe`a@Tm^kDl@5C4Cs]uF4nmf"/@iV8< %Xa7c_F*rE3g\'=mgGt2S97-a(@;Fd!Ve9X\(>nP^^$TLRhV-`@(@A6;8h7Bhg@J[X[J/hG,UrF'J%ImoqoJ-;fgbmWRX;ARmG?XQ %RsTL'Df>(2c+Ug$pNXrr6i0so^.he:jX-ULF=,lL/_Ur'0A/Weceb:"I/hC3lg*HCmb$--V>BTHlXsl!cVO$r)ebf(9b2>tP0NmC %cHgiTdSC\Jeu3&iX%E?ejPAS"k9j>,\W+4q9@$p2YNI!6YIE6$IQ_&1Gl80\`?pLRgDBe\Rl>93DP',PAcHshi=7I7fs$@Cmr%!P %S=Y.YH?(atI5nt*!IXgO>PHn*l+;k;S*0hNmJ?,7CAs/r^%))+\S3:LYHQg>SpWpNLE#]qOVcBJJS%'Y^::oQO5GFqF*jdqpL07G %b?+-kqG1c4-HtB)XdNSkZHI105'n-8B(g,LjXq%lCs\L8G&eSV:"o/&ZeP%8&#b,.GC=p_qbl2c&)iR3qd.R+Qa1>oO?W:rK*`X] %4P9@p_M3iirlfadb@m(^agQ!i-TC4t^KdAdc4=(Fd\\_qf_]fNKi'Z3QYru-oW+J=&@^1!RD1]\q@Hm&r2I*D:KKHmDuZ]IrJ0P6 %"QJn+3H4lOan[uQ``IV4mZ+E^\XRhFOqg^h?kbB/5h`MNqg'4L?m<5?EZUYF@5@WjB8eO.u^:ni< %F*@7AZ_KsM&K19lVlj@?)p[1)2ULSFjRrG*]\_e*m$`e,fB\p`I_!2&rqXGAR3qfJD25R-8$eW. %:WqG^c0WiTZ0gUaG5,aT[i=D1D>?f]/=g7>Qhp'7m+PY#3Q1=Fc.S_kZKu2KrbSP*5%fAQJIe6V^VNCRm75Uk7CMkZdX2F8a,Zsd %A5RS,3sK^&bK8;bfu<\u(MBY8R+&)phYWi?a6\o8a#7u2`d;Xb)N[n&O)L?-o0>l0)shfRO1om-kKrQu[e8h1m$@"l3V;\9m;Edg %Ve;?/=10Y8W<6#Q+[NUT5Pc7^e._*;3f_!oY,-AH^*fDggoIqAeLmWnlss4,fECn,`*@8HoLrH`qaL)V2L.sj.#:7duI^:Sd% %*XkmU>]Is#\*`=:%$TAhHi2 %HTrnuAqO[$m2Nj9J]#]Maf]I\T.BoI4(t2pB'#oUl[d&p(Kgi!JBI7LiQK%Y^?.`VEZad90Ah3+`[?7]oo(kW?>\gXRAD_+c4T_o %H&LfHO*62akYW/!hMW[b&n"qq9T3T7,5sg8!KMpA3Hk5Ps1.ZSJKN %C9o>d,MUd]2u^-OMK^;"[pM%7Q;.660:UXSh_1J&I+`mQeUkLss7b3cG8DVK?>Z"p\;clAcn*%MoHa2/5;iL<(3f,nc?F>QH+f5/ %@^ijRAe*Y"'>;'W%9,!%gUJVWfb;'c.7HG#?&stC`6MC]&8H7Qudf7$U^Sd^]VEZUQ>H5X;ea'P#k?$j<"3YDj %3BOd"[_XX5GAKE.bdQ_3pM2oUM#6jBZUbi2g.)AVJn:2l3Jfmk1bk*pjEEn+%"h>O?]Z;CV0O5 %q[i=9\@Qi?KKP_Tm-VES2b=&JIP\"ld7mh.hmRqTG^]SRc+EeJ>./i0fW[@X]c1d'5YTm]I!q:(K<+f">Ij4ZS+tt/io9h/\a@$h %s7r#9o_67%nDVZ1k43BD4-2ST2VT!;p["Gg&*\2jA:Er0DgTgbrO6Y4H/!]&UdYgVH2F>T@37meq=a!@Za6]NPD*uLmJ5;uo:N5$ %I=H]oEH_6Hc.VE$YA[1=I\+76p+Enh9CA"0=#\n2Hh'DaQg\hD'M'c6GJ4"4-X3+sVR)3QO,^f2`>oKOms0(O#1uT4Nt6r#H,dk^ %9@70lC!&YT^XEChqsE`,.@)p=s8?/"@5mZXXPW^Pn[M:t\ZrVRou=ZUnWPa(\NB7)CZF9RUbrY.0Ar#Iqec%US%[]kn$h!ID>&FJ %^#.rn]GL(cYhqp?397g,qec%US%[_AZRT":"_Fo^6@F,,eG!EOm[tB]1%T$?Z4u5XE*_hD0b4bOgiI.FgZC2^Z!kg92!-SPCcR9j %r.aPu1q"$d])@EIr=h0#G=1Kc]9Di/_5.%_\N`1Mr)4]>"Dmne\`]U=[^5S#m'LUo5;t`?G3.rCo1j^;hf$]C]CC.63N"e2J-UDr %So\YU32aLjjlH+-mpDfM6/2 %s1_K*^CCA(j%&bs=p!G6.Z_35ptdj^A^g"mKQ$!Jana!K6_)GkZt-njoFM@nn]gEdr-nWk"#uuZIK(m>o3:k1fm;^fd3QF'r\^XX %dAcX>=L<9B]8Cs5`i#da>AUM1RT6\h:6"\H3&ThWAFJ%#!V:NeQN,g@n[7)tgG17*VoISmZ)pc\YKSi84kTgKq%sRI2`E+^[jMuA %]0;jJf&iH7Nj6=_^]Zab!*B3lr*k9_ %NpaIP(7ot8PhCJoA2CF?(?[^(DoiePGdc^5G^O$l)f5(lY+n(J\*#gK6;-aoEZI#-ZR[BY?I)\(YI@`>O-PFa %Oc_QhWJeKte**FmDLQnUO`Z4]ng!S5=*>qhD$)k68,U#hjG3,.X]8ZdS&^($S)95Xa,W$<%Qh*bMtYf.8h1uG5V_IKYL`1K4ROoB %D5j-jU*)nraJ0HUYs/%-`G,Js2FrBF[fnDS]t(U2pNFj;gLT^<%DKNl[l=*U#2e:qgDbMbK5\24n/)VKa,nK@m4H&c %`OE>Op(lQBinI[bO4E5O1loW7S9g&b3s-7r4Ci^ZG85HcCuG1Oo*T %Sp*&&cZnu:)M[fJ4GrNAcel"8gXr!RUtm&_?=-spr5VSL-`=_.]3s%ZD^VIG[ibTZ"/#);gCG+lIGAl9rM,q2f#P)%2JUI=/Z'>O %Lc_u0*iDO#;eUKch(cLo?EiNP_crjU4FTuYgXi2[ls_iffbf7Kmr%!PS=Y.YHErBV0Y1t:9mf932D'0bjh&Bac2$S*i4_A9ZOLnl %s7,d4gY7p7P'p>D:C8aWq!mEkRh'@pjugun_:mJ?*aK@>&;`pGpWoNO7T0ii5J/+0$=dViH/GuqB/LJ\6L %qU3:I97(eqY:e)uL@8[Ugd-AQECL$O,sM/MNnM,.Y]lLb`3>ceSDXX?r9TrW"Dmne3PQa7ZZBoARdE=(2a(pL8*;*V3d8UT]s#ko %NOmIQh_]La/ABmEm*J.FXAhTKSpY]g,&_\9Ld!9oZJA^=5<%`/hDMu`-V9UV:XZ"MdnB&E`blQOr3uB(QHX2$rAK/_d*$W@I;SkA %n`P#[g[uDuh;'b5PNo?_!-`"pp^2gL*nA+(2'fZu.)j6cC_L@63Bdop%EZZ(325iO9n31XZ>%&XCd6'jqo:X.2_WHp[_YDi:tpKPb[WZEkM`ALhHc]O %@u#5k7lSVOg-r@C3p,+fp[d_PkF)-L[^2kB"Yh01#7LV4]K*NKqdr;4M=$`"O4,3AOXU^nmL&b,%@8j_nk5ZUM"iNe+Xq:J%E?Rpk*q,q!Q&E %alW?a`BR,CYC=(^rJq3PdXRb*h[]ofc&Wsp5Q7;IbPt/.h\Ub3f>[des##_d8c%I3%M%5<'4#8fLF+!dlat-t6$(O4epETkp;dCV %(,$1.+Z)B;`M)rpdCBb(Q(),%4T-^OllZ4LKhcm+q"a(5om'GX(<6<8^;bs#'rF7pR)ROH&%X"7Kb,$;cb;8r>9)d4g>7$DYq]k< %frd@#U32A90+X"'lE.N'rE6`eg8!.%T5KVXW-;NL4?Yh57nr3q#OB]]DgY0Je!n'oMu66@$>\Bfr- %`JsDd0t,&\EuO;4UC\F$R&$UaB]PX>`_W5(4Y$E8Qk&jLjp_iIgXHEj[Dp8>/PPG7n,1%iUS`24im8c)/rb_sJP!PFRan:Ok^/4R %O%7dTY$IDQ%7+d12[4cm9u*,8$t;VKR+,Co]a3M4g6qCss3J2.I?WnVFMC$q2GKXoM)FE(QP4E*A?ojlODb(2:hR]X`3%i[/;<>Cj_.:mFifJgAWnPP]'mA9E/cC %s1nZ4Ai,K'M`ZC`:V+-i&TCs1-3ftOB(=Iu3)&5ZGA2R^@j8Y^'%1lmO'R[cj\eGcAt4Z_C0S:'V*-s.?n\S,JFm^ThnRV>qSaQU %\G5U/;A5Z"VPi"(O8jA%fiGi$l(UsJ83NE]f&9!NZt#Q3H.jL8`]Ga]S).R_>a14AJ*bV%3^+ZpQTCalBa+-N?.uC/<.UtUkli?< %f#OJ6pssu/r6Y(+D$YHcmF0fa9X!n)^U/3!cK?gEQaU2(,]p;.q7=rG*Jr3QBc#gdDge)#kuKVk/W(hFBl#q,-J(,8pOLcOFQ:_6 %l*mOfO,[kO^^>\;UaG+Omi.FC,NI0'.iit_:cpm8e;.Id01`"02h(CmW=SMXDI[H5q@c3IE;-/`Fj_)_6kP.(&)D;!\%4crm8>l$ %@C`_nY1!)R9_d1)BP;0T)b/l8Yt5R5itg\.*h/i$b1">*:M\1KQr7YiBt;9MqXkR$l8qYPO]6q`;XYQoc?LCkeCBh54\eZJ?O+/? %rp]"AohT4Yj-,CZo:O]?Z$:Tdmd2ZcIpQJ0_[FX3D0S9oGOS=jHDjDBgplOL5BbAJG>H*apWPb)0>]Mhgl26m8,l2*0E((5pJuc> %a%Uf$RUsgo-5Y]^1p+e]YEH;54#3hMGr=g+o]<:?A'\JrqX0%$kIu5,PiGhed\R7RXQfB;og+gSS&M]9Ci73ud!%[eHSO7'`nS@- %ht14>A_t`sqr.?O2r4%o>+[ENhIk:IhVp6a*?/JL1\_j2+$t>>lDN,QET`qiCjBAnrQ5R-eFMG@,qXm1e@*?aP*Wds>3prW3C$`e %6FEAjMc'@f88?SXFEATE$Y*AdO>q/>mKOd#OoueHH;NCPI473p8DitB*b^nVPjZ,Vj%^,NKYHX8N5:8r8Q*XA`OO)qgWG+l>o.e& %a+3oWagAs^"Wt3Z*=hHTlhsSPNf=94InM[=DFF!$`Kc-=BrQg %qDW7sI>cr(`W9AlFT$G(Yj3U;A(1m#ZYSQ&AC<006YFoFW?3,R[R-.G&^m71gk[+I1F9`@OJVp."Z_BThoZNE.NNh/*U7'+OfZCX %R3].$j)*Y_8r'!el3@+'4H&INHL]M=kKS)B_M0t.NdG)MO&$gC")VH)Fd!d.^Zl>J`<#Q.%tB'$r@]P5Sc)L"+8MmJnr_hB_QNe? %GI4FI2udU:^RK?%VDJ$Ds#<*N=T%.2H*V:)cYi`%opXWh-(eeGr;"IbcPL6Uhi_TJJ,9JNqd,i,I@L99mG\X>s0hdPc6`-qqP?dZ %o2@;:.\+9FV7urWF`TRh*;SgOfDGJXSo]B).d,9e=3jWZ:L="]frMlZr3g^hPJ?anT)\]SoGp,7Him`dDQ4TH$ZKutC9]4t6N&lrKPH:>O7;D;BMLT+;gOkqo#744WF"-PJ?UG/'HV1$K'3I77F+\@!N[JSe %QtAFn%fWF68\QcZ6`h@lgipjIMWG)=Dko&/rhPY^?DmFA9/3%)ROU?EHa&6r'0k*q\)Ia!)7*8#=k?,$GT(AG-*HdtF\=XElB%PX %$r]Ii9Z(BQ=&_2Nfj0kdM`,5Z\e\"\`j0gGS"=C %\juZVm.g+'EsHXO4(%c4apq?'&UL)Je"nup4SkntW=TNA.Ga*k"&#(9/hW<+=CL]PNJ5r)j?aqg(DXEVD7a6.M;_Q+,N4X3m^*N! %AMXqt:.LB#a8q.)?XPlF8l=;O$m&"b(YQ23i8H[[(^hoRATMBfm.a^hH9$c9S<_>Iif32bBdt"s#h*mO_PWBh0l2p!cA[Q^+,tN8 %XJ+[Y%8G/DW%RHYR#U>eOSRCgmSqIcl=+X8)beSlWh_f* %pVq+r1?WstB.=FlL3\7@E^c.q1EE%b%=)8*UQ[H=X.S;dd7YO0J1'JV% %\,*m3;t`sK<3fj_bkh7d6Z'2Pf'tD1+-KnGg#+W5\c<8kV]1dCR"&.SD#Ft5QsJ,dP6)&k''a-kXXu(/r]0G,A<%RlNfpb,kV'>J %IF"@%]![78,2uW+2U[=35:18h2R[F$2B@Drk-WO6:JG%8XOq(0R\mjCl1BM4+?fNQYYAk/:Pb?J$`#NAP,61GP*eq7:<"P9$uYC[ %Q_o!*#]15 %eBDIE?SW1m(Mlm9rQ-*6:fBQ^,;*i(h&m1IYYE/eD^10ASp\:\Wr2^h<4=IkQn!NmD\;U0dZS>'$=()4G1#'APKXpnp`acOT7,,F2\mq_DL&d@IPd6+WM %0Ub8EFE)-h%Pu79HQ(-jTDC#sSut+9I7A,="AVHn(Ilk9=WVOD;V12;83Nrg!F@EB:SPusT$flegD[7%^$Wc$_>@HjdXnY2jX6Ok %a"D]8`#Tr/:S4F=j$ij`7J#$BfM/h\hWSF;KfFBk,K9(`Jd7@@3r#!$Q=^[Ybs#[)koTc$@EaP$^VE>o\r>*=qo*iA+Wu/ %*M24nY3dN'dbn)Xk2J@8%t?f?TkR/>0sZ]^blYde9%PmO^Wor48NHmBH='g.cReE(BSu$f!>"j,?Q6D#-+\O86e<@u9HL2[c$FTBTec#u#)i6&]oI %o^]Pj`NkN';)j4I*!q$iYae+d0\FAu+l;9.BqTKN3p'*LHft46FB6d47&rms7?gK.bY9%e#PsI#d2h4V1qf*]6Q_?0K-H)ioaNQ' %"-%:3]>03"Z`u:L`s2\j'Bm$k"JZ8.(dX3ED_$J>al+?A1jr8D0DbC]M\hA"Sef]egPsOAYM#Il^RP!g]/_=!1[T1@d+tSSS:1<+ %2eS$hif9@[/l&u<&]EJ:3RuAgQCr?C-f3rNA\)8U&ZPs)b-WZk%NCtHa%cD!m%&YI\4)o)AfRos90O9!jEj@^V!Y_Y]NFa/8:J4i %Xm+2?e"EC)<:4ib;;nV?!ISZ7qaLXq6W1H^@jZ)!IAqb`6I3)F3e#oG(OMsCP.-(=mKC8oT!74icnr+U-gihXm;N>QiQbS#[2.^) %p?(#[`AK'ULRJaQf=#ZgUiWAd/X;?:$%^Bk&G,>^P\[)/:MVj+<5;4#+5L3&]S@HU]+L;=18s8=1bIrkW=)8qRD7$7QOJ"7dF+4g %R(,(/\;4FSDK)h'7'/"ts+nfbrHr#US2IlE<#e)p!:XcBD$2^89DhiqZ9S&$Da0Y[\huJ@,M@9A"f1i'.COofD^5oBC*$]N>m%k*s7oUU*!pb%,UT`c]_L0B>d\?n4%.6("*ZJQ(a/u8[/>6RK1jF.96WT'\l^]OcL %&L!5Z0PoD7a]NYcA!_)]8^RpC-;PQ'JAYf%_.2^kRZ'<%i79^b+mSFd8#\T)@Kq1.,60bcbMbgJ#j1>3?n^iM<8`Tj*OG*L/Uce'`@:i6CV&l\gD5Zf7=&aGK?iL^*^".p:p%1fbTGj!!'#(ioXJ0QICoM(g>M]6=6\f>3$:2jf)kkfANE[n%&XHp'kRt:TJ:e$Jtg#"g-?N%2>?a96`.;gSE-!klc:I=8[V=b$A1-< %CInn%0T\BR#)\I!+I)r&P$IVgbm^24Q'Lp^>J<+HrmY'Ei`Z""D:@oUqm:E??L5"B$Z+ofDR^dL\\t($m2&GgfOT<1K/`h*S<3g\ %4EgcgP>X0,83F[FpWgk*QHi#/WWEEgUgB"r4Gg:`VWkO`<5]Pa["_J*SsO/J@pZ<#Dq[j(-fQnp3h>i"r3Ia\Vo<*DKo"f9gB1:e %-+iTcAG#u]Sp"B;=hCqS3A%;6?8c)?S^Ak3L\lOH-l+P03"O`/PPP.c!W-`M`<2 %)&gNGZWj0gmS*8$\634ah*=,mMul?OBKG_BiFtP.d:4CETEb[tj&G6hj4)("kYi:eF<,Bd]%#?>qc]17HlIPSCk4 %>WG]nk.Hd<75O@!AA6"j@iEh!UQM)lPHM(ujIK'"[7qGRLLU-iW;9iRRm["9mB %!CnhZ-f0Z8Ku]X@8WW6!`X[YW+JNs0n4D.ZO?O4TRH_^D]tF:pF63`[,#VGBW+5a\-,?3M`Z5.Wi&Z$5qt=2ZWAUj;S8KlT5mK1%$o:t8""jDW %PP*:3llFId1,tBFG"12^%^onM[?6"_8%rb$V<\?&jeBeHIXo#e;-kaRGbRe(TtA_sM4H?c3Qhtl-9Ko!0*p0aIVT^.5r9fA53+a! %-5I4!A[YYQ3J)1dhR./tMK?(u:psh#a_PWN_l\TH!b0S3%pZCP)e-!Fhoif.$MSY42,+0=LEqgn:drf?;/.t])O*rTbW'C"K6Br; %+Q2.^Qc*i.#[u(7bMIK,0Rg6]_Mhccgj*`TI,m0Z4;s.*A5>GFLkZEqkEKut/:?N0Zc^IH.A_rujPXf^E[i(Q\PWt'm+Y>jnEH*7 %!kt6]OKIFdJ`CQ.6bfH(+XXjRAfL.=a(0fbA`-'Qau3D6lmG)DeQ^)n8DcB^E*K8_ka?N&\t78L+e8t+oG?,BRis[H&1[j%8csUI %9!]oW5GZ7D:/feb7cNtMI'V:;T3:b:=fLf;(Y1J3BmeW!H-s39]BQ9\>S"monq3*sgU!Z<^#*TFQ![k,(u1?]3pt()T@SP_!Z8<\ %Hc2qVEqRG!TRmX>nbp(T,bsXi>A>=l.hH;N6mn3 %-4,$Lf].^j8Ec?[F52m&5TUC?_>lld,Rhd&SS^jgFYINm$6u$2JEMd%Ye=sHNtH;"#/aBd/J9bMVpkb(76i1cq!=U/K\U*6DGLK( %PljT>i@/n'[PWe&Tuh9`_U8q,@u+,:&&BukpON1<#<1]t6r_bnpIiC6@hY&T)_!%FXJ`iL!CgLI*?nRRJGG9pL6R&:7/"-fj+GX, %7mSF^m9OKfo0>3Oi6>J%qeYJ11DSUli"LI$]q!bmVeHTm#F<*>'P!5r5T+k/n7cD`$Tb)"[fokMVihKpq*$2X"HS=8$4VR&T%%Xf %d[g\^G>`g`*5&)N^tasAkp$5fUjR2"k::%cb_lOQIiq_4[>[C>[lZ"e_6/gO-c7=(5'u_G4F;PDT"4XG4b%(94cdj4n,Jh>QM7r_ %I^HjF=e9i6CE$Y>Vd,!"B)3p*AX]<:+Z@dr1\jp^)1-jEp/egTGZ#p@jT3U@1+RIL:b9mG1H,"V7^:B>/QmAQUjlkpUaeO>iV^)# %aY"]GgkmiS.0hUK+/B:&1!W@e%PT9V+[N'B[2Zpl'GqKP+FeEN6q\t,/Rhf>`0g9gJPEQeO+PR'1rOlA]/_(KJK.^H,sf`^n,hPS[65LWXb/9(]-I2YLApE^ %>ZntZ"(c!Ps&S;$`Z%ZpGXLHOmbr\4JU1`eK1B+3LF$AUJj;TKDj(4P+15f#_(!lUIpVbQ518Su2fS7C#-2:Em=Hi$lqb%D8X!AN[(g7edJ`l$9jD)?(%6/=_e(Lp8*jK!J)S`8rp\O_0X"KNi(fQON:kHHLdfb8c&%Am^S]VZjSogk1f2R`Mk70;pC1(IZX[dTLM %A#RZ#(RD:oZ0>Hfar(]+[@dIRBL[.?&[u=>E(.HlCgR]j6Z)MS,(UQ,1#t_'Yp0.qdB623Y!k:+o*c+Q6_R9KfF_hk,838(_[Y8Y %8Nl\5`HKXP>D;248&d't+ %3\>?g\4$JIG!;Z:0cYW6Mq&"$aW#UDSj0X&]g/-N(JiiXd(`+]YfA;t?l$NTf)!c(^]4Z5ZnF&r5a.&K#!D>rjT(7bhXsdu$lRJD %g!^4:llCWA!;%MO@`Pjj_fRD<)+_^SVGo)0ZI%]X,G0@jq7^*^fVG8bhMG9taIN7:ph@7B'E=53fS6,(Y[eb4m7:p0rWqf$ri"W' %,=@">IphjOC>^O[heB:g5W8,XH1,7E@`6*faM65BNCXFo"Qi6-GqM/)U5/C(`/R@_NI2s6iouskL5>VlA%r)A6emApI$!;_#LM;j %2V1#`5uob2:as7P,";@8?3Z)4K.cCSVuf6Z2?Q9JRt`)7#V<15N?&n"(s18/ihBkb?QU^]0c_X@a6('tI=>sM9Z$iL3_^W*]eQGC %S1fjnO`1H%MbkDQZ3.Rapi-^H2iM:.L=BL*jCSp4lHEd/#6HAuTT>W^7jrpFOE@q:Zd6'6ndHSulE*a(g=QrnZ=QdR7Of`0R`p2@ %Z3'\\_43o#9--1l=XMI]6n5)-op,^6SK\fBh6M5P[`pQh,k<;:cjisrY!n2&.)P(YhD7i&h_%TLBk:GM4+b*jU>rSacX=F+f/Ore" %C]h2g3<9V--@l7s4u9$]Q/%KoP+Vc"7!r#;80LUP<*"=/uOV]Op_qgTLPWP#*?Wt^*\[+D:+^$'(PSlp.u"_U`J;gk''bg.noCaZmRBBFhECjS1 %FHn'Tb7)6>=+Ar///*Tf(+>h^kfPlQSZ5e2iF8l.m-=)62b]QP^te&]q^*9b9YkRs4d@Rp]G<40+u>8$EfE&M!_7RAS@`kd#B,qu %l]al>-c6t0+OAZd,_fT@9kC[q*@BHao@1;5.*^F.GL'VQ*Qj!%W[BX&)fR](bZe.3?1%niITcWH5YB`?3&Z$D/^XM2kMR12\aja: %aZY%.16s:9%Y*RR.hA2+QWP08,06D*UKR3GN`k6$!dt!;ndt@d3Z?Up4D1oi@3AN+Y(\=u*`tm+a+r %Q5MlQ71CX(11_d-\-g)FqR8>po/'EOZ:FbX("u7/Ud1H/#dI(DP\Y-D)Ap]MMlS9mOc"WG.nn'nVaX %Ku)%:e/knm3#k-S\GGD3l8j+CE=f^6`_#P@o\[eFiGcmLNn-'mO]GfEF0YW$o.6.-&f`lWc>)oqC317$d\,8DMXq;6601aJ73ru1 %o\;\m#6:8B2qF[iJt\EfL<*+-Td\QsSA@&uHS06-XS/H"i68+1p/"9g %\a>7B,^hBQ/;+.b0*Bp1^CpFgB_]"TcS43Dt\PFo%s6%esZ)]0-Vbi(+;W,c+8;bCe?UZ9"i%;pUGE5))'Y"eT"O[rT.s[cRcSOb`!HE)o() %JO)R]8?cZ<:B<3!-2U>\Sm`@7mn@>[ %El!ZPFCnaH('b&W']1nY96m-c+e!8<$HWYK7(NF(R]0M,F(+45LiW-=Cu92p_ihY9jKYMfSG?q^.BOai %$llG$WI;U%Q/.S7PF]#hV:kP_&j*!<6gGTE#Y./sA01Q,;0G*cN2Gd#$$#=brT&h-jWToMF`FP'LmO[6290FNXVDo.ji9LiSe>:3 %0#54/7h@8B7Q"i\AtU%M\UYm&V-YD8iDA+1iWLmh)4[+'Y`3G5OFUQGL_=E8D")+oI!Yh=`s&H%"t[HkbcuW8sTb@)neaj %2+)Hk1Q-al-k>lm2B0M-EZXPM'lA %SV694bg8q(57UUGq^>mO[QJlsa!=/fG&sg46Be34Q4peG4cLKPM\9DF]lV_XB9B>l-rb?p=ARKlN,_X0%k**(R%ad+$:8;M4,^E1 %ab&"X_a@,>jY@Rm)bE/"BqCKkP3d"V_EG/oRROKu#V8s5.k*OAm!u6lF1uDoE2>1G:\H1p:MjiOZ4m,58MtQB%-jf4mqV+P4rpX[ %C"p'(Z+cFIK33SbF'Uqdpms;U/Ua"GZ=lqpe"([_.u/%8gN^]uXP'J90:O_Af/OE3qWNuk;lVJ^,V)OlWW#5)./LcR\EY>j,\e)Q %4?4F7VN$[%Y56@Y>1:R1adWVC>oYFkU\=R-1(\-m?W79d;%Y\JO&*^[Y;,FN;LP972X7\9DcZ[YXGR#NO:i$1cgd?l*:` %\'-LGI#p`J+U1'E!(k!oknrF!Fi;I3(*=#i0s_?q4R,90gBDJ15g\I/Ju.#-c_un9'>qnN!7u6 %T`_Vl3Y,C]HuXoO%]&`"D8QO)iSJK7rF/E)p;t;U('X^bH7=dD/$4pE#;MeC`8Y>7K:T_8VVM>g=G/,RPn8RWKZN"hMuPtsi6.q= %*KFjS;PV<4`D+;#o%s]:H[;V;\AfZr'dIHE1EdNr#=hUT#ffkZM%2U8-E/5u:PL"q6=ENCb3ga-[s,F;!kBVP(r!LO0&NU+YpZTTkX^"gd<` %$Nn?NO`jNR/O&[^]nD3'3:n2P-,t]4.CouT6U2%>3.ZU=hp[464M@>i+m<$m\TI$[2_n+H-kt;to'?MQf+[%IjCRj&PERH54M1g] %@MHE:%n*KSBs0$+_D11t%r,.HjUSUI4h-J>UEdFT!HB[2eU_Dm;9Os\F^Y8>_CC)EN8^[T*%N[oe#^,XrW.."dOGR#f[uf[I<'Z1 %md_IO[jS\o4SXKF-.SH6=@rTdHX\[nY="488t&Qs#`r0rW8TFI-,f-;U%3MOfjX5L4nEUpUucc>?n`6lRiM>E8Ma[unG=lh'`O6? %?YU#ro$Zen4HEZ5bL1DP3Z:@SUJkY.>el=B?:?Ns6>-cD&l"@ZEERSTkA-%B#kp\3M7oYt$PZq":+ZP9%RH_Y$D]__8H9'PgT`6-,^J:bX48HH\a;e9_;?aY*%c"Sb>>5g-r"lZr#QAkJ!5coua)ha3$:d:r_V)Tr@@kp:%S)>usfOqHfl4;VP)CEh++]i:DB6uj&h[dF1oC#OW?m$$(Ap*21"aCb126Q'B$<,BoK:idKH %aN8;d;:)#1-r!&b!G?l%jIV+SmF+chr%*?&!M]DlcXBNT_h'*]W>Ssj!@004KD5!jcNP[ILc/=hqf=@5oV12h#'`Lf^-(nq#&lr2 %&'6.X,#?#uQp:)`qh(]0n3Ml)[r<]ll'fDZBP]Fe,q!r3VdmEH:G]e;8:fD[TV]'Kfc:hZ@EMcXc_UkFUk,5?#Sns2 %&o'uqNNBUcoq.9:%LNpd1EbPWA%t7e?(kt?/&pd>.umU$M2"Vgc=m]NElKr;ct3ltqg_!r-GG+pfe:j=E=Lj>2M %J2b]7"I4NX;ZD1'/K[k)Lk@PbSI%8k*#O?2LQUTlj.Q8p?'RDOkn]^E?;,Xm%hZ[3H:5EKkp*0NoJ)S>k/0Qq67G[9ZJu%Yo_%=. %rd;9bBe'n3+eB%%r@*.r:Yn8\F(*[rM:FUq.HZ6?m6jq2`_bZ9=WHV4[H?d8@r!>L-`FG!%,H(%6iT5e[an"4bf+qi4YGl %mN%ljI)EP@]GMLh2lCb4c`G7Xl4IXTJ`N!SF5RDF#t`ZiW1^U+P(4RpnS8Gt8?KkmSbQt<%nOB\N3#-.QNL4om2J]aBSU!h+s=?M %MP"\45UV//6rgH?iC9_+3&&\,0 %+fJo;Vck70B45N[3F4=pBUj+FCsQDh;M.M#JPRXkT63_("i/iCGa3G_9;-7gC8Ob7&kNI"kq=M9\$YT-ElLNBi8h5nrbT2(X<8\eN!q"e(gbDJc#%n)38t&??abD#+\8NYeMXUZY(_5e,"uEcK %i'd3hWJ8f;8Ne=XO0oDFJNdM`CW/Iue=Gi-V\jd7S0C0=hdX5A]rItc\]`l[B6V0%na37"/U'Tb2S:aR50^3sk8(6Y6ZH/4ZcN#t %Z^n`YBQHP<5ak#m,lo\&9?p3'!pEcteYdg%-S,rqU3lFC'>dkk;MSFOX,[m.ih:qL//bI\]u(5NbMt8j2%sO95Vn259LurM'!e1M %UpGt5[1nq=lgFS=ll=W,id=4,"F?X'K?e,H&-Yh@LO_:q1oi%9 %o)n*);Un_:K$bHl.12-1mmP8eDPQNcI=a6Xa;mQZDr>CZ+482h>ksUG=q5\ckupX_Qp"\V"5Xdp:dm"R %OVY(*m,(&n]qK3cio3)^k_gHDM7l`TJc6$P@*6[4JP8KG@<^'T9cB*:!L]U@**"#Y(1[X-9SLq`e*BIFr8EQ\:KEuHQaHe>4>nDC %RY9%dT[Fb4fT=*E`!`0leL$\j4Jb3G/Q:P5*,t?jbaaa5V:U,J1N^Ul_Wg'2*.pAS)g8;mX2N]`*i^72kXP3W:UAY3]RN9d_Z&g@ %DbrH3Qg3PGQKA,^j?)F`&CTG&X;o=.LK>6\O-*BJ1Yf_ihiK %KQIgZ[DXPOG=SeT'$8s^ZH_6&72_n.!KmXl,j=NL9YBJoF4(35>mbobLcnV+*Gb@G'!95t7HNI7:(@%EP/RMF#Gjm1=X#_u4Ka\a %M2i!2UDkdHd6p)e6BDlG2hk%u?A8K6@1Ke8m$ah4pMZWrccM?o=.J?1hG_N_otWPKn0 %`ujlkUEC&nTq;/^JZq,#aF7Z[;Ku42iJ/-<8McBk=E!Je"/qo(d?8Viaf.COoK@H3-2*(m"Q05*!(003$d]U)Y;f$5:Nes"`R/!^ %(fr/r+MgK+EUa1X,p>P3g'>J"6$&*W^IX)5**#B9-T!$HPK9&+3KSUs:KC#e-jdI+jtS[mA;'YA*d,t>*.k&+a-l0S-TMfi4nA+R %1TQl(Sk_f<:Mn1k3ej,qWuFuNb#o5Q[:4RDY;jTJqa0OfW89,1W.?#A[-Z;87+nD3r*4Oi>7;,JL>86f!0]+Bg?&?5GDF0OL.dhD[G]W9[_XAn^&YT[)6-hGjoQ*0(t+/TK@]unk`JhV%<*6?LHkm7''bf#ME %5"K`aY]>b5fLG.C_*QgH2((<\O5[^4$68,6,dI`N1OsY.+SgKh[Dpt%V-"<57Vou=XK^rbn%tTf3'\Tr'PGFDcSJ6(4*&fNa\'(] %g!8Bs%D28SQm*#/WfmXplj%b])p-j3@k0,5!j+KU';>sDi?2&d$t8/u^b2#t6DSoum2?Yb2Og9?K&"4.m5R>,Y@l]5&;oJj\l!iLi8A1.]'J*3q.H^OaJnBVh"*r/;#K %MQ]q7G6`cW_3cB>X+\3DqS^hk,jun>?3i+N-p$:^,*0nddcc7SYF?mjCs$os>60[q5_Vek9bWlK;O#I:4_p!1dkClQJ>:G!H_P0Z %qi8ee8_tLVn!9R@fc.2:RUH8;!C0]\OOM;J,jH$th#].s89sP2l]-'JUSADs1U9hB=%_4O7r@icBF;5XOTb_H*9?^G=aur$M`X]A %3YT]BWC%Rd*@jZBZ%3M%#Qi@h8)2`0dl"D_+`UG:W@^JD8@>i>V19H3nLbUaq[HiZ&4(P:MFS5t>^.k`\c*VE&IcW_4G=#7i"\08 %Wm;]:0kpt*hApT4Jm,uQ25Dlp30-,<^2I[Nd@kl"&6D..3*U29[6RSM(s.=92K`L(@j.sZ!]U_m[cB)ome),t0NJMsOPP'\&`^BW %qLBeL*/-i,%:UXP&X]Df*^mpn**P?^iFQ[NE"&*I'd"]E,7ar>[5F;",(hJaES$&6YlWc8@f0DY&96TXehGH.Sh\_:&05DT@2miP %T:X7G4*q25Z+Dt<:g;*T8=ZFX/L&DEbHpe'`O;Q)N]*gIq/UU;?@K$_Y!Ce#_kpDE9:T.L)FZe`Om;RM;*MM+#C9L&;8*6LZk$tF %+Mp[;77fbg]Fa]`U3hi$2MWq*Q.j)$'XsilK=!IJqu[Ji'5ukSD0CU0DT$G79kUf+A5d %4[)uXYM`+G'PJe3'k&ei,5@23`WY]4#72F/*G@#8.@ea]GEZKihBg2\@]raq"1i#=qf9IV6V\jOFJMK`5pL7XQmcpgPJTs_7k!UsSgPTW/ne]E%'!reu/j@bL!+rHllFA %KbKY(1!3RPfI(k:ed/Pnb7nkY#"G"G/E@b(_hY8.$egsXWKn\:$oKpGGA8s`eha#Q1>%u`^5afH>RV8ef9h:7@fX/T%HVht+L$?h %eOe^N"4UMkc#IJUc&,P@&QiM,a*EPCF)>5"G`K2a,C;nt&j^s#E3(#\"`2"SCoR$Ik,7&^<-Z;,/ca_IWCK>88/Z>S/.f,;Z""k7 %\Y^1A/)G([R6nDaW"0.9(srI-a4Q]Tr8">2M%?EliBBP?"jT %0oeT?pg=tIPQ;Moo)L*J]Ep+8iFC:"TtG-K=,$mu;ReiRLBXO@1c0A-h%&aWHY*iJ>]= %)AdW6:tg`kCBr^+@`N.Il3MY3:XN5PNq>:L>FJ"i-2!CGV,fYPMgDu:H#W;!*JJ![/bAPk&-\X*QLfVfThR,216t],_q'r;)j:Zd %L5Y\_QI%j@"SqJOTDA<<>d[9?o1OLf[%o@Ks)<))n>_-SWDJV0^j`!;S;e#?FG<5(STAV-0PXY8.-]rW*0aQ&El[*a2+-03NB5l#[rdigm-2Mr`m#QAJLBSLHbGFLG<9E;5bIR(UtU/Mk(cEiZMsC!fKI>Z;s(I5R137CK*13DR02q %05pQXap7Sr4AMHs-;Hq`1CGhG/J!j-hc:pT+!cNpOE3N\'K):aSiOuq'0HL#;b[h`N7->sp+loY6V)>Gf!_Go39KWTmS#Ke-k:fB %'aYrm:DTR>&kkj.'l!ZkhFUJc^TECU();[RJI^^.-r6S%cQ^(ggG59M13dL)gsfh6RU-&A:mq\h)r9enKMH_cP/s.?t`D.qt^\qT$+^jf2?i-5lVoha1U49,FFiHW5l`,USE %!\5$!O[RL:oAT]B\(99F>HNIm3B2!u4m1[CXJ3;3`m1Oe_??Pt4!?D,QlJ6l"ATNSjoBW29[&BDgn1nj&.\[Z7'$D%bZ-J! %g8L0;BtZ&BJo1^CM?N(gCLIGX;B88l5h/5YF>["n)jX$\oo+90#1nJ.uU*8$Ym#c[C)49%e::>tgT"Kq$N!gD$, %JujV?5PMa$Bd^^^HkFctd.#.oSg=a0%@P[N$;qdSYp:d`ppLG82TBt=^+uqf-IBU0L^QbNKYpNh3`_Omar$,Z&eM9>M2enGj3EfE %f$?A:!7?UD@khd\V#8g=+S''[8SO!>&crJ.I7_DI$Ls11[fS_od$e&AOb4646)XgL(e2RDO;/`f_M)D$.#L#1'g9s_`2mBJ)7YJH %09f'@)0<4(Z6U%n@=j+_AkCpd*1]\93I;aBnf1s6*'44q!+UT./>F)(<(LF!L^VA(ZP$.$oXQZ]PfbiK/':hkJuBd5#RbW:q.;@, %C.f>fEg+mh*RSs/Op$**P`g/QR?-7BK!:`:'?.gdKQ=i:?h^85[6q=,)J\(b_6'B %V?r=+J.hu*#a6Y:P)'dsi*I`U`OFc;M'R,&Z4b<9aOIrC#lHJ`f9r"g3AfCQ9Iea=Jh7AOQ]s9$T7i)pP6SkGJOCo59dS@?FN;fL %@BojkjbhQp_"fbXHr?A.-+;:G21[anldT:b1elr.5Roe* %!R[ibXV#'"+jHOC!:(jUTk3CD"r1\fYajst0Ths/Lu2eH!8W3Q]YWbd.A>[ZX#K&$,>j4/iqj?(`&)56a9>Is2`EU(!>\cAo_B+b %c7gBZihpT:e5[hQ`3/)7JJ-/,/lTY/JuM=A(*J9&kc&tJ%n;f*mH7-XCZ7tg#tBTNc6EoI[d$ %AA$Lk$s$(T:3KnX_)]#S?ou:=+U]gm(Eon:>f.%84PCa6B[=KhqfV$f\Pf[l69'o4)%a_%Vj(aFQE:[uX7(pq/*OQ5=Gb-H#BA0\ %7P%bcO&/ZKV,lVJ;PXUWU3g(+37C^oh(^T:IaCt;nH!F\1'4`N&rPf %.u``BAeFg[r/)mpOgG`ibhI_/V9EZp$pPsWr??GdU+W^2T_AU@&g%[tE%XU`*f1"o6l`2%&m'kW`8X@APg=.iLiri!.1:jFJ;o8! %Q:2ug2HT %N7%ho!l2KXb[AqtlQ:V"Go0[0'_C+4:n*8d_ec1_H@]90i_4++TLed^aD^HW)CGat]+VlPgo$9*OGJGV+rm%:'/2Ye9;Q<$!Y@VUh_FI8U#Op-`,bqAPXqfGX:,q^6B07^h.A]H&p5pfba4FR %70uH3<13rjPeWP`8,An4*!D`F[%:<;j:ngL^.66__KiD=d0!M`rW.L)J:1R\@j%idSfQCY&n$EPG;,dRjT2-ibba<>B+JJ$(TOW3 %ecJWB7[P?d-9r5SJ[RgqaNt#^dhk)?S0'krr('/bH":DtVZHjkbF0oW*uc0""Z-oCPQlNpeECjG_?0m]4d=?IffG(Zn&=ii:)7%% %6Y&ueLGS$>kh$8rEPb0Xd>QnF("btg<07/^i0T*#)bNfmTc[>5E[cLdX%[)kauY1i*5$7Xj!IN[kdJ7$"s_P^Q]7Isab4C<%LW!+ %.F!Z)JiPk1E/=C4/#&pB0S>b`.9fGj'1#;7UOg`9A[i@r&Vc;^EQEr$l4=9P$qZ?uqqZp]eW`qo&>C?AK7sIE*%VU&>$0n/1D1W/ %b_)V=B:(]I6]4YA&O0f60CdXJhml_5XV(dS$dpL_,2F2a"o+Q!h2n.SK,E.XD%:7s67"6NOcq*f)X^/DDkK]V\;>N=NGs)4%4k(Q %6fO4Qm/lns$/Eehhh=[=YS*4Y-<&PLS/4$;@!KLbQjQLie?Y+6Wc"r(<5n!QSZnJ"ZVN,P`4jp\JPe9`(u;$18J#tu/3 %Pk[-$q5!9VKKDe_>8'R>`f_0#;8SN5+IXHM*/#;?Ma5L=(Q40XuN8PA?a1]+9@[;,alLD9F@NpO#/n;PEZA[Gf5/1K#0-"`"C`W;i6a"0+m\j!XF;8,9Ufa %!X*dY=u0ejA>TZ`75:1u-u@>)K",X^UaTnX:ZH)D!%^GJpl("Y<5:BgVeG#X@g<5YY%j %d]&qZ+D#OZ]5/o(@bG9c#,YY!'$p[t&'&"TB#Vb0DIo2SB_6m$(&hnO@3V[UOXUQjVhCLGMNBR55pRTeo=t>TX',]j@^5DK,RgZf %&`?Y'Pc,?@OcZLB-5@`3]`o-C68poJ]HkB-Or-G!K6#<"O>0*EK`uKR,^P?0h@f5:TQ:'c#fgF;.O3^h@t%"#;O\mf*[pYOr+euE %T!/DRH8(&'D)G5Vbm"Y^Rd*^Y;TAM$@cQp5VmTS,,fEqT)e"P3,A=cs@\NiF!N.n(SpWf&W.uYs-:;IJ)"93n$P.2T8D?WYR>;D! %6KWR.6Z7MCM]3B86gSEVI0#`rKLh?e)Qtm6J#@s/E@&unT5s,Vk9u@qG5NDj&*E64&;mYeMkP.?4;q_.Nf%:2%@o %R2TOs"=7T!#g(Ag'%J*M)DX>h'sK3]ZbS^;BtIlLei@ir_VLl['ETX+[K-<#8L.kp2PGm\K*)t_aadOQ8cWr[U1YjkH/p^ii(J;s %;?j#"/*%%P*b/e3,1?UJI&2EKJFqek657DOQ_6pdP(Er?SAU2TpC%A9jHKpU_RNN-s'^7$9iW\6FV5-p$RD(U)[&H%1>rE;<*\!o %::-d11?#UdKXAq[V&=_pEokceJX\8-i]EZ9:fCgp:mNfQGU,MUdT027isguDAO8Zmj9c)L+f0(n8YieWW'c<\$P6bM,"uD>+@.?* %6j_i@Netk#>T(^4..s;N\6lI8&eWkrQgbZFKF`V?"=J&f*"Z/qplPb5>'b"%6#]M<3LV,M&qi^_Gr8DFp-bLFA5m-$Hi^k"f %BT:BRJXTH2gMg"VW3SiW9Vs#A-6n/rbS'7"FU5VdS'K"l37 %eFr^"dMkM:V?\Zl@:ND0190o&L4L]rIi8^-Z:jq9Aq]i5'0qnqqLAV1KEQiYM#;cr$e?UX!a+-4,TRQ^G"hlulrKikNQ+Aa+sd'R9)4K#C74\_a,.)fcA,40TCm"0%0r;YY[(V0E\GHPl_fK(ujT;HY'M$r\LS,#r3]6X=>M?8di;:@1P:WG_12d %;ODYsU7ek]5.!S#Z=7!DEE>T6KGTaO$(c*+5uodSOe3eSL,SQ?RFgG[K83.1L`VIgO@,N[HBdnGM"hVQo-31[mUDEr@Z.CP#0#e[ %''TOo5SFRA;*\"lA>*T#i.dDn0P%0uEu.P-&n$q9A1;6^5[6[d4RmQM4p+mmn]Mi7(mE?L`%*&F1h.L]<``$ZBH>$OUr73a.:\'G %!>9%.M%'hbF!U^,Zn:5\'?Ce@CCDMFl'i-9.tsi5-'Eioj!_<[d9cD.''P>H?+=!Q5)c1GiMERY/o=.HU!48_POKI5]MOPDQKSCg %.N+r6TFhKV?c'`6C@7..<2Vc=[*)lr_Yd%$#PfU3@R?psU.#32GpC$r3Uh"p-d(sF;dL_IV@3RnlOZEMKlRcg_hZ0l1im0p %W(k3>SADc\9jOhI41KBhm8*BL_tMLVNZt8e8!*s?%0\)B*>SoM>5QW5$o1%tZC-oA#s0S1'99\&ii76s`kj9k&J5,*=dKDk/V33h %2_(Id3_h5#;jOXN`=4=b^X[k;C83Xf#XF&\Lqns/@n]X`PL9e.,019m_$@u;@R\@R %.WpD3$5%PCRqVu"GD!on:`f2m&V5`EZ\d/t'bCEh!X()HjD0H/'P)fo[>CDhErX!7QH8S11L(mX-h?A$@De1\N.<#[%k^t[!ik\s %"X+d5BgD#QP9!_WgngZ/Js?hh,9pMIPXrju%O-cl/ejL5]jS(^/26HfJeU$Rior#M[.m6[V:>\M;1LAQQ:*h\%_tD]R1aZm\hSku %`<_N\=#FKm_a<9NL*0T,O\&da(K76inkArBT7A&KBd>_@L1%8EH;Tm01eeYs@,`0]!<]Xfbq4]8>rN=Gl*//M]2Z=[JRW"n$)a\3 %W3J#$M$6.hGr!2T$("GNlNb^,4>0;>W?Mlf'OVk>F]]@SJP-d><[*f;6p*N4Z&BX<+p(ddJj1[i1Qn;4X,^.%lCe8^,:OZ>pEu.N %VMX7\+X:lM3^i7H,MWbL0A0dP448sMI:s%(9p=SVFd^U\X8Ba9FB4O:V3-N"-#k!jP<-s_%8R$LWNnYS"*&i&Te]&@_sSA"r@3^o %!/LTBetakF(aF9\@91K:OdrIGq8_.4/5Ttk&/-&AfYm?O5_#@8 %n:`O8?eN97ONNhGHCdPYU79&_+rb*H"'Jc!/AU@<=9T0oQI*uleA+nEa.b!2kNH&+Z5m%6/20ZrImS]rT[@9X:(Oo5V!c(?QM@'iB#=^g/&;su$M1nceAd\eqd,]m.;C6%M;9,q:*6Y#aoqdp.3BT]IXY06EWI#0igqt/LB.N8e;"Zl/hAc@rkSkSB7B3,\iGb %N`$MS]11Ln=e0'N#XAU02M+qP7,3m]l7kMXgB'VL/3$#7BoF;X36+ani)86%0nQ21!H>D_THm45^q]*3Wm-gOS.NF@k(Dn!ZNZ>( %7sYl9&T("%Q\)Tc>na9tPj&n'CeAeD-nK8C_Ah4.KgppD$`-BJSV3b!/I<]hcsN+@pSDl87OToUW@4NuQrr44iVogl_@.l,/)\%I#O0CNm`uoGcn!^K,^ae7[!Ug?j2?:21 %KT$GL)&!&3$qX`ToJ-JfUJ#9)4GY]Q"8+M[h.J?j+;UgsJ^"(nk;`4AH,Mg$XgAA^%!(#+n;L^Lu2+)5[KcO %H%D:qg+"6:j;d+4KqTsBW54RaXaG9c=M[,kl.7l"r3Ci`K`81baRW).O;N)BFL^;-q>cYJKRU%7)Aq> %2-:#B"T\,M,UEl:W+ZZnardYX#WYYa%sMFY,FjE('a@W@Tcb\@)q2TYHdX%3LcRN$SM6'QOT_irBofgD2#=_:O#-eohh0;lm$pD^ %1Wd0CWJ)#E9W;]W1rH7VS,r#a\tkKBLWQgN@cSg1%0Fc+8Xe7^H;asZ0]`KM=W"fkg]6&I'P'g(5u84&a9LTkC$1fkqZP:S[lt// %FX(H4!_$V!aj:_&"UH/$m?la$5RR]/&2+G3`"(7^Us.GbltWc*/*R)fSs)tR@2+eXQo$DS1DKllTjJ@U#dG#"BM>ikNik=(\O?N4 %$VKto1=9l,2$P%+/:8/X8LVe %c'0W+Y&^aWJp&K@`2bmA9o*bj_MKI!(bg[Fq#ugN*/b*=/c-&on8Kj+FTJbdBa?[(r;X.\&ndb*ZbX@ET5?"R*(GE# %]1a>^N"(I#$2@ReD$[:UO8o9-`,>elBFkKL[ag%2TRS\ZL'RoM@9aCTXJ&KSjq9N[1>t`:jT60cAsKZ\UD5s_7QXa4RFKu_Bn8`9 %0OB`C*^p*$qaao1ha4Rpgk[A_.1+Kp+^;j.KS((X_4bK%2MMkZ#8-V7?us_RY93^ZDeG/>U!J_3iQM@FLeS'UCJ5YL/@:P]U9-g;Jm['gi%5eAsj82 %.7XV"5=)q$Fh;SOGB%&jccr*#0.lg8%0cWZN2S4.Io %iej#>8?kR+aJg#0U*INpO>Fd%Ec(6kn!k[jM'^9"XAYjGEuck;`0`u]Cj^+,Gq4HE.)J?M,bNLQ(C^_,70;o/-mL%gfUnpAQq(F6Qi.qT+S5jY`GdQ:@3!EUI8T^&I]"gP+[;FU,[g-UfMn__J![-)T_D:$Eg+l9NBs_A/IA%6kJ.<46`M*;pJ!Q-D^(k@?AS$ %JgXbdP_h\Z\Bl@U`OEnJ*6rj"&3>qnOHh1&,r$9;8jBioRbn:A$lJL70NS#U+Voo&+2D#M!#?hUH787qS/r,Cd4!gcC`XrDm"62/ %Fu"UuiF%S?5*#"u3'@S,5XrCW&eIYX/7T9$!YFBoX;IUCKQ3L"JtY %"ehF0lkX6NQql:\+M_[+RU?guRSbh0#q-qKBW=]m62Ba.WmpQ;fA %g8?U76#E#%"'&6#o.3Ct-[H;cQqo0j&9#m1N@7U0e.i*gUhsL2+9c5/0t@i6EMZ581B&:"=/SkFOG/J;E"MN;dK"Z-K],i3`t4\+ %hu]\XAr;>J;DJrLZrC.(dsqH8.+0'G)A'b:m4soQX$H>.qk,U:_Z\tUUghF&#(Vu$A0RCLSI*YJY"V3#\b4Y([G'$)5Pg^,5T66bnqUQHN-b./F!<0#Eung6'e`eetp %kI;em"";tt:.^0K_/'<[)\rh5?'Z!7-tcT]P %=phhBp5>/?M9hu[9&^H-ZCn3kKL(r%LtbV\8dR_VMipWQ-kK!n;0'+%VF:=_M?oXQ,n.+@-;$`oP''oMOi1J_9Lo;],oE?&#e%Fh %]Jik(C_1LGFB:>]cpMg^_VpF'Mn&dh!2e?D[(0*rL0k#aW)9^>L]KCg %'nK84kq&-A@S_Ug#i(ORH\@O;80]Fe:4c!)JQhZb_mV%uUjpg;%8(aKk.ib)k]%tPZ4?LA^DP_K;q+pcU&JH0[MT"mJrj(UtgJr>8W %TbcB/@n\F/U!psp8]V)>32'/&i_TbS!R`0#O9YYq8k=]H9,bT6EW6lbYXSEHm,qDb:eE//QG'g*V7 %)5&Zcid%BtrriXH)DMmT4oGAW]22tZKG+Mj2(4?L:Gm/ZIr)VeH,/gkj`1;/I3F]1+Coe`dD>1jB9_pM$YAbK8J,GMC-9@ %$#M3.oqAlZ&hBmsk"9eR[U]N7+g2BP7$8*)*rsUP*R%9A8R=aKWW:%OYm:i&!Atu9&[O0$nM)g9+tmC36/M^E1I>nHT$ID1,?_gH %K^alc?r\(4;A4hAG[fXAKE4G\K+SOn0IW>4&?V?hKW=X("K"&>Zu&Kd&M^Jn8DfRnQ$HtO=+inLM@c;>B6ZkB8`lcoLQfMTR<8_= %);KSkBd?rZhSbC"E;J?qCu/e*I3:N@::97\jQGImg;Q@jH>9`%"85TI-Hs:&#F:6']8Y9Xk(DiSHjK,f%N` %&->>5d.7U:#m.VVYTRh>1!!$IM3#LVarFR&(/oUrX9,Rt2)3=M>%*ISWgpR\!E=r@'%AUb07sY+V]m9"JoOGR<)H8LA5o/C#q/Q5Stfc2U`+iErcK4-kQuM;'*hMj.gfpK6ZW+VlS4T5qDd+ %N,DJ=Z\So;K!o,h??ek3kWaN+Mc+k)t'Wig&`3Ac.sXs(_bC7%c8?!,\e3NMAFS75V1,c,g@] %R/D`<3H!9`IRhFccTG9dm_]RJ^K3uj@!8B8%iphK_c*C_W:8TJ45b[0h,T6m++cY %"/6pUJ:Ys[i3D:=60j>B_o3]OY8(X!)Tf'Igq@[@PJe?ZFiZ%afYGlIE%"$r/L&^Q7np3m0sdV4Y\#pD@(?Q8F?rZC%]2(!8*2"N %\_AFIJnNV^"C!&VYnQ,hC1Jf(ed3iEpbk_68nNoJB5s-BXuuAbMM&T@C'@^pL`'iqWDugr!:=HJ8'Z4(1l2@@,E]^94@:)3q)e(4 %#u;08GM%UYM2uh:Ji4l3GpoZQ8b'th]MR#32ul9:`Cf[*6"6u*k$FG()58'Q0f6p>A(Z4Pcut3m%Bg,[__F>R>DS6F3$BV_j %l\T5SelX5cj`2,nWmXXH9foY?H+.lbP&Ml^gG=P-YZWZm#rtoB7n>JI1\R*^,hQXY8QHrF_/PCL8;O!H!%*S]JI2f9K8,1qA-O>f %@q0&>)!-J3"XVNd=9>'#`(C5#!tH1Ka%3CQ/lF`4h&q!0C1pPKd@,PelZ"ckh=7'ranD[^^kelq"r.N'BV>3SM-& %lXgo4/0Xe;)2s_lFH./jR=dnJ,9`@DUG1cZjK_PoJYCG?,FSN&KM'<)6-hJ!/ja>Ck:_*OW";0#Uctc3<*H1(*s[DP6=1^R7M2=.-lq$kEpT' %,-hld!LU7DF3.VlnJE-,1k8%M_h"#ea%1j6S0i.2_0#LD(@`F7-A*"c"B[,f;&u?Hj.$=[Kd)"U,]M@ul9cfs@dn*b.DYK[Mh:Ja %8J;_nmAA:dODpLqKrkq1X(84_.]B&V8m#Xh$KNb]+usKgQY54qaY^")g`hL2$G,!MS.T/@#'r'aO/W\+OicMZH9hF.fTs/_8.::d %5VafS36Zk:3^g&YHUP"i$GY5ij!qTieH77%]\O=e>G')03D<+\Fp+,UmLiN1u.+;n"kLV#=-=RCXT=\dZ#p"%0gmPNX_ %H1PtgJ5e1Z#^cc`eM8S*Aju:(7gKdg!p.*M&Lraj91:D-'q<8^9)hoZ^Q:bY#l_e^V?dMRm1ah;Wg#UiP"3VbiHi^m3ADdT^j=po %_-&3)\Y4:A?72I-70IV_fiJ'pN#Mj$(K+C$VCu2fYge=mIV/qS7L9a%^c=Yq4Ma"+9>[BSnAQrDpKE,0#+.pi!stn["$?iCFput( %k1PQ?=MiH:ofp;?(j7K:U>1S-dOJZV`']3A`2Tah30Bd,iYkL6%F[:#A!Gf:Cu#D]Quf)n'%Cf!R1LKsjVP8/&R2 %U2\h3!@%C;,F+<;![ro!O?+m?+suJJKMR_$-35Z]TZ/F$#6bP,AXEhKj[=73RHtk3l9buA7+=km82qRi+O8.#O;94pB!UV,ED?\C %Lle3!OjQQ?&M9A0("J#TO%+OimLYSuI$cq9O)>+>jAL!/'02%d,O!Edp)AfTW>^'cEZX;/6ZR=,O.1n,,IJif]&,5YYL/#*ZpVH) %1fjeqR[BRH&+Cbf;@54JVH*1#(u[TR+i^i` %#YJU3Ybd0XSeI9R)8c,WFdY9.IUo<*_K]<8#XQ$Bp$b8_(@HApEet?QJft_]1@\R&32K6!,\YeoUl#RqX77@MD,[_>&Zc^?$s.ll %^dne$%?>NsiaHb,1-Yh/nKII`!IuHp0kR6OMDL.2[i&tu5f@V1Wd#l->Qka*3\t2j",T8]X1ON9FG-2S6CEl.3[G&kKbtkLafJ;V %-KH"t'F9qe*mJ@LKNgQ(brTIt)7]s>@!,[C/cpnff(^-rOZE5pi9M%[;\9`\b"dT>(jKnR66rP)-(:/;'DcN<'bI0LUN$M@Tapl* %#(27`-%-*X.:U:2H7WRf[LC+b^m(K'"MGSnf>[k-KWrQ*&tZ4nj*#*0+>]l0&dNt3!r#)"Co.^TOdV'R;u;3O6VE2m+G=SM;g'P- %/mb%T9H74E+a5W/if$2pW6fmf@_`4,0pK?gAL(*Zb)si3$T\H\LmK-'jtC-e1h2AZ-1rp/+4C*r=\<90*Za62upFe"$an8bH4 %Ge&J@j$b\T5SBd'g6%^L-7Hg#"`j@7H@0Vb)+^$/[NZX2W>,VP[@.VG0rFi$=9j:omoR)j(*i?P39C+>6mV`)aK2D34;QpK)i&IG0#L)i5jKa8'D %"$*`I^aM_lmcYlK4s'%M0n_!U^O%bH.M8SM5*0F47sc6kgB+'TtRW6o<*4,m=Yg%*W7Xb):9cAL-Z#e7Qo;\D'S!@jIku)9#0-$# %<5(be %YCD;aMk8N*K4_Il1'3;a$p1U!lIBVISE73HYp<-tO %(XL1rT\""'.P&2=pHQa8G!](7-=FGnC,MY"aT.8r;hd)[bt`(XaB;jI#0"@W:#\mi>aE.pk=jf%je)DAaNI3e=1*?sXMXc$eNJBd %?$kDle;p'qQ,?pV^X_u:m)&)T)WK&MTD&3p=0`Dt>)+(K[lgjGj*0`jhQu;ijZj1$FQ)bZDoT7a,'oe@f %XX*pnTeEQTm#/fh^]kmXM,5@s@e0ehe^ZZfm(A]a9_9,cRt8"jou#:9NA>i$Vm=nj$qO'33;[+jO:3ojm]A>!!W?&*bOT]a^^h,$ %PZMSRVMLNMeq*nS0\.dDIaiN0k''V2043_Rd2/a/BDgcrCR;IE*qQk_Isfqur#JphkP8?Da;4oD8l,]?./:[(EZnm1TSfrbWW:$5 %;W2SRJN\]2L=0cnnOciP;HEej6n;-ep\u>UCOYgWQ'Gi#-I:g,1,9ZljB2CBjng8fb2G+5$#5]l(kaOuT.+Tb:4U!VUq4WgkV5Fp %7R2o74OMbK#YkIn1nGLC7Z6jU/V0-q9WE]PYsTeAQ_+q8A=XLL8a]Y"H5E"Hu3$0B=q0K(p( %i_it.aQ5o]YY9-3d19bV%phdG+HPZ3sZh"`rC %nJ%U*PHo#WVMS>Lko0Gk-H#i'9#[0Y:heJG+@[XRN(7VZ]$G#`>S%U13!i;QBt_Rq6D\MBIjX,%Q5tjCD%DYU;/2o8,4=Tm/YP6\L=MY!gXXP`$fJ-rq$8dpcIS;7*OilZUG!-D$]]<[!K6#0;Hs,-jA/m%Auop3UXf^Ur+!eEZFE %b=a8(+'OZHC@@tuTsEb`qJs&S/>bl@&@49''!m]D71Ci.FC %;%V&IdtEIU(0eMr`]!R8]sdI)Ug>a*.P"lX,IsNl&4)!Rj=+J!8jKopAoD)NT8[(L6P8P*Q9P2V^^%m=cnI7uL4b)NUla<:f@Fe4 %6#XCh^1=<(V%RW2=h(b@1=i@361L8GAsR#Bih>nV9Ii,%L-)T^(RO'7+(duS9JaO'6_Ss:#(%\OMW<]?U:HHZ2[(3Pc6fZE%8$hb %PYmceW<>se,<>.LZA>CRnoHYT.%j"d,"6^BT$->'.m7L/(:P^MJrbW6 %$NLeKNOr)M.L]:+Nib"NqbosI%KE#6R&77>[OX"MYgaDW*:fCg_EWcB1V>PVuZ.[d`+8qj.+S8^fI"S5f*5*7]mA&Iu_F^F9=F %Pr(9?7lSA=NpdjJfo>c/!76tOa[i*f9Pco@`#sOS8$=m$6?Kp5gYp=c?':"E+Q'QAC6DQl %bgPB?rfcKt3_BQZSNdFa5dZ^j`2\jY^EFLaq=9[]pqjSQoJ[&tj5CrEG_NTNU-qp^a+DK$i"ek$,#)2DEQli1&1VE8%`n_=46i[-XKa_]=M)>qq&PSUPiD"m!'+\Mcf`!3uLfko>("MHi;oD3t.,-[Y@%:hZP9M?3%Yn&CCqWY]jVM:[+s> %r0I!2-iq=XkB2%J'e@%$_ch]Y`Y;'Ub$H6^P&QB@2<;7'"(Q,Un\<4VX(HK!W^RlPXOM!cd<`I6&V]PGo%;+B/WU'F7_CI$lnf)3 %n]q[LZO:anRo;Q@:D@t5s5Tb'N]fB$S*9u1nJYB0XgRFabsA]1ZEpaSHl.F`r6Hma_fiBY[fDbYrp;$0)4bBS?i5>OE\3d;Ld:m4 %Vgm1t1k3Y<,CiJ5qIi"iUZ_$E@N;f'(Tnhr?^B7BW7)j<4,rCj>('6)IC-H[[!k,o541cGuj!TjJ(PZ];!GWt@[G:Xo/+k>pDi,;7/F7c=r0.J+JjMIYu/63Z% %KVJO6!!@UZ209;T>R6Cr8j5bO67g_QP/Di!J;I>E*R)l08J=O9!%l=KS&=-LERr%bOrec@7$YS4Te38M1K@7(ORs@;V0PNIJ:@a,QthppaPFp4 %9;lGFfr;7o!1$UF)T`V%3S4=+ODu_s4?Z(E7jR[;?5mLe8J8kX98Jta&./tNC>=^I^6om&Pke$,C?g3cYafeedL;6YRUK/VHX8LRF@=POCf6eq@l@:P3[foUWON"bK;S(S9o!W5: %'-B=XJi(XJR1Y8U,>g"rhW2hs.'\AkQE'a7_GUZtAi1[nHl/mZ>_&SAU$8)N(`F%IgoL7((A'q,]9?KJTgBQq>T'LdlQ_4gb/NDZ %[O*8W`Mh4np?h8k3@q+[G-=P(i%j;@:7*%dt13&+b?qLR/Am_@ai>CMdMaDpm#=P=Yi=LM-ktfT?j]#)=3:_%Hcp9@.q/;Ff/j %5klm.`X!;JT^G?m`2"MfEmWc`.(M1]k-"r!P49OfLS=C(N,#G20S/*MA4ON]USPB: %4W4T[HorYZ,PndSB:8FWbXn3J"GMc)nKPrD9dTN@2?qbQ"6'K"S,kTanoR&JPd!HngW2Ep8sV(D,E[Z#_ke/$#e>qrD:4T1?QgoM %Ft-XQ,oMNAm?C1k_ofnGeE/Xl3JI+5?s`tu(YPhL87R*^:d^>::)A>A^HI&aZHPi,[#UX%nj'be7 %PXOU7hP7si-PSu1L[qecGl]lN9^*G8\Ot#jfS.c2YpW(%0tpb*PNs"ig5X^;(dT]IX:-d\\rj&\#[E@PX94,O!-X"jM6'^C(Fs#K %7f$76Mdf.d.DfA%e"R1OBanNpnq*fJAC[$`X%)8an^WEqCQ\dZ[d6pf[GleuBKL;d5:EPKl:PTTjBVcK9dY\Q7/$g+-E/[Tc5Qt8 %0ffeA5E7Kr1mGYjKfjEa+aNrJASiT9)pP:JMk2qU?>ZhV7WToYTlc1!d%Ms)JA6Pd[8j5\eg>6[=FO]HC*$ %,qf6Ze1_,(?4o'C5ZAX#:+/3d^QSgU)"Itk5:1]NX>=E2G=eK-,t`=knN2S!#an2`"Y0<36PIZf-(&FQ;R-5D?4Lsq.@8ZL!^mo*UdqJPj-orYg;jCMlQNmr37LA3WkTTP-.bo/? %3+i@:_C`Ym/>J])Toc[m@?Fb:P?teM)#MbM3&0C51P$bAo)]!@UXDNfl:f?]i*6SOe;dLJ19;M3>qA=es]q#GT@? %A!.6f`sV's;]H^pBS+Y6!B7uRj"?Xb^g^>@KG^^uhJeH`4EY7]X"q\-=MT1#iD0Xkj?K23h@-G(`/YYa_/bSrDZ-!P#8Yj0h9+D& %bK>rJH>Jks`g>ND-X9Hs.*,';d)3ONGWZ6U!P6[p:)X!H:H-J1<.o^n\A %4@V'ALu/80aEVq"3sQWL,i)6C)EKgUW.%DuC;SECB6%r#hj2CM9Dq8O!g?@@Mp<`gFj]UofaM.aXQP[U#!CL6+JD=\S3*21JhaPZ %+Y@SKY$;`F&i:=L9K?[ZOch,U6_l,gKN`G!M81-5/s$aUr"'8Ml,Z5k12W9`W9m3tfFM_hRB%#bKg6WD7YB461aEeD,F%u`@RN!] %IOIZK;6KoPn19ip<1GG+4+o-#el9k3_PB-G)L52/g6W.[j=,O&MDjVh(.GTG-D`cM3e:9L(:a9G)&B'cTMmINGg"%jX%b3;]iJH8 %U1b6rIj%6AdGR\nL`n6+Z'%AgBJb&nVoF;C`1VT"_/t;"19Am%&6eTF-KO(iM^Ct(_<*=sa[S5tO?uap!c8,J=\\Gq-Q04%0tFJ) %h82^M3M#ZH+kGHUod5']#k'QX+OloiTSpG;S(_BX0l0G,6^K=<7jo"2U/gRoH%O0/@203;.$Gg5Sf5BPnNR](@S+CpL_)7&OMRAZ %Bh"i'!D88qrPm"'&)nL46ZF0R\A0Bo69/Qc@7[3A"9`8h,kj,H[btmp`9p*1_F/V#[&R",)ThGP`&h8]5CQ19"'1$B$&L!P"ONfd@<"m][@A_7NB/:9ra=i-AC3"-CQ5A6h,s9G!kg)"0e"jWJ=t#OFin0q-)(KP9kYRX% %_H/)Ip;C@/T&^:b6L=ff<]XVdHN^.[+rC%_oAa)O$nJtJG_efLR';`o#c)=]IMn#..hpnZYZ-@a'\(8B(`4Wh %DO^A'qO)#;,KA;1l0%,0N/uPS&KMtbM)cHG2rQPc@`:rBAm_5VM"s%S"b;L49W$%_-pF4n8M\(!,O6N#'Y>VL#>ad?aIOB8phB>S %4#SCr=*DbTj,V4E->>T,]E\[*e6rb<'iaDTZq2HB4ehZOmf>BY73$0kmZOCM;+;ZiQnkiYF$I2r-AGrLUaF*%EkF&GI6]_Ze^J9$g@'rMKH[G=Qm7Z^n(e'XMf_'b9 %*ku\dVa*:d-9God3[+W^"GNqq$AR5qD+LUgckDr;+eo2rWiL!YTYR)BR[Kj4q74]6LB5VCI*%:4%PD1K@n`,iA5E?l?QcmJM3Ld^ %B\P:'6'J2Y/WbeR2HI3,,)Zk67W!R0[t:m>dI&-?uHQaWZBP.^[<]WMEps6;l/q1YK\#)j1nGU1b3/ %P3S(c7aXjXa#\?fj-`_q*FeHjg>qIf*]X1V2[8Cg%rqMk(66BR.HCr6?cNNVla1h`p`\"F^="T+LZKD^NMaHbMY,$GcT- %T2G^N?(\2$E8u>O)W77a1Q'!0NF\Fu!BXi/_Te9S>YC1-BM;2eiM'hnI&.:XL(G&iQmOpa%km3A:GT %>^,ZP-aX,ENU%*R5(/jtU)#J#UJ0&d=SV-l"aVkr>tEqPl5,8.S^9&epa:.lhs!]aK8#r!B1s2Fc-*b\A<)DqEW1='545nu\2M4Y %iEUeaC[PGeKSseS-_XX]N`L1gK.padpE-#,5fo:0Y=-eNAG1Y@?J':oKJ#5D^=R&Yj;mD2TWn"LK&5n+P]0CC!ci*DOq"@ah;G:b%q%%O2*9/]Or8i5$ %`;fS<]jI7g5u'upnaB9>Sbcd$=*`BO8,W(KJ#f(W7DDq2/'!9rb-U!krnio>Y?.b'($5;6RJ!IWjXW7Cote33,M"6=^h@#f@`ef@ %Zj.rD8k2Q1q1N+-cT32k(jU8k6bV+8%QiojnJ,!&DUjf;^#jd_Du]7Gk*`E<$;T&R*=Z[=YLl`sSMM@Q!PF6VSITuLF!B9S43CrZML %Gs>Jk0g9@I_()fu).`=V^?`cCg#)+f3lmYu"/bI0hlcksiF6&nj?1pia&fI_Mj=3)(obI]LW`>`6h]b/3HV1+W-nH3g+!b2DcY76 %F1I8K4[[8Y'aEhXjtE4be';1T?o`1%*RH(">3a+#H+``E<]ZbtRcY`R_DYs;e:AU;(.LfS6u^P9pi@Gp^OK#E@5PBEPD/A^e@uDA %'>oC<:^-q=FD)9q"(+q%*<\!SObE#K`oE7a7OEWTC\ZH,19"':>X`DTXc&:>YI`kBSGi@^&?4B0\F7D2jf))R=W<(i#r^gmEO[kc#.Z;X=]ts>aHtlHsg2R/-[8Yq(9cdb\<*lN4 %Nr9[5<;T1S3Z6Nr?gat3[0D"OaOdnnp#Q$:$d3jQT@3/cA[BeW1A/B]@ht#B@mLQ+I,NW,bN8g^\C*6>3L@[a]I9KCC")u!V(K9+ %.K[74q!bW>0nQ[#1gk(bK)^2YOLg7l\`FA,,Q>$g2;d\qb$=%3l%TI-dooIl#5NM"K4#hQ@ %oj4]GPD^\4,OT+dMRF0DB1eq3_`(B*S\?k+EpbN+X/K;Z0J)I7!g"\$o0uSpn>3]WsNKc5cB0!:jo< %5^L(pnF*=33^Q+i&0;T=mN2!*(L6[?oDDP5o.tF'S?gERCM[HDI@Z/"A,Qd!egDp<0DekdoJ6qjZh&!_s,0u(DRMqcGDS`(f=")1MiGpA8;I4u)*TR9hrRQ$hkUR+L5DL+/Ei5l#7Ai>^RniWPt4D)Y1bi\HK!$:QDoA7f0*gaQ. %d][MEb\S=F1H`R!HmY%I3&>j(9HKfN30'_H#4M>RM8oQ&MhaldN!ZQ@7EFma:!f_-9KBG(bUah8r8W0:nX(?_ %1Q0<:=(f93+9'LFES5-GIW]F:B(Hk-ic'YDpe4/P1/'N'MPW6mf&hj %L@^d84hc[BHtN&=*U>M^a(O";c&B_R[RACqHC1mQM9KcWUGG$MH$gZs7m&SQbY0(M:IK@YE^F4TUm\%agfZ$)8E7$Y%VCHVY>IXc %G8NMAAo[sq.7c=f.nm'PnMA)'bjb-;SE_oJa6Zp#)*U5G[f*CKoZdjes5YKcZEJ/&bR>R<1]1;s^Aa[hO(;kuQruU:,M457_\c"= %[:*I;:Q^cPVN7oX7fIV!5!kH@X]o<`s.i(J1P![X+TIhHI:`JI*UY]caCf_n-=<6DIqJ_jCi%IWi8a.3J(PY.j7AX&m*,A^1Ojd) %#oS>6(+(1Nim;9qAK3rR8(l,QnaDX"rtT.,/2U4m#cbusGVctPbjP!9T'A,Da6[o?fff<9SL=3t]_XG%a!EANo@5FTRGhWig+rh[ %HksmqCpT;dj&PF/\6W3#3-u$9&t+iu]J[urY9>TVV)Ql-jQ!/`Z#=6FO!'UoD4Ah:\Y_HP@'4#mB[kc %JEk41:RkKp,/3p&\+i2N[f*jSkj.K]-X8.h$Vq?m41]&ppXaY3>78ge:57+n7%54QZ_RC2O7"Y`e\UV9SfQWoj3\lYE>!8./-I*5 %O(LoVm-+GeU\bEHCn2U&Z_RD54M%l;"W?,W2G-=](=L]E@Ng_*4?LVs#Pf_fjBjkUea+EN*TUSj6(Y^"&s:!.6(ULtq-RB4Z\/25 %H]ZumAdA>Dd&'AGR'?/>_HZWX?qLArJ2#9A$hWIPa+!s.>P=3ib!1)]rS*@3?K6ZVd">Z2g%hq7W\7!JZX`.-o9O&YOkuQb=(-D=U8Y+04/8:bF_qqZ[eAqq'_j=]_mgmpH\&JI[ElV %RN^[?_8M0b_"C)mP,1th_?C_[W?$Q,ql*-8aK*2X^lX?;(>O/`0]un6=qd@e<2#gD[moSg!q,0'F0E49k %#_H69/@=P32+\RB98M&X_LI$YRk^Pq<;>(HQZM3n&49G@+2ip6$b/OBp]Y3CL8FKE/sLk1d[?P'4lCWX@'B'49p@5?REPMcECjcW %JeaK1d7i-@q:5Q2^F-Vdq5]eZqQ^(*HV@AVDQV`AGZcr%$(:6KAgW`9l]B9fibC!I\+6QmkY[eM2.9e[J"$DWs51:YO+.&snc*@+ %]?rM6cKph@40@N:[jce+3rIgMmpZ05YMsbQq"t[&n"(W=C]!cj*M6,;2%ZG=FL %>V#DHYMSLcFF-NEFiK\QGd6;2kfb0!np,ZAgX)W;eHCTNZ/;LhS(kR$S%XQk-a$)]8,fkmDtp2h(b0mg6%.,8?#(MTRa%gMI!GK, %+.i#BQi=Rr9,id1o].FQ\R%J-[I>aT,<\,L>Fjs5Q@,u_nPT%)FDil,c?a-E3og$;!t59>3tj*Kuk)em3$D7?d:?;R@5/nVkU:JP14ZWh'clc`&5k8l7Z51K>=s-\^ns58n3&$r=XJ,Xm"\D1"u^$]kdhZRRt %CT&ZS:'Du']^'%9RE[Ck^%R;=C(%10?$24oNU*JQUA8.#Z/96hb(]NbrnInD?E%?XT'u3o %ps6?l0E#6,j8&\ga2GXXc]+::4`?S]Ep_,,et?.q`#A=olgFp-'YBbdX?GBb;L-sN0.N=3GFIp-hdlMG)>fV*E:^gIV8(OZW98Xa %,C`g4T/;JPQiHQ^IctpT])6E],_VeP\rB_XqN@b#Tp+m!c%=(Os3J?cX9J$(W>PDV)63M,-[1?RJ8ECuC8H=2BW\)o+KHcdK!1L+ %7*3@PIF76`(BOZtd5ItXjqj$'.tsf#]c./ZA`S1G8\%SO]oF&2jH?L-88i>JegD22):P<468Fuj!JMJfrIP1%Y^_.Wk:CWoUG#&EjYPi %-J#cKa'LTcm[X0kdFri=Q`p9..Vd#:54Z)Yk?[=PmjlFg&'3^Pbn&hV1_`);/78(Us79a@YJ%5lY`NJrs5M.Hfk<8+CSg9+[&f9;Y\2DnPYa %`akU&(bf5$.,CH34&#+fnN4t[R5b\Sjth2',L9F!))rFTLVdt4.\?Or=QF,o-'t8`]sM"0l3j*(FNa')kAA)D3YkIK+gU]lk=Y,? %)K#WPe#P]np:>+Rk5Rdf)]s'a>h`rC#9UU1jboR_rZL!6_L:A:[6M-$l^\Oc[,G6Cg)p-[]ZpI.g93X=UK9\NIt-^jN]djQqbUG[ %p$bW.i*0K)_#WdHc,dE^-u&a,V7Um`D,Bf^#+K93!cIRF-Va9n,4>+C`aO1>UVk6J";Y=BDQgT(25=QT*R@Ib %a1e6[[j3NcSBEa7;! %G7IE]Sl^3o4jI^0g:O9-rRT(fBmAK1L-eR\)hKC@9tsc*8V7@,I!OuO8rX24cZ+A_Ir(Ajeb^H/3ncgd%`W86gT>p=Xp*Nugfi&b %b"Xs'1%icZ/tp[XPnPf1ji\cbgtS`r56-KoD,9uJrd3/_pchi.ms;+LP9=5Z[>4)8pF)9OmJ&QmHr]&KF %\TYC0hu17FlS&'&OO&BdlL4CT[BmMq9"e!)(pkUfO^J.8dHLoXke)I\j.b5AaN3F"054kofm`=rGlF0?oZ]$!^].lKTARD(m7WoI %s)B=.R3Q^FrjV1l_S!t,5Bg0.8K7X%mhajGW;8HVBQUFtdNG.:9tFm2u8h$bhW# %k&&I`[i5;=ZT&@0P/J(jnu3:MTum8F:L4.A^H&JNIpAd&J,J,NM-[cUfJ#=h2udUZPE+SV*biU.H%rVH+Z*nT?EZOL@4/ZX\+5u; %F2)a$n[&enFU)4ofPDT;T(Q9BXj0AH2YkQ5E;/tNHdt:D24CSM]D_,`^V?NBmNro2#B^?%ptsefrK$?UOrMUtZFWYnVqFd6f@$^3 %qdFoWent3U21(D8qY]Zd&*@iK5(2)R."=f'Rfc<$jm %iK/3Z_">\Z9K/K-/>ciejj@43dddOGD@JC#e!YJaSsf0AZ`;Y7(Y(ON3\p/8S%R7r*PI_aB4$YjA&e!M"1gSts)hnL-P+VW4T<_' %6XVD0cX0t"%&EIYK.pI&R4c]bj]tt0/#d^N_34)U3a2+(q87@#iYt2,NS32*LJl-d5>L04o.M""7Wu=IYahYFYW< %4Jqe,=4Ka23Sm!kIr9H_go093$bopt3Q2ZNka1TU+86OS8+jd^6JGj>(TKIYWY`UBnEcUWTn)I7F6\Y(GX_cRW;E2>REWsWp0k&V %`/+EHh=DlFD]O!nQZRIE78E3@MN"IX;,OTFctYMcr\Efiqg5H];>p:VW`#`R[OJ*(DR=`uNG]!*>^1ksB@e[EkrjUHS6ED2^X2@V %A(T'&]WZS<:SAcV4*3-8fA_34.2bj-e[Mbg5@4,(_0WkghR;I^UQ5dhL@eBu`HDb6OR4ioc&4^EVec?8\$fjVW!,sroc"giE(RT' %[HY_\K=!ZEh/fUh9#0/%W`$F`X7uI'm5bDVqq*!-o`ZfU&%;)qQu@24$6"0 %Gg^MVM3*nT)8#[:1K`:J+868VS[16OEIS!EQp3n5B.o2BJj1t5^?.8%AZ'OYk'rF.HK,5C-%]hg%khsFq0I@-%>EnX__eGB)T:lY %m-XQDUH@=+RjD+Y7J?]uVgIH;+kK4&7t7%O?4JK/M3^/M_#6DB8'Dk:_Um1ns4f-6FHE#4fp7Umf=^>.:S@[/hB/#jSl[@fkF?Mj %q4XI%`[*cgUn)Zt2b3T?j?TFP&LJ;TI;r>KZu,*1#?gB*l_J`LrfuO0k]Kf2\/qimJE?]7kLM`TqN=IkmD^5\/5Xo3FS]VZWNS*k %[EFZ.kpK=m%q7Po%Ss.sDOFg[U/#L0*+1!i1:9mWA2!CO2#Z?I%orU-Nj_+!MO[hGdla]Bm4,"TV&`u'3MT@(i4uJX9qFQ=3,Ut1 %pRAjZ).[Kad1b2-'<:u83,ZX$H??T"B*b!@6MJ!0L5:.)#6J\m4.R?)2:SiXC7TPUq_NZ1 %9!>p7GdU@ne(jQ[G(&9Zc_%ARHLpM!:Y.,3LZbV/\/Iun_)-;Pf7=Rfb&*V@"b$pSPa/mjA]4B=8^OjOqoMfY5]Bo/XbdFsW%hn] %$ViQA9RV[s)10IcgAge:V2FBHm4XO<1Ub4u'5P)'Y1a.F2Qbr6@.GC %HfXjVb#B>RX8;;0VdA@r*OhLgUCB=u3i9<\ebRkc%t%k^`n0jXcGp8'^84l#7K4(ZIs1M@br]k3I_Sj3Hg>ZnoiZE[\bG%G_sP@e %2ifo3\TR<:>-#Bas3A?-\8JM*?@Mk2hUD9!mEM9;J%FDsBt0/qn7aq%iqQ+Wo[eOt41l;U\%MA)_N!Y=[uU@/r?pR`h#-`kju9ud %dc81/iPQJ$bBMt.X'4iW]uJdC_Y8g!TA&)Xn_\D')tUPpNt2G1^V4'7J#qL13U1MUrGW61gq7:'S8>:Ghn<1k[Jg&n\bWXci:5[R %Q[S&&"1S6gh+oP*[>""s5?b46qu-)VNuRPSDtb'.DQ_fa5Mi1@+#`kAe%LTirS+I.@boA6H$]3goi?.Am@GCk%sBkoQYVZM>^qkA^_]!qP+\uk8Ggtposbkindf,![rY&8W.o>_od@e#5Gq%d#!Rh,5,I2);12t(V=d=9ttZi3@m %f5@_j+tj=J_FK(>^("u:]=35>>e>K1=5WW3m[^3Q?[qj=1KcQe^[KijU0mGUIAg]?efq:[X2q(lU,0do)-,>e!7$ho!?*jhX=_>cg:\Arq;]U-cHY=WZ>6>5CXZe/8['4*p+-Edp5%[ %[D'uWoWPB(^No:jdMnSt]QnCDIFm90?B*i+hH94=5.lno5CIUF1R'5gT(S:kj4;K*DYE\s:l]_34RW#)ai*1=F7W$`n"*e==DODV %i,Nels4;mr-1ABWpU\O@>D$iq[N5rS-AQVX-;3Bj:]/u(2^mGOkLa\\Xd/Er3dI,N2m-FL^0^\E?iIRL(YlR+f'N'I"jQ4SQ\pO= %E"mr0q-[e.Z/KH0;uL8048$_4g7r"\?1u!+B_q#'UF.S!]=a"j8raBV2Q6,_2#IRUIAT:mSh`VLR?[;9_fW1k2mAia+-bm0]eX;m[*T?hOGF,eoeRu;7hmUbMQ#YjLg;1r+5EFS#0/ke4 %YCH.ph=,&pVs1ZiZ8_JYSULG7j2aqnHMWB26m$O&Df%B"qGDY1`c(4Qhqbqhf1,](b,\aiSQ`)e@NSnQ#$&+_Sih:#h70e_>j#JA %Qbsa_WP8%IH%*1"3*\S;:LBR(T3nci=24QK4hUdMcSb.jA5Yf1OObghW<5*#APYkPuk*CWG]5A](Ro7rUG+Q[U^-nn-:MiDLP#ZdP1=#OAPbPWL67Nk<1m %U[ka*K0$G>kN7[G]K=]h@SC[#^>f-*CMLb"q:Dm4lF[Q"?"q9:bj)n#Wb#b#`6+=HZ;e4#H#\)M,*flYE#e]-M[jm/%;2g[%_83[ %N+;DGHd`HiG-0DcT=,.g+YmMNM@ZqN05YI,5NBLhpkt_)]=i1A&+EpN^%\gtcH==__^AclHu_>m@B=9^5Nuu8)tS&erk\Mb>sB[X %2-Z5<:0u0%g"7<]h,mtjSptg&IJ`ELr$nar,QYA*T8KPTq[.<;&$SNlCb?iMEI*dAom&B3XBik8@rR4*,4"Qo(4.NE55e>$Z#JA9kfC,2)edc$Y %?S/^X^[kq+qJS6R\"iHIG@rEnVlE()o4;KH\3eS#dBMN24PO!8p!%BVorDA'3]NQmo^_AYj2^6;0@%8dn"OgPTmWYFm&TjWiN)lK %esCeZRYAFPfE:QD*EKB$QOg`bmeu,K[:eCK52=qm/[k*']rc?53_gp2a@F#3(H.#*YWp1NF7B)NLYmS<\cUp.VQ>&KS>Ct1VGpg6 %-gQ/i!M2MlHd-"Js,TePV1rS(Rnme56i/f$IbDE$XZb>!re!Q:BCMZ06ln:$C%US%?i6UYI[IF%l]'M[s %Wji-d3OjOPF7nR-qoWdRr;O^$NV1T=0B%;%Pj7Vm\b4e<]@8\r+0WD'^?ka&F7b)7pa8/p.kc?r[CrhgI6[bLE3XVj#4CNnhXb.H %aklPa7io-"KKjqXo2>JTdl4aShKuK=S$/pf$[r9rSudBgHIIfGcOYbWp,4HR5HfMEms[(j6X^6+DXS[T"'d$7@'kD'>!'C:2s&e\ %rFM+UIOK-jj+S:.mr-g-b'&)W>[qq9,m#Q):4H+DZ;QX>6+E=Or1GH[Qj9ekgVLm*bE6_f_eO0PNuKe8k-ObNpY`Cn@u?^Zq$HBd[%*3?pW^Yfc(BL%GkSOb&(^16$2We%JnmPT4aM:thdRg^`t._*Z]jTC5L_@`lSib7K@5`:>^':Bp:DiiV9?@*r75%4Gdqt- %I/E;#q,MHEMsd2(c->k"^2n)1530=KGIQ-3Y'E0Yd.$Z$j3h-&pt7"5$%$5>^4NY0mE*r.Dhjs/g[36;J'm*PDLFJ-]O*bQ>!&+@ %?bb->HEr\bYIn(X4E"RK':73(GrYiO+/ml%Y.sbLp<(tK1:CUlSS\4pCWjD+G-^]:jl60lXe4&E5N?["pj"rH++LZl %DEllY?96BUACn10k/Gqol&4th;_,,qmJ[!sh^5E%=Bu^qQ]l2dlW;TQI^0aEd,6fg2s&7JH5qp$_$eZ+BD*mk+N`4=YVLbL3Mnhn@ar]lNe2n))B^epm[Ad%ChgE]bEPf(W3` %>aq4trUa^oDImVLl8KrGjo2%7[@:p-dUf[4LN*7aVc+AP_^c\6Q1nTQ>^l=rT4;ZG[Z\L>.':bns5q&%/X9mMp_WEA6q&k)%L+22 %MHNp&TGWsq,i!J8Qi#OpWh.]rbR?j@qn17#cJ$]&e(%`0\Z<;+$^HX%XId,)_GftD-$YsM9),>'Dk2go#;,Y'!kNGl %oMU/6<`AX^"cOu:;Z?I_c'#i1&FM]pM\N(X],-pO9cj!,P[Du>YAu#\&Q'KCKC*F4lXuK96QPe#X,gJ1Rn'=A?2%(cJe]ktaWj/3u0p);L=_Xd;a;(OB?S(ZR^EO?^kNaB'\@Fgk=dgc]m&cR=>1sj-4#K39HYRWBoba:H;Ii,E^prWp-^=3lOc-t\\9>\XpKu9Y4t-'[Nt\n`jN"6Qlj]$%Qgi8Xq^pJ)^pW1E %mIT%;/Q02^J6kF[eB=UVoc@-u^J7H7Z:BapZBRR)B9(lY.B:WaWEqFo:J"pu#n_,&nm>q6EN?-(?g:j7dXICO.34#mjf2Oa6)^5gLl&A_jAB3qf3W6Kqe:Hc]q8/St>N0`Q$GVV>[d1>5V-5:^YpL1!9@F4h?B5rh/uP*M$&T2_e61.'J]9M"S\>R,!$Y %L.3NLo?SP*?/6@l]1$.5"A]7bD9=4RYC+A)OJ&#a=7OV/PC.ZEj`FJYO2\-/%D&J))\p*@ho%@ON&LCH#3>_;=Q>UbCW"DKe]la_ %g'c>7Wc4DO":b2)c-kTrIlq36DJRu:IaI6Z#0QPVk0ZP/>^^qV^6-E[F#3cL-Dd8NOV7]8k8GBcbi^Q+L[/(e]4je %ect6r+nZ&?0hfZX&'8nJ%n\n7Koc9'?k>T(P&Z-"f6+>I[c4AseX6#!4qqlF^)8:17aWK?i>A)8Cf& %[otc5pGWV:NsfK&nen`%0YJ^pu97bgsDjjhWa9>;2eS_+NIeHbAWWPe=U*LkucMVf.:](bUp0UDT1m$Bfch)!ut>eS^7lou("BsNd)k0:lmj+KK:^sggkBlI85"k.*#7.e<6OUT?fNcM&&&^o.:e3&#u!iIqTeHd)r %^\RLQ4><.\RbpaIA4(c'O"$WZ*m85NUMRI?K8D>iXGIW%TV;*PSJ31]<*G_+e1>-C&4;D4D+E5h50Xl$/u\F>PmYAN#a4;>n2apl_p5.6KjLHW[0EQ%_T*!fq5sO+;?#7\@*A:_pDiu* %k?n%dd2C#`P8E/lO):8gbnR9Z2en>dQ&_(8DlB"c[/]YC?)1[`>U>mmB&A)Eg?\%YeH!Tm`u<\V>P\W_7Y+p0MlcdE4-Z`#)KrHk0U+S\\Ml-^O"ZWA[p %rE=tQBJOf^R;ruKYait[P>ltD;ecIq/9j(9Bp]WuIY7<$7XEFaV('4khJfYUoTSjPaD+'h:s'1W!JVmN[JSZT^`QjS.S9dR(P?nG %DjD+6%f(M-5tq$%7VB5+4sad[(ZsC)]%dkq3!_P>!g^[."f3t5hen5/ZXc2,K %.sf=t$K)G]BXmW*p[6AMYl-f-K'aZVm`6+g`Kg-.Rk7jc3$9WU!mn/Ept+BU5J?SZ+38@((oXK4!WfEGpP.:pIFnOrPQ*9mGGgn[6#dB$&SAXmg3t?2tVbE*iYe&5Tr;\R2@+%X%Uq`*?!,-9qFX\l4;6^r$5"'@8!X98gSk:KJg!Co0^YK?G/a9U%Gp=l %!;.8+AQ8P&=Z]^dqTO>J0aM=3o]$>'JhLfeCnm0X)`fJL`7hU1=Cu5/$^$k(/ZpsCadi,O-[.4* %=XKV#9I=u@7m-di$/;AI]_UL8r/3\iicd%F`U^'5qlHulmBk'?9Ija>jcV]3FD]LrYhObdfTh,!V]_eiqSNk($WW%(OHEjNHiLBda %VZ([81-lpr@jD^sip-pe57C/f[C^D:pu.rMh6%$5N9N6TK)mq/%]=eO45glT/\kVS2mK/=Tn@=T3E$9_pXSSK1AA>Oi>X9EZ."a> %6[nuu!7cl&[(hOO<_2%:\N;4"/'5]KXq5,Xm$[$GF;Vk-^h\MiE\9%Hg^RKhIcYc\Ilg)%/'!t4G %Hc%(C]%VgjnctAlrffb^k=`=&K=giZ!7Ocaa]pF1@BBor9W<$lel)g&f"RNg(?^i$>n%&<.%^)PG8paNNjl`?`7\H,EBEt,=@ %8o&4/2b,(N8sd'qXW+-@P`B$^\m#'-XT.co-Z22;lK`NI!L,js_/=3YX5XQ&_662(tWKK*R+DFpE=m8VA:'^XDo(D6CdaI^//A[(a`^YW(u8 %Km5,Yp!l11JUAJm08fSWg0(Z:haeFr,T%'!OQt[P[(o*T=N6i[6!*#HtG%X?%LR)j!.?mdI(6\rXi>NqLWBIG'q2a/lPYa)iHWbnmtH)>Rc&RBsjepiJGkLuor$M6#,poo:c]%Fj]59EN%&"pCO %k'XKsF9d,R^,pT(VFGGg@9q/#GIK]tH?<6G07!XN0pg:'`>rW%D1)?6Gu4iDcnCEi?8gH--dZHW>PmsmHGEeZq7IZn:^"T%`\/F: %SdMV+^=qs"4Fo[[(.M@H5jnj4MZn %eAG?X9S3!W+K\2h8/mO<^<>"$)T^hgPS4S^E3L?cG0bY.<2f!"8u14(/U+7?t?og0S`.B!R!oQZ+:rhAh\Ve?ULLN8b(0K %K^[Kf.KI^(-ZnWZ:F/8G?"0(`"2Wq_of/rP]cV+ZgI5O,\Q.P?8"eO,S_@W'Eb",?!3M85TE'[r*IR4n[CP^CSn;e(`Hnj-g"7W: %q;#YX@@QN8m830)&l$8;$@R&,om1_k(IA;G3Noo!fn79f2CKQ4(.NBn? %Qgq&5=R5lUEcmqlVbWsPY,oD4V4X^)]01qI56L`V^+O^o*K:akG9a^ah:i4uO0:%2)TH$RO1#Plp=G&e:Ciii7PZEQ4e>9,8,:q" %C-ACJ#1!fd:H%=X[-Q>dd1%%UmG?^[e't1S#H9An?o?@fPSFtBlZ(pdF?M_"/\:<>G5;?teQ`'S7>EcYS0_Y9gBuiZ.YM7[ac>#tS\j,Rg+&th3a'JG;YKZrl %oZuBo#K@rhV_=CAnBnDne%oGTnW_@l`a\^"1\m7cmN%o8^[Z#]Ot-cka7!I35$GCdkPF`9537?hR)u?#ofkkDB`;-`SN$_>e<%?` %C."#8'*h`X3)r/S$E#KucGQX%Q]#hL2Eo-q:=-l]?h<2Q,lX8[F`TXX:Dh?%T"qZTB+L9".(Fl\A!H.2&<8QmoedEeM^Hu=q)'%`"Glq?S^+g+jTa6WcYl6e98o&,=GJ&I7I=Tn9 %9q+:XT.@/q4Fs5$dI]bDaoO=5Z-@E0_m-4X$L@otT)>E<`6n?+d!NfK>mKhF]X`@$'+WCL@/Td;Tqhk;fnp.$SiA#Q?8b\9.P([O %Q-b9?,D\'.CN=gip^D+hR*u#fAbIZf?&u)oWAC$gT0(^+&Jr,4l(_pa'k*c)]j*eqEo@R(#el[Sn!53nc^G._i>0'67:86eAN!E` %;oP)J>P&6??7o<9;#c&VZn1?<4_A<>I'W9X]V83RN%)T)R=-e&+o`Z>fUN+lX:Jo>:?FTbSO/teEJ"9N:Z1C?#-,ZLCIfA`g]fWX %)jE4Um)RglMYs7.;iA1G_LWWJ)dk$h7lpJ/N-=>hk-rMT1d'rV(aCg^s0SuQSh!@_O5IX`31RF+WC*4_1nP!7BD9BP)/^buOVN9B %C?Iea*i6iQ+j6dib:1@N$:=.`=j1[RpNe1/ZKR17$_aXCgKorlB?.XmhQn!SFU9igju^H\Oob66)mVa(d%[G'qJhCab$CuB"#+BV %,'pUeYLdMO<7o@lY\&'p]-FP'Yb<"I0"@t;*KTPl3ADR!gJdmn/KHa?^g.+lhuaLpmD5'-c`-I#>6g/@Ve0ZuD/si9do!fPnW;?f %Qu;f+l'Ra8`@RI-MJnSZ\Vnj9Wc(rP5peE;@4HK_N(q0VChTSbVL+KZYhSI81?E7p^D:!0)OgsdYFDd90.hTe&l"7XjJ5RaV9Ef' %c6g+X\B]nik;lkoa`m.&`c"\foAdE*Q/[4Q[7jRug->F;Bq#g#AC9@;4dRr=Tb\@BdA7rl7([DYHhEKnln&%j9C>K6C\-.Nmru9K %Y'?`0]2(1^N4E&!Y"N5KI(<%LmoU4t\iK8F[6[5W%FJ)(pQ?j2P[8?)fs9;J:gXrD^dX>#,gE%tj>(rK2g*b>'(@]'?%@ %XmlNJklBT;Rb*Yl(=.^Z5uu@aUdLUqlG%e69R`s81[0LphnW2k]KsYtFS6>a1r!Pc\B#/`d?uZ4cSS4K[X\a4fiX9_e>FiAJ(Ct+sPdUJBad!k57NAq3XhLI\ %$1@L)\?SI;o]8:4%N7h+QqM>\&.1&f&n%-)\p06dKHb;$R3i)h%)cjac@qHrCiAnROiBG0gf6cXY9/JOHua(&d["ES`aPGsaYrl2 %*SQO=8$`6c#\r_"K3RrS@GJeV#D7OG[d$)QcjYPq?NAI$&mkUE[j1tSo@oY_htNYumcNbB!0i89&#qa4fF$*e)3^B!*p_kSL[XT8 %LoT%k4!Xon$g6[IGkpEMp6\p)[2"oi6P4fYc,AV5D@cMOJ1P[@AG,1.T6<[;%*i>,IfQ[!H?OKg*4%ZFj\4h]dFQ9&iO(a+5#*dDth4_;M:O;9Al-=V[f5Lc8SP:QL`Msb8eoC %I^^3RK2)\$fq$P%-C!@,!hb$.[%5G_Rh%7&JqZZfa]*C([OblXSkTaKD-;3Zkp[ZHg@I72ssrZYU3D18Ct]/fo`PG/c'_P=pGPr&BL+p8(cpC=?-g-t#8_7rm2.O?IU3cb^YmHF\*VfkW?gQ@9k[Zg0b12X]qU^-alD&pbX*BZhI)gH1]lQb;7sO1TSt9fE+*nfrY9I$"3l=j68ka[LV,1'[sM?LCsaq %31"S0Fj60Gi1G(5IHg2k#MP>rjn'7mla?HoS^!T$5dBWj<-K33:OF2c"]Gno_'I7SIU!>mR77jI/0tION5jTb %[-bM%mDk];r(V4pD?B'=`i,M2X;Ye;V8k4Tg@/icqq`ID]3e2IcL(.qO#9@W=h;taPUTUakbn>?DhJ\e%fW;\!)(ZI>:!\KkMG8CuIb\rc,J3dJk?_sj0\N9ap=2(fgt %%HGrNpC3[I.2HJk9,D7M3X`lf!A%O?8t6Ysn[:79/U$jRW`hqp+j4p:Y^;"nNTSk2nA&.fGd>rHJ:/_8o'Q&dXPTA#M,DE+I?JLXMBF\- %b+J8EP[bYS(?RrCXN,iBK0`-;GCaBg@chK4`Y2q/YqiHo:+PR!cO.6[A2uMhk!30%kidnt7;D&a/*K5C0;XEK^Ojb+>&`UB\tj6J %SQRPS?k&Y3:q_J+ZMG?;U%>I\Z`40FX.f+f8h0$eWs*.;U%>I\dkXl=YG(Q;%kE@#;+'MS>Xnsg*edh.L5tDnaU1)GPuDG]lj:ej %AT)umCYL?EhRaCKs#^+>>U$j/)hVj]gH1s.J9iXp`+3E7bT"Ygfa*`Q)CX#AGWM6=QeZqKmj'q?djuo=S5hJU>#B^#4V=n8//\F` %p,tU3c;MiR+8RYiQ#je)Q^PiHJW]BQbR$6Sf?2,_@5+;sH'HN5._2FpNe>HB[(?Xu2bM(.$G"YF/Qmb:f+pTcZ'bVaM))`UMdL.P]dScqMR&E1YlYbs0*J %cag?5<^)-SmI#<0BppLIbT?PE#8;qhURY6g:"WslCtZ;oe,i*le\0t.e*?$7?+>%8&3+QmNu+nkcP5dgmB-\:@R="`]nt+=O0e"aMK-Vd %lGf'P>GcR`rTNXV=R3%iepH=cU/Z%('q3nqnb.7@9AHE75!ap!5!PdZH]-9;p7B?uc;g6d%R8.555iQd28@eRh2^RaLRjC[Nng+) %'l0Ii.OEs_IqB!k\@YAe=e.@&/\EU.4ACc;m4fH@Z`#ask,*nsG!Ck$/;tqr;Uggp1cM#]_E/5?YiifKPJFQJ3<(.)rX5$ubnQ<1 %)%o0'(A"T2Ris!9PFWbf.*cHrcEfTUg&7Thrl_LGr@'p9OGM+5Ha()+QJ-f7L^\EHMjN2f]t\MS`pi_2Em_k,[_*e>,eG:G);:Sm %)1/caqR]RUYYg-5&Wq(88=`eR2fhB!1Tnl_o;WLrSfg@Wlb!b-Z>m'^>Pb2]!T^Ye,?59.@f@6J %PbKCDnOuV[<^#6F3<+$aiFY3%CsI@:M(Ek'q1/q(_bo)`<(5TJlf%2M(o&9mg%B=` %VZ\QO*\QMW&a,Eo3EJB!KJ2JmXb3mCKf8.rHEjLMX97WRP!atVfTngD+t'ZAk2ZF&ioTh]KE>aP#3a)eema1N?L5_k4O6,.S."Ro %rf'p(1`dT]'05R2-!JbV+Qcj&@,>JTcA!rUH!%pAPmna-kT9--Kigr9eFCV9.P/euQ+P3gS22V74P?rZf:'1=e?['phb.@pH^&))% %74Po!/u'Vu]m?%Q+Rc1.Ud@;(b>#*F/C:@?;b,m850Zod)Z1H9M3-:V?6:#uKDn-a.>OMP-]=0'Y``!1dl6`jq8=mDa,@p%DB,kod`GS2XF=ie]!2eX^2dEt2S^?=G>7"DL %ZZOsm.X&GtXKWY&T/KjLm[L!(NCb+9!0u-djg4`q=0^ME$G/Lj2HRTED=+4b#rK6Fah2oL@`@^LG)g%@'9T&?g.T59;0g'jlIB&( %L0%W/Gu`K'EM!TMeS72+$'_D1CnGqPQ.@.r;>J>G_X>gTfPOpb#$O)o]5[hIn)K)PZ?uNZK:K/(B_hcMc7W>=Y-0U*.I`\>?T'<">AT1ps]'a)S-!,+!c3 %h9i2^=5JQZ:!"alOQSnb<-LZ?jR]AMe85nsq#`SDTpPe<' %1Gh@.eT>]:F=ua;/Qba1 %elD2jkb-IJF(s^'X6JF5Bf',+b\B2JfY?P:0<:PeXd1S1DU3.LFDe@,ik6tPRa/V7FkP;eDT7[(41_e63k&9Rf@/juWhsjgf^O7HQEY2W^[FKs/$CcaaBpP0\EuS]C,<62$(H\E;)MOt0WX?19Yd4nFm%Msf`"OFGI1oNPpT %bEN'7F#PD>\3K/!5Ah(PBc#SWI*E[o0JhhlH^&b$f0&49oUMu]_:%U"FuN2!'u*L>;1bca`YP`=koU&N`A$N)I?t0Hl%7^"j%H!L %QLjG`JIbdP(G,;>'U_j-kafX(]Y742oo;u^"8]gJ#_o)7J2_;8Hr&<,SUC;b\r!be]_6]V>V.c#KaLd;eG8[@U!B!m%Aq4gU&g(9k$o4GgqaYh"7kZ,SdW)a"%&3r#\)fNDoF]7oF>d1)Xd %JMP+lh;sL95M^u3.fJg_ouj$5CG"tuTS>AV9:ELVER,Wik3StWqb;?/]>=!B\&93o073\P$itX'p_iju>5uacXi-sr6tu4Vijj65 %8O%:GF&(S%2/u%S]X)Y8P;qSk4:VQ%:rj2qLDOg2`'bb9oQNo=9$dkA&oP3(SqYK2GK[PUDQ\>eB>3?M]CKqJ=*0ihgb!tR?4cf: %E`:gmlB6P`\=7&1hFDqAF\)W!6fu&?cMP?-e78u'q@.X7:Gp0S7F11/$FSk0a5@[S*rP-?\sK.1DMXT7c:PqnBtMpcWJ*g6ZV<=ba:oa1^m$FoRpXTb%.EBg(_UmC\\j& %a/;lH8\c;0hE=YLn3428b8r0FVRT'GO/@N3`*i=B"K?AmAY_T!eNmqTSbX5@2Aa$o(0pdK8%^+n:jLNiSu55gQL>]0NiH_VojAY* %9XaebG(XFlR<;/T_(H\S9(X`Zj];2Sg:@PYau>SO^/1.Kp.NBKF/`-_*afoLH/DF\OY?V$o]VIu*k#\\ldi`jDEE4bMYLFuGIi&d %PEN$h0"LY&lrA]d^*b,Zi>sS7m0-_N[=?*El:]\A-r[f-SpCC%ej9sQQ'eoOn&YfJ/Zho9SbK@*-ANpE?E<.]&1h)$2mth`s&NX$ %V.kSP'C/qW#>hk<^7BJn=`\_t?-f&*X^C2I2cX`dlnNkS?gm!k'Bho\qu5RY[-J#T'H&AjVq7M]AL^3Z2%Q?Ph0+(;'BlD!<7Ap( %KJiE'OM>m0hjdesp\2,ohm;Sumi$b'']LLoHb,Y^81mB0_78%cf>QK@^2`/FS$qo]RnQ_Xb?;F6CW_`D8CPj; %JWW,pQBp>#3p?pNm_%SuZONlqo"Ht+YDm0M2qBUa1;/OhlW1%SY\!"11Zb;ce+TV.h5bg=>gQb=YM`H8\A&&>3"3$0rD6Y6/e:YC %DXmMS6Y5dtTQ/4>\#b4SCV<8LRE?PP/E7R\X8r`50/h?r_9T^"["?6:*(_@qY32mTD6Gkqk8[IicO^g%YO_`Vk>gGEtYJt<\?G%j.CE&G=r[#/)ofVC[J2L(4 %Bd->eJPnbF]_=&?Zn*Nl;SX^tnH;rYUWt'pF.$@E1UATEc&[e>&)LGIkd\k%>+a*;?N*"o`hqV]'7>tgZCln*k.Kbf+cH`!SP>=V %HWZ&V?fnKm$sE`Mll6Ya/crVUT&+7U._q]7J>"u@f^buUo;MaI:H4lF$8?-&?mri8LD>>tV.eI_.2#'J]0<#Y+IX5AMA6^d]F/R$9(['QHlE3Glo2:o^Bfs5J.n+E.n:MGB,rG675EN@t:B1'5dlfT?)Eq@64 %\_#00*7=LsW4D?hRmtNC\_#.j+Ck`]bo0se?9c1s/iGI2VA/f35Q?,.:h5<2Y0Xe1r_p/Z?b*tcIb$cMEbr>)r)D[A;i1Z%H\f1W0Z %SGW)YD5`,RFK_G-tEXp2rp\O](78al"$f1.3go%EH&9b4Hs'@qiKPRn.#>Q*c, %XqnS"cQ@`!9`$-klfY[Qg9#fs\W:[omVoE-p_H$3_n;%Kn[\st>Q&06k*Wg5caW=N9"++,p\O^ClK9.8T`FfF(PqXh!=,j&_%74Mr*d_D\s[_A_cSf5U.r@?9`b!P<1[GHYi\. %rVZ8<2(c93]mbMd[d^tZm,+-U_5tIDo;$*T@_/?k4Wn"h;A%1uJ31Z$MB)%+lDS4I9%L1^m&5KkI::'3+jp$Nk\AQ>He"d9n"pTSB%@V!P][^m<*d/#daNE'u+HF?RF=a@4_/brnUsg,!Wl.K>I!<8N:]s3t-2Lj0.OpZ]Jh"b\iH? %?=EU"O1,n,WEIr1`l"r!h;%4667>aB.fNc:Z_KoKW=#24Z,5&_cuupkIr/L3($a5r;,S-QG,sp) %fh:RYJ#uIXaq\.&MFQ'>(ES+AMW+P,/6P_:`mn1>Di_"_Ci5S'g0#3ejgb1dH2d_ARI'TZRX;-NUmPuq2iTkI*A\nfpbaJDS_ba/ %gK`!bbo/sXY=4:(`+2:[:4<8aniccYR3Y"JREpl=Eo_kl1S8H:\AYOcNM4g>Bjg^5`Q%"[oc38,gpQ\aq0-.qu]nrNhp. %];A\45Dr_YM;/OGdPV!2:C:(b)M@j#;k?M^7:?\",Gi%%Z!\jdA>Mq'&#VdYfMP4>T %3&7@8O(*_&0:pRIk6f`!)WeV$J&tL]Vq'87&Y@X@&)Z^$Um+H5H5*YEfoPGr7LN1EUc+FTm,6L).f4,O)A(!;JOYpe5PUmC;RoYb %jlABIL,?'Xm3J[>p?Gs+g.I$7@`YO@`NRga.[taG];Cg&Ou`?D?@)H!]K"u5k.Mh!bEd]3'pdd?XYjSqXP;JaI!q5'ig?j]$&Gi2 %Pg945D2"[#7Fc7=VhPQ0b&SCaC+1\_+!+4crpe,po/)M]IM5#V_h\CsM7'$9N2Y'G(m;\6Ib3@Y$ju)kJijfEj %&Wn^deIP5>_o6/q6Mu1X@IUYEf&b^$bf3T^A*kHGZf-I"A97c>CWN@JU)Lcm-Lui?Mgr9j2N=>hH;;_Xb6+:c@tS,H`*S^,n"ag. %<*4hbcUR^+V60/llQT*8coXdH<#co(9C'2)4e>?Md,nePMmk5`d^H`UgT>1Eb[@?8TM8WE*Pb:HC7[)(RH^l3=[r_Kf-c9@C%^k@ %`$gP4YV%XD#\@$([aP)neh%9j>Y_Q3LQ(@kO>_&j/i-\crU>r)DsrDbcT[@?P1$.;<1Di)pNC;`qH7+3cKRSEA/-2nlt7)%bmD'2 %nlL[VEA5?Ad'S&m6QUn)GgA5;SPXC!=eVH85h9Kd[S58V0YH3qXAs;i\%8Gtk,Wbq)fOed:*!i`pjm-)f'bDqJ"";>7'dNffL^#P %ena`\fId'qkX8Bj7u_+G';3>g.V),` %:dAY'CORB,b0.ht3YJqW)itQ8(1CR*HeF:2JjHYa9B;J#KNMmcm*:4noIY@[nP;()YeEBD\qJh=_A'fJXIi@Q?VEmOU %Tu`tW?p%MCk"$uaI1/kMOpn(Q<[/Q:iuMWKA9MN#?&^Dq %L.['&^s`S+)fB/i:'Ag^$h?cQ&#,3P_TlR=WHBr:M7fquDBU#c1btDdNX>_?Gk%[q#+bMe0Yq<9U^3!HQ;]W&LE>HB!+YMbQ5j]? %C"FgSDu#[V'^!MWF%')kAX@>nUZKVN>l'W:i/!QEEI_faoN@C=#i[T2,9]):*Q$;<"7eH9s+q(6GrA.(&_3\,Yj %h@bO+kLW3!?nZnF6.'/P\9Xh9]fm_lFnjrti1B_=ZXb\2b&U9ZYIX!ild$1?SDLfO"7B4H3-r%_gX:E,Hfs`3"#PlI60N^u!cq95 %rH0p:5+a_ngsdOQ`N4XbMiF<,? %F,RB_rk<`TKnSno'(R7:7OkiM4M*^2_`NNl:'h(JQ"94l%S3CSS-`>Z"/oh"fl+XG8bNDDC$_hco3$K7$[QL0W4uEnb,6OPVAoAY %koi\DSTY"#7p&R7eK!fCC&oe7(9d+RfV]nmM:Q`[;Sah!?bbIZ2\OkIS:/`DLAh[t0hA6dnCLimEXbf7#Q>`b&ao090C%XhUKB%W %bAHb(@sqJB$fu/h9uX8VD!Es<2#SloKrt6KSMgue4MA&P830^LkWhqZiA^skgMgk(E/`\qkPKY %P*iZ_Z:aKThKk*]=RS(\K@U/cE!^s2iSJl>S*/HUJDen*o,^]#o9otc\-_DVrS8baB5;fULIC8/>+5KZ@\9P]eE;--XD7#O`0L+ng-S^.3LB_k1ni+Y[NK;[!OL9'G %AF1?6jL7PhJ8%,k8Bu;+,=aqZ&$I@@qc< %GZaYnq"nm0rsb3!]8?+u:T$_ZTWUL4PIXGdO*Xn/QJ:DU^?.B6a"e]r-Q$QmAG4oi9_WTAoU\`5NICNToja5PYB!B>C\IRVBY)#u %=PQL'k2NiY%iF%)74=HOn8_E;lhPWg-dk^)Cl4#.*?a1I\sC#1F=pD?:WC-%VpZs7*^o^9b\-@?ko3&nhOpQ5A7OcIA_`:nL0Qm\ %f%B:,Lk;i1(NA-$0B<``.-->NIt`Yc?4:uCb1 %Rtr>:i*N=tPpEu:G^VZ(T;@M:@5Vi[KV:.tJ/5omX:rX7Wg0GhgK#VE5a^Z"&4JX^F7NB!"`9I<3-2A#5DP %&BLQ$Yn(&2;3*-H[CluX+osL5,:P6bmXFqD$kLWcnrqsJL>h;ehWk!#jS2)HQ!c%,p;FR3,'P`):*DW1)PL_N.Or^*YoU#jCJ6>Y/@F?/+4hCt5K+*Y+]mH1to:4SX^@K)Lm:.(0*FDFEVdVXA=3E;>J2';3l %PkSL-_P[(]\n2Ct]&5,cio4=+CH=Vdg&dPl606gBNjVOjSVTAPXA8J[CBdLN]Y-/V\Rfp3m6#>JFcV/tla1rtY8;b3TeH!"=^"Jl %^][=*H#7*kI,6Wu?Omq.Fbi7mdb*^j:Ha"0o8d)Kb1#<2H*oJ82i&^k^B\jJ6"JIk:n/m27pm?"aBh*+E07oeDQsi %^5]bN"k#>UMn__OHFnY5V-oIRFS26F,Cg.*'`pAQ]]P#Ygo;)jD>ae"L,\qB%Za4nY\8h.1_aqj\Q[e]OC %Wt)_sMsgV*b.[!.GP>aWZFQ,MSHPZjC.)k@G[2ETDEY,gEGg=h6VKPppQ`q(N'`*2q?+CI!3I#1h%c"cCW0o3_/fW %"*E,4BHnMS4q]O]kn;gX1s6(#*T;Y,E4Wj"KN!ZXol/o7D*U/ajQ;%'/ue@JV.HZfNs9TooS@;iBe`!uXg];3 %ra\5p[IcLS'V!qjnRhI/rcAgbp.*/U8lR!!2e,ChFcCFLZtm>_@$m(m?[Gae+t^N\kt-YrUeH;Ml:Hbse5@rdXsY5nOsC_m?V`_i %Upi[KqC"0b($X;A*\%QOUVD!Ee;^0C'"+L4DT#GrV.iFqh$A(ie;jM7fR;4s;hBlEPa3G*:mu4\?i0WEXsRp^^\qYd0k8?\4l2:V %cr6o#?%)LC:\VAgd$#YF2Q:SIK4lHSek")FSnEIOC$QqHp*8;PopD'BfH#F<8/t;>.I:eMf3i!(@cm_k`^,@1jS]^$W,@C?!WA`E*JbcF^A]KMAF`T\c&`K[9C?4OeP)fIQ_-hWa4@uCE0me,DN4k/D>k9[I0bXk_/r>6sF<]ZQ\*lj5 %A1H?S=pLEe`XP]k],9;6W,L1".S1i %ABm3@0-!8bE]DqXaddT`M1NW-#9edF_7F=Q(SO:'I<##I3Jq3SGT?L&@&9!3G0q0[`_s5=Z,r8PY/\Rh56+EA$NSF(*&N*7keS$# %;0gS1>11i?)Lff5\W^?EqA;%glA:%01]U957>qBGI69F^;:9,f]CGr1tLs: %,^Lh"kR:-'o-'58^M1=c7\qJlI?#+JNRf>nXr>=80]CbTB/[ke>0PYgGHf_7[,-S^oQ5?XBme2lf\2HhAf!\l"fF'\]5\&M0>XP@ %?Cc-GVO`+@[Pj+0\`'+076#VhISPrte+(uiPXbAa7&Tpoa;@`WG2=#\Wm9dH;/+_Z),1ig^3ZaL4/VB*R97,*H^LSaV#:Ko/O7-o %7sTejN-)F^o&SNjhfkN5*o1Oe>)n-g@9mM+9t:c:Y[n/V53$-Tg.NepABfgV@9>KRLY3+ID.KsKqe3q-+J&=RMHYo/KZ %Weg[I%5G#DXbunWe.@gsBY')rYLF,Q(c/1JVpu=tGK.3/qg+P=LEaq*EE_J.(/\'2EoetqmJ2*o_\uU"JlE5T[q/"NLsrP_`H>!s %K>UH13Z27R-B6)HnbQ[m"iEQ*:H$F)ps=h(B;-[O5`b#a6HJnG$.H]g8XLh3jgIA#1-PS:>om5=kP=5e!OL9seD*dat@g95@9)R4s^QM`gRkUn+j.p)5gq'SP;Hg,%+H->AI8a\OJ%6-[ %'lG$T5jLl]OCgW**brD.VK@THV%5=Y[FXKJdtZGMGBr"--0d0[e5].7]FV=>4V4D"tR;>K6to[3PM&,o_b %`2;k<7WYcGZFQ^CqZuY.Xi+U(bTjb0O5dZNo`udi"IOlS]5milp]LL=]3RC$k_NB`igptSIDP71=8TVAp[ci3?g[U`W&OLlpq7D_ %+,g]JR+1dnn7*R>p]F7j=V4[E=)RJpPnsRQ(*[\0KVXl8I-(2S1a`64&I"$C*^RGh;?FS;\Xb\8(*S,Kmb13]rWC=W/,]$gM.&gZd(s^b-lM6QHBeK+ %WmV_@4"Z;Q?\+9L!Qt3X%4_C5Cd,FHM(hj3(jkI`Aa6a[5XPuaiY5.0iio.15D%rHJoSkUPP'uYGYTgrZTg&G&Eth"Rd>k1XKDOD::sMY;2TWHI>\@5!NW=2R'$V2`Ufp+lgKG'5P:mcP.JbfjQ+^2HV:ur,/0jlj-8qn!ZU@UA&,>OP+?i`ZX_3"f11GUThenY`\23*6Q %PCQsX0&7[g>kNCo/HY[iZ6I?:&f?#o]WK,0`POEu3G6$&)rIL9N2DYY@,R_Ue1;fJO,2VT::j\#Q8-2gdg/N=SMZG<)%7e9a$=)c %"0!uTOi75L7M8)PB/V83jjD0-=G>@D"HfIJ)HIO(-_R#!di<=FZ9EXF[+'i?Ymj&6,*%4NN>>daF4WnXEt929f60'q$K4SG#$<>h %er1p_CM;(N,1"XrEbi!FSJc@s5\Lk"rDAOg@-W+5_@11lX/o'!!Nn<`5nT9dB7e-sLQ>:r.J9Gu:5=R#JgQVG8K0 %;1K9ie\2GED>L0=-DQ&%R=[hd?t/K!i!\X%DbX_'BT1S*\=0A8h)]BQ06eh'-6UKotVdN4ID3"?e(_"+THH9G+._\3u0TI9qoTWOf]B2I+Ug-8qgB=n&+f.<^YP %D&,m.5UN^%dC-`.B$AU7haE.@jP;C9,>@*+(B$ZoieC7+H*^>:fa%qPI&M*i6,q--id4F,'][>Cm3$[_0J0[4$&46K!t`5SP.hA3c:\Njd?0%1n$3!m?ur=o8aM3kYRe%`bW_3@3+J %!)]g74_doK`AE+6%4*!].']MsKUrKhS%r0$clfBHVW&:)h+Oc!^b1>B-=fqAdJD7[^nDL)`PG^>"Kas&'lHI\MYS4&J][LGB/P6- %"]C9X#_'*8Y;L8Si7r&IOig9E3K,;(XVd'PN7fCfGY.3)H\J)N!`#,5R)&sSIp7^`=tI=Rhrs[l-29.gDq&\8*C'u]`hHTqi>KmK %2c*s7\qT@laKCQ*0J]fN$b`=pO5R^Z1H/mj8"&6hnAf_hjs0d;Z4@M`40dP4R;pfl*u`Xm@W?=Hdo`e!TPUOmo(cX-7@Zh %.:8CRp=^I5lN>Uj>8Y3:c?RhZ@^id9<^Vfl*]q:'XulT;q+-:Cr?]JR1Dg22:dZYDoK(ggcCaOrkcbM5s(dfs2W6LO&u%dE7DSDbN9.GM,#9&j]F9&UO"uX*r3hI'CKdO#T]->B_&O6E[DdXW@5n._=n/-3ZOf46T&qpC]QJl+LeV"8Z8H?a9XD%ScKg]Hc %eS8fO6mVs3Kf<39^++_OJT=7X=R.omYTP0kRk7Nm_<=gMDNQYA#(?%^V[uU3TcKe8E5qZU$GiOsIFW.JKHr6r($Zg,$5)4/QiUVJ %S%f+b_t"42`FokZ%$j"C+(gE>.)XsZW(R^S/5G=21e,9h!eb&6ar1GpP!ND@"#%`GE>HJ?n0TW-*c,c[\'2Z\4bosO&jeO(O>1'?#. %$`0dQI]HkH'eNdX`q!e]AmcOulbVp?L&Q+ncbV8Yk_n>7T^ %8d\"@b4>S4#hNK@RXIRl\B8il\jR,oZVcKTGHa>gS.X-<0cRnVQXq@D'TBa.H%OgJ<[7]N3T(Y42rR\h;^Jc(n>R[hAcqOl,bo&) %]/5"Q0F=*-_D`bBg2)A$_+)4#K28M*=P<"*J6Ga/;M629XGu8+Kq/*CGZ$-()BU+($ckWYCJ;]"N@?^".(1NmrQQd&rdW6EC/ChY,>u4t^:lpJlX\&p]>uhUO*_X"07b8_,!uOeKO:`$^V[0Rs1W5Gd-*mUX%He+^fm60,YQmcc?uuFoC_.8qOO/O- %9,n]_S9ou,80,b+ %03Rb:)'X&G>bXib@Po!Q8g1Nt)NKbS<)h\BN5]I(Y"s#361rUjbMbl#4+%fM<5;iB*u&u4=79MX71D/DGR0l0+q.mO]U0OkfTl$? %/BKU`+coi+6&LU?dGQrN$b2+@$`emJbQ)'C\lE,r!'L^gIt::Q-:,^,15d7=SJZHa_QddD@u2.C20!#.0J^\<]pK6E,dYT0NS04R %>j$c:SM5R9NWiaUOo)q38$;_9"&MsJL^;@a$M4MAOUV@L-=3V %=Hp`Nc-KX`o]]eB%Nf#oND4JEL2CBp_QmOmM43lMW$(dA#Y>\8+H0kU/3-PV6jdET7=bDY?jhUL+HZAMXO7R/EZ%RQXqD"'ZPO[X %\LP?LYqEOoMCZgf;N'Rc@RM;l'1pcMAc6YJ %L4MfFCR>ccSj8?@Y978YS8<SL9FInLtYb[HV[=dbd.C],/G%FW1QN+@A@^KF^%X_s\N %1kh(F5@@54OUAE$9FkGriJ/=X@#4'+\KrqT)(ZYn1E0`q^hFFb=\ma50KMMS,9[7#LS4oPZs5YZLr=!N33m>:Oa4`8i$"c0-)9p_ %$UM529K=M/"@Mq*0$HG %K'%!+!nATM!n#J+'Nn.])?Pcq05p%;^_rjM[I"qN_gg:m!:p:5=OD6#J]UkTK?78b_i<6"$J_N$VQn%4WO#LhL%Ui %1oCI4@9$13)Gh7n8H\K#9pQ[AJR7G_qs56rk&*F"7$SZaYRHlm[Ir'JC5.=;L)$b`BK(qM8a]` %kR*%i8&tbcpDcPD=cD7a+j`SaZ8,Go&([X0_)FLEf#d\o:m`6&%M7PLfa?ffN$mAB5a")P:sb@jFrNFM!a6%r(?<8-oHk]#7NqmT %5qBm(SnnIn7a-"d$)\/Zi>b6S94YiR,0l<]'^NMB:)kZa"ZY"V"/\CY!OE0?5mL<+]qKJ?(#L6_"ON)r5LAs"B8n;:11mnNW:dX4SAYnu/L1FHDaq3J7TL+Le]PWep+R%*CqM!j>E0^ptG_I:P/84#1@45QI@1N51'-#X?.$`[#W4.7LP%bi=-g)P@.LM5u:Wp$j87 %crrPtQ12_V,hY`.Dp6O<<5Obe$[BQ=.U'-Y`Y6o)7oLT&"&"h:)fV`"fu(2R_0c;UF1?L)blE_/'%iSuXh^-;#@:Ffiu!c%'%k)> %F0&&Y',<>N&8s\aEJFHI=Fm\6P>uOG-?EeH1:Q-!1]meR=-8.HN!An[7#lYj2o4QcM1eqqO`2F]0FNEM8P185#(LFa>;5(GaB0Jc %rMjJuo9cA+SqW!+'2q"-p^/es78,/hW!84!&BimG!EB-K6W/F`TdaPNV3>p%#P(=W0*VqUAdQ:@%&(b$MIMGD7JQ?>3,5Z8/X!Z5q?cer%G@tKpth>0nJ1'Al\(i%BTrn2SXk$K#FZi^Wot#DS4Xea=UQU8>`fJ"Ho)To3*9KM]rIP@=!pK!^GZep#"'u@j5Qn %+FI'tB*_Xk_u(:;W6lt>@`("GW$8j_>!WAunePd=mdT68K#$=TWZmi>M4h\I(+J!3?nd^I[bfuZ:EZ''\4_EK]@d1YQX_iYD`"-i %NdHQ`_ePHX7#k_;Wj0K3"$co,$E2'm"iI/L6[T7J(Y3Cf0-6Vq1/#=&^i*]qjg04%,5W1oKd+-^E$5F6_"&Js8$if%I*iq+Cp+WF/Q=I>V1Gjo=kg9WJ"K]%>oY;F@,%.L)l%.tW&sqJE9_.dXgc$oo!A5b&516j[=q.tnLYRW<1O9_-M %@BLu^R9L=Zid$]k%3Mm=imNGC!*C;#/H?W13#W0Xh#X`&o+og54BYR1@W;te8BJ)?i_Id.$DIG]DSB*B4R35E"#Ceb^nc.Op;3ahJF:)\p$-A#!$_PId:;Kg)j\X60N1 %AI9_PrivateDataEnd \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/su/su-logo.png deleted file mode 100644 index e85927f74f701538cad6ce60b30e2281be7acb60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5111 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.png deleted file mode 100644 index d080b7e9aa93a119aaa7a411b68e7952e8c6e249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6270 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 I*RYQK7uqsy^Z)<= diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg deleted file mode 100644 index 8ef01dae5b..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo-compact.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/talent/talent-logo.png deleted file mode 100644 index b504bad0d124aa2a9bbf92a6684ef7090fcc5e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14593 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo-compact.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo-compact.png deleted file mode 100644 index 3a4f4990533c3c92d4bf4a491360f5b1a9457c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9798 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 \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.png b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.png deleted file mode 100644 index 9ab76e3d7ee815f6a7373325844cf16c18f2d90d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16625 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg b/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg deleted file mode 100644 index 15e2166cab..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/logos/teams/teams-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/stacks-docs-next/static/legacy/assets/img/open-graph.jpg b/packages/stacks-docs-next/static/legacy/assets/img/open-graph.jpg deleted file mode 100644 index 1b7f35b4c8bb576cc04f654f809f286922518587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101740 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 diff --git a/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg b/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg deleted file mode 100644 index 0ffe820c47..0000000000 --- a/packages/stacks-docs-next/static/legacy/assets/img/placeholder.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file From 8a590b544281df57872ef0773e5cb755a3319da5 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 12:42:08 -0400 Subject: [PATCH 008/257] feat(docs-next): convert 38 legacy fragment pages to mdsvex Replaces 38 static legacy HTML fragments with mdsvex Markdown files in src/docs/public/system/, served natively by the SvelteKit page server. Converted pages (base/ and components/ and foundation/): - base/height, margin, padding, width - components/activity-indicator, avatars, badges, bling, breadcrumbs, button-groups, cards, code-blocks, empty-states, expandable, inputs, labels, link-previews, links, loader, menus, page-titles, pagination, post-summary, progress-bars, radio, select, tables, tags, textarea, toggle-switch, topbar, uploader, user-cards, vote - foundation/accessibility, color-fundamentals, colors, typography Each MD file has YAML frontmatter (title, description, svelte URL, figma URL where available) extracted from the legacy fragment header, with the content HTML following. Also removed the `legacy:` field from structure.yaml for all 67 pages (38 newly converted + 29 that already had MD files but were being bypassed by the legacy-first serving order). 10 pages remain as legacy fragments because they contain inline + +

      + + + + + {#each activeCols as col} + + {/each} + + + + {#each rows as row} + + + {#each activeCols as col} + + {/each} + + {/each} + +
      Class{colLabels[col]}
      {row.class} + {#if col === 'responsive'} + {row.responsive ? '✓' : ''} + {:else} + {(row as Record)[col] ?? ''} + {/if} +
      +
      diff --git a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md index 1854f750c1..b77167baa5 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md @@ -5,584 +5,88 @@ svelte: "https://beta.svelte.stackoverflow.design/?path=/docs/components-activit figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Product-UI?node-id=610-18796" --- -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - Class - - Modifies - - Description -
      - - - .s-activity-indicator - - - - - - N/A - - Base activity indicator element with theme-aware coloring
      - - - .s-activity-indicator__success - - - - - - - - .s-activity-indicator - - - Styles the activity indicator in a success state
      - - - .s-activity-indicator__warning - - - - - - - - .s-activity-indicator - - - Styles the activity indicator in a warning state
      - - - .s-activity-indicator__danger - - - - - - - - .s-activity-indicator - - - Styles the activity indicator in a danger state
      - - - .s-activity-indicator__sm - - - - - - - - .s-activity-indicator - - - Styles the activity indicator in a small size
      + + +## Classes + + + +## Examples + +### Default + +By default, the indicator has no positioning applied — use [atomic positioning classes](/system/base/position) as needed. Always include a visually-hidden label using the [`v-visible-sr`](/system/base/visibility) class so screen readers announce the indicator's purpose. + +
      + + + + +
      +```html +
      +
      New activity
      +
      - - - - - - - - - - - - - -
      - -
      - - -

      By default, our indicator has no positioning attached to it. Depending on your context, you can modify the activity indicator’s positioning using any combination of atomic classes. Since our activity indicator has no inherent semantic meaning, make sure to include visually-hidden, screenreader-only text with the v-visible-sr class.

      -
      -
      <div class="s-activity-indicator">
      <div class="v-visible-sr">New activity</div>
      </div>

      <div class="s-activity-indicator">

      <div class="v-visible-sr"></div>
      </div>

      <div class="s-activity-indicator">

      <div class="v-visible-sr"></div>
      </div>

      <div class="s-activity-indicator">

      <div class="v-visible-sr"></div>
      </div>

      <div class="s-activity-indicator">

      </div>

      <a href="#" class="s-link s-link__muted">
      <div class="s-avatar bg-red-400 ps-relative">
      <div class="s-avatar--indicator s-activity-indicator s-activity-indicator__sm">
      <div class="v-visible-sr"></div>
      </div>
      <div class="s-avatar--letter"></div>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </div>
      <span class="pl4"></span>
      </a>

      <div class="ps-relative">
      @Svg.Notification

      <div class="s-activity-indicator s-activity-indicator__sm ps-absolute tn4 rn4 ba baw2 bc-white box-content">
      <div class="v-visible-sr"></div>
      </div>
      </div>

      <div class="ps-relative">
      @Svg.Notification

      <div class="ps-absolute ba baw2 bc-white bar-pill lh-xs tn8 rn8">
      <div class="s-activity-indicator">
      3 <div class="v-visible-sr"></div>
      </div>
      </div>
      </div>
      -
      -
      - -
      - -
      New activity
      -
      - -
      - 3 -
      New activity
      -
      - -
      - 12 -
      New activity
      -
      - -
      - 370 -
      New activity
      -
      - -
      - new -
      New activity
      -
      - - - -
      -
      -
      New activity
      -
      -
      G
      - -
      - Grayson -
      - -
      - - -
      -
      New activity
      -
      -
      - -
      - - -
      -
      - 3
      -
      -
      -
      -
      -
      -
      - - -

      Stacks also provides alternative styling for success, warning, and danger states.

      -
      -
      <div class="s-activity-indicator s-activity-indicator__success">
      <div class="v-visible-sr"></div>
      </div>
      <div class="s-activity-indicator s-activity-indicator__warning">
      <div class="v-visible-sr"></div>
      </div>
      <div class="s-activity-indicator s-activity-indicator__danger">
      <div class="v-visible-sr"></div>
      </div>
      -
      -
      - -
      - -
      - -
      New activity
      -
      - -
      - 3 -
      New activity
      -
      - -
      - 12 -
      New activity
      -
      - -
      - 370 -
      New activity
      -
      - -
      - new -
      New activity
      -
      - - - -
      -
      -
      New activity
      -
      -
      G
      - -
      - Grayson -
      - -
      - - -
      -
      New activity
      -
      -
      - -
      - - -
      -
      - 3
      New activities
      -
      -
      -
      -
      - -
      - -
      - -
      New activity
      -
      - -
      - 3 -
      New activity
      -
      - -
      - 12 -
      New activity
      -
      - -
      - 370 -
      New activity
      -
      - -
      - new -
      New activity
      -
      - - - -
      -
      -
      New activity
      -
      -
      G
      - -
      - Grayson -
      - -
      - - -
      -
      New activity
      -
      -
      - -
      - - -
      -
      - 3
      New activities
      -
      -
      -
      -
      - -
      - -
      - -
      New activity
      -
      - -
      - 3 -
      New activity
      -
      - -
      - 12 -
      New activity
      -
      - -
      - 370 -
      New activity
      -
      - -
      - new -
      New activity
      -
      - - - -
      -
      -
      New activity
      -
      -
      G
      - -
      - Grayson -
      - -
      - - -
      -
      New activity
      -
      -
      - -
      - - -
      -
      - 3
      New activities
      -
      -
      -
      -
      - -
      -
      -
      -
      - - - +
      + + + + +
      - +```html +
      +
      New activity
      +
      +
      +
      New activity
      +
      +
      +
      New activity
      +
      +``` From bdea068a10705c387e288a6259c6008e96d2e312 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:00:54 -0400 Subject: [PATCH 010/257] =?UTF-8?q?fix(docs-next):=20rename=20ClassTable?= =?UTF-8?q?=20prop=20rows=E2=86=92classes=20and=20fix=20tabindex=20a11y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Prop was named 'rows' but usage passes '{classes}', causing rows to be undefined on render - Added role="region" + aria-label to the scrollable wrapper so tabindex on a non-interactive element is valid Co-Authored-By: Claude Sonnet 4.6 --- .../stacks-docs-next/src/components/ClassTable.svelte | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/stacks-docs-next/src/components/ClassTable.svelte b/packages/stacks-docs-next/src/components/ClassTable.svelte index c84630d88d..51b1c61cbc 100644 --- a/packages/stacks-docs-next/src/components/ClassTable.svelte +++ b/packages/stacks-docs-next/src/components/ClassTable.svelte @@ -14,10 +14,10 @@ }; interface Props { - rows: ClassTableRow[]; + classes: ClassTableRow[]; } - let { rows }: Props = $props(); + let { classes }: Props = $props(); type ColKey = keyof Omit; @@ -32,11 +32,12 @@ // Show columns in a fixed order, but only those with at least one value. const orderedCols: ColKey[] = ['modifies', 'output', 'description', 'define', 'responsive']; const activeCols = $derived( - orderedCols.filter(col => rows.some(r => r[col] !== undefined)) + orderedCols.filter(col => classes.some(r => r[col] !== undefined)) ); -
      + +
      @@ -47,7 +48,7 @@ - {#each rows as row} + {#each classes as row} {#each activeCols as col} From eb42feae075e43799d19f2d0e69e3e5399c0c00f Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:09:48 -0400 Subject: [PATCH 011/257] fix(docs-next): restore full activity-indicator examples with correct order - Code block first, then live example (matching original layout) - Restore all compound examples: - Standalone indicators (empty, numbers, text) - Activity indicator on avatar (ActivityIndicator + Icon + raw s-avatar HTML) - Activity indicator on notification icon (Icon + ActivityIndicator with positioning classes) - Activity indicator count pill on notification icon - Use {#each} over variants to eliminate repetition in the Variations section - Replace @Svg.* C# syntax in code blocks with commented HTML equivalents Co-Authored-By: Claude Sonnet 4.6 --- .../system/components/activity-indicator.md | 115 +++++++++++++++--- 1 file changed, 99 insertions(+), 16 deletions(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md index b77167baa5..590bb30f4e 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md @@ -6,7 +6,8 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod --- + +
      + {@render children()} +
      diff --git a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md index b07264fa88..6f1cada5ba 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md @@ -8,7 +8,9 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod -
      +
      {@render children()}
      From d8851c03af5c9001f1c3d8ee3fc346507c33054f Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:28:01 -0400 Subject: [PATCH 016/257] fix(docs-next): restore original prose text under Default heading Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/activity-indicator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md index 6f1cada5ba..d6000c4b20 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md @@ -50,7 +50,7 @@ figma: "https://www.figma.com/design/do4Ug0Yws8xCfRjHe9cJfZ/Project-SHINE---Prod ### Default -By default, the indicator has no positioning applied — use [atomic positioning classes](/system/base/position) as needed. Always include a visually-hidden label using the [`v-visible-sr`](/system/base/visibility) class so screen readers announce the indicator's purpose. +By default, our indicator has no positioning attached to it. Depending on your context, you can modify the activity indicator's positioning using any combination of atomic classes. Since our activity indicator has no inherent semantic meaning, make sure to include [visually-hidden, screenreader-only](/system/base/visibility) text with the `v-visible-sr` class. ```html
      From 83e3dc0bd0eb8e86e32ac389e15a286df1c9ce89 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:30:16 -0400 Subject: [PATCH 017/257] fix(docs-next): restore original Default code block verbatim Co-Authored-By: Claude Sonnet 4.6 --- .../system/components/activity-indicator.md | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md index d6000c4b20..0e3ecc1734 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/activity-indicator.md @@ -58,37 +58,49 @@ By default, our indicator has no positioning attached to it. Depending on your c
      - 3 -
      New activity
      + … +
      +
      + +
      + … +
      +
      + +
      + … +
      +
      + +
      + …
      -
      -
      New activity
      +
      -
      G
      - +
      + @Svg.ShieldXSm.With("native s-avatar--badge")
      - Grayson +
      -
      - + @Svg.Notification +
      -
      New activity
      +
      -
      - + @Svg.Notification +
      - 3 -
      New activity
      + 3
      From dc7cee655d9be8cc9707f88d0d6d5924323ca763 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:36:28 -0400 Subject: [PATCH 018/257] feat(docs-next): restore heading anchor icons on all mdsvex pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes rehype-autolink-headings from behavior:"wrap" (which made the heading text itself a silent link) to behavior:"append" (which appends the IconLink SVG after the heading text). Pairs with CSS in app.css that makes h2/h3/h4 flex containers so the icon is pushed to the right edge, matching the original legacy layout. The anchor is aria-hidden so screen readers aren't confused by the duplicate link — the heading id is the accessible anchor. This is a site-wide fix that works automatically for all mdsvex pages without needing a custom heading component. Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/app.css | 23 ++++++++++++++++++++++ packages/stacks-docs-next/svelte.config.js | 22 ++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/app.css b/packages/stacks-docs-next/src/app.css index 136ed17898..c8a1520a2c 100644 --- a/packages/stacks-docs-next/src/app.css +++ b/packages/stacks-docs-next/src/app.css @@ -220,6 +220,29 @@ footer { vertical-align: middle; margin-right: 4px; } + +/* Heading anchor icons (appended by rehype-autolink-headings) */ +.doc h2, +.doc h3, +.doc h4 { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 8px; +} +.doc h2 .heading-anchor, +.doc h3 .heading-anchor, +.doc h4 .heading-anchor { + flex-shrink: 0; + color: var(--black-300); + line-height: 1; + margin-bottom: 2px; +} +.doc h2 .heading-anchor:hover, +.doc h3 .heading-anchor:hover, +.doc h4 .heading-anchor:hover { + color: var(--black-600); +} .doc img, .doc iframe { width: 100%; diff --git a/packages/stacks-docs-next/svelte.config.js b/packages/stacks-docs-next/svelte.config.js index fde4e67f1d..0d17e0271b 100644 --- a/packages/stacks-docs-next/svelte.config.js +++ b/packages/stacks-docs-next/svelte.config.js @@ -37,7 +37,27 @@ const config = { extractToc, exposeToc, rehypeSectionize, - [rehypeAutolinkHeadings, { behavior: "wrap" }], + [rehypeAutolinkHeadings, { + behavior: "append", + properties: { className: ["heading-anchor"], ariaHidden: "true", tabIndex: -1 }, + content: { + type: "element", + tagName: "svg", + properties: { + width: "20", + height: "20", + viewBox: "0 0 20 20", + className: ["svg-icon", "IconLink"], + ariaHidden: "true", + }, + children: [{ + type: "element", + tagName: "path", + properties: { d: "M8.93 6.81a5 5 0 0 1 3.56 1.95l-1.2.9a3.4 3.4 0 0 0-5.11-.37L3.7 11.77l-.11.12a3.4 3.4 0 0 0 4.9 4.67l1.41-1.4 1.06 1.05-1.42 1.43a4.9 4.9 0 0 1-6.92-6.92h.01l2.49-2.49a5 5 0 0 1 3.8-1.42m5.44-5.75a4.9 4.9 0 0 1 3.48 8.29l-2.5 2.5a4.9 4.9 0 0 1-7.37-.54l1.2-.9a3.4 3.4 0 0 0 5.11.37l2.48-2.47a3.4 3.4 0 0 0-4.8-4.8l-1.41 1.4-.53-.52-.53-.53 1.42-1.42h.01a5 5 0 0 1 3.44-1.38" }, + children: [], + }], + }, + }], addTableClasses, ], }), From e607e53b1ea3c776e9c163040dae0474f8fd6c24 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:38:44 -0400 Subject: [PATCH 019/257] feat(docs-next): replace copy-to-markdown button with copy-link icon in breadcrumb Removes the "Copy" button from the page actions row and adds a small link icon button (s-btn__xs s-btn__clear s-btn__icon) inline at the end of the breadcrumb nav. Clicking it copies the current page URL to the clipboard using the existing copyToClipboard action. Co-Authored-By: Claude Sonnet 4.6 --- .../[[section]]/[subsection]/+page.svelte | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte index 7eee11aa01..1ac8df3368 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte @@ -1,13 +1,14 @@ @@ -50,18 +48,15 @@ {#each data.breadcrumb as crumb, index (crumb.path)} {crumb.label}{#if index !== data.breadcrumb.length - 1}/{/if} {/each} + - - {#if data.filename} + {#if data.filename} From 3eb575c111970685fcb6fe40f7e2e6773d159210 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 13:48:01 -0400 Subject: [PATCH 022/257] fix(docs-next): clean up breadcrumb layout with flex + gap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove flex--item from nav; nav is already a flex child via the outer div - Make nav itself d-flex ai-center g6 so items are evenly spaced and vertically aligned, including the copy link button - Remove pr6/mr6 from individual items — gap handles all spacing - Move separator before each item (index !== 0) instead of after, which is cleaner with a flex gap layout - Remove ml4 from Button — gap handles the spacing Co-Authored-By: Claude Sonnet 4.6 --- .../[category]/[[section]]/[subsection]/+page.svelte | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte index 07caefe0ed..2e70122a7a 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte @@ -43,11 +43,12 @@
      -
      {row.class}
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +## Classes + + + +## Examples + +### Users + +Including an image with the class `s-avatar--image` within `s-avatar` will apply the correct size. Remember, you'll want to double the size of the avatar image to account for retina screens. + +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + +
      +
      - Class - - Parent - - Modifies - - Description -
      - - - .s-avatar - - - - - - N/A - - - - N/A - - The base avatar at 16px.
      + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - + + + {#each sizes as size} + + + - - - - - - + + {/each} + +
      - - - .s-avatar--image - - - - - - - - .s-avatar - - - - - N/A - - A child element for displaying a user’s profile image.
      - - - .s-avatar--letter - - - - - - - - .s-avatar - - - - - N/A - - A child element for displaying an abbreviated Team name.
      - - - .s-avatar--badge - - - - - - - - .s-avatar - - - - - N/A - - A child element that provides positioning to the shield on Team avatars.
      - - - .s-avatar--indicator - - - - - - - - .s-avatar - - - - - N/A - - A child element that provides positioning to the activity indicator on user's avatars.
      - - - .s-avatar__24 - - - - - - N/A - - - - - - .s-avatar - - - Adds the proper border radius and scaling at 24px.SizeClassExample
      - - - .s-avatar__32 - - - - - - N/A - -
      {size}px.s-avatar{size > 16 ? `__${size}` : ''} - - - - .s-avatar - - + Adds the proper border radius and scaling at 32px.
      +
      + + +### Activity + +Avatars can display activity indicators to show activities or status changes. Add the `s-avatar--indicator` class to a child element of `s-avatar` along with `s-activity-indicator` and `s-activity-indicator__sm` classes. The indicator is positioned at the top-right corner of the avatar. + +```html + +
      +
      Online
      +
      + +
      + + +
      +
      Online
      +
      + +
      +``` + + +
      + + - - - - - - - - - - - - + + + - - - - - - - - - + + + {#each sizes as size} + + + - - - - - - + + {/each} + +
      - - - .s-avatar__48 - - - - - - N/A - - - - - - .s-avatar - - - Adds the proper border radius and scaling at 48px.SizeClassExample
      - - - .s-avatar__64 - - - - - - N/A - -
      {size}px.s-avatar{size > 16 ? `__${size}` : ''} - - - - .s-avatar - - + Adds the proper border radius and scaling at 64px.
      +
      +
      + +### Stack Internal + +When displaying a team's identity, we badge the avatar with a shield. We fall back to the first letter of their name and a color we choose at random. As Stack Internal administrators add more data—choosing a color or uploading an avatar—we progressively enhance the avatar. + +In this example, from left to right, we have a team name of Hum with no avatar or custom color. In the middle we have a team name of Hum with a custom color. In the last example, we have a team name of Hum with a custom avatar applied. + +```html + +
      + + @Svg.ShieldXSm.With("native s-avatar--badge") +
      + Team name +
      + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + + + + + Hum + @Svg.ShieldXSm.With("native s-avatar--badge") + +``` + + +
      + + - - - - - - - - - - - - + + + + + - - - + + + {#each sizes as size} + + + - - - - - - - - - - - -
      - - - .s-avatar__96 - - - - - - N/A - - - - - - .s-avatar - - - Adds the proper border radius and scaling at 96px.SizeClassNo colorCustom colorCustom avatar
      {size}px.s-avatar{size > 16 ? `__${size}` : ''} - - - .s-avatar__128 - - - + - - N/A - + - - - - .s-avatar - - + Adds the proper border radius and scaling at 128px.
      -
      - - - - - - - - - - - - - - - - - - - -
      - - -

      Including an image with the class s-avatar--image within s-avatar will apply the correct size. Remember, you’ll want to double the size of the avatar image to account for retina screens.

      -
      -
      <a href="…" class="s-avatar">
      <img class="s-avatar--image" src="https://picsum.photos/32" />
      </a>

      <a href="…" class="s-avatar s-avatar__24">
      <img class="s-avatar--image" src="https://picsum.photos/48" />
      </a>

      <a href="…" class="s-avatar s-avatar__32">
      <img class="s-avatar--image" src="https://picsum.photos/64" />
      </a>

      <a href="…" class="s-avatar s-avatar__48">
      <img class="s-avatar--image" src="https://picsum.photos/96" />
      </a>

      <a href="…" class="s-avatar s-avatar__64">
      <img class="s-avatar--image" src="https://picsum.photos/128" />
      </a>

      <a href="…" class="s-avatar s-avatar__96">
      <img class="s-avatar--image" src="https://picsum.photos/192" />
      </a>

      <a href="…" class="s-avatar s-avatar__128">
      <img class="s-avatar--image" src="https://picsum.photos/256" />
      </a>
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - 16px - - .s-avatar__16 - - - demo avatar - -
      - 24px - - .s-avatar__24 - - - demo avatar - -
      - 32px - - .s-avatar__32 - - - demo avatar - -
      - 48px - - .s-avatar__48 - - - demo avatar - -
      - 64px - - .s-avatar__64 - - - demo avatar - -
      - 96px - - .s-avatar__96 - - - demo avatar - -
      - 128px - - .s-avatar__128 - - - demo avatar - -
      -
      -
      - - -

      - Avatars can display activity indicators to show activities or status changes. - Add the s-avatar--indicator class to a child element of s-avatar along with s-activity-indicator and s-activity-indicator__sm classes. - The indicator is positioned at the top-right corner of the avatar.

      -
      -
      <a href="…" class="s-avatar">
      <div class="s-avatar--indicator s-activity-indicator s-activity-indicator__sm s-activity-indicator__success">
      <div class="v-visible-sr">Online</div>
      </div>
      <img class="s-avatar--image" src="https://picsum.photos/32" />
      </a>

      <a href="…" class="s-avatar s-avatar__24">
      <div class="s-avatar--indicator s-activity-indicator s-activity-indicator__sm s-activity-indicator__success">
      <div class="v-visible-sr">Online</div>
      </div>
      <img class="s-avatar--image" src="https://picsum.photos/48" />
      </a>
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - 16px - - default - - -
      -
      Online
      -
      - demo avatar -
      -
      - 24px - - .s-avatar__24 - - -
      -
      Online
      -
      - demo avatar -
      -
      -
      -
      -
      - -
      - -

      When displaying a team’s identity, we badge the avatar with a shield. We fall back to the first letter of their name and a color we choose at random. As Stack Internal administrators add more data—choosing a color or uploading an avatar—we progressively enhance the avatar.

      -

      In this example, from left to right, we have a team name of Hum with no avatar or custom color. In the middle we have a team name of Hum with a custom color. In the last example, we have a team name of Hum with a custom avatar applied.

      -
      -
      <a href="…" class="s-link s-link__muted">
      <div class="s-avatar">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </div>
      <span class="pl4">Team name</span>
      </a>

      <a href="…" class="s-avatar s-avatar__24">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>

      <a href="…" class="s-avatar s-avatar__32">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>

      <a href="…" class="s-avatar s-avatar__48">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>

      <a href="…" class="s-avatar s-avatar__64">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>

      <a href="…" class="s-avatar s-avatar__96">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>

      <a href="…" class="s-avatar s-avatar__128">
      <div class="s-avatar--letter" aria-hidden="true">H</div>
      <span class="v-visible-sr">Hum</span>
      @Svg.ShieldXSm.With("native s-avatar--badge")
      </a>
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - 16px - - .s-avatar__16 - - - -
      - - - - -
      - Hum -
      - -
      - - -
      - - - - -
      - Hum -
      - -
      - - -
      - - - - -
      - Hum -
      - -
      - 24px - - .s-avatar__24 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      - 32px - - .s-avatar__32 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      - 48px - - .s-avatar__48 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      - 64px - - .s-avatar__64 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      - 96px - - .s-avatar__96 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      - 128px - - .s-avatar__128 - - - - - - Hum - - - - - - - - - - Hum - - - - - - - - - - - - - -
      -
      + {/each} + +
      -
      - - - - - +
      From ec2d86480f5e5af996699fe1ee06f12e0c4122d3 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:19:36 -0400 Subject: [PATCH 031/257] fix(docs-next): limit activity avatar examples to 16px and 24px Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/avatars.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index 13974a0db3..60cdba932f 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -129,7 +129,7 @@ Avatars can display activity indicators to show activities or status changes. Ad - {#each sizes as size} + {#each [16, 24] as size} {size}px .s-avatar{size > 16 ? `__${size}` : ''} From 91ae4b6123c48c034986208624011e3cdbcc2fb4 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:22:03 -0400 Subject: [PATCH 032/257] fix(docs-next): use explicit bg classes and team-avatar.png in Stack Internal examples - Column 1: bg-blue-400 (no custom color) - Column 2: bg-theme-primary (custom brand color) - Column 3: team-avatar.png (custom image) Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/avatars.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index 60cdba932f..a8d29db580 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -219,13 +219,13 @@ In this example, from left to right, we have a team name of Hum with no avatar o {size}px .s-avatar{size > 16 ? `__${size}` : ''} - + - + {/each} From 1c16b34a3fd076584b492d3dd23a275b6384812f Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:23:07 -0400 Subject: [PATCH 033/257] fix(docs-next): update Stack Internal table headings to Default color / Brand color / Custom avatar Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/avatars.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index a8d29db580..96fe78ea2a 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -208,8 +208,8 @@ In this example, from left to right, we have a team name of Hum with no avatar o Size Class - No color - Custom color + Default color + Brand color Custom avatar From c3c88a17b127edd6d93a1966b6490c487ee64ef0 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:24:16 -0400 Subject: [PATCH 034/257] fix(docs-next): allow overflow to be visible on Example container Adds overflow-visible to Example.svelte so content (dropdowns, tooltips, etc.) is not clipped by the bordered container. Also removes the overflow-x-auto wrapper divs from the avatars tables accordingly. Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/Example.svelte | 2 +- .../docs/public/system/components/avatars.md | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/stacks-docs-next/src/components/Example.svelte b/packages/stacks-docs-next/src/components/Example.svelte index 1ca7520a89..fe3eace922 100644 --- a/packages/stacks-docs-next/src/components/Example.svelte +++ b/packages/stacks-docs-next/src/components/Example.svelte @@ -8,6 +8,6 @@ let { children }: Props = $props(); -
      +
      {@render children()}
      diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index 96fe78ea2a..72bd11af7c 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -69,8 +69,7 @@ Including an image with the class `s-avatar--image` within `s-avatar` will apply ``` -
      - +
      @@ -94,8 +93,7 @@ Including an image with the class `s-avatar--image` within `s-avatar` will apply {/each} -
      Size
      -
      +
      ### Activity @@ -119,8 +117,7 @@ Avatars can display activity indicators to show activities or status changes. Ad ``` -
      - +
      @@ -145,8 +142,7 @@ Avatars can display activity indicators to show activities or status changes. Ad {/each} -
      Size
      -
      +
      ### Stack Internal @@ -202,8 +198,7 @@ In this example, from left to right, we have a team name of Hum with no avatar o ``` -
      - +
      @@ -230,6 +225,5 @@ In this example, from left to right, we have a team name of Hum with no avatar o {/each} -
      Size
      -
      +
      From 52bc1ee9e798e1ce3f1a940f43ec7c05acad0f35 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:24:39 -0400 Subject: [PATCH 035/257] =?UTF-8?q?fix(docs-next):=20rename=20Stack=20Inte?= =?UTF-8?q?rnal=20column=20heading=20Default=20color=20=E2=86=92=20Custom?= =?UTF-8?q?=20color?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../src/docs/public/system/components/avatars.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md index 72bd11af7c..810f0d3be6 100644 --- a/packages/stacks-docs-next/src/docs/public/system/components/avatars.md +++ b/packages/stacks-docs-next/src/docs/public/system/components/avatars.md @@ -203,7 +203,7 @@ In this example, from left to right, we have a team name of Hum with no avatar o Size Class - Default color + Custom color Brand color Custom avatar From dad1426203889c9df93565ecff1e6e133ad246a4 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:25:40 -0400 Subject: [PATCH 036/257] fix(docs-next): use Button link variant for Edit/Figma/Svelte action buttons Replaces size='sm' weight='clear' with the link prop on the three page action buttons, matching the style of the copy-link button. Wraps them in a d-flex ai-center g8 container for consistent spacing. Co-Authored-By: Claude Sonnet 4.6 --- .../[[section]]/[subsection]/+page.svelte | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte index d10669094c..f31c5e64a1 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte @@ -57,25 +57,28 @@ - {#if data.filename} - - {/if} - - {#if data?.metadata?.figma} - - {/if} - {#if data?.metadata?.svelte} - - {/if} +
      + {#if data.filename} + + {/if} + + {#if data?.metadata?.figma} + + {/if} + + {#if data?.metadata?.svelte} + + {/if} +
      From a6c137a2b891c04c52da1556f4cbf6092b0ce415 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:27:59 -0400 Subject: [PATCH 037/257] fix(docs-next): increase action button gap to g16 and apply fs-caption Co-Authored-By: Claude Sonnet 4.6 --- .../src/routes/[category]/[[section]]/[subsection]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte index f31c5e64a1..5952b1a9fa 100644 --- a/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte +++ b/packages/stacks-docs-next/src/routes/[category]/[[section]]/[subsection]/+page.svelte @@ -57,7 +57,7 @@ -
      +
      {#if data.filename} +{:else} +
      +{/if} From 6f49c401a76f899c247a436d2ac391fe0b27fae3 Mon Sep 17 00:00:00 2001 From: Dan Cormier Date: Wed, 15 Apr 2026 14:39:30 -0400 Subject: [PATCH 042/257] fix(docs-next): remove wmx5 from description, replace gs* with g* in routes - Remove wmx5 from the in-page description paragraph (the content column is already capped by wmx9 on .doc) - Replace gs4 with g4 in the page action row and the homepage badge row Co-Authored-By: Claude Sonnet 4.6 --- packages/stacks-docs-next/src/routes/+page.svelte | 2 +- .../routes/[category]/[[section]]/[subsection]/+page.svelte | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/stacks-docs-next/src/routes/+page.svelte b/packages/stacks-docs-next/src/routes/+page.svelte index 3b30913163..219770b058 100644 --- a/packages/stacks-docs-next/src/routes/+page.svelte +++ b/packages/stacks-docs-next/src/routes/+page.svelte @@ -37,7 +37,7 @@