PageSourceSearch

https://onnxruntime.ai/_app/immutable/nodes/18.1a6416a8.js

js onnxruntime.ai collected 2026-09-24 08:28:20 UTC 119,074 bytes, 229 lines download raw bytes

1import{s as Ut,f as u,a as i,r as qt,g as n,d as w,c as d,h as Kr,D as a,j as o,I as $e,v as e,i as Ke,C as Rt}from"../chunks/scheduler.e2b5ccef.js";import{S as Gt,i as Kt,b as F,d as p,m as b,a as m,t as g,e as h}from"../chunks/index.67416819.js";import{H as Te}from"../chunks/Highlight.4389c7ab.js";import{p as Wr}from"../chunks/python.1e6a822e.js";import{c as Wt}from"../chunks/csharp.45d8a436.js";import{H as jt,F as Vt}from"../chunks/footer.473d2b9b.js";/*!
2 * Grammar "handlebars" derived from highlight.js 11.12.0 (BSD-3-Clause).
3 * Copyright (c) 2006, Ivan Sagalaev. Full text: LICENSE.highlight.txt.
4 */const Yt={name:"handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],register:{name:"handlebars",caseInsensitive:!0,unicode:!1,disableAutodetect:!1,states:[{rules:[1,2,3,6,9,37,39,40,41,42,43,51],subLanguage:"xml"},{rules:[],begin:"\\\\\\{\\{",end:"\\B|\\b",skip:!0},{rules:[],begin:"\\\\\\\\(?=\\{\\{)",end:"\\B|\\b",skip:!0},{rules:[4,5],scope:"comment",begin:"\\{\\{!--",end:"--\\}\\}"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[7,8],scope:"comment",begin:"\\{\\{!",end:"\\}\\}"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[10],scope:"template-tag",begin:"\\{\\{\\{\\{(?!\\/)",end:"\\}\\}\\}\\}",starts:36},{rules:[],scope:"name",begin:`(?:\\.|\\.\\/|\\/)?(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+)(?:(\\.|\\/)(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+))*`,end:"\\B|\\b",keywords:{action:["built_in",1],bindattr:["built_in",1],collection:["built_in",1],component:["built_in",1],concat:["built_in",1],debugger:["built_in",1],each:["built_in",1],"each-in":["built_in",1],get:["built_in",1],hash:["built_in",1],if:["built_in",0],in:["built_in",0],input:["built_in",1],"link-to":["built_in",1],loc:["built_in",1],log:["built_in",1],lookup:["built_in",1],mut:["built_in",1],outlet:["built_in",1],partial:["built_in",1],"query-params":["built_in",1],render:["built_in",1],template:["built_in",1],textarea:["built_in",1],unbound:["built_in",1],unless:["built_in",1],view:["built_in",1],with:["built_in",1],yield:["built_in",1]},keywordPattern:"[\\w.\\/]+",starts:11},{rules:[12,13,15,17,19,27,28],begin:"\\B|\\b",end:"\\}\\}",returnEnd:!0},{relevance:0,rules:[],scope:"number",begin:"\\b\\d+(\\.\\d+)?",end:"\\B|\\b"},{rules:[14],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[16],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[18],begin:"as\\s+\\|",end:"\\|",keywords:{as:["keyword",1]},keywordPattern:"\\w+"},{rules:[],begin:"\\w+",end:"\\B|\\b"},{relevance:0,rules:[],scope:"attr",begin:"(\\[\\]|\\[[^\\]]+\\]|[^\\s!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]+)(?==)",end:"\\B|\\b",starts:20},{rules:[],begin:"=",end:"=",starts:21},{rules:[22,23,25,27,28],begin:"\\B|\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b\\d+(\\.\\d+)?",end:"\\B|\\b"},{rules:[24],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[26],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[],begin:`(?:\\.|\\.\\/|\\/)?(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+)(?:(\\.|\\/)(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+))*`,end:"\\B|\\b",keywords:{true:["literal",1],false:["literal",1],undefined:["literal",1],null:["literal",1]},keywordPattern:"[\\w.\\/]+"},{rules:[29],begin:"\\(",end:"\\)"},{rules:[],scope:"name",begin:`(?:\\.|\\.\\/|\\/)?(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+)(?:(\\.|\\/)(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+))*`,end:"\\B|\\b",keywords:{action:["built_in",1],bindattr:["built_in",1],collection:["built_in",1],component:["built_in",1],concat:["built_in",1],debugger:["built_in",1],each:["built_in",1],"each-in":["built_in",1],get:["built_in",1],hash:["built_in",1],if:["built_in",0],in:["built_in",0],input:["built_in",1],"link-to":["built_in",1],loc:["built_in",1],log:["built_in",1],lookup:["built_in",1],mut:["built_in",1],outlet:["built_in",1],partial:["built_in",1],"query-params":["built_in",1],render:["built_in",1],template:["built_in",1],textarea:["built_in",1],unbound:["built_in",1],unless:["built_in",1],view:["built_in",1],with:["built_in",1],yield:["built_in",1]},keywordPattern:"[\\w.\\/]+",starts:30},{rules:[31,32,34,17,19,27,28],begin:"\\B|\\b",end:"\\)",returnEnd:!0},{relevance:0,rules:[],scope:"number",begin:"\\b\\d+(\\.\\d+)?",end:"\\B|\\b"},{rules:[33],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[35],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[],begin:"\\B|\\b",end:"\\{\\{\\{\\{\\/",returnEnd:!0,subLanguage:"xml"},{rules:[38],scope:"template-tag",begin:"\\{\\{\\{\\{\\/",end:"\\}\\}\\}\\}"},{rules:[],scope:"name",begin:`(?:\\.|\\.\\/|\\/)?(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+)(?:(\\.|\\/)(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+))*`,end:"\\B|\\b",keywords:{action:["built_in",1],bindattr:["built_in",1],collection:["built_in",1],component:["built_in",1],concat:["built_in",1],debugger:["built_in",1],each:["built_in",1],"each-in":["built_in",1],get:["built_in",1],hash:["built_in",1],if:["built_in",0],in:["built_in",0],input:["built_in",1],"link-to":["built_in",1],loc:["built_in",1],log:["built_in",1],lookup:["built_in",1],mut:["built_in",1],outlet:["built_in",1],partial:["built_in",1],"query-params":["built_in",1],render:["built_in",1],template:["built_in",1],textarea:["built_in",1],unbound:["built_in",1],unless:["built_in",1],view:["built_in",1],with:["built_in",1],yield:["built_in",1]},keywordPattern:"[\\w.\\/]+"},{rules:[10],scope:"template-tag",begin:"\\{\\{#",end:"\\}\\}"},{rules:[],scope:"template-tag",begin:"\\{\\{(?=else\\}\\})",end:"\\}\\}",keywords:{else:["keyword",1]},keywordPattern:"\\w+"},{rules:[],scope:"template-tag",begin:"\\{\\{(?=else if)",end:"\\}\\}",keywords:{else:["keyword",1],if:["keyword",0]},keywordPattern:"\\w+"},{rules:[38],scope:"template-tag",begin:"\\{\\{\\/",end:"\\}\\}"},{rules:[44],scope:"template-variable",begin:"\\{\\{\\{",end:"\\}\\}\\}"},{rules:[],scope:"name",begin:`(?:\\.|\\.\\/|\\/)?(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+)(?:(\\.|\\/)(?:""|"[^"]+"|''|'[^']+'|\\[\\]|\\[[^\\]]+\\]|[^\\s!"#%&'()*+,.\\/;<=>@\\[\\\\\\]^\`{|}~]+))*`,end:"\\B|\\b",keywords:{action:["built_in",1],bindattr:["built_in",1],collection:["built_in",1],component:["built_in",1],concat:["built_in",1],debugger:["built_in",1],each:["built_in",1],"each-in":["built_in",1],get:["built_in",1],hash:["built_in",1],if:["built_in",0],in:["built_in",0],input:["built_in",1],"link-to":["built_in",1],loc:["built_in",1],log:["built_in",1],lookup:["built_in",1],mut:["built_in",1],outlet:["built_in",1],partial:["built_in",1],"query-params":["built_in",1],render:["built_in",1],template:["built_in",1],textarea:["built_in",1],unbound:["built_in",1],unless:["built_in",1],view:["built_in",1],with:["built_in",1],yield:["built_in",1]},keywordPattern:"[\\w.\\/]+",starts:45},{rules:[46,47,49,17,19,27,28],begin:"\\B|\\b",end:"\\}\\}",returnEnd:!0},{relevance:0,rules:[],scope:"number",begin:"\\b\\d+(\\.\\d+)?",end:"\\B|\\b"},{rules:[48],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[50],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[44],scope:"template-variable",begin:"\\{\\{",end:"\\}\\}"}],aliases:["hbs","html.hbs","html.handlebars","htmlbars"]}},Jt=Yt;/*!
5 * Grammar "kotlin" derived from highlight.js 11.12.0 (BSD-3-Clause).
6 * Copyright (c) 2006, Ivan Sagalaev. Full text: LICENSE.highlight.txt.
7 */const Qt={name:"kotlin",aliases:["kt","kts","ktm","ktx"],register:{name:"kotlin",caseInsensitive:!1,unicode:!1,disableAutodetect:!1,states:[{rules:[1,5,8,14,17,18,19,34,49,25,26,28,54,55,56,57,58,59,60,61,62,63],keywords:{abstract:["keyword",1],as:["keyword",1],val:["keyword",1],var:["keyword",1],vararg:["keyword",1],get:["keyword",1],set:["keyword",1],class:["keyword",1],object:["keyword",1],open:["keyword",1],private:["keyword",1],protected:["keyword",1],public:["keyword",1],noinline:["keyword",1],crossinline:["keyword",1],dynamic:["keyword",1],final:["keyword",1],enum:["keyword",1],if:["keyword",0],else:["keyword",1],do:["ke
7yword",1],while:["keyword",1],for:["keyword",0],when:["keyword",1],throw:["keyword",1],try:["keyword",1],catch:["keyword",1],finally:["keyword",1],import:["keyword",1],package:["keyword",1],is:["keyword",1],in:["keyword",0],fun:["keyword",1],override:["keyword",1],companion:["keyword",1],reified:["keyword",1],inline:["keyword",1],lateinit:["keyword",1],init:["keyword",1],interface:["keyword",1],annotation:["keyword",1],data:["keyword",1],sealed:["keyword",1],internal:["keyword",1],infix:["keyword",1],operator:["keyword",1],out:["keyword",1],by:["keyword",1],constructor:["keyword",1],super:["keyword",1],tailrec:["keyword",1],where:["keyword",1],const:["keyword",1],inner:["keyword",1],suspend:["keyword",1],typealias:["keyword",1],external:["keyword",1],expect:["keyword",1],actual:["keyword",1],Byte:["built_in",1],Short:["built_in",1],Char:["built_in",1],Int:["built_in",1],Long:["built_in",1],Boolean:["built_in",1],Float:["built_in",1],Double:["built_in",1],Void:["built_in",1],Unit:["built_in",1],Nothing:["built_in",1],true:["literal",1],false:["literal",1],null:["literal",1]},keywordPattern:"\\w+"},{relevance:0,rules:[2,3,4],scope:"comment",begin:"/\\*\\*",end:"\\*/"},{rules:[],scope:"doctag",begin:"@[A-Za-z]+",end:"\\B|\\b"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[6,7],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[9,12,13],scope:"comment",begin:"/\\*",end:"\\*/"},{rules:[10,11],scope:"comment",begin:"/\\*",end:"\\*/"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[],scope:"keyword",begin:"\\b(break|continue|return|this)\\b",end:"\\B|\\b",starts:15},{rules:[16],begin:"\\B|\\b",end:"\\B|\\b"},{rules:[],scope:"symbol",begin:"@\\w+",end:"\\B|\\b"},{rules:[],scope:"symbol",begin:"[a-zA-Z_]\\w*@",end:"\\B|\\b"},{rules:[],scope:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*[a-zA-Z_]\\w*)?",end:"\\B|\\b"},{rules:[20],scope:"meta",begin:"@[a-zA-Z_]\\w*",end:"\\B|\\b"},{rules:[21,30,32,20],begin:"\\(",end:"\\)"},{rules:[22,23],scope:"string",begin:'"""',end:'"""(?=[^"])'},{rules:[],scope:"variable",begin:"\\$[a-zA-Z_]\\w*",end:"\\B|\\b"},{rules:[24,25,26,28],scope:"subst",begin:"\\$\\{",end:"\\}"},{relevance:0,rules:[],scope:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",end:"\\B|\\b"},{rules:[22,23],scope:"string",begin:'"""',end:'"""(?=[^"])'},{rules:[27],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[29,22,23],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[31],scope:"string",begin:"'",end:"'",illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[33,22,23],scope:"string",begin:'"',end:'"',illegal:"\\n"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{relevance:5,rules:[35,37,38,8],scope:"function",begin:"\\b(fun)(?!\\.)(?=\\b|\\s)",end:"[(]|$",excludeEnd:!0,returnBegin:!0,keywords:{abstract:["keyword",1],as:["keyword",1],val:["keyword",1],var:["keyword",1],vararg:["keyword",1],get:["keyword",1],set:["keyword",1],class:["keyword",1],object:["keyword",1],open:["keyword",1],private:["keyword",1],protected:["keyword",1],public:["keyword",1],noinline:["keyword",1],crossinline:["keyword",1],dynamic:["keyword",1],final:["keyword",1],enum:["keyword",1],if:["keyword",0],else:["keyword",1],do:["ke
7yword",1],while:["keyword",1],for:["keyword",0],when:["keyword",1],throw:["keyword",1],try:["keyword",1],catch:["keyword",1],finally:["keyword",1],import:["keyword",1],package:["keyword",1],is:["keyword",1],in:["keyword",0],fun:["keyword",1],override:["keyword",1],companion:["keyword",1],reified:["keyword",1],inline:["keyword",1],lateinit:["keyword",1],init:["keyword",1],interface:["keyword",1],annotation:["keyword",1],data:["keyword",1],sealed:["keyword",1],internal:["keyword",1],infix:["keyword",1],operator:["keyword",1],out:["keyword",1],by:["keyword",1],constructor:["keyword",1],super:["keyword",1],tailrec:["keyword",1],where:["keyword",1],const:["keyword",1],inner:["keyword",1],suspend:["keyword",1],typealias:["keyword",1],external:["keyword",1],expect:["keyword",1],actual:["keyword",1],Byte:["built_in",1],Short:["built_in",1],Char:["built_in",1],Int:["built_in",1],Long:["built_in",1],Boolean:["built_in",1],Float:["built_in",1],Double:["built_in",1],Void:["built_in",1],Unit:["built_in",1],Nothing:["built_in",1],true:["literal",1],false:["literal",1],null:["literal",1]},keywordPattern:"\\w+",notAfterDot:!0},{relevance:0,rules:[36],begin:"[a-zA-Z_]\\w*\\s*\\(",end:"\\B|\\b",returnBegin:!0},{relevance:0,rules:[],scope:"title",begin:"[a-zA-Z_]\\w*",end:"\\B|\\b"},{relevance:0,rules:[],scope:"type",begin:"<",end:">",keywords:{reified:["keyword",1]},keywordPattern:"\\w+"},{relevance:0,rules:[39,45,8,18,19,25,26,28,48],scope:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:{abstract:["keyword",1],as:["keyword",1],val:["keyword",1],var:["keyword",1],vararg:["keyword",1],get:["keyword",1],set:["keyword",1],class:["keyword",1],object:["keyword",1],open:["keyword",1],private:["keyword",1],protected:["keyword",1],public:["keyword",1],noinline:["keyword",1],crossinline:["keyword",1],dynamic:["keyword",1],final:["keyword",1],enum:["keyword",1],if:["keyword",0],else:["keyword",1],do:["keyword",1],while:["keyword",1],for:["keyword",0],when:["keyword",1],throw:["keyword",1],try:["keyword",1],catch:["keyword",1],finally:["keyword",1],import:["keyword",1],package:["keyword",1],is:["keyword",1],in:["keyword",0],fun:["keyword",1],override:["keyword",1],companion:["keyword",1],reified:["keyword",1],inline:["keyword",1],lateinit:["keyword",1],init:["keyword",1],interface:["keyword",1],annotation:["keyword",1],data:["keyword",1],sealed:["keyword",1],internal:["keyword",1],infix:["keyword",1],operator:["keyword",1],out:["keyword",1],by:["keyword",1],constructor:["keyword",1],super:["keyword",1],tailrec:["keyword",1],where:["keyword",1],const:["keyword",1],inner:["keyword",1],suspend:["keyword",1],typealias:["keyword",1],external:["keyword",1],expect:["keyword",1],actual:["keyword",1],Byte:["built_in",1],Short:["built_in",1],Char:["built_in",1],Int:["built_in",1],Long:["built_in",1],Boolean:["built_in",1],Float:["built_in",1],Double:["built_in",1],Void:["built_in",1],Unit:["built_in",1],Nothing:["built_in",1],true:["literal",1],false:["literal",1],null:["literal",1]},keywordPattern:"\\w+"},{relevance:0,rules:[40,41,42,8],begin:":",end:"[=,\\/]",endsWithParent:!0},{rules:[],scope:"type",begin:"[a-zA-Z_]\\w*",end:"\\B|\\b"},{rules:[40,41],begin:"\\(",end:"\\)"},{rules:[43,44],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[46,47],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",end:"\\B|\\b"},{rules:[50,51,52,53,18,19],begin:"(class|interface|trait)(\\s+)([a-zA-Z_]\\w*)",end:"[:\\{(]|$",excludeEnd:!0,illegal:"extends implements",keywords:{class:["keyword",1],interface:["keyword",1],trait:["keyword",1]},keywordPattern:"\\w+",captureScopes:{1:null,2:null,3:"title.class"}},{relevance:0,rules:[],begin:"\\b(public|protected|internal|private|constructor)(?!\\.)(?=\\b|\\s)",end:"\\B|\\b",keywords:{public:["keyword",1],protected:["keyword",1],internal:["keyword",1],private:["keyword",1],constructor:["keyword",1]},keywordPattern:"\\w+",notAfterDot:!0},{relevance:0,rules:[],scope:"title",begin:"[a-zA-Z_]\\w*",end:"\\B|\\b"},{relevance:0,rules:[],scope:"type",begin:"<",end:">",excludeBegin:!0,excludeEnd:!0},{rules:[],scope:"type",begin:"[,:]\\s*",end:"[<\\(,){\\s]|$",excludeBegin:!0,returnEnd:!0},{rules:[],scope:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
8`},{relevance:0,rules:[],scope:"number",begin:"(\\b([0-9](_*[0-9])*)((\\.([0-9](_*[0-9])*))|\\.)?|(\\.([0-9](_*[0-9])*)))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b([0-9](_*[0-9])*)((\\.([0-9](_*[0-9])*))[fFdD]?\\b|\\.([fFdD]\\b)?)",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"(\\.([0-9](_*[0-9])*))[fFdD]?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0[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])*)[fFdD]?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b(0|[1-9](_*[0-9])*)(?:[uU][lL]?|[lL])?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0[xX]([0-9a-fA-F](_*[0-9a-fA-F])*)(?:[uU][lL]?|[lL])?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0(_*[0-7])*(?:[uU][lL]?|[lL])?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0[bB][01](_*[01])*(?:[uU][lL]?|[lL])?\\b",end:"\\B|\\b"}],aliases:["kt","kts","ktm","ktx"]}},eo=Qt;/*!
9 * Grammar "swift" derived from highlight.js 11.12.0 (BSD-3-Clause).
10 * Copyright (c) 2006, Ivan Sagalaev. Full text: LICENSE.highlight.txt.
11 */const ro={name:"swift",register:{name:"swift",caseInsensitive:!1,unicode:!1,disableAutodetect:!1,states:[{rules:[1,4,7,112,113,114,115,118,119,120,98,103,106,109,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,25,84,85,12,93],keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["ke
11yword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[2,3],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[4,5,6],scope:"comment",begin:"/\\*",end:"\\*/"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[8,86,111],begin:"((func|macro))(\\s+)((?:`(?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*`|(?:[a-zA-Z_]|[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]|[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]|[\\u0100-\\u
1102FF\\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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*|(?:[/=\\-+!*%<>&|^~?]|[\\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])(?:(?:[/=\\-+!*%<>&|^~?]|[\\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])|[\\u0300-\\u036F]|[\\u1DC0-\\u1DFF]|[\\u20D0-\\u20FF]|[\\uFE00-\\uFE0F]|[\\uFE20-\\uFE2F])*))",end:"\\B|\\b",illegal:"(?:\\[|%)",captureScopes:{1:"keyword",3:null,4:"title.function"}},{rules:[9,4,12],begin:"<",end:">",keywords:{repeat:["keyword",1],each:["keyword",1]},keywordPattern:"\\w+"},{rules:[10,11],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{relevance:0,rules:[13,14,15,16,17,18],begin:"(?=\\b[A-Z])",end:"\\B|\\b"},{rules:[],scope:"type",begin:"(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])+",end:"\\B|\\b"},{relevance:0,rules:[],scope:"type",begin:"[A-Z](?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*",end:"\\B|\\b"},{relevance:0,rules:[],begin:"[?!]+",end:"\\B|\\b"},{relevance:0,rules:[],begin:"\\.\\.\\.",end:"\\B|\\b"},{relevance:0,rules:[],begin:"\\s+&\\s+(?=[A-Z](?:(?:[a-zA-Z_]|[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]|[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]|[\\u0100-\\u
1102FF\\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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*)",end:"\\B|\\b"},{rules:[19,4,22,23,24,25,84,85,28,12],begin:"<",end:">",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[20,21],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[],begin:"(\\.)((?:\\bProtocol\\b|\\bType\\b|\\binit\\b|\\bself\\b))",end:"\\B|\\b",captureScopes:{1:null,2:"keyword"}},{relevance:0,rules:[],begin:"\\.(?:sending|actor|any|associatedtype|async|await|as\\?|as!|as|borrowing|break|case|catch|class|consume|consuming|continue|convenience|copy|default|defer|deinit|didSet|distributed|do|dynamic|each|else|enum|extension|fallthrough|fileprivate\\(set\\)|fileprivate|final|for|func|get|guard|if|import|indirect|infix|init\\?|init!|inout|internal\\(set\\)|internal|in|is|isolated|nonisolated|lazy|let|macro|mutating|nonmutating|open\\(set\\)|open|operator|optional|override|package|postfix|precedencegroup|prefix|private\\(set\\)|private|protocol|public\\(set\\)|public|repeat|required|rethrows|return|set|some|static|struct|subscript|super|switch|throws|throw|try\\?|try!|try|typealias|unowned\\(safe\\)|unowned\\(unsafe\\)|unowned|var|weak|where|while|willSet)",end:"\\B|\\b"},{rules:[],scope:"keyword",begin:"(?:\\bnonisolated\\(unsafe\\)\\B|\\bnonisolated\\(nonsending\\)\\B|#(?:Preview|expect|require)\\b|\\bas\\?\\B|\\bas!\\B|\\bfileprivate\\(set\\)\\B|\\binit\\?\\B|\\binit!\\B|\\binternal\\(set\\)\\B|\\bo
11pen\\(set\\)\\B|\\bprivate\\(set\\)\\B|\\bpublic\\(set\\)\\B|\\btry\\?\\B|\\btry!\\B|\\bunowned\\(safe\\)\\B|\\bunowned\\(unsafe\\)\\B|\\bAny\\b|\\bSelf\\b|\\binit\\b|\\bself\\b)",end:"\\B|\\b"},{rules:[],scope:"keyword",begin:"(@|#(un)?)available",end:"\\B|\\b",starts:26},{rules:[27],begin:"\\B|\\b",end:"\\B|\\b"},{rules:[28,29,30,31,32,33,34,35,42,47,52,57,61,65,69],begin:"\\(",end:"\\)",keywords:{iOS:["keyword",1],iOSApplicationExtension:["keyword",1],macOS:["keyword",1],macOSApplicationExtension:["keyword",1],macCatalyst:["keyword",1],macCatalystApplicationExtension:["keyword",1],watchOS:["keyword",1],watchOSApplicationExtension:["keyword",1],tvOS:["keyword",1],tvOSApplicationExtension:["keyword",1],swift:["keyword",1]},keywordPattern:"\\w+"},{relevance:0,rules:[],begin:"->",end:"\\B|\\b"},{relevance:0,rules:[],scope:"operator",begin:"(?:[/=\\-+!*%<>&|^~?]|[\\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])(?:(?:[/=\\-+!*%<>&|^~?]|[\\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])|[\\u0300-\\u036F]|[\\u1DC0-\\u1DFF]|[\\u20D0-\\u20FF]|[\\uFE00-\\uFE0F]|[\\uFE20-\\uFE2F])*",end:"\\B|\\b"},{relevance:0,rules:[],scope:"operator",begin:"\\.(\\.|(?:(?:[/=\\-+!*%<>&|^~?]|[\\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])|[\\u0300-\\u036F]|[\\u1DC0-\\u1DFF]|[\\u20D0-\\u20FF]|[\\uFE00-\\uFE0F]|[\\uFE20-\\uFE2F]))+",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0x(([0-9a-fA-F]_*)+)(\\.(([0-9a-fA-F]_*)+))?([pP][+-]?(([0-9]_*)+))?\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0o([0-7]_*)+\\b",end:"\\B|\\b"},{relevance:0,rules:[],scope:"number",begin:"\\b0b([01]_*)+\\b",end:"\\B|\\b"},{rules:[36,37,38,39],scope:"string",begin:'"""',end:'"""'},{rules:[],scope:"subst",begin:`\\\\[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\[\\t ]*(?:[\\r\\n]|\\r\\n)",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,83],scope:"subst",begin:"\\\\\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["ke
11yword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{relevance:0,rules:[],begin:"\\.(?: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)",end:"\\B|\\b"},{rules:[],scope:"built_in",begin:"\\b(?: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)(?=\\()",end:"\\B|\\b"},{rules:[43,44,45,46],scope:"string",begin:'#"""',end:'"""#'},{rules:[],scope:"subst",begin:`\\\\#[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\#u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\#[\\t ]*(?:[\\r\\n]|\\r\\n)",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,82],scope:"subst",begin:"\\\\#\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[48,49,50,51],scope:"string",begin:'##"""',end:'"""##'},{rules:[],scope:"subst",begin:`\\\\##[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\##u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\##[\\t ]*(?:[\\r\\n]|\\r\\n)",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,81],scope:"subst",begin:"\\\\##\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["ke
11yword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[53,54,55,56],scope:"string",begin:'###"""',end:'"""###'},{rules:[],scope:"subst",begin:`\\\\###[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\###u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\###[\\t ]*(?:[\\r\\n]|\\r\\n)",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,80],scope:"subst",begin:"\\\\###\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[58,59,60],scope:"string",begin:'"',end:'"'},{rules:[],scope:"subst",begin:`\\\\[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,79],scope:"subst",begin:"\\\\\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["ke
11yword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[62,63,64],scope:"string",begin:'#"',end:'"#'},{rules:[],scope:"subst",begin:`\\\\#[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\#u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,78],scope:"subst",begin:"\\\\#\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[66,67,68],scope:"string",begin:'##"',end:'"##'},{rules:[],scope:"subst",begin:`\\\\##[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\##u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,77],scope:"subst",begin:"\\\\##\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["ke
11yword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[70,71,72],scope:"string",begin:'###"',end:'"###'},{rules:[],scope:"subst",begin:`\\\\###[0\\\\tnr"']`,end:"\\B|\\b"},{rules:[],scope:"subst",begin:"\\\\###u\\{[0-9a-fA-F]{1,8}\\}",end:"\\B|\\b"},{rules:[22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,76],scope:"subst",begin:"\\\\###\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[],begin:"`(?:[a-zA-Z_]|[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]|[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]|[\\u0100-\\u
1102FF\\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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*`",end:"\\B|\\b"},{rules:[],scope:"variable",begin:"\\$\\d+",end:"\\B|\\b"},{rules:[],scope:"variable",begin:"\\$(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])+",end:"\\B|\\b"},{rules:[76,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[77,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[78,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[79,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[80,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[81,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[82,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[83,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75],begin:"\\(",end:"\\)"},{rules:[],scope:"keyword",begin:"@(?:attached|autoclosure|convention\\((?:swift|block|c)\\)|discardableResult|dynamicCallable|dynamicMemberLookup|escaping|freestanding|frozen|GKInspectable|IBAction|IBDesignable|IBInspectable|IBOutlet|IBSegueAction|inlinable|main|nonobjc|NSApplicationMain|NSCopying|NSManaged|objc\\((?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*\\)|objc|objcMembers|propertyWrapper|requires_stored_property_inits|resultBuilder|Sendable|testable|UIApplicationMain|unchecked|unknown|usableFromInline|warn_unqualified_access)(?=(?:\\(|\\s+))",end:"\\B|\\b"},{rules:[],scope:"meta",begin:"@(?:[a-zA-Z_]|[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]|[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]|[\\u0100-\\u
1102FF\\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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*",end:"\\B|\\b"},{rules:[87,90,4,22,23,24,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,25,84,85,12,93],begin:"\\(",end:"\\)",endsParent:!0,illegal:`["']`,keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{relevance:0,rules:[88,89],begin:"(?:(?=(?:[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])(?:(?:[a-zA-Z_]|[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]|[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]|[\\u0100-\\u
1102FF\\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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*\\s*:)|(?=(?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*\\s+(?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*\\s*:))",end:":"},{rules:[],scope:"keyword",begin:"\\b_\\b",end:"\\B|\\b"},{rules:[],scope:"params",begin:"(?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*",end:"\\B|\\b"},{rules:[91,92],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{relevance:0,rules:[93,94,95,4,98,103,106,109,22,23,24,40,41,28,29,30,31,32,33,34,35,42,47,52,57,61,65,69,73,74,75,25,84,85,12],begin:"\\(",end:"\\)",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["ke
11yword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{relevance:0,rules:[],begin:"(?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*\\s*:",end:"\\B|\\b",keywords:{_:["keyword",0]},keywordPattern:"\\w+"},{rules:[96,97],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"},{rules:[99,100,102],scope:"regexp",begin:"###\\/",end:"\\/###"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{relevance:0,rules:[101],begin:"\\[",end:"\\]"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[],scope:"comment",begin:"#(?!.*\\/###)",end:"$"},{rules:[104,100,105],scope:"regexp",begin:"##\\/",end:"\\/##"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[],scope:"comment",begin:"#(?!.*\\/##)",end:"$"},{rules:[107,100,108],scope:"regexp",begin:"#\\/",end:"\\/#"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{rules:[],scope:"comment",begin:"#(?!.*\\/#)",end:"$"},{rules:[110,100],scope:"regexp",begin:"\\/[^\\s](?=[^/\\n]*\\/)",end:"\\/"},{relevance:0,rules:[],begin:"\\\\[\\s\\S]",end:"\\B|\\b"},{relevance:0,rules:[],begin:"\\s+",end:"\\B|\\b"},{rules:[8,86,111],begin:"(\\b(?:subscript|init[?!]?))(\\s*(?=[<(]))",end:"\\B|\\b",illegal:"\\[|%",captureScopes:{1:"keyword",2:null}},{rules:[],begin:"(class\\b)(\\s+)(func\\b)(\\s+)(\\b[A-Za-z_][A-Za-z0-9_]*\\b)",end:"\\B|\\b",captureScopes:{1:"keyword",2:null,3:"keyword",4:null,5:"title.function"}},{rules:[],begin:"(class\\b)(\\s+)(var\\b)",end:"\\B|\\b",captureScopes:{1:"keyword",2:null,3:"keyword"}}
11,{rules:[8,22,23,24,116],begin:"((struct|protocol|class|extension|enum|actor))(\\s+)((?:[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])(?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*)(\\s*)",end:"\\B|\\b",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["keyword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)",captureScopes:{1:"keyword",3:null,4:"title.class",5:null}},{relevance:0,rules:[117,22,23,24],begin:":",end:"\\{",keywords:{actor:["keyword",1],any:["keyword",1],associatedtype:["keyword",1],async:["keyword",1],await:["keyword",1],as:["keyword",1],borrowing:["keyword",1],break:["keyword",1],case:["keyword",1],catch:["keyword",1],class:["keyword",1],consume:["keyword",1],consuming:["keyword",1],continue:["keyword",1],convenience:["keyword",1],copy:["keyword",1],default:["keyword",1],defer:["keyword",1],deinit:["keyword",1],didSet:["keyword",1],distributed:["keyword",1],do:["ke
11yword",1],dynamic:["keyword",1],each:["keyword",1],else:["keyword",1],enum:["keyword",1],extension:["keyword",1],fallthrough:["keyword",1],fileprivate:["keyword",1],final:["keyword",1],for:["keyword",0],func:["keyword",1],get:["keyword",1],guard:["keyword",1],if:["keyword",0],import:["keyword",1],indirect:["keyword",1],infix:["keyword",1],inout:["keyword",1],internal:["keyword",1],in:["keyword",0],is:["keyword",1],isolated:["keyword",1],nonisolated:["keyword",1],lazy:["keyword",1],let:["keyword",1],macro:["keyword",1],mutating:["keyword",1],nonmutating:["keyword",1],open:["keyword",1],operator:["keyword",1],optional:["keyword",1],override:["keyword",1],package:["keyword",1],postfix:["keyword",1],precedencegroup:["keyword",1],prefix:["keyword",1],private:["keyword",1],protocol:["keyword",1],public:["keyword",1],repeat:["keyword",1],required:["keyword",1],rethrows:["keyword",1],return:["keyword",1],set:["keyword",1],some:["keyword",1],static:["keyword",1],struct:["keyword",1],subscript:["keyword",1],super:["keyword",1],switch:["keyword",1],throws:["keyword",1],throw:["keyword",1],try:["keyword",1],typealias:["keyword",1],unowned:["keyword",1],var:["keyword",1],weak:["keyword",1],where:["keyword",1],while:["keyword",1],willSet:["keyword",1],_:["keyword",0],"#colorLiteral":["keyword",1],"#column":["keyword",1],"#dsohandle":["keyword",1],"#else":["keyword",1],"#elseif":["keyword",1],"#endif":["keyword",1],"#error":["keyword",1],"#file":["keyword",1],"#fileID":["keyword",1],"#fileLiteral":["keyword",1],"#filePath":["keyword",1],"#function":["keyword",1],"#if":["keyword",1],"#imageLiteral":["keyword",1],"#keyPath":["keyword",1],"#line":["keyword",1],"#selector":["keyword",1],"#sourceLocation":["keyword",1],"#warning":["keyword",1],sending:["keyword",1],false:["literal",1],nil:["literal",1],true:["literal",1]},keywordPattern:"(?:\\b\\w+|#\\w+)"},{rules:[],scope:"title.class.inherited",begin:"[A-Z](?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*",end:"\\B|\\b"},{rules:[],begin:"(operator)(\\s+)((?:[/=\\-+!*%<>&|^~?]|[\\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])(?:(?:[/=\\-+!*%<>&|^~?]|[\\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])|[\\u0300-\\u036F]|[\\u1DC0-\\u1DFF]|[\\u20D0-\\u20FF]|[\\uFE00-\\uFE0F]|[\\uFE20-\\uFE2F])*)",end:"\\B|\\b",captureScopes:{1:"keyword",2:null,3:"title"}},{rules:[12],begin:"(precedencegroup)(\\s+)([A-Z](?:(?:[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])|\\d|[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F])*)",end:"}",keywords:{assignment:["keyword",1],associativity:["keyword",1],higherThan:["keyword",1],left:["keyword",1],lowerThan:["keyword",1],none:["keyword",1],right:["keyword",1],false:["keyword",1],nil:["keyword",1],true:["keyword",1]},keywordPattern:"\\w+",captureScopes:{1:"keyword",2:null,3:"title"}},{relevance:0,rules:[121,4],begin:"\\b(import)(?!\\.)(?=\\b|\\s)",end:"$",keywords:{import:["keyword",1]},keywordPattern:"\\w+",notAfterDot:!0},{rules:[122,123],scope:"comment",begin:"//",end:"$"},{relevance:0,rules:[],scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:"(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",excludeBegin:!0},{rules:[],begin:"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",end:"\\B|\\b"}]}},to=ro,He=""+new URL("../assets/pytorch-on-the-edge-with-ort.cdaa9c84.png",import.meta.url).href,oo=""+new URL("../assets/pytorch-on-the-edge-puppies.106f83fa.png",import.meta.url).href,uo=""+new URL("../assets/pytorch-on-the-edge-speechrec.d26f9fad.png",import.meta.url).href,no=""+new URL("../assets/pytorch-on-the-edge-training.bd3254f5.png",import.meta.url).href,io=""+new URL("../assets/pytorch-on-the-edge-textgen.4b552a2e.png",import.meta.url).href;function ao(k){let c,D,E,B,v,A,x,Pe,Oe,Ie,ze,Xe,Me,Le,Se,Ne,Ue,C,qe,y,_,jr="Run PyTorch models on the edge",We,T,Vr=`By: <a href="https://www.linkedin.com/in/natkershaw/" class="dark:text-blue-300 text-blue-800 underline">Natalie Kershaw</a>
12		and
13		<a href="https://www.linkedin.com/in/prasanthpulavarthi/" class="dark:text-blue-300 text-blue-800 underline">Prasanth Pulavarthi</a>`,je,P,Yr="12TH OCTOBER, 2023",Ve,Ze,r,O,Jr=`Most modern ML models are developed with PyTorch. The agility and flexibility that PyTorch
14				provides for creating and training models has made it the most popular deep learning
15				framework today. The typical workflow is to train these models in the cloud and run them
16				from the cloud as well. However, many scenarios are arising that make it more attractive -
17				or in some cases, required - to run locally on device. These include:`,Ye,I,Qr="<li>Avoiding network round-trips to the cloud (for example in audio and video processing)</li> <li>Keeping user data on device (for privacy protection or regulatory requirements)</li> <li>High cost of cloud resources (especially when device capabilities are underutilized)</li> <li>Application requirements to operate without internet connectivity</li>",Je,z,et,Qe,X,rt=`In this article, we&#39;ll demystify running PyTorch models on the edge. We define &#39;edge&#39; as
18				anywhere that is outside of the cloud, ranging from large, well-resourced personal computers
19				to small footprint devices such as mobile phones. This has been a challenging task to
20				accomplish in the past, but new advances in model optimization and software like
21				<a href="https://onnxruntime.ai/pytorch" class="dark:text-blue-300 text-blue-800 underline">ONNX Runtime</a>
22				make it more feasible - even for new generative AI and large language models like Stable Diffusion,
23				Whisper, and Llama2.`,er,M,tt="Considerations for PyTorch models on the edge",rr,L,ot=`There are several factors to keep in mind when thinking about running a PyTorch model on the
24				edge:`,tr,S,ut=`<li class="mb-2"><strong>Size</strong>: modern models can be several gigabytes (hence the name Large
25					Language Models!). On the cloud, size is usually not a consideration until it becomes too
26					large to fit on a single GPU. At that point there are various well-known solutions for
27					running across multiple GPUs. For edge devices, we need to find models that can fit within
28					the constraints of the device. This sometimes requires a tradeoff with quality. Most
29					modern models come in several sizes (1 billion parameters, 13 billion parameters, 70
30					billion parameters, etc) so you can select a variant that fits on your device. Techniques
31					such as quantization are usually applied to reduce the number of bits representing
32					parameters, further reducing the model size. The size of the application is also
33					constrained by the app stores, so bringing in gigabytes of libraries won&#39;t work on the
34					edge.</li> <li class="mb-2"><strong>API for application integration</strong>: on the cloud, models are usually
35					packaged as Docker containers that expose an endpoint that is called by an application or
36					service. On edge devices, Docker containers may take up too many resources or may not even
37					be supported. By using an optimized engine, like ONNX Runtime, the dependency on Python
38					and Docker containers can be eliminated. ONNX Runtime also has APIs in many languages
39					including C, C++, C#, Rust, Java, JavaScript, Objective-C and Swift for making it easier
40					to integrate natively with the hosting application.</li> <li class="mb-2"><strong>Performance</strong>: with large amounts of memory, no power restrictions, and
41					hefty compute capabilities, running non-optimized models on the cloud is possible. On edge
42					devices, these luxuries do not exist and optimization is crucial. For example, ONNX
43					Runtime optimizes memory allocations, fuses model operators, reduces kernel launch times,
44					minimizes tensor transfers between processing units, and applies tuned matrix math
45					algorithms. It&#39;s also able to make use of compilers and engines that are device-specific,
46					providing a common interface for your application while harnessing the best approach on
47					each device.</li> <li class="mb-2"><strong>Maintainability</strong>: on the cloud, updating a model is as simple as deploying
48					a new container image and ramping up traffic. On the edge, you need to consider how you
49					will distribute model updates. Sometimes this involves publishing updates to an app store,
50					sometimes it might be possible to implement a data update mechanism within your app and
51					download new model files or maybe even deltas. There are many possible paths, so we won&#39;t
52					go into much depth on this topic in this article but it&#39;s an aspect to keep in mind as you
53					plan for production.</li> <li class="mb-2"><strong>Hybrid</strong>: instead of cloud versus device, you can choose to utilize both.
54					There are several hybrid patterns that are used in production today by applications such
55					as Office. One pattern is to dynamically decide whether to run on the device or in the
56					cloud based on network conditions or input characteristics. Another pattern is to run part
57					of the model pipeline on the device and part on the cloud. This is especially useful with
58					modern model pipelines that have separate encoder and decoder stages. Using an engine like
59					ONNX Runtime that works on both cloud and device simplifies development. We&#39;ll discuss
60					hybrid scenarios in more detail in a forthcoming article.</li> <li><strong>Personalization</strong>: in many cases, the PyTorch model is simply being run on
61					the device. However, you may also have scenarios where you need to personalize the model
62					on the device without sending data to the cloud. Recommendation and content targeting are
63					example scenarios that can improve their quality by updating models based on activity on
64					the device. Fine tuning and training with PyTorch on the device may not feasible (due to
65					performance and size concerns) but using an engine like ONNX Runtime allows PyTorch models
66					to be updated and personalized locally. The same mechanism also enabled federated
67					learning, which can help mitigate user data exposure.</li>`,or,N,nt="Tools for PyTorch models on the edge",ur,Z,it=`We mentioned ONNX Runtime several times above. ONNX Runtime is a compact, standards-based
68				engine that has deep integration with PyTorch. By using PyTorch's ONNX APIs, your PyTorch
69				models can run on a spectrum of edge devices with ONNX Runtime.`,nr,$,dt=`The first step for running PyTorch models on the edge is to get them into a lightweight
70				format that doesn&#39;t require the PyTorch framework and its gigabytes of dependencies. PyTorch
71				has thought about this and includes an API that enables exactly this - <a href="https://pytorch.org/docs/stable/onnx.html" class="dark:text-blue-300 text-blue-800 underline">torch.onnx</a>. <a href="https://onnx.ai/">ONNX</a> is an open standard that defines the operators that make
72				up models. The PyTorch ONNX APIs take the Pythonic PyTorch code and turn it into a functional
73				graph that captures the operators that are needed to run the model without Python. As with everything
74				in machine learning, there are some limitations to be aware of. Some PyTorch models cannot be
75				represented as a single graph - in this case you may need to output several graphs and stitch
76				them together in your own pipeline.`,ir,H,at=`The popular Hugging Face library also has APIs that build on top of this torch.onnx
77				functionality to export models to the ONNX format. Over <a href="https://huggingface.co/blog/ort-accelerating-hf-models" class="dark:text-blue-300 text-blue-800 underline">130,000 models</a> are supported making it very likely that the model you care about is one of them.`,dr,U,st=`In this article, we'll show you several examples involving state-of-the-art PyTorch models
78				(like Whisper and Stable Diffusion) on popular devices (like Windows laptops, mobile phones,
79				and web browsers) via various languages (from C# to JavaScript to Swift).`,ar,q,lt="Examples of PyTorch models on the edge",sr,R,wt="Stable Diffusion on Windows",lr,G,yt=`The Stable Diffusion pipeline consists of five PyTorch models that build an image from a
80				text description. The diffusion process iterates on random pixels until the output image
81				matches the description.`,wr,K,kt="To run on the edge, four of the models can be exported to ONNX format from HuggingFace.",yr,W,kr,j,ct='You don&#39;t have to export the fifth model, ClipTokenizer, as it is available in <a href="https://onnxruntime.ai/docs/extensions" class="dark:text-blue-300 text-blue-800 underline">ONNX Runtime extensions</a>, a library for pre and post processing PyTorch models.',cr,V,Ft=`To run this pipeline of models as a .NET application, we build the pipeline code in C#. This
82				code can be run on CPU, GPU, or NPU, if they are available on your machine, using ONNX
83				Runtime&#39;s device-specific hardware accelerators. This is configured with the <code class="bg-gray-200 dark:bg-gray-700 p-1 rounded">ExecutionProviderTarget</code> below.`,Fr,Y,pr,J,pt="This is the output of the model pipeline, running with 50 inference iterations:",br,Q,bt,mr,ee,mt='You can build the application and run it on Windows with the detailed steps shown in this <a href="https://onnxruntime.ai/docs/tutorials/csharp/stable-diffusion-csharp.html" class="dark:text-blue-300 text-blue-800 underline">tutorial</a>.',gr,re,gt="Text generation in the browser",hr,te,ht=`Running a PyTorch model locally in the browser is not only possible but super simple with
84				the <a href="https://huggingface.co/docs/transformers.js/index" class="dark:text-blue-300 text-blue-800 underline">transformers.js</a> library. Transformers.js uses ONNX Runtime Web as its backend. Many models are already converted
85				to ONNX and served by the tranformers.js CDN, making inference in the browser a matter of writing
86				a few lines of HTML:`,fr,oe,Dr,ue,ft=`You can also embed the call to the transformers pipeline using vanilla JavaScript, or in a
87				web application, with React or Next.js, or write a browser extension.`,Er,ne,Dt=`ONNX Runtime Web currently uses web assembly to execute the model on the CPU. This is fine
88				for many models but leveraging the GPU, if one exists on the device, can improve the user
89				experience. ONNX Runtime Web support for WebGPU is coming *very* soon and enables you to tap
90				into the GPU while use the same inference APIs.`,Br,ie,Et,vr,de,Bt="Speech recognition with Whisper on mobile",Ar,ae,vt=`Whisper from OpenAI is a PyTorch speech recognition model. Whisper comes in a number of
91				different size variants - the smallest, Whisper Tiny, is suitable to run on mobile devices.
92				All components of the Whisper Tiny model (audio decoder, encoder, decoder, and text sequence
93				generation) can be composed and exported to a single ONNX model using the <a href="https://github.com/microsoft/Olive/tree/main/examples/whisper" class="dark:text-blue-300 text-blue-800 underline">Olive framework</a>. To run this model as part of a mobile application, you can use ONNX Runtime Mobile, which
94				supports Android, iOS, react-native, and MAUI/Xamarin.`,xr,se,At=`ONNX Runtime Mobile supports hardware acceleration via NNAPI (on Android), CoreML (on iOS),
95				and XNNPACK (both iOS and Android).`,Cr,le,xt='The relevant snippet of a example <a href="https://github.com/microsoft/onnxruntime-inference-examples/tree/main/mobile/examples/spee
95ch_recognition" class="dark:text-blue-300 text-blue-800 underline">Android mobile app</a> that performs speech transcription on short samples of audio is shown below:',_r,we,Tr,ye,Ct="You can record a short audio clip to transcribe.",Pr,ke,_t,Or,ce,Tt="Train a model to recognize your voice on mobile",Ir,Fe,Pt=`ONNX Runtime can also take a pre-trained model and adapt it to new data. It can do this on
96				the edge - on mobile specifically where it is easy to record your voice, access your photos
97				and other personalized data. Importantly, your data does not leave the device during
98				training.`,zr,pe,Ot=`For example, you can train a PyTorch model to recognize just your own voice on your mobile
99				phone, for authentication scenarios.`,Xr,be,It=`The PyTorch model is obtained from HuggingFace in your development environment, and extra
100				layers are added to perform the speaker classification:`,Mr,me,Lr,ge,zt=`The model and other components necessary for training (a loss function to measure the
101				quality of the model and an optimizer to instruct how the weights are adjusted during
102				training) are exported with ONNX Runtime Training:`,Sr,he,Nr,fe,Xt=`This set of artifacts is now ready to be loaded by the mobile app, shown here as iOS Swift
103				code. The app asks the user for samples of their voice and the model is trained with the
104				samples.`,Zr,De,$r,Ee,Mt="Once the model is trained, you can run it to verify that a voice sample is you!",Hr,Be,Lt,Ur,ve,St=`You can read the full <a href="https://onnxruntime.ai/docs/tutorials/on-device-training/ios-app.html" class="dark:text-blue-300 text-blue-800 underline">Speaker Verification tutorial</a>, and
105				<a href="https://github.com/microsoft/onnxruntime-training-examples/tree/master/on_device_training/mobile/ios" class="dark:text-blue-300 text-blue-800 underline">build and run the application from source</a>.`,qr,Ae,Nt="Where to next?",Rr,xe,Zt=`In this article we've shown why you would run PyTorch models on the edge and what aspects to
106				consider. We also shared several examples with code that you can use for running
107				state-of-the-art PyTorch models on the edge with ONNX Runtime. We also showed how ONNX
108				Runtime was built for performance and cross-platform execution, making it the ideal way to
109				run PyTorch models on the edge. Have fun running PyTorch models on the edge with ONNX
110				Runtime!`,Gr,Ce,$t=`You may have noticed that we didn't include a Llama2 example even though ONNX Runtime is
111				optimized to run it. That's because the amazing Llama2 model deserves its own article, so
112				stay tuned for that!`,Re,_e,Ge;return C=new jt({props:{pathvar:""}}),W=new Te({props:{language:Wr,code:k[0]}}),Y=new Te({props:{language:Wt,code:k[1]}}),oe=new Te({props:{language:Jt,code:k[2]}}),we=new Te({props:{language:eo,code:k[3]}}),me=new Te({props:{language:Wr,code:k[4]}}),he=new Te({props:{language:Wr,code:k[5]}}),De=new Te({props:{language:to,code:k[6]}}),_e=new Vt({props:{pathvar:""}}),{c(){c=u("meta"),D=u("meta"),E=u("meta"),B=u("meta"),v=u("meta"),A=u("meta"),x=u("meta"),Pe=u("meta"),Oe=u("meta"),Ie=u("meta"),ze=u("meta"),Xe=u("meta"),Me=u("meta"),Le=u("meta"),Se=u("meta"),Ne=u("meta"),Ue=i(),F(C.$$.fragment),qe=i(),y=u("div"),_=u("h1"),_.textContent=jr,We=i(),T=u("p"),T.innerHTML=Vr,je=i(),P=u("p"),P.textContent=Yr,Ve=i(),Ze=u("div"),r=u("div"),O=u("p"),O.textContent=Jr,Ye=i(),I=u("ul"),I.innerHTML=Qr,Je=i(),z=u("img"),Qe=i(),X=u("p"),X.innerHTML=rt,er=i(),M=u("h2"),M.textContent=tt,rr=i(),L=u("p"),L.textContent=ot,tr=i(),S=u("ul"),S.innerHTML=ut,or=i(),N=u("h2"),N.textContent=nt,ur=i(),Z=u("p"),Z.textContent=it,nr=i(),$=u("p"),$.innerHTML=dt,ir=i(),H=u("p"),H.innerHTML=at,dr=i(),U=u("p"),U.textContent=st,ar=i(),q=u("h2"),q.textContent=lt,sr=i(),R=u("h3"),R.textContent=wt,lr=i(),G=u("p"),G.textContent=yt,wr=i(),K=u("p"),K.textContent=kt,yr=i(),F(W.$$.fragment),kr=i(),j=u("p"),j.innerHTML=ct,cr=i(),V=u("p"),V.innerHTML=Ft,Fr=i(),F(Y.$$.fragment),pr=i(),J=u("p"),J.textContent=pt,br=i(),Q=u("img"),mr=i(),ee=u("p"),ee.innerHTML=mt,gr=i(),re=u("h3"),re.textContent=gt,hr=i(),te=u("p"),te.innerHTML=ht,fr=i(),F(oe.$$.fragment),Dr=i(),ue=u("p"),ue.textContent=ft,Er=i(),ne=u("p"),ne.textContent=Dt,Br=i(),ie=u("img"),vr=i(),de=u("h3"),de.textContent=Bt,Ar=i(),ae=u("p"),ae.innerHTML=vt,xr=i(),se=u("p"),se.textContent=At,Cr=i(),le=u("p"),le.innerHTML=xt,_r=i(),F(we.$$.fragment),Tr=i(),ye=u("p"),ye.textContent=Ct,Pr=i(),ke=u("img"),Or=i(),ce=u("h3"),ce.textContent=Tt,Ir=i(),Fe=u("p"),Fe.textContent=Pt,zr=i(),pe=u("p"),pe.textContent=Ot,Xr=i(),be=u("p"),be.textContent=It,Mr=i(),F(me.$$.fragment),Lr=i(),ge=u("p"),ge.textContent=zt,Sr=i(),F(he.$$.fragment),Nr=i(),fe=u("p"),fe.textContent=Xt,Zr=i(),F(De.$$.fragment),$r=i(),Ee=u("p"),Ee.textContent=Mt,Hr=i(),Be=u("img"),Ur=i(),ve=u("p"),ve.innerHTML=St,qr=i(),Ae=u("h3"),Ae.textContent=Nt,Rr=i(),xe=u("p"),xe.textContent=Zt,Gr=i(),Ce=u("p"),Ce.textContent=$t,Re=i(),F(_e.$$.fragment),this.h()},l(s){const l=qt("svelte-1wceb9f",document.head);c=n(l,"META",{name:!0,content:!0}),D=n(l,"META",{name:!0,content:!0}),E=n(l,"META",{name:!0,content:!0}),B=n(l,"META",{name:!0,content:!0}),v=n(l,"META",{name:!0,content:!0}),A=n(l,"META",{name:!0,content:!0}),x=n(l,"META",{name:!0,content:!0}),Pe=n(l,"META",{name:!0,content:!0}),Oe=n(l,"META",{name:!0,content:!0}),Ie=n(l,"META",{name:!0,content:!0}),ze=n(l,"META",{name:!0,content:!0}),Xe=n(l,"META",{name:!0,content:!0}),Me=n(l,"META",{name:!0,content:!0}),Le=n(l,"META",{name:!0,content:!0}),Se=n(l,"META",{name:!0,content:!0}),Ne=n(l,"META",{name:!0,content:!0}),l.forEach(w),Ue=d(s),p(C.$$.fragment,s),qe=d(s),y=n(s,"DIV",{class:!0});var f=Kr(y);_=n(f,"H1",{class:!0,"data-svelte-h":!0}),a(_)!=="svelte-jlmxxa"&&(_.textContent=jr),We=d(f),T=n(f,"P",{class:!0,"data-svelte-h":!0}),a(T)!=="svelte-e5mff0"&&(T.innerHTML=Vr),je=d(f),P=n(f,"P",{class:!0,"data-svelte-h":!0}
112),a(P)!=="svelte-17co6hi"&&(P.textContent=Yr),Ve=d(f),Ze=n(f,"DIV",{class:!0});var Ht=Kr(Ze);r=n(Ht,"DIV",{class:!0});var t=Kr(r);O=n(t,"P",{class:!0,"data-svelte-h":!0}),a(O)!=="svelte-1tzhsyd"&&(O.textContent=Jr),Ye=d(t),I=n(t,"UL",{class:!0,"data-svelte-h":!0}),a(I)!=="svelte-1bbprgx"&&(I.innerHTML=Qr),Je=d(t),z=n(t,"IMG",{src:!0,alt:!0,class:!0}),Qe=d(t),X=n(t,"P",{class:!0,"data-svelte-h":!0}),a(X)!=="svelte-ups43y"&&(X.innerHTML=rt),er=d(t),M=n(t,"H2",{class:!0,"data-svelte-h":!0}),a(M)!=="svelte-gq0qao"&&(M.textContent=tt),rr=d(t),L=n(t,"P",{class:!0,"data-svelte-h":!0}),a(L)!=="svelte-ufsxfj"&&(L.textContent=ot),tr=d(t),S=n(t,"UL",{class:!0,"data-svelte-h":!0}),a(S)!=="svelte-gz4uy7"&&(S.innerHTML=ut),or=d(t),N=n(t,"H2",{class:!0,"data-svelte-h":!0}),a(N)!=="svelte-1a1sn6k"&&(N.textContent=nt),ur=d(t),Z=n(t,"P",{class:!0,"data-svelte-h":!0}),a(Z)!=="svelte-zn5q6m"&&(Z.textContent=it),nr=d(t),$=n(t,"P",{class:!0,"data-svelte-h":!0}),a($)!=="svelte-mjb7h1"&&($.innerHTML=dt),ir=d(t),H=n(t,"P",{class:!0,"data-svelte-h":!0}),a(H)!=="svelte-k07vd3"&&(H.innerHTML=at),dr=d(t),U=n(t,"P",{class:!0,"data-svelte-h":!0}),a(U)!=="svelte-ef4i5b"&&(U.textContent=st),ar=d(t),q=n(t,"H2",{class:!0,"data-svelte-h":!0}),a(q)!=="svelte-9v0374"&&(q.textContent=lt),sr=d(t),R=n(t,"H3",{class:!0,"data-svelte-h":!0}),a(R)!=="svelte-1pk9t0f"&&(R.textContent=wt),lr=d(t),G=n(t,"P",{class:!0,"data-svelte-h":!0}),a(G)!=="svelte-qllqc4"&&(G.textContent=yt),wr=d(t),K=n(t,"P",{class:!0,"data-svelte-h":!0}),a(K)!=="svelte-123ycgi"&&(K.textContent=kt),yr=d(t),p(W.$$.fragment,t),kr=d(t),j=n(t,"P",{class:!0,"data-svelte-h":!0}),a(j)!=="svelte-1l4ht59"&&(j.innerHTML=ct),cr=d(t),V=n(t,"P",{class:!0,"data-svelte-h":!0}),a(V)!=="svelte-1p3e2oa"&&(V.innerHTML=Ft),Fr=d(t),p(Y.$$.fragment,t),pr=d(t),J=n(t,"P",{class:!0,"data-svelte-h":!0}),a(J)!=="svelte-1pv2wqs"&&(J.textContent=pt),br=d(t),Q=n(t,"IMG",{src:!0,alt:!0,class:!0}),mr=d(t),ee=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ee)!=="svelte-qu9q3h"&&(ee.innerHTML=mt),gr=d(t),re=n(t,"H3",{class:!0,"data-svelte-h":!0}),a(re)!=="svelte-hwb9te"&&(re.textContent=gt),hr=d(t),te=n(t,"P",{class:!0,"data-svelte-h":!0}),a(te)!=="svelte-a2l5mn"&&(te.innerHTML=ht),fr=d(t),p(oe.$$.fragment,t),Dr=d(t),ue=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ue)!=="svelte-ieuk8b"&&(ue.textContent=ft),Er=d(t),ne=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ne)!=="svelte-19s3ao5"&&(ne.textContent=Dt),Br=d(t),ie=n(t,"IMG",{src:!0,alt:!0,class:!0}),vr=d(t),de=n(t,"H3",{class:!0,"data-svelte-h":!0}),a(de)!=="svelte-1xnmffn"&&(de.textContent=Bt),Ar=d(t),ae=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ae)!=="svelte-q9qv00"&&(ae.innerHTML=vt),xr=d(t),se=n(t,"P",{class:!0,"data-svelte-h":!0}),a(se)!=="svelte-1lw1nze"&&(se.textContent=At),Cr=d(t),le=n(t,"P",{class:!0,"data-svelte-h":!0}),a(le)!=="svelte-5gjujd"&&(le.innerHTML=xt),_r=d(t),p(we.$$.fragment,t),Tr=d(t),ye=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ye)!=="svelte-1ww0o12"&&(ye.textContent=Ct),Pr=d(t),ke=n(t,"IMG",{src:!0,alt:!0,class:!0}),Or=d(t),ce=n(t,"H3",{class:!0,"data-svelte-h":!0}),a(ce)!=="svelte-8l2qew"&&(ce.textContent=Tt),Ir=d(t),Fe=n(t,"P",{class:!0,"data-svelte-h":!0}),a(Fe)!=="svelte-u4ml6p"&&(Fe.textContent=Pt),zr=d(t),pe=n(t,"P",{class:!0,"data-svelte-h":!0}),a(pe)!=="svelte-w4aqaz"&&(pe.textContent=Ot),Xr=d(t),be=n(t,"P",{class:!0,"data-svelte-h":!0}),a(be)!=="svelte-1tu6ov8"&&(be.textContent=It),Mr=d(t),p(me.$$.fragment,t),Lr=d(t),ge=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ge)!=="svelte-15eij9n"&&(ge.textContent=zt),Sr=d(t),p(he.$$.fragment,t),Nr=d(t),fe=n(t,"P",{class:!0,"data-svelte-h":!0}),a(fe)!=="svelte-1iry04g"&&(fe.textContent=Xt),Zr=d(t),p(De.$$.fragment,t),$r=d(t),Ee=n(t,"P",{class:!0,"data-svelte-h":!0}),a(Ee)!=="svelte-nhq867"&&(Ee.textContent=Mt),Hr=d(t),Be=n(t,"IMG",{src:!0,alt:!0,class:!0}),Ur=d(t),ve=n(t,"P",{class:!0,"data-svelte-h":!0}),a(ve)!=="svelte-1syj5ri"&&(ve.innerHTML=St),qr=d(t),Ae=n(t,"H3",{class:!0,"data-svelte-h":!0}),a(Ae)!=="svelte-131942v"&&(Ae.textContent=Nt),Rr=d(t),xe=n(t,"P",{class:!0,"data-svelte-h":!0}),a(xe)!=="svelte-woxhps"&&(xe.textContent=Zt),Gr=d(t),Ce=n(t,"P",{class:!0,"data-svelte-h":!0}
112),a(Ce)!=="svelte-143bkx1"&&(Ce.textContent=$t),t.forEach(w),Ht.forEach(w),f.forEach(w),Re=d(s),p(_e.$$.fragment,s),this.h()},h(){document.title="Run PyTorch models on the edge",o(c,"name","description"),o(c,"content","Everything you need to know about running PyTorch models on the edge with ONNX Runtime."),o(D,"name","title"),o(D,"content","Run PyTorch models on the edge"),o(E,"name","keywords"),o(E,"content","PyTorch, ONNX Runtime, edge computing, machine learning, deep learning, model optimization, model deployment, AI on edge"),o(B,"name","author"),o(B,"content","Natalie Kershaw, Prasanth Pulavarthi"),o(v,"name","date"),o(v,"content","2023-10-12"),o(A,"name","image"),o(A,"content",He),o(x,"name","robots"),o(x,"content","index, follow"),o(Pe,"name","og:title"),o(Pe,"content","Run PyTorch models on the edge"),o(Oe,"name","og:description"),o(Oe,"content","Learn how to run PyTorch models on edge devices using ONNX Runtime. Explore considerations, tools, and examples for deploying PyTorch models on Windows, in the browser, on mobile, and for on-device training."),o(Ie,"name","og:type"),o(Ie,"content","article"),o(ze,"name","og:url"),o(ze,"content","https://onnxruntime.ai/blogs/pytorch-on-the-edge"),o(Xe,"name","og:image"),o(Xe,"content",He),o(Me,"name","twitter:title"),o(Me,"content","Run PyTorch models on the edge"),o(Le,"name","twitter:description"),o(Le,"content","Learn how to run PyTorch models on edge devices using ONNX Runtime. Explore considerations, tools, and examples for deploying PyTorch models on Windows, in the browser, on mobile, and for on-device training."),o(Se,"name","twitter:card"),o(Se,"content",He),o(Ne,"name","twitter:image"),o(Ne,"content",He),o(_,"class","text-5xl pb-2"),o(T,"class","text-neutral"),o(P,"class","text-neutral"),o(O,"class","mb-4"),o(I,"class","list-disc ml-6 mb-4"),$e(z.src,et=He)||o(z,"src",et),o(z,"alt","Diagram showing the PyTorch logo representing a PyTorch model, fanning out to icons for web, mobile and browser devices running ONNX Runtime"),o(z,"class","mb-4 w-3/4 mx-auto"),o(X,"class","mb-4"),o(M,"class","dark:text-blue-300 text-blue-800 underline text-3xl mb-4"),o(L,"class","mb-4"),o(S,"class","list-disc ml-6 mb-4"),o(N,"class","dark:text-blue-300 text-blue-800 underline text-3xl mb-4"),o(Z,"class","mb-4"),o($,"class","mb-4"),o(H,"class","mb-4"),o(U,"class","mb-4"),o(q,"class","dark:text-blue-300 text-blue-800 underline text-3xl mb-4"),o(R,"class","text-2xl mb-2"),o(G,"class","mb-4"),o(K,"class","mb-4"),o(j,"class","mb-4"),o(V,"class","mb-4"),o(J,"class","mb-4"),$e(Q.src,bt=oo)||o(Q,"src",bt),o(Q,"alt","Two golden retriever puppies playing in the grass"),o(Q,"class","mb-4"),o(ee,"class","mb-4"),o(re,"class","text-2xl mb-2"),o(te,"class","mb-4"),o(ue,"class","mb-4"),o(ne,"class","mb-4"),$e(ie.src,Et=io)||o(ie,"src",Et),o(ie,"alt","Text generation in the browser using transformers.js. The prompt is Two golden retriever puppies are playing in the grass, and the response is playing in the grasslands. They are known for their playful nature and they have a playful face."),o(ie,"class","mb-4 w-3/4"),o(de,"class","text-2xl mb-2"),o(ae,"class","mb-4"),o(se,"class","mb-4"),o(le,"class","mb-4"),o(ye,"class","mb-4"),$e(ke.src,_t=uo)||o(ke,"src",_t),o(ke,"alt","Screenshot of an Android app to perform speech recognition using ONNX Runtime, running a PyTorch Whisper model"),o(ke,"class","mb-4"),o(ce,"class","text-2xl mb-2"),o(Fe,"class","mb-4"),o(pe,"class","mb-4"),o(be,"class","mb-4"),o(ge,"class","mb-4"),o(fe,"class","mb-4"),o(Ee,"class","mb-4"),$e(Be.src,Lt=no)||o(Be,"src",Lt),o(Be,"alt","A screenshot of an iPhone app to perform speaker verification by recording a number of speech samples of the speaker"),o(Be,"class","mb-4"),o(ve,"class","mb-4"),o(Ae,"class","text-2xl mb-2"),o(xe,"class","mb-4"),o(Ce,"class","mb-4"),o(r,"class","col-span-12 md:col-span-9"),o(Ze,"class","py-4"),o(y,"class","container mx-auto px-4 md:px-8 lg:px-48 pt-8")},m(s,l){e(document.head,c),e(document.head,D),e(document.head,E),e(document.head,B),e(document.head,v),e(document.head,A),e(document.head,x),e(document.head,Pe),e(document.head,Oe),e(document.head,Ie),e(document.head,ze),e(document.head,Xe),e(document.head,Me),e(document.head,Le),e(document.head,Se),e(document.head,Ne),Ke(s,Ue,l),b(C,s,l),Ke(s,qe,l),Ke(s,y,l),e(y,_),e(y,We),e(y,T),e(y,je),e(y,P),e(y,Ve),e(y,Ze),e(Ze,r),e(r,O),e(r,Ye),e(r,I),e(r,Je),e(r,z),e(r,Qe),e(r,X),e(r,er),e(r,M),e(r,rr),e(r,L),e(r,tr),e(r,S),e(r,or),e(r,N),e(r,ur),e(r,Z),e(r,nr),e(r,$),e(r,ir),e(r,H),e(r,dr),e(r,U),e(r,ar),e(r,q),e(r,sr),e(r,R),e(r,lr),e(r,G),e(r,wr),e(r,K),e(r,yr),b(W,r,null),e(r,kr),e(r,j),e(r,cr),e(r,V),e(r,Fr),b(Y,r,null),e(r,pr),e(r,J),e(r,br),e(r,Q),e(r,mr),e(r,ee),e(r,gr),e(r,re),e(r,hr),e(r,te),e(r,fr),b(oe,r,null),e(r,Dr),e(r,ue),e(r,Er),e(r,ne),e(r,Br),e(r,ie),e(r,vr),e(r,de),e(r,Ar),e(r,ae),e(r,xr),e(r,se),e(r,Cr),e(r,le),e(r,_r),b(we,r,null),e(r,Tr),e(r,ye),e(r,Pr),e(r,ke),e(r,Or),e(r,ce),e(r,Ir),e(r,Fe),e(r,zr),e(r,pe),e(r,Xr),e(r,be),e(r,Mr),b(me,r,null),e(r,Lr),e(r,ge),e(r,Sr),b(he,r,null),e(r,Nr),e(r,fe),e(r,Zr),b(De,r,null),e(r,$r),e(r,Ee),e(r,Hr),e(r,Be),e(r,Ur),e(r,ve),e(r,qr),e(r,Ae),e(r,Rr),e(r,xe),e(r,Gr),e(r,Ce),Ke(s,Re,l),b(_e,s,l),Ge=!0},p:Rt,i(s){Ge||(m(C.$$.fragment,s),m(W.$$.fragment,s),m(Y.$$.fragment,s),m(oe.$$.fragment,s),m(we.$$.fragment,s),m(me.$$.fragment,s),m(he.$$.fragment,s),m(De.$$.fragment,s),m(_e.$$.fragment,s),Ge=!0)},o(s){g(C.$$.fragment,s),g(W.$$.fragment,s),g(Y.$$.fragment,s),g(oe.$$.fragment,s),g(we.$$.fragment,s),g(me.$$.fragment,s),g(he.$$.fragment,s),g(De.$$.fragment,s),g(_e.$$.fragment,s),Ge=!1}
112,d(s){s&&(w(Ue),w(qe),w(y),w(Re)),w(c),w(D),w(E),w(B),w(v),w(A),w(x),w(Pe),w(Oe),w(Ie),w(ze),w(Xe),w(Me),w(Le),w(Se),w(Ne),h(C,s),h(W),h(Y),h(oe),h(we),h(me),h(he),h(De),h(_e,s)}}}function so(k){return[`from optimum.onnxruntime import ORTStableDiffusionPipeline
113pipeline = ORTStableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", export=True)
114pipeline.save_pretrained("./onnx-stable-diffusion")`,`static void Main(string[] args)
115{
116    var prompt = "Two golden retriever puppies playing in the grass.";
117    var config = new StableDiffusionConfig
118    {
119        NumInferenceSteps = 50,
120        GuidanceScale = 7.5,
121        ExecutionProviderTarget = StableDiffusionConfig.ExecutionProvider.Cpu,
122        DeviceId = 0,
123        TokenizerOnnxPath = ".\\models\\tokenizer\\model.onnx",
124        TextEncoderOnnxPath = ".\\models\\text_encoder\\model.onnx",
125        UnetOnnxPath = ".\\models\\unet\\model.onnx",
126        VaeDecoderOnnxPath = ".\\models\\vae_decoder\\model.onnx",
127        SafetyModelPath = ".\\models\\safety_checker\\model.onnx",
128    };
129
130    var image = UNet.Inference(prompt, config);
131
132    if (image == null)
133    {
134        Console.WriteLine("Unable to create image, please try again.");
135    }
136}`,`<html>
137    <body>
138        <h1>Enter starting text …</h1>
139    
140        <form id="form">
141            <input type="text" id="inputText">
142            <button type="submit" id="submitButton">Submit</button>
143        </form>
144    
145        <div id="output"></div>
146    
147        <script type="module">
148    
149            import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/[email protected]';
150    
151            let inputText = document.getElementById('inputText');
152            let outputDiv = document.getElementById('output');
153            let submitButton = document.getElementById('submitButton');
154    
155            submitButton.addEventListener('click', async (e) => {
156    
157                e.preventDefault();
158    
159                let generator = await pipeline('text-generation', 'Xenova/LaMini-Neo-125M');
160    
161                let result = await generator(inputText.value,
162                    { max_new_tokens: 200,
163                        temperature: 2,
164                        repetition_penalty: 1.5,
165                        no_repeat_ngram_size: 2,
166                        num_beams: 2,
167                        num_return_sequences: 1,
168                        });
169    
170                outputDiv.innerHTML = result[0].generated_text;
171            });
172        <\/script>    
173    </body>
174</html>`,`init {
175    val env = OrtEnvironment.getEnvironment()
176    val sessionOptions = OrtSession.SessionOptions()
177    sessionOptions.registerCustomOpLibrary(OrtxPackage.getLibraryPath())
178
179    session = env.createSession(modelBytes, sessionOptions)
180
181    val nMels: Long = 80
182    val nFrames: Long = 3000
183
184    baseInputs = mapOf(
185        "min_length" to createIntTensor(env, intArrayOf(1), tensorShape(1)),
186        "max_length" to createIntTensor(env, intArrayOf(200), tensorShape(1)),
187        "num_beams" to createIntTensor(env, intArrayOf(1), tensorShape(1)),
188        "num_return_sequences" to createIntTensor(env, intArrayOf(1), tensorShape(1)),
189        "length_penalty" to createFloatTensor(env, floatArrayOf(1.0f), tensorShape(1)),
190        "repetition_penalty" to createFloatTensor(env, floatArrayOf(1.0f), tensorShape(1)),
191    )
192}
193
194data class Result(val text: String, val inferenceTimeInMs: Long)
195
196fun run(audioTensor: OnnxTensor): Result {
197    val inputs = mutableMapOf()
198    baseInputs.toMap(inputs)
199    inputs["audio_pcm"] = audioTensor
200    val startTimeInMs = SystemClock.elapsedRealtime()
201    val outputs = session.run(inputs)
202    val elapsedTimeInMs = SystemClock.elapsedRealtime() - startTimeInMs
203    val recognizedText = outputs.use {
204        @Suppress("UNCHECKED_CAST")
205        (outputs[0].value as Array>)[0][0]
206    }
207    return Result(recognizedText, elapsedTimeInMs)
208}`,`from transformers import Wav2Vec2ForSequenceClassification, AutoConfig
209                    import torch
210
211                    config = AutoConfig.from_pretrained("superb/wav2vec2-base-superb-sid")
212                    model = Wav2Vec2ForSequenceClassification.from_pretrained("superb/wav2vec2-base-superb-sid")
213
214                    model.classifier = torch.nn.Linear(256, 2)`,`artifacts.generate_artifacts(
215    onnx_model,
216    requires_grad=requires_grad,
217    frozen_params=frozen_params,
218    loss=CustomCELoss(),
219    optimizer=artifacts.OptimType.AdamW,
220    artifact_directory="MyVoice/artifacts",
221)`,`func trainStep(inputData: [Data], labels: [Int64]) throws  {
222
223    let inputs = [try getORTValue(dataList: inputData), try getORTValue(labels: labels)]
224    try trainingSession.trainStep(withInputValues: inputs)
225    
226    try trainingSession.optimizerStep()
227    
228    try trainingSession.lazyResetGrad()
229}`]}class po extends Gt{constructor(c){super(),Kt(this,c,so,ao,Ut,{})}}export{po as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.