Files
cours/.obsidian/plugins/obsidian-task-progress-bar/main.js

733 lines
3.3 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var IU=Object.create;var Fd=Object.defineProperty;var RU=Object.getOwnPropertyDescriptor;var FU=Object.getOwnPropertyNames;var jU=Object.getPrototypeOf,OU=Object.prototype.hasOwnProperty;var NU=(s,e,t)=>e in s?Fd(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var tE=s=>Fd(s,"__esModule",{value:!0});var b=(s,e)=>()=>(s&&(e=s(s=0)),e);var ye=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),ha=(s,e)=>{tE(s);for(var t in e)Fd(s,t,{get:e[t],enumerable:!0})},LU=(s,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of FU(e))!OU.call(s,a)&&a!=="default"&&Fd(s,a,{get:()=>e[a],enumerable:!(t=RU(e,a))||t.enumerable});return s},A=s=>LU(tE(Fd(s!=null?IU(jU(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s);var _=(s,e,t)=>(NU(s,typeof e!="symbol"?e+"":e,t),t);var fy=ye((UQ,aE)=>{"use strict";var HU={mode:"lazy"};aE.exports=HU});var Fp=ye(($Q,rE)=>{"use strict";var BU=RegExp.prototype.exec;rE.exports=BU});var iE=ye((YQ,sE)=>{"use strict";sE.exports={_hasUFlag:!1,shouldRun:function(e){var t=e.flags.includes("s");return t?(e.flags=e.flags.replace("s",""),this._hasUFlag=e.flags.includes("u"),!0):!1},Char:function(e){var t=e.node;if(!(t.kind!=="meta"||t.value!==".")){var a="\\uFFFF",r="\uFFFF";this._hasUFlag&&(a="\\u{10FFFF}",r="\u{10FFFF}"),e.replace({type:"CharacterClass",expressions:[{type:"ClassRange",from:{type:"Char",value:"\\0",kind:"decimal",symbol:"\0"},to:{type:"Char",value:a,kind:"unicode",symbol:r}}]})}}}});var oE=ye((zQ,nE)=>{"use strict";nE.exports={_groupNames:{},init:function(){this._groupNames={}},getExtra:function(){return this._groupNames},Group:function(e){var t=e.node;!t.name||(this._groupNames[t.name]=t.number,delete t.name,delete t.nameRaw)},Backreference:function(e){var t=e.node;t.kind==="name"&&(t.kind="number",t.reference=t.number,delete t.referenceRaw)}}});var cE=ye((qQ,lE)=>{"use strict";lE.exports={RegExp:function(e){var t=e.node;t.flags.includes("x")&&(t.flags=t.flags.replace("x",""))}}});var uE=ye((GQ,dE)=>{"use strict";dE.exports={dotAll:iE(),namedCapturingGroups:oE(),xFlag:cE()}});var hy=ye((KQ,pE)=>{"use strict";function Fr(s){return s?WU[s.type](s):""}var WU={RegExp:function(e){return"/"+Fr(e.body)+"/"+e.flags},Alternative:function(e){return(e.expressions||[]).map(Fr).join("")},Disjunction:function(e){return Fr(e.left)+"|"+Fr(e.right)},Group:function(e){var t=Fr(e.expression);return e.capturing?e.name?"(?<"+(e.nameRaw||e.name)+">"+t+")":"("+t+")":"(?:"+t+")"},Backreference:function(e){switch(e.kind){case"number":return"\\"+e.reference;case"name":return"\\k<"+(e.referenceRaw||e.reference)+">";default:throw new TypeError("Unknown Backreference kind: "+e.kind)}},Assertion:function(e){switch(e.kind){case"^":case"$":case"\\b":case"\\B":return e.kind;case"Lookahead":{var t=Fr(e.assertion);return e.negative?"(?!"+t+")":"(?="+t+")"}case"Lookbehind":{var a=Fr(e.assertion);return e.negative?"(?<!"+a+")":"(?<="+a+")"}default:throw new TypeError("Unknown Assertion kind: "+e.kind)}},CharacterClass:function(e){var t=e.expressions.map(Fr).join("");return e.negative?"[^"+t+"]":"["+t+"]"},ClassRange:function(e){return Fr(e.from)+"-"+Fr(e.to)},Repetition:function(e){return""+Fr(e.expression)+Fr(e.quantifier)},Quantifier:function(e){var t=void 0,a=e.greedy?"":"?";switch(e.kind){case"+":case"?":case"*":t=e.kind;break;case"Range":e.from===e.to?t="{"+e.from+"}":e.to?t="{"+e.from+","+e.to+"}":t="{"+e.from+",}";break;default:throw new TypeError("Unknown Quantifier kind: "+e.kind)}return""+t+a},Char:function(e){var t=e.value;switch(e.kind){case"simple":return e.escaped?"\\"+t:t;case"hex":case"unicode":case"oct":case"decimal":case"control":case"meta":return t;default:throw new TypeError("Unknown Char kind: "+e.kind)}},UnicodeProperty:function(e){var t=e.negative?"P":"p",a=void 0;return!e.shorthand&&!e.binary?a=e.name+"=":a="","\\"+t+"{"+a+e.value+"}"}};pE.exports={generate:Fr}});var gE=ye((QQ,hE)=>{"use strict";var gy={General_Category:"gc",Script:"sc",Script_Extensions:"scx"},jd=Lp(gy),jp={ASCII:"ASCII",ASCII_Hex_Digit:"AHex",Alphabetic:"Alpha",Any:"Any",Assigned:"Assigned",Bidi_Control:"Bidi_C",Bidi_Mirrored:"Bidi_M",Case_Ignorable:"CI",Cased:"Cased",Changes_When_Casefolded:"CWCF",Changes_When_Casemapped:"CWCM",Changes_When_Lowercased:"CWL",Changes_When_NFKC_Casefolded:"CWKCF",Changes_When_Titlecased:"CWT",Changes_When_Uppercased:"CWU",Dash:"Dash",Default_Ignorable_Code_Point:"DI",Deprecated:"Dep",Diacritic:"Dia",Emoji:"Emoji",Emoji_Component:"Emoji_Component",Emoji_Modifier:"Emoji_Modifier",Emoji_Modifier_Base:"Emoji_Modifier_Base",Emoji_Presentation:"Emoji_Presentation",Extended_Pictographic:"Extended_Pictographic",Extender:"Ext",Grapheme_Base:"Gr_Base",Grapheme_Extend:"Gr_Ext",Hex_Digit:"Hex",IDS_Binary_Operator:"IDSB",IDS_Trinary_Operator:"IDST",ID_Continue:"IDC",ID_Start:"IDS",Ideographic:"Ideo",Join_Control:"Join_C",Logical_Order_Exception:"LOE",Lowercase:"Lower",Math:"Math",Noncharacter_Code_Point:"NChar",Pattern_Syntax:"Pat_Syn",Pattern_White_Space:"Pat_WS",Quotation_Mark:"QMark",Radical:"Radical",Regional_Indicator:"RI",Sentence_Terminal:"STerm",Soft_Dotted:"SD",Terminal_Punctuation:"Term",Unified_Ideograph:"UIdeo",Uppercase:"Upper",Variation_Selector:"VS",White_Space:"space",XID_Continue:"XIDC",XID_Start:"XIDS"},Vn=Lp(jp),ky={Cased_Letter:"LC",Close_Punctuation:"Pe",Connector_Punctuation:"Pc",Control:["Cc","cntrl"],Currency_Symbol:"Sc",Dash_Punctuation:"Pd",Decimal_Number:["Nd","digit"],Enclosing_Mark:"Me",Final_Punctuation:"Pf",Format:"Cf",Initial_Punctuation:"Pi",Letter:"L",Letter_Number:"Nl",Line_Separator:"Zl",Lowercase_Letter:"Ll",Mark:["M","Combining_Mark"],Math_Symbol:"Sm",Modifier_Letter:"Lm",Modifier_Symbol:"Sk",Nonspacing_Mark:"Mn",Number:"N",Open_Punctuation:"Ps",Other:"C",Other_Letter:"Lo",Other_Number:"No",Other_Punctuation:"Po",Other_Symbol:"So",Paragraph_Separator:"Zp",Private_Use:"Co",Punctuation:["P","punct"],Separator:"Z",Space_Separator:"Zs",Spacing_Mark:"Mc",Surrogate:"Cs",Symbol:"S",Titlecase_Letter:"Lt",Unassigned:"Cn",Uppercase_Letter:"Lu"},Op=Lp(ky),yy={Adlam:"Adlm",Ahom:"Ahom",Anatolian_Hieroglyphs:"Hluw",Arabic:"Arab",Armenian:"Armn",Avestan:"Avst",Balinese:"Bali",Bamum:"Bamu",Bassa_Vah:"Bass",Batak:"Batk",Bengali:"Beng",Bhaiksuki:"Bhks",Bopomofo:"Bopo",Brahmi:"Brah",Braille:"Brai",Buginese:"Bugi",Buhid:"Buhd",Canadian_Aboriginal:"Cans",Carian:"Cari",Caucasian_Albanian:"Aghb",Chakma:"Cakm",Cham:"Cham",Cherokee:"Cher",Common:"Zyyy",Coptic:["Copt","Qaac"],Cuneiform:"Xsux",Cypriot:"Cprt",Cyrillic:"Cyrl",Deseret:"Dsrt",Devanagari:"Deva",Dogra:"Dogr",Duployan:"Dupl",Egyptian_Hieroglyphs:"Egyp",Elbasan:"Elba",Ethiopic:"Ethi",Georgian:"Geor",Glagolitic:"Glag",Gothic:"Goth",Grantha:"Gran",Greek:"Grek",Gujarati:"Gujr",Gunjala_Gondi:"Gong",Gurmukhi:"Guru",Han:"Hani",Hangul:"Hang",Hanifi_Rohingya:"Rohg",Hanunoo:"Hano",Hatran:"Hatr",Hebrew:"Hebr",Hiragana:"Hira",Imperial_Aramaic:"Armi",Inherited:["Zinh","Qaai"],Inscriptional_Pahlavi:"Phli",Inscriptional_Parthian:"Prti",Javanese:"Java",Kaithi:"Kthi",Kannada:"Knda",Katakana:"Kana",Kayah_Li:"Kali",Kharoshthi:"Khar",Khmer:"Khmr",Khojki:"Khoj",Khudawadi:"Sind",Lao:"Laoo",Latin:"Latn",Lepcha:"Lepc",Limbu:"Limb",Linear_A:"Lina",Linear_B:"Linb",Lisu:"Lisu",Lycian:"Lyci",Lydian:"Lydi",Mahajani:"Mahj",Makasar:"Maka",Malayalam:"Mlym",Mandaic:"Mand",Manichaean:"Mani",Marchen:"Marc",Medefaidrin:"Medf",Masaram_Gondi:"Gonm",Meetei_Mayek:"Mtei",Mende_Kikakui:"Mend",Meroitic_Cursive:"Merc",Meroitic_Hieroglyphs:"Mero",Miao:"Plrd",Modi:"Modi",Mongolian:"Mong",Mro:"Mroo",Multani:"Mult",Myanmar:"Mymr",Nabataean:"Nbat",New_Tai_Lue:"Talu",Newa:"Newa",Nko:"Nkoo",Nushu:"Nshu",Ogham:"Ogam",Ol_Chiki:"Olck",Old_Hungarian:"Hung",Old_Italic:"Ital",Old_North_Arabian:"Narb",Old_Permic:"Perm",Old_Persian:"Xpeo",Old_Sogdian:"Sogo",Old_South_Arabian:"Sarb",Old_Turkic:"Orkh",Oriya:"Orya",Osage:"Osge",Osmanya:"Osma",Pahawh_Hmong:"Hmng",Palmyrene:"Palm",Pau_Cin_Hau:"Pauc",Phags_Pa:"Phag",Phoenician:"Phnx",Psalter_Pahlavi:"Phlp",Rejang:"Rjng",Runic:"Runr",Samaritan:"Samr",Saurashtra:"Saur",Sharada:"Shrd",Shavian:"Shaw",Siddham:"Sidd",SignWriting:"Sgnw",Sinhala:"Sinh",Sogdian:"Sogd",Sora_Sompeng:"Sora",Soyombo:"Soyo",Sundanese:"Sund",Syloti_Nagri:"Sylo",Syriac:"Syrc",Tagalog:"Tglg",Tagbanwa:"Tagb",Tai_Le:"Tale",Tai_Tham:"Lana",Tai_Viet:"Tavt",Takri:"Takr",Tamil:"Taml",Tangut:"Tang",Telugu:"Telu",Thaana:"Thaa",Thai:"Thai",Tibetan:"Tibt",Tifinagh:"Tfng",Tirhuta:"Tirh",Ugaritic:"Ugar",Vai:"Vaii",Warang_Citi:"Wara",Yi:"Yiii",Zanabazar_Square:"Zanb"},Np=Lp(yy);function Lp(s){var e={};for(var t in s)if(!!s.hasOwnProperty(t)){var a=s[t];if(Array.isArray(a))for(var r=0;r<a.length;r++)e[a[r]]=t;else e[a]=t}return e}function _U(s){return gy.hasOwnProperty(s)||jd.hasOwnProperty(s)||jp.hasOwnProperty(s)||Vn.hasOwnProperty(s)}function VU(s,e){return $U(s)?mE(e):YU(s)?fE(e):!1}function UU(s){return jd.hasOwnProperty(s)||Vn.hasOwnProperty(s)}function $U(s){return s==="General_Category"||s=="gc"}function YU(s){return s==="Script"||s==="Script_Extensions"||s==="sc"||s==="scx"}function mE(s){return ky.hasOwnProperty(s)||Op.hasOwnProperty(s)}function fE(s){return yy.hasOwnProperty(s)||Np.hasOwnProperty(s)}function zU(s){return jp.hasOwnProperty(s)||Vn.hasOwnProperty(s)}function qU(s){return jd.hasOwnProperty(s)?jd[s]:Vn.hasOwnProperty(s)?Vn[s]:null}function GU(s){return Op.hasOwnProperty(s)?Op[s]:Np.hasOwnProperty(s)?Np[s]:Vn.hasOwnProperty(s)?Vn[s]:null}hE.exports={isAlias:UU,isValidName:_U,isValidValue:VU,isGeneralCategoryValue:mE,isScriptCategoryValue:fE,isBinaryPropertyName:zU,getCanonicalName:qU,getCanonicalValue:GU,NON_BINARY_PROP_NAMES_TO_ALIASES:gy,NON_BINARY_ALIASES_TO_PROP_NAMES:jd,BINARY_PROP_NAMES_TO_ALIASES:jp,BINARY_ALIASES_TO_PROP_NAMES:Vn,GENERAL_CATEGORY_VALUE_TO_ALIASES:ky,GENERAL_CATEGORY_VALUE_ALIASES_TO_VALUES:Op,SCRIPT_VALUE_TO_ALIASES:yy,SCRIPT_VALUE_ALIASES_TO_VALUE:Np}});var ME=ye((XQ,PE)=>{"use strict";var KU=function(){function s(e,t){var a=[],r=!0,i=!1,n=void 0;try{for(var o=e[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(a.push(l.value),!(t&&a.length===t));r=!0);}catch(d){i=!0,n=d}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return a}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return s(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();function kE(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}var mi=void 0,yE=void 0,sa={},oe=void 0,J=void 0;function pe(s,e){return sa.options.captureLocations?!s||!e?s||e:{startOffset:s.startOffset,endOffset:e.endOffset,startLine:s.startLine,endLine:e.endLine,startColumn:s.startColumn,endColumn:e.endColumn}:null}var wE="$",QU=[[-1,1,function(s,e){J=pe(e,e),oe=s}],[0,4,function(s,e,t,a,r,i,n,o){J=pe(r,o),oe=jt({type:"RegExp",body:e,flags:t$(a)},Hp(r,o||n))}],[1,1,function(s,e){J=pe(e,e),oe=s}],[1,0,function(){J=null,oe=""}],[2,1,function(s,e){J=pe(e,e),oe=s}],[2,2,function(s,e,t,a){J=pe(t,a),oe=s+e}],[3,1,function(s,e){J=pe(e,e),oe=s}],[4,1,function(s,e){J=pe(e,e),oe=s}],[4,3,function(s,e,t,a,r,i){J=pe(a,i);var n=null;r&&(n=Hp(a||r,i||r)),oe=jt({type:"Disjunction",left:s,right:t},n)}],[5,1,function(s,e){if(J=pe(e,e),s.length===0){oe=null;return}s.length===1?oe=jt(s[0],J):oe=jt({type:"Alternative",expressions:s},J)}],[6,0,function(){J=null,oe=[]}],[6,2,function(s,e,t,a){J=pe(t,a),oe=s.concat(e)}],[7,1,function(s,e){J=pe(e,e),oe=jt(Object.assign({type:"Assertion"},s),J)}],[7,2,function(s,e,t,a){J=pe(t,a),oe=s,e&&(oe=jt({type:"Repetition",expression:s,quantifier:e},J))}],[8,1,function(s,e){J=pe(e,e),oe={kind:"^"}}],[8,1,function(s,e){J=pe(e,e),oe={kind:"$"}}],[8,1,function(s,e){J=pe(e,e),oe={kind:"\\b"}}],[8,1,function(s,e){J=pe(e,e),oe={kind:"\\B"}}],[8,3,function(s,e,t,a,r,i){J=pe(a,i),oe={kind:"Lookahead",assertion:e}}],[8,3,function(s,e,t,a,r,i){J=pe(a,i),oe={kind:"Lookahead",negative:!0,assertion:e}}],[8,3,function(s,e,t,a,r,i){J=pe(a,i),oe={kind:"Lookbehind",assertion:e}}],[8,3,function(s,e,t,a,r,i){J=pe(a,i),oe={kind:"Lookbehind",negative:!0,assertion:e}}],[9,1,function(s,e){J=pe(e,e),oe=s}],[9,1,function(s,e){J=pe(e,e),oe=s}],[9,1,function(s,e){J=pe(e,e),oe=s}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"simple",J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s.slice(1),"simple",J),oe.escaped=!0}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"unicode",J),oe.isSurrogatePair=!0}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"unicode",J)}],[10,1,function(s,e){J=pe(e,e),oe=ZU(s,J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"control",J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"hex",J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"oct",J)}],[10,1,function(s,e){J=pe(e,e),oe=a$(s,J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"meta",J)}],[10,1,function(s,e){J=pe(e,e),oe=dr(s,"meta",J)}],[10,1,function(s,e){J=pe(e,e),oe=o$(s,e)}],[11,1,function(s,e){J=pe(e,e),oe=s}],[11,0],[12,1,function(s,e){J=pe(e,e),oe=s}],[12,2,function(s,e,t,a){J=pe(t,a),s.greedy=!1,oe=s}],[13,1,function(s,e){J=pe(e,e),oe=jt({type:"Quantifier",kind:s,greedy:!0},J)}],[13,1,function(s,e){J=pe(e,e),oe=jt({type:"Quantifier",kind:s,greedy:!0},J)}],[13,1,function(s,e){J=pe(e,e),oe=jt({type:"Quantifier",kind:s,greedy:!0},J)}],[13,1,function(s,e){J=pe(e,e);var t=by(s);oe=jt({type:"Quantifier",kind:"Range",from:t[0],to:t[0],greedy:!0},J)}],[13,1,function(s,e){J=pe(e,e),oe=jt({type:"Quantifier",kind:"Range",from:by(s)[0],greedy:!0},J)}],[13,1,function(s,e){J=pe(e,e);var t=by(s);oe=jt({type:"Quantifier",kind:"Range",from:t[0],to:t[1],greedy:!0},J)}],[14,1,function(s,e){J=pe(e,e),oe=s}],[14,1,function(s,e){J=pe(e,e),oe=s}],[15,3,function(s,e,t,a,r,i){J=pe(a,i);var n=String(s),o=SE(n);if(!sa.options.allowGroupNameDuplicates&&Od.hasOwnProperty(o))throw new SyntaxError('Duplicate of the named group "'+o+'".');Od[o]=s.groupNumber,oe=jt({type:"Group",capturing:!0,name:o,nameRaw:n,number:s.groupNumber,expression:e},J)}],[15,3,function(s,e,t,a,r,i){J=pe(a,i),oe=jt({type:"Group",capturing:!0,number:s.groupNumber,expression:e},J)}],[16,3,function(s,e,t,a,r,i){J=pe(a,i),oe=jt({type:"Group",capturing:!1,expression:e},J)}],[17,3,function(s,e,t,a,r,i){J=pe(a,i),oe=jt({type:"CharacterClass",negative:!0,expressions:e},J)}],[17,3,function(s,e,t,a,r,i){J=pe(a,i),oe=jt({type:"CharacterClass",expressions:e},J)}],[18,0,function(){J=null,oe=[]}],[18,1,function(s,e){J=pe(e,e),oe=s}],[19,1,function(s,e){J=pe(e,e),oe=[s]}],[19,2,function(s,e,t,a){J=pe(t,a),oe=[s].concat(e)}],[19,4,function(s,e,t,a,r,i,n,o){J=pe(r,o),CE(s,t),oe=[jt({type:"ClassRange",from:s,to:t},Hp(r,n))],a&&(oe=oe.concat(a))}],[20,1,function(s,e){J=pe(e,e),oe=s}],[20,2,function(s,e,t,a){J=pe(t,a),oe=[s].concat(e)}],[20,4,function(s,e,t,a,r,i,n,o){J=pe(r,o),CE(s,t),oe=[jt({type:"ClassRange",from:s,to:t},Hp(r,n))],a&&(oe=oe.concat(a))}],[21,1,function(s,e){J=pe(e,e),oe=dr(s,"simple",J)}],[21,1,function(s,e){J=pe(e,e),oe=s}],[22,1,function(s,e){J=pe(e,e),oe=s}],[22,1,function(s,e){J=pe(e,e),oe=dr(s,"meta",J)}]],vE={SLASH:"23",CHAR:"24",BAR:"25",BOS:"26",EOS:"27",ESC_b:"28",ESC_B:"29",POS_LA_ASSERT:"30",R_PAREN:"31",NEG_LA_ASSERT:"32",POS_LB_ASSERT:"33",NEG_LB_ASSERT:"34",ESC_CHAR:"35",U_CODE_SURROGATE:"36",U_CODE:"37",U_PROP_VALUE_EXP:"38",CTRL_CH:"39",HEX_CODE:"40",OCT_CODE:"41",DEC_CODE:"42",META_CHAR:"43",ANY:"44",NAMED_GROUP_REF:"45",Q_MARK:"46",STAR:"47",PLUS:"48",RANGE_EXACT:"49",RANGE_OPEN:"50",RANGE_CLOSED:"51",NAMED_CAPTURE_GROUP:"52",L_PAREN:"53",NON_CAPTURE_GROUP:"54",NEG_CLASS:"55",R_BRACKET:"56",L_BRACKET:"57",DASH:"58",$:"59"},wy=[{"0":1,"23":"s2"},{"59":"acc"},{"3":3,"4":4,"5":5,"6":6,"23":"r10","24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"23":"s7"},{"23":"r6","25":"s12"},{"23":"r7","25":"r7","31":"r7"},{"7":14,"8":15,"9":16,"10":25,"14":27,"15":42,"16":43,"17":26,"23":"r9","24":"s28","25":"r9","26":"s17","27":"s18","28":"s19","29":"s20","30":"s21","31":"r9","32":"s22","33":"s23","34":"s24","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","52":"s44","53":"s45","54":"s46","55":"s40","57":"s41"},{"1":8,"2":9,"24":"s10","59":"r3"},{"59":"r1"},{"24":"s11","59":"r2"},{"24":"r4","59":"r4"},{"24":"r5","59":"r5"},{"5":13,"6":6,"23":"r10","24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"23":"r8","25":"r8","31":"r8"},{"23":"r11","24":"r11","25":"r11","26":"r11","27":"r11","28":"r11","29":"r11","30":"r11","31":"r11","32":"r11","33":"r11","34":"r11","35":"r11","36":"r11","37":"r11","38":"r11","39":"r11","40":"r11","41":"r11","42":"r11","43":"r11","44":"r11","45":"r11","52":"r11","53":"r11","54":"r11","55":"r11","57":"r11"},{"23":"r12","24":"r12","25":"r12","26":"r12","27":"r12","28":"r12","29":"r12","30":"r12","31":"r12","32":"r12","33":"r12","34":"r12","35":"r12","36":"r12","37":"r12","38":"r12","39":"r12","40":"r12","41":"r12","42":"r12","43":"r12","44":"r12","45":"r12","52":"r12","53":"r12","54":"r12","55":"r12","57":"r12"},{"11":47,"12":48,"13":49,"23":"r38","24":"r38","25":"r38","26":"r38","27":"r38","28":"r38","29":"r38","30":"r38","31":"r38","32":"r38","33":"r38","34":"r38","35":"r38","36":"r38","37":"r38","38":"r38","39":"r38","40":"r38","41":"r38","42":"r38","43":"r38","44":"r38","45":"r38","46":"s52","47":"s50","48":"s51","49":"s53","50":"s54","51":"s55","52":"r38","53":"r38","54":"r38","55":"r38","57":"r38"},{"23":"r14","24":"r14","25":"r14","26":"r14","27":"r14","28":"r14","29":"r14","30":"r14","31":"r14","32":"r14","33":"r14","34":"r14","35":"r14","36":"r14","37":"r14","38":"r14","39":"r14","40":"r14","41":"r14","42":"r14","43":"r14","44":"r14","45":"r14","52":"r14","53":"r14","54":"r14","55":"r14","57":"r14"},{"23":"r15","24":"r15","25":"r15","26":"r15","27":"r15","28":"r15","29":"r15","30":"r15","31":"r15","32":"r15","33":"r15","34":"r15","35":"r15","36":"r15","37":"r15","38":"r15","39":"r15","40":"r15","41":"r15","42":"r15","43":"r15","44":"r15","45":"r15","52":"r15","53":"r15","54":"r15","55":"r15","57":"r15"},{"23":"r16","24":"r16","25":"r16","26":"r16","27":"r16","28":"r16","29":"r16","30":"r16","31":"r16","32":"r16","33":"r16","34":"r16","35":"r16","36":"r16","37":"r16","38":"r16","39":"r16","40":"r16","41":"r16","42":"r16","43":"r16","44":"r16","45":"r16","52":"r16","53":"r16","54":"r16","55":"r16","57":"r16"},{"23":"r17","24":"r17","25":"r17","26":"r17","27":"r17","28":"r17","29":"r17","30":"r17","31":"r17","32":"r17","33":"r17","34":"r17","35":"r17","36":"r17","37":"r17","38":"r17","39":"r17","40":"r17","41":"r17","42":"r17","43":"r17","44":"r17","45":"r17","52":"r17","53":"r17","54":"r17","55":"r17","57":"r17"},{"4":57,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"4":59,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"4":61,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"4":63,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"23":"r22","24":"r22","25":"r22","26":"r22","27":"r22","28":"r22","29":"r22","30":"r22","31":"r22","32":"r22","33":"r22","34":"r22","35":"r22","36":"r22","37":"r22","38":"r22","39":"r22","40":"r22","41":"r22","42":"r22","43":"r22","44":"r22","45":"r22","46":"r22","47":"r22","48":"r22","49":"r22","50":"r22","51":"r22","52":"r22","53":"r22","54":"r22","55":"r22","57":"r22"},{"23":"r23","24":"r23","25":"r23","26":"r23","27":"r23","28":"r23","29":"r23","30":"r23","31":"r23","32":"r23","33":"r23","34":"r23","35":"r23","36":"r23","37":"r23","38":"r23","39":"r23","40":"r23","41":"r23","42":"r23","43":"r23","44":"r23","45":"r23","46":"r23","47":"r23","48":"r23","49":"r23","50":"r23","51":"r23","52":"r23","53":"r23","54":"r23","55":"r23","57":"r23"},{"23":"r24","24":"r24","25":"r24","26":"r24","27":"r24","28":"r24","29":"r24","30":"r24","31":"r24","32":"r24","33":"r24","34":"r24","35":"r24","36":"r24","37":"r24","38":"r24","39":"r24","40":"r24","41":"r24","42":"r24","43":"r24","44":"r24","45":"r24","46":"r24","47":"r24","48":"r24","49":"r24","50":"r24","51":"r24","52":"r24","53":"r24","54":"r24","55":"r24","57":"r24"},{"23":"r25","24":"r25","25":"r25","26":"r25","27":"r25","28":"r25","29":"r25","30":"r25","31":"r25","32":"r25","33":"r25","34":"r25","35":"r25","36":"r25","37":"r25","38":"r25","39":"r25","40":"r25","41":"r25","42":"r25","43":"r25","44":"r25","45":"r25","46":"r25","47":"r25","48":"r25","49":"r25","50":"r25","51":"r25","52":"r25","53":"r25","54":"r25","55":"r25","56":"r25","57":"r25","58":"r25"},{"23":"r26","24":"r26","25":"r26","26":"r26","27":"r26","28":"r26","29":"r26","30":"r26","31":"r26","32":"r26","33":"r26","34":"r26","35":"r26","36":"r26","37":"r26","38":"r26","39":"r26","40":"r26","41":"r26","42":"r26","43":"r26","44":"r26","45":"r26","46":"r26","47":"r26","48":"r26","49":"r26","50":"r26","51":"r26","52":"r26","53":"r26","54":"r26","55":"r26","56":"r26","57":"r26","58":"r26"},{"23":"r27","24":"r27","25":"r27","26":"r27","27":"r27","28":"r27","29":"r27","30":"r27","31":"r27","32":"r27","33":"r27","34":"r27","35":"r27","36":"r27","37":"r27","38":"r27","39":"r27","40":"r27","41":"r27","42":"r27","43":"r27","44":"r27","45":"r27","46":"r27","47":"r27","48":"r27","49":"r27","50":"r27","51":"r27","52":"r27","53":"r27","54":"r27","55":"r27","56":"r27","57":"r27","58":"r27"},{"23":"r28","24":"r28","25":"r28","26":"r28","27":"r28","28":"r28","29":"r28","30":"r28","31":"r28","32":"r28","33":"r28","34":"r28","35":"r28","36":"r28","37":"r28","38":"r28","39":"r28","40":"r28","41":"r28","42":"r28","43":"r28","44":"r28","45":"r28","46":"r28","47":"r28","48":"r28","49":"r28","50":"r28","51":"r28","52":"r28","53":"r28","54":"r28","55":"r28","56":"r28","57":"r28","58":"r28"},{"23":"r29","24":"r29","25":"r29","26":"r29","27":"r29","28":"r29","29":"r29","30":"r29","31":"r29","32":"r29","33":"r29","34":"r29","35":"r29","36":"r29","37":"r29","38":"r29","39":"r29","40":"r29","41":"r29","42":"r29","43":"r29","44":"r29","45":"r29","46":"r29","47":"r29","48":"r29","49":"r29","50":"r29","51":"r29","52":"r29","53":"r29","54":"r29","55":"r29","56":"r29","57":"r29","58":"r29"},{"23":"r30","24":"r30","25":"r30","26":"r30","27":"r30","28":"r30","29":"r30","30":"r30","31":"r30","32":"r30","33":"r30","34":"r30","35":"r30","36":"r30","37":"r30","38":"r30","39":"r30","40":"r30","41":"r30","42":"r30","43":"r30","44":"r30","45":"r30","46":"r30","47":"r30","48":"r30","49":"r30","50":"r30","51":"r30","52":"r30","53":"r30","54":"r30","55":"r30","56":"r30","57":"r30","58":"r30"},{"23":"r31","24":"r31","25":"r31","26":"r31","27":"r31","28":"r31","29":"r31","30":"r31","31":"r31","32":"r31","33":"r31","34":"r31","35":"r31","36":"r31","37":"r31","38":"r31","39":"r31","40":"r31","41":"r31","42":"r31","43":"r31","44":"r31","45":"r31","46":"r31","47":"r31","48":"r31","49":"r31","50":"r31","51":"r31","52":"r31","53":"r31","54":"r31","55":"r31","56":"r31","57":"r31","58":"r31"},{"23":"r32","24":"r32","25":"r32","26":"r32","27":"r32","28":"r32","29":"r32","30":"r32","31":"r32","32":"r32","33":"r32","34":"r32","35":"r32","36":"r32","37":"r32","38":"r32","39":"r32","40":"r32","41":"r32","42":"r32","43":"r32","44":"r32","45":"r32","46":"r32","47":"r32","48":"r32","49":"r32","50":"r32","51":"r32","52":"r32","53":"r32","54":"r32","55":"r32","56":"r32","57":"r32","58":"r32"},{"23":"r33","24":"r33","25":"r33","26":"r33","27":"r33","28":"r33","29":"r33","30":"r33","31":"r33","32":"r33","33":"r33","34":"r33","35":"r33","36":"r33","37":"r33","38":"r33","39":"r33","40":"r33","41":"r33","42":"r33","43":"r33","44":"r33","45":"r33","46":"r33","47":"r33","48":"r33","49":"r33","50":"r33","51":"r33","52":"r33","53":"r33","54":"r33","55":"r33","56":"r33","57":"r33","58":"r33"},{"23":"r34","24":"r34","25":"r34","26":"r34","27":"r34","28":"r34","29":"r34","30":"r34","31":"r34","32":"r34","33":"r34","34":"r34","35":"r34","36":"r34","37":"r34","38":"r34","39":"r34","40":"r34","41":"r34","42":"r34","43":"r34","44":"r34","45":"r34","46":"r34","47":"r34","48":"r34","49":"r34","50":"r34","51":"r34","52":"r34","53":"r34","54":"r34","55":"r34","56":"r34","57":"r34","58":"r34"},{"23":"r35","24":"r35","25":"r35","26":"r35","27":"r35","28":"r35","29":"r35","30":"r35","31":"r35","32":"r35","33":"r35","34":"r35","35":"r35","36":"r35","37":"r35","38":"r35","39":"r35","40":"r35","41":"r35","42":"r35","43":"r35","44":"r35","45":"r35","46":"r35","47":"r35","48":"r35","49":"r35","50":"r35","51":"r35","52":"r35","53":"r35","54":"r35","55":"r35","56":"r35","57":"r35","58":"r35"},{"23":"r36","24":"r36","25":"r36","26":"r36","27":"r36","28":"r36","29":"r36","30":"r36","31":"r36","32":"r36","33":"r36","34":"r36","35":"r36","36":"r36","37":"r36","38":"r36","39":"r36","40":"r36","41":"r36","42":"r36","43":"r36","44":"r36","45":"r36","46":"r36","47":"r36","48":"r36","49":"r36","50":"r36","51":"r36","52":"r36","53":"r36","54":"r36","55":"r36","56":"r36","57":"r36","58":"r36"},{"10":70,"18":65,"19":66,"21":67,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r54","58":"s68"},{"10":70,"18":83,"19":66,"21":67,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r54","58":"s68"},{"23":"r47","24":"r47","25":"r47","26":"r47","27":"r47","28":"r47","29":"r47","30":"r47","31":"r47","32":"r47","33":"r47","34":"r47","35":"r47","36":"r47","37":"r47","38":"r47","39":"r47","40":"r47","41":"r47","42":"r47","43":"r47","44":"r47","45":"r47","46":"r47","47":"r47","48":"r47","49":"r47","50":"r47","51":"r47","52":"r47","53":"r47","54":"r47","55":"r47","57":"r47"},{"23":"r48","24":"r48","25":"r48","26":"r48","27":"r48","28":"r48","29":"r48","30":"r48","31":"r48","32":"r48","33":"r48","34":"r48","35":"r48","36":"r48","37":"r48","38":"r48","39":"r48","40":"r48","41":"r48","42":"r48","43":"r48","44":"r48","45":"r48","46":"r48","47":"r48","48":"r48","49":"r48","50":"r48","51":"r48","52":"r48","53":"r48","54":"r48","55":"r48","57":"r48"},{"4":85,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"4":87,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"4":89,"5":5,"6":6,"24":"r10","25":"r10","26":"r10","27":"r10","28":"r10","29":"r10","30":"r10","31":"r10","32":"r10","33":"r10","34":"r10","35":"r10","36":"r10","37":"r10","38":"r10","39":"r10","40":"r10","41":"r10","42":"r10","43":"r10","44":"r10","45":"r10","52":"r10","53":"r10","54":"r10","55":"r10","57":"r10"},{"23":"r13","24":"r13","25":"r13","26":"r13","27":"r13","28":"r13","29":"r13","30":"r13","31":"r13","32":"r13","33":"r13","34":"r13","35":"r13","36":"r13","37":"r13","38":"r13","39":"r13","40":"r13","41":"r13","42":"r13","43":"r13","44":"r13","45":"r13","52":"r13","53":"r13","54":"r13","55":"r13","57":"r13"},{"23":"r37","24":"r37","25":"r37","26":"r37","27":"r37","28":"r37","29":"r37","30":"r37","31":"r37","32":"r37","33":"r37","34":"r37","35":"r37","36":"r37","37":"r37","38":"r37","39":"r37","40":"r37","41":"r37","42":"r37","43":"r37","44":"r37","45":"r37","52":"r37","53":"r37","54":"r37","55":"r37","57":"r37"},{"23":"r39","24":"r39","25":"r39","26":"r39","27":"r39","28":"r39","29":"r39","30":"r39","31":"r39","32":"r39","33":"r39","34":"r39","35":"r39","36":"r39","37":"r39","38":"r39","39":"r39","40":"r39","41":"r39","42":"r39","43":"r39","44":"r39","45":"r39","46":"s56","52":"r39","53":"r39","54":"r39","55":"r39","57":"r39"},{"23":"r41","24":"r41","25":"r41","26":"r41","27":"r41","28":"r41","29":"r41","30":"r41","31":"r41","32":"r41","33":"r41","34":"r41","35":"r41","36":"r41","37":"r41","38":"r41","39":"r41","40":"r41","41":"r41","42":"r41","43":"r41","44":"r41","45":"r41","46":"r41","52":"r41","53":"r41","54":"r41","55":"r41","57":"r41"},{"23":"r42","24":"r42","25":"r42","26":"r42","27":"r42","28":"r42","29":"r42","30":"r42","31":"r42","32":"r42","33":"r42","34":"r42","35":"r42","36":"r42","37":"r42","38":"r42","39":"r42","40":"r42","41":"r42","42":"r42","43":"r42","44":"r42","45":"r42","46":"r42","52":"r42","53":"r42","54":"r42","55":"r42","57":"r42"},{"23":"r43","24":"r43","25":"r43","26":"r43","27":"r43","28":"r43","29":"r43","30":"r43","31":"r43","32":"r43","33":"r43","34":"r43","35":"r43","36":"r43","37":"r43","38":"r43","39":"r43","40":"r43","41":"r43","42":"r43","43":"r43","44":"r43","45":"r43","46":"r43","52":"r43","53":"r43","54":"r43","55":"r43","57":"r43"},{"23":"r44","24":"r44","25":"r44","26":"r44","27":"r44","28":"r44","29":"r44","30":"r44","31":"r44","32":"r44","33":"r44","34":"r44","35":"r44","36":"r44","37":"r44","38":"r44","39":"r44","40":"r44","41":"r44","42":"r44","43":"r44","44":"r44","45":"r44","46":"r44","52":"r44","53":"r44","54":"r44","55":"r44","57":"r44"},{"23":"r45","24":"r45","25":"r45","26":"r45","27":"r45","28":"r45","29":"r45","30":"r45","31":"r45","32":"r45","33":"r45","34":"r45","35":"r45","36":"r45","37":"r45","38":"r45","39":"r45","40":"r45","41":"r45","42":"r45","43":"r45","44":"r45","45":"r45","46":"r45","52":"r45","53":"r45","54":"r45","55":"r45","57":"r45"},{"23":"r46","24":"r46","25":"r46","26":"r46","27":"r46","28":"r46","29":"r46","30":"r46","31":"r46","32":"r46","33":"r46","34":"r46","35":"r46","36":"r46","37":"r46","38":"r46","39":"r46","40":"r46","41":"r46","42":"r46","43":"r46","44":"r46","45":"r46","46":"r46","52":"r46","53":"r46","54":"r46","55":"r46","57":"r46"},{"23":"r40","24":"r40","25":"r40","26":"r40","27":"r40","28":"r40","29":"r40","30":"r40","31":"r40","32":"r40","33":"r40","34":"r40","35":"r40","36":"r40","37":"r40","38":"r40","39":"r40","40":"r40","41":"r40","42":"r40","43":"r40","44":"r40","45":"r40","52":"r40","53":"r40","54":"r40","55":"r40","57":"r40"},{"25":"s12","31":"s58"},{"23":"r18","24":"r18","25":"r18","26":"r18","27":"r18","28":"r18","29":"r18","30":"r18","31":"r18","32":"r18","33":"r18","34":"r18","35":"r18","36":"r18","37":"r18","38":"r18","39":"r18","40":"r18","41":"r18","42":"r18","43":"r18","44":"r18","45":"r18","52":"r18","53":"r18","54":"r18","55":"r18","57":"r18"},{"25":"s12","31":"s60"},{"23":"r19","24":"r19","25":"r19","26":"r19","27":"r19","28":"r19","29":"r19","30":"r19","31":"r19","32":"r19","33":"r19","34":"r19","35":"r19","36":"r19","37":"r19","38":"r19","39":"r19","40":"r19","41":"r19","42":"r19","43":"r19","44":"r19","45":"r19","52":"r19","53":"r19","54":"r19","55":"r19","57":"r19"},{"25":"s12","31":"s62"},{"23":"r20","24":"r20","25":"r20","26":"r20","27":"r20","28":"r20","29":"r20","30":"r20","31":"r20","32":"r20","33":"r20","34":"r20","35":"r20","36":"r20","37":"r20","38":"r20","39":"r20","40":"r20","41":"r20","42":"r20","43":"r20","44":"r20","45":"r20","52":"r20","53":"r20","54":"r20","55":"r20","57":"r20"},{"25":"s12","31":"s64"},{"23":"r21","24":"r21","25":"r21","26":"r21","27":"r21","28":"r21","29":"r21","30":"r21","31":"r21","32":"r21","33":"r21","34":"r21","35":"r21","36":"r21","37":"r21","38":"r21","39":"r21","40":"r21","41":"r21","42":"r21","43":"r21","44":"r21","45":"r21","52":"r21","53":"r21","54":"r21","55":"r21","57":"r21"},{"56":"s72"},{"56":"r55"},{"10":70,"20":73,"21":75,"22":76,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r56","58":"s74"},{"24":"r62","28":"r62","35":"r62","36":"r62","37":"r62","38":"r62","39":"r62","40":"r62","41":"r62","42":"r62","43":"r62","44":"r62","45":"r62","56":"r62","58":"r62"},{"24":"r63","28":"r63","35":"r63","36":"r63","37":"r63","38":"r63","39":"r63","40":"r63","41":"r63","42":"r63","43":"r63","44":"r63","45":"r63","56":"r63","58":"r63"},{"24":"r64","28":"r64","35":"r64","36":"r64","37":"r64","38":"r64","39":"r64","40":"r64","41":"r64","42":"r64","43":"r64","44":"r64","45":"r64","56":"r64","58":"r64"},{"24":"r65","28":"r65","35":"r65","36":"r65","37":"r65","38":"r65","39":"r65","40":"r65","41":"r65","42":"r65","43":"r65","44":"r65","45":"r65","56":"r65","58":"r65"},{"23":"r52","24":"r52","25":"r52","26":"r52","27":"r52","28":"r52","29":"r52","30":"r52","31":"r52","32":"r52","33":"r52","34":"r52","35":"r52","36":"r52","37":"r52","38":"r52","39":"r52","40":"r52","41":"r52","42":"r52","43":"r52","44":"r52","45":"r52","46":"r52","47":"r52","48":"r52","49":"r52","50":"r52","51":"r52","52":"r52","53":"r52","54":"r52","55":"r52","57":"r52"},{"56":"r57"},{"10":70,"21":77,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r62","58":"s68"},{"56":"r59"},{"10":70,"20":79,"21":75,"22":76,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r63","58":"s80"},{"10":70,"18":78,"19":66,"21":67,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r54","58":"s68"},{"56":"r58"},{"56":"r60"},{"10":70,"21":81,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r62","58":"s68"},{"10":70,"18":82,"19":66,"21":67,"22":69,"24":"s28","28":"s71","35":"s29","36":"s30","37":"s31","38":"s32","39":"s33","40":"s34","41":"s35","42":"s36","43":"s37","44":"s38","45":"s39","56":"r54","58":"s68"},{"56":"r61"},{"56":"s84"},{"23":"r53","24":"r53","25":"r53","26":"r53","27":"r53","28":"r53","29":"r53","30":"r53","31":"r53","32":"r53","33":"r53","34":"r53","35":"r53","36":"r53","37":"r53","38":"r53","39":"r53","40":"r53","41":"r53","42":"r53","43":"r53","44":"r53","45":"r53","46":"r53","47":"r53","48":"r53","49":"r53","50":"r53","51":"r53","52":"r53","53":"r53","54":"r53","55":"r53","57":"r53"},{"25":"s12","31":"s86"},{"23":"r49","24":"r49","25":"r49","26":"r49","27":"r49","28":"r49","29":"r49","30":"r49","31":"r49","32":"r49","33":"r49","34":"r49","35":"r49","36":"r49","37":"r49","38":"r49","39":"r49","40":"r49","41":"r49","42":"r49","43":"r49","44":"r49","45":"r49","46":"r49","47":"r49","48":"r49","49":"r49","50":"r49","51":"r49","52":"r49","53":"r49","54":"r49","55":"r49","57":"r49"},{"25":"s12","31":"s88"},{"23":"r50","24":"r50","25":"r50","26":"r50","27":"r50","28":"r50","29":"r50","30":"r50","31":"r50","32":"r50","33":"r50","34":"r50","35":"r50","36":"r50","37":"r50","38":"r50","39":"r50","40":"r50","41":"r50","42":"r50","43":"r50","44":"r50","45":"r50","46":"r50","47":"r50","48":"r50","49":"r50","50":"r50","51":"r50","52":"r50","53":"r50","54":"r50","55":"r50","57":"r50"},{"25":"s12","31":"s90"},{"23":"r51","24":"r51","25":"r51","26":"r51","27":"r51","28":"r51","29":"r51","30":"r51","31":"r51","32":"r51","33":"r51","34":"r51","35":"r51","36":"r51","37":"r51","38":"r51","39":"r51","40":"r51","41":"r51","42":"r51","43":"r51","44":"r51","45":"r51","46":"r51","47":"r51","48":"r51","49":"r51","50":"r51","51":"r51","52":"r51","53":"r51","54":"r51","55":"r51","57":"r51"}],cr=[],jr=void 0,XU=[[/^#[^\n]+/,function(){}],[/^\s+/,function(){}],[/^-/,function(){return"DASH"}],[/^\//,function(){return"CHAR"}],[/^#/,function(){return"CHAR"}],[/^\|/,function(){return"CHAR"}],[/^\./,function(){return"CHAR"}],[/^\{/,function(){return"CHAR"}],[/^\{\d+\}/,function(){return"RANGE_EXACT"}],[/^\{\d+,\}/,function(){return"RANGE_OPEN"}],[/^\{\d+,\d+\}/,function(){return"RANGE_CLOSED"}],[/^\\k<(([\u0041-\u005a\u0061-\u007a\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5-\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4-\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08-\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67-\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\}))(([\u0030-\u0039\u0041-\u005a\u005f\u0061-\u007a\u00aa\u00b5\u00b7\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cfa\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udca0-\udca9\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00-\ude03\ude05-\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd27\udd30-\udd39\udf00-\udf1c\udf27\udf30-\udf50\udfe0-\udff6]|\ud804[\udc00-\udc46\udc66-\udc6f\udc7f-\udcba\udcd0-\udce8\udcf0-\udcf9\udd00-\udd34\udd36-\udd3f\udd44-\udd46\udd50-\udd73\udd76\udd80-\uddc4\uddc9-\uddcc\uddd0-\uddda\udddc\ude00-\ude11\ude13-\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udeea\udef0-\udef9\udf00-\udf03\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3b-\udf44\udf47-\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc00-\udc4a\udc50-\udc59\udc5e-\udc5f\udc80-\udcc5\udcc7\udcd0-\udcd9\udd80-\uddb5\uddb8-\uddc0\uddd8-\udddd\ude00-\ude40\ude44\ude50-\ude59\ude80-\udeb8\udec0-\udec9\udf00-\udf1a\udf1d-\udf2b\udf30-\udf39]|\ud806[\udc00-\udc3a\udca0-\udce9\udcff\udda0-\udda7\uddaa-\uddd7\uddda-\udde1\udde3-\udde4\ude00-\ude3e\ude47\ude50-\ude99\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc40\udc50-\udc59\udc72-\udc8f\udc92-\udca7\udca9-\udcb6\udd00-\udd06\udd08-\udd09\udd0b-\udd36\udd3a\udd3c-\udd3d\udd3f-\udd47\udd50-\udd59\udd60-\udd65\udd67-\udd68\udd6a-\udd8e\udd90-\udd91\udd93-\udd98\udda0-\udda9\udee0-\udef6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude60-\ude69\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf50-\udf59\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d-\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb\udfce-\udfff]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23-\udc24\udc26-\udc2a\udd00-\udd2c\udd30-\udd3d\udd40-\udd49\udd4e\udec0-\udef9]|\ud83a[\udc00-\udcc4\udcd0-\udcd6\udd00-\udd4b\udd50-\udd59]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\})|[\u200c\u200d])*>/,function(){var s=mi.slice(3,-1);return xE(s,this.getCurrentState()),"NAMED_GROUP_REF"}],[/^\\b/,function(){return"ESC_b"}],[/^\\B/,function(){return"ESC_B"}],[/^\\c[a-zA-Z]/,function(){return"CTRL_CH"}],[/^\\0\d{1,2}/,function(){return"OCT_CODE"}],[/^\\0/,function(){return"DEC_CODE"}],[/^\\\d{1,3}/,function(){return"DEC_CODE"}],[/^\\u[dD][89abAB][0-9a-fA-F]{2}\\u[dD][c-fC-F][0-9a-fA-F]{2}/,function(){return"U_CODE_SURROGATE"}],[/^\\u\{[0-9a-fA-F]{1,}\}/,function(){return"U_CODE"}],[/^\\u[0-9a-fA-F]{4}/,function(){return"U_CODE"}],[/^\\[pP]\{\w+(?:=\w+)?\}/,function(){return"U_PROP_VALUE_EXP"}],[/^\\x[0-9a-fA-F]{2}/,function(){return"HEX_CODE"}],[/^\\[tnrdDsSwWvf]/,function(){return"META_CHAR"}],[/^\\\//,function(){return"ESC_CHAR"}],[/^\\[ #]/,function(){return"ESC_CHAR"}],[/^\\[\^\$\.\*\+\?\(\)\\\[\]\{\}\|\/]/,function(){return"ESC_CHAR"}],[/^\\[^*?+\[()\\|]/,function(){var s=this.getCurrentState();if(s==="u_class"&&mi==="\\-")return"ESC_CHAR";if(s==="u"||s==="xu"||s==="u_class")throw new SyntaxError("invalid Unicode escape "+mi);return"ESC_CHAR"}],[/^\(/,function(){return"CHAR"}],[/^\)/,function(){return"CHAR"}],[/^\(\?=/,function(){return"POS_LA_ASSERT"}],[/^\(\?!/,function(){return"NEG_LA_ASSERT"}],[/^\(\?<=/,function(){return"POS_LB_ASSERT"}],[/^\(\?<!/,function(){return"NEG_LB_ASSERT"}],[/^\(\?:/,function(){return"NON_CAPTURE_GROUP"}],[/^\(\?<(([\u0041-\u005a\u0061-\u007a\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4-\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u09fc\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0af9\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60-\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e46\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5-\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a-\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd-\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\ude80-\ude9c\udea0-\uded0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf75\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00\ude10-\ude13\ude15-\ude17\ude19-\ude35\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee4\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd23\udf00-\udf1c\udf27\udf30-\udf45\udfe0-\udff6]|\ud804[\udc03-\udc37\udc83-\udcaf\udcd0-\udce8\udd03-\udd26\udd44\udd50-\udd72\udd76\udd83-\uddb2\uddc1-\uddc4\uddda\udddc\ude00-\ude11\ude13-\ude2b\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udede\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3d\udf50\udf5d-\udf61]|\ud805[\udc00-\udc34\udc47-\udc4a\udc5f\udc80-\udcaf\udcc4-\udcc5\udcc7\udd80-\uddae\uddd8-\udddb\ude00-\ude2f\ude44\ude80-\udeaa\udeb8\udf00-\udf1a]|\ud806[\udc00-\udc2b\udca0-\udcdf\udcff\udda0-\udda7\uddaa-\uddd0\udde1\udde3\ude00\ude0b-\ude32\ude3a\ude50\ude5c-\ude89\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc2e\udc40\udc72-\udc8f\udd00-\udd06\udd08-\udd09\udd0b-\udd30\udd46\udd60-\udd65\udd67-\udd68\udd6a-\udd89\udd98\udee0-\udef2]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udf00-\udf2f\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf50\udf93-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud838[\udd00-\udd2c\udd37-\udd3d\udd4e\udec0-\udeeb]|\ud83a[\udc00-\udcc4\udd00-\udd43\udd4b]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\}))(([\u0030-\u0039\u0041-\u005a\u005f\u0061-\u007a\u00aa\u00b5\u00b7\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376-\u0377\u037a-\u037d\u037f\u0386-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u05d0-\u05ea\u05ef-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u07fd\u0800-\u082d\u0840-\u085b\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u08d3-\u08e1\u08e3-\u0963\u0966-\u096f\u0971-\u0983\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7-\u09c8\u09cb-\u09ce\u09d7\u09dc-\u09dd\u09df-\u09e3\u09e6-\u09f1\u09fc\u09fe\u0a01-\u0a03\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a3c\u0a3e-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0af9-\u0aff\u0b01-\u0b03\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47-\u0b48\u0b4b-\u0b4d\u0b56-\u0b57\u0b5c-\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c00-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c58-\u0c5a\u0c60-\u0c63\u0c66-\u0c6f\u0c80-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5-\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1-\u0cf2\u0d00-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d54-\u0d57\u0d5f-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82-\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2-\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18-\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1369-\u1371\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772-\u1773\u1780-\u17d3\u17d7\u17dc-\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1878\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19da\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1ab0-\u1abd\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1cd0-\u1cd2\u1cd4-\u1cfa\u1d00-\u1df9\u1dfb-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua8fd-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\ua9e0-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabea\uabec-\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2f\ufe33-\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]|\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c-\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\udd40-\udd74\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf2d-\udf4a\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf\udfd1-\udfd5]|\ud801[\udc00-\udc9d\udca0-\udca9\udcb0-\udcd3\udcd8-\udcfb\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37-\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udce0-\udcf2\udcf4-\udcf5\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe-\uddbf\ude00-\ude03\ude05-\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude35\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48\udc80-\udcb2\udcc0-\udcf2\udd00-\udd27\udd30-\udd39\udf00-\udf1c\udf27\udf30-\udf50\udfe0-\udff6]|\ud804[\udc00-\udc46\udc66-\udc6f\udc7f-\udcba\udcd0-\udce8\udcf0-\udcf9\udd00-\udd34\udd36-\udd3f\udd44-\udd46\udd50-\udd73\udd76\udd80-\uddc4\uddc9-\uddcc\uddd0-\uddda\udddc\ude00-\ude11\ude13-\ude37\ude3e\ude80-\ude86\ude88\ude8a-\ude8d\ude8f-\ude9d\ude9f-\udea8\udeb0-\udeea\udef0-\udef9\udf00-\udf03\udf05-\udf0c\udf0f-\udf10\udf13-\udf28\udf2a-\udf30\udf32-\udf33\udf35-\udf39\udf3b-\udf44\udf47-\udf48\udf4b-\udf4d\udf50\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc00-\udc4a\udc50-\udc59\udc5e-\udc5f\udc80-\udcc5\udcc7\udcd0-\udcd9\udd80-\uddb5\uddb8-\uddc0\uddd8-\udddd\ude00-\ude40\ude44\ude50-\ude59\ude80-\udeb8\udec0-\udec9\udf00-\udf1a\udf1d-\udf2b\udf30-\udf39]|\ud806[\udc00-\udc3a\udca0-\udce9\udcff\udda0-\udda7\uddaa-\uddd7\uddda-\udde1\udde3-\udde4\ude00-\ude3e\ude47\ude50-\ude99\ude9d\udec0-\udef8]|\ud807[\udc00-\udc08\udc0a-\udc36\udc38-\udc40\udc50-\udc59\udc72-\udc8f\udc92-\udca7\udca9-\udcb6\udd00-\udd06\udd08-\udd09\udd0b-\udd36\udd3a\udd3c-\udd3d\udd3f-\udd47\udd50-\udd59\udd60-\udd65\udd67-\udd68\udd6a-\udd8e\udd90-\udd91\udd93-\udd98\udda0-\udda9\udee0-\udef6]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38\ude40-\ude5e\ude60-\ude69\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf50-\udf59\udf63-\udf77\udf7d-\udf8f]|\ud81b[\ude40-\ude7f\udf00-\udf4a\udf4f-\udf87\udf8f-\udf9f\udfe0-\udfe1\udfe3]|\ud81c[\udc00-\udfff]|\ud81d[\udc00-\udfff]|\ud81e[\udc00-\udfff]|\ud81f[\udc00-\udfff]|\ud820[\udc00-\udfff]|\ud821[\udc00-\udff7]|\ud822[\udc00-\udef2]|\ud82c[\udc00-\udd1e\udd50-\udd52\udd64-\udd67\udd70-\udefb]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d-\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb\udfce-\udfff]|\ud836[\ude00-\ude36\ude3b-\ude6c\ude75\ude84\ude9b-\ude9f\udea1-\udeaf]|\ud838[\udc00-\udc06\udc08-\udc18\udc1b-\udc21\udc23-\udc24\udc26-\udc2a\udd00-\udd2c\udd30-\udd3d\udd40-\udd49\udd4e\udec0-\udef9]|\ud83a[\udc00-\udcc4\udcd0-\udcd6\udd00-\udd4b\udd50-\udd59]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21-\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51-\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61-\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d\udc20-\udfff]|\ud86f[\udc00-\udfff]|\ud870[\udc00-\udfff]|\ud871[\udc00-\udfff]|\ud872[\udc00-\udfff]|\ud873[\udc00-\udea1\udeb0-\udfff]|\ud874[\udc00-\udfff]|\ud875[\udc00-\udfff]|\ud876[\udc00-\udfff]|\ud877[\udc00-\udfff]|\ud878[\udc00-\udfff]|\ud879[\udc00-\udfff]|\ud87a[\udc00-\udfe0]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef])|[$_]|(\\u[0-9a-fA-F]{4}|\\u\{[0-9a-fA-F]{1,}\})|[\u200c\u200d])*>/,function(){return mi=mi.slice(3,-1),xE(mi,this.getCurrentState()),"NAMED_CAPTURE_GROUP"}],[/^\(/,function(){return"L_PAREN"}],[/^\)/,function(){return"R_PAREN"}],[/^[*?+[^$]/,function(){return"CHAR"}],[/^\\\]/,function(){return"ESC_CHAR"}],[/^\]/,function(){return this.popState(),"R_BRACKET"}],[/^\^/,function(){return"BOS"}],[/^\$/,function(){return"EOS"}],[/^\*/,function(){return"STAR"}],[/^\?/,function(){return"Q_MARK"}],[/^\+/,function(){return"PLUS"}],[/^\|/,function(){return"BAR"}],[/^\./,function(){return"ANY"}],[/^\//,function(){return"SLASH"}],[/^[^*?+\[()\\|]/,function(){return"CHAR"}],[/^\[\^/,function(){var s=this.getCurrentState();return this.pushState(s==="u"||s==="xu"?"u_class":"class"),"NEG_CLASS"}],[/^\[/,function(){var s=this.getCurrentState();return this.pushState(s==="u"||s==="xu"?"u_class":"class"),"L_BRACKET"}]],JU={INITIAL:[8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],u:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],xu:[0,1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],x:[0,1,8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,30,31,32,33,34,35,36,37,41,42,43,44,45,46,47,48,49,50,51],u_class:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],class:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,22,23,24,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]},bE={type:wE,value:""};jr={initString:function(e){return this._string=e,this._cursor=0,this._states=["INITIAL"],this._tokensQueue=[],this._currentLine=1,this._currentColumn=0,this._currentLineBeginOffset=0,this._tokenStartOffset=0,this._tokenEndOffset=0,this._tokenStartLine=1,this._tokenEndLine=1,this._tokenStartColumn=0,this._tokenEndColumn=0,this},getStates:function(){return this._states},getCurrentState:function(){return this._states[this._states.length-1]},pushState:function(e){this._states.push(e)},begin:function(e){this.pushState(e)},popState:function(){return this._states.length>1?this._states.pop():this._states[0]},getNextToken:function(){if(this._tokensQueue.length>0)return this.onToken(this._toToken(this._tokensQueue.shift()));if(!this.hasMoreTokens())return this.onToken(bE);for(var e=this._string.slice(this._cursor),t=JU[this.getCurrentState()],a=0;a<t.length;a++){var r=t[a],i=XU[r],n=this._match(e,i[0]);if(e===""&&n===""&&this._cursor++,n!==null){mi=n,yE=mi.length;var o=i[1].call(this);if(!o)return this.getNextToken();if(Array.isArray(o)){var l=o.slice(1);if(o=o[0],l.length>0){var d;(d=this._tokensQueue).unshift.apply(d,kE(l))}}return this.onToken(this._toToken(o,mi))}}if(this.isEOF())return this._cursor++,bE;this.throwUnexpectedToken(e[0],this._currentLine,this._currentColumn)},throwUnexpectedToken:function(e,t,a){var r=this._string.split(`
`)[t-1],i="";if(r){var n=" ".repeat(a);i=`
`+r+`
`+n+`^
`}throw new SyntaxError(i+'Unexpected token: "'+e+'" '+("at "+t+":"+a+"."))},getCursor:function(){return this._cursor},getCurrentLine:function(){return this._currentLine},getCurrentColumn:function(){return this._currentColumn},_captureLocation:function(e){var t=/\n/g;this._tokenStartOffset=this._cursor,this._tokenStartLine=this._currentLine,this._tokenStartColumn=this._tokenStartOffset-this._currentLineBeginOffset;for(var a=void 0;(a=t.exec(e))!==null;)this._currentLine++,this._currentLineBeginOffset=this._tokenStartOffset+a.index+1;this._tokenEndOffset=this._cursor+e.length,this._tokenEndLine=this._currentLine,this._tokenEndColumn=this._currentColumn=this._tokenEndOffset-this._currentLineBeginOffset},_toToken:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return{type:e,value:t,startOffset:this._tokenStartOffset,endOffset:this._tokenEndOffset,startLine:this._tokenStartLine,endLine:this._tokenEndLine,startColumn:this._tokenStartColumn,endColumn:this._tokenEndColumn}},isEOF:function(){return this._cursor===this._string.length},hasMoreTokens:function(){return this._cursor<=this._string.length},_match:function(e,t){var a=e.match(t);return a?(this._captureLocation(a[0]),this._cursor+=a[0].length,a[0]):null},onToken:function(e){return e}};sa.lexer=jr;sa.tokenizer=jr;sa.options={captureLocations:!0};var Ro={setOptions:function(e){return sa.options=e,this},getOptions:function(){return sa.options},parse:function(e,t){if(!jr)throw new Error("Tokenizer instance wasn't specified.");jr.initString(e);var a=sa.options;t&&(sa.options=Object.assign({},sa.options,t)),Ro.onParseBegin(e,jr,sa.options),cr.length=0,cr.push(0);var r=jr.getNextToken(),i=null;do{r||(sa.options=a,DE());var n=cr[cr.length-1],o=vE[r.type];wy[n].hasOwnProperty(o)||(sa.options=a,EE(r));var l=wy[n][o];if(l[0]==="s"){var d=null;sa.options.captureLocations&&(d={startOffset:r.startOffset,endOffset:r.endOffset,startLine:r.startLine,endLine:r.endLine,startColumn:r.startColumn,endColumn:r.endColumn}),i=this.onShift(r),cr.push({symbol:vE[i.type],semanticValue:i.value,loc:d},Number(l.slice(1))),r=jr.getNextToken()}else if(l[0]==="r"){var u=l.slice(1),p=QU[u],m=typeof p[2]=="function",f=m?[]:null,h=m&&sa.options.captureLocations?[]:null;if(p[1]!==0)for(var k=p[1];k-- >0;){cr.pop();var g=cr.pop();m&&(f.unshift(g.semanticValue),h&&h.unshift(g.loc))}var y={symbol:p[0]};if(m){mi=i?i.value:null,yE=i?i.value.length:null;var w=h!==null?f.concat(h):f;p[2].apply(p,kE(w)),y.semanticValue=oe,h&&(y.loc=J)}var v=cr[cr.length-1],T=p[0];cr.push(y,wy[v][T])}else if(l==="acc"){cr.pop();var x=cr.pop();return(cr.length!==1||cr[0]!==0||jr.hasMoreTokens())&&(sa.options=a,EE(r)),x.hasOwnProperty("semanticValue")?(sa.options=a,Ro.onParseEnd(x.semanticValue),x.semanticValue):(Ro.onParseEnd(),sa.options=a,!0)}}while(jr.hasMoreTokens()||cr.length>1)},setTokenizer:function(e){return jr=e,Ro},getTokenizer:function(){return jr},onParseBegin:function(e,t,a){},onParseEnd:function(e){},onShift:function(e){return e}},vy=0,Od={},TE="";Ro.onParseBegin=function(s,e){TE=s,vy=0,Od={};var t=s.lastIndexOf("/"),a=s.slice(t);a.includes("x")&&a.includes("u")?e.pushState("xu"):(a.includes("x")&&e.pushState("x"),a.includes("u")&&e.pushState("u"))};Ro.onShift=function(s){return(s.type==="L_PAREN"||s.type==="NAMED_CAPTURE_GROUP")&&(s.value=new String(s.value),s.value.groupNumber=++vy),s};function by(s){var e=s.match(/\d+/g).map(Number);if(Number.isFinite(e[1])&&e[1]<e[0])throw new SyntaxError("Numbers out of order in "+s+" quantifier");return e}function CE(s,e){if(s.kind==="control"||e.kind==="control"||!isNaN(s.codePoint)&&!isNaN(e.codePoint)&&s.codePoint>e.codePoint)throw new SyntaxError("Range "+s.value+"-"+e.value+" out of order in character class")}var Al=gE();function ZU(s,e){var t=s[1]==="P",a=s.indexOf("="),r=s.slice(3,a!==-1?a:-1),i=void 0,n=a===-1&&Al.isGeneralCategoryValue(r),o=a===-1&&Al.isBinaryPropertyName(r);if(n)i=r,r="General_Category";else if(o)i=r;else{if(!Al.isValidName(r))throw new SyntaxError("Invalid unicode property name: "+r+".");if(i=s.slice(a+1,-1),!Al.isValidValue(r,i))throw new SyntaxError("Invalid "+r+" unicode property value: "+i+".")}return jt({type:"UnicodeProperty",name:r,value:i,negative:t,shorthand:n,binary:o,canonicalName:Al.getCanonicalName(r)||r,canonicalValue:Al.getCanonicalValue(i)||i},e)}function dr(s,e,t){var a=void 0,r=void 0;switch(e){case"decimal":{r=Number(s.slice(1)),a=String.fromCodePoint(r);break}case"oct":{r=parseInt(s.slice(1),8),a=String.fromCodePoint(r);break}case"hex":case"unicode":{if(s.lastIndexOf("\\u")>0){var i=s.split("\\u").slice(1),n=KU(i,2),o=n[0],l=n[1];o=parseInt(o,16),l=parseInt(l,16),r=(o-55296)*1024+(l-56320)+65536,a=String.fromCodePoint(r)}else{var d=s.slice(2).replace("{","");if(r=parseInt(d,16),r>1114111)throw new SyntaxError("Bad character escape sequence: "+s);a=String.fromCodePoint(r)}break}case"meta":{switch(s){case"\\t":a=" ",r=a.codePointAt(0);break;case"\\n":a=`
`,r=a.codePointAt(0);break;case"\\r":a="\r",r=a.codePointAt(0);break;case"\\v":a="\v",r=a.codePointAt(0);break;case"\\f":a="\f",r=a.codePointAt(0);break;case"\\b":a="\b",r=a.codePointAt(0);case"\\0":a="\0",r=0;case".":a=".",r=NaN;break;default:r=NaN}break}case"simple":{a=s,r=a.codePointAt(0);break}}return jt({type:"Char",value:s,kind:e,symbol:a,codePoint:r},t)}var e$="gimsuxy";function t$(s){var e=new Set,t=!0,a=!1,r=void 0;try{for(var i=s[Symbol.iterator](),n;!(t=(n=i.next()).done);t=!0){var o=n.value;if(e.has(o)||!e$.includes(o))throw new SyntaxError("Invalid flags: "+s);e.add(o)}}catch(l){a=!0,r=l}finally{try{!t&&i.return&&i.return()}finally{if(a)throw r}}return s.split("").sort().join("")}function a$(s,e){var t=Number(s.slice(1));return t>0&&t<=vy?jt({type:"Backreference",kind:"number",number:t,reference:t},e):dr(s,"decimal",e)}var r$=/^\\u[0-9a-fA-F]{4}/,s$=/^\\u\{[0-9a-fA-F]{1,}\}/,i$=/\\u\{[0-9a-fA-F]{1,}\}/;function xE(s,e){var t=i$.test(s),a=e==="u"||e==="xu"||e==="u_class";if(t&&!a)throw new SyntaxError('invalid group Unicode name "'+s+'", use `u` flag.');return s}var n$=/\\u(?:([dD][89aAbB][0-9a-fA-F]{2})\\u([dD][c-fC-F][0-9a-fA-F]{2})|([dD][89aAbB][0-9a-fA-F]{2})|([dD][c-fC-F][0-9a-fA-F]{2})|([0-9a-ce-fA-CE-F][0-9a-fA-F]{3}|[dD][0-7][0-9a-fA-F]{2})|\{(0*(?:[0-9a-fA-F]{1,5}|10[0-9a-fA-F]{4}))\})/;function SE(s){return s.replace(new RegExp(n$,"g"),function(e,t,a,r,i,n,o){return t?String.fromCodePoint(parseInt(t,16),parseInt(a,16)):r?String.fromCodePoint(parseInt(r,16)):i?String.fromCodePoint(parseInt(i,16)):n?String.fromCodePoint(parseInt(n,16)):o?String.fromCodePoint(parseInt(o,16)):e})}function o$(s,e){var t=s.slice(3,-1),a=SE(t);if(Od.hasOwnProperty(a))return jt({type:"Backreference",kind:"name",number:Od[a],reference:a,referenceRaw:t},e);var r=null,i=null,n=null,o=null;e&&(r=e.startOffset,i=e.startLine,n=e.endLine,o=e.startColumn);var l=/^[\w$<>]/,d=void 0,u=[dr(s.slice(1,2),"simple",r?{startLine:i,endLine:n,startColumn:o,startOffset:r,endOffset:r+=2,endColumn:o+=2}:null)];for(u[0].escaped=!0,s=s.slice(2);s.length>0;){var p=null;(p=s.match(r$))||(p=s.match(s$))?(r&&(d={startLine:i,endLine:n,startColumn:o,startOffset:r,endOffset:r+=p[0].length,endColumn:o+=p[0].length}),u.push(dr(p[0],"unicode",d)),s=s.slice(p[0].length)):(p=s.match(l))&&(r&&(d={startLine:i,endLine:n,startColumn:o,startOffset:r,endOffset:++r,endColumn:++o}),u.push(dr(p[0],"simple",d)),s=s.slice(1))}return u}function jt(s,e){return sa.options.captureLocations&&(s.loc={source:TE.slice(e.startOffset,e.endOffset),start:{line:e.startLine,column:e.startColumn,offset:e.startOffset},end:{line:e.endLine,column:e.endColumn,offset:e.endOffset}}),s}function Hp(s,e){return sa.options.captureLocations?{startOffset:s.startOffset,endOffset:e.endOffset,startLine:s.startLine,endLine:e.endLine,startColumn:s.startColumn,endColumn:e.endColumn}:null}function EE(s){s.type===wE&&DE(),jr.throwUnexpectedToken(s.value,s.startLine,s.startColumn)}function DE(){l$("Unexpected end of input.")}function l$(s){throw new SyntaxError(s)}PE.exports=Ro});var Ld=ye((JQ,AE)=>{"use strict";var Nd=ME(),c$=Nd.parse.bind(Nd);Nd.parse=function(s,e){return c$(""+s,e)};Nd.setOptions({captureLocations:!1});AE.exports=Nd});var Wp=ye((ZQ,RE)=>{"use strict";var d$=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function u$(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var Bp="expressions",IE="expression",Ty=function(){function s(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;u$(this,s),this.node=e,this.parentPath=t,this.parent=t?t.node:null,this.property=a,this.index=r}return d$(s,[{key:"_enforceProp",value:function(t){if(!this.node.hasOwnProperty(t))throw new Error("Node of type "+this.node.type+` doesn't have "`+t+'" collection.')}},{key:"setChild",value:function(t){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=void 0;return a!=null?(r||(r=Bp),this._enforceProp(r),this.node[r][a]=t,i=s.getForNode(t,this,r,a)):(r||(r=IE),this._enforceProp(r),this.node[r]=t,i=s.getForNode(t,this,r,null)),i}},{key:"appendChild",value:function(t){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;a||(a=Bp),this._enforceProp(a);var r=this.node[a].length;return this.setChild(t,r,a)}},{key:"insertChildAt",value:function(t,a){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Bp;this._enforceProp(r),this.node[r].splice(a,0,t),a<=s.getTraversingIndex()&&s.updateTraversingIndex(1),this._rebuildIndex(this.node,r)}},{key:"remove",value:function(){if(!this.isRemoved()&&(s.registry.delete(this.node),this.node=null,!!this.parent)){if(this.index!==null){this.parent[this.property].splice(this.index,1),this.index<=s.getTraversingIndex()&&s.updateTraversingIndex(-1),this._rebuildIndex(this.parent,this.property),this.index=null,this.property=null;return}delete this.parent[this.property],this.property=null}}},{key:"_rebuildIndex",value:function(t,a){for(var r=s.getForNode(t),i=0;i<t[a].length;i++){var n=s.getForNode(t[a][i],r,a,i);n.index=i}}},{key:"isRemoved",value:function(){return this.node===null}},{key:"replace",value:function(t){return s.registry.delete(this.node),this.node=t,this.parent?(this.index!==null?this.parent[this.property][this.index]=t:this.parent[this.property]=t,s.getForNode(t,this.parentPath,this.property,this.index)):null}},{key:"update",value:function(t){Object.assign(this.node,t)}},{key:"getParent",value:function(){return this.parentPath}},{key:"getChild",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.node.expressions?s.getForNode(this.node.expressions[t],this,Bp,t):this.node.expression&&t==0?s.getForNode(this.node.expression,this,IE):null}},{key:"hasEqualSource",value:function(t){return JSON.stringify(this.node,Cy)===JSON.stringify(t.node,Cy)}},{key:"jsonEncode",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},a=t.format,r=t.useLoc;return JSON.stringify(this.node,r?null:Cy,a)}},{key:"getPreviousSibling",value:function(){return!this.parent||this.index==null?null:s.getForNode(this.parent[this.property][this.index-1],s.getForNode(this.parent),this.property,this.index-1)}},{key:"getNextSibling",value:function(){return!this.parent||this.index==null?null:s.getForNode(this.parent[this.property][this.index+1],s.getForNode(this.parent),this.property,this.index+1)}}],[{key:"getForNode",value:function(t){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1;if(!t)return null;s.registry.has(t)||s.registry.set(t,new s(t,a,r,i==-1?null:i));var n=s.registry.get(t);return a!==null&&(n.parentPath=a,n.parent=n.parentPath.node),r!==null&&(n.property=r),i>=0&&(n.index=i),n}},{key:"initRegistry",value:function(){s.registry||(s.registry=new Map),s.registry.clear()}},{key:"updateTraversingIndex",value:function(t){return s.traversingIndexStack[s.traversingIndexStack.length-1]+=t}},{key:"getTraversingIndex",value:function(){return s.traversingIndexStack[s.traversingIndexStack.length-1]}}]),s}();Ty.initRegistry();Ty.traversingIndexStack=[];function Cy(s,e){if(s!=="loc")return e}RE.exports=Ty});var xy=ye((eX,FE)=>{"use strict";var Il=Wp();function p$(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.pre,a=e.post,r=e.skipProperty;function i(n,o,l,d){if(!(!n||typeof n.type!="string")){var u=void 0;if(t&&(u=t(n,o,l,d)),u!==!1){o&&o[l]&&(isNaN(d)?n=o[l]:n=o[l][d]);for(var p in n)if(n.hasOwnProperty(p)){if(r?r(p,n):p[0]==="$")continue;var m=n[p];if(Array.isArray(m)){var f=0;for(Il.traversingIndexStack.push(f);f<m.length;)i(m[f],n,p,f),f=Il.updateTraversingIndex(1);Il.traversingIndexStack.pop()}else i(m,n,p)}}a&&a(n,o,l,d)}}i(s,null)}FE.exports={traverse:function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{asNodes:!1};Array.isArray(t)||(t=[t]),t=t.filter(function(i){return typeof i.shouldRun!="function"?!0:i.shouldRun(e)}),Il.initRegistry(),t.forEach(function(i){typeof i.init=="function"&&i.init(e)});function r(i,n,o,l){var d=Il.getForNode(n),u=Il.getForNode(i,d,o,l);return u}p$(e,{pre:function(n,o,l,d){var u=void 0;a.asNodes||(u=r(n,o,l,d));var p=!0,m=!1,f=void 0;try{for(var h=t[Symbol.iterator](),k;!(p=(k=h.next()).done);p=!0){var g=k.value;if(typeof g["*"]=="function")if(u){if(!u.isRemoved()){var y=g["*"](u);if(y===!1)return!1}}else g["*"](n,o,l,d);var w=void 0;if(typeof g[n.type]=="function"?w=g[n.type]:typeof g[n.type]=="object"&&typeof g[n.type].pre=="function"&&(w=g[n.type].pre),w)if(u){if(!u.isRemoved()){var v=w.call(g,u);if(v===!1)return!1}}else w.call(g,n,o,l,d)}}catch(T){m=!0,f=T}finally{try{!p&&h.return&&h.return()}finally{if(m)throw f}}},post:function(n,o,l,d){if(!!n){var u=void 0;a.asNodes||(u=r(n,o,l,d));var p=!0,m=!1,f=void 0;try{for(var h=t[Symbol.iterator](),k;!(p=(k=h.next()).done);p=!0){var g=k.value,y=void 0;if(typeof g[n.type]=="object"&&typeof g[n.type].post=="function"&&(y=g[n.type].post),y)if(u){if(!u.isRemoved()){var w=y.call(g,u);if(w===!1)return!1}}else y.call(g,n,o,l,d)}}catch(v){m=!0,f=v}finally{try{!p&&h.return&&h.return()}finally{if(m)throw f}}}},skipProperty:function(n){return n==="loc"}})}}});var _p=ye((tX,NE)=>{"use strict";var m$=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function f$(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var jE=hy(),h$=Ld(),g$=xy(),OE=function(){function s(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;f$(this,s),this._ast=e,this._source=null,this._string=null,this._regexp=null,this._extra=t}return m$(s,[{key:"getAST",value:function(){return this._ast}},{key:"setExtra",value:function(t){this._extra=t}},{key:"getExtra",value:function(){return this._extra}},{key:"toRegExp",value:function(){return this._regexp||(this._regexp=new RegExp(this.getSource(),this._ast.flags)),this._regexp}},{key:"getSource",value:function(){return this._source||(this._source=jE.generate(this._ast.body)),this._source}},{key:"getFlags",value:function(){return this._ast.flags}},{key:"toString",value:function(){return this._string||(this._string=jE.generate(this._ast)),this._string}}]),s}();NE.exports={TransformResult:OE,transform:function(e,t){var a=e;return e instanceof RegExp&&(e=""+e),typeof e=="string"&&(a=h$.parse(e,{captureLocations:!0})),g$.traverse(a,t),new OE(a)}}});var HE=ye((aX,LE)=>{"use strict";var Vp=uE(),k$=_p();LE.exports={transform:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],a=t.length>0?t:Object.keys(Vp),r=void 0,i={};return a.forEach(function(n){if(!Vp.hasOwnProperty(n))throw new Error("Unknown compat-transform: "+n+". Available transforms are: "+Object.keys(Vp).join(", "));var o=Vp[n];r=k$.transform(e,o),e=r.getAST(),typeof o.getExtra=="function"&&(i[n]=o.getExtra())}),r.setExtra(i),r}}});var WE=ye((rX,BE)=>{"use strict";BE.exports=function s(e){if(e===null||typeof e!="object")return e;var t=void 0;Array.isArray(e)?t=[]:t={};for(var a in e)t[a]=s(e[a]);return t}});var VE=ye((sX,_E)=>{"use strict";_E.exports={shouldRun:function(e){return e.flags.includes("u")},Char:function(e){var t=e.node;t.kind!=="unicode"||!t.isSurrogatePair||isNaN(t.codePoint)||(t.value="\\u{"+t.codePoint.toString(16)+"}",delete t.isSurrogatePair)}}});var QE=ye((iX,KE)=>{"use strict";var UE="A".codePointAt(0),$E="Z".codePointAt(0),YE="a".codePointAt(0),zE="z".codePointAt(0),qE="0".codePointAt(0),GE="9".codePointAt(0);KE.exports={Char:function(e){var t=e.node,a=e.parent;if(!(isNaN(t.codePoint)||t.kind==="simple")&&!(a.type==="ClassRange"&&!y$(a))&&!!w$(t.codePoint)){var r=String.fromCodePoint(t.codePoint),i={type:"Char",kind:"simple",value:r,symbol:r,codePoint:t.codePoint};v$(r,a.type)&&(i.escaped=!0),e.replace(i)}}};function y$(s){var e=s.from,t=s.to;return e.codePoint>=qE&&e.codePoint<=GE&&t.codePoint>=qE&&t.codePoint<=GE||e.codePoint>=UE&&e.codePoint<=$E&&t.codePoint>=UE&&t.codePoint<=$E||e.codePoint>=YE&&e.codePoint<=zE&&t.codePoint>=YE&&t.codePoint<=zE}function w$(s){return s>=32&&s<=126}function v$(s,e){return e==="ClassRange"||e==="CharacterClass"?/[\]\\^-]/.test(s):/[*[()+?^$./\\|{}]/.test(s)}});var eD=ye((nX,ZE)=>{"use strict";var XE="A".codePointAt(0),JE="Z".codePointAt(0);ZE.exports={_AZClassRanges:null,_hasUFlag:!1,init:function(e){this._AZClassRanges=new Set,this._hasUFlag=e.flags.includes("u")},shouldRun:function(e){return e.flags.includes("i")},Char:function(e){var t=e.node,a=e.parent;if(!isNaN(t.codePoint)&&!(!this._hasUFlag&&t.codePoint>=4096)){if(a.type==="ClassRange"){if(!this._AZClassRanges.has(a)&&!b$(a))return;this._AZClassRanges.add(a)}var r=t.symbol.toLowerCase();r!==t.symbol&&(t.value=T$(r,t),t.symbol=r,t.codePoint=r.codePointAt(0))}}};function b$(s){var e=s.from,t=s.to;return e.codePoint>=XE&&e.codePoint<=JE&&t.codePoint>=XE&&t.codePoint<=JE}function T$(s,e){var t=s.codePointAt(0);if(e.kind==="decimal")return"\\"+t;if(e.kind==="oct")return"\\0"+t.toString(8);if(e.kind==="hex")return"\\x"+t.toString(16);if(e.kind==="unicode")if(e.isSurrogatePair){var a=C$(t),r=a.lead,i=a.trail;return"\\u"+"0".repeat(4-r.length)+r+"\\u"+"0".repeat(4-i.length)+i}else{if(e.value.includes("{"))return"\\u{"+t.toString(16)+"}";var n=t.toString(16);return"\\u"+"0".repeat(4-n.length)+n}return s}function C$(s){var e=Math.floor((s-65536)/1024)+55296,t=(s-65536)%1024+56320;return{lead:e.toString(16),trail:t.toString(16)}}});var aD=ye((oX,tD)=>{"use strict";tD.exports={CharacterClass:function(e){for(var t=e.node,a={},r=0;r<t.expressions.length;r++){var i=e.getChild(r),n=i.jsonEncode();a.hasOwnProperty(n)&&(i.remove(),r--),a[n]=!0}}}});var Up=ye((lX,sD)=>{"use strict";function x$(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}function rD(s){if(s.type!=="Disjunction")throw new TypeError('Expected "Disjunction" node, got "'+s.type+'"');var e=[];return s.left&&s.left.type==="Disjunction"?e.push.apply(e,x$(rD(s.left)).concat([s.right])):e.push(s.left,s.right),e}function S$(s){return s.reduce(function(e,t){return{type:"Disjunction",left:e,right:t}})}function E$(s){s.kind==="*"?s.kind="+":s.kind==="+"?(s.kind="Range",s.from=2,delete s.to):s.kind==="?"?(s.kind="Range",s.from=1,s.to=2):s.kind==="Range"&&(s.from+=1,s.to&&(s.to+=1))}sD.exports={disjunctionToList:rD,listToDisjunction:S$,increaseQuantifierByOne:E$}});var oD=ye((cX,nD)=>{"use strict";var D$=Up(),P$=D$.increaseQuantifierByOne;nD.exports={Repetition:function(e){var t=e.node,a=e.parent;if(!(a.type!=="Alternative"||!e.index)){var r=e.getPreviousSibling();if(!!r)if(r.node.type==="Repetition"){if(!r.getChild().hasEqualSource(e.getChild()))return;var i=iD(r.node.quantifier),n=i.from,o=i.to,l=iD(t.quantifier),d=l.from,u=l.to;if(r.node.quantifier.greedy!==t.quantifier.greedy&&!$p(r.node.quantifier)&&!$p(t.quantifier))return;t.quantifier.kind="Range",t.quantifier.from=n+d,o&&u?t.quantifier.to=o+u:delete t.quantifier.to,($p(r.node.quantifier)||$p(t.quantifier))&&(t.quantifier.greedy=!0),r.remove()}else{if(!r.hasEqualSource(e.getChild()))return;P$(t.quantifier),r.remove()}}}};function $p(s){return s.greedy&&(s.kind==="+"||s.kind==="*"||s.kind==="Range"&&!s.to)}function iD(s){var e=void 0,t=void 0;return s.kind==="*"?e=0:s.kind==="+"?e=1:s.kind==="?"?(e=0,t=1):(e=s.from,s.to&&(t=s.to)),{from:e,to:t}}});var cD=ye((dX,lD)=>{"use strict";lD.exports={Quantifier:function(e){var t=e.node;t.kind==="Range"&&(M$(e),A$(e),I$(e))}};function M$(s){var e=s.node;e.from!==0||e.to||(e.kind="*",delete e.from)}function A$(s){var e=s.node;e.from!==1||e.to||(e.kind="+",delete e.from)}function I$(s){var e=s.node;e.from!==1||e.to!==1||s.parentPath.replace(s.parentPath.node.expression)}});var uD=ye((uX,dD)=>{"use strict";dD.exports={ClassRange:function(e){var t=e.node;t.from.codePoint===t.to.codePoint?e.replace(t.from):t.from.codePoint===t.to.codePoint-1&&(e.getParent().insertChildAt(t.to,e.index+1),e.replace(t.from))}}});var hD=ye((pX,fD)=>{"use strict";function pD(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}fD.exports={_hasIFlag:!1,_hasUFlag:!1,init:function(e){this._hasIFlag=e.flags.includes("i"),this._hasUFlag=e.flags.includes("u")},CharacterClass:function(e){R$(e),F$(e,this._hasIFlag,this._hasUFlag),j$(e)}};function R$(s){var e=s.node;e.expressions.forEach(function(t,a){O$(t)&&s.getChild(a).replace({type:"Char",value:"\\d",kind:"meta"})})}function F$(s,e,t){var a=s.node,r=null,i=null,n=null,o=null,l=null,d=null;a.expressions.forEach(function(u,p){Ey(u,"\\d")?r=s.getChild(p):N$(u)?i=s.getChild(p):L$(u)?n=s.getChild(p):H$(u)?o=s.getChild(p):e&&t&&Hd(u,383)?l=s.getChild(p):e&&t&&Hd(u,8490)&&(d=s.getChild(p))}),r&&(i&&n||e&&(i||n))&&o&&(!t||!e||l&&d)&&(r.replace({type:"Char",value:"\\w",kind:"meta"}),i&&i.remove(),n&&n.remove(),o.remove(),l&&l.remove(),d&&d.remove())}var Sy=[function(s){return mD(s," ")}].concat(pD(["\\f","\\n","\\r","\\t","\\v"].map(function(s){return function(e){return Ey(e,s)}})),pD([160,5760,8232,8233,8239,8287,12288,65279].map(function(s){return function(e){return Hd(e,s)}})),[function(s){return s.type==="ClassRange"&&Hd(s.from,8192)&&Hd(s.to,8202)}]);function j$(s){var e=s.node;if(!(e.expressions.length<Sy.length||!Sy.every(function(a){return e.expressions.some(function(r){return a(r)})}))){var t=e.expressions.find(function(a){return Ey(a,"\\n")});t.value="\\s",t.symbol=void 0,t.codePoint=NaN,e.expressions.map(function(a,r){return Sy.some(function(i){return i(a)})?s.getChild(r):void 0}).filter(Boolean).forEach(function(a){return a.remove()})}}function O$(s){return s.type==="ClassRange"&&s.from.value==="0"&&s.to.value==="9"}function mD(s,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"simple";return s.type==="Char"&&s.value===e&&s.kind===t}function Ey(s,e){return mD(s,e,"meta")}function N$(s){return s.type==="ClassRange"&&s.from.value==="a"&&s.to.value==="z"}function L$(s){return s.type==="ClassRange"&&s.from.value==="A"&&s.to.value==="Z"}function H$(s){return s.type==="Char"&&s.value==="_"&&s.kind==="simple"}function Hd(s,e){return s.type==="Char"&&s.kind==="unicode"&&s.codePoint===e}});var kD=ye((mX,gD)=>{"use strict";gD.exports={CharacterClass:function(e){var t=e.node;if(!(t.expressions.length!==1||!V$(e)||!B$(t.expressions[0]))){var a=t.expressions[0],r=a.value,i=a.kind,n=a.escaped;if(t.negative){if(!W$(r))return;r=_$(r)}e.replace({type:"Char",value:r,kind:i,escaped:n||U$(r)})}}};function B$(s){return s.type==="Char"&&s.value!=="\\b"}function W$(s){return/^\\[dwsDWS]$/.test(s)}function _$(s){return/[dws]/.test(s)?s.toUpperCase():s.toLowerCase()}function V$(s){var e=s.parent,t=s.index;if(e.type!=="Alternative")return!0;var a=e.expressions[t-1];return a==null?!0:!(a.type==="Backreference"&&a.kind==="number"||a.type==="Char"&&a.kind==="decimal")}function U$(s){return/[*[()+?$./{}|]/.test(s)}});var wD=ye((fX,yD)=>{"use strict";yD.exports={_hasXFlag:!1,init:function(e){this._hasXFlag=e.flags.includes("x")},Char:function(e){var t=e.node;!t.escaped||$$(e,this._hasXFlag)&&delete t.escaped}};function $$(s,e){var t=s.node.value,a=s.index,r=s.parent;return r.type!=="CharacterClass"&&r.type!=="ClassRange"?!z$(t,a,r,e):!Y$(t,a,r)}function Y$(s,e,t){return s==="^"?e===0&&!t.negative:s==="-"?!0:/[\]\\]/.test(s)}function z$(s,e,t,a){return s==="{"?q$(e,t):s==="}"?G$(e,t):a&&/[ #]/.test(s)?!0:/[*[()+?^$./\\|]/.test(s)}function Yp(s,e,t){for(var a=s,r=(t?a>=0:a<e.expressions.length)&&e.expressions[a];r&&r.type==="Char"&&r.kind==="simple"&&!r.escaped&&/\d/.test(r.value);)t?a--:a++,r=(t?a>=0:a<e.expressions.length)&&e.expressions[a];return Math.abs(s-a)}function Rl(s,e){return s&&s.type==="Char"&&s.kind==="simple"&&!s.escaped&&s.value===e}function q$(s,e){if(s==null)return!1;var t=Yp(s+1,e),a=s+t+1,r=a<e.expressions.length&&e.expressions[a];if(t){if(Rl(r,"}"))return!0;if(Rl(r,","))return t=Yp(a+1,e),a=a+t+1,r=a<e.expressions.length&&e.expressions[a],Rl(r,"}")}return!1}function G$(s,e){if(s==null)return!1;var t=Yp(s-1,e,!0),a=s-t-1,r=a>=0&&e.expressions[a];return t&&Rl(r,"{")?!0:Rl(r,",")?(t=Yp(a-1,e,!0),a=a-t-1,r=a<e.expressions.length&&e.expressions[a],t&&Rl(r,"{")):!1}});var CD=ye((hX,TD)=>{"use strict";TD.exports={_hasIUFlags:!1,init:function(e){this._hasIUFlags=e.flags.includes("i")&&e.flags.includes("u")},CharacterClass:function(e){var t=e.node,a=t.expressions,r=[];a.forEach(function(l){zi(l)&&r.push(l.value)}),a.sort(K$);for(var i=0;i<a.length;i++){var n=a[i];if(Q$(n,r,this._hasIUFlags)||X$(n,a[i-1])||J$(n,a[i+1]))a.splice(i,1),i--;else{var o=Z$(n,i,a);a.splice(i-o+1,o),i-=o}}}};function K$(s,e){var t=zp(s),a=zp(e);if(t===a){if(s.type==="ClassRange"&&e.type!=="ClassRange")return-1;if(e.type==="ClassRange"&&s.type!=="ClassRange")return 1;if(s.type==="ClassRange"&&e.type==="ClassRange")return zp(s.to)-zp(e.to);if(zi(s)&&zi(e)||vD(s)&&vD(e))return s.value<e.value?-1:1}return t-a}function zp(s){return s.type==="Char"?s.value==="-"||s.kind==="control"?1/0:s.kind==="meta"&&isNaN(s.codePoint)?-1:s.codePoint:s.from.codePoint}function zi(s){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return s.type==="Char"&&s.kind==="meta"&&(e?s.value===e:/^\\[dws]$/i.test(s.value))}function vD(s){return s.type==="Char"&&s.kind==="control"}function Q$(s,e,t){for(var a=0;a<e.length;a++)if(Dy(s,e[a],t))return!0;return!1}function Dy(s,e,t){return s.type==="ClassRange"?Dy(s.from,e,t)&&Dy(s.to,e,t):e==="\\S"&&(zi(s,"\\w")||zi(s,"\\d"))||e==="\\D"&&(zi(s,"\\W")||zi(s,"\\s"))||e==="\\w"&&zi(s,"\\d")||e==="\\W"&&zi(s,"\\s")?!0:s.type!=="Char"||isNaN(s.codePoint)?!1:e==="\\s"?bD(s):e==="\\S"?!bD(s):e==="\\d"?Py(s):e==="\\D"?!Py(s):e==="\\w"?My(s,t):e==="\\W"?!My(s,t):!1}function bD(s){return s.codePoint===9||s.codePoint===10||s.codePoint===11||s.codePoint===12||s.codePoint===13||s.codePoint===32||s.codePoint===160||s.codePoint===5760||s.codePoint>=8192&&s.codePoint<=8202||s.codePoint===8232||s.codePoint===8233||s.codePoint===8239||s.codePoint===8287||s.codePoint===12288||s.codePoint===65279}function Py(s){return s.codePoint>=48&&s.codePoint<=57}function My(s,e){return Py(s)||s.codePoint>=65&&s.codePoint<=90||s.codePoint>=97&&s.codePoint<=122||s.value==="_"||e&&(s.codePoint===383||s.codePoint===8490)}function X$(s,e){if(e&&e.type==="ClassRange"){if(Ay(s,e))return!0;if(qp(s)&&e.to.codePoint===s.codePoint-1)return e.to=s,!0;if(s.type==="ClassRange"&&s.from.codePoint<=e.to.codePoint+1&&s.to.codePoint>=e.from.codePoint-1)return s.from.codePoint<e.from.codePoint&&(e.from=s.from),s.to.codePoint>e.to.codePoint&&(e.to=s.to),!0}return!1}function J$(s,e){return e&&e.type==="ClassRange"&&qp(s)&&e.from.codePoint===s.codePoint+1?(e.from=s,!0):!1}function Ay(s,e){return s.type==="Char"&&isNaN(s.codePoint)?!1:s.type==="ClassRange"?Ay(s.from,e)&&Ay(s.to,e):s.codePoint>=e.from.codePoint&&s.codePoint<=e.to.codePoint}function Z$(s,e,t){if(!qp(s))return 0;for(var a=0;e>0;){var r=t[e],i=t[e-1];if(qp(i)&&i.codePoint===r.codePoint-1)a++,e--;else break}return a>1?(t[e]={type:"ClassRange",from:t[e],to:s},a):0}function qp(s){return s&&s.type==="Char"&&!isNaN(s.codePoint)&&(My(s,!1)||s.kind==="unicode"||s.kind==="hex"||s.kind==="oct"||s.kind==="decimal")}});var ED=ye((gX,SD)=>{"use strict";var e4=Wp(),xD=Up(),t4=xD.disjunctionToList,a4=xD.listToDisjunction;SD.exports={Disjunction:function(e){var t=e.node,a={},r=t4(t).filter(function(i){var n=i?e4.getForNode(i).jsonEncode():"null";return a.hasOwnProperty(n)?!1:(a[n]=i,!0)});e.replace(a4(r))}}});var MD=ye((kX,PD)=>{"use strict";PD.exports={Disjunction:function(e){var t=e.node,a=e.parent;if(!!DD[a.type]){var r=new Map;if(!(!Gp(t,r)||!r.size)){var i={type:"CharacterClass",expressions:Array.from(r.keys()).sort().map(function(n){return r.get(n)})};DD[a.type](e.getParent(),i)}}}};var DD={RegExp:function(e,t){var a=e.node;a.body=t},Group:function(e,t){var a=e.node;a.capturing?a.expression=t:e.replace(t)}};function Gp(s,e){if(!s)return!1;var t=s.type;if(t==="Disjunction"){var a=s.left,r=s.right;return Gp(a,e)&&Gp(r,e)}else if(t==="Char"){if(s.kind==="meta"&&s.symbol===".")return!1;var i=s.value;return e.set(i,s),!0}else if(t==="CharacterClass"&&!s.negative)return s.expressions.every(function(n){return Gp(n,e)});return!1}});var ID=ye((yX,AD)=>{"use strict";AD.exports={Group:function(e){var t=e.node,a=e.parent,r=e.getChild();t.capturing||r||(a.type==="Repetition"?e.getParent().replace(t):a.type!=="RegExp"&&e.remove())}}});var FD=ye((wX,RD)=>{"use strict";function Iy(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}RD.exports={Group:function(e){var t=e.node,a=e.parent,r=e.getChild();if(!(t.capturing||!r)&&!!r4(e)&&!(r.node.type==="Disjunction"&&a.type!=="RegExp")&&!(a.type==="Repetition"&&r.node.type!=="Char"&&r.node.type!=="CharacterClass"))if(r.node.type==="Alternative"){var i=e.getParent();i.node.type==="Alternative"&&i.replace({type:"Alternative",expressions:[].concat(Iy(a.expressions.slice(0,e.index)),Iy(r.node.expressions),Iy(a.expressions.slice(e.index+1)))})}else e.replace(r.node)}};function r4(s){var e=s.parent,t=s.index;if(e.type!=="Alternative")return!0;var a=e.expressions[t-1];return a==null?!0:!(a.type==="Backreference"&&a.kind==="number"||a.type==="Char"&&a.kind==="decimal")}});var ND=ye((vX,OD)=>{"use strict";function Kp(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}var Qp=Wp(),s4=Up(),jD=s4.increaseQuantifierByOne;OD.exports={Alternative:function(e){for(var t=e.node,a=1;a<t.expressions.length;){var r=e.getChild(a);if(a=Math.max(1,i4(e,r,a)),a>=t.expressions.length||(r=e.getChild(a),a=Math.max(1,n4(e,r,a)),a>=t.expressions.length))break;r=e.getChild(a),a=Math.max(1,o4(e,r,a)),a++}}};function i4(s,e,t){for(var a=s.node,r=Math.ceil(t/2),i=0;i<r;){var n=t-2*i-1,o=void 0,l=void 0;if(i===0?(o=e,l=s.getChild(n)):(o=Qp.getForNode({type:"Alternative",expressions:[].concat(Kp(a.expressions.slice(t-i,t)),[e.node])}),l=Qp.getForNode({type:"Alternative",expressions:[].concat(Kp(a.expressions.slice(n,t-i)))})),o.hasEqualSource(l)){for(var d=0;d<2*i+1;d++)s.getChild(n).remove();return e.replace({type:"Repetition",expression:i===0&&o.node.type!=="Repetition"?o.node:{type:"Group",capturing:!1,expression:o.node},quantifier:{type:"Quantifier",kind:"Range",from:2,to:2,greedy:!0}}),n}i++}return t}function n4(s,e,t){for(var a=s.node,r=0;r<t;){var i=s.getChild(r);if(i.node.type==="Repetition"&&i.node.quantifier.greedy){var n=i.getChild(),o=void 0;if(n.node.type==="Group"&&!n.node.capturing&&(n=n.getChild()),r+1===t?(o=e,o.node.type==="Group"&&!o.node.capturing&&(o=o.getChild())):o=Qp.getForNode({type:"Alternative",expressions:[].concat(Kp(a.expressions.slice(r+1,t+1)))}),n.hasEqualSource(o)){for(var l=r;l<t;l++)s.getChild(r+1).remove();return jD(i.node.quantifier),r}}r++}return t}function o4(s,e,t){var a=s.node;if(e.node.type==="Repetition"&&e.node.quantifier.greedy){var r=e.getChild(),i=void 0;r.node.type==="Group"&&!r.node.capturing&&(r=r.getChild());var n=void 0;if(r.node.type==="Alternative"?(n=r.node.expressions.length,i=Qp.getForNode({type:"Alternative",expressions:[].concat(Kp(a.expressions.slice(t-n,t)))})):(n=1,i=s.getChild(t-1),i.node.type==="Group"&&!i.node.capturing&&(i=i.getChild())),i.hasEqualSource(r)){for(var o=t-n;o<t;o++)s.getChild(t-n).remove();return jD(e.node.quantifier),t-n}}return t}});var HD=ye((bX,LD)=>{"use strict";LD.exports=new Map([["charSurrogatePairToSingleUnicode",VE()],["charCodeToSimpleChar",QE()],["charCaseInsensitiveLowerCaseTransform",eD()],["charClassRemoveDuplicates",aD()],["quantifiersMerge",oD()],["quantifierRangeToSymbol",cD()],["charClassClassrangesToChars",uD()],["charClassToMeta",hD()],["charClassToSingleChar",kD()],["charEscapeUnescape",wD()],["charClassClassrangesMerge",CD()],["disjunctionRemoveDuplicates",ED()],["groupSingleCharsToCharClass",MD()],["removeEmptyGroup",ID()],["ungroup",FD()],["combineRepeatingPatterns",ND()]])});var VD=ye((TX,_D)=>{"use strict";var BD=WE(),l4=Ld(),WD=_p(),Xp=HD();_D.exports={optimize:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=t.whitelist,r=a===void 0?[]:a,i=t.blacklist,n=i===void 0?[]:i,o=r.length>0?r:Array.from(Xp.keys()),l=o.filter(function(m){return!n.includes(m)}),d=e;e instanceof RegExp&&(e=""+e),typeof e=="string"&&(d=l4.parse(e));var u=new WD.TransformResult(d),p=void 0;do p=u.toString(),d=BD(u.getAST()),l.forEach(function(m){if(!Xp.has(m))throw new Error("Unknown optimization-transform: "+m+". Available transforms are: "+Array.from(Xp.keys()).join(", "));var f=Xp.get(m),h=WD.transform(d,f);h.toString()!==u.toString()&&(h.toString().length<=u.toString().length?u=h:d=BD(u.getAST()))});while(u.toString()!==p);return u}}});var Bd=ye((CX,$D)=>{"use strict";var UD="\u03B5",c4=UD+"*";$D.exports={EPSILON:UD,EPSILON_CLOSURE:c4}});var Ry=ye((xX,qD)=>{"use strict";var d4=function(){function s(e,t){var a=[],r=!0,i=!1,n=void 0;try{for(var o=e[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(a.push(l.value),!(t&&a.length===t));r=!0);}catch(d){i=!0,n=d}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return a}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return s(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u4=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function p4(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}function m4(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var YD=Bd(),f4=YD.EPSILON,zD=YD.EPSILON_CLOSURE,h4=function(){function s(e,t){m4(this,s),this.in=e,this.out=t}return u4(s,[{key:"matches",value:function(t){return this.in.matches(t)}},{key:"getAlphabet",value:function(){if(!this._alphabet){this._alphabet=new Set;var t=this.getTransitionTable();for(var a in t){var r=t[a];for(var i in r)i!==zD&&this._alphabet.add(i)}}return this._alphabet}},{key:"getAcceptingStates",value:function(){return this._acceptingStates||this.getTransitionTable(),this._acceptingStates}},{key:"getAcceptingStateNumbers",value:function(){if(!this._acceptingStateNumbers){this._acceptingStateNumbers=new Set;var t=!0,a=!1,r=void 0;try{for(var i=this.getAcceptingStates()[Symbol.iterator](),n;!(t=(n=i.next()).done);t=!0){var o=n.value;this._acceptingStateNumbers.add(o.number)}}catch(l){a=!0,r=l}finally{try{!t&&i.return&&i.return()}finally{if(a)throw r}}}return this._acceptingStateNumbers}},{key:"getTransitionTable",value:function(){var t=this;if(!this._transitionTable){this._transitionTable={},this._acceptingStates=new Set;var a=new Set,r=new Set,i=function n(o){if(!a.has(o)){a.add(o),o.number=a.size,t._transitionTable[o.number]={},o.accepting&&t._acceptingStates.add(o);var l=o.getTransitions(),d=!0,u=!1,p=void 0;try{for(var m=l[Symbol.iterator](),f;!(d=(f=m.next()).done);d=!0){var h=f.value,k=d4(h,2),g=k[0],y=k[1],w=[];r.add(g);var v=!0,T=!1,x=void 0;try{for(var C=y[Symbol.iterator](),S;!(v=(S=C.next()).done);v=!0){var E=S.value;n(E),w.push(E.number)}}catch(P){T=!0,x=P}finally{try{!v&&C.return&&C.return()}finally{if(T)throw x}}t._transitionTable[o.number][g]=w}}catch(P){u=!0,p=P}finally{try{!d&&m.return&&m.return()}finally{if(u)throw p}}}};i(this.in),a.forEach(function(n){delete t._transitionTable[n.number][f4],t._transitionTable[n.number][zD]=[].concat(p4(n.getEpsilonClosure())).map(function(o){return o.number})})}return this._transitionTable}}]),s}();qD.exports=h4});var KD=ye((SX,GD)=>{"use strict";var g4=function(){function s(e,t){var a=[],r=!0,i=!1,n=void 0;try{for(var o=e[Symbol.iterator](),l;!(r=(l=o.next()).done)&&(a.push(l.value),!(t&&a.length===t));r=!0);}catch(d){i=!0,n=d}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return a}return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return s(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();function k4(s){return Array.isArray(s)?s:Array.from(s)}function Fy(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}var qi=null;function y4(s){var e=s.getTransitionTable(),t=Object.keys(e),a=s.getAlphabet(),r=s.getAcceptingStateNumbers();qi={};var i=new Set;t.forEach(function(fe){fe=Number(fe);var ue=r.has(fe);ue?qi[fe]=r:(i.add(fe),qi[fe]=i)});var n=[[i,r].filter(function(fe){return fe.size>0})],o=void 0,l=void 0;o=n[n.length-1],l=n[n.length-2];for(var d=function(){var ue={},De=!0,$e=!1,Le=void 0;try{for(var lt=o[Symbol.iterator](),ct;!(De=(ct=lt.next()).done);De=!0){var _e=ct.value,le={},ke=k4(_e),Ae=ke[0],at=ke.slice(1);le[Ae]=new Set([Ae]);var Te=!0,Pe=!1,Ze=void 0;try{e:for(var Ie=at[Symbol.iterator](),fa;!(Te=(fa=Ie.next()).done);Te=!0){var zt=fa.value,ft=!0,St=!1,lr=void 0;try{for(var wr=Object.keys(le)[Symbol.iterator](),ns;!(ft=(ns=wr.next()).done);ft=!0){var aa=ns.value;if(v4(zt,aa,e,a)){le[aa].add(zt),le[zt]=le[aa];continue e}}}catch(za){St=!0,lr=za}finally{try{!ft&&wr.return&&wr.return()}finally{if(St)throw lr}}le[zt]=new Set([zt])}}catch(za){Pe=!0,Ze=za}finally{try{!Te&&Ie.return&&Ie.return()}finally{if(Pe)throw Ze}}Object.assign(ue,le)}}catch(za){$e=!0,Le=za}finally{try{!De&&lt.return&&lt.return()}finally{if($e)throw Le}}qi=ue;var os=new Set(Object.keys(ue).map(function(za){return ue[za]}));n.push([].concat(Fy(os))),o=n[n.length-1],l=n[n.length-2]};!w4(o,l);)d();var u=new Map,p=1;o.forEach(function(fe){return u.set(fe,p++)});var m={},f=new Set,h=function(ue,De){var $e=!0,Le=!1,lt=void 0;try{for(var ct=ue[Symbol.iterator](),_e;!($e=(_e=ct.next()).done);$e=!0){var le=_e.value;r.has(le)&&f.add(De)}}catch(ke){Le=!0,lt=ke}finally{try{!$e&&ct.return&&ct.return()}finally{if(Le)throw lt}}},k=!0,g=!1,y=void 0;try{for(var w=u.entries()[Symbol.iterator](),v;!(k=(v=w.next()).done);k=!0){var T=v.value,x=g4(T,2),C=x[0],S=x[1];m[S]={};var E=!0,P=!1,I=void 0;try{for(var L=a[Symbol.iterator](),W;!(E=(W=L.next()).done);E=!0){var O=W.value;h(C,S);var H=void 0,$=!0,B=!1,q=void 0;try{for(var U=C[Symbol.iterator](),z;!($=(z=U.next()).done);$=!0){var te=z.value;if(H=e[te][O],H)break}}catch(fe){B=!0,q=fe}finally{try{!$&&U.return&&U.return()}finally{if(B)throw q}}H&&(m[S][O]=u.get(qi[H]))}}catch(fe){P=!0,I=fe}finally{try{!E&&L.return&&L.return()}finally{if(P)throw I}}}}catch(fe){g=!0,y=fe}finally{try{!k&&w.return&&w.return()}finally{if(g)throw y}}return s.setTransitionTable(m),s.setAcceptingStateNumbers(f),s}function w4(s,e){if(!e||s.length!==e.length)return!1;for(var t=0;t<s.length;t++){var a=s[t],r=e[t];if(a.size!==r.size||[].concat(Fy(a)).sort().join(",")!==[].concat(Fy(r)).sort().join(","))return!1}return!0}function v4(s,e,t,a){var r=!0,i=!1,n=void 0;try{for(var o=a[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var d=l.value;if(!b4(s,e,t,d))return!1}}catch(u){i=!0,n=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return!0}function b4(s,e,t,a){if(!qi[s]||!qi[e])return!1;var r=t[s][a],i=t[e][a];return!r&&!i?!0:qi[s].has(r)&&qi[e].has(i)}GD.exports={minimize:y4}});var ZD=ye((EX,JD)=>{"use strict";var T4=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function QD(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}function C4(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var x4=KD(),S4=Bd(),XD=S4.EPSILON_CLOSURE,E4=function(){function s(e){C4(this,s),this._nfa=e}return T4(s,[{key:"minimize",value:function(){this.getTransitionTable(),this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._originalTransitionTable=this._transitionTable,x4.minimize(this)}},{key:"getAlphabet",value:function(){return this._nfa.getAlphabet()}},{key:"getAcceptingStateNumbers",value:function(){return this._acceptingStateNumbers||this.getTransitionTable(),this._acceptingStateNumbers}},{key:"getOriginaAcceptingStateNumbers",value:function(){return this._originalAcceptingStateNumbers||this.getTransitionTable(),this._originalAcceptingStateNumbers}},{key:"setTransitionTable",value:function(t){this._transitionTable=t}},{key:"setAcceptingStateNumbers",value:function(t){this._acceptingStateNumbers=t}},{key:"getTransitionTable",value:function(){var t=this;if(this._transitionTable)return this._transitionTable;var a=this._nfa.getTransitionTable(),r=Object.keys(a);this._acceptingStateNumbers=new Set;for(var i=a[r[0]][XD],n=[i],o=this.getAlphabet(),l=this._nfa.getAcceptingStateNumbers(),d={},u=function(fe){var ue=!0,De=!1,$e=void 0;try{for(var Le=l[Symbol.iterator](),lt;!(ue=(lt=Le.next()).done);ue=!0){var ct=lt.value;if(fe.indexOf(ct)!==-1){t._acceptingStateNumbers.add(fe.join(","));break}}}catch(_e){De=!0,$e=_e}finally{try{!ue&&Le.return&&Le.return()}finally{if(De)throw $e}}};n.length>0;){var p=n.shift(),m=p.join(",");d[m]={};var f=!0,h=!1,k=void 0;try{for(var g=o[Symbol.iterator](),y;!(f=(y=g.next()).done);f=!0){var w=y.value,v=[];u(p);var T=!0,x=!1,C=void 0;try{for(var S=p[Symbol.iterator](),E;!(T=(E=S.next()).done);T=!0){var P=E.value,I=a[P][w];if(!!I){var L=!0,W=!1,O=void 0;try{for(var H=I[Symbol.iterator](),$;!(L=($=H.next()).done);L=!0){var B=$.value;!a[B]||v.push.apply(v,QD(a[B][XD]))}}catch(te){W=!0,O=te}finally{try{!L&&H.return&&H.return()}finally{if(W)throw O}}}}}catch(te){x=!0,C=te}finally{try{!T&&S.return&&S.return()}finally{if(x)throw C}}var q=new Set(v),U=[].concat(QD(q));if(U.length>0){var z=U.join(",");d[m][w]=z,d.hasOwnProperty(z)||n.unshift(U)}}}catch(te){h=!0,k=te}finally{try{!f&&g.return&&g.return()}finally{if(h)throw k}}}return this._transitionTable=this._remapStateNumbers(d)}},{key:"_remapStateNumbers",value:function(t){var a={};this._originalTransitionTable=t;var r={};Object.keys(t).forEach(function(k,g){a[k]=g+1});for(var i in t){var n=t[i],o={};for(var l in n)o[l]=a[n[l]];r[a[i]]=o}this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._acceptingStateNumbers=new Set;var d=!0,u=!1,p=void 0;try{for(var m=this._originalAcceptingStateNumbers[Symbol.iterator](),f;!(d=(f=m.next()).done);d=!0){var h=f.value;this._acceptingStateNumbers.add(a[h])}}catch(k){u=!0,p=k}finally{try{!d&&m.return&&m.return()}finally{if(u)throw p}}return r}},{key:"getOriginalTransitionTable",value:function(){return this._originalTransitionTable||this.getTransitionTable(),this._originalTransitionTable}},{key:"matches",value:function(t){for(var a=1,r=0,i=this.getTransitionTable();t[r];)if(a=i[a][t[r++]],!a)return!1;return!!this.getAcceptingStateNumbers().has(a)}}]),s}();JD.exports=E4});var t0=ye((DX,e0)=>{"use strict";var D4=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function P4(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var M4=function(){function s(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.accepting,a=t===void 0?!1:t;P4(this,s),this._transitions=new Map,this.accepting=a}return D4(s,[{key:"getTransitions",value:function(){return this._transitions}},{key:"addTransition",value:function(t,a){return this.getTransitionsOnSymbol(t).add(a),this}},{key:"getTransitionsOnSymbol",value:function(t){var a=this._transitions.get(t);return a||(a=new Set,this._transitions.set(t,a)),a}}]),s}();e0.exports=M4});var r0=ye((PX,a0)=>{"use strict";var A4=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function I4(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}function R4(s,e){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:s}function F4(s,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);s.prototype=Object.create(e&&e.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(s,e):s.__proto__=e)}var j4=t0(),O4=Bd(),jy=O4.EPSILON,N4=function(s){F4(e,s);function e(){return I4(this,e),R4(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return A4(e,[{key:"matches",value:function(a){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;if(r.has(this))return!1;if(r.add(this),a.length===0){if(this.accepting)return!0;var i=!0,n=!1,o=void 0;try{for(var l=this.getTransitionsOnSymbol(jy)[Symbol.iterator](),d;!(i=(d=l.next()).done);i=!0){var u=d.value;if(u.matches("",r))return!0}}catch(I){n=!0,o=I}finally{try{!i&&l.return&&l.return()}finally{if(n)throw o}}return!1}var p=a[0],m=a.slice(1),f=this.getTransitionsOnSymbol(p),h=!0,k=!1,g=void 0;try{for(var y=f[Symbol.iterator](),w;!(h=(w=y.next()).done);h=!0){var v=w.value;if(v.matches(m))return!0}}catch(I){k=!0,g=I}finally{try{!h&&y.return&&y.return()}finally{if(k)throw g}}var T=!0,x=!1,C=void 0;try{for(var S=this.getTransitionsOnSymbol(jy)[Symbol.iterator](),E;!(T=(E=S.next()).done);T=!0){var P=E.value;if(P.matches(a,r))return!0}}catch(I){x=!0,C=I}finally{try{!T&&S.return&&S.return()}finally{if(x)throw C}}return!1}},{key:"getEpsilonClosure",value:function(){var a=this;return this._epsilonClosure||function(){var r=a.getTransitionsOnSymbol(jy),i=a._epsilonClosure=new Set;i.add(a);var n=!0,o=!1,l=void 0;try{for(var d=r[Symbol.iterator](),u;!(n=(u=d.next()).done);n=!0){var p=u.value;if(!i.has(p)){i.add(p);var m=p.getEpsilonClosure();m.forEach(function(f){return i.add(f)})}}}catch(f){o=!0,l=f}finally{try{!n&&d.return&&d.return()}finally{if(o)throw l}}}(),this._epsilonClosure}}]),e}(j4);a0.exports=N4});var Oy=ye((MX,i0)=>{"use strict";var Jp=Ry(),Fl=r0(),L4=Bd(),vr=L4.EPSILON;function s0(s){var e=new Fl,t=new Fl({accepting:!0});return new Jp(e.addTransition(s,t),t)}function H4(){return s0(vr)}function B4(s,e){return s.out.accepting=!1,e.out.accepting=!0,s.out.addTransition(vr,e.in),new Jp(s.in,e.out)}function W4(s){for(var e=arguments.length,t=Array(e>1?e-1:0),a=1;a<e;a++)t[a-1]=arguments[a];var r=!0,i=!1,n=void 0;try{for(var o=t[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var d=l.value;s=B4(s,d)}}catch(u){i=!0,n=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return s}function _4(s,e){var t=new Fl,a=new Fl;return t.addTransition(vr,s.in),t.addTransition(vr,e.in),a.accepting=!0,s.out.accepting=!1,e.out.accepting=!1,s.out.addTransition(vr,a),e.out.addTransition(vr,a),new Jp(t,a)}function V4(s){for(var e=arguments.length,t=Array(e>1?e-1:0),a=1;a<e;a++)t[a-1]=arguments[a];var r=!0,i=!1,n=void 0;try{for(var o=t[Symbol.iterator](),l;!(r=(l=o.next()).done);r=!0){var d=l.value;s=_4(s,d)}}catch(u){i=!0,n=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw n}}return s}function U4(s){var e=new Fl,t=new Fl({accepting:!0});return e.addTransition(vr,s.in),e.addTransition(vr,t),s.out.accepting=!1,s.out.addTransition(vr,t),t.addTransition(vr,s.in),new Jp(e,t)}function $4(s){return s.in.addTransition(vr,s.out),s.out.addTransition(vr,s.in),s}function Y4(s){return s.out.addTransition(vr,s.in),s}function z4(s){return s.in.addTransition(vr,s.out),s}i0.exports={alt:W4,char:s0,e:H4,or:V4,rep:$4,repExplicit:U4,plusRep:Y4,questionRep:z4}});var l0=ye((AX,o0)=>{"use strict";function q4(s){if(Array.isArray(s)){for(var e=0,t=Array(s.length);e<s.length;e++)t[e]=s[e];return t}else return Array.from(s)}var G4=Ld(),jl=Oy(),K4=jl.alt,Q4=jl.char,X4=jl.or,J4=jl.rep,Z4=jl.plusRep,eY=jl.questionRep;function Gi(s){if(s&&!n0[s.type])throw new Error(s.type+" is not supported in NFA/DFA interpreter.");return s?n0[s.type](s):""}var n0={RegExp:function(e){if(e.flags!=="")throw new Error("NFA/DFA: Flags are not supported yet.");return Gi(e.body)},Alternative:function(e){var t=(e.expressions||[]).map(Gi);return K4.apply(void 0,q4(t))},Disjunction:function(e){return X4(Gi(e.left),Gi(e.right))},Repetition:function(e){switch(e.quantifier.kind){case"*":return J4(Gi(e.expression));case"+":return Z4(Gi(e.expression));case"?":return eY(Gi(e.expression));default:throw new Error("Unknown repeatition: "+e.quantifier.kind+".")}},Char:function(e){if(e.kind!=="simple")throw new Error("NFA/DFA: Only simple chars are supported yet.");return Q4(e.value)},Group:function(e){return Gi(e.expression)}};o0.exports={build:function(e){var t=e;return e instanceof RegExp&&(e=""+e),typeof e=="string"&&(t=G4.parse(e,{captureLocations:!0})),Gi(t)}}});var u0=ye((IX,d0)=>{"use strict";var tY=Ry(),c0=ZD(),aY=l0(),rY=Oy();d0.exports={NFA:tY,DFA:c0,builders:rY,toNFA:function(e){return aY.build(e)},toDFA:function(e){return new c0(this.toNFA(e))},test:function(e,t){return this.toDFA(e).matches(t)}}});var m0=ye((RX,p0)=>{"use strict";var sY=function(){function s(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,a){return t&&s(e.prototype,t),a&&s(e,a),e}}();function iY(s,e){if(!(s instanceof e))throw new TypeError("Cannot call a class as a function")}var nY=function(){function s(e,t){var a=t.flags,r=t.groups,i=t.source;iY(this,s),this._re=e,this._groups=r,this.flags=a,this.source=i||e.source,this.dotAll=a.includes("s"),this.global=e.global,this.ignoreCase=e.ignoreCase,this.multiline=e.multiline,this.sticky=e.sticky,this.unicode=e.unicode}return sY(s,[{key:"test",value:function(t){return this._re.test(t)}},{key:"compile",value:function(t){return this._re.compile(t)}},{key:"toString",value:function(){return this._toStringResult||(this._toStringResult="/"+this.source+"/"+this.flags),this._toStringResult}},{key:"exec",value:function(t){var a=this._re.exec(t);if(!this._groups||!a)return a;a.groups={};for(var r in this._groups){var i=this._groups[r];a.groups[r]=a[i]}return a}}]),s}();p0.exports={RegExpTree:nY}});var k0=ye((FX,g0)=>{"use strict";var oY=HE(),lY=hy(),cY=VD(),f0=Ld(),h0=_p(),dY=xy(),uY=u0(),pY=m0(),mY=pY.RegExpTree,fY={parser:f0,fa:uY,TransformResult:h0.TransformResult,parse:function(e,t){return f0.parse(""+e,t)},traverse:function(e,t,a){return dY.traverse(e,t,a)},transform:function(e,t){return h0.transform(e,t)},generate:function(e){return lY.generate(e)},toRegExp:function(e){var t=this.compatTranspile(e);return new RegExp(t.getSource(),t.getFlags())},optimize:function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=a.blacklist;return cY.optimize(e,{whitelist:t,blacklist:r})},compatTranspile:function(e,t){return oY.transform(e,t)},exec:function(e,t){if(typeof e=="string"){var a=this.compatTranspile(e),r=a.getExtra();r.namedCapturingGroups?e=new mY(a.toRegExp(),{flags:a.getFlags(),source:a.getSource(),groups:r.namedCapturingGroups}):e=a.toRegExp()}return e.exec(t)}};g0.exports=fY});var w0=ye((jX,y0)=>{"use strict";y0.exports=k0()});var _y=ye((OX,S0)=>{"use strict";var hY=fy(),Ny=Fp(),Un=w0(),v0=new WeakMap;function gY(s){return hY.mode==="spec-compliant"?yY(this,s):kY(this,s)}function kY(s,e){let t=s.lastIndex,a=Ny.call(s,e);if(a===null)return null;let r;return Object.defineProperty(a,"indices",{enumerable:!0,configurable:!0,get(){if(r===void 0){let{measurementRegExp:i,groupInfos:n}=b0(s);i.lastIndex=t;let o=Ny.call(i,e);if(o===null)throw new TypeError;ds(a,"indices",r=T0(o,n))}return r},set(i){ds(a,"indices",i)}}),a}function yY(s,e){let{measurementRegExp:t,groupInfos:a}=b0(s);t.lastIndex=s.lastIndex;let r=Ny.call(t,e);if(r===null)return null;s.lastIndex=t.lastIndex;let i=[];ds(i,0,r[0]);for(let n of a)ds(i,n.oldGroupNumber,r[n.newGroupNumber]);return ds(i,"index",r.index),ds(i,"input",r.input),ds(i,"groups",r.groups),ds(i,"indices",T0(r,a)),i}function b0(s){let e=v0.get(s);e||(e=xY(Un.parse(`/${s.source}/${s.flags}`)),v0.set(s,e));let t=e.getExtra();return{measurementRegExp:e.toRegExp(),groupInfos:t}}function T0(s,e){let t=s.index,a=t+s[0].length,r=!!s.groups,i=[],n=r?Object.create(null):void 0;ds(i,0,[t,a]);for(let o of e){let l;if(s[o.newGroupNumber]!==void 0){let d=t;if(o.measurementGroups)for(let p of o.measurementGroups)d+=s[p].length;let u=d+s[o.newGroupNumber].length;l=[d,u]}ds(i,o.oldGroupNumber,l),n&&o.groupName!==void 0&&ds(n,o.groupName,l)}return ds(i,"groups",n),i}function ds(s,e,t){let a=Object.getOwnPropertyDescriptor(s,e);if(a?a.configurable:Object.isExtensible(s)){let r={enumerable:a?a.enumerable:!0,configurable:a?a.configurable:!0,writable:!0,value:t};Object.defineProperty(s,e,r)}}var Zp,Ly=!1,Wd=new Set,Hy=[],Ol=!1,C0=1,em=[],By=new Map,Wy=new Map,wY={init(){Ly=!1,Wd.clear(),Hy.length=0,Ol=!1,C0=1,em.length=0,By.clear(),Wy.clear(),Zp=[]},RegExp(s){return Un.traverse(s.node,vY),Wd.size>0&&(Un.transform(s.node,x0),Un.transform(s.node,bY),Ly&&Un.transform(s.node,TY)),!1}},_d={pre(s){Hy.push(Ol),Ol=s.node.type==="Group"&&s.node.capturing},post(s){Ol&&Wd.add(s.node),Ol=Hy.pop()||Ol}},vY={Alternative:_d,Disjunction:_d,Assertion:_d,Group:_d,Repetition:_d,Backreference(s){Ly=!0}},x0={Alternative(s){if(Wd.has(s.node)){let e=0,t=[],a=[],r=[];for(let i=0;i<s.node.expressions.length;i++){let n=s.node.expressions[i];if(Wd.has(n)){if(i>e){let o={type:"Group",capturing:!0,number:-1,expression:t.length>1?{type:"Alternative",expressions:t}:t.length===1?t[0]:null};r.push(o),a.push(o),e=i,t=[]}em.push(a),Un.transform(n,x0),em.pop(),t.push(n);continue}t.push(n)}s.update({expressions:r.concat(t)})}return!1},Group(s){!s.node.capturing||By.set(s.node,CY())}},bY={Group(s){if(!Zp)throw new Error("Not initialized.");if(!s.node.capturing)return;let e=s.node.number,t=C0++,a=By.get(s.node);e!==-1&&(Zp.push({oldGroupNumber:e,newGroupNumber:t,measurementGroups:a&&a.map(r=>r.number),groupName:s.node.name}),Wy.set(e,t)),s.update({number:t})}},TY={Backreference(s){let e=Wy.get(s.node.number);e&&(s.node.kind==="number"?s.update({number:e,reference:e}):s.update({number:e}))}};function CY(){let s=[];for(let e of em)for(let t of e)s.push(t);return s}function xY(s){let e=Un.transform(s,wY);return new Un.TransformResult(e.getAST(),Zp)}S0.exports=gY});var Vy=ye((NX,D0)=>{"use strict";var E0=Fp(),SY=_y();function EY(){let s=new RegExp("a");return E0.call(s,"a").indices?E0:SY}D0.exports=EY});var M0=ye((LX,P0)=>{"use strict";var DY=Vy();function PY(){let s=DY();RegExp.prototype.exec!==s&&(RegExp.prototype.exec=s)}P0.exports=PY});var R0=ye((HX,I0)=>{"use strict";var MY=_y(),AY=Fp(),A0=Vy(),IY=M0(),RY=fy(),FY=A0();function $n(s,e){return FY.call(s,e)}$n.implementation=MY;$n.native=AY;$n.getPolyfill=A0;$n.shim=IY;$n.config=RY;(function(s){})($n||($n={}));I0.exports=$n});var q0,zn,Hl,Yd=b(()=>{q0=/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,zn={prioritySymbols:{Highest:"\u{1F53A}",High:"\u23EB",Medium:"\u{1F53C}",Low:"\u{1F53D}",Lowest:"\u23EC",None:""},startDateSymbol:"\u{1F6EB}",createdDateSymbol:"\u2795",scheduledDateSymbol:"\u23F3",dueDateSymbol:"\u{1F4C5}",doneDateSymbol:"\u2705",cancelledDateSymbol:"\u274C",recurrenceSymbol:"\u{1F501}",onCompletionSymbol:"\u{1F3C1}",dependsOnSymbol:"\u26D4",idSymbol:"\u{1F194}"},Hl={"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1,"[#A]":5,"[#B]":4,"[#C]":3,"[#D]":2,"[#E]":1,highest:5,high:4,medium:3,low:2,lowest:1}});var _Y,VY,BJ,om,G0,zd,qd,K0,UY,Q0,WJ,$Y,YY,_J,tw,jo=b(()=>{_Y=365.2425,VY=Math.pow(10,8)*24*60*60*1e3,BJ=-VY,om=6048e5,G0=864e5,zd=6e4,qd=36e5,K0=1e3,UY=3600,Q0=UY*24,WJ=Q0*7,$Y=Q0*_Y,YY=$Y/12,_J=YY*3,tw=Symbol.for("constructDateFrom")});function je(s,e){return typeof s=="function"?s(e):s&&typeof s=="object"&&tw in s?s[tw](e):s instanceof Date?new s.constructor(e):new Date(e)}var Gt=b(()=>{jo()});function Oe(s,e){return je(e||s,s)}var Kt=b(()=>{Gt()});function Bl(s,e,t){let a=Oe(s,t==null?void 0:t.in);return isNaN(e)?je((t==null?void 0:t.in)||s,NaN):(e&&a.setDate(a.getDate()+e),a)}var Gd=b(()=>{Gt();Kt()});var X0=b(()=>{});var J0=b(()=>{});var Z0=b(()=>{});var eP=b(()=>{});var tP=b(()=>{});var aP=b(()=>{});var rP=b(()=>{});var sP=b(()=>{});function us(){return zY}var zY,Oo=b(()=>{zY={}});function Tr(s,e){var o,l,d,u,p,m,f,h;let t=us(),a=(h=(f=(u=(d=e==null?void 0:e.weekStartsOn)!=null?d:(l=(o=e==null?void 0:e.locale)==null?void 0:o.options)==null?void 0:l.weekStartsOn)!=null?u:t.weekStartsOn)!=null?f:(m=(p=t.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?h:0,r=Oe(s,e==null?void 0:e.in),i=r.getDay(),n=(i<a?7:0)+i-a;return r.setDate(r.getDate()-n),r.setHours(0,0,0,0),r}var qn=b(()=>{Oo();Kt()});function _s(s,e){return Tr(s,{...e,weekStartsOn:1})}var No=b(()=>{qn()});function lm(s,e){let t=Oe(s,e==null?void 0:e.in),a=t.getFullYear(),r=je(t,0);r.setFullYear(a+1,0,4),r.setHours(0,0,0,0);let i=_s(r),n=je(t,0);n.setFullYear(a,0,4),n.setHours(0,0,0,0);let o=_s(n);return t.getTime()>=i.getTime()?a+1:t.getTime()>=o.getTime()?a:a-1}var cm=b(()=>{Gt();No();Kt()});function Lo(s){let e=Oe(s),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+s-+t}var dm=b(()=>{Kt()});function Wl(s,...e){let t=je.bind(null,s||e.find(a=>typeof a=="object"));return e.map(t)}var um=b(()=>{Gt()});function Xi(s,e){let t=Oe(s,e==null?void 0:e.in);return t.setHours(0,0,0,0),t}var pm=b(()=>{Kt()});function iP(s,e,t){let[a,r]=Wl(t==null?void 0:t.in,s,e),i=Xi(a),n=Xi(r),o=+i-Lo(i),l=+n-Lo(n);return Math.round((o-l)/G0)}var aw=b(()=>{dm();um();jo();pm()});function nP(s,e){let t=lm(s,e),a=je((e==null?void 0:e.in)||s,0);return a.setFullYear(t,0,4),a.setHours(0,0,0,0),_s(a)}var rw=b(()=>{Gt();cm();No()});var oP=b(()=>{});var lP=b(()=>{});var cP=b(()=>{});var dP=b(()=>{});var uP=b(()=>{});var pP=b(()=>{});var mP=b(()=>{});var fP=b(()=>{});var hP=b(()=>{});var gP=b(()=>{});var kP=b(()=>{});var yP=b(()=>{});var wP=b(()=>{});var vP=b(()=>{});var bP=b(()=>{});function _l(s){return je(s,Date.now())}var Kd=b(()=>{Gt()});var TP=b(()=>{});function mm(s,e,t){let[a,r]=Wl(t==null?void 0:t.in,s,e);return+Xi(a)==+Xi(r)}var fm=b(()=>{um();pm()});function CP(s){return s instanceof Date||typeof s=="object"&&Object.prototype.toString.call(s)==="[object Date]"}var sw=b(()=>{});function Qd(s){return!(!CP(s)&&typeof s!="number"||isNaN(+Oe(s)))}var iw=b(()=>{sw();Kt()});var xP=b(()=>{});var SP=b(()=>{});var EP=b(()=>{});var DP=b(()=>{});var PP=b(()=>{});var MP=b(()=>{});var AP=b(()=>{});var IP=b(()=>{});var RP=b(()=>{});var FP=b(()=>{});var jP=b(()=>{});var OP=b(()=>{});var NP=b(()=>{});var LP=b(()=>{});var HP=b(()=>{});var BP=b(()=>{});var WP=b(()=>{});var _P=b(()=>{});var VP=b(()=>{});var UP=b(()=>{});var $P=b(()=>{});var YP=b(()=>{});var zP=b(()=>{});var qP=b(()=>{});var GP=b(()=>{});var KP=b(()=>{});var QP=b(()=>{});var XP=b(()=>{});var JP=b(()=>{});var ZP=b(()=>{});var eM=b(()=>{});var tM=b(()=>{});var aM=b(()=>{});function rM(s,e){let t=Oe(s,e==null?void 0:e.in);return t.setFullYear(t.getFullYear(),0,1),t.setHours(0,0,0,0),t}var nw=b(()=>{Kt()});var sM=b(()=>{});var iM=b(()=>{});var nM=b(()=>{});var oM=b(()=>{});var lM=b(()=>{});var cM=b(()=>{});var dM=b(()=>{});var uM=b(()=>{});var pM=b(()=>{});var mM=b(()=>{});var fM=b(()=>{});var hM=b(()=>{});var gM=b(()=>{});var qY,kM,yM=b(()=>{qY={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},kM=(s,e,t)=>{let a,r=qY[s];return typeof r=="string"?a=r:e===1?a=r.one:a=r.other.replace("{{count}}",e.toString()),(t==null?void 0:t.addSuffix)?t.comparison&&t.comparison>0?"in "+a:a+" ago":a}});function hm(s){return(e={})=>{let t=e.width?String(e.width):s.defaultWidth;return s.formats[t]||s.formats[s.defaultWidth]}}var wM=b(()=>{});var GY,KY,QY,vM,bM=b(()=>{wM();GY={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},KY={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},QY={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},vM={date:hm({formats:GY,defaultWidth:"full"}),time:hm({formats:KY,defaultWidth:"full"}),dateTime:hm({formats:QY,defaultWidth:"full"})}});var XY,TM,CM=b(()=>{XY={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},TM=(s,e,t,a)=>XY[s]});function Vl(s){return(e,t)=>{let a=(t==null?void 0:t.context)?String(t.context):"standalone",r;if(a==="formatting"&&s.formattingValues){let n=s.defaultFormattingWidth||s.defaultWidth,o=(t==null?void 0:t.width)?String(t.width):n;r=s.formattingValues[o]||s.formattingValues[n]}else{let n=s.defaultWidth,o=(t==null?void 0:t.width)?String(t.width):s.defaultWidth;r=s.values[o]||s.values[n]}let i=s.argumentCallback?s.argumentCallback(e):e;return r[i]}}var xM=b(()=>{});var JY,ZY,e5,t5,a5,r5,s5,SM,EM=b(()=>{xM();JY={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ZY={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},e5={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},t5={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},a5={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},r5={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},s5=(s,e)=>{let t=Number(s),a=t%100;if(a>20||a<10)switch(a%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},SM={ordinalNumber:s5,era:Vl({values:JY,defaultWidth:"wide"}),quarter:Vl({values:ZY,defaultWidth:"wide",argumentCallback:s=>s-1}),month:Vl({values:e5,defaultWidth:"wide"}),day:Vl({values:t5,defaultWidth:"wide"}),dayPeriod:Vl({values:a5,defaultWidth:"wide",formattingValues:r5,defaultFormattingWidth:"wide"})}});function Ul(s){return(e,t={})=>{let a=t.width,r=a&&s.matchPatterns[a]||s.matchPatterns[s.defaultMatchWidth],i=e.match(r);if(!i)return null;let n=i[0],o=a&&s.parsePatterns[a]||s.parsePatterns[s.defaultParseWidth],l=Array.isArray(o)?n5(o,p=>p.test(n)):i5(o,p=>p.test(n)),d;d=s.valueCallback?s.valueCallback(l):l,d=t.valueCallback?t.valueCallback(d):d;let u=e.slice(n.length);return{value:d,rest:u}}}function i5(s,e){for(let t in s)if(Object.prototype.hasOwnProperty.call(s,t)&&e(s[t]))return t}function n5(s,e){for(let t=0;t<s.length;t++)if(e(s[t]))return t}var DM=b(()=>{});function PM(s){return(e,t={})=>{let a=e.match(s.matchPattern);if(!a)return null;let r=a[0],i=e.match(s.parsePattern);if(!i)return null;let n=s.valueCallback?s.valueCallback(i[0]):i[0];n=t.valueCallback?t.valueCallback(n):n;let o=e.slice(r.length);return{value:n,rest:o}}}var MM=b(()=>{});var o5,l5,c5,d5,u5,p5,m5,f5,h5,g5,k5,y5,AM,IM=b(()=>{DM();MM();o5=/^(\d+)(th|st|nd|rd)?/i,l5=/\d+/i,c5={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},d5={any:[/^b/i,/^(a|c)/i]},u5={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},p5={any:[/1/i,/2/i,/3/i,/4/i]},m5={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},f5={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},h5={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},g5={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},k5={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},y5={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},AM={ordinalNumber:PM({matchPattern:o5,parsePattern:l5,valueCallback:s=>parseInt(s,10)}),era:Ul({matchPatterns:c5,defaultMatchWidth:"wide",parsePatterns:d5,defaultParseWidth:"any"}),quarter:Ul({matchPatterns:u5,defaultMatchWidth:"wide",parsePatterns:p5,defaultParseWidth:"any",valueCallback:s=>s+1}),month:Ul({matchPatterns:m5,defaultMatchWidth:"wide",parsePatterns:f5,defaultParseWidth:"any"}),day:Ul({matchPatterns:h5,defaultMatchWidth:"wide",parsePatterns:g5,defaultParseWidth:"any"}),dayPeriod:Ul({matchPatterns:k5,defaultMatchWidth:"any",parsePatterns:y5,defaultParseWidth:"any"})}});var Ho,ow=b(()=>{yM();bM();CM();EM();IM();Ho={code:"en-US",formatDistance:kM,formatLong:vM,formatRelative:TM,localize:SM,match:AM,options:{weekStartsOn:0,firstWeekContainsDate:1}}});var lw=b(()=>{ow()});function RM(s,e){let t=Oe(s,e==null?void 0:e.in);return iP(t,rM(t))+1}var cw=b(()=>{aw();nw();Kt()});function gm(s,e){let t=Oe(s,e==null?void 0:e.in),a=+_s(t)-+nP(t);return Math.round(a/om)+1}var km=b(()=>{jo();No();rw();Kt()});function $l(s,e){var u,p,m,f,h,k,g,y;let t=Oe(s,e==null?void 0:e.in),a=t.getFullYear(),r=us(),i=(y=(g=(f=(m=e==null?void 0:e.firstWeekContainsDate)!=null?m:(p=(u=e==null?void 0:e.locale)==null?void 0:u.options)==null?void 0:p.firstWeekContainsDate)!=null?f:r.firstWeekContainsDate)!=null?g:(k=(h=r.locale)==null?void 0:h.options)==null?void 0:k.firstWeekContainsDate)!=null?y:1,n=je((e==null?void 0:e.in)||s,0);n.setFullYear(a+1,0,i),n.setHours(0,0,0,0);let o=Tr(n,e),l=je((e==null?void 0:e.in)||s,0);l.setFullYear(a,0,i),l.setHours(0,0,0,0);let d=Tr(l,e);return+t>=+o?a+1:+t>=+d?a:a-1}var Xd=b(()=>{Oo();Gt();qn();Kt()});function FM(s,e){var o,l,d,u,p,m,f,h;let t=us(),a=(h=(f=(u=(d=e==null?void 0:e.firstWeekContainsDate)!=null?d:(l=(o=e==null?void 0:e.locale)==null?void 0:o.options)==null?void 0:l.firstWeekContainsDate)!=null?u:t.firstWeekContainsDate)!=null?f:(m=(p=t.locale)==null?void 0:p.options)==null?void 0:m.firstWeekContainsDate)!=null?h:1,r=$l(s,e),i=je((e==null?void 0:e.in)||s,0);return i.setFullYear(r,0,a),i.setHours(0,0,0,0),Tr(i,e)}var dw=b(()=>{Oo();Gt();Xd();qn()});function ym(s,e){let t=Oe(s,e==null?void 0:e.in),a=+Tr(t,e)-+FM(t,e);return Math.round(a/om)+1}var wm=b(()=>{jo();qn();dw();Kt()});function ot(s,e){let t=s<0?"-":"",a=Math.abs(s).toString().padStart(e,"0");return t+a}var uw=b(()=>{});var Ji,jM=b(()=>{uw();Ji={y(s,e){let t=s.getFullYear(),a=t>0?t:1-t;return ot(e==="yy"?a%100:a,e.length)},M(s,e){let t=s.getMonth();return e==="M"?String(t+1):ot(t+1,2)},d(s,e){return ot(s.getDate(),e.length)},a(s,e){let t=s.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return t.toUpperCase();case"aaa":return t;case"aaaaa":return t[0];case"aaaa":default:return t==="am"?"a.m.":"p.m."}},h(s,e){return ot(s.getHours()%12||12,e.length)},H(s,e){return ot(s.getHours(),e.length)},m(s,e){return ot(s.getMinutes(),e.length)},s(s,e){return ot(s.getSeconds(),e.length)},S(s,e){let t=e.length,a=s.getMilliseconds(),r=Math.trunc(a*Math.pow(10,t-3));return ot(r,e.length)}}});function OM(s,e=""){let t=s>0?"-":"+",a=Math.abs(s),r=Math.trunc(a/60),i=a%60;return i===0?t+String(r):t+String(r)+e+ot(i,2)}function NM(s,e){return s%60==0?(s>0?"-":"+")+ot(Math.abs(s)/60,2):Bo(s,e)}function Bo(s,e=""){let t=s>0?"-":"+",a=Math.abs(s),r=ot(Math.trunc(a/60),2),i=ot(a%60,2);return t+r+e+i}var Yl,pw,LM=b(()=>{cw();km();cm();wm();Xd();uw();jM();Yl={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},pw={G:function(s,e,t){let a=s.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return t.era(a,{width:"abbreviated"});case"GGGGG":return t.era(a,{width:"narrow"});case"GGGG":default:return t.era(a,{width:"wide"})}},y:function(s,e,t){if(e==="yo"){let a=s.getFullYear(),r=a>0?a:1-a;return t.ordinalNumber(r,{unit:"year"})}return Ji.y(s,e)},Y:function(s,e,t,a){let r=$l(s,a),i=r>0?r:1-r;if(e==="YY"){let n=i%100;return ot(n,2)}return e==="Yo"?t.ordinalNumber(i,{unit:"year"}):ot(i,e.length)},R:function(s,e){let t=lm(s);return ot(t,e.length)},u:function(s,e){let t=s.getFullYear();return ot(t,e.length)},Q:function(s,e,t){let a=Math.ceil((s.getMonth()+1)/3);switch(e){case"Q":return String(a);case"QQ":return ot(a,2);case"Qo":return t.ordinalNumber(a,{unit:"quarter"});case"QQQ":return t.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return t.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return t.quarter(a,{width:"wide",context:"formatting"})}},q:function(s,e,t){let a=Math.ceil((s.getMonth()+1)/3);switch(e){case"q":return String(a);case"qq":return ot(a,2);case"qo":return t.ordinalNumber(a,{unit:"quarter"});case"qqq":return t.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return t.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return t.quarter(a,{width:"wide",context:"standalone"})}},M:function(s,e,t){let a=s.getMonth();switch(e){case"M":case"MM":return Ji.M(s,e);case"Mo":return t.ordinalNumber(a+1,{unit:"month"});case"MMM":return t.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return t.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return t.month(a,{width:"wide",context:"formatting"})}},L:function(s,e,t){let a=s.getMonth();switch(e){case"L":return String(a+1);case"LL":return ot(a+1,2);case"Lo":return t.ordinalNumber(a+1,{unit:"month"});case"LLL":return t.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return t.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return t.month(a,{width:"wide",context:"standalone"})}},w:function(s,e,t,a){let r=ym(s,a);return e==="wo"?t.ordinalNumber(r,{unit:"week"}):ot(r,e.length)},I:function(s,e,t){let a=gm(s);return e==="Io"?t.ordinalNumber(a,{unit:"week"}):ot(a,e.length)},d:function(s,e,t){return e==="do"?t.ordinalNumber(s.getDate(),{unit:"date"}):Ji.d(s,e)},D:function(s,e,t){let a=RM(s);return e==="Do"?t.ordinalNumber(a,{unit:"dayOfYear"}):ot(a,e.length)},E:function(s,e,t){let a=s.getDay();switch(e){case"E":case"EE":case"EEE":return t.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return t.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return t.day(a,{width:"short",context:"formatting"});case"EEEE":default:return t.day(a,{width:"wide",context:"formatting"})}},e:function(s,e,t,a){let r=s.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return ot(i,2);case"eo":return t.ordinalNumber(i,{unit:"day"});case"eee":return t.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return t.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return t.day(r,{width:"short",context:"formatting"});case"eeee":default:return t.day(r,{width:"wide",context:"formatting"})}},c:function(s,e,t,a){let r=s.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return ot(i,e.length);case"co":return t.ordinalNumber(i,{unit:"day"});case"ccc":return t.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return t.day(r,{width:"narrow",context:"standalone"});case"cccccc":return t.day(r,{width:"short",context:"standalone"});case"cccc":default:return t.day(r,{width:"wide",context:"standalone"})}},i:function(s,e,t){let a=s.getDay(),r=a===0?7:a;switch(e){case"i":return String(r);case"ii":return ot(r,e.length);case"io":return t.ordinalNumber(r,{unit:"day"});case"iii":return t.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return t.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return t.day(a,{width:"short",context:"formatting"});case"iiii":default:return t.day(a,{width:"wide",context:"formatting"})}},a:function(s,e,t){let r=s.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return t.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return t.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return t.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return t.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(s,e,t){let a=s.getHours(),r;switch(a===12?r=Yl.noon:a===0?r=Yl.midnight:r=a/12>=1?"pm":"am",e){case"b":case"bb":return t.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return t.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return t.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return t.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(s,e,t){let a=s.getHours(),r;switch(a>=17?r=Yl.evening:a>=12?r=Yl.afternoon:a>=4?r=Yl.morning:r=Yl.night,e){case"B":case"BB":case"BBB":return t.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return t.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return t.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(s,e,t){if(e==="ho"){let a=s.getHours()%12;return a===0&&(a=12),t.ordinalNumber(a,{unit:"hour"})}return Ji.h(s,e)},H:function(s,e,t){return e==="Ho"?t.ordinalNumber(s.getHours(),{unit:"hour"}):Ji.H(s,e)},K:function(s,e,t){let a=s.getHours()%12;return e==="Ko"?t.ordinalNumber(a,{unit:"hour"}):ot(a,e.length)},k:function(s,e,t){let a=s.getHours();return a===0&&(a=24),e==="ko"?t.ordinalNumber(a,{unit:"hour"}):ot(a,e.length)},m:function(s,e,t){return e==="mo"?t.ordinalNumber(s.getMinutes(),{unit:"minute"}):Ji.m(s,e)},s:function(s,e,t){return e==="so"?t.ordinalNumber(s.getSeconds(),{unit:"second"}):Ji.s(s,e)},S:function(s,e){return Ji.S(s,e)},X:function(s,e,t){let a=s.getTimezoneOffset();if(a===0)return"Z";switch(e){case"X":return NM(a);case"XXXX":case"XX":return Bo(a);case"XXXXX":case"XXX":default:return Bo(a,":")}},x:function(s,e,t){let a=s.getTimezoneOffset();switch(e){case"x":return NM(a);case"xxxx":case"xx":return Bo(a);case"xxxxx":case"xxx":default:return Bo(a,":")}},O:function(s,e,t){let a=s.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+OM(a,":");case"OOOO":default:return"GMT"+Bo(a,":")}},z:function(s,e,t){let a=s.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+OM(a,":");case"zzzz":default:return"GMT"+Bo(a,":")}},t:function(s,e,t){let a=Math.trunc(+s/1e3);return ot(a,e.length)},T:function(s,e,t){return ot(+s,e.length)}}});var HM,BM,w5,Jd,mw=b(()=>{HM=(s,e)=>{switch(s){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},BM=(s,e)=>{switch(s){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},w5=(s,e)=>{let t=s.match(/(P+)(p+)?/)||[],a=t[1],r=t[2];if(!r)return HM(s,e);let i;switch(a){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",HM(a,e)).replace("{{time}}",BM(r,e))},Jd={p:BM,P:w5}});function vm(s){return v5.test(s)}function bm(s){return b5.test(s)}function Zd(s,e,t){let a=C5(s,e,t);if(console.warn(a),T5.includes(s))throw new RangeError(a)}function C5(s,e,t){let a=s[0]==="Y"?"years":"days of the month";return`Use \`${s.toLowerCase()}\` instead of \`${s}\` (in \`${e}\`) for formatting ${a} to the input \`${t}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var v5,b5,T5,fw=b(()=>{v5=/^D+$/,b5=/^Y+$/,T5=["D","DD","YY","YYYY"]});function eu(s,e,t){var u,p,m,f,h,k,g,y,w,v,T,x,C,S,E,P,I,L;let a=us(),r=(p=(u=t==null?void 0:t.locale)!=null?u:a.locale)!=null?p:Ho,i=(v=(w=(k=(h=t==null?void 0:t.firstWeekContainsDate)!=null?h:(f=(m=t==null?void 0:t.locale)==null?void 0:m.options)==null?void 0:f.firstWeekContainsDate)!=null?k:a.firstWeekContainsDate)!=null?w:(y=(g=a.locale)==null?void 0:g.options)==null?void 0:y.firstWeekContainsDate)!=null?v:1,n=(L=(I=(S=(C=t==null?void 0:t.weekStartsOn)!=null?C:(x=(T=t==null?void 0:t.locale)==null?void 0:T.options)==null?void 0:x.weekStartsOn)!=null?S:a.weekStartsOn)!=null?I:(P=(E=a.locale)==null?void 0:E.options)==null?void 0:P.weekStartsOn)!=null?L:0,o=Oe(s,t==null?void 0:t.in);if(!Qd(o))throw new RangeError("Invalid time value");let l=e.match(S5).map(W=>{let O=W[0];return O==="p"||O==="P"?Jd[O](W,r.formatLong):W}).join("").match(x5).map(W=>{if(W==="''")return{isToken:!1,value:"'"};let O=W[0];if(O==="'")return{isToken:!1,value:M5(W)};if(pw[O])return{isToken:!0,value:W};if(O.match(P5))throw new RangeError("Format string contains an unescaped latin alphabet character `"+O+"`");return{isToken:!1,value:W}});r.localize.preprocessor&&(l=r.localize.preprocessor(o,l));let d={firstWeekContainsDate:i,weekStartsOn:n,locale:r};return l.map(W=>{if(!W.isToken)return W.value;let O=W.value;return(!(t==null?void 0:t.useAdditionalWeekYearTokens)&&bm(O)||!(t==null?void 0:t.useAdditionalDayOfYearTokens)&&vm(O))&&Zd(O,e,String(s)),pw[O[0]](o,O,r.localize,d)}).join("")}function M5(s){let e=s.match(E5);return e?e[1].replace(D5,"'"):s}var x5,S5,E5,D5,P5,WM=b(()=>{lw();Oo();LM();mw();fw();iw();Kt();x5=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,S5=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,E5=/^'([^]*?)'?$/,D5=/''/g,P5=/[a-zA-Z]/});var _M=b(()=>{});var VM=b(()=>{});var UM=b(()=>{});var $M=b(()=>{});var YM=b(()=>{});var zM=b(()=>{});var qM=b(()=>{});var GM=b(()=>{});var KM=b(()=>{});var QM=b(()=>{});var XM=b(()=>{});var JM=b(()=>{});var ZM=b(()=>{});var eA=b(()=>{});var tA=b(()=>{});var aA=b(()=>{});var rA=b(()=>{});var sA=b(()=>{});function iA(){return Object.assign({},us())}var hw=b(()=>{Oo()});var nA=b(()=>{});function oA(s,e){let t=Oe(s,e==null?void 0:e.in).getDay();return t===0?7:t}var gw=b(()=>{Kt()});var lA=b(()=>{});var cA=b(()=>{});var dA=b(()=>{});var uA=b(()=>{});var pA=b(()=>{});var mA=b(()=>{});var fA=b(()=>{});var hA=b(()=>{});var gA=b(()=>{});var kA=b(()=>{});var yA=b(()=>{});var wA=b(()=>{});var vA=b(()=>{});var bA=b(()=>{});var TA=b(()=>{});var CA=b(()=>{});var xA=b(()=>{});var SA=b(()=>{});var EA=b(()=>{});var DA=b(()=>{});var PA=b(()=>{});var MA=b(()=>{});var AA=b(()=>{});var IA=b(()=>{});var RA=b(()=>{});var FA=b(()=>{});function jA(s,e){let t=A5(e)?new e(0):je(e,0);return t.setFullYear(s.getFullYear(),s.getMonth(),s.getDate()),t.setHours(s.getHours(),s.getMinutes(),s.getSeconds(),s.getMilliseconds()),t}function A5(s){var e;return typeof s=="function"&&((e=s.prototype)==null?void 0:e.constructor)===s}var kw=b(()=>{Gt()});var I5,yw,ww,vw,bw=b(()=>{Gt();kw();I5=10,yw=class{constructor(){_(this,"subPriority",0)}validate(e,t){return!0}},ww=class extends yw{constructor(e,t,a,r,i){super();this.value=e,this.validateValue=t,this.setValue=a,this.priority=r,i&&(this.subPriority=i)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,a){return this.setValue(e,t,this.value,a)}},vw=class extends yw{constructor(e,t){super();_(this,"priority",I5);_(this,"subPriority",-1);this.context=e||(a=>je(t,a))}set(e,t){return t.timestampIsSet?e:je(e,jA(e,this.context))}}});var de,st=b(()=>{bw();de=class{run(e,t,a,r){let i=this.parse(e,t,a,r);return i?{setter:new ww(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(e,t,a){return!0}}});var Tw,OA=b(()=>{st();Tw=class extends de{constructor(){super(...arguments);_(this,"priority",140);_(this,"incompatibleTokens",["R","u","t","T"])}parse(e,t,a){switch(t){case"G":case"GG":case"GGG":return a.era(e,{width:"abbreviated"})||a.era(e,{width:"narrow"});case"GGGGG":return a.era(e,{width:"narrow"});case"GGGG":default:return a.era(e,{width:"wide"})||a.era(e,{width:"abbreviated"})||a.era(e,{width:"narrow"})}}set(e,t,a){return t.era=a,e.setFullYear(a,0,1),e.setHours(0,0,0,0),e}}});var et,ps,qa=b(()=>{et={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},ps={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/}});function kt(s,e){return s&&{value:e(s.value),rest:s.rest}}function Qe(s,e){let t=e.match(s);return t?{value:parseInt(t[0],10),rest:e.slice(t[0].length)}:null}function ms(s,e){let t=e.match(s);if(!t)return null;if(t[0]==="Z")return{value:0,rest:e.slice(1)};let a=t[1]==="+"?1:-1,r=t[2]?parseInt(t[2],10):0,i=t[3]?parseInt(t[3],10):0,n=t[5]?parseInt(t[5],10):0;return{value:a*(r*qd+i*zd+n*K0),rest:e.slice(t[0].length)}}function Tm(s){return Qe(et.anyDigitsSigned,s)}function Fe(s,e){switch(s){case 1:return Qe(et.singleDigit,e);case 2:return Qe(et.twoDigits,e);case 3:return Qe(et.threeDigits,e);case 4:return Qe(et.fourDigits,e);default:return Qe(new RegExp("^\\d{1,"+s+"}"),e)}}function zl(s,e){switch(s){case 1:return Qe(et.singleDigitSigned,e);case 2:return Qe(et.twoDigitsSigned,e);case 3:return Qe(et.threeDigitsSigned,e);case 4:return Qe(et.fourDigitsSigned,e);default:return Qe(new RegExp("^-?\\d{1,"+s+"}"),e)}}function ql(s){switch(s){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function Cm(s,e){let t=e>0,a=t?e:1-e,r;if(a<=50)r=s||100;else{let i=a+50,n=Math.trunc(i/100)*100,o=s>=i%100;r=s+n-(o?100:0)}return t?r:1-r}function xm(s){return s%400==0||s%4==0&&s%100!=0}var ut=b(()=>{jo();qa()});var Cw,NA=b(()=>{st();ut();Cw=class extends de{constructor(){super(...arguments);_(this,"priority",130);_(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,t,a){let r=i=>({year:i,isTwoDigitYear:t==="yy"});switch(t){case"y":return kt(Fe(4,e),r);case"yo":return kt(a.ordinalNumber(e,{unit:"year"}),r);default:return kt(Fe(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,a){let r=e.getFullYear();if(a.isTwoDigitYear){let n=Cm(a.year,r);return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}let i=!("era"in t)||t.era===1?a.year:1-a.year;return e.setFullYear(i,0,1),e.setHours(0,0,0,0),e}}});var xw,LA=b(()=>{Xd();qn();st();ut();xw=class extends de{constructor(){super(...arguments);_(this,"priority",130);_(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,t,a){let r=i=>({year:i,isTwoDigitYear:t==="YY"});switch(t){case"Y":return kt(Fe(4,e),r);case"Yo":return kt(a.ordinalNumber(e,{unit:"year"}),r);default:return kt(Fe(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,a,r){let i=$l(e,r);if(a.isTwoDigitYear){let o=Cm(a.year,i);return e.setFullYear(o,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),Tr(e,r)}let n=!("era"in t)||t.era===1?a.year:1-a.year;return e.setFullYear(n,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),Tr(e,r)}}});var Sw,HA=b(()=>{No();Gt();st();ut();Sw=class extends de{constructor(){super(...arguments);_(this,"priority",130);_(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return t==="R"?zl(4,e):zl(t.length,e)}set(e,t,a){let r=je(e,0);return r.setFullYear(a,0,4),r.setHours(0,0,0,0),_s(r)}}});var Ew,BA=b(()=>{st();ut();Ew=class extends de{constructor(){super(...arguments);_(this,"priority",130);_(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return t==="u"?zl(4,e):zl(t.length,e)}set(e,t,a){return e.setFullYear(a,0,1),e.setHours(0,0,0,0),e}}});var Dw,WA=b(()=>{st();ut();Dw=class extends de{constructor(){super(...arguments);_(this,"priority",120);_(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,a){switch(t){case"Q":case"QQ":return Fe(t.length,e);case"Qo":return a.ordinalNumber(e,{unit:"quarter"});case"QQQ":return a.quarter(e,{width:"abbreviated",context:"formatting"})||a.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return a.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return a.quarter(e,{width:"wide",context:"formatting"})||a.quarter(e,{width:"abbreviated",context:"formatting"})||a.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,a){return e.setMonth((a-1)*3,1),e.setHours(0,0,0,0),e}}});var Pw,_A=b(()=>{st();ut();Pw=class extends de{constructor(){super(...arguments);_(this,"priority",120);_(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,a){switch(t){case"q":case"qq":return Fe(t.length,e);case"qo":return a.ordinalNumber(e,{unit:"quarter"});case"qqq":return a.quarter(e,{width:"abbreviated",context:"standalone"})||a.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return a.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return a.quarter(e,{width:"wide",context:"standalone"})||a.quarter(e,{width:"abbreviated",context:"standalone"})||a.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,a){return e.setMonth((a-1)*3,1),e.setHours(0,0,0,0),e}}});var Mw,VA=b(()=>{qa();st();ut();Mw=class extends de{constructor(){super(...arguments);_(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);_(this,"priority",110)}parse(e,t,a){let r=i=>i-1;switch(t){case"M":return kt(Qe(et.month,e),r);case"MM":return kt(Fe(2,e),r);case"Mo":return kt(a.ordinalNumber(e,{unit:"month"}),r);case"MMM":return a.month(e,{width:"abbreviated",context:"formatting"})||a.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return a.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return a.month(e,{width:"wide",context:"formatting"})||a.month(e,{width:"abbreviated",context:"formatting"})||a.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,a){return e.setMonth(a,1),e.setHours(0,0,0,0),e}}});var Aw,UA=b(()=>{qa();st();ut();Aw=class extends de{constructor(){super(...arguments);_(this,"priority",110);_(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,t,a){let r=i=>i-1;switch(t){case"L":return kt(Qe(et.month,e),r);case"LL":return kt(Fe(2,e),r);case"Lo":return kt(a.ordinalNumber(e,{unit:"month"}),r);case"LLL":return a.month(e,{width:"abbreviated",context:"standalone"})||a.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return a.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return a.month(e,{width:"wide",context:"standalone"})||a.month(e,{width:"abbreviated",context:"standalone"})||a.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,a){return e.setMonth(a,1),e.setHours(0,0,0,0),e}}});function $A(s,e,t){let a=Oe(s,t==null?void 0:t.in),r=ym(a,t)-e;return a.setDate(a.getDate()-r*7),Oe(a,t==null?void 0:t.in)}var Iw=b(()=>{wm();Kt()});var Rw,YA=b(()=>{Iw();qn();qa();st();ut();Rw=class extends de{constructor(){super(...arguments);_(this,"priority",100);_(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,a){switch(t){case"w":return Qe(et.week,e);case"wo":return a.ordinalNumber(e,{unit:"week"});default:return Fe(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,a,r){return Tr($A(e,a,r),r)}}});function zA(s,e,t){let a=Oe(s,t==null?void 0:t.in),r=gm(a,t)-e;return a.setDate(a.getDate()-r*7),a}var Fw=b(()=>{km();Kt()});var jw,qA=b(()=>{Fw();No();qa();st();ut();jw=class extends de{constructor(){super(...arguments);_(this,"priority",100);_(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,t,a){switch(t){case"I":return Qe(et.week,e);case"Io":return a.ordinalNumber(e,{unit:"week"});default:return Fe(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,a){return _s(zA(e,a))}}});var R5,F5,Ow,GA=b(()=>{qa();st();ut();R5=[31,28,31,30,31,30,31,31,30,31,30,31],F5=[31,29,31,30,31,30,31,31,30,31,30,31],Ow=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"subPriority",1);_(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,a){switch(t){case"d":return Qe(et.date,e);case"do":return a.ordinalNumber(e,{unit:"date"});default:return Fe(t.length,e)}}validate(e,t){let a=e.getFullYear(),r=xm(a),i=e.getMonth();return r?t>=1&&t<=F5[i]:t>=1&&t<=R5[i]}set(e,t,a){return e.setDate(a),e.setHours(0,0,0,0),e}}});var Nw,KA=b(()=>{qa();st();ut();Nw=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"subpriority",1);_(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,t,a){switch(t){case"D":case"DD":return Qe(et.dayOfYear,e);case"Do":return a.ordinalNumber(e,{unit:"date"});default:return Fe(t.length,e)}}validate(e,t){let a=e.getFullYear();return xm(a)?t>=1&&t<=366:t>=1&&t<=365}set(e,t,a){return e.setMonth(0,a),e.setHours(0,0,0,0),e}}});function Gl(s,e,t){var p,m,f,h,k,g,y,w;let a=us(),r=(w=(y=(h=(f=t==null?void 0:t.weekStartsOn)!=null?f:(m=(p=t==null?void 0:t.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?h:a.weekStartsOn)!=null?y:(g=(k=a.locale)==null?void 0:k.options)==null?void 0:g.weekStartsOn)!=null?w:0,i=Oe(s,t==null?void 0:t.in),n=i.getDay(),l=(e%7+7)%7,d=7-r,u=e<0||e>6?e-(n+d)%7:(l+d)%7-(n+d)%7;return Bl(i,u,t)}var tu=b(()=>{Oo();Gd();Kt()});var Lw,QA=b(()=>{tu();st();Lw=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,t,a){switch(t){case"E":case"EE":case"EEE":return a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return a.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,a,r){return e=Gl(e,a,r),e.setHours(0,0,0,0),e}}});var Hw,XA=b(()=>{tu();st();ut();Hw=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,t,a,r){let i=n=>{let o=Math.floor((n-1)/7)*7;return(n+r.weekStartsOn+6)%7+o};switch(t){case"e":case"ee":return kt(Fe(t.length,e),i);case"eo":return kt(a.ordinalNumber(e,{unit:"day"}),i);case"eee":return a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"eeeee":return a.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,a,r){return e=Gl(e,a,r),e.setHours(0,0,0,0),e}}});var Bw,JA=b(()=>{tu();st();ut();Bw=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,t,a,r){let i=n=>{let o=Math.floor((n-1)/7)*7;return(n+r.weekStartsOn+6)%7+o};switch(t){case"c":case"cc":return kt(Fe(t.length,e),i);case"co":return kt(a.ordinalNumber(e,{unit:"day"}),i);case"ccc":return a.day(e,{width:"abbreviated",context:"standalone"})||a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"});case"ccccc":return a.day(e,{width:"narrow",context:"standalone"});case"cccccc":return a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return a.day(e,{width:"wide",context:"standalone"})||a.day(e,{width:"abbreviated",context:"standalone"})||a.day(e,{width:"short",context:"standalone"})||a.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,a,r){return e=Gl(e,a,r),e.setHours(0,0,0,0),e}}});function ZA(s,e,t){let a=Oe(s,t==null?void 0:t.in),r=oA(a,t),i=e-r;return Bl(a,i,t)}var Ww=b(()=>{Gd();gw();Kt()});var _w,eI=b(()=>{Ww();st();ut();_w=class extends de{constructor(){super(...arguments);_(this,"priority",90);_(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,t,a){let r=i=>i===0?7:i;switch(t){case"i":case"ii":return Fe(t.length,e);case"io":return a.ordinalNumber(e,{unit:"day"});case"iii":return kt(a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),r);case"iiiii":return kt(a.day(e,{width:"narrow",context:"formatting"}),r);case"iiiiii":return kt(a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),r);case"iiii":default:return kt(a.day(e,{width:"wide",context:"formatting"})||a.day(e,{width:"abbreviated",context:"formatting"})||a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),r)}}validate(e,t){return t>=1&&t<=7}set(e,t,a){return e=ZA(e,a),e.setHours(0,0,0,0),e}}});var Vw,tI=b(()=>{st();ut();Vw=class extends de{constructor(){super(...arguments);_(this,"priority",80);_(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,t,a){switch(t){case"a":case"aa":case"aaa":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,a){return e.setHours(ql(a),0,0,0),e}}});var Uw,aI=b(()=>{st();ut();Uw=class extends de{constructor(){super(...arguments);_(this,"priority",80);_(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,t,a){switch(t){case"b":case"bb":case"bbb":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,a){return e.setHours(ql(a),0,0,0),e}}});var $w,rI=b(()=>{st();ut();$w=class extends de{constructor(){super(...arguments);_(this,"priority",80);_(this,"incompatibleTokens",["a","b","t","T"])}parse(e,t,a){switch(t){case"B":case"BB":case"BBB":return a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return a.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return a.dayPeriod(e,{width:"wide",context:"formatting"})||a.dayPeriod(e,{width:"abbreviated",context:"formatting"})||a.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,a){return e.setHours(ql(a),0,0,0),e}}});var Yw,sI=b(()=>{qa();st();ut();Yw=class extends de{constructor(){super(...arguments);_(this,"priority",70);_(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,a){switch(t){case"h":return Qe(et.hour12h,e);case"ho":return a.ordinalNumber(e,{unit:"hour"});default:return Fe(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,a){let r=e.getHours()>=12;return r&&a<12?e.setHours(a+12,0,0,0):!r&&a===12?e.setHours(0,0,0,0):e.setHours(a,0,0,0),e}}});var zw,iI=b(()=>{qa();st();ut();zw=class extends de{constructor(){super(...arguments);_(this,"priority",70);_(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,a){switch(t){case"H":return Qe(et.hour23h,e);case"Ho":return a.ordinalNumber(e,{unit:"hour"});default:return Fe(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,a){return e.setHours(a,0,0,0),e}}});var qw,nI=b(()=>{qa();st();ut();qw=class extends de{constructor(){super(...arguments);_(this,"priority",70);_(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,a){switch(t){case"K":return Qe(et.hour11h,e);case"Ko":return a.ordinalNumber(e,{unit:"hour"});default:return Fe(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,a){return e.getHours()>=12&&a<12?e.setHours(a+12,0,0,0):e.setHours(a,0,0,0),e}}});var Gw,oI=b(()=>{qa();st();ut();Gw=class extends de{constructor(){super(...arguments);_(this,"priority",70);_(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,a){switch(t){case"k":return Qe(et.hour24h,e);case"ko":return a.ordinalNumber(e,{unit:"hour"});default:return Fe(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,a){let r=a<=24?a%24:a;return e.setHours(r,0,0,0),e}}});var Kw,lI=b(()=>{qa();st();ut();Kw=class extends de{constructor(){super(...arguments);_(this,"priority",60);_(this,"incompatibleTokens",["t","T"])}parse(e,t,a){switch(t){case"m":return Qe(et.minute,e);case"mo":return a.ordinalNumber(e,{unit:"minute"});default:return Fe(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,a){return e.setMinutes(a,0,0),e}}});var Qw,cI=b(()=>{qa();st();ut();Qw=class extends de{constructor(){super(...arguments);_(this,"priority",50);_(this,"incompatibleTokens",["t","T"])}parse(e,t,a){switch(t){case"s":return Qe(et.second,e);case"so":return a.ordinalNumber(e,{unit:"second"});default:return Fe(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,a){return e.setSeconds(a,0),e}}});var Xw,dI=b(()=>{st();ut();Xw=class extends de{constructor(){super(...arguments);_(this,"priority",30);_(this,"incompatibleTokens",["t","T"])}parse(e,t){let a=r=>Math.trunc(r*Math.pow(10,-t.length+3));return kt(Fe(t.length,e),a)}set(e,t,a){return e.setMilliseconds(a),e}}});var Jw,uI=b(()=>{Gt();dm();qa();st();ut();Jw=class extends de{constructor(){super(...arguments);_(this,"priority",10);_(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return ms(ps.basicOptionalMinutes,e);case"XX":return ms(ps.basic,e);case"XXXX":return ms(ps.basicOptionalSeconds,e);case"XXXXX":return ms(ps.extendedOptionalSeconds,e);case"XXX":default:return ms(ps.extended,e)}}set(e,t,a){return t.timestampIsSet?e:je(e,e.getTime()-Lo(e)-a)}}});var Zw,pI=b(()=>{Gt();dm();qa();st();ut();Zw=class extends de{constructor(){super(...arguments);_(this,"priority",10);_(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return ms(ps.basicOptionalMinutes,e);case"xx":return ms(ps.basic,e);case"xxxx":return ms(ps.basicOptionalSeconds,e);case"xxxxx":return ms(ps.extendedOptionalSeconds,e);case"xxx":default:return ms(ps.extended,e)}}set(e,t,a){return t.timestampIsSet?e:je(e,e.getTime()-Lo(e)-a)}}});var ev,mI=b(()=>{Gt();st();ut();ev=class extends de{constructor(){super(...arguments);_(this,"priority",40);_(this,"incompatibleTokens","*")}parse(e){return Tm(e)}set(e,t,a){return[je(e,a*1e3),{timestampIsSet:!0}]}}});var tv,fI=b(()=>{Gt();st();ut();tv=class extends de{constructor(){super(...arguments);_(this,"priority",20);_(this,"incompatibleTokens","*")}parse(e){return Tm(e)}set(e,t,a){return[je(e,a),{timestampIsSet:!0}]}}});var hI,gI=b(()=>{OA();NA();LA();HA();BA();WA();_A();VA();UA();YA();qA();GA();KA();QA();XA();JA();eI();tI();aI();rI();sI();iI();nI();oI();lI();cI();dI();uI();pI();mI();fI();hI={G:new Tw,y:new Cw,Y:new xw,R:new Sw,u:new Ew,Q:new Dw,q:new Pw,M:new Mw,L:new Aw,w:new Rw,I:new jw,d:new Ow,D:new Nw,E:new Lw,e:new Hw,c:new Bw,i:new _w,a:new Vw,b:new Uw,B:new $w,h:new Yw,H:new zw,K:new qw,k:new Gw,m:new Kw,s:new Qw,S:new Xw,X:new Jw,x:new Zw,t:new ev,T:new tv}});function kI(s,e,t,a){var g,y,w,v,T,x,C,S,E,P,I,L,W,O,H,$,B,q;let r=()=>je((a==null?void 0:a.in)||t,NaN),i=iA(),n=(y=(g=a==null?void 0:a.locale)!=null?g:i.locale)!=null?y:Ho,o=(P=(E=(x=(T=a==null?void 0:a.firstWeekContainsDate)!=null?T:(v=(w=a==null?void 0:a.locale)==null?void 0:w.options)==null?void 0:v.firstWeekContainsDate)!=null?x:i.firstWeekContainsDate)!=null?E:(S=(C=i.locale)==null?void 0:C.options)==null?void 0:S.firstWeekContainsDate)!=null?P:1,l=(q=(B=(O=(W=a==null?void 0:a.weekStartsOn)!=null?W:(L=(I=a==null?void 0:a.locale)==null?void 0:I.options)==null?void 0:L.weekStartsOn)!=null?O:i.weekStartsOn)!=null?B:($=(H=i.locale)==null?void 0:H.options)==null?void 0:$.weekStartsOn)!=null?q:0;if(!e)return s?r():Oe(t,a==null?void 0:a.in);let d={firstWeekContainsDate:o,weekStartsOn:l,locale:n},u=[new vw(a==null?void 0:a.in,t)],p=e.match(O5).map(U=>{let z=U[0];return z in Jd?Jd[z](U,n.formatLong):U}).join("").match(j5),m=[];for(let U of p){!(a==null?void 0:a.useAdditionalWeekYearTokens)&&bm(U)&&Zd(U,e,s),!(a==null?void 0:a.useAdditionalDayOfYearTokens)&&vm(U)&&Zd(U,e,s);let z=U[0],te=hI[z];if(te){let{incompatibleTokens:fe}=te;if(Array.isArray(fe)){let De=m.find($e=>fe.includes($e.token)||$e.token===z);if(De)throw new RangeError(`The format string mustn't contain \`${De.fullToken}\` and \`${U}\` at the same time`)}else if(te.incompatibleTokens==="*"&&m.length>0)throw new RangeError(`The format string mustn't contain \`${U}\` and any other token at the same time`);m.push({token:z,fullToken:U});let ue=te.run(s,U,n.match,d);if(!ue)return r();u.push(ue.setter),s=ue.rest}else{if(z.match(B5))throw new RangeError("Format string contains an unescaped latin alphabet character `"+z+"`");if(U==="''"?U="'":z==="'"&&(U=W5(U)),s.indexOf(U)===0)s=s.slice(U.length);else return r()}}if(s.length>0&&H5.test(s))return r();let f=u.map(U=>U.priority).sort((U,z)=>z-U).filter((U,z,te)=>te.indexOf(U)===z).map(U=>u.filter(z=>z.priority===U).sort((z,te)=>te.subPriority-z.subPriority)).map(U=>U[0]),h=Oe(t,a==null?void 0:a.in);if(isNaN(+h))return r();let k={};for(let U of f){if(!U.validate(h,d))return r();let z=U.set(h,k,d);Array.isArray(z)?(h=z[0],Object.assign(k,z[1])):h=z}return h}function W5(s){return s.match(N5)[1].replace(L5,"'")}var j5,O5,N5,L5,H5,B5,yI=b(()=>{lw();mw();fw();Gt();hw();Kt();bw();gI();j5=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,O5=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,N5=/^'([^]*?)'?$/,L5=/''/g,H5=/\S/,B5=/[a-zA-Z]/});var wI=b(()=>{});var vI=b(()=>{});var bI=b(()=>{});var TI=b(()=>{});var CI=b(()=>{});var xI=b(()=>{});var SI=b(()=>{});var EI=b(()=>{});var DI=b(()=>{});var PI=b(()=>{});var MI=b(()=>{});var AI=b(()=>{});var II=b(()=>{});var RI=b(()=>{});function FI(s,e,t){let[a,r]=Wl(t==null?void 0:t.in,s,e);return a.getFullYear()===r.getFullYear()}var av=b(()=>{um()});var jI=b(()=>{});var OI=b(()=>{});var NI=b(()=>{});var LI=b(()=>{});var HI=b(()=>{});var BI=b(()=>{});var WI=b(()=>{});function _I(s,e){return FI(je((e==null?void 0:e.in)||s,s),_l((e==null?void 0:e.in)||s))}var VI=b(()=>{Gt();Kd();av()});var UI=b(()=>{});function $I(s,e){return mm(je((e==null?void 0:e.in)||s,s),_l((e==null?void 0:e.in)||s))}var YI=b(()=>{Gt();Kd();fm()});function zI(s,e){return mm(s,Bl(_l((e==null?void 0:e.in)||s),1),e)}var qI=b(()=>{Gd();Kd();fm()});var GI=b(()=>{});var KI=b(()=>{});var QI=b(()=>{});var XI=b(()=>{});var JI=b(()=>{});var ZI=b(()=>{});var e1=b(()=>{});var t1=b(()=>{});var a1=b(()=>{});var r1=b(()=>{});var s1=b(()=>{});var i1=b(()=>{});var n1=b(()=>{});var o1=b(()=>{});var l1=b(()=>{});var c1=b(()=>{});var d1=b(()=>{});var u1=b(()=>{});var p1=b(()=>{});var m1=b(()=>{});var f1=b(()=>{});var h1=b(()=>{});var g1=b(()=>{});var k1=b(()=>{});var y1=b(()=>{});var w1=b(()=>{});var v1=b(()=>{});var b1=b(()=>{});var T1=b(()=>{});function C1(s,e){var d;let t=()=>je(e==null?void 0:e.in,NaN),a=(d=e==null?void 0:e.additionalDigits)!=null?d:2,r=$5(s),i;if(r.date){let u=Y5(r.date,a);i=z5(u.restDateString,u.year)}if(!i||isNaN(+i))return t();let n=+i,o=0,l;if(r.time&&(o=q5(r.time),isNaN(o)))return t();if(r.timezone){if(l=G5(r.timezone),isNaN(l))return t()}else{let u=new Date(n+o),p=Oe(0,e==null?void 0:e.in);return p.setFullYear(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()),p.setHours(u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds()),p}return Oe(n+o+l,e==null?void 0:e.in)}function $5(s){let e={},t=s.split(Sm.dateTimeDelimiter),a;if(t.length>2)return e;if(/:/.test(t[0])?a=t[0]:(e.date=t[0],a=t[1],Sm.timeZoneDelimiter.test(e.date)&&(e.date=s.split(Sm.timeZoneDelimiter)[0],a=s.substr(e.date.length,s.length))),a){let r=Sm.timezone.exec(a);r?(e.time=a.replace(r[1],""),e.timezone=r[1]):e.time=a}return e}function Y5(s,e){let t=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),a=s.match(t);if(!a)return{year:NaN,restDateString:""};let r=a[1]?parseInt(a[1]):null,i=a[2]?parseInt(a[2]):null;return{year:i===null?r:i*100,restDateString:s.slice((a[1]||a[2]).length)}}function z5(s,e){if(e===null)return new Date(NaN);let t=s.match(_5);if(!t)return new Date(NaN);let a=!!t[4],r=au(t[1]),i=au(t[2])-1,n=au(t[3]),o=au(t[4]),l=au(t[5])-1;if(a)return Z5(e,o,l)?K5(e,o,l):new Date(NaN);{let d=new Date(0);return!X5(e,i,n)||!J5(e,r)?new Date(NaN):(d.setUTCFullYear(e,i,Math.max(r,n)),d)}}function au(s){return s?parseInt(s):1}function q5(s){let e=s.match(V5);if(!e)return NaN;let t=rv(e[1]),a=rv(e[2]),r=rv(e[3]);return ez(t,a,r)?t*qd+a*zd+r*1e3:NaN}function rv(s){return s&&parseFloat(s.replace(",","."))||0}function G5(s){if(s==="Z")return 0;let e=s.match(U5);if(!e)return 0;let t=e[1]==="+"?-1:1,a=parseInt(e[2]),r=e[3]&&parseInt(e[3])||0;return tz(a,r)?t*(a*qd+r*zd):NaN}function K5(s,e,t){let a=new Date(0);a.setUTCFullYear(s,0,4);let r=a.getUTCDay()||7,i=(e-1)*7+t+1-r;return a.setUTCDate(a.getUTCDate()+i),a}function x1(s){return s%400==0||s%4==0&&s%100!=0}function X5(s,e,t){return e>=0&&e<=11&&t>=1&&t<=(Q5[e]||(x1(s)?29:28))}function J5(s,e){return e>=1&&e<=(x1(s)?366:365)}function Z5(s,e,t){return e>=1&&e<=53&&t>=0&&t<=6}function ez(s,e,t){return s===24?e===0&&t===0:t>=0&&t<60&&e>=0&&e<60&&s>=0&&s<25}function tz(s,e){return e>=0&&e<=59}var Sm,_5,V5,U5,Q5,S1=b(()=>{jo();Gt();Kt();Sm={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},_5=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,V5=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,U5=/^([+-])(\d{2})(?::?(\d{2}))?$/;Q5=[31,null,31,30,31,30,31,31,30,31,30,31]});var E1=b(()=>{});var D1=b(()=>{});var P1=b(()=>{});var M1=b(()=>{});var A1=b(()=>{});var I1=b(()=>{});var R1=b(()=>{});var F1=b(()=>{});var j1=b(()=>{});var O1=b(()=>{});var N1=b(()=>{});var L1=b(()=>{});var H1=b(()=>{});var B1=b(()=>{});var W1=b(()=>{});var _1=b(()=>{});var V1=b(()=>{});var U1=b(()=>{});var $1=b(()=>{});var Y1=b(()=>{});var z1=b(()=>{});var q1=b(()=>{});var G1=b(()=>{});var K1=b(()=>{});var Q1=b(()=>{});var X1=b(()=>{});var J1=b(()=>{});var Z1=b(()=>{});var eR=b(()=>{});var tR=b(()=>{});var aR=b(()=>{});var rR=b(()=>{});var sR=b(()=>{});var iR=b(()=>{});var nR=b(()=>{});var oR=b(()=>{});var lR=b(()=>{});var cR=b(()=>{});var dR=b(()=>{});var uR=b(()=>{});var pR=b(()=>{});var mR=b(()=>{});var fR=b(()=>{});var hR=b(()=>{});var gR=b(()=>{});var kR=b(()=>{});var sv=b(()=>{J0();aP();Gd();sP();lP();rP();cP();X0();dP();uP();pP();mP();fP();kP();yP();wP();vP();bP();Gt();Kd();TP();xP();aw();SP();EP();DP();MP();AP();IP();RP();FP();OP();NP();LP();_P();VP();UP();$P();YP();zP();qP();GP();KP();XP();JP();ZP();tM();sM();iM();HP();nM();oM();cM();dM();uM();BP();pM();mM();fM();hM();lM();aM();gM();WM();_M();VM();UM();$M();YM();zM();qM();GM();KM();QM();XM();JM();ZM();eA();cw();tA();rA();sA();hw();nA();gw();km();cm();lA();cA();dA();uA();pA();PP();mA();fA();hA();wm();gA();Xd();yA();wA();vA();bA();TA();CA();xA();SA();EA();DA();PA();sw();MA();AA();IA();RA();FA();WP();aA();wI();vI();bI();fm();CI();SI();EI();PI();MI();AI();RI();xI();av();Z0();eP();jI();OI();NI();LI();HI();BI();WI();VI();UI();YI();qI();GI();iw();KI();tP();QI();JI();ZI();t1();a1();kA();r1();e1();s1();i1();hP();n1();o1();l1();c1();gP();d1();u1();p1();m1();f1();h1();g1();k1();y1();w1();v1();b1();T1();yI();S1();E1();D1();P1();M1();A1();I1();R1();F1();j1();O1();N1();L1();H1();B1();W1();_1();U1();$1();tu();Y1();z1();q1();Ww();Fw();oP();G1();K1();V1();Q1();X1();Iw();J1();Z1();pm();eR();TI();No();rw();DI();eM();QP();II();tR();aR();qn();dw();nw();rR();iR();nR();XI();oR();jP();lR();cR();sR();dR();uR();pR();mR();Kt();kw();fR();hR();gR();kR()});var yR=b(()=>{});var wR=b(()=>{});var vR=b(()=>{});var bR=b(()=>{});var TR=b(()=>{});var CR=b(()=>{});var xR=b(()=>{});var SR=b(()=>{});var ER=b(()=>{});var DR=b(()=>{});var PR=b(()=>{});var MR=b(()=>{});var AR=b(()=>{});var IR=b(()=>{});var RR=b(()=>{});var FR=b(()=>{});var jR=b(()=>{});var OR=b(()=>{});var NR=b(()=>{});var LR=b(()=>{});var HR=b(()=>{});var BR=b(()=>{});var WR=b(()=>{});var _R=b(()=>{});var VR=b(()=>{});var UR=b(()=>{});var $R=b(()=>{});var YR=b(()=>{});var zR=b(()=>{});var qR=b(()=>{});var GR=b(()=>{});var KR=b(()=>{});var QR=b(()=>{});var XR=b(()=>{});var JR=b(()=>{});var ZR=b(()=>{});var eF=b(()=>{});var tF=b(()=>{});var aF=b(()=>{});var rF=b(()=>{});var sF=b(()=>{});var iF=b(()=>{});var nF=b(()=>{});var oF=b(()=>{});var lF=b(()=>{});var cF=b(()=>{});var dF=b(()=>{});var uF=b(()=>{});var pF=b(()=>{});var mF=b(()=>{});var fF=b(()=>{});var hF=b(()=>{});var gF=b(()=>{});var kF=b(()=>{});var yF=b(()=>{});var wF=b(()=>{});var vF=b(()=>{});var bF=b(()=>{});var TF=b(()=>{});var CF=b(()=>{});var xF=b(()=>{});var SF=b(()=>{});var EF=b(()=>{});var DF=b(()=>{});var PF=b(()=>{});var MF=b(()=>{});var AF=b(()=>{});var IF=b(()=>{});var RF=b(()=>{});var FF=b(()=>{});var jF=b(()=>{});var OF=b(()=>{});var NF=b(()=>{});var LF=b(()=>{});var HF=b(()=>{});var BF=b(()=>{});var WF=b(()=>{});var _F=b(()=>{});var VF=b(()=>{});var UF=b(()=>{});var $F=b(()=>{});var YF=b(()=>{});var zF=b(()=>{});var qF=b(()=>{});var GF=b(()=>{});var KF=b(()=>{});var QF=b(()=>{});var XF=b(()=>{});var JF=b(()=>{});var ZF=b(()=>{});var ej=b(()=>{});var tj=b(()=>{});var aj=b(()=>{});var rj=b(()=>{});var sj=b(()=>{yR();wR();vR();bR();TR();CR();xR();SR();ER();DR();PR();MR();AR();IR();RR();FR();jR();OR();NR();LR();HR();BR();WR();_R();VR();UR();$R();ow();YR();zR();qR();GR();KR();QR();XR();JR();ZR();eF();tF();aF();rF();sF();iF();nF();oF();lF();cF();dF();uF();pF();mF();fF();hF();gF();kF();yF();wF();vF();bF();TF();CF();xF();SF();EF();DF();PF();MF();AF();IF();RF();FF();jF();OF();NF();LF();HF();BF();WF();_F();VF();UF();$F();YF();zF();qF();GF();KF();QF();XF();JF();ZF();ej();tj();aj();rj()});var ij={};ha(ij,{formatDate:()=>az,getLocalDateString:()=>Dm,getRelativeTimeString:()=>Us,getTodayLocalDateString:()=>Vs,parseLocalDate:()=>Em});function az(s){return $I(s)?"Today":zI(s)?"Tomorrow":_I(s)?eu(s,"MMM d"):eu(s,"MMM d, yyyy")}function Em(s,e){if(!s||(s=s.trim(),s.includes("{{")||s.includes("}}")))return;let t=["yyyy-MM-dd","yyyy/MM/dd","dd-MM-yyyy","dd/MM/yyyy","MM-dd-yyyy","MM/dd/yyyy","yyyy.MM.dd","dd.MM.yyyy","yyyy\u5E74M\u6708d\u65E5","MMM d, yyyy","MMM dd, yyyy","d MMM yyyy","dd MMM yyyy","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],a=e?[...e,...t]:t;for(let r of a)try{let i=kI(s,r,new Date,{locale:Ho});if(Qd(i))return Xi(i).getTime()}catch(i){continue}try{let r=C1(s);if(Qd(r))return Xi(r).getTime()}catch(r){}console.warn(`Worker: Could not parse date: ${s}`)}function Vs(){let s=new Date,e=s.getFullYear(),t=String(s.getMonth()+1).padStart(2,"0"),a=String(s.getDate()).padStart(2,"0");return`${e}-${t}-${a}`}function Dm(s){let e=s.getFullYear(),t=String(s.getMonth()+1).padStart(2,"0"),a=String(s.getDate()).padStart(2,"0");return`${e}-${t}-${a}`}function Us(s,e=navigator.language){let t=typeof s=="number"?s:s.getTime(),a=new Date;a.setHours(0,0,0,0);let r=new Date(t);r.setHours(0,0,0,0);let i=Math.round((r.getTime()-a.getTime())/(1e3*60*60*24));return new Intl.RelativeTimeFormat(e,{numeric:"auto"}).format(i,"day")}var $s=b(()=>{sv();sj()});var iv,nv=b(()=>{iv=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[(.)\])\s*(.*)$/m});var Ga,ov=b(()=>{(function(r){r.DataviewOnly="dataview-only",r.EmojiOnly="emoji-only",r.Both="both",r.None="none"})(Ga||(Ga={}))});var lv,nj=b(()=>{lv=class{constructor(e){this.protectedRanges=[];this.content=e,this.protectedRanges=[]}detectAllProtectedRanges(){return this.protectedRanges=[],this.detectObsidianLinks(),this.detectMarkdownLinks(),this.detectInlineCode(),this.detectDirectUrls(),this.detectColorCodes(),this.mergeAndSortRanges()}isPositionProtected(e){return this.protectedRanges.some(t=>e>=t.start&&e<t.end)}findNextUnprotectedHash(e=0){let t=e;for(;t<this.content.length;){let a=this.content.indexOf("#",t);if(a===-1)return-1;if(!this.isPositionProtected(a))return a;t=a+1}return-1}detectObsidianLinks(){let e=/\[\[([^\]]+)\]\]/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"obsidian-link",content:t[0]})}detectMarkdownLinks(){let e=/\[([^\]]*)\]\(([^)]+)\)/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"markdown-link",content:t[0]})}detectDirectUrls(){let e=/(?:https?|ftp|mailto|file):\/\/[^\s<>"{}|\\^`\[\]]+/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"url",content:t[0]})}detectColorCodes(){let e=/#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})(?![0-9A-Fa-f])/g,t;for(;(t=e.exec(this.content))!==null;)this.isLikelyColorCode(t.index,t[0])&&this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"color-code",content:t[0]})}detectInlineCode(){let e=/(`+)([^`]|[^`].*?[^`])\1(?!`)/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"inline-code",content:t[0]})}isLikelyColorCode(e,t){let a=e>0?this.content[e-1]:" ",r=e+t.length,i=r<this.content.length?this.content[r]:" ",n=/\s|^|[^a-zA-Z0-9]/.test(a),o=/\s|$|[^a-zA-Z0-9]/.test(i);return n&&o}mergeAndSortRanges(){if(this.protectedRanges.length===0)return[];this.protectedRanges.sort((a,r)=>a.start-r.start);let e=[],t=this.protectedRanges[0];for(let a=1;a<this.protectedRanges.length;a++){let r=this.protectedRanges[a];t.end>r.start?t={start:t.start,end:Math.max(t.end,r.end),type:t.type,content:this.content.substring(t.start,Math.max(t.end,r.end))}:(e.push(t),t=r)}return e.push(t),this.protectedRanges=e,e}getDebugInfo(){return this.detectAllProtectedRanges().map(t=>`${t.type}: [${t.start}-${t.end}] "${t.content}"`).join(`
`)}}});var fs,Ha,cv,Wo=b(()=>{ov();$s();nv();nj();fs=class{constructor(e){this.tasks=[];this.indentStack=[];this.config=e,this.customDateFormats=e.customDateFormats}extractMetadataAndTags(e){return this.extractMetadataAndTagsInternal(e)}static createWithStatusMapping(e,t){let a={...e,statusMapping:t};return new fs(a)}parse(e,t="",a,r,i){this.reset(),this.fileMetadata=a,r&&(this.projectConfigCache=r);let n=e.split(/\r?\n/),o=0,l=0,d=!1;for(;o<n.length;){if(l++,l>this.config.maxParseIterations){console.warn("Warning: Maximum parse iterations reached, stopping to prevent infinite loop");break}let u=n[o];if(u.trim().startsWith("```")||u.trim().startsWith("~~~")){d=!d,o++;continue}if(d){o++;continue}if(this.config.parseHeadings){let m=this.extractHeading(u);if(m){let[f,h]=m;this.currentHeading=h,this.currentHeadingLevel=f,o++;continue}}let p=this.extractTaskLine(u);if(p){let[m,,f,h]=p,k=`${t}-L${o}`,[g,y]=this.findParentAndLevel(m),[w,v]=this.parseTaskContent(f),T=v.toLowerCase()==="x",x=this.getStatusFromMapping(v),[C,S,E]=this.extractMetadataAndTagsInternal(w),P=g!==void 0,I=this.inheritFileMetadata(S,P),L=E;if(I.tags)try{let B=JSON.parse(I.tags);Array.isArray(B)&&(L=this.mergeTags(E,B))}catch(B){L=this.mergeTags(E,[I.tags])}let W=i||this.determineTgProject(t),[O,H]=this.config.parseComments&&o+1<n.length?this.extractMultilineComment(n,o+1,m):[void 0,0];o+=H;let $={id:k,content:C,status:x,rawStatus:v,completed:T,indentLevel:y,parentId:g,childrenIds:[],metadata:I,tags:L,comment:O,lineNumber:o+1,actualIndent:m,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:h,filePath:t,originalMarkdown:u,tgProject:W,line:o,children:[],priority:this.extractLegacyPriority(I),startDate:this.extractLegacyDate(I,"startDate"),dueDate:this.extractLegacyDate(I,"dueDate"),scheduledDate:this.extractLegacyDate(I,"scheduledDate"),completedDate:this.extractLegacyDate(I,"completedDate"),createdDate:this.extractLegacyDate(I,"createdDate"),recurrence:I.recurrence,project:I.project,context:I.context};if(g&&this.tasks.length>0){let B=this.tasks.find(q=>q.id===g);B&&(B.childrenIds.push(k),B.children.push(k))}this.updateIndentStack(k,y,m),this.tasks.push($)}o++}return[...this.tasks]}parseLegacy(e,t="",a,r,i){return this.parse(e,t,a,r,i).map(o=>this.convertToLegacyTask(o))}parseTask(e,t="",a=0){let r=this.parse(e,t);return this.convertToLegacyTask({...r[0],line:a,id:`${t}-L${a}`})}reset(){this.tasks=[],this.indentStack=[],this.currentHeading=void 0,this.currentHeadingLevel=void 0}extractTaskLine(e){let t=e.trim(),a=e.length-t.length;if(this.isTaskLine(t)){let r=this.extractListMarker(t);return[a,a,t,r]}return null}extractListMarker(e){for(let r of["-","*","+"])if(e.startsWith(r))return r;let t=e.split(""),a=0;for(;a<t.length&&/\d/.test(t[a]);)a++;return a>0&&a<t.length&&(t[a]==="."||t[a]===")")?t.slice(0,a+1).join(""):e.charAt(0)||" "}isTaskLine(e){return iv.test(e)}parseTaskContent(e){let t=e.match(iv);if(t&&t[4]!==void 0&&t[5]!==void 0){let a=t[4];return[t[5].trim(),a]}return[e," "]}extractMetadataAndTagsInternal(e){let t={},a=[],r="",i=e,n=0;for(;n<this.config.maxMetadataIterations;){n++;let o=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode===Ga.DataviewOnly||this.config.metadataParseMode===Ga.Both)){let l=this.extractDataviewMetadata(i);if(l){let[d,u,p]=l;t[d]=u,i=p,o=!0;continue}}if(!o&&this.config.parseMetadata&&(this.config.metadataParseMode===Ga.EmojiOnly||this.config.metadataParseMode===Ga.Both)){let l=this.extractEmojiMetadata(i);if(l){let[d,u,p,m]=l,[f,h,k]=this.extractTagsOnly(p);for(let g of k)a.push(g);for(let[g,y]of Object.entries(h))t[g]=y;t[d]=u,r+=f,i=m,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractContext(i);if(l){let[d,u,p]=l;t.context=d,r+=u,i=p,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractTag(i);if(l){let[d,u,p]=l,m=d.startsWith("#")?d.substring(1):d,f=m.indexOf("/");if(f!==-1){let h=m.substring(0,f),k=m.substring(f+1),g=this.config.specialTagPrefixes[h];g&&this.config.metadataParseMode!==Ga.None?t[g]=k:a.push(d)}else a.push(d);r+=u,i=p,o=!0;continue}}if(!o){r+=i;break}}return[r.trim(),t,a]}extractDataviewMetadata(e){let t=e.indexOf("[");if(t===-1)return null;let a=e.indexOf("]",t);if(a===-1)return null;let r=e.substring(t+1,a);if(!r.includes("::"))return null;let i=r.split("::",2);if(i.length!==2)return null;let n=i[0].trim(),o=i[1].trim(),d={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion"}[n.toLowerCase()];if(d&&(n=d),n&&o){let u=e.substring(0,t),p=e.substring(a+1);return[n,o,u+p]}return null}extractEmojiMetadata(e){let t=null;for(let[f,h]of Object.entries(this.config.emojiMapping)){let k=e.indexOf(f);k!==-1&&(!t||k<t.pos)&&(t={pos:k,emoji:f,key:h})}if(!t)return null;let a=e.substring(0,t.pos),r=e.substring(t.pos+t.emoji.length),i=r.match(/^\s*/),n=i?i[0].length:0,o=r.substring(n),l=o.length;for(let f=0;f<o.length;f++){let h=o[f];if(Object.keys(this.config.emojiMapping).some(g=>o.substring(f).startsWith(g))||h==="["){l=f;break}let k=this.findFileExtensionEnd(o,f);if(k>f){l=k;break}if(/\s/.test(h)&&f+1<o.length&&(o[f+1]==="#"||o[f+1]==="@")){l=f;break}if(h==="#"||h==="@"){l=f;break}}let d=o.substring(0,l).trim(),u;if(t.key==="dependsOn"&&d?u=d.split(",").map(f=>f.trim()).filter(f=>f.length>0).join(","):u=d||this.getDefaultEmojiValue(t.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(t.key)&&typeof u=="string"){let f=u.match(/\d{4}-\d{2}-\d{2}/);f&&(u=f[0])}let p=t.pos+t.emoji.length+n+l,m=e.substring(p);return[t.key,u,a,m]}findFileExtensionEnd(e,t){let a=[".md",".canvas",".txt",".pdf"];for(let r of a)if(e.substring(t).startsWith(r)){let i=t+r.length;if(i<e.length&&e[i]==="#")for(;i<e.length&&e[i]!==" ";)i++;if(i>=e.length||e[i]===" ")return i}return t}getDefaultEmojiValue(e){return{"\u{1F53A}":"highest","\u23EB":"high","\u{1F53C}":"medium","\u{1F53D}":"low","\u23EC\uFE0F":"lowest","\u23EC":"lowest"}[e]||"true"}extractTag(e){let t=new lv(e);t.detectAllProtectedRanges();let a=t.findNextUnprotectedHash(0);if(a===-1)return null;if(!this.isValidTagStart(e,a)){let o=t.findNextUnprotectedHash(a+1);if(o===-1)return null;let l=e.substring(o),d=this.extractTag(l);if(d){let[u,p,m]=d;return[u,e.substring(0,o)+p,m]}return null}let i=e.substring(a+1),n=0;for(let o=0;o<i.length;o++){let l=i[o],d=l.charCodeAt(0);if(d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||l==="/"||l==="-"||l==="_"||d>127&&l!=="\uFF0C"&&l!=="\u3002"&&l!=="\uFF1B"&&l!=="\uFF1A"&&l!=="\uFF01"&&l!=="\uFF1F"&&l!=="\u300C"&&l!=="\u300D"&&l!=="\u300E"&&l!=="\u300F"&&l!=="\uFF08"&&l!=="\uFF09"&&l!=="\u3010"&&l!=="\u3011"&&l!=='"'&&l!=='"'&&l!=="'"&&l!=="'"&&l!==" ")n=o+1;else break}if(n>0){let o="#"+i.substring(0,n),l=e.substring(0,a),d=e.substring(a+1+n);return[o,l,d]}return null}isValidTagStart(e,t){if(t===0)return!0;let a=e[t-1],r=/[\s\(\[\{<,;:!?\-\+\*\/\\\|=]/,i=/[a-zA-Z0-9#@$%^&*]/;return r.test(a)?!0:i.test(a)?!1:!a.match(/[a-zA-Z0-9#@$%^&*]/)}extractContext(e){let t=e.indexOf("@");if(t===-1||!(t===0||e[t-1].match(/\s/)||!e[t-1].match(/[a-zA-Z0-9#@$%^&*]/)))return null;let r=e.substring(t+1),i=0;for(let n=0;n<r.length;n++){let o=r[n],l=o.charCodeAt(0);if(l>=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122||o==="-"||o==="_"||l>127&&o!=="\uFF0C"&&o!=="\u3002"&&o!=="\uFF1B"&&o!=="\uFF1A"&&o!=="\uFF01"&&o!=="\uFF1F"&&o!=="\u300C"&&o!=="\u300D"&&o!=="\u300E"&&o!=="\u300F"&&o!=="\uFF08"&&o!=="\uFF09"&&o!=="\u3010"&&o!=="\u3011"&&o!=='"'&&o!=='"'&&o!=="'"&&o!=="'"&&o!==" ")i=n+1;else break}if(i>0){let n=r.substring(0,i),o=e.substring(0,t),l=e.substring(t+1+i);return[n,o,l]}return null}extractTagsOnly(e){let t={},a=[],r="",i=e;for(;;){let n=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode===Ga.DataviewOnly||this.config.metadataParseMode===Ga.Both)){let o=this.extractDataviewMetadata(i);if(o){let[l,d,u]=o;t[l]=d,i=u,n=!0;continue}}if(!n&&this.config.parseTags){let o=this.extractContext(i);if(o){let[l,d,u]=o,[p,m,f]=this.extractTagsOnly(d);for(let h of f)a.push(h);for(let[h,k]of Object.entries(m))t[h]=k;t.context=l,r+=p,i=u,n=!0;continue}}if(!n&&this.config.parseTags){let o=this.extractTag(i);if(o){let[l,d,u]=o,p=l.startsWith("#")?l.substring(1):l,m=p.indexOf("/");if(m!==-1){let f=p.substring(0,m),h=p.substring(m+1),k=this.config.specialTagPrefixes[f];k&&this.config.metadataParseMode!==Ga.None?t[k]=h:a.push(l)}else a.push(l);r+=d,i=u,n=!0;continue}}if(!n){r+=i;break}}return[r.trim(),t,a]}findParentAndLevel(e){if(this.indentStack.length===0||e===0)return[void 0,0];for(let t=this.indentStack.length-1;t>=0;t--){let{taskId:a,indentLevel:r,actualSpaces:i}=this.indentStack[t];if(i<e)return[a,r+1]}return[void 0,0]}updateIndentStack(e,t,a){let r=0;for(;this.indentStack.length>0;){if(r++,r>this.config.maxStackOperations){console.warn("Warning: Maximum stack operations reached, clearing stack"),this.indentStack=[];break}if(this.indentStack[this.indentStack.length-1].actualSpaces>=a)this.indentStack.pop();else break}this.indentStack.length>=this.config.maxStackSize&&this.indentStack.splice(0,this.indentStack.length-this.config.maxStackSize+1),this.indentStack.push({taskId:e,indentLevel:t,actualSpaces:a})}getStatusFromMapping(e){for(let[t,a]of Object.entries(this.config.statusMapping))if(a===e)return t}extractHeading(e){let t=e.trim();if(!t.startsWith("#"))return null;let a=0;for(let r of t)if(r==="#")a++;else{if(r.match(/\s/))break;return null}if(a>0&&a<=6){let r=t.substring(a).trim();if(r)return[a,r]}return null}extractMultilineComment(e,t,a){let r=[],i=t,n=0;for(;i<e.length;){let o=e[i],l=o.trimStart();if(o.length-l.length>a&&!this.isTaskLine(l))r.push(l),n++;else break;i++}return r.length===0?[void 0,0]:[r.join(`
`),n]}extractLegacyPriority(e){if(!e.priority)return;let t={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1},a=parseInt(e.priority,10);return isNaN(a)?t[e.priority.toLowerCase()]:a}extractLegacyDate(e,t){let a=e[t];if(!a)return;let r=`${a}_${(this.customDateFormats||[]).join(",")}`,i=fs.dateCache.get(r);if(i!==void 0)return i;let n=Em(a,this.customDateFormats);if(fs.dateCache.size>=fs.MAX_CACHE_SIZE){let o=fs.dateCache.keys().next().value;o&&fs.dateCache.delete(o)}return fs.dateCache.set(r,n),n}convertToLegacyTask(e){let t=a=>{try{let r=JSON.parse(a);return Array.isArray(r)?r:[]}catch(r){return[a]}};return{id:e.id,content:e.content,filePath:e.filePath,line:e.line,completed:e.completed,status:e.rawStatus,originalMarkdown:e.originalMarkdown,children:e.children||[],metadata:{tags:e.tags||(e.metadata.tags?t(e.metadata.tags):[]),priority:e.priority||e.metadata.priority,startDate:e.startDate||e.metadata.startDate,dueDate:e.dueDate||e.metadata.dueDate,scheduledDate:e.scheduledDate||e.metadata.scheduledDate,completedDate:e.completedDate||e.metadata.completedDate,createdDate:e.createdDate||e.metadata.createdDate,cancelledDate:e.metadata.cancelledDate,recurrence:e.recurrence||e.metadata.recurrence,project:e.project||e.metadata.project,context:e.context||e.metadata.context,area:e.metadata.area,id:e.metadata.id,dependsOn:e.metadata.dependsOn?e.metadata.dependsOn.split(",").map(a=>a.trim()).filter(a=>a.length>0):void 0,onCompletion:e.metadata.onCompletion,children:e.children,heading:Array.isArray(e.heading)?e.heading:e.heading?[e.heading]:[],parent:e.parentId,tgProject:e.tgProject}}}loadProjectConfig(e){!this.config.projectConfig||(this.projectConfigCache={})}determineTgProject(e){var a,r,i;if(!((a=this.config.projectConfig)==null?void 0:a.enableEnhancedProject))return;let t=this.config.projectConfig;if(t.pathMappings&&t.pathMappings.length>0){for(let n of t.pathMappings)if(!!n.enabled&&e.includes(n.pathPattern))return{type:"path",name:n.projectName,source:n.pathPattern,readonly:!0}}if(((r=t.metadataConfig)==null?void 0:r.enabled)&&this.fileMetadata){let n=t.metadataConfig.metadataKey||"project",o=this.fileMetadata[n];if(o&&typeof o=="string")return{type:"metadata",name:o,source:n,readonly:!0}}if(((i=t.configFile)==null?void 0:i.enabled)&&this.projectConfigCache){let n=this.projectConfigCache.project;if(n&&typeof n=="string")return{type:"config",name:n,source:t.configFile.fileName,readonly:!0}}}static clearDateCache(){fs.dateCache.clear()}static getDateCacheStats(){return{size:fs.dateCache.size,maxSize:fs.MAX_CACHE_SIZE}}parseTagsForMetadata(e){let t={};for(let a of e){let r=a.startsWith("#")?a.substring(1):a,i=r.indexOf("/");if(i!==-1){let n=r.substring(0,i),o=r.substring(i+1),l=this.config.specialTagPrefixes[n];l&&this.config.metadataParseMode!==Ga.None&&(t[l]=o)}}return t}normalizeTag(e){if(typeof e!="string")return e;let t=e.trim();return!t||t.startsWith("#")?t:`#${t}`}mergeTags(e,t){let a=e.map(n=>this.normalizeTag(n)),r=t.map(n=>this.normalizeTag(n)),i=[...a];for(let n of r)i.includes(n)||i.push(n);return i}inheritFileMetadata(e,t=!1){var n,o,l;let a=d=>{if(d==null||typeof d=="number")return String(d);let u=String(d),p={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1},m=parseInt(u,10);if(!isNaN(m))return String(m);let f=p[u.toLowerCase()];return f!==void 0?String(f):u},r={...e};if(r.priority!==void 0&&(r.priority=a(r.priority)),!((n=this.config.fileMetadataInheritance)==null?void 0:n.enabled)||!((o=this.config.fileMetadataInheritance)==null?void 0:o.inheritFromFrontmatter)||t&&!((l=this.config.fileMetadataInheritance)==null?void 0:l.inheritFromFrontmatterForSubtasks))return r;let i=new Set(["id","content","status","rawStatus","completed","line","lineNumber","originalMarkdown","filePath","heading","headingLevel","parent","parentId","children","childrenIds","indentLevel","actualIndent","listMarker","tgProject","comment","metadata"]);if(this.fileMetadata)for(let[d,u]of Object.entries(this.fileMetadata))if(d==="tags"&&Array.isArray(u)){let p=this.parseTagsForMetadata(u);for(let[m,f]of Object.entries(p))!i.has(m)&&(r[m]===void 0||r[m]===null||r[m]==="")&&f!==void 0&&f!==null&&(m==="priority"?r[m]=a(f):r[m]=String(f));if(!i.has("tags")&&(r.tags===void 0||r.tags===null||r.tags==="")){let m=u.map(f=>this.normalizeTag(f));r.tags=JSON.stringify(m)}}else!i.has(d)&&(r[d]===void 0||r[d]===null||r[d]==="")&&u!==void 0&&u!==null&&(d==="priority"?r[d]=a(u):r[d]=String(u));if(this.projectConfigCache)for(let[d,u]of Object.entries(this.projectConfigCache))!i.has(d)&&(r[d]===void 0||r[d]===null||r[d]==="")&&!(this.fileMetadata&&this.fileMetadata[d]!==void 0)&&u!==void 0&&u!==null&&(d==="priority"?r[d]=a(u):r[d]=String(u));return r}},Ha=fs;Ha.dateCache=new Map,Ha.MAX_CACHE_SIZE=1e4;cv=class extends Ha{constructor(e){let t={parseMetadata:!0,parseTags:!0,parseComments:!0,parseHeadings:!0,maxIndentSize:100,maxParseIterations:100,maxMetadataIterations:50,maxTagLength:50,maxEmojiValueLength:50,maxStackOperations:1e3,maxStackSize:50,statusMapping:{TODO:" ",IN_PROGRESS:"/",DONE:"x",CANCELLED:"-"},emojiMapping:{"\u{1F4C5}":"dueDate","\u{1F6EB}":"startDate","\u23F3":"scheduledDate","\u2705":"completedDate","\u2795":"createdDate","\u274C":"cancelledDate","\u{1F194}":"id","\u26D4":"dependsOn","\u{1F3C1}":"onCompletion","\u{1F501}":"repeat","\u{1F53A}":"priority","\u23EB":"priority","\u{1F53C}":"priority","\u{1F53D}":"priority","\u23EC":"priority"},metadataParseMode:Ga.Both,specialTagPrefixes:{project:"project","@":"context"}};super({...t,...e})}}});var hi,Pm=b(()=>{ov();hi=(s,e)=>{var n,o,l,d,u,p,m,f,h,k,g,y;let t=((o=(n=e==null?void 0:e.settings)==null?void 0:n.projectTagPrefix)==null?void 0:o[s])||"project",a=((d=(l=e==null?void 0:e.settings)==null?void 0:l.contextTagPrefix)==null?void 0:d[s])||(s==="dataview"?"context":"@"),r=((p=(u=e==null?void 0:e.settings)==null?void 0:u.areaTagPrefix)==null?void 0:p[s])||"area";return{parseTags:!0,parseMetadata:!0,parseHeadings:!0,parseComments:!1,metadataParseMode:s==="dataview"?Ga.DataviewOnly:Ga.Both,statusMapping:{todo:" ",done:"x",cancelled:"-",forwarded:">",scheduled:"<",important:"!",question:"?",incomplete:"/",paused:"p",pro:"P",con:"C",quote:"Q",note:"N",bookmark:"b",information:"i",savings:"S",idea:"I",location:"l",phone:"k",win:"w",key:"K"},emojiMapping:{"\u{1F4C5}":"dueDate","\u{1F6EB}":"startDate","\u23F3":"scheduledDate","\u2705":"completedDate","\u274C":"cancelledDate","\u2795":"createdDate","\u{1F501}":"recurrence","\u{1F3C1}":"onCompletion","\u26D4":"dependsOn","\u{1F194}":"id","\u{1F53A}":"priority","\u23EB":"priority","\u{1F53C}":"priority","\u{1F53D}":"priority","\u23EC":"priority"},specialTagPrefixes:{[t]:"project",[r]:"area",[a]:"context"},maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:((f=(m=e==null?void 0:e.settings)==null?void 0:m.projectConfig)==null?void 0:f.enableEnhancedProject)?(h=e==null?void 0:e.settings)==null?void 0:h.projectConfig:void 0,fileMetadataInheritance:(k=e==null?void 0:e.settings)==null?void 0:k.fileMetadataInheritance,customDateFormats:((g=e==null?void 0:e.settings)==null?void 0:g.enableCustomDateFormats)?(y=e==null?void 0:e.settings)==null?void 0:y.customDateFormats:void 0}}});function rz(s,e){return(!Mm||uv!==s||dv!==e)&&(Mm=new Ha(hi(s,e)),uv=s,dv=e),Mm}function oj(){Mm=null,dv=null,uv=null}function Gn(s,e,t,a,r){let n=rz(a,r).parseLegacy(e,s);if(n.length>0){let o=n[0];return o.line=t,o}return null}function bt(s){if(!!s.metadata){if(s.metadata.project&&s.metadata.project.trim())return s.metadata.project;if(s.metadata.tgProject&&typeof s.metadata.tgProject=="object"&&s.metadata.tgProject.name&&s.metadata.tgProject.name.trim())return s.metadata.tgProject.name}}function ur(s){return!s.metadata||s.metadata.project&&s.metadata.project.trim()?!1:s.metadata.tgProject&&typeof s.metadata.tgProject=="object"&&s.metadata.tgProject.name&&s.metadata.tgProject.name.trim()&&s.metadata.tgProject.readonly||!1}function lj(s){return s.metadata?!!(s.metadata.project&&s.metadata.project.trim()||s.metadata.tgProject&&typeof s.metadata.tgProject=="object"&&s.metadata.tgProject.name&&s.metadata.tgProject.name.trim()):!1}var Mm,dv,uv,xa=b(()=>{Yd();$s();nv();Wo();Pm();Mm=null,dv=null,uv=null});var sz,pv,uj=b(()=>{sz={"Search settings...":"Search settings...","Clear search":"Clear search","No settings found":"No settings found","File Metadata Inheritance":"File Metadata Inheritance","Configure how tasks inherit metadata from file frontmatter":"Configure how tasks inherit metadata from file frontmatter","Enable file metadata inheritance":"Enable file metadata inheritance","Allow tasks to inherit metadata properties from their file's frontmatter":"Allow tasks to inherit metadata properties from their file's frontmatter","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.","Show progress bar":"Show progress bar","Toggle this to show the progress bar.":"Toggle this to show the progress bar.","Support hover to show progress info":"Support hover to show progress info","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Toggle this to allow this plugin to show progress info when hovering over the progress bar.","Add progress bar to non-task bullet":"Add progress bar to non-task bullet","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Toggle this to allow adding progress bars to regular list items (non-task bullets).","Add progress bar to Heading":"Add progress bar to Heading","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Toggle this to allow this plugin to add progress bar for Task below the headings.","Enable heading progress bars":"Enable heading progress bars","Add progress bars to headings to show progress of all tasks under that heading.":"Add progress bars to headings to show progress of all tasks under that heading.","Auto complete parent task":"Auto complete parent task","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.","Mark parent as 'In Progress' when partially complete":"Mark parent as 'In Progress' when partially complete","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Count sub children level of current Task":"Count sub children level of current Task","Toggle this to allow this plugin to count sub tasks.":"Toggle this to allow this plugin to count sub tasks.","Checkbox Status Settings":"Checkbox Status Settings","Select a predefined task status collection or customize your own":"Select a predefined task status collection or customize your own","Completed task markers":"Completed task markers",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Characters in square brackets that represent completed tasks. Example: "x|X"',"Planned task markers":"Planned task markers",'Characters in square brackets that represent planned tasks. Example: "?"':'Characters in square brackets that represent planned tasks. Example: "?"',"In progress task markers":"In progress task markers",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Characters in square brackets that represent tasks in progress. Example: ">|/"',"Abandoned task markers":"Abandoned task markers",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Characters in square brackets that represent abandoned tasks. Example: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Characters in square brackets that represent not started tasks. Default is space " "',"Count other statuses as":"Count other statuses as",'Select the status to count other statuses as. Default is "Not Started".':'Select the status to count other statuses as. Default is "Not Started".',"Task Counting Settings":"Task Counting Settings","Exclude specific task markers":"Exclude specific task markers",'Specify task markers to exclude from counting. Example: "?|/"':'Specify task markers to exclude from counting. Example: "?|/"',"Only count specific task markers":"Only count specific task markers","Toggle this to only count specific task markers":"Toggle this to only count specific task markers","Specific task markers to count":"Specific task markers to count",'Specify which task markers to count. Example: "x|X|>|/"':'Specify which task markers to count. Example: "x|X|>|/"',"Conditional Progress Bar Display":"Conditional Progress Bar Display","Hide progress bars based on conditions":"Hide progress bars based on conditions","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Toggle this to enable hiding progress bars based on tags, folders, or metadata.","Hide by tags":"Hide by tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"',"Hide by folders":"Hide by folders",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"',"Hide by metadata":"Hide by metadata",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"',"Checkbox Status Switcher":"Checkbox Status Switcher","Enable task status switcher":"Enable task status switcher","Enable/disable the ability to cycle through task states by clicking.":"Enable/disable the ability to cycle through task states by clicking.","Enable custom task marks":"Enable custom task marks","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your task status cycle when clicked.","Enable cycle complete status":"Enable cycle complete status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Enable/disable the ability to automatically cycle through task states when pressing a mark.","Always cycle new tasks":"Always cycle new tasks","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.","Checkbox Status Cycle and Marks":"Checkbox Status Cycle and Marks","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.","Add Status":"Add Status","Completed Task Mover":"Completed Task Mover","Enable completed task mover":"Enable completed task mover","Toggle this to enable commands for moving completed tasks to another file.":"Toggle this to enable commands for moving completed tasks to another file.","Task marker type":"Task marker type","Choose what type of marker to add to moved tasks":"Choose what type of marker to add to moved tasks","Version marker text":"Version marker text","Text to append to tasks when moved (e.g., 'version 1.0')":"Text to append to tasks when moved (e.g., 'version 1.0')","Date marker text":"Date marker text","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Text to append to tasks when moved (e.g., 'archived on 2023-12-31')","Custom marker text":"Custom marker text","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Treat abandoned tasks as completed","If enabled, abandoned tasks will be treated as completed.":"If enabled, abandoned tasks will be treated as completed.","Complete all moved tasks":"Complete all moved tasks","If enabled, all moved tasks will be marked as completed.":"If enabled, all moved tasks will be marked as completed.","With current file link":"With current file link","A link to the current file will be added to the parent task of the moved tasks.":"A link to the current file will be added to the parent task of the moved tasks.","Say Thank You":"Say Thank You",Donate:"Donate","If you like this plugin, consider donating to support continued development:":"If you like this plugin, consider donating to support continued development:","Add number to the Progress Bar":"Add number to the Progress Bar","Toggle this to allow this plugin to add tasks number to progress bar.":"Toggle this to allow this plugin to add tasks number to progress bar.","Show percentage":"Show percentage","Toggle this to allow this plugin to show percentage in the progress bar.":"Toggle this to allow this plugin to show percentage in the progress bar.","Customize progress text":"Customize progress text","Toggle this to customize text representation for different progress percentage ranges.":"Toggle this to customize text representation for different progress percentage ranges.","Progress Ranges":"Progress Ranges","Define progress ranges and their corresponding text representations.":"Define progress ranges and their corresponding text representations.","Add new range":"Add new range","Add a new progress percentage range with custom text":"Add a new progress percentage range with custom text","Min percentage (0-100)":"Min percentage (0-100)","Max percentage (0-100)":"Max percentage (0-100)","Text template (use {{PROGRESS}})":"Text template (use {{PROGRESS}})","Reset to defaults":"Reset to defaults","Reset progress ranges to default values":"Reset progress ranges to default values",Reset:"Reset","Priority Picker Settings":"Priority Picker Settings","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Toggle to enable priority picker dropdown for emoji and letter format priorities.","Enable priority picker":"Enable priority picker","Enable priority keyboard shortcuts":"Enable priority keyboard shortcuts","Toggle to enable keyboard shortcuts for setting task priorities.":"Toggle to enable keyboard shortcuts for setting task priorities.","Date picker":"Date picker","Enable date picker":"Enable date picker","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.","Date mark":"Date mark","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Emoji mark to identify dates. You can use multiple emoji separated by commas.","Quick capture":"Quick capture","Enable quick capture":"Enable quick capture","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.","Target file":"Target file","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Placeholder text":"Placeholder text","Placeholder text to display in the capture panel":"Placeholder text to display in the capture panel","Append to file":"Append to file","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Daily note format":"Daily note format","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD, supports nested formats like YYYY-MM/YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location","Task Filter":"Task Filter","Enable Task Filter":"Enable Task Filter","Toggle this to enable the task filter panel":"Toggle this to enable the task filter panel","Preset Filters":"Preset Filters","Create and manage preset filters for quick access to commonly used task filters.":"Create and manage preset filters for quick access to commonly used task filters.","Edit Filter: ":"Edit Filter: ","Filter name":"Filter name","Checkbox Status":"Checkbox Status","Include or exclude tasks based on their status":"Include or exclude tasks based on their status","Include Completed Tasks":"Include Completed Tasks","Include In Progress Tasks":"Include In Progress Tasks","Include Abandoned Tasks":"Include Abandoned Tasks","Include Not Started Tasks":"Include Not Started Tasks","Include Planned Tasks":"Include Planned Tasks","Related Tasks":"Related Tasks","Include parent, child, and sibling tasks in the filter":"Include parent, child, and sibling tasks in the filter","Include Parent Tasks":"Include Parent Tasks","Include Child Tasks":"Include Child Tasks","Include Sibling Tasks":"Include Sibling Tasks","Advanced Filter":"Advanced Filter","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'","Filter query":"Filter query","Filter out tasks":"Filter out tasks","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"If enabled, tasks that match the query will be hidden, otherwise they will be shown",Save:"Save",Cancel:"Cancel","Hide filter panel":"Hide filter panel","Show filter panel":"Show filter panel","Filter Tasks":"Filter Tasks","Preset filters":"Preset filters","Select a saved filter preset to apply":"Select a saved filter preset to apply","Select a preset...":"Select a preset...",Query:"Query","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"If true, tasks that match the query will be hidden, otherwise they will be shown",Completed:"Completed","In Progress":"In Progress",Abandoned:"Abandoned","Not Started":"Not Started",Planned:"Planned","Include Related Tasks":"Include Related Tasks","Parent Tasks":"Parent Tasks","Child Tasks":"Child Tasks","Sibling Tasks":"Sibling Tasks",Apply:"Apply","New Preset":"New Preset","Preset saved":"Preset saved","No changes to save":"No changes to save",Close:"Close","Capture to":"Capture to",Capture:"Capture","Capture thoughts, tasks, or ideas...":"Capture thoughts, tasks, or ideas...",Tomorrow:"Tomorrow","In 2 days":"In 2 days","In 3 days":"In 3 days","In 5 days":"In 5 days","In 1 week":"In 1 week","In 10 days":"In 10 days","In 2 weeks":"In 2 weeks","In 1 month":"In 1 month","In 2 months":"In 2 months","In 3 months":"In 3 months","In 6 months":"In 6 months","In 1 year":"In 1 year","In 5 years":"In 5 years","In 10 years":"In 10 years",Today:"Today","Quick Select":"Quick Select",Calendar:"Calendar","Clear Date":"Clear Date","Highest priority":"Highest priority","High priority":"High priority","Medium priority":"Medium priority","No priority":"No priority","Low priority":"Low priority","Lowest priority":"Lowest priority","Priority A":"Priority A","Priority B":"Priority B","Priority C":"Priority C","Task Priority":"Task Priority","Remove Priority":"Remove Priority","Cycle task status forward":"Cycle task status forward","Cycle task status backward":"Cycle task status backward","Remove priority":"Remove priority","Move task to another file":"Move task to another file","Move all completed subtasks to another file":"Move all completed subtasks to another file","Move direct completed subtasks to another file":"Move direct completed subtasks to another file","Move all subtasks to another file":"Move all subtasks to another file","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file","moved on":"moved on","Set priority":"Set priority","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Quick Capture":"Quick Capture","Toggle task filter panel":"Toggle task filter panel","Filter Mode":"Filter Mode","Choose whether to include or exclude tasks that match the filters":"Choose whether to include or exclude tasks that match the filters","Show matching tasks":"Show matching tasks","Hide matching tasks":"Hide matching tasks","Choose whether to show or hide tasks that match the filters":"Choose whether to show or hide tasks that match the filters","Create new file:":"Create new file:","Completed tasks moved to":"Completed tasks moved to","Failed to create file:":"Failed to create file:","Beginning of file":"Beginning of file","Failed to move tasks:":"Failed to move tasks:","No active file found":"No active file found","Task moved to":"Task moved to","Failed to move task:":"Failed to move task:","Nothing to capture":"Nothing to capture","Captured successfully":"Captured successfully","Failed to save:":"Failed to save:","Captured successfully to":"Captured successfully to",Total:"Total",Workflow:"Workflow","Add as workflow root":"Add as workflow root","Move to stage":"Move to stage","Complete stage":"Complete stage","Add child task with same stage":"Add child task with same stage","Could not open quick capture panel in the current editor":"Could not open quick capture panel in the current editor","Just started {{PROGRESS}}%":"Just started {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Making progress {{PROGRESS}}%","Half way {{PROGRESS}}%":"Half way {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Good progress {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Almost there {{PROGRESS}}%","Progress bar":"Progress bar","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.","Hide progress bars":"Hide progress bars","Parent task changer":"Parent task changer","Change the parent task of the current task.":"Change the parent task of the current task.","No preset filters created yet. Click 'Add New Preset' to create one.":"No preset filters created yet. Click 'Add New Preset' to create one.","Configure task workflows for project and process management":"Configure task workflows for project and process management","Enable workflow":"Enable workflow","Toggle to enable the workflow system for tasks":"Toggle to enable the workflow system for tasks","Auto-add timestamp":"Auto-add timestamp","Automatically add a timestamp to the task when it is created":"Automatically add a timestamp to the task when it is created","Timestamp format:":"Timestamp format:","Timestamp format":"Timestamp format","Remove timestamp when moving to next stage":"Remove timestamp when moving to next stage","Remove the timestamp from the current task when moving to the next stage":"Remove the timestamp from the current task when moving to the next stage","Calculate spent time":"Calculate spent time","Calculate and display the time spent on the task when moving to the next stage":"Calculate and display the time spent on the task when moving to the next stage","Format for spent time:":"Format for spent time:","Calculate spent time when move to next stage.":"Calculate spent time when move to next stage.","Spent time format":"Spent time format","Calculate full spent time":"Calculate full spent time","Calculate the full spent time from the start of the task to the last stage":"Calculate the full spent time from the start of the task to the last stage","Auto remove last stage marker":"Auto remove last stage marker","Automatically remove the last stage marker when a task is completed":"Automatically remove the last stage marker when a task is completed","Auto-add next task":"Auto-add next task","Automatically create a new task with the next stage when completing a task":"Automatically create a new task with the next stage when completing a task","Workflow definitions":"Workflow definitions","Configure workflow templates for different types of processes":"Configure workflow templates for different types of processes","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"No workflow definitions created yet. Click 'Add New Workflow' to create one.","Edit workflow":"Edit workflow","Remove workflow":"Remove workflow","Delete workflow":"Delete workflow",Delete:"Delete","Add New Workflow":"Add New Workflow","New Workflow":"New Workflow","Create New Workflow":"Create New Workflow","Workflow name":"Workflow name","A descriptive name for the workflow":"A descriptive name for the workflow","Workflow ID":"Workflow ID","A unique identifier for the workflow (used in tags)":"A unique identifier for the workflow (used in tags)",Description:"Description","Optional description for the workflow":"Optional description for the workflow","Describe the purpose and use of this workflow...":"Describe the purpose and use of this workflow...","Workflow Stages":"Workflow Stages","No stages defined yet. Add a stage to get started.":"No stages defined yet. Add a stage to get started.",Edit:"Edit","Move up":"Move up","Move down":"Move down","Sub-stage":"Sub-stage","Sub-stage name":"Sub-stage name","Sub-stage ID":"Sub-stage ID","Next: ":"Next: ","Add Sub-stage":"Add Sub-stage","New Sub-stage":"New Sub-stage","Edit Stage":"Edit Stage","Stage name":"Stage name","A descriptive name for this workflow stage":"A descriptive name for this workflow stage","Stage ID":"Stage ID","A unique identifier for the stage (used in tags)":"A unique identifier for the stage (used in tags)","Stage type":"Stage type","The type of this workflow stage":"The type of this workflow stage","Linear (sequential)":"Linear (sequential)","Cycle (repeatable)":"Cycle (repeatable)","Terminal (end stage)":"Terminal (end stage)","Next stage":"Next stage","The stage to proceed to after this one":"The stage to proceed to after this one","Sub-stages":"Sub-stages","Define cycle sub-stages (optional)":"Define cycle sub-stages (optional)","No sub-stages defined yet.":"No sub-stages defined yet.","Can proceed to":"Can proceed to","Additional stages that can follow this one (for right-click menu)":"Additional stages that can follow this one (for right-click menu)","No additional destination stages defined.":"No additional destination stages defined.",Remove:"Remove",Add:"Add","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Name and ID are required.":"Name and ID are required.","End of file":"End of file","Include in cycle":"Include in cycle",Preset:"Preset","Preset name":"Preset name","Edit Filter":"Edit Filter","Add New Preset":"Add New Preset","New Filter":"New Filter","Reset to Default Presets":"Reset to Default Presets","This will replace all your current presets with the default set. Are you sure?":"This will replace all your current presets with the default set. Are you sure?","Edit Workflow":"Edit Workflow",General:"General","Views & Index":"Views & Index","Progress Display":"Progress Display","Task Management":"Task Management",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Projects:"Projects",Rewards:"Rewards",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features",About:"About","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Count sub children of current Task":"Count sub children of current Task","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Toggle this to allow this plugin to count sub tasks when generating progress bar .","Configure task status settings":"Configure task status settings","Configure which task markers to count or exclude":"Configure which task markers to count or exclude","On Completion":"On Completion","Action to execute on completion":"Action to execute on completion","Configuration is valid":"Configuration is valid","Action Type":"Action Type","Select action type":"Select action type",Keep:"Keep",Complete:"Complete",Move:"Move",Archive:"Archive",Duplicate:"Duplicate","Target File":"Target File","Select target file":"Select target file","Target Section":"Target Section","Section name (optional)":"Section name (optional)","Create section if not exists":"Create section if not exists","Task IDs":"Task IDs","Task IDs to complete (comma-separated)":"Task IDs to complete (comma-separated)","Archive File":"Archive File","Archive Section":"Archive Section","Include metadata in duplicate":"Include metadata in duplicate","Invalid JSON format":"Invalid JSON format","Action type is required":"Action type is required","Target file is required for move action":"Target file is required for move action","Task IDs are required for complete action":"Task IDs are required for complete action","Archive file is required for archive action":"Archive file is required for archive action","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",File:"File",Folder:"Folder",Pattern:"Pattern","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Preset Templates":"Preset Templates","Quick setup for common filtering scenarios":"Quick setup for common filtering scenarios","Exclude System Folders":"Exclude System Folders","Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files":"Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files","Apply System Exclusions":"Apply System Exclusions","This will enable file filtering and add system folder exclusion rules":"This will enable file filtering and add system folder exclusion rules","System Folders Already Excluded":"System Folders Already Excluded","All system folder exclusion rules are already configured and active":"All system folder exclusion rules are already configured and active","File filtering enabled and {{count}} system exclusion rules added":"File filtering enabled and {{count}} system exclusion rules added","File filtering enabled with existing system exclusion rules":"File filtering enabled with existing system exclusion rules","{{count}} system exclusion rules added":"{{count}} system exclusion rules added","System exclusion rules updated":"System exclusion rules updated","System folder exclusions added":"System folder exclusions added","Active Rules":"Active Rules","Cache Size":"Cache Size",Status:"Status",Enabled:"Enabled",Disabled:"Disabled","Task status cycle and marks":"Task status cycle and marks","About Task Genius":"About Task Genius",Version:"Version",Documentation:"Documentation","View the documentation for this plugin":"View the documentation for this plugin","Open Documentation":"Open Documentation","Incomplete tasks":"Incomplete tasks","In progress tasks":"In progress tasks","Completed tasks":"Completed tasks","All tasks":"All tasks","After heading":"After heading","End of section":"End of section","Enable text mark in source mode":"Enable text mark in source mode","Make the text mark in source mode follow the task status cycle when clicked.":"Make the text mark in source mode follow the task status cycle when clicked.","Status name":"Status name","Progress display mode":"Progress display mode","Choose how to display task progress":"Choose how to display task progress","No progress indicators":"No progress indicators","Graphical progress bar":"Graphical progress bar","Text progress indicator":"Text progress indicator","Both graphical and text":"Both graphical and text","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Toggle this to allow this plugin to count sub tasks when generating progress bar.","Progress format":"Progress format","Choose how to display the task progress":"Choose how to display the task progress","Percentage (75%)":"Percentage (75%)","Bracketed percentage ([75%])":"Bracketed percentage ([75%])","Fraction (3/4)":"Fraction (3/4)","Bracketed fraction ([3/4])":"Bracketed fraction ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Custom format","Range-based text":"Range-based text","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Preview:","Available placeholders":"Available placeholders","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Expression examples","Examples of advanced formats using expressions":"Examples of advanced formats using expressions","Text Progress Bar":"Text Progress Bar","Emoji Progress Bar":"Emoji Progress Bar","ICS Integration":"ICS Integration","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Show in Calendar Views":"Show in Calendar Views","Display ICS events in calendar views":"Display ICS events in calendar views","Show in Task Lists":"Show in Task Lists","Display ICS events as read-only tasks in task lists":"Display ICS events as read-only tasks in task lists","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","Add ICS Source":"Add ICS Source","Add a new calendar source":"Add a new calendar source","Add Source":"Add Source","ICS Enabled":"Enabled","ICS Disabled":"Disabled","ICS Enable":"Enable","ICS Disable":"Disable","Sync Now":"Sync Now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ","Edit ICS Source":"Edit ICS Source","ICS Source Name":"Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)",Color:"Color","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","ICS Username":"Username","ICS Password":"Password","ICS Bearer Token":"Bearer Token","JSON object with custom headers":"JSON object with custom headers","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Color-coded Status":"Color-coded Status","Status with Icons":"Status with Icons",Preview:"Preview",Use:"Use","Save Filter Configuration":"Save Filter Configuration","Load Filter Configuration":"Load Filter Configuration","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","Filter Configuration Name":"Filter Configuration Name","Filter Configuration Description":"Filter Configuration Description","Enter a name for this filter configuration":"Enter a name for this filter configuration","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration saved successfully":"Filter configuration saved successfully","Filter configuration loaded successfully":"Filter configuration loaded successfully","Filter configuration deleted successfully":"Filter configuration deleted successfully","Failed to save filter configuration":"Failed to save filter configuration","Failed to load filter configuration":"Failed to load filter configuration","Failed to delete filter configuration":"Failed to delete filter configuration","Filter configuration name is required":"Filter configuration name is required","Toggle this to show percentage instead of completed/total count.":"Toggle this to show percentage instead of completed/total count.","Customize progress ranges":"Customize progress ranges","Toggle this to customize the text for different progress ranges.":"Toggle this to customize the text for different progress ranges.","Apply Theme":"Apply Theme","Back to main settings":"Back to main settings","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.","Target File:":"Target File:","Task Properties":"Task Properties","Start Date":"Start Date","Due Date":"Due Date","Scheduled Date":"Scheduled Date",Priority:"Priority",None:"None",Highest:"Highest",High:"High",Medium:"Medium",Low:"Low",Lowest:"Lowest",Project:"Project","Project name":"Project name",Context:"Context",Recurrence:"Recurrence","e.g., every day, every week":"e.g., every day, every week","Task Content":"Task Content","Task Details":"Task Details","Task File":"File","Edit in File":"Edit in File","Mark Incomplete":"Mark Incomplete","Mark Complete":"Mark Complete","Task Title":"Task Title",Tags:"Tags","e.g. every day, every 2 weeks":"e.g. every day, every 2 weeks",Forecast:"Forecast","0 actions, 0 projects":"0 actions, 0 projects","Toggle list/tree view":"Toggle list/tree view","Focusing on Work":"Focusing on Work",Unfocus:"Unfocus","Past Due":"Past Due",Future:"Future",actions:"actions",project:"project","Coming Up":"Coming Up",Task:"Task",Tasks:"Tasks","No upcoming tasks":"No upcoming tasks","No tasks scheduled":"No tasks scheduled","0 tasks":"0 tasks","Filter tasks...":"Filter tasks...","Toggle multi-select":"Toggle multi-select","No projects found":"No projects found","projects selected":"projects selected",tasks:"tasks","No tasks in the selected projects":"No tasks in the selected projects","Select a project to see related tasks":"Select a project to see related tasks","Configure Review for":"Configure Review for","Review Frequency":"Review Frequency","How often should this project be reviewed":"How often should this project be reviewed","Custom...":"Custom...","e.g., every 3 months":"e.g., every 3 months","Last Reviewed":"Last Reviewed","Please specify a review frequency":"Please specify a review frequency","Review schedule updated for":"Review schedule updated for","Review Projects":"Review Projects","Select a project to review its tasks.":"Select a project to review its tasks.","Configured for Review":"Configured for Review","Not Configured":"Not Configured","No projects available.":"No projects available.","Select a project to review.":"Select a project to review.","Show all tasks":"Show all tasks","Showing all tasks, including completed tasks from previous reviews.":"Showing all tasks, including completed tasks from previous reviews.","Show only new and in-progress tasks":"Show only new and in-progress tasks","No tasks found for this project.":"No tasks found for this project.","Review every":"Review every",never:"never","Last reviewed":"Last reviewed","Mark as Reviewed":"Mark as Reviewed","No review schedule configured for this project":"No review schedule configured for this project","Configure Review Schedule":"Configure Review Schedule","Project Review":"Project Review","Select a project from the left sidebar to review its tasks.":"Select a project from the left sidebar to review its tasks.",Inbox:"Inbox",Flagged:"Flagged",Review:"Review","tags selected":"tags selected","No tasks with the selected tags":"No tasks with the selected tags","Select a tag to see related tasks":"Select a tag to see related tasks","Open Task Genius view":"Open Task Genius view","Minimal Quick Capture":"Minimal Quick Capture","Refresh task index":"Refresh task index","Refreshing task index...":"Refreshing task index...","Task index refreshed":"Task index refreshed","Failed to refresh task index":"Failed to refresh task index","Force reindex all tasks":"Force reindex all tasks","Clearing task cache and rebuilding index...":"Clearing task cache and rebuilding index...","Task index completely rebuilt":"Task index completely rebuilt","Failed to force reindex tasks":"Failed to force reindex tasks","Task Genius View":"Task Genius View","Toggle Sidebar":"Toggle Sidebar",Details:"Details",View:"View","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.","Enable task genius view":"Enable task genius view","Select a task to view details":"Select a task to view details","Task Status":"Status","Comma separated":"Comma separated",Focus:"Focus","Loading more...":"Loading more...",projects:"projects","No tasks for this section.":"No tasks for this section.","No tasks found.":"No tasks found.","Switch status":"Switch status","Rebuild index":"Rebuild index",Rebuild:"Rebuild","0 tasks, 0 projects":"0 tasks, 0 projects","New Custom View":"New Custom View","Create Custom View":"Create Custom View","Edit View: ":"Edit View: ","View Name":"View Name","My Custom Task View":"My Custom Task View","Icon Name":"Icon Name","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Enter any Lucide icon name (e.g., list-checks, filter, inbox)","Filter Rules":"Filter Rules","Hide Completed and Abandoned Tasks":"Hide Completed and Abandoned Tasks","Hide completed and abandoned tasks in this view.":"Hide completed and abandoned tasks in this view.","Text Contains":"Text Contains","Filter tasks whose content includes this text (case-insensitive).":"Filter tasks whose content includes this text (case-insensitive).","Tags Include":"Tags Include","Task must include ALL these tags (comma-separated).":"Task must include ALL these tags (comma-separated).","Tags Exclude":"Tags Exclude","Task must NOT include ANY of these tags (comma-separated).":"Task must NOT include ANY of these tags (comma-separated).","Project Is":"Project Is","Task must belong to this project (exact match).":"Task must belong to this project (exact match).","Priority Is":"Priority Is","Task must have this priority (e.g., 1, 2, 3).":"Task must have this priority (e.g., 1, 2, 3).","Status Include":"Status Include","Task status must be one of these (comma-separated markers, e.g., /,>).":"Task status must be one of these (comma-separated markers, e.g., /,>).","Status Exclude":"Status Exclude","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"Task status must NOT be one of these (comma-separated markers, e.g., -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.","Due Date Is":"Due Date Is","Start Date Is":"Start Date Is","Scheduled Date Is":"Scheduled Date Is","Path Includes":"Path Includes","Task must contain this path (case-insensitive).":"Task must contain this path (case-insensitive).","Path Excludes":"Path Excludes","Task must NOT contain this path (case-insensitive).":"Task must NOT contain this path (case-insensitive).","Unnamed View":"Unnamed View","View configuration saved.":"View configuration saved.","Hide Details":"Hide Details","Show Details":"Show Details","View Config":"View Config","View Configuration":"View Configuration","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure the Task Genius sidebar views, visibility, order, and create custom views.","Manage Views":"Manage Views","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure sidebar views, order, visibility, and hide/show completed tasks per view.","Show in sidebar":"Show in sidebar","Edit View":"Edit View","Move Up":"Move Up","Move Down":"Move Down","Delete View":"Delete View","Add Custom View":"Add Custom View","Error: View ID already exists.":"Error: View ID already exists.",Events:"Events",Plan:"Plan",Year:"Year",Month:"Month",Week:"Week",Day:"Day",Agenda:"Agenda","Back to categories":"Back to categories","No matching options found":"No matching options found","No matching filters found":"No matching filters found",Tag:"Tag","File Path":"File Path","Add filter":"Add filter","Clear all":"Clear all","Add Card":"Add Card","First Day of Week":"First Day of Week","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"Show checkbox","Show a checkbox for each task in the kanban view.":"Show a checkbox for each task in the kanban view.","Locale Default":"Locale Default","Use custom goal for progress bar":"Use custom goal for progress bar","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.","Prefer metadata format of task":"Prefer metadata format of task","You can choose dataview format or tasks format, that will influence both index and save format.":"You can choose dataview format or tasks format, that will influence both index and save format.","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.","Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.":"Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Format Examples:":"Format Examples:","always uses @ prefix":"always uses @ prefix","Open in new tab":"Open in new tab","Open settings":"Open settings","Hide in sidebar":"Hide in sidebar","No items found":"No items found","High Priority":"High Priority","Medium Priority":"Medium Priority","Low Priority":"Low Priority","No tasks in the selected items":"No tasks in the selected items","View Type":"View Type","Select the type of view to create":"Select the type of view to create","Standard View":"Standard View","Two Column View":"Two Column View",Items:"Items","selected items":"selected items","No items selected":"No items selected","Two Column View Settings":"Two Column View Settings","Group by Task Property":"Group by Task Property","Select which task property to use for left column grouping":"Select which task property to use for left column grouping",Priorities:"Priorities",Contexts:"Contexts","Due Dates":"Due Dates","Scheduled Dates":"Scheduled Dates","Start Dates":"Start Dates",Files:"Files","Left Column Title":"Left Column Title","Title for the left column (items list)":"Title for the left column (items list)","Right Column Title":"Right Column Title","Default title for the right column (tasks list)":"Default title for the right column (tasks list)","Multi-select Text":"Multi-select Text","Text to show when multiple items are selected":"Text to show when multiple items are selected","Empty State Text":"Empty State Text","Text to show when no items are selected":"Text to show when no items are selected","Filter Blanks":"Filter Blanks","Filter out blank tasks in this view.":"Filter out blank tasks in this view.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"Task must contain this path (case-insensitive). Separate multiple paths with commas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.","You have unsaved changes. Save before closing?":"You have unsaved changes. Save before closing?",Rotate:"Rotate","Are you sure you want to force reindex all tasks?":"Are you sure you want to force reindex all tasks?","Enable progress bar in reading mode":"Enable progress bar in reading mode","Toggle this to allow this plugin to show progress bars in reading mode.":"Toggle this to allow this plugin to show progress bars in reading mode.",Range:"Range","as a placeholder for the percentage value":"as a placeholder for the percentage value","Template text with":"Template text with",placeholder:"placeholder",Reindex:"Reindex","From now":"From now","Complete workflow":"Complete workflow","Quick Workflow Creation":"Quick Workflow Creation","Create quick workflow":"Create quick workflow","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","Project Management":"Project Management","Standard project management workflow":"Standard project management workflow","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow","Workflow created successfully":"Workflow created successfully","Convert task to workflow template":"Convert task to workflow template","Convert to workflow template":"Convert to workflow template","Convert Task to Workflow":"Convert Task to Workflow","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No task structure found at cursor position":"No task structure found at cursor position","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern","Workflow created from task structure":"Workflow created from task structure","Start workflow here":"Start workflow here","Start Workflow Here":"Start Workflow Here","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Start workflow":"Start workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Convert to workflow root":"Convert to workflow root","Convert Current Task to Workflow Root":"Convert Current Task to Workflow Root","Convert to Workflow Root":"Convert to Workflow Root","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","Duplicate workflow":"Duplicate workflow","Duplicate Workflow":"Duplicate Workflow","No workflows to duplicate":"No workflows to duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow quick actions":"Workflow quick actions","Create Quick Workflow":"Create Quick Workflow","Current: ":"Current: ",completed:"completed",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Move to":"Move to",Settings:"Settings","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Status Incomplete":"Incomplete","Status Complete":"Complete","Status Cancelled":"Cancelled","Status In Progress":"In Progress","Status Question":"Question","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable rewards":"Enable rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence levels":"Occurrence levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level name (e.g., common)":"Level name (e.g., common)","Chance (%)":"Chance (%)","Delete level":"Delete level","Add occurrence level":"Add occurrence level","New level":"New level","Reward items":"Reward items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward name/text":"Reward name/text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","No reward items defined yet.":"No reward items defined yet.","Add reward item":"Add reward item","New reward":"New reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Copy view: ":"Copy view: ","Copy View":"Copy View","Copy view":"Copy view","Copy of ":"Copy of ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","View copied successfully: ":"View copied successfully: ","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Level Name (e.g., common)":"Level Name (e.g., common)","Delete Level":"Delete Level","New Level":"New Level","Reward Name/Text":"Reward Name/Text","New Reward":"New Reward",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","Root condition":"Root condition","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task",Load:"Load","filter group":"filter group",filter:"filter",Match:"Match",All:"All","Add filter group":"Add filter group","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Line Number":"Line Number","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","You can override the auto-assigned project":"You can override the auto-assigned project","Complete substage and move to":"Complete substage and move to","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file",Timeline:"Timeline","Timeline Sidebar":"Timeline Sidebar","Open Timeline Sidebar":"Open Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline":"Open Timeline","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Timeline sidebar opened":"Timeline sidebar opened","Go to today":"Go to today","Focus on today":"Focus on today","No events to display":"No events to display","Go to task":"Go to task","What's on your mind?":"What's on your mind?",to:"to","To Do":"To Do",Done:"Done",Coding:"Coding","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Remove stage":"Remove stage",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","Add New Calendar Source":"Add New Calendar Source",URL:"URL",Refresh:"Refresh",min:"min","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured","Rule Enabled":"Enabled","Rule Disabled":"Disabled","Rule Target":"Target","Rule Pattern":"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name",Append:"Append",Prepend:"Prepend",Replace:"Replace","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.",Area:"Area","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","What do you want to do today?":"What do you want to do today?","More options":"More options","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Continue:"Continue","Convert current task to workflow root":"Convert current task to workflow root",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Loading more tasks...":"Loading more tasks...","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Use Priority Levels":"Use Priority Levels","Use Tags":"Use Tags","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics",Target:"Target","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing",Date:"Date","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Fixed location":"Fixed location","Enter your task...":"Enter your task...","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings":"Search settings","Search results":"Search results","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},pv=sz});var iz,pj,mj=b(()=>{iz={"File Metadata Inheritance":"File Metadata Inheritance","Configure how tasks inherit metadata from file frontmatter":"Configure how tasks inherit metadata from file frontmatter","Enable file metadata inheritance":"Enable file metadata inheritance","Allow tasks to inherit metadata properties from their file's frontmatter":"Allow tasks to inherit metadata properties from their file's frontmatter","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.","Show progress bar":"Show progress bar","Toggle this to show the progress bar.":"Toggle this to show the progress bar.","Support hover to show progress info":"Support hover to show progress info","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Toggle this to allow this plugin to show progress info when hovering over the progress bar.","Add progress bar to non-task bullet":"Add progress bar to non-task bullet","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Toggle this to allow adding progress bars to regular list items (non-task bullets).","Add progress bar to Heading":"Add progress bar to Heading","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Toggle this to allow this plugin to add progress bar for Task below the headings.","Enable heading progress bars":"Enable heading progress bars","Add progress bars to headings to show progress of all tasks under that heading.":"Add progress bars to headings to show progress of all tasks under that heading.","Auto complete parent task":"Auto complete parent task","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.","Mark parent as 'In Progress' when partially complete":"Mark parent as 'In Progress' when partially complete","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Count sub children level of current Task":"Count sub children level of current Task","Toggle this to allow this plugin to count sub tasks.":"Toggle this to allow this plugin to count sub tasks.","Checkbox Status Settings":"Checkbox Status Settings","Select a predefined task status collection or customize your own":"Select a predefined task status collection or customize your own","Completed task markers":"Completed task markers",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Characters in square brackets that represent completed tasks. Example: "x|X"',"Planned task markers":"Planned task markers",'Characters in square brackets that represent planned tasks. Example: "?"':'Characters in square brackets that represent planned tasks. Example: "?"',"In progress task markers":"In progress task markers",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Characters in square brackets that represent tasks in progress. Example: ">|/"',"Abandoned task markers":"Abandoned task markers",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Characters in square brackets that represent abandoned tasks. Example: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Characters in square brackets that represent not started tasks. Default is space " "',"Count other statuses as":"Count other statuses as",'Select the status to count other statuses as. Default is "Not Started".':'Select the status to count other statuses as. Default is "Not Started".',"Task Counting Settings":"Task Counting Settings","Exclude specific task markers":"Exclude specific task markers",'Specify task markers to exclude from counting. Example: "?|/"':'Specify task markers to exclude from counting. Example: "?|/"',"Only count specific task markers":"Only count specific task markers","Toggle this to only count specific task markers":"Toggle this to only count specific task markers","Specific task markers to count":"Specific task markers to count",'Specify which task markers to count. Example: "x|X|>|/"':'Specify which task markers to count. Example: "x|X|>|/"',"Conditional Progress Bar Display":"Conditional Progress Bar Display","Hide progress bars based on conditions":"Hide progress bars based on conditions","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Toggle this to enable hiding progress bars based on tags, folders, or metadata.","Hide by tags":"Hide by tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"',"Hide by folders":"Hide by folders",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"',"Hide by metadata":"Hide by metadata",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"',"Checkbox Status Switcher":"Checkbox Status Switcher","Enable task status switcher":"Enable task status switcher","Enable/disable the ability to cycle through task states by clicking.":"Enable/disable the ability to cycle through task states by clicking.","Enable custom task marks":"Enable custom task marks","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your task status cycle when clicked.","Enable cycle complete status":"Enable cycle complete status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Enable/disable the ability to automatically cycle through task states when pressing a mark.","Always cycle new tasks":"Always cycle new tasks","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.","Checkbox Status Cycle and Marks":"Checkbox Status Cycle and Marks","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.","Add Status":"Add Status","Completed Task Mover":"Completed Task Mover","Enable completed task mover":"Enable completed task mover","Toggle this to enable commands for moving completed tasks to another file.":"Toggle this to enable commands for moving completed tasks to another file.","Task marker type":"Task marker type","Choose what type of marker to add to moved tasks":"Choose what type of marker to add to moved tasks","Version marker text":"Version marker text","Text to append to tasks when moved (e.g., 'version 1.0')":"Text to append to tasks when moved (e.g., 'version 1.0')","Date marker text":"Date marker text","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Text to append to tasks when moved (e.g., 'archived on 2023-12-31')","Custom marker text":"Custom marker text","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Treat abandoned tasks as completed","If enabled, abandoned tasks will be treated as completed.":"If enabled, abandoned tasks will be treated as completed.","Complete all moved tasks":"Complete all moved tasks","If enabled, all moved tasks will be marked as completed.":"If enabled, all moved tasks will be marked as completed.","With current file link":"With current file link","A link to the current file will be added to the parent task of the moved tasks.":"A link to the current file will be added to the parent task of the moved tasks.","Say Thank You":"Say Thank You",Donate:"Donate","If you like this plugin, consider donating to support continued development:":"If you like this plugin, consider donating to support continued development:","Add number to the Progress Bar":"Add number to the Progress Bar","Toggle this to allow this plugin to add tasks number to progress bar.":"Toggle this to allow this plugin to add tasks number to progress bar.","Show percentage":"Show percentage","Toggle this to allow this plugin to show percentage in the progress bar.":"Toggle this to allow this plugin to show percentage in the progress bar.","Customize progress text":"Customize progress text","Toggle this to customize text representation for different progress percentage ranges.":"Toggle this to customize text representation for different progress percentage ranges.","Progress Ranges":"Progress Ranges","Define progress ranges and their corresponding text representations.":"Define progress ranges and their corresponding text representations.","Add new range":"Add new range","Add a new progress percentage range with custom text":"Add a new progress percentage range with custom text","Min percentage (0-100)":"Min percentage (0-100)","Max percentage (0-100)":"Max percentage (0-100)","Text template (use {{PROGRESS}})":"Text template (use {{PROGRESS}})","Reset to defaults":"Reset to defaults","Reset progress ranges to default values":"Reset progress ranges to default values",Reset:"Reset","Priority Picker Settings":"Priority Picker Settings","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Toggle to enable priority picker dropdown for emoji and letter format priorities.","Enable priority picker":"Enable priority picker","Enable priority keyboard shortcuts":"Enable priority keyboard shortcuts","Toggle to enable keyboard shortcuts for setting task priorities.":"Toggle to enable keyboard shortcuts for setting task priorities.","Date picker":"Date picker","Enable date picker":"Enable date picker","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.","Date mark":"Date mark","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Emoji mark to identify dates. You can use multiple emoji separated by commas.","Quick capture":"Quick capture","Enable quick capture":"Enable quick capture","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.","Target file":"Target file","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'","Placeholder text":"Placeholder text","Placeholder text to display in the capture panel":"Placeholder text to display in the capture panel","Append to file":"Append to file","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.","Task Filter":"Task Filter","Enable Task Filter":"Enable Task Filter","Toggle this to enable the task filter panel":"Toggle this to enable the task filter panel","Preset Filters":"Preset Filters","Create and manage preset filters for quick access to commonly used task filters.":"Create and manage preset filters for quick access to commonly used task filters.","Edit Filter: ":"Edit Filter: ","Filter name":"Filter name","Checkbox Status":"Checkbox Status","Include or exclude tasks based on their status":"Include or exclude tasks based on their status","Include Completed Tasks":"Include Completed Tasks","Include In Progress Tasks":"Include In Progress Tasks","Include Abandoned Tasks":"Include Abandoned Tasks","Include Not Started Tasks":"Include Not Started Tasks","Include Planned Tasks":"Include Planned Tasks","Related Tasks":"Related Tasks","Include parent, child, and sibling tasks in the filter":"Include parent, child, and sibling tasks in the filter","Include Parent Tasks":"Include Parent Tasks","Include Child Tasks":"Include Child Tasks","Include Sibling Tasks":"Include Sibling Tasks","Advanced Filter":"Advanced Filter","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'","Filter query":"Filter query","Filter out tasks":"Filter out tasks","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"If enabled, tasks that match the query will be hidden, otherwise they will be shown",Save:"Save",Cancel:"Cancel","Hide filter panel":"Hide filter panel","Show filter panel":"Show filter panel","Filter Tasks":"Filter Tasks","Preset filters":"Preset filters","Select a saved filter preset to apply":"Select a saved filter preset to apply","Select a preset...":"Select a preset...",Query:"Query","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"If true, tasks that match the query will be hidden, otherwise they will be shown",Completed:"Completed","In Progress":"In Progress",Abandoned:"Abandoned","Not Started":"Not Started",Planned:"Planned","Include Related Tasks":"Include Related Tasks","Parent Tasks":"Parent Tasks","Child Tasks":"Child Tasks","Sibling Tasks":"Sibling Tasks",Apply:"Apply","New Preset":"New Preset","Preset saved":"Preset saved","No changes to save":"No changes to save",Close:"Close","Capture to":"Capture to",Capture:"Capture","Capture thoughts, tasks, or ideas...":"Capture thoughts, tasks, or ideas...",Tomorrow:"Tomorrow","In 2 days":"In 2 days","In 3 days":"In 3 days","In 5 days":"In 5 days","In 1 week":"In 1 week","In 10 days":"In 10 days","In 2 weeks":"In 2 weeks","In 1 month":"In 1 month","In 2 months":"In 2 months","In 3 months":"In 3 months","In 6 months":"In 6 months","In 1 year":"In 1 year","In 5 years":"In 5 years","In 10 years":"In 10 years","Highest priority":"Highest priority","High priority":"High priority","Medium priority":"Medium priority","No priority":"No priority","Low priority":"Low priority","Lowest priority":"Lowest priority","Priority A":"Priority A","Priority B":"Priority B","Priority C":"Priority C","Task Priority":"Task Priority","Remove Priority":"Remove Priority","Cycle task status forward":"Cycle task status forward","Cycle task status backward":"Cycle task status backward","Remove priority":"Remove priority","Move task to another file":"Move task to another file","Move all completed subtasks to another file":"Move all completed subtasks to another file","Move direct completed subtasks to another file":"Move direct completed subtasks to another file","Move all subtasks to another file":"Move all subtasks to another file","Set priority":"Set priority","Toggle quick capture panel":"Toggle quick capture panel","Quick capture (Global)":"Quick capture (Global)","Toggle task filter panel":"Toggle task filter panel","Filter Mode":"Filter Mode","Choose whether to include or exclude tasks that match the filters":"Choose whether to include or exclude tasks that match the filters","Show matching tasks":"Show matching tasks","Hide matching tasks":"Hide matching tasks","Choose whether to show or hide tasks that match the filters":"Choose whether to show or hide tasks that match the filters","Create new file:":"Create new file:","Completed tasks moved to":"Completed tasks moved to","Failed to create file:":"Failed to create file:","Beginning of file":"Beginning of file","Failed to move tasks:":"Failed to move tasks:","No active file found":"No active file found","Task moved to":"Task moved to","Failed to move task:":"Failed to move task:","Nothing to capture":"Nothing to capture","Captured successfully":"Captured successfully","Failed to save:":"Failed to save:","Captured successfully to":"Captured successfully to",Total:"Total",Workflow:"Workflow","Add as workflow root":"Add as workflow root","Move to stage":"Move to stage","Complete stage":"Complete stage","Add child task with same stage":"Add child task with same stage","Could not open quick capture panel in the current editor":"Could not open quick capture panel in the current editor","Just started {{PROGRESS}}%":"Just started {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Making progress {{PROGRESS}}%","Half way {{PROGRESS}}%":"Half way {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Good progress {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Almost there {{PROGRESS}}%","Progress bar":"Progress bar","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.","Hide progress bars":"Hide progress bars","Parent task changer":"Parent task changer","Change the parent task of the current task.":"Change the parent task of the current task.","No preset filters created yet. Click 'Add New Preset' to create one.":"No preset filters created yet. Click 'Add New Preset' to create one.","Configure task workflows for project and process management":"Configure task workflows for project and process management","Enable workflow":"Enable workflow","Toggle to enable the workflow system for tasks":"Toggle to enable the workflow system for tasks","Auto-add timestamp":"Auto-add timestamp","Automatically add a timestamp to the task when it is created":"Automatically add a timestamp to the task when it is created","Timestamp format:":"Timestamp format:","Timestamp format":"Timestamp format","Remove timestamp when moving to next stage":"Remove timestamp when moving to next stage","Remove the timestamp from the current task when moving to the next stage":"Remove the timestamp from the current task when moving to the next stage","Calculate spent time":"Calculate spent time","Calculate and display the time spent on the task when moving to the next stage":"Calculate and display the time spent on the task when moving to the next stage","Format for spent time:":"Format for spent time:","Calculate spent time when move to next stage.":"Calculate spent time when move to next stage.","Spent time format":"Spent time format","Calculate full spent time":"Calculate full spent time","Calculate the full spent time from the start of the task to the last stage":"Calculate the full spent time from the start of the task to the last stage","Auto remove last stage marker":"Auto remove last stage marker","Automatically remove the last stage marker when a task is completed":"Automatically remove the last stage marker when a task is completed","Auto-add next task":"Auto-add next task","Automatically create a new task with the next stage when completing a task":"Automatically create a new task with the next stage when completing a task","Workflow definitions":"Workflow definitions","Configure workflow templates for different types of processes":"Configure workflow templates for different types of processes","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"No workflow definitions created yet. Click 'Add New Workflow' to create one.","Edit workflow":"Edit workflow","Remove workflow":"Remove workflow","Delete workflow":"Delete workflow",Delete:"Delete","Add New Workflow":"Add New Workflow","New Workflow":"New Workflow","Create New Workflow":"Create New Workflow","Workflow name":"Workflow name","A descriptive name for the workflow":"A descriptive name for the workflow","Workflow ID":"Workflow ID","A unique identifier for the workflow (used in tags)":"A unique identifier for the workflow (used in tags)",Description:"Description","Optional description for the workflow":"Optional description for the workflow","Describe the purpose and use of this workflow...":"Describe the purpose and use of this workflow...","Workflow Stages":"Workflow Stages","No stages defined yet. Add a stage to get started.":"No stages defined yet. Add a stage to get started.",Edit:"Edit","Move up":"Move up","Move down":"Move down","Sub-stage":"Sub-stage","Sub-stage name":"Sub-stage name","Sub-stage ID":"Sub-stage ID","Next: ":"Next: ","Add Sub-stage":"Add Sub-stage","New Sub-stage":"New Sub-stage","Edit Stage":"Edit Stage","Stage name":"Stage name","A descriptive name for this workflow stage":"A descriptive name for this workflow stage","Stage ID":"Stage ID","A unique identifier for the stage (used in tags)":"A unique identifier for the stage (used in tags)","Stage type":"Stage type","The type of this workflow stage":"The type of this workflow stage","Linear (sequential)":"Linear (sequential)","Cycle (repeatable)":"Cycle (repeatable)","Terminal (end stage)":"Terminal (end stage)","Next stage":"Next stage","The stage to proceed to after this one":"The stage to proceed to after this one","Sub-stages":"Sub-stages","Define cycle sub-stages (optional)":"Define cycle sub-stages (optional)","No sub-stages defined yet.":"No sub-stages defined yet.","Can proceed to":"Can proceed to","Additional stages that can follow this one (for right-click menu)":"Additional stages that can follow this one (for right-click menu)","No additional destination stages defined.":"No additional destination stages defined.",Remove:"Remove",Add:"Add","Name and ID are required.":"Name and ID are required.","End of file":"End of file","Include in cycle":"Include in cycle",Preset:"Preset","Preset name":"Preset name","Edit Filter":"Edit Filter","Add New Preset":"Add New Preset","New Filter":"New Filter","Reset to Default Presets":"Reset to Default Presets","This will replace all your current presets with the default set. Are you sure?":"This will replace all your current presets with the default set. Are you sure?","Edit Workflow":"Edit Workflow",General:"General","Progress Bar":"Progress Bar","Task Mover":"Task Mover","Quick Capture":"Quick Capture","Date & Priority":"Date & Priority",About:"About","Count sub children of current Task":"Count sub children of current Task","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Toggle this to allow this plugin to count sub tasks when generating progress bar .","Configure task status settings":"Configure task status settings","Configure which task markers to count or exclude":"Configure which task markers to count or exclude","Task status cycle and marks":"Task status cycle and marks","About Task Genius":"About Task Genius",Version:"Version",Documentation:"Documentation","View the documentation for this plugin":"View the documentation for this plugin","Open Documentation":"Open Documentation","Incomplete tasks":"Incomplete tasks","In progress tasks":"In progress tasks","Completed tasks":"Completed tasks","All tasks":"All tasks","After heading":"After heading","End of section":"End of section","Enable text mark in source mode":"Enable text mark in source mode","Make the text mark in source mode follow the task status cycle when clicked.":"Make the text mark in source mode follow the task status cycle when clicked.","Status name":"Status name","Progress display mode":"Progress display mode","Choose how to display task progress":"Choose how to display task progress","No progress indicators":"No progress indicators","Graphical progress bar":"Graphical progress bar","Text progress indicator":"Text progress indicator","Both graphical and text":"Both graphical and text","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Toggle this to allow this plugin to count sub tasks when generating progress bar.","Progress format":"Progress format","Choose how to display the task progress":"Choose how to display the task progress","Percentage (75%)":"Percentage (75%)","Bracketed percentage ([75%])":"Bracketed percentage ([75%])","Fraction (3/4)":"Fraction (3/4)","Bracketed fraction ([3/4])":"Bracketed fraction ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Custom format","Range-based text":"Range-based text","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Preview:","Available placeholders":"Available placeholders","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Expression examples","Examples of advanced formats using expressions":"Examples of advanced formats using expressions","Text Progress Bar":"Text Progress Bar","Emoji Progress Bar":"Emoji Progress Bar","Color-coded Status":"Color-coded Status","Status with Icons":"Status with Icons",Preview:"Preview",Use:"Use","Toggle this to show percentage instead of completed/total count.":"Toggle this to show percentage instead of completed/total count.","Customize progress ranges":"Customize progress ranges","Toggle this to customize the text for different progress ranges.":"Toggle this to customize the text for different progress ranges.","Apply Theme":"Apply Theme","Back to main settings":"Back to main settings","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.","Target File:":"Target File:","Task Properties":"Task Properties","Start Date":"Start Date","Due Date":"Due Date","Scheduled Date":"Scheduled Date",Priority:"Priority",None:"None",Highest:"Highest",High:"High",Medium:"Medium",Low:"Low",Lowest:"Lowest",Project:"Project","Project name":"Project name",Context:"Context",Recurrence:"Recurrence","e.g., every day, every week":"e.g., every day, every week","Task Content":"Task Content","Task Details":"Task Details",File:"File","Edit in File":"Edit in File","Mark Incomplete":"Mark Incomplete","Mark Complete":"Mark Complete","Task Title":"Task Title",Tags:"Tags","e.g. every day, every 2 weeks":"e.g. every day, every 2 weeks",Forecast:"Forecast","0 actions, 0 projects":"0 actions, 0 projects","Toggle list/tree view":"Toggle list/tree view","Focusing on Work":"Focusing on Work",Unfocus:"Unfocus","Past Due":"Past Due",Today:"Today",Future:"Future",actions:"actions",project:"project","Coming Up":"Coming Up",Task:"Task",Tasks:"Tasks","No upcoming tasks":"No upcoming tasks","No tasks scheduled":"No tasks scheduled","0 tasks":"0 tasks","Filter tasks...":"Filter tasks...",Projects:"Projects","Toggle multi-select":"Toggle multi-select","No projects found":"No projects found","projects selected":"projects selected",tasks:"tasks","No tasks in the selected projects":"No tasks in the selected projects","Select a project to see related tasks":"Select a project to see related tasks","Configure Review for":"Configure Review for","Review Frequency":"Review Frequency","How often should this project be reviewed":"How often should this project be reviewed","Custom...":"Custom...","e.g., every 3 months":"e.g., every 3 months","Last Reviewed":"Last Reviewed","Please specify a review frequency":"Please specify a review frequency","Review schedule updated for":"Review schedule updated for","Review Projects":"Review Projects","Select a project to review its tasks.":"Select a project to review its tasks.","Configured for Review":"Configured for Review","Not Configured":"Not Configured","No projects available.":"No projects available.","Select a project to review.":"Select a project to review.","Show all tasks":"Show all tasks","Showing all tasks, including completed tasks from previous reviews.":"Showing all tasks, including completed tasks from previous reviews.","Show only new and in-progress tasks":"Show only new and in-progress tasks","No tasks found for this project.":"No tasks found for this project.","Review every":"Review every",never:"never","Last reviewed":"Last reviewed","Mark as Reviewed":"Mark as Reviewed","No review schedule configured for this project":"No review schedule configured for this project","Configure Review Schedule":"Configure Review Schedule","Project Review":"Project Review","Select a project from the left sidebar to review its tasks.":"Select a project from the left sidebar to review its tasks.",Inbox:"Inbox",Flagged:"Flagged",Review:"Review","tags selected":"tags selected","No tasks with the selected tags":"No tasks with the selected tags","Select a tag to see related tasks":"Select a tag to see related tasks","Open Task Genius view":"Open Task Genius view","Task capture with metadata":"Task capture with metadata","Refresh task index":"Refresh task index","Refreshing task index...":"Refreshing task index...","Task index refreshed":"Task index refreshed","Failed to refresh task index":"Failed to refresh task index","Force reindex all tasks":"Force reindex all tasks","Clearing task cache and rebuilding index...":"Clearing task cache and rebuilding index...","Task index completely rebuilt":"Task index completely rebuilt","Failed to force reindex tasks":"Failed to force reindex tasks","Task Genius View":"Task Genius View","Toggle Sidebar":"Toggle Sidebar",Details:"Details",View:"View","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.","Enable task genius view":"Enable task genius view","Select a task to view details":"Select a task to view details",Status:"Status","Comma separated":"Comma separated",Focus:"Focus","Loading more...":"Loading more...",projects:"projects","No tasks for this section.":"No tasks for this section.","No tasks found.":"No tasks found.",Complete:"Complete","Switch status":"Switch status","Rebuild index":"Rebuild index",Rebuild:"Rebuild","0 tasks, 0 projects":"0 tasks, 0 projects","New Custom View":"New Custom View","Create Custom View":"Create Custom View","Edit View: ":"Edit View: ","View Name":"View Name","My Custom Task View":"My Custom Task View","Icon Name":"Icon Name","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Enter any Lucide icon name (e.g., list-checks, filter, inbox)","Filter Rules":"Filter Rules","Hide Completed and Abandoned Tasks":"Hide Completed and Abandoned Tasks","Hide completed and abandoned tasks in this view.":"Hide completed and abandoned tasks in this view.","Text Contains":"Text Contains","Filter tasks whose content includes this text (case-insensitive).":"Filter tasks whose content includes this text (case-insensitive).","Tags Include":"Tags Include","Task must include ALL these tags (comma-separated).":"Task must include ALL these tags (comma-separated).","Tags Exclude":"Tags Exclude","Task must NOT include ANY of these tags (comma-separated).":"Task must NOT include ANY of these tags (comma-separated).","Project Is":"Project Is","Task must belong to this project (exact match).":"Task must belong to this project (exact match).","Priority Is":"Priority Is","Task must have this priority (e.g., 1, 2, 3).":"Task must have this priority (e.g., 1, 2, 3).","Status Include":"Status Include","Task status must be one of these (comma-separated markers, e.g., /,>).":"Task status must be one of these (comma-separated markers, e.g., /,>).","Status Exclude":"Status Exclude","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"Task status must NOT be one of these (comma-separated markers, e.g., -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.","Due Date Is":"Due Date Is","Start Date Is":"Start Date Is","Scheduled Date Is":"Scheduled Date Is","Path Includes":"Path Includes","Task must contain this path (case-insensitive).":"Task must contain this path (case-insensitive).","Path Excludes":"Path Excludes","Task must NOT contain this path (case-insensitive).":"Task must NOT contain this path (case-insensitive).","Unnamed View":"Unnamed View","View configuration saved.":"View configuration saved.","Hide Details":"Hide Details","Show Details":"Show Details","View Config":"View Config","View Configuration":"View Configuration","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure the Task Genius sidebar views, visibility, order, and create custom views.","Manage Views":"Manage Views","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure sidebar views, order, visibility, and hide/show completed tasks per view.","Show in sidebar":"Show in sidebar","Edit View":"Edit View","Move Up":"Move Up","Move Down":"Move Down","Delete View":"Delete View","Add Custom View":"Add Custom View","Error: View ID already exists.":"Error: View ID already exists.",Events:"Events",Plan:"Plan",Year:"Year",Month:"Month",Week:"Week",Day:"Day",Agenda:"Agenda","Back to categories":"Back to categories","No matching options found":"No matching options found","No matching filters found":"No matching filters found",Tag:"Tag","File Path":"File Path","Add filter":"Add filter","Clear all":"Clear all","Add Card":"Add Card","First Day of Week":"First Day of Week","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"Show checkbox","Show a checkbox for each task in the kanban view.":"Show a checkbox for each task in the kanban view.","Locale Default":"Locale Default","Use custom goal for progress bar":"Use custom goal for progress bar","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.","Prefer metadata format of task":"Prefer metadata format of task","You can choose dataview format or tasks format, that will influence both index and save format.":"You can choose dataview format or tasks format, that will influence both index and save format.","Open in new tab":"Open in new tab","Open settings":"Open settings","Hide in sidebar":"Hide in sidebar","No items found":"No items found","High Priority":"High Priority","Medium Priority":"Medium Priority","Low Priority":"Low Priority","No tasks in the selected items":"No tasks in the selected items","View Type":"View Type","Select the type of view to create":"Select the type of view to create","Standard View":"Standard View","Two Column View":"Two Column View",Items:"Items","selected items":"selected items","No items selected":"No items selected","Two Column View Settings":"Two Column View Settings","Group by Task Property":"Group by Task Property","Select which task property to use for left column grouping":"Select which task property to use for left column grouping",Priorities:"Priorities",Contexts:"Contexts","Due Dates":"Due Dates","Scheduled Dates":"Scheduled Dates","Start Dates":"Start Dates",Files:"Files","Left Column Title":"Left Column Title","Title for the left column (items list)":"Title for the left column (items list)","Right Column Title":"Right Column Title","Default title for the right column (tasks list)":"Default title for the right column (tasks list)","Multi-select Text":"Multi-select Text","Text to show when multiple items are selected":"Text to show when multiple items are selected","Empty State Text":"Empty State Text","Text to show when no items are selected":"Text to show when no items are selected","Filter Blanks":"Filter Blanks","Filter out blank tasks in this view.":"Filter out blank tasks in this view.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"Task must contain this path (case-insensitive). Separate multiple paths with commas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.","You have unsaved changes. Save before closing?":"You have unsaved changes. Save before closing?",Rotate:"Rotate","Are you sure you want to force reindex all tasks?":"Are you sure you want to force reindex all tasks?","Enable progress bar in reading mode":"Enable progress bar in reading mode","Toggle this to allow this plugin to show progress bars in reading mode.":"Toggle this to allow this plugin to show progress bars in reading mode.",Range:"Range","as a placeholder for the percentage value":"as a placeholder for the percentage value","Template text with":"Template text with",placeholder:"placeholder",Reindex:"Reindex","From now":"From now","Complete workflow":"Complete workflow","Move to":"Move to",Settings:"Settings","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow","Standard project management workflow":"Standard project management workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note format":"Daily note format","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled",Rewards:"Rewards","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable Rewards":"Enable Rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence Levels":"Occurrence Levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level Name (e.g., common)":"Level Name (e.g., common)","Chance (%)":"Chance (%)","Delete Level":"Delete Level","Add Occurrence Level":"Add Occurrence Level","New Level":"New Level","Reward Items":"Reward Items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward Name/Text":"Reward Name/Text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image URL (optional)":"Image URL (optional)","Delete Reward Item":"Delete Reward Item","No reward items defined yet.":"No reward items defined yet.","Add Reward Item":"Add Reward Item","New Reward":"New Reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Enable rewards":"Enable rewards","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Occurrence levels":"Occurrence levels","Add occurrence level":"Add occurrence level","Reward items":"Reward items","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","Add reward item":"Add reward item","moved on":"moved on","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task","Save Filter Configuration":"Save Filter Configuration","Filter Configuration Name":"Filter Configuration Name","Enter a name for this filter configuration":"Enter a name for this filter configuration","Filter Configuration Description":"Filter Configuration Description","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","Load Filter Configuration":"Load Filter Configuration","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration",Load:"Load",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","filter group":"filter group",filter:"filter","Root condition":"Root condition","Filter configuration name is required":"Filter configuration name is required","Failed to save filter configuration":"Failed to save filter configuration","Filter configuration saved successfully":"Filter configuration saved successfully","Failed to load filter configuration":"Failed to load filter configuration","Filter configuration loaded successfully":"Filter configuration loaded successfully","Failed to delete filter configuration":"Failed to delete filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration deleted successfully":"Filter configuration deleted successfully",Match:"Match",All:"All","Add filter group":"Add filter group","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Line Number":"Line Number","Clear Date":"Clear Date","Copy view":"Copy view","View copied successfully: ":"View copied successfully: ","Copy of ":"Copy of ","Copy view: ":"Copy view: ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.","Copy View":"Copy View",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},pj=iz});var nz,fj,hj=b(()=>{nz={"File Metadata Inheritance":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u7D99\u627F","Configure how tasks inherit metadata from file frontmatter":"\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable file metadata inheritance":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u7D99\u627F\u3092\u6709\u52B9\u5316","Allow tasks to inherit metadata properties from their file's frontmatter":"\u30BF\u30B9\u30AF\u304C\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF","Inherit from frontmatter":"\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u30BF\u30B9\u30AF\u306B\u660E\u793A\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u30BF\u30B9\u30AF\u306F\u512A\u5148\u5EA6\u3001\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306A\u3069\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Inherit from frontmatter for subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u7D99\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u30B5\u30D6\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF\u3002\u7121\u52B9\u5316\u3057\u305F\u5834\u5408\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u306E\u30BF\u30B9\u30AF\u306E\u307F\u304C\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3001\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3001\u9AD8\u5EA6\u306A\u30BF\u30B9\u30AF\u8FFD\u8DE1\u6A5F\u80FD\u3092\u5099\u3048\u305FObsidian\u7528\u306E\u5305\u62EC\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406\u30D7\u30E9\u30B0\u30A4\u30F3\u3002","Show progress bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A","Toggle this to show the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Support hover to show progress info":"\u30DB\u30D0\u30FC\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u60C5\u5831\u3092\u8868\u793A","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30AB\u30FC\u30BD\u30EB\u3092\u5408\u308F\u305B\u305F\u3068\u304D\u306B\u9032\u6357\u60C5\u5831\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Add progress bar to non-task bullet":"\u975E\u30BF\u30B9\u30AF\u7B87\u6761\u66F8\u304D\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u901A\u5E38\u306E\u30EA\u30B9\u30C8\u30A2\u30A4\u30C6\u30E0\uFF08\u975E\u30BF\u30B9\u30AF\u7B87\u6761\u66F8\u304D\uFF09\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Add progress bar to Heading":"\u898B\u51FA\u3057\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u898B\u51FA\u3057\u306E\u4E0B\u306E\u30BF\u30B9\u30AF\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Enable heading progress bars":"\u898B\u51FA\u3057\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u6709\u52B9\u5316","Add progress bars to headings to show progress of all tasks under that heading.":"\u305D\u306E\u898B\u51FA\u3057\u306E\u4E0B\u306B\u3042\u308B\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306E\u9032\u6357\u72B6\u6CC1\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306B\u3001\u898B\u51FA\u3057\u306B\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002","Auto complete parent task":"\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u5B8C\u4E86","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u3059\u3079\u3066\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u7684\u306B\u5B8C\u4E86\u3055\u305B\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Mark parent as 'In Progress' when partially complete":"\u90E8\u5206\u7684\u306B\u5B8C\u4E86\u3057\u305F\u3089\u89AA\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u4E00\u90E8\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304C\u5168\u90E8\u3067\u306F\u306A\u3044\u5834\u5408\u3001\u89AA\u30BF\u30B9\u30AF\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002\u300C\u89AA\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u5B8C\u4E86\u300D\u304C\u6709\u52B9\u306A\u5834\u5408\u306E\u307F\u6A5F\u80FD\u3057\u307E\u3059\u3002","Count sub children level of current Task":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u30B5\u30D6\u5B50\u30EC\u30D9\u30EB\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to allow this plugin to count sub tasks.":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Checkbox Status Settings":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A","Select a predefined task status collection or customize your own":"\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u72EC\u81EA\u306B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u304F\u3060\u3055\u3044","Completed task markers":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"x|X"',"Planned task markers":"\u8A08\u753B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent planned tasks. Example: "?"':'\u8A08\u753B\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"?"',"In progress task markers":"\u9032\u884C\u4E2D\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A">|/"',"Abandoned task markers":"\u653E\u68C4\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u4F8B\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u958B\u59CB\u3055\u308C\u3066\u3044\u306A\u3044\u30BF\u30B9\u30AF\u3092\u8868\u3059\u89D2\u62EC\u5F27\u5185\u306E\u6587\u5B57\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u30B9\u30DA\u30FC\u30B9 " "',"Count other statuses as":"\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u65B9\u6CD5",'Select the status to count other statuses as. Default is "Not Started".':"\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9078\u629E\u3057\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u300C\u672A\u958B\u59CB\u300D\u3067\u3059\u3002","Task Counting Settings":"\u30BF\u30B9\u30AF\u30AB\u30A6\u30F3\u30C8\u8A2D\u5B9A","Exclude specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u9664\u5916",'Specify task markers to exclude from counting. Example: "?|/"':'\u30AB\u30A6\u30F3\u30C8\u304B\u3089\u9664\u5916\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"?|/"',"Only count specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u306E\u307F\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to only count specific task markers":"\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u306E\u307F\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044","Specific task markers to count":"\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC",'Specify which task markers to count. Example: "x|X|>|/"':'\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u6761\u4EF6\u4ED8\u304D\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u8868\u793A","Hide progress bars based on conditions":"\u6761\u4EF6\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u30BF\u30B0\u3001\u30D5\u30A9\u30EB\u30C0\u3001\u307E\u305F\u306F\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Hide by tags":"\u30BF\u30B0\u3067\u975E\u8868\u793A",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30BF\u30B0\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3001#\u306A\u3057\uFF09\u3002\u4F8B\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u30D5\u30A9\u30EB\u30C0\u3067\u975E\u8868\u793A",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30D5\u30A9\u30EB\u30C0\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002\u4F8B\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u3067\u975E\u8868\u793A",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u975E\u8868\u793A\u306B\u3059\u308B\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC","Enable task status switcher":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u3092\u6709\u52B9\u5316","Enable/disable the ability to cycle through task states by clicking.":"\u30AF\u30EA\u30C3\u30AF\u306B\u3088\u308B\u30BF\u30B9\u30AF\u72B6\u614B\u306E\u5FAA\u74B0\u6A5F\u80FD\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","Enable custom task marks":"\u30AB\u30B9\u30BF\u30E0\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u3092\u6709\u52B9\u5316","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u3001\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3063\u3066\u30B9\u30BF\u30A4\u30EB\u4ED8\u304D\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002","Enable cycle complete status":"\u30B5\u30A4\u30AF\u30EB\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u6709\u52B9\u5316","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u30DE\u30FC\u30AF\u3092\u62BC\u3057\u305F\u3068\u304D\u306B\u81EA\u52D5\u7684\u306B\u30BF\u30B9\u30AF\u72B6\u614B\u3092\u5FAA\u74B0\u3059\u308B\u6A5F\u80FD\u3092\u6709\u52B9/\u7121\u52B9\u306B\u3057\u307E\u3059\u3002","Always cycle new tasks":"\u5E38\u306B\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u30B5\u30A4\u30AF\u30EB","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u65B0\u3057\u304F\u633F\u5165\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u76F4\u3061\u306B\u6B21\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5FAA\u74B0\u3057\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u6709\u52B9\u306A\u30DE\u30FC\u30AF\u3092\u6301\u3064\u65B0\u3057\u304F\u633F\u5165\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u5143\u306E\u30DE\u30FC\u30AF\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002","Checkbox Status Cycle and Marks":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3068\u30DE\u30FC\u30AF","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u30BF\u30B9\u30AF\u72B6\u614B\u3068\u305D\u308C\u306B\u5BFE\u5FDC\u3059\u308B\u30DE\u30FC\u30AF\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002\u4E0A\u304B\u3089\u4E0B\u3078\u306E\u9806\u5E8F\u304C\u30B5\u30A4\u30AF\u30EB\u306E\u9806\u5E8F\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Add Status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0","Completed Task Mover":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u30C4\u30FC\u30EB","Enable completed task mover":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u30C4\u30FC\u30EB\u3092\u6709\u52B9\u5316","Toggle this to enable commands for moving completed tasks to another file.":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Task marker type":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u30BF\u30A4\u30D7","Choose what type of marker to add to moved tasks":"\u79FB\u52D5\u3057\u305F\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30DE\u30FC\u30AB\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E","Version marker text":"\u30D0\u30FC\u30B8\u30E7\u30F3\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to tasks when moved (e.g., 'version 1.0')":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u3068\u304D\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'version 1.0'\uFF09","Date marker text":"\u65E5\u4ED8\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u3068\u304D\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'archived on 2023-12-31'\uFF09","Custom marker text":"\u30AB\u30B9\u30BF\u30E0\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306B\u306F {{DATE:format}} \u3092\u4F7F\u7528\u3057\u307E\u3059\uFF08\u4F8B\uFF1A{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86\u3068\u3057\u3066\u6271\u3046","If enabled, abandoned tasks will be treated as completed.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u5B8C\u4E86\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","Complete all moved tasks":"\u79FB\u52D5\u3057\u305F\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86","If enabled, all moved tasks will be marked as completed.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u79FB\u52D5\u3057\u305F\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u307E\u3059\u3002","With current file link":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u30EA\u30F3\u30AF\u4ED8\u304D","A link to the current file will be added to the parent task of the moved tasks.":"\u79FB\u52D5\u3057\u305F\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002","Say Thank You":"\u611F\u8B1D\u306E\u8A00\u8449",Donate:"\u5BC4\u4ED8","If you like this plugin, consider donating to support continued development:":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6C17\u306B\u5165\u3063\u305F\u3089\u3001\u7D99\u7D9A\u7684\u306A\u958B\u767A\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u305F\u3081\u306B\u5BC4\u4ED8\u3092\u3054\u691C\u8A0E\u304F\u3060\u3055\u3044\uFF1A","Add number to the Progress Bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u6570\u5B57\u3092\u8FFD\u52A0","Toggle this to allow this plugin to add tasks number to progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30BF\u30B9\u30AF\u6570\u3092\u8FFD\u52A0\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Show percentage":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A","Toggle this to allow this plugin to show percentage in the progress bar.":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Customize progress text":"\u9032\u6357\u30C6\u30AD\u30B9\u30C8\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Toggle this to customize text representation for different progress percentage ranges.":"\u7570\u306A\u308B\u9032\u6357\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u7BC4\u56F2\u306E\u30C6\u30AD\u30B9\u30C8\u8868\u73FE\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Progress Ranges":"\u9032\u6357\u7BC4\u56F2","Define progress ranges and their corresponding text representations.":"\u9032\u6357\u7BC4\u56F2\u3068\u305D\u308C\u306B\u5BFE\u5FDC\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u8868\u73FE\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Add new range":"\u65B0\u3057\u3044\u7BC4\u56F2\u3092\u8FFD\u52A0","Add a new progress percentage range with custom text":"\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u3067\u65B0\u3057\u3044\u9032\u6357\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u7BC4\u56F2\u3092\u8FFD\u52A0","Min percentage (0-100)":"\u6700\u5C0F\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\uFF080-100\uFF09","Max percentage (0-100)":"\u6700\u5927\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\uFF080-100\uFF09","Text template (use {{PROGRESS}})":"\u30C6\u30AD\u30B9\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\uFF08{{PROGRESS}}\u3092\u4F7F\u7528\uFF09","Reset to defaults":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Reset progress ranges to default values":"\u9032\u6357\u7BC4\u56F2\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306B\u30EA\u30BB\u30C3\u30C8",Reset:"\u30EA\u30BB\u30C3\u30C8","Priority Picker Settings":"\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u8A2D\u5B9A","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u7D75\u6587\u5B57\u3068\u6587\u5B57\u5F62\u5F0F\u306E\u512A\u5148\u5EA6\u306E\u305F\u3081\u306E\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u30C9\u30ED\u30C3\u30D7\u30C0\u30A6\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Enable priority picker":"\u512A\u5148\u5EA6\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u5316","Enable priority keyboard shortcuts":"\u512A\u5148\u5EA6\u30AD\u30FC\u30DC\u30FC\u30C9\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u6709\u52B9\u5316","Toggle to enable keyboard shortcuts for setting task priorities.":"\u30BF\u30B9\u30AF\u306E\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\u3059\u308B\u305F\u3081\u306E\u30AD\u30FC\u30DC\u30FC\u30C9\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC","Enable date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306B\u3088\u308A\u3001\u30BF\u30B9\u30AF\u306E\u8FD1\u304F\u306B\u30AB\u30EC\u30F3\u30C0\u30FC\u30A2\u30A4\u30B3\u30F3\u304C\u8FFD\u52A0\u3055\u308C\u3001\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65E5\u4ED8\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002","Date mark":"\u65E5\u4ED8\u30DE\u30FC\u30AF","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u65E5\u4ED8\u3092\u8B58\u5225\u3059\u308B\u7D75\u6587\u5B57\u30DE\u30FC\u30AF\u3002\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u8907\u6570\u306E\u7D75\u6587\u5B57\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Quick capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Enable quick capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u6709\u52B9\u5316","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Org-mode\u30B9\u30BF\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002Alt+C\u3092\u62BC\u3057\u3066\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u958B\u304D\u307E\u3059\u3002","Target file":"\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A1\u30A4\u30EB","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u3002\u30D1\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u4F8B\uFF1A'folder/Quick Capture.md'","Placeholder text":"\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u30C6\u30AD\u30B9\u30C8","Placeholder text to display in the capture panel":"\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u306B\u8868\u793A\u3059\u308B\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u30C6\u30AD\u30B9\u30C8","Append to file":"\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u306F\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u304C\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3059\u3002","Task Filter":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC","Enable Task Filter":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable the task filter panel":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044","Preset Filters":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC","Create and manage preset filters for quick access to commonly used task filters.":"\u3088\u304F\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u306B\u3059\u3070\u3084\u304F\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u305F\u3081\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u4F5C\u6210\u304A\u3088\u3073\u7BA1\u7406\u3057\u307E\u3059\u3002","Edit Filter: ":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6\uFF1A","Filter name":"\u30D5\u30A3\u30EB\u30BF\u30FC\u540D","Checkbox Status":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9","Include or exclude tasks based on their status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u57FA\u3065\u3044\u3066\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B\u304B\u9664\u5916\u3059\u308B","Include Completed Tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include In Progress Tasks":"\u9032\u884C\u4E2D\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Abandoned Tasks":"\u653E\u68C4\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Not Started Tasks":"\u672A\u958B\u59CB\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Planned Tasks":"\u8A08\u753B\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Related Tasks":"\u95A2\u9023\u30BF\u30B9\u30AF","Include parent, child, and sibling tasks in the filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u306B\u89AA\u3001\u5B50\u3001\u304A\u3088\u3073\u5144\u5F1F\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Parent Tasks":"\u89AA\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Child Tasks":"\u5B50\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Include Sibling Tasks":"\u5144\u5F1F\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Advanced Filter":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30FC","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u30D6\u30FC\u30EB\u6F14\u7B97\u3092\u4F7F\u7528\uFF1AAND\u3001OR\u3001NOT\u3002\u4F8B\uFF1A'text content AND #tag1'","Filter query":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30AF\u30A8\u30EA","Filter out tasks":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30AF\u30A8\u30EA\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306F\u975E\u8868\u793A\u306B\u306A\u308A\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u8868\u793A\u3055\u308C\u307E\u3059",Save:"\u4FDD\u5B58",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB","Hide filter panel":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u975E\u8868\u793A","Show filter panel":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u8868\u793A","Filter Tasks":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC","Preset filters":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC","Select a saved filter preset to apply":"\u9069\u7528\u3059\u308B\u4FDD\u5B58\u6E08\u307F\u30D5\u30A3\u30EB\u30BF\u30FC\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u9078\u629E","Select a preset...":"\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u9078\u629E...",Query:"\u30AF\u30A8\u30EA","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u30D6\u30FC\u30EB\u6F14\u7B97\u3092\u4F7F\u7528\uFF1AAND\u3001OR\u3001NOT\u3002\u4F8B\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - PRIORITY\u3068DATE\u306B\u306F >\u3001<\u3001=\u3001>=\u3001<=\u3001!= \u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"true\u306E\u5834\u5408\u3001\u30AF\u30A8\u30EA\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306F\u975E\u8868\u793A\u306B\u306A\u308A\u3001\u305D\u3046\u3067\u306A\u3051\u308C\u3070\u8868\u793A\u3055\u308C\u307E\u3059",Completed:"\u5B8C\u4E86","In Progress":"\u9032\u884C\u4E2D",Abandoned:"\u653E\u68C4","Not Started":"\u672A\u958B\u59CB",Planned:"\u8A08\u753B\u6E08\u307F","Include Related Tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B","Parent Tasks":"\u89AA\u30BF\u30B9\u30AF","Child Tasks":"\u5B50\u30BF\u30B9\u30AF","Sibling Tasks":"\u5144\u5F1F\u30BF\u30B9\u30AF",Apply:"\u9069\u7528","New Preset":"\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8","Preset saved":"\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F","No changes to save":"\u4FDD\u5B58\u3059\u308B\u5909\u66F4\u306F\u3042\u308A\u307E\u305B\u3093",Close:"\u9589\u3058\u308B","Capture to":"\u30AD\u30E3\u30D7\u30C1\u30E3\u5148",Capture:"\u30AD\u30E3\u30D7\u30C1\u30E3","Capture thoughts, tasks, or ideas...":"\u8003\u3048\u3001\u30BF\u30B9\u30AF\u3001\u30A2\u30A4\u30C7\u30A2\u3092\u30AD\u30E3\u30D7\u30C1\u30E3...",Tomorrow:"\u660E\u65E5","In 2 days":"2\u65E5\u5F8C","In 3 days":"3\u65E5\u5F8C","In 5 days":"5\u65E5\u5F8C","In 1 week":"1\u9031\u9593\u5F8C","In 10 days":"10\u65E5\u5F8C","In 2 weeks":"2\u9031\u9593\u5F8C","In 1 month":"1\u30F6\u6708\u5F8C","In 2 months":"2\u30F6\u6708\u5F8C","In 3 months":"3\u30F6\u6708\u5F8C","In 6 months":"6\u30F6\u6708\u5F8C","In 1 year":"1\u5E74\u5F8C","In 5 years":"5\u5E74\u5F8C","In 10 years":"10\u5E74\u5F8C","Highest priority":"\u6700\u9AD8\u512A\u5148\u5EA6","High priority":"\u9AD8\u512A\u5148\u5EA6","Medium priority":"\u4E2D\u512A\u5148\u5EA6","No priority":"\u7121\u512A\u5148\u5EA6","Low priority":"\u4F4E\u512A\u5148\u5EA6","Lowest priority":"\u6700\u4F4E\u512A\u5148\u5EA6","Priority A":"\u512A\u5148\u5EA6A","Priority B":"\u512A\u5148\u5EA6B","Priority C":"\u512A\u5148\u5EA6C","Task Priority":"\u30BF\u30B9\u30AF\u512A\u5148\u5EA6","Remove Priority":"\u512A\u5148\u5EA6\u3092\u524A\u9664","Cycle task status forward":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524D\u306B\u5FAA\u74B0","Cycle task status backward":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5F8C\u308D\u306B\u5FAA\u74B0","Remove priority":"\u512A\u5148\u5EA6\u3092\u524A\u9664","Move task to another file":"\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move all completed subtasks to another file":"\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move direct completed subtasks to another file":"\u76F4\u63A5\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move all subtasks to another file":"\u3059\u3079\u3066\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Set priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A","Toggle quick capture panel":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Quick capture (Global)":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\uFF08\u30B0\u30ED\u30FC\u30D0\u30EB\uFF09","Toggle task filter panel":"\u30BF\u30B9\u30AF\u30D5\u30A3\u30EB\u30BF\u30FC\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Filter Mode":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30E2\u30FC\u30C9","Choose whether to include or exclude tasks that match the filters":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Show matching tasks":"\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u3092\u8868\u793A","Hide matching tasks":"\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Choose whether to show or hide tasks that match the filters":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Create new file:":"\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\uFF1A","Completed tasks moved to":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u5148","Failed to create file:":"\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Beginning of file":"\u30D5\u30A1\u30A4\u30EB\u306E\u5148\u982D","Failed to move tasks:":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","No active file found":"\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Task moved to":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u5148","Failed to move task:":"\u30BF\u30B9\u30AF\u306E\u79FB\u52D5\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Nothing to capture":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3059\u308B\u3082\u306E\u304C\u3042\u308A\u307E\u305B\u3093","Captured successfully":"\u30AD\u30E3\u30D7\u30C1\u30E3\u306B\u6210\u529F\u3057\u307E\u3057\u305F","Failed to save:":"\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A","Captured successfully to":"\u30AD\u30E3\u30D7\u30C1\u30E3\u5148",Total:"\u5408\u8A08",Workflow:"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Add as workflow root":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u30EB\u30FC\u30C8\u3068\u3057\u3066\u8FFD\u52A0","Move to stage":"\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5","Complete stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u5B8C\u4E86","Add child task with same stage":"\u540C\u3058\u30B9\u30C6\u30FC\u30B8\u306E\u5B50\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Could not open quick capture panel in the current editor":"\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F","Just started {{PROGRESS}}%":"\u958B\u59CB\u3057\u305F\u3070\u304B\u308A {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u9032\u884C\u4E2D {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u534A\u5206\u307E\u3067 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u9806\u8ABF\u306B\u9032\u884C\u4E2D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u3082\u3046\u5C11\u3057\u3067\u5B8C\u4E86 {{PROGRESS}}%","Progress bar":"\u9032\u6357\u30D0\u30FC","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u89AA\u30BF\u30B9\u30AF\u306E\u5F8C\u308D\u306E\u9032\u6357\u30D0\u30FC\uFF08\u901A\u5E38\u306F\u30BF\u30B9\u30AF\u306E\u6700\u5F8C\uFF09\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002\u307E\u305F\u3001\u898B\u51FA\u3057\u306E\u4E0B\u306E\u30BF\u30B9\u30AF\u306E\u9032\u6357\u30D0\u30FC\u3082\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002","Hide progress bars":"\u9032\u6357\u30D0\u30FC\u3092\u975E\u8868\u793A","Parent task changer":"\u89AA\u30BF\u30B9\u30AF\u5909\u66F4\u30C4\u30FC\u30EB","Change the parent task of the current task.":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u3092\u5909\u66F4\u3057\u307E\u3059\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u30D7\u30EA\u30BB\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u30FC\u304C\u307E\u3060\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u300C\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Configure task workflows for project and process management":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3068\u30D7\u30ED\u30BB\u30B9\u7BA1\u7406\u306E\u305F\u3081\u306E\u30BF\u30B9\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8A2D\u5B9A","Enable workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u6709\u52B9\u5316","Toggle to enable the workflow system for tasks":"\u30BF\u30B9\u30AF\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B7\u30B9\u30C6\u30E0\u3092\u6709\u52B9\u306B\u3059\u308B\u5207\u308A\u66FF\u3048","Auto-add timestamp":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically add a timestamp to the task when it is created":"\u30BF\u30B9\u30AF\u4F5C\u6210\u6642\u306B\u81EA\u52D5\u7684\u306B\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u8FFD\u52A0","Timestamp format:":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5F62\u5F0F\uFF1A","Timestamp format":"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5F62\u5F0F","Remove timestamp when moving to next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u524A\u9664","Remove the timestamp from the current task when moving to the next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u304B\u3089\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u524A\u9664","Calculate spent time":"\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Calculate and display the time spent on the task when moving to the next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u30BF\u30B9\u30AF\u306B\u304B\u304B\u3063\u305F\u6642\u9593\u3092\u8A08\u7B97\u3057\u3066\u8868\u793A","Format for spent time:":"\u7D4C\u904E\u6642\u9593\u306E\u5F62\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306B\u79FB\u52D5\u3059\u308B\u969B\u306B\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97\u3057\u307E\u3059\u3002","Spent time format":"\u7D4C\u904E\u6642\u9593\u306E\u5F62\u5F0F","Calculate full spent time":"\u5168\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Calculate the full spent time from the start of the task to the last stage":"\u30BF\u30B9\u30AF\u306E\u958B\u59CB\u304B\u3089\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u307E\u3067\u306E\u5168\u7D4C\u904E\u6642\u9593\u3092\u8A08\u7B97","Auto remove last stage marker":"\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u30DE\u30FC\u30AB\u30FC\u3092\u81EA\u52D5\u524A\u9664","Automatically remove the last stage marker when a task is completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u6700\u5F8C\u306E\u30B9\u30C6\u30FC\u30B8\u30DE\u30FC\u30AB\u30FC\u3092\u81EA\u52D5\u7684\u306B\u524A\u9664","Auto-add next task":"\u6B21\u306E\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically create a new task with the next stage when completing a task":"\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86\u3059\u308B\u969B\u306B\u6B21\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u81EA\u52D5\u7684\u306B\u4F5C\u6210","Workflow definitions":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9","Configure workflow templates for different types of processes":"\u7570\u306A\u308B\u30BF\u30A4\u30D7\u306E\u30D7\u30ED\u30BB\u30B9\u7528\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u8A2D\u5B9A","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9\u304C\u307E\u3060\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u300C\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8FFD\u52A0\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Edit workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u7DE8\u96C6","Remove workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u524A\u9664","Delete workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u524A\u9664",Delete:"\u524A\u9664","Add New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8FFD\u52A0","New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Create New Workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D","A descriptive name for the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Workflow ID":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FCID","A unique identifier for the workflow (used in tags)":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u4E00\u610F\u306E\u8B58\u5225\u5B50\uFF08\u30BF\u30B0\u3067\u4F7F\u7528\uFF09",Description:"\u8AAC\u660E","Optional description for the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u8AAC\u660E","Describe the purpose and use of this workflow...":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u76EE\u7684\u3068\u4F7F\u7528\u65B9\u6CD5\u3092\u8AAC\u660E...","Workflow Stages":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8","No stages defined yet. Add a stage to get started.":"\u30B9\u30C6\u30FC\u30B8\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u59CB\u3081\u307E\u3057\u3087\u3046\u3002",Edit:"\u7DE8\u96C6","Move up":"\u4E0A\u306B\u79FB\u52D5","Move down":"\u4E0B\u306B\u79FB\u52D5","Sub-stage":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Sub-stage name":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u540D","Sub-stage ID":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8ID","Next: ":"\u6B21\uFF1A","Add Sub-stage":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0","New Sub-stage":"\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Edit Stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u7DE8\u96C6","Stage name":"\u30B9\u30C6\u30FC\u30B8\u540D","A descriptive name for this workflow stage":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Stage ID":"\u30B9\u30C6\u30FC\u30B8ID","A unique identifier for the stage (used in tags)":"\u30B9\u30C6\u30FC\u30B8\u306E\u4E00\u610F\u306E\u8B58\u5225\u5B50\uFF08\u30BF\u30B0\u3067\u4F7F\u7528\uFF09","Stage type":"\u30B9\u30C6\u30FC\u30B8\u30BF\u30A4\u30D7","The type of this workflow stage":"\u3053\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u30BF\u30A4\u30D7","Linear (sequential)":"\u7DDA\u5F62\uFF08\u9806\u6B21\uFF09","Cycle (repeatable)":"\u30B5\u30A4\u30AF\u30EB\uFF08\u7E70\u308A\u8FD4\u3057\u53EF\u80FD\uFF09","Terminal (end stage)":"\u7D42\u7AEF\uFF08\u7D42\u4E86\u30B9\u30C6\u30FC\u30B8\uFF09","Next stage":"\u6B21\u306E\u30B9\u30C6\u30FC\u30B8","The stage to proceed to after this one":"\u3053\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u5F8C\u306B\u9032\u3080\u30B9\u30C6\u30FC\u30B8","Sub-stages":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8","Define cycle sub-stages (optional)":"\u30B5\u30A4\u30AF\u30EB\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u5B9A\u7FA9\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","No sub-stages defined yet.":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Can proceed to":"\u9032\u3080\u3053\u3068\u304C\u3067\u304D\u308B\u5148","Additional stages that can follow this one (for right-click menu)":"\u3053\u306E\u30B9\u30C6\u30FC\u30B8\u306E\u5F8C\u306B\u7D9A\u304F\u8FFD\u52A0\u306E\u30B9\u30C6\u30FC\u30B8\uFF08\u53F3\u30AF\u30EA\u30C3\u30AF\u30E1\u30CB\u30E5\u30FC\u7528\uFF09","No additional destination stages defined.":"\u8FFD\u52A0\u306E\u76EE\u7684\u5730\u30B9\u30C6\u30FC\u30B8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",Remove:"\u524A\u9664",Add:"\u8FFD\u52A0","Name and ID are required.":"\u540D\u524D\u3068ID\u304C\u5FC5\u8981\u3067\u3059\u3002","End of file":"\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A","Include in cycle":"\u30B5\u30A4\u30AF\u30EB\u306B\u542B\u3081\u308B",Preset:"\u30D7\u30EA\u30BB\u30C3\u30C8","Preset name":"\u30D7\u30EA\u30BB\u30C3\u30C8\u540D","Edit Filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7DE8\u96C6","Add New Preset":"\u65B0\u3057\u3044\u30D7\u30EA\u30BB\u30C3\u30C8\u3092\u8FFD\u52A0","New Filter":"\u65B0\u3057\u3044\u30D5\u30A3\u30EB\u30BF\u30FC","Reset to Default Presets":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","This will replace all your current presets with the default set. Are you sure?":"\u3053\u308C\u306B\u3088\u308A\u3001\u73FE\u5728\u306E\u3059\u3079\u3066\u306E\u30D7\u30EA\u30BB\u30C3\u30C8\u304C\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30BB\u30C3\u30C8\u306B\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3059\u3002\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Edit Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u7DE8\u96C6",General:"\u4E00\u822C","Progress Bar":"\u9032\u6357\u30D0\u30FC","Task Mover":"\u30BF\u30B9\u30AF\u79FB\u52D5","Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Date & Priority":"\u65E5\u4ED8\u3068\u512A\u5148\u5EA6",About:"\u306B\u3064\u3044\u3066","Count sub children of current Task":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u306E\u30B5\u30D6\u5B50\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u9032\u6357\u30D0\u30FC\u3092\u751F\u6210\u3059\u308B\u969B\u306B\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u305F\u3081\u306B\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8A31\u53EF\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Configure task status settings":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u3092\u69CB\u6210","Configure which task markers to count or exclude":"\u30AB\u30A6\u30F3\u30C8\u307E\u305F\u306F\u9664\u5916\u3059\u308B\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u3092\u69CB\u6210","Task status cycle and marks":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u3068\u30DE\u30FC\u30AF","About Task Genius":"Task Genius\u306B\u3064\u3044\u3066",Version:"\u30D0\u30FC\u30B8\u30E7\u30F3",Documentation:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","View the documentation for this plugin":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8868\u793A","Open Documentation":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u958B\u304F","Incomplete tasks":"\u672A\u5B8C\u4E86\u306E\u30BF\u30B9\u30AF","In progress tasks":"\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF","Completed tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF","All tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF","After heading":"\u898B\u51FA\u3057\u306E\u5F8C","End of section":"\u30BB\u30AF\u30B7\u30E7\u30F3\u306E\u7D42\u308F\u308A","Enable text mark in source mode":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u3067\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u6709\u52B9\u5316","Make the text mark in source mode follow the task status cycle when clicked.":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u3067\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3046","Status name":"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D","Progress display mode":"\u9032\u6357\u8868\u793A\u30E2\u30FC\u30C9","Choose how to display task progress":"\u30BF\u30B9\u30AF\u9032\u6357\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E","No progress indicators":"\u9032\u6357\u30A4\u30F3\u30B8\u30B1\u30FC\u30BF\u30FC\u306A\u3057","Graphical progress bar":"\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u9032\u6357\u30D0\u30FC","Text progress indicator":"\u30C6\u30AD\u30B9\u30C8\u9032\u6357\u30A4\u30F3\u30B8\u30B1\u30FC\u30BF\u30FC","Both graphical and text":"\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u3068\u30C6\u30AD\u30B9\u30C8\u306E\u4E21\u65B9","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u9032\u6357\u30D0\u30FC\u3092\u751F\u6210\u3059\u308B\u969B\u306B\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30AB\u30A6\u30F3\u30C8\u3059\u308B\u305F\u3081\u306B\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u8A31\u53EF\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Progress format":"\u9032\u6357\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Choose how to display the task progress":"\u30BF\u30B9\u30AF\u9032\u6357\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E","Percentage (75%)":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 (75%)","Bracketed percentage ([75%])":"\u62EC\u5F27\u4ED8\u304D\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8 ([75%])","Fraction (3/4)":"\u5206\u6570 (3/4)","Bracketed fraction ([3/4])":"\u62EC\u5F27\u4ED8\u304D\u5206\u6570 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8A73\u7D30 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u30AB\u30B9\u30BF\u30E0\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Range-based text":"\u7BC4\u56F2\u30D9\u30FC\u30B9\u306E\u30C6\u30AD\u30B9\u30C8","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"{{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}}\u306A\u3069\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3092\u4F7F\u7528","Preview:":"\u30D7\u30EC\u30D3\u30E5\u30FC\uFF1A","Available placeholders":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u73FE\u4F8B","Examples of advanced formats using expressions":"\u8868\u73FE\u3092\u4F7F\u7528\u3057\u305F\u9AD8\u5EA6\u306A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4F8B","Text Progress Bar":"\u30C6\u30AD\u30B9\u30C8\u9032\u6357\u30D0\u30FC","Emoji Progress Bar":"\u7D75\u6587\u5B57\u9032\u6357\u30D0\u30FC","Color-coded Status":"\u8272\u5206\u3051\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30BF\u30B9","Status with Icons":"\u30A2\u30A4\u30B3\u30F3\u4ED8\u304D\u30B9\u30C6\u30FC\u30BF\u30B9",Preview:"\u30D7\u30EC\u30D3\u30E5\u30FC",Use:"\u4F7F\u7528","Toggle this to show percentage instead of completed/total count.":"\u5B8C\u4E86/\u5408\u8A08\u30AB\u30A6\u30F3\u30C8\u306E\u4EE3\u308F\u308A\u306B\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Customize progress ranges":"\u9032\u6357\u7BC4\u56F2\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Toggle this to customize the text for different progress ranges.":"\u7570\u306A\u308B\u9032\u6357\u7BC4\u56F2\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3059\u308B\u306B\u306F\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Apply Theme":"\u30C6\u30FC\u30DE\u3092\u9069\u7528","Back to main settings":"\u30E1\u30A4\u30F3\u8A2D\u5B9A\u306B\u623B\u308B","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u5F0F\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u3001\u4F8B\u3048\u3070data.percentages\u3092\u4F7F\u7528\u3057\u3066\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u306E\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u3092\u53D6\u5F97\u3059\u308B\u3002\u307E\u305F\u3001\u6570\u5B66\u3084\u7E70\u308A\u8FD4\u3057\u95A2\u6570\u3092\u4F7F\u7528\u3057\u3066\u7D50\u679C\u3092\u53D6\u5F97\u3059\u308B\u3002","Target File:":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\uFF1A","Task Properties":"\u30BF\u30B9\u30AF\u306E\u30D7\u30ED\u30D1\u30C6\u30A3","Start Date":"\u958B\u59CB\u65E5","Due Date":"\u671F\u9650\u65E5","Scheduled Date":"\u4E88\u5B9A\u65E5",Priority:"\u512A\u5148\u5EA6",None:"\u306A\u3057",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D",Context:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8",Recurrence:"\u7E70\u308A\u8FD4\u3057","e.g., every day, every week":"\u4F8B\uFF1A\u6BCE\u65E5\u3001\u6BCE\u9031","Task Content":"\u30BF\u30B9\u30AF\u5185\u5BB9","Task Details":"\u30BF\u30B9\u30AF\u306E\u8A73\u7D30",File:"\u30D5\u30A1\u30A4\u30EB","Edit in File":"\u30D5\u30A1\u30A4\u30EB\u3067\u7DE8\u96C6","Mark Incomplete":"\u672A\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF","Mark Complete":"\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF","Task Title":"\u30BF\u30B9\u30AF\u30BF\u30A4\u30C8\u30EB",Tags:"\u30BF\u30B0","e.g. every day, every 2 weeks":"\u4F8B\uFF1A\u6BCE\u65E5\u30012\u9031\u9593\u3054\u3068",Forecast:"\u4E88\u6E2C","0 actions, 0 projects":"0\u30A2\u30AF\u30B7\u30E7\u30F3\u30010\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Toggle list/tree view":"\u30EA\u30B9\u30C8/\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u306E\u5207\u308A\u66FF\u3048","Focusing on Work":"\u4F5C\u696D\u306B\u96C6\u4E2D",Unfocus:"\u96C6\u4E2D\u89E3\u9664","Past Due":"\u671F\u9650\u8D85\u904E",Today:"\u4ECA\u65E5",Future:"\u5C06\u6765",actions:"\u30A2\u30AF\u30B7\u30E7\u30F3",project:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Coming Up":"\u4ECA\u5F8C\u306E\u4E88\u5B9A",Task:"\u30BF\u30B9\u30AF",Tasks:"\u30BF\u30B9\u30AF","No upcoming tasks":"\u4ECA\u5F8C\u306E\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093","No tasks scheduled":"\u4E88\u5B9A\u3055\u308C\u3066\u3044\u308B\u30BF\u30B9\u30AF\u306F\u3042\u308A\u307E\u305B\u3093","0 tasks":"0\u30BF\u30B9\u30AF","Filter tasks...":"\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30FC...",Projects:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Toggle multi-select":"\u8907\u6570\u9078\u629E\u306E\u5207\u308A\u66FF\u3048","No projects found":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","projects selected":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F",tasks:"\u30BF\u30B9\u30AF","No tasks in the selected projects":"\u9078\u629E\u3057\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Select a project to see related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Configure Review for":"\u30EC\u30D3\u30E5\u30FC\u306E\u8A2D\u5B9A\uFF1A","Review Frequency":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6","How often should this project be reviewed":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u3069\u306E\u304F\u3089\u3044\u306E\u983B\u5EA6\u3067\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u304B","Custom...":"\u30AB\u30B9\u30BF\u30E0...","e.g., every 3 months":"\u4F8B\uFF1A3\u30F6\u6708\u3054\u3068","Last Reviewed":"\u6700\u7D42\u30EC\u30D3\u30E5\u30FC\u65E5","Please specify a review frequency":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","Review schedule updated for":"\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\uFF1A","Review Projects":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30EC\u30D3\u30E5\u30FC","Select a project to review its tasks.":"\u30BF\u30B9\u30AF\u3092\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Configured for Review":"\u30EC\u30D3\u30E5\u30FC\u8A2D\u5B9A\u6E08\u307F","Not Configured":"\u672A\u8A2D\u5B9A","No projects available.":"\u5229\u7528\u53EF\u80FD\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\u3002","Select a project to review.":"\u30EC\u30D3\u30E5\u30FC\u3059\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Show all tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u8868\u793A","Showing all tasks, including completed tasks from previous reviews.":"\u4EE5\u524D\u306E\u30EC\u30D3\u30E5\u30FC\u3067\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3092\u542B\u3080\u3001\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002","Show only new and in-progress tasks":"\u65B0\u898F\u304A\u3088\u3073\u9032\u884C\u4E2D\u306E\u30BF\u30B9\u30AF\u306E\u307F\u8868\u793A","No tasks found for this project.":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","Review every":"\u30EC\u30D3\u30E5\u30FC\u983B\u5EA6",never:"\u306A\u3057","Last reviewed":"\u6700\u7D42\u30EC\u30D3\u30E5\u30FC\u65E5","Mark as Reviewed":"\u30EC\u30D3\u30E5\u30FC\u6E08\u307F\u3068\u3057\u3066\u30DE\u30FC\u30AF","No review schedule configured for this project":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u306F\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Configure Review Schedule":"\u30EC\u30D3\u30E5\u30FC\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3092\u8A2D\u5B9A","Project Review":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EC\u30D3\u30E5\u30FC","Select a project from the left sidebar to review its tasks.":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u9078\u629E\u3057\u3066\u30BF\u30B9\u30AF\u3092\u30EC\u30D3\u30E5\u30FC\u3057\u3066\u304F\u3060\u3055\u3044\u3002",Inbox:"\u53D7\u4FE1\u30C8\u30EC\u30A4",Flagged:"\u30D5\u30E9\u30B0\u4ED8\u304D",Review:"\u30EC\u30D3\u30E5\u30FC","tags selected":"\u30BF\u30B0\u304C\u9078\u629E\u3055\u308C\u307E\u3057\u305F","No tasks with the selected tags":"\u9078\u629E\u3057\u305F\u30BF\u30B0\u306E\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Select a tag to see related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u8868\u793A\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Open Task Genius view":"Task Genius\u30D3\u30E5\u30FC\u3092\u958B\u304F","Task capture with metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D\u30BF\u30B9\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Refresh task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u66F4\u65B0","Refreshing task index...":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u66F4\u65B0\u4E2D...","Task index refreshed":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F","Failed to refresh task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u66F4\u65B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Force reindex all tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5F37\u5236\u7684\u306B\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Clearing task cache and rebuilding index...":"\u30BF\u30B9\u30AF\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u30AF\u30EA\u30A2\u3057\u3066\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9\u4E2D...","Task index completely rebuilt":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5B8C\u5168\u306B\u518D\u69CB\u7BC9\u3055\u308C\u307E\u3057\u305F","Failed to force reindex tasks":"\u30BF\u30B9\u30AF\u306E\u5F37\u5236\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Task Genius View":"Task Genius\u30D3\u30E5\u30FC","Toggle Sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306E\u5207\u308A\u66FF\u3048",Details:"\u8A73\u7D30",View:"\u30D3\u30E5\u30FC","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius\u30D3\u30E5\u30FC\u306F\u3001\u30BF\u30B9\u30AF\u3092\u3088\u308A\u52B9\u7387\u7684\u306B\u7BA1\u7406\u3067\u304D\u308B\u5305\u62EC\u7684\u306A\u30D3\u30E5\u30FC\u3067\u3059\u3002","Enable task genius view":"Task Genius\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Select a task to view details":"\u30BF\u30B9\u30AF\u3092\u9078\u629E\u3057\u3066\u8A73\u7D30\u3092\u8868\u793A",Status:"\u30B9\u30C6\u30FC\u30BF\u30B9","Comma separated":"\u30AB\u30F3\u30DE\u533A\u5207\u308A",Focus:"\u96C6\u4E2D","Loading more...":"\u8AAD\u307F\u8FBC\u307F\u4E2D...",projects:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","No tasks for this section.":"\u3053\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u306B\u306F\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093\u3002","No tasks found.":"\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",Complete:"\u5B8C\u4E86","Switch status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5207\u308A\u66FF\u3048\u308B","Rebuild index":"\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9",Rebuild:"\u518D\u69CB\u7BC9","0 tasks, 0 projects":"0\u30BF\u30B9\u30AF, 0\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","New Custom View":"\u65B0\u3057\u3044\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC","Create Custom View":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u4F5C\u6210","Edit View: ":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6\uFF1A","View Name":"\u30D3\u30E5\u30FC\u540D","My Custom Task View":"\u30DE\u30A4\u30AB\u30B9\u30BF\u30E0\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC","Icon Name":"\u30A2\u30A4\u30B3\u30F3\u540D","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Lucide\u30A2\u30A4\u30B3\u30F3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB","Hide Completed and Abandoned Tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3057\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Hide completed and abandoned tasks in this view.":"\u3053\u306E\u30D3\u30E5\u30FC\u3067\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3057\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A\u306B\u3057\u307E\u3059\u3002","Text Contains":"\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080","Filter tasks whose content includes this text (case-insensitive).":"\u3053\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080\u30BF\u30B9\u30AF\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3057\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Tags Include":"\u30BF\u30B0\u3092\u542B\u3080","Task must include ALL these tags (comma-separated).":"\u30BF\u30B9\u30AF\u306F\u3053\u308C\u3089\u306E\u30BF\u30B0\u3092\u3059\u3079\u3066\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002","Tags Exclude":"\u30BF\u30B0\u3092\u9664\u5916","Task must NOT include ANY of these tags (comma-separated).":"\u30BF\u30B9\u30AF\u306F\u3053\u308C\u3089\u306E\u30BF\u30B0\u306E\u3044\u305A\u308C\u3082\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09\u3002","Project Is":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F","Task must belong to this project (exact match).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u5C5E\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5B8C\u5168\u4E00\u81F4\uFF09\u3002","Priority Is":"\u512A\u5148\u5EA6\u306F","Task must have this priority (e.g., 1, 2, 3).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u512A\u5148\u5EA6\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u542B\u3080","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306F\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30DE\u30FC\u30AB\u30FC\u3001\u4F8B\uFF1A/,>\uFF09\u3002","Status Exclude":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9664\u5916","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u30BF\u30B9\u30AF\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306F\u3053\u308C\u3089\u306E\u3044\u305A\u308C\u3067\u3082\u3042\u3063\u3066\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30DE\u30FC\u30AB\u30FC\u3001\u4F8B\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"YYYY-MM-DD\u5F62\u5F0F\u307E\u305F\u306F\u300C\u4ECA\u65E5\u300D\u3001\u300C\u660E\u65E5\u300D\u3001\u300C\u6765\u9031\u300D\u3001\u300C\u5148\u6708\u300D\u306A\u3069\u306E\u76F8\u5BFE\u7684\u306A\u7528\u8A9E\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Due Date Is":"\u671F\u9650\u65E5\u306F","Start Date Is":"\u958B\u59CB\u65E5\u306F","Scheduled Date Is":"\u4E88\u5B9A\u65E5\u306F","Path Includes":"\u30D1\u30B9\u3092\u542B\u3080","Task must contain this path (case-insensitive).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Path Excludes":"\u30D1\u30B9\u3092\u9664\u5916","Task must NOT contain this path (case-insensitive).":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u307E\u305B\u3093\uFF09\u3002","Unnamed View":"\u540D\u524D\u306E\u306A\u3044\u30D3\u30E5\u30FC","View configuration saved.":"\u30D3\u30E5\u30FC\u8A2D\u5B9A\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F\u3002","Hide Details":"\u8A73\u7D30\u3092\u975E\u8868\u793A","Show Details":"\u8A73\u7D30\u3092\u8868\u793A","View Config":"\u30D3\u30E5\u30FC\u8A2D\u5B9A","View Configuration":"\u30D3\u30E5\u30FC\u8A2D\u5B9A","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Task Genius\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u306E\u8868\u793A\u3001\u9806\u5E8F\u3001\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u306E\u4F5C\u6210\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Manage Views":"\u30D3\u30E5\u30FC\u3092\u7BA1\u7406","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3001\u9806\u5E8F\u3001\u8868\u793A\u3001\u30D3\u30E5\u30FC\u3054\u3068\u306E\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u8868\u793A/\u975E\u8868\u793A\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Show in sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306B\u8868\u793A","Edit View":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6","Move Up":"\u4E0A\u306B\u79FB\u52D5","Move Down":"\u4E0B\u306B\u79FB\u52D5","Delete View":"\u30D3\u30E5\u30FC\u3092\u524A\u9664","Add Custom View":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u8FFD\u52A0","Error: View ID already exists.":"\u30A8\u30E9\u30FC\uFF1A\u30D3\u30E5\u30FCID\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059\u3002",Events:"\u30A4\u30D9\u30F3\u30C8",Plan:"\u30D7\u30E9\u30F3",Year:"\u5E74",Month:"\u6708",Week:"\u9031",Day:"\u65E5",Agenda:"\u30A2\u30B8\u30A7\u30F3\u30C0","Back to categories":"\u30AB\u30C6\u30B4\u30EA\u30FC\u306B\u623B\u308B","No matching options found":"\u4E00\u81F4\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","No matching filters found":"\u4E00\u81F4\u3059\u308B\u30D5\u30A3\u30EB\u30BF\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",Tag:"\u30BF\u30B0","File Path":"\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9","Add filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u8FFD\u52A0","Clear all":"\u3059\u3079\u3066\u30AF\u30EA\u30A2","Add Card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","First Day of Week":"\u9031\u306E\u6700\u521D\u306E\u65E5","Overrides the locale default for calendar views.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u306E\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","Show checkbox":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","Show a checkbox for each task in the kanban view.":"\u304B\u3093\u3070\u3093\u30D3\u30E5\u30FC\u306E\u5404\u30BF\u30B9\u30AF\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A\u3057\u307E\u3059\u3002","Locale Default":"\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8","Use custom goal for progress bar":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u306B\u30AB\u30B9\u30BF\u30E0\u76EE\u6A19\u3092\u4F7F\u7528","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u89AA\u30BF\u30B9\u30AF\u306E\u76EE\u6A19\u3068\u3057\u3066 g::number \u30D1\u30BF\u30FC\u30F3\u3092\u898B\u3064\u3051\u3089\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Prefer metadata format of task":"\u30BF\u30B9\u30AF\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\u3092\u512A\u5148","You can choose dataview format or tasks format, that will influence both index and save format.":"dataview\u5F62\u5F0F\u307E\u305F\u306Ftasks\u5F62\u5F0F\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002\u3053\u308C\u306F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3068\u4FDD\u5B58\u5F62\u5F0F\u306E\u4E21\u65B9\u306B\u5F71\u97FF\u3057\u307E\u3059\u3002","Open in new tab":"\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304F","Open settings":"\u8A2D\u5B9A\u3092\u958B\u304F","Hide in sidebar":"\u30B5\u30A4\u30C9\u30D0\u30FC\u306B\u975E\u8868\u793A","No items found":"\u9805\u76EE\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","High Priority":"\u9AD8\u512A\u5148\u5EA6","Medium Priority":"\u4E2D\u512A\u5148\u5EA6","Low Priority":"\u4F4E\u512A\u5148\u5EA6","No tasks in the selected items":"\u9078\u629E\u3057\u305F\u9805\u76EE\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","View Type":"\u30D3\u30E5\u30FC\u30BF\u30A4\u30D7","Select the type of view to create":"\u4F5C\u6210\u3059\u308B\u30D3\u30E5\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E","Standard View":"\u6A19\u6E96\u30D3\u30E5\u30FC","Two Column View":"2\u5217\u30D3\u30E5\u30FC",Items:"\u9805\u76EE","selected items":"\u9078\u629E\u3055\u308C\u305F\u9805\u76EE","No items selected":"\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Two Column View Settings":"2\u5217\u30D3\u30E5\u30FC\u8A2D\u5B9A","Group by Task Property":"\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u30B0\u30EB\u30FC\u30D7\u5316","Select which task property to use for left column grouping":"\u5DE6\u5217\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u9078\u629E",Priorities:"\u512A\u5148\u5EA6",Contexts:"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8","Due Dates":"\u671F\u9650\u65E5","Scheduled Dates":"\u4E88\u5B9A\u65E5","Start Dates":"\u958B\u59CB\u65E5",Files:"\u30D5\u30A1\u30A4\u30EB","Left Column Title":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Title for the left column (items list)":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB\uFF08\u9805\u76EE\u30EA\u30B9\u30C8\uFF09","Right Column Title":"\u53F3\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Default title for the right column (tasks list)":"\u53F3\u5217\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30BF\u30A4\u30C8\u30EB\uFF08\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\uFF09","Multi-select Text":"\u8907\u6570\u9078\u629E\u30C6\u30AD\u30B9\u30C8","Text to show when multiple items are selected":"\u8907\u6570\u306E\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u305F\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u30C6\u30AD\u30B9\u30C8","Empty State Text":"\u7A7A\u306E\u72B6\u614B\u30C6\u30AD\u30B9\u30C8","Text to show when no items are selected":"\u9805\u76EE\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u306A\u3044\u3068\u304D\u306B\u8868\u793A\u3059\u308B\u30C6\u30AD\u30B9\u30C8","Filter Blanks":"\u7A7A\u767D\u3092\u30D5\u30A3\u30EB\u30BF\u30FC","Filter out blank tasks in this view.":"\u3053\u306E\u30D3\u30E5\u30FC\u3067\u7A7A\u767D\u306E\u30BF\u30B9\u30AF\u3092\u9664\u5916\u3057\u307E\u3059\u3002","Task sorting is disabled or no sort criteria are defined in settings.":"\u30BF\u30B9\u30AF\u306E\u4E26\u3079\u66FF\u3048\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u308B\u304B\u3001\u8A2D\u5B9A\u3067\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\uFF1A#tag1, #tag2, #tag3",Overdue:"\u671F\u9650\u5207\u308C","No tasks found for this tag.":"\u3053\u306E\u30BF\u30B0\u306E\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","New custom view":"\u65B0\u3057\u3044\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC","Create custom view":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u3092\u4F5C\u6210","Edit view: ":"\u30D3\u30E5\u30FC\u3092\u7DE8\u96C6\uFF1A","Icon name":"\u30A2\u30A4\u30B3\u30F3\u540D","First day of week":"\u9031\u306E\u6700\u521D\u306E\u65E5","Overrides the locale default for forecast views.":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u306E\u30ED\u30B1\u30FC\u30EB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002","View type":"\u30D3\u30E5\u30FC\u30BF\u30A4\u30D7","Standard view":"\u6A19\u6E96\u30D3\u30E5\u30FC","Two column view":"2\u5217\u30D3\u30E5\u30FC","Two column view settings":"2\u5217\u30D3\u30E5\u30FC\u8A2D\u5B9A","Group by task property":"\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u30B0\u30EB\u30FC\u30D7\u5316","Left column title":"\u5DE6\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Right column title":"\u53F3\u5217\u306E\u30BF\u30A4\u30C8\u30EB","Empty state text":"\u7A7A\u306E\u72B6\u614B\u30C6\u30AD\u30B9\u30C8","Hide completed and abandoned tasks":"\u5B8C\u4E86\u3057\u305F\u30BF\u30B9\u30AF\u3068\u653E\u68C4\u3055\u308C\u305F\u30BF\u30B9\u30AF\u3092\u975E\u8868\u793A","Filter blanks":"\u7A7A\u767D\u3092\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","Text contains":"\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3080","Tags include":"\u30BF\u30B0\u3092\u542B\u3080","Tags exclude":"\u30BF\u30B0\u3092\u9664\u5916","Project is":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F","Priority is":"\u512A\u5148\u5EA6\u306F","Status include":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u542B\u3080","Status exclude":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u9664\u5916","Due date is":"\u671F\u9650\u65E5\u306F","Start date is":"\u958B\u59CB\u65E5\u306F","Scheduled date is":"\u4E88\u5B9A\u65E5\u306F","Path includes":"\u30D1\u30B9\u3092\u542B\u3080","Path excludes":"\u30D1\u30B9\u3092\u9664\u5916","Sort Criteria":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048\u308B\u9806\u5E8F\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002\u6761\u4EF6\u306F\u9806\u756A\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002","No sort criteria defined. Add criteria below.":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4EE5\u4E0B\u306B\u6761\u4EF6\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",Content:"\u5185\u5BB9",Ascending:"\u6607\u9806",Descending:"\u964D\u9806","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u6607\u9806\uFF1A\u9AD8 -> \u4F4E -> \u306A\u3057\u3002\u964D\u9806\uFF1A\u306A\u3057 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u6607\u9806\uFF1A\u65E9\u3044 -> \u9045\u3044 -> \u306A\u3057\u3002\u964D\u9806\uFF1A\u306A\u3057 -> \u9045\u3044 -> \u65E9\u3044","Ascending respects status order (Overdue first). Descending reverses it.":"\u6607\u9806\u306F\u30B9\u30C6\u30FC\u30BF\u30B9\u9806\uFF08\u671F\u9650\u5207\u308C\u304C\u6700\u521D\uFF09\u3092\u5C0A\u91CD\u3057\u307E\u3059\u3002\u964D\u9806\u306F\u305D\u308C\u3092\u9006\u306B\u3057\u307E\u3059\u3002","Ascending: A-Z. Descending: Z-A":"\u6607\u9806\uFF1AA-Z\u3002\u964D\u9806\uFF1AZ-A","Remove Criterion":"\u6761\u4EF6\u3092\u524A\u9664","Add Sort Criterion":"\u4E26\u3079\u66FF\u3048\u6761\u4EF6\u3092\u8FFD\u52A0","Reset to Defaults":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Has due date":"\u671F\u9650\u65E5\u3042\u308A","Has date":"\u65E5\u4ED8\u3042\u308A","No date":"\u65E5\u4ED8\u306A\u3057",Any:"\u4EFB\u610F","Has start date":"\u958B\u59CB\u65E5\u3042\u308A","Has scheduled date":"\u4E88\u5B9A\u65E5\u3042\u308A","Has created date":"\u4F5C\u6210\u65E5\u3042\u308A","Has completed date":"\u5B8C\u4E86\u65E5\u3042\u308A","Only show tasks that match the completed date.":"\u5B8C\u4E86\u65E5\u306B\u4E00\u81F4\u3059\u308B\u30BF\u30B9\u30AF\u306E\u307F\u3092\u8868\u793A\u3057\u307E\u3059\u3002","Has recurrence":"\u7E70\u308A\u8FD4\u3057\u3042\u308A","Has property":"\u30D7\u30ED\u30D1\u30C6\u30A3\u3042\u308A","No property":"\u30D7\u30ED\u30D1\u30C6\u30A3\u306A\u3057","Unsaved Changes":"\u672A\u4FDD\u5B58\u306E\u5909\u66F4","Sort Tasks in Section":"\u30BB\u30AF\u30B7\u30E7\u30F3\u5185\u306E\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048","Tasks sorted (using settings). Change application needs refinement.":"\u30BF\u30B9\u30AF\u304C\u4E26\u3079\u66FF\u3048\u3089\u308C\u307E\u3057\u305F\uFF08\u8A2D\u5B9A\u3092\u4F7F\u7528\uFF09\u3002\u5909\u66F4\u306E\u9069\u7528\u306B\u306F\u6539\u826F\u304C\u5FC5\u8981\u3067\u3059\u3002","Sort Tasks in Entire Document":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5168\u4F53\u306E\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048","Entire document sorted (using settings).":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5168\u4F53\u304C\u4E26\u3079\u66FF\u3048\u3089\u308C\u307E\u3057\u305F\uFF08\u8A2D\u5B9A\u3092\u4F7F\u7528\uFF09\u3002","Tasks already sorted or no tasks found.":"\u30BF\u30B9\u30AF\u306F\u3059\u3067\u306B\u4E26\u3079\u66FF\u3048\u3089\u308C\u3066\u3044\u308B\u304B\u3001\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002","Task Handler":"\u30BF\u30B9\u30AF\u30CF\u30F3\u30C9\u30E9\u30FC","Show progress bars based on heading":"\u898B\u51FA\u3057\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A","Toggle this to enable showing progress bars based on heading.":"\u898B\u51FA\u3057\u306B\u57FA\u3065\u3044\u3066\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","# heading":"# \u898B\u51FA\u3057","Task Sorting":"\u30BF\u30B9\u30AF\u4E26\u3079\u66FF\u3048","Configure how tasks are sorted in the document.":"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5185\u3067\u30BF\u30B9\u30AF\u304C\u3069\u306E\u3088\u3046\u306B\u4E26\u3079\u66FF\u3048\u3089\u308C\u308B\u304B\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Enable Task Sorting":"\u30BF\u30B9\u30AF\u4E26\u3079\u66FF\u3048\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable commands for sorting tasks.":"\u30BF\u30B9\u30AF\u3092\u4E26\u3079\u66FF\u3048\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Use relative time for date":"\u65E5\u4ED8\u306B\u76F8\u5BFE\u6642\u9593\u3092\u4F7F\u7528","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u30BF\u30B9\u30AF\u30EA\u30B9\u30C8\u30A2\u30A4\u30C6\u30E0\u306E\u65E5\u4ED8\u306B\u76F8\u5BFE\u6642\u9593\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u4F8B\uFF1A'\u6628\u65E5'\u3001'\u4ECA\u65E5'\u3001'\u660E\u65E5'\u3001'2\u65E5\u5F8C'\u3001'3\u30F6\u6708\u524D'\u306A\u3069\u3002","Ignore all tasks behind heading":"\u898B\u51FA\u3057\u306E\u5F8C\u306E\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u7121\u8996","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u7121\u8996\u3059\u308B\u898B\u51FA\u3057\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B\uFF1A'## \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8'\u3001'## \u53D7\u4FE1\u7BB1'\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059","Focus all tasks behind heading":"\u898B\u51FA\u3057\u306E\u5F8C\u306E\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B\u898B\u51FA\u3057\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B\uFF1A'## \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8'\u3001'## \u53D7\u4FE1\u7BB1'\u3001\u30AB\u30F3\u30DE\u3067\u533A\u5207\u308A\u307E\u3059","Enable rewards":"\u5831\u916C\u3092\u6709\u52B9\u306B\u3059\u308B","Reward display type":"\u5831\u916C\u8868\u793A\u30BF\u30A4\u30D7","Choose how rewards are displayed when earned.":"\u7372\u5F97\u6642\u306B\u5831\u916C\u304C\u3069\u306E\u3088\u3046\u306B\u8868\u793A\u3055\u308C\u308B\u304B\u3092\u9078\u629E\u3057\u307E\u3059\u3002","Modal dialog":"\u30E2\u30FC\u30C0\u30EB\u30C0\u30A4\u30A2\u30ED\u30B0","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52D5\u53D7\u3051\u5165\u308C\uFF09","Occurrence levels":"\u51FA\u73FE\u30EC\u30D9\u30EB","Add occurrence level":"\u51FA\u73FE\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0","Reward items":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0","Image url (optional)":"\u753B\u50CFURL\uFF08\u4EFB\u610F\uFF09","Delete reward item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664","Add reward item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u8FFD\u52A0","(Optional) Trigger a notification when this value is reached":"\uFF08\u4EFB\u610F\uFF09\u3053\u306E\u5024\u306B\u9054\u3057\u305F\u3068\u304D\u306B\u901A\u77E5\u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B","The property name in daily note front matter to store mapping values":"\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Value mapping":"\u5024\u306E\u30DE\u30C3\u30D4\u30F3\u30B0","Define mappings from numeric values to display text":"\u6570\u5024\u304B\u3089\u8868\u793A\u30C6\u30AD\u30B9\u30C8\u3078\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u5B9A\u7FA9","Add new mapping":"\u65B0\u3057\u3044\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Scheduled events":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u305F\u30A4\u30D9\u30F3\u30C8","Add multiple events that need to be completed":"\u5B8C\u4E86\u3059\u308B\u5FC5\u8981\u306E\u3042\u308B\u8907\u6570\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0","Event name":"\u30A4\u30D9\u30F3\u30C8\u540D","Event details":"\u30A4\u30D9\u30F3\u30C8\u306E\u8A73\u7D30","Add new event":"\u65B0\u3057\u3044\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0","Please enter a property name":"\u30D7\u30ED\u30D1\u30C6\u30A3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one mapping value":"\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Mapping key must be a number":"\u30DE\u30C3\u30D4\u30F3\u30B0\u30AD\u30FC\u306F\u6570\u5B57\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059","Please enter text for all mapping values":"\u3059\u3079\u3066\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u5024\u306B\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one event":"\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Event name cannot be empty":"\u30A4\u30D9\u30F3\u30C8\u540D\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093","Add new habit":"\u65B0\u3057\u3044\u7FD2\u6163\u3092\u8FFD\u52A0","No habits yet":"\u307E\u3060\u7FD2\u6163\u304C\u3042\u308A\u307E\u305B\u3093","Click the button above to add your first habit":"\u4E0A\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u6700\u521D\u306E\u7FD2\u6163\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044","Habit updated":"\u7FD2\u6163\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F","Habit added":"\u7FD2\u6163\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F","Delete habit":"\u7FD2\u6163\u3092\u524A\u9664","This action cannot be undone.":"\u3053\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093\u3002","Habit deleted":"\u7FD2\u6163\u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F","You've Earned a Reward!":"\u5831\u916C\u3092\u7372\u5F97\u3057\u307E\u3057\u305F\uFF01","Your reward:":"\u3042\u306A\u305F\u306E\u5831\u916C\uFF1A","Image not found:":"\u753B\u50CF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\uFF1A","Claim Reward":"\u5831\u916C\u3092\u53D7\u3051\u53D6\u308B",Skip:"\u30B9\u30AD\u30C3\u30D7",Reward:"\u5831\u916C","View & Index Configuration":"\u30D3\u30E5\u30FC\uFF06\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u8A2D\u5B9A","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Task Genius \u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001Task Genius \u30A4\u30F3\u30C7\u30AF\u30B5\u30FC\u3082\u6709\u52B9\u306B\u306A\u308A\u3001\u4FDD\u7BA1\u5EAB\u5168\u4F53\u304B\u3089 Task Genius \u30D3\u30E5\u30FC\u306E\u7D50\u679C\u304C\u63D0\u4F9B\u3055\u308C\u307E\u3059\u3002","Use daily note path as date":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u3092\u65E5\u4ED8\u3068\u3057\u3066\u4F7F\u7528","If enabled, the daily note path will be used as the date for tasks.":"\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u304C\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u306Fmoment.js\u3068\u3053\u306E\u5F62\u5F0F\u3092\u4F7F\u7528\u3057\u3066\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D1\u30B9\u3092\u89E3\u6790\u3057\u307E\u3059\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5F62\u5F0F\u6587\u5B57\u5217\u3067\u306F `YYYY` \u306E\u4EE3\u308F\u308A\u306B `yyyy` \u3092\u3001`DD` \u306E\u4EE3\u308F\u308A\u306B `dd` \u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Daily note format":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u5F62\u5F0F","Daily note path":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u30D1\u30B9","Select the folder that contains the daily note.":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u3092\u542B\u3080\u30D5\u30A9\u30EB\u30C0\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Use as date type":"\u65E5\u4ED8\u30BF\u30A4\u30D7\u3068\u3057\u3066\u4F7F\u7528","You can choose due, start, or scheduled as the date type for tasks.":"\u30BF\u30B9\u30AF\u306E\u65E5\u4ED8\u30BF\u30A4\u30D7\u3068\u3057\u3066\u3001\u671F\u9650\u3001\u958B\u59CB\u3001\u307E\u305F\u306F\u4E88\u5B9A\u3092\u9078\u629E\u3067\u304D\u307E\u3059\u3002",Due:"\u671F\u9650",Start:"\u958B\u59CB",Scheduled:"\u4E88\u5B9A",Rewards:"\u5831\u916C","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u30BF\u30B9\u30AF\u5B8C\u4E86\u306E\u5831\u916C\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30A2\u30A4\u30C6\u30E0\u3001\u51FA\u73FE\u78BA\u7387\u3001\u6761\u4EF6\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Enable Rewards":"\u5831\u916C\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle to enable or disable the reward system.":"\u5831\u916C\u30B7\u30B9\u30C6\u30E0\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Occurrence Levels":"\u51FA\u73FE\u30EC\u30D9\u30EB","Define different levels of reward rarity and their probability.":"\u5831\u916C\u306E\u30EC\u30A2\u5EA6\u3068\u305D\u306E\u78BA\u7387\u306E\u7570\u306A\u308B\u30EC\u30D9\u30EB\u3092\u5B9A\u7FA9\u3057\u307E\u3059\u3002","Chance must be between 0 and 100.":"\u78BA\u7387\u306F0\u304B\u3089100\u306E\u9593\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Level Name (e.g., common)":"\u30EC\u30D9\u30EB\u540D\uFF08\u4F8B\uFF1A\u4E00\u822C\uFF09","Chance (%)":"\u78BA\u7387\uFF08%\uFF09","Delete Level":"\u30EC\u30D9\u30EB\u3092\u524A\u9664","Add Occurrence Level":"\u51FA\u73FE\u30EC\u30D9\u30EB\u3092\u8FFD\u52A0","New Level":"\u65B0\u3057\u3044\u30EC\u30D9\u30EB","Reward Items":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0","Manage the specific rewards that can be obtained.":"\u7372\u5F97\u3067\u304D\u308B\u7279\u5B9A\u306E\u5831\u916C\u3092\u7BA1\u7406\u3057\u307E\u3059\u3002","No levels defined":"\u30EC\u30D9\u30EB\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Reward Name/Text":"\u5831\u916C\u540D/\u30C6\u30AD\u30B9\u30C8","Inventory (-1 for \u221E)":"\u5728\u5EAB\uFF08-1\u3067\u221E\uFF09","Invalid inventory number.":"\u7121\u52B9\u306A\u5728\u5EAB\u6570\u3067\u3059\u3002","Condition (e.g., #tag AND project)":"\u6761\u4EF6\uFF08\u4F8B\uFF1A#\u30BF\u30B0 AND \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09","Image URL (optional)":"\u753B\u50CFURL\uFF08\u4EFB\u610F\uFF09","Delete Reward Item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664","No reward items defined yet.":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u304C\u307E\u3060\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Add Reward Item":"\u5831\u916C\u30A2\u30A4\u30C6\u30E0\u3092\u8FFD\u52A0","New Reward":"\u65B0\u3057\u3044\u5831\u916C","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u7FD2\u6163\u8A2D\u5B9A\u3092\u69CB\u6210\u3057\u307E\u3059\u3002\u65B0\u3057\u3044\u7FD2\u6163\u306E\u8FFD\u52A0\u3001\u65E2\u5B58\u306E\u7FD2\u6163\u306E\u7DE8\u96C6\u3001\u7FD2\u6163\u306E\u5B8C\u4E86\u7BA1\u7406\u3092\u542B\u307F\u307E\u3059\u3002","Enable habits":"\u7FD2\u6163\u3092\u6709\u52B9\u306B\u3059\u308B","Just started":"\u958B\u59CB\u3057\u305F\u3070\u304B\u308A","Making progress":"\u9032\u884C\u4E2D","Half way":"\u534A\u5206\u5B8C\u4E86","Good progress":"\u9806\u8ABF\u306B\u9032\u884C","Almost there":"\u3082\u3046\u3059\u3050\u5B8C\u4E86","archived on":"\u30A2\u30FC\u30AB\u30A4\u30D6\u65E5",moved:"\u79FB\u52D5\u6E08\u307F","moved on":"\u79FB\u52D5\u65E5","Capture your thoughts...":"\u601D\u8003\u3092\u8A18\u9332...","Project Workflow":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Standard project management workflow":"\u6A19\u6E96\u7684\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",Planning:"\u8A08\u753B",Development:"\u958B\u767A",Testing:"\u30C6\u30B9\u30C8",Cancelled:"\u30AD\u30E3\u30F3\u30BB\u30EB",Habit:"\u7FD2\u6163","Drink a cup of good tea":"\u7F8E\u5473\u3057\u3044\u304A\u8336\u3092\u4E00\u676F\u98F2\u3080","Watch an episode of a favorite series":"\u304A\u6C17\u306B\u5165\u308A\u306E\u30B7\u30EA\u30FC\u30BA\u3092\u4E00\u8A71\u898B\u308B","Play a game":"\u30B2\u30FC\u30E0\u3092\u3059\u308B","Eat a piece of chocolate":"\u30C1\u30E7\u30B3\u30EC\u30FC\u30C8\u3092\u4E00\u53E3\u98DF\u3079\u308B",common:"\u4E00\u822C",rare:"\u30EC\u30A2",legendary:"\u30EC\u30B8\u30A7\u30F3\u30C0\u30EA\u30FC","No Habits Yet":"\u7FD2\u6163\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093","Click the open habit button to create a new habit.":"\u7FD2\u6163\u3092\u958B\u304F\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u65B0\u3057\u3044\u7FD2\u6163\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Please enter details":"\u8A73\u7D30\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Goal reached":"\u76EE\u6A19\u9054\u6210","Exceeded goal":"\u76EE\u6A19\u8D85\u904E",Active:"\u30A2\u30AF\u30C6\u30A3\u30D6",today:"\u4ECA\u65E5",Inactive:"\u975E\u30A2\u30AF\u30C6\u30A3\u30D6","All Done!":"\u3059\u3079\u3066\u5B8C\u4E86\uFF01","Select event...":"\u30A4\u30D9\u30F3\u30C8\u3092\u9078\u629E...","Create new habit":"\u65B0\u3057\u3044\u7FD2\u6163\u3092\u4F5C\u6210","Edit habit":"\u7FD2\u6163\u3092\u7DE8\u96C6","Habit type":"\u7FD2\u6163\u30BF\u30A4\u30D7","Daily habit":"\u65E5\u6B21\u7FD2\u6163","Simple daily check-in habit":"\u30B7\u30F3\u30D7\u30EB\u306A\u65E5\u6B21\u30C1\u30A7\u30C3\u30AF\u30A4\u30F3\u7FD2\u6163","Count habit":"\u30AB\u30A6\u30F3\u30C8\u7FD2\u6163","Record numeric values, e.g., how many cups of water":"\u6570\u5024\u3092\u8A18\u9332\u3001\u4F8B\uFF1A\u6C34\u3092\u4F55\u676F\u98F2\u3093\u3060\u304B","Mapping habit":"\u30DE\u30C3\u30D4\u30F3\u30B0\u7FD2\u6163","Use different values to map, e.g., emotion tracking":"\u7570\u306A\u308B\u5024\u3092\u30DE\u30C3\u30D4\u30F3\u30B0\u3001\u4F8B\uFF1A\u611F\u60C5\u8FFD\u8DE1","Scheduled habit":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u7FD2\u6163","Habit with multiple events":"\u8907\u6570\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u6301\u3064\u7FD2\u6163","Habit name":"\u7FD2\u6163\u540D","Display name of the habit":"\u7FD2\u6163\u306E\u8868\u793A\u540D","Optional habit description":"\u7FD2\u6163\u306E\u8AAC\u660E\uFF08\u4EFB\u610F\uFF09",Icon:"\u30A2\u30A4\u30B3\u30F3","Please enter a habit name":"\u7FD2\u6163\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Property name":"\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","The property name of the daily note front matter":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Completion text":"\u5B8C\u4E86\u30C6\u30AD\u30B9\u30C8","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u4EFB\u610F\uFF09\u5B8C\u4E86\u3092\u8868\u3059\u7279\u5B9A\u306E\u30C6\u30AD\u30B9\u30C8\u3001\u7A7A\u767D\u306E\u307E\u307E\u306B\u3059\u308B\u3068\u7A7A\u3067\u306A\u3044\u5024\u304C\u5B8C\u4E86\u3068\u307F\u306A\u3055\u308C\u307E\u3059","The property name in daily note front matter to store count values":"\u30AB\u30A6\u30F3\u30C8\u5024\u3092\u4FDD\u5B58\u3059\u308B\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306E\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u540D","Minimum value":"\u6700\u5C0F\u5024","(Optional) Minimum value for the count":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u6700\u5C0F\u5024","Maximum value":"\u6700\u5927\u5024","(Optional) Maximum value for the count":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u6700\u5927\u5024",Unit:"\u5358\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u4EFB\u610F\uFF09\u30AB\u30A6\u30F3\u30C8\u306E\u5358\u4F4D\u3001\u4F8B\uFF1A\u300C\u676F\u300D\u3001\u300C\u56DE\u300D\u306A\u3069","Notice threshold":"\u901A\u77E5\u3057\u304D\u3044\u5024","Priority (High to Low)":"\u512A\u5148\u5EA6\uFF08\u9AD8\u304B\u3089\u4F4E\uFF09","Priority (Low to High)":"\u512A\u5148\u5EA6\uFF08\u4F4E\u304B\u3089\u9AD8\uFF09","Due Date (Earliest First)":"\u671F\u9650\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Due Date (Latest First)":"\u671F\u9650\u65E5\uFF08\u9045\u3044\u9806\uFF09","Scheduled Date (Earliest First)":"\u4E88\u5B9A\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Scheduled Date (Latest First)":"\u4E88\u5B9A\u65E5\uFF08\u9045\u3044\u9806\uFF09","Start Date (Earliest First)":"\u958B\u59CB\u65E5\uFF08\u65E9\u3044\u9806\uFF09","Start Date (Latest First)":"\u958B\u59CB\u65E5\uFF08\u9045\u3044\u9806\uFF09","Created Date":"\u4F5C\u6210\u65E5",Overview:"\u6982\u8981",Dates:"\u65E5\u4ED8","e.g. #tag1, #tag2":"\u4F8B\uFF1A#\u30BF\u30B01, #\u30BF\u30B02","e.g. @home, @work":"\u4F8B\uFF1A@\u5BB6, @\u8077\u5834","Recurrence Rule":"\u7E70\u308A\u8FD4\u3057\u30EB\u30FC\u30EB","e.g. every day, every week":"\u4F8B\uFF1A\u6BCE\u65E5\u3001\u6BCE\u9031","Edit Task":"\u30BF\u30B9\u30AF\u3092\u7DE8\u96C6","Save Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u4FDD\u5B58","Filter Configuration Name":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u540D","Enter a name for this filter configuration":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Filter Configuration Description":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAC\u660E","Enter a description for this filter configuration (optional)":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAC\u660E\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4EFB\u610F\uFF09","Load Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u8AAD\u307F\u8FBC\u307F","No saved filter configurations":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u305B\u3093","Select a saved filter configuration":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",Load:"\u8AAD\u307F\u8FBC\u307F",Created:"\u4F5C\u6210\u6E08\u307F",Updated:"\u66F4\u65B0\u6E08\u307F","Filter Summary":"\u30D5\u30A3\u30EB\u30BF\u30FC\u6982\u8981","filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7",filter:"\u30D5\u30A3\u30EB\u30BF\u30FC","Root condition":"\u30EB\u30FC\u30C8\u6761\u4EF6","Filter configuration name is required":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u540D\u306F\u5FC5\u9808\u3067\u3059","Failed to save filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Filter configuration saved successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F","Failed to load filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Filter configuration loaded successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F","Failed to delete filter configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u306E\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Delete Filter Configuration":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u524A\u9664","Are you sure you want to delete this filter configuration?":"\u3053\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Filter configuration deleted successfully":"\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F",Match:"\u4E00\u81F4",All:"\u3059\u3079\u3066","Add filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u8FFD\u52A0","Save Current Filter":"\u73FE\u5728\u306E\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u4FDD\u5B58","Load Saved Filter":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u8AAD\u307F\u8FBC\u307F","filter in this group":"\u3053\u306E\u30B0\u30EB\u30FC\u30D7\u306E\u30D5\u30A3\u30EB\u30BF\u30FC","Duplicate filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u8907\u88FD","Remove filter group":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30B0\u30EB\u30FC\u30D7\u3092\u524A\u9664",OR:"\u307E\u305F\u306F","AND NOT":"\u304B\u3064\u301C\u3067\u306A\u3044",AND:"\u304B\u3064","Remove filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u524A\u9664",contains:"\u542B\u3080","does not contain":"\u542B\u307E\u306A\u3044",is:"\u3067\u3042\u308B","is not":"\u3067\u306A\u3044","starts with":"\u3067\u59CB\u307E\u308B","ends with":"\u3067\u7D42\u308F\u308B","is empty":"\u7A7A\u3067\u3042\u308B","is not empty":"\u7A7A\u3067\u306A\u3044","is true":"\u771F\u3067\u3042\u308B","is false":"\u507D\u3067\u3042\u308B","is set":"\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B","is not set":"\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044",equals:"\u7B49\u3057\u3044",NOR:"\u3069\u3061\u3089\u3067\u3082\u306A\u3044","Group by":"\u30B0\u30EB\u30FC\u30D7\u5316","Select which task property to use for creating columns":"\u5217\u3092\u4F5C\u6210\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30BF\u30B9\u30AF\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Hide empty columns":"\u7A7A\u306E\u5217\u3092\u975E\u8868\u793A","Hide columns that have no tasks.":"\u30BF\u30B9\u30AF\u304C\u306A\u3044\u5217\u3092\u975E\u8868\u793A\u306B\u3057\u307E\u3059\u3002","Default sort field":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BD\u30FC\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9","Default field to sort tasks by within each column.":"\u5404\u5217\u5185\u3067\u30BF\u30B9\u30AF\u3092\u30BD\u30FC\u30C8\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9\u3002","Default sort order":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BD\u30FC\u30C8\u9806","Default order to sort tasks within each column.":"\u5404\u5217\u5185\u3067\u30BF\u30B9\u30AF\u3092\u30BD\u30FC\u30C8\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u9806\u5E8F\u3002","Custom Columns":"\u30AB\u30B9\u30BF\u30E0\u5217","Configure custom columns for the selected grouping property":"\u9078\u629E\u3057\u305F\u30B0\u30EB\u30FC\u30D7\u5316\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u30AB\u30B9\u30BF\u30E0\u5217\u3092\u8A2D\u5B9A","No custom columns defined. Add columns below.":"\u30AB\u30B9\u30BF\u30E0\u5217\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4E0B\u306B\u5217\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Column Title":"\u5217\u30BF\u30A4\u30C8\u30EB",Value:"\u5024","Remove Column":"\u5217\u3092\u524A\u9664","Add Column":"\u5217\u3092\u8FFD\u52A0","New Column":"\u65B0\u3057\u3044\u5217","Reset Columns":"\u5217\u3092\u30EA\u30BB\u30C3\u30C8","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u512A\u5148\u5EA6\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B\uFF1A1\u30012\u30013\uFF09\u3002\u512A\u5148\u5EA6\u306E\u306A\u3044\u30BF\u30B9\u30AF\u3092\u9664\u5916\u3059\u308B\u305F\u3081\u306B\u300Cnone\u300D\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09\u3002\u8907\u6570\u306E\u30D1\u30B9\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u30BF\u30B9\u30AF\u306F\u3053\u306E\u30D1\u30B9\u3092\u542B\u3093\u3067\u306F\u3044\u3051\u307E\u305B\u3093\uFF08\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3057\u306A\u3044\uFF09\u3002\u8907\u6570\u306E\u30D1\u30B9\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044\u3002","You have unsaved changes. Save before closing?":"\u672A\u4FDD\u5B58\u306E\u5909\u66F4\u304C\u3042\u308A\u307E\u3059\u3002\u9589\u3058\u308B\u524D\u306B\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F","From now":"\u4ECA\u304B\u3089","Complete workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u5B8C\u4E86","Move to":"\u79FB\u52D5\u5148","Move all incomplete subtasks to another file":"\u3059\u3079\u3066\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5","Move direct incomplete subtasks to another file":"\u76F4\u63A5\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5",Filter:"\u30D5\u30A3\u30EB\u30BF\u30FC","Reset Filter":"\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u30EA\u30BB\u30C3\u30C8",Settings:"\u8A2D\u5B9A","Saved Filters":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC","Manage Saved Filters":"\u4FDD\u5B58\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u7BA1\u7406",Reindex:"\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Are you sure you want to force reindex all tasks?":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u5F37\u5236\u7684\u306B\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Filter applied: ":"\u9069\u7528\u3055\u308C\u305F\u30D5\u30A3\u30EB\u30BF\u30FC\uFF1A","Enable progress bar in reading mode":"\u8AAD\u307F\u53D6\u308A\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to allow this plugin to show progress bars in reading mode.":"\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u8AAD\u307F\u53D6\u308A\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3092\u8868\u793A\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002",Range:"\u7BC4\u56F2","as a placeholder for the percentage value":"\u30D1\u30FC\u30BB\u30F3\u30C6\u30FC\u30B8\u5024\u306E\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3068\u3057\u3066","Template text with":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30C6\u30AD\u30B9\u30C8",placeholder:"\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC","Recurrence date calculation":"\u7E70\u308A\u8FD4\u3057\u65E5\u4ED8\u8A08\u7B97","Choose how to calculate the next date for recurring tasks":"\u7E70\u308A\u8FD4\u3057\u30BF\u30B9\u30AF\u306E\u6B21\u306E\u65E5\u4ED8\u306E\u8A08\u7B97\u65B9\u6CD5\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Based on due date":"\u671F\u9650\u65E5\u306B\u57FA\u3065\u304F","Based on scheduled date":"\u4E88\u5B9A\u65E5\u306B\u57FA\u3065\u304F","Based on current date":"\u73FE\u5728\u306E\u65E5\u4ED8\u306B\u57FA\u3065\u304F","Task Gutter":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC","Configure the task gutter.":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002","Enable task gutter":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable the task gutter.":"\u30BF\u30B9\u30AF\u30AC\u30BF\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Incomplete Task Mover":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u6A5F\u80FD","Enable incomplete task mover":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u79FB\u52D5\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable commands for moving incomplete tasks to another file.":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u5225\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u79FB\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002","Incomplete task marker type":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u30DE\u30FC\u30AB\u30FC\u30BF\u30A4\u30D7","Choose what type of marker to add to moved incomplete tasks":"\u79FB\u52D5\u3057\u305F\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30DE\u30FC\u30AB\u30FC\u306E\u30BF\u30A4\u30D7\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044","Incomplete version marker text":"\u672A\u5B8C\u4E86\u30D0\u30FC\u30B8\u30E7\u30F3\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u6642\u306B\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u4E86\u65E5\u4ED8\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52D5\u6642\u306B\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u8FFD\u52A0\u3059\u308B\u30C6\u30AD\u30B9\u30C8\uFF08\u4F8B\uFF1A'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u4E86\u30AB\u30B9\u30BF\u30E0\u30DE\u30FC\u30AB\u30FC\u30C6\u30AD\u30B9\u30C8","With current file link for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u30EA\u30F3\u30AF\u3092\u4ED8\u3051\u308B","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u79FB\u52D5\u3057\u305F\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u89AA\u30BF\u30B9\u30AF\u306B\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30EA\u30F3\u30AF\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002","Line Number":"\u884C\u756A\u53F7","Clear Date":"\u65E5\u4ED8\u3092\u30AF\u30EA\u30A2","Copy view":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC","View copied successfully: ":"\u30D3\u30E5\u30FC\u306E\u30B3\u30D4\u30FC\u304C\u6210\u529F\u3057\u307E\u3057\u305F\uFF1A","Copy of ":"\u30B3\u30D4\u30FC ","Copy view: ":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC\uFF1A","Creating a copy based on: ":"\u4EE5\u4E0B\u306B\u57FA\u3065\u3044\u3066\u30B3\u30D4\u30FC\u3092\u4F5C\u6210\u4E2D\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u4EE5\u4E0B\u306E\u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u5909\u66F4\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u30D3\u30E5\u30FC\u306F\u5909\u66F4\u3055\u308C\u307E\u305B\u3093\u3002","Tasks Plugin Detected":"Tasks\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u73FE\u5728\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u7BA1\u7406\u3068\u65E5\u4ED8\u7BA1\u7406\u306FTasks\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u7AF6\u5408\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","compatibility documentation":"\u4E92\u63DB\u6027\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8"," for more information.":"\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Auto Date Manager":"\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406","Automatically manage dates based on task status changes":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u306B\u57FA\u3065\u3044\u3066\u65E5\u4ED8\u3092\u81EA\u52D5\u7BA1\u7406","Enable auto date manager":"\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306E\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B\u30C8\u30B0\u30EB\u3002\u65E5\u4ED8\u306F\u3001\u304A\u597D\u307F\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\uFF08Tasks\u7D75\u6587\u5B57\u5F62\u5F0F\u307E\u305F\u306FDataview\u5F62\u5F0F\uFF09\u306B\u57FA\u3065\u3044\u3066\u8FFD\u52A0/\u524A\u9664\u3055\u308C\u307E\u3059\u3002","Manage completion dates":"\u5B8C\u4E86\u65E5\u3092\u7BA1\u7406","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u5B8C\u4E86\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Manage start dates":"\u958B\u59CB\u65E5\u3092\u7BA1\u7406","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u9032\u884C\u4E2D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u958B\u59CB\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Manage cancelled dates":"\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5\u3092\u7BA1\u7406","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u30BF\u30B9\u30AF\u304C\u653E\u68C4\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3055\u308C\u305F\u3068\u304D\u306B\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3001\u4ED6\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u524A\u9664\u3057\u307E\u3059\u3002","Copy View":"\u30D3\u30E5\u30FC\u3092\u30B3\u30D4\u30FC",Beta:"\u30D9\u30FC\u30BF","Beta Test Features":"\u30D9\u30FC\u30BF\u30C6\u30B9\u30C8\u6A5F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u73FE\u5728\u30C6\u30B9\u30C8\u6BB5\u968E\u306B\u3042\u308B\u5B9F\u9A13\u7684\u6A5F\u80FD\u3067\u3059\u3002\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306F\u4E0D\u5B89\u5B9A\u3067\u3001\u5C06\u6765\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u5909\u66F4\u307E\u305F\u306F\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Beta Features Warning":"\u30D9\u30FC\u30BF\u6A5F\u80FD\u306E\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306F\u5B9F\u9A13\u7684\u3067\u4E0D\u5B89\u5B9A\u306A\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002Obsidian API\u306E\u5909\u66F4\u3084\u305D\u306E\u4ED6\u306E\u8981\u56E0\u306B\u3088\u308A\u3001\u5C06\u6765\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u5927\u5E45\u306B\u5909\u66F4\u307E\u305F\u306F\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u6CE8\u610F\u3057\u3066\u3054\u4F7F\u7528\u3044\u305F\u3060\u304D\u3001\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306E\u6539\u5584\u306B\u3054\u5354\u529B\u304F\u3060\u3055\u3044\u3002","Base View":"\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306ETask Genius\u30D3\u30E5\u30FC\u3092\u8FFD\u52A0\u6A5F\u80FD\u3067\u62E1\u5F35\u3059\u308B\u9AD8\u5EA6\u306A\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3067\u3059\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u5B9F\u9A13\u7684\u306A\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002\u3053\u306E\u6A5F\u80FD\u306F\u5F37\u5316\u3055\u308C\u305F\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3092\u63D0\u4F9B\u3057\u307E\u3059\u304C\u3001\u5C06\u6765\u306EObsidian API\u306E\u5909\u66F4\u306B\u3088\u308A\u5F71\u97FF\u3092\u53D7\u3051\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u5909\u66F4\u3092\u78BA\u8A8D\u3059\u308B\u305F\u3081\u306BObsidian\u306E\u518D\u8D77\u52D5\u304C\u5FC5\u8981\u306A\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u3053\u306E\u6A5F\u80FD\u3092\u7121\u52B9\u306B\u3059\u308B\u969B\u3001\u65E2\u306B\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3092\u4F5C\u6210\u3057\u3066\u3044\u308B\u5834\u5408\u306F\u3001\u3059\u3079\u3066\u306E\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u3092\u9589\u3058\u3001\u624B\u52D5\u3067\u7DE8\u96C6\u3057\u3066\u672A\u4F7F\u7528\u306E\u30D3\u30E5\u30FC\u3092\u524A\u9664\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002","Enable Base View":"\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u5B9F\u9A13\u7684\u306A\u30D9\u30FC\u30B9\u30D3\u30E5\u30FC\u6A5F\u80FD\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\u3002\u3053\u306E\u6A5F\u80FD\u306F\u5F37\u5316\u3055\u308C\u305F\u30D3\u30E5\u30FC\u7BA1\u7406\u6A5F\u80FD\u3092\u63D0\u4F9B\u3057\u307E\u3059\u304C\u3001\u5C06\u6765\u306EObsidian API\u306E\u5909\u66F4\u306B\u3088\u308A\u5F71\u97FF\u3092\u53D7\u3051\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",Enable:"\u6709\u52B9\u306B\u3059\u308B","Beta Feedback":"\u30D9\u30FC\u30BF\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF","Help improve these features by providing feedback on your experience.":"\u3054\u5229\u7528\u4F53\u9A13\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u63D0\u4F9B\u3057\u3066\u3001\u3053\u308C\u3089\u306E\u6A5F\u80FD\u306E\u6539\u5584\u306B\u3054\u5354\u529B\u304F\u3060\u3055\u3044\u3002","Report Issues":"\u554F\u984C\u3092\u5831\u544A","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u30D9\u30FC\u30BF\u6A5F\u80FD\u3067\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u306F\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u6539\u5584\u306E\u305F\u3081\u306B\u5831\u544A\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Report Issue":"\u554F\u984C\u3092\u5831\u544A",Table:"\u30C6\u30FC\u30D6\u30EB","No Priority":"\u512A\u5148\u5EA6\u306A\u3057","Click to select date":"\u65E5\u4ED8\u3092\u9078\u629E\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","Enter tags separated by commas":"\u30BF\u30B0\u3092\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u5165\u529B","Enter project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u5165\u529B","Enter context":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B","Invalid value":"\u7121\u52B9\u306A\u5024","No tasks":"\u30BF\u30B9\u30AF\u306A\u3057","1 task":"1\u3064\u306E\u30BF\u30B9\u30AF",Columns:"\u5217","Toggle column visibility":"\u5217\u306E\u8868\u793A\u3092\u5207\u308A\u66FF\u3048","Switch to List Mode":"\u30EA\u30B9\u30C8\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048","Switch to Tree Mode":"\u30C4\u30EA\u30FC\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048",Collapse:"\u6298\u308A\u305F\u305F\u3080",Expand:"\u5C55\u958B","Collapse subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u6298\u308A\u305F\u305F\u3080","Expand subtasks":"\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u5C55\u958B","Click to change status":"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","Click to set priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF",Yesterday:"\u6628\u65E5","Click to edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6\u3059\u308B\u306B\u306F\u30AF\u30EA\u30C3\u30AF","No tags":"\u30BF\u30B0\u306A\u3057","Click to open file":"\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u306B\u306F\u30AF\u30EA\u30C3\u30AF","No tasks found":"\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Completed Date":"\u5B8C\u4E86\u65E5","Loading...":"\u8AAD\u307F\u8FBC\u307F\u4E2D...","Advanced Filtering":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0","Use advanced multi-group filtering with complex conditions":"\u8907\u96D1\u306A\u6761\u4EF6\u306B\u3088\u308B\u9AD8\u5EA6\u306A\u30DE\u30EB\u30C1\u30B0\u30EB\u30FC\u30D7\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3092\u4F7F\u7528","Auto-moved":"\u81EA\u52D5\u79FB\u52D5\u6E08\u307F","tasks to":"\u4EF6\u306E\u30BF\u30B9\u30AF\u3092","Failed to auto-move tasks:":"\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u306B\u5931\u6557\uFF1A","Workflow created successfully":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u6B63\u5E38\u306B\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","No task structure found at cursor position":"\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E\u306B\u30BF\u30B9\u30AF\u69CB\u9020\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Use similar existing workflow":"\u985E\u4F3C\u306E\u65E2\u5B58\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F7F\u7528","Create new workflow":"\u65B0\u3057\u3044\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","No workflows defined. Create a workflow first.":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u307E\u305A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Workflow task created":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30BF\u30B9\u30AF\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Task converted to workflow root":"\u30BF\u30B9\u30AF\u304C\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB\u3055\u308C\u307E\u3057\u305F","Failed to convert task":"\u30BF\u30B9\u30AF\u306E\u5909\u63DB\u306B\u5931\u6557\u3057\u307E\u3057\u305F","No workflows to duplicate":"\u8907\u88FD\u3059\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u3042\u308A\u307E\u305B\u3093",Duplicate:"\u8907\u88FD","Workflow duplicated and saved":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u8907\u88FD\u3055\u308C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F","Workflow created from task structure":"\u30BF\u30B9\u30AF\u69CB\u9020\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Create Quick Workflow":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Convert Task to Workflow":"\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u5909\u63DB","Convert to Workflow Root":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB","Start Workflow Here":"\u3053\u3053\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB","Duplicate Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8907\u88FD","Simple Linear Workflow":"\u30B7\u30F3\u30D7\u30EB\u306A\u7DDA\u5F62\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","A basic linear workflow with sequential stages":"\u9806\u6B21\u30B9\u30C6\u30FC\u30B8\u3092\u6301\u3064\u57FA\u672C\u7684\u306A\u7DDA\u5F62\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","To Do":"ToDo",Done:"\u5B8C\u4E86","Project Management":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406",Coding:"\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0","Research Process":"\u7814\u7A76\u30D7\u30ED\u30BB\u30B9","Academic or professional research workflow":"\u5B66\u8853\u307E\u305F\u306F\u5C02\u9580\u7814\u7A76\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Literature Review":"\u6587\u732E\u30EC\u30D3\u30E5\u30FC","Data Collection":"\u30C7\u30FC\u30BF\u53CE\u96C6",Analysis:"\u5206\u6790",Writing:"\u57F7\u7B46",Published:"\u516C\u958B\u6E08\u307F","Custom Workflow":"\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Create a custom workflow from scratch":"\u30BC\u30ED\u304B\u3089\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Quick Workflow Creation":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4F5C\u6210","Workflow Template":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","Choose a template to start with or create a custom workflow":"\u958B\u59CB\u3059\u308B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u30AB\u30B9\u30BF\u30E0\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow Name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D","A descriptive name for your workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Enter workflow name":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D\u3092\u5165\u529B","Unique identifier (auto-generated from name)":"\u4E00\u610F\u8B58\u5225\u5B50\uFF08\u540D\u524D\u304B\u3089\u81EA\u52D5\u751F\u6210\uFF09","Optional description of the workflow purpose":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u76EE\u7684\u306E\u8AAC\u660E\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Describe your workflow...":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8AAC\u660E\u3057\u3066\u304F\u3060\u3055\u3044...","Preview of workflow stages (edit after creation for advanced options)":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\uFF08\u9AD8\u5EA6\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u4F5C\u6210\u5F8C\u306B\u7DE8\u96C6\uFF09","Add Stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0","No stages defined. Choose a template or add stages manually.":"\u30B9\u30C6\u30FC\u30B8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u624B\u52D5\u3067\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Remove stage":"\u30B9\u30C6\u30FC\u30B8\u3092\u524A\u9664","Create Workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Please provide a workflow name and ID":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u540D\u3068ID\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please add at least one stage to the workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u5C11\u306A\u304F\u3068\u30821\u3064\u306E\u30B9\u30C6\u30FC\u30B8\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044",Discord:"Discord","Chat with us":"\u30C1\u30E3\u30C3\u30C8\u3067\u304A\u8A71\u3057\u3057\u307E\u3057\u3087\u3046","Open Discord":"Discord \u3092\u958B\u304F","Task Genius icons are designed by":"Task Genius \u30A2\u30A4\u30B3\u30F3\u306F\u30C7\u30B6\u30A4\u30F3\uFF1A","Task Genius Icons":"Task Genius \u30A2\u30A4\u30B3\u30F3","ICS Calendar Integration":"ICS \u30AB\u30EC\u30F3\u30C0\u30FC\u7D71\u5408","Configure external calendar sources to display events in your task views.":"\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3067\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u305F\u3081\u306E\u5916\u90E8\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u3002","Add New Calendar Source":"\u65B0\u3057\u3044\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0","Global Settings":"\u30B0\u30ED\u30FC\u30D0\u30EB\u8A2D\u5B9A","Enable Background Refresh":"\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u66F4\u65B0\u3092\u6709\u52B9\u5316","Automatically refresh calendar sources in the background":"\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u81EA\u52D5\u7684\u306B\u66F4\u65B0","Global Refresh Interval":"\u30B0\u30ED\u30FC\u30D0\u30EB\u66F4\u65B0\u9593\u9694","Default refresh interval for all sources (minutes)":"\u3059\u3079\u3066\u306E\u30BD\u30FC\u30B9\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u66F4\u65B0\u9593\u9694\uFF08\u5206\uFF09","Maximum Cache Age":"\u6700\u5927\u30AD\u30E3\u30C3\u30B7\u30E5\u671F\u9593","How long to keep cached data (hours)":"\u30AD\u30E3\u30C3\u30B7\u30E5\u30C7\u30FC\u30BF\u306E\u4FDD\u5B58\u671F\u9593\uFF08\u6642\u9593\uFF09","Network Timeout":"\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8","Request timeout in seconds":"\u30EA\u30AF\u30A8\u30B9\u30C8\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u79D2\uFF09","Max Events Per Source":"\u30BD\u30FC\u30B9\u3042\u305F\u308A\u306E\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Maximum number of events to load from each source":"\u5404\u30BD\u30FC\u30B9\u304B\u3089\u8AAD\u307F\u8FBC\u3080\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Default Event Color":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A4\u30D9\u30F3\u30C8\u8272","Default color for events without a specific color":"\u7279\u5B9A\u306E\u8272\u304C\u306A\u3044\u30A4\u30D9\u30F3\u30C8\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u8272","Calendar Sources":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9","No calendar sources configured. Add a source to get started.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0\u3057\u3066\u958B\u59CB\u3057\u3066\u304F\u3060\u3055\u3044\u3002","ICS Enabled":"ICS \u6709\u52B9","ICS Disabled":"ICS \u7121\u52B9",URL:"URL",Refresh:"\u66F4\u65B0",min:"\u5206",Color:"\u8272","Edit this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u7DE8\u96C6",Sync:"\u540C\u671F","Sync this calendar source now":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u4ECA\u3059\u3050\u540C\u671F","Syncing...":"\u540C\u671F\u4E2D...","Sync completed successfully":"\u540C\u671F\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3057\u307E\u3057\u305F","Sync failed: ":"\u540C\u671F\u5931\u6557\uFF1A",Disable:"\u7121\u52B9\u5316","Disable this source":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u7121\u52B9\u5316","Enable this source":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u6709\u52B9\u5316","Delete this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u524A\u9664","Are you sure you want to delete this calendar source?":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Edit ICS Source":"ICS \u30BD\u30FC\u30B9\u3092\u7DE8\u96C6","Add ICS Source":"ICS \u30BD\u30FC\u30B9\u3092\u8FFD\u52A0","ICS Source Name":"ICS \u30BD\u30FC\u30B9\u540D","Display name for this calendar source":"\u3053\u306E\u30AB\u30EC\u30F3\u30C0\u30FC\u30BD\u30FC\u30B9\u306E\u8868\u793A\u540D","My Calendar":"\u30DE\u30A4\u30AB\u30EC\u30F3\u30C0\u30FC","ICS URL":"ICS URL","URL to the ICS/iCal file":"ICS/iCal \u30D5\u30A1\u30A4\u30EB\u306E URL","Whether this source is active":"\u3053\u306E\u30BD\u30FC\u30B9\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u304B\u3069\u3046\u304B","Refresh Interval":"\u66F4\u65B0\u9593\u9694","How often to refresh this source (minutes)":"\u3053\u306E\u30BD\u30FC\u30B9\u3092\u66F4\u65B0\u3059\u308B\u983B\u5EA6\uFF08\u5206\uFF09","Color for events from this source (optional)":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u8272\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Show Type":"\u8868\u793A\u30BF\u30A4\u30D7","How to display events from this source in calendar views":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u65B9\u6CD5",Event:"\u30A4\u30D9\u30F3\u30C8",Badge:"\u30D0\u30C3\u30B8","Show All-Day Events":"\u7D42\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Include all-day events from this source":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u7D42\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u542B\u3081\u308B","Show Timed Events":"\u6642\u9593\u6307\u5B9A\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Include timed events from this source":"\u3053\u306E\u30BD\u30FC\u30B9\u304B\u3089\u306E\u6642\u9593\u6307\u5B9A\u30A4\u30D9\u30F3\u30C8\u3092\u542B\u3081\u308B","Authentication (Optional)":"\u8A8D\u8A3C\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Authentication Type":"\u8A8D\u8A3C\u30BF\u30A4\u30D7","Type of authentication required":"\u5FC5\u8981\u306A\u8A8D\u8A3C\u306E\u30BF\u30A4\u30D7","ICS Auth None":"\u8A8D\u8A3C\u306A\u3057","Basic Auth":"\u30D9\u30FC\u30B7\u30C3\u30AF\u8A8D\u8A3C","Bearer Token":"\u30D9\u30A2\u30E9\u30FC\u30C8\u30FC\u30AF\u30F3","Custom Headers":"\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC","Text Replacements":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB","Configure rules to modify event text using regular expressions":"\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u7528\u3057\u3066\u30A4\u30D9\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\u3092\u5909\u66F4\u3059\u308B\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A","No text replacement rules configured":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",Enabled:"\u6709\u52B9",Disabled:"\u7121\u52B9",Target:"\u5BFE\u8C61",Pattern:"\u30D1\u30BF\u30FC\u30F3",Replacement:"\u7F6E\u63DB","Are you sure you want to delete this text replacement rule?":"\u3053\u306E\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F","Add Text Replacement Rule":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","ICS Username":"ICS \u30E6\u30FC\u30B6\u30FC\u540D","ICS Password":"ICS \u30D1\u30B9\u30EF\u30FC\u30C9","ICS Bearer Token":"ICS \u30D9\u30A2\u30E9\u30FC\u30C8\u30FC\u30AF\u30F3","JSON object with custom headers":"\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC\u3092\u542B\u3080JSON\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8","Holiday Configuration":"\u795D\u65E5\u8A2D\u5B9A","Configure how holiday events are detected and displayed":"\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u306E\u691C\u51FA\u3068\u8868\u793A\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable Holiday Detection":"\u795D\u65E5\u691C\u51FA\u3092\u6709\u52B9\u5316","Automatically detect and group holiday events":"\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u81EA\u52D5\u691C\u51FA\u3057\u3066\u30B0\u30EB\u30FC\u30D7\u5316","Status Mapping":"\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0","Configure how ICS events are mapped to task statuses":"ICS\u30A4\u30D9\u30F3\u30C8\u3092\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u30DE\u30C3\u30D4\u30F3\u30B0\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A","Enable Status Mapping":"\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u6709\u52B9\u5316","Automatically map ICS events to specific task statuses":"ICS\u30A4\u30D9\u30F3\u30C8\u3092\u7279\u5B9A\u306E\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u81EA\u52D5\u30DE\u30C3\u30D4\u30F3\u30B0","Grouping Strategy":"\u30B0\u30EB\u30FC\u30D7\u5316\u6226\u7565","How to handle consecutive holiday events":"\u9023\u7D9A\u3059\u308B\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u306E\u51E6\u7406\u65B9\u6CD5","Show All Events":"\u3059\u3079\u3066\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A","Show First Day Only":"\u6700\u521D\u306E\u65E5\u306E\u307F\u8868\u793A","Show Summary":"\u30B5\u30DE\u30EA\u30FC\u3092\u8868\u793A","Show First and Last":"\u6700\u521D\u3068\u6700\u5F8C\u3092\u8868\u793A","Maximum Gap Days":"\u6700\u5927\u9593\u9694\u65E5\u6570","Maximum days between events to consider them consecutive":"\u30A4\u30D9\u30F3\u30C8\u3092\u9023\u7D9A\u3068\u307F\u306A\u3059\u305F\u3081\u306E\u6700\u5927\u9593\u9694\u65E5\u6570","Show in Forecast":"\u4E88\u6E2C\u3067\u8868\u793A","Whether to show holiday events in forecast view":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u3067\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","Show in Calendar":"\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u8868\u793A","Whether to show holiday events in calendar view":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u795D\u65E5\u30A4\u30D9\u30F3\u30C8\u3092\u8868\u793A\u3059\u308B\u304B\u3069\u3046\u304B","Detection Patterns":"\u691C\u51FA\u30D1\u30BF\u30FC\u30F3","Summary Patterns":"\u30B5\u30DE\u30EA\u30FC\u30D1\u30BF\u30FC\u30F3","Regex patterns to match in event titles (one per line)":"\u30A4\u30D9\u30F3\u30C8\u30BF\u30A4\u30C8\u30EB\u3068\u30DE\u30C3\u30C1\u3059\u308B\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09",Keywords:"\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords to detect in event text (one per line)":"\u30A4\u30D9\u30F3\u30C8\u30C6\u30AD\u30B9\u30C8\u3067\u691C\u51FA\u3059\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09",Categories:"\u30AB\u30C6\u30B4\u30EA\u30FC","Event categories that indicate holidays (one per line)":"\u795D\u65E5\u3092\u793A\u3059\u30A4\u30D9\u30F3\u30C8\u30AB\u30C6\u30B4\u30EA\u30FC\uFF08\u4E00\u884C\u306B\u4E00\u3064\uFF09","Group Display Format":"\u30B0\u30EB\u30FC\u30D7\u8868\u793A\u5F62\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u30B0\u30EB\u30FC\u30D7\u5316\u3055\u308C\u305F\u795D\u65E5\u8868\u793A\u306E\u5F62\u5F0F\u3002{title}, {count}, {startDate}, {endDate}\u3092\u4F7F\u7528","Override ICS Status":"ICS\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u4E0A\u66F8\u304D","Override original ICS event status with mapped status":"\u5143\u306EICS\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u30DE\u30C3\u30D4\u30F3\u30B0\u3055\u308C\u305F\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u4E0A\u66F8\u304D","Timing Rules":"\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB","Past Events Status":"\u904E\u53BB\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events that have already ended":"\u3059\u3067\u306B\u7D42\u4E86\u3057\u305F\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Status Incomplete":"\u672A\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","Status Complete":"\u5B8C\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9","Status Cancelled":"\u30AD\u30E3\u30F3\u30BB\u30EB\u30B9\u30C6\u30FC\u30BF\u30B9","Status In Progress":"\u9032\u884C\u4E2D\u30B9\u30C6\u30FC\u30BF\u30B9","Status Question":"\u554F\u3044\u5408\u308F\u305B\u30B9\u30C6\u30FC\u30BF\u30B9","Current Events Status":"\u73FE\u5728\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events happening today":"\u4ECA\u65E5\u767A\u751F\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Future Events Status":"\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events in the future":"\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Property Rules":"\u30D7\u30ED\u30D1\u30C6\u30A3\u30EB\u30FC\u30EB","Optional rules based on event properties (higher priority than timing rules)":"\u30A4\u30D9\u30F3\u30C8\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u57FA\u3065\u304F\u30AA\u30D7\u30B7\u30E7\u30F3\u30EB\u30FC\u30EB\uFF08\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB\u3088\u308A\u9AD8\u512A\u5148\u5EA6\uFF09","Holiday Status":"\u795D\u65E5\u30B9\u30C6\u30FC\u30BF\u30B9","Status for events detected as holidays":"\u795D\u65E5\u3068\u3057\u3066\u691C\u51FA\u3055\u308C\u305F\u30A4\u30D9\u30F3\u30C8\u306E\u30B9\u30C6\u30FC\u30BF\u30B9","Use timing rules":"\u30BF\u30A4\u30DF\u30F3\u30B0\u30EB\u30FC\u30EB\u3092\u4F7F\u7528","Category Mapping":"\u30AB\u30C6\u30B4\u30EA\u30FC\u30DE\u30C3\u30D4\u30F3\u30B0","Map specific categories to statuses (format: category:status, one per line)":"\u7279\u5B9A\u306E\u30AB\u30C6\u30B4\u30EA\u30FC\u3092\u30B9\u30C6\u30FC\u30BF\u30B9\u306B\u30DE\u30C3\u30D4\u30F3\u30B0\uFF08\u5F62\u5F0F\uFF1Acategory:status\u3001\u4E00\u884C\u306B\u4E00\u3064\uFF09","Please enter a name for the source":"\u30BD\u30FC\u30B9\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a URL for the source":"\u30BD\u30FC\u30B9\u306EURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a valid URL":"\u6709\u52B9\u306AURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Edit Text Replacement Rule":"\u30C6\u30AD\u30B9\u30C8\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u7DE8\u96C6","Rule Name":"\u30EB\u30FC\u30EB\u540D","Descriptive name for this replacement rule":"\u3053\u306E\u7F6E\u63DB\u30EB\u30FC\u30EB\u306E\u8AAC\u660E\u7684\u306A\u540D\u524D","Remove Meeting Prefix":"\u4F1A\u8B70\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u524A\u9664","Whether this rule is active":"\u3053\u306E\u30EB\u30FC\u30EB\u304C\u30A2\u30AF\u30C6\u30A3\u30D6\u304B\u3069\u3046\u304B","Target Field":"\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9","Which field to apply the replacement to":"\u7F6E\u63DB\u3092\u9069\u7528\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9","Summary/Title":"\u30B5\u30DE\u30EA\u30FC/\u30BF\u30A4\u30C8\u30EB",Location:"\u5834\u6240","All Fields":"\u3059\u3079\u3066\u306E\u30D5\u30A3\u30FC\u30EB\u30C9","Pattern (Regular Expression)":"\u30D1\u30BF\u30FC\u30F3\uFF08\u6B63\u898F\u8868\u73FE\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u30DE\u30C3\u30C1\u3059\u308B\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3\u3002\u30AD\u30E3\u30D7\u30C1\u30E3\u30B0\u30EB\u30FC\u30D7\u306B\u306F\u62EC\u5F27\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u30DE\u30C3\u30C1\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u7F6E\u63DB\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u3002\u30AD\u30E3\u30D7\u30C1\u30E3\u30B0\u30EB\u30FC\u30D7\u306B\u306F$1\u3001$2\u306A\u3069\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Regex Flags":"\u6B63\u898F\u8868\u73FE\u30D5\u30E9\u30B0","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u898F\u8868\u73FE\u30D5\u30E9\u30B0\uFF08\u4F8B\uFF1A\u30B0\u30ED\u30FC\u30D0\u30EB\u306E\u5834\u5408\u306F'g'\u3001\u5927\u6587\u5B57\u5C0F\u6587\u5B57\u306E\u533A\u5225\u306A\u3057\u306E\u5834\u5408\u306F'i'\uFF09",Examples:"\u4F8B","Remove prefix":"\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u524A\u9664","Replace room numbers":"\u90E8\u5C4B\u756A\u53F7\u3092\u7F6E\u63DB","Swap words":"\u5358\u8A9E\u3092\u5165\u308C\u66FF\u3048","Test Rule":"\u30EB\u30FC\u30EB\u3092\u30C6\u30B9\u30C8","Output: ":"\u51FA\u529B\uFF1A","Test Input":"\u30C6\u30B9\u30C8\u5165\u529B","Enter text to test the replacement rule":"\u7F6E\u63DB\u30EB\u30FC\u30EB\u3092\u30C6\u30B9\u30C8\u3059\u308B\u30C6\u30AD\u30B9\u30C8\u3092\u5165\u529B","Please enter a name for the rule":"\u30EB\u30FC\u30EB\u306E\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Please enter a pattern":"\u30D1\u30BF\u30FC\u30F3\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","Invalid regular expression pattern":"\u7121\u52B9\u306A\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3","Enhanced Project Configuration":"\u62E1\u5F35\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A","Configure advanced project detection and management features":"\u9AD8\u5EA6\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3068\u7BA1\u7406\u6A5F\u80FD\u3092\u8A2D\u5B9A","Enable enhanced project features":"\u62E1\u5F35\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u6A5F\u80FD\u3092\u6709\u52B9\u5316","Enable path-based, metadata-based, and config file-based project detection":"\u30D1\u30B9\u30D9\u30FC\u30B9\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3001\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30D9\u30FC\u30B9\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Path-based Project Mappings":"\u30D1\u30B9\u30D9\u30FC\u30B9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30DE\u30C3\u30D4\u30F3\u30B0","Configure project names based on file paths":"\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306B\u57FA\u3065\u3044\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u8A2D\u5B9A","No path mappings configured yet.":"\u30D1\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u306F\u307E\u3060\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",Mapping:"\u30DE\u30C3\u30D4\u30F3\u30B0","Path pattern (e.g., Projects/Work)":"\u30D1\u30B9\u30D1\u30BF\u30FC\u30F3\uFF08\u4F8B\uFF1AProjects/Work\uFF09","Add Path Mapping":"\u30D1\u30B9\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Metadata-based Project Configuration":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A","Configure project detection from file frontmatter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u8A2D\u5B9A","Enable metadata project detection":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Detect project from file frontmatter metadata":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u51FA","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30AD\u30FC","The frontmatter key to use for project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u306B\u4F7F\u7528\u3059\u308B\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30AD\u30FC","Inherit other metadata fields from file frontmatter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u4ED6\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u7D99\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u30B5\u30D6\u30BF\u30B9\u30AF\u304C\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u304B\u3089\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3059\u308B\u3053\u3068\u3092\u8A31\u53EF\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB\u30BF\u30B9\u30AF\u306E\u307F\u304C\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u7D99\u627F\u3057\u307E\u3059\u3002","Project Configuration File":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB","Configure project detection from project config files":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u8A2D\u5B9A","Enable config file project detection":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u691C\u51FA\u3092\u6709\u52B9\u5316","Detect project from project configuration files":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u691C\u51FA","Config file name":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u540D","Name of the project configuration file":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D","Search recursively":"\u518D\u5E30\u7684\u306B\u691C\u7D22","Search for config files in parent directories":"\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22","Metadata Mappings":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0","Configure how metadata fields are mapped and transformed":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30DE\u30C3\u30D4\u30F3\u30B0\u3068\u5909\u63DB\u65B9\u6CD5\u3092\u8A2D\u5B9A","No metadata mappings configured yet.":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0\u306F\u307E\u3060\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002","Source key (e.g., proj)":"\u30BD\u30FC\u30B9\u30AD\u30FC\uFF08\u4F8B\uFF1Aproj\uFF09","Select target field":"\u5BFE\u8C61\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u9078\u629E","Add Metadata Mapping":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30DE\u30C3\u30D4\u30F3\u30B0\u3092\u8FFD\u52A0","Default Project Naming":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u660E\u793A\u7684\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u306E\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D\u3092\u8A2D\u5B9A","Enable default project naming":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u547D\u540D\u3092\u6709\u52B9\u5316","Use default naming strategy when no project is explicitly defined":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u660E\u793A\u7684\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u30C7\u30D5\u30A9\u30EB\u30C8\u547D\u540D\u6226\u7565\u3092\u4F7F\u7528","Naming strategy":"\u547D\u540D\u6226\u7565","Strategy for generating default project names":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3092\u751F\u6210\u3059\u308B\u6226\u7565","Use filename":"\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u4F7F\u7528","Use folder name":"\u30D5\u30A9\u30EB\u30C0\u30FC\u540D\u3092\u4F7F\u7528","Use metadata field":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4F7F\u7528","Metadata field to use as project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9","Enter metadata key (e.g., project-name)":"\u30E1\u30BF\u30C7\u30FC\u30BF\u30AD\u30FC\u3092\u5165\u529B\uFF08\u4F8B\uFF1Aproject-name\uFF09","Strip file extension":"\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u3092\u524A\u9664","Remove file extension from filename when using as project name":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u540D\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u969B\u306B\u30D5\u30A1\u30A4\u30EB\u540D\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50\u3092\u524A\u9664","Target type":"\u5BFE\u8C61\u30BF\u30A4\u30D7","Choose whether to capture to a fixed file or daily note":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u3069\u3061\u3089\u306B\u30AD\u30E3\u30D7\u30C1\u30E3\u3059\u308B\u304B\u9078\u629E","Fixed file":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB","Daily note":"\u65E5\u5831\u30CE\u30FC\u30C8","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u3002\u30D1\u30B9\u3092\u542B\u3081\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u4F8B\uFF1A'folder/Quick Capture.md'\u3002{{DATE:YYYY-MM-DD}}\u3084{{date:YYYY-MM-DD-HHmm}}\u306A\u3069\u306E\u65E5\u4ED8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5BFE\u5FDC","Sync with Daily Notes plugin":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u540C\u671F","Automatically sync settings from the Daily Notes plugin":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u304B\u3089\u8A2D\u5B9A\u3092\u81EA\u52D5\u540C\u671F","Sync now":"\u4ECA\u3059\u3050\u540C\u671F","Daily notes settings synced successfully":"\u65E5\u5831\u30CE\u30FC\u30C8\u8A2D\u5B9A\u306E\u540C\u671F\u304C\u6210\u529F\u3057\u307E\u3057\u305F","Daily Notes plugin is not enabled":"Daily Notes\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u6709\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093","Failed to sync daily notes settings":"\u65E5\u5831\u30CE\u30FC\u30C8\u8A2D\u5B9A\u306E\u540C\u671F\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Date format for daily notes (e.g., YYYY-MM-DD)":"\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u65E5\u4ED8\u5F62\u5F0F\uFF08\u4F8B\uFF1AYYYY-MM-DD\uFF09","Daily note folder":"\u65E5\u5831\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC","Folder path for daily notes (leave empty for root)":"\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u30D5\u30A9\u30EB\u30C0\u30FC\u30D1\u30B9\uFF08\u30EB\u30FC\u30C8\u306E\u5834\u5408\u306F\u7A7A\u767D\uFF09","Daily note template":"\u65E5\u5831\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","Template file path for new daily notes (optional)":"\u65B0\u3057\u3044\u65E5\u5831\u30CE\u30FC\u30C8\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Target heading":"\u5BFE\u8C61\u898B\u51FA\u3057","Optional heading to append content under (leave empty to append to file)":"\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8FFD\u52A0\u3059\u308B\u898B\u51FA\u3057\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\u3001\u7A7A\u767D\u306E\u5834\u5408\u306F\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\uFF09","How to add captured content to the target location":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u5BFE\u8C61\u4F4D\u7F6E\u306B\u8FFD\u52A0\u3059\u308B\u65B9\u6CD5",Append:"\u8FFD\u52A0",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0",Replace:"\u7F6E\u63DB","Enable auto-move for completed tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u3092\u6709\u52B9\u5316","Automatically move completed tasks to a default file without manual selection.":"\u624B\u52D5\u9078\u629E\u306A\u3057\u3067\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5\u3002","Default target file":"\u30C7\u30D5\u30A9\u30EB\u30C8\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Default file to move completed tasks to (e.g., 'Archive.md')":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\uFF08\u4F8B\uFF1A'Archive.md'\uFF09","Default insertion mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u633F\u5165\u30E2\u30FC\u30C9","Where to insert completed tasks in the target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u3067\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u5834\u6240","Default heading name":"\u30C7\u30D5\u30A9\u30EB\u30C8\u898B\u51FA\u3057\u540D","Heading name to insert tasks after (will be created if it doesn't exist)":"\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u898B\u51FA\u3057\u540D\uFF08\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u4F5C\u6210\u3055\u308C\u307E\u3059\uFF09","Enable auto-move for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u81EA\u52D5\u79FB\u52D5\u3092\u6709\u52B9\u5316","Automatically move incomplete tasks to a default file without manual selection.":"\u624B\u52D5\u9078\u629E\u306A\u3057\u3067\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u79FB\u52D5\u3059\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\uFF08\u4F8B\uFF1A'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u633F\u5165\u30E2\u30FC\u30C9","Where to insert incomplete tasks in the target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u3067\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u5834\u6240","Default heading name for incomplete tasks":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u898B\u51FA\u3057\u540D","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u633F\u5165\u3059\u308B\u898B\u51FA\u3057\u540D\uFF08\u5B58\u5728\u3057\u306A\u3044\u5834\u5408\u306F\u4F5C\u6210\u3055\u308C\u307E\u3059\uFF09","Other settings":"\u305D\u306E\u4ED6\u306E\u8A2D\u5B9A","Use Task Genius icons":"Task Genius\u30A2\u30A4\u30B3\u30F3\u3092\u4F7F\u7528","Use Task Genius icons for task statuses":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306BTask Genius\u30A2\u30A4\u30B3\u30F3\u3092\u4F7F\u7528","Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC","Enable Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u65E5\u5E38\u306E\u30A4\u30D9\u30F3\u30C8\u3084\u30BF\u30B9\u30AF\u306B\u7D20\u65E9\u304F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u308B\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","Auto-open on startup":"\u8D77\u52D5\u6642\u306B\u81EA\u52D5\u30AA\u30FC\u30D7\u30F3","Automatically open the timeline sidebar when Obsidian starts.":"Obsidian\u8D77\u52D5\u6642\u306B\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u81EA\u52D5\u3067\u958B\u304F\u3002","Show completed tasks":"\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u8868\u793A","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30D3\u30E5\u30FC\u306B\u5B8C\u4E86\u30BF\u30B9\u30AF\u3092\u542B\u3081\u308B\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u672A\u5B8C\u4E86\u30BF\u30B9\u30AF\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Focus mode by default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u30E2\u30FC\u30C9","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u306B\u3057\u3001\u4ECA\u65E5\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u30CF\u30A4\u30E9\u30A4\u30C8\u3057\u3001\u904E\u53BB/\u5C06\u6765\u306E\u30A4\u30D9\u30F3\u30C8\u3092\u6697\u304F\u3057\u307E\u3059\u3002","Maximum events to show":"\u8868\u793A\u3059\u308B\u6700\u5927\u30A4\u30D9\u30F3\u30C8\u6570","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u306B\u8868\u793A\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u306E\u6700\u5927\u6570\u3002\u6570\u304C\u5927\u304D\u3044\u3068\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u306B\u5F71\u97FF\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Open Timeline Sidebar":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u3092\u958B\u304F","Click to open the timeline sidebar view.":"\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u30D3\u30E5\u30FC\u3092\u958B\u304F\u3002","Open Timeline":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3092\u958B\u304F","Timeline sidebar opened":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u30B5\u30A4\u30C9\u30D0\u30FC\u304C\u958B\u304B\u308C\u307E\u3057\u305F","Task Parser Configuration":"\u30BF\u30B9\u30AF\u30D1\u30FC\u30B5\u30FC\u8A2D\u5B9A","Configure how task metadata is parsed and recognized.":"\u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u89E3\u6790\u3068\u8A8D\u8B58\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Project tag prefix":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[project:: myproject]\u306E'project'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A#project/myproject\u306E'project'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Context tag prefix":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[context:: home]\u306E'context'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A@home\u306E'@home'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Area tag prefix":"\u30A8\u30EA\u30A2\u30BF\u30B0\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"dataview\u5F62\u5F0F\u306E\u30A8\u30EA\u30A2\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A[area:: work]\u306E'area'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u30A8\u30EA\u30A2\u30BF\u30B0\u306B\u4F7F\u7528\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u4F8B\uFF1A#area/work\u306E'area'\uFF09\u3002\u5909\u66F4\u306B\u306F\u518D\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002","Format Examples:":"\u5F62\u5F0F\u306E\u4F8B\uFF1A",Area:"\u30A8\u30EA\u30A2","always uses @ prefix":"\u5E38\u306B@\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u4F7F\u7528","File Parsing Configuration":"\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u8A2D\u5B9A","Configure how to extract tasks from file metadata and tags.":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u3068\u30BF\u30B0\u304B\u3089\u30BF\u30B9\u30AF\u3092\u62BD\u51FA\u3059\u308B\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Enable file metadata parsing":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u89E3\u6790\u3092\u6709\u52B9\u5316","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u304B\u3089\u30BF\u30B9\u30AF\u3092\u89E3\u6790\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u7279\u5B9A\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u304C\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","File metadata parsing enabled. Rebuilding task index...":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u89E3\u6790\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F\u3002\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u518D\u69CB\u7BC9\u4E2D...","Task index rebuilt successfully":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u518D\u69CB\u7BC9\u304C\u6210\u529F\u3057\u307E\u3057\u305F","Failed to rebuild task index":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u518D\u69CB\u7BC9\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Metadata fields to parse as tasks":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u89E3\u6790\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u308B\u3079\u304D\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\uFF08\u4F8B\uFF1AdueDate, todo, complete, task\uFF09","Task content from metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u306E\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4","Which metadata field to use as task content. If not found, will use filename.":"\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30FC\u30EB\u30C9\u3002\u898B\u3064\u304B\u3089\u306A\u3044\u5834\u5408\u306F\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002","Default task status":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30B9\u30C6\u30FC\u30BF\u30B9\uFF08\u672A\u5B8C\u4E86\u306F\u30B9\u30DA\u30FC\u30B9\u3001\u5B8C\u4E86\u306Fx\uFF09","Enable tag-based task parsing":"\u30BF\u30B0\u30D9\u30FC\u30B9\u30BF\u30B9\u30AF\u89E3\u6790\u3092\u6709\u52B9\u5316","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u30D5\u30A1\u30A4\u30EB\u30BF\u30B0\u304B\u3089\u30BF\u30B9\u30AF\u3092\u89E3\u6790\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u7279\u5B9A\u306E\u30BF\u30B0\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u304C\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u307E\u3059\u3002","Tags to parse as tasks":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u89E3\u6790\u3059\u308B\u30BF\u30B0","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u30BF\u30B9\u30AF\u3068\u3057\u3066\u6271\u308F\u308C\u308B\u3079\u304D\u30BF\u30B0\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\uFF08\u4F8B\uFF1A#todo, #task, #action, #due\uFF09","Enable worker processing":"\u30EF\u30FC\u30AB\u30FC\u51E6\u7406\u3092\u6709\u52B9\u5316","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u5411\u4E0A\u306E\u305F\u3081\u306B\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u306B\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30EF\u30FC\u30AB\u30FC\u3092\u4F7F\u7528\u3002\u5927\u304D\u306A\u30F4\u30A9\u30EB\u30C8\u306B\u63A8\u5968\u3002","Enable inline editor":"\u30A4\u30F3\u30E9\u30A4\u30F3\u30A8\u30C7\u30A3\u30BF\u30FC\u3092\u6709\u52B9\u5316","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u30BF\u30B9\u30AF\u30D3\u30E5\u30FC\u3067\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u3068\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u7DE8\u96C6\u3092\u6709\u52B9\u5316\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30BF\u30B9\u30AF\u306F\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3067\u306E\u307F\u7DE8\u96C6\u3067\u304D\u307E\u3059\u3002","Auto-assigned from path":"\u30D1\u30B9\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned from file metadata":"\u30D5\u30A1\u30A4\u30EB\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned from config file":"\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u81EA\u52D5\u5272\u308A\u5F53\u3066","Auto-assigned":"\u81EA\u52D5\u5272\u308A\u5F53\u3066","This project is automatically assigned and cannot be changed":"\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u81EA\u52D5\u7684\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u3066\u304A\u308A\u3001\u5909\u66F4\u3067\u304D\u307E\u305B\u3093","You can override the auto-assigned project by entering a different value":"\u7570\u306A\u308B\u5024\u3092\u5165\u529B\u3059\u308B\u3053\u3068\u3067\u81EA\u52D5\u5272\u308A\u5F53\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059","Auto from path":"\u30D1\u30B9\u304B\u3089\u81EA\u52D5","Auto from metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u304B\u3089\u81EA\u52D5","Auto from config":"\u8A2D\u5B9A\u304B\u3089\u81EA\u52D5","You can override the auto-assigned project":"\u81EA\u52D5\u5272\u308A\u5F53\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059",Timeline:"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3","Go to today":"\u4ECA\u65E5\u306B\u79FB\u52D5","Focus on today":"\u4ECA\u65E5\u306B\u30D5\u30A9\u30FC\u30AB\u30B9","What do you want to do today?":"\u4ECA\u65E5\u306F\u4F55\u3092\u3057\u307E\u3059\u304B\uFF1F","More options":"\u305D\u306E\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3","No events to display":"\u8868\u793A\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Go to task":"\u30BF\u30B9\u30AF\u306B\u79FB\u52D5",to:"\u304B\u3089","Hide weekends":"\u9031\u672B\u3092\u975E\u8868\u793A","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3067\u9031\u672B\u306E\u5217\uFF08\u571F\u66DC\u65E5\u3068\u65E5\u66DC\u65E5\uFF09\u3092\u975E\u8868\u793A\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u4E88\u6E2C\u30AB\u30EC\u30F3\u30C0\u30FC\u3067\u9031\u672B\u306E\u5217\uFF08\u571F\u66DC\u65E5\u3068\u65E5\u66DC\u65E5\uFF09\u3092\u975E\u8868\u793A\u3002",Repeatable:"\u7E70\u308A\u8FD4\u3057\u53EF\u80FD",Final:"\u6700\u7D42",Sequential:"\u9806\u6B21","Current: ":"\u73FE\u5728\uFF1A",completed:"\u5B8C\u4E86","Convert to workflow template":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5909\u63DB","Start workflow here":"\u3053\u3053\u304B\u3089\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB","Create quick workflow":"\u30AF\u30A4\u30C3\u30AF\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u4F5C\u6210","Workflow not found":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Stage not found":"\u30B9\u30C6\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Current stage":"\u73FE\u5728\u306E\u30B9\u30C6\u30FC\u30B8",Type:"\u30BF\u30A4\u30D7",Next:"\u6B21\u3078","Start workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u958B\u59CB",Continue:"\u7D9A\u884C","Complete substage and move to":"\u30B5\u30D6\u30B9\u30C6\u30FC\u30B8\u3092\u5B8C\u4E86\u3057\u3066\u79FB\u52D5","Add new task":"\u65B0\u3057\u3044\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Add new sub-task":"\u65B0\u3057\u3044\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u8FFD\u52A0","Auto-move completed subtasks to default file":"\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move direct completed subtasks to default file":"\u76F4\u63A5\u306E\u5B8C\u4E86\u3057\u305F\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move all subtasks to default file":"\u3059\u3079\u3066\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move incomplete subtasks to default file":"\u672A\u5B8C\u4E86\u306E\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Auto-move direct incomplete subtasks to default file":"\u76F4\u63A5\u306E\u672A\u5B8C\u4E86\u30B5\u30D6\u30BF\u30B9\u30AF\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB\u306B\u81EA\u52D5\u79FB\u52D5","Convert task to workflow template":"\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u5909\u63DB","Convert current task to workflow root":"\u73FE\u5728\u306E\u30BF\u30B9\u30AF\u3092\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30EB\u30FC\u30C8\u306B\u5909\u63DB","Duplicate workflow":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8907\u88FD","Workflow quick actions":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30AF\u30A4\u30C3\u30AF\u30A2\u30AF\u30B7\u30E7\u30F3","Views & Index":"\u30D3\u30E5\u30FC\u3068\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9","Progress Display":"\u9032\u6357\u8868\u793A",Workflows:"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Dates & Priority":"\u65E5\u4ED8\u3068\u512A\u5148\u5EA6",Habits:"\u7FD2\u6163","Calendar Sync":"\u30AB\u30EC\u30F3\u30C0\u30FC\u540C\u671F","Beta Features":"\u30D9\u30FC\u30BF\u6A5F\u80FD","Core Settings":"\u57FA\u672C\u8A2D\u5B9A","Display & Progress":"\u8868\u793A\u3068\u9032\u6357","Task Management":"\u30BF\u30B9\u30AF\u7BA1\u7406","Workflow & Automation":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3068\u81EA\u52D5\u5316",Gamification:"\u30B2\u30FC\u30DF\u30D5\u30A3\u30B1\u30FC\u30B7\u30E7\u30F3",Integration:"\u7D71\u5408",Advanced:"\u9AD8\u5EA6",Information:"\u60C5\u5831","Workflow generated from task structure":"\u30BF\u30B9\u30AF\u69CB\u9020\u304B\u3089\u751F\u6210\u3055\u308C\u305F\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Workflow based on existing pattern":"\u65E2\u5B58\u30D1\u30BF\u30FC\u30F3\u306B\u57FA\u3065\u304F\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",Matrix:"\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9","More actions":"\u305D\u306E\u4ED6\u306E\u30A2\u30AF\u30B7\u30E7\u30F3","Open in file":"\u30D5\u30A1\u30A4\u30EB\u3067\u958B\u304F","Copy task":"\u30BF\u30B9\u30AF\u3092\u30B3\u30D4\u30FC","Mark as urgent":"\u7DCA\u6025\u3068\u3057\u3066\u30DE\u30FC\u30AF","Mark as important":"\u91CD\u8981\u3068\u3057\u3066\u30DE\u30FC\u30AF","Overdue by {days} days":"{days}\u65E5\u9045\u308C","Due today":"\u4ECA\u65E5\u671F\u9650","Due tomorrow":"\u660E\u65E5\u671F\u9650","Due in {days} days":"{days}\u65E5\u5F8C\u671F\u9650","Loading tasks...":"\u30BF\u30B9\u30AF\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...",task:"\u30BF\u30B9\u30AF","No crisis tasks - great job!":"\u7DCA\u6025\u30BF\u30B9\u30AF\u306A\u3057 - \u7D20\u6674\u3089\u3057\u3044\uFF01","No planning tasks - consider adding some goals":"\u8A08\u753B\u30BF\u30B9\u30AF\u306A\u3057 - \u3044\u304F\u3064\u304B\u306E\u76EE\u6A19\u306E\u8FFD\u52A0\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044","No interruptions - focus time!":"\u4E2D\u65AD\u306A\u3057 - \u96C6\u4E2D\u30BF\u30A4\u30E0\uFF01","No time wasters - excellent focus!":"\u6642\u9593\u306E\u7121\u99C4\u306A\u3057 - \u7D20\u6674\u3089\u3057\u3044\u96C6\u4E2D\u529B\uFF01","No tasks in this quadrant":"\u3053\u306E\u8C61\u9650\u306B\u30BF\u30B9\u30AF\u304C\u3042\u308A\u307E\u305B\u3093","Handle immediately. These are critical tasks that need your attention now.":"\u5373\u5EA7\u306B\u5BFE\u51E6\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306F\u4ECA\u3059\u3050\u3042\u306A\u305F\u306E\u6CE8\u610F\u304C\u5FC5\u8981\u306A\u91CD\u8981\u306A\u30BF\u30B9\u30AF\u3067\u3059\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3068\u8A08\u753B\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u9577\u671F\u7684\u306A\u6210\u529F\u306E\u9375\u3067\u3059\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u53EF\u80FD\u3067\u3042\u308C\u3070\u59D4\u4EFB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3067\u3059\u304C\u3001\u3042\u306A\u305F\u306E\u7279\u5B9A\u306E\u30B9\u30AD\u30EB\u3092\u5FC5\u8981\u3068\u3057\u307E\u305B\u3093\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6392\u9664\u307E\u305F\u306F\u6700\u5C0F\u5316\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u306F\u6642\u9593\u306E\u7121\u99C4\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002","Review and categorize these tasks appropriately.":"\u3053\u308C\u3089\u306E\u30BF\u30B9\u30AF\u3092\u9069\u5207\u306B\u78BA\u8A8D\u3057\u3066\u5206\u985E\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Urgent & Important":"\u7DCA\u6025\u304B\u3064\u91CD\u8981","Do First - Crisis & emergencies":"\u6700\u512A\u5148 - \u5371\u6A5F\u3068\u7DCA\u6025\u4E8B\u614B","Not Urgent & Important":"\u7DCA\u6025\u3067\u306F\u306A\u3044\u304C\u91CD\u8981","Schedule - Planning & development":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB - \u8A08\u753B\u3068\u958B\u767A","Urgent & Not Important":"\u7DCA\u6025\u3060\u304C\u91CD\u8981\u3067\u306F\u306A\u3044","Delegate - Interruptions & distractions":"\u59D4\u4EFB - \u4E2D\u65AD\u3068\u6C17\u6674\u3089\u3057","Not Urgent & Not Important":"\u7DCA\u6025\u3067\u3082\u91CD\u8981\u3067\u3082\u306A\u3044","Eliminate - Time wasters":"\u524A\u9664 - \u6642\u9593\u306E\u7121\u99C4","Task Priority Matrix":"\u30BF\u30B9\u30AF\u512A\u5148\u5EA6\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9","Created Date (Newest First)":"\u4F5C\u6210\u65E5\uFF08\u65B0\u3057\u3044\u9806\uFF09","Created Date (Oldest First)":"\u4F5C\u6210\u65E5\uFF08\u53E4\u3044\u9806\uFF09","Toggle empty columns":"\u7A7A\u306E\u5217\u3092\u5207\u308A\u66FF\u3048","Failed to update task":"\u30BF\u30B9\u30AF\u306E\u66F4\u65B0\u306B\u5931\u6557\u3057\u307E\u3057\u305F","Remove urgent tag":"\u7DCA\u6025\u30BF\u30B0\u3092\u524A\u9664","Remove important tag":"\u91CD\u8981\u30BF\u30B0\u3092\u524A\u9664","Loading more tasks...":"\u3055\u3089\u306B\u30BF\u30B9\u30AF\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...","Action Type":"\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7","Select action type...":"\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u3092\u9078\u629E...","Delete task":"\u30BF\u30B9\u30AF\u3092\u524A\u9664","Keep task":"\u30BF\u30B9\u30AF\u3092\u4FDD\u6301","Complete related tasks":"\u95A2\u9023\u30BF\u30B9\u30AF\u3092\u5B8C\u4E86","Move task":"\u30BF\u30B9\u30AF\u3092\u79FB\u52D5","Archive task":"\u30BF\u30B9\u30AF\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Duplicate task":"\u30BF\u30B9\u30AF\u3092\u8907\u88FD","Task IDs":"\u30BF\u30B9\u30AFID","Enter task IDs separated by commas":"\u30AB\u30F3\u30DE\u533A\u5207\u308A\u3067\u30BF\u30B9\u30AFID\u3092\u5165\u529B","Comma-separated list of task IDs to complete when this task is completed":"\u3053\u306E\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u5B8C\u4E86\u3059\u308B\u30BF\u30B9\u30AFID\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8","Target File":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB","Path to target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9","Target Section (Optional)":"\u5BFE\u8C61\u30BB\u30AF\u30B7\u30E7\u30F3\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Section name in target file":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\u5185\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u540D","Archive File (Optional)":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: Archive/Completed Tasks.md":"\u30C7\u30D5\u30A9\u30EB\u30C8: Archive/Completed Tasks.md","Archive Section (Optional)":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30BB\u30AF\u30B7\u30E7\u30F3\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: Completed Tasks":"\u30C7\u30D5\u30A9\u30EB\u30C8: \u5B8C\u4E86\u6E08\u307F\u30BF\u30B9\u30AF","Target File (Optional)":"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB\uFF08\u30AA\u30D7\u30B7\u30E7\u30F3\uFF09","Default: same file":"\u30C7\u30D5\u30A9\u30EB\u30C8: \u540C\u3058\u30D5\u30A1\u30A4\u30EB","Preserve Metadata":"\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4FDD\u6301","Keep completion dates and other metadata in the duplicated task":"\u8907\u88FD\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306B\u5B8C\u4E86\u65E5\u3068\u305D\u306E\u4ED6\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u4FDD\u6301","Overdue by":"\u671F\u9650\u3092\u904E\u304E\u3066\u3044\u308B",days:"\u65E5","Due in":"\u671F\u9650\u307E\u3067","File Filter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC","Enable File Filter":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u3092\u6709\u52B9\u5316","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u4F5C\u6210\u4E2D\u306E\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306B\u3088\u308A\u5927\u304D\u306A\u4FDD\u5EAB\u306E\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u304C\u5927\u5E45\u306B\u5411\u4E0A\u3057\u307E\u3059\u3002","File Filter Mode":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30E2\u30FC\u30C9","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB/\u30D5\u30A9\u30EB\u30C0\u30FC\u306E\u307F\u3092\u542B\u3081\u308B\uFF08\u30DB\u30EF\u30A4\u30C8\u30EA\u30B9\u30C8\uFF09\u304B\u3001\u305D\u308C\u3089\u3092\u9664\u5916\u3059\u308B\uFF08\u30D6\u30E9\u30C3\u30AF\u30EA\u30B9\u30C8\uFF09\u304B\u3092\u9078\u629E","Whitelist (Include only)":"\u30DB\u30EF\u30A4\u30C8\u30EA\u30B9\u30C8\uFF08\u542B\u3081\u308B\u306E\u307F\uFF09","Blacklist (Exclude)":"\u30D6\u30E9\u30C3\u30AF\u30EA\u30B9\u30C8\uFF08\u9664\u5916\uFF09","File Filter Rules":"\u30D5\u30A1\u30A4\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB","Configure which files and folders to include or exclude from task indexing":"\u30BF\u30B9\u30AF\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u304B\u3089\u542B\u3081\u308B\u307E\u305F\u306F\u9664\u5916\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3068\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8A2D\u5B9A","Type:":"\u30BF\u30A4\u30D7:",Folder:"\u30D5\u30A9\u30EB\u30C0\u30FC","Path:":"\u30D1\u30B9:","Enabled:":"\u6709\u52B9:","Delete rule":"\u30EB\u30FC\u30EB\u3092\u524A\u9664","Add Filter Rule":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add File Rule":"\u30D5\u30A1\u30A4\u30EB\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add Folder Rule":"\u30D5\u30A9\u30EB\u30C0\u30FC\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Add Pattern Rule":"\u30D1\u30BF\u30FC\u30F3\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0","Refresh Statistics":"\u7D71\u8A08\u3092\u66F4\u65B0","Manually refresh filter statistics to see current data":"\u73FE\u5728\u306E\u30C7\u30FC\u30BF\u3092\u898B\u308B\u305F\u3081\u306B\u30D5\u30A3\u30EB\u30BF\u30FC\u7D71\u8A08\u3092\u624B\u52D5\u3067\u66F4\u65B0","Refreshing...":"\u66F4\u65B0\u4E2D...","Active Rules":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30EB\u30FC\u30EB","Cache Size":"\u30AD\u30E3\u30C3\u30B7\u30E5\u30B5\u30A4\u30BA","No filter data available":"\u30D5\u30A3\u30EB\u30BF\u30FC\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093","Error loading statistics":"\u7D71\u8A08\u306E\u8AAD\u307F\u8FBC\u307F\u30A8\u30E9\u30FC","On Completion":"\u5B8C\u4E86\u6642","Enable OnCompletion":"\u5B8C\u4E86\u6642\u52D5\u4F5C\u3092\u6709\u52B9\u5316","Enable automatic actions when tasks are completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306E\u81EA\u52D5\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u5316","Default Archive File":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30FC\u30AB\u30A4\u30D6\u30D5\u30A1\u30A4\u30EB","Default file for archive action":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A1\u30A4\u30EB","Default Archive Section":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30FC\u30AB\u30A4\u30D6\u30BB\u30AF\u30B7\u30E7\u30F3","Default section for archive action":"\u30A2\u30FC\u30AB\u30A4\u30D6\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30BB\u30AF\u30B7\u30E7\u30F3","Show Advanced Options":"\u9AD8\u5EA6\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A","Show advanced configuration options in task editors":"\u30BF\u30B9\u30AF\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u9AD8\u5EA6\u306A\u8A2D\u5B9A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8868\u793A","Configure checkbox status settings":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u3092\u69CB\u6210","Auto complete parent checkbox":"\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u5B8C\u4E86","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u3059\u3079\u3066\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u5B8C\u4E86\u3055\u305B\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u4E00\u90E8\u306E\u5B50\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u3066\u3044\u308B\u304C\u3059\u3079\u3066\u3067\u306F\u306A\u3044\u5834\u5408\u3001\u89AA\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u300C\u9032\u884C\u4E2D\u300D\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3057\u307E\u3059\u3002\u300C\u89AA\u3092\u81EA\u52D5\u5B8C\u4E86\u300D\u304C\u6709\u52B9\u306A\u5834\u5408\u306E\u307F\u6A5F\u80FD\u3057\u307E\u3059\u3002","Select a predefined checkbox status collection or customize your own":"\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u9078\u629E\u3059\u308B\u304B\u3001\u72EC\u81EA\u306B\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u304F\u3060\u3055\u3044","Checkbox Switcher":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC","Enable checkbox status switcher":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B9\u30A4\u30C3\u30C1\u30E3\u30FC\u3092\u6709\u52B9\u5316","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u3001\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u3046\u30B9\u30BF\u30A4\u30EB\u4ED8\u304D\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u30BD\u30FC\u30B9\u30E2\u30FC\u30C9\u306E\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u6642\u306B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u30B5\u30A4\u30AF\u30EB\u306B\u5F93\u308F\u305B\u307E\u3059\u3002","Automatically manage dates based on checkbox status changes":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u306B\u57FA\u3065\u3044\u3066\u65E5\u4ED8\u3092\u81EA\u52D5\u7BA1\u7406","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306E\u81EA\u52D5\u65E5\u4ED8\u7BA1\u7406\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u3066\u304F\u3060\u3055\u3044\u3002\u65E5\u4ED8\u306F\u304A\u597D\u307F\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u5F62\u5F0F\uFF08Tasks\u7D75\u6587\u5B57\u5F62\u5F0F\u307E\u305F\u306FDataview\u5F62\u5F0F\uFF09\u306B\u57FA\u3065\u3044\u3066\u8FFD\u52A0/\u524A\u9664\u3055\u308C\u307E\u3059\u3002","Default view mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D3\u30E5\u30FC\u30E2\u30FC\u30C9","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u8868\u793A\u30E2\u30FC\u30C9\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306F\u30D3\u30E5\u30FC\u3092\u521D\u3081\u3066\u958B\u3044\u305F\u308A\u65B0\u3057\u3044\u30D3\u30E5\u30FC\u3092\u4F5C\u6210\u3057\u305F\u308A\u3059\u308B\u3068\u304D\u306E\u30BF\u30B9\u30AF\u306E\u8868\u793A\u65B9\u6CD5\u306B\u5F71\u97FF\u3057\u307E\u3059\u3002","List View":"\u30EA\u30B9\u30C8\u30D3\u30E5\u30FC","Tree View":"\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC","Global Filter Configuration":"\u30B0\u30ED\u30FC\u30D0\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u8A2D\u5B9A","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u306B\u9069\u7528\u3055\u308C\u308B\u30B0\u30ED\u30FC\u30D0\u30EB\u30D5\u30A3\u30EB\u30BF\u30FC\u30EB\u30FC\u30EB\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u500B\u5225\u306E\u30D3\u30E5\u30FC\u3067\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Cancelled Date":"\u30AD\u30E3\u30F3\u30BB\u30EB\u65E5","Configuration is valid":"\u8A2D\u5B9A\u304C\u6709\u52B9\u3067\u3059","Action to execute on completion":"\u5B8C\u4E86\u6642\u306B\u5B9F\u884C\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3","Depends On":"\u4F9D\u5B58","Task IDs separated by commas":"\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30BF\u30B9\u30AFID","Task ID":"\u30BF\u30B9\u30AFID","Unique task identifier":"\u4E00\u610F\u306E\u30BF\u30B9\u30AF\u8B58\u5225\u5B50","Action to execute when task is completed":"\u30BF\u30B9\u30AF\u304C\u5B8C\u4E86\u3057\u305F\u3068\u304D\u306B\u5B9F\u884C\u3059\u308B\u30A2\u30AF\u30B7\u30E7\u30F3","Comma-separated list of task IDs this task depends on":"\u3053\u306E\u30BF\u30B9\u30AF\u304C\u4F9D\u5B58\u3059\u308B\u30BF\u30B9\u30AFID\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8","Unique identifier for this task":"\u3053\u306E\u30BF\u30B9\u30AF\u306E\u4E00\u610F\u8B58\u5225\u5B50","Quadrant Classification Method":"\u8C61\u9650\u5206\u985E\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u30BF\u30B9\u30AF\u3092\u8C61\u9650\u306B\u5206\u985E\u3059\u308B\u65B9\u6CD5\u3092\u9078\u629E","Urgent Priority Threshold":"\u7DCA\u6025\u512A\u5148\u5EA6\u95FE\u5024","Tasks with priority >= this value are considered urgent (1-5)":"\u512A\u5148\u5EA6 >= \u3053\u306E\u5024\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3068\u307F\u306A\u3055\u308C\u307E\u3059\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u512A\u5148\u5EA6\u95FE\u5024","Tasks with priority >= this value are considered important (1-5)":"\u512A\u5148\u5EA6 >= \u3053\u306E\u5024\u306E\u30BF\u30B9\u30AF\u306F\u91CD\u8981\u3068\u307F\u306A\u3055\u308C\u307E\u3059\uFF081-5\uFF09","Urgent Tag":"\u7DCA\u6025\u30BF\u30B0","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u7DCA\u6025\u30BF\u30B9\u30AF\u3092\u8B58\u5225\u3059\u308B\u30BF\u30B0\uFF08\u4F8B\uFF1A#urgent\u3001#fire\uFF09","Important Tag":"\u91CD\u8981\u30BF\u30B0","Tag to identify important tasks (e.g., #important, #key)":"\u91CD\u8981\u30BF\u30B9\u30AF\u3092\u8B58\u5225\u3059\u308B\u30BF\u30B0\uFF08\u4F8B\uFF1A#important\u3001#key\uFF09","Urgent Threshold Days":"\u7DCA\u6025\u95FE\u5024\u65E5\u6570","Tasks due within this many days are considered urgent":"\u3053\u306E\u65E5\u6570\u4EE5\u5185\u306B\u671F\u9650\u306E\u30BF\u30B9\u30AF\u306F\u7DCA\u6025\u3068\u307F\u306A\u3055\u308C\u307E\u3059","Auto Update Priority":"\u512A\u5148\u5EA6\u81EA\u52D5\u66F4\u65B0","Automatically update task priority when moved between quadrants":"\u8C61\u9650\u9593\u3067\u79FB\u52D5\u3057\u305F\u3068\u304D\u306B\u30BF\u30B9\u30AF\u512A\u5148\u5EA6\u3092\u81EA\u52D5\u66F4\u65B0","Auto Update Tags":"\u30BF\u30B0\u81EA\u52D5\u66F4\u65B0","Automatically add/remove urgent/important tags when moved between quadrants":"\u8C61\u9650\u9593\u3067\u79FB\u52D5\u3057\u305F\u3068\u304D\u306B\u7DCA\u6025/\u91CD\u8981\u30BF\u30B0\u3092\u81EA\u52D5\u8FFD\u52A0/\u524A\u9664","Hide Empty Quadrants":"\u7A7A\u306E\u8C61\u9650\u3092\u975E\u8868\u793A","Hide quadrants that have no tasks":"\u30BF\u30B9\u30AF\u304C\u306A\u3044\u8C61\u9650\u3092\u975E\u8868\u793A\u306B\u3059\u308B","Configure On Completion Action":"\u5B8C\u4E86\u6642\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8A2D\u5B9A","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal\u30D5\u30A1\u30A4\u30EB\u306EURL\uFF08http://\u3001https://\u3001webcal://\u30D7\u30ED\u30C8\u30B3\u30EB\u306B\u5BFE\u5FDC\uFF09","Task mark display style":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u8868\u793A\u30B9\u30BF\u30A4\u30EB","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u30BF\u30B9\u30AF\u30DE\u30FC\u30AF\u306E\u8868\u793A\u65B9\u6CD5\u3092\u9078\u629E\uFF1A\u30C7\u30D5\u30A9\u30EB\u30C8\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3001\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF\u3001\u307E\u305F\u306FTask Genius\u30A2\u30A4\u30B3\u30F3\u3002","Default checkboxes":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9","Custom text marks":"\u30AB\u30B9\u30BF\u30E0\u30C6\u30AD\u30B9\u30C8\u30DE\u30FC\u30AF","Task Genius icons":"Task Genius\u30A2\u30A4\u30B3\u30F3","Time Parsing Settings":"\u6642\u523B\u89E3\u6790\u8A2D\u5B9A","Enable Time Parsing":"\u6642\u523B\u89E3\u6790\u3092\u6709\u52B9\u5316","Automatically parse natural language time expressions in Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3067\u81EA\u7136\u8A00\u8A9E\u306E\u6642\u9593\u8868\u73FE\u3092\u81EA\u52D5\u89E3\u6790","Remove Original Time Expressions":"\u5143\u306E\u6642\u9593\u8868\u73FE\u3092\u524A\u9664","Remove parsed time expressions from the task text":"\u30BF\u30B9\u30AF\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u89E3\u6790\u3055\u308C\u305F\u6642\u9593\u8868\u73FE\u3092\u524A\u9664","Supported Languages":"\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u8A00\u8A9E","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u73FE\u5728\u3001\u82F1\u8A9E\u3068\u4E2D\u56FD\u8A9E\u306E\u6642\u9593\u8868\u73FE\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u3002\u4ECA\u5F8C\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3067\u3055\u3089\u306B\u591A\u304F\u306E\u8A00\u8A9E\u304C\u8FFD\u52A0\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002","Date Keywords Configuration":"\u65E5\u4ED8\u30AD\u30FC\u30EF\u30FC\u30C9\u8A2D\u5B9A","Start Date Keywords":"\u958B\u59CB\u65E5\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate start dates (comma-separated)":"\u958B\u59CB\u65E5\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Due Date Keywords":"\u671F\u9650\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate due dates (comma-separated)":"\u671F\u9650\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Scheduled Date Keywords":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u30AD\u30FC\u30EF\u30FC\u30C9","Keywords that indicate scheduled dates (comma-separated)":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u793A\u3059\u30AD\u30FC\u30EF\u30FC\u30C9\uFF08\u30AB\u30F3\u30DE\u533A\u5207\u308A\uFF09","Configure...":"\u8A2D\u5B9A...","Collapse quick input":"\u30AF\u30A4\u30C3\u30AF\u5165\u529B\u3092\u6298\u308A\u305F\u305F\u307F","Expand quick input":"\u30AF\u30A4\u30C3\u30AF\u5165\u529B\u3092\u5C55\u958B","Set Priority":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A","Clear Flags":"\u30D5\u30E9\u30B0\u3092\u30AF\u30EA\u30A2","Filter by Priority":"\u512A\u5148\u5EA6\u3067\u30D5\u30A3\u30EB\u30BF\u30FC","New Project":"\u65B0\u3057\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8","Archive Completed":"\u5B8C\u4E86\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Project Statistics":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7D71\u8A08","Manage Tags":"\u30BF\u30B0\u7BA1\u7406","Time Parsing":"\u6642\u523B\u89E3\u6790","Minimal Quick Capture":"\u30DF\u30CB\u30DE\u30EB\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Enter your task...":"\u30BF\u30B9\u30AF\u3092\u5165\u529B...","Set date":"\u65E5\u4ED8\u3092\u8A2D\u5B9A","Set location":"\u5834\u6240\u3092\u8A2D\u5B9A","Add tags":"\u30BF\u30B0\u3092\u8FFD\u52A0","Day after tomorrow":"\u660E\u5F8C\u65E5","Next week":"\u6765\u9031","Next month":"\u6765\u6708","Choose date...":"\u65E5\u4ED8\u3092\u9078\u629E...","Fixed location":"\u56FA\u5B9A\u5834\u6240",Date:"\u65E5\u4ED8","Add date (triggers ~)":"\u65E5\u4ED8\u3092\u8FFD\u52A0\uFF08\u30C8\u30EA\u30AC\u30FC ~\uFF09","Set priority (triggers !)":"\u512A\u5148\u5EA6\u3092\u8A2D\u5B9A\uFF08\u30C8\u30EA\u30AC\u30FC !\uFF09","Target Location":"\u5BFE\u8C61\u5834\u6240","Set target location (triggers *)":"\u5BFE\u8C61\u5834\u6240\u3092\u8A2D\u5B9A\uFF08\u30C8\u30EA\u30AC\u30FC *\uFF09","Add tags (triggers #)":"\u30BF\u30B0\u3092\u8FFD\u52A0\uFF08\u30C8\u30EA\u30AC\u30FC #\uFF09","Minimal Mode":"\u30DF\u30CB\u30DE\u30EB\u30E2\u30FC\u30C9","Enable minimal mode":"\u30DF\u30CB\u30DE\u30EB\u30E2\u30FC\u30C9\u3092\u6709\u52B9\u5316","Enable simplified single-line quick capture with inline suggestions":"\u30A4\u30F3\u30E9\u30A4\u30F3\u63D0\u6848\u4ED8\u304D\u306E\u7C21\u7565\u5316\u3055\u308C\u305F\u5358\u4E00\u884C\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u6709\u52B9\u5316","Suggest trigger character":"\u63D0\u6848\u30C8\u30EA\u30AC\u30FC\u6587\u5B57","Character to trigger the suggestion menu":"\u63D0\u6848\u30E1\u30CB\u30E5\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3059\u308B\u6587\u5B57","Highest Priority":"\u6700\u9AD8\u512A\u5148\u5EA6","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"\u6700\u9AD8\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u23EB High priority task":"\u23EB High priority task","High priority set":"\u9AD8\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"\u4E2D\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u512A\u5148\u5EA6\u30BF\u30B9\u30AF","Low priority set":"\u4F4E\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Lowest Priority":"\u6700\u4F4E\u512A\u5148\u5EA6","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u512A\u5148\u5EA6\u30BF\u30B9\u30AF","Lowest priority set":"\u6700\u4F4E\u512A\u5148\u5EA6\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Set due date to today":"\u671F\u9650\u3092\u4ECA\u65E5\u306B\u8A2D\u5B9A","Due date set to today":"\u671F\u9650\u3092\u4ECA\u65E5\u306B\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Set due date to tomorrow":"\u671F\u9650\u3092\u660E\u65E5\u306B\u8A2D\u5B9A","Due date set to tomorrow":"\u671F\u9650\u3092\u660E\u65E5\u306B\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Pick Date":"\u65E5\u4ED8\u3092\u9078\u629E","Open date picker":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Set scheduled date":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u8A2D\u5B9A","Scheduled date set":"\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u65E5\u3092\u8A2D\u5B9A\u3057\u307E\u3057\u305F","Save to inbox":"\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u306B\u4FDD\u5B58","Target set to Inbox":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u53D7\u4FE1\u30DC\u30C3\u30AF\u30B9\u306B\u8A2D\u5B9A","Daily Note":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8","Save to today's daily note":"\u4ECA\u65E5\u306E\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u4FDD\u5B58","Target set to Daily Note":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u8A2D\u5B9A","Current File":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB","Save to current file":"\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","Target set to Current File":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u8A2D\u5B9A","Choose File":"\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E","Open file picker":"\u30D5\u30A1\u30A4\u30EB\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Save to recent file":"\u6700\u8FD1\u306E\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58","Target set to":"\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8A2D\u5B9A:",Important:"\u91CD\u8981","Tagged as important":"\u91CD\u8981\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Urgent:"\u7DCA\u6025","Tagged as urgent":"\u7DCA\u6025\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Work:"\u4ED5\u4E8B","Work related task":"\u4ED5\u4E8B\u95A2\u9023\u306E\u30BF\u30B9\u30AF","Tagged as work":"\u4ED5\u4E8B\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051",Personal:"\u500B\u4EBA","Personal task":"\u500B\u4EBA\u30BF\u30B9\u30AF","Tagged as personal":"\u500B\u4EBA\u3068\u3057\u3066\u30BF\u30B0\u4ED8\u3051","Choose Tag":"\u30BF\u30B0\u3092\u9078\u629E","Open tag picker":"\u30BF\u30B0\u30D4\u30C3\u30AB\u30FC\u3092\u958B\u304F","Existing tag":"\u65E2\u5B58\u306E\u30BF\u30B0","Tagged with":"\u30BF\u30B0\u4ED8\u3051:","Toggle quick capture panel in editor":"\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048","Toggle quick capture panel in editor (Globally)":"\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u5207\u308A\u66FF\u3048\uFF08\u5168\u4F53\uFF09","Selected Mode":"\u9078\u629E\u30E2\u30FC\u30C9","Features that will be enabled":"\u6709\u52B9\u306B\u306A\u308B\u6A5F\u80FD","Don't worry! You can customize any of these settings later in the plugin settings.":"\u3054\u5B89\u5FC3\u304F\u3060\u3055\u3044\uFF01\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30D7\u30E9\u30B0\u30A4\u30F3\u8A2D\u5B9A\u3067\u5F8C\u304B\u3089\u3044\u3064\u3067\u3082\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u307E\u3059\u3002","Available views":"\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC","Key settings":"\u4E3B\u8981\u8A2D\u5B9A","Progress bars":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC","Enabled (both graphical and text)":"\u6709\u52B9\uFF08\u30B0\u30E9\u30D5\u30A3\u30AB\u30EB\u3068\u30C6\u30AD\u30B9\u30C8\u4E21\u65B9\uFF09","Task status switching":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u5207\u308A\u66FF\u3048","Workflow management":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u7BA1\u7406","Reward system":"\u5831\u916C\u30B7\u30B9\u30C6\u30E0","Habit tracking":"\u7FD2\u6163\u30C8\u30E9\u30C3\u30AD\u30F3\u30B0","Performance optimization":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u6700\u9069\u5316","Configuration Changes":"\u8A2D\u5B9A\u5909\u66F4","Your custom views will be preserved":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u306F\u4FDD\u6301\u3055\u308C\u307E\u3059","New views to be added":"\u8FFD\u52A0\u3055\u308C\u308B\u65B0\u3057\u3044\u30D3\u30E5\u30FC","Existing views to be updated":"\u66F4\u65B0\u3055\u308C\u308B\u65E2\u5B58\u306E\u30D3\u30E5\u30FC","Feature changes":"\u6A5F\u80FD\u5909\u66F4","Only template settings will be applied. Your existing custom configurations will be preserved.":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u9069\u7528\u3055\u308C\u307E\u3059\u3002\u65E2\u5B58\u306E\u30AB\u30B9\u30BF\u30E0\u8A2D\u5B9A\u306F\u4FDD\u6301\u3055\u308C\u307E\u3059\u3002","Congratulations!":"\u304A\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307E\u3059\uFF01","Task Genius has been configured with your selected preferences":"Task Genius \u304C\u3042\u306A\u305F\u306E\u9078\u629E\u3057\u305F\u8A2D\u5B9A\u3067\u69CB\u6210\u3055\u308C\u307E\u3057\u305F","Your Configuration":"\u3042\u306A\u305F\u306E\u8A2D\u5B9A","Quick Start Guide":"\u30AF\u30A4\u30C3\u30AF\u30B9\u30BF\u30FC\u30C8\u30AC\u30A4\u30C9","What's next?":"\u6B21\u306B\u3059\u3079\u304D\u3053\u3068\u306F\uFF1F","Open Task Genius view from the left ribbon":"\u5DE6\u30EA\u30DC\u30F3\u304B\u3089 Task Genius \u30D3\u30E5\u30FC\u3092\u958B\u304F","Create your first task using Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u4F7F\u7528\u3057\u3066\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Explore different views to organize your tasks":"\u3055\u307E\u3056\u307E\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22\u3057\u3066\u30BF\u30B9\u30AF\u3092\u6574\u7406","Customize settings anytime in plugin settings":"\u30D7\u30E9\u30B0\u30A4\u30F3\u8A2D\u5B9A\u3067\u3044\u3064\u3067\u3082\u8A2D\u5B9A\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Helpful Resources":"\u5F79\u7ACB\u3064\u30EA\u30BD\u30FC\u30B9","Complete guide to all features":"\u3059\u3079\u3066\u306E\u6A5F\u80FD\u306E\u5B8C\u5168\u30AC\u30A4\u30C9",Community:"\u30B3\u30DF\u30E5\u30CB\u30C6\u30A3","Get help and share tips":"\u30D8\u30EB\u30D7\u3092\u53D7\u3051\u3066\u30D2\u30F3\u30C8\u3092\u5171\u6709","Customize Task Genius":"Task Genius \u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Click the Task Genius icon in the left sidebar":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u306E Task Genius \u30A2\u30A4\u30B3\u30F3\u3092\u30AF\u30EA\u30C3\u30AF","Start with the Inbox view to see all your tasks":"\u53D7\u4FE1\u7BB1\u30D3\u30E5\u30FC\u304B\u3089\u59CB\u3081\u3066\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3092\u78BA\u8A8D","Use quick capture panel to quickly add your first task":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u4F7F\u7528\u3057\u3066\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u7D20\u65E9\u304F\u8FFD\u52A0","Try the Forecast view to see tasks by date":"\u4E88\u6E2C\u30D3\u30E5\u30FC\u3092\u8A66\u3057\u3066\u65E5\u4ED8\u5225\u306B\u30BF\u30B9\u30AF\u3092\u78BA\u8A8D","Open Task Genius and explore the available views":"Task Genius \u3092\u958B\u3044\u3066\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22","Set up a project using the Projects view":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u8A2D\u5B9A","Try the Kanban board for visual task management":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u8A66\u3057\u3066\u8996\u899A\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406","Use workflow stages to track task progress":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30B9\u30C6\u30FC\u30B8\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30B9\u30AF\u306E\u9032\u6357\u3092\u8FFD\u8DE1","Explore all available views and their configurations":"\u3059\u3079\u3066\u306E\u5229\u7528\u53EF\u80FD\u306A\u30D3\u30E5\u30FC\u3068\u305D\u306E\u8A2D\u5B9A\u3092\u63A2\u7D22","Set up complex workflows for your projects":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u8907\u96D1\u306A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3092\u8A2D\u5B9A","Configure habits and rewards to stay motivated":"\u7FD2\u6163\u3068\u5831\u916C\u3092\u8A2D\u5B9A\u3057\u3066\u30E2\u30C1\u30D9\u30FC\u30B7\u30E7\u30F3\u3092\u7DAD\u6301","Integrate with external calendars and systems":"\u5916\u90E8\u30AB\u30EC\u30F3\u30C0\u30FC\u3068\u30B7\u30B9\u30C6\u30E0\u3068\u7D71\u5408","Open Task Genius from the left sidebar":"\u5DE6\u30B5\u30A4\u30C9\u30D0\u30FC\u304B\u3089 Task Genius \u3092\u958B\u304F","Create your first task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Explore the different views available":"\u5229\u7528\u53EF\u80FD\u306A\u3055\u307E\u3056\u307E\u306A\u30D3\u30E5\u30FC\u3092\u63A2\u7D22","Customize settings as needed":"\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u8A2D\u5B9A\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Thank you for your positive feedback!":"\u80AF\u5B9A\u7684\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002\u4F53\u9A13\u306E\u6539\u5584\u3092\u7D9A\u3051\u3066\u3044\u304D\u307E\u3059\u3002","Share detailed feedback":"\u8A73\u7D30\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u5171\u6709","Skip onboarding":"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u30B9\u30AD\u30C3\u30D7",Back:"\u623B\u308B","Welcome to Task Genius":"Task Genius \u3078\u3088\u3046\u3053\u305D","Transform your task management with advanced progress tracking and workflow automation":"\u9AD8\u5EA6\u306A\u9032\u6357\u8FFD\u8DE1\u3068\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316\u3067\u30BF\u30B9\u30AF\u7BA1\u7406\u3092\u5909\u9769","Progress Tracking":"\u9032\u6357\u8FFD\u8DE1","Visual progress bars and completion tracking for all your tasks":"\u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u306E\u8996\u899A\u7684\u306A\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u3068\u5B8C\u4E86\u8FFD\u8DE1","Organize tasks by projects with advanced filtering and sorting":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3068\u30BD\u30FC\u30C8\u3067\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5225\u306B\u30BF\u30B9\u30AF\u3092\u6574\u7406","Workflow Automation":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316","Automate task status changes and improve your productivity":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u3092\u81EA\u52D5\u5316\u3057\u3066\u751F\u7523\u6027\u3092\u5411\u4E0A","Multiple Views":"\u8907\u6570\u306E\u30D3\u30E5\u30FC","Kanban boards, calendars, Gantt charts, and more visualization options":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u3001\u30AC\u30F3\u30C8\u30C1\u30E3\u30FC\u30C8\u306A\u3069\u306E\u8996\u899A\u5316\u30AA\u30D7\u30B7\u30E7\u30F3","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u3053\u306E\u30AF\u30A4\u30C3\u30AF\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u306F\u3001\u3042\u306A\u305F\u306E\u7D4C\u9A13\u30EC\u30D9\u30EB\u3068\u30CB\u30FC\u30BA\u306B\u57FA\u3065\u3044\u3066 Task Genius \u3092\u8A2D\u5B9A\u3059\u308B\u306E\u306B\u5F79\u7ACB\u3061\u307E\u3059\u3002\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u3044\u3064\u3067\u3082\u5F8C\u3067\u5909\u66F4\u3067\u304D\u307E\u3059\u3002","Choose Your Usage Mode":"\u4F7F\u7528\u30E2\u30FC\u30C9\u3092\u9078\u629E","Select the configuration that best matches your task management experience":"\u3042\u306A\u305F\u306E\u30BF\u30B9\u30AF\u7BA1\u7406\u7D4C\u9A13\u306B\u6700\u3082\u9069\u3057\u305F\u8A2D\u5B9A\u3092\u9078\u629E","Configuration Preview":"\u8A2D\u5B9A\u30D7\u30EC\u30D3\u30E5\u30FC","Review the settings that will be applied for your selected mode":"\u9078\u629E\u3057\u305F\u30E2\u30FC\u30C9\u306B\u9069\u7528\u3055\u308C\u308B\u8A2D\u5B9A\u3092\u78BA\u8A8D","Include task creation guide":"\u30BF\u30B9\u30AF\u4F5C\u6210\u30AC\u30A4\u30C9\u3092\u542B\u3080","Show a quick tutorial on creating your first task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u4F5C\u6210\u306E\u30AF\u30A4\u30C3\u30AF\u30C1\u30E5\u30FC\u30C8\u30EA\u30A2\u30EB\u3092\u8868\u793A","Create Your First Task":"\u6700\u521D\u306E\u30BF\u30B9\u30AF\u3092\u4F5C\u6210","Learn how to create and format tasks in Task Genius":"Task Genius \u3067\u30BF\u30B9\u30AF\u3092\u4F5C\u6210\u3057\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u65B9\u6CD5\u3092\u5B66\u3076","Setup Complete!":"\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u5B8C\u4E86\uFF01","Task Genius is now configured and ready to use":"Task Genius \u306E\u8A2D\u5B9A\u304C\u5B8C\u4E86\u3057\u3001\u4F7F\u7528\u6E96\u5099\u304C\u6574\u3044\u307E\u3057\u305F","Start Using Task Genius":"Task Genius \u3092\u4F7F\u3044\u59CB\u3081\u308B","Task Genius Setup":"Task Genius \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7","Skip setup":"\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u30B9\u30AD\u30C3\u30D7","We noticed you've already configured Task Genius":"Task Genius \u306F\u3059\u3067\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u3088\u3046\u3067\u3059","Your current configuration includes:":"\u73FE\u5728\u306E\u8A2D\u5B9A\u5185\u5BB9\uFF1A","Would you like to run the setup wizard anyway?":"\u305D\u308C\u3067\u3082\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F","Yes, show me the setup wizard":"\u306F\u3044\u3001\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u8868\u793A","No, I'm happy with my current setup":"\u3044\u3044\u3048\u3001\u73FE\u5728\u306E\u8A2D\u5B9A\u3067\u6E80\u8DB3\u3057\u3066\u3044\u307E\u3059","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Task Genius \u3067\u30BF\u30B9\u30AF\u3092\u4F5C\u6210\u3057\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3055\u307E\u3056\u307E\u306A\u65B9\u6CD5\u3092\u5B66\u3073\u307E\u3059\u3002\u7D75\u6587\u5B57\u30D9\u30FC\u30B9\u307E\u305F\u306F Dataview \u30B9\u30BF\u30A4\u30EB\u306E\u69CB\u6587\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002","Task Format Examples":"\u30BF\u30B9\u30AF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4F8B","Basic Task":"\u57FA\u672C\u30BF\u30B9\u30AF","With Emoji Metadata":"\u7D75\u6587\u5B57\u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u671F\u9650\u3001\u{1F53A} = \u9AD8\u512A\u5148\u5EA6\u3001#project/ = \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0","With Dataview Metadata":"Dataview \u30E1\u30BF\u30C7\u30FC\u30BF\u4ED8\u304D","Mixed Format":"\u6DF7\u5408\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Combine emoji and dataview syntax as needed":"\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u7D75\u6587\u5B57\u3068 Dataview \u69CB\u6587\u3092\u7D44\u307F\u5408\u308F\u305B","Task Status Markers":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u30DE\u30FC\u30AB\u30FC","Not started":"\u672A\u958B\u59CB","In progress":"\u9032\u884C\u4E2D","Common Metadata Symbols":"\u4E00\u822C\u7684\u306A\u30E1\u30BF\u30C7\u30FC\u30BF\u30B7\u30F3\u30DC\u30EB","Due date":"\u671F\u9650","Start date":"\u958B\u59CB\u65E5","Scheduled date":"\u4E88\u5B9A\u65E5","Higher priority":"\u9AD8\u512A\u5148\u5EA6","Lower priority":"\u4F4E\u512A\u5148\u5EA6","Recurring task":"\u7E70\u308A\u8FD4\u3057\u30BF\u30B9\u30AF","Project/tag":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8/\u30BF\u30B0","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Obsidian \u306E\u3069\u3053\u304B\u3089\u3067\u3082\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u4F7F\u7528\u3057\u3066\u7D20\u65E9\u304F\u30BF\u30B9\u30AF\u3092\u30AD\u30E3\u30D7\u30C1\u30E3\u3002","Try Quick Capture":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u8A66\u3059","Quick capture is now enabled in your configuration!":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u304C\u8A2D\u5B9A\u3067\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\uFF01","Failed to open quick capture. Please try again later.":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5F8C\u3067\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002","Try It Yourself":"\u81EA\u5206\u3067\u8A66\u3057\u3066\u307F\u308B","Practice creating a task with the format you prefer:":"\u597D\u307F\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u30BF\u30B9\u30AF\u4F5C\u6210\u3092\u7DF4\u7FD2\uFF1A","Practice Task":"\u7DF4\u7FD2\u30BF\u30B9\u30AF","Enter a task using any of the formats shown above":"\u4E0A\u8A18\u306E\u4EFB\u610F\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4F7F\u7528\u3057\u3066\u30BF\u30B9\u30AF\u3092\u5165\u529B","- [ ] Your task here":"- [ ] \u3053\u3053\u306B\u30BF\u30B9\u30AF\u3092\u5165\u529B","Validate Task":"\u30BF\u30B9\u30AF\u3092\u691C\u8A3C","Please enter a task to validate":"\u691C\u8A3C\u3059\u308B\u30BF\u30B9\u30AF\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u3053\u308C\u306F\u6709\u52B9\u306A\u30BF\u30B9\u30AF\u3067\u306F\u306A\u3044\u3088\u3046\u3067\u3059\u3002\u30BF\u30B9\u30AF\u306F '- [ ]' \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059","Valid task format!":"\u6709\u52B9\u306A\u30BF\u30B9\u30AF\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\uFF01","Emoji metadata":"\u7D75\u6587\u5B57\u30E1\u30BF\u30C7\u30FC\u30BF","Dataview metadata":"Dataview \u30E1\u30BF\u30C7\u30FC\u30BF","Project tags":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30BF\u30B0","Detected features: ":"\u691C\u51FA\u3055\u308C\u305F\u6A5F\u80FD\uFF1A",Onboarding:"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0","Restart the welcome guide and setup wizard":"\u30A6\u30A7\u30EB\u30AB\u30E0\u30AC\u30A4\u30C9\u3068\u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u30A6\u30A3\u30B6\u30FC\u30C9\u3092\u518D\u8D77\u52D5","Restart Onboarding":"\u30AA\u30F3\u30DC\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u518D\u8D77\u52D5",Copy:"\u30B3\u30D4\u30FC","Copied!":"\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F\uFF01","MCP integration is only available on desktop":"MCP \u7D71\u5408\u306F\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u7248\u3067\u306E\u307F\u5229\u7528\u53EF\u80FD","MCP Server Status":"MCP \u30B5\u30FC\u30D0\u30FC\u30B9\u30C6\u30FC\u30BF\u30B9","Enable MCP Server":"MCP \u30B5\u30FC\u30D0\u30FC\u3092\u6709\u52B9\u5316","Start the MCP server to allow external tool connections":"\u5916\u90E8\u30C4\u30FC\u30EB\u63A5\u7D9A\u3092\u8A31\u53EF\u3059\u308B\u305F\u3081\u306B MCP \u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1AMCP \u30B5\u30FC\u30D0\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u5916\u90E8\u306E AI \u30C4\u30FC\u30EB\u3084\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u304C\u30BF\u30B9\u30AF\u30C7\u30FC\u30BF\u306B\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u5909\u66F4\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306B\u306F\u6B21\u304C\u542B\u307E\u308C\u307E\u3059\uFF1A
\u2022 \u3059\u3079\u3066\u306E\u30BF\u30B9\u30AF\u3068\u305D\u306E\u8A73\u7D30\u306E\u8AAD\u307F\u53D6\u308A
\u2022 \u65B0\u3057\u3044\u30BF\u30B9\u30AF\u306E\u4F5C\u6210
\u2022 \u65E2\u5B58\u306E\u30BF\u30B9\u30AF\u306E\u66F4\u65B0
\u2022 \u30BF\u30B9\u30AF\u306E\u524A\u9664
\u2022 \u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u3068\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u30A2\u30AF\u30BB\u30B9
MCP \u30B5\u30FC\u30D0\u30FC\u306B\u63A5\u7D9A\u3059\u308B\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u4FE1\u983C\u3057\u3066\u3044\u308B\u5834\u5408\u306E\u307F\u6709\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\u3002
\u7D9A\u884C\u3057\u307E\u3059\u304B\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3057\u305F\u3002\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3\u3092\u5B89\u5168\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\uFF01","Server Configuration":"\u30B5\u30FC\u30D0\u30FC\u8A2D\u5B9A",Host:"\u30DB\u30B9\u30C8","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u30B5\u30FC\u30D0\u30FC\u30DB\u30B9\u30C8\u30A2\u30C9\u30EC\u30B9\u3002\u30ED\u30FC\u30AB\u30EB\u306E\u307F\u306E\u5834\u5408\u306F 127.0.0.1\u3001\u3059\u3079\u3066\u306E\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30FC\u30B9\u306E\u5834\u5408\u306F 0.0.0.0 \u3092\u4F7F\u7528","Security Warning":"\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A0.0.0.0 \u306B\u5207\u308A\u66FF\u3048\u308B\u3068\u3001MCP \u30B5\u30FC\u30D0\u30FC\u304C\u5916\u90E8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308A\u307E\u3059\u3002
\u3053\u308C\u306B\u3088\u308A\u3001Obsidian \u30C7\u30FC\u30BF\u304C\u6B21\u306B\u516C\u958B\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\uFF1A
- \u30ED\u30FC\u30AB\u30EB\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u4E0A\u306E\u4ED6\u306E\u30C7\u30D0\u30A4\u30B9
- \u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u304C\u6B63\u3057\u304F\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u30A4\u30F3\u30BF\u30FC\u30CD\u30C3\u30C8
**\u6B21\u306E\u5834\u5408\u306E\u307F\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\uFF1A**
- \u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u4E0A\u306E\u5F71\u97FF\u3092\u7406\u89E3\u3057\u3066\u3044\u308B
- \u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u3092\u9069\u5207\u306B\u8A2D\u5B9A\u3057\u3066\u3044\u308B
- \u6B63\u5F53\u306A\u7406\u7531\u3067\u5916\u90E8\u30A2\u30AF\u30BB\u30B9\u304C\u5FC5\u8981
\u672C\u5F53\u306B\u7D9A\u884C\u3057\u307E\u3059\u304B\uFF1F`,"Yes, I understand the risks":"\u306F\u3044\u3001\u30EA\u30B9\u30AF\u3092\u7406\u89E3\u3057\u3066\u3044\u307E\u3059","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u30DB\u30B9\u30C8\u304C 0.0.0.0 \u306B\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\u3002\u30B5\u30FC\u30D0\u30FC\u306F\u5916\u90E8\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306B\u306A\u308A\u307E\u3057\u305F\u3002",Port:"\u30DD\u30FC\u30C8","Server port number (default: 7777)":"\u30B5\u30FC\u30D0\u30FC\u30DD\u30FC\u30C8\u756A\u53F7\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8\uFF1A7777\uFF09",Authentication:"\u8A8D\u8A3C","Authentication Token":"\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3","Bearer token for authenticating MCP requests (keep this secret)":"MCP \u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u8A8D\u8A3C\u3059\u308B\u305F\u3081\u306E Bearer \u30C8\u30FC\u30AF\u30F3\uFF08\u79D8\u5BC6\u306B\u4FDD\u7BA1\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",Show:"\u8868\u793A",Hide:"\u975E\u8868\u793A","Token copied to clipboard":"\u30C8\u30FC\u30AF\u30F3\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",Regenerate:"\u518D\u751F\u6210","New token generated":"\u65B0\u3057\u3044\u30C8\u30FC\u30AF\u30F3\u304C\u751F\u6210\u3055\u308C\u307E\u3057\u305F","Advanced Settings":"\u9AD8\u5EA6\u306A\u8A2D\u5B9A","Enable CORS":"CORS \u3092\u6709\u52B9\u5316","Allow cross-origin requests (required for web clients)":"\u30AF\u30ED\u30B9\u30AA\u30EA\u30B8\u30F3\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u8A31\u53EF\uFF08Web \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306B\u5FC5\u8981\uFF09","Log Level":"\u30ED\u30B0\u30EC\u30D9\u30EB","Logging verbosity for debugging":"\u30C7\u30D0\u30C3\u30B0\u7528\u306E\u30ED\u30B0\u8A73\u7D30\u5EA6",Error:"\u30A8\u30E9\u30FC",Warning:"\u8B66\u544A",Info:"\u60C5\u5831",Debug:"\u30C7\u30D0\u30C3\u30B0","Server Actions":"\u30B5\u30FC\u30D0\u30FC\u30A2\u30AF\u30B7\u30E7\u30F3","Test Connection":"\u63A5\u7D9A\u30C6\u30B9\u30C8","Test the MCP server connection":"MCP \u30B5\u30FC\u30D0\u30FC\u63A5\u7D9A\u3092\u30C6\u30B9\u30C8",Test:"\u30C6\u30B9\u30C8","Testing...":"\u30C6\u30B9\u30C8\u4E2D...","Connection test successful! MCP server is working.":"\u63A5\u7D9A\u30C6\u30B9\u30C8\u6210\u529F\uFF01MCP \u30B5\u30FC\u30D0\u30FC\u306F\u52D5\u4F5C\u4E2D\u3067\u3059\u3002","Connection test failed: ":"\u63A5\u7D9A\u30C6\u30B9\u30C8\u5931\u6557\uFF1A","Restart Server":"\u30B5\u30FC\u30D0\u30FC\u3092\u518D\u8D77\u52D5","Stop and restart the MCP server":"MCP \u30B5\u30FC\u30D0\u30FC\u3092\u505C\u6B62\u3057\u3066\u518D\u8D77\u52D5",Restart:"\u518D\u8D77\u52D5","MCP server restarted":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u518D\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F","Failed to restart server: ":"\u30B5\u30FC\u30D0\u30FC\u306E\u518D\u8D77\u52D5\u306B\u5931\u6557\uFF1A","Use Next Available Port":"\u6B21\u306E\u5229\u7528\u53EF\u80FD\u306A\u30DD\u30FC\u30C8\u3092\u4F7F\u7528","Port updated to ":"\u30DD\u30FC\u30C8\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F\uFF1A","No available port found in range":"\u7BC4\u56F2\u5185\u306B\u5229\u7528\u53EF\u80FD\u306A\u30DD\u30FC\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Client Configuration":"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u8A2D\u5B9A","Authentication Method":"\u8A8D\u8A3C\u65B9\u6CD5","Choose the authentication method for client configurations":"\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u8A2D\u5B9A\u306E\u8A8D\u8A3C\u65B9\u6CD5\u3092\u9078\u629E","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7D71\u5408 Bearer\uFF08\u63A8\u5968\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u30AB\u30B9\u30BF\u30E0\u30D8\u30C3\u30C0\u30FC","Supported Authentication Methods:":"\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u8A8D\u8A3C\u65B9\u6CD5\uFF1A","API Documentation":"API \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","Server Endpoint":"\u30B5\u30FC\u30D0\u30FC\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8","Copy URL":"URL \u3092\u30B3\u30D4\u30FC","Available Tools":"\u5229\u7528\u53EF\u80FD\u306A\u30C4\u30FC\u30EB","Loading tools...":"\u30C4\u30FC\u30EB\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D...","No tools available":"\u5229\u7528\u53EF\u80FD\u306A\u30C4\u30FC\u30EB\u304C\u3042\u308A\u307E\u305B\u3093","Failed to load tools. Is the MCP server running?":"\u30C4\u30FC\u30EB\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002MCP \u30B5\u30FC\u30D0\u30FC\u306F\u5B9F\u884C\u4E2D\u3067\u3059\u304B\uFF1F","Example Request":"\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u4F8B","MCP Server not initialized":"MCP \u30B5\u30FC\u30D0\u30FC\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093",Running:"\u5B9F\u884C\u4E2D",Stopped:"\u505C\u6B62\u4E2D",Uptime:"\u7A3C\u50CD\u6642\u9593",Requests:"\u30EA\u30AF\u30A8\u30B9\u30C8\u6570","Toggle this to enable Org-mode style quick capture panel.":"Org-mode \u30B9\u30BF\u30A4\u30EB\u306E\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u30D1\u30CD\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3053\u308C\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002","Auto-add task prefix":"\u30BF\u30B9\u30AF\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u8FFD\u52A0","Automatically add task checkbox prefix to captured content":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u30BF\u30B9\u30AF\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0","Task prefix format":"\u30BF\u30B9\u30AF\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u524D\u306B\u8FFD\u52A0\u3059\u308B\u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\uFF08\u4F8B\uFF1A\u30BF\u30B9\u30AF\u306E\u5834\u5408\u306F '- [ ]'\u3001\u30EA\u30B9\u30C8\u9805\u76EE\u306E\u5834\u5408\u306F '- '\uFF09","Search settings...":"\u8A2D\u5B9A\u3092\u691C\u7D22...","Search settings":"\u8A2D\u5B9A\u3092\u691C\u7D22","Clear search":"\u691C\u7D22\u3092\u30AF\u30EA\u30A2","Search results":"\u691C\u7D22\u7D50\u679C","No settings found":"\u8A2D\u5B9A\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Project Tree View Settings":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u8A2D\u5B9A","Configure how projects are displayed in tree view.":"\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC\u3067\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8868\u793A\u65B9\u6CD5\u3092\u8A2D\u5B9A\u3002","Default project view mode":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u30E2\u30FC\u30C9","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u30D5\u30E9\u30C3\u30C8\u30EA\u30B9\u30C8\u307E\u305F\u306F\u968E\u5C64\u30C4\u30EA\u30FC\u3068\u3057\u3066\u8868\u793A\u3059\u308B\u304B\u3092\u9078\u629E\u3002","Auto-expand project tree":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C4\u30EA\u30FC\u3092\u81EA\u52D5\u5C55\u958B","Automatically expand all project nodes when opening the project view in tree mode.":"\u30C4\u30EA\u30FC\u30E2\u30FC\u30C9\u3067\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D3\u30E5\u30FC\u3092\u958B\u304F\u3068\u304D\u306B\u3001\u3059\u3079\u3066\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30CE\u30FC\u30C9\u3092\u81EA\u52D5\u7684\u306B\u5C55\u958B\u3002","Show empty project folders":"\u7A7A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8868\u793A","Display project folders even if they don't contain any tasks.":"\u30BF\u30B9\u30AF\u304C\u542B\u307E\u308C\u3066\u3044\u306A\u304F\u3066\u3082\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8868\u793A\u3002","Project path separator":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30D1\u30B9\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u968E\u5C64\u30EC\u30D9\u30EB\u3092\u533A\u5207\u308B\u6587\u5B57\uFF08\u4F8B\uFF1A'Project/SubProject' \u306E '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u52D5\u7684\u30E1\u30BF\u30C7\u30FC\u30BF\u4F4D\u7F6E\u6C7A\u3081\u3092\u6709\u52B9\u5316","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u30BF\u30B9\u30AF\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30C6\u30EA\u30B8\u30A7\u30F3\u30C8\u306B\u914D\u7F6E\u3057\u307E\u3059\u3002\u6709\u52B9\u306B\u3059\u308B\u3068\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u306F\u77ED\u3044\u30BF\u30B9\u30AF\u3068\u540C\u3058\u884C\u306B\u8868\u793A\u3055\u308C\u3001\u9577\u3044\u30BF\u30B9\u30AF\u306E\u5834\u5408\u306F\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u7121\u52B9\u306B\u3059\u308B\u3068\u3001\u30E1\u30BF\u30C7\u30FC\u30BF\u306F\u5E38\u306B\u30BF\u30B9\u30AF\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u4E0B\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Toggle tree/list view":"\u30C4\u30EA\u30FC/\u30EA\u30B9\u30C8\u30D3\u30E5\u30FC\u3092\u5207\u308A\u66FF\u3048","Clear date":"\u65E5\u4ED8\u3092\u30AF\u30EA\u30A2","Clear priority":"\u512A\u5148\u5EA6\u3092\u30AF\u30EA\u30A2","Clear all tags":"\u3059\u3079\u3066\u306E\u30BF\u30B0\u3092\u30AF\u30EA\u30A2","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u5EA6","\u23EB High priority":"\u23EB \u9AD8\u512A\u5148\u5EA6","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u512A\u5148\u5EA6","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u512A\u5148\u5EA6","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u512A\u5148\u5EA6","Fixed File":"\u56FA\u5B9A\u30D5\u30A1\u30A4\u30EB","Save to Inbox.md":"Inbox.md \u306B\u4FDD\u5B58","Open Task Genius Setup":"Task Genius \u30BB\u30C3\u30C8\u30A2\u30C3\u30D7\u3092\u958B\u304F","MCP Integration":"MCP \u7D71\u5408",Beginner:"\u521D\u7D1A\u8005","Basic task management with essential features":"\u57FA\u672C\u7684\u306A\u30BF\u30B9\u30AF\u7BA1\u7406\u3068\u5FC5\u9808\u6A5F\u80FD","Basic progress bars":"\u57FA\u672C\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u9808\u30D3\u30E5\u30FC\uFF08\u53D7\u4FE1\u7BB1\u3001\u4E88\u6E2C\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09","Simple task status tracking":"\u30B7\u30F3\u30D7\u30EB\u306A\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8FFD\u8DE1","Quick task capture":"\u30AF\u30A4\u30C3\u30AF\u30BF\u30B9\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3","Date picker functionality":"\u65E5\u4ED8\u30D4\u30C3\u30AB\u30FC\u6A5F\u80FD","Project management with enhanced workflows":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u3068\u5F37\u5316\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC","Full progress bar customization":"\u5B8C\u5168\u306A\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA","Extended views (Kanban, Calendar, Table)":"\u62E1\u5F35\u30D3\u30E5\u30FC\uFF08\u30AB\u30F3\u30D0\u30F3\u3001\u30AB\u30EC\u30F3\u30C0\u30FC\u3001\u30C6\u30FC\u30D6\u30EB\uFF09","Project management features":"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7BA1\u7406\u6A5F\u80FD","Basic workflow automation":"\u57FA\u672C\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u81EA\u52D5\u5316","Advanced filtering and sorting":"\u9AD8\u5EA6\u306A\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3068\u30BD\u30FC\u30C8","Power User":"\u30D1\u30EF\u30FC\u30E6\u30FC\u30B6\u30FC","Full-featured experience with all capabilities":"\u3059\u3079\u3066\u306E\u6A5F\u80FD\u3092\u5099\u3048\u305F\u30D5\u30EB\u6A5F\u80FD\u4F53\u9A13","All views and advanced configurations":"\u3059\u3079\u3066\u306E\u30D3\u30E5\u30FC\u3068\u9AD8\u5EA6\u306A\u8A2D\u5B9A","Complex workflow definitions":"\u8907\u96D1\u306A\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u5B9A\u7FA9","Reward and habit tracking systems":"\u5831\u916C\u3068\u7FD2\u6163\u8FFD\u8DE1\u30B7\u30B9\u30C6\u30E0","Performance optimizations":"\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u6700\u9069\u5316","Advanced integrations":"\u9AD8\u5EA6\u306A\u7D71\u5408","Experimental features":"\u5B9F\u9A13\u7684\u6A5F\u80FD","Timeline and calendar sync":"\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u3068\u30AB\u30EC\u30F3\u30C0\u30FC\u540C\u671F","Not configured":"\u672A\u8A2D\u5B9A",Custom:"\u30AB\u30B9\u30BF\u30E0","Custom views created":"\u30AB\u30B9\u30BF\u30E0\u30D3\u30E5\u30FC\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F","Progress bar settings modified":"\u30D7\u30ED\u30B0\u30EC\u30B9\u30D0\u30FC\u8A2D\u5B9A\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F","Task status settings configured":"\u30BF\u30B9\u30AF\u30B9\u30C6\u30FC\u30BF\u30B9\u8A2D\u5B9A\u304C\u69CB\u6210\u3055\u308C\u307E\u3057\u305F","Quick capture configured":"\u30AF\u30A4\u30C3\u30AF\u30AD\u30E3\u30D7\u30C1\u30E3\u304C\u8A2D\u5B9A\u3055\u308C\u307E\u3057\u305F","Workflow settings enabled":"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u8A2D\u5B9A\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F","Advanced features enabled":"\u9AD8\u5EA6\u306A\u6A5F\u80FD\u304C\u6709\u52B9\u5316\u3055\u308C\u307E\u3057\u305F","File parsing customized":"\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u304C\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3055\u308C\u307E\u3057\u305F"},fj=nz});var oz,gj,kj=b(()=>{oz={"File Metadata Inheritance":"Heran\xE7a de Metadados de Arquivo","Configure how tasks inherit metadata from file frontmatter":"Configure como as tarefas herdam metadados do frontmatter do arquivo","Enable file metadata inheritance":"Habilitar heran\xE7a de metadados de arquivo","Allow tasks to inherit metadata properties from their file's frontmatter":"Permitir que as tarefas herdem propriedades de metadados do frontmatter de seu arquivo","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"As tarefas herdam propriedades de metadados como prioridade, contexto, etc. do frontmatter do arquivo quando n\xE3o explicitamente definidas na tarefa","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"Permitir que subtarefas herdem metadados do frontmatter do arquivo. Quando desabilitado, apenas tarefas de n\xEDvel superior herdam metadados do arquivo","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"Plugin abrangente de gerenciamento de tarefas para Obsidian com barras de progresso, ciclo de status de tarefas e recursos avan\xE7ados de acompanhamento de tarefas.","Show progress bar":"Mostrar barra de progresso","Toggle this to show the progress bar.":"Ative para mostrar a barra de progresso.","Support hover to show progress info":"Suporte para mostrar informa\xE7\xF5es de progresso ao passar o mouse","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"Ative para permitir que este plugin mostre informa\xE7\xF5es de progresso ao passar o mouse sobre a barra de progresso.","Add progress bar to non-task bullet":"Adicionar barra de progresso a itens de lista comuns","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"Ative para permitir adicionar barras de progresso a itens de lista regulares (marcadores n\xE3o relacionados a tarefas).","Add progress bar to Heading":"Adicionar barra de progresso ao Cabe\xE7alho","Toggle this to allow this plugin to add progress bar for Task below the headings.":"Ative para permitir que este plugin adicione uma barra de progresso para Tarefas abaixo dos cabe\xE7alhos.","Enable heading progress bars":"Ativar barras de progresso em cabe\xE7alhos","Add progress bars to headings to show progress of all tasks under that heading.":"Adicione barras de progresso aos cabe\xE7alhos para mostrar o progresso de todas as tarefas sob esse cabe\xE7alho.","Auto complete parent task":"Completar tarefa pai automaticamente","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"Ative para permitir que este plugin complete automaticamente a tarefa pai quando todas as tarefas filhas forem conclu\xEDdas.","Mark parent as 'In Progress' when partially complete":"Marcar pai como 'Em Andamento' quando parcialmente conclu\xEDdo","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"Quando algumas, mas n\xE3o todas as tarefas filhas estiverem conclu\xEDdas, marque a tarefa pai como 'Em Andamento'. S\xF3 funciona quando 'Completar tarefa pai automaticamente' est\xE1 ativado.","Count sub children level of current Task":"Contar n\xEDveis de sub-tarefas da Tarefa atual","Toggle this to allow this plugin to count sub tasks.":"Ative para permitir que este plugin conte sub-tarefas.","Checkbox Status Settings":"Configura\xE7\xF5es de Status da Tarefa","Select a predefined task status collection or customize your own":"Selecione uma cole\xE7\xE3o predefinida de status de tarefa ou personalize a sua","Completed task markers":"Marcadores de tarefa conclu\xEDda",'Characters in square brackets that represent completed tasks. Example: "x|X"':'Caracteres entre colchetes que representam tarefas conclu\xEDdas. Exemplo: "x|X"',"Planned task markers":"Marcadores de tarefa planejada",'Characters in square brackets that represent planned tasks. Example: "?"':'Caracteres entre colchetes que representam tarefas planejadas. Exemplo: "?"',"In progress task markers":"Marcadores de tarefa em andamento",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'Caracteres entre colchetes que representam tarefas em andamento. Exemplo: ">|/"',"Abandoned task markers":"Marcadores de tarefa abandonada",'Characters in square brackets that represent abandoned tasks. Example: "-"':'Caracteres entre colchetes que representam tarefas abandonadas. Exemplo: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'Caracteres entre colchetes que representam tarefas n\xE3o iniciadas. O padr\xE3o \xE9 espa\xE7o " "',"Count other statuses as":"Contar outros status como",'Select the status to count other statuses as. Default is "Not Started".':'Selecione o status para o qual outros status devem ser contados. O padr\xE3o \xE9 "N\xE3o Iniciada".',"Task Counting Settings":"Configura\xE7\xF5es de Contagem de Tarefas","Exclude specific task markers":"Excluir marcadores de tarefa espec\xEDficos",'Specify task markers to exclude from counting. Example: "?|/"':'Especifique marcadores de tarefa a serem exclu\xEDdos da contagem. Exemplo: "?|/"',"Only count specific task markers":"Contar apenas marcadores de tarefa espec\xEDficos","Toggle this to only count specific task markers":"Ative para contar apenas marcadores de tarefa espec\xEDficos","Specific task markers to count":"Marcadores de tarefa espec\xEDficos para contar",'Specify which task markers to count. Example: "x|X|>|/"':'Especifique quais marcadores de tarefa contar. Exemplo: "x|X|>|/"',"Conditional Progress Bar Display":"Exibi\xE7\xE3o Condicional da Barra de Progresso","Hide progress bars based on conditions":"Ocultar barras de progresso com base em condi\xE7\xF5es","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"Ative para habilitar a oculta\xE7\xE3o de barras de progresso com base em tags, pastas ou metadados.","Hide by tags":"Ocultar por tags",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'Especifique tags que ocultar\xE3o barras de progresso (separadas por v\xEDrgula, sem #). Exemplo: "sem-barra-progresso,ocultar-progresso"',"Hide by folders":"Ocultar por pastas",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'Especifique caminhos de pasta que ocultar\xE3o barras de progresso (separados por v\xEDrgula). Exemplo: "Notas Di\xE1rias,Projetos/Ocultos"',"Hide by metadata":"Ocultar por metadados",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'Especifique metadados do frontmatter que ocultar\xE3o barras de progresso. Exemplo: "ocultar-barra-progresso: true"',"Checkbox Status Switcher":"Alternador de Status da Tarefa","Enable task status switcher":"Ativar alternador de status da tarefa","Enable/disable the ability to cycle through task states by clicking.":"Ativar/desativar a capacidade de alternar entre os status da tarefa clicando.","Enable custom task marks":"Ativar marcadores de tarefa personalizados","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"Substitua as caixas de sele\xE7\xE3o padr\xE3o por marcadores de texto estilizados que seguem o ciclo de status da sua tarefa ao serem clicados.","Enable cycle complete status":"Permitir que o status 'Conclu\xEDda' fa\xE7a parte do ciclo de status","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"Ativar/desativar a capacidade de alternar automaticamente entre os status da tarefa ao pressionar um marcador.","Always cycle new tasks":"Sempre ciclar novas tarefas","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"Quando ativado, tarefas rec\xE9m-inseridas ir\xE3o imediatamente para o pr\xF3ximo status. Quando desativado, tarefas rec\xE9m-inseridas com marcadores v\xE1lidos manter\xE3o seu marcador original.","Checkbox Status Cycle and Marks":"Ciclo de Status da Tarefa e Marcadores","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"Defina os status da tarefa e seus marcadores correspondentes. A ordem de cima para baixo define a sequ\xEAncia de ciclo.","Add Status":"Adicionar Status","Completed Task Mover":"Mover Tarefas Conclu\xEDdas","Enable completed task mover":"Ativar mover tarefas conclu\xEDdas","Toggle this to enable commands for moving completed tasks to another file.":"Ative para habilitar comandos para mover tarefas conclu\xEDdas para outro arquivo.","Task marker type":"Tipo de marcador de tarefa","Choose what type of marker to add to moved tasks":"Escolha que tipo de marcador adicionar \xE0s tarefas movidas","Version marker text":"Texto do marcador de vers\xE3o","Text to append to tasks when moved (e.g., 'version 1.0')":"Texto a ser anexado \xE0s tarefas quando movidas (ex.: 'vers\xE3o 1.0')","Date marker text":"Texto do marcador de data","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"Texto a ser anexado \xE0s tarefas quando movidas (ex.: 'arquivado em 2023-12-31')","Custom marker text":"Texto do marcador personalizado","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"Use {{DATE:formato}} para formata\xE7\xE3o de data (ex.: {{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"Tratar tarefas abandonadas como conclu\xEDdas","If enabled, abandoned tasks will be treated as completed.":"Se ativado, tarefas abandonadas ser\xE3o tratadas como conclu\xEDdas.","Complete all moved tasks":"Concluir todas as tarefas movidas","If enabled, all moved tasks will be marked as completed.":"Se ativado, todas as tarefas movidas ser\xE3o marcadas como conclu\xEDdas.","With current file link":"Com link do arquivo atual","A link to the current file will be added to the parent task of the moved tasks.":"Um link para o arquivo atual ser\xE1 adicionado \xE0 tarefa pai das tarefas movidas.","Say Thank You":"Agrade\xE7a",Donate:"Doar","If you like this plugin, consider donating to support continued development:":"Se voc\xEA gosta deste plugin, considere doar para apoiar o desenvolvimento cont\xEDnuo:","Add number to the Progress Bar":"Adicionar n\xFAmero \xE0 Barra de Progresso","Toggle this to allow this plugin to add tasks number to progress bar.":"Ative para permitir que este plugin adicione o n\xFAmero de tarefas \xE0 barra de progresso.","Show percentage":"Mostrar porcentagem","Toggle this to allow this plugin to show percentage in the progress bar.":"Ative para permitir que este plugin mostre a porcentagem na barra de progresso.","Customize progress text":"Personalizar texto de progresso","Toggle this to customize text representation for different progress percentage ranges.":"Ative para personalizar a representa\xE7\xE3o de texto para diferentes intervalos de porcentagem de progresso.","Progress Ranges":"Intervalos de Progresso","Define progress ranges and their corresponding text representations.":"Defina intervalos de progresso e suas representa\xE7\xF5es textuais correspondentes.","Add new range":"Adicionar novo intervalo","Add a new progress percentage range with custom text":"Adicionar um novo intervalo de porcentagem de progresso com texto personalizado","Min percentage (0-100)":"Porcentagem m\xEDnima (0-100)","Max percentage (0-100)":"Porcentagem m\xE1xima (0-100)","Text template (use {{PROGRESS}})":"Modelo de texto (use {{PROGRESS}})","Reset to defaults":"Restaurar padr\xF5es",Reset:"Redefinir","Priority Picker Settings":"Configura\xE7\xF5es do Seletor de Prioridade","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"Ative para habilitar o seletor de prioridade suspenso para prioridades em formato de emoji e letra.","Enable priority picker":"Ativar seletor de prioridade","Enable priority keyboard shortcuts":"Ativar atalhos de teclado para prioridade","Toggle to enable keyboard shortcuts for setting task priorities.":"Ative para habilitar atalhos de teclado para definir prioridades de tarefas.","Date picker":"Seletor de Data","Enable date picker":"Ativar seletor de data","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"Ative para habilitar o seletor de data para tarefas. Isso adicionar\xE1 um \xEDcone de calend\xE1rio perto de suas tarefas, no qual voc\xEA pode clicar para selecionar uma data.","Date mark":"Marcador de data","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"Marcador de emoji para identificar datas. Voc\xEA pode usar m\xFAltiplos emojis separados por v\xEDrgulas.","Quick capture":"Captura r\xE1pida","Enable quick capture":"Ativar captura r\xE1pida","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"Ative para habilitar o painel de captura r\xE1pida no estilo Org-mode. Pressione Alt+C para abrir o painel de captura.","Target file":"Arquivo de destino","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"O arquivo onde o texto capturado ser\xE1 salvo. Voc\xEA pode incluir um caminho, ex.: 'pasta/Captura R\xE1pida.md'","Placeholder text":"Texto de espa\xE7o reservado","Placeholder text to display in the capture panel":"Texto de espa\xE7o reservado para exibir no painel de captura","Append to file":"Anexar ao arquivo","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"Se ativado, o texto capturado ser\xE1 anexado ao arquivo de destino. Se desativado, substituir\xE1 o conte\xFAdo do arquivo.","Task Filter":"Filtro de Tarefas","Enable Task Filter":"Ativar Filtro de Tarefas","Toggle this to enable the task filter panel":"Ative para habilitar o painel de filtro de tarefas","Preset Filters":"Filtros Predefinidos","Create and manage preset filters for quick access to commonly used task filters.":"Crie e gerencie filtros predefinidos para acesso r\xE1pido a filtros de tarefas usados comumente.","Edit Filter: ":"Editar Filtro: ","Filter name":"Nome do filtro","Checkbox Status":"Status da Tarefa","Include or exclude tasks based on their status":"Incluir ou excluir tarefas com base em seu status","Include Completed Tasks":"Incluir Tarefas Conclu\xEDdas","Include In Progress Tasks":"Incluir Tarefas em Andamento","Include Abandoned Tasks":"Incluir Tarefas Abandonadas","Include Not Started Tasks":"Incluir Tarefas N\xE3o Iniciadas","Include Planned Tasks":"Incluir Tarefas Planejadas","Related Tasks":"Tarefas Relacionadas","Include parent, child, and sibling tasks in the filter":"Incluir tarefas pai, filha e irm\xE3s no filtro","Include Parent Tasks":"Incluir Tarefas Pai","Include Child Tasks":"Incluir Tarefas Filhas","Include Sibling Tasks":"Incluir Tarefas Irm\xE3s","Advanced Filter":"Filtro Avan\xE7ado","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"Use opera\xE7\xF5es booleanas: AND, OR, NOT. Exemplo: 'conte\xFAdo do texto AND #tag1'","Filter query":"Consulta de filtro","Filter out tasks":"Ocultar tarefas correspondentes","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"Se ativado, tarefas que correspondem \xE0 consulta ser\xE3o ocultadas; caso contr\xE1rio, ser\xE3o mostradas.",Save:"Salvar",Cancel:"Cancelar","Hide filter panel":"Ocultar painel de filtro","Show filter panel":"Mostrar painel de filtro","Filter Tasks":"Filtrar Tarefas","Preset filters":"Filtros predefinidos","Select a saved filter preset to apply":"Selecione uma predefini\xE7\xE3o de filtro salva para aplicar","Select a preset...":"Selecione uma predefini\xE7\xE3o...",Query:"Consulta","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"Use opera\xE7\xF5es booleanas: AND, OR, NOT. Exemplo: 'conte\xFAdo do texto AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Suporta >, <, =, >=, <=, != para PRIORITY e DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"Se verdadeiro, tarefas que correspondem \xE0 consulta ser\xE3o ocultadas; caso contr\xE1rio, ser\xE3o mostradas.",Completed:"Conclu\xEDda","In Progress":"Em Andamento",Abandoned:"Abandonada","Not Started":"N\xE3o Iniciada",Planned:"Planejada","Include Related Tasks":"Incluir Tarefas Relacionadas","Parent Tasks":"Tarefas Pai","Child Tasks":"Tarefas Filhas","Sibling Tasks":"Tarefas Irm\xE3s",Apply:"Aplicar","New Preset":"Nova Predefini\xE7\xE3o","Preset saved":"Predefini\xE7\xE3o salva","No changes to save":"Nenhuma altera\xE7\xE3o para salvar",Close:"Fechar","Capture to":"Capturar para",Capture:"Capturar","Capture thoughts, tasks, or ideas...":"Capture pensamentos, tarefas ou ideias...",Tomorrow:"Amanh\xE3","In 2 days":"Em 2 dias","In 3 days":"Em 3 dias","In 5 days":"Em 5 dias","In 1 week":"Em 1 semana","In 10 days":"Em 10 dias","In 2 weeks":"Em 2 semanas","In 1 month":"Em 1 m\xEAs","In 2 months":"Em 2 meses","In 3 months":"Em 3 meses","In 6 months":"Em 6 meses","In 1 year":"Em 1 ano","In 5 years":"Em 5 anos","In 10 years":"Em 10 anos","Highest priority":"Prioridade m\xE1xima","High priority":"Prioridade alta","Medium priority":"Prioridade m\xE9dia","No priority":"Sem prioridade","Low priority":"Prioridade baixa","Lowest priority":"Prioridade m\xEDnima","Priority A":"Prioridade A","Priority B":"Prioridade B","Priority C":"Prioridade C","Task Priority":"Prioridade da Tarefa","Remove Priority":"Remover Prioridade","Cycle task status forward":"Avan\xE7ar status da tarefa","Cycle task status backward":"Retroceder status da tarefa","Remove priority":"Remover prioridade","Move task to another file":"Mover tarefa para outro arquivo","Move all completed subtasks to another file":"Mover todas as sub-tarefas conclu\xEDdas para outro arquivo","Move direct completed subtasks to another file":"Mover sub-tarefas conclu\xEDdas diretas para outro arquivo","Move all subtasks to another file":"Mover todas as sub-tarefas para outro arquivo","Set priority":"Definir prioridade","Toggle quick capture panel":"Alternar painel de captura r\xE1pida","Quick capture (Global)":"Captura r\xE1pida (Global)","Toggle task filter panel":"Alternar painel de filtro de tarefas","Filter Mode":"Modo de Filtro","Choose whether to include or exclude tasks that match the filters":"Escolha se deseja incluir ou excluir tarefas que correspondem aos filtros","Show matching tasks":"Mostrar tarefas correspondentes","Hide matching tasks":"Ocultar tarefas correspondentes","Choose whether to show or hide tasks that match the filters":"Escolha se deseja mostrar ou ocultar tarefas que correspondem aos filtros","Create new file:":"Criar novo arquivo:","Completed tasks moved to":"Tarefas conclu\xEDdas movidas para","Failed to create file:":"Falha ao criar arquivo:","Beginning of file":"In\xEDcio do arquivo","Failed to move tasks:":"Falha ao mover tarefas:","No active file found":"Nenhum arquivo ativo encontrado","Task moved to":"Tarefa movida para","Failed to move task:":"Falha ao mover tarefa:","Nothing to capture":"Nada para capturar","Captured successfully":"Capturado com sucesso","Failed to save:":"Falha ao salvar:","Captured successfully to":"Capturado com sucesso para",Total:"Total",Workflow:"Fluxo de Trabalho","Add as workflow root":"Adicionar como raiz do fluxo de trabalho","Move to stage":"Mover para etapa","Complete stage":"Concluir etapa","Add child task with same stage":"Adicionar tarefa filha com a mesma etapa","Could not open quick capture panel in the current editor":"N\xE3o foi poss\xEDvel abrir o painel de captura r\xE1pida no editor atual","Just started {{PROGRESS}}%":"Rec\xE9m iniciado {{PROGRESS}}%","Making progress {{PROGRESS}}%":"Progredindo {{PROGRESS}}%","Half way {{PROGRESS}}%":"Na metade {{PROGRESS}}%","Good progress {{PROGRESS}}%":"Bom progresso {{PROGRESS}}%","Almost there {{PROGRESS}}%":"Quase l\xE1 {{PROGRESS}}%","Progress bar":"Barra de progresso","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"Voc\xEA pode personalizar a barra de progresso atr\xE1s da tarefa pai (geralmente no final da tarefa). Voc\xEA tamb\xE9m pode personalizar a barra de progresso para a tarefa abaixo do cabe\xE7alho.","Hide progress bars":"Ocultar barras de progresso","Parent task changer":"Modificador de tarefa pai","Change the parent task of the current task.":"Altere a tarefa pai da tarefa atual.","No preset filters created yet. Click 'Add New Preset' to create one.":"Nenhum filtro predefinido criado ainda. Clique em 'Adicionar Nova Predefini\xE7\xE3o' para criar um.","Configure task workflows for project and process management":"Configurar fluxos de trabalho de tarefas para gerenciamento de projetos e processos","Enable workflow":"Ativar fluxo de trabalho","Toggle to enable the workflow system for tasks":"Ative para habilitar o sistema de fluxo de trabalho para tarefas","Auto-add timestamp":"Adicionar carimbo de tempo automaticamente","Automatically add a timestamp to the task when it is created":"Adicionar automaticamente um carimbo de tempo \xE0 tarefa quando ela \xE9 criada","Timestamp format:":"Formato do carimbo de tempo:","Timestamp format":"Formato do carimbo de tempo","Remove timestamp when moving to next stage":"Remover carimbo de tempo ao mover para a pr\xF3xima etapa","Remove the timestamp from the current task when moving to the next stage":"Remover o carimbo de tempo da tarefa atual ao mover para a pr\xF3xima etapa","Calculate spent time":"Calcular tempo gasto","Calculate and display the time spent on the task when moving to the next stage":"Calcular e exibir o tempo gasto na tarefa ao mover para a pr\xF3xima etapa","Format for spent time:":"Formato para tempo gasto:","Calculate spent time when move to next stage.":"Calcular tempo gasto ao mover para a pr\xF3xima etapa.","Spent time format":"Formato do tempo gasto","Calculate full spent time":"Calcular tempo gasto total","Calculate the full spent time from the start of the task to the last stage":"Calcular o tempo gasto total desde o in\xEDcio da tarefa at\xE9 a \xFAltima etapa","Auto remove last stage marker":"Remover automaticamente marcador da \xFAltima etapa","Automatically remove the last stage marker when a task is completed":"Remover automaticamente o marcador da \xFAltima etapa quando uma tarefa \xE9 conclu\xEDda","Auto-add next task":"Adicionar automaticamente pr\xF3xima tarefa","Automatically create a new task with the next stage when completing a task":"Criar automaticamente uma nova tarefa com a pr\xF3xima etapa ao concluir uma tarefa","Workflow definitions":"Defini\xE7\xF5es de fluxo de trabalho","Configure workflow templates for different types of processes":"Configure modelos de fluxo de trabalho para diferentes tipos de processos","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"Nenhuma defini\xE7\xE3o de fluxo de trabalho criada ainda. Clique em 'Adicionar Novo Fluxo de Trabalho' para criar uma.","Edit workflow":"Editar fluxo de trabalho","Remove workflow":"Remover fluxo de trabalho","Delete workflow":"Excluir fluxo de trabalho",Delete:"Excluir","Add New Workflow":"Adicionar Novo Fluxo de Trabalho","New Workflow":"Novo Fluxo de Trabalho","Create New Workflow":"Criar Novo Fluxo de Trabalho","Workflow name":"Nome do fluxo de trabalho","A descriptive name for the workflow":"Um nome descritivo para o fluxo de trabalho","Workflow ID":"ID do fluxo de trabalho","A unique identifier for the workflow (used in tags)":"Um identificador \xFAnico para o fluxo de trabalho (usado em tags)",Description:"Descri\xE7\xE3o","Optional description for the workflow":"Descri\xE7\xE3o opcional para o fluxo de trabalho","Describe the purpose and use of this workflow...":"Descreva o prop\xF3sito e uso deste fluxo de trabalho...","Workflow Stages":"Etapas do Fluxo de Trabalho","No stages defined yet. Add a stage to get started.":"Nenhuma etapa definida ainda. Adicione uma etapa para come\xE7ar.",Edit:"Editar","Move up":"Mover para cima","Move down":"Mover para baixo","Sub-stage":"Subetapa","Sub-stage name":"Nome da subetapa","Sub-stage ID":"ID da subetapa","Next: ":"Pr\xF3xima: ","Add Sub-stage":"Adicionar Subetapa","New Sub-stage":"Nova Subetapa","Edit Stage":"Editar Etapa","Stage name":"Nome da etapa","A descriptive name for this workflow stage":"Um nome descritivo para esta etapa do fluxo de trabalho","Stage ID":"ID da etapa","A unique identifier for the stage (used in tags)":"Um identificador \xFAnico para a etapa (usado em tags)","Stage type":"Tipo de etapa","The type of this workflow stage":"O tipo desta etapa do fluxo de trabalho","Linear (sequential)":"Linear (sequencial)","Cycle (repeatable)":"Ciclo (repet\xEDvel)","Terminal (end stage)":"Terminal (etapa final)","Next stage":"Pr\xF3xima etapa","The stage to proceed to after this one":"A etapa para a qual prosseguir ap\xF3s esta","Sub-stages":"Subetapas","Define cycle sub-stages (optional)":"Definir subetapas do ciclo (opcional)","No sub-stages defined yet.":"Nenhuma subetapa definida ainda.","Can proceed to":"Pode prosseguir para","Additional stages that can follow this one (for right-click menu)":"Etapas adicionais que podem seguir esta (para o menu de clique com o bot\xE3o direito)","No additional destination stages defined.":"Nenhuma etapa de destino adicional definida.",Remove:"Remover",Add:"Adicionar","Name and ID are required.":"Nome e ID s\xE3o obrigat\xF3rios.","End of file":"Fim do arquivo","Include in cycle":"Incluir no ciclo",Preset:"Predefini\xE7\xE3o","Preset name":"Nome da predefini\xE7\xE3o","Edit Filter":"Editar Filtro","Add New Preset":"Adicionar Nova Predefini\xE7\xE3o","New Filter":"Novo Filtro","Reset to Default Presets":"Restaurar Predefini\xE7\xF5es Padr\xE3o","This will replace all your current presets with the default set. Are you sure?":"Isso substituir\xE1 todas as suas predefini\xE7\xF5es atuais pelo conjunto padr\xE3o. Tem certeza?","Edit Workflow":"Editar Fluxo de Trabalho",General:"Geral","Progress Bar":"Barra de Progresso","Task Mover":"Mover Tarefas","Quick Capture":"Captura R\xE1pida","Date & Priority":"Data e Prioridade",About:"Sobre","Count sub children of current Task":"Contar sub-tarefas da Tarefa atual","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"Ative para permitir que este plugin conte sub-tarefas ao gerar a barra de progresso.","Configure task status settings":"Configurar defini\xE7\xF5es de status da tarefa","Configure which task markers to count or exclude":"Configurar quais marcadores de tarefa contar ou excluir","Task status cycle and marks":"Ciclo de status da tarefa e marcadores","About Task Genius":"Sobre o Task Genius",Version:"Vers\xE3o",Documentation:"Documenta\xE7\xE3o","View the documentation for this plugin":"Veja a documenta\xE7\xE3o para este plugin","Open Documentation":"Abrir Documenta\xE7\xE3o","Incomplete tasks":"Tarefas incompletas","In progress tasks":"Tarefas em andamento","Completed tasks":"Tarefas conclu\xEDdas","All tasks":"Todas as tarefas","After heading":"Ap\xF3s o cabe\xE7alho","End of section":"Fim da se\xE7\xE3o","Enable text mark in source mode":"Ativar marcador de texto no modo de edi\xE7\xE3o","Make the text mark in source mode follow the task status cycle when clicked.":"Fazer com que o marcador de texto no modo de edi\xE7\xE3o siga o ciclo de status da tarefa ao ser clicado.","Status name":"Nome do status","Progress display mode":"Modo de exibi\xE7\xE3o do progresso","Choose how to display task progress":"Escolha como exibir o progresso da tarefa","No progress indicators":"Sem indicadores de progresso","Graphical progress bar":"Barra de progresso gr\xE1fica","Text progress indicator":"Indicador de progresso textual","Both graphical and text":"Gr\xE1fico e textual","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"Ative para permitir que este plugin conte sub-tarefas ao gerar a barra de progresso.","Progress format":"Formato do progresso","Choose how to display the task progress":"Escolha como exibir o progresso da tarefa","Percentage (75%)":"Porcentagem (75%)","Bracketed percentage ([75%])":"Porcentagem entre colchetes ([75%])","Fraction (3/4)":"Fra\xE7\xE3o (3/4)","Bracketed fraction ([3/4])":"Fra\xE7\xE3o entre colchetes ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"Detalhado ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"Formato personalizado","Range-based text":"Texto baseado em intervalo","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"Use marcadores como {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.","Preview:":"Visualiza\xE7\xE3o:","Available placeholders":"Marcadores dispon\xEDveis","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"Marcadores dispon\xEDveis: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"Exemplos de express\xE3o","Examples of advanced formats using expressions":"Exemplos de formatos avan\xE7ados usando express\xF5es","Text Progress Bar":"Barra de Progresso Textual","Emoji Progress Bar":"Barra de Progresso com Emoji","Color-coded Status":"Status Codificado por Cores","Status with Icons":"Status com \xCDcones",Preview:"Visualizar",Use:"Usar","Toggle this to show percentage instead of completed/total count.":"Ative para mostrar porcentagem em vez da contagem de conclu\xEDdas/total.","Customize progress ranges":"Personalizar intervalos de progresso","Toggle this to customize the text for different progress ranges.":"Ative para personalizar o texto para diferentes intervalos de progresso.","Apply Theme":"Aplicar Tema","Back to main settings":"Voltar para configura\xE7\xF5es principais","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"Suporte a express\xF5es no formato, como usar data.percentages para obter a porcentagem de tarefas conclu\xEDdas. E usar matem\xE1tica ou at\xE9 opera\xE7\xF5es de repeti\xE7\xE3o para obter o resultado.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"Suporte a express\xF5es no formato, como usar data.percentages para obter a porcentagem de tarefas conclu\xEDdas. E usar matem\xE1tica ou at\xE9 fun\xE7\xF5es de repeti\xE7\xE3o para obter o resultado.","Target File:":"Arquivo de Destino:","Task Properties":"Propriedades da Tarefa","Start Date":"Data de In\xEDcio","Due Date":"Data de Vencimento","Scheduled Date":"Data Agendada",Priority:"Prioridade",None:"Nenhuma",Highest:"M\xE1xima",High:"Alta",Medium:"M\xE9dia",Low:"Baixa",Lowest:"M\xEDnima",Project:"Projeto","Project name":"Nome do projeto",Context:"Contexto",Recurrence:"Recorr\xEAncia","e.g., every day, every week":"ex.: todo dia, toda semana","Task Content":"Conte\xFAdo da Tarefa","Task Details":"Detalhes da Tarefa",File:"Arquivo","Edit in File":"Editar no Arquivo","Mark Incomplete":"Marcar como Incompleta","Mark Complete":"Marcar como Conclu\xEDda","Task Title":"T\xEDtulo da Tarefa",Tags:"Tags","e.g. every day, every 2 weeks":"ex.: todo dia, a cada 2 semanas",Forecast:"Previs\xE3o","0 actions, 0 projects":"0 a\xE7\xF5es, 0 projetos","Toggle list/tree view":"Alternar visualiza\xE7\xE3o em lista/\xE1rvore","Focusing on Work":"Focando no Trabalho",Unfocus:"Desfocar","Past Due":"Atrasada",Today:"Hoje",Future:"Futuro",actions:"a\xE7\xF5es",project:"projeto","Coming Up":"Em breve",Task:"Tarefa",Tasks:"Tarefas","No upcoming tasks":"Nenhuma tarefa futura","No tasks scheduled":"Nenhuma tarefa agendada","0 tasks":"0 tarefas","Filter tasks...":"Filtrar tarefas...",Projects:"Projetos","Toggle multi-select":"Alternar multissele\xE7\xE3o","No projects found":"Nenhum projeto encontrado","projects selected":"projetos selecionados",tasks:"tarefas","No tasks in the selected projects":"Nenhuma tarefa nos projetos selecionados","Select a project to see related tasks":"Selecione um projeto para ver tarefas relacionadas","Configure Review for":"Configurar Revis\xE3o para","Review Frequency":"Frequ\xEAncia de Revis\xE3o","How often should this project be reviewed":"Com que frequ\xEAncia este projeto deve ser revisado","Custom...":"Personalizado...","e.g., every 3 months":"ex.: a cada 3 meses","Last Reviewed":"\xDAltima Revis\xE3o","Please specify a review frequency":"Por favor, especifique uma frequ\xEAncia de revis\xE3o","Review schedule updated for":"Agenda de revis\xE3o atualizada para","Review Projects":"Revisar Projetos","Select a project to review its tasks.":"Selecione um projeto para revisar suas tarefas.","Configured for Review":"Configurado para Revis\xE3o","Not Configured":"N\xE3o Configurado","No projects available.":"Nenhum projeto dispon\xEDvel.","Select a project to review.":"Selecione um projeto para revisar.","Show all tasks":"Mostrar todas as tarefas","Showing all tasks, including completed tasks from previous reviews.":"Mostrando todas as tarefas, incluindo tarefas conclu\xEDdas de revis\xF5es anteriores.","Show only new and in-progress tasks":"Mostrar apenas tarefas novas e em andamento","No tasks found for this project.":"Nenhuma tarefa encontrada para este projeto.","Review every":"Revisar a cada",never:"nunca","Last reviewed":"\xDAltima revis\xE3o","Mark as Reviewed":"Marcar como Revisado","No review schedule configured for this project":"Nenhuma agenda de revis\xE3o configurada para este projeto","Configure Review Schedule":"Configurar Agenda de Revis\xE3o","Project Review":"Revis\xE3o de Projeto","Select a project from the left sidebar to review its tasks.":"Selecione um projeto na barra lateral esquerda para revisar suas tarefas.",Inbox:"Caixa de Entrada",Flagged:"Sinalizadas",Review:"Revis\xE3o","tags selected":"tags selecionadas","No tasks with the selected tags":"Nenhuma tarefa com as tags selecionadas","Select a tag to see related tasks":"Selecione uma tag para ver tarefas relacionadas","Open Task Genius view":"Abrir visualiza\xE7\xE3o Task Genius","Task capture with metadata":"Captura de tarefa com metadados","Refresh task index":"Atualizar \xEDndice de tarefas","Refreshing task index...":"Atualizando \xEDndice de tarefas...","Task index refreshed":"\xCDndice de tarefas atualizado","Failed to refresh task index":"Falha ao atualizar \xEDndice de tarefas","Force reindex all tasks":"For\xE7ar reindexa\xE7\xE3o de todas as tarefas","Clearing task cache and rebuilding index...":"Limpando cache de tarefas e reconstruindo \xEDndice...","Task index completely rebuilt":"\xCDndice de tarefas completamente reconstru\xEDdo","Failed to force reindex tasks":"Falha ao for\xE7ar reindexa\xE7\xE3o de tarefas","Task Genius View":"Visualiza\xE7\xE3o Task Genius","Toggle Sidebar":"Alternar Barra Lateral",Details:"Detalhes",View:"Visualiza\xE7\xE3o","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"A visualiza\xE7\xE3o Task Genius \xE9 uma visualiza\xE7\xE3o abrangente que permite gerenciar suas tarefas de forma mais eficiente.","Enable task genius view":"Ativar visualiza\xE7\xE3o Task Genius","Select a task to view details":"Selecione uma tarefa para ver detalhes",Status:"Status","Comma separated":"Separado por v\xEDrgula",Focus:"Foco","Loading more...":"Carregando mais...",projects:"projetos","No tasks for this section.":"Nenhuma tarefa para esta se\xE7\xE3o.","No tasks found.":"Nenhuma tarefa encontrada.",Complete:"Concluir","Switch status":"Mudar status","Rebuild index":"Reconstruir \xEDndice",Rebuild:"Reconstruir","0 tasks, 0 projects":"0 tarefas, 0 projetos","New Custom View":"Nova Visualiza\xE7\xE3o Personalizada","Create Custom View":"Criar Visualiza\xE7\xE3o Personalizada","Edit View: ":"Editar Visualiza\xE7\xE3o: ","View Name":"Nome da Visualiza\xE7\xE3o","My Custom Task View":"Minha Visualiza\xE7\xE3o de Tarefas Personalizada","Icon Name":"Nome do \xCDcone","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"Insira qualquer nome de \xEDcone Lucide (ex.: list-checks, filter, inbox)","Filter Rules":"Regras de Filtro","Hide Completed and Abandoned Tasks":"Ocultar Tarefas Conclu\xEDdas e Abandonadas","Hide completed and abandoned tasks in this view.":"Ocultar tarefas conclu\xEDdas e abandonadas nesta visualiza\xE7\xE3o.","Text Contains":"Texto Cont\xE9m","Filter tasks whose content includes this text (case-insensitive).":"Filtrar tarefas cujo conte\xFAdo inclua este texto (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Tags Include":"Tags Incluem","Task must include ALL these tags (comma-separated).":"A tarefa deve incluir TODAS estas tags (separadas por v\xEDrgula).","Tags Exclude":"Tags Excluem","Task must NOT include ANY of these tags (comma-separated).":"A tarefa N\xC3O deve incluir NENHUMA destas tags (separadas por v\xEDrgula).","Project Is":"Projeto \xC9","Task must belong to this project (exact match).":"A tarefa deve pertencer a este projeto (correspond\xEAncia exata).","Priority Is":"Prioridade \xC9","Task must have this priority (e.g., 1, 2, 3).":"A tarefa deve ter esta prioridade (ex.: 1, 2, 3).","Status Include":"Status Inclui","Task status must be one of these (comma-separated markers, e.g., /,>).":"O status da tarefa deve ser um destes (marcadores separados por v\xEDrgula, ex.: /,>).","Status Exclude":"Status Exclui","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"O status da tarefa N\xC3O deve ser um destes (marcadores separados por v\xEDrgula, ex.: -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"Use AAAA-MM-DD ou termos relativos como 'hoje', 'amanh\xE3', 'pr\xF3xima semana', 'm\xEAs passado'.","Due Date Is":"Data de Vencimento \xC9","Start Date Is":"Data de In\xEDcio \xC9","Scheduled Date Is":"Data Agendada \xC9","Path Includes":"Caminho Inclui","Task must contain this path (case-insensitive).":"A tarefa deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Path Excludes":"Caminho Exclui","Task must NOT contain this path (case-insensitive).":"A tarefa N\xC3O deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas).","Unnamed View":"Visualiza\xE7\xE3o Sem Nome","View configuration saved.":"Configura\xE7\xE3o da visualiza\xE7\xE3o salva.","Hide Details":"Ocultar Detalhes","Show Details":"Mostrar Detalhes","View Config":"Config. da Visualiza\xE7\xE3o","View Configuration":"Configura\xE7\xE3o da Visualiza\xE7\xE3o","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"Configure as visualiza\xE7\xF5es da barra lateral do Task Genius, visibilidade, ordem e crie visualiza\xE7\xF5es personalizadas.","Manage Views":"Gerenciar Visualiza\xE7\xF5es","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"Configure as visualiza\xE7\xF5es da barra lateral, ordem, visibilidade e oculte/mostre tarefas conclu\xEDdas por visualiza\xE7\xE3o.","Show in sidebar":"Mostrar na barra lateral","Edit View":"Editar Visualiza\xE7\xE3o","Move Up":"Mover Para Cima","Move Down":"Mover Para Baixo","Delete View":"Excluir Visualiza\xE7\xE3o","Add Custom View":"Adicionar Visualiza\xE7\xE3o Personalizada","Error: View ID already exists.":"Erro: ID da visualiza\xE7\xE3o j\xE1 existe.",Events:"Eventos",Plan:"Plano",Year:"Ano",Month:"M\xEAs",Week:"Semana",Day:"Dia",Agenda:"Agenda","Back to categories":"Voltar para categorias","No matching options found":"Nenhuma op\xE7\xE3o correspondente encontrada","No matching filters found":"Nenhum filtro correspondente encontrado",Tag:"Tag","File Path":"Caminho do Arquivo","Add filter":"Adicionar filtro","Clear all":"Limpar tudo","Add Card":"Adicionar Cart\xE3o","First Day of Week":"Primeiro Dia da Semana","Overrides the locale default for calendar views.":"Substitui o padr\xE3o da localidade para visualiza\xE7\xF5es de calend\xE1rio.","Show checkbox":"Mostrar caixa de sele\xE7\xE3o","Show a checkbox for each task in the kanban view.":"Mostrar uma caixa de sele\xE7\xE3o para cada tarefa na visualiza\xE7\xE3o kanban.","Locale Default":"Padr\xE3o da Localidade","Use custom goal for progress bar":"Usar meta personalizada para barra de progresso","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"Ative para permitir que este plugin encontre o padr\xE3o g::n\xFAmero como meta da tarefa pai.","Prefer metadata format of task":"Preferir formato de metadados da tarefa","You can choose dataview format or tasks format, that will influence both index and save format.":"Voc\xEA pode escolher o formato dataview ou o formato tasks, o que influenciar\xE1 tanto o \xEDndice quanto o formato de salvamento.","Open in new tab":"Abrir em nova aba","Open settings":"Abrir configura\xE7\xF5es","Hide in sidebar":"Ocultar na barra lateral","No items found":"Nenhum item encontrado","High Priority":"Prioridade Alta","Medium Priority":"Prioridade M\xE9dia","Low Priority":"Prioridade Baixa","No tasks in the selected items":"Nenhuma tarefa nos itens selecionados","View Type":"Tipo de Visualiza\xE7\xE3o","Select the type of view to create":"Selecione o tipo de visualiza\xE7\xE3o a criar","Standard View":"Visualiza\xE7\xE3o Padr\xE3o","Two Column View":"Visualiza\xE7\xE3o em Duas Colunas",Items:"Itens","selected items":"itens selecionados","No items selected":"Nenhum item selecionado","Two Column View Settings":"Configura\xE7\xF5es da Visualiza\xE7\xE3o em Duas Colunas","Group by Task Property":"Agrupar por Propriedade da Tarefa","Select which task property to use for left column grouping":"Selecione qual propriedade da tarefa usar para agrupamento na coluna esquerda",Priorities:"Prioridades",Contexts:"Contextos","Due Dates":"Datas de Vencimento","Scheduled Dates":"Datas Agendadas","Start Dates":"Datas de In\xEDcio",Files:"Arquivos","Left Column Title":"T\xEDtulo da Coluna Esquerda","Title for the left column (items list)":"T\xEDtulo para a coluna esquerda (lista de itens)","Right Column Title":"T\xEDtulo da Coluna Direita","Default title for the right column (tasks list)":"T\xEDtulo padr\xE3o para a coluna direita (lista de tarefas)","Multi-select Text":"Texto da Multissele\xE7\xE3o","Text to show when multiple items are selected":"Texto a ser mostrado quando m\xFAltiplos itens s\xE3o selecionados","Empty State Text":"Texto de Estado Vazio","Text to show when no items are selected":"Texto a ser mostrado quando nenhum item \xE9 selecionado","Filter Blanks":"Filtrar Itens em Branco","Filter out blank tasks in this view.":"Filtrar tarefas em branco nesta visualiza\xE7\xE3o.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"A tarefa deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas). Separe m\xFAltiplos caminhos com v\xEDrgulas.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"A tarefa N\xC3O deve conter este caminho (n\xE3o diferencia mai\xFAsculas/min\xFAsculas). Separe m\xFAltiplos caminhos com v\xEDrgulas.","You have unsaved changes. Save before closing?":"Voc\xEA tem altera\xE7\xF5es n\xE3o salvas. Salvar antes de fechar?",Rotate:"Girar","Are you sure you want to force reindex all tasks?":"Tem certeza de que deseja for\xE7ar a reindexa\xE7\xE3o de todas as tarefas?","Enable progress bar in reading mode":"Ativar barra de progresso no modo de leitura","Toggle this to allow this plugin to show progress bars in reading mode.":"Ative para permitir que este plugin mostre barras de progresso no modo de leitura.",Range:"Intervalo","as a placeholder for the percentage value":"como um marcador para o valor da porcentagem","Template text with":"Texto do modelo com",placeholder:"marcador de posi\xE7\xE3o",Reindex:"Reindexar","From now":"A partir de agora","Complete workflow":"Concluir fluxo de trabalho","Move to":"Mover para",Settings:"Configura\xE7\xF5es","Just started":"Rec\xE9m iniciado","Making progress":"Progredindo","Half way":"Na metade","Good progress":"Bom progresso","Almost there":"Quase l\xE1","archived on":"arquivado em",moved:"movido","Capture your thoughts...":"Capture seus pensamentos...","Project Workflow":"Fluxo de Trabalho do Projeto","Standard project management workflow":"Fluxo de trabalho padr\xE3o de gerenciamento de projetos",Planning:"Planejamento",Development:"Desenvolvimento",Testing:"Teste",Cancelled:"Cancelada",Habit:"H\xE1bito","Drink a cup of good tea":"Beber uma x\xEDcara de um bom ch\xE1","Watch an episode of a favorite series":"Assistir a um epis\xF3dio de uma s\xE9rie favorita","Play a game":"Jogar um jogo","Eat a piece of chocolate":"Comer um peda\xE7o de chocolate",common:"comum",rare:"raro",legendary:"lend\xE1rio","No Habits Yet":"Nenhum H\xE1bito Ainda","Click the open habit button to create a new habit.":"Clique no bot\xE3o abrir h\xE1bito para criar um novo h\xE1bito.","Please enter details":"Por favor, insira os detalhes","Goal reached":"Meta alcan\xE7ada","Exceeded goal":"Meta excedida",Active:"Ativo",today:"hoje",Inactive:"Inativo","All Done!":"Tudo Conclu\xEDdo!","Select event...":"Selecionar evento...","Create new habit":"Criar novo h\xE1bito","Edit habit":"Editar h\xE1bito","Habit type":"Tipo de h\xE1bito","Daily habit":"H\xE1bito di\xE1rio","Simple daily check-in habit":"H\xE1bito simples de check-in di\xE1rio","Count habit":"H\xE1bito de contagem","Record numeric values, e.g., how many cups of water":"Registrar valores num\xE9ricos, ex.: quantos copos de \xE1gua","Mapping habit":"H\xE1bito de mapeamento","Use different values to map, e.g., emotion tracking":"Usar valores diferentes para mapear, ex.: acompanhamento de emo\xE7\xF5es","Scheduled habit":"H\xE1bito agendado","Habit with multiple events":"H\xE1bito com m\xFAltiplos eventos","Habit name":"Nome do h\xE1bito","Display name of the habit":"Nome de exibi\xE7\xE3o do h\xE1bito","Optional habit description":"Descri\xE7\xE3o opcional do h\xE1bito",Icon:"\xCDcone","Please enter a habit name":"Por favor, insira um nome para o h\xE1bito","Property name":"Nome da propriedade","The property name of the daily note front matter":"O nome da propriedade no front matter da nota di\xE1ria","Completion text":"Texto de conclus\xE3o","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Opcional) Texto espec\xEDfico representando conclus\xE3o, deixe em branco para que qualquer valor n\xE3o vazio seja considerado conclu\xEDdo","The property name in daily note front matter to store count values":"O nome da propriedade no front matter da nota di\xE1ria para armazenar valores de contagem","Minimum value":"Valor m\xEDnimo","(Optional) Minimum value for the count":"(Opcional) Valor m\xEDnimo para a contagem","Maximum value":"Valor m\xE1ximo","(Optional) Maximum value for the count":"(Opcional) Valor m\xE1ximo para a contagem",Unit:"Unidade","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Opcional) Unidade para a contagem, como 'copos', 'vezes', etc.","Notice threshold":"Limite de aviso","(Optional) Trigger a notification when this value is reached":"(Opcional) Acionar uma notifica\xE7\xE3o quando este valor for atingido","The property name in daily note front matter to store mapping values":"O nome da propriedade no front matter da nota di\xE1ria para armazenar valores de mapeamento","Value mapping":"Mapeamento de valor","Define mappings from numeric values to display text":"Definir mapeamentos de valores num\xE9ricos para texto de exibi\xE7\xE3o","Add new mapping":"Adicionar novo mapeamento","Scheduled events":"Eventos agendados","Add multiple events that need to be completed":"Adicionar m\xFAltiplos eventos que precisam ser conclu\xEDdos","Event name":"Nome do evento","Event details":"Detalhes do evento","Add new event":"Adicionar novo evento","Please enter a property name":"Por favor, insira um nome de propriedade","Please add at least one mapping value":"Por favor, adicione pelo menos um valor de mapeamento","Mapping key must be a number":"A chave de mapeamento deve ser um n\xFAmero","Please enter text for all mapping values":"Por favor, insira texto para todos os valores de mapeamento","Please add at least one event":"Por favor, adicione pelo menos um evento","Event name cannot be empty":"O nome do evento n\xE3o pode estar vazio","Add new habit":"Adicionar novo h\xE1bito","No habits yet":"Nenhum h\xE1bito ainda","Click the button above to add your first habit":"Clique no bot\xE3o acima para adicionar seu primeiro h\xE1bito","Habit updated":"H\xE1bito atualizado","Habit added":"H\xE1bito adicionado","Delete habit":"Excluir h\xE1bito","This action cannot be undone.":"Esta a\xE7\xE3o n\xE3o pode ser desfeita.","Habit deleted":"H\xE1bito exclu\xEDdo","You've Earned a Reward!":"Voc\xEA Ganhou uma Recompensa!","Your reward:":"Sua recompensa:","Image not found:":"Imagem n\xE3o encontrada:","Claim Reward":"Resgatar Recompensa",Skip:"Pular",Reward:"Recompensa","View & Index Configuration":"Configura\xE7\xE3o de Visualiza\xE7\xE3o e \xCDndice","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Ativar a visualiza\xE7\xE3o Task Genius tamb\xE9m ativar\xE1 o indexador Task Genius, que fornecer\xE1 os resultados da visualiza\xE7\xE3o Task Genius de todo o cofre.","Use daily note path as date":"Usar caminho da nota di\xE1ria como data","If enabled, the daily note path will be used as the date for tasks.":"Se ativado, o caminho da nota di\xE1ria ser\xE1 usado como data para as tarefas.","Task Genius will use moment.js and also this format to parse the daily note path.":"O Task Genius usar\xE1 moment.js e tamb\xE9m este formato para analisar o caminho da nota di\xE1ria.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"Voc\xEA precisa definir `yyyy` em vez de `YYYY` na string de formato. E `dd` em vez de `DD`.","Daily note format":"Formato da nota di\xE1ria","Daily note path":"Caminho da nota di\xE1ria","Select the folder that contains the daily note.":"Selecione a pasta que cont\xE9m a nota di\xE1ria.","Use as date type":"Usar como tipo de data","You can choose due, start, or scheduled as the date type for tasks.":"Voc\xEA pode escolher vencimento, in\xEDcio ou agendada como o tipo de data para as tarefas.",Due:"Vencimento",Start:"In\xEDcio",Scheduled:"Agendada",Rewards:"Recompensas","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure recompensas por concluir tarefas. Defina itens, suas chances de ocorr\xEAncia e condi\xE7\xF5es.","Enable Rewards":"Ativar Recompensas","Toggle to enable or disable the reward system.":"Ative para habilitar ou desabilitar o sistema de recompensas.","Occurrence Levels":"N\xEDveis de Ocorr\xEAncia","Define different levels of reward rarity and their probability.":"Defina diferentes n\xEDveis de raridade de recompensa e sua probabilidade.","Chance must be between 0 and 100.":"A chance deve estar entre 0 e 100.","Level Name (e.g., common)":"Nome do N\xEDvel (ex.: comum)","Chance (%)":"Chance (%)","Delete Level":"Excluir N\xEDvel","Add Occurrence Level":"Adicionar N\xEDvel de Ocorr\xEAncia","New Level":"Novo N\xEDvel","Reward Items":"Itens de Recompensa","Manage the specific rewards that can be obtained.":"Gerencie as recompensas espec\xEDficas que podem ser obtidas.","No levels defined":"Nenhum n\xEDvel definido","Reward Name/Text":"Nome/Texto da Recompensa","Inventory (-1 for \u221E)":"Invent\xE1rio (-1 para \u221E)","Invalid inventory number.":"N\xFAmero de invent\xE1rio inv\xE1lido.","Condition (e.g., #tag AND project)":"Condi\xE7\xE3o (ex.: #tag E projeto)","Image URL (optional)":"URL da Imagem (opcional)","Delete Reward Item":"Excluir Item de Recompensa","No reward items defined yet.":"Nenhum item de recompensa definido ainda.","Add Reward Item":"Adicionar Item de Recompensa","New Reward":"Nova Recompensa","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure as defini\xE7\xF5es de h\xE1bitos, incluindo adicionar novos h\xE1bitos, editar h\xE1bitos existentes e gerenciar a conclus\xE3o de h\xE1bitos.","Enable habits":"Ativar h\xE1bitos","Task sorting is disabled or no sort criteria are defined in settings.":"A ordena\xE7\xE3o de tarefas est\xE1 desativada ou nenhum crit\xE9rio de ordena\xE7\xE3o est\xE1 definido nas configura\xE7\xF5es.","e.g. #tag1, #tag2, #tag3":"ex.: #tag1, #tag2, #tag3",Overdue:"Atrasadas","No tasks found for this tag.":"Nenhuma tarefa encontrada para esta tag.","New custom view":"Nova visualiza\xE7\xE3o personalizada","Create custom view":"Criar visualiza\xE7\xE3o personalizada","Edit view: ":"Editar visualiza\xE7\xE3o: ","Icon name":"Nome do \xEDcone","First day of week":"Primeiro dia da semana","Overrides the locale default for forecast views.":"Substitui o padr\xE3o da localidade para visualiza\xE7\xF5es de previs\xE3o.","View type":"Tipo de visualiza\xE7\xE3o","Standard view":"Visualiza\xE7\xE3o padr\xE3o","Two column view":"Visualiza\xE7\xE3o em duas colunas","Two column view settings":"Configura\xE7\xF5es da visualiza\xE7\xE3o em duas colunas","Group by task property":"Agrupar por propriedade da tarefa","Left column title":"T\xEDtulo da coluna esquerda","Right column title":"T\xEDtulo da coluna direita","Empty state text":"Texto de estado vazio","Hide completed and abandoned tasks":"Ocultar tarefas conclu\xEDdas e abandonadas","Filter blanks":"Filtrar itens em branco","Text contains":"Texto cont\xE9m","Tags include":"Tags incluem","Tags exclude":"Tags excluem","Project is":"Projeto \xE9","Priority is":"Prioridade \xE9","Status include":"Status inclui","Status exclude":"Status exclui","Due date is":"Data de vencimento \xE9","Start date is":"Data de in\xEDcio \xE9","Scheduled date is":"Data agendada \xE9","Path includes":"Caminho inclui","Path excludes":"Caminho exclui","Sort Criteria":"Crit\xE9rios de Ordena\xE7\xE3o","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Defina a ordem em que as tarefas devem ser ordenadas. Os crit\xE9rios s\xE3o aplicados sequencialmente.","No sort criteria defined. Add criteria below.":"Nenhum crit\xE9rio de ordena\xE7\xE3o definido. Adicione crit\xE9rios abaixo.",Content:"Conte\xFAdo",Ascending:"Ascendente",Descending:"Descendente","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascendente: Alta -> Baixa -> Nenhuma. Descendente: Nenhuma -> Baixa -> Alta","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascendente: Mais Cedo -> Mais Tarde -> Nenhuma. Descendente: Nenhuma -> Mais Tarde -> Mais Cedo","Ascending respects status order (Overdue first). Descending reverses it.":"Ascendente respeita a ordem do status (Atrasadas primeiro). Descendente a inverte.","Ascending: A-Z. Descending: Z-A":"Ascendente: A-Z. Descendente: Z-A","Remove Criterion":"Remover Crit\xE9rio","Add Sort Criterion":"Adicionar Crit\xE9rio de Ordena\xE7\xE3o","Reset to Defaults":"Restaurar Padr\xF5es","Has due date":"Possui data de vencimento","Has date":"Possui data","No date":"Sem data",Any:"Qualquer","Has start date":"Possui data de in\xEDcio","Has scheduled date":"Possui data agendada","Has created date":"Possui data de cria\xE7\xE3o","Has completed date":"Possui data de conclus\xE3o","Only show tasks that match the completed date.":"Mostrar apenas tarefas que correspondem \xE0 data de conclus\xE3o.","Has recurrence":"Possui recorr\xEAncia","Has property":"Possui propriedade","No property":"Sem propriedade","Unsaved Changes":"Altera\xE7\xF5es N\xE3o Salvas","Sort Tasks in Section":"Ordenar Tarefas na Se\xE7\xE3o","Tasks sorted (using settings). Change application needs refinement.":"Tarefas ordenadas (usando configura\xE7\xF5es). A aplica\xE7\xE3o da altera\xE7\xE3o precisa de refinamento.","Sort Tasks in Entire Document":"Ordenar Tarefas no Documento Inteiro","Entire document sorted (using settings).":"Documento inteiro ordenado (usando configura\xE7\xF5es).","Tasks already sorted or no tasks found.":"Tarefas j\xE1 ordenadas ou nenhuma tarefa encontrada.","Task Handler":"Manipulador de Tarefas","Show progress bars based on heading":"Mostrar barras de progresso com base no cabe\xE7alho","Toggle this to enable showing progress bars based on heading.":"Ative para habilitar a exibi\xE7\xE3o de barras de progresso com base no cabe\xE7alho.","# heading":"# cabe\xE7alho","Task Sorting":"Ordena\xE7\xE3o de Tarefas","Configure how tasks are sorted in the document.":"Configure como as tarefas s\xE3o ordenadas no documento.","Enable Task Sorting":"Ativar Ordena\xE7\xE3o de Tarefas","Toggle this to enable commands for sorting tasks.":"Ative para habilitar comandos para ordenar tarefas.","Use relative time for date":"Usar tempo relativo para data","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Usar tempo relativo para data no item da lista de tarefas, ex.: 'ontem', 'hoje', 'amanh\xE3', 'em 2 dias', 'h\xE1 3 meses', etc.","Ignore all tasks behind heading":"Ignorar todas as tarefas ap\xF3s o cabe\xE7alho","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Insira o cabe\xE7alho a ser ignorado, ex.: '## Projeto', '## Caixa de Entrada', separado por v\xEDrgula","Focus all tasks behind heading":"Focar todas as tarefas ap\xF3s o cabe\xE7alho","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Insira o cabe\xE7alho para focar, ex.: '## Projeto', '## Caixa de Entrada', separado por v\xEDrgula","Enable rewards":"Ativar recompensas","Reward display type":"Tipo de exibi\xE7\xE3o da recompensa","Choose how rewards are displayed when earned.":"Escolha como as recompensas s\xE3o exibidas ao serem ganhas.","Modal dialog":"Caixa de di\xE1logo modal","Notice (Auto-accept)":"Aviso (Aceitar automaticamente)","Occurrence levels":"N\xEDveis de ocorr\xEAncia","Add occurrence level":"Adicionar n\xEDvel de ocorr\xEAncia","Reward items":"Itens de recompensa","Image url (optional)":"URL da imagem (opcional)","Delete reward item":"Excluir item de recompensa","Add reward item":"Adicionar item de recompensa","moved on":"movida em","Priority (High to Low)":"Prioridade (Alta para Baixa)","Priority (Low to High)":"Prioridade (Baixa para Alta)","Due Date (Earliest First)":"Data de Vencimento (Mais Cedo Primeiro)","Due Date (Latest First)":"Data de Vencimento (Mais Tarde Primeiro)","Scheduled Date (Earliest First)":"Data Agendada (Mais Cedo Primeiro)","Scheduled Date (Latest First)":"Data Agendada (Mais Tarde Primeiro)","Start Date (Earliest First)":"Data de In\xEDcio (Mais Cedo Primeiro)","Start Date (Latest First)":"Data de In\xEDcio (Mais Tarde Primeiro)","Created Date":"Data de Cria\xE7\xE3o",Overview:"Vis\xE3o Geral",Dates:"Datas","e.g. #tag1, #tag2":"ex.: #tag1, #tag2","e.g. @home, @work":"ex.: @casa, @trabalho","Recurrence Rule":"Regra de Recorr\xEAncia","Edit Task":"Editar Tarefa","Save Filter Configuration":"Salvar Configura\xE7\xE3o de Filtro","Filter Configuration Name":"Nome da Configura\xE7\xE3o de Filtro","Enter a name for this filter configuration":"Insira um nome para esta configura\xE7\xE3o de filtro","Filter Configuration Description":"Descri\xE7\xE3o da Configura\xE7\xE3o de Filtro","Enter a description for this filter configuration (optional)":"Insira uma descri\xE7\xE3o para esta configura\xE7\xE3o de filtro (opcional)","Load Filter Configuration":"Carregar Configura\xE7\xE3o de Filtro","No saved filter configurations":"Nenhuma configura\xE7\xE3o de filtro salva","Select a saved filter configuration":"Selecione uma configura\xE7\xE3o de filtro salva",Load:"Carregar",Created:"Criado",Updated:"Atualizado","Filter Summary":"Resumo do Filtro","filter group":"grupo de filtros",filter:"filtro","Root condition":"Condi\xE7\xE3o raiz","Filter configuration name is required":"O nome da configura\xE7\xE3o do filtro \xE9 obrigat\xF3rio","Failed to save filter configuration":"Falha ao salvar configura\xE7\xE3o do filtro","Filter configuration saved successfully":"Configura\xE7\xE3o do filtro salva com sucesso","Failed to load filter configuration":"Falha ao carregar configura\xE7\xE3o do filtro","Filter configuration loaded successfully":"Configura\xE7\xE3o do filtro carregada com sucesso","Failed to delete filter configuration":"Falha ao excluir configura\xE7\xE3o do filtro","Delete Filter Configuration":"Excluir Configura\xE7\xE3o de Filtro","Are you sure you want to delete this filter configuration?":"Tem certeza de que deseja excluir esta configura\xE7\xE3o de filtro?","Filter configuration deleted successfully":"Configura\xE7\xE3o do filtro exclu\xEDda com sucesso",Match:"Corresponder a",All:"Todos","Add filter group":"Adicionar grupo de filtros","Save Current Filter":"Salvar Filtro Atual","Load Saved Filter":"Carregar Filtro Salvo","filter in this group":"filtro neste grupo","Duplicate filter group":"Duplicar grupo de filtros","Remove filter group":"Remover grupo de filtros",OR:"OU","AND NOT":"E N\xC3O",AND:"E","Remove filter":"Remover filtro",contains:"cont\xE9m","does not contain":"n\xE3o cont\xE9m",is:"\xE9","is not":"n\xE3o \xE9","starts with":"come\xE7a com","ends with":"termina com","is empty":"est\xE1 vazio","is not empty":"n\xE3o est\xE1 vazio","is true":"\xE9 verdadeiro","is false":"\xE9 falso","is set":"est\xE1 definido","is not set":"n\xE3o est\xE1 definido",equals:"\xE9 igual a",NOR:"NEM","Group by":"Agrupar por","Select which task property to use for creating columns":"Selecione qual propriedade da tarefa usar para criar colunas","Hide empty columns":"Ocultar colunas vazias","Hide columns that have no tasks.":"Ocultar colunas que n\xE3o t\xEAm tarefas.","Default sort field":"Campo de ordena\xE7\xE3o padr\xE3o","Default field to sort tasks by within each column.":"Campo padr\xE3o para ordenar tarefas dentro de cada coluna.","Default sort order":"Ordem de ordena\xE7\xE3o padr\xE3o","Default order to sort tasks within each column.":"Ordem padr\xE3o para ordenar tarefas dentro de cada coluna.","Custom Columns":"Colunas Personalizadas","Configure custom columns for the selected grouping property":"Configure colunas personalizadas para a propriedade de agrupamento selecionada","No custom columns defined. Add columns below.":"Nenhuma coluna personalizada definida. Adicione colunas abaixo.","Column Title":"T\xEDtulo da Coluna",Value:"Valor","Remove Column":"Remover Coluna","Add Column":"Adicionar Coluna","New Column":"Nova Coluna","Reset Columns":"Redefinir Colunas","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"A tarefa deve ter esta prioridade (ex.: 1, 2, 3). Voc\xEA tamb\xE9m pode usar 'nenhuma' para filtrar tarefas sem prioridade.","Move all incomplete subtasks to another file":"Mover todas as sub-tarefas incompletas para outro arquivo","Move direct incomplete subtasks to another file":"Mover sub-tarefas incompletas diretas para outro arquivo",Filter:"Filtro","Reset Filter":"Redefinir Filtro","Saved Filters":"Filtros Salvos","Manage Saved Filters":"Gerenciar Filtros Salvos","Filter applied: ":"Filtro aplicado: ","Recurrence date calculation":"C\xE1lculo da data de recorr\xEAncia","Choose how to calculate the next date for recurring tasks":"Escolha como calcular a pr\xF3xima data para tarefas recorrentes","Based on due date":"Com base na data de vencimento","Based on scheduled date":"Com base na data agendada","Based on current date":"Com base na data atual","Task Gutter":"Margem da Tarefa","Configure the task gutter.":"Configure a margem da tarefa.","Enable task gutter":"Ativar margem da tarefa","Toggle this to enable the task gutter.":"Ative para habilitar a margem da tarefa.","Incomplete Task Mover":"Mover Tarefas Incompletas","Enable incomplete task mover":"Ativar mover tarefas incompletas","Toggle this to enable commands for moving incomplete tasks to another file.":"Ative para habilitar comandos para mover tarefas incompletas para outro arquivo.","Incomplete task marker type":"Tipo de marcador de tarefa incompleta","Choose what type of marker to add to moved incomplete tasks":"Escolha que tipo de marcador adicionar \xE0s tarefas incompletas movidas","Incomplete version marker text":"Texto do marcador de vers\xE3o incompleta","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Texto a ser anexado \xE0s tarefas incompletas quando movidas (ex.: 'vers\xE3o 1.0')","Incomplete date marker text":"Texto do marcador de data incompleta","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Texto a ser anexado \xE0s tarefas incompletas quando movidas (ex.: 'movida em 2023-12-31')","Incomplete custom marker text":"Texto do marcador personalizado incompleto","With current file link for incomplete tasks":"Com link do arquivo atual para tarefas incompletas","A link to the current file will be added to the parent task of the moved incomplete tasks.":"Um link para o arquivo atual ser\xE1 adicionado \xE0 tarefa pai das tarefas incompletas movidas.","Line Number":"N\xFAmero da Linha","Clear Date":"Limpar Data","Copy view":"Copiar visualiza\xE7\xE3o","View copied successfully: ":"Visualiza\xE7\xE3o copiada com sucesso: ","Copy of ":"C\xF3pia de ","Copy view: ":"Copiar visualiza\xE7\xE3o: ","Creating a copy based on: ":"Criando uma c\xF3pia baseada em: ","You can modify all settings below. The original view will remain unchanged.":"Voc\xEA pode modificar todas as configura\xE7\xF5es abaixo. A visualiza\xE7\xE3o original permanecer\xE1 inalterada.","Tasks Plugin Detected":"Plugin 'Tasks' Detectado","Current status management and date management may conflict with the Tasks plugin. Please check the ":"O gerenciamento de status atual e o gerenciamento de datas podem entrar em conflito com o plugin Tasks. Por favor, verifique a ","compatibility documentation":"documenta\xE7\xE3o de compatibilidade"," for more information.":" para mais informa\xE7\xF5es.","Auto Date Manager":"Gerenciador Autom\xE1tico de Datas","Automatically manage dates based on task status changes":"Gerenciar datas automaticamente com base nas altera\xE7\xF5es de status da tarefa","Enable auto date manager":"Ativar gerenciador autom\xE1tico de datas","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Ative para habilitar o gerenciamento autom\xE1tico de datas quando o status da tarefa mudar. Datas ser\xE3o adicionadas/removidas com base no seu formato de metadados preferido (formato emoji do Tasks ou formato Dataview).","Manage completion dates":"Gerenciar datas de conclus\xE3o","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Adicionar automaticamente datas de conclus\xE3o quando as tarefas s\xE3o marcadas como conclu\xEDdas e remov\xEA-las quando alteradas para outros status.","Manage start dates":"Gerenciar datas de in\xEDcio","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Adicionar automaticamente datas de in\xEDcio quando as tarefas s\xE3o marcadas como em andamento e remov\xEA-las quando alteradas para outros status.","Manage cancelled dates":"Gerenciar datas de cancelamento","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Adicionar automaticamente datas de cancelamento quando as tarefas s\xE3o marcadas como abandonadas e remov\xEA-las quando alteradas para outros status.","Copy View":"Copiar Visualiza\xE7\xE3o",Beta:"Beta","Beta Test Features":"Recursos em Teste Beta","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Recursos experimentais que est\xE3o atualmente em fase de teste. Estes recursos podem ser inst\xE1veis e podem mudar ou ser removidos em atualiza\xE7\xF5es futuras.","Beta Features Warning":"Aviso sobre Recursos Beta","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"Estes recursos s\xE3o experimentais e podem ser inst\xE1veis. Eles podem mudar significativamente ou ser removidos em atualiza\xE7\xF5es futuras devido a altera\xE7\xF5es na API do Obsidian ou outros fatores. Use com cautela e forne\xE7a feedback para ajudar a melhorar esses recursos.","Base View":"Visualiza\xE7\xE3o Base","Advanced view management features that extend the default Task Genius views with additional functionality.":"Recursos avan\xE7ados de gerenciamento de visualiza\xE7\xE3o que estendem as visualiza\xE7\xF5es padr\xE3o do Task Genius com funcionalidades adicionais.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Ativar funcionalidade experimental de Visualiza\xE7\xE3o Base. Este recurso oferece capacidades aprimoradas de gerenciamento de visualiza\xE7\xE3o, mas pode ser afetado por futuras altera\xE7\xF5es na API do Obsidian. Pode ser necess\xE1rio reiniciar o Obsidian para ver as altera\xE7\xF5es.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"Voc\xEA precisa fechar todas as visualiza\xE7\xF5es base se j\xE1 criou visualiza\xE7\xF5es de tarefas nelas e remover visualiza\xE7\xF5es n\xE3o utilizadas editando-as manualmente ao desabilitar este recurso.","Enable Base View":"Ativar Visualiza\xE7\xE3o Base","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Ativar funcionalidade experimental de Visualiza\xE7\xE3o Base. Este recurso oferece capacidades aprimoradas de gerenciamento de visualiza\xE7\xE3o, mas pode ser afetado por futuras altera\xE7\xF5es na API do Obsidian.",Enable:"Ativar","Beta Feedback":"Feedback Beta","Help improve these features by providing feedback on your experience.":"Ajude a melhorar estes recursos fornecendo feedback sobre sua experi\xEAncia.","Report Issues":"Relatar Problemas","If you encounter any issues with beta features, please report them to help improve the plugin.":"Se voc\xEA encontrar quaisquer problemas com os recursos beta, por favor, relate-os para ajudar a melhorar o plugin.","Report Issue":"Relatar Problema",Table:"Tabela","No Priority":"Sem Prioridade","Click to select date":"Clique para selecionar data","Enter tags separated by commas":"Insira tags separadas por v\xEDrgulas","Enter project name":"Insira o nome do projeto","Enter context":"Insira o contexto","Invalid value":"Valor inv\xE1lido","No tasks":"Nenhuma tarefa","1 task":"1 tarefa",Columns:"Colunas","Toggle column visibility":"Alternar visibilidade da coluna","Switch to List Mode":"Alternar para Modo Lista","Switch to Tree Mode":"Alternar para Modo \xC1rvore",Collapse:"Recolher",Expand:"Expandir","Collapse subtasks":"Recolher sub-tarefas","Expand subtasks":"Expandir sub-tarefas","Click to change status":"Clique para mudar status","Click to set priority":"Clique para definir prioridade",Yesterday:"Ontem","Click to edit date":"Clique para editar data","No tags":"Nenhuma tag","Click to open file":"Clique para abrir arquivo","No tasks found":"Nenhuma tarefa encontrada","Completed Date":"Data de Conclus\xE3o","Loading...":"Carregando...","Advanced Filtering":"Filtragem Avan\xE7ada","Use advanced multi-group filtering with complex conditions":"Use filtragem avan\xE7ada multi-grupo com condi\xE7\xF5es complexas","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Reset progress ranges to default values":"Reset progress ranges to default values","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","e.g. every day, every week":"e.g. every day, every week","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},gj=oz});var lz,yj,wj=b(()=>{lz={"File Metadata Inheritance":"\u041D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0444\u0430\u0439\u043B\u0430","Configure how tasks inherit metadata from file frontmatter":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435, \u043A\u0430\u043A \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430","Enable file metadata inheritance":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0444\u0430\u0439\u043B\u0430","Allow tasks to inherit metadata properties from their file's frontmatter":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0438\u0437 frontmatter \u0441\u0432\u043E\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u0417\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442, \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0438 \u0442.\u0434., \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0438 \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u044B \u044F\u0432\u043D\u043E \u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0435","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043D\u0430\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0438\u0437 frontmatter \u0444\u0430\u0439\u043B\u0430. \u041F\u0440\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0435\u0440\u0445\u043D\u0435\u0433\u043E \u0443\u0440\u043E\u0432\u043D\u044F \u043D\u0430\u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u0430","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u041C\u043D\u043E\u0433\u043E\u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438 \u0432 Obsidian \u0441 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430\u043C\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430, \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u043C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u043C\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u044F\u043C\u0438 \u043E\u0442\u0441\u043B\u0435\u0436\u0438\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447.","Show progress bar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to show the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043E\u0431\u0440\u0430\u0437\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Support hover to show progress info":"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0435 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u043B \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E \u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0435 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u043D\u0430 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440.","Add progress bar to non-task bullet":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u043E\u0431\u044B\u0447\u043D\u044B\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C \u0441\u043F\u0438\u0441\u043A\u0430","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u043E\u0431\u044B\u0447\u043D\u044B\u043C \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u043C \u0441\u043F\u0438\u0441\u043A\u0430 (\u043D\u0435 \u0437\u0430\u0434\u0430\u0447\u0430\u043C).","Add progress bar to Heading":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u043B \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Enable heading progress bars":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u0432","Add progress bars to headings to show progress of all tasks under that heading.":"\u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0432\u0441\u0435\u0445 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u044D\u0442\u0438\u043C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Auto complete parent task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043B \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443, \u043A\u043E\u0433\u0434\u0430 \u0432\u0441\u0435 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u044B.","Mark parent as 'In Progress' when partially complete":"\u041E\u0442\u043C\u0435\u0447\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u043A\u0430\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435', \u0435\u0441\u043B\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u0415\u0441\u043B\u0438 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435, \u043D\u043E \u043D\u0435 \u0432\u0441\u0435 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u044B, \u043E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u043A\u0430\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435'. \u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u0440\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043D\u043E\u0439 \u043E\u043F\u0446\u0438\u0438 '\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443'.","Count sub children level of current Task":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Toggle this to allow this plugin to count sub tasks.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.","Checkbox Status Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Select a predefined task status collection or customize your own":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u043D\u0430\u0431\u043E\u0440 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438\u043B\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0441\u0432\u043E\u0439 \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439","Completed task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "x|X"',"Planned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent planned tasks. Example: "?"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "?"',"In progress task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435. \u041F\u0440\u0438\u043C\u0435\u0440: ">|/"',"Abandoned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u0440\u0438\u043C\u0435\u0440: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u0421\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u044B\u0445 \u0441\u043A\u043E\u0431\u043A\u0430\u0445, \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0449\u0438\u0435 \u043D\u0435 \u043D\u0430\u0447\u0430\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 \u043F\u0440\u043E\u0431\u0435\u043B " "',"Count other statuses as":"\u0421\u0447\u0438\u0442\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044B \u043A\u0430\u043A",'Select the status to count other statuses as. Default is "Not Started".':'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441, \u0432 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0443\u0442 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u0442\u044C\u0441\u044F \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044B. \u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u2014 "\u041D\u0435 \u043D\u0430\u0447\u0430\u0442\u043E".',"Task Counting Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430 \u0437\u0430\u0434\u0430\u0447","Exclude specific task markers":"\u0418\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447",'Specify task markers to exclude from counting. Example: "?|/"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043D\u0443\u0436\u043D\u043E \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u0437 \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: "?|/"',"Only count specific task markers":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Toggle this to only count specific task markers":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Specific task markers to count":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430",'Specify which task markers to count. Example: "x|X|>|/"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435, \u043A\u0430\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C. \u041F\u0440\u0438\u043C\u0435\u0440: "x|X|>|/"',"Conditional Progress Bar Display":"\u0423\u0441\u043B\u043E\u0432\u043D\u043E\u0435 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Hide progress bars based on conditions":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043F\u043E \u0443\u0441\u043B\u043E\u0432\u0438\u044F\u043C","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0442\u0435\u0433\u043E\u0432, \u043F\u0430\u043F\u043E\u043A \u0438\u043B\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445.","Hide by tags":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u0442\u0435\u0433\u0430\u043C",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u0433\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E, \u0431\u0435\u0437 #). \u041F\u0440\u0438\u043C\u0435\u0440: "no-progress-bar,hide-progress"',"Hide by folders":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u043F\u0430\u043F\u043A\u0430\u043C",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043F\u0443\u0442\u0438 \u043A \u043F\u0430\u043F\u043A\u0430\u043C, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E). \u041F\u0440\u0438\u043C\u0435\u0440: "Daily Notes,Projects/Hidden"',"Hide by metadata":"\u0421\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u043C",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0435 frontmatter, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430. \u041F\u0440\u0438\u043C\u0435\u0440: "hide-progress-bar: true"',"Checkbox Status Switcher":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Enable task status switcher":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Enable/disable the ability to cycle through task states by clicking.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E \u043A\u043B\u0438\u043A\u0443.","Enable custom task marks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u0435 \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0435 \u0444\u043B\u0430\u0436\u043A\u0438 \u043D\u0430 \u0441\u0442\u0438\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0441\u043B\u0435\u0434\u0443\u044E\u0442 \u0432\u0430\u0448\u0435\u043C\u0443 \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u0440\u0438 \u043A\u043B\u0438\u043A\u0435.","Enable cycle complete status":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C/\u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438 \u043D\u0430 \u043C\u0430\u0440\u043A\u0435\u0440.","Always cycle new tasks":"\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441. \u0415\u0441\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u043C\u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u0430\u043C\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0442 \u0441\u0432\u043E\u0439 \u0438\u0437\u043D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440.","Checkbox Status Cycle and Marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u044B","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 \u0438 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0438\u043C \u043C\u0430\u0440\u043A\u0435\u0440\u044B. \u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043D\u0438\u0437 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F.","Add Status":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441","Completed Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","Enable completed task mover":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","Toggle this to enable commands for moving completed tasks to another file.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B.","Task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0438","Choose what type of marker to add to moved tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043A \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u043C \u0437\u0430\u0434\u0430\u0447\u0430\u043C","Version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0438","Text to append to tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, '\u0432\u0435\u0440\u0441\u0438\u044F 1.0')","Date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0434\u0430\u0442\u044B","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u043C\u044B\u0439 \u043A \u0437\u0430\u0434\u0430\u0447\u0430\u043C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0438 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, '\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043E 2023-12-31')","Custom marker text":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {{DATE:format}} \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u0430\u0442\u044B (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, {{DATE:YYYY-MM-DD}})","Treat abandoned tasks as completed":"\u0421\u0447\u0438\u0442\u0430\u0442\u044C \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u043C\u0438","If enabled, abandoned tasks will be treated as completed.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u043C\u0438.","Complete all moved tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u0432\u0441\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","If enabled, all moved tasks will be marked as completed.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0432\u0441\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u044B \u043A\u0430\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435.","With current file link":"\u0421 \u0441\u0441\u044B\u043B\u043A\u043E\u0439 \u043D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043B","A link to the current file will be added to the parent task of the moved tasks.":"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u0442\u0435\u043A\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u043A \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447.","Say Thank You":"\u0421\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043F\u0430\u0441\u0438\u0431\u043E",Donate:"\u041F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u0442\u044C","If you like this plugin, consider donating to support continued development:":"\u0415\u0441\u043B\u0438 \u0432\u0430\u043C \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F \u044D\u0442\u043E\u0442 \u043F\u043B\u0430\u0433\u0438\u043D, \u043F\u043E\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043E \u043F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u043D\u0438\u0438 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0434\u0430\u043B\u044C\u043D\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438:","Add number to the Progress Bar":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0447\u0438\u0441\u043B\u043E \u043A \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to allow this plugin to add tasks number to progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u043B \u0447\u0438\u0441\u043B\u043E \u0437\u0430\u0434\u0430\u0447 \u043A \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Show percentage":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u043D\u0442","Toggle this to allow this plugin to show percentage in the progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u043B \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Customize progress text":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to customize text representation for different progress percentage ranges.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0440\u0430\u0437\u043D\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Progress Ranges":"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Define progress ranges and their corresponding text representations.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0438 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F.","Add new range":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D","Add a new progress percentage range with custom text":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0441 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u043C","Min percentage (0-100)":"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 (0-100)","Max percentage (0-100)":"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 (0-100)","Text template (use {{PROGRESS}})":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 {{PROGRESS}})","Reset to defaults":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043D\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","Reset progress ranges to default values":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u043D\u0430 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E",Reset:"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C","Priority Picker Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0432\u044B\u0431\u043E\u0440\u0430 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430 \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u0432 \u0441 \u044D\u043C\u043E\u0434\u0437\u0438 \u0438 \u0431\u0443\u043A\u0432\u0430\u043C\u0438.","Enable priority picker":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Enable priority keyboard shortcuts":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0433\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0434\u043B\u044F \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Toggle to enable keyboard shortcuts for setting task priorities.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0433\u043E\u0440\u044F\u0447\u0438\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0438 \u0434\u043B\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u043E\u0432 \u0437\u0430\u0434\u0430\u0447.","Date picker":"\u0412\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B","Enable date picker":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u044B\u0431\u043E\u0440 \u0434\u0430\u0442\u044B \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447. \u042D\u0442\u043E \u0434\u043E\u0431\u0430\u0432\u0438\u0442 \u0438\u043A\u043E\u043D\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u0440\u044F\u0434\u043E\u043C \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u0443\u044E \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0436\u0430\u0442\u044C \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u0430\u0442\u044B.","Date mark":"\u041C\u0430\u0440\u043A\u0435\u0440 \u0434\u0430\u0442\u044B","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u042D\u043C\u043E\u0434\u0437\u0438-\u043C\u0430\u0440\u043A\u0435\u0440 \u0434\u043B\u044F \u043E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u0430\u0442. \u041C\u043E\u0436\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u044D\u043C\u043E\u0434\u0437\u0438, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","Quick capture":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Enable quick capture":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0432 \u0441\u0442\u0438\u043B\u0435 Org-mode. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 Alt+C, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0445\u0432\u0430\u0442\u0430.","Target file":"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u0424\u0430\u0439\u043B, \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0431\u0443\u0434\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442. \u041C\u043E\u0436\u043D\u043E \u0443\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0443\u0442\u044C, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 'folder/Quick Capture.md'","Placeholder text":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C","Placeholder text to display in the capture panel":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u0432 \u043F\u0430\u043D\u0435\u043B\u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0430","Append to file":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u0444\u0430\u0439\u043B","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0432 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B. \u0415\u0441\u043B\u0438 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u043E\u043D \u0437\u0430\u043C\u0435\u043D\u0438\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0444\u0430\u0439\u043B\u0430.","Task Filter":"\u0424\u0438\u043B\u044C\u0442\u0440 \u0437\u0430\u0434\u0430\u0447","Enable Task Filter":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440 \u0437\u0430\u0434\u0430\u0447","Toggle this to enable the task filter panel":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0447","Preset Filters":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B","Create and manage preset filters for quick access to commonly used task filters.":"\u0421\u043E\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0439\u0442\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u043C\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C\u0438 \u0434\u043B\u044F \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0447\u0430\u0441\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C \u0437\u0430\u0434\u0430\u0447.","Edit Filter: ":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440: ","Filter name":"\u0418\u043C\u044F \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Checkbox Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","Include or exclude tasks based on their status":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0438\u0445 \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Include Completed Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include In Progress Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","Include Abandoned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Not Started Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0435 \u043D\u0430\u0447\u0430\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Planned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Related Tasks":"\u0421\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include parent, child, and sibling tasks in the filter":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435, \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0438 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0444\u0438\u043B\u044C\u0442\u0440","Include Parent Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Child Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Include Sibling Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Advanced Filter":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u044B \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438: AND, OR, NOT. \u041F\u0440\u0438\u043C\u0435\u0440: 'text content AND #tag1'","Filter query":"\u0417\u0430\u043F\u0440\u043E\u0441 \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Filter out tasks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u0443, \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0442\u044B, \u0438\u043D\u0430\u0447\u0435 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u044B",Save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",Cancel:"\u041E\u0442\u043C\u0435\u043D\u0430","Hide filter panel":"\u0421\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Show filter panel":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430","Filter Tasks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","Preset filters":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B","Select a saved filter preset to apply":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0439 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440 \u0434\u043B\u044F \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u044F","Select a preset...":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443...",Query:"\u0417\u0430\u043F\u0440\u043E\u0441","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u044B \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438: AND, OR, NOT. \u041F\u0440\u0438\u043C\u0435\u0440: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 >, <, =, >=, <=, != \u0434\u043B\u044F PRIORITY \u0438 DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u0415\u0441\u043B\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u043E, \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u0443, \u0431\u0443\u0434\u0443\u0442 \u0441\u043A\u0440\u044B\u0442\u044B, \u0438\u043D\u0430\u0447\u0435 \u043E\u043D\u0438 \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u044B",Completed:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","In Progress":"\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435",Abandoned:"\u0417\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043E","Not Started":"\u041D\u0435 \u043D\u0430\u0447\u0430\u0442\u043E",Planned:"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043E","Include Related Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Parent Tasks":"\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Child Tasks":"\u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Sibling Tasks":"\u0421\u043E\u0441\u0435\u0434\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",Apply:"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C","New Preset":"\u041D\u043E\u0432\u0430\u044F \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430","Preset saved":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430","No changes to save":"\u041D\u0435\u0442 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u0434\u043B\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F",Close:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C","Capture to":"\u0417\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C \u0432",Capture:"\u0417\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C","Capture thoughts, tasks, or ideas...":"\u0417\u0430\u0445\u0432\u0430\u0442\u044B\u0432\u0430\u0439\u0442\u0435 \u043C\u044B\u0441\u043B\u0438, \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u043B\u0438 \u0438\u0434\u0435\u0438...",Tomorrow:"\u0417\u0430\u0432\u0442\u0440\u0430","In 2 days":"\u0427\u0435\u0440\u0435\u0437 2 \u0434\u043D\u044F","In 3 days":"\u0427\u0435\u0440\u0435\u0437 3 \u0434\u043D\u044F","In 5 days":"\u0427\u0435\u0440\u0435\u0437 5 \u0434\u043D\u0435\u0439","In 1 week":"\u0427\u0435\u0440\u0435\u0437 1 \u043D\u0435\u0434\u0435\u043B\u044E","In 10 days":"\u0427\u0435\u0440\u0435\u0437 10 \u0434\u043D\u0435\u0439","In 2 weeks":"\u0427\u0435\u0440\u0435\u0437 2 \u043D\u0435\u0434\u0435\u043B\u0438","In 1 month":"\u0427\u0435\u0440\u0435\u0437 1 \u043C\u0435\u0441\u044F\u0446","In 2 months":"\u0427\u0435\u0440\u0435\u0437 2 \u043C\u0435\u0441\u044F\u0446\u0430","In 3 months":"\u0427\u0435\u0440\u0435\u0437 3 \u043C\u0435\u0441\u044F\u0446\u0430","In 6 months":"\u0427\u0435\u0440\u0435\u0437 6 \u043C\u0435\u0441\u044F\u0446\u0435\u0432","In 1 year":"\u0427\u0435\u0440\u0435\u0437 1 \u0433\u043E\u0434","In 5 years":"\u0427\u0435\u0440\u0435\u0437 5 \u043B\u0435\u0442","In 10 years":"\u0427\u0435\u0440\u0435\u0437 10 \u043B\u0435\u0442","Highest priority":"\u041D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","High priority":"\u0412\u044B\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Medium priority":"\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","No priority":"\u0411\u0435\u0437 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u0430","Low priority":"\u041D\u0438\u0437\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Lowest priority":"\u041D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Priority A":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 A","Priority B":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 B","Priority C":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 C","Task Priority":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438","Remove Priority":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Cycle task status forward":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043F\u0435\u0440\u0435\u0434","Cycle task status backward":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u043D\u0430\u0437\u0430\u0434","Remove priority":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Move task to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move all completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move direct completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043F\u0440\u044F\u043C\u044B\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Move all subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0434\u0440\u0443\u0433\u043E\u0439 \u0444\u0430\u0439\u043B","Set priority":"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Toggle quick capture panel":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430","Quick capture (Global)":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442 (\u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439)","Toggle task filter panel":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0447","Filter Mode":"\u0420\u0435\u0436\u0438\u043C \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438","Choose whether to include or exclude tasks that match the filters":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C","Show matching tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Hide matching tasks":"\u0421\u043A\u0440\u044B\u0442\u044C \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Choose whether to show or hide tasks that match the filters":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0441\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u043C","Create new file:":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B:","Completed tasks moved to":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u044B \u0432","Failed to create file:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0444\u0430\u0439\u043B:","Beginning of file":"\u041D\u0430\u0447\u0430\u043B\u043E \u0444\u0430\u0439\u043B\u0430","Failed to move tasks:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438:","No active file found":"\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0444\u0430\u0439\u043B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D","Task moved to":"\u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0430 \u0432","Failed to move task:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0443:","Nothing to capture":"\u041D\u0435\u0447\u0435\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044C","Captured successfully":"\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043E","Failed to save:":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C:","Captured successfully to":"\u0423\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043D\u043E \u0432",Total:"\u0412\u0441\u0435\u0433\u043E",Workflow:"\u0420\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Add as workflow root":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u043A \u043A\u043E\u0440\u0435\u043D\u044C \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Move to stage":"\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A \u044D\u0442\u0430\u043F\u0443","Complete stage":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u044D\u0442\u0430\u043F","Add child task with same stage":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u044E\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0442\u0435\u043C \u0436\u0435 \u044D\u0442\u0430\u043F\u043E\u043C","Could not open quick capture panel in the current editor":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0431\u044B\u0441\u0442\u0440\u043E\u0433\u043E \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0432 \u0442\u0435\u043A\u0443\u0449\u0435\u043C \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435","Just started {{PROGRESS}}%":"\u0422\u043E\u043B\u044C\u043A\u043E \u043D\u0430\u0447\u0430\u0442\u043E {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u041D\u0430 \u043F\u043E\u043B\u043F\u0443\u0442\u0438 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u0425\u043E\u0440\u043E\u0448\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u041F\u043E\u0447\u0442\u0438 \u0433\u043E\u0442\u043E\u0432\u043E {{PROGRESS}}%","Progress bar":"\u0418\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0437\u0430 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 (\u043E\u0431\u044B\u0447\u043D\u043E \u0432 \u043A\u043E\u043D\u0446\u0435 \u0437\u0430\u0434\u0430\u0447\u0438). \u0422\u0430\u043A\u0436\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Hide progress bars":"\u0421\u043A\u0440\u044B\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Parent task changer":"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Change the parent task of the current task.":"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.","No preset filters created yet. Click 'Add New Preset' to create one.":"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u044B \u0435\u0449\u0435 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u044B. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443', \u0447\u0442\u043E\u0431\u044B \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0434\u043D\u0443.","Configure task workflows for project and process management":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0440\u0430\u0431\u043E\u0447\u0438\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u044B \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u043C\u0438 \u0438 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430\u043C\u0438","Enable workflow":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Toggle to enable the workflow system for tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447","Auto-add timestamp":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443","Automatically add a timestamp to the task when it is created":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u043A \u0437\u0430\u0434\u0430\u0447\u0435 \u043F\u0440\u0438 \u0435\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438","Timestamp format:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u043C\u0435\u0442\u043A\u0438:","Timestamp format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u043C\u0435\u0442\u043A\u0438","Remove timestamp when moving to next stage":"\u0423\u0434\u0430\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Remove the timestamp from the current task when moving to the next stage":"\u0423\u0434\u0430\u043B\u044F\u0442\u044C \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u0443\u044E \u043C\u0435\u0442\u043A\u0443 \u0438\u0437 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Calculate spent time":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F","Calculate and display the time spent on the task when moving to the next stage":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0438 \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u0432\u0440\u0435\u043C\u044F, \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u043D\u0430 \u0437\u0430\u0434\u0430\u0447\u0443, \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443","Format for spent time:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438:","Calculate spent time when move to next stage.":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0435 \u043A \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C\u0443 \u044D\u0442\u0430\u043F\u0443.","Spent time format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438","Calculate full spent time":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u043E\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F","Calculate the full spent time from the start of the task to the last stage":"\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u043D\u043E\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0442 \u043D\u0430\u0447\u0430\u043B\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430","Auto remove last stage marker":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430","Automatically remove the last stage marker when a task is completed":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u044D\u0442\u0430\u043F\u0430, \u043A\u043E\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430","Auto-add next task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443","Automatically create a new task with the next stage when completing a task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u043C \u044D\u0442\u0430\u043F\u043E\u043C \u043F\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438","Workflow definitions":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432","Configure workflow templates for different types of processes":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0448\u0430\u0431\u043B\u043E\u043D\u044B \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0434\u043B\u044F \u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0442\u0438\u043F\u043E\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432 \u0435\u0449\u0435 \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043D\u044B. \u041D\u0430\u0436\u043C\u0438\u0442\u0435 '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441', \u0447\u0442\u043E\u0431\u044B \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0434\u0438\u043D.","Edit workflow":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Remove workflow":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Delete workflow":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441",Delete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C","Add New Workflow":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","New Workflow":"\u041D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Create New Workflow":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Workflow name":"\u0418\u043C\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","A descriptive name for the workflow":"\u041E\u043F\u0438\u0441\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Workflow ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","A unique identifier for the workflow (used in tags)":"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0433\u0430\u0445)",Description:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435","Optional description for the workflow":"\u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0434\u043B\u044F \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Describe the purpose and use of this workflow...":"\u041E\u043F\u0438\u0448\u0438\u0442\u0435 \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u044D\u0442\u043E\u0433\u043E \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430...","Workflow Stages":"\u042D\u0442\u0430\u043F\u044B \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","No stages defined yet. Add a stage to get started.":"\u042D\u0442\u0430\u043F\u044B \u0435\u0449\u0435 \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B. \u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u044D\u0442\u0430\u043F, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C.",Edit:"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C","Move up":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0432\u0435\u0440\u0445","Move down":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043D\u0438\u0437","Sub-stage":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F","Sub-stage name":"\u0418\u043C\u044F \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u0430","Sub-stage ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u0430","Next: ":"\u0414\u0430\u043B\u0435\u0435: ","Add Sub-stage":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u044D\u0442\u0430\u043F","New Sub-stage":"\u041D\u043E\u0432\u044B\u0439 \u043F\u043E\u0434\u044D\u0442\u0430\u043F","Edit Stage":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u0430\u043F","Stage name":"\u0418\u043C\u044F \u044D\u0442\u0430\u043F\u0430","A descriptive name for this workflow stage":"\u041E\u043F\u0438\u0441\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u044D\u0442\u0430\u043F\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Stage ID":"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u044D\u0442\u0430\u043F\u0430","A unique identifier for the stage (used in tags)":"\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0434\u043B\u044F \u044D\u0442\u0430\u043F\u0430 (\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0433\u0430\u0445)","Stage type":"\u0422\u0438\u043F \u044D\u0442\u0430\u043F\u0430","The type of this workflow stage":"\u0422\u0438\u043F \u044D\u0442\u043E\u0433\u043E \u044D\u0442\u0430\u043F\u0430 \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0430","Linear (sequential)":"\u041B\u0438\u043D\u0435\u0439\u043D\u044B\u0439 (\u043F\u043E\u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439)","Cycle (repeatable)":"\u0426\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u0439 (\u043F\u043E\u0432\u0442\u043E\u0440\u044F\u0435\u043C\u044B\u0439)","Terminal (end stage)":"\u0422\u0435\u0440\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0439 (\u043A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 \u044D\u0442\u0430\u043F)","Next stage":"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u044D\u0442\u0430\u043F","The stage to proceed to after this one":"\u042D\u0442\u0430\u043F, \u043A \u043A\u043E\u0442\u043E\u0440\u043E\u043C\u0443 \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043F\u043E\u0441\u043B\u0435 \u044D\u0442\u043E\u0433\u043E","Sub-stages":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F\u044B","Define cycle sub-stages (optional)":"\u041E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u0446\u0438\u043A\u043B\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u043F\u043E\u0434\u044D\u0442\u0430\u043F\u044B (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)","No sub-stages defined yet.":"\u041F\u043E\u0434\u044D\u0442\u0430\u043F\u044B \u0435\u0449\u0435 \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B.","Can proceed to":"\u041C\u043E\u0436\u0435\u0442 \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043A","Additional stages that can follow this one (for right-click menu)":"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044D\u0442\u0430\u043F\u044B, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043C\u043E\u0433\u0443\u0442 \u0441\u043B\u0435\u0434\u043E\u0432\u0430\u0442\u044C \u0437\u0430 \u044D\u0442\u0438\u043C (\u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u043E\u0433\u043E \u043C\u0435\u043D\u044E)","No additional destination stages defined.":"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0446\u0435\u043B\u0435\u0432\u044B\u0435 \u044D\u0442\u0430\u043F\u044B \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u044B.",Remove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",Add:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C","Name and ID are required.":"\u0418\u043C\u044F \u0438 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B.","End of file":"\u041A\u043E\u043D\u0435\u0446 \u0444\u0430\u0439\u043B\u0430","Include in cycle":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432 \u0446\u0438\u043A\u043B",Preset:"\u041F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430","Preset name":"\u0418\u043C\u044F \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438","Edit Filter":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440","Add New Preset":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0443","New Filter":"\u041D\u043E\u0432\u044B\u0439 \u0444\u0438\u043B\u044C\u0442\u0440","Reset to Default Presets":"\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u043D\u0430 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","This will replace all your current presets with the default set. Are you sure?":"\u042D\u0442\u043E \u0437\u0430\u043C\u0435\u043D\u0438\u0442 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0442\u0435\u043A\u0443\u0449\u0438\u0435 \u043F\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u043D\u0430 \u043D\u0430\u0431\u043E\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. \u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B?","Edit Workflow":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441",General:"\u041E\u0431\u0449\u0438\u0435","Progress Bar":"\u0418\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447","Quick Capture":"\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Date & Priority":"\u0414\u0430\u0442\u0430 \u0438 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",About:"\u041E \u043F\u043B\u0430\u0433\u0438\u043D\u0435","Count sub children of current Task":"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Configure task status settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447","Configure which task markers to count or exclude":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C, \u043A\u0430\u043A\u0438\u0435 \u043C\u0430\u0440\u043A\u0435\u0440\u044B \u0437\u0430\u0434\u0430\u0447 \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0438\u043B\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0442\u044C","Task status cycle and marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u0432 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u044B","About Task Genius":"\u041E Task Genius",Version:"\u0412\u0435\u0440\u0441\u0438\u044F",Documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F","View the documentation for this plugin":"\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u043B\u0430\u0433\u0438\u043D\u0430","Open Documentation":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044E","Incomplete tasks":"\u041D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","In progress tasks":"\u0417\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","Completed tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","All tasks":"\u0412\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","After heading":"\u041F\u043E\u0441\u043B\u0435 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430","End of section":"\u041A\u043E\u043D\u0435\u0446 \u0440\u0430\u0437\u0434\u0435\u043B\u0430","Enable text mark in source mode":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435","Make the text mark in source mode follow the task status cycle when clicked.":"\u0421\u0434\u0435\u043B\u0430\u0442\u044C \u0442\u0430\u043A, \u0447\u0442\u043E\u0431\u044B \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435 \u0441\u043B\u0435\u0434\u043E\u0432\u0430\u043B \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u043A\u043B\u0438\u043A\u0435.","Status name":"\u0418\u043C\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0430","Progress display mode":"\u0420\u0435\u0436\u0438\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Choose how to display task progress":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043A\u0430\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","No progress indicators":"\u0411\u0435\u0437 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Graphical progress bar":"\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Text progress indicator":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Both graphical and text":"\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0443\u0447\u0438\u0442\u044B\u0432\u0430\u043B \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Progress format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Choose how to display the task progress":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435, \u043A\u0430\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 \u0437\u0430\u0434\u0430\u0447\u0438","Percentage (75%)":"\u041F\u0440\u043E\u0446\u0435\u043D\u0442 (75%)","Bracketed percentage ([75%])":"\u041F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432 \u0441\u043A\u043E\u0431\u043A\u0430\u0445 ([75%])","Fraction (3/4)":"\u0414\u0440\u043E\u0431\u044C (3/4)","Bracketed fraction ([3/4])":"\u0414\u0440\u043E\u0431\u044C \u0432 \u0441\u043A\u043E\u0431\u043A\u0430\u0445 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442","Range-based text":"\u0422\u0435\u043A\u0441\u0442 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0435 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u0430","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A {{COMPLETED}}, {{TOTAL}}, {{PERCENT}} \u0438 \u0442.\u0434.","Preview:":"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440:","Available placeholders":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0438: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"\u041F\u0440\u0438\u043C\u0435\u0440\u044B \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439","Examples of advanced formats using expressions":"\u041F\u0440\u0438\u043C\u0435\u0440\u044B \u043F\u0440\u043E\u0434\u0432\u0438\u043D\u0443\u0442\u044B\u0445 \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u0432 \u0441 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435\u043C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439","Text Progress Bar":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0439 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Emoji Progress Bar":"\u042D\u043C\u043E\u0434\u0437\u0438 \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Color-coded Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0441 \u0446\u0432\u0435\u0442\u043E\u0432\u043E\u0439 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u043E\u0439","Status with Icons":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0441 \u0438\u043A\u043E\u043D\u043A\u0430\u043C\u0438",Preview:"\u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",Use:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C","Toggle this to show percentage instead of completed/total count.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0432\u043C\u0435\u0441\u0442\u043E \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445/\u0432\u0441\u0435\u0433\u043E.","Customize progress ranges":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to customize the text for different progress ranges.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0440\u0430\u0437\u043D\u044B\u0445 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\u043E\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430.","Apply Theme":"\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0442\u0435\u043C\u0443","Back to main settings":"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u043E\u0441\u043D\u043E\u0432\u043D\u044B\u043C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u043C","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 data.percentages \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0410 \u0442\u0430\u043A\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0439 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 data.percentages \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447. \u0410 \u0442\u0430\u043A\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u043B\u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0430.","Target File:":"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B:","Task Properties":"\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0438","Start Date":"\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430","Due Date":"\u0421\u0440\u043E\u043A \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Scheduled Date":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430",Priority:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",None:"\u041D\u0435\u0442",Highest:"\u041D\u0430\u0438\u0432\u044B\u0441\u0448\u0438\u0439",High:"\u0412\u044B\u0441\u043E\u043A\u0438\u0439",Medium:"\u0421\u0440\u0435\u0434\u043D\u0438\u0439",Low:"\u041D\u0438\u0437\u043A\u0438\u0439",Lowest:"\u041D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0438\u0439",Project:"\u041F\u0440\u043E\u0435\u043A\u0442","Project name":"\u0418\u043C\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430",Context:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442",Recurrence:"\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u0438\u0435","e.g., every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0435\u043D\u044C, \u043A\u0430\u0436\u0434\u0443\u044E \u043D\u0435\u0434\u0435\u043B\u044E","Task Content":"\u0421\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Task Details":"\u0414\u0435\u0442\u0430\u043B\u0438 \u0437\u0430\u0434\u0430\u0447\u0438",File:"\u0424\u0430\u0439\u043B","Edit in File":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432 \u0444\u0430\u0439\u043B\u0435","Mark Incomplete":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0435","Mark Complete":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u043E\u0435","Task Title":"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",Tags:"\u0422\u0435\u0433\u0438","e.g. every day, every 2 weeks":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0435\u043D\u044C, \u043A\u0430\u0436\u0434\u044B\u0435 2 \u043D\u0435\u0434\u0435\u043B\u0438",Forecast:"\u041F\u0440\u043E\u0433\u043D\u043E\u0437","0 actions, 0 projects":"0 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, 0 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","Toggle list/tree view":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0438\u0434 \u0441\u043F\u0438\u0441\u043A\u0430/\u0434\u0435\u0440\u0435\u0432\u0430","Focusing on Work":"\u0421\u043E\u0441\u0440\u0435\u0434\u043E\u0442\u043E\u0447\u0435\u043D\u0438\u0435 \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0435",Unfocus:"\u0421\u043D\u044F\u0442\u044C \u0444\u043E\u043A\u0443\u0441","Past Due":"\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E",Today:"\u0421\u0435\u0433\u043E\u0434\u043D\u044F",Future:"\u0411\u0443\u0434\u0443\u0449\u0435\u0435",actions:"\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",project:"\u043F\u0440\u043E\u0435\u043A\u0442","Coming Up":"\u041F\u0440\u0435\u0434\u0441\u0442\u043E\u044F\u0449\u0438\u0435",Task:"\u0417\u0430\u0434\u0430\u0447\u0430",Tasks:"\u0417\u0430\u0434\u0430\u0447\u0438","No upcoming tasks":"\u041D\u0435\u0442 \u043F\u0440\u0435\u0434\u0441\u0442\u043E\u044F\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447","No tasks scheduled":"\u041D\u0435\u0442 \u0437\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447","0 tasks":"0 \u0437\u0430\u0434\u0430\u0447","Filter tasks...":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438...",Projects:"\u041F\u0440\u043E\u0435\u043A\u0442\u044B","Toggle multi-select":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440","No projects found":"\u041F\u0440\u043E\u0435\u043A\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","projects selected":"\u0432\u044B\u0431\u0440\u0430\u043D\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432",tasks:"\u0437\u0430\u0434\u0430\u0447\u0438","No tasks in the selected projects":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u0430\u0445","Select a project to see related tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Configure Review for":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u043E\u0431\u0437\u043E\u0440 \u0434\u043B\u044F","Review Frequency":"\u0427\u0430\u0441\u0442\u043E\u0442\u0430 \u043E\u0431\u0437\u043E\u0440\u0430","How often should this project be reviewed":"\u041A\u0430\u043A \u0447\u0430\u0441\u0442\u043E \u043D\u0443\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0441\u043C\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0440\u043E\u0435\u043A\u0442","Custom...":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439...","e.g., every 3 months":"\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u043A\u0430\u0436\u0434\u044B\u0435 3 \u043C\u0435\u0441\u044F\u0446\u0430","Last Reviewed":"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u043E\u0431\u0437\u043E\u0440","Please specify a review frequency":"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0447\u0430\u0441\u0442\u043E\u0442\u0443 \u043E\u0431\u0437\u043E\u0440\u0430","Review schedule updated for":"\u0413\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D \u0434\u043B\u044F","Review Projects":"\u041E\u0431\u0437\u043E\u0440 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","Select a project to review its tasks.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430 \u0435\u0433\u043E \u0437\u0430\u0434\u0430\u0447.","Configured for Review":"\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430","Not Configured":"\u041D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E","No projects available.":"\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432.","Select a project to review.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0434\u043B\u044F \u043E\u0431\u0437\u043E\u0440\u0430.","Show all tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Showing all tasks, including completed tasks from previous reviews.":"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u043A\u043B\u044E\u0447\u0430\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0445 \u043E\u0431\u0437\u043E\u0440\u043E\u0432.","Show only new and in-progress tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u043E\u0432\u044B\u0435 \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435","No tasks found for this project.":"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u0437\u0430\u0434\u0430\u0447 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Review every":"\u041E\u0431\u0437\u043E\u0440 \u043A\u0430\u0436\u0434\u044B\u0435",never:"\u043D\u0438\u043A\u043E\u0433\u0434\u0430","Last reviewed":"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u043E\u0431\u0437\u043E\u0440","Mark as Reviewed":"\u041E\u0442\u043C\u0435\u0442\u0438\u0442\u044C \u043A\u0430\u043A \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u043D\u043D\u043E\u0435","No review schedule configured for this project":"\u0414\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u043E\u0435\u043A\u0442\u0430 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D \u0433\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430","Configure Review Schedule":"\u041D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0433\u0440\u0430\u0444\u0438\u043A \u043E\u0431\u0437\u043E\u0440\u0430","Project Review":"\u041E\u0431\u0437\u043E\u0440 \u043F\u0440\u043E\u0435\u043A\u0442\u0430","Select a project from the left sidebar to review its tasks.":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u0440\u043E\u0435\u043A\u0442 \u0432 \u043B\u0435\u0432\u043E\u0439 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0435\u0433\u043E \u0437\u0430\u0434\u0430\u0447\u0438.",Inbox:"\u0412\u0445\u043E\u0434\u044F\u0449\u0438\u0435",Flagged:"\u041F\u043E\u043C\u0435\u0447\u0435\u043D\u043D\u044B\u0435",Review:"\u041E\u0431\u0437\u043E\u0440","tags selected":"\u0432\u044B\u0431\u0440\u0430\u043D\u043E \u0442\u0435\u0433\u043E\u0432","No tasks with the selected tags":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0441 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u043C\u0438 \u0442\u0435\u0433\u0430\u043C\u0438","Select a tag to see related tasks":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0433, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u0441\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Open Task Genius view":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432\u0438\u0434 Task Genius","Task capture with metadata":"\u0417\u0430\u0445\u0432\u0430\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u043C\u0438","Refresh task index":"\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447","Refreshing task index...":"\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0438\u043D\u0434\u0435\u043A\u0441\u0430 \u0437\u0430\u0434\u0430\u0447...","Task index refreshed":"\u0418\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D","Failed to refresh task index":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447","Force reindex all tasks":"\u041F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Clearing task cache and rebuilding index...":"\u041E\u0447\u0438\u0441\u0442\u043A\u0430 \u043A\u044D\u0448\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438 \u043F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0438\u043D\u0434\u0435\u043A\u0441\u0430...","Task index completely rebuilt":"\u0418\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0434\u0430\u0447 \u043F\u043E\u043B\u043D\u043E\u0441\u0442\u044C\u044E \u043F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0435\u043D","Failed to force reindex tasks":"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438","Task Genius View":"\u0412\u0438\u0434 Task Genius","Toggle Sidebar":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0431\u043E\u043A\u043E\u0432\u0443\u044E \u043F\u0430\u043D\u0435\u043B\u044C",Details:"\u0414\u0435\u0442\u0430\u043B\u0438",View:"\u0412\u0438\u0434","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"\u0412\u0438\u0434 Task Genius \u2014 \u044D\u0442\u043E \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0439 \u0432\u0438\u0434, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0431\u043E\u043B\u0435\u0435 \u044D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438.","Enable task genius view":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u0438\u0434 Task Genius","Select a task to view details":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438",Status:"\u0421\u0442\u0430\u0442\u0443\u0441","Comma separated":"\u0420\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438",Focus:"\u0424\u043E\u043A\u0443\u0441","Loading more...":"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0435\u0449\u0435...",projects:"\u043F\u0440\u043E\u0435\u043A\u0442\u044B","No tasks for this section.":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0440\u0430\u0437\u0434\u0435\u043B\u0430.","No tasks found.":"\u0417\u0430\u0434\u0430\u0447\u0438 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.",Complete:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C","Switch status":"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441","Rebuild index":"\u041F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0438\u043D\u0434\u0435\u043A\u0441",Rebuild:"\u041F\u0435\u0440\u0435\u0441\u0442\u0440\u043E\u0438\u0442\u044C","0 tasks, 0 projects":"0 \u0437\u0430\u0434\u0430\u0447, 0 \u043F\u0440\u043E\u0435\u043A\u0442\u043E\u0432","New Custom View":"\u041D\u043E\u0432\u044B\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Create Custom View":"\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Edit View: ":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0438\u0434: ","View Name":"\u0418\u043C\u044F \u0432\u0438\u0434\u0430","My Custom Task View":"\u041C\u043E\u0439 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434 \u0437\u0430\u0434\u0430\u0447","Icon Name":"\u0418\u043C\u044F \u0438\u043A\u043E\u043D\u043A\u0438","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043B\u044E\u0431\u043E\u0435 \u0438\u043C\u044F \u0438\u043A\u043E\u043D\u043A\u0438 Lucide (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, list-checks, filter, inbox)","Filter Rules":"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0438\u043B\u044C\u0442\u0440\u0430\u0446\u0438\u0438","Hide Completed and Abandoned Tasks":"\u0421\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0438 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438","Hide completed and abandoned tasks in this view.":"\u0421\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0438 \u0437\u0430\u0431\u0440\u043E\u0448\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u044D\u0442\u043E\u043C \u0432\u0438\u0434\u0435.","Text Contains":"\u0422\u0435\u043A\u0441\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442","Filter tasks whose content includes this text (case-insensitive).":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u043C\u043E\u0435 \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u044D\u0442\u043E\u0442 \u0442\u0435\u043A\u0441\u0442 (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Tags Include":"\u0422\u0435\u0433\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442","Task must include ALL these tags (comma-separated).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u0412\u0421\u0415 \u044D\u0442\u0438 \u0442\u0435\u0433\u0438 (\u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438).","Tags Exclude":"\u0422\u0435\u0433\u0438 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u044E\u0442","Task must NOT include ANY of these tags (comma-separated).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u044C \u041D\u0418 \u041E\u0414\u0418\u041D \u0438\u0437 \u044D\u0442\u0438\u0445 \u0442\u0435\u0433\u043E\u0432 (\u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438).","Project Is":"\u041F\u0440\u043E\u0435\u043A\u0442","Task must belong to this project (exact match).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u043F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u043C\u0443 \u043F\u0440\u043E\u0435\u043A\u0442\u0443 (\u0442\u043E\u0447\u043D\u043E\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435).","Priority Is":"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Task must have this priority (e.g., 1, 2, 3).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0438\u043C\u0435\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, 1, 2, 3).","Status Include":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u044D\u0442\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, /,>).","Status Exclude":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u041D\u0415 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C \u043E\u0434\u043D\u0438\u043C \u0438\u0437 \u044D\u0442\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u044B, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 YYYY-MM-DD \u0438\u043B\u0438 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0442\u0435\u0440\u043C\u0438\u043D\u044B, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A '\u0441\u0435\u0433\u043E\u0434\u043D\u044F', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439 \u043D\u0435\u0434\u0435\u043B\u0435', '\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C \u043C\u0435\u0441\u044F\u0446\u0435'.","Due Date Is":"\u0421\u0440\u043E\u043A \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Start Date Is":"\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430","Scheduled Date Is":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u0430\u044F \u0434\u0430\u0442\u0430","Path Includes":"\u041F\u0443\u0442\u044C \u0432\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task must contain this path (case-insensitive).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Path Excludes":"\u041F\u0443\u0442\u044C \u0438\u0441\u043A\u043B\u044E\u0447\u0430\u0435\u0442","Task must NOT contain this path (case-insensitive).":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430).","Unnamed View":"\u0411\u0435\u0437\u044B\u043C\u044F\u043D\u043D\u044B\u0439 \u0432\u0438\u0434","View configuration saved.":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430.","Hide Details":"\u0421\u043A\u0440\u044B\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438","Show Details":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438","View Config":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430","View Configuration":"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u0432\u0438\u0434\u0430","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0432\u0438\u0434\u044B \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438 Task Genius, \u0438\u0445 \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C, \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0438 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0432\u0438\u0434\u044B.","Manage Views":"\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0432\u0438\u0434\u0430\u043C\u0438","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u0442\u0435 \u0432\u0438\u0434\u044B \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438, \u0438\u0445 \u043F\u043E\u0440\u044F\u0434\u043E\u043A, \u0432\u0438\u0434\u0438\u043C\u043E\u0441\u0442\u044C \u0438 \u0441\u043A\u0440\u044B\u0442\u0438\u0435/\u043F\u043E\u043A\u0430\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447 \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0432\u0438\u0434\u0430.","Show in sidebar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438","Edit View":"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0438\u0434","Move Up":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0432\u0435\u0440\u0445","Move Down":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u043D\u0438\u0437","Delete View":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u0438\u0434","Add Custom View":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0432\u0438\u0434","Error: View ID already exists.":"\u041E\u0448\u0438\u0431\u043A\u0430: \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0432\u0438\u0434\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.",Events:"\u0421\u043E\u0431\u044B\u0442\u0438\u044F",Plan:"\u041F\u043B\u0430\u043D",Year:"\u0413\u043E\u0434",Month:"\u041C\u0435\u0441\u044F\u0446",Week:"\u041D\u0435\u0434\u0435\u043B\u044F",Day:"\u0414\u0435\u043D\u044C",Agenda:"\u041F\u043E\u0432\u0435\u0441\u0442\u043A\u0430 \u0434\u043D\u044F","Back to categories":"\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u044F\u043C","No matching options found":"\u0421\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E","No matching filters found":"\u0421\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0445 \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",Tag:"\u0422\u0435\u0433","File Path":"\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443","Add filter":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440","Clear all":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u0441\u0435","Add Card":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0443","First Day of Week":"\u041F\u0435\u0440\u0432\u044B\u0439 \u0434\u0435\u043D\u044C \u043D\u0435\u0434\u0435\u043B\u0438","Overrides the locale default for calendar views.":"\u041F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043B\u043E\u043A\u0430\u043B\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u0432\u0438\u0434\u043E\u0432 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F.","Show checkbox":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0444\u043B\u0430\u0436\u043E\u043A","Show a checkbox for each task in the kanban view.":"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0444\u043B\u0430\u0436\u043E\u043A \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043A\u0430\u043D\u0431\u0430\u043D.","Locale Default":"\u041B\u043E\u043A\u0430\u043B\u044C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E","Use custom goal for progress bar":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0443\u044E \u0446\u0435\u043B\u044C \u0434\u043B\u044F \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u0438\u0441\u043A\u0430\u043B \u0448\u0430\u0431\u043B\u043E\u043D g::number \u043A\u0430\u043A \u0446\u0435\u043B\u044C \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.","Prefer metadata format of task":"\u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0442\u044C \u0444\u043E\u0440\u043C\u0430\u0442 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u0447\u0438","You can choose dataview format or tasks format, that will influence both index and save format.":"\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u043E\u0440\u043C\u0430\u0442 dataview \u0438\u043B\u0438 tasks, \u0447\u0442\u043E \u043F\u043E\u0432\u043B\u0438\u044F\u0435\u0442 \u043D\u0430 \u0444\u043E\u0440\u043C\u0430\u0442 \u0438\u043D\u0434\u0435\u043A\u0441\u0430 \u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F.","Open in new tab":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432 \u043D\u043E\u0432\u043E\u0439 \u0432\u043A\u043B\u0430\u0434\u043A\u0435","Open settings":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438","Hide in sidebar":"\u0421\u043A\u0440\u044B\u0442\u044C \u0432 \u0431\u043E\u043A\u043E\u0432\u043E\u0439 \u043F\u0430\u043D\u0435\u043B\u0438","No items found":"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B","High Priority":"\u0412\u044B\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Medium Priority":"\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","Low Priority":"\u041D\u0438\u0437\u043A\u0438\u0439 \u043F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442","No tasks in the selected items":"\u041D\u0435\u0442 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u0445","View Type":"\u0422\u0438\u043F \u0432\u0438\u0434\u0430","Select the type of view to create":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043F \u0432\u0438\u0434\u0430 \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F","Standard View":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u0432\u0438\u0434","Two Column View":"\u0414\u0432\u0443\u0445\u043A\u043E\u043B\u043E\u043D\u043E\u0447\u043D\u044B\u0439 \u0432\u0438\u0434",Items:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B","selected items":"\u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B","No items selected":"\u041D\u0435\u0442 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432","Two Column View Settings":"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u0432\u0443\u0445\u043A\u043E\u043B\u043E\u043D\u043E\u0447\u043D\u043E\u0433\u043E \u0432\u0438\u0434\u0430","Group by Task Property":"\u0413\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0443 \u0437\u0430\u0434\u0430\u0447\u0438","Select which task property to use for left column grouping":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u043E \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u043F\u0438\u0440\u043E\u0432\u043A\u0438 \u0432 \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0435",Priorities:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442\u044B",Contexts:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u044B","Due Dates":"\u0421\u0440\u043E\u043A\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F","Scheduled Dates":"\u0417\u0430\u043F\u043B\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u0434\u0430\u0442\u044B","Start Dates":"\u0414\u0430\u0442\u044B \u043D\u0430\u0447\u0430\u043B\u0430",Files:"\u0424\u0430\u0439\u043B\u044B","Left Column Title":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438","Title for the left column (items list)":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0434\u043B\u044F \u043B\u0435\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (\u0441\u043F\u0438\u0441\u043E\u043A \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432)","Right Column Title":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u0440\u0430\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438","Default title for the right column (tasks list)":"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u043F\u0440\u0430\u0432\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 (\u0441\u043F\u0438\u0441\u043E\u043A \u0437\u0430\u0434\u0430\u0447)","Multi-select Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0440\u0438 \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u043C \u0432\u044B\u0431\u043E\u0440\u0435","Text to show when multiple items are selected":"\u0422\u0435\u043A\u0441\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043F\u0440\u0438 \u0432\u044B\u0431\u043E\u0440\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432","Empty State Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0443\u0441\u0442\u043E\u0433\u043E \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F","Text to show when no items are selected":"\u0422\u0435\u043A\u0441\u0442, \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u043A\u043E\u0433\u0434\u0430 \u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E","Filter Blanks":"\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u0435","Filter out blank tasks in this view.":"\u041E\u0442\u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0443\u0441\u0442\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u044D\u0442\u043E\u043C \u0432\u0438\u0434\u0435.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430). \u0420\u0430\u0437\u0434\u0435\u043B\u044F\u0439\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0442\u0435\u0439 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0434\u0430\u0447\u0430 \u041D\u0415 \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u043F\u0443\u0442\u044C (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430). \u0420\u0430\u0437\u0434\u0435\u043B\u044F\u0439\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u043F\u0443\u0442\u0435\u0439 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438.","You have unsaved changes. Save before closing?":"\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043D\u0435\u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043D\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F. \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u043A\u0440\u044B\u0442\u0438\u0435\u043C?",Rotate:"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u044C","Are you sure you want to force reindex all tasks?":"\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438?","Enable progress bar in reading mode":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0447\u0442\u0435\u043D\u0438\u044F","Toggle this to allow this plugin to show progress bars in reading mode.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043B\u0430\u0433\u0438\u043D \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u043B \u0438\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u044B \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 \u0447\u0442\u0435\u043D\u0438\u044F.",Range:"\u0414\u0438\u0430\u043F\u0430\u0437\u043E\u043D","as a placeholder for the percentage value":"\u043A\u0430\u043A \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u043D\u0442\u0430","Template text with":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0430 \u0441",placeholder:"\u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u0435\u043C",Reindex:"\u041F\u0435\u0440\u0435\u0438\u043D\u0434\u0435\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C","From now":"\u0421\u0435\u0439\u0447\u0430\u0441","Complete workflow":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u0440\u0430\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441","Move to":"\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432",Settings:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438","Just started":"Just started","Making progress":"Making progress","Half way":"Half way","Good progress":"Good progress","Almost there":"Almost there","archived on":"archived on",moved:"moved","Capture your thoughts...":"Capture your thoughts...","Project Workflow":"Project Workflow","Standard project management workflow":"Standard project management workflow",Planning:"Planning",Development:"Development",Testing:"Testing",Cancelled:"Cancelled",Habit:"Habit","Drink a cup of good tea":"Drink a cup of good tea","Watch an episode of a favorite series":"Watch an episode of a favorite series","Play a game":"Play a game","Eat a piece of chocolate":"Eat a piece of chocolate",common:"common",rare:"rare",legendary:"legendary","No Habits Yet":"No Habits Yet","Click the open habit button to create a new habit.":"Click the open habit button to create a new habit.","Please enter details":"Please enter details","Goal reached":"Goal reached","Exceeded goal":"Exceeded goal",Active:"Active",today:"today",Inactive:"Inactive","All Done!":"All Done!","Select event...":"Select event...","Create new habit":"Create new habit","Edit habit":"Edit habit","Habit type":"Habit type","Daily habit":"Daily habit","Simple daily check-in habit":"Simple daily check-in habit","Count habit":"Count habit","Record numeric values, e.g., how many cups of water":"Record numeric values, e.g., how many cups of water","Mapping habit":"Mapping habit","Use different values to map, e.g., emotion tracking":"Use different values to map, e.g., emotion tracking","Scheduled habit":"Scheduled habit","Habit with multiple events":"Habit with multiple events","Habit name":"Habit name","Display name of the habit":"Display name of the habit","Optional habit description":"Optional habit description",Icon:"Icon","Please enter a habit name":"Please enter a habit name","Property name":"Property name","The property name of the daily note front matter":"The property name of the daily note front matter","Completion text":"Completion text","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed","The property name in daily note front matter to store count values":"The property name in daily note front matter to store count values","Minimum value":"Minimum value","(Optional) Minimum value for the count":"(Optional) Minimum value for the count","Maximum value":"Maximum value","(Optional) Maximum value for the count":"(Optional) Maximum value for the count",Unit:"Unit","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(Optional) Unit for the count, such as 'cups', 'times', etc.","Notice threshold":"Notice threshold","(Optional) Trigger a notification when this value is reached":"(Optional) Trigger a notification when this value is reached","The property name in daily note front matter to store mapping values":"The property name in daily note front matter to store mapping values","Value mapping":"Value mapping","Define mappings from numeric values to display text":"Define mappings from numeric values to display text","Add new mapping":"Add new mapping","Scheduled events":"Scheduled events","Add multiple events that need to be completed":"Add multiple events that need to be completed","Event name":"Event name","Event details":"Event details","Add new event":"Add new event","Please enter a property name":"Please enter a property name","Please add at least one mapping value":"Please add at least one mapping value","Mapping key must be a number":"Mapping key must be a number","Please enter text for all mapping values":"Please enter text for all mapping values","Please add at least one event":"Please add at least one event","Event name cannot be empty":"Event name cannot be empty","Add new habit":"Add new habit","No habits yet":"No habits yet","Click the button above to add your first habit":"Click the button above to add your first habit","Habit updated":"Habit updated","Habit added":"Habit added","Delete habit":"Delete habit","This action cannot be undone.":"This action cannot be undone.","Habit deleted":"Habit deleted","You've Earned a Reward!":"You've Earned a Reward!","Your reward:":"Your reward:","Image not found:":"Image not found:","Claim Reward":"Claim Reward",Skip:"Skip",Reward:"Reward","View & Index Configuration":"View & Index Configuration","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.","Use daily note path as date":"Use daily note path as date","If enabled, the daily note path will be used as the date for tasks.":"If enabled, the daily note path will be used as the date for tasks.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius will use moment.js and also this format to parse the daily note path.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.","Daily note format":"Daily note format","Daily note path":"Daily note path","Select the folder that contains the daily note.":"Select the folder that contains the daily note.","Use as date type":"Use as date type","You can choose due, start, or scheduled as the date type for tasks.":"You can choose due, start, or scheduled as the date type for tasks.",Due:"Due",Start:"Start",Scheduled:"Scheduled",Rewards:"Rewards","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.","Enable Rewards":"Enable Rewards","Toggle to enable or disable the reward system.":"Toggle to enable or disable the reward system.","Occurrence Levels":"Occurrence Levels","Define different levels of reward rarity and their probability.":"Define different levels of reward rarity and their probability.","Chance must be between 0 and 100.":"Chance must be between 0 and 100.","Level Name (e.g., common)":"Level Name (e.g., common)","Chance (%)":"Chance (%)","Delete Level":"Delete Level","Add Occurrence Level":"Add Occurrence Level","New Level":"New Level","Reward Items":"Reward Items","Manage the specific rewards that can be obtained.":"Manage the specific rewards that can be obtained.","No levels defined":"No levels defined","Reward Name/Text":"Reward Name/Text","Inventory (-1 for \u221E)":"Inventory (-1 for \u221E)","Invalid inventory number.":"Invalid inventory number.","Condition (e.g., #tag AND project)":"Condition (e.g., #tag AND project)","Image URL (optional)":"Image URL (optional)","Delete Reward Item":"Delete Reward Item","No reward items defined yet.":"No reward items defined yet.","Add Reward Item":"Add Reward Item","New Reward":"New Reward","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.","Enable habits":"Enable habits","Task sorting is disabled or no sort criteria are defined in settings.":"Task sorting is disabled or no sort criteria are defined in settings.","e.g. #tag1, #tag2, #tag3":"e.g. #tag1, #tag2, #tag3",Overdue:"Overdue","No tasks found for this tag.":"No tasks found for this tag.","New custom view":"New custom view","Create custom view":"Create custom view","Edit view: ":"Edit view: ","Icon name":"Icon name","First day of week":"First day of week","Overrides the locale default for forecast views.":"Overrides the locale default for forecast views.","View type":"View type","Standard view":"Standard view","Two column view":"Two column view","Two column view settings":"Two column view settings","Group by task property":"Group by task property","Left column title":"Left column title","Right column title":"Right column title","Empty state text":"Empty state text","Hide completed and abandoned tasks":"Hide completed and abandoned tasks","Filter blanks":"Filter blanks","Text contains":"Text contains","Tags include":"Tags include","Tags exclude":"Tags exclude","Project is":"Project is","Priority is":"Priority is","Status include":"Status include","Status exclude":"Status exclude","Due date is":"Due date is","Start date is":"Start date is","Scheduled date is":"Scheduled date is","Path includes":"Path includes","Path excludes":"Path excludes","Sort Criteria":"Sort Criteria","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"Define the order in which tasks should be sorted. Criteria are applied sequentially.","No sort criteria defined. Add criteria below.":"No sort criteria defined. Add criteria below.",Content:"Content",Ascending:"Ascending",Descending:"Descending","Ascending: High -> Low -> None. Descending: None -> Low -> High":"Ascending: High -> Low -> None. Descending: None -> Low -> High","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier","Ascending respects status order (Overdue first). Descending reverses it.":"Ascending respects status order (Overdue first). Descending reverses it.","Ascending: A-Z. Descending: Z-A":"Ascending: A-Z. Descending: Z-A","Remove Criterion":"Remove Criterion","Add Sort Criterion":"Add Sort Criterion","Reset to Defaults":"Reset to Defaults","Has due date":"Has due date","Has date":"Has date","No date":"No date",Any:"Any","Has start date":"Has start date","Has scheduled date":"Has scheduled date","Has created date":"Has created date","Has completed date":"Has completed date","Only show tasks that match the completed date.":"Only show tasks that match the completed date.","Has recurrence":"Has recurrence","Has property":"Has property","No property":"No property","Unsaved Changes":"Unsaved Changes","Sort Tasks in Section":"Sort Tasks in Section","Tasks sorted (using settings). Change application needs refinement.":"Tasks sorted (using settings). Change application needs refinement.","Sort Tasks in Entire Document":"Sort Tasks in Entire Document","Entire document sorted (using settings).":"Entire document sorted (using settings).","Tasks already sorted or no tasks found.":"Tasks already sorted or no tasks found.","Task Handler":"Task Handler","Show progress bars based on heading":"Show progress bars based on heading","Toggle this to enable showing progress bars based on heading.":"Toggle this to enable showing progress bars based on heading.","# heading":"# heading","Task Sorting":"Task Sorting","Configure how tasks are sorted in the document.":"Configure how tasks are sorted in the document.","Enable Task Sorting":"Enable Task Sorting","Toggle this to enable commands for sorting tasks.":"Toggle this to enable commands for sorting tasks.","Use relative time for date":"Use relative time for date","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.","Ignore all tasks behind heading":"Ignore all tasks behind heading","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma","Focus all tasks behind heading":"Focus all tasks behind heading","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma","Enable rewards":"Enable rewards","Reward display type":"Reward display type","Choose how rewards are displayed when earned.":"Choose how rewards are displayed when earned.","Modal dialog":"Modal dialog","Notice (Auto-accept)":"Notice (Auto-accept)","Occurrence levels":"Occurrence levels","Add occurrence level":"Add occurrence level","Reward items":"Reward items","Image url (optional)":"Image url (optional)","Delete reward item":"Delete reward item","Add reward item":"Add reward item","moved on":"moved on","Priority (High to Low)":"Priority (High to Low)","Priority (Low to High)":"Priority (Low to High)","Due Date (Earliest First)":"Due Date (Earliest First)","Due Date (Latest First)":"Due Date (Latest First)","Scheduled Date (Earliest First)":"Scheduled Date (Earliest First)","Scheduled Date (Latest First)":"Scheduled Date (Latest First)","Start Date (Earliest First)":"Start Date (Earliest First)","Start Date (Latest First)":"Start Date (Latest First)","Created Date":"Created Date",Overview:"Overview",Dates:"Dates","e.g. #tag1, #tag2":"e.g. #tag1, #tag2","e.g. @home, @work":"e.g. @home, @work","Recurrence Rule":"Recurrence Rule","e.g. every day, every week":"e.g. every day, every week","Edit Task":"Edit Task","Save Filter Configuration":"Save Filter Configuration","Filter Configuration Name":"Filter Configuration Name","Enter a name for this filter configuration":"Enter a name for this filter configuration","Filter Configuration Description":"Filter Configuration Description","Enter a description for this filter configuration (optional)":"Enter a description for this filter configuration (optional)","Load Filter Configuration":"Load Filter Configuration","No saved filter configurations":"No saved filter configurations","Select a saved filter configuration":"Select a saved filter configuration",Load:"Load",Created:"Created",Updated:"Updated","Filter Summary":"Filter Summary","filter group":"filter group",filter:"filter","Root condition":"Root condition","Filter configuration name is required":"Filter configuration name is required","Failed to save filter configuration":"Failed to save filter configuration","Filter configuration saved successfully":"Filter configuration saved successfully","Failed to load filter configuration":"Failed to load filter configuration","Filter configuration loaded successfully":"Filter configuration loaded successfully","Failed to delete filter configuration":"Failed to delete filter configuration","Delete Filter Configuration":"Delete Filter Configuration","Are you sure you want to delete this filter configuration?":"Are you sure you want to delete this filter configuration?","Filter configuration deleted successfully":"Filter configuration deleted successfully",Match:"Match",All:"All","Add filter group":"Add filter group","Save Current Filter":"Save Current Filter","Load Saved Filter":"Load Saved Filter","filter in this group":"filter in this group","Duplicate filter group":"Duplicate filter group","Remove filter group":"Remove filter group",OR:"OR","AND NOT":"AND NOT",AND:"AND","Remove filter":"Remove filter",contains:"contains","does not contain":"does not contain",is:"is","is not":"is not","starts with":"starts with","ends with":"ends with","is empty":"is empty","is not empty":"is not empty","is true":"is true","is false":"is false","is set":"is set","is not set":"is not set",equals:"equals",NOR:"NOR","Group by":"Group by","Select which task property to use for creating columns":"Select which task property to use for creating columns","Hide empty columns":"Hide empty columns","Hide columns that have no tasks.":"Hide columns that have no tasks.","Default sort field":"Default sort field","Default field to sort tasks by within each column.":"Default field to sort tasks by within each column.","Default sort order":"Default sort order","Default order to sort tasks within each column.":"Default order to sort tasks within each column.","Custom Columns":"Custom Columns","Configure custom columns for the selected grouping property":"Configure custom columns for the selected grouping property","No custom columns defined. Add columns below.":"No custom columns defined. Add columns below.","Column Title":"Column Title",Value:"Value","Remove Column":"Remove Column","Add Column":"Add Column","New Column":"New Column","Reset Columns":"Reset Columns","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.","Move all incomplete subtasks to another file":"Move all incomplete subtasks to another file","Move direct incomplete subtasks to another file":"Move direct incomplete subtasks to another file",Filter:"Filter","Reset Filter":"Reset Filter","Saved Filters":"Saved Filters","Manage Saved Filters":"Manage Saved Filters","Filter applied: ":"Filter applied: ","Recurrence date calculation":"Recurrence date calculation","Choose how to calculate the next date for recurring tasks":"Choose how to calculate the next date for recurring tasks","Based on due date":"Based on due date","Based on scheduled date":"Based on scheduled date","Based on current date":"Based on current date","Task Gutter":"Task Gutter","Configure the task gutter.":"Configure the task gutter.","Enable task gutter":"Enable task gutter","Toggle this to enable the task gutter.":"Toggle this to enable the task gutter.","Incomplete Task Mover":"Incomplete Task Mover","Enable incomplete task mover":"Enable incomplete task mover","Toggle this to enable commands for moving incomplete tasks to another file.":"Toggle this to enable commands for moving incomplete tasks to another file.","Incomplete task marker type":"Incomplete task marker type","Choose what type of marker to add to moved incomplete tasks":"Choose what type of marker to add to moved incomplete tasks","Incomplete version marker text":"Incomplete version marker text","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"Text to append to incomplete tasks when moved (e.g., 'version 1.0')","Incomplete date marker text":"Incomplete date marker text","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')","Incomplete custom marker text":"Incomplete custom marker text","With current file link for incomplete tasks":"With current file link for incomplete tasks","A link to the current file will be added to the parent task of the moved incomplete tasks.":"A link to the current file will be added to the parent task of the moved incomplete tasks.","Line Number":"Line Number","Clear Date":"Clear Date","Copy view":"Copy view","View copied successfully: ":"View copied successfully: ","Copy of ":"Copy of ","Copy view: ":"Copy view: ","Creating a copy based on: ":"Creating a copy based on: ","You can modify all settings below. The original view will remain unchanged.":"You can modify all settings below. The original view will remain unchanged.","Tasks Plugin Detected":"Tasks Plugin Detected","Current status management and date management may conflict with the Tasks plugin. Please check the ":"Current status management and date management may conflict with the Tasks plugin. Please check the ","compatibility documentation":"compatibility documentation"," for more information.":" for more information.","Auto Date Manager":"Auto Date Manager","Automatically manage dates based on task status changes":"Automatically manage dates based on task status changes","Enable auto date manager":"Enable auto date manager","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Manage completion dates":"Manage completion dates","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.","Manage start dates":"Manage start dates","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.","Manage cancelled dates":"Manage cancelled dates","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.","Copy View":"Copy View",Beta:"Beta","Beta Test Features":"Beta Test Features","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.","Beta Features Warning":"Beta Features Warning","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.","Base View":"Base View","Advanced view management features that extend the default Task Genius views with additional functionality.":"Advanced view management features that extend the default Task Genius views with additional functionality.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"Enable Base View","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.",Enable:"Enable","Beta Feedback":"Beta Feedback","Help improve these features by providing feedback on your experience.":"Help improve these features by providing feedback on your experience.","Report Issues":"Report Issues","If you encounter any issues with beta features, please report them to help improve the plugin.":"If you encounter any issues with beta features, please report them to help improve the plugin.","Report Issue":"Report Issue",Table:"Table","No Priority":"No Priority","Click to select date":"Click to select date","Enter tags separated by commas":"Enter tags separated by commas","Enter project name":"Enter project name","Enter context":"Enter context","Invalid value":"Invalid value","No tasks":"No tasks","1 task":"1 task",Columns:"Columns","Toggle column visibility":"Toggle column visibility","Switch to List Mode":"Switch to List Mode","Switch to Tree Mode":"Switch to Tree Mode",Collapse:"Collapse",Expand:"Expand","Collapse subtasks":"Collapse subtasks","Expand subtasks":"Expand subtasks","Click to change status":"Click to change status","Click to set priority":"Click to set priority",Yesterday:"Yesterday","Click to edit date":"Click to edit date","No tags":"No tags","Click to open file":"Click to open file","No tasks found":"No tasks found","Completed Date":"Completed Date","Loading...":"Loading...","Advanced Filtering":"Advanced Filtering","Use advanced multi-group filtering with complex conditions":"Use advanced multi-group filtering with complex conditions","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},yj=lz});var cz,vj,bj=b(()=>{cz={"File Metadata Inheritance":"\u041D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0443","Configure how tasks inherit metadata from file frontmatter":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443","Enable file metadata inheritance":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u043D\u043D\u044F \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0444\u0430\u0439\u043B\u0443","Allow tasks to inherit metadata properties from their file's frontmatter":"\u0414\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437 frontmatter \u0441\u0432\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Inherit from frontmatter":"Inherit from frontmatter","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445, \u0442\u0430\u043A\u0456 \u044F\u043A \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442, \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0442\u043E\u0449\u043E, \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443, \u043A\u043E\u043B\u0438 \u0432\u043E\u043D\u0438 \u043D\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0456 \u044F\u0432\u043D\u043E \u043D\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u0456","Inherit from frontmatter for subtasks":"Inherit from frontmatter for subtasks","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u0414\u043E\u0437\u0432\u043E\u043B\u0438\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0456 \u0437 frontmatter \u0444\u0430\u0439\u043B\u0443. \u041A\u043E\u043B\u0438 \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0442\u0456\u043B\u044C\u043A\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0435\u0440\u0445\u043D\u044C\u043E\u0433\u043E \u0440\u0456\u0432\u043D\u044F \u043D\u0430\u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0456 \u0444\u0430\u0439\u043B\u0443","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u041A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u0438\u0439 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0434\u043B\u044F \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u0432 Obsidian \u0437 \u0456\u043D\u0434\u0456\u043A\u0430\u0442\u043E\u0440\u043E\u043C \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F, \u0446\u0438\u043A\u043B\u0456\u0447\u043D\u043E\u044E \u0437\u043C\u0456\u043D\u043E\u044E \u0441\u0442\u0430\u043D\u0456\u0432, \u0442\u0430 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u043C\u0438 \u0444\u0443\u043D\u043A\u0446\u0456\u044F\u043C\u0438 \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F.","Show progress bar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Toggle this to show the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Support hover to show progress info":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0430 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u0456","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E\u0457 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457 \u043F\u0440\u0438 \u043D\u0430\u0432\u0435\u0434\u0435\u043D\u043D\u0456 \u043D\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440.","Add progress bar to non-task bullet":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0434\u043E \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432 \u0441\u043F\u0438\u0441\u043A\u0443","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0434\u043E \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432 \u0441\u043F\u0438\u0441\u043A\u0443 (\u043D\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u044C).","Add progress bar to Heading":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0434\u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Enable heading progress bars":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438 \u0434\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432","Add progress bars to headings to show progress of all tasks under that heading.":"\u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438 \u0434\u043E \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0456\u0432, \u0449\u043E\u0431 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443\u0441\u0456\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0446\u0438\u043C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C.","Auto complete parent task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0432 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0432\u0441\u0456 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456.","Mark parent as 'In Progress' when partially complete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456', \u044F\u043A\u0449\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E \u0447\u0430\u0441\u0442\u043A\u043E\u0432\u043E","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u042F\u043A\u0449\u043E \u0434\u0435\u044F\u043A\u0456, \u0430\u043B\u0435 \u043D\u0435 \u0432\u0441\u0456 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456, \u043F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A '\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456'. \u041F\u0440\u0430\u0446\u044E\u0454 \u043B\u0438\u0448\u0435 \u043F\u0440\u0438 \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u0456\u0439 \u043E\u043F\u0446\u0456\u0457 '\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F'.","Count sub children level of current Task":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to count sub tasks.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Checkbox Status Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Select a predefined task status collection or customize your own":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u043D\u0430\u0431\u0456\u0440 \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u0430\u0431\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u043B\u0430\u0441\u043D\u0438\u0439","Completed task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "x|X"',"Planned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent planned tasks. Example: "?"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "?"',"In progress task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: ">|/"',"Abandoned task markers":"\u041C\u0430\u0440\u043A\u0435\u0440\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u0421\u0438\u043C\u0432\u043E\u043B\u0438 \u0432 \u043A\u0432\u0430\u0434\u0440\u0430\u0442\u043D\u0438\u0445 \u0434\u0443\u0436\u043A\u0430\u0445, \u0449\u043E \u043F\u043E\u0437\u043D\u0430\u0447\u0430\u044E\u0442\u044C \u043D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F. \u0417\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u2014 \u043F\u0440\u043E\u0431\u0456\u043B " "',"Count other statuses as":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438 \u044F\u043A",'Select the status to count other statuses as. Default is "Not Started".':'\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0441\u0442\u0430\u0442\u0443\u0441, \u0443 \u044F\u043A\u0438\u0439 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u0442\u0438 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438. \u0417\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u2014 "\u041D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E".',"Task Counting Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Exclude specific task markers":"\u0412\u0438\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C",'Specify task markers to exclude from counting. Example: "?|/"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u044F\u043A\u0456 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0437 \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "?|/"',"Only count specific task markers":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to only count specific task markers":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Specific task markers to count":"\u041F\u0435\u0432\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443",'Specify which task markers to count. Example: "x|X|>|/"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C, \u044F\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: "x|X|>|/"',"Conditional Progress Bar Display":"\u0423\u043C\u043E\u0432\u043D\u0435 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Hide progress bars based on conditions":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0437\u0430 \u043F\u0435\u0432\u043D\u0438\u0445 \u0443\u043C\u043E\u0432","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u0425\u043E\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0437\u0430 \u0443\u043C\u043E\u0432\u0430\u043C\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u043C\u0456\u0442\u043E\u043A, \u0442\u0435\u043A, \u0430\u0431\u043E \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0435\u0439.","Hide by tags":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u043C\u0456\u0442\u043A\u0430\u043C\u0438",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0438, \u044F\u043A\u0456 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0443\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 (\u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043C\u0443, \u0431\u0435\u0437 #). \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "no-progress-bar,hide-progress"',"Hide by folders":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0442\u0435\u043A\u0430\u043C\u0438",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0448\u043B\u044F\u0445 \u0434\u043E \u0442\u0435\u043A \u0432 \u044F\u043A\u0438\u0445 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 (\u0447\u0435\u0440\u0435\u0437 \u043A\u043E\u043C\u0443). \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "Daily Notes,Projects/Hidden"',"Hide by metadata":"\u041F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044F\u043C\u0438",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C, \u044F\u043A\u0430 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u043C\u0435 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u043D\u043E\u0442\u0430\u0442\u0446\u0456. \u041D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: "hide-progress-bar:true"',"Checkbox Status Switcher":"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable task status switcher":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable/disable the ability to cycle through task states by clicking.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438/\u0432\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u043E\u0436\u043B\u0438\u0432\u0456\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u044F\u043C.","Enable custom task marks":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u0417\u0430\u043C\u0456\u043D\u0456\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0456 \u043F\u0440\u0430\u043F\u043E\u0440\u0446\u0456 \u043D\u0430 \u0441\u0442\u0438\u043B\u0456\u0437\u043E\u0432\u0430\u043D\u0456 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u044F\u043A\u0456 \u0441\u043B\u0456\u0434\u0443\u044E\u0442\u044C \u0437\u0430 \u0432\u0430\u0448\u0438\u043C \u0446\u0438\u043A\u043B\u043E\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u0456.","Enable cycle complete status":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0446\u0438\u043A\u043B\u0456\u0447\u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438/\u0432\u0438\u043C\u043A\u043D\u0443\u0442\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0435 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043D\u0430\u0442\u0438\u0441\u043A\u0430\u043D\u043D\u0456 \u043D\u0430 \u043C\u0430\u0440\u043A\u0435\u0440.","Always cycle new tasks":"\u0417\u0430\u0432\u0436\u0434\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438 \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043E\u0434\u0440\u0430\u0437\u0443 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441. \u042F\u043A\u0449\u043E \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u043D\u043E\u0432\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u0434\u0456\u0439\u0441\u043D\u0438\u043C\u0438 \u043C\u0430\u0440\u043A\u0435\u0440\u0430\u043C\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0443\u0442\u044C \u0441\u0432\u0456\u0439 \u043F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440.","Checkbox Status Cycle and Marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0441\u0442\u0430\u043D\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438. \u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0437\u0432\u0435\u0440\u0445\u0443 \u0432\u043D\u0438\u0437 \u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u0456\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u044F.","Add Status":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441","Completed Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable completed task mover":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for moving completed tasks to another file.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443.","Task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Choose what type of marker to add to moved tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430, \u044F\u043A\u0438\u0439 \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0456\u0457","Text to append to tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0435\u0440\u0441\u0456\u044F 1.0')","Date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u0434\u0430\u0442\u0438","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0430\u0440\u0445\u0456\u0432\u043E\u0432\u0430\u043D\u043E 2023-12-31')","Custom marker text":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 {{DATE:format}} \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: {{DATE:YYYY-MM-DD}})","Treat abandoned tasks as completed":"\u0412\u0432\u0430\u0436\u0430\u0442\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438","If enabled, abandoned tasks will be treated as completed.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438.","Complete all moved tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","If enabled, all moved tasks will be marked as completed.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0443\u0441\u0456 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0456 \u044F\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456.","With current file link":"\u0417 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F\u043C \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B","A link to the current file will be added to the parent task of the moved tasks.":"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Say Thank You":"\u041F\u043E\u0434\u044F\u043A\u0443\u0432\u0430\u0442\u0438",Donate:"\u041F\u043E\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u0442\u0438","If you like this plugin, consider donating to support continued development:":"\u042F\u043A\u0449\u043E \u0432\u0430\u043C \u043F\u043E\u0434\u043E\u0431\u0430\u0454\u0442\u044C\u0441\u044F \u0446\u0435\u0439 \u0434\u043E\u0434\u0430\u0442\u043E\u043A, \u043F\u043E\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043F\u0440\u043E \u043F\u043E\u0436\u0435\u0440\u0442\u0432\u0443 \u0434\u043B\u044F \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0438 \u043F\u043E\u0434\u0430\u043B\u044C\u0448\u043E\u0433\u043E \u0440\u043E\u0437\u0432\u0438\u0442\u043A\u0443:","Add number to the Progress Bar":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0447\u0438\u0441\u043B\u043E \u0434\u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Toggle this to allow this plugin to add tasks number to progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0434\u043E\u0434\u0430\u0432\u0430\u0432 \u0447\u0438\u0441\u043B\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Show percentage":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A","Toggle this to allow this plugin to show percentage in the progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0432 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0443 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0456.","Customize progress text":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Toggle this to customize text representation for different progress percentage ranges.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0456\u0432 \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443.","Progress Ranges":"\u0414\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Define progress ranges and their corresponding text representations.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0442\u0430 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0456 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F.","Add new range":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D","Add a new progress percentage range with custom text":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0437 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u043C \u0442\u0435\u043A\u0441\u0442\u043E\u043C","Min percentage (0-100)":"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A (0-100)","Max percentage (0-100)":"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A (0-100)","Text template (use {{PROGRESS}})":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 {{PROGRESS}})","Reset to defaults":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Reset progress ranges to default values":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0434\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C",Reset:"\u0421\u043A\u0438\u043D\u0443\u0442\u0438","Priority Picker Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u043F\u0430\u0434\u0430\u044E\u0447\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A \u0432\u0438\u0431\u043E\u0440\u0443 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443 \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0456\u0432 \u0437 \u0435\u043C\u043E\u0434\u0437\u0456 \u0442\u0430 \u043B\u0456\u0442\u0435\u0440\u0430\u043C\u0438.","Enable priority picker":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Enable priority keyboard shortcuts":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0433\u0430\u0440\u044F\u0447\u0456 \u043A\u043B\u0430\u0432\u0456\u0448\u0456 \u0434\u043B\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Toggle to enable keyboard shortcuts for setting task priorities.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0433\u0430\u0440\u044F\u0447\u0456 \u043A\u043B\u0430\u0432\u0456\u0448\u0456 \u0434\u043B\u044F \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Date picker":"\u0412\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438","Enable date picker":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u0434\u0430\u0442\u0438 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0426\u0435 \u0434\u043E\u0434\u0430\u0441\u0442\u044C \u0456\u043A\u043E\u043D\u043A\u0443 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F \u043F\u043E\u0440\u0443\u0447 \u0456\u0437 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438, \u043D\u0430 \u044F\u043A\u0443 \u043C\u043E\u0436\u043D\u0430 \u043D\u0430\u0442\u0438\u0441\u043D\u0443\u0442\u0438 \u0434\u043B\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u0434\u0430\u0442\u0438.","Date mark":"\u041C\u0430\u0440\u043A\u0435\u0440 \u0434\u0430\u0442\u0438","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u0415\u043C\u043E\u0434\u0437\u0456 \u0456\u043A\u043E\u043D\u043A\u0438 \u0434\u043B\u044F \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0434\u0430\u0442. \u041C\u043E\u0436\u043D\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043A\u0456\u043B\u044C\u043A\u0430 \u0435\u043C\u043E\u0434\u0437\u0456, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0438\u0445 \u043A\u043E\u043C\u0430\u043C\u0438.","Quick capture":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Enable quick capture":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0448\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0432 \u0441\u0442\u0438\u043B\u0456 Org-mode. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C Alt+C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F.","Target file":"\u0426\u0456\u043B\u044C\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u0424\u0430\u0439\u043B, \u0443 \u044F\u043A\u043E\u043C\u0443 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442. \u041C\u043E\u0436\u043D\u0430 \u0432\u043A\u0430\u0437\u0430\u0442\u0438 \u0448\u043B\u044F\u0445, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 'folder/Quick Capture.md'","Placeholder text":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447","Placeholder text to display in the capture panel":"\u0422\u0435\u043A\u0441\u0442-\u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447 \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0432 \u043F\u0430\u043D\u0435\u043B\u0456 \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F","Append to file":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0434\u043E \u0444\u0430\u0439\u043B\u0443","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438\u043C\u0435\u0442\u044C\u0441\u044F \u0434\u043E \u0446\u0456\u043B\u044C\u043E\u0432\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443. \u042F\u043A\u0449\u043E \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0432\u0456\u043D \u0437\u0430\u043C\u0456\u043D\u0438\u0442\u044C \u0432\u043C\u0456\u0441\u0442 \u0444\u0430\u0439\u043B\u0443.","Task Filter":"\u0424\u0456\u043B\u044C\u0442\u0440 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable Task Filter":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable the task filter panel":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0456\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Preset Filters":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Create and manage preset filters for quick access to commonly used task filters.":"\u0421\u0442\u0432\u043E\u0440\u044E\u0439\u0442\u0435 \u0442\u0430 \u043A\u0435\u0440\u0443\u0439\u0442\u0435 \u0442\u0438\u043F\u043E\u0432\u0438\u043C\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C\u0438 \u0434\u043B\u044F \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u0443 \u0434\u043E \u0447\u0430\u0441\u0442\u043E \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0454\u043C\u0438\u0445 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Edit Filter: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440: ","Filter name":"\u041D\u0430\u0437\u0432\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Checkbox Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include or exclude tasks based on their status":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438, \u0430\u0431\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u0457\u0445\u043D\u044C\u043E\u0433\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Include Completed Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include In Progress Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","Include Abandoned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Not Started Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u043D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Planned Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Related Tasks":"\u041F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include parent, child, and sibling tasks in the filter":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456, \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0442\u0430 \u0441\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0444\u0456\u043B\u044C\u0442\u0440","Include Parent Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Child Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Include Sibling Tasks":"\u0412\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0441\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Advanced Filter":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u0456 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0457: AND, OR, NOT. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0437\u043C\u0456\u0441\u0442 \u0442\u0435\u043A\u0441\u0442\u0443 AND #\u043C\u0456\u0442\u043A\u04301'","Filter query":"\u0417\u0430\u043F\u0438\u0442 \u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u043D\u043D\u044F","Filter out tasks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u0438\u0442\u0443, \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0456, \u0456\u043D\u0430\u043A\u0448\u0435 \u0432\u043E\u043D\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F",Save:"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",Cancel:"\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438","Hide filter panel":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Show filter panel":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Filter Tasks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Preset filters":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Select a saved filter preset to apply":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440 \u0434\u043B\u044F \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F","Select a preset...":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F\u043E\u0432\u0438\u0439...",Query:"\u0417\u0430\u043F\u0438\u0442","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0431\u0443\u043B\u0435\u0432\u0456 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0457: AND, OR, NOT. \u041F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0437\u043C\u0456\u0441\u0442 \u0442\u0435\u043A\u0441\u0442\u0443 AND #\u043C\u0456\u0442\u043A\u04301 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u041F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454: >, <, =, >=, <=, != \u0434\u043B\u044F PRIORITY \u0442\u0430 DATE.","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u043F\u0438\u0442\u0443, \u0431\u0443\u0434\u0443\u0442\u044C \u043F\u0440\u0438\u0445\u043E\u0432\u0430\u043D\u0456, \u0456\u043D\u0430\u043A\u0448\u0435 \u0432\u043E\u043D\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F",Completed:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","In Progress":"\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0456",Abandoned:"\u041F\u043E\u043A\u0438\u043D\u0443\u0442\u043E","Not Started":"\u041D\u0435 \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E",Planned:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E","Include Related Tasks":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Parent Tasks":"\u0411\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Child Tasks":"\u0414\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Sibling Tasks":"\u0421\u0443\u0441\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Apply:"\u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u0442\u0438","New Preset":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Preset saved":"\u0422\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043E","No changes to save":"\u041D\u0435\u043C\u0430\u0454 \u0437\u043C\u0456\u043D \u0434\u043B\u044F \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F",Close:"\u0417\u0430\u043A\u0440\u0438\u0442\u0438","Capture to":"\u0417\u0430\u0445\u043E\u043F\u0438\u0442\u0438 \u0434\u043E",Capture:"\u0417\u0430\u0445\u043E\u043F\u0438\u0442\u0438","Capture thoughts, tasks, or ideas...":"\u0417\u0430\u0445\u043E\u043F\u043B\u044E\u0439\u0442\u0435 \u0434\u0443\u043C\u043A\u0438, \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0447\u0438 \u0456\u0434\u0435\u0457...",Tomorrow:"\u0417\u0430\u0432\u0442\u0440\u0430","In 2 days":"\u0427\u0435\u0440\u0435\u0437 2 \u0434\u043D\u0456","In 3 days":"\u0427\u0435\u0440\u0435\u0437 3 \u0434\u043D\u0456","In 5 days":"\u0427\u0435\u0440\u0435\u0437 5 \u0434\u043D\u0456\u0432","In 1 week":"\u0427\u0435\u0440\u0435\u0437 1 \u0442\u0438\u0436\u0434\u0435\u043D\u044C","In 10 days":"\u0427\u0435\u0440\u0435\u0437 10 \u0434\u043D\u0456\u0432","In 2 weeks":"\u0427\u0435\u0440\u0435\u0437 2 \u0442\u0438\u0436\u043D\u0456","In 1 month":"\u0427\u0435\u0440\u0435\u0437 1 \u043C\u0456\u0441\u044F\u0446\u044C","In 2 months":"\u0427\u0435\u0440\u0435\u0437 2 \u043C\u0456\u0441\u044F\u0446\u0456","In 3 months":"\u0427\u0435\u0440\u0435\u0437 3 \u043C\u0456\u0441\u044F\u0446\u0456","In 6 months":"\u0427\u0435\u0440\u0435\u0437 6 \u043C\u0456\u0441\u044F\u0446\u0456\u0432","In 1 year":"\u0427\u0435\u0440\u0435\u0437 1 \u0440\u0456\u043A","In 5 years":"\u0427\u0435\u0440\u0435\u0437 5 \u0440\u043E\u043A\u0456\u0432","In 10 years":"\u0427\u0435\u0440\u0435\u0437 10 \u0440\u043E\u043A\u0456\u0432",Today:"\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456","Quick Select":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0432\u0438\u0431\u0456\u0440",Calendar:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440","Clear Date":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0434\u0430\u0442\u0443","Highest priority":"\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","High priority":"\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Medium priority":"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","No priority":"\u0411\u0435\u0437 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Low priority":"\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Lowest priority":"\u041D\u0430\u0439\u043D\u0438\u0436\u0447\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Priority A":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 A","Priority B":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 B","Priority C":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 C","Task Priority":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Remove Priority":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Cycle task status forward":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u043F\u0435\u0440\u0435\u0434","Cycle task status backward":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0430\u0437\u0430\u0434","Remove priority":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Move task to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move all completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move direct completed subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u044F\u043C\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move all subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Incomplete Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable incomplete task mover":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for moving incomplete tasks to another file.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443.","Incomplete task marker type":"\u0422\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Choose what type of marker to add to moved incomplete tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A\u0438\u0439 \u0442\u0438\u043F \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0434\u043E\u0434\u0430\u0442\u0438 \u0434\u043E \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Incomplete version marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0433\u043E","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0435\u0440\u0441\u0456\u044F 1.0')","Incomplete date marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0457 \u0434\u0430\u0442\u0438","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u0422\u0435\u043A\u0441\u0442, \u044F\u043A\u0438\u0439 \u0434\u043E\u0434\u0430\u0454\u0442\u044C\u0441\u044F \u0434\u043E \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u0456 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E 2023-12-31')","Incomplete custom marker text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0430\u0440\u043A\u0435\u0440\u0430 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E\u0433\u043E","With current file link for incomplete tasks":"\u0417 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u043C \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F\u043C \u043D\u0430 \u0444\u0430\u0439\u043B \u0434\u043B\u044F \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u041F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F \u043D\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u0431\u0443\u0434\u0435 \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0438\u0445 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Move all incomplete subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","Move direct incomplete subtasks to another file":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043F\u0440\u044F\u043C\u0456 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u043F\u0456\u0434\u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0456\u043D\u0448\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0443","moved on":"\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E","Set priority":"\u0412\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0438 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Toggle quick capture panel":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F","Quick capture (Global)":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442 (\u0433\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u043E)","Toggle task filter panel":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Filter Mode":"\u0420\u0435\u0436\u0438\u043C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457","Choose whether to include or exclude tasks that match the filters":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0447\u0438 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C","Show matching tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Hide matching tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Choose whether to show or hide tasks that match the filters":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0447\u0438 \u043F\u0440\u0438\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C","Create new file:":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B:","Completed tasks moved to":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u0456 \u0434\u043E","Failed to create file:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0444\u0430\u0439\u043B:","Beginning of file":"\u041F\u043E\u0447\u0430\u0442\u043E\u043A \u0444\u0430\u0439\u043B\u0443","Failed to move tasks:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F:","No active file found":"\u0410\u043A\u0442\u0438\u0432\u043D\u0438\u0439 \u0444\u0430\u0439\u043B \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E","Task moved to":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E \u0434\u043E","Failed to move task:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F:","Nothing to capture":"\u041D\u0435\u043C\u0430\u0454 \u0449\u043E \u0437\u0430\u0445\u043E\u043F\u0438\u0442\u0438","Captured successfully":"\u0423\u0441\u043F\u0456\u0448\u043D\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043E","Failed to save:":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438:","Captured successfully to":"\u0423\u0441\u043F\u0456\u0448\u043D\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043E \u0434\u043E",Total:"\u0417\u0430\u0433\u0430\u043B\u043E\u043C",Workflow:"\u0420\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Add as workflow root":"\u0414\u043E\u0434\u0430\u0442\u0438 \u044F\u043A \u043A\u043E\u0440\u0456\u043D\u044C \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Move to stage":"\u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E \u0435\u0442\u0430\u043F\u0443","Complete stage":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u0435\u0442\u0430\u043F","Add child task with same stage":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u0442\u0438\u043C \u0441\u0430\u043C\u0438\u043C \u0435\u0442\u0430\u043F\u043E\u043C","Could not open quick capture panel in the current editor":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0448\u0432\u0438\u0434\u043A\u043E\u0433\u043E \u0437\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0432 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u043C\u0443 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0456","Just started {{PROGRESS}}%":"\u0429\u043E\u0439\u043D\u043E \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441 {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u041D\u0430 \u043F\u0456\u0432\u0434\u043E\u0440\u043E\u0437\u0456 {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u0413\u0430\u0440\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441 {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u041C\u0430\u0439\u0436\u0435 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u0435 {{PROGRESS}}%","Progress bar":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u043C\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u0456 (\u0437\u0430\u0437\u0432\u0438\u0447\u0430\u0439 \u043D\u0430\u043F\u0440\u0438\u043A\u0456\u043D\u0446\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F). \u0422\u0430\u043A\u043E\u0436 \u043C\u043E\u0436\u043D\u0430 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430\u043C\u0438.","Hide progress bars":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0438","Parent task changer":"\u0417\u043C\u0456\u043D\u0430 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Change the parent task of the current task.":"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","No preset filters created yet. Click 'Add New Preset' to create one.":"\u0422\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 \u0449\u0435 \u043D\u0435 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u0456. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C '\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440', \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u043E\u0434\u0438\u043D.","Configure task workflows for project and process management":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0440\u043E\u0431\u043E\u0447\u0456 \u043F\u0440\u043E\u0446\u0435\u0441\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u043C\u0438 \u0442\u0430 \u043F\u0440\u043E\u0446\u0435\u0441\u0430\u043C\u0438","Enable workflow":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Toggle to enable the workflow system for tasks":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0430\u043A\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u0443 \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Auto-add timestamp":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443","Automatically add a timestamp to the task when it is created":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u0434\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0456\u0434 \u0447\u0430\u0441 \u0439\u043E\u0433\u043E \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Timestamp format:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0447\u0430\u0441\u043E\u0432\u043E\u0457 \u043C\u0456\u0442\u043A\u0438:","Timestamp format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0447\u0430\u0441\u043E\u0432\u043E\u0457 \u043C\u0456\u0442\u043A\u0438","Remove timestamp when moving to next stage":"\u0412\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Remove the timestamp from the current task when moving to the next stage":"\u0412\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0447\u0430\u0441\u043E\u0432\u0443 \u043C\u0456\u0442\u043A\u0443 \u0437 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Calculate spent time":"\u041E\u0431\u0447\u0438\u0441\u043B\u0438\u0442\u0438 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441","Calculate and display the time spent on the task when moving to the next stage":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0430 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u0447\u0430\u0441, \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u043D\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Format for spent time:":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0434\u043B\u044F \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0443:","Calculate spent time when move to next stage.":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0445\u043E\u0434\u0456 \u0434\u043E \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443.","Spent time format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u043E\u0433\u043E \u0447\u0430\u0441\u0443","Calculate full spent time":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0432\u043D\u0438\u0439 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441","Calculate the full spent time from the start of the task to the last stage":"\u0420\u043E\u0437\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0432\u043D\u0438\u0439 \u0432\u0438\u0442\u0440\u0430\u0447\u0435\u043D\u0438\u0439 \u0447\u0430\u0441 \u0432\u0456\u0434 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Auto remove last stage marker":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u043C\u0430\u0440\u043A\u0435\u0440 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443","Automatically remove the last stage marker when a task is completed":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u043C\u0430\u0440\u043A\u0435\u0440 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E","Auto-add next task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Automatically create a new task with the next stage when completing a task":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0441\u0442\u0432\u043E\u0440\u044E\u0432\u0430\u0442\u0438 \u043D\u043E\u0432\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u043C \u0435\u0442\u0430\u043F\u043E\u043C \u043F\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Workflow definitions":"\u0412\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432","Configure workflow templates for different types of processes":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0448\u0430\u0431\u043B\u043E\u043D\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0442\u0438\u043F\u0456\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0440\u043E\u0431\u043E\u0447\u0438\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0456\u0432 \u0449\u0435 \u043D\u0435 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u0456. \u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C '\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441', \u0449\u043E\u0431 \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043E\u0434\u0438\u043D.","Edit workflow":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Remove workflow":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Delete workflow":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441",Delete:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438","Add New Workflow":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","New Workflow":"\u041D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Create New Workflow":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Workflow name":"\u041D\u0430\u0437\u0432\u0430 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","A descriptive name for the workflow":"\u041E\u043F\u0438\u0441\u043E\u0432\u0430 \u043D\u0430\u0437\u0432\u0430 \u0434\u043B\u044F \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Workflow ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","A unique identifier for the workflow (used in tags)":"\u0423\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u044C\u0441\u044F \u0443 \u043C\u0456\u0442\u043A\u0430\u0445)",Description:"\u041F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456","Optional description for the workflow":"\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u0438\u0439 \u043E\u043F\u0438\u0441 \u0434\u043B\u044F \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Describe the purpose and use of this workflow...":"\u041E\u043F\u0438\u0448\u0456\u0442\u044C \u043F\u0440\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0442\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u0446\u044C\u043E\u0433\u043E \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443...","Workflow Stages":"\u0415\u0442\u0430\u043F\u0438 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","No stages defined yet. Add a stage to get started.":"\u0415\u0442\u0430\u043F\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u0435\u0442\u0430\u043F, \u0449\u043E\u0431 \u043F\u043E\u0447\u0430\u0442\u0438.",Edit:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438","Move up":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0433\u043E\u0440\u0443","Move down":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437","Sub-stage":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F","Sub-stage name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0443","Sub-stage ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0443","Next: ":"\u0414\u0430\u043B\u0456: ","Add Sub-stage":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0456\u0434\u0435\u0442\u0430\u043F","New Sub-stage":"\u041D\u043E\u0432\u0438\u0439 \u043F\u0456\u0434\u0435\u0442\u0430\u043F","Edit Stage":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0435\u0442\u0430\u043F","Stage name":"\u041D\u0430\u0437\u0432\u0430 \u0435\u0442\u0430\u043F\u0443","A descriptive name for this workflow stage":"\u041E\u043F\u0438\u0441\u043E\u0432\u0430 \u043D\u0430\u0437\u0432\u0430 \u0434\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Stage ID":"\u0406\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0435\u0442\u0430\u043F\u0443","A unique identifier for the stage (used in tags)":"\u0423\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0435\u0442\u0430\u043F\u0443 (\u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0454\u0442\u044C\u0441\u044F \u0443 \u043C\u0456\u0442\u043A\u0430\u0445)","Stage type":"\u0422\u0438\u043F \u0435\u0442\u0430\u043F\u0443","The type of this workflow stage":"\u0422\u0438\u043F \u0446\u044C\u043E\u0433\u043E \u0435\u0442\u0430\u043F\u0443 \u0440\u043E\u0431\u043E\u0447\u043E\u0433\u043E \u043F\u0440\u043E\u0446\u0435\u0441\u0443","Linear (sequential)":"\u041B\u0456\u043D\u0456\u0439\u043D\u0438\u0439 (\u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u0438\u0439)","Cycle (repeatable)":"\u0426\u0438\u043A\u043B\u0456\u0447\u043D\u0438\u0439 (\u043F\u043E\u0432\u0442\u043E\u0440\u044E\u0432\u0430\u043D\u0438\u0439)","Terminal (end stage)":"\u0422\u0435\u0440\u043C\u0456\u043D\u0430\u043B\u044C\u043D\u0438\u0439 (\u043A\u0456\u043D\u0446\u0435\u0432\u0438\u0439 \u0435\u0442\u0430\u043F)","Next stage":"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0435\u0442\u0430\u043F","The stage to proceed to after this one":"\u0415\u0442\u0430\u043F, \u0434\u043E \u044F\u043A\u043E\u0433\u043E \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u043F\u0456\u0441\u043B\u044F \u0446\u044C\u043E\u0433\u043E","Sub-stages":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F\u0438","Define cycle sub-stages (optional)":"\u0412\u0438\u0437\u043D\u0430\u0447\u0442\u0435 \u0446\u0438\u043A\u043B\u0438 \u043F\u0456\u0434\u0435\u0442\u0430\u043F\u0456\u0432 (\u043D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E)","No sub-stages defined yet.":"\u041F\u0456\u0434\u0435\u0442\u0430\u043F\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.","Can proceed to":"\u041C\u043E\u0436\u0435 \u043F\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043E","Additional stages that can follow this one (for right-click menu)":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0456 \u0435\u0442\u0430\u043F\u0438, \u044F\u043A\u0456 \u043C\u043E\u0436\u0443\u0442\u044C \u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0446\u0438\u043C (\u0434\u043B\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u043D\u043E\u0433\u043E \u043C\u0435\u043D\u044E)","No additional destination stages defined.":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0456 \u0446\u0456\u043B\u044C\u043E\u0432\u0456 \u0435\u0442\u0430\u043F\u0438 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.",Remove:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",Add:"\u0414\u043E\u0434\u0430\u0442\u0438","Name and ID are required.":"\u041D\u0430\u0437\u0432\u0430 \u0442\u0430 \u0456\u0434\u0435\u043D\u0442\u0438\u0444\u0456\u043A\u0430\u0442\u043E\u0440 \u0454 \u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u0438\u043C\u0438.","End of file":"\u041A\u0456\u043D\u0435\u0446\u044C \u0444\u0430\u0439\u043B\u0443","Include in cycle":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0432 \u0446\u0438\u043A\u043B",Preset:"\u0422\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Preset name":"\u041D\u0430\u0437\u0432\u0430 \u0442\u0438\u043F\u043E\u0432\u043E\u0433\u043E \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Edit Filter":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Add New Preset":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0438\u0439 \u0442\u0438\u043F\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","New Filter":"\u041D\u043E\u0432\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Reset to Default Presets":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0442\u0438\u043F\u043E\u0432\u0438\u0445 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","This will replace all your current presets with the default set. Are you sure?":"\u0426\u0435 \u0437\u0430\u043C\u0456\u043D\u0438\u0442\u044C \u0443\u0441\u0456 \u0432\u0430\u0448\u0456 \u043F\u043E\u0442\u043E\u0447\u043D\u0456 \u0442\u0438\u043F\u043E\u0432\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438 \u043D\u0430 \u043D\u0430\u0431\u0456\u0440 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C. \u0412\u0438 \u0432\u043F\u0435\u0432\u043D\u0435\u043D\u0456?","Edit Workflow":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441",General:"\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0456","Progress Bar":"\u041F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Task Mover":"\u041F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Quick Capture":"\u0428\u0432\u0438\u0434\u043A\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442","Date & Priority":"\u0414\u0430\u0442\u0430 \u0442\u0430 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442",About:"\u0414\u043E\u0432\u0456\u0434\u043A\u0430","Count sub children of current Task":"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 .","Configure task status settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Configure which task markers to count or exclude":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438, \u044F\u043A\u0456 \u043C\u0430\u0440\u043A\u0435\u0440\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438, \u0430\u0431\u043E \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0442\u0438","Task status cycle and marks":"\u0426\u0438\u043A\u043B \u0441\u0442\u0430\u0442\u0443\u0441\u0456\u0432 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0442\u0430 \u043C\u0430\u0440\u043A\u0435\u0440\u0438","About Task Genius":"\u041F\u0440\u043E Task Genius",Version:"\u0412\u0435\u0440\u0441\u0456\u044F",Documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044F","View the documentation for this plugin":"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044E \u0446\u044C\u043E\u0433\u043E \u0434\u043E\u0434\u0430\u0442\u043A\u0443","Open Documentation":"\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044E","Incomplete tasks":"\u041D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","In progress tasks":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","Completed tasks":"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","All tasks":"\u0423\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","After heading":"\u041F\u0456\u0441\u043B\u044F \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443","End of section":"\u041A\u0456\u043D\u0435\u0446\u044C \u0440\u043E\u0437\u0434\u0456\u043B\u0443","Enable text mark in source mode":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0443 \u0432\u0438\u0445\u0456\u0434\u043D\u043E\u043C\u0443 \u0440\u0435\u0436\u0438\u043C\u0456","Make the text mark in source mode follow the task status cycle when clicked.":"\u0417\u0440\u043E\u0431\u0438\u0442\u0438 \u0442\u0430\u043A, \u0449\u043E\u0431 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043C\u0430\u0440\u043A\u0435\u0440 \u0443 \u0432\u0438\u0445\u0456\u0434\u043D\u043E\u043C\u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0441\u043B\u0456\u0434\u0443\u0432\u0430\u0432 \u0446\u0438\u043A\u043B\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u043A\u043B\u0430\u0446\u0430\u043D\u043D\u0456.","Status name":"\u041D\u0430\u0437\u0432\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Progress display mode":"\u0420\u0435\u0436\u0438\u043C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Choose how to display task progress":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","No progress indicators":"\u0411\u0435\u0437 \u0456\u043D\u0434\u0438\u043A\u0430\u0442\u043E\u0440\u0430 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Graphical progress bar":"\u0413\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Text progress indicator":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Both graphical and text":"\u0413\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439 \u0442\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0432\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0432 \u0434\u043E\u0447\u0456\u0440\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443.","Progress format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Choose how to display the task progress":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Percentage (75%)":"\u0412\u0456\u0434\u0441\u043E\u0442\u043E\u043A (75%)","Bracketed percentage ([75%])":"\u0412\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0443 \u0434\u0443\u0436\u043A\u0430\u0445 ([75%])","Fraction (3/4)":"\u0414\u0440\u0456\u0431 (3/4)","Bracketed fraction ([3/4])":"\u0414\u0440\u0456\u0431 \u0443 \u0434\u0443\u0436\u043A\u0430\u0445 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u0414\u0435\u0442\u0430\u043B\u044C\u043D\u043E ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442","Range-based text":"\u0422\u0435\u043A\u0441\u0442 \u0437 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0443","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0442\u0430\u043A\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456: {{COMPLETED}}, {{TOTAL}}, {{PERCENT}} \u0442\u043E\u0449\u043E.","Preview:":"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434:","Available placeholders":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0456 \u0437\u0430\u043F\u043E\u0432\u043D\u044E\u0432\u0430\u0447\u0456: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}","Expression examples":"\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438 \u0432\u0438\u0440\u0430\u0437\u0456\u0432","Examples of advanced formats using expressions":"\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0438\u0445 \u0444\u043E\u0440\u043C\u0430\u0442\u0456\u0432 \u0456\u0437 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F\u043C \u0432\u0438\u0440\u0430\u0437\u0456\u0432","Text Progress Bar":"\u0422\u0435\u043A\u0441\u0442\u043E\u0432\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Emoji Progress Bar":"\u0415\u043C\u043E\u0434\u0437\u0456 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440","Color-coded Status":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0456\u0437 \u043A\u043E\u043B\u044C\u043E\u0440\u043E\u0432\u0438\u043C \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Status with Icons":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0456\u0437 \u0456\u043A\u043E\u043D\u043A\u0430\u043C\u0438",Preview:"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434",Use:"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438","Save Filter Configuration":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Load Filter Configuration":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Save Current Filter":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Load Saved Filter":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u0439 \u0444\u0456\u043B\u044C\u0442\u0440","Filter Configuration Name":"\u041D\u0430\u0437\u0432\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Filter Configuration Description":"\u041E\u043F\u0438\u0441 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Enter a name for this filter configuration":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0434\u043B\u044F \u0446\u0456\u0454\u0457 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Enter a description for this filter configuration (optional)":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043E\u043F\u0438\u0441 \u0434\u043B\u044F \u0446\u0456\u0454\u0457 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0430 (\u043D\u0435\u043E\u0431\u043E\u0432'\u044F\u0437\u043A\u043E\u0432\u043E)","No saved filter configurations":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u0445 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0439 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Select a saved filter configuration":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0443 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Delete Filter Configuration":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Are you sure you want to delete this filter configuration?":"\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0446\u044E \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044E \u0444\u0456\u043B\u044C\u0442\u0440\u0430?","Filter configuration saved successfully":"\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration loaded successfully":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration deleted successfully":"\u0412\u0438\u0434\u0430\u043B\u0435\u043D\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to save filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to load filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Failed to delete filter configuration":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u044F \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443","Filter configuration name is required":"\u041D\u0430\u0437\u0432\u0430 \u043A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457 \u0444\u0456\u043B\u044C\u0442\u0440\u0443 \u043E\u0431\u043E\u0432'\u044F\u0437\u043A\u043E\u0432\u0435","Toggle this to show percentage instead of completed/total count.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0441\u043E\u0442\u043E\u043A \u0437\u0430\u043C\u0456\u0441\u0442\u044C \u043A\u0456\u043B\u044C\u043A\u043E\u0441\u0442\u0456 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445/\u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0445.","Customize progress ranges":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Toggle this to customize the text for different progress ranges.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0440\u0456\u0437\u043D\u0438\u0445 \u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D\u0456\u0432 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443.","Apply Theme":"\u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u043C\u0443","Back to main settings":"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438\u0441\u044F \u0434\u043E \u043E\u0441\u043D\u043E\u0432\u043D\u0438\u0445 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat operations to get the result.":"\u041F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0430 \u0432\u0438\u0440\u0430\u0437\u0456\u0432 \u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0456, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F data.percentages \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0410 \u0442\u0430\u043A\u043E\u0436 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439, \u0430\u0431\u043E \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443.","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u041F\u0456\u0434\u0442\u0440\u0438\u043C\u043A\u0430 \u0432\u0438\u0440\u0430\u0437\u0456\u0432 \u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0456, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F data.percentages \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0410 \u0442\u0430\u043A\u043E\u0436 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0445 \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u0439, \u0430\u0431\u043E \u0444\u0443\u043D\u043A\u0446\u0456\u0439 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043D\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0443.","Target File:":"\u0426\u0456\u043B\u044C\u043E\u0432\u0438\u0439 \u0444\u0430\u0439\u043B:","Task Properties":"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Start Date":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Due Date":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Scheduled Date":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430",Priority:"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442",None:"\u041D\u0435\u043C\u0430\u0454",Highest:"\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439",High:"\u0412\u0438\u0441\u043E\u043A\u0438\u0439",Medium:"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439",Low:"\u041D\u0438\u0437\u044C\u043A\u0438\u0439",Lowest:"\u041D\u0430\u0439\u043D\u0438\u0436\u0447\u0438\u0439",Project:"\u041F\u0440\u043E\u0454\u043A\u0442","Project name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u043E\u0454\u043A\u0442\u0443",Context:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442",Recurrence:"\u041F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","e.g., every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u0449\u043E\u0442\u0438\u0436\u043D\u044F","Task Content":"\u0412\u043C\u0456\u0441\u0442 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Task Details":"\u0414\u0435\u0442\u0430\u043B\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",File:"\u0424\u0430\u0439\u043B","Edit in File":"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0443 \u0444\u0430\u0439\u043B\u0456","Mark Incomplete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043D\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","Mark Complete":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","Task Title":"\u041D\u0430\u0437\u0432\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Tags:"\u041C\u0456\u0442\u043A\u0438","e.g. every day, every 2 weeks":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u043A\u043E\u0436\u043D\u0456 2 \u0442\u0438\u0436\u043D\u0456",Forecast:"\u041F\u0440\u043E\u0433\u043D\u043E\u0437","0 actions, 0 projects":"0 \u0434\u0456\u0439, 0 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","Toggle list/tree view":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0441\u043F\u0438\u0441\u043A\u0443/\u0434\u0435\u0440\u0435\u0432\u0430","Focusing on Work":"\u0424\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0430 \u0440\u043E\u0431\u043E\u0442\u0456",Unfocus:"\u0420\u043E\u0437\u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u0442\u0438","Past Due":"\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u043E",Future:"\u041C\u0430\u0439\u0431\u0443\u0442\u043D\u0454",actions:"\u0434\u0456\u0457",project:"\u043F\u0440\u043E\u0454\u043A\u0442","Coming Up":"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0456",Task:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Tasks:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F","No upcoming tasks":"\u041D\u0435\u043C\u0430\u0454 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","No tasks scheduled":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","0 tasks":"0 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Filter tasks...":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F...",Projects:"\u041F\u0440\u043E\u0454\u043A\u0442\u0438","Toggle multi-select":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043C\u043D\u043E\u0436\u0438\u043D\u043D\u0438\u0439 \u0432\u0438\u0431\u0456\u0440","No projects found":"\u041F\u0440\u043E\u0454\u043A\u0442\u0438 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456","projects selected":"\u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432",tasks:"\u0437\u0430\u0432\u0434\u0430\u043D\u044C","No tasks in the selected projects":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043E\u0431\u0440\u0430\u043D\u0438\u0445 \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u0445","Select a project to see related tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442, \u0449\u043E\u0431 \u043F\u043E\u0431\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Configure Review for":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u043E\u0433\u043B\u044F\u0434 \u0434\u043B\u044F","Review Frequency":"\u0427\u0430\u0441\u0442\u043E\u0442\u0430 \u043E\u0433\u043B\u044F\u0434\u0443","How often should this project be reviewed":"\u042F\u043A \u0447\u0430\u0441\u0442\u043E \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u043E\u0454\u043A\u0442","Custom...":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0438\u0439...","e.g., every 3 months":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u043A\u043E\u0436\u043D\u0456 3 \u043C\u0456\u0441\u044F\u0446\u0456","Last Reviewed":"\u041E\u0441\u0442\u0430\u043D\u043D\u0456\u0439 \u043E\u0433\u043B\u044F\u0434","Please specify a review frequency":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u043A\u0430\u0436\u0456\u0442\u044C \u0447\u0430\u0441\u0442\u043E\u0442\u0443 \u043E\u0433\u043B\u044F\u0434\u0443","Review schedule updated for":"\u0413\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0434\u043B\u044F","Review Projects":"\u041E\u0433\u043B\u044F\u0434 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","Select a project to review its tasks.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443 \u0439\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Configured for Review":"\u041D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u043E \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443","Not Configured":"\u041D\u0435 \u043D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u043E","No projects available.":"\u041D\u0435\u043C\u0430\u0454 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0445 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432.","Select a project to review.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0434\u043B\u044F \u043E\u0433\u043B\u044F\u0434\u0443.","Show all tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Showing all tasks, including completed tasks from previous reviews.":"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u0456 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0432\u043A\u043B\u044E\u0447\u043D\u043E \u0456\u0437 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438 \u0437 \u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0445 \u043E\u0433\u043B\u044F\u0434\u0456\u0432.","Show only new and in-progress tasks":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u043D\u043E\u0432\u0456 \u0442\u0430 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456","No tasks found for this project.":"\u0414\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Review every":"\u041E\u0433\u043B\u044F\u0434\u0443\u0432\u0430\u0442\u0438 \u043A\u043E\u0436\u043D\u0456",never:"\u043D\u0456\u043A\u043E\u043B\u0438","Last reviewed":"\u041E\u0441\u0442\u0430\u043D\u043D\u0456\u0439 \u043E\u0433\u043B\u044F\u0434","Mark as Reviewed":"\u041F\u043E\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043E\u0433\u043B\u044F\u043D\u0443\u0442\u0438\u043C","No review schedule configured for this project":"\u041D\u0435 \u043D\u0430\u043B\u0430\u0448\u0442\u043E\u0432\u0430\u043D\u0438\u0439 \u0433\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443 \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Configure Review Schedule":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0433\u0440\u0430\u0444\u0456\u043A \u043E\u0433\u043B\u044F\u0434\u0443","Project Review":"\u041E\u0433\u043B\u044F\u0434 \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Select a project from the left sidebar to review its tasks.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u0440\u043E\u0454\u043A\u0442 \u0443 \u043B\u0456\u0432\u0456\u0439 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456, \u0449\u043E\u0431 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0439\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.",Inbox:"\u0412\u0445\u0456\u0434\u043D\u0456",Flagged:"\u041F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0456",Review:"\u041E\u0433\u043B\u044F\u0434","tags selected":"\u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043C\u0456\u0442\u043E\u043A","No tasks with the selected tags":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456\u0437 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u043C\u0438 \u043C\u0456\u0442\u043A\u0430\u043C\u0438","Select a tag to see related tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0443, \u0449\u043E\u0431 \u043F\u043E\u0431\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0432\u2019\u044F\u0437\u0430\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Open Task Genius view":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 Task Genius","Task capture with metadata":"\u0417\u0430\u0445\u043E\u043F\u043B\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u043C\u0438","Refresh task index":"\u041E\u043D\u043E\u0432\u0438\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Refreshing task index...":"\u041E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F \u0456\u043D\u0434\u0435\u043A\u0441\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C...","Task index refreshed":"\u0406\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E","Failed to refresh task index":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043E\u043D\u043E\u0432\u0438\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Force reindex all tasks":"\u041F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Clearing task cache and rebuilding index...":"\u041E\u0447\u0438\u0449\u0435\u043D\u043D\u044F \u043A\u0435\u0448\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0456 \u043F\u0435\u0440\u0435\u0431\u0443\u0434\u043E\u0432\u0430 \u0456\u043D\u0434\u0435\u043A\u0441\u0443...","Task index completely rebuilt":"\u0406\u043D\u0434\u0435\u043A\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043F\u043E\u0432\u043D\u0456\u0441\u0442\u044E \u043F\u0435\u0440\u0435\u0431\u0443\u0434\u043E\u0432\u0430\u043D\u043E","Failed to force reindex tasks":"\u041D\u0435 \u0432\u0434\u0430\u043B\u043E\u0441\u044F \u043F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Task Genius View":"\u0412\u0438\u0433\u043B\u044F\u0434 Task Genius","Toggle Sidebar":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0431\u0456\u0447\u043D\u0443 \u043F\u0430\u043D\u0435\u043B\u044C",Details:"\u0414\u0435\u0442\u0430\u043B\u0456",View:"\u041F\u043E\u0434\u0430\u043D\u043D\u044F","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F Task Genius \u2014 \u0446\u0435 \u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u0438\u0439 \u0432\u0438\u0433\u043B\u044F\u0434, \u044F\u043A\u0438\u0439 \u0434\u043E\u0437\u0432\u043E\u043B\u044F\u0454 \u0431\u0456\u043B\u044C\u0448 \u0435\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E \u043A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F\u043C\u0438.","Enable task genius view":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F Task Genius","Select a task to view details":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0449\u043E\u0431 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u043D\u0443\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456",Status:"\u0421\u0442\u0430\u043D","Comma separated":"\u0420\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438",Focus:"\u0424\u043E\u043A\u0443\u0441","Loading more...":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0449\u0435...",projects:"\u043F\u0440\u043E\u0454\u043A\u0442\u0438","No tasks for this section.":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u0446\u044C\u043E\u0433\u043E \u0440\u043E\u0437\u0434\u0456\u043B\u0443.","No tasks found.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456.",Complete:"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438","Switch status":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441","Rebuild index":"\u041F\u0435\u0440\u0435\u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0456\u043D\u0434\u0435\u043A\u0441",Rebuild:"\u041F\u0435\u0440\u0435\u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438","0 tasks, 0 projects":"0 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, 0 \u043F\u0440\u043E\u0454\u043A\u0442\u0456\u0432","New Custom View":"\u041D\u043E\u0432\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Create Custom View":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Edit View: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F: ","View Name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","My Custom Task View":"\u041C\u043E\u0454 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Icon Name":"\u041D\u0430\u0437\u0432\u0430 \u0456\u043A\u043E\u043D\u043A\u0438","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u0431\u0443\u0434\u044C-\u044F\u043A\u0443 \u043D\u0430\u0437\u0432\u0443 \u0456\u043A\u043E\u043D\u043A\u0438 Lucide (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: list-checks, filter, inbox)","Filter Rules":"\u041F\u0440\u0430\u0432\u0438\u043B\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457","Hide Completed and Abandoned Tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Hide completed and abandoned tasks in this view.":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0446\u044C\u043E\u043C\u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456.","Text Contains":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","Filter tasks whose content includes this text (case-insensitive).":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u0432\u043C\u0456\u0441\u0442 \u044F\u043A\u0438\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0454 \u0446\u0435\u0439 \u0442\u0435\u043A\u0441\u0442 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Tags Include":"\u041C\u0456\u0442\u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Task must include ALL these tags (comma-separated).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0412\u0421\u0406 \u0446\u0456 \u043C\u0456\u0442\u043A\u0438 (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438).","Tags Exclude":"\u041C\u0456\u0442\u043A\u0438 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Task must NOT include ANY of these tags (comma-separated).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u0432\u043A\u043B\u044E\u0447\u0430\u0442\u0438 \u0416\u041E\u0414\u0415\u041D \u0456\u0437 \u0446\u0438\u0445 \u043C\u0456\u0442\u043E\u043A (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438).","Project Is":"\u041F\u0440\u043E\u0454\u043A\u0442","Task must belong to this project (exact match).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043D\u0430\u043B\u0435\u0436\u0430\u0442\u0438 \u0434\u043E \u0446\u044C\u043E\u0433\u043E \u043F\u0440\u043E\u0454\u043A\u0442\u0443 (\u0442\u043E\u0447\u043D\u0430 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0456\u0441\u0442\u044C).","Priority Is":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Task must have this priority (e.g., 1, 2, 3).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 1, 2, 3).","Status Include":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u043A\u043B\u044E\u0447\u0430\u0454","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u0431\u0443\u0442\u0438 \u043E\u0434\u043D\u0438\u043C \u0456\u0437 \u0446\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: /,>).","Status Exclude":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0454","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u0431\u0443\u0442\u0438 \u043E\u0434\u043D\u0438\u043C \u0456\u0437 \u0446\u0438\u0445 (\u043C\u0430\u0440\u043A\u0435\u0440\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: -,x).","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 YYYY-MM-DD, \u0430\u0431\u043E \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0456 \u0442\u0435\u0440\u043C\u0456\u043D\u0438, \u0442\u0430\u043A\u0456 \u044F\u043A '\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0442\u0438\u0436\u0434\u0435\u043D\u044C', '\u043C\u0438\u043D\u0443\u043B\u0438\u0439 \u043C\u0456\u0441\u044F\u0446\u044C'.","Due Date Is":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Start Date Is":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Scheduled Date Is":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430","Path Includes":"\u0428\u043B\u044F\u0445 \u0432\u043A\u043B\u044E\u0447\u0430\u0454","Task must contain this path (case-insensitive).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Path Excludes":"\u0428\u043B\u044F\u0445 \u0432\u0438\u043A\u043B\u044E\u0447\u0430\u0454","Task must NOT contain this path (case-insensitive).":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443).","Unnamed View":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0431\u0435\u0437 \u043D\u0430\u0437\u0432\u0438","View configuration saved.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456.","Hide Details":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456","Show Details":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0434\u0435\u0442\u0430\u043B\u0456","View Config":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","View Configuration":"\u041A\u043E\u043D\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u0438\u0433\u043B\u044F\u0434\u0438 \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 Task Genius, \u0457\u0445\u043D\u044E \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C, \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0456 \u0441\u0442\u0432\u043E\u0440\u044E\u0439\u0442\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0432\u0438\u0433\u043B\u044F\u0434\u0438.","Manage Views":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0432\u0438\u0433\u043B\u044F\u0434\u0430\u043C\u0438","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0432\u0438\u0433\u043B\u044F\u0434\u0438 \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456, \u0457\u0445\u043D\u0456\u0439 \u043F\u043E\u0440\u044F\u0434\u043E\u043A, \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0434\u043B\u044F \u043A\u043E\u0436\u043D\u043E\u0433\u043E \u043F\u043E\u0434\u0430\u043D\u043D\u044F.","Show in sidebar":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u0432 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456","Edit View":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Move Up":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u0433\u043E\u0440\u0443","Move Down":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043D\u0438\u0437","Delete View":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Add Custom View":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Error: View ID already exists.":"\u041F\u043E\u043C\u0438\u043B\u043A\u0430: ID \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0432\u0436\u0435 \u0456\u0441\u043D\u0443\u0454.",Events:"\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u043D\u044C",Plan:"\u041F\u043B\u0430\u043D",Year:"\u0420\u0456\u043A",Month:"\u041C\u0456\u0441\u044F\u0446\u044C",Week:"\u0422\u0438\u0436\u0434\u0435\u043D\u044C",Day:"\u0414\u0435\u043D\u044C",Agenda:"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0434\u0435\u043D\u043D\u0438\u0439","Back to categories":"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438\u0441\u044F \u0434\u043E \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0456\u0439","No matching options found":"\u0412\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E","No matching filters found":"\u0412\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u043D\u0438\u0445 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432 \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E",Tag:"\u041C\u0456\u0442\u043A\u0430","File Path":"\u0428\u043B\u044F\u0445 \u0444\u0430\u0439\u043B\u0443","Add filter":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Clear all":"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0432\u0441\u0435","Add Card":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u0430\u0440\u0442\u043A\u0443","First Day of Week":"\u041F\u0435\u0440\u0448\u0438\u0439 \u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F","Overrides the locale default for calendar views.":"\u041F\u0435\u0440\u0435\u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043B\u043E\u043A\u0430\u043B\u0456 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u0434\u043B\u044F \u0432\u0438\u0433\u043B\u044F\u0434\u0456\u0432 \u043A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044F.","Show checkbox":"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u0438 \u043F\u0440\u0430\u043F\u043E\u0440\u0435\u0446\u044C","Show a checkbox for each task in the kanban view.":"\u041F\u043E\u043A\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u0430\u043F\u043E\u0440\u0435\u0446\u044C \u043A\u043E\u0436\u043D\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456 \u043A\u0430\u043D\u0431\u0430\u043D.","Locale Default":"\u041B\u043E\u043A\u0430\u043B\u044C\u043D\u0430 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Use custom goal for progress bar":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0443 \u043C\u0435\u0442\u0443 \u0434\u043B\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0448\u0443\u043A\u0430\u0432 \u0448\u0430\u0431\u043B\u043E\u043D g::number \u044F\u043A \u043C\u0435\u0442\u0443 \u0431\u0430\u0442\u044C\u043A\u0456\u0432\u0441\u044C\u043A\u043E\u0433\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Prefer metadata format of task":"\u0412\u0456\u0434\u0434\u0430\u0432\u0430\u0442\u0438 \u043F\u0435\u0440\u0435\u0432\u0430\u0433\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443 \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0444\u043E\u0440\u043C\u0430\u0442 dataview, \u0430\u0431\u043E tasks, \u0449\u043E \u0432\u043F\u043B\u0438\u043D\u0435 \u043D\u0430 \u0444\u043E\u0440\u043C\u0430\u0442 \u0456\u043D\u0434\u0435\u043A\u0441\u0443 \u0442\u0430 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u043D\u044F.","Open in new tab":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0443 \u043D\u043E\u0432\u043E\u043C\u0438\u0439 \u0432\u043A\u043B\u0430\u0434\u0446\u0456","Open settings":"\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Hide in sidebar":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0443 \u0431\u0456\u0447\u043D\u0456\u0439 \u043F\u0430\u043D\u0435\u043B\u0456","No items found":"\u041D\u0435\u043C\u0430\u0454 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","High Priority":"\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Medium Priority":"\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Low Priority":"\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","No tasks in the selected items":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u0445","View Type":"\u0422\u0438\u043F \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Select the type of view to create":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0438\u043F \u043F\u043E\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Standard View":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Two Column View":"\u0414\u0432\u043E\u043A\u043E\u043B\u043E\u043D\u043A\u043E\u0432\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F",Items:"\u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0438","selected items":"\u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438","No items selected":"\u041D\u0435\u043C\u0430\u0454 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Two Column View Settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0432\u043E\u043A\u043E\u043B\u043E\u043D\u043A\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Group by Task Property":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u043E\u043C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Select which task property to use for left column grouping":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0433\u0440\u0443\u043F\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043B\u0456\u0432\u0456\u0439 \u043A\u043E\u043B\u043E\u043D\u0446\u0456",Priorities:"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0438",Contexts:"\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0438","Due Dates":"\u0422\u0435\u0440\u043C\u0456\u043D\u0438 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Scheduled Dates":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u0434\u0430\u0442\u0438","Start Dates":"\u0414\u0430\u0442\u0438 \u043F\u043E\u0447\u0430\u0442\u043A\u0443",Files:"\u0424\u0430\u0439\u043B\u0438","Left Column Title":"\u041B\u0456\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u0431\u0435\u0446\u044C","Title for the left column (items list)":"\u041D\u0430\u0437\u0432\u0430 \u043B\u0456\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F (\u0441\u043F\u0438\u0441\u043E\u043A \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432)","Right Column Title":"\u041F\u0440\u0430\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u0431\u0435\u0446\u044C","Default title for the right column (tasks list)":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F (\u0441\u043F\u0438\u0441\u043E\u043A \u0437\u0430\u0432\u0434\u0430\u043D\u044C)","Multi-select Text":"\u0422\u0435\u043A\u0441\u0442 \u043C\u043D\u043E\u0436\u0438\u043D\u043D\u043E\u0433\u043E \u0432\u0438\u0431\u043E\u0440\u0443","Text to show when multiple items are selected":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0438\u0439 \u0442\u0435\u043A\u0441\u0442, \u043A\u043E\u043B\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u043E \u043A\u0456\u043B\u044C\u043A\u0430 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Empty State Text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u043E\u0440\u043E\u0436\u043D\u044C\u043E\u0433\u043E \u0441\u0442\u0430\u043D\u0443","Text to show when no items are selected":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0438\u0439 \u0442\u0435\u043A\u0441\u0442, \u043A\u043E\u043B\u0438 \u043D\u0435\u043C\u0430\u0454 \u0432\u0438\u0431\u0440\u0430\u043D\u0438\u0445 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432","Filter Blanks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Filter out blank tasks in this view.":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0446\u044C\u043E\u043C\u0443 \u0432\u0438\u0433\u043B\u044F\u0434\u0456.","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443). \u0420\u043E\u0437\u0434\u0456\u043B\u044F\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u0448\u043B\u044F\u0445\u0456\u0432 \u043A\u043E\u043C\u0430\u043C\u0438.","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u041D\u0415 \u043C\u0430\u0454 \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0446\u0435\u0439 \u0448\u043B\u044F\u0445 (\u0431\u0435\u0437 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443). \u0420\u043E\u0437\u0434\u0456\u043B\u044F\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u0448\u043B\u044F\u0445\u0456\u0432 \u043A\u043E\u043C\u0430\u043C\u0438.","You have unsaved changes. Save before closing?":"\u0412\u0438 \u043C\u0430\u0454\u0442\u0435 \u043D\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0437\u043C\u0456\u043D\u0438. \u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043F\u0435\u0440\u0435\u0434 \u0437\u0430\u043A\u0440\u0438\u0442\u0442\u044F\u043C?",Rotate:"\u041F\u043E\u0432\u0435\u0440\u043D\u0443\u0442\u0438","Are you sure you want to force reindex all tasks?":"\u0412\u0438 \u0434\u0456\u0439\u0441\u043D\u043E \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F?","Enable progress bar in reading mode":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0447\u0438\u0442\u0430\u043D\u043D\u044F","Toggle this to allow this plugin to show progress bars in reading mode.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440\u0443 \u0443 \u0440\u0435\u0436\u0438\u043C\u0456 \u0447\u0438\u0442\u0430\u043D\u043D\u044F.",Range:"\u0414\u0456\u0430\u043F\u0430\u0437\u043E\u043D","as a placeholder for the percentage value":"\u044F\u043A \u0437\u0430\u043C\u0456\u043D\u043D\u0438\u043A \u0434\u043B\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0442\u043A\u0430","Template text with":"\u0428\u0430\u0431\u043B\u043E\u043D \u0442\u0435\u043A\u0441\u0442\u0443 \u0437",placeholder:"\u0437\u0430\u043C\u0456\u043D\u043D\u0438\u043A\u043E\u043C",Reindex:"\u041F\u0435\u0440\u0435\u0456\u043D\u0434\u0435\u043A\u0441\u0443\u0432\u0430\u0442\u0438","From now":"\u0417 \u0446\u044C\u043E\u0433\u043E \u043C\u043E\u043C\u0435\u043D\u0442\u0443","Complete workflow":"\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441","Move to":"\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u0434\u043E",Settings:"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Just started":"\u0429\u043E\u0439\u043D\u043E \u0440\u043E\u0437\u043F\u043E\u0447\u0430\u0442\u043E","Making progress":"\u0414\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u044F \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0443","Half way":"\u041F\u043E\u043B\u043E\u0432\u0438\u043D\u0430 \u0448\u043B\u044F\u0445\u0443","Good progress":"\u0413\u0430\u0440\u043D\u0438\u0439 \u043F\u0440\u043E\u0433\u0440\u0435\u0441","Almost there":"\u041C\u0430\u0439\u0436\u0435 \u0433\u043E\u0442\u043E\u0432\u043E","archived on":"\u0430\u0440\u0445\u0456\u0432\u043E\u0432\u0430\u043D\u043E",moved:"\u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043E","Capture your thoughts...":"\u0417\u0430\u043F\u0438\u0441\u0443\u0439\u0442\u0435 \u0441\u0432\u043E\u0457 \u0434\u0443\u043C\u043A\u0438...","Project Workflow":"\u0420\u043E\u0431\u043E\u0447\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441 \u043F\u0440\u043E\u0454\u043A\u0442\u0430","Standard project management workflow":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u0441 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0440\u043E\u0454\u043A\u0442\u0430\u043C\u0438",Planning:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E",Development:"\u0420\u043E\u0437\u0440\u043E\u0431\u043A\u0430",Testing:"\u0422\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F",Cancelled:"\u0421\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",Habit:"\u0417\u0432\u0438\u0447\u043A\u0430","Drink a cup of good tea":"\u0412\u0438\u043F\u0438\u0442\u0438 \u0447\u0430\u0448\u043A\u0443 \u0433\u0430\u0440\u043D\u043E\u0433\u043E \u0447\u0430\u044E","Watch an episode of a favorite series":"\u041F\u043E\u0434\u0438\u0432\u0438\u0442\u0438\u0441\u044F \u0441\u0435\u0440\u0456\u044E \u0443\u043B\u044E\u0431\u043B\u0435\u043D\u043E\u0433\u043E \u0441\u0435\u0440\u0456\u0430\u043B\u0443","Play a game":"\u041F\u043E\u0433\u0440\u0430\u0442\u0438 \u0443 \u0433\u0440\u0443","Eat a piece of chocolate":"\u0417\u2019\u0457\u0441\u0442\u0438 \u0448\u043C\u0430\u0442\u043E\u0447\u043E\u043A \u0448\u043E\u043A\u043E\u043B\u0430\u0434\u0443",common:"\u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0430",rare:"\u0440\u0456\u0434\u043A\u0456\u0441\u043D\u0430",legendary:"\u043B\u0435\u0433\u0435\u043D\u0434\u0430\u0440\u043D\u0430","No Habits Yet":"\u0417\u0432\u0438\u0447\u043E\u043A \u0449\u0435 \u043D\u0435\u043C\u0430\u0454","Click the open habit button to create a new habit.":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0442\u044F \u0437\u0432\u0438\u0447\u043A\u0438, \u0449\u043E\u0431 \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443.","Please enter details":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u043A\u0430\u0436\u0456\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u0438\u0446\u0456","Goal reached":"\u041C\u0435\u0442\u0430 \u0434\u043E\u0441\u044F\u0433\u043D\u0443\u0442\u0430","Exceeded goal":"\u041C\u0435\u0442\u0430 \u043F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u0430",Active:"\u0410\u043A\u0442\u0438\u0432\u043D\u0430",today:"\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456",Inactive:"\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u0430","All Done!":"\u0412\u0441\u0451 \u0437\u0440\u043E\u0431\u043B\u0435\u043D\u043E!","Select event...":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u0434\u0456\u044E...","Create new habit":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","Edit habit":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0443","Habit type":"\u0422\u0438\u043F \u0437\u0432\u0438\u0447\u043A\u0438","Daily habit":"\u0429\u043E\u0434\u0435\u043D\u043D\u0430","Simple daily check-in habit":"\u041F\u0440\u043E\u0441\u0442\u0430 \u0449\u043E\u0434\u0435\u043D\u043D\u0430 \u0437\u0432\u0438\u0447\u043A\u0430 \u0434\u043B\u044F \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F","Count habit":"\u041A\u0456\u043B\u044C\u043A\u0456\u0441\u043D\u0430","Record numeric values, e.g., how many cups of water":"\u0417\u0430\u043F\u0438\u0441\u0443\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0437\u0440\u043E\u0431\u043B\u0435\u043D\u043E\u0433\u043E, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A \u0447\u0430\u0448\u043E\u043A \u0432\u043E\u0434\u0438","Mapping habit":"\u0417\u0456\u0441\u0442\u0430\u0432\u043D\u0430","Use different values to map, e.g., emotion tracking":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0440\u0456\u0437\u043D\u0456 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0432\u0456\u0434\u0441\u0442\u0435\u0436\u0435\u043D\u043D\u044F \u0435\u043C\u043E\u0446\u0456\u0439","Scheduled habit":"\u0417\u0430 \u0440\u043E\u0437\u043A\u043B\u0430\u0434\u043E\u043C","Habit with multiple events":"\u0417\u0432\u0438\u0447\u043A\u0430 \u0437 \u0434\u0435\u043A\u0456\u043B\u044C\u043A\u043E\u043C\u0430 \u043F\u043E\u0434\u0456\u044F\u043C\u0438","Habit name":"\u041D\u0430\u0437\u0432\u0430 \u0437\u0432\u0438\u0447\u043A\u0438","Display name of the habit":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0454\u043C\u0430 \u043D\u0430\u0437\u0432\u0430 \u0437\u0432\u0438\u0447\u043A\u0438","Optional habit description":"\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u043E\u043F\u0438\u0441",Icon:"\u0406\u043A\u043E\u043D\u043A\u0430","Please enter a habit name":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0438","Property name":"\u0412\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044C","The property name of the daily note front matter":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456","Completion text":"\u0422\u0435\u043A\u0441\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u0438\u0439 \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F. \u0417\u0430\u043B\u0438\u0448\u0442\u0435 \u043F\u043E\u0440\u043E\u0436\u043D\u0456\u043C, \u0449\u043E\u0431 \u0431\u0443\u0434\u044C-\u044F\u043A\u0435 \u043D\u0435\u043F\u043E\u0440\u043E\u0436\u043D\u0454 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u043B\u043E\u0441\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u043C","The property name in daily note front matter to store count values":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456 \u0434\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0435\u0442\u0438\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443","Minimum value":"\u041C\u0456\u043D \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","(Optional) Minimum value for the count":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A\u0430","Maximum value":"\u041C\u0430\u043A\u0441 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","(Optional) Maximum value for the count":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u043B\u0456\u0447\u0438\u043B\u044C\u043D\u0438\u043A\u0430",Unit:"\u041E\u0434\u0438\u043D\u0438\u0446\u044F","(Optional) Unit for the count, such as 'cups', 'times', etc.":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u041E\u0434\u0438\u043D\u0438\u0446\u044F \u043F\u0456\u0434\u0440\u0430\u0445\u0443\u043D\u043A\u0443, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0447\u0430\u0448\u043A\u0438', '\u0440\u0430\u0437\u0438' \u0442\u043E\u0449\u043E.","Notice threshold":"\u041F\u043E\u0440\u0456\u0433 \u0441\u043F\u043E\u0432\u0456\u0449\u0435\u043D\u043D\u044F","(Optional) Trigger a notification when this value is reached":"(\u041D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E) \u0421\u043F\u043E\u0432\u0456\u0449\u0430\u0442\u0438 \u043F\u0440\u0438 \u0434\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u0456 \u0446\u044C\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","The property name in daily note front matter to store mapping values":"\u041D\u0430\u0437\u0432\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456 \u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u0456\u0439 \u043D\u043E\u0442\u0430\u0442\u0446\u0456 \u0434\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Value mapping":"\u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Define mappings from numeric values to display text":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0437\u0456\u0441\u0442\u0430\u043B\u0435\u043D\u043D\u044F \u0434\u043B\u044F \u0447\u0438\u0441\u043B\u043E\u0432\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0442\u0435\u043A\u0441\u0442\u0443","Add new mapping":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u043D\u043E\u0432\u0435 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F","Scheduled events":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0456 \u043F\u043E\u0434\u0456\u0457","Add multiple events that need to be completed":"\u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u043A\u0456\u043B\u044C\u043A\u0430 \u043F\u043E\u0434\u0456\u0439, \u044F\u043A\u0456 \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438","Event name":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0456\u0457","Event details":"\u041E\u043F\u0438\u0441 \u043F\u043E\u0434\u0456\u0457","Add new event":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0443 \u043F\u043E\u0434\u0456\u044E","Please enter a property name":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456","Please add at least one mapping value":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0434\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043D\u0430\u0439\u043C\u043D\u0456 \u043E\u0434\u043D\u0443 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0437\u0456\u0441\u0442\u0430\u043B\u0432\u043B\u0435\u043D\u043D\u044F","Mapping key must be a number":"\u041A\u043B\u044E\u0447 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u044F \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043B\u043E\u043C","Please enter text for all mapping values":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044C \u0442\u0435\u043A\u0441\u0442 \u0434\u043B\u044F \u0432\u0441\u0456\u0445 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u0438\u0445 \u0437\u043D\u0430\u0447\u0435\u043D\u044C","Please add at least one event":"\u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0434\u043E\u0434\u0430\u0439\u0442\u0435 \u043F\u0440\u0438\u043D\u0430\u0439\u043C\u043D\u0456 \u043E\u0434\u043D\u0443 \u043F\u043E\u0434\u0456\u044E","Event name cannot be empty":"\u041D\u0430\u0437\u0432\u0430 \u043F\u043E\u0434\u0456\u0457 \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u044C\u043E\u044E","Add new habit":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u043E\u0432\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","No habits yet":"\u0429\u0435 \u043D\u0435\u043C\u0430\u0454 \u0437\u0432\u0438\u0447\u043E\u043A","Click the button above to add your first habit":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0432\u0438\u0449\u0435 \u0449\u043E\u0431 \u0434\u043E\u0434\u0430\u0442\u0438 \u043F\u0435\u0440\u0448\u0443 \u0437\u0432\u0438\u0447\u043A\u0443","Habit updated":"\u0417\u0432\u0438\u0447\u043A\u0443 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043E","Habit added":"\u0417\u0432\u0438\u0447\u043A\u0430 \u0434\u043E\u0434\u0430\u043D\u0430","Delete habit":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0443","This action cannot be undone.":"\u0426\u044E \u0434\u0456\u044E \u043D\u0435 \u043C\u043E\u0436\u043D\u0430 \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438.","Habit deleted":"\u0417\u0432\u0438\u0447\u043A\u0443 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043E","You've Earned a Reward!":"\u0412\u0438 \u043E\u0442\u0440\u0438\u043C\u0430\u043B\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443!","Your reward:":"\u0412\u0430\u0448\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430:","Image not found:":"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E:","Claim Reward":"\u041E\u0442\u0440\u0438\u043C\u0430\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443",Skip:"\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u0438",Reward:"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","View & Index Configuration":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0442\u0430 \u0406\u043D\u0434\u0435\u043A\u0441\u0430\u0446\u0456\u0457","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F Task Genius, \u0442\u0430\u043A\u043E\u0436 \u0443\u0432\u0456\u043C\u043A\u043D\u0435 \u0456\u043D\u0434\u0435\u043A\u0441\u0430\u0442\u043E\u0440 task genius, \u044F\u043A\u0438\u0439 \u043D\u0430\u0434\u0430\u0441\u0442\u044C \u0443 \u043F\u043E\u0434\u0430\u043D\u043D\u0456 task genius \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u0437 \u0443\u0441\u044C\u043E\u0433\u043E \u0441\u0445\u043E\u0432\u0438\u0449\u0430.","Use daily note path as date":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0434\u0430\u0442\u0443 \u044F\u043A \u0448\u043B\u044F\u0445 \u0434\u043E \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","If enabled, the daily note path will be used as the date for tasks.":"\u042F\u043A\u0449\u043E \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043E, \u0448\u043B\u044F\u0445 \u0434\u043E \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438 \u0431\u0443\u0434\u0435 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u044F\u043A \u0434\u0430\u0442\u0430 \u0434\u043B\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u0431\u0443\u0434\u0435 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 moment.js \u0442\u0430 \u0446\u0435\u0439 \u0444\u043E\u0440\u043C\u0430\u0442, \u0434\u043B\u044F \u043E\u0431\u0440\u043E\u0431\u043A\u0438 \u0448\u043B\u044F\u0445\u0443 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438.","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u0423 \u0440\u044F\u0434\u043A\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u043E\u0442\u0440\u0456\u0431\u043D\u043E \u0432\u043A\u0430\u0437\u0430\u0442\u0438 `yyyy` \u0437\u0430\u043C\u0456\u0441\u0442\u044C `YYYY`. \u0422\u0430 `dd` \u0437\u0430\u043C\u0456\u0441\u0442\u044C `DD`.","Daily note format":"\u0424\u043E\u0440\u043C\u0430\u0442 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","Daily note path":"\u0428\u043B\u044F\u0445 \u0449\u043E\u0434\u0435\u043D\u043D\u043E\u0457 \u043D\u043E\u0442\u0430\u0442\u043A\u0438","Select the folder that contains the daily note.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0442\u0435\u043A\u0443 \u044F\u043A\u0430 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u0449\u043E\u0434\u0435\u043D\u043D\u0443 \u043D\u043E\u0442\u0430\u0442\u043A\u0443.","Use as date type":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u044F\u043A \u0442\u0438\u043F \u0434\u0430\u0442\u0438","You can choose due, start, or scheduled as the date type for tasks.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u043E\u0431\u0440\u0430\u0442\u0438 \u0442\u0438\u043F \u0434\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u044F\u043A \u0442\u0435\u0440\u043C\u0456\u043D, \u043F\u043E\u0447\u0430\u0442\u043E\u043A, \u0430\u0431\u043E \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E.",Due:"\u0422\u0435\u0440\u043C\u0456\u043D",Start:"\u041F\u043E\u0447\u0430\u0442\u043E\u043A",Scheduled:"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E",Rewards:"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0437\u0430 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0412\u0438\u0437\u043D\u0430\u0447\u0430\u0439\u0442\u0435 \u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438, \u0439\u043C\u043E\u0432\u0456\u0440\u043D\u043E\u0441\u0442\u0456 \u0457\u0445 \u043F\u043E\u044F\u0432\u0438 \u0442\u0430 \u0443\u043C\u043E\u0432\u0438.","Enable rewards":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Toggle to enable or disable the reward system.":"\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447 \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F/\u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043D\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434.","Occurrence levels":"\u0420\u0456\u0432\u043D\u0456 \u0432\u0438\u043D\u0438\u043A\u043D\u0435\u043D\u043D\u044F","Define different levels of reward rarity and their probability.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u0440\u0456\u0437\u043D\u0456 \u0440\u0456\u0432\u043D\u0456 \u0440\u0456\u0434\u043A\u0456\u0441\u043D\u043E\u0441\u0442\u0456 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0442\u0430 \u0457\u0445\u043D\u044E \u0439\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C.","Chance must be between 0 and 100.":"\u0419\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C \u043F\u043E\u0432\u0438\u043D\u043D\u0430 \u0431\u0443\u0442\u0438 \u0432\u0456\u0434 0 \u0434\u043E 100.","Level name (e.g., common)":"\u041D\u0430\u0437\u0432\u0430 \u0440\u0456\u0432\u043D\u044F (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0439)","Chance (%)":"\u0419\u043C\u043E\u0432\u0456\u0440\u043D\u0456\u0441\u0442\u044C (%)","Delete level":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","Add occurrence level":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C \u0432\u0438\u043D\u0438\u043A\u043D\u0435\u043D\u043D\u044F","New level":"\u041D\u043E\u0432\u0438\u0439 \u0440\u0456\u0432\u0435\u043D\u044C","Reward items":"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Manage the specific rewards that can be obtained.":"\u041A\u0435\u0440\u0443\u0439\u0442\u0435 \u043A\u043E\u043D\u043A\u0440\u0435\u0442\u043D\u0438\u043C\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430\u043C\u0438, \u044F\u043A\u0456 \u043C\u043E\u0436\u043D\u0430 \u043E\u0442\u0440\u0438\u043C\u0430\u0442\u0438.","No levels defined":"\u0420\u0456\u0432\u043D\u0456 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456","Reward name/text":"\u041D\u0430\u0437\u0432\u0430/\u0442\u0435\u043A\u0441\u0442 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Inventory (-1 for \u221E)":"\u0406\u043D\u0432\u0435\u043D\u0442\u0430\u0440 (-1 \u0434\u043B\u044F \u221E)","Invalid inventory number.":"\u041D\u0435\u0432\u0456\u0440\u043D\u0438\u0439 \u043D\u043E\u043C\u0435\u0440 \u0456\u043D\u0432\u0435\u043D\u0442\u0430\u0440\u044F.","Condition (e.g., #tag AND project)":"\u0423\u043C\u043E\u0432\u0430 (#\u043C\u0456\u0442\u043A\u0430 AND \u043F\u0440\u043E\u0454\u043A\u0442)","Image url (optional)":"URL \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F (\u043D\u0435\u043E\u0431\u043E\u0432\u2019\u044F\u0437\u043A\u043E\u0432\u043E)","Delete reward item":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443","No reward items defined yet.":"\u041D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u0449\u0435 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456.","Add reward item":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0443","New reward":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438 \u0437\u0432\u0438\u0447\u043E\u043A, \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0447\u0438 \u0434\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F \u043D\u043E\u0432\u0438\u0445, \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043D\u043D\u044F \u0456\u0441\u043D\u0443\u044E\u0447\u0438\u0445 \u0442\u0430 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F\u043C \u0437\u0432\u0438\u0447\u043E\u043A.","Enable habits":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0437\u0432\u0438\u0447\u043A\u0438","Reward display type":"\u0422\u0438\u043F \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438","Choose how rewards are displayed when earned.":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0438 \u043F\u0456\u0441\u043B\u044F \u0434\u043E\u0441\u044F\u0433\u043D\u0435\u043D\u043D\u044F.","Modal dialog":"\u041C\u043E\u0434\u0430\u043B\u044C\u043D\u0435 \u0432\u0456\u043A\u043D\u043E","Notice (Auto-accept)":"\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F (\u0430\u0432\u0442\u043E\u043F\u0440\u0438\u0439\u043D\u044F\u0442\u0442\u044F)","Task sorting is disabled or no sort criteria are defined in settings.":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0432\u0438\u043C\u043A\u043D\u0435\u043D\u043E, \u0430\u0431\u043E \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043D\u0430\u0430\u0448\u0442\u0443\u043D\u043A\u0430\u0445.","e.g. #tag1, #tag2, #tag3":"\u0442\u043E\u0431\u0442\u043E #\u043C\u0456\u0442\u043A\u04301, #\u043C\u0456\u0442\u043A\u04302, #\u043C\u0456\u0442\u043A\u04303",Overdue:"\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u0456","No tasks found for this tag.":"\u0417\u0430 \u0446\u0456\u0454\u044E \u043C\u0456\u0442\u043A\u043E\u044E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","New custom view":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Create custom view":"\u0421\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0432\u043B\u0430\u0441\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Copy view: ":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434: ","Copy View":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434","Copy view":"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434","Copy of ":"\u041A\u043E\u043F\u0456\u044F \u0437 ","Creating a copy based on: ":"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u043A\u043E\u043F\u0456\u0457 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456: ","You can modify all settings below. The original view will remain unchanged.":"\u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0438\u0436\u0447\u0435. \u041F\u043E\u0447\u0430\u0442\u043A\u043E\u0432\u0438\u0439 \u0432\u0438\u0433\u043B\u044F\u0434 \u0437\u0430\u043B\u0438\u0448\u0438\u0442\u044C\u0441\u044F \u043D\u0435\u0437\u043C\u0456\u043D\u043D\u0438\u043C.","View copied successfully: ":"\u0412\u0438\u0433\u043B\u044F\u0434 \u0443\u0441\u043F\u0456\u0448\u043D\u043E \u0441\u043A\u043E\u043F\u0456\u0439\u043E\u0432\u0430\u043D\u043E: ","Edit view: ":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u043D\u043D\u044F: ","Icon name":"\u041D\u0430\u0437\u0432\u0430 \u0456\u043A\u043E\u043D\u043A\u0438","First day of week":"\u041F\u0435\u0440\u0448\u0438\u0439 \u0434\u0435\u043D\u044C \u0442\u0438\u0436\u043D\u044F","Overrides the locale default for forecast views.":"\u041F\u0435\u0440\u0435\u0432\u0438\u0437\u043D\u0430\u0447\u0430\u0454 \u0442\u0438\u043F\u043E\u0432\u0456 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0456 \u0443 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0456 \u041F\u0440\u043E\u0433\u043D\u043E\u0437\u0443.","View type":"\u0422\u0438\u043F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443","Standard view":"\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0435 \u043F\u043E\u0434\u0430\u043D\u043D\u044F","Two column view":"\u041F\u043E\u0434\u0430\u043D\u043D\u044F \u0443 \u0434\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438","Two column view settings":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443 \u0443 \u0434\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438","Group by task property":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044E \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Left column title":"\u041D\u0430\u0437\u0432\u0430 \u043B\u0456\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F","Right column title":"\u041D\u0430\u0437\u0432\u0430 \u043F\u0440\u0430\u0432\u043E\u0433\u043E \u0441\u0442\u043E\u0432\u0431\u0446\u044F","Empty state text":"\u0422\u0435\u043A\u0441\u0442 \u043F\u0443\u0441\u0442\u043E\u0433\u043E \u0441\u0442\u0430\u043D\u0443","Hide completed and abandoned tasks":"\u041F\u0440\u0438\u0445\u043E\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456 \u0442\u0430 \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Filter blanks":"\u0424\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456","Text contains":"\u0422\u0435\u043A\u0441\u0442 \u043C\u0456\u0441\u0442\u0438\u0442\u044C","Tags include":"\u041C\u0456\u0442\u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0430\u044E\u0442\u044C","Tags exclude":"\u0417\u0430 \u0432\u0438\u043D\u044F\u0442\u043A\u043E\u043C \u043C\u0456\u0442\u043E\u043A","Project is":"\u041F\u0440\u043E\u0454\u043A\u0442","Priority is":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442","Status include":"\u041C\u0430\u0454 \u0441\u0442\u0430\u0442\u0443\u0441","Status exclude":"\u0411\u0435\u0437 \u0441\u0442\u0430\u043D\u0443","Due date is":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F - \u0434\u043E","Start date is":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Scheduled date is":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 \u043F\u0440\u043E\u0432\u0435\u0434\u0435\u043D\u043D\u044F","Path includes":"\u0428\u043B\u044F\u0445 \u0441\u043F\u0456\u0432\u043F\u0430\u0434\u0430\u0454","Path excludes":"\u0428\u043B\u044F\u0445 \u043D\u0435 \u0441\u043F\u0456\u0432\u043F\u0430\u0434\u0430\u0454","Sort Criteria":"\u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0439 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u0412\u0438\u0437\u043D\u0430\u0447\u0438\u0442\u0438 \u043F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0437\u0430\u0441\u0442\u043E\u0441\u043E\u0432\u0443\u044E\u0442\u044C\u0441\u044F \u043F\u043E\u0441\u043B\u0456\u0434\u043E\u0432\u043D\u043E.","No sort criteria defined. Add criteria below.":"\u041A\u0440\u0438\u0442\u0435\u0440\u0456\u0457 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0421\u0442\u0432\u043E\u0440\u0456\u0442\u044C \u043D\u043E\u0432\u0438\u0439 \u043D\u0438\u0436\u0447\u0435.",Content:"\u0417\u043C\u0456\u0441\u0442",Ascending:"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F",Descending:"\u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0412\u0438\u0441\u043E\u043A\u0438\u0439 -> \u041D\u0438\u0437\u044C\u043A\u0438\u0439 -> \u041D\u0435\u043C\u0430\u0454. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u041D\u0435\u043C\u0430\u0454 -> \u041D\u0438\u0437\u044C\u043A\u0438\u0439 -> \u0412\u0438\u0441\u043E\u043A\u0438\u0439igh","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0420\u0430\u043D\u0456\u0448\u0435 -> \u041F\u0456\u0437\u043D\u0456\u0448\u0435 -> \u041D\u0435\u043C\u0430\u0454. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u041D\u0435\u043C\u0430\u0454 -> \u041F\u0456\u0437\u043D\u0456\u0448\u0435 -> \u0420\u0430\u043D\u0456\u0448\u0435","Ascending respects status order (Overdue first). Descending reverses it.":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F \u0434\u043E\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u043E\u0440\u044F\u0434\u043A\u0443 \u0441\u0442\u0430\u043D\u0443 (\u041F\u0440\u043E\u0441\u0442\u0440\u043E\u0447\u0435\u043D\u0456 \u043F\u0435\u0440\u0448\u0438\u043C\u0438). \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F - \u0437\u043C\u0456\u043D\u044E\u0454 \u0439\u043E\u0433\u043E \u043D\u0430 \u043F\u0440\u043E\u0442\u0438\u043B\u0435\u0436\u043D\u0438\u0439.","Ascending: A-Z. Descending: Z-A":"\u0417\u0440\u043E\u0441\u0442\u0430\u043D\u043D\u044F: \u0410-\u042F. \u0421\u043F\u0430\u0434\u0430\u043D\u043D\u044F: \u042F-\u0410","Remove Criterion":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0439","Add Sort Criterion":"\u0414\u043E\u0434\u0430\u0442\u0438 \u043A\u0440\u0438\u0442\u0435\u0440\u0456\u0439 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Reset to Defaults":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0434\u043E \u0442\u0438\u043F\u043E\u0432\u0438\u0445 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C","Has due date":"\u041C\u0430\u0454 \u0442\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Has date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443","No date":"\u0411\u0435\u0437 \u0434\u0430\u0442\u0438",Any:"\u0411\u0443\u0434\u044C-\u044F\u043A\u0438\u0439","Has start date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Has scheduled date":"\u041C\u0430\u0454 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0443 \u0434\u0430\u0442\u0443","Has created date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F","Has completed date":"\u041C\u0430\u0454 \u0434\u0430\u0442\u0443 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Only show tasks that match the completed date.":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043B\u0438\u0448\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F, \u043A\u043E\u0442\u0440\u0456 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u044E\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456\u0439 \u0434\u0430\u0442\u0456.","Has recurrence":"\u041C\u0430\u0454 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","Has property":"\u041C\u0430\u0454 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u044C","No property":"\u0411\u0435\u0437 \u0432\u043B\u0430\u0441\u0442\u0438\u0432\u043E\u0441\u0442\u0456","Unsaved Changes":"\u041D\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0437\u043C\u0456\u043D\u0438","Sort Tasks in Section":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u043C\u0443","Tasks sorted (using settings). Change application needs refinement.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u043E (\u0437\u0433\u0456\u0434\u043D\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C). \u0417\u0430\u0441\u0442\u043E\u0441\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u043C\u0456\u043D \u043F\u043E\u0442\u0440\u0435\u0431\u0443\u0454 \u0434\u043E\u043E\u043F\u0440\u0430\u0446\u044E\u0432\u0430\u043D\u043D\u044F.","Sort Tasks in Entire Document":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432 \u0443\u0441\u044C\u043E\u043C\u0443 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0456","Entire document sorted (using settings).":"\u0412\u0435\u0441\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442 \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u043E (\u0437\u0433\u0456\u0434\u043D\u043E \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u044C).","Tasks already sorted or no tasks found.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0436\u0435 \u0432\u0456\u0434\u0441\u043E\u0440\u0442\u043E\u0432\u0430\u043D\u0456, \u0430\u0431\u043E \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.","Task Handler":"\u041E\u0431\u0440\u043E\u0431\u043D\u0438\u043A \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Show progress bars based on heading":"\u0412\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0430\u0442\u0438 \u043F\u0440\u043E\u0433\u0440\u0435\u0441-\u0431\u0430\u0440 \u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443","Toggle this to enable showing progress bars based on heading.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0456\u043D\u0434\u0456\u043A\u0430\u0442\u043E\u0440\u0430 \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F \u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0443.","# heading":"# \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A","Task Sorting":"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Configure how tasks are sorted in the document.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u044F\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438\u043C\u0443\u0442\u044C\u0441\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0443 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0445.","Enable Task Sorting":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Toggle this to enable commands for sorting tasks.":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438, \u0449\u043E\u0431 \u0443\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u0438 \u0434\u043B\u044F \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Use relative time for date":"\u0412\u0456\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0438\u0439 \u0447\u0430\u0441 \u0434\u043B\u044F \u0434\u0430\u0442\u0438","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043D\u043E\u0441\u043D\u0438\u0439 \u0447\u0430\u0441 \u0434\u0430\u0442 \u0443 \u043F\u0435\u0440\u0435\u043B\u0456\u043A\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: '\u0432\u0447\u043E\u0440\u0430', '\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456', '\u0437\u0430\u0432\u0442\u0440\u0430', '\u0447\u0435\u0440\u0435\u0437 2 \u0434\u043D\u0456', '3 \u043C\u0456\u0441\u044F\u0446\u0456 \u0442\u043E\u043C\u0443' \u0456 \u0442.\u0434.","Ignore all tasks behind heading":"\u0406\u0433\u043D\u043E\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u0456\u0434 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0434\u043B\u044F \u0456\u0433\u043D\u043E\u0440\u0443\u0432\u0430\u043D\u043D\u044F, \u0442\u043E\u0431\u0442\u043E: '## \u041F\u0440\u043E\u0454\u043A\u0442', '## \u0412\u0445\u0456\u0434\u043D\u0456' (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438)","Focus all tasks behind heading":"\u0421\u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u0434\u043B\u044F \u0444\u043E\u043A\u0443\u0441\u0443\u0432\u0430\u043D\u043D\u044F, \u0442\u043E\u0431\u0442\u043E: '## \u041F\u0440\u043E\u0454\u043A\u0442', '## \u0412\u0445\u0456\u0434\u043D\u0456' (\u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438)","Level Name (e.g., common)":"\u041D\u0430\u0437\u0432\u0430 \u0440\u0456\u0432\u043D\u044F, \u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0437\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0439","Delete Level":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","New Level":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u0456\u0432\u0435\u043D\u044C","Reward Name/Text":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430","New Reward":"\u041D\u043E\u0432\u0430 \u043D\u0430\u0433\u043E\u0440\u043E\u0434\u0430",Created:"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u0438\u0439",Updated:"\u041E\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0439","Filter Summary":"\u041F\u0456\u0434\u0441\u0443\u043C\u043E\u043A \u0444\u0456\u043B\u044C\u0442\u0440\u0430","Root condition":"\u041A\u043E\u0440\u0435\u043D\u0435\u0432\u0430 \u0443\u043C\u043E\u0432\u0430","Priority (High to Low)":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u0412\u0438\u0441\u043E\u043A\u0438\u0439 \u0434\u043E \u041D\u0438\u0437\u044C\u043A\u043E\u0433\u043E)","Priority (Low to High)":"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u041D\u0438\u0437\u044C\u043A\u0438\u0439 \u0434\u043E \u0412\u0438\u0441\u043E\u043A\u043E\u0433\u043E)","Due Date (Earliest First)":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0440\u0430\u043D\u0456\u0448\u0438\u0439)","Due Date (Latest First)":"\u0422\u0435\u0440\u043C\u0456\u043D \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0438\u0439)","Scheduled Date (Earliest First)":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0448\u0432\u0438\u0434\u0448\u0430)","Scheduled Date (Latest First)":"\u0417\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u0430 \u0434\u0430\u0442\u0430 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0430)","Start Date (Earliest First)":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u0448\u0432\u0438\u0434\u0448\u0430)","Start Date (Latest First)":"\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443 (\u0441\u043F\u043E\u0447\u0430\u0442\u043A\u0443 \u043D\u0430\u0439\u043F\u0456\u0437\u043D\u0456\u0448\u0430)","Created Date":"\u0414\u0430\u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F",Overview:"\u041E\u0433\u043B\u044F\u0434",Dates:"\u0414\u0430\u0442\u0438","e.g. #tag1, #tag2":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: #\u043C\u0456\u0442\u043A\u04301, #\u043C\u0456\u0442\u043A\u04302","e.g. @home, @work":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: @\u0434\u043E\u043C, @\u0440\u043E\u0431\u043E\u0442\u0430","Recurrence Rule":"\u041F\u0440\u0430\u0432\u0438\u043B\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","e.g. every day, every week":"\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: \u0449\u043E\u0434\u043D\u044F, \u0449\u043E\u0442\u0438\u0436\u043D\u044F","Edit Task":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Load:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438","filter group":"\u0433\u0440\u0443\u043F\u0430 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432",filter:"\u0444\u0456\u043B\u044C\u0442\u0440",Match:"\u0417\u0431\u0456\u0433",All:"\u0412\u0441\u0435","Add filter group":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","filter in this group":"\u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0443 \u0446\u0456\u0439 \u0433\u0440\u0443\u043F\u0456","Duplicate filter group":"\u0414\u0443\u0431\u043B\u044E\u0432\u0430\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432","Remove filter group":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0433\u0440\u0443\u043F\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0456\u0432",OR:"\u0410\u0411\u041E","AND NOT":"\u0422\u0410 \u041D\u0415",AND:"\u0422\u0410","Remove filter":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440",contains:"\u043C\u0456\u0441\u0442\u0438\u0442\u044C","does not contain":"\u043D\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C",is:"\u0454","is not":"\u043D\u0435 \u0454","starts with":"\u043F\u043E\u0447\u0438\u043D\u0430\u0454\u0442\u044C\u0441\u044F \u0437","ends with":"\u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0454\u0442\u044C\u0441\u044F","is empty":"\u043F\u043E\u0440\u043E\u0436\u043D\u0456\u0439","is not empty":"\u043D\u0435 \u043F\u043E\u0440\u043E\u0436\u043D\u0456\u0439","is true":"\u0454 \u0456\u0441\u0442\u0438\u043D\u043E\u044E","is false":"\u0454 \u0445\u0438\u0431\u043D\u0438\u043C","is set":"\u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E","is not set":"\u043D\u0435 \u0432\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E",equals:"\u0434\u043E\u0440\u0456\u0432\u043D\u044E\u0454",NOR:"\u041D\u0415","Group by":"\u0413\u0440\u0443\u043F\u0443\u0432\u0430\u0442\u0438 \u0437\u0430","Select which task property to use for creating columns":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C \u043F\u043E\u043B\u0435 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043B\u044F \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u043D\u043D\u044F \u043F\u0440\u0438 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456\u0432","Hide empty columns":"\u0421\u0445\u043E\u0432\u0430\u0442\u0438 \u043F\u043E\u0440\u043E\u0436\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Hide columns that have no tasks.":"\u0421\u0445\u043E\u0432\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0446\u0456, \u0432 \u044F\u043A\u0438\u0445 \u043D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Default sort field":"\u041F\u043E\u043B\u0435 \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Default field to sort tasks by within each column.":"\u041F\u043E\u043B\u0435 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C \u0434\u043B\u044F \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0443 \u043A\u043E\u0436\u043D\u043E\u043C\u0443 \u0441\u0442\u043E\u0432\u043F\u0446\u0456.","Default sort order":"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C","Default order to sort tasks within each column.":"\u041F\u043E\u0440\u044F\u0434\u043E\u043A \u0441\u043E\u0440\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0443 \u043A\u043E\u0436\u043D\u043E\u043C\u0443 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u0437\u0430 \u0437\u0430\u043C\u043E\u0432\u0447\u0443\u0432\u0430\u043D\u043D\u044F\u043C.","Custom Columns":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Configure custom columns for the selected grouping property":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u0434\u043B\u044F \u0432\u0438\u0431\u0440\u0430\u043D\u043E\u0433\u043E \u043F\u043E\u043B\u044F \u0433\u0440\u0443\u043F\u0443\u0432\u0430\u043D\u043D\u044F","No custom columns defined. Add columns below.":"\u041A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044C\u043A\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u043D\u0435 \u0432\u0438\u0437\u043D\u0430\u0447\u0435\u043D\u0456. \u0414\u043E\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u043E\u0432\u043F\u0446\u0456 \u043D\u0438\u0436\u0447\u0435.","Column Title":"\u041D\u0430\u0437\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0446\u044F",Value:"\u0417\u043D\u0430\u0447\u0435\u043D\u043D\u044F","Remove Column":"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","Add Column":"\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","New Column":"\u041D\u043E\u0432\u0438\u0439 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C","Reset Columns":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0446\u0456","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u043C\u0430\u0442\u0438 \u0446\u0435\u0439 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442 (\u043D\u0430\u043F\u0440\u0438\u043A\u043B\u0430\u0434: 1, 2, 3). \u0422\u0430\u043A\u043E\u0436 \u043C\u043E\u0436\u043D\u0430 \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0432\u0430\u0442\u0438 'none', \u0434\u043B\u044F \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u0457 \u0437\u0430\u0432\u0434\u0430\u043D\u044C \u0431\u0435\u0437 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443.",Filter:"\u0424\u0456\u043B\u044C\u0442\u0440","Reset Filter":"\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0444\u0456\u043B\u044C\u0442\u0440","Saved Filters":"\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0456 \u0444\u0456\u043B\u044C\u0442\u0440\u0438","Manage Saved Filters":"\u041A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043D\u0438\u043C\u0438 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u043C\u0438","Filter applied: ":"\u0417\u0430\u0441\u0442\u043E\u0441\u043E\u0432\u0430\u043D\u043E \u0444\u0456\u043B\u044C\u0442\u0440: ","Recurrence date calculation":"\u041E\u0431\u0447\u0438\u0441\u043B\u0435\u043D\u043D\u044F \u0434\u0430\u0442\u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0435\u043D\u043D\u044F","Choose how to calculate the next date for recurring tasks":"\u041E\u0431\u0435\u0440\u0456\u0442\u044C, \u044F\u043A \u0440\u043E\u0437\u0440\u0430\u0445\u0443\u0432\u0430\u0442\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0443 \u0434\u0430\u0442\u0443 \u0434\u043B\u044F \u043F\u043E\u0432\u0442\u043E\u0440\u044E\u0432\u0430\u043D\u0438\u0445 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Based on due date":"\u0417\u0433\u0456\u0434\u043D\u043E \u0437 \u0442\u0435\u0440\u043C\u0456\u043D\u043E\u043C \u0432\u0438\u043A\u043E\u043D\u0430\u043D\u043D\u044F","Based on scheduled date":"\u0417\u0430 \u0437\u0430\u043F\u043B\u0430\u043D\u043E\u0432\u0430\u043D\u043E\u044E \u0434\u0430\u0442\u043E\u044E","Based on current date":"\u0417\u0430 \u043F\u043E\u0442\u043E\u0447\u043D\u043E\u044E \u0434\u0430\u0442\u043E\u044E","Task Gutter":"\u041F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Configure the task gutter.":"\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u043F\u0430\u043D\u0435\u043B\u044C \u0437\u0430\u0432\u0434\u0430\u043D\u044C.","Enable task gutter":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F","Toggle this to enable the task gutter.":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0443\u0432\u0456\u043C\u043A\u043D\u0435\u043D\u043D\u044F \u0431\u0456\u0447\u043D\u043E\u0457 \u043F\u0430\u043D\u0435\u043B\u0456 \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F.","Line Number":"\u041D\u043E\u043C\u0435\u0440 \u0440\u044F\u0434\u043A\u0430","Tasks Plugin Detected":"\u0412\u0438\u044F\u0432\u043B\u0435\u043D\u043E \u0434\u043E\u0434\u0430\u0442\u043E\u043A Tasks","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u0423\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u043F\u043E\u0442\u043E\u0447\u043D\u0438\u043C \u0441\u0442\u0430\u0442\u0443\u0441\u043E\u043C \u0442\u0430 \u0434\u0430\u0442\u0430\u043C\u0438 \u043C\u043E\u0436\u0443\u0442\u044C \u043A\u043E\u043D\u0444\u043B\u0456\u043A\u0442\u0443\u0432\u0430\u0442\u0438 \u0437 \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u043C Tasks. \u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 ","compatibility documentation":"\u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0456\u044F \u043F\u0440\u043E \u0441\u0443\u043C\u0456\u0441\u043D\u0456\u0441\u0442\u044C"," for more information.":" \u0434\u043B\u044F \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E\u0457 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457.","Auto Date Manager":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0439 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 \u0434\u0430\u0442","Automatically manage dates based on task status changes":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0439\u0442\u0435 \u0434\u0430\u0442\u0430\u043C\u0438 \u043D\u0430 \u043E\u0441\u043D\u043E\u0432\u0456 \u0437\u043C\u0456\u043D \u0441\u0442\u0430\u043D\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","Enable auto date manager":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0438\u0439 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 \u0434\u0430\u0442","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u0423\u0432\u0456\u043C\u043A\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0456\u0457 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E\u0433\u043E \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u0434\u0430\u0442\u0430\u043C\u0438 \u043F\u0440\u0438 \u0437\u043C\u0456\u043D\u0456 \u0441\u0442\u0430\u043D\u0443 \u0437\u0430\u0432\u0434\u0430\u043D\u044C. \u0414\u0430\u0442\u0438 \u0431\u0443\u0434\u0443\u0442\u044C \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438\u0441\u044F/\u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438\u0441\u044F \u0437\u0433\u0456\u0434\u043D\u043E \u0437 \u0432\u043A\u0430\u0437\u0430\u043D\u0438\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u043E\u043C \u043C\u0435\u0442\u0430\u0434\u0430\u043D\u0438\u0445 (\u0424\u043E\u0440\u043C\u0430\u0442 emoji, \u0430\u0431\u043E \u0424\u043E\u0440\u043C\u0430\u0442 Dataview).","Manage completion dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442\u0430\u043C\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0456, \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.","Manage start dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0430\u043C\u0438 \u043F\u043E\u0447\u0430\u0442\u043A\u0443","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0443 \u043F\u043E\u0447\u0430\u0442\u043A\u0443, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043F\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u043E '\u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0456', \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.","Manage cancelled dates":"\u041A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u043C\u0438 \u0434\u0430\u0442\u0430\u043C\u0438","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u043E \u0434\u043E\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u0430\u0442\u0438 \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u043D\u043D\u044F, \u043A\u043E\u043B\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0432\u0432\u0430\u0436\u0430\u044E\u0442\u044C\u0441\u044F \u043F\u043E\u043A\u0438\u043D\u0443\u0442\u0438\u043C\u0438, \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u044F\u0442\u0438 \u0457\u0445 \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u043D\u043D\u0456 \u0432 \u0456\u043D\u0448\u0456 \u0441\u0442\u0430\u0442\u0443\u0441\u0438.",Beta:"\u0411\u0435\u0442\u0430","Beta Test Features":"\u0424\u0443\u043D\u043A\u0446\u0456\u0457 \u0431\u0435\u0442\u0430-\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u0415\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457, \u044F\u043A\u0456 \u043D\u0430\u0440\u0430\u0437\u0456 \u0437\u043D\u0430\u0445\u043E\u0434\u044F\u0442\u044C\u0441\u044F \u043D\u0430 \u0441\u0442\u0430\u0434\u0456\u0457 \u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F. \u0426\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u043C\u043E\u0436\u0443\u0442\u044C \u0431\u0443\u0442\u0438 \u043D\u0435\u0441\u0442\u0430\u0431\u0456\u043B\u044C\u043D\u0438\u043C\u0438 \u0442\u0430 \u043C\u043E\u0436\u0443\u0442\u044C \u0437\u043C\u0456\u043D\u044E\u0432\u0430\u0442\u0438\u0441\u044F, \u0430\u0431\u043E \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u0438\u043C\u0438 \u0432 \u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456\u0445 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F\u0445.","Beta Features Warning":"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u0436\u0435\u043D\u043D\u044F \u043F\u0440\u043E \u0431\u0435\u0442\u0430-\u0444\u0443\u043D\u043A\u0446\u0456\u0457","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u0426\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u0435\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0442\u0430 \u043C\u043E\u0436\u0443\u0442\u044C \u0431\u0443\u0442\u0438 \u043D\u0435\u0441\u0442\u0430\u0431\u0456\u043B\u044C\u043D\u0438\u043C\u0438. \u0412\u043E\u043D\u0438 \u043C\u043E\u0436\u0443\u0442\u044C \u0441\u0443\u0442\u0442\u0454\u0432\u043E \u0437\u043C\u0456\u043D\u0438\u0442\u0438\u0441\u044F, \u0430\u0431\u043E \u0431\u0443\u0442\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u0438\u043C\u0438 \u0432 \u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456\u0445 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F\u0445 \u0447\u0435\u0440\u0435\u0437 \u0437\u043C\u0456\u043D\u0438 API Obsidian, \u0430\u0431\u043E \u0456\u043D\u0448\u0456 \u0444\u0430\u043A\u0442\u043E\u0440\u0438. \u0411\u0443\u0434\u044C \u043B\u0430\u0441\u043A\u0430, \u0432\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u043E\u0432\u0443\u0439\u0442\u0435 \u0437 \u043E\u0431\u0435\u0440\u0435\u0436\u043D\u0456\u0441\u0442\u044E \u0442\u0430 \u043D\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u0456\u0434\u0433\u0443\u043A\u0438, \u0449\u043E\u0431 \u0434\u043E\u043F\u043E\u043C\u043E\u0433\u0442\u0438 \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0440\u043E\u0431\u043E\u0442\u0443.","Base View":"\u0412\u0438\u0433\u043B\u044F\u0434 \u0411\u0430\u0437","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0456 \u043C\u043E\u0436\u043B\u0438\u0432\u043E\u0441\u0442\u0456 \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u043E\u043C, \u044F\u043A\u0456 \u0434\u043E\u043F\u043E\u0432\u043D\u044E\u044E\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u0438\u0439 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434 Task Genius \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u0438\u043C \u0444\u0443\u043D\u043A\u0446\u0456\u043E\u043D\u0430\u043B\u043E\u043C.","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.","Enable Base View":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0433\u043B\u044F\u0434 \u0411\u0430\u0437","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0435\u043A\u0441\u043F\u0435\u0440\u0438\u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457 \u043F\u0435\u0440\u0435\u0433\u043B\u044F\u0434\u0443 \u0411\u0430\u0437. \u0424\u0443\u043D\u043A\u0446\u0456\u044F \u0437\u0430\u0431\u0435\u0437\u043F\u0435\u0447\u0443\u0454 \u0432\u0434\u043E\u0441\u043A\u043E\u043D\u0430\u043B\u0435\u043D\u0456 \u043C\u043E\u0436\u043B\u0438\u0432\u043E\u0441\u0442\u0456 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F, \u0430\u043B\u0435 \u0457\u0457 \u043C\u043E\u0436\u0443\u0442\u044C \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0437 \u043F\u043E\u0434\u0430\u043B\u044C\u0448\u0438\u043C\u0438 \u0437\u043C\u0456\u043D\u0430\u043C\u0438 API Obsidian.",Enable:"\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438","Beta Feedback":"\u0412\u0456\u0434\u0433\u0443\u043A \u043F\u0440\u043E \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0456\u044E","Help improve these features by providing feedback on your experience.":"\u0414\u043E\u043F\u043E\u043C\u043E\u0436\u0456\u0442\u044C \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0446\u0456 \u0444\u0443\u043D\u043A\u0446\u0456\u0457, \u043D\u0430\u0434\u0456\u0441\u043B\u0430\u0432\u0448\u0438 \u0432\u0456\u0434\u0433\u0443\u043A \u043F\u0440\u043E \u0441\u0432\u0456\u0439 \u0434\u043E\u0441\u0432\u0456\u0434.","Report Issues":"\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u0438\u0442\u0438 \u043F\u0440\u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u042F\u043A\u0449\u043E \u0443 \u0432\u0430\u0441 \u0432\u0438\u043D\u0438\u043A\u043B\u0438 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0438 \u0437 \u0431\u0435\u0442\u0430-\u0444\u0443\u043D\u043A\u0446\u0456\u044F\u043C\u0438, \u043F\u043E\u0432\u0456\u0434\u043E\u043C\u0442\u0435 \u043F\u0440\u043E \u043D\u0438\u0445, \u0449\u043E\u0431 \u043F\u043E\u043A\u0440\u0430\u0449\u0438\u0442\u0438 \u0434\u043E\u0434\u0430\u0442\u043E\u043A.","Report Issue":"\u0417\u0432\u0456\u0442\u0443\u0432\u0430\u0442\u0438 \u043F\u0440\u043E \u043F\u043E\u043C\u0438\u043B\u043A\u0443",Table:"\u0422\u0430\u0431\u043B\u0438\u0446\u044F","No Priority":"\u041D\u0435\u043C\u0430\u0454 \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443","Click to select date":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0438\u0431\u043E\u0440\u0443 \u0434\u0430\u0442\u0438","Enter tags separated by commas":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043C\u0456\u0442\u043A\u0438, \u0440\u043E\u0437\u0434\u0456\u043B\u0435\u043D\u0456 \u043A\u043E\u043C\u0430\u043C\u0438","Enter project name":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043D\u0430\u0437\u0432\u0443 \u043F\u0440\u043E\u0454\u043A\u0442\u0443","Enter context":"\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442","Invalid value":"\u041D\u0435\u0434\u0456\u0439\u0441\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F","No tasks":"\u041D\u0435\u043C\u0430\u0454 \u0437\u0430\u0432\u0434\u0430\u043D\u044C","1 task":"1 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",Columns:"\u0421\u0442\u043E\u0432\u043F\u0446\u0456","Toggle column visibility":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u0432\u0438\u0434\u0438\u043C\u0456\u0441\u0442\u044C \u0441\u0442\u043E\u0432\u043F\u0446\u044F","Switch to List Mode":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438\u0441\u044F \u0432 \u0440\u0435\u0436\u0438\u043C \u0441\u043F\u0438\u0441\u043A\u0443","Switch to Tree Mode":"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438\u0441\u044F \u0432 \u0440\u0435\u0436\u0438\u043C \u0434\u0435\u0440\u0435\u0432\u0430",Collapse:"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438",Expand:"\u0420\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438","Collapse subtasks":"\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0434\u0430\u0447\u0456","Expand subtasks":"\u0420\u043E\u0437\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0456\u0434\u0437\u0430\u0434\u0430\u0447\u0456","Click to change status":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0437\u043C\u0456\u043D\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0443","Click to set priority":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u043A\u0430\u0437\u0430\u043D\u043D\u044F \u043F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442\u0443",Yesterday:"\u0412\u0447\u043E\u0440\u0430","Click to edit date":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u0430\u0442\u0438","No tags":"\u041C\u0456\u0442\u043E\u043A \u043D\u0435\u043C\u0430\u0454","Click to open file":"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0442\u044F \u0444\u0430\u0439\u043B\u0443","No tasks found":"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u0456","Completed Date":"\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F","Loading...":"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F...","Advanced Filtering":"\u0420\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0435 \u0444\u0456\u043B\u044C\u0442\u0440\u0443\u0432\u0430\u043D\u043D\u044F","Use advanced multi-group filtering with complex conditions":"\u0412\u0438\u043A\u043E\u0440\u0438\u0441\u0442\u0430\u0442\u0438 \u0440\u043E\u0437\u0448\u0438\u0440\u0435\u043D\u0443 \u0444\u0456\u043B\u044C\u0442\u0440\u0430\u0446\u0456\u044E \u0437\u0456 \u0441\u043A\u043B\u0430\u0434\u043D\u0438\u043C\u0438 \u0443\u043C\u043E\u0432\u0430\u043C\u0438","Auto-moved":"Auto-moved","tasks to":"tasks to","Failed to auto-move tasks:":"Failed to auto-move tasks:","Workflow created successfully":"Workflow created successfully","No task structure found at cursor position":"No task structure found at cursor position","Use similar existing workflow":"Use similar existing workflow","Create new workflow":"Create new workflow","No workflows defined. Create a workflow first.":"No workflows defined. Create a workflow first.","Workflow task created":"Workflow task created","Task converted to workflow root":"Task converted to workflow root","Failed to convert task":"Failed to convert task","No workflows to duplicate":"No workflows to duplicate",Duplicate:"Duplicate","Workflow duplicated and saved":"Workflow duplicated and saved","Workflow created from task structure":"Workflow created from task structure","Create Quick Workflow":"Create Quick Workflow","Convert Task to Workflow":"Convert Task to Workflow","Convert to Workflow Root":"Convert to Workflow Root","Start Workflow Here":"Start Workflow Here","Duplicate Workflow":"Duplicate Workflow","Simple Linear Workflow":"Simple Linear Workflow","A basic linear workflow with sequential stages":"A basic linear workflow with sequential stages","To Do":"To Do",Done:"Done","Project Management":"Project Management",Coding:"Coding","Research Process":"Research Process","Academic or professional research workflow":"Academic or professional research workflow","Literature Review":"Literature Review","Data Collection":"Data Collection",Analysis:"Analysis",Writing:"Writing",Published:"Published","Custom Workflow":"Custom Workflow","Create a custom workflow from scratch":"Create a custom workflow from scratch","Quick Workflow Creation":"Quick Workflow Creation","Workflow Template":"Workflow Template","Choose a template to start with or create a custom workflow":"Choose a template to start with or create a custom workflow","Workflow Name":"Workflow Name","A descriptive name for your workflow":"A descriptive name for your workflow","Enter workflow name":"Enter workflow name","Unique identifier (auto-generated from name)":"Unique identifier (auto-generated from name)","Optional description of the workflow purpose":"Optional description of the workflow purpose","Describe your workflow...":"Describe your workflow...","Preview of workflow stages (edit after creation for advanced options)":"Preview of workflow stages (edit after creation for advanced options)","Add Stage":"Add Stage","No stages defined. Choose a template or add stages manually.":"No stages defined. Choose a template or add stages manually.","Remove stage":"Remove stage","Create Workflow":"Create Workflow","Please provide a workflow name and ID":"Please provide a workflow name and ID","Please add at least one stage to the workflow":"Please add at least one stage to the workflow",Discord:"Discord","Chat with us":"Chat with us","Open Discord":"Open Discord","Task Genius icons are designed by":"Task Genius icons are designed by","Task Genius Icons":"Task Genius Icons","ICS Calendar Integration":"ICS Calendar Integration","Configure external calendar sources to display events in your task views.":"Configure external calendar sources to display events in your task views.","Add New Calendar Source":"Add New Calendar Source","Global Settings":"Global Settings","Enable Background Refresh":"Enable Background Refresh","Automatically refresh calendar sources in the background":"Automatically refresh calendar sources in the background","Global Refresh Interval":"Global Refresh Interval","Default refresh interval for all sources (minutes)":"Default refresh interval for all sources (minutes)","Maximum Cache Age":"Maximum Cache Age","How long to keep cached data (hours)":"How long to keep cached data (hours)","Network Timeout":"Network Timeout","Request timeout in seconds":"Request timeout in seconds","Max Events Per Source":"Max Events Per Source","Maximum number of events to load from each source":"Maximum number of events to load from each source","Default Event Color":"Default Event Color","Default color for events without a specific color":"Default color for events without a specific color","Calendar Sources":"Calendar Sources","No calendar sources configured. Add a source to get started.":"No calendar sources configured. Add a source to get started.","ICS Enabled":"ICS Enabled","ICS Disabled":"ICS Disabled",URL:"URL",Refresh:"Refresh",min:"min",Color:"Color","Edit this calendar source":"Edit this calendar source",Sync:"Sync","Sync this calendar source now":"Sync this calendar source now","Syncing...":"Syncing...","Sync completed successfully":"Sync completed successfully","Sync failed: ":"Sync failed: ",Disable:"Disable","Disable this source":"Disable this source","Enable this source":"Enable this source","Delete this calendar source":"Delete this calendar source","Are you sure you want to delete this calendar source?":"Are you sure you want to delete this calendar source?","Edit ICS Source":"Edit ICS Source","Add ICS Source":"Add ICS Source","ICS Source Name":"ICS Source Name","Display name for this calendar source":"Display name for this calendar source","My Calendar":"My Calendar","ICS URL":"ICS URL","URL to the ICS/iCal file":"URL to the ICS/iCal file","Whether this source is active":"Whether this source is active","Refresh Interval":"Refresh Interval","How often to refresh this source (minutes)":"How often to refresh this source (minutes)","Color for events from this source (optional)":"Color for events from this source (optional)","Show Type":"Show Type","How to display events from this source in calendar views":"How to display events from this source in calendar views",Event:"Event",Badge:"Badge","Show All-Day Events":"Show All-Day Events","Include all-day events from this source":"Include all-day events from this source","Show Timed Events":"Show Timed Events","Include timed events from this source":"Include timed events from this source","Authentication (Optional)":"Authentication (Optional)","Authentication Type":"Authentication Type","Type of authentication required":"Type of authentication required","ICS Auth None":"ICS Auth None","Basic Auth":"Basic Auth","Bearer Token":"Bearer Token","Custom Headers":"Custom Headers","Text Replacements":"Text Replacements","Configure rules to modify event text using regular expressions":"Configure rules to modify event text using regular expressions","No text replacement rules configured":"No text replacement rules configured",Enabled:"Enabled",Disabled:"Disabled",Target:"Target",Pattern:"Pattern",Replacement:"Replacement","Are you sure you want to delete this text replacement rule?":"Are you sure you want to delete this text replacement rule?","Add Text Replacement Rule":"Add Text Replacement Rule","ICS Username":"ICS Username","ICS Password":"ICS Password","ICS Bearer Token":"ICS Bearer Token","JSON object with custom headers":"JSON object with custom headers","Holiday Configuration":"Holiday Configuration","Configure how holiday events are detected and displayed":"Configure how holiday events are detected and displayed","Enable Holiday Detection":"Enable Holiday Detection","Automatically detect and group holiday events":"Automatically detect and group holiday events","Status Mapping":"Status Mapping","Configure how ICS events are mapped to task statuses":"Configure how ICS events are mapped to task statuses","Enable Status Mapping":"Enable Status Mapping","Automatically map ICS events to specific task statuses":"Automatically map ICS events to specific task statuses","Grouping Strategy":"Grouping Strategy","How to handle consecutive holiday events":"How to handle consecutive holiday events","Show All Events":"Show All Events","Show First Day Only":"Show First Day Only","Show Summary":"Show Summary","Show First and Last":"Show First and Last","Maximum Gap Days":"Maximum Gap Days","Maximum days between events to consider them consecutive":"Maximum days between events to consider them consecutive","Show in Forecast":"Show in Forecast","Whether to show holiday events in forecast view":"Whether to show holiday events in forecast view","Show in Calendar":"Show in Calendar","Whether to show holiday events in calendar view":"Whether to show holiday events in calendar view","Detection Patterns":"Detection Patterns","Summary Patterns":"Summary Patterns","Regex patterns to match in event titles (one per line)":"Regex patterns to match in event titles (one per line)",Keywords:"Keywords","Keywords to detect in event text (one per line)":"Keywords to detect in event text (one per line)",Categories:"Categories","Event categories that indicate holidays (one per line)":"Event categories that indicate holidays (one per line)","Group Display Format":"Group Display Format","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}","Override ICS Status":"Override ICS Status","Override original ICS event status with mapped status":"Override original ICS event status with mapped status","Timing Rules":"Timing Rules","Past Events Status":"Past Events Status","Status for events that have already ended":"Status for events that have already ended","Status Incomplete":"Status Incomplete","Status Complete":"Status Complete","Status Cancelled":"Status Cancelled","Status In Progress":"Status In Progress","Status Question":"Status Question","Current Events Status":"Current Events Status","Status for events happening today":"Status for events happening today","Future Events Status":"Future Events Status","Status for events in the future":"Status for events in the future","Property Rules":"Property Rules","Optional rules based on event properties (higher priority than timing rules)":"Optional rules based on event properties (higher priority than timing rules)","Holiday Status":"Holiday Status","Status for events detected as holidays":"Status for events detected as holidays","Use timing rules":"Use timing rules","Category Mapping":"Category Mapping","Map specific categories to statuses (format: category:status, one per line)":"Map specific categories to statuses (format: category:status, one per line)","Please enter a name for the source":"Please enter a name for the source","Please enter a URL for the source":"Please enter a URL for the source","Please enter a valid URL":"Please enter a valid URL","Edit Text Replacement Rule":"Edit Text Replacement Rule","Rule Name":"Rule Name","Descriptive name for this replacement rule":"Descriptive name for this replacement rule","Remove Meeting Prefix":"Remove Meeting Prefix","Whether this rule is active":"Whether this rule is active","Target Field":"Target Field","Which field to apply the replacement to":"Which field to apply the replacement to","Summary/Title":"Summary/Title",Location:"Location","All Fields":"All Fields","Pattern (Regular Expression)":"Pattern (Regular Expression)","Regular expression pattern to match. Use parentheses for capture groups.":"Regular expression pattern to match. Use parentheses for capture groups.","Text to replace matches with. Use $1, $2, etc. for capture groups.":"Text to replace matches with. Use $1, $2, etc. for capture groups.","Regex Flags":"Regex Flags","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)",Examples:"Examples","Remove prefix":"Remove prefix","Replace room numbers":"Replace room numbers","Swap words":"Swap words","Test Rule":"Test Rule","Output: ":"Output: ","Test Input":"Test Input","Enter text to test the replacement rule":"Enter text to test the replacement rule","Please enter a name for the rule":"Please enter a name for the rule","Please enter a pattern":"Please enter a pattern","Invalid regular expression pattern":"Invalid regular expression pattern","Enhanced Project Configuration":"Enhanced Project Configuration","Configure advanced project detection and management features":"Configure advanced project detection and management features","Enable enhanced project features":"Enable enhanced project features","Enable path-based, metadata-based, and config file-based project detection":"Enable path-based, metadata-based, and config file-based project detection","Path-based Project Mappings":"Path-based Project Mappings","Configure project names based on file paths":"Configure project names based on file paths","No path mappings configured yet.":"No path mappings configured yet.",Mapping:"Mapping","Path pattern (e.g., Projects/Work)":"Path pattern (e.g., Projects/Work)","Add Path Mapping":"Add Path Mapping","Metadata-based Project Configuration":"Metadata-based Project Configuration","Configure project detection from file frontmatter":"Configure project detection from file frontmatter","Enable metadata project detection":"Enable metadata project detection","Detect project from file frontmatter metadata":"Detect project from file frontmatter metadata","Metadata key":"Metadata key","The frontmatter key to use for project name":"The frontmatter key to use for project name","Inherit other metadata fields from file frontmatter":"Inherit other metadata fields from file frontmatter","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.","Project Configuration File":"Project Configuration File","Configure project detection from project config files":"Configure project detection from project config files","Enable config file project detection":"Enable config file project detection","Detect project from project configuration files":"Detect project from project configuration files","Config file name":"Config file name","Name of the project configuration file":"Name of the project configuration file","Search recursively":"Search recursively","Search for config files in parent directories":"Search for config files in parent directories","Metadata Mappings":"Metadata Mappings","Configure how metadata fields are mapped and transformed":"Configure how metadata fields are mapped and transformed","No metadata mappings configured yet.":"No metadata mappings configured yet.","Source key (e.g., proj)":"Source key (e.g., proj)","Select target field":"Select target field","Add Metadata Mapping":"Add Metadata Mapping","Default Project Naming":"Default Project Naming","Configure fallback project naming when no explicit project is found":"Configure fallback project naming when no explicit project is found","Enable default project naming":"Enable default project naming","Use default naming strategy when no project is explicitly defined":"Use default naming strategy when no project is explicitly defined","Naming strategy":"Naming strategy","Strategy for generating default project names":"Strategy for generating default project names","Use filename":"Use filename","Use folder name":"Use folder name","Use metadata field":"Use metadata field","Metadata field to use as project name":"Metadata field to use as project name","Enter metadata key (e.g., project-name)":"Enter metadata key (e.g., project-name)","Strip file extension":"Strip file extension","Remove file extension from filename when using as project name":"Remove file extension from filename when using as project name","Target type":"Target type","Choose whether to capture to a fixed file or daily note":"Choose whether to capture to a fixed file or daily note","Fixed file":"Fixed file","Daily note":"Daily note","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"Sync with Daily Notes plugin","Automatically sync settings from the Daily Notes plugin":"Automatically sync settings from the Daily Notes plugin","Sync now":"Sync now","Daily notes settings synced successfully":"Daily notes settings synced successfully","Daily Notes plugin is not enabled":"Daily Notes plugin is not enabled","Failed to sync daily notes settings":"Failed to sync daily notes settings","Date format for daily notes (e.g., YYYY-MM-DD)":"Date format for daily notes (e.g., YYYY-MM-DD)","Daily note folder":"Daily note folder","Folder path for daily notes (leave empty for root)":"Folder path for daily notes (leave empty for root)","Daily note template":"Daily note template","Template file path for new daily notes (optional)":"Template file path for new daily notes (optional)","Target heading":"Target heading","Optional heading to append content under (leave empty to append to file)":"Optional heading to append content under (leave empty to append to file)","How to add captured content to the target location":"How to add captured content to the target location",Append:"Append",Prepend:"Prepend",Replace:"Replace","Enable auto-move for completed tasks":"Enable auto-move for completed tasks","Automatically move completed tasks to a default file without manual selection.":"Automatically move completed tasks to a default file without manual selection.","Default target file":"Default target file","Default file to move completed tasks to (e.g., 'Archive.md')":"Default file to move completed tasks to (e.g., 'Archive.md')","Default insertion mode":"Default insertion mode","Where to insert completed tasks in the target file":"Where to insert completed tasks in the target file","Default heading name":"Default heading name","Heading name to insert tasks after (will be created if it doesn't exist)":"Heading name to insert tasks after (will be created if it doesn't exist)","Enable auto-move for incomplete tasks":"Enable auto-move for incomplete tasks","Automatically move incomplete tasks to a default file without manual selection.":"Automatically move incomplete tasks to a default file without manual selection.","Default target file for incomplete tasks":"Default target file for incomplete tasks","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"Default file to move incomplete tasks to (e.g., 'Backlog.md')","Default insertion mode for incomplete tasks":"Default insertion mode for incomplete tasks","Where to insert incomplete tasks in the target file":"Where to insert incomplete tasks in the target file","Default heading name for incomplete tasks":"Default heading name for incomplete tasks","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"Heading name to insert incomplete tasks after (will be created if it doesn't exist)","Other settings":"Other settings","Use Task Genius icons":"Use Task Genius icons","Use Task Genius icons for task statuses":"Use Task Genius icons for task statuses","Timeline Sidebar":"Timeline Sidebar","Enable Timeline Sidebar":"Enable Timeline Sidebar","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.","Auto-open on startup":"Auto-open on startup","Automatically open the timeline sidebar when Obsidian starts.":"Automatically open the timeline sidebar when Obsidian starts.","Show completed tasks":"Show completed tasks","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.","Focus mode by default":"Focus mode by default","Enable focus mode by default, which highlights today's events and dims past/future events.":"Enable focus mode by default, which highlights today's events and dims past/future events.","Maximum events to show":"Maximum events to show","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"Maximum number of events to display in the timeline. Higher numbers may affect performance.","Open Timeline Sidebar":"Open Timeline Sidebar","Click to open the timeline sidebar view.":"Click to open the timeline sidebar view.","Open Timeline":"Open Timeline","Timeline sidebar opened":"Timeline sidebar opened","Task Parser Configuration":"Task Parser Configuration","Configure how task metadata is parsed and recognized.":"Configure how task metadata is parsed and recognized.","Project tag prefix":"Project tag prefix","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.","Context tag prefix":"Context tag prefix","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.","Area tag prefix":"Area tag prefix","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.","Format Examples:":"Format Examples:",Area:"Area","always uses @ prefix":"always uses @ prefix","File Parsing Configuration":"File Parsing Configuration","Configure how to extract tasks from file metadata and tags.":"Configure how to extract tasks from file metadata and tags.","Enable file metadata parsing":"Enable file metadata parsing","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.","File metadata parsing enabled. Rebuilding task index...":"File metadata parsing enabled. Rebuilding task index...","Task index rebuilt successfully":"Task index rebuilt successfully","Failed to rebuild task index":"Failed to rebuild task index","Metadata fields to parse as tasks":"Metadata fields to parse as tasks","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)","Task content from metadata":"Task content from metadata","Which metadata field to use as task content. If not found, will use filename.":"Which metadata field to use as task content. If not found, will use filename.","Default task status":"Default task status","Default status for tasks created from metadata (space for incomplete, x for complete)":"Default status for tasks created from metadata (space for incomplete, x for complete)","Enable tag-based task parsing":"Enable tag-based task parsing","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.","Tags to parse as tasks":"Tags to parse as tasks","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)","Enable worker processing":"Enable worker processing","Use background worker for file parsing to improve performance. Recommended for large vaults.":"Use background worker for file parsing to improve performance. Recommended for large vaults.","Enable inline editor":"Enable inline editor","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.","Auto-assigned from path":"Auto-assigned from path","Auto-assigned from file metadata":"Auto-assigned from file metadata","Auto-assigned from config file":"Auto-assigned from config file","Auto-assigned":"Auto-assigned","This project is automatically assigned and cannot be changed":"This project is automatically assigned and cannot be changed","You can override the auto-assigned project by entering a different value":"You can override the auto-assigned project by entering a different value","Auto from path":"Auto from path","Auto from metadata":"Auto from metadata","Auto from config":"Auto from config","You can override the auto-assigned project":"You can override the auto-assigned project",Timeline:"Timeline","Go to today":"Go to today","Focus on today":"Focus on today","What do you want to do today?":"What do you want to do today?","More options":"More options","No events to display":"No events to display","Go to task":"Go to task",to:"to","Hide weekends":"Hide weekends","Hide weekend columns (Saturday and Sunday) in calendar views.":"Hide weekend columns (Saturday and Sunday) in calendar views.","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"Hide weekend columns (Saturday and Sunday) in forecast calendar.",Repeatable:"Repeatable",Final:"Final",Sequential:"Sequential","Current: ":"Current: ",completed:"completed","Convert to workflow template":"Convert to workflow template","Start workflow here":"Start workflow here","Create quick workflow":"Create quick workflow","Workflow not found":"Workflow not found","Stage not found":"Stage not found","Current stage":"Current stage",Type:"Type",Next:"Next","Start workflow":"Start workflow",Continue:"Continue","Complete substage and move to":"Complete substage and move to","Add new task":"Add new task","Add new sub-task":"Add new sub-task","Auto-move completed subtasks to default file":"Auto-move completed subtasks to default file","Auto-move direct completed subtasks to default file":"Auto-move direct completed subtasks to default file","Auto-move all subtasks to default file":"Auto-move all subtasks to default file","Auto-move incomplete subtasks to default file":"Auto-move incomplete subtasks to default file","Auto-move direct incomplete subtasks to default file":"Auto-move direct incomplete subtasks to default file","Convert task to workflow template":"Convert task to workflow template","Convert current task to workflow root":"Convert current task to workflow root","Duplicate workflow":"Duplicate workflow","Workflow quick actions":"Workflow quick actions","Views & Index":"Views & Index","Progress Display":"Progress Display",Workflows:"Workflows","Dates & Priority":"Dates & Priority",Habits:"Habits","Calendar Sync":"Calendar Sync","Beta Features":"Beta Features","Core Settings":"Core Settings","Display & Progress":"Display & Progress","Task Management":"Task Management","Workflow & Automation":"Workflow & Automation",Gamification:"Gamification",Integration:"Integration",Advanced:"Advanced",Information:"Information","Workflow generated from task structure":"Workflow generated from task structure","Workflow based on existing pattern":"Workflow based on existing pattern",Matrix:"Matrix","More actions":"More actions","Open in file":"Open in file","Copy task":"Copy task","Mark as urgent":"Mark as urgent","Mark as important":"Mark as important","Overdue by {days} days":"Overdue by {days} days","Due today":"Due today","Due tomorrow":"Due tomorrow","Due in {days} days":"Due in {days} days","Loading tasks...":"Loading tasks...",task:"task","No crisis tasks - great job!":"No crisis tasks - great job!","No planning tasks - consider adding some goals":"No planning tasks - consider adding some goals","No interruptions - focus time!":"No interruptions - focus time!","No time wasters - excellent focus!":"No time wasters - excellent focus!","No tasks in this quadrant":"No tasks in this quadrant","Handle immediately. These are critical tasks that need your attention now.":"Handle immediately. These are critical tasks that need your attention now.","Schedule and plan. These tasks are key to your long-term success.":"Schedule and plan. These tasks are key to your long-term success.","Delegate if possible. These tasks are urgent but don't require your specific skills.":"Delegate if possible. These tasks are urgent but don't require your specific skills.","Eliminate or minimize. These tasks may be time wasters.":"Eliminate or minimize. These tasks may be time wasters.","Review and categorize these tasks appropriately.":"Review and categorize these tasks appropriately.","Urgent & Important":"Urgent & Important","Do First - Crisis & emergencies":"Do First - Crisis & emergencies","Not Urgent & Important":"Not Urgent & Important","Schedule - Planning & development":"Schedule - Planning & development","Urgent & Not Important":"Urgent & Not Important","Delegate - Interruptions & distractions":"Delegate - Interruptions & distractions","Not Urgent & Not Important":"Not Urgent & Not Important","Eliminate - Time wasters":"Eliminate - Time wasters","Task Priority Matrix":"Task Priority Matrix","Created Date (Newest First)":"Created Date (Newest First)","Created Date (Oldest First)":"Created Date (Oldest First)","Toggle empty columns":"Toggle empty columns","Failed to update task":"Failed to update task","Remove urgent tag":"Remove urgent tag","Remove important tag":"Remove important tag","Loading more tasks...":"Loading more tasks...","Action Type":"Action Type","Select action type...":"Select action type...","Delete task":"Delete task","Keep task":"Keep task","Complete related tasks":"Complete related tasks","Move task":"Move task","Archive task":"Archive task","Duplicate task":"Duplicate task","Task IDs":"Task IDs","Enter task IDs separated by commas":"Enter task IDs separated by commas","Comma-separated list of task IDs to complete when this task is completed":"Comma-separated list of task IDs to complete when this task is completed","Target File":"Target File","Path to target file":"Path to target file","Target Section (Optional)":"Target Section (Optional)","Section name in target file":"Section name in target file","Archive File (Optional)":"Archive File (Optional)","Default: Archive/Completed Tasks.md":"Default: Archive/Completed Tasks.md","Archive Section (Optional)":"Archive Section (Optional)","Default: Completed Tasks":"Default: Completed Tasks","Target File (Optional)":"Target File (Optional)","Default: same file":"Default: same file","Preserve Metadata":"Preserve Metadata","Keep completion dates and other metadata in the duplicated task":"Keep completion dates and other metadata in the duplicated task","Overdue by":"Overdue by",days:"days","Due in":"Due in","File Filter":"File Filter","Enable File Filter":"Enable File Filter","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.","File Filter Mode":"File Filter Mode","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)","Whitelist (Include only)":"Whitelist (Include only)","Blacklist (Exclude)":"Blacklist (Exclude)","File Filter Rules":"File Filter Rules","Configure which files and folders to include or exclude from task indexing":"Configure which files and folders to include or exclude from task indexing","Type:":"Type:",Folder:"Folder","Path:":"Path:","Enabled:":"Enabled:","Delete rule":"Delete rule","Add Filter Rule":"Add Filter Rule","Add File Rule":"Add File Rule","Add Folder Rule":"Add Folder Rule","Add Pattern Rule":"Add Pattern Rule","Refresh Statistics":"Refresh Statistics","Manually refresh filter statistics to see current data":"Manually refresh filter statistics to see current data","Refreshing...":"Refreshing...","Active Rules":"Active Rules","Cache Size":"Cache Size","No filter data available":"No filter data available","Error loading statistics":"Error loading statistics","On Completion":"On Completion","Enable OnCompletion":"Enable OnCompletion","Enable automatic actions when tasks are completed":"Enable automatic actions when tasks are completed","Default Archive File":"Default Archive File","Default file for archive action":"Default file for archive action","Default Archive Section":"Default Archive Section","Default section for archive action":"Default section for archive action","Show Advanced Options":"Show Advanced Options","Show advanced configuration options in task editors":"Show advanced configuration options in task editors","Configure checkbox status settings":"Configure checkbox status settings","Auto complete parent checkbox":"Auto complete parent checkbox","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.","Select a predefined checkbox status collection or customize your own":"Select a predefined checkbox status collection or customize your own","Checkbox Switcher":"Checkbox Switcher","Enable checkbox status switcher":"Enable checkbox status switcher","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.","Make the text mark in source mode follow the checkbox status cycle when clicked.":"Make the text mark in source mode follow the checkbox status cycle when clicked.","Automatically manage dates based on checkbox status changes":"Automatically manage dates based on checkbox status changes","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).","Default view mode":"Default view mode","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.","List View":"List View","Tree View":"Tree View","Global Filter Configuration":"Global Filter Configuration","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"Configure global filter rules that apply to all Views by default. Individual Views can override these settings.","Cancelled Date":"Cancelled Date","Configuration is valid":"Configuration is valid","Action to execute on completion":"Action to execute on completion","Depends On":"Depends On","Task IDs separated by commas":"Task IDs separated by commas","Task ID":"Task ID","Unique task identifier":"Unique task identifier","Action to execute when task is completed":"Action to execute when task is completed","Comma-separated list of task IDs this task depends on":"Comma-separated list of task IDs this task depends on","Unique identifier for this task":"Unique identifier for this task","Quadrant Classification Method":"Quadrant Classification Method","Choose how to classify tasks into quadrants":"Choose how to classify tasks into quadrants","Urgent Priority Threshold":"Urgent Priority Threshold","Tasks with priority >= this value are considered urgent (1-5)":"Tasks with priority >= this value are considered urgent (1-5)","Important Priority Threshold":"Important Priority Threshold","Tasks with priority >= this value are considered important (1-5)":"Tasks with priority >= this value are considered important (1-5)","Urgent Tag":"Urgent Tag","Tag to identify urgent tasks (e.g., #urgent, #fire)":"Tag to identify urgent tasks (e.g., #urgent, #fire)","Important Tag":"Important Tag","Tag to identify important tasks (e.g., #important, #key)":"Tag to identify important tasks (e.g., #important, #key)","Urgent Threshold Days":"Urgent Threshold Days","Tasks due within this many days are considered urgent":"Tasks due within this many days are considered urgent","Auto Update Priority":"Auto Update Priority","Automatically update task priority when moved between quadrants":"Automatically update task priority when moved between quadrants","Auto Update Tags":"Auto Update Tags","Automatically add/remove urgent/important tags when moved between quadrants":"Automatically add/remove urgent/important tags when moved between quadrants","Hide Empty Quadrants":"Hide Empty Quadrants","Hide quadrants that have no tasks":"Hide quadrants that have no tasks","Configure On Completion Action":"Configure On Completion Action","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)","Task mark display style":"Task mark display style","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.","Default checkboxes":"Default checkboxes","Custom text marks":"Custom text marks","Task Genius icons":"Task Genius icons","Time Parsing Settings":"Time Parsing Settings","Enable Time Parsing":"Enable Time Parsing","Automatically parse natural language time expressions in Quick Capture":"Automatically parse natural language time expressions in Quick Capture","Remove Original Time Expressions":"Remove Original Time Expressions","Remove parsed time expressions from the task text":"Remove parsed time expressions from the task text","Supported Languages":"Supported Languages","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"Currently supports English and Chinese time expressions. More languages may be added in future updates.","Date Keywords Configuration":"Date Keywords Configuration","Start Date Keywords":"Start Date Keywords","Keywords that indicate start dates (comma-separated)":"Keywords that indicate start dates (comma-separated)","Due Date Keywords":"Due Date Keywords","Keywords that indicate due dates (comma-separated)":"Keywords that indicate due dates (comma-separated)","Scheduled Date Keywords":"Scheduled Date Keywords","Keywords that indicate scheduled dates (comma-separated)":"Keywords that indicate scheduled dates (comma-separated)","Configure...":"Configure...","Collapse quick input":"Collapse quick input","Expand quick input":"Expand quick input","Set Priority":"Set Priority","Clear Flags":"Clear Flags","Filter by Priority":"Filter by Priority","New Project":"New Project","Archive Completed":"Archive Completed","Project Statistics":"Project Statistics","Manage Tags":"Manage Tags","Time Parsing":"Time Parsing","Minimal Quick Capture":"Minimal Quick Capture","Enter your task...":"Enter your task...","Set date":"Set date","Set location":"Set location","Add tags":"Add tags","Day after tomorrow":"Day after tomorrow","Next week":"Next week","Next month":"Next month","Choose date...":"Choose date...","Fixed location":"Fixed location",Date:"Date","Add date (triggers ~)":"Add date (triggers ~)","Set priority (triggers !)":"Set priority (triggers !)","Target Location":"Target Location","Set target location (triggers *)":"Set target location (triggers *)","Add tags (triggers #)":"Add tags (triggers #)","Minimal Mode":"Minimal Mode","Enable minimal mode":"Enable minimal mode","Enable simplified single-line quick capture with inline suggestions":"Enable simplified single-line quick capture with inline suggestions","Suggest trigger character":"Suggest trigger character","Character to trigger the suggestion menu":"Character to trigger the suggestion menu","Highest Priority":"Highest Priority","\u{1F53A} Highest priority task":"\u{1F53A} Highest priority task","Highest priority set":"Highest priority set","\u23EB High priority task":"\u23EB High priority task","High priority set":"High priority set","\u{1F53C} Medium priority task":"\u{1F53C} Medium priority task","Medium priority set":"Medium priority set","\u{1F53D} Low priority task":"\u{1F53D} Low priority task","Low priority set":"Low priority set","Lowest Priority":"Lowest Priority","\u23EC Lowest priority task":"\u23EC Lowest priority task","Lowest priority set":"Lowest priority set","Set due date to today":"Set due date to today","Due date set to today":"Due date set to today","Set due date to tomorrow":"Set due date to tomorrow","Due date set to tomorrow":"Due date set to tomorrow","Pick Date":"Pick Date","Open date picker":"Open date picker","Set scheduled date":"Set scheduled date","Scheduled date set":"Scheduled date set","Save to inbox":"Save to inbox","Target set to Inbox":"Target set to Inbox","Daily Note":"Daily Note","Save to today's daily note":"Save to today's daily note","Target set to Daily Note":"Target set to Daily Note","Current File":"Current File","Save to current file":"Save to current file","Target set to Current File":"Target set to Current File","Choose File":"Choose File","Open file picker":"Open file picker","Save to recent file":"Save to recent file","Target set to":"Target set to",Important:"Important","Tagged as important":"Tagged as important",Urgent:"Urgent","Tagged as urgent":"Tagged as urgent",Work:"Work","Work related task":"Work related task","Tagged as work":"Tagged as work",Personal:"Personal","Personal task":"Personal task","Tagged as personal":"Tagged as personal","Choose Tag":"Choose Tag","Open tag picker":"Open tag picker","Existing tag":"Existing tag","Tagged with":"Tagged with","Toggle quick capture panel in editor":"Toggle quick capture panel in editor","Toggle quick capture panel in editor (Globally)":"Toggle quick capture panel in editor (Globally)","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"Community","Get help and share tips":"Get help and share tips","Customize Task Genius":"Customize Task Genius","Click the Task Genius icon in the left sidebar":"Click the Task Genius icon in the left sidebar","Start with the Inbox view to see all your tasks":"Start with the Inbox view to see all your tasks","Use quick capture panel to quickly add your first task":"Use quick capture panel to quickly add your first task","Try the Forecast view to see tasks by date":"Try the Forecast view to see tasks by date","Open Task Genius and explore the available views":"Open Task Genius and explore the available views","Set up a project using the Projects view":"Set up a project using the Projects view","Try the Kanban board for visual task management":"Try the Kanban board for visual task management","Use workflow stages to track task progress":"Use workflow stages to track task progress","Explore all available views and their configurations":"Explore all available views and their configurations","Set up complex workflows for your projects":"Set up complex workflows for your projects","Configure habits and rewards to stay motivated":"Configure habits and rewards to stay motivated","Integrate with external calendars and systems":"Integrate with external calendars and systems","Open Task Genius from the left sidebar":"Open Task Genius from the left sidebar","Create your first task":"Create your first task","Explore the different views available":"Explore the different views available","Customize settings as needed":"Customize settings as needed","Thank you for your positive feedback!":"Thank you for your positive feedback!","Thank you for your feedback. We'll continue improving the experience.":"Thank you for your feedback. We'll continue improving the experience.","Share detailed feedback":"Share detailed feedback","Skip onboarding":"Skip onboarding",Back:"Back","Welcome to Task Genius":"Welcome to Task Genius","Transform your task management with advanced progress tracking and workflow automation":"Transform your task management with advanced progress tracking and workflow automation","Progress Tracking":"Progress Tracking","Visual progress bars and completion tracking for all your tasks":"Visual progress bars and completion tracking for all your tasks","Organize tasks by projects with advanced filtering and sorting":"Organize tasks by projects with advanced filtering and sorting","Workflow Automation":"Workflow Automation","Automate task status changes and improve your productivity":"Automate task status changes and improve your productivity","Multiple Views":"Multiple Views","Kanban boards, calendars, Gantt charts, and more visualization options":"Kanban boards, calendars, Gantt charts, and more visualization options","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.","Choose Your Usage Mode":"Choose Your Usage Mode","Select the configuration that best matches your task management experience":"Select the configuration that best matches your task management experience","Configuration Preview":"Configuration Preview","Review the settings that will be applied for your selected mode":"Review the settings that will be applied for your selected mode","Include task creation guide":"Include task creation guide","Show a quick tutorial on creating your first task":"Show a quick tutorial on creating your first task","Create Your First Task":"Create Your First Task","Learn how to create and format tasks in Task Genius":"Learn how to create and format tasks in Task Genius","Setup Complete!":"Setup Complete!","Task Genius is now configured and ready to use":"Task Genius is now configured and ready to use","Start Using Task Genius":"Start Using Task Genius","Task Genius Setup":"Task Genius Setup","Skip setup":"Skip setup","We noticed you've already configured Task Genius":"We noticed you've already configured Task Genius","Your current configuration includes:":"Your current configuration includes:","Would you like to run the setup wizard anyway?":"Would you like to run the setup wizard anyway?","Yes, show me the setup wizard":"Yes, show me the setup wizard","No, I'm happy with my current setup":"No, I'm happy with my current setup","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.","Task Format Examples":"Task Format Examples","Basic Task":"Basic Task","With Emoji Metadata":"With Emoji Metadata","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag","With Dataview Metadata":"With Dataview Metadata","Mixed Format":"Mixed Format","Combine emoji and dataview syntax as needed":"Combine emoji and dataview syntax as needed","Task Status Markers":"Task Status Markers","Not started":"Not started","In progress":"In progress","Common Metadata Symbols":"Common Metadata Symbols","Due date":"Due date","Start date":"Start date","Scheduled date":"Scheduled date","Higher priority":"Higher priority","Lower priority":"Lower priority","Recurring task":"Recurring task","Project/tag":"Project/tag","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"Use quick capture panel to quickly capture tasks from anywhere in Obsidian.","Try Quick Capture":"Try Quick Capture","Quick capture is now enabled in your configuration!":"Quick capture is now enabled in your configuration!","Failed to open quick capture. Please try again later.":"Failed to open quick capture. Please try again later.","Try It Yourself":"Try It Yourself","Practice creating a task with the format you prefer:":"Practice creating a task with the format you prefer:","Practice Task":"Practice Task","Enter a task using any of the formats shown above":"Enter a task using any of the formats shown above","- [ ] Your task here":"- [ ] Your task here","Validate Task":"Validate Task","Please enter a task to validate":"Please enter a task to validate","This doesn't look like a valid task. Tasks should start with '- [ ]'":"This doesn't look like a valid task. Tasks should start with '- [ ]'","Valid task format!":"Valid task format!","Emoji metadata":"Emoji metadata","Dataview metadata":"Dataview metadata","Project tags":"Project tags","Detected features: ":"Detected features: ",Onboarding:"Onboarding","Restart the welcome guide and setup wizard":"Restart the welcome guide and setup wizard","Restart Onboarding":"Restart Onboarding",Copy:"Copy","Copied!":"Copied!","MCP integration is only available on desktop":"MCP integration is only available on desktop","MCP Server Status":"MCP Server Status","Enable MCP Server":"Enable MCP Server","Start the MCP server to allow external tool connections":"Start the MCP server to allow external tool connections","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`,"MCP Server enabled. Keep your authentication token secure!":"MCP Server enabled. Keep your authentication token secure!","Server Configuration":"Server Configuration",Host:"Host","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces","Security Warning":"Security Warning","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`,"Yes, I understand the risks":"Yes, I understand the risks","Host changed to 0.0.0.0. Server is now accessible from external networks.":"Host changed to 0.0.0.0. Server is now accessible from external networks.",Port:"Port","Server port number (default: 7777)":"Server port number (default: 7777)",Authentication:"Authentication","Authentication Token":"Authentication Token","Bearer token for authenticating MCP requests (keep this secret)":"Bearer token for authenticating MCP requests (keep this secret)",Show:"Show",Hide:"Hide","Token copied to clipboard":"Token copied to clipboard",Regenerate:"Regenerate","New token generated":"New token generated","Advanced Settings":"Advanced Settings","Enable CORS":"Enable CORS","Allow cross-origin requests (required for web clients)":"Allow cross-origin requests (required for web clients)","Log Level":"Log Level","Logging verbosity for debugging":"Logging verbosity for debugging",Error:"Error",Warning:"Warning",Info:"Info",Debug:"Debug","Server Actions":"Server Actions","Test Connection":"Test Connection","Test the MCP server connection":"Test the MCP server connection",Test:"Test","Testing...":"Testing...","Connection test successful! MCP server is working.":"Connection test successful! MCP server is working.","Connection test failed: ":"Connection test failed: ","Restart Server":"Restart Server","Stop and restart the MCP server":"Stop and restart the MCP server",Restart:"Restart","MCP server restarted":"MCP server restarted","Failed to restart server: ":"Failed to restart server: ","Use Next Available Port":"Use Next Available Port","Port updated to ":"Port updated to ","No available port found in range":"No available port found in range","Client Configuration":"Client Configuration","Authentication Method":"Authentication Method","Choose the authentication method for client configurations":"Choose the authentication method for client configurations","Method B: Combined Bearer (Recommended)":"Method B: Combined Bearer (Recommended)","Method A: Custom Headers":"Method A: Custom Headers","Supported Authentication Methods:":"Supported Authentication Methods:","API Documentation":"API Documentation","Server Endpoint":"Server Endpoint","Copy URL":"Copy URL","Available Tools":"Available Tools","Loading tools...":"Loading tools...","No tools available":"No tools available","Failed to load tools. Is the MCP server running?":"Failed to load tools. Is the MCP server running?","Example Request":"Example Request","MCP Server not initialized":"MCP Server not initialized",Running:"Running",Stopped:"Stopped",Uptime:"Uptime",Requests:"Requests","Toggle this to enable Org-mode style quick capture panel.":"Toggle this to enable Org-mode style quick capture panel.","Auto-add task prefix":"Auto-add task prefix","Automatically add task checkbox prefix to captured content":"Automatically add task checkbox prefix to captured content","Task prefix format":"Task prefix format","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)","Search settings...":"Search settings...","Search settings":"Search settings","Clear search":"Clear search","Search results":"Search results","No settings found":"No settings found","Project Tree View Settings":"Project Tree View Settings","Configure how projects are displayed in tree view.":"Configure how projects are displayed in tree view.","Default project view mode":"Default project view mode","Choose whether to display projects as a flat list or hierarchical tree by default.":"Choose whether to display projects as a flat list or hierarchical tree by default.","Auto-expand project tree":"Auto-expand project tree","Automatically expand all project nodes when opening the project view in tree mode.":"Automatically expand all project nodes when opening the project view in tree mode.","Show empty project folders":"Show empty project folders","Display project folders even if they don't contain any tasks.":"Display project folders even if they don't contain any tasks.","Project path separator":"Project path separator","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').","Enable dynamic metadata positioning":"Enable dynamic metadata positioning","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.","Toggle tree/list view":"Toggle tree/list view","Clear date":"Clear date","Clear priority":"Clear priority","Clear all tags":"Clear all tags","\u{1F53A} Highest priority":"\u{1F53A} Highest priority","\u23EB High priority":"\u23EB High priority","\u{1F53C} Medium priority":"\u{1F53C} Medium priority","\u{1F53D} Low priority":"\u{1F53D} Low priority","\u23EC Lowest priority":"\u23EC Lowest priority","Fixed File":"Fixed File","Save to Inbox.md":"Save to Inbox.md","Open Task Genius Setup":"Open Task Genius Setup","MCP Integration":"MCP Integration",Beginner:"Beginner","Basic task management with essential features":"Basic task management with essential features","Basic progress bars":"Basic progress bars","Essential views (Inbox, Forecast, Projects)":"Essential views (Inbox, Forecast, Projects)","Simple task status tracking":"Simple task status tracking","Quick task capture":"Quick task capture","Date picker functionality":"Date picker functionality","Project management with enhanced workflows":"Project management with enhanced workflows","Full progress bar customization":"Full progress bar customization","Extended views (Kanban, Calendar, Table)":"Extended views (Kanban, Calendar, Table)","Project management features":"Project management features","Basic workflow automation":"Basic workflow automation","Advanced filtering and sorting":"Advanced filtering and sorting","Power User":"Power User","Full-featured experience with all capabilities":"Full-featured experience with all capabilities","All views and advanced configurations":"All views and advanced configurations","Complex workflow definitions":"Complex workflow definitions","Reward and habit tracking systems":"Reward and habit tracking systems","Performance optimizations":"Performance optimizations","Advanced integrations":"Advanced integrations","Experimental features":"Experimental features","Timeline and calendar sync":"Timeline and calendar sync","Not configured":"Not configured",Custom:"Custom","Custom views created":"Custom views created","Progress bar settings modified":"Progress bar settings modified","Task status settings configured":"Task status settings configured","Quick capture configured":"Quick capture configured","Workflow settings enabled":"Workflow settings enabled","Advanced features enabled":"Advanced features enabled","File parsing customized":"File parsing customized"},vj=cz});var dz,Tj,Cj=b(()=>{dz={"File Metadata Inheritance":"\u6587\u4EF6\u5143\u6570\u636E\u7EE7\u627F","Configure how tasks inherit metadata from file frontmatter":"\u914D\u7F6E\u4EFB\u52A1\u5982\u4F55\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u7EE7\u627F\u5C5E\u6027","Enable file metadata inheritance":"\u542F\u7528\u6587\u4EF6\u5143\u6570\u636E\u7EE7\u627F","Allow tasks to inherit metadata properties from their file's frontmatter":"\u5141\u8BB8\u4EFB\u52A1\u4ECE\u5176\u6587\u4EF6\u7684\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u7EE7\u627F\u5C5E\u6027","Inherit from frontmatter":"\u4ECE\u524D\u8A00\u7EE7\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u5F53\u4EFB\u52A1\u4E0A\u672A\u660E\u786E\u8BBE\u7F6E\u65F6\uFF0C\u4EFB\u52A1\u4F1A\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u7EE7\u627F\u4F18\u5148\u7EA7\u3001\u4E0A\u4E0B\u6587\u7B49\u5C5E\u6027","Inherit from frontmatter for subtasks":"\u4E3A\u5B50\u4EFB\u52A1\u4ECE\u524D\u8A00\u7EE7\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u5141\u8BB8\u5B50\u4EFB\u52A1\u4ECE\u6587\u4EF6\u524D\u7F6E\u5143\u6570\u636E\u7EE7\u627F\u5C5E\u6027\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u6709\u9876\u7EA7\u4EFB\u52A1\u7EE7\u627F\u6587\u4EF6\u5143\u6570\u636E","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u5168\u9762\u7684 Obsidian \u4EFB\u52A1\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5177\u6709\u8FDB\u5EA6\u6761\u3001\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u9AD8\u7EA7\u4EFB\u52A1\u8DDF\u8E2A\u529F\u80FD\u3002","Show progress bar":"\u663E\u793A\u8FDB\u5EA6\u6761","Toggle this to show the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u663E\u793A\u8FDB\u5EA6\u6761\u3002","Support hover to show progress info":"\u652F\u6301\u60AC\u505C\u663E\u793A\u8FDB\u5EA6\u4FE1\u606F","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u9F20\u6807\u60AC\u505C\u5728\u8FDB\u5EA6\u6761\u4E0A\u65F6\u663E\u793A\u8FDB\u5EA6\u4FE1\u606F\u3002","Add progress bar to non-task bullet":"\u4E3A\u975E\u4EFB\u52A1\u9879\u6DFB\u52A0\u8FDB\u5EA6\u6761","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u4E3A\u5E38\u89C4\u5217\u8868\u9879\uFF08\u975E\u4EFB\u52A1\u9879\uFF09\u6DFB\u52A0\u8FDB\u5EA6\u6761\u3002","Add progress bar to Heading":"\u4E3A\u6807\u9898\u6DFB\u52A0\u8FDB\u5EA6\u6761","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u4E3A\u6807\u9898\u4E0B\u7684\u4EFB\u52A1\u6DFB\u52A0\u8FDB\u5EA6\u6761\u3002","Enable heading progress bars":"\u542F\u7528\u6807\u9898\u8FDB\u5EA6\u6761","Add progress bars to headings to show progress of all tasks under that heading.":"\u4E3A\u6807\u9898\u6DFB\u52A0\u8FDB\u5EA6\u6761\u4EE5\u663E\u793A\u8BE5\u6807\u9898\u4E0B\u6240\u6709\u4EFB\u52A1\u7684\u8FDB\u5EA6\u3002","Auto complete parent task":"\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1\u3002","Mark parent as 'In Progress' when partially complete":'\u90E8\u5206\u5B8C\u6210\u65F6\u5C06\u7236\u4EFB\u52A1\u6807\u8BB0\u4E3A"\u8FDB\u884C\u4E2D"',"When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":'\u5F53\u90E8\u5206\u5B50\u4EFB\u52A1\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u65F6\uFF0C\u5C06\u7236\u4EFB\u52A1\u6807\u8BB0\u4E3A"\u8FDB\u884C\u4E2D"\u3002\u4EC5\u5728\u542F\u7528"\u81EA\u52A8\u5B8C\u6210\u7236\u4EFB\u52A1"\u65F6\u6709\u6548\u3002',"Count sub children level of current Task":"\u8BA1\u7B97\u5F53\u524D\u4EFB\u52A1\u7684\u5B50\u4EFB\u52A1\u5C42\u7EA7","Toggle this to allow this plugin to count sub tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Checkbox Status Settings":"\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Select a predefined task status collection or customize your own":"\u9009\u62E9\u9884\u5B9A\u4E49\u7684\u4EFB\u52A1\u72B6\u6001\u96C6\u5408\u6216\u81EA\u5B9A\u4E49\u60A8\u81EA\u5DF1\u7684","Completed task markers":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"x|X"',"Planned task markers":"\u8BA1\u5212\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent planned tasks. Example: "?"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u8BA1\u5212\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"?"',"In progress task markers":"\u8FDB\u884C\u4E2D\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u8FDB\u884C\u4E2D\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A">|/"',"Abandoned task markers":"\u5DF2\u653E\u5F03\u4EFB\u52A1\u6807\u8BB0",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u5DF2\u653E\u5F03\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u65B9\u62EC\u53F7\u4E2D\u8868\u793A\u672A\u5F00\u59CB\u4EFB\u52A1\u7684\u5B57\u7B26\u3002\u9ED8\u8BA4\u4E3A\u7A7A\u683C " "',"Count other statuses as":"\u5C06\u5176\u4ED6\u72B6\u6001\u8BA1\u4E3A",'Select the status to count other statuses as. Default is "Not Started".':'\u9009\u62E9\u5C06\u5176\u4ED6\u72B6\u6001\u8BA1\u4E3A\u54EA\u79CD\u72B6\u6001\u3002\u9ED8\u8BA4\u4E3A"\u672A\u5F00\u59CB"\u3002',"Task Counting Settings":"\u4EFB\u52A1\u8BA1\u6570\u8BBE\u7F6E","Exclude specific task markers":"\u6392\u9664\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0",'Specify task markers to exclude from counting. Example: "?|/"':'\u6307\u5B9A\u8981\u4ECE\u8BA1\u6570\u4E2D\u6392\u9664\u7684\u4EFB\u52A1\u6807\u8BB0\u3002\u4F8B\u5982\uFF1A"?|/"',"Only count specific task markers":"\u4EC5\u8BA1\u6570\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0","Toggle this to only count specific task markers":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u4EC5\u8BA1\u6570\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0","Specific task markers to count":"\u8981\u8BA1\u6570\u7684\u7279\u5B9A\u4EFB\u52A1\u6807\u8BB0",'Specify which task markers to count. Example: "x|X|>|/"':'\u6307\u5B9A\u8981\u8BA1\u6570\u7684\u4EFB\u52A1\u6807\u8BB0\u3002\u4F8B\u5982\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u6761\u4EF6\u8FDB\u5EA6\u6761\u663E\u793A","Hide progress bars based on conditions":"\u57FA\u4E8E\u6761\u4EF6\u9690\u85CF\u8FDB\u5EA6\u6761","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u57FA\u4E8E\u6807\u7B7E\u3001\u6587\u4EF6\u5939\u6216\u5143\u6570\u636E\u9690\u85CF\u8FDB\u5EA6\u6761\u3002","Hide by tags":"\u6309\u6807\u7B7E\u9690\u85CF",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u4E0D\u5E26 #\uFF09\u3002\u4F8B\u5982\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u6309\u6587\u4EF6\u5939\u9690\u85CF",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u6587\u4EF6\u5939\u8DEF\u5F84\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002\u4F8B\u5982\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u6309\u5143\u6570\u636E\u9690\u85CF",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u6307\u5B9A\u5C06\u9690\u85CF\u8FDB\u5EA6\u6761\u7684\u524D\u7F6E\u5143\u6570\u636E\u3002\u4F8B\u5982\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u4EFB\u52A1\u72B6\u6001\u5207\u6362\u5668","Enable/disable the ability to cycle through task states by clicking.":"\u542F\u7528/\u7981\u7528\u901A\u8FC7\u70B9\u51FB\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u72B6\u6001\u7684\u529F\u80FD\u3002","Enable custom task marks":"\u542F\u7528\u81EA\u5B9A\u4E49\u4EFB\u52A1\u6807\u8BB0","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u7528\u6837\u5F0F\u5316\u6587\u672C\u6807\u8BB0\u66FF\u6362\u9ED8\u8BA4\u590D\u9009\u6846\uFF0C\u70B9\u51FB\u65F6\u9075\u5FAA\u60A8\u7684\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u3002","Enable cycle complete status":"\u542F\u7528\u5FAA\u73AF\u5B8C\u6210\u72B6\u6001","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u542F\u7528/\u7981\u7528\u6309\u4E0B\u6807\u8BB0\u65F6\u81EA\u52A8\u5FAA\u73AF\u5207\u6362\u4EFB\u52A1\u72B6\u6001\u7684\u529F\u80FD\u3002","Always cycle new tasks":"\u59CB\u7EC8\u5FAA\u73AF\u65B0\u4EFB\u52A1","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u542F\u7528\u540E\uFF0C\u65B0\u63D2\u5165\u7684\u4EFB\u52A1\u5C06\u7ACB\u5373\u5FAA\u73AF\u5230\u4E0B\u4E00\u4E2A\u72B6\u6001\u3002\u7981\u7528\u65F6\uFF0C\u5E26\u6709\u6709\u6548\u6807\u8BB0\u7684\u65B0\u63D2\u5165\u4EFB\u52A1\u5C06\u4FDD\u6301\u5176\u539F\u59CB\u6807\u8BB0\u3002","Checkbox Status Cycle and Marks":"\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u6807\u8BB0","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u5B9A\u4E49\u4EFB\u52A1\u72B6\u6001\u53CA\u5176\u5BF9\u5E94\u7684\u6807\u8BB0\u3002\u4ECE\u4E0A\u5230\u4E0B\u7684\u987A\u5E8F\u5B9A\u4E49\u4E86\u5FAA\u73AF\u987A\u5E8F\u3002","Completed Task Mover":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u529F\u80FD","Enable completed task mover":"\u542F\u7528\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u529F\u80FD","Toggle this to enable commands for moving completed tasks to another file.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u5C06\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Task marker type":"\u4EFB\u52A1\u6807\u8BB0\u7C7B\u578B","Choose what type of marker to add to moved tasks":"\u9009\u62E9\u8981\u6DFB\u52A0\u5230\u5DF2\u79FB\u52A8\u4EFB\u52A1\u7684\u6807\u8BB0\u7C7B\u578B","Version marker text":"\u7248\u672C\u6807\u8BB0\u6587\u672C","Text to append to tasks when moved (e.g., 'version 1.0')":"\u79FB\u52A8\u4EFB\u52A1\u65F6\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'version 1.0'\uFF09","Date marker text":"\u65E5\u671F\u6807\u8BB0\u6587\u672C","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u79FB\u52A8\u4EFB\u52A1\u65F6\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'archived on 2023-12-31'\uFF09","Custom marker text":"\u81EA\u5B9A\u4E49\u6807\u8BB0\u6587\u672C","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u4F7F\u7528 {{DATE:format}} \u8FDB\u884C\u65E5\u671F\u683C\u5F0F\u5316\uFF08\u4F8B\u5982\uFF0C{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u5C06\u5DF2\u653E\u5F03\u4EFB\u52A1\u89C6\u4E3A\u5DF2\u5B8C\u6210","If enabled, abandoned tasks will be treated as completed.":"\u5982\u679C\u542F\u7528\uFF0C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1\u5C06\u88AB\u89C6\u4E3A\u5DF2\u5B8C\u6210\u3002","Complete all moved tasks":"\u5B8C\u6210\u6240\u6709\u5DF2\u79FB\u52A8\u7684\u4EFB\u52A1","If enabled, all moved tasks will be marked as completed.":"\u5982\u679C\u542F\u7528\uFF0C\u6240\u6709\u5DF2\u79FB\u52A8\u7684\u4EFB\u52A1\u5C06\u88AB\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u3002","With current file link":"\u5E26\u5F53\u524D\u6587\u4EF6\u94FE\u63A5","A link to the current file will be added to the parent task of the moved tasks.":"\u5F53\u524D\u6587\u4EF6\u7684\u94FE\u63A5\u5C06\u6DFB\u52A0\u5230\u5DF2\u79FB\u52A8\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u4E2D\u3002",Donate:"\u6350\u8D60","If you like this plugin, consider donating to support continued development:":"\u5982\u679C\u60A8\u559C\u6B22\u8FD9\u4E2A\u63D2\u4EF6\uFF0C\u8BF7\u8003\u8651\u6350\u8D60\u4EE5\u652F\u6301\u6301\u7EED\u5F00\u53D1\uFF1A","Add number to the Progress Bar":"\u5728\u8FDB\u5EA6\u6761\u4E2D\u6DFB\u52A0\u6570\u5B57","Toggle this to allow this plugin to add tasks number to progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u8FDB\u5EA6\u6761\u4E2D\u6DFB\u52A0\u4EFB\u52A1\u6570\u91CF\u3002","Show percentage":"\u663E\u793A\u767E\u5206\u6BD4","Toggle this to allow this plugin to show percentage in the progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u8FDB\u5EA6\u6761\u4E2D\u663E\u793A\u767E\u5206\u6BD4\u3002","Customize progress text":"\u81EA\u5B9A\u4E49\u8FDB\u5EA6\u6587\u672C","Toggle this to customize text representation for different progress percentage ranges.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u81EA\u5B9A\u4E49\u4E0D\u540C\u8FDB\u5EA6\u767E\u5206\u6BD4\u8303\u56F4\u7684\u6587\u672C\u8868\u793A\u3002","Progress Ranges":"\u8FDB\u5EA6\u8303\u56F4","Define progress ranges and their corresponding text representations.":"\u5B9A\u4E49\u8FDB\u5EA6\u8303\u56F4\u53CA\u5176\u5BF9\u5E94\u7684\u6587\u672C\u8868\u793A\u3002","Add new range":"\u6DFB\u52A0\u65B0\u8303\u56F4","Add a new progress percentage range with custom text":"\u6DFB\u52A0\u5E26\u6709\u81EA\u5B9A\u4E49\u6587\u672C\u7684\u65B0\u8FDB\u5EA6\u767E\u5206\u6BD4\u8303\u56F4","Min percentage (0-100)":"\u6700\u5C0F\u767E\u5206\u6BD4 (0-100)","Max percentage (0-100)":"\u6700\u5927\u767E\u5206\u6BD4 (0-100)","Text template (use {{PROGRESS}})":"\u6587\u672C\u6A21\u677F\uFF08\u4F7F\u7528 {{PROGRESS}}\uFF09","Reset to defaults":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C","Reset progress ranges to default values":"\u5C06\u8FDB\u5EA6\u8303\u56F4\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C",Reset:"\u91CD\u7F6E","Priority Picker Settings":"\u4F18\u5148\u7EA7\u9009\u62E9\u5668\u8BBE\u7F6E","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u5207\u6362\u4EE5\u542F\u7528\u8868\u60C5\u7B26\u53F7\u548C\u5B57\u6BCD\u683C\u5F0F\u4F18\u5148\u7EA7\u7684\u4F18\u5148\u7EA7\u9009\u62E9\u5668\u4E0B\u62C9\u83DC\u5355\u3002","Enable priority picker":"\u542F\u7528\u4F18\u5148\u7EA7\u9009\u62E9\u5668","Enable priority keyboard shortcuts":"\u542F\u7528\u4F18\u5148\u7EA7\u952E\u76D8\u5FEB\u6377\u952E","Toggle to enable keyboard shortcuts for setting task priorities.":"\u5207\u6362\u4EE5\u542F\u7528\u8BBE\u7F6E\u4EFB\u52A1\u4F18\u5148\u7EA7\u7684\u952E\u76D8\u5FEB\u6377\u952E\u3002","Date picker":"\u65E5\u671F\u9009\u62E9\u5668","Enable date picker":"\u542F\u7528\u65E5\u671F\u9009\u62E9\u5668","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u7684\u65E5\u671F\u9009\u62E9\u5668\u3002\u8FD9\u5C06\u5728\u60A8\u7684\u4EFB\u52A1\u65C1\u8FB9\u6DFB\u52A0\u4E00\u4E2A\u65E5\u5386\u56FE\u6807\uFF0C\u60A8\u53EF\u4EE5\u70B9\u51FB\u5B83\u6765\u9009\u62E9\u65E5\u671F\u3002","Date mark":"\u65E5\u671F\u6807\u8BB0","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u7528\u4E8E\u6807\u8BC6\u65E5\u671F\u7684\u8868\u60C5\u7B26\u53F7\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u9017\u53F7\u5206\u9694\u7684\u591A\u4E2A\u8868\u60C5\u7B26\u53F7\u3002","Quick capture":"\u5FEB\u901F\u6355\u83B7","Enable quick capture":"\u542F\u7528\u5FEB\u901F\u6355\u83B7","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528 Org-mode \u98CE\u683C\u7684\u5FEB\u901F\u6355\u83B7\u9762\u677F\u3002\u6309 Alt+C \u6253\u5F00\u6355\u83B7\u9762\u677F\u3002","Target file":"\u76EE\u6807\u6587\u4EF6","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u6355\u83B7\u7684\u6587\u672C\u5C06\u4FDD\u5B58\u5230\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F84\uFF0C\u4F8B\u5982\uFF0C'folder/Quick Capture.md'","Placeholder text":"\u5360\u4F4D\u6587\u672C","Placeholder text to display in the capture panel":"\u5728\u6355\u83B7\u9762\u677F\u4E2D\u663E\u793A\u7684\u5360\u4F4D\u6587\u672C","Append to file":"\u9644\u52A0\u5230\u6587\u4EF6","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u5982\u679C\u542F\u7528\uFF0C\u6355\u83B7\u7684\u6587\u672C\u5C06\u9644\u52A0\u5230\u76EE\u6807\u6587\u4EF6\u3002\u5982\u679C\u7981\u7528\uFF0C\u5B83\u5C06\u66FF\u6362\u6587\u4EF6\u5185\u5BB9\u3002","Task Filter":"\u4EFB\u52A1\u8FC7\u6EE4\u5668","Enable Task Filter":"\u542F\u7528\u4EFB\u52A1\u8FC7\u6EE4\u5668","Toggle this to enable the task filter panel":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u8FC7\u6EE4\u5668\u9762\u677F","Preset Filters":"\u9884\u8BBE\u8FC7\u6EE4\u5668","Create and manage preset filters for quick access to commonly used task filters.":"\u521B\u5EFA\u548C\u7BA1\u7406\u9884\u8BBE\u8FC7\u6EE4\u5668\uFF0C\u4EE5\u5FEB\u901F\u8BBF\u95EE\u5E38\u7528\u7684\u4EFB\u52A1\u8FC7\u6EE4\u5668\u3002","Edit Filter: ":"\u7F16\u8F91\u8FC7\u6EE4\u5668\uFF1A","Filter name":"\u8FC7\u6EE4\u5668\u540D\u79F0","Checkbox Status":"\u4EFB\u52A1\u72B6\u6001","Include or exclude tasks based on their status":"\u6839\u636E\u4EFB\u52A1\u72B6\u6001\u5305\u542B\u6216\u6392\u9664\u4EFB\u52A1","Include Completed Tasks":"\u5305\u542B\u5DF2\u5B8C\u6210\u4EFB\u52A1","Include In Progress Tasks":"\u5305\u542B\u8FDB\u884C\u4E2D\u4EFB\u52A1","Include Abandoned Tasks":"\u5305\u542B\u5DF2\u653E\u5F03\u4EFB\u52A1","Include Not Started Tasks":"\u5305\u542B\u672A\u5F00\u59CB\u4EFB\u52A1","Include Planned Tasks":"\u5305\u542B\u8BA1\u5212\u4EFB\u52A1","Related Tasks":"\u76F8\u5173\u4EFB\u52A1","Include parent, child, and sibling tasks in the filter":"\u5728\u8FC7\u6EE4\u5668\u4E2D\u5305\u542B\u7236\u4EFB\u52A1\u3001\u5B50\u4EFB\u52A1\u548C\u540C\u7EA7\u4EFB\u52A1","Include Parent Tasks":"\u5305\u542B\u7236\u4EFB\u52A1","Include Child Tasks":"\u5305\u542B\u5B50\u4EFB\u52A1","Include Sibling Tasks":"\u5305\u542B\u540C\u7EA7\u4EFB\u52A1","Advanced Filter":"\u9AD8\u7EA7\u8FC7\u6EE4\u5668","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u4F7F\u7528\u5E03\u5C14\u8FD0\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1'","Filter query":"\u8FC7\u6EE4\u67E5\u8BE2","Filter out tasks":"\u8FC7\u6EE4\u6389\u4EFB\u52A1","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u542F\u7528\uFF0C\u5339\u914D\u67E5\u8BE2\u7684\u4EFB\u52A1\u5C06\u88AB\u9690\u85CF\uFF0C\u5426\u5219\u5C06\u663E\u793A",Save:"\u4FDD\u5B58",Cancel:"\u53D6\u6D88","Enable task status switcher":"\u542F\u7528\u4EFB\u52A1\u72B6\u6001\u5207\u6362\u5668","Add Status":"\u6DFB\u52A0\u72B6\u6001","Say Thank You":"\u8C22\u8C22","Hide filter panel":"\u9690\u85CF\u8FC7\u6EE4\u5668\u9762\u677F","Show filter panel":"\u663E\u793A\u8FC7\u6EE4\u5668\u9762\u677F","Filter Tasks":"\u8FC7\u6EE4\u4EFB\u52A1","Preset filters":"\u9884\u8BBE\u8FC7\u6EE4\u5668","Select a saved filter preset to apply":"\u9009\u62E9\u4E00\u4E2A\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668\u9884\u8BBE\u4EE5\u5E94\u7528","Select a preset...":"\u9009\u62E9\u4E00\u4E2A\u9884\u8BBE...",Query:"\u67E5\u8BE2","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u4F7F\u7528\u5E03\u5C14\u8FD0\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u652F\u6301 >, <, =, >=, <=, != \u7528\u4E8E PRIORITY \u548C DATE\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u542F\u7528\uFF0C\u5339\u914D\u67E5\u8BE2\u7684\u4EFB\u52A1\u5C06\u88AB\u9690\u85CF\uFF0C\u5426\u5219\u5C06\u663E\u793A",Completed:"\u5DF2\u5B8C\u6210","In Progress":"\u8FDB\u884C\u4E2D",Abandoned:"\u5DF2\u653E\u5F03","Not Started":"\u672A\u5F00\u59CB",Planned:"\u8BA1\u5212","Include Related Tasks":"\u5305\u542B\u76F8\u5173\u4EFB\u52A1","Parent Tasks":"\u7236\u4EFB\u52A1","Child Tasks":"\u5B50\u4EFB\u52A1","Sibling Tasks":"\u540C\u7EA7\u4EFB\u52A1",Apply:"\u5E94\u7528","New Preset":"\u65B0\u9884\u8BBE","Preset saved":"\u9884\u8BBE\u5DF2\u4FDD\u5B58","No changes to save":"\u6CA1\u6709\u66F4\u6539\u8981\u4FDD\u5B58",Close:"\u5173\u95ED","Capture to":"\u6355\u83B7\u5230",Capture:"\u6355\u83B7","Capture thoughts, tasks, or ideas...":"\u6355\u83B7\u60F3\u6CD5\u3001\u4EFB\u52A1\u6216\u60F3\u6CD5...",Tomorrow:"\u660E\u5929","In 2 days":"2\u5929\u540E","In 3 days":"3\u5929\u540E","In 5 days":"5\u5929\u540E","In 1 week":"1\u5468\u540E","In 10 days":"10\u5929\u540E","In 2 weeks":"2\u5468\u540E","In 1 month":"1\u4E2A\u6708\u540E","In 2 months":"2\u4E2A\u6708\u540E","In 3 months":"3\u4E2A\u6708\u540E","In 6 months":"6\u4E2A\u6708\u540E","In 1 year":"1\u5E74\u540E","In 5 years":"5\u5E74\u540E","In 10 years":"10\u5E74\u540E","Highest priority":"\u6700\u9AD8\u4F18\u5148\u7EA7","High priority":"\u9AD8\u4F18\u5148\u7EA7","Medium priority":"\u4E2D\u7B49\u4F18\u5148\u7EA7","No priority":"\u65E0\u4F18\u5148\u7EA7","Low priority":"\u4F4E\u4F18\u5148\u7EA7","Lowest priority":"\u6700\u4F4E\u4F18\u5148\u7EA7","Priority A":"\u4F18\u5148\u7EA7A","Priority B":"\u4F18\u5148\u7EA7B","Priority C":"\u4F18\u5148\u7EA7C","Task Priority":"\u4EFB\u52A1\u4F18\u5148\u7EA7","Remove Priority":"\u79FB\u9664\u4F18\u5148\u7EA7","Cycle task status forward":"\u5411\u524D\u5FAA\u73AF\u4EFB\u52A1\u72B6\u6001","Cycle task status backward":"\u5411\u540E\u5FAA\u73AF\u4EFB\u52A1\u72B6\u6001","Remove priority":"\u79FB\u9664\u4F18\u5148\u7EA7","Move task to another file":"\u5C06\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move all completed subtasks to another file":"\u5C06\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move direct completed subtasks to another file":"\u5C06\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move all subtasks to another file":"\u5C06\u6240\u6709\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Set priority":"\u8BBE\u7F6E\u4F18\u5148\u7EA7","Toggle quick capture panel":"\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F","Quick capture (Global)":"\u5FEB\u901F\u6355\u83B7\uFF08\u5168\u5C40\uFF09","Toggle task filter panel":"\u5207\u6362\u4EFB\u52A1\u8FC7\u6EE4\u5668\u9762\u677F","Filter Mode":"\u8FC7\u6EE4\u6A21\u5F0F","Choose whether to include or exclude tasks that match the filters":"\u9009\u62E9\u662F\u5305\u542B\u8FD8\u662F\u6392\u9664\u7B26\u5408\u8FC7\u6EE4\u6761\u4EF6\u7684\u4EFB\u52A1","Show matching tasks":"\u663E\u793A\u5339\u914D\u7684\u4EFB\u52A1","Hide matching tasks":"\u9690\u85CF\u5339\u914D\u7684\u4EFB\u52A1","Choose whether to show or hide tasks that match the filters":"\u9009\u62E9\u662F\u663E\u793A\u8FD8\u662F\u9690\u85CF\u7B26\u5408\u8FC7\u6EE4\u6761\u4EF6\u7684\u4EFB\u52A1","Create new file:":"\u521B\u5EFA\u65B0\u6587\u4EF6\uFF1A","Completed tasks moved to":"\u5DF2\u5B8C\u6210\u4EFB\u52A1\u5DF2\u79FB\u52A8\u5230","Failed to create file:":"\u521B\u5EFA\u6587\u4EF6\u5931\u8D25\uFF1A","Beginning of file":"\u6587\u4EF6\u5F00\u5934","Failed to move tasks:":"\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","No active file found":"\u672A\u627E\u5230\u6D3B\u52A8\u6587\u4EF6","Task moved to":"\u4EFB\u52A1\u5DF2\u79FB\u52A8\u5230","Failed to move task:":"\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","Nothing to capture":"\u6CA1\u6709\u5185\u5BB9\u53EF\u6355\u83B7","Captured successfully":"\u6355\u83B7\u6210\u529F","Failed to save:":"\u4FDD\u5B58\u5931\u8D25\uFF1A","Captured successfully to":"\u6210\u529F\u6355\u83B7\u5230",Total:"\u603B\u8BA1",Workflow:"\u5DE5\u4F5C\u6D41","Add as workflow root":"\u6DFB\u52A0\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Move to stage":"\u79FB\u52A8\u5230\u9636\u6BB5","Complete stage":"\u5B8C\u6210\u9636\u6BB5","Add child task with same stage":"\u6DFB\u52A0\u76F8\u540C\u9636\u6BB5\u7684\u5B50\u4EFB\u52A1","Could not open quick capture panel in the current editor":"\u65E0\u6CD5\u5728\u5F53\u524D\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5FEB\u901F\u6355\u83B7\u9762\u677F","Just started {{PROGRESS}}%":"\u521A\u521A\u5F00\u59CB {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u6B63\u5728\u8FDB\u884C {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u5DF2\u5B8C\u6210\u4E00\u534A {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u8FDB\u5C55\u826F\u597D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u5373\u5C06\u5B8C\u6210 {{PROGRESS}}%","Progress bar":"\u8FDB\u5EA6\u6761","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u60A8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u7236\u4EFB\u52A1\u540E\u9762\u7684\u8FDB\u5EA6\u6761\uFF08\u901A\u5E38\u5728\u4EFB\u52A1\u672B\u5C3E\uFF09\u3002\u60A8\u8FD8\u53EF\u4EE5\u81EA\u5B9A\u4E49\u6807\u9898\u4E0B\u65B9\u4EFB\u52A1\u7684\u8FDB\u5EA6\u6761\u3002","Hide progress bars":"\u9690\u85CF\u8FDB\u5EA6\u6761","Parent task changer":"\u7236\u4EFB\u52A1\u66F4\u6539\u5668","Change the parent task of the current task.":"\u66F4\u6539\u5F53\u524D\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u5C1A\u672A\u521B\u5EFA\u9884\u8BBE\u8FC7\u6EE4\u5668\u3002\u70B9\u51FB'\u6DFB\u52A0\u65B0\u9884\u8BBE'\u521B\u5EFA\u4E00\u4E2A\u3002","Configure task workflows for project and process management":"\u914D\u7F6E\u9879\u76EE\u548C\u6D41\u7A0B\u7BA1\u7406\u7684\u4EFB\u52A1\u5DE5\u4F5C\u6D41","Enable workflow":"\u542F\u7528\u5DE5\u4F5C\u6D41","Toggle to enable the workflow system for tasks":"\u5207\u6362\u4EE5\u542F\u7528\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6D41\u7CFB\u7EDF","Auto-add timestamp":"\u81EA\u52A8\u6DFB\u52A0\u65F6\u95F4\u6233","Automatically add a timestamp to the task when it is created":"\u521B\u5EFA\u4EFB\u52A1\u65F6\u81EA\u52A8\u6DFB\u52A0\u65F6\u95F4\u6233","Timestamp format:":"\u65F6\u95F4\u6233\u683C\u5F0F\uFF1A","Timestamp format":"\u65F6\u95F4\u6233\u683C\u5F0F","Remove timestamp when moving to next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u79FB\u9664\u65F6\u95F4\u6233","Remove the timestamp from the current task when moving to the next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u4ECE\u5F53\u524D\u4EFB\u52A1\u4E2D\u79FB\u9664\u65F6\u95F4\u6233","Calculate spent time":"\u8BA1\u7B97\u82B1\u8D39\u65F6\u95F4","Calculate and display the time spent on the task when moving to the next stage":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u8BA1\u7B97\u5E76\u663E\u793A\u5728\u4EFB\u52A1\u4E0A\u82B1\u8D39\u7684\u65F6\u95F4","Format for spent time:":"\u82B1\u8D39\u65F6\u95F4\u683C\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u79FB\u52A8\u5230\u4E0B\u4E00\u9636\u6BB5\u65F6\u8BA1\u7B97\u82B1\u8D39\u65F6\u95F4\u3002","Spent time format":"\u82B1\u8D39\u65F6\u95F4\u683C\u5F0F","Calculate full spent time":"\u8BA1\u7B97\u603B\u82B1\u8D39\u65F6\u95F4","Calculate the full spent time from the start of the task to the last stage":"\u8BA1\u7B97\u4ECE\u4EFB\u52A1\u5F00\u59CB\u5230\u6700\u540E\u9636\u6BB5\u7684\u603B\u82B1\u8D39\u65F6\u95F4","Auto remove last stage marker":"\u81EA\u52A8\u79FB\u9664\u6700\u540E\u9636\u6BB5\u6807\u8BB0","Automatically remove the last stage marker when a task is completed":"\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u79FB\u9664\u6700\u540E\u9636\u6BB5\u6807\u8BB0","Auto-add next task":"\u81EA\u52A8\u6DFB\u52A0\u4E0B\u4E00\u4EFB\u52A1","Automatically create a new task with the next stage when completing a task":"\u5B8C\u6210\u4EFB\u52A1\u65F6\u81EA\u52A8\u521B\u5EFA\u5177\u6709\u4E0B\u4E00\u9636\u6BB5\u7684\u65B0\u4EFB\u52A1","Workflow definitions":"\u5DE5\u4F5C\u6D41\u5B9A\u4E49","Configure workflow templates for different types of processes":"\u4E3A\u4E0D\u540C\u7C7B\u578B\u7684\u6D41\u7A0B\u914D\u7F6E\u5DE5\u4F5C\u6D41\u6A21\u677F","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u5C1A\u672A\u521B\u5EFA\u5DE5\u4F5C\u6D41\u5B9A\u4E49\u3002\u70B9\u51FB'\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41'\u521B\u5EFA\u4E00\u4E2A\u3002","Edit workflow":"\u7F16\u8F91\u5DE5\u4F5C\u6D41","Remove workflow":"\u79FB\u9664\u5DE5\u4F5C\u6D41","Delete workflow":"\u5220\u9664\u5DE5\u4F5C\u6D41",Delete:"\u5220\u9664","Add New Workflow":"\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41","New Workflow":"\u65B0\u5DE5\u4F5C\u6D41","Create New Workflow":"\u521B\u5EFA\u65B0\u5DE5\u4F5C\u6D41","Workflow name":"\u5DE5\u4F5C\u6D41\u540D\u79F0","A descriptive name for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Workflow ID":"\u5DE5\u4F5C\u6D41ID","A unique identifier for the workflow (used in tags)":"\u5DE5\u4F5C\u6D41\u7684\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u7528\u4E8E\u6807\u7B7E\uFF09",Description:"\u63CF\u8FF0","Optional description for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u53EF\u9009\u63CF\u8FF0","Describe the purpose and use of this workflow...":"\u63CF\u8FF0\u6B64\u5DE5\u4F5C\u6D41\u7684\u76EE\u7684\u548C\u7528\u9014...","Workflow Stages":"\u5DE5\u4F5C\u6D41\u9636\u6BB5","No stages defined yet. Add a stage to get started.":"\u5C1A\u672A\u5B9A\u4E49\u9636\u6BB5\u3002\u6DFB\u52A0\u4E00\u4E2A\u9636\u6BB5\u5F00\u59CB\u3002",Edit:"\u7F16\u8F91","Move up":"\u4E0A\u79FB","Move down":"\u4E0B\u79FB","Sub-stage":"\u5B50\u9636\u6BB5","Sub-stage name":"\u5B50\u9636\u6BB5\u540D\u79F0","Sub-stage ID":"\u5B50\u9636\u6BB5ID","Next: ":"\u4E0B\u4E00\u4E2A\uFF1A","Add Sub-stage":"\u6DFB\u52A0\u5B50\u9636\u6BB5","New Sub-stage":"\u65B0\u5B50\u9636\u6BB5","Edit Stage":"\u7F16\u8F91\u9636\u6BB5","Stage name":"\u9636\u6BB5\u540D\u79F0","A descriptive name for this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u9636\u6BB5\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Stage ID":"\u9636\u6BB5ID","A unique identifier for the stage (used in tags)":"\u9636\u6BB5\u7684\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u7528\u4E8E\u6807\u7B7E\uFF09","Stage type":"\u9636\u6BB5\u7C7B\u578B","The type of this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u9636\u6BB5\u7684\u7C7B\u578B","Linear (sequential)":"\u7EBF\u6027\uFF08\u987A\u5E8F\uFF09","Cycle (repeatable)":"\u5FAA\u73AF\uFF08\u53EF\u91CD\u590D\uFF09","Terminal (end stage)":"\u7EC8\u7AEF\uFF08\u7ED3\u675F\u9636\u6BB5\uFF09","Next stage":"\u4E0B\u4E00\u9636\u6BB5","The stage to proceed to after this one":"\u6B64\u9636\u6BB5\u4E4B\u540E\u8981\u8FDB\u884C\u7684\u9636\u6BB5","Sub-stages":"\u5B50\u9636\u6BB5","Define cycle sub-stages (optional)":"\u5B9A\u4E49\u5FAA\u73AF\u5B50\u9636\u6BB5\uFF08\u53EF\u9009\uFF09","No sub-stages defined yet.":"\u5C1A\u672A\u5B9A\u4E49\u5B50\u9636\u6BB5\u3002","Can proceed to":"\u53EF\u4EE5\u8FDB\u884C\u5230","Additional stages that can follow this one (for right-click menu)":"\u53EF\u4EE5\u8DDF\u968F\u6B64\u9636\u6BB5\u7684\u5176\u4ED6\u9636\u6BB5\uFF08\u7528\u4E8E\u53F3\u952E\u83DC\u5355\uFF09","No additional destination stages defined.":"\u672A\u5B9A\u4E49\u5176\u4ED6\u76EE\u6807\u9636\u6BB5\u3002",Remove:"\u79FB\u9664",Add:"\u6DFB\u52A0","Name and ID are required.":"\u540D\u79F0\u548CID\u662F\u5FC5\u9700\u7684\u3002","End of file":"\u6587\u4EF6\u7ED3\u5C3E","Include in cycle":"\u5305\u542B\u5728\u5FAA\u73AF\u4E2D",Preset:"\u9884\u8BBE","Preset name":"\u9884\u8BBE\u540D\u79F0","Edit Filter":"\u7F16\u8F91\u8FC7\u6EE4\u5668","Add New Preset":"\u6DFB\u52A0\u65B0\u9884\u8BBE","New Filter":"\u65B0\u8FC7\u6EE4\u5668","Reset to Default Presets":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u9884\u8BBE","This will replace all your current presets with the default set. Are you sure?":"\u8FD9\u5C06\u66FF\u6362\u60A8\u5F53\u524D\u7684\u6240\u6709\u9884\u8BBE\uFF0C\u5E76\u4F7F\u7528\u9ED8\u8BA4\u8BBE\u7F6E\u3002\u60A8\u786E\u5B9A\u5417\uFF1F","Edit Workflow":"\u7F16\u8F91\u5DE5\u4F5C\u6D41",General:"\u5E38\u89C4","Views & Index":"\u89C6\u56FE\u4E0E\u7D22\u5F15","Progress Display":"\u8FDB\u5EA6\u663E\u793A","Task Management":"\u4EFB\u52A1\u7BA1\u7406",Workflows:"\u5DE5\u4F5C\u6D41","Dates & Priority":"\u65E5\u671F\u4E0E\u4F18\u5148\u7EA7","Quick Capture":"\u5FEB\u901F\u6355\u83B7",Rewards:"\u5956\u52B1",Habits:"\u4E60\u60EF","Calendar Sync":"\u65E5\u5386\u540C\u6B65","Beta Features":"\u6D4B\u8BD5\u529F\u80FD",Projects:"\u9879\u76EE",About:"\u5173\u4E8E","Core Settings":"\u6838\u5FC3\u8BBE\u7F6E","Display & Progress":"\u663E\u793A\u4E0E\u8FDB\u5EA6","Workflow & Automation":"\u5DE5\u4F5C\u6D41\u4E0E\u81EA\u52A8\u5316",Gamification:"\u6E38\u620F\u5316",Integration:"\u96C6\u6210",Advanced:"\u9AD8\u7EA7",Information:"\u4FE1\u606F","Count sub children of current Task":"\u8BA1\u7B97\u5F53\u524D\u4EFB\u52A1\u7684\u5B50\u4EFB\u52A1","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u8FDB\u5EA6\u6761\u65F6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Configure task status settings":"\u914D\u7F6E\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Configure which task markers to count or exclude":"\u914D\u7F6E\u8981\u8BA1\u7B97\u6216\u6392\u9664\u7684\u4EFB\u52A1\u6807\u8BB0","File Filter":"\u6587\u4EF6\u8FC7\u6EE4\u5668","Enable File Filter":"\u542F\u7528\u6587\u4EF6\u8FC7\u6EE4\u5668","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5728\u4EFB\u52A1\u7D22\u5F15\u671F\u95F4\u542F\u7528\u6587\u4EF6\u548C\u6587\u4EF6\u5939\u8FC7\u6EE4\u3002\u8FD9\u53EF\u4EE5\u663E\u8457\u63D0\u9AD8\u5927\u578B\u5E93\u7684\u6027\u80FD\u3002","File Filter Mode":"\u8FC7\u6EE4\u6A21\u5F0F","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u9009\u62E9\u662F\u4EC5\u5305\u542B\u6307\u5B9A\u7684\u6587\u4EF6/\u6587\u4EF6\u5939\uFF08\u767D\u540D\u5355\uFF09\u8FD8\u662F\u6392\u9664\u5B83\u4EEC\uFF08\u9ED1\u540D\u5355\uFF09","Whitelist (Include only)":"\u767D\u540D\u5355\uFF08\u4EC5\u5305\u542B\uFF09","Blacklist (Exclude)":"\u9ED1\u540D\u5355\uFF08\u6392\u9664\uFF09","File Filter Rules":"\u8FC7\u6EE4\u89C4\u5219","Configure which files and folders to include or exclude from task indexing":"\u914D\u7F6E\u5728\u4EFB\u52A1\u7D22\u5F15\u4E2D\u5305\u542B\u6216\u6392\u9664\u54EA\u4E9B\u6587\u4EF6\u548C\u6587\u4EF6\u5939","Type:":"\u7C7B\u578B\uFF1A","Path:":"\u8DEF\u5F84\uFF1A","Enabled:":"\u542F\u7528\uFF1A","Delete rule":"\u5220\u9664\u89C4\u5219","Add Filter Rule":"\u6DFB\u52A0\u8FC7\u6EE4\u89C4\u5219","Add File Rule":"\u6DFB\u52A0\u6587\u4EF6\u89C4\u5219","Add Folder Rule":"\u6DFB\u52A0\u6587\u4EF6\u5939\u89C4\u5219","Add Pattern Rule":"\u6DFB\u52A0\u6A21\u5F0F\u89C4\u5219","Preset Templates":"\u9884\u8BBE\u6A21\u677F","Quick setup for common filtering scenarios":"\u5E38\u89C1\u8FC7\u6EE4\u573A\u666F\u7684\u5FEB\u901F\u8BBE\u7F6E","Exclude System Folders":"\u6392\u9664\u7CFB\u7EDF\u6587\u4EF6\u5939","Automatically exclude common system folders (.obsidian, .trash, .git) and temporary files":"\u81EA\u52A8\u6392\u9664\u5E38\u89C1\u7CFB\u7EDF\u6587\u4EF6\u5939\uFF08.obsidian\u3001.trash\u3001.git\uFF09\u548C\u4E34\u65F6\u6587\u4EF6","Apply System Exclusions":"\u5E94\u7528\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","This will enable file filtering and add system folder exclusion rules":"\u8FD9\u5C06\u542F\u7528\u6587\u4EF6\u8FC7\u6EE4\u5E76\u6DFB\u52A0\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219","System Folders Already Excluded":"\u7CFB\u7EDF\u6587\u4EF6\u5939\u5DF2\u6392\u9664","All system folder exclusion rules are already configured and active":"\u6240\u6709\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219\u5DF2\u914D\u7F6E\u5E76\u6FC0\u6D3B","File filtering enabled and {{count}} system exclusion rules added":"\u6587\u4EF6\u8FC7\u6EE4\u5DF2\u542F\u7528\uFF0C\u6DFB\u52A0\u4E86 {{count}} \u4E2A\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","File filtering enabled with existing system exclusion rules":"\u6587\u4EF6\u8FC7\u6EE4\u5DF2\u542F\u7528\uFF0C\u4F7F\u7528\u73B0\u6709\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","{{count}} system exclusion rules added":"\u5DF2\u6DFB\u52A0 {{count}} \u4E2A\u7CFB\u7EDF\u6392\u9664\u89C4\u5219","System exclusion rules updated":"\u7CFB\u7EDF\u6392\u9664\u89C4\u5219\u5DF2\u66F4\u65B0","System folder exclusions added":"\u5DF2\u6DFB\u52A0\u7CFB\u7EDF\u6587\u4EF6\u5939\u6392\u9664\u89C4\u5219","Active Rules":"\u6D3B\u8DC3\u89C4\u5219","Cache Size":"\u7F13\u5B58\u5927\u5C0F","Task status cycle and marks":"\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u548C\u6807\u8BB0",Version:"\u7248\u672C",Documentation:"\u6587\u6863","View the documentation for this plugin":"\u67E5\u770B\u6B64\u63D2\u4EF6\u7684\u6587\u6863","Open Documentation":"\u6253\u5F00\u6587\u6863","Incomplete tasks":"\u672A\u5B8C\u6210\u7684\u4EFB\u52A1","In progress tasks":"\u8FDB\u884C\u4E2D\u7684\u4EFB\u52A1","Completed tasks":"\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1","All tasks":"\u6240\u6709\u4EFB\u52A1","After heading":"\u6807\u9898\u4E4B\u540E","End of section":"\u7AE0\u8282\u7ED3\u5C3E","Enable text mark in source mode":"\u5728\u6E90\u7801\u6A21\u5F0F\u4E2D\u542F\u7528\u6587\u672C\u6807\u8BB0","Make the text mark in source mode follow the task status cycle when clicked.":"\u70B9\u51FB\u65F6\u4F7F\u6E90\u7801\u6A21\u5F0F\u4E2D\u7684\u6587\u672C\u6807\u8BB0\u8DDF\u968F\u4EFB\u52A1\u72B6\u6001\u5FAA\u73AF\u3002","Status name":"\u72B6\u6001\u540D\u79F0","Progress display mode":"\u8FDB\u5EA6\u663E\u793A\u6A21\u5F0F","Choose how to display task progress":"\u9009\u62E9\u5982\u4F55\u663E\u793A\u4EFB\u52A1\u8FDB\u5EA6","No progress indicators":"\u65E0\u8FDB\u5EA6\u6307\u793A\u5668","Graphical progress bar":"\u56FE\u5F62\u8FDB\u5EA6\u6761","Text progress indicator":"\u6587\u672C\u8FDB\u5EA6\u6307\u793A\u5668","Both graphical and text":"\u56FE\u5F62\u548C\u6587\u672C\u90FD\u663E\u793A","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u8FDB\u5EA6\u6761\u65F6\u8BA1\u7B97\u5B50\u4EFB\u52A1\u3002","Progress format":"\u8FDB\u5EA6\u683C\u5F0F","Choose how to display the task progress":"\u9009\u62E9\u5982\u4F55\u663E\u793A\u4EFB\u52A1\u8FDB\u5EA6","Percentage (75%)":"\u767E\u5206\u6BD4 (75%)","Bracketed percentage ([75%])":"\u5E26\u62EC\u53F7\u7684\u767E\u5206\u6BD4 ([75%])","Fraction (3/4)":"\u5206\u6570 (3/4)","Bracketed fraction ([3/4])":"\u5E26\u62EC\u53F7\u7684\u5206\u6570 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8BE6\u7EC6 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u81EA\u5B9A\u4E49\u683C\u5F0F","Range-based text":"\u57FA\u4E8E\u8303\u56F4\u7684\u6587\u672C","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u4F7F\u7528\u5360\u4F4D\u7B26\u5982 {{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}} \u7B49\u3002","Preview:":"\u9884\u89C8\uFF1A","Available placeholders":"\u53EF\u7528\u5360\u4F4D\u7B26","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u53EF\u7528\u5360\u4F4D\u7B26\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u8FBE\u5F0F\u793A\u4F8B","Examples of advanced formats using expressions":"\u4F7F\u7528\u8868\u8FBE\u5F0F\u7684\u9AD8\u7EA7\u683C\u5F0F\u793A\u4F8B","Text Progress Bar":"\u6587\u672C\u8FDB\u5EA6\u6761","Emoji Progress Bar":"\u8868\u60C5\u7B26\u53F7\u8FDB\u5EA6\u6761","Color-coded Status":"\u989C\u8272\u7F16\u7801\u72B6\u6001","Status with Icons":"\u5E26\u56FE\u6807\u7684\u72B6\u6001",Preview:"\u9884\u89C8",Use:"\u4F7F\u7528","Save Filter Configuration":"\u4FDD\u5B58\u7B5B\u9009\u5668\u914D\u7F6E","Load Filter Configuration":"\u52A0\u8F7D\u7B5B\u9009\u5668\u914D\u7F6E","Save Current Filter":"\u4FDD\u5B58\u5F53\u524D\u7B5B\u9009\u5668","Load Saved Filter":"\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u7B5B\u9009\u5668","Filter Configuration Name":"\u7B5B\u9009\u5668\u914D\u7F6E\u540D\u79F0","Filter Configuration Description":"\u7B5B\u9009\u5668\u914D\u7F6E\u63CF\u8FF0","Enter a name for this filter configuration":"\u4E3A\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u8F93\u5165\u540D\u79F0","Enter a description for this filter configuration (optional)":"\u4E3A\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u8F93\u5165\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09","No saved filter configurations":"\u6CA1\u6709\u5DF2\u4FDD\u5B58\u7684\u7B5B\u9009\u5668\u914D\u7F6E","Select a saved filter configuration":"\u9009\u62E9\u5DF2\u4FDD\u5B58\u7684\u7B5B\u9009\u5668\u914D\u7F6E","Delete Filter Configuration":"\u5220\u9664\u7B5B\u9009\u5668\u914D\u7F6E","Are you sure you want to delete this filter configuration?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u7B5B\u9009\u5668\u914D\u7F6E\u5417\uFF1F","Filter configuration saved successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u4FDD\u5B58\u6210\u529F","Filter configuration loaded successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u52A0\u8F7D\u6210\u529F","Filter configuration deleted successfully":"\u7B5B\u9009\u5668\u914D\u7F6E\u5220\u9664\u6210\u529F","Failed to save filter configuration":"\u4FDD\u5B58\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Failed to load filter configuration":"\u52A0\u8F7D\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Failed to delete filter configuration":"\u5220\u9664\u7B5B\u9009\u5668\u914D\u7F6E\u5931\u8D25","Filter configuration name is required":"\u7B5B\u9009\u5668\u914D\u7F6E\u540D\u79F0\u662F\u5FC5\u9700\u7684",Created:"\u521B\u5EFA\u65F6\u95F4",Updated:"\u66F4\u65B0\u65F6\u95F4","Filter Summary":"\u7B5B\u9009\u5668\u6458\u8981","Root condition":"\u6839\u6761\u4EF6","Toggle this to show percentage instead of completed/total count.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u663E\u793A\u767E\u5206\u6BD4\u800C\u4E0D\u662F\u5DF2\u5B8C\u6210/\u603B\u8BA1\u6570\u3002","Customize progress ranges":"\u81EA\u5B9A\u4E49\u8FDB\u5EA6\u8303\u56F4","Toggle this to customize the text for different progress ranges.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u81EA\u5B9A\u4E49\u4E0D\u540C\u8FDB\u5EA6\u8303\u56F4\u7684\u6587\u672C\u3002","Apply Theme":"\u5E94\u7528\u4E3B\u9898","Back to main settings":"\u8FD4\u56DE\u4E3B\u8BBE\u7F6E","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u652F\u6301\u5728\u683C\u5F0F\u4E2D\u4F7F\u7528\u8868\u8FBE\u5F0F\uFF0C\u4F8B\u5982\u4F7F\u7528 data.percentages \u83B7\u53D6\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u767E\u5206\u6BD4\u3002\u4F7F\u7528 Math \u6216 Repeat \u51FD\u6570\u6765\u83B7\u53D6\u7ED3\u679C\u3002","Target File:":"\u76EE\u6807\u6587\u4EF6\uFF1A","Task Properties":"\u4EFB\u52A1\u5C5E\u6027","Start Date":"\u5F00\u59CB\u65E5\u671F","Due Date":"\u622A\u6B62\u65E5\u671F","Scheduled Date":"\u8BA1\u5212\u65E5\u671F",Priority:"\u4F18\u5148\u7EA7",None:"\u65E0",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D\u7B49",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u9879\u76EE","Project name":"\u9879\u76EE\u540D\u79F0",Context:"\u4E0A\u4E0B\u6587",Recurrence:"\u91CD\u590D","e.g., every day, every week":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u5468","Task Content":"\u4EFB\u52A1\u5185\u5BB9","Task Details":"\u4EFB\u52A1\u8BE6\u60C5",File:"\u6587\u4EF6","Edit in File":"\u5728\u6587\u4EF6\u4E2D\u7F16\u8F91","Mark Incomplete":"\u6807\u8BB0\u4E3A\u672A\u5B8C\u6210","Mark Complete":"\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210","Task Title":"\u4EFB\u52A1\u6807\u9898",Tags:"\u6807\u7B7E","e.g. every day, every 2 weeks":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u4E24\u5468",Forecast:"\u9884\u6D4B","0 actions, 0 projects":"0 \u4E2A\u884C\u52A8\uFF0C0 \u4E2A\u9879\u76EE","Toggle list/tree view":"\u5207\u6362\u5217\u8868/\u6811\u5F62\u89C6\u56FE","Focusing on Work":"\u4E13\u6CE8\u5DE5\u4F5C",Unfocus:"\u53D6\u6D88\u4E13\u6CE8","Past Due":"\u5DF2\u903E\u671F",Today:"\u4ECA\u5929",Future:"\u672A\u6765",actions:"\u884C\u52A8",project:"\u9879\u76EE","Coming Up":"\u5373\u5C06\u5230\u6765",Task:"\u4EFB\u52A1",Tasks:"\u4EFB\u52A1","No upcoming tasks":"\u6CA1\u6709\u5373\u5C06\u5230\u6765\u7684\u4EFB\u52A1","No tasks scheduled":"\u6CA1\u6709\u8BA1\u5212\u4E2D\u7684\u4EFB\u52A1","0 tasks":"0 \u4E2A\u4EFB\u52A1","Filter tasks...":"\u7B5B\u9009\u4EFB\u52A1...","Toggle multi-select":"\u5207\u6362\u591A\u9009","No projects found":"\u672A\u627E\u5230\u9879\u76EE","projects selected":"\u5DF2\u9009\u62E9\u7684\u9879\u76EE",tasks:"\u4EFB\u52A1","No tasks in the selected projects":"\u6240\u9009\u9879\u76EE\u4E2D\u6CA1\u6709\u4EFB\u52A1","Select a project to see related tasks":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u67E5\u770B\u76F8\u5173\u4EFB\u52A1","Configure Review for":"\u4E3A\u4EE5\u4E0B\u9879\u76EE\u914D\u7F6E\u56DE\u987E","Review Frequency":"\u56DE\u987E\u9891\u7387","How often should this project be reviewed":"\u8FD9\u4E2A\u9879\u76EE\u5E94\u8BE5\u591A\u4E45\u56DE\u987E\u4E00\u6B21","Custom...":"\u81EA\u5B9A\u4E49...","e.g., every 3 months":"\u4F8B\u5982\uFF1A\u6BCF3\u4E2A\u6708","Last Reviewed":"\u4E0A\u6B21\u56DE\u987E","Please specify a review frequency":"\u8BF7\u6307\u5B9A\u56DE\u987E\u9891\u7387","Review schedule updated for":"\u5DF2\u66F4\u65B0\u56DE\u987E\u8BA1\u5212","Review Projects":"\u56DE\u987E\u9879\u76EE","Select a project to review its tasks.":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u56DE\u987E\u5176\u4EFB\u52A1\u3002","Configured for Review":"\u5DF2\u914D\u7F6E\u56DE\u987E","Not Configured":"\u672A\u914D\u7F6E","No projects available.":"\u6CA1\u6709\u53EF\u7528\u7684\u9879\u76EE\u3002","Select a project to review.":"\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u8FDB\u884C\u56DE\u987E\u3002","Show all tasks":"\u663E\u793A\u6240\u6709\u4EFB\u52A1","Showing all tasks, including completed tasks from previous reviews.":"\u663E\u793A\u6240\u6709\u4EFB\u52A1\uFF0C\u5305\u62EC\u4E4B\u524D\u56DE\u987E\u4E2D\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Show only new and in-progress tasks":"\u4EC5\u663E\u793A\u65B0\u4EFB\u52A1\u548C\u8FDB\u884C\u4E2D\u7684\u4EFB\u52A1","No tasks found for this project.":"\u672A\u627E\u5230\u6B64\u9879\u76EE\u7684\u4EFB\u52A1\u3002","Review every":"\u6BCF\u9694\u591A\u4E45\u56DE\u987E",never:"\u4ECE\u4E0D","Last reviewed":"\u4E0A\u6B21\u56DE\u987E","Mark as Reviewed":"\u6807\u8BB0\u4E3A\u5DF2\u56DE\u987E","No review schedule configured for this project":"\u6B64\u9879\u76EE\u672A\u914D\u7F6E\u56DE\u987E\u8BA1\u5212","Configure Review Schedule":"\u914D\u7F6E\u56DE\u987E\u8BA1\u5212","Project Review":"\u9879\u76EE\u56DE\u987E","Select a project from the left sidebar to review its tasks.":"\u4ECE\u5DE6\u4FA7\u8FB9\u680F\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u4EE5\u56DE\u987E\u5176\u4EFB\u52A1\u3002",Inbox:"\u6536\u4EF6\u7BB1",Flagged:"\u5DF2\u6807\u8BB0",Review:"\u56DE\u987E","tags selected":"\u5DF2\u9009\u62E9\u7684\u6807\u7B7E","No tasks with the selected tags":"\u6CA1\u6709\u5E26\u6709\u6240\u9009\u6807\u7B7E\u7684\u4EFB\u52A1","Select a tag to see related tasks":"\u9009\u62E9\u4E00\u4E2A\u6807\u7B7E\u4EE5\u67E5\u770B\u76F8\u5173\u4EFB\u52A1","Open Task Genius view":"\u6253\u5F00 Task Genius \u89C6\u56FE","Task capture with metadata":"\u5E26\u5143\u6570\u636E\u7684\u4EFB\u52A1\u6355\u83B7","Refresh task index":"\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15","Refreshing task index...":"\u6B63\u5728\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15...","Task index refreshed":"\u4EFB\u52A1\u7D22\u5F15\u5DF2\u5237\u65B0","Failed to refresh task index":"\u5237\u65B0\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Force reindex all tasks":"\u5F3A\u5236\u91CD\u5EFA\u6240\u6709\u4EFB\u52A1\u7D22\u5F15","Clearing task cache and rebuilding index...":"\u6B63\u5728\u6E05\u9664\u4EFB\u52A1\u7F13\u5B58\u5E76\u91CD\u5EFA\u7D22\u5F15...","Task index completely rebuilt":"\u4EFB\u52A1\u7D22\u5F15\u5DF2\u5B8C\u5168\u91CD\u5EFA","Failed to force reindex tasks":"\u5F3A\u5236\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Task Genius View":"Task Genius \u89C6\u56FE","Toggle Sidebar":"\u5207\u6362\u4FA7\u8FB9\u680F",Details:"\u8BE6\u60C5",View:"\u89C6\u56FE","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius \u89C6\u56FE\u662F\u4E00\u4E2A\u7EFC\u5408\u89C6\u56FE\uFF0C\u53EF\u4EE5\u8BA9\u60A8\u66F4\u9AD8\u6548\u5730\u7BA1\u7406\u4EFB\u52A1\u3002","Enable task genius view":"\u542F\u7528 Task Genius \u89C6\u56FE","Select a task to view details":"\u9009\u62E9\u4E00\u4E2A\u4EFB\u52A1\u4EE5\u67E5\u770B\u8BE6\u60C5",Status:"\u72B6\u6001","Comma separated":"\u9017\u53F7\u5206\u9694",Focus:"\u4E13\u6CE8","Loading more...":"\u52A0\u8F7D\u66F4\u591A...",projects:"\u9879\u76EE","No tasks for this section.":"\u5F53\u524D\u533A\u95F4\u6CA1\u6709\u4EFB\u52A1","No tasks found.":"\u6CA1\u6709\u4EFB\u52A1",Complete:"\u5B8C\u6210","Switch status":"\u5207\u6362\u72B6\u6001","Rebuild index":"\u91CD\u5EFA\u7D22\u5F15",Rebuild:"\u91CD\u5EFA","0 tasks, 0 projects":"0 \u4E2A\u4EFB\u52A1\uFF0C0 \u4E2A\u9879\u76EE","New Custom View":"\u65B0\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Create Custom View":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Edit View: ":"\u7F16\u8F91\u89C6\u56FE\uFF1A","View Name":"\u89C6\u56FE\u540D\u79F0","My Custom Task View":"\u6211\u7684\u81EA\u5B9A\u4E49\u4EFB\u52A1\u89C6\u56FE","Icon Name":"\u56FE\u6807\u540D\u79F0","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u8F93\u5165\u4EFB\u4F55 Lucide \u56FE\u6807\u540D\u79F0\uFF08\u4F8B\u5982\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u8FC7\u6EE4\u89C4\u5219","Hide Completed and Abandoned Tasks":"\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1","Hide completed and abandoned tasks in this view.":"\u5728\u6B64\u89C6\u56FE\u4E2D\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1\u3002","Text Contains":"\u6587\u672C\u5305\u542B","Filter tasks whose content includes this text (case-insensitive).":"\u8FC7\u6EE4\u5185\u5BB9\u5305\u542B\u6B64\u6587\u672C\u7684\u4EFB\u52A1\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Tags Include":"\u5305\u542B\u6807\u7B7E","Task must include ALL these tags (comma-separated).":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6240\u6709\u8FD9\u4E9B\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002","Tags Exclude":"\u6392\u9664\u6807\u7B7E","Task must NOT include ANY of these tags (comma-separated).":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u4EFB\u4F55\u8FD9\u4E9B\u6807\u7B7E\uFF08\u9017\u53F7\u5206\u9694\uFF09\u3002","Project Is":"\u9879\u76EE\u662F","Task must belong to this project (exact match).":"\u4EFB\u52A1\u5FC5\u987B\u5C5E\u4E8E\u6B64\u9879\u76EE\uFF08\u7CBE\u786E\u5339\u914D\uFF09\u3002","Priority Is":"\u4F18\u5148\u7EA7\u662F","Task must have this priority (e.g., 1, 2, 3).":"\u4EFB\u52A1\u5FC5\u987B\u5177\u6709\u6B64\u4F18\u5148\u7EA7\uFF08\u4F8B\u5982\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u5305\u542B\u72B6\u6001","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u4EFB\u52A1\u72B6\u6001\u5FC5\u987B\u662F\u8FD9\u4E9B\u4E4B\u4E00\uFF08\u9017\u53F7\u5206\u9694\u7684\u6807\u8BB0\uFF0C\u4F8B\u5982\uFF1A/,>\uFF09\u3002","Status Exclude":"\u6392\u9664\u72B6\u6001","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u4EFB\u52A1\u72B6\u6001\u4E0D\u5F97\u662F\u8FD9\u4E9B\u4E4B\u4E00\uFF08\u9017\u53F7\u5206\u9694\u7684\u6807\u8BB0\uFF0C\u4F8B\u5982\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u4F7F\u7528 YYYY-MM-DD \u6216\u76F8\u5BF9\u672F\u8BED\uFF0C\u5982'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'\u4E0B\u5468'\u3001'\u4E0A\u4E2A\u6708'\u3002","Due Date Is":"\u622A\u6B62\u65E5\u671F\u662F","Start Date Is":"\u5F00\u59CB\u65E5\u671F\u662F","Scheduled Date Is":"\u8BA1\u5212\u65E5\u671F\u662F","Path Includes":"\u8DEF\u5F84\u5305\u542B","Task must contain this path (case-insensitive).":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Path Excludes":"\u8DEF\u5F84\u6392\u9664","Task must NOT contain this path (case-insensitive).":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002","Unnamed View":"\u672A\u547D\u540D\u89C6\u56FE","View configuration saved.":"\u89C6\u56FE\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002","Hide Details":"\u9690\u85CF\u8BE6\u60C5","Show Details":"\u663E\u793A\u8BE6\u60C5","View Config":"\u89C6\u56FE\u914D\u7F6E","View Configuration":"\u89C6\u56FE\u914D\u7F6E","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u914D\u7F6E Task Genius \u4FA7\u8FB9\u680F\u89C6\u56FE\u3001\u53EF\u89C1\u6027\u3001\u987A\u5E8F\uFF0C\u5E76\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE\u3002","Manage Views":"\u7BA1\u7406\u89C6\u56FE","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u914D\u7F6E\u4FA7\u8FB9\u680F\u89C6\u56FE\u3001\u987A\u5E8F\u3001\u53EF\u89C1\u6027\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u89C6\u56FE\u4E2D\u9690\u85CF/\u663E\u793A\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Show in sidebar":"\u5728\u4FA7\u8FB9\u680F\u4E2D\u663E\u793A","Edit View":"\u7F16\u8F91\u89C6\u56FE","Move Up":"\u4E0A\u79FB","Move Down":"\u4E0B\u79FB","Delete View":"\u5220\u9664\u89C6\u56FE","Add Custom View":"\u6DFB\u52A0\u81EA\u5B9A\u4E49\u89C6\u56FE","Error: View ID already exists.":"\u9519\u8BEF\uFF1A\u89C6\u56FE ID \u5DF2\u5B58\u5728\u3002",Events:"\u4E8B\u4EF6",Plan:"\u8BA1\u5212",Year:"\u5E74",Month:"\u6708",Week:"\u5468",Day:"\u65E5",Agenda:"\u8BAE\u7A0B","Back to categories":"\u8FD4\u56DE\u5206\u7C7B","No matching options found":"\u672A\u627E\u5230\u5339\u914D\u9009\u9879","No matching filters found":"\u672A\u627E\u5230\u5339\u914D\u8FC7\u6EE4\u5668",Tag:"\u6807\u7B7E","File Path":"\u6587\u4EF6\u8DEF\u5F84","Add filter":"\u6DFB\u52A0\u8FC7\u6EE4\u5668","Clear all":"\u6E05\u9664\u5168\u90E8","Add Card":"\u6DFB\u52A0\u5361\u7247","First Day of Week":"\u6BCF\u5468\u7B2C\u4E00\u5929","Overrides the locale default for calendar views.":"\u8986\u76D6\u65E5\u5386\u89C6\u56FE\u7684\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Show checkbox":"\u663E\u793A\u590D\u9009\u6846","Show a checkbox for each task in the kanban view.":"\u5728\u770B\u677F\u89C6\u56FE\u4E2D\u4E3A\u6BCF\u4E2A\u4EFB\u52A1\u663E\u793A\u590D\u9009\u6846\u3002","Locale Default":"\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E","Use custom goal for progress bar":"\u4E3A\u8FDB\u5EA6\u6761\u4F7F\u7528\u81EA\u5B9A\u4E49\u76EE\u6807","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5C06 g::number \u6A21\u5F0F\u8BC6\u522B\u4E3A\u7236\u4EFB\u52A1\u7684\u76EE\u6807\u3002","Prefer metadata format of task":"\u9996\u9009\u4EFB\u52A1\u7684\u5143\u6570\u636E\u683C\u5F0F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u60A8\u53EF\u4EE5\u9009\u62E9 dataview \u683C\u5F0F\u6216 tasks \u683C\u5F0F\uFF0C\u8FD9\u5C06\u5F71\u54CD\u7D22\u5F15\u548C\u4FDD\u5B58\u683C\u5F0F\u3002","Task Parser Configuration":"\u4EFB\u52A1\u89E3\u6790\u5668\u914D\u7F6E","Configure how task metadata is parsed and recognized.":"\u914D\u7F6E\u4EFB\u52A1\u5143\u6570\u636E\u7684\u89E3\u6790\u548C\u8BC6\u522B\u65B9\u5F0F\u3002","Project tag prefix":"\u9879\u76EE\u6807\u7B7E\u524D\u7F00","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u9879\u76EE\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'project' \u5BF9\u5E94 #project/myproject\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u9879\u76EE\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'project' \u5BF9\u5E94 [project:: myproject]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Context tag prefix":"\u4E0A\u4E0B\u6587\u6807\u7B7E\u524D\u7F00","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Note: emoji format always uses @ prefix. Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u4E0A\u4E0B\u6587\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'context' \u5BF9\u5E94 [context:: home]\uFF09\u3002\u6CE8\u610F\uFF1Aemoji \u683C\u5F0F\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Context tags in emoji format always use @ prefix (not configurable). This setting only affects dataview format. Changes require reindexing.":"emoji \u683C\u5F0F\u4E2D\u7684\u4E0A\u4E0B\u6587\u6807\u7B7E\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00\uFF08\u4E0D\u53EF\u914D\u7F6E\uFF09\u3002\u6B64\u8BBE\u7F6E\u4EC5\u5F71\u54CD dataview \u683C\u5F0F\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Area tag prefix":"\u533A\u57DF\u6807\u7B7E\u524D\u7F00","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u533A\u57DF\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'area' \u5BF9\u5E94 #area/work\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"\u81EA\u5B9A\u4E49 dataview \u683C\u5F0F\u4E2D\u533A\u57DF\u6807\u7B7E\u4F7F\u7528\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'area' \u5BF9\u5E94 [area:: work]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Format Examples:":"\u683C\u5F0F\u793A\u4F8B\uFF1A","always uses @ prefix":"\u59CB\u7EC8\u4F7F\u7528 @ \u524D\u7F00","Open in new tab":"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00","Open settings":"\u6253\u5F00\u8BBE\u7F6E","Hide in sidebar":"\u5728\u4FA7\u8FB9\u680F\u4E2D\u9690\u85CF","No items found":"\u672A\u627E\u5230\u9879\u76EE","High Priority":"\u9AD8\u4F18\u5148\u7EA7","Medium Priority":"\u4E2D\u4F18\u5148\u7EA7","Low Priority":"\u4F4E\u4F18\u5148\u7EA7","No tasks in the selected items":"\u6240\u9009\u9879\u76EE\u4E2D\u6CA1\u6709\u4EFB\u52A1","View Type":"\u89C6\u56FE\u7C7B\u578B","Select the type of view to create":"\u9009\u62E9\u8981\u521B\u5EFA\u7684\u89C6\u56FE\u7C7B\u578B","Standard View":"\u6807\u51C6\u89C6\u56FE","Two Column View":"\u53CC\u5217\u89C6\u56FE",Items:"\u9879\u76EE","selected items":"\u5DF2\u9009\u9879\u76EE","No items selected":"\u672A\u9009\u62E9\u9879\u76EE","Two Column View Settings":"\u53CC\u5217\u89C6\u56FE\u8BBE\u7F6E","Group by Task Property":"\u6309\u4EFB\u52A1\u5C5E\u6027\u5206\u7EC4","Select which task property to use for left column grouping":"\u9009\u62E9\u7528\u4E8E\u5DE6\u5217\u5206\u7EC4\u7684\u4EFB\u52A1\u5C5E\u6027",Priorities:"\u4F18\u5148\u7EA7",Contexts:"\u4E0A\u4E0B\u6587","Due Dates":"\u622A\u6B62\u65E5\u671F","Scheduled Dates":"\u8BA1\u5212\u65E5\u671F","Start Dates":"\u5F00\u59CB\u65E5\u671F",Files:"\u6587\u4EF6","Left Column Title":"\u5DE6\u5217\u6807\u9898","Title for the left column (items list)":"\u5DE6\u5217\u6807\u9898\uFF08\u9879\u76EE\u5217\u8868\uFF09","Right Column Title":"\u53F3\u5217\u6807\u9898","Default title for the right column (tasks list)":"\u53F3\u5217\u9ED8\u8BA4\u6807\u9898\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","Multi-select Text":"\u591A\u9009\u6587\u672C","Text to show when multiple items are selected":"\u9009\u62E9\u591A\u4E2A\u9879\u76EE\u65F6\u663E\u793A\u7684\u6587\u672C","Empty State Text":"\u7A7A\u72B6\u6001\u6587\u672C","Text to show when no items are selected":"\u672A\u9009\u62E9\u9879\u76EE\u65F6\u663E\u793A\u7684\u6587\u672C","Filter Blanks":"\u8FC7\u6EE4\u7A7A\u767D\u4EFB\u52A1","Filter out blank tasks in this view.":"\u5728\u6B64\u89C6\u56FE\u4E2D\u8FC7\u6EE4\u6389\u7A7A\u767D\u4EFB\u52A1\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52A1\u5FC5\u987B\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002\u591A\u4E2A\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52A1\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F84\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u3002\u591A\u4E2A\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\u3002","You have unsaved changes. Save before closing?":"\u60A8\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539\u3002\u5173\u95ED\u524D\u4FDD\u5B58\u5417\uFF1F",Rotate:"\u65CB\u8F6C","Are you sure you want to force reindex all tasks?":"\u60A8\u786E\u5B9A\u8981\u5F3A\u5236\u91CD\u65B0\u7D22\u5F15\u6240\u6709\u4EFB\u52A1\u5417\uFF1F","Enable progress bar in reading mode":"\u5728\u9605\u8BFB\u6A21\u5F0F\u4E2D\u542F\u7528\u8FDB\u5EA6\u6761","Toggle this to allow this plugin to show progress bars in reading mode.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u63D2\u4EF6\u5728\u9605\u8BFB\u6A21\u5F0F\u4E2D\u663E\u793A\u8FDB\u5EA6\u6761\u3002",Range:"\u8303\u56F4","as a placeholder for the percentage value":"\u4F5C\u4E3A\u767E\u5206\u6BD4\u503C\u7684\u5360\u4F4D\u7B26","Template text with":"\u5E26\u6709\u5360\u4F4D\u7B26\u7684\u6A21\u677F\u6587\u672C",placeholder:"\u5360\u4F4D\u7B26",Reindex:"\u91CD\u5EFA\u7D22\u5F15","From now":"\u4ECE\u73B0\u5728","Complete workflow":"\u5B8C\u6210\u5DE5\u4F5C\u6D41","Move to":"\u79FB\u52A8\u5230",Settings:"\u8BBE\u7F6E","Just started":"\u521A\u521A\u5F00\u59CB","Making progress":"\u6B63\u5728\u8FDB\u884C\u4E2D","Half way":"\u5B8C\u6210\u4E00\u534A","Good progress":"\u8FDB\u5C55\u826F\u597D","Almost there":"\u5373\u5C06\u5B8C\u6210","archived on":"\u5F52\u6863\u4E8E",moved:"\u5DF2\u79FB\u52A8","Capture your thoughts...":"\u8BB0\u5F55\u4F60\u7684\u60F3\u6CD5...","Project Workflow":"\u9879\u76EE\u5DE5\u4F5C\u6D41","Standard project management workflow":"\u6807\u51C6\u9879\u76EE\u7BA1\u7406\u5DE5\u4F5C\u6D41",Planning:"\u89C4\u5212\u4E2D",Development:"\u5F00\u53D1\u4E2D",Testing:"\u6D4B\u8BD5\u4E2D",Cancelled:"\u5DF2\u53D6\u6D88",Habit:"\u4E60\u60EF","Drink a cup of good tea":"\u559D\u4E00\u676F\u597D\u8336","Watch an episode of a favorite series":"\u89C2\u770B\u4E00\u96C6\u559C\u6B22\u7684\u5267\u96C6","Play a game":"\u73A9\u4E00\u5C40\u6E38\u620F","Eat a piece of chocolate":"\u5403\u4E00\u5757\u5DE7\u514B\u529B",common:"\u666E\u901A",rare:"\u7A00\u6709",legendary:"\u4F20\u5947","No Habits Yet":"\u6682\u65E0\u4E60\u60EF","Click the open habit button to create a new habit.":"\u70B9\u51FB\u6253\u5F00\u4E60\u60EF\u6309\u94AE\u521B\u5EFA\u65B0\u4E60\u60EF\u3002","Please enter details":"\u8BF7\u8F93\u5165\u8BE6\u60C5","Goal reached":"\u76EE\u6807\u8FBE\u6210","Exceeded goal":"\u8D85\u51FA\u76EE\u6807",Active:"\u6D3B\u8DC3",today:"\u4ECA\u5929",Inactive:"\u4E0D\u6D3B\u8DC3","All Done!":"\u5168\u90E8\u5B8C\u6210\uFF01","Select event...":"\u9009\u62E9\u4E8B\u4EF6...","Create new habit":"\u521B\u5EFA\u65B0\u4E60\u60EF","Edit habit":"\u7F16\u8F91\u4E60\u60EF","Habit type":"\u4E60\u60EF\u7C7B\u578B","Daily habit":"\u6BCF\u65E5\u4E60\u60EF","Simple daily check-in habit":"\u7B80\u5355\u7684\u6BCF\u65E5\u6253\u5361\u4E60\u60EF","Count habit":"\u8BA1\u6570\u4E60\u60EF","Record numeric values, e.g., how many cups of water":"\u8BB0\u5F55\u6570\u503C\uFF0C\u4F8B\u5982\u559D\u4E86\u591A\u5C11\u676F\u6C34","Mapping habit":"\u6620\u5C04\u4E60\u60EF","Use different values to map, e.g., emotion tracking":"\u4F7F\u7528\u4E0D\u540C\u7684\u503C\u8FDB\u884C\u6620\u5C04\uFF0C\u4F8B\u5982\u60C5\u7EEA\u8FFD\u8E2A","Scheduled habit":"\u8BA1\u5212\u4E60\u60EF","Habit with multiple events":"\u5305\u542B\u591A\u4E2A\u4E8B\u4EF6\u7684\u4E60\u60EF","Habit name":"\u4E60\u60EF\u540D\u79F0","Display name of the habit":"\u4E60\u60EF\u7684\u663E\u793A\u540D\u79F0","Optional habit description":"\u53EF\u9009\u7684\u4E60\u60EF\u63CF\u8FF0",Icon:"\u56FE\u6807","Please enter a habit name":"\u8BF7\u8F93\u5165\u4E60\u60EF\u540D\u79F0","Property name":"\u5C5E\u6027\u540D\u79F0","The property name of the daily note front matter":"\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u7684\u5C5E\u6027\u540D\u79F0","Completion text":"\u5B8C\u6210\u6587\u672C","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u53EF\u9009\uFF09\u8868\u793A\u5B8C\u6210\u7684\u7279\u5B9A\u6587\u672C\uFF0C\u7559\u7A7A\u5219\u4EFB\u4F55\u975E\u7A7A\u503C\u90FD\u89C6\u4E3A\u5DF2\u5B8C\u6210","The property name in daily note front matter to store count values":"\u5728\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u5B58\u50A8\u8BA1\u6570\u503C\u7684\u5C5E\u6027\u540D\u79F0","Minimum value":"\u6700\u5C0F\u503C","(Optional) Minimum value for the count":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u6700\u5C0F\u503C","Maximum value":"\u6700\u5927\u503C","(Optional) Maximum value for the count":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u6700\u5927\u503C",Unit:"\u5355\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u53EF\u9009\uFF09\u8BA1\u6570\u7684\u5355\u4F4D\uFF0C\u5982'\u676F'\u3001'\u6B21'\u7B49","Notice threshold":"\u63D0\u9192\u9608\u503C","(Optional) Trigger a notification when this value is reached":"\uFF08\u53EF\u9009\uFF09\u5F53\u8FBE\u5230\u6B64\u503C\u65F6\u89E6\u53D1\u901A\u77E5","The property name in daily note front matter to store mapping values":"\u5728\u65E5\u8BB0\u524D\u7F6E\u5143\u6570\u636E\u4E2D\u5B58\u50A8\u6620\u5C04\u503C\u7684\u5C5E\u6027\u540D\u79F0","Value mapping":"\u503C\u6620\u5C04","Define mappings from numeric values to display text":"\u5B9A\u4E49\u4ECE\u6570\u503C\u5230\u663E\u793A\u6587\u672C\u7684\u6620\u5C04","Add new mapping":"\u6DFB\u52A0\u65B0\u6620\u5C04","Scheduled events":"\u8BA1\u5212\u4E8B\u4EF6","Add multiple events that need to be completed":"\u6DFB\u52A0\u9700\u8981\u5B8C\u6210\u7684\u591A\u4E2A\u4E8B\u4EF6","Event name":"\u4E8B\u4EF6\u540D\u79F0","Event details":"\u4E8B\u4EF6\u8BE6\u60C5","Add new event":"\u6DFB\u52A0\u65B0\u4E8B\u4EF6","Please enter a property name":"\u8BF7\u8F93\u5165\u5C5E\u6027\u540D\u79F0","Please add at least one mapping value":"\u8BF7\u81F3\u5C11\u6DFB\u52A0\u4E00\u4E2A\u6620\u5C04\u503C","Mapping key must be a number":"\u6620\u5C04\u952E\u5FC5\u987B\u662F\u6570\u5B57","Please enter text for all mapping values":"\u8BF7\u4E3A\u6240\u6709\u6620\u5C04\u503C\u8F93\u5165\u6587\u672C","Please add at least one event":"\u8BF7\u81F3\u5C11\u6DFB\u52A0\u4E00\u4E2A\u4E8B\u4EF6","Event name cannot be empty":"\u4E8B\u4EF6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A","Add new habit":"\u6DFB\u52A0\u65B0\u4E60\u60EF","No habits yet":"\u6682\u65E0\u4E60\u60EF","Click the button above to add your first habit":"\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u6DFB\u52A0\u4F60\u7684\u7B2C\u4E00\u4E2A\u4E60\u60EF","Habit updated":"\u4E60\u60EF\u5DF2\u66F4\u65B0","Habit added":"\u4E60\u60EF\u5DF2\u6DFB\u52A0","Delete habit":"\u5220\u9664\u4E60\u60EF","This action cannot be undone.":"\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002","Habit deleted":"\u4E60\u60EF\u5DF2\u5220\u9664","You've Earned a Reward!":"\u4F60\u83B7\u5F97\u4E86\u4E00\u4E2A\u5956\u52B1\uFF01","Your reward:":"\u4F60\u7684\u5956\u52B1\uFF1A","Image not found:":"\u672A\u627E\u5230\u56FE\u7247\uFF1A","Claim Reward":"\u9886\u53D6\u5956\u52B1",Skip:"\u8DF3\u8FC7",Reward:"\u5956\u52B1","View & Index Configuration":"\u89C6\u56FE\u4E0E\u7D22\u5F15\u914D\u7F6E","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u542F\u7528 Task Genius \u89C6\u56FE\u4E5F\u5C06\u542F\u7528 Task Genius \u7D22\u5F15\u5668\uFF0C\u5B83\u5C06\u63D0\u4F9B\u6765\u81EA\u6574\u4E2A\u4FDD\u9669\u5E93\u7684 Task Genius \u89C6\u56FE\u7ED3\u679C\u3002","Use daily note path as date":"\u4F7F\u7528\u65E5\u8BB0\u8DEF\u5F84\u4F5C\u4E3A\u65E5\u671F","If enabled, the daily note path will be used as the date for tasks.":"\u5982\u679C\u542F\u7528\uFF0C\u65E5\u8BB0\u8DEF\u5F84\u5C06\u7528\u4F5C\u4EFB\u52A1\u7684\u65E5\u671F\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":" Task Genius \u5C06\u4F7F\u7528moment.js\u548C\u6B64\u683C\u5F0F\u89E3\u6790\u65E5\u8BB0\u8DEF\u5F84\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5728\u683C\u5F0F\u5B57\u7B26\u4E32\u4E2D\u9700\u8981\u4F7F\u7528`yyyy`\u800C\u4E0D\u662F`YYYY`\uFF0C\u4F7F\u7528`dd`\u800C\u4E0D\u662F`DD`\u3002","Daily note format":"\u65E5\u8BB0\u683C\u5F0F","Daily note path":"\u65E5\u8BB0\u8DEF\u5F84","Select the folder that contains the daily note.":"\u9009\u62E9\u5305\u542B\u65E5\u8BB0\u7684\u6587\u4EF6\u5939\u3002","Use as date type":"\u7528\u4F5C\u65E5\u671F\u7C7B\u578B","You can choose due, start, or scheduled as the date type for tasks.":"\u4F60\u53EF\u4EE5\u9009\u62E9\u622A\u6B62\u65E5\u671F\u3001\u5F00\u59CB\u65E5\u671F\u6216\u8BA1\u5212\u65E5\u671F\u4F5C\u4E3A\u4EFB\u52A1\u7684\u65E5\u671F\u7C7B\u578B\u3002",Due:"\u622A\u6B62",Start:"\u5F00\u59CB",Scheduled:"\u8BA1\u5212","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u914D\u7F6E\u5B8C\u6210\u4EFB\u52A1\u7684\u5956\u52B1\u3002\u5B9A\u4E49\u9879\u76EE\u3001\u5B83\u4EEC\u7684\u51FA\u73B0\u51E0\u7387\u548C\u6761\u4EF6\u3002","Enable Rewards":"\u542F\u7528\u5956\u52B1","Toggle to enable or disable the reward system.":"\u5207\u6362\u4EE5\u542F\u7528\u6216\u7981\u7528\u5956\u52B1\u7CFB\u7EDF\u3002","Occurrence Levels":"\u51FA\u73B0\u7B49\u7EA7","Define different levels of reward rarity and their probability.":"\u5B9A\u4E49\u4E0D\u540C\u7B49\u7EA7\u7684\u5956\u52B1\u7A00\u6709\u5EA6\u53CA\u5176\u6982\u7387\u3002","Chance must be between 0 and 100.":"\u51E0\u7387\u5FC5\u987B\u57280\u5230100\u4E4B\u95F4\u3002","Level Name (e.g., common)":"\u7B49\u7EA7\u540D\u79F0\uFF08\u4F8B\u5982\uFF0C\u666E\u901A\uFF09","Chance (%)":"\u51E0\u7387\uFF08%\uFF09","Delete Level":"\u5220\u9664\u7B49\u7EA7","Add Occurrence Level":"\u6DFB\u52A0\u51FA\u73B0\u7B49\u7EA7","New Level":"\u65B0\u7B49\u7EA7","Reward Items":"\u5956\u52B1\u9879\u76EE","Manage the specific rewards that can be obtained.":"\u7BA1\u7406\u53EF\u4EE5\u83B7\u5F97\u7684\u7279\u5B9A\u5956\u52B1\u3002","No levels defined":"\u672A\u5B9A\u4E49\u7B49\u7EA7","Reward Name/Text":"\u5956\u52B1\u540D\u79F0/\u6587\u672C","Inventory (-1 for \u221E)":"\u5E93\u5B58\uFF08-1\u8868\u793A\u65E0\u9650\uFF09","Invalid inventory number.":"\u65E0\u6548\u7684\u5E93\u5B58\u6570\u91CF\u3002","Condition (e.g., #tag AND project)":"\u6761\u4EF6\uFF08\u4F8B\u5982\uFF0C#\u6807\u7B7E AND \u9879\u76EE\uFF09","Image URL (optional)":"\u56FE\u7247URL\uFF08\u53EF\u9009\uFF09","Delete Reward Item":"\u5220\u9664\u5956\u52B1\u9879\u76EE","No reward items defined yet.":"\u5C1A\u672A\u5B9A\u4E49\u5956\u52B1\u9879\u76EE\u3002","Add Reward Item":"\u6DFB\u52A0\u5956\u52B1\u9879\u76EE","New Reward":"\u65B0\u5956\u52B1","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u914D\u7F6E\u4E60\u60EF\u8BBE\u7F6E\uFF0C\u5305\u62EC\u6DFB\u52A0\u65B0\u4E60\u60EF\u3001\u7F16\u8F91\u73B0\u6709\u4E60\u60EF\u548C\u7BA1\u7406\u4E60\u60EF\u5B8C\u6210\u60C5\u51B5\u3002","Enable habits":"\u542F\u7528\u4E60\u60EF","Task sorting is disabled or no sort criteria are defined in settings.":"\u4EFB\u52A1\u6392\u5E8F\u5DF2\u7981\u7528\u6216\u8BBE\u7F6E\u4E2D\u672A\u5B9A\u4E49\u6392\u5E8F\u6761\u4EF6\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\u5982 #\u6807\u7B7E1, #\u6807\u7B7E2, #\u6807\u7B7E3",Overdue:"\u903E\u671F","No tasks found for this tag.":"\u672A\u627E\u5230\u6B64\u6807\u7B7E\u7684\u4EFB\u52A1\u3002","New custom view":"\u65B0\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Create custom view":"\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Edit view: ":"\u7F16\u8F91\u89C6\u56FE\uFF1A","Icon name":"\u56FE\u6807\u540D\u79F0","First day of week":"\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Overrides the locale default for forecast views.":"\u8986\u76D6\u9884\u6D4B\u89C6\u56FE\u7684\u533A\u57DF\u9ED8\u8BA4\u8BBE\u7F6E\u3002","View type":"\u89C6\u56FE\u7C7B\u578B","Standard view":"\u6807\u51C6\u89C6\u56FE","Two column view":"\u53CC\u5217\u89C6\u56FE","Two column view settings":"\u53CC\u5217\u89C6\u56FE\u8BBE\u7F6E","Group by task property":"\u6309\u4EFB\u52A1\u5C5E\u6027\u5206\u7EC4","Left column title":"\u5DE6\u5217\u6807\u9898","Right column title":"\u53F3\u5217\u6807\u9898","Empty state text":"\u7A7A\u72B6\u6001\u6587\u672C","Hide completed and abandoned tasks":"\u9690\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u5F03\u7684\u4EFB\u52A1","Filter blanks":"\u8FC7\u6EE4\u7A7A\u767D","Text contains":"\u6587\u672C\u5305\u542B","Tags include":"\u6807\u7B7E\u5305\u542B","Tags exclude":"\u6807\u7B7E\u6392\u9664","Project is":"\u9879\u76EE\u662F","Priority is":"\u4F18\u5148\u7EA7\u662F","Status include":"\u72B6\u6001\u5305\u542B","Status exclude":"\u72B6\u6001\u6392\u9664","Due date is":"\u622A\u6B62\u65E5\u671F\u662F","Start date is":"\u5F00\u59CB\u65E5\u671F\u662F","Scheduled date is":"\u8BA1\u5212\u65E5\u671F\u662F","Path includes":"\u8DEF\u5F84\u5305\u542B","Path excludes":"\u8DEF\u5F84\u6392\u9664","Sort Criteria":"\u6392\u5E8F\u6761\u4EF6","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u5B9A\u4E49\u4EFB\u52A1\u6392\u5E8F\u7684\u987A\u5E8F\u3002\u6761\u4EF6\u6309\u987A\u5E8F\u5E94\u7528\u3002","No sort criteria defined. Add criteria below.":"\u672A\u5B9A\u4E49\u6392\u5E8F\u6761\u4EF6\u3002\u5728\u4E0B\u65B9\u6DFB\u52A0\u6761\u4EF6\u3002",Content:"\u5185\u5BB9",Ascending:"\u5347\u5E8F",Descending:"\u964D\u5E8F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u5347\u5E8F\uFF1A\u9AD8 -> \u4F4E -> \u65E0\u3002\u964D\u5E8F\uFF1A\u65E0 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u5347\u5E8F\uFF1A\u8F83\u65E9 -> \u8F83\u665A -> \u65E0\u3002\u964D\u5E8F\uFF1A\u65E0 -> \u8F83\u665A -> \u8F83\u65E9","Ascending respects status order (Overdue first). Descending reverses it.":"\u5347\u5E8F\u9075\u5FAA\u72B6\u6001\u987A\u5E8F\uFF08\u903E\u671F\u4F18\u5148\uFF09\u3002\u964D\u5E8F\u5219\u76F8\u53CD\u3002","Ascending: A-Z. Descending: Z-A":"\u5347\u5E8F\uFF1AA-Z\u3002\u964D\u5E8F\uFF1AZ-A","Remove Criterion":"\u79FB\u9664\u6761\u4EF6","Add Sort Criterion":"\u6DFB\u52A0\u6392\u5E8F\u6761\u4EF6","Reset to Defaults":"\u91CD\u7F6E\u4E3A\u9ED8\u8BA4\u503C","Has due date":"\u6709\u622A\u6B62\u65E5\u671F","Has date":"\u6709\u65E5\u671F","No date":"\u65E0\u65E5\u671F",Any:"\u4EFB\u610F","Has start date":"\u6709\u5F00\u59CB\u65E5\u671F","Has scheduled date":"\u6709\u8BA1\u5212\u65E5\u671F","Has created date":"\u6709\u521B\u5EFA\u65E5\u671F","Has completed date":"\u6709\u5B8C\u6210\u65E5\u671F","Only show tasks that match the completed date.":"\u4EC5\u663E\u793A\u5339\u914D\u5B8C\u6210\u65E5\u671F\u7684\u4EFB\u52A1\u3002","Has recurrence":"\u6709\u91CD\u590D","Has property":"\u6709\u5C5E\u6027","No property":"\u65E0\u5C5E\u6027","Unsaved Changes":"\u672A\u4FDD\u5B58\u7684\u66F4\u6539","Sort Tasks in Section":"\u5BF9\u533A\u95F4\u4E2D\u7684\u4EFB\u52A1\u6392\u5E8F","Tasks sorted (using settings). Change application needs refinement.":"\u4EFB\u52A1\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8BBE\u7F6E\uFF09\u3002\u66F4\u6539\u5E94\u7528\u9700\u8981\u5B8C\u5584\u3002","Sort Tasks in Entire Document":"\u5BF9\u6574\u4E2A\u6587\u6863\u4E2D\u7684\u4EFB\u52A1\u6392\u5E8F","Entire document sorted (using settings).":"\u6574\u4E2A\u6587\u6863\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8BBE\u7F6E\uFF09\u3002","Tasks already sorted or no tasks found.":"\u4EFB\u52A1\u5DF2\u6392\u5E8F\u6216\u672A\u627E\u5230\u4EFB\u52A1\u3002","Task Handler":"\u4EFB\u52A1\u5904\u7406\u5668","Show progress bars based on heading":"\u57FA\u4E8E\u6807\u9898\u663E\u793A\u8FDB\u5EA6\u6761","Toggle this to enable showing progress bars based on heading.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u57FA\u4E8E\u6807\u9898\u663E\u793A\u8FDB\u5EA6\u6761\u3002","# heading":"# \u6807\u9898","Task Sorting":"\u4EFB\u52A1\u6392\u5E8F","Configure how tasks are sorted in the document.":"\u914D\u7F6E\u6587\u6863\u4E2D\u4EFB\u52A1\u7684\u6392\u5E8F\u65B9\u5F0F\u3002","Enable Task Sorting":"\u542F\u7528\u4EFB\u52A1\u6392\u5E8F","Toggle this to enable commands for sorting tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u6392\u5E8F\u4EFB\u52A1\u7684\u547D\u4EE4\u3002","Use relative time for date":"\u4F7F\u7528\u76F8\u5BF9\u65F6\u95F4\u8868\u793A\u65E5\u671F","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u5728\u4EFB\u52A1\u5217\u8868\u9879\u4E2D\u4F7F\u7528\u76F8\u5BF9\u65F6\u95F4\u8868\u793A\u65E5\u671F\uFF0C\u4F8B\u5982 '\u6628\u5929'\u3001'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'2\u5929\u540E'\u3001'3\u4E2A\u6708\u524D' \u7B49\u3002","Enable inline editor":"\u542F\u7528\u5185\u8054\u7F16\u8F91\u5668","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u5728\u4EFB\u52A1\u89C6\u56FE\u4E2D\u542F\u7528\u4EFB\u52A1\u5185\u5BB9\u548C\u5143\u6570\u636E\u7684\u5185\u8054\u7F16\u8F91\u3002\u7981\u7528\u65F6\uFF0C\u4EFB\u52A1\u53EA\u80FD\u5728\u6E90\u6587\u4EF6\u4E2D\u7F16\u8F91\u3002","Ignore all tasks behind heading":"\u5FFD\u7565\u6807\u9898\u540E\u7684\u6240\u6709\u4EFB\u52A1","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u8F93\u5165\u8981\u5FFD\u7565\u7684\u6807\u9898\uFF0C\u4F8B\u5982 '## \u9879\u76EE','## \u6536\u4EF6\u7BB1'\uFF0C\u7528\u9017\u53F7\u5206\u9694","Focus all tasks behind heading":"\u805A\u7126\u6807\u9898\u540E\u7684\u6240\u6709\u4EFB\u52A1","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u8F93\u5165\u8981\u805A\u7126\u7684\u6807\u9898\uFF0C\u4F8B\u5982 '## \u9879\u76EE','## \u6536\u4EF6\u7BB1'\uFF0C\u7528\u9017\u53F7\u5206\u9694","Enable rewards":"\u542F\u7528\u5956\u52B1","Reward display type":"\u5956\u52B1\u663E\u793A\u7C7B\u578B","Choose how rewards are displayed when earned.":"\u9009\u62E9\u83B7\u5F97\u5956\u52B1\u65F6\u7684\u663E\u793A\u65B9\u5F0F\u3002","Modal dialog":"\u6A21\u6001\u5BF9\u8BDD\u6846","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52A8\u63A5\u53D7\uFF09","Occurrence levels":"\u51FA\u73B0\u7B49\u7EA7","Add occurrence level":"\u6DFB\u52A0\u51FA\u73B0\u7B49\u7EA7","Reward items":"\u5956\u52B1\u9879\u76EE","Image url (optional)":"\u56FE\u7247URL(\u53EF\u9009)","Delete reward item":"\u5220\u9664\u5956\u52B1\u9879\u76EE","Add reward item":"\u6DFB\u52A0\u5956\u52B1\u9879\u76EE","moved on":"\u79FB\u52A8\u4E8E","Priority (High to Low)":"\u4F18\u5148\u7EA7\uFF08\u9AD8\u5230\u4F4E\uFF09","Priority (Low to High)":"\u4F18\u5148\u7EA7\uFF08\u4F4E\u5230\u9AD8\uFF09","Due Date (Earliest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Due Date (Latest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Scheduled Date (Earliest First)":"\u8BA1\u5212\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Scheduled Date (Latest First)":"\u8BA1\u5212\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Start Date (Earliest First)":"\u5F00\u59CB\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Start Date (Latest First)":"\u5F00\u59CB\u65E5\u671F\uFF08\u6700\u665A\u4F18\u5148\uFF09","Created Date":"\u521B\u5EFA\u65E5\u671F",Overview:"\u6982\u89C8",Dates:"\u65E5\u671F","e.g. #tag1, #tag2":"\u4F8B\u5982 #\u6807\u7B7E1, #\u6807\u7B7E2","e.g. @home, @work":"\u4F8B\u5982 @\u5BB6, @\u5DE5\u4F5C","Recurrence Rule":"\u91CD\u590D\u89C4\u5219","e.g. every day, every week":"\u4F8B\u5982 \u6BCF\u5929, \u6BCF\u5468","Edit Task":"\u7F16\u8F91\u4EFB\u52A1",Load:"\u52A0\u8F7D","filter group":"\u8FC7\u6EE4\u5668\u7EC4",filter:"\u8FC7\u6EE4\u5668",Match:"\u5339\u914D",All:"\u5168\u90E8","Add filter group":"\u6DFB\u52A0\u8FC7\u6EE4\u5668\u7EC4","filter in this group":"\u6B64\u7EC4\u4E2D\u7684\u8FC7\u6EE4\u5668","Duplicate filter group":"\u590D\u5236\u8FC7\u6EE4\u5668\u7EC4","Remove filter group":"\u79FB\u9664\u8FC7\u6EE4\u5668\u7EC4",OR:"\u6216","AND NOT":"\u4E14\u975E",AND:"\u4E14","Remove filter":"\u79FB\u9664\u8FC7\u6EE4\u5668",contains:"\u5305\u542B","does not contain":"\u4E0D\u5305\u542B",is:"\u662F","is not":"\u4E0D\u662F","starts with":"\u5F00\u59CB\u4E8E","ends with":"\u7ED3\u675F\u4E8E","is empty":"\u4E3A\u7A7A","is not empty":"\u4E0D\u4E3A\u7A7A","is true":"\u4E3A\u771F","is false":"\u4E3A\u5047","is set":"\u5DF2\u8BBE\u7F6E","is not set":"\u672A\u8BBE\u7F6E",equals:"\u7B49\u4E8E",NOR:"\u90FD\u4E0D","Group by":"\u5206\u7EC4\u4F9D\u636E","Select which task property to use for creating columns":"\u9009\u62E9\u7528\u4E8E\u521B\u5EFA\u5217\u7684\u4EFB\u52A1\u5C5E\u6027","Hide empty columns":"\u9690\u85CF\u7A7A\u5217","Hide columns that have no tasks.":"\u9690\u85CF\u6CA1\u6709\u4EFB\u52A1\u7684\u5217\u3002","Default sort field":"\u9ED8\u8BA4\u6392\u5E8F\u5B57\u6BB5","Default field to sort tasks by within each column.":"\u6BCF\u5217\u5185\u4EFB\u52A1\u6392\u5E8F\u7684\u9ED8\u8BA4\u5B57\u6BB5\u3002","Default sort order":"\u9ED8\u8BA4\u6392\u5E8F\u987A\u5E8F","Default order to sort tasks within each column.":"\u6BCF\u5217\u5185\u4EFB\u52A1\u6392\u5E8F\u7684\u9ED8\u8BA4\u987A\u5E8F\u3002","Custom Columns":"\u81EA\u5B9A\u4E49\u5217","Configure custom columns for the selected grouping property":"\u4E3A\u9009\u5B9A\u7684\u5206\u7EC4\u5C5E\u6027\u914D\u7F6E\u81EA\u5B9A\u4E49\u5217","No custom columns defined. Add columns below.":"\u672A\u5B9A\u4E49\u81EA\u5B9A\u4E49\u5217\u3002\u8BF7\u5728\u4E0B\u65B9\u6DFB\u52A0\u5217\u3002","Column Title":"\u5217\u6807\u9898",Value:"\u503C","Remove Column":"\u79FB\u9664\u5217","Add Column":"\u6DFB\u52A0\u5217","New Column":"\u65B0\u5217","Reset Columns":"\u91CD\u7F6E\u5217","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u4EFB\u52A1\u5FC5\u987B\u5177\u6709\u6B64\u4F18\u5148\u7EA7\uFF08\u4F8B\u5982 1\u30012\u30013\uFF09\u3002\u60A8\u4E5F\u53EF\u4EE5\u4F7F\u7528 'none' \u6765\u8FC7\u6EE4\u6389\u6CA1\u6709\u4F18\u5148\u7EA7\u7684\u4EFB\u52A1\u3002","Move all incomplete subtasks to another file":"\u5C06\u6240\u6709\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6","Move direct incomplete subtasks to another file":"\u5C06\u76F4\u63A5\u7684\u672A\u5B8C\u6210\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6",Filter:"\u8FC7\u6EE4\u5668","Reset Filter":"\u91CD\u7F6E\u8FC7\u6EE4\u5668","Saved Filters":"\u5DF2\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668","Manage Saved Filters":"\u7BA1\u7406\u5DF2\u4FDD\u5B58\u7684\u8FC7\u6EE4\u5668","Filter applied: ":"\u5DF2\u5E94\u7528\u8FC7\u6EE4\u5668\uFF1A","Recurrence date calculation":"\u91CD\u590D\u65E5\u671F\u8BA1\u7B97","Choose how to calculate the next date for recurring tasks":"\u9009\u62E9\u5982\u4F55\u8BA1\u7B97\u91CD\u590D\u4EFB\u52A1\u7684\u4E0B\u4E00\u4E2A\u65E5\u671F","Based on due date":"\u57FA\u4E8E\u622A\u6B62\u65E5\u671F","Based on scheduled date":"\u57FA\u4E8E\u8BA1\u5212\u65E5\u671F","Based on current date":"\u57FA\u4E8E\u5F53\u524D\u65E5\u671F","Task Gutter":"\u4EFB\u52A1\u8FB9\u680F","Configure the task gutter.":"\u914D\u7F6E\u4EFB\u52A1\u8FB9\u680F\u3002","Enable task gutter":"\u542F\u7528\u4EFB\u52A1\u8FB9\u680F","Toggle this to enable the task gutter.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u4EFB\u52A1\u8FB9\u680F\u3002","Incomplete Task Mover":"\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5668","Enable incomplete task mover":"\u542F\u7528\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5668","Toggle this to enable commands for moving incomplete tasks to another file.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u5C06\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Incomplete task marker type":"\u672A\u5B8C\u6210\u4EFB\u52A1\u6807\u8BB0\u7C7B\u578B","Choose what type of marker to add to moved incomplete tasks":"\u9009\u62E9\u4E3A\u79FB\u52A8\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u6DFB\u52A0\u4EC0\u4E48\u7C7B\u578B\u7684\u6807\u8BB0","Incomplete version marker text":"\u672A\u5B8C\u6210\u7248\u672C\u6807\u8BB0\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u65F6\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u6210\u65E5\u671F\u6807\u8BB0\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u65F6\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u6210\u81EA\u5B9A\u4E49\u6807\u8BB0\u6587\u672C","With current file link for incomplete tasks":"\u4E3A\u672A\u5B8C\u6210\u4EFB\u52A1\u6DFB\u52A0\u5F53\u524D\u6587\u4EF6\u94FE\u63A5","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u5C06\u4E3A\u79FB\u52A8\u7684\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u7236\u4EFB\u52A1\u6DFB\u52A0\u6307\u5411\u5F53\u524D\u6587\u4EF6\u7684\u94FE\u63A5\u3002","Line Number":"\u884C\u53F7","Clear Date":"\u6E05\u9664\u65E5\u671F","Copy view":"\u590D\u5236\u89C6\u56FE","View copied successfully: ":"\u89C6\u56FE\u590D\u5236\u6210\u529F\uFF1A","Copy of ":"\u526F\u672C ","Copy view: ":"\u590D\u5236\u89C6\u56FE\uFF1A","Creating a copy based on: ":"\u57FA\u4E8E\u4EE5\u4E0B\u5185\u5BB9\u521B\u5EFA\u526F\u672C\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u60A8\u53EF\u4EE5\u4FEE\u6539\u4E0B\u9762\u7684\u6240\u6709\u8BBE\u7F6E\u3002\u539F\u59CB\u89C6\u56FE\u5C06\u4FDD\u6301\u4E0D\u53D8\u3002","Tasks Plugin Detected":"\u68C0\u6D4B\u5230 Tasks \u63D2\u4EF6","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u5F53\u524D\u7684\u72B6\u6001\u7BA1\u7406\u548C\u65E5\u671F\u7BA1\u7406\u53EF\u80FD\u4E0E Tasks \u63D2\u4EF6\u51B2\u7A81\u3002\u8BF7\u67E5\u770B","compatibility documentation":"\u517C\u5BB9\u6027\u6587\u6863"," for more information.":"\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u3002","Auto Date Manager":"\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u5668","Automatically manage dates based on task status changes":"\u6839\u636E\u4EFB\u52A1\u72B6\u6001\u53D8\u5316\u81EA\u52A8\u7BA1\u7406\u65E5\u671F","Enable auto date manager":"\u542F\u7528\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u5668","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5728\u4EFB\u52A1\u72B6\u6001\u66F4\u6539\u65F6\u542F\u7528\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u3002\u65E5\u671F\u5C06\u6839\u636E\u60A8\u9996\u9009\u7684\u5143\u6570\u636E\u683C\u5F0F\uFF08Tasks \u8868\u60C5\u7B26\u53F7\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u5220\u9664\u3002","Manage completion dates":"\u7BA1\u7406\u5B8C\u6210\u65E5\u671F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u5DF2\u5B8C\u6210\u65F6\u81EA\u52A8\u6DFB\u52A0\u5B8C\u6210\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Manage start dates":"\u7BA1\u7406\u5F00\u59CB\u65E5\u671F","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u8FDB\u884C\u4E2D\u65F6\u81EA\u52A8\u6DFB\u52A0\u5F00\u59CB\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Manage cancelled dates":"\u7BA1\u7406\u53D6\u6D88\u65E5\u671F","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u5F53\u4EFB\u52A1\u6807\u8BB0\u4E3A\u5DF2\u653E\u5F03\u65F6\u81EA\u52A8\u6DFB\u52A0\u53D6\u6D88\u65E5\u671F\uFF0C\u5F53\u66F4\u6539\u4E3A\u5176\u4ED6\u72B6\u6001\u65F6\u5220\u9664\u5B83\u4EEC\u3002","Copy View":"\u590D\u5236\u89C6\u56FE",Beta:"\u6D4B\u8BD5\u7248","Beta Test Features":"\u6D4B\u8BD5\u7248\u529F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u5F53\u524D\u5904\u4E8E\u6D4B\u8BD5\u9636\u6BB5\u7684\u5B9E\u9A8C\u6027\u529F\u80FD\u3002\u8FD9\u4E9B\u529F\u80FD\u53EF\u80FD\u4E0D\u7A33\u5B9A\uFF0C\u5728\u672A\u6765\u7684\u66F4\u65B0\u4E2D\u53EF\u80FD\u4F1A\u53D1\u751F\u53D8\u5316\u6216\u88AB\u79FB\u9664\u3002","Beta Features Warning":"\u6D4B\u8BD5\u7248\u529F\u80FD\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u8FD9\u4E9B\u529F\u80FD\u662F\u5B9E\u9A8C\u6027\u7684\uFF0C\u53EF\u80FD\u4E0D\u7A33\u5B9A\u3002\u7531\u4E8E Obsidian API \u53D8\u5316\u6216\u5176\u4ED6\u56E0\u7D20\uFF0C\u5B83\u4EEC\u53EF\u80FD\u5728\u672A\u6765\u7684\u66F4\u65B0\u4E2D\u53D1\u751F\u91CD\u5927\u53D8\u5316\u6216\u88AB\u79FB\u9664\u3002\u8BF7\u8C28\u614E\u4F7F\u7528\u5E76\u63D0\u4F9B\u53CD\u9988\u4EE5\u5E2E\u52A9\u6539\u8FDB\u8FD9\u4E9B\u529F\u80FD\u3002","Base View":"\u57FA\u7840\u89C6\u56FE","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u6269\u5C55\u9ED8\u8BA4 Task Genius \u89C6\u56FE\u7684\u9AD8\u7EA7\u89C6\u56FE\u7BA1\u7406\u529F\u80FD\uFF0C\u63D0\u4F9B\u989D\u5916\u7684\u529F\u80FD\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u542F\u7528\u5B9E\u9A8C\u6027\u57FA\u7840\u89C6\u56FE\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F3A\u7684\u89C6\u56FE\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u4F1A\u53D7\u5230\u672A\u6765 Obsidian API \u53D8\u5316\u7684\u5F71\u54CD\u3002\u60A8\u53EF\u80FD\u9700\u8981\u91CD\u542F Obsidian \u624D\u80FD\u770B\u5230\u53D8\u5316\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u5982\u679C\u60A8\u5DF2\u7ECF\u5728\u57FA\u7840\u89C6\u56FE\u4E2D\u521B\u5EFA\u4E86\u4EFB\u52A1\u89C6\u56FE\uFF0C\u5F53\u7981\u7528\u6B64\u529F\u80FD\u65F6\uFF0C\u60A8\u9700\u8981\u5173\u95ED\u6240\u6709\u57FA\u7840\u89C6\u56FE\u5E76\u901A\u8FC7\u624B\u52A8\u7F16\u8F91\u5220\u9664\u672A\u4F7F\u7528\u7684\u89C6\u56FE\u3002","Enable Base View":"\u542F\u7528\u57FA\u7840\u89C6\u56FE","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u542F\u7528\u5B9E\u9A8C\u6027\u57FA\u7840\u89C6\u56FE\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F3A\u7684\u89C6\u56FE\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u4F1A\u53D7\u5230\u672A\u6765 Obsidian API \u53D8\u5316\u7684\u5F71\u54CD\u3002",Enable:"\u542F\u7528","Beta Feedback":"\u6D4B\u8BD5\u7248\u53CD\u9988","Help improve these features by providing feedback on your experience.":"\u901A\u8FC7\u63D0\u4F9B\u60A8\u7684\u4F7F\u7528\u4F53\u9A8C\u53CD\u9988\u6765\u5E2E\u52A9\u6539\u8FDB\u8FD9\u4E9B\u529F\u80FD\u3002","Report Issues":"\u62A5\u544A\u95EE\u9898","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u5982\u679C\u60A8\u5728\u4F7F\u7528\u6D4B\u8BD5\u7248\u529F\u80FD\u65F6\u9047\u5230\u4EFB\u4F55\u95EE\u9898\uFF0C\u8BF7\u62A5\u544A\u5B83\u4EEC\u4EE5\u5E2E\u52A9\u6539\u8FDB\u63D2\u4EF6\u3002","Report Issue":"\u62A5\u544A\u95EE\u9898",Table:"\u8868\u683C","No Priority":"\u65E0\u4F18\u5148\u7EA7","Click to select date":"\u70B9\u51FB\u9009\u62E9\u65E5\u671F","Enter tags separated by commas":"\u8F93\u5165\u6807\u7B7E\uFF0C\u7528\u9017\u53F7\u5206\u9694","Enter project name":"\u8F93\u5165\u9879\u76EE\u540D\u79F0","Enter context":"\u8F93\u5165\u4E0A\u4E0B\u6587","Invalid value":"\u65E0\u6548\u503C","No tasks":"\u65E0\u4EFB\u52A1","1 task":"1 \u4EFB\u52A1",Columns:"\u5217","Toggle column visibility":"\u5207\u6362\u5217\u53EF\u89C1\u6027","Switch to List Mode":"\u5207\u6362\u5230\u5217\u8868\u6A21\u5F0F","Switch to Tree Mode":"\u5207\u6362\u5230\u6811\u5F62\u6A21\u5F0F",Collapse:"\u6298\u53E0",Expand:"\u5C55\u5F00","Collapse subtasks":"\u6298\u53E0\u5B50\u4EFB\u52A1","Expand subtasks":"\u5C55\u5F00\u5B50\u4EFB\u52A1","Click to change status":"\u70B9\u51FB\u66F4\u6539\u72B6\u6001","Click to set priority":"\u70B9\u51FB\u8BBE\u7F6E\u4F18\u5148\u7EA7",Yesterday:"\u6628\u5929","Click to edit date":"\u70B9\u51FB\u7F16\u8F91\u65E5\u671F","No tags":"\u65E0\u6807\u7B7E","Click to open file":"\u70B9\u51FB\u6253\u5F00\u6587\u4EF6","No tasks found":"\u672A\u627E\u5230\u4EFB\u52A1","Completed Date":"\u5B8C\u6210\u65E5\u671F","Loading...":"\u52A0\u8F7D\u4E2D...","Advanced Filtering":"\u9AD8\u7EA7\u8FC7\u6EE4\u5668","Use advanced multi-group filtering with complex conditions":"\u4F7F\u7528\u9AD8\u7EA7\u591A\u7EC4\u8FC7\u6EE4\u5668\uFF0C\u652F\u6301\u590D\u6742\u6761\u4EF6","Auto-assigned from path":"\u4ECE\u8DEF\u5F84\u81EA\u52A8\u5206\u914D","Auto-assigned from file metadata":"\u4ECE\u6587\u4EF6\u5143\u6570\u636E\u81EA\u52A8\u5206\u914D","Auto-assigned from config file":"\u4ECE\u914D\u7F6E\u6587\u4EF6\u81EA\u52A8\u5206\u914D","Auto-assigned":"\u81EA\u52A8\u5206\u914D","Auto from path":"\u8DEF\u5F84\u81EA\u52A8","Auto from metadata":"\u5143\u6570\u636E\u81EA\u52A8","Auto from config":"\u914D\u7F6E\u81EA\u52A8","This project is automatically assigned and cannot be changed":"\u6B64\u9879\u76EE\u662F\u81EA\u52A8\u5206\u914D\u7684\uFF0C\u65E0\u6CD5\u66F4\u6539","You can override the auto-assigned project by entering a different value":"\u60A8\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165\u4E0D\u540C\u7684\u503C\u6765\u8986\u76D6\u81EA\u52A8\u5206\u914D\u7684\u9879\u76EE","You can override the auto-assigned project":"\u60A8\u53EF\u4EE5\u8986\u76D6\u81EA\u52A8\u5206\u914D\u7684\u9879\u76EE","Add new task":"\u6DFB\u52A0\u65B0\u4EFB\u52A1","Add new sub-task":"\u6DFB\u52A0\u65B0\u5B50\u4EFB\u52A1","Start workflow":"\u5F00\u59CB\u5DE5\u4F5C\u6D41","Complete substage and move to":"\u5B8C\u6210\u5B50\u9636\u6BB5\u5E76\u79FB\u52A8\u5230",Continue:"\u7EE7\u7EED",Timeline:"\u65F6\u95F4\u8F74","Timeline Sidebar":"\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Open Timeline Sidebar":"\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Enable Timeline Sidebar":"\u542F\u7528\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u89C6\u56FE\uFF0C\u5FEB\u901F\u8BBF\u95EE\u60A8\u7684\u65E5\u5E38\u4E8B\u4EF6\u548C\u4EFB\u52A1\u3002","Auto-open on startup":"\u542F\u52A8\u65F6\u81EA\u52A8\u6253\u5F00","Automatically open the timeline sidebar when Obsidian starts.":"\u5728 Obsidian \u542F\u52A8\u65F6\u81EA\u52A8\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u3002","Show completed tasks":"\u663E\u793A\u5DF2\u5B8C\u6210\u4EFB\u52A1","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u5728\u65F6\u95F4\u8F74\u89C6\u56FE\u4E2D\u5305\u542B\u5DF2\u5B8C\u6210\u7684\u4EFB\u52A1\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u663E\u793A\u672A\u5B8C\u6210\u7684\u4EFB\u52A1\u3002","Focus mode by default":"\u9ED8\u8BA4\u805A\u7126\u6A21\u5F0F","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u9ED8\u8BA4\u542F\u7528\u805A\u7126\u6A21\u5F0F\uFF0C\u7A81\u51FA\u663E\u793A\u4ECA\u5929\u7684\u4E8B\u4EF6\u5E76\u6DE1\u5316\u8FC7\u53BB/\u672A\u6765\u7684\u4E8B\u4EF6\u3002","Maximum events to show":"\u6700\u5927\u663E\u793A\u4E8B\u4EF6\u6570","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u65F6\u95F4\u8F74\u4E2D\u663E\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6570\u3002\u6570\u5B57\u8D8A\u9AD8\u53EF\u80FD\u4F1A\u5F71\u54CD\u6027\u80FD\u3002","Open Timeline":"\u6253\u5F00\u65F6\u95F4\u8F74","Click to open the timeline sidebar view.":"\u70B9\u51FB\u6253\u5F00\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u89C6\u56FE\u3002","Timeline sidebar opened":"\u65F6\u95F4\u8F74\u4FA7\u8FB9\u680F\u5DF2\u6253\u5F00","Go to today":"\u8F6C\u5230\u4ECA\u5929","Focus on today":"\u805A\u7126\u4ECA\u5929","No events to display":"\u6CA1\u6709\u4E8B\u4EF6\u53EF\u663E\u793A","Go to task":"\u8F6C\u5230\u4EFB\u52A1","What's on your mind?":"\u4F60\u5728\u60F3\u4EC0\u4E48\uFF1F",to:"\u5230","Auto-moved":"\u81EA\u52A8\u79FB\u52A8","tasks to":"\u4E2A\u4EFB\u52A1\u5230","Failed to auto-move tasks:":"\u81EA\u52A8\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\uFF1A","Workflow created successfully":"\u5DE5\u4F5C\u6D41\u521B\u5EFA\u6210\u529F","No task structure found at cursor position":"\u5728\u5149\u6807\u4F4D\u7F6E\u672A\u627E\u5230\u4EFB\u52A1\u7ED3\u6784","Use similar existing workflow":"\u4F7F\u7528\u7C7B\u4F3C\u7684\u73B0\u6709\u5DE5\u4F5C\u6D41","Create new workflow":"\u521B\u5EFA\u65B0\u5DE5\u4F5C\u6D41","No workflows defined. Create a workflow first.":"\u672A\u5B9A\u4E49\u5DE5\u4F5C\u6D41\u3002\u8BF7\u5148\u521B\u5EFA\u4E00\u4E2A\u5DE5\u4F5C\u6D41\u3002","Workflow task created":"\u5DE5\u4F5C\u6D41\u4EFB\u52A1\u5DF2\u521B\u5EFA","Task converted to workflow root":"\u4EFB\u52A1\u5DF2\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Failed to convert task":"\u8F6C\u6362\u4EFB\u52A1\u5931\u8D25","No workflows to duplicate":"\u6CA1\u6709\u53EF\u590D\u5236\u7684\u5DE5\u4F5C\u6D41",Duplicate:"\u590D\u5236","Workflow duplicated and saved":"\u5DE5\u4F5C\u6D41\u5DF2\u590D\u5236\u5E76\u4FDD\u5B58","Workflow created from task structure":"\u4ECE\u4EFB\u52A1\u7ED3\u6784\u521B\u5EFA\u4E86\u5DE5\u4F5C\u6D41","Create Quick Workflow":"\u521B\u5EFA\u5FEB\u901F\u5DE5\u4F5C\u6D41","Convert Task to Workflow":"\u5C06\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41","Convert to Workflow Root":"\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839\u8282\u70B9","Start Workflow Here":"\u5728\u6B64\u5F00\u59CB\u5DE5\u4F5C\u6D41","Duplicate Workflow":"\u590D\u5236\u5DE5\u4F5C\u6D41","Simple Linear Workflow":"\u7B80\u5355\u7EBF\u6027\u5DE5\u4F5C\u6D41","A basic linear workflow with sequential stages":"\u5177\u6709\u987A\u5E8F\u9636\u6BB5\u7684\u57FA\u672C\u7EBF\u6027\u5DE5\u4F5C\u6D41","To Do":"\u5F85\u529E",Done:"\u5B8C\u6210","Project Management":"\u9879\u76EE\u7BA1\u7406",Coding:"\u7F16\u7A0B","Research Process":"\u7814\u7A76\u6D41\u7A0B","Academic or professional research workflow":"\u5B66\u672F\u6216\u4E13\u4E1A\u7814\u7A76\u5DE5\u4F5C\u6D41","Literature Review":"\u6587\u732E\u7EFC\u8FF0","Data Collection":"\u6570\u636E\u6536\u96C6",Analysis:"\u5206\u6790",Writing:"\u5199\u4F5C",Published:"\u5DF2\u53D1\u5E03","Custom Workflow":"\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Create a custom workflow from scratch":"\u4ECE\u5934\u521B\u5EFA\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Quick Workflow Creation":"\u5FEB\u901F\u5DE5\u4F5C\u6D41\u521B\u5EFA","Workflow Template":"\u5DE5\u4F5C\u6D41\u6A21\u677F","Choose a template to start with or create a custom workflow":"\u9009\u62E9\u4E00\u4E2A\u6A21\u677F\u5F00\u59CB\u6216\u521B\u5EFA\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6D41","Workflow Name":"\u5DE5\u4F5C\u6D41\u540D\u79F0","A descriptive name for your workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Enter workflow name":"\u8F93\u5165\u5DE5\u4F5C\u6D41\u540D\u79F0","Unique identifier (auto-generated from name)":"\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u4ECE\u540D\u79F0\u81EA\u52A8\u751F\u6210\uFF09","Optional description of the workflow purpose":"\u5DE5\u4F5C\u6D41\u76EE\u7684\u7684\u53EF\u9009\u63CF\u8FF0","Describe your workflow...":"\u63CF\u8FF0\u60A8\u7684\u5DE5\u4F5C\u6D41...","Preview of workflow stages (edit after creation for advanced options)":"\u5DE5\u4F5C\u6D41\u9636\u6BB5\u9884\u89C8\uFF08\u521B\u5EFA\u540E\u7F16\u8F91\u4EE5\u83B7\u5F97\u9AD8\u7EA7\u9009\u9879\uFF09","Add Stage":"\u6DFB\u52A0\u9636\u6BB5","No stages defined. Choose a template or add stages manually.":"\u672A\u5B9A\u4E49\u9636\u6BB5\u3002\u9009\u62E9\u6A21\u677F\u6216\u624B\u52A8\u6DFB\u52A0\u9636\u6BB5\u3002","Remove stage":"\u79FB\u9664\u9636\u6BB5","Create Workflow":"\u521B\u5EFA\u5DE5\u4F5C\u6D41","Please provide a workflow name and ID":"\u8BF7\u63D0\u4F9B\u5DE5\u4F5C\u6D41\u540D\u79F0\u548CID","Please add at least one stage to the workflow":"\u8BF7\u81F3\u5C11\u4E3A\u5DE5\u4F5C\u6D41\u6DFB\u52A0\u4E00\u4E2A\u9636\u6BB5",Discord:"Discord","Chat with us":"\u4E0E\u6211\u4EEC\u804A\u5929","Open Discord":"\u6253\u5F00 Discord","Task Genius icons are designed by":"Task Genius \u56FE\u6807\u7531\u4EE5\u4E0B\u8BBE\u8BA1\u5E08\u8BBE\u8BA1","Task Genius Icons":"Task Genius \u56FE\u6807","ICS Calendar Integration":"ICS \u65E5\u5386\u96C6\u6210","Configure external calendar sources to display events in your task views.":"\u914D\u7F6E\u5916\u90E8\u65E5\u5386\u6E90\u4EE5\u5728\u4EFB\u52A1\u89C6\u56FE\u4E2D\u663E\u793A\u4E8B\u4EF6\u3002","Add New Calendar Source":"\u6DFB\u52A0\u65B0\u65E5\u5386\u6E90","Global Settings":"\u5168\u5C40\u8BBE\u7F6E","Enable Background Refresh":"\u542F\u7528\u540E\u53F0\u5237\u65B0","Automatically refresh calendar sources in the background":"\u5728\u540E\u53F0\u81EA\u52A8\u5237\u65B0\u65E5\u5386\u6E90","Global Refresh Interval":"\u5168\u5C40\u5237\u65B0\u95F4\u9694","Default refresh interval for all sources (minutes)":"\u6240\u6709\u6E90\u7684\u9ED8\u8BA4\u5237\u65B0\u95F4\u9694\uFF08\u5206\u949F\uFF09","Maximum Cache Age":"\u6700\u5927\u7F13\u5B58\u65F6\u95F4","How long to keep cached data (hours)":"\u4FDD\u5B58\u7F13\u5B58\u6570\u636E\u7684\u65F6\u95F4\uFF08\u5C0F\u65F6\uFF09","Network Timeout":"\u7F51\u7EDC\u8D85\u65F6","Request timeout in seconds":"\u8BF7\u6C42\u8D85\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09","Max Events Per Source":"\u6BCF\u4E2A\u6E90\u7684\u6700\u5927\u4E8B\u4EF6\u6570","Maximum number of events to load from each source":"\u4ECE\u6BCF\u4E2A\u6E90\u52A0\u8F7D\u7684\u6700\u5927\u4E8B\u4EF6\u6570","Default Event Color":"\u9ED8\u8BA4\u4E8B\u4EF6\u989C\u8272","Default color for events without a specific color":"\u6CA1\u6709\u7279\u5B9A\u989C\u8272\u7684\u4E8B\u4EF6\u7684\u9ED8\u8BA4\u989C\u8272","Calendar Sources":"\u65E5\u5386\u6E90","No calendar sources configured. Add a source to get started.":"\u672A\u914D\u7F6E\u65E5\u5386\u6E90\u3002\u6DFB\u52A0\u4E00\u4E2A\u6E90\u5F00\u59CB\u4F7F\u7528\u3002","ICS Enabled":"ICS \u5DF2\u542F\u7528","ICS Disabled":"ICS \u5DF2\u7981\u7528",URL:"\u7F51\u5740",Refresh:"\u5237\u65B0",min:"\u5206\u949F",Color:"\u989C\u8272","Edit this calendar source":"\u7F16\u8F91\u6B64\u65E5\u5386\u6E90",Sync:"\u540C\u6B65","Sync this calendar source now":"\u7ACB\u5373\u540C\u6B65\u6B64\u65E5\u5386\u6E90","Syncing...":"\u6B63\u5728\u540C\u6B65...","Sync completed successfully":"\u540C\u6B65\u6210\u529F\u5B8C\u6210","Sync failed: ":"\u540C\u6B65\u5931\u8D25\uFF1A",Disable:"\u7981\u7528","Disable this source":"\u7981\u7528\u6B64\u6E90","Enable this source":"\u542F\u7528\u6B64\u6E90","Delete this calendar source":"\u5220\u9664\u6B64\u65E5\u5386\u6E90","Are you sure you want to delete this calendar source?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u65E5\u5386\u6E90\u5417\uFF1F","Edit ICS Source":"\u7F16\u8F91 ICS \u6E90","Add ICS Source":"\u6DFB\u52A0 ICS \u6E90","ICS Source Name":"ICS \u6E90\u540D\u79F0","Display name for this calendar source":"\u6B64\u65E5\u5386\u6E90\u7684\u663E\u793A\u540D\u79F0","My Calendar":"\u6211\u7684\u65E5\u5386","ICS URL":"ICS \u7F51\u5740","URL to the ICS/iCal file":"ICS/iCal \u6587\u4EF6\u7684\u7F51\u5740","Whether this source is active":"\u6B64\u6E90\u662F\u5426\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001","Refresh Interval":"\u5237\u65B0\u95F4\u9694","How often to refresh this source (minutes)":"\u5237\u65B0\u6B64\u6E90\u7684\u9891\u7387\uFF08\u5206\u949F\uFF09","Color for events from this source (optional)":"\u6765\u81EA\u6B64\u6E90\u7684\u4E8B\u4EF6\u989C\u8272\uFF08\u53EF\u9009\uFF09","Show Type":"\u663E\u793A\u7C7B\u578B","How to display events from this source in calendar views":"\u5982\u4F55\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u663E\u793A\u6765\u81EA\u6B64\u6E90\u7684\u4E8B\u4EF6",Event:"\u4E8B\u4EF6",Badge:"\u5FBD\u7AE0","Show All-Day Events":"\u663E\u793A\u5168\u5929\u4E8B\u4EF6","Include all-day events from this source":"\u5305\u542B\u6765\u81EA\u6B64\u6E90\u7684\u5168\u5929\u4E8B\u4EF6","Show Timed Events":"\u663E\u793A\u5B9A\u65F6\u4E8B\u4EF6","Include timed events from this source":"\u5305\u542B\u6765\u81EA\u6B64\u6E90\u7684\u5B9A\u65F6\u4E8B\u4EF6","Authentication (Optional)":"\u8EAB\u4EFD\u9A8C\u8BC1\uFF08\u53EF\u9009\uFF09","Authentication Type":"\u8EAB\u4EFD\u9A8C\u8BC1\u7C7B\u578B","Type of authentication required":"\u6240\u9700\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u7C7B\u578B","ICS Auth None":"\u65E0 ICS \u8EAB\u4EFD\u9A8C\u8BC1","Basic Auth":"\u57FA\u672C\u8EAB\u4EFD\u9A8C\u8BC1","Bearer Token":"Bearer \u4EE4\u724C","Custom Headers":"\u81EA\u5B9A\u4E49\u6807\u5934","Text Replacements":"\u6587\u672C\u66FF\u6362","Configure rules to modify event text using regular expressions":"\u914D\u7F6E\u4F7F\u7528\u6B63\u5219\u8868\u8FBE\u5F0F\u4FEE\u6539\u4E8B\u4EF6\u6587\u672C\u7684\u89C4\u5219","No text replacement rules configured":"\u672A\u914D\u7F6E\u6587\u672C\u66FF\u6362\u89C4\u5219",Enabled:"\u5DF2\u542F\u7528",Disabled:"\u5DF2\u7981\u7528",Target:"\u76EE\u6807",Pattern:"\u6A21\u5F0F",Replacement:"\u66FF\u6362","Are you sure you want to delete this text replacement rule?":"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u6587\u672C\u66FF\u6362\u89C4\u5219\u5417\uFF1F","Add Text Replacement Rule":"\u6DFB\u52A0\u6587\u672C\u66FF\u6362\u89C4\u5219","ICS Username":"ICS \u7528\u6237\u540D","ICS Password":"ICS \u5BC6\u7801","ICS Bearer Token":"ICS Bearer \u4EE4\u724C","JSON object with custom headers":"\u5E26\u6709\u81EA\u5B9A\u4E49\u6807\u5934\u7684 JSON \u5BF9\u8C61","Holiday Configuration":"\u8282\u5047\u65E5\u914D\u7F6E","Configure how holiday events are detected and displayed":"\u914D\u7F6E\u5982\u4F55\u68C0\u6D4B\u548C\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Enable Holiday Detection":"\u542F\u7528\u8282\u5047\u65E5\u68C0\u6D4B","Automatically detect and group holiday events":"\u81EA\u52A8\u68C0\u6D4B\u548C\u5206\u7EC4\u8282\u5047\u65E5\u4E8B\u4EF6","Status Mapping":"\u72B6\u6001\u6620\u5C04","Configure how ICS events are mapped to task statuses":"\u914D\u7F6E\u5982\u4F55\u5C06 ICS \u4E8B\u4EF6\u6620\u5C04\u5230\u4EFB\u52A1\u72B6\u6001","Enable Status Mapping":"\u542F\u7528\u72B6\u6001\u6620\u5C04","Automatically map ICS events to specific task statuses":"\u81EA\u52A8\u5C06 ICS \u4E8B\u4EF6\u6620\u5C04\u5230\u7279\u5B9A\u4EFB\u52A1\u72B6\u6001","Grouping Strategy":"\u5206\u7EC4\u7B56\u7565","How to handle consecutive holiday events":"\u5982\u4F55\u5904\u7406\u8FDE\u7EED\u7684\u8282\u5047\u65E5\u4E8B\u4EF6","Show All Events":"\u663E\u793A\u6240\u6709\u4E8B\u4EF6","Show First Day Only":"\u4EC5\u663E\u793A\u7B2C\u4E00\u5929","Show Summary":"\u663E\u793A\u6458\u8981","Show First and Last":"\u663E\u793A\u9996\u672B\u65E5","Maximum Gap Days":"\u6700\u5927\u95F4\u9694\u5929\u6570","Maximum days between events to consider them consecutive":"\u8BA4\u4E3A\u4E8B\u4EF6\u8FDE\u7EED\u7684\u6700\u5927\u95F4\u9694\u5929\u6570","Show in Forecast":"\u5728\u9884\u6D4B\u4E2D\u663E\u793A","Whether to show holiday events in forecast view":"\u662F\u5426\u5728\u9884\u6D4B\u89C6\u56FE\u4E2D\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Show in Calendar":"\u5728\u65E5\u5386\u4E2D\u663E\u793A","Whether to show holiday events in calendar view":"\u662F\u5426\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u663E\u793A\u8282\u5047\u65E5\u4E8B\u4EF6","Detection Patterns":"\u68C0\u6D4B\u6A21\u5F0F","Summary Patterns":"\u6458\u8981\u6A21\u5F0F","Regex patterns to match in event titles (one per line)":"\u5728\u4E8B\u4EF6\u6807\u9898\u4E2D\u5339\u914D\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09",Keywords:"\u5173\u952E\u8BCD","Keywords to detect in event text (one per line)":"\u5728\u4E8B\u4EF6\u6587\u672C\u4E2D\u68C0\u6D4B\u7684\u5173\u952E\u8BCD\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09",Categories:"\u7C7B\u522B","Event categories that indicate holidays (one per line)":"\u8868\u793A\u8282\u5047\u65E5\u7684\u4E8B\u4EF6\u7C7B\u522B\uFF08\u6BCF\u884C\u4E00\u4E2A\uFF09","Group Display Format":"\u5206\u7EC4\u663E\u793A\u683C\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u5206\u7EC4\u8282\u5047\u65E5\u663E\u793A\u683C\u5F0F\u3002\u4F7F\u7528 {title}\u3001{count}\u3001{startDate}\u3001{endDate}","Override ICS Status":"\u8986\u76D6 ICS \u72B6\u6001","Override original ICS event status with mapped status":"\u7528\u6620\u5C04\u72B6\u6001\u8986\u76D6\u539F\u59CB ICS \u4E8B\u4EF6\u72B6\u6001","Timing Rules":"\u65F6\u95F4\u89C4\u5219","Past Events Status":"\u8FC7\u53BB\u4E8B\u4EF6\u72B6\u6001","Status for events that have already ended":"\u5DF2\u7ED3\u675F\u4E8B\u4EF6\u7684\u72B6\u6001","Status Incomplete":"\u72B6\u6001\u672A\u5B8C\u6210","Status Complete":"\u72B6\u6001\u5DF2\u5B8C\u6210","Status Cancelled":"\u72B6\u6001\u5DF2\u53D6\u6D88","Status In Progress":"\u72B6\u6001\u8FDB\u884C\u4E2D","Status Question":"\u72B6\u6001\u7591\u95EE","Current Events Status":"\u5F53\u524D\u4E8B\u4EF6\u72B6\u6001","Status for events happening today":"\u4ECA\u5929\u53D1\u751F\u7684\u4E8B\u4EF6\u72B6\u6001","Future Events Status":"\u672A\u6765\u4E8B\u4EF6\u72B6\u6001","Status for events in the future":"\u672A\u6765\u4E8B\u4EF6\u7684\u72B6\u6001","Property Rules":"\u5C5E\u6027\u89C4\u5219","Optional rules based on event properties (higher priority than timing rules)":"\u57FA\u4E8E\u4E8B\u4EF6\u5C5E\u6027\u7684\u53EF\u9009\u89C4\u5219\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E\u65F6\u95F4\u89C4\u5219\uFF09","Holiday Status":"\u8282\u5047\u65E5\u72B6\u6001","Status for events detected as holidays":"\u68C0\u6D4B\u4E3A\u8282\u5047\u65E5\u7684\u4E8B\u4EF6\u72B6\u6001","Use timing rules":"\u4F7F\u7528\u65F6\u95F4\u89C4\u5219","Category Mapping":"\u7C7B\u522B\u6620\u5C04","Map specific categories to statuses (format: category:status, one per line)":"\u5C06\u7279\u5B9A\u7C7B\u522B\u6620\u5C04\u5230\u72B6\u6001\uFF08\u683C\u5F0F\uFF1A\u7C7B\u522B:\u72B6\u6001\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF09","Please enter a name for the source":"\u8BF7\u8F93\u5165\u6E90\u7684\u540D\u79F0","Please enter a URL for the source":"\u8BF7\u8F93\u5165\u6E90\u7684\u7F51\u5740","Please enter a valid URL":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7F51\u5740","Edit Text Replacement Rule":"\u7F16\u8F91\u6587\u672C\u66FF\u6362\u89C4\u5219","Rule Name":"\u89C4\u5219\u540D\u79F0","Descriptive name for this replacement rule":"\u6B64\u66FF\u6362\u89C4\u5219\u7684\u63CF\u8FF0\u6027\u540D\u79F0","Remove Meeting Prefix":"\u79FB\u9664\u4F1A\u8BAE\u524D\u7F00","Whether this rule is active":"\u6B64\u89C4\u5219\u662F\u5426\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001","Target Field":"\u76EE\u6807\u5B57\u6BB5","Which field to apply the replacement to":"\u8981\u5E94\u7528\u66FF\u6362\u7684\u5B57\u6BB5","Summary/Title":"\u6458\u8981/\u6807\u9898",Location:"\u4F4D\u7F6E","All Fields":"\u6240\u6709\u5B57\u6BB5","Pattern (Regular Expression)":"\u6A21\u5F0F\uFF08\u6B63\u5219\u8868\u8FBE\u5F0F\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u8981\u5339\u914D\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F\u3002\u4F7F\u7528\u62EC\u53F7\u8FDB\u884C\u6355\u83B7\u7EC4\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u7528\u4E8E\u66FF\u6362\u5339\u914D\u9879\u7684\u6587\u672C\u3002\u4F7F\u7528 $1\u3001$2 \u7B49\u8868\u793A\u6355\u83B7\u7EC4\u3002","Regex Flags":"\u6B63\u5219\u8868\u8FBE\u5F0F\u6807\u5FD7","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u5219\u8868\u8FBE\u5F0F\u6807\u5FD7\uFF08\u4F8B\u5982\uFF0C'g' \u8868\u793A\u5168\u5C40\uFF0C'i' \u8868\u793A\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09",Examples:"\u793A\u4F8B","Remove prefix":"\u79FB\u9664\u524D\u7F00","Replace room numbers":"\u66FF\u6362\u623F\u95F4\u53F7","Swap words":"\u4EA4\u6362\u5355\u8BCD","Test Rule":"\u6D4B\u8BD5\u89C4\u5219","Output: ":"\u8F93\u51FA\uFF1A","Test Input":"\u6D4B\u8BD5\u8F93\u5165","Enter text to test the replacement rule":"\u8F93\u5165\u6587\u672C\u4EE5\u6D4B\u8BD5\u66FF\u6362\u89C4\u5219","Please enter a name for the rule":"\u8BF7\u8F93\u5165\u89C4\u5219\u540D\u79F0","Please enter a pattern":"\u8BF7\u8F93\u5165\u6A21\u5F0F","Invalid regular expression pattern":"\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u6A21\u5F0F","Enhanced Project Configuration":"\u589E\u5F3A\u9879\u76EE\u914D\u7F6E","Configure advanced project detection and management features":"\u914D\u7F6E\u9AD8\u7EA7\u9879\u76EE\u68C0\u6D4B\u548C\u7BA1\u7406\u529F\u80FD","Enable enhanced project features":"\u542F\u7528\u589E\u5F3A\u9879\u76EE\u529F\u80FD","Enable path-based, metadata-based, and config file-based project detection":"\u542F\u7528\u57FA\u4E8E\u8DEF\u5F84\u3001\u5143\u6570\u636E\u548C\u914D\u7F6E\u6587\u4EF6\u7684\u9879\u76EE\u68C0\u6D4B","Path-based Project Mappings":"\u57FA\u4E8E\u8DEF\u5F84\u7684\u9879\u76EE\u6620\u5C04","Configure project names based on file paths":"\u57FA\u4E8E\u6587\u4EF6\u8DEF\u5F84\u914D\u7F6E\u9879\u76EE\u540D\u79F0","No path mappings configured yet.":"\u5C1A\u672A\u914D\u7F6E\u8DEF\u5F84\u6620\u5C04\u3002",Mapping:"\u6620\u5C04","Path pattern (e.g., Projects/Work)":"\u8DEF\u5F84\u6A21\u5F0F\uFF08\u4F8B\u5982\uFF0CProjects/Work\uFF09","Add Path Mapping":"\u6DFB\u52A0\u8DEF\u5F84\u6620\u5C04","Metadata-based Project Configuration":"\u57FA\u4E8E\u5143\u6570\u636E\u7684\u9879\u76EE\u914D\u7F6E","Configure project detection from file frontmatter":"\u914D\u7F6E\u4ECE\u6587\u4EF6\u524D\u8A00\u68C0\u6D4B\u9879\u76EE","Enable metadata project detection":"\u542F\u7528\u5143\u6570\u636E\u9879\u76EE\u68C0\u6D4B","Detect project from file frontmatter metadata":"\u4ECE\u6587\u4EF6\u524D\u8A00\u5143\u6570\u636E\u68C0\u6D4B\u9879\u76EE","Metadata key":"\u5143\u6570\u636E\u952E","The frontmatter key to use for project name":"\u7528\u4E8E\u9879\u76EE\u540D\u79F0\u7684\u524D\u8A00\u952E","Inherit other metadata fields from file frontmatter":"\u4ECE\u6587\u4EF6\u524D\u8A00\u7EE7\u627F\u5176\u4ED6\u5143\u6570\u636E\u5B57\u6BB5","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u5141\u8BB8\u5B50\u4EFB\u52A1\u4ECE\u6587\u4EF6\u524D\u8A00\u7EE7\u627F\u5143\u6570\u636E\u3002\u7981\u7528\u65F6\uFF0C\u53EA\u6709\u9876\u7EA7\u4EFB\u52A1\u7EE7\u627F\u6587\u4EF6\u5143\u6570\u636E\u3002","Project Configuration File":"\u9879\u76EE\u914D\u7F6E\u6587\u4EF6","Configure project detection from project config files":"\u914D\u7F6E\u4ECE\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u68C0\u6D4B\u9879\u76EE","Enable config file project detection":"\u542F\u7528\u914D\u7F6E\u6587\u4EF6\u9879\u76EE\u68C0\u6D4B","Detect project from project configuration files":"\u4ECE\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u68C0\u6D4B\u9879\u76EE","Config file name":"\u914D\u7F6E\u6587\u4EF6\u540D","Name of the project configuration file":"\u9879\u76EE\u914D\u7F6E\u6587\u4EF6\u7684\u540D\u79F0","Search recursively":"\u9012\u5F52\u641C\u7D22","Search for config files in parent directories":"\u5728\u7236\u76EE\u5F55\u4E2D\u641C\u7D22\u914D\u7F6E\u6587\u4EF6","Metadata Mappings":"\u5143\u6570\u636E\u6620\u5C04","Configure how metadata fields are mapped and transformed":"\u914D\u7F6E\u5143\u6570\u636E\u5B57\u6BB5\u5982\u4F55\u6620\u5C04\u548C\u8F6C\u6362","No metadata mappings configured yet.":"\u5C1A\u672A\u914D\u7F6E\u5143\u6570\u636E\u6620\u5C04\u3002","Source key (e.g., proj)":"\u6E90\u952E\uFF08\u4F8B\u5982\uFF0Cproj\uFF09","Select target field":"\u9009\u62E9\u76EE\u6807\u5B57\u6BB5","Add Metadata Mapping":"\u6DFB\u52A0\u5143\u6570\u636E\u6620\u5C04","Default Project Naming":"\u9ED8\u8BA4\u9879\u76EE\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u914D\u7F6E\u672A\u627E\u5230\u660E\u786E\u9879\u76EE\u65F6\u7684\u540E\u5907\u9879\u76EE\u547D\u540D","Enable default project naming":"\u542F\u7528\u9ED8\u8BA4\u9879\u76EE\u547D\u540D","Use default naming strategy when no project is explicitly defined":"\u5F53\u6CA1\u6709\u660E\u786E\u5B9A\u4E49\u9879\u76EE\u65F6\u4F7F\u7528\u9ED8\u8BA4\u547D\u540D\u7B56\u7565","Naming strategy":"\u547D\u540D\u7B56\u7565","Strategy for generating default project names":"\u751F\u6210\u9ED8\u8BA4\u9879\u76EE\u540D\u79F0\u7684\u7B56\u7565","Use filename":"\u4F7F\u7528\u6587\u4EF6\u540D","Use folder name":"\u4F7F\u7528\u6587\u4EF6\u5939\u540D","Use metadata field":"\u4F7F\u7528\u5143\u6570\u636E\u5B57\u6BB5","Metadata field to use as project name":"\u7528\u4F5C\u9879\u76EE\u540D\u79F0\u7684\u5143\u6570\u636E\u5B57\u6BB5","Enter metadata key (e.g., project-name)":"\u8F93\u5165\u5143\u6570\u636E\u952E\uFF08\u4F8B\u5982\uFF0Cproject-name\uFF09","Strip file extension":"\u53BB\u9664\u6587\u4EF6\u6269\u5C55\u540D","Remove file extension from filename when using as project name":"\u7528\u4F5C\u9879\u76EE\u540D\u79F0\u65F6\u4ECE\u6587\u4EF6\u540D\u4E2D\u79FB\u9664\u6587\u4EF6\u6269\u5C55\u540D","Target type":"\u76EE\u6807\u7C7B\u578B","Choose whether to capture to a fixed file or daily note":"\u9009\u62E9\u662F\u5426\u6355\u83B7\u5230\u56FA\u5B9A\u6587\u4EF6\u6216\u6BCF\u65E5\u7B14\u8BB0","Fixed file":"\u56FA\u5B9A\u6587\u4EF6","Daily note":"\u6BCF\u65E5\u7B14\u8BB0","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u4FDD\u5B58\u6355\u83B7\u6587\u672C\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F84\uFF0C\u4F8B\u5982 'folder/Quick Capture.md'\u3002\u652F\u6301\u65E5\u671F\u6A21\u677F\uFF0C\u5982 {{DATE:YYYY-MM-DD}} \u6216 {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"\u4E0E\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u540C\u6B65","Automatically sync settings from the Daily Notes plugin":"\u81EA\u52A8\u4ECE\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u540C\u6B65\u8BBE\u7F6E","Sync now":"\u7ACB\u5373\u540C\u6B65","Daily notes settings synced successfully":"\u6BCF\u65E5\u7B14\u8BB0\u8BBE\u7F6E\u540C\u6B65\u6210\u529F","Daily Notes plugin is not enabled":"\u6BCF\u65E5\u7B14\u8BB0\u63D2\u4EF6\u672A\u542F\u7528","Failed to sync daily notes settings":"\u540C\u6B65\u6BCF\u65E5\u7B14\u8BB0\u8BBE\u7F6E\u5931\u8D25","Date format for daily notes (e.g., YYYY-MM-DD)":"\u6BCF\u65E5\u7B14\u8BB0\u7684\u65E5\u671F\u683C\u5F0F\uFF08\u4F8B\u5982\uFF0CYYYY-MM-DD\uFF0C\u652F\u6301\u5D4C\u5957\u683C\u5F0F\u5982 YYYY-MM/YYYY-MM-DD\uFF09","Daily note folder":"\u6BCF\u65E5\u7B14\u8BB0\u6587\u4EF6\u5939","Folder path for daily notes (leave empty for root)":"\u6BCF\u65E5\u7B14\u8BB0\u7684\u6587\u4EF6\u5939\u8DEF\u5F84\uFF08\u7559\u7A7A\u8868\u793A\u6839\u76EE\u5F55\uFF09","Daily note template":"\u6BCF\u65E5\u7B14\u8BB0\u6A21\u677F","Template file path for new daily notes (optional)":"\u65B0\u6BCF\u65E5\u7B14\u8BB0\u7684\u6A21\u677F\u6587\u4EF6\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09","Target heading":"\u76EE\u6807\u6807\u9898","Optional heading to append content under (leave empty to append to file)":"\u8981\u5728\u5176\u4E0B\u8FFD\u52A0\u5185\u5BB9\u7684\u53EF\u9009\u6807\u9898\uFF08\u7559\u7A7A\u8868\u793A\u8FFD\u52A0\u5230\u6587\u4EF6\uFF09","How to add captured content to the target location":"\u5982\u4F55\u5C06\u6355\u83B7\u7684\u5185\u5BB9\u6DFB\u52A0\u5230\u76EE\u6807\u4F4D\u7F6E",Append:"\u8FFD\u52A0",Prepend:"\u524D\u7F6E",Replace:"\u66FF\u6362","Enable auto-move for completed tasks":"\u4E3A\u5DF2\u5B8C\u6210\u4EFB\u52A1\u542F\u7528\u81EA\u52A8\u79FB\u52A8","Automatically move completed tasks to a default file without manual selection.":"\u81EA\u52A8\u5C06\u5DF2\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6\uFF0C\u65E0\u9700\u624B\u52A8\u9009\u62E9\u3002","Default target file":"\u9ED8\u8BA4\u76EE\u6807\u6587\u4EF6","Default file to move completed tasks to (e.g., 'Archive.md')":"\u79FB\u52A8\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6587\u4EF6\uFF08\u4F8B\u5982\uFF0C'Archive.md'\uFF09","Default insertion mode":"\u9ED8\u8BA4\u63D2\u5165\u6A21\u5F0F","Where to insert completed tasks in the target file":"\u5728\u76EE\u6807\u6587\u4EF6\u4E2D\u63D2\u5165\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u4F4D\u7F6E","Default heading name":"\u9ED8\u8BA4\u6807\u9898\u540D\u79F0","Heading name to insert tasks after (will be created if it doesn't exist)":"\u5728\u5176\u540E\u63D2\u5165\u4EFB\u52A1\u7684\u6807\u9898\u540D\u79F0\uFF08\u5982\u679C\u4E0D\u5B58\u5728\u5C06\u521B\u5EFA\uFF09","Enable auto-move for incomplete tasks":"\u4E3A\u672A\u5B8C\u6210\u4EFB\u52A1\u542F\u7528\u81EA\u52A8\u79FB\u52A8","Automatically move incomplete tasks to a default file without manual selection.":"\u81EA\u52A8\u5C06\u672A\u5B8C\u6210\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6\uFF0C\u65E0\u9700\u624B\u52A8\u9009\u62E9\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u76EE\u6807\u6587\u4EF6","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u79FB\u52A8\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6587\u4EF6\uFF08\u4F8B\u5982\uFF0C'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u63D2\u5165\u6A21\u5F0F","Where to insert incomplete tasks in the target file":"\u5728\u76EE\u6807\u6587\u4EF6\u4E2D\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u4F4D\u7F6E","Default heading name for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u9ED8\u8BA4\u6807\u9898\u540D\u79F0","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u5728\u5176\u540E\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52A1\u7684\u6807\u9898\u540D\u79F0\uFF08\u5982\u679C\u4E0D\u5B58\u5728\u5C06\u521B\u5EFA\uFF09","Other settings":"\u5176\u4ED6\u8BBE\u7F6E","Use Task Genius icons":"\u4F7F\u7528 Task Genius \u56FE\u6807","Use Task Genius icons for task statuses":"\u4E3A\u4EFB\u52A1\u72B6\u6001\u4F7F\u7528 Task Genius \u56FE\u6807","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u5728 dataview \u683C\u5F0F\u4E2D\u7528\u4E8E\u4E0A\u4E0B\u6587\u6807\u7B7E\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'context' \u7528\u4E8E [context:: home]\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u81EA\u5B9A\u4E49\u7528\u4E8E\u4E0A\u4E0B\u6587\u6807\u7B7E\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'@home' \u7528\u4E8E @home\uFF09\u3002\u66F4\u6539\u9700\u8981\u91CD\u65B0\u7D22\u5F15\u3002",Area:"\u533A\u57DF","File Parsing Configuration":"\u6587\u4EF6\u89E3\u6790\u914D\u7F6E","Configure how to extract tasks from file metadata and tags.":"\u914D\u7F6E\u5982\u4F55\u4ECE\u6587\u4EF6\u5143\u6570\u636E\u548C\u6807\u7B7E\u4E2D\u63D0\u53D6\u4EFB\u52A1\u3002","Enable file metadata parsing":"\u542F\u7528\u6587\u4EF6\u5143\u6570\u636E\u89E3\u6790","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u4ECE\u6587\u4EF6\u524D\u8A00\u5143\u6570\u636E\u5B57\u6BB5\u89E3\u6790\u4EFB\u52A1\u3002\u542F\u7528\u65F6\uFF0C\u5177\u6709\u7279\u5B9A\u5143\u6570\u636E\u5B57\u6BB5\u7684\u6587\u4EF6\u5C06\u88AB\u89C6\u4E3A\u4EFB\u52A1\u3002","File metadata parsing enabled. Rebuilding task index...":"\u6587\u4EF6\u5143\u6570\u636E\u89E3\u6790\u5DF2\u542F\u7528\u3002\u6B63\u5728\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15...","Task index rebuilt successfully":"\u4EFB\u52A1\u7D22\u5F15\u91CD\u5EFA\u6210\u529F","Failed to rebuild task index":"\u91CD\u5EFA\u4EFB\u52A1\u7D22\u5F15\u5931\u8D25","Metadata fields to parse as tasks":"\u8981\u89E3\u6790\u4E3A\u4EFB\u52A1\u7684\u5143\u6570\u636E\u5B57\u6BB5","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u5E94\u88AB\u89C6\u4E3A\u4EFB\u52A1\u7684\u5143\u6570\u636E\u5B57\u6BB5\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\uFF08\u4F8B\u5982\uFF0CdueDate\u3001todo\u3001complete\u3001task\uFF09","Task content from metadata":"\u6765\u81EA\u5143\u6570\u636E\u7684\u4EFB\u52A1\u5185\u5BB9","Which metadata field to use as task content. If not found, will use filename.":"\u7528\u4F5C\u4EFB\u52A1\u5185\u5BB9\u7684\u5143\u6570\u636E\u5B57\u6BB5\u3002\u5982\u679C\u672A\u627E\u5230\uFF0C\u5C06\u4F7F\u7528\u6587\u4EF6\u540D\u3002","Default task status":"\u9ED8\u8BA4\u4EFB\u52A1\u72B6\u6001","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u4ECE\u5143\u6570\u636E\u521B\u5EFA\u7684\u4EFB\u52A1\u7684\u9ED8\u8BA4\u72B6\u6001\uFF08\u7A7A\u683C\u8868\u793A\u672A\u5B8C\u6210\uFF0Cx \u8868\u793A\u5DF2\u5B8C\u6210\uFF09","Enable tag-based task parsing":"\u542F\u7528\u57FA\u4E8E\u6807\u7B7E\u7684\u4EFB\u52A1\u89E3\u6790","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u4ECE\u6587\u4EF6\u6807\u7B7E\u89E3\u6790\u4EFB\u52A1\u3002\u542F\u7528\u65F6\uFF0C\u5177\u6709\u7279\u5B9A\u6807\u7B7E\u7684\u6587\u4EF6\u5C06\u88AB\u89C6\u4E3A\u4EFB\u52A1\u3002","Tags to parse as tasks":"\u8981\u89E3\u6790\u4E3A\u4EFB\u52A1\u7684\u6807\u7B7E","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u5E94\u88AB\u89C6\u4E3A\u4EFB\u52A1\u7684\u6807\u7B7E\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\uFF08\u4F8B\u5982\uFF0C#todo\u3001#task\u3001#action\u3001#due\uFF09","Enable worker processing":"\u542F\u7528\u5DE5\u4F5C\u7EBF\u7A0B\u5904\u7406","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u4F7F\u7528\u540E\u53F0\u5DE5\u4F5C\u7EBF\u7A0B\u8FDB\u884C\u6587\u4EF6\u89E3\u6790\u4EE5\u63D0\u9AD8\u6027\u80FD\u3002\u63A8\u8350\u7528\u4E8E\u5927\u578B\u5E93\u3002","What do you want to do today?":"\u60A8\u4ECA\u5929\u60F3\u505A\u4EC0\u4E48\uFF1F","More options":"\u66F4\u591A\u9009\u9879","Hide weekends":"\u9690\u85CF\u5468\u672B","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u5728\u65E5\u5386\u89C6\u56FE\u4E2D\u9690\u85CF\u5468\u672B\u5217\uFF08\u5468\u516D\u548C\u5468\u65E5\uFF09\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u5728\u9884\u6D4B\u65E5\u5386\u4E2D\u9690\u85CF\u5468\u672B\u5217\uFF08\u5468\u516D\u548C\u5468\u65E5\uFF09\u3002",Repeatable:"\u53EF\u91CD\u590D",Final:"\u6700\u7EC8",Sequential:"\u987A\u5E8F","Current: ":"\u5F53\u524D\uFF1A",completed:"\u5DF2\u5B8C\u6210","Convert to workflow template":"\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6A21\u677F","Start workflow here":"\u5728\u6B64\u5F00\u59CB\u5DE5\u4F5C\u6D41","Create quick workflow":"\u521B\u5EFA\u5FEB\u901F\u5DE5\u4F5C\u6D41","Workflow not found":"\u672A\u627E\u5230\u5DE5\u4F5C\u6D41","Stage not found":"\u672A\u627E\u5230\u9636\u6BB5","Current stage":"\u5F53\u524D\u9636\u6BB5",Type:"\u7C7B\u578B",Next:"\u4E0B\u4E00\u4E2A","Auto-move completed subtasks to default file":"\u81EA\u52A8\u5C06\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move direct completed subtasks to default file":"\u81EA\u52A8\u5C06\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move all subtasks to default file":"\u81EA\u52A8\u5C06\u6240\u6709\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move incomplete subtasks to default file":"\u81EA\u52A8\u5C06\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Auto-move direct incomplete subtasks to default file":"\u81EA\u52A8\u5C06\u76F4\u63A5\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52A1\u79FB\u52A8\u5230\u9ED8\u8BA4\u6587\u4EF6","Convert task to workflow template":"\u5C06\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6A21\u677F","Convert current task to workflow root":"\u5C06\u5F53\u524D\u4EFB\u52A1\u8F6C\u6362\u4E3A\u5DE5\u4F5C\u6D41\u6839","Duplicate workflow":"\u590D\u5236\u5DE5\u4F5C\u6D41","Workflow quick actions":"\u5DE5\u4F5C\u6D41\u5FEB\u901F\u64CD\u4F5C","Workflow generated from task structure":"\u4ECE\u4EFB\u52A1\u7ED3\u6784\u751F\u6210\u7684\u5DE5\u4F5C\u6D41","Workflow based on existing pattern":"\u57FA\u4E8E\u73B0\u6709\u6A21\u5F0F\u7684\u5DE5\u4F5C\u6D41",Matrix:"\u77E9\u9635","More actions":"\u66F4\u591A\u64CD\u4F5C","Open in file":"\u5728\u6587\u4EF6\u4E2D\u6253\u5F00","Copy task":"\u590D\u5236\u4EFB\u52A1","Mark as urgent":"\u6807\u8BB0\u4E3A\u7D27\u6025","Mark as important":"\u6807\u8BB0\u4E3A\u91CD\u8981","Overdue by {days} days":"\u903E\u671F {days} \u5929","Due today":"\u4ECA\u5929\u5230\u671F","Due tomorrow":"\u660E\u5929\u5230\u671F","Due in {days} days":"\u5728 {days} \u5929\u5185\u5230\u671F","Loading tasks...":"\u52A0\u8F7D\u4EFB\u52A1\u4E2D...",task:"\u4EFB\u52A1","No crisis tasks - great job!":"\u6CA1\u6709\u5371\u673A\u4EFB\u52A1 - \u5E72\u5F97\u597D\uFF01","No planning tasks - consider adding some goals":"\u6CA1\u6709\u8BA1\u5212\u4EFB\u52A1 - \u8003\u8651\u6DFB\u52A0\u4E00\u4E9B\u76EE\u6807","No interruptions - focus time!":"\u6CA1\u6709\u5E72\u6270 - \u4E13\u6CE8\u65F6\u95F4\uFF01","No time wasters - excellent focus!":"\u6CA1\u6709\u65F6\u95F4\u6D6A\u8D39 - \u51FA\u8272\u7684\u4E13\u6CE8\u529B\uFF01","No tasks in this quadrant":"\u6B64\u8C61\u9650\u4E2D\u6CA1\u6709\u4EFB\u52A1","Handle immediately. These are critical tasks that need your attention now.":"\u7ACB\u5373\u5904\u7406\u3002\u8FD9\u4E9B\u662F\u9700\u8981\u60A8\u7ACB\u5373\u5173\u6CE8\u7684\u5173\u952E\u4EFB\u52A1\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u5B89\u6392\u548C\u8BA1\u5212\u3002\u8FD9\u4E9B\u4EFB\u52A1\u5BF9\u60A8\u7684\u957F\u671F\u6210\u529F\u81F3\u5173\u91CD\u8981\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u5982\u679C\u53EF\u80FD\uFF0C\u59D4\u6258\u4ED6\u4EBA\u3002\u8FD9\u4E9B\u4EFB\u52A1\u7D27\u6025\u4F46\u4E0D\u9700\u8981\u60A8\u7279\u5B9A\u7684\u6280\u80FD\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6D88\u9664\u6216\u6700\u5C0F\u5316\u3002\u8FD9\u4E9B\u4EFB\u52A1\u53EF\u80FD\u662F\u65F6\u95F4\u6D6A\u8D39\u3002","Review and categorize these tasks appropriately.":"\u9002\u5F53\u5730\u5BA1\u67E5\u548C\u5206\u7C7B\u8FD9\u4E9B\u4EFB\u52A1\u3002","Urgent & Important":"\u7D27\u6025 & \u91CD\u8981","Do First - Crisis & emergencies":"\u4F18\u5148\u5904\u7406 - \u5371\u673A\u4E0E\u7D27\u6025\u60C5\u51B5","Not Urgent & Important":"\u4E0D\u7D27\u6025 & \u91CD\u8981","Schedule - Planning & development":"\u5B89\u6392 - \u89C4\u5212\u4E0E\u53D1\u5C55","Urgent & Not Important":"\u7D27\u6025 & \u4E0D\u91CD\u8981","Delegate - Interruptions & distractions":"\u59D4\u6258 - \u5E72\u6270\u4E0E\u5206\u5FC3","Not Urgent & Not Important":"\u4E0D\u7D27\u6025 & \u4E0D\u91CD\u8981","Eliminate - Time wasters":"\u6D88\u9664 - \u65F6\u95F4\u6D6A\u8D39","Task Priority Matrix":"\u4EFB\u52A1\u4F18\u5148\u7EA7\u77E9\u9635","Created Date (Newest First)":"\u521B\u5EFA\u65E5\u671F\uFF08\u6700\u65B0\u4F18\u5148\uFF09","Created Date (Oldest First)":"\u521B\u5EFA\u65E5\u671F\uFF08\u6700\u65E9\u4F18\u5148\uFF09","Toggle empty columns":"\u5207\u6362\u7A7A\u5217\u663E\u793A","Failed to update task":"\u66F4\u65B0\u4EFB\u52A1\u5931\u8D25","Remove urgent tag":"\u79FB\u9664\u7D27\u6025\u6807\u7B7E","Remove important tag":"\u79FB\u9664\u91CD\u8981\u6807\u7B7E","Loading more tasks...":"\u52A0\u8F7D\u66F4\u591A\u4EFB\u52A1...","On Completion":"\u5B8C\u6210\u65F6\u64CD\u4F5C","Action to execute on completion":"\u5B8C\u6210\u65F6\u6267\u884C\u7684\u64CD\u4F5C","Configuration is valid":"\u914D\u7F6E\u6709\u6548","Action Type":"\u64CD\u4F5C\u7C7B\u578B","Select action type":"\u9009\u62E9\u64CD\u4F5C\u7C7B\u578B",Keep:"\u4FDD\u7559",Move:"\u79FB\u52A8",Archive:"\u5F52\u6863","Target File":"\u76EE\u6807\u6587\u4EF6","Select target file":"\u9009\u62E9\u76EE\u6807\u6587\u4EF6","Target Section":"\u76EE\u6807\u7AE0\u8282","Section name (optional)":"\u7AE0\u8282\u540D\u79F0\uFF08\u53EF\u9009\uFF09","Create section if not exists":"\u5982\u679C\u4E0D\u5B58\u5728\u5219\u521B\u5EFA\u7AE0\u8282","Task IDs":"\u4EFB\u52A1ID","Task IDs to complete (comma-separated)":"\u8981\u5B8C\u6210\u7684\u4EFB\u52A1ID\uFF08\u9017\u53F7\u5206\u9694\uFF09","Archive File":"\u5F52\u6863\u6587\u4EF6","Archive Section":"\u5F52\u6863\u7AE0\u8282","Include metadata in duplicate":"\u5728\u590D\u5236\u4E2D\u5305\u542B\u5143\u6570\u636E","Invalid JSON format":"\u65E0\u6548\u7684JSON\u683C\u5F0F","Action type is required":"\u64CD\u4F5C\u7C7B\u578B\u662F\u5FC5\u9700\u7684","Target file is required for move action":"\u79FB\u52A8\u64CD\u4F5C\u9700\u8981\u76EE\u6807\u6587\u4EF6","Task IDs are required for complete action":"\u5B8C\u6210\u64CD\u4F5C\u9700\u8981\u4EFB\u52A1ID","Archive file is required for archive action":"\u5F52\u6863\u64CD\u4F5C\u9700\u8981\u5F52\u6863\u6587\u4EF6","Enable OnCompletion":"\u542F\u7528\u5B8C\u6210\u65F6\u64CD\u4F5C","Enable automatic actions when tasks are completed":"\u542F\u7528\u4EFB\u52A1\u5B8C\u6210\u65F6\u7684\u81EA\u52A8\u64CD\u4F5C","Default Archive File":"\u9ED8\u8BA4\u5F52\u6863\u6587\u4EF6","Default file for archive action":"\u5F52\u6863\u64CD\u4F5C\u7684\u9ED8\u8BA4\u6587\u4EF6","Default Archive Section":"\u9ED8\u8BA4\u5F52\u6863\u7AE0\u8282","Default section for archive action":"\u5F52\u6863\u64CD\u4F5C\u7684\u9ED8\u8BA4\u7AE0\u8282","Show Advanced Options":"\u663E\u793A\u9AD8\u7EA7\u9009\u9879","Show advanced configuration options in task editors":"\u5728\u4EFB\u52A1\u7F16\u8F91\u5668\u4E2D\u663E\u793A\u9AD8\u7EA7\u914D\u7F6E\u9009\u9879","Select action type...":"\u9009\u62E9\u64CD\u4F5C\u7C7B\u578B...","Delete task":"\u5220\u9664\u4EFB\u52A1","Keep task":"\u4FDD\u7559\u4EFB\u52A1","Complete related tasks":"\u5B8C\u6210\u76F8\u5173\u4EFB\u52A1","Move task":"\u79FB\u52A8\u4EFB\u52A1","Archive task":"\u5F52\u6863\u4EFB\u52A1","Duplicate task":"\u590D\u5236\u4EFB\u52A1","Enter task IDs separated by commas":"\u8F93\u5165\u7528\u9017\u53F7\u5206\u9694\u7684\u4EFB\u52A1 ID","Comma-separated list of task IDs to complete when this task is completed":"\u5F53\u6B64\u4EFB\u52A1\u5B8C\u6210\u65F6\u8981\u5B8C\u6210\u7684\u4EFB\u52A1 ID \u9017\u53F7\u5206\u9694\u5217\u8868","Path to target file":"\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84","Target Section (Optional)":"\u76EE\u6807\u7AE0\u8282\uFF08\u53EF\u9009\uFF09","Section name in target file":"\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7AE0\u8282\u540D\u79F0","Archive File (Optional)":"\u5F52\u6863\u6587\u4EF6\uFF08\u53EF\u9009\uFF09","Default: Archive/Completed Tasks.md":"\u9ED8\u8BA4\uFF1AArchive/Completed Tasks.md","Archive Section (Optional)":"\u5F52\u6863\u7AE0\u8282\uFF08\u53EF\u9009\uFF09","Default: Completed Tasks":"\u9ED8\u8BA4\uFF1A\u5DF2\u5B8C\u6210\u4EFB\u52A1","Target File (Optional)":"\u76EE\u6807\u6587\u4EF6\uFF08\u53EF\u9009\uFF09","Default: same file":"\u9ED8\u8BA4\uFF1A\u540C\u4E00\u6587\u4EF6","Preserve Metadata":"\u4FDD\u7559\u5143\u6570\u636E","Keep completion dates and other metadata in the duplicated task":"\u5728\u590D\u5236\u7684\u4EFB\u52A1\u4E2D\u4FDD\u7559\u5B8C\u6210\u65E5\u671F\u548C\u5176\u4ED6\u5143\u6570\u636E","Overdue by":"\u903E\u671F",days:"\u5929","Due in":"\u5230\u671F",Folder:"\u6587\u4EF6\u5939","Refresh Statistics":"\u5237\u65B0\u7EDF\u8BA1","Manually refresh filter statistics to see current data":"\u624B\u52A8\u5237\u65B0\u7B5B\u9009\u7EDF\u8BA1\u4EE5\u67E5\u770B\u5F53\u524D\u6570\u636E","Refreshing...":"\u5237\u65B0\u4E2D...","No filter data available":"\u6CA1\u6709\u53EF\u7528\u7684\u7B5B\u9009\u6570\u636E","Error loading statistics":"\u52A0\u8F7D\u7EDF\u8BA1\u9519\u8BEF","Configure checkbox status settings":"\u914D\u7F6E\u590D\u9009\u6846\u72B6\u6001\u8BBE\u5B9A","Auto complete parent checkbox":"\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u590D\u9009\u6846","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u5141\u8BB8\u6B64\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52A1\u5B8C\u6210\u65F6\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u590D\u9009\u6846\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u5F53\u90E8\u5206\u5B50\u4EFB\u52A1\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u5B8C\u6210\u65F6\uFF0C\u5C06\u7236\u7EA7\u590D\u9009\u6846\u6807\u8BB0\u4E3A\u201C\u8FDB\u884C\u4E2D\u201D\u3002\u4EC5\u5728\u542F\u7528\u201C\u81EA\u52A8\u5B8C\u6210\u7236\u7EA7\u201D\u65F6\u624D\u4F1A\u4F5C\u7528\u3002","Select a predefined checkbox status collection or customize your own":"\u9009\u62E9\u9884\u5B9A\u4E49\u7684\u590D\u9009\u6846\u72B6\u6001\u96C6\u5408\u6216\u81EA\u5B9A\u4E49\u60A8\u81EA\u5DF1\u7684","Checkbox Switcher":"\u590D\u9009\u6846\u5207\u6362\u5668","Enable checkbox status switcher":"\u542F\u7528\u590D\u9009\u6846\u72B6\u6001\u5207\u6362\u5668","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u7528\u6837\u5F0F\u5316\u7684\u6587\u5B57\u6807\u8BB0\u53D6\u4EE3\u9ED8\u8BA4\u590D\u9009\u6846\uFF0C\u70B9\u51FB\u65F6\u9075\u5FAA\u60A8\u7684\u590D\u9009\u6846\u72B6\u6001\u5FAA\u73AF\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u4F7F\u539F\u59CB\u6A21\u5F0F\u4E2D\u7684\u6587\u5B57\u6807\u8BB0\u5728\u70B9\u51FB\u65F6\u9075\u5FAA\u590D\u9009\u6846\u72B6\u6001\u5FAA\u73AF\u3002","Automatically manage dates based on checkbox status changes":"\u6839\u636E\u590D\u9009\u6846\u72B6\u6001\u53D8\u5316\u81EA\u52A8\u7BA1\u7406\u65E5\u671F","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528\u590D\u9009\u6846\u72B6\u6001\u53D8\u5316\u65F6\u7684\u81EA\u52A8\u65E5\u671F\u7BA1\u7406\u3002\u5C06\u6839\u636E\u60A8\u559C\u597D\u7684\u5143\u6570\u636E\u683C\u5F0F\uFF08\u4EFB\u52A1\u8868\u60C5\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u79FB\u9664\u65E5\u671F\u3002","Default view mode":"\u9ED8\u8BA4\u89C6\u56FE\u6A21\u5F0F","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u9009\u62E9\u6240\u6709\u89C6\u56FE\u7684\u9ED8\u8BA4\u663E\u793A\u6A21\u5F0F\u3002\u8FD9\u5F71\u54CD\u60A8\u7B2C\u4E00\u6B21\u6253\u5F00\u89C6\u56FE\u6216\u521B\u5EFA\u65B0\u89C6\u56FE\u65F6\u4EFB\u52A1\u7684\u663E\u793A\u65B9\u5F0F\u3002","List View":"\u5217\u8868\u89C6\u56FE","Tree View":"\u6811\u72B6\u89C6\u56FE","Global Filter Configuration":"\u5168\u5C40\u7B5B\u9009\u914D\u7F6E","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u914D\u7F6E\u9ED8\u8BA4\u5E94\u7528\u4E8E\u6240\u6709\u89C6\u56FE\u7684\u5168\u5C40\u7B5B\u9009\u89C4\u5219\u3002\u5355\u4E2A\u89C6\u56FE\u53EF\u4EE5\u8986\u76D6\u8FD9\u4E9B\u8BBE\u5B9A\u3002","Cancelled Date":"\u53D6\u6D88\u65E5\u671F","Depends On":"\u4F9D\u8D56\u4E8E","Task IDs separated by commas":"\u7528\u9017\u53F7\u5206\u9694\u7684\u4EFB\u52A1 ID","Task ID":"\u4EFB\u52A1 ID","Unique task identifier":"\u552F\u4E00\u4EFB\u52A1\u6807\u8BC6\u7B26","Action to execute when task is completed":"\u4EFB\u52A1\u5B8C\u6210\u65F6\u6267\u884C\u7684\u64CD\u4F5C","Comma-separated list of task IDs this task depends on":"\u6B64\u4EFB\u52A1\u4F9D\u8D56\u7684\u4EFB\u52A1 ID \u9017\u53F7\u5206\u9694\u5217\u8868","Unique identifier for this task":"\u6B64\u4EFB\u52A1\u7684\u552F\u4E00\u6807\u8BC6\u7B26","Quadrant Classification Method":"\u8C61\u9650\u5206\u7C7B\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u9009\u62E9\u5982\u4F55\u5C06\u4EFB\u52A1\u5206\u7C7B\u5230\u8C61\u9650\u4E2D","Urgent Priority Threshold":"\u7D27\u6025\u4F18\u5148\u7EA7\u9608\u503C","Tasks with priority >= this value are considered urgent (1-5)":"\u4F18\u5148\u7EA7 >= \u6B64\u503C\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u7D27\u6025\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u4F18\u5148\u7EA7\u9608\u503C","Tasks with priority >= this value are considered important (1-5)":"\u4F18\u5148\u7EA7 >= \u6B64\u503C\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u91CD\u8981\uFF081-5\uFF09","Urgent Tag":"\u7D27\u6025\u6807\u7B7E","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u8BC6\u522B\u7D27\u6025\u4EFB\u52A1\u7684\u6807\u7B7E\uFF08\u4F8B\u5982 #urgent, #fire\uFF09","Important Tag":"\u91CD\u8981\u6807\u7B7E","Tag to identify important tasks (e.g., #important, #key)":"\u8BC6\u522B\u91CD\u8981\u4EFB\u52A1\u7684\u6807\u7B7E\uFF08\u4F8B\u5982 #important, #key\uFF09","Urgent Threshold Days":"\u7D27\u6025\u9608\u503C\u5929\u6570","Tasks due within this many days are considered urgent":"\u5728\u8FD9\u4E48\u591A\u5929\u5185\u5230\u671F\u7684\u4EFB\u52A1\u88AB\u89C6\u4E3A\u7D27\u6025","Auto Update Priority":"\u81EA\u52A8\u66F4\u65B0\u4F18\u5148\u7EA7","Automatically update task priority when moved between quadrants":"\u5728\u8C61\u9650\u95F4\u79FB\u52A8\u65F6\u81EA\u52A8\u66F4\u65B0\u4EFB\u52A1\u4F18\u5148\u7EA7","Auto Update Tags":"\u81EA\u52A8\u66F4\u65B0\u6807\u7B7E","Automatically add/remove urgent/important tags when moved between quadrants":"\u5728\u8C61\u9650\u95F4\u79FB\u52A8\u65F6\u81EA\u52A8\u6DFB\u52A0/\u79FB\u9664\u7D27\u6025/\u91CD\u8981\u6807\u7B7E","Hide Empty Quadrants":"\u9690\u85CF\u7A7A\u8C61\u9650","Hide quadrants that have no tasks":"\u9690\u85CF\u6CA1\u6709\u4EFB\u52A1\u7684\u8C61\u9650","Configure On Completion Action":"\u914D\u7F6E\u5B8C\u6210\u65F6\u64CD\u4F5C","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal \u6587\u4EF6\u7684 URL\uFF08\u652F\u6301 http://\u3001https:// \u548C webcal:// \u534F\u8BAE\uFF09","Task mark display style":"\u4EFB\u52A1\u6807\u8BB0\u663E\u793A\u6837\u5F0F","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u9009\u62E9\u4EFB\u52A1\u6807\u8BB0\u7684\u663E\u793A\u65B9\u5F0F\uFF1A\u9ED8\u8BA4\u590D\u9009\u6846\u3001\u81EA\u5B9A\u4E49\u6587\u5B57\u6807\u8BB0\u6216 Task Genius \u56FE\u6807\u3002","Default checkboxes":"\u9ED8\u8BA4\u590D\u9009\u6846","Custom text marks":"\u81EA\u5B9A\u4E49\u6587\u5B57\u6807\u8BB0","Task Genius icons":"Task Genius \u56FE\u6807","Time Parsing Settings":"\u65F6\u95F4\u89E3\u6790\u8BBE\u5B9A","Enable Time Parsing":"\u542F\u7528\u65F6\u95F4\u89E3\u6790","Automatically parse natural language time expressions in Quick Capture":"\u5728\u5FEB\u901F\u6355\u83B7\u4E2D\u81EA\u52A8\u89E3\u6790\u81EA\u7136\u8BED\u8A00\u65F6\u95F4\u8868\u8FBE\u5F0F","Remove Original Time Expressions":"\u79FB\u9664\u539F\u59CB\u65F6\u95F4\u8868\u8FBE\u5F0F","Remove parsed time expressions from the task text":"\u4ECE\u4EFB\u52A1\u6587\u5B57\u4E2D\u79FB\u9664\u5DF2\u89E3\u6790\u7684\u65F6\u95F4\u8868\u8FBE\u5F0F","Supported Languages":"\u652F\u6301\u7684\u8BED\u8A00","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u76EE\u524D\u652F\u6301\u82F1\u6587\u548C\u4E2D\u6587\u65F6\u95F4\u8868\u8FBE\u5F0F\u3002\u672A\u6765\u66F4\u65B0\u4E2D\u53EF\u80FD\u4F1A\u6DFB\u52A0\u66F4\u591A\u8BED\u8A00\u3002","Date Keywords Configuration":"\u65E5\u671F\u5173\u952E\u8BCD\u914D\u7F6E","Start Date Keywords":"\u5F00\u59CB\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate start dates (comma-separated)":"\u6307\u793A\u5F00\u59CB\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Due Date Keywords":"\u5230\u671F\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate due dates (comma-separated)":"\u6307\u793A\u5230\u671F\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Scheduled Date Keywords":"\u5B89\u6392\u65E5\u671F\u5173\u952E\u8BCD","Keywords that indicate scheduled dates (comma-separated)":"\u6307\u793A\u5B89\u6392\u65E5\u671F\u7684\u5173\u952E\u8BCD\uFF08\u9017\u53F7\u5206\u9694\uFF09","Configure...":"\u914D\u7F6E...","Collapse quick input":"\u6298\u53E0\u5FEB\u901F\u8F93\u5165","Expand quick input":"\u5C55\u5F00\u5FEB\u901F\u8F93\u5165","Set Priority":"\u8BBE\u5B9A\u4F18\u5148\u7EA7","Clear Flags":"\u6E05\u9664\u6807\u5FD7","Filter by Priority":"\u6309\u4F18\u5148\u7EA7\u7B5B\u9009","New Project":"\u65B0\u9879\u76EE","Archive Completed":"\u5F52\u6863\u5DF2\u5B8C\u6210","Project Statistics":"\u9879\u76EE\u7EDF\u8BA1","Manage Tags":"\u7BA1\u7406\u6807\u7B7E","Time Parsing":"\u65F6\u95F4\u89E3\u6790","Minimal Quick Capture":"\u6700\u5C0F\u5316\u5FEB\u901F\u6355\u83B7","Enter your task...":"\u8F93\u5165\u60A8\u7684\u4EFB\u52A1...","Set date":"\u8BBE\u5B9A\u65E5\u671F","Set location":"\u8BBE\u5B9A\u4F4D\u7F6E","Add tags":"\u6DFB\u52A0\u6807\u7B7E","Day after tomorrow":"\u540E\u5929","Next week":"\u4E0B\u5468","Next month":"\u4E0B\u6708","Choose date...":"\u9009\u62E9\u65E5\u671F...","Fixed location":"\u56FA\u5B9A\u4F4D\u7F6E",Date:"\u65E5\u671F","Add date (triggers ~)":"\u6DFB\u52A0\u65E5\u671F\uFF08\u89E6\u53D1\u7B26 ~\uFF09","Set priority (triggers !)":"\u8BBE\u5B9A\u4F18\u5148\u7EA7\uFF08\u89E6\u53D1\u7B26 !\uFF09","Target Location":"\u76EE\u6807\u4F4D\u7F6E","Set target location (triggers *)":"\u8BBE\u5B9A\u76EE\u6807\u4F4D\u7F6E\uFF08\u89E6\u53D1\u7B26 *\uFF09","Add tags (triggers #)":"\u6DFB\u52A0\u6807\u7B7E\uFF08\u89E6\u53D1\u7B26 #\uFF09","Minimal Mode":"\u6700\u5C0F\u5316\u6A21\u5F0F","Enable minimal mode":"\u542F\u7528\u6700\u5C0F\u5316\u6A21\u5F0F","Enable simplified single-line quick capture with inline suggestions":"\u542F\u7528\u7B80\u5316\u7684\u5355\u884C\u5FEB\u901F\u6355\u83B7\u548C\u5185\u5D4C\u5EFA\u8BAE","Suggest trigger character":"\u5EFA\u8BAE\u89E6\u53D1\u5B57\u7B26","Character to trigger the suggestion menu":"\u89E6\u53D1\u5EFA\u8BAE\u83DC\u5355\u7684\u5B57\u7B26","Highest Priority":"\u6700\u9AD8\u4F18\u5148\u7EA7","\u{1F53A} Highest priority task":"\u{1F53A} \u6700\u9AD8\u4F18\u5148\u7EA7\u4EFB\u52A1","Highest priority set":"\u5DF2\u8BBE\u5B9A\u6700\u9AD8\u4F18\u5148\u7EA7","\u23EB High priority task":"\u23EB \u9AD8\u4F18\u5148\u7EA7\u4EFB\u52A1","High priority set":"\u5DF2\u8BBE\u5B9A\u9AD8\u4F18\u5148\u7EA7","\u{1F53C} Medium priority task":"\u{1F53C} \u4E2D\u7B49\u4F18\u5148\u7EA7\u4EFB\u52A1","Medium priority set":"\u5DF2\u8BBE\u5B9A\u4E2D\u7B49\u4F18\u5148\u7EA7","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u4F18\u5148\u7EA7\u4EFB\u52A1","Low priority set":"\u5DF2\u8BBE\u5B9A\u4F4E\u4F18\u5148\u7EA7","Lowest Priority":"\u6700\u4F4E\u4F18\u5148\u7EA7","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u4F18\u5148\u7EA7\u4EFB\u52A1","Lowest priority set":"\u5DF2\u8BBE\u5B9A\u6700\u4F4E\u4F18\u5148\u7EA7","Set due date to today":"\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u4ECA\u5929","Due date set to today":"\u5DF2\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u4ECA\u5929","Set due date to tomorrow":"\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u660E\u5929","Due date set to tomorrow":"\u5DF2\u8BBE\u5B9A\u5230\u671F\u65E5\u671F\u4E3A\u660E\u5929","Pick Date":"\u9009\u62E9\u65E5\u671F","Open date picker":"\u6253\u5F00\u65E5\u671F\u9009\u62E9\u5668","Set scheduled date":"\u8BBE\u5B9A\u5B89\u6392\u65E5\u671F","Scheduled date set":"\u5DF2\u8BBE\u5B9A\u5B89\u6392\u65E5\u671F","Save to inbox":"\u4FDD\u5B58\u5230\u6536\u4EF6\u7BB1","Target set to Inbox":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u6536\u4EF6\u7BB1","Daily Note":"\u65E5\u8BB0","Save to today's daily note":"\u4FDD\u5B58\u5230\u4ECA\u5929\u7684\u65E5\u8BB0","Target set to Daily Note":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u65E5\u8BB0","Current File":"\u5F53\u524D\u6587\u4EF6","Save to current file":"\u4FDD\u5B58\u5230\u5F53\u524D\u6587\u4EF6","Target set to Current File":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A\u5F53\u524D\u6587\u4EF6","Choose File":"\u9009\u62E9\u6587\u4EF6","Open file picker":"\u6253\u5F00\u6587\u4EF6\u9009\u62E9\u5668","Save to recent file":"\u4FDD\u5B58\u5230\u6700\u8FD1\u6587\u4EF6","Target set to":"\u5DF2\u8BBE\u5B9A\u76EE\u6807\u4E3A",Important:"\u91CD\u8981","Tagged as important":"\u5DF2\u6807\u8BB0\u4E3A\u91CD\u8981",Urgent:"\u7D27\u6025","Tagged as urgent":"\u5DF2\u6807\u8BB0\u4E3A\u7D27\u6025",Work:"\u5DE5\u4F5C","Work related task":"\u5DE5\u4F5C\u76F8\u5173\u4EFB\u52A1","Tagged as work":"\u5DF2\u6807\u8BB0\u4E3A\u5DE5\u4F5C",Personal:"\u4E2A\u4EBA","Personal task":"\u4E2A\u4EBA\u4EFB\u52A1","Tagged as personal":"\u5DF2\u6807\u8BB0\u4E3A\u4E2A\u4EBA","Choose Tag":"\u9009\u62E9\u6807\u7B7E","Open tag picker":"\u6253\u5F00\u6807\u7B7E\u9009\u62E9\u5668","Existing tag":"\u73B0\u6709\u6807\u7B7E","Tagged with":"\u5DF2\u6807\u8BB0\u4E3A","Toggle quick capture panel in editor":"\u5728\u7F16\u8F91\u5668\u4E2D\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F","Toggle quick capture panel in editor (Globally)":"\u5728\u7F16\u8F91\u5668\u4E2D\u5207\u6362\u5FEB\u901F\u6355\u83B7\u9762\u677F\uFF08\u5168\u5C40\uFF09","Selected Mode":"Selected Mode","Features that will be enabled":"Features that will be enabled","Don't worry! You can customize any of these settings later in the plugin settings.":"Don't worry! You can customize any of these settings later in the plugin settings.","Available views":"Available views","Key settings":"Key settings","Progress bars":"Progress bars","Enabled (both graphical and text)":"Enabled (both graphical and text)","Task status switching":"Task status switching","Workflow management":"Workflow management","Reward system":"Reward system","Habit tracking":"Habit tracking","Performance optimization":"Performance optimization","Configuration Changes":"Configuration Changes","Your custom views will be preserved":"Your custom views will be preserved","New views to be added":"New views to be added","Existing views to be updated":"Existing views to be updated","Feature changes":"Feature changes","Only template settings will be applied. Your existing custom configurations will be preserved.":"Only template settings will be applied. Your existing custom configurations will be preserved.","Congratulations!":"Congratulations!","Task Genius has been configured with your selected preferences":"Task Genius has been configured with your selected preferences","Your Configuration":"Your Configuration","Quick Start Guide":"Quick Start Guide","What's next?":"What's next?","Open Task Genius view from the left ribbon":"Open Task Genius view from the left ribbon","Create your first task using Quick Capture":"Create your first task using Quick Capture","Explore different views to organize your tasks":"Explore different views to organize your tasks","Customize settings anytime in plugin settings":"Customize settings anytime in plugin settings","Helpful Resources":"Helpful Resources","Complete guide to all features":"Complete guide to all features",Community:"\u793E\u533A","Get help and share tips":"\u83B7\u5F97\u5E2E\u52A9\u548C\u5206\u4EAB\u6280\u5DE7","Customize Task Genius":"\u81EA\u5B9A\u4E49 Task Genius","Click the Task Genius icon in the left sidebar":"\u70B9\u51FB\u5DE6\u4FA7\u8FB9\u680F\u7684 Task Genius \u56FE\u6807","Start with the Inbox view to see all your tasks":"\u4ECE\u6536\u4EF6\u7BB1\u89C6\u56FE\u5F00\u59CB\u67E5\u770B\u6240\u6709\u4EFB\u52A1","Use quick capture panel to quickly add your first task":"\u4F7F\u7528\u5FEB\u901F\u6355\u83B7\u9762\u677F\u5FEB\u901F\u6DFB\u52A0\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Try the Forecast view to see tasks by date":"\u5C1D\u8BD5\u9884\u6D4B\u89C6\u56FE\u6309\u65E5\u671F\u67E5\u770B\u4EFB\u52A1","Open Task Genius and explore the available views":"\u6253\u5F00 Task Genius \u5E76\u63A2\u7D22\u53EF\u7528\u89C6\u56FE","Set up a project using the Projects view":"\u4F7F\u7528\u9879\u76EE\u89C6\u56FE\u8BBE\u7F6E\u9879\u76EE","Try the Kanban board for visual task management":"\u5C1D\u8BD5\u770B\u677F\u8FDB\u884C\u53EF\u89C6\u5316\u4EFB\u52A1\u7BA1\u7406","Use workflow stages to track task progress":"\u4F7F\u7528\u5DE5\u4F5C\u6D41\u9636\u6BB5\u8DDF\u8E2A\u4EFB\u52A1\u8FDB\u5EA6","Explore all available views and their configurations":"\u63A2\u7D22\u6240\u6709\u53EF\u7528\u89C6\u56FE\u53CA\u5176\u914D\u7F6E","Set up complex workflows for your projects":"\u4E3A\u9879\u76EE\u8BBE\u7F6E\u590D\u6742\u5DE5\u4F5C\u6D41","Configure habits and rewards to stay motivated":"\u914D\u7F6E\u4E60\u60EF\u548C\u5956\u52B1\u4EE5\u4FDD\u6301\u52A8\u529B","Integrate with external calendars and systems":"\u4E0E\u5916\u90E8\u65E5\u5386\u548C\u7CFB\u7EDF\u96C6\u6210","Open Task Genius from the left sidebar":"\u4ECE\u5DE6\u4FA7\u8FB9\u680F\u6253\u5F00 Task Genius","Create your first task":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Explore the different views available":"\u63A2\u7D22\u4E0D\u540C\u7684\u53EF\u7528\u89C6\u56FE","Customize settings as needed":"\u6839\u636E\u9700\u8981\u81EA\u5B9A\u4E49\u8BBE\u7F6E","Thank you for your positive feedback!":"\u611F\u8C22\u60A8\u7684\u6B63\u9762\u53CD\u9988\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u611F\u8C22\u60A8\u7684\u53CD\u9988\u3002\u6211\u4EEC\u5C06\u7EE7\u7EED\u6539\u5584\u4F7F\u7528\u4F53\u9A8C\u3002","Share detailed feedback":"\u5206\u4EAB\u8BE6\u7EC6\u53CD\u9988","Skip onboarding":"\u8DF3\u8FC7\u5F15\u5BFC",Back:"\u8FD4\u56DE","Welcome to Task Genius":"\u6B22\u8FCE\u4F7F\u7528 Task Genius","Transform your task management with advanced progress tracking and workflow automation":"\u901A\u8FC7\u9AD8\u7EA7\u8FDB\u5EA6\u8DDF\u8E2A\u548C\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316\u8F6C\u53D8\u60A8\u7684\u4EFB\u52A1\u7BA1\u7406","Progress Tracking":"\u8FDB\u5EA6\u8DDF\u8E2A","Visual progress bars and completion tracking for all your tasks":"\u4E3A\u6240\u6709\u4EFB\u52A1\u63D0\u4F9B\u53EF\u89C6\u5316\u8FDB\u5EA6\u6761\u548C\u5B8C\u6210\u8DDF\u8E2A","Organize tasks by projects with advanced filtering and sorting":"\u4F7F\u7528\u9AD8\u7EA7\u7B5B\u9009\u548C\u6392\u5E8F\u6309\u9879\u76EE\u7EC4\u7EC7\u4EFB\u52A1","Workflow Automation":"\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316","Automate task status changes and improve your productivity":"\u81EA\u52A8\u5316\u4EFB\u52A1\u72B6\u6001\u53D8\u66F4\u5E76\u63D0\u9AD8\u751F\u4EA7\u529B","Multiple Views":"\u591A\u79CD\u89C6\u56FE","Kanban boards, calendars, Gantt charts, and more visualization options":"\u770B\u677F\u3001\u65E5\u5386\u3001\u7518\u7279\u56FE\u548C\u66F4\u591A\u53EF\u89C6\u5316\u9009\u9879","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u8FD9\u4E2A\u5FEB\u901F\u8BBE\u7F6E\u5C06\u6839\u636E\u60A8\u7684\u7ECF\u9A8C\u6C34\u5E73\u548C\u9700\u6C42\u5E2E\u52A9\u60A8\u914D\u7F6E Task Genius\u3002\u60A8\u968F\u65F6\u53EF\u4EE5\u7A0D\u540E\u66F4\u6539\u8FD9\u4E9B\u8BBE\u7F6E\u3002","Choose Your Usage Mode":"\u9009\u62E9\u60A8\u7684\u4F7F\u7528\u6A21\u5F0F","Select the configuration that best matches your task management experience":"\u9009\u62E9\u6700\u7B26\u5408\u60A8\u4EFB\u52A1\u7BA1\u7406\u7ECF\u9A8C\u7684\u914D\u7F6E","Configuration Preview":"\u914D\u7F6E\u9884\u89C8","Review the settings that will be applied for your selected mode":"\u67E5\u770B\u5C06\u5E94\u7528\u4E8E\u60A8\u9009\u62E9\u6A21\u5F0F\u7684\u8BBE\u7F6E","Include task creation guide":"\u5305\u542B\u4EFB\u52A1\u521B\u5EFA\u6307\u5357","Show a quick tutorial on creating your first task":"\u663E\u793A\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4EFB\u52A1\u7684\u5FEB\u901F\u6559\u7A0B","Create Your First Task":"\u521B\u5EFA\u60A8\u7684\u7B2C\u4E00\u4E2A\u4EFB\u52A1","Learn how to create and format tasks in Task Genius":"\u5B66\u4E60\u5982\u4F55\u5728 Task Genius \u4E2D\u521B\u5EFA\u548C\u683C\u5F0F\u5316\u4EFB\u52A1","Setup Complete!":"\u8BBE\u7F6E\u5B8C\u6210\uFF01","Task Genius is now configured and ready to use":"Task Genius \u5DF2\u914D\u7F6E\u5B8C\u6210\u4E14\u53EF\u4EE5\u4F7F\u7528","Start Using Task Genius":"\u5F00\u59CB\u4F7F\u7528 Task Genius","Task Genius Setup":"Task Genius \u8BBE\u7F6E","Skip setup":"\u8DF3\u8FC7\u8BBE\u7F6E","We noticed you've already configured Task Genius":"\u6211\u4EEC\u6CE8\u610F\u5230\u60A8\u5DF2\u7ECF\u914D\u7F6E\u4E86 Task Genius","Your current configuration includes:":"\u60A8\u5F53\u524D\u7684\u914D\u7F6E\u5305\u62EC\uFF1A","Would you like to run the setup wizard anyway?":"\u60A8\u8FD8\u662F\u60F3\u8981\u8FD0\u884C\u8BBE\u7F6E\u5411\u5BFC\u5417\uFF1F","Yes, show me the setup wizard":"\u662F\u7684\uFF0C\u663E\u793A\u8BBE\u7F6E\u5411\u5BFC","No, I'm happy with my current setup":"\u4E0D\u7528\uFF0C\u6211\u6EE1\u610F\u5F53\u524D\u7684\u8BBE\u7F6E","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"\u5B66\u4E60\u5728 Task Genius \u4E2D\u521B\u5EFA\u548C\u683C\u5F0F\u5316\u4EFB\u52A1\u7684\u4E0D\u540C\u65B9\u5F0F\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u8868\u60C5\u7B26\u53F7\u6216 Dataview \u98CE\u683C\u7684\u8BED\u6CD5\u3002","Task Format Examples":"\u4EFB\u52A1\u683C\u5F0F\u793A\u4F8B","Basic Task":"\u57FA\u672C\u4EFB\u52A1","With Emoji Metadata":"\u4F7F\u7528\u8868\u60C5\u7B26\u53F7\u5143\u6570\u636E","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u622A\u6B62\u65E5\u671F\uFF0C\u{1F53A} = \u9AD8\u4F18\u5148\u7EA7\uFF0C#project/ = \u6587\u6863\u9879\u76EE\u6807\u7B7E","With Dataview Metadata":"\u4F7F\u7528 Dataview \u5143\u6570\u636E","Mixed Format":"\u6DF7\u5408\u683C\u5F0F","Combine emoji and dataview syntax as needed":"\u6839\u636E\u9700\u8981\u7EC4\u5408\u8868\u60C5\u7B26\u53F7\u548C Dataview \u8BED\u6CD5","Task Status Markers":"\u4EFB\u52A1\u72B6\u6001\u6807\u8BB0","Not started":"\u672A\u5F00\u59CB","In progress":"\u8FDB\u884C\u4E2D","Common Metadata Symbols":"\u5E38\u7528\u5143\u6570\u636E\u7B26\u53F7","Due date":"\u622A\u6B62\u65E5\u671F","Start date":"\u5F00\u59CB\u65E5\u671F","Scheduled date":"\u8BA1\u5212\u65E5\u671F","Higher priority":"\u8F83\u9AD8\u4F18\u5148\u7EA7","Lower priority":"\u8F83\u4F4E\u4F18\u5148\u7EA7","Recurring task":"\u91CD\u590D\u4EFB\u52A1","Project/tag":"\u9879\u76EE/\u6807\u7B7E","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"\u4F7F\u7528\u5FEB\u901F\u6355\u83B7\u9762\u677F\u4ECE Obsidian \u7684\u4EFB\u4F55\u5730\u65B9\u5FEB\u901F\u6355\u83B7\u4EFB\u52A1\u3002","Try Quick Capture":"\u5C1D\u8BD5\u5FEB\u901F\u6355\u83B7","Quick capture is now enabled in your configuration!":"\u5FEB\u901F\u6355\u83B7\u73B0\u5DF2\u5728\u60A8\u7684\u914D\u7F6E\u4E2D\u542F\u7528\uFF01","Failed to open quick capture. Please try again later.":"\u65E0\u6CD5\u6253\u5F00\u5FEB\u901F\u6355\u83B7\u3002\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002","Try It Yourself":"\u81EA\u5DF1\u8BD5\u8BD5","Practice creating a task with the format you prefer:":"\u7EC3\u4E60\u4F7F\u7528\u60A8\u559C\u6B22\u7684\u683C\u5F0F\u521B\u5EFA\u4EFB\u52A1\uFF1A","Practice Task":"\u7EC3\u4E60\u4EFB\u52A1","Enter a task using any of the formats shown above":"\u4F7F\u7528\u4E0A\u8FF0\u4EFB\u4F55\u683C\u5F0F\u8F93\u5165\u4EFB\u52A1","- [ ] Your task here":"- [ ] \u60A8\u7684\u4EFB\u52A1\u5728\u6B64","Validate Task":"\u9A8C\u8BC1\u4EFB\u52A1","Please enter a task to validate":"\u8BF7\u8F93\u5165\u4EFB\u52A1\u4EE5\u8FDB\u884C\u9A8C\u8BC1","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u8FD9\u770B\u8D77\u6765\u4E0D\u50CF\u6709\u6548\u7684\u4EFB\u52A1\u3002\u4EFB\u52A1\u5E94\u4EE5 '- [ ]' \u5F00\u5934","Valid task format!":"\u6709\u6548\u7684\u4EFB\u52A1\u683C\u5F0F\uFF01","Emoji metadata":"\u8868\u60C5\u7B26\u53F7\u5143\u6570\u636E","Dataview metadata":"Dataview \u5143\u6570\u636E","Project tags":"\u9879\u76EE\u6807\u7B7E","Detected features: ":"\u68C0\u6D4B\u5230\u7684\u529F\u80FD\uFF1A",Onboarding:"\u65B0\u624B\u5F15\u5BFC","Restart the welcome guide and setup wizard":"\u91CD\u65B0\u542F\u52A8\u6B22\u8FCE\u6307\u5357\u548C\u8BBE\u7F6E\u5411\u5BFC","Restart Onboarding":"\u91CD\u65B0\u5F00\u59CB\u5F15\u5BFC",Copy:"\u590D\u5236","Copied!":"\u5DF2\u590D\u5236\uFF01","MCP integration is only available on desktop":"MCP \u96C6\u6210\u4EC5\u5728\u684C\u9762\u7248\u53EF\u7528","MCP Server Status":"MCP \u670D\u52A1\u5668\u72B6\u6001","Enable MCP Server":"\u542F\u7528 MCP \u670D\u52A1\u5668","Start the MCP server to allow external tool connections":"\u542F\u52A8 MCP \u670D\u52A1\u5668\u4EE5\u5141\u8BB8\u5916\u90E8\u5DE5\u5177\u8FDE\u63A5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1A\u542F\u7528 MCP \u670D\u52A1\u5668\u5C06\u5141\u8BB8\u5916\u90E8 AI \u5DE5\u5177\u548C\u5E94\u7528\u7A0B\u5E8F\u8BBF\u95EE\u548C\u4FEE\u6539\u60A8\u7684\u4EFB\u52A1\u6570\u636E\u3002\u8FD9\u5305\u62EC\uFF1A
\u2022 \u8BFB\u53D6\u6240\u6709\u4EFB\u52A1\u53CA\u5176\u8BE6\u7EC6\u4FE1\u606F
\u2022 \u521B\u5EFA\u65B0\u4EFB\u52A1
\u2022 \u66F4\u65B0\u73B0\u6709\u4EFB\u52A1
\u2022 \u5220\u9664\u4EFB\u52A1
\u2022 \u8BBF\u95EE\u4EFB\u52A1\u5143\u6570\u636E\u548C\u5C5E\u6027
\u4EC5\u5728\u60A8\u4FE1\u4EFB\u5C06\u8FDE\u63A5\u5230 MCP \u670D\u52A1\u5668\u7684\u5E94\u7528\u7A0B\u5E8F\u65F6\u624D\u542F\u7528\u6B64\u529F\u80FD\u3002\u8BF7\u786E\u4FDD\u60A8\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C\u5B89\u5168\u3002
\u60A8\u8981\u7EE7\u7EED\u5417\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u670D\u52A1\u5668\u5DF2\u542F\u7528\u3002\u8BF7\u4FDD\u7BA1\u597D\u60A8\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C\uFF01","Server Configuration":"\u670D\u52A1\u5668\u914D\u7F6E",Host:"\u4E3B\u673A","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u670D\u52A1\u5668\u4E3B\u673A\u5730\u5740\u3002\u4F7F\u7528 127.0.0.1 \u4EC5\u9650\u672C\u5730\uFF0C\u4F7F\u7528 0.0.0.0 \u7528\u4E8E\u6240\u6709\u63A5\u53E3","Security Warning":"\u5B89\u5168\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A\u5207\u6362\u5230 0.0.0.0 \u5C06\u4F7F MCP \u670D\u52A1\u5668\u53EF\u4ECE\u5916\u90E8\u7F51\u7EDC\u8BBF\u95EE\u3002
\u8FD9\u53EF\u80FD\u4F1A\u5C06\u60A8\u7684 Obsidian \u6570\u636E\u66B4\u9732\u7ED9\uFF1A
- \u60A8\u672C\u5730\u7F51\u7EDC\u4E0A\u7684\u5176\u4ED6\u8BBE\u5907
- \u5982\u679C\u60A8\u7684\u9632\u706B\u5899\u914D\u7F6E\u4E0D\u5F53\uFF0C\u53EF\u80FD\u66B4\u9732\u5230\u4E92\u8054\u7F51
**\u4EC5\u5728\u7B26\u5408\u4EE5\u4E0B\u6761\u4EF6\u65F6\u7EE7\u7EED\uFF1A**
- \u60A8\u4E86\u89E3\u5B89\u5168\u5F71\u54CD
- \u5DF2\u6B63\u786E\u914D\u7F6E\u9632\u706B\u5899
- \u56E0\u5408\u6CD5\u539F\u56E0\u9700\u8981\u5916\u90E8\u8BBF\u95EE
\u60A8\u786E\u5B9A\u8981\u7EE7\u7EED\u5417\uFF1F`,"Yes, I understand the risks":"\u662F\u7684\uFF0C\u6211\u4E86\u89E3\u98CE\u9669","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u4E3B\u673A\u5DF2\u66F4\u6539\u4E3A 0.0.0.0\u3002\u670D\u52A1\u5668\u73B0\u5728\u53EF\u4ECE\u5916\u90E8\u7F51\u7EDC\u8BBF\u95EE\u3002",Port:"\u7AEF\u53E3","Server port number (default: 7777)":"\u670D\u52A1\u5668\u7AEF\u53E3\u53F7\uFF08\u9ED8\u8BA4\uFF1A7777\uFF09",Authentication:"\u8EAB\u4EFD\u9A8C\u8BC1","Authentication Token":"\u8EAB\u4EFD\u9A8C\u8BC1\u4EE4\u724C","Bearer token for authenticating MCP requests (keep this secret)":"\u7528\u4E8E\u9A8C\u8BC1 MCP \u8BF7\u6C42\u7684 Bearer \u4EE4\u724C\uFF08\u8BF7\u4FDD\u5BC6\uFF09",Show:"\u663E\u793A",Hide:"\u9690\u85CF","Token copied to clipboard":"\u4EE4\u724C\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",Regenerate:"\u91CD\u65B0\u751F\u6210","New token generated":"\u5DF2\u751F\u6210\u65B0\u4EE4\u724C","Advanced Settings":"\u9AD8\u7EA7\u8BBE\u7F6E","Enable CORS":"\u542F\u7528 CORS","Allow cross-origin requests (required for web clients)":"\u5141\u8BB8\u8DE8\u6E90\u8BF7\u6C42\uFF08Web \u5BA2\u6237\u7AEF\u6240\u9700\uFF09","Log Level":"\u65E5\u5FD7\u7EA7\u522B","Logging verbosity for debugging":"\u7528\u4E8E\u8C03\u8BD5\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6",Error:"\u9519\u8BEF",Warning:"\u8B66\u544A",Info:"\u4FE1\u606F",Debug:"\u8C03\u8BD5","Server Actions":"\u670D\u52A1\u5668\u64CD\u4F5C","Test Connection":"\u6D4B\u8BD5\u8FDE\u63A5","Test the MCP server connection":"\u6D4B\u8BD5 MCP \u670D\u52A1\u5668\u8FDE\u63A5",Test:"\u6D4B\u8BD5","Testing...":"\u6D4B\u8BD5\u4E2D...","Connection test successful! MCP server is working.":"\u8FDE\u63A5\u6D4B\u8BD5\u6210\u529F\uFF01MCP \u670D\u52A1\u5668\u6B63\u5728\u5DE5\u4F5C\u3002","Connection test failed: ":"\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25\uFF1A","Restart Server":"\u91CD\u65B0\u542F\u52A8\u670D\u52A1\u5668","Stop and restart the MCP server":"\u505C\u6B62\u5E76\u91CD\u65B0\u542F\u52A8 MCP \u670D\u52A1\u5668",Restart:"\u91CD\u65B0\u542F\u52A8","MCP server restarted":"MCP \u670D\u52A1\u5668\u5DF2\u91CD\u65B0\u542F\u52A8","Failed to restart server: ":"\u91CD\u65B0\u542F\u52A8\u670D\u52A1\u5668\u5931\u8D25\uFF1A","Use Next Available Port":"\u4F7F\u7528\u4E0B\u4E00\u4E2A\u53EF\u7528\u7AEF\u53E3","Port updated to ":"\u7AEF\u53E3\u5DF2\u66F4\u65B0\u4E3A ","No available port found in range":"\u5728\u8303\u56F4\u5185\u627E\u4E0D\u5230\u53EF\u7528\u7684\u7AEF\u53E3","Client Configuration":"\u5BA2\u6237\u7AEF\u914D\u7F6E","Authentication Method":"\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5","Choose the authentication method for client configurations":"\u9009\u62E9\u5BA2\u6237\u7AEF\u914D\u7F6E\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7EC4\u5408 Bearer\uFF08\u63A8\u8350\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u81EA\u5B9A\u4E49\u5934\u90E8","Supported Authentication Methods:":"\u652F\u6301\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u65B9\u6CD5\uFF1A","API Documentation":"API \u6587\u6863","Server Endpoint":"\u670D\u52A1\u5668\u7AEF\u70B9","Copy URL":"\u590D\u5236 URL","Available Tools":"\u53EF\u7528\u5DE5\u5177","Loading tools...":"\u52A0\u8F7D\u5DE5\u5177\u4E2D...","No tools available":"\u6CA1\u6709\u53EF\u7528\u7684\u5DE5\u5177","Failed to load tools. Is the MCP server running?":"\u52A0\u8F7D\u5DE5\u5177\u5931\u8D25\u3002MCP \u670D\u52A1\u5668\u662F\u5426\u6B63\u5728\u8FD0\u884C\uFF1F","Example Request":"\u793A\u4F8B\u8BF7\u6C42","MCP Server not initialized":"MCP \u670D\u52A1\u5668\u672A\u521D\u59CB\u5316",Running:"\u8FD0\u884C\u4E2D",Stopped:"\u5DF2\u505C\u6B62",Uptime:"\u8FD0\u884C\u65F6\u95F4",Requests:"\u8BF7\u6C42\u6570","Toggle this to enable Org-mode style quick capture panel.":"\u5207\u6362\u6B64\u9009\u9879\u4EE5\u542F\u7528 Org-mode \u98CE\u683C\u7684\u5FEB\u901F\u6355\u83B7\u9762\u677F\u3002","Auto-add task prefix":"\u81EA\u52A8\u6DFB\u52A0\u4EFB\u52A1\u524D\u7F00","Automatically add task checkbox prefix to captured content":"\u81EA\u52A8\u5728\u6355\u83B7\u7684\u5185\u5BB9\u524D\u6DFB\u52A0\u4EFB\u52A1\u590D\u9009\u6846\u524D\u7F00","Task prefix format":"\u4EFB\u52A1\u524D\u7F00\u683C\u5F0F","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u5728\u6355\u83B7\u5185\u5BB9\u524D\u6DFB\u52A0\u7684\u524D\u7F00\uFF08\u4F8B\u5982\uFF0C'- [ ]' \u7528\u4E8E\u4EFB\u52A1\uFF0C'- ' \u7528\u4E8E\u5217\u8868\u9879\uFF09","Search settings...":"\u641C\u7D22\u8BBE\u7F6E...","Search settings":"\u641C\u7D22\u8BBE\u7F6E","Clear search":"\u6E05\u9664\u641C\u7D22","Search results":"\u641C\u7D22\u7ED3\u679C","No settings found":"\u627E\u4E0D\u5230\u8BBE\u7F6E","Project Tree View Settings":"\u9879\u76EE\u6811\u89C6\u56FE\u8BBE\u7F6E","Configure how projects are displayed in tree view.":"\u914D\u7F6E\u9879\u76EE\u5728\u6811\u89C6\u56FE\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","Default project view mode":"\u9ED8\u8BA4\u9879\u76EE\u89C6\u56FE\u6A21\u5F0F","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u9009\u62E9\u9ED8\u8BA4\u4EE5\u5E73\u9762\u5217\u8868\u6216\u5C42\u7EA7\u6811\u663E\u793A\u9879\u76EE\u3002","Auto-expand project tree":"\u81EA\u52A8\u5C55\u5F00\u9879\u76EE\u6811","Automatically expand all project nodes when opening the project view in tree mode.":"\u5728\u6811\u6A21\u5F0F\u4E2D\u6253\u5F00\u9879\u76EE\u89C6\u56FE\u65F6\u81EA\u52A8\u5C55\u5F00\u6240\u6709\u9879\u76EE\u8282\u70B9\u3002","Show empty project folders":"\u663E\u793A\u7A7A\u7684\u9879\u76EE\u6587\u4EF6\u5939","Display project folders even if they don't contain any tasks.":"\u5373\u4F7F\u9879\u76EE\u6587\u4EF6\u5939\u4E0D\u5305\u542B\u4EFB\u4F55\u4EFB\u52A1\u4E5F\u663E\u793A\u3002","Project path separator":"\u9879\u76EE\u8DEF\u5F84\u5206\u9694\u7B26","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u7528\u4E8E\u5206\u9694\u9879\u76EE\u5C42\u7EA7\u7684\u5B57\u7B26\uFF08\u4F8B\u5982 'Project/SubProject' \u4E2D\u7684 '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u542F\u7528\u52A8\u6001\u5143\u6570\u636E\u5B9A\u4F4D","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u667A\u80FD\u5B9A\u4F4D\u4EFB\u52A1\u5143\u6570\u636E\u3002\u542F\u7528\u65F6\uFF0C\u5143\u6570\u636E\u4F1A\u4E0E\u77ED\u4EFB\u52A1\u663E\u793A\u5728\u540C\u4E00\u884C\uFF0C\u957F\u4EFB\u52A1\u5219\u663E\u793A\u5728\u4E0B\u65B9\u3002\u7981\u7528\u65F6\uFF0C\u5143\u6570\u636E\u603B\u662F\u663E\u793A\u5728\u4EFB\u52A1\u5185\u5BB9\u4E0B\u65B9\u3002","Toggle tree/list view":"\u5207\u6362\u6811\u72B6/\u5217\u8868\u89C6\u56FE","Clear date":"\u6E05\u9664\u65E5\u671F","Clear priority":"\u6E05\u9664\u4F18\u5148\u7EA7","Clear all tags":"\u6E05\u9664\u6240\u6709\u6807\u7B7E","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u4F18\u5148\u7EA7","\u23EB High priority":"\u23EB \u9AD8\u4F18\u5148\u7EA7","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u4F18\u5148\u7EA7","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u4F18\u5148\u7EA7","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u4F18\u5148\u7EA7","Fixed File":"\u56FA\u5B9A\u6587\u4EF6","Save to Inbox.md":"\u4FDD\u5B58\u81F3 Inbox.md","Open Task Genius Setup":"\u6253\u5F00 Task Genius \u8BBE\u7F6E","MCP Integration":"MCP \u96C6\u6210",Beginner:"\u521D\u5B66\u8005","Basic task management with essential features":"\u57FA\u7840\u4EFB\u52A1\u7BA1\u7406\u4E0E\u5FC5\u8981\u529F\u80FD","Basic progress bars":"\u57FA\u7840\u8FDB\u5EA6\u6761","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u8981\u89C6\u56FE\uFF08\u6536\u4EF6\u7BB1\u3001\u9884\u6D4B\u3001\u9879\u76EE\uFF09","Simple task status tracking":"\u7B80\u5355\u4EFB\u52A1\u72B6\u6001\u8DDF\u8E2A","Quick task capture":"\u5FEB\u901F\u4EFB\u52A1\u6355\u83B7","Date picker functionality":"\u65E5\u671F\u9009\u62E9\u529F\u80FD","Project management with enhanced workflows":"\u9879\u76EE\u7BA1\u7406\u4E0E\u589E\u5F3A\u5DE5\u4F5C\u6D41","Full progress bar customization":"\u5B8C\u6574\u8FDB\u5EA6\u6761\u81EA\u5B9A\u4E49","Extended views (Kanban, Calendar, Table)":"\u6269\u5C55\u89C6\u56FE\uFF08\u770B\u677F\u3001\u65E5\u5386\u3001\u8868\u683C\uFF09","Project management features":"\u9879\u76EE\u7BA1\u7406\u529F\u80FD","Basic workflow automation":"\u57FA\u7840\u5DE5\u4F5C\u6D41\u81EA\u52A8\u5316","Advanced filtering and sorting":"\u9AD8\u7EA7\u7B5B\u9009\u4E0E\u6392\u5E8F","Power User":"\u9AD8\u7EA7\u7528\u6237","Full-featured experience with all capabilities":"\u5B8C\u6574\u529F\u80FD\u4F53\u9A8C\u4E0E\u6240\u6709\u80FD\u529B","All views and advanced configurations":"\u6240\u6709\u89C6\u56FE\u4E0E\u9AD8\u7EA7\u914D\u7F6E","Complex workflow definitions":"\u590D\u6742\u5DE5\u4F5C\u6D41\u5B9A\u4E49","Reward and habit tracking systems":"\u5956\u52B1\u4E0E\u4E60\u60EF\u8DDF\u8E2A\u7CFB\u7EDF","Performance optimizations":"\u6027\u80FD\u4F18\u5316","Advanced integrations":"\u9AD8\u7EA7\u96C6\u6210","Experimental features":"\u5B9E\u9A8C\u6027\u529F\u80FD","Timeline and calendar sync":"\u65F6\u95F4\u7EBF\u4E0E\u65E5\u5386\u540C\u6B65","Not configured":"\u672A\u914D\u7F6E",Custom:"\u81EA\u5B9A\u4E49","Custom views created":"\u5DF2\u521B\u5EFA\u81EA\u5B9A\u4E49\u89C6\u56FE","Progress bar settings modified":"\u5DF2\u4FEE\u6539\u8FDB\u5EA6\u6761\u8BBE\u7F6E","Task status settings configured":"\u5DF2\u914D\u7F6E\u4EFB\u52A1\u72B6\u6001\u8BBE\u7F6E","Quick capture configured":"\u5DF2\u914D\u7F6E\u5FEB\u901F\u6355\u83B7","Workflow settings enabled":"\u5DF2\u542F\u7528\u5DE5\u4F5C\u6D41\u8BBE\u7F6E","Advanced features enabled":"\u5DF2\u542F\u7528\u9AD8\u7EA7\u529F\u80FD","File parsing customized":"\u5DF2\u81EA\u5B9A\u4E49\u6587\u4EF6\u89E3\u6790"},Tj=dz});var uz,xj,Sj=b(()=>{uz={"File Metadata Inheritance":"\u6A94\u6848\u5143\u6578\u64DA\u7E7C\u627F","Configure how tasks inherit metadata from file frontmatter":"\u914D\u7F6E\u4EFB\u52D9\u5982\u4F55\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u7E7C\u627F\u5C6C\u6027","Enable file metadata inheritance":"\u555F\u7528\u6A94\u6848\u5143\u6578\u64DA\u7E7C\u627F","Allow tasks to inherit metadata properties from their file's frontmatter":"\u5141\u8A31\u4EFB\u52D9\u5F9E\u5176\u6A94\u6848\u7684\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u7E7C\u627F\u5C6C\u6027","Inherit from frontmatter":"\u5F9E\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F","Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task":"\u7576\u4EFB\u52D9\u4E0A\u672A\u660E\u78BA\u8A2D\u5B9A\u6642\uFF0C\u4EFB\u52D9\u6703\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u7E7C\u627F\u512A\u5148\u7D1A\u3001\u74B0\u5883\u7B49\u5C6C\u6027","Inherit from frontmatter for subtasks":"\u5B50\u4EFB\u52D9\u5F9E\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata":"\u5141\u8A31\u5B50\u4EFB\u52D9\u5F9E\u6A94\u6848\u524D\u7F6E\u5143\u6578\u64DA\u7E7C\u627F\u5C6C\u6027\u3002\u505C\u7528\u6642\uFF0C\u53EA\u6709\u9802\u7D1A\u4EFB\u52D9\u7E7C\u627F\u6A94\u6848\u5143\u6578\u64DA","Comprehensive task management plugin for Obsidian with progress bars, task status cycling, and advanced task tracking features.":"\u5168\u9762\u7684 Obsidian \u4EFB\u52D9\u7BA1\u7406\u63D2\u4EF6\uFF0C\u5177\u6709\u9032\u5EA6\u689D\u3001\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u9032\u968E\u4EFB\u52D9\u8FFD\u8E64\u529F\u80FD\u3002","Show progress bar":"\u986F\u793A\u9032\u5EA6\u689D","Toggle this to show the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u986F\u793A\u9032\u5EA6\u689D\u3002","Support hover to show progress info":"\u652F\u63F4\u61F8\u505C\u986F\u793A\u9032\u5EA6\u8CC7\u8A0A","Toggle this to allow this plugin to show progress info when hovering over the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u61F8\u505C\u65BC\u9032\u5EA6\u689D\u4E0A\u6642\u986F\u793A\u9032\u5EA6\u8CC7\u8A0A\u3002","Add progress bar to non-task bullet":"\u70BA\u975E\u4EFB\u52D9\u9805\u76EE\u6DFB\u52A0\u9032\u5EA6\u689D","Toggle this to allow adding progress bars to regular list items (non-task bullets).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u70BA\u666E\u901A\u5217\u8868\u9805\u76EE\uFF08\u975E\u4EFB\u52D9\u9805\u76EE\uFF09\u6DFB\u52A0\u9032\u5EA6\u689D\u3002","Add progress bar to Heading":"\u70BA\u6A19\u984C\u6DFB\u52A0\u9032\u5EA6\u689D","Toggle this to allow this plugin to add progress bar for Task below the headings.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u70BA\u6A19\u984C\u4E0B\u7684\u4EFB\u52D9\u6DFB\u52A0\u9032\u5EA6\u689D\u3002","Enable heading progress bars":"\u555F\u7528\u6A19\u984C\u9032\u5EA6\u689D","Add progress bars to headings to show progress of all tasks under that heading.":"\u70BA\u6A19\u984C\u6DFB\u52A0\u9032\u5EA6\u689D\u4EE5\u986F\u793A\u8A72\u6A19\u984C\u4E0B\u6240\u6709\u4EFB\u52D9\u7684\u9032\u5EA6\u3002","Auto complete parent task":"\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9","Toggle this to allow this plugin to auto complete parent task when all child tasks are completed.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u6240\u6709\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9\u3002","Mark parent as 'In Progress' when partially complete":"\u7576\u90E8\u5206\u5B8C\u6210\u6642\u5C07\u7236\u4EFB\u52D9\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D","When some but not all child tasks are completed, mark the parent task as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u7576\u90E8\u5206\u4F46\u975E\u5168\u90E8\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\uFF0C\u5C07\u7236\u4EFB\u52D9\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D\u3002\u50C5\u5728\u555F\u7528\u300C\u81EA\u52D5\u5B8C\u6210\u7236\u4EFB\u52D9\u300D\u6642\u6709\u6548\u3002","Count sub children level of current Task":"\u8A08\u7B97\u7576\u524D\u4EFB\u52D9\u7684\u5B50\u4EFB\u52D9\u5C64\u7D1A","Toggle this to allow this plugin to count sub tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Checkbox Status Settings":"\u4EFB\u52D9\u72C0\u614B\u8A2D\u5B9A","Select a predefined task status collection or customize your own":"\u9078\u64C7\u9810\u5B9A\u7FA9\u7684\u4EFB\u52D9\u72C0\u614B\u96C6\u5408\u6216\u81EA\u5B9A\u7FA9\u60A8\u81EA\u5DF1\u7684","Completed task markers":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent completed tasks. Example: "x|X"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"x|X"',"Planned task markers":"\u8A08\u5283\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent planned tasks. Example: "?"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u8A08\u5283\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"?"',"In progress task markers":"\u9032\u884C\u4E2D\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent tasks in progress. Example: ">|/"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u9032\u884C\u4E2D\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A">|/"',"Abandoned task markers":"\u5DF2\u653E\u68C4\u4EFB\u52D9\u6A19\u8A18",'Characters in square brackets that represent abandoned tasks. Example: "-"':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u5DF2\u653E\u68C4\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u4F8B\u5982\uFF1A"-"','Characters in square brackets that represent not started tasks. Default is space " "':'\u65B9\u62EC\u865F\u4E2D\u8868\u793A\u672A\u958B\u59CB\u4EFB\u52D9\u7684\u5B57\u7B26\u3002\u9810\u8A2D\u70BA\u7A7A\u683C " "',"Count other statuses as":"\u5C07\u5176\u4ED6\u72C0\u614B\u8A08\u70BA",'Select the status to count other statuses as. Default is "Not Started".':"\u9078\u64C7\u5C07\u5176\u4ED6\u72C0\u614B\u8A08\u70BA\u54EA\u7A2E\u72C0\u614B\u3002\u9810\u8A2D\u70BA\u300C\u672A\u958B\u59CB\u300D\u3002","Task Counting Settings":"\u4EFB\u52D9\u8A08\u6578\u8A2D\u5B9A","Exclude specific task markers":"\u6392\u9664\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18",'Specify task markers to exclude from counting. Example: "?|/"':'\u6307\u5B9A\u8981\u5F9E\u8A08\u6578\u4E2D\u6392\u9664\u7684\u4EFB\u52D9\u6A19\u8A18\u3002\u4F8B\u5982\uFF1A"?|/"',"Only count specific task markers":"\u50C5\u8A08\u6578\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18","Toggle this to only count specific task markers":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u50C5\u8A08\u6578\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18","Specific task markers to count":"\u8981\u8A08\u6578\u7684\u7279\u5B9A\u4EFB\u52D9\u6A19\u8A18",'Specify which task markers to count. Example: "x|X|>|/"':'\u6307\u5B9A\u8981\u8A08\u6578\u7684\u4EFB\u52D9\u6A19\u8A18\u3002\u4F8B\u5982\uFF1A"x|X|>|/"',"Conditional Progress Bar Display":"\u689D\u4EF6\u6027\u9032\u5EA6\u689D\u986F\u793A","Hide progress bars based on conditions":"\u6839\u64DA\u689D\u4EF6\u96B1\u85CF\u9032\u5EA6\u689D","Toggle this to enable hiding progress bars based on tags, folders, or metadata.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6839\u64DA\u6A19\u7C64\u3001\u8CC7\u6599\u593E\u6216\u5143\u6578\u64DA\u96B1\u85CF\u9032\u5EA6\u689D\u3002","Hide by tags":"\u6309\u6A19\u7C64\u96B1\u85CF",'Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF0C\u4E0D\u5E36 #\uFF09\u3002\u4F8B\u5982\uFF1A"no-progress-bar,hide-progress"',"Hide by folders":"\u6309\u8CC7\u6599\u593E\u96B1\u85CF",'Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u8CC7\u6599\u593E\u8DEF\u5F91\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002\u4F8B\u5982\uFF1A"Daily Notes,Projects/Hidden"',"Hide by metadata":"\u6309\u5143\u6578\u64DA\u96B1\u85CF",'Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"':'\u6307\u5B9A\u5C07\u96B1\u85CF\u9032\u5EA6\u689D\u7684\u524D\u7F6E\u5143\u6578\u64DA\u3002\u4F8B\u5982\uFF1A"hide-progress-bar: true"',"Checkbox Status Switcher":"\u4EFB\u52D9\u72C0\u614B\u5207\u63DB\u5668","Enable task status switcher":"\u555F\u7528\u4EFB\u52D9\u72C0\u614B\u5207\u63DB\u5668","Enable/disable the ability to cycle through task states by clicking.":"\u555F\u7528/\u7981\u7528\u901A\u904E\u9EDE\u64CA\u5FAA\u74B0\u5207\u63DB\u4EFB\u52D9\u72C0\u614B\u7684\u529F\u80FD\u3002","Enable custom task marks":"\u555F\u7528\u81EA\u5B9A\u7FA9\u4EFB\u52D9\u6A19\u8A18","Replace default checkboxes with styled text marks that follow your task status cycle when clicked.":"\u7528\u6A23\u5F0F\u5316\u6587\u672C\u6A19\u8A18\u66FF\u63DB\u9810\u8A2D\u8907\u9078\u6846\uFF0C\u9EDE\u64CA\u6642\u9075\u5FAA\u60A8\u7684\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u3002","Enable cycle complete status":"\u555F\u7528\u5FAA\u74B0\u5B8C\u6210\u72C0\u614B","Enable/disable the ability to automatically cycle through task states when pressing a mark.":"\u555F\u7528/\u7981\u7528\u6309\u4E0B\u6A19\u8A18\u6642\u81EA\u52D5\u5FAA\u74B0\u5207\u63DB\u4EFB\u52D9\u72C0\u614B\u7684\u529F\u80FD\u3002","Always cycle new tasks":"\u59CB\u7D42\u5FAA\u74B0\u65B0\u4EFB\u52D9","When enabled, newly inserted tasks will immediately cycle to the next status. When disabled, newly inserted tasks with valid marks will keep their original mark.":"\u555F\u7528\u6642\uFF0C\u65B0\u63D2\u5165\u7684\u4EFB\u52D9\u5C07\u7ACB\u5373\u5FAA\u74B0\u5230\u4E0B\u4E00\u500B\u72C0\u614B\u3002\u7981\u7528\u6642\uFF0C\u5E36\u6709\u6709\u6548\u6A19\u8A18\u7684\u65B0\u63D2\u5165\u4EFB\u52D9\u5C07\u4FDD\u6301\u5176\u539F\u59CB\u6A19\u8A18\u3002","Checkbox Status Cycle and Marks":"\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u6A19\u8A18","Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.":"\u5B9A\u7FA9\u4EFB\u52D9\u72C0\u614B\u53CA\u5176\u5C0D\u61C9\u7684\u6A19\u8A18\u3002\u5F9E\u4E0A\u5230\u4E0B\u7684\u9806\u5E8F\u5B9A\u7FA9\u4E86\u5FAA\u74B0\u9806\u5E8F\u3002","Completed Task Mover":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Enable completed task mover":"\u555F\u7528\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Toggle this to enable commands for moving completed tasks to another file.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u5C07\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Task marker type":"\u4EFB\u52D9\u6A19\u8A18\u985E\u578B","Choose what type of marker to add to moved tasks":"\u9078\u64C7\u8981\u6DFB\u52A0\u5230\u5DF2\u79FB\u52D5\u4EFB\u52D9\u7684\u6A19\u8A18\u985E\u578B","Version marker text":"\u7248\u672C\u6A19\u8A18\u6587\u672C","Text to append to tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u4EFB\u52D9\u6642\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'version 1.0'\uFF09","Date marker text":"\u65E5\u671F\u6A19\u8A18\u6587\u672C","Text to append to tasks when moved (e.g., 'archived on 2023-12-31')":"\u79FB\u52D5\u4EFB\u52D9\u6642\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982\uFF0C'archived on 2023-12-31'\uFF09","Custom marker text":"\u81EA\u5B9A\u7FA9\u6A19\u8A18\u6587\u672C","Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}":"\u4F7F\u7528 {{DATE:format}} \u9032\u884C\u65E5\u671F\u683C\u5F0F\u5316\uFF08\u4F8B\u5982\uFF0C{{DATE:YYYY-MM-DD}}","Treat abandoned tasks as completed":"\u5C07\u5DF2\u653E\u68C4\u4EFB\u52D9\u8996\u70BA\u5DF2\u5B8C\u6210","If enabled, abandoned tasks will be treated as completed.":"\u5982\u679C\u555F\u7528\uFF0C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9\u5C07\u88AB\u8996\u70BA\u5DF2\u5B8C\u6210\u3002","Complete all moved tasks":"\u5B8C\u6210\u6240\u6709\u5DF2\u79FB\u52D5\u7684\u4EFB\u52D9","If enabled, all moved tasks will be marked as completed.":"\u5982\u679C\u555F\u7528\uFF0C\u6240\u6709\u5DF2\u79FB\u52D5\u7684\u4EFB\u52D9\u5C07\u88AB\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210\u3002","With current file link":"\u5E36\u6709\u7576\u524D\u6587\u4EF6\u9023\u7D50","A link to the current file will be added to the parent task of the moved tasks.":"\u7576\u524D\u6587\u4EF6\u7684\u9023\u7D50\u5C07\u6DFB\u52A0\u5230\u5DF2\u79FB\u52D5\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u3002",Donate:"\u6350\u8D08","If you like this plugin, consider donating to support continued development:":"\u5982\u679C\u60A8\u559C\u6B61\u9019\u500B\u63D2\u4EF6\uFF0C\u8ACB\u8003\u616E\u6350\u8D08\u4EE5\u652F\u6301\u6301\u7E8C\u958B\u767C\uFF1A","Add number to the Progress Bar":"\u5728\u9032\u5EA6\u689D\u4E2D\u6DFB\u52A0\u6578\u5B57","Toggle this to allow this plugin to add tasks number to progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u9032\u5EA6\u689D\u4E2D\u6DFB\u52A0\u4EFB\u52D9\u6578\u91CF\u3002","Show percentage":"\u986F\u793A\u767E\u5206\u6BD4","Toggle this to allow this plugin to show percentage in the progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u9032\u5EA6\u689D\u4E2D\u986F\u793A\u767E\u5206\u6BD4\u3002","Customize progress text":"\u81EA\u5B9A\u7FA9\u9032\u5EA6\u6587\u672C","Toggle this to customize text representation for different progress percentage ranges.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u81EA\u5B9A\u7FA9\u4E0D\u540C\u9032\u5EA6\u767E\u5206\u6BD4\u7BC4\u570D\u7684\u6587\u672C\u8868\u793A\u3002","Progress Ranges":"\u9032\u5EA6\u7BC4\u570D","Define progress ranges and their corresponding text representations.":"\u5B9A\u7FA9\u9032\u5EA6\u7BC4\u570D\u53CA\u5176\u5C0D\u61C9\u7684\u6587\u672C\u8868\u793A\u3002","Add new range":"\u6DFB\u52A0\u65B0\u7BC4\u570D","Add a new progress percentage range with custom text":"\u6DFB\u52A0\u5E36\u6709\u81EA\u5B9A\u7FA9\u6587\u672C\u7684\u65B0\u9032\u5EA6\u767E\u5206\u6BD4\u7BC4\u570D","Min percentage (0-100)":"\u6700\u5C0F\u767E\u5206\u6BD4 (0-100)","Max percentage (0-100)":"\u6700\u5927\u767E\u5206\u6BD4 (0-100)","Text template (use {{PROGRESS}})":"\u6587\u672C\u6A21\u677F\uFF08\u4F7F\u7528 {{PROGRESS}}\uFF09","Reset to defaults":"\u91CD\u7F6E\u70BA\u9810\u8A2D\u503C","Reset progress ranges to default values":"\u5C07\u9032\u5EA6\u7BC4\u570D\u91CD\u7F6E\u70BA\u9810\u8A2D\u503C",Reset:"\u91CD\u7F6E","Priority Picker Settings":"\u512A\u5148\u7D1A\u9078\u64C7\u5668\u8A2D\u5B9A","Toggle to enable priority picker dropdown for emoji and letter format priorities.":"\u5207\u63DB\u4EE5\u555F\u7528\u8868\u60C5\u7B26\u865F\u548C\u5B57\u6BCD\u683C\u5F0F\u512A\u5148\u7D1A\u7684\u512A\u5148\u7D1A\u9078\u64C7\u5668\u4E0B\u62C9\u83DC\u55AE\u3002","Enable priority picker":"\u555F\u7528\u512A\u5148\u7D1A\u9078\u64C7\u5668","Enable priority keyboard shortcuts":"\u555F\u7528\u512A\u5148\u7D1A\u9375\u76E4\u5FEB\u6377\u9375","Toggle to enable keyboard shortcuts for setting task priorities.":"\u5207\u63DB\u4EE5\u555F\u7528\u8A2D\u7F6E\u4EFB\u52D9\u512A\u5148\u7D1A\u7684\u9375\u76E4\u5FEB\u6377\u9375\u3002","Date picker":"\u65E5\u671F\u9078\u64C7\u5668","Enable date picker":"\u555F\u7528\u65E5\u671F\u9078\u64C7\u5668","Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u7684\u65E5\u671F\u9078\u64C7\u5668\u3002\u9019\u5C07\u5728\u60A8\u7684\u4EFB\u52D9\u65C1\u6DFB\u52A0\u4E00\u500B\u65E5\u66C6\u5716\u6A19\uFF0C\u60A8\u53EF\u4EE5\u9EDE\u64CA\u5B83\u4F86\u9078\u64C7\u65E5\u671F\u3002","Date mark":"\u65E5\u671F\u6A19\u8A18","Emoji mark to identify dates. You can use multiple emoji separated by commas.":"\u7528\u65BC\u8B58\u5225\u65E5\u671F\u7684\u8868\u60C5\u7B26\u865F\u6A19\u8A18\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u9017\u865F\u5206\u9694\u7684\u591A\u500B\u8868\u60C5\u7B26\u865F\u3002","Quick capture":"\u5FEB\u901F\u6355\u7372","Enable quick capture":"\u555F\u7528\u5FEB\u901F\u6355\u7372","Toggle this to enable Org-mode style quick capture panel. Press Alt+C to open the capture panel.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528 Org-mode \u98A8\u683C\u7684\u5FEB\u901F\u6355\u7372\u9762\u677F\u3002\u6309 Alt+C \u6253\u958B\u6355\u7372\u9762\u677F\u3002","Target file":"\u76EE\u6A19\u6587\u4EF6","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'":"\u6355\u7372\u7684\u6587\u672C\u5C07\u4FDD\u5B58\u7684\u6587\u4EF6\u3002\u60A8\u53EF\u4EE5\u5305\u542B\u8DEF\u5F91\uFF0C\u4F8B\u5982\uFF0C'folder/Quick Capture.md'","Placeholder text":"\u4F54\u4F4D\u7B26\u6587\u672C","Placeholder text to display in the capture panel":"\u5728\u6355\u7372\u9762\u677F\u4E2D\u986F\u793A\u7684\u4F54\u4F4D\u7B26\u6587\u672C","Append to file":"\u9644\u52A0\u5230\u6587\u4EF6","If enabled, captured text will be appended to the target file. If disabled, it will replace the file content.":"\u5982\u679C\u555F\u7528\uFF0C\u6355\u7372\u7684\u6587\u672C\u5C07\u9644\u52A0\u5230\u76EE\u6A19\u6587\u4EF6\u3002\u5982\u679C\u7981\u7528\uFF0C\u5B83\u5C07\u66FF\u63DB\u6587\u4EF6\u5167\u5BB9\u3002","Task Filter":"\u4EFB\u52D9\u904E\u6FFE\u5668","Enable Task Filter":"\u555F\u7528\u4EFB\u52D9\u904E\u6FFE\u5668","Toggle this to enable the task filter panel":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u904E\u6FFE\u5668\u9762\u677F","Preset Filters":"\u9810\u8A2D\u904E\u6FFE\u5668","Create and manage preset filters for quick access to commonly used task filters.":"\u5275\u5EFA\u548C\u7BA1\u7406\u9810\u8A2D\u904E\u6FFE\u5668\uFF0C\u4EE5\u5FEB\u901F\u8A2A\u554F\u5E38\u7528\u7684\u4EFB\u52D9\u904E\u6FFE\u5668\u3002","Edit Filter: ":"\u7DE8\u8F2F\u904E\u6FFE\u5668\uFF1A","Filter name":"\u904E\u6FFE\u5668\u540D\u7A31","Checkbox Status":"\u4EFB\u52D9\u72C0\u614B","Include or exclude tasks based on their status":"\u6839\u64DA\u4EFB\u52D9\u72C0\u614B\u5305\u542B\u6216\u6392\u9664\u4EFB\u52D9","Include Completed Tasks":"\u5305\u542B\u5DF2\u5B8C\u6210\u4EFB\u52D9","Include In Progress Tasks":"\u5305\u542B\u9032\u884C\u4E2D\u4EFB\u52D9","Include Abandoned Tasks":"\u5305\u542B\u5DF2\u653E\u68C4\u4EFB\u52D9","Include Not Started Tasks":"\u5305\u542B\u672A\u958B\u59CB\u4EFB\u52D9","Include Planned Tasks":"\u5305\u542B\u8A08\u5283\u4EFB\u52D9","Related Tasks":"\u76F8\u95DC\u4EFB\u52D9","Include parent, child, and sibling tasks in the filter":"\u5728\u904E\u6FFE\u5668\u4E2D\u5305\u542B\u7236\u4EFB\u52D9\u3001\u5B50\u4EFB\u52D9\u548C\u540C\u7D1A\u4EFB\u52D9","Include Parent Tasks":"\u5305\u542B\u7236\u4EFB\u52D9","Include Child Tasks":"\u5305\u542B\u5B50\u4EFB\u52D9","Include Sibling Tasks":"\u5305\u542B\u540C\u7D1A\u4EFB\u52D9","Advanced Filter":"\u9032\u968E\u904E\u6FFE\u5668","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'":"\u4F7F\u7528\u5E03\u723E\u904B\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1'","Filter query":"\u904E\u6FFE\u67E5\u8A62","Filter out tasks":"\u904E\u6FFE\u6389\u4EFB\u52D9","If enabled, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u555F\u7528\uFF0C\u7B26\u5408\u67E5\u8A62\u7684\u4EFB\u52D9\u5C07\u88AB\u96B1\u85CF\uFF0C\u5426\u5247\u5C07\u88AB\u986F\u793A",Save:"\u4FDD\u5B58",Cancel:"\u53D6\u6D88","Add Status":"\u6DFB\u52A0\u72C0\u614B","Say Thank You":"\u8B1D\u8B1D","Hide filter panel":"\u96B1\u85CF\u904E\u6FFE\u5668\u9762\u677F","Show filter panel":"\u986F\u793A\u904E\u6FFE\u5668\u9762\u677F","Filter Tasks":"\u904E\u6FFE\u4EFB\u52D9","Preset filters":"\u9810\u8A2D\u904E\u6FFE\u5668","Select a saved filter preset to apply":"\u9078\u64C7\u4E00\u500B\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u9810\u8A2D\u4EE5\u61C9\u7528","Select a preset...":"\u9078\u64C7\u4E00\u500B\u9810\u8A2D...",Query:"\u67E5\u8A62","Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.":"\u4F7F\u7528\u5E03\u723E\u904B\u7B97\uFF1AAND, OR, NOT\u3002\u4F8B\u5982\uFF1A'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - \u652F\u6301 >, <, =, >=, <=, != \u7528\u65BC PRIORITY \u548C DATE\u3002","If true, tasks that match the query will be hidden, otherwise they will be shown":"\u5982\u679C\u555F\u7528\uFF0C\u5339\u914D\u67E5\u8A62\u7684\u4EFB\u52D9\u5C07\u88AB\u96B1\u85CF\uFF0C\u5426\u5247\u5C07\u986F\u793A",Completed:"\u5DF2\u5B8C\u6210","In Progress":"\u9032\u884C\u4E2D",Abandoned:"\u5DF2\u653E\u68C4","Not Started":"\u672A\u958B\u59CB",Planned:"\u8A08\u5283","Include Related Tasks":"\u5305\u542B\u76F8\u95DC\u4EFB\u52D9","Parent Tasks":"\u7236\u4EFB\u52D9","Child Tasks":"\u5B50\u4EFB\u52D9","Sibling Tasks":"\u540C\u7D1A\u4EFB\u52D9",Apply:"\u61C9\u7528","New Preset":"\u65B0\u9810\u8A2D","Preset saved":"\u9810\u8A2D\u5DF2\u4FDD\u5B58","No changes to save":"\u6C92\u6709\u66F4\u6539\u8981\u4FDD\u5B58",Close:"\u95DC\u9589","Capture to":"\u6355\u7372\u5230",Capture:"\u6355\u7372","Capture thoughts, tasks, or ideas...":"\u6355\u7372\u60F3\u6CD5\u3001\u4EFB\u52D9\u6216\u60F3\u6CD5...",Tomorrow:"\u660E\u5929","In 2 days":"2\u5929\u5F8C","In 3 days":"3\u5929\u5F8C","In 5 days":"5\u5929\u5F8C","In 1 week":"1\u9031\u5F8C","In 10 days":"10\u5929\u5F8C","In 2 weeks":"2\u9031\u5F8C","In 1 month":"1\u500B\u6708\u5F8C","In 2 months":"2\u500B\u6708\u5F8C","In 3 months":"3\u500B\u6708\u5F8C","In 6 months":"6\u500B\u6708\u5F8C","In 1 year":"1\u5E74\u5F8C","In 5 years":"5\u5E74\u5F8C","In 10 years":"10\u5E74\u5F8C","Highest priority":"\u6700\u9AD8\u512A\u5148\u7D1A","High priority":"\u9AD8\u512A\u5148\u7D1A","Medium priority":"\u4E2D\u512A\u5148\u7D1A","No priority":"\u7121\u512A\u5148\u7D1A","Low priority":"\u4F4E\u512A\u5148\u7D1A","Lowest priority":"\u6700\u4F4E\u512A\u5148\u7D1A","Priority A":"\u512A\u5148\u7D1AA","Priority B":"\u512A\u5148\u7D1AB","Priority C":"\u512A\u5148\u7D1AC","Task Priority":"\u4EFB\u52D9\u512A\u5148\u7D1A","Remove Priority":"\u79FB\u9664\u512A\u5148\u7D1A","Cycle task status forward":"\u5FAA\u74B0\u4EFB\u52D9\u72C0\u614B\u5411\u524D","Cycle task status backward":"\u5FAA\u74B0\u4EFB\u52D9\u72C0\u614B\u5411\u5F8C","Remove priority":"\u79FB\u9664\u512A\u5148\u7D1A","Move task to another file":"\u79FB\u52D5\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move all completed subtasks to another file":"\u79FB\u52D5\u6240\u6709\u5DF2\u5B8C\u6210\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move direct completed subtasks to another file":"\u79FB\u52D5\u76F4\u63A5\u5DF2\u5B8C\u6210\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move all subtasks to another file":"\u79FB\u52D5\u6240\u6709\u5B50\u4EFB\u52D9\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Set priority":"\u8A2D\u7F6E\u512A\u5148\u7D1A","Toggle quick capture panel":"\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F","Quick capture (Global)":"\u5FEB\u901F\u6355\u7372\uFF08\u5168\u5C40\uFF09","Toggle task filter panel":"\u5207\u63DB\u4EFB\u52D9\u904E\u6FFE\u5668\u9762\u677F","Filter Mode":"\u904E\u6FFE\u6A21\u5F0F","Choose whether to include or exclude tasks that match the filters":"\u9078\u64C7\u662F\u5305\u542B\u9084\u662F\u6392\u9664\u7B26\u5408\u904E\u6FFE\u689D\u4EF6\u7684\u4EFB\u52D9","Show matching tasks":"\u986F\u793A\u5339\u914D\u7684\u4EFB\u52D9","Hide matching tasks":"\u96B1\u85CF\u5339\u914D\u7684\u4EFB\u52D9","Choose whether to show or hide tasks that match the filters":"\u9078\u64C7\u662F\u986F\u793A\u9084\u662F\u96B1\u85CF\u7B26\u5408\u904E\u6FFE\u689D\u4EF6\u7684\u4EFB\u52D9","Create new file:":"\u5275\u5EFA\u65B0\u6587\u4EF6\uFF1A","Completed tasks moved to":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u5DF2\u79FB\u52D5\u5230","Failed to create file:":"\u5275\u5EFA\u6587\u4EF6\u5931\u6557\uFF1A","Beginning of file":"\u6587\u4EF6\u958B\u982D","Failed to move tasks:":"\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","No active file found":"\u672A\u627E\u5230\u6D3B\u52D5\u6587\u4EF6","Task moved to":"\u4EFB\u52D9\u5DF2\u79FB\u52D5\u5230","Failed to move task:":"\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","Nothing to capture":"\u6C92\u6709\u5167\u5BB9\u53EF\u6355\u7372","Captured successfully":"\u6355\u7372\u6210\u529F","Failed to save:":"\u4FDD\u5B58\u5931\u6557\uFF1A","Captured successfully to":"\u6210\u529F\u6355\u7372\u5230",Total:"\u7E3D\u8A08",Workflow:"\u5DE5\u4F5C\u6D41","Add as workflow root":"\u6DFB\u52A0\u70BA\u5DE5\u4F5C\u6D41\u6839\u7BC0\u9EDE","Move to stage":"\u79FB\u52D5\u5230\u968E\u6BB5","Complete stage":"\u5B8C\u6210\u968E\u6BB5","Add child task with same stage":"\u6DFB\u52A0\u76F8\u540C\u968E\u6BB5\u7684\u5B50\u4EFB\u52D9","Could not open quick capture panel in the current editor":"\u7121\u6CD5\u5728\u7576\u524D\u7DE8\u8F2F\u5668\u4E2D\u6253\u958B\u5FEB\u901F\u6355\u7372\u9762\u677F","Just started {{PROGRESS}}%":"\u525B\u525B\u958B\u59CB {{PROGRESS}}%","Making progress {{PROGRESS}}%":"\u6B63\u5728\u9032\u884C {{PROGRESS}}%","Half way {{PROGRESS}}%":"\u5DF2\u5B8C\u6210\u4E00\u534A {{PROGRESS}}%","Good progress {{PROGRESS}}%":"\u9032\u5C55\u826F\u597D {{PROGRESS}}%","Almost there {{PROGRESS}}%":"\u5373\u5C07\u5B8C\u6210 {{PROGRESS}}%","Progress bar":"\u9032\u5EA6\u689D","You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.":"\u60A8\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u7236\u4EFB\u52D9\u5F8C\u9762\u7684\u9032\u5EA6\u689D\uFF08\u901A\u5E38\u5728\u4EFB\u52D9\u672B\u5C3E\uFF09\u3002\u60A8\u9084\u53EF\u4EE5\u81EA\u5B9A\u7FA9\u6A19\u984C\u4E0B\u65B9\u4EFB\u52D9\u7684\u9032\u5EA6\u689D\u3002","Hide progress bars":"\u96B1\u85CF\u9032\u5EA6\u689D","Parent task changer":"\u7236\u4EFB\u52D9\u66F4\u6539\u5668","Change the parent task of the current task.":"\u66F4\u6539\u7576\u524D\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u3002","No preset filters created yet. Click 'Add New Preset' to create one.":"\u5C1A\u672A\u5275\u5EFA\u9810\u8A2D\u904E\u6FFE\u5668\u3002\u9EDE\u64CA'\u6DFB\u52A0\u65B0\u9810\u8A2D'\u5275\u5EFA\u4E00\u500B\u3002","Configure task workflows for project and process management":"\u914D\u7F6E\u9805\u76EE\u548C\u6D41\u7A0B\u7BA1\u7406\u7684\u4EFB\u52D9\u5DE5\u4F5C\u6D41","Enable workflow":"\u555F\u7528\u5DE5\u4F5C\u6D41","Toggle to enable the workflow system for tasks":"\u5207\u63DB\u4EE5\u555F\u7528\u4EFB\u52D9\u7684\u5DE5\u4F5C\u6D41\u7CFB\u7D71","Auto-add timestamp":"\u81EA\u52D5\u6DFB\u52A0\u6642\u9593\u6233","Automatically add a timestamp to the task when it is created":"\u5275\u5EFA\u4EFB\u52D9\u6642\u81EA\u52D5\u6DFB\u52A0\u6642\u9593\u6233","Timestamp format:":"\u6642\u9593\u6233\u683C\u5F0F\uFF1A","Timestamp format":"\u6642\u9593\u6233\u683C\u5F0F","Remove timestamp when moving to next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u79FB\u9664\u6642\u9593\u6233","Remove the timestamp from the current task when moving to the next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u5F9E\u7576\u524D\u4EFB\u52D9\u4E2D\u79FB\u9664\u6642\u9593\u6233","Calculate spent time":"\u8A08\u7B97\u82B1\u8CBB\u6642\u9593","Calculate and display the time spent on the task when moving to the next stage":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u8A08\u7B97\u4E26\u986F\u793A\u5728\u4EFB\u52D9\u4E0A\u82B1\u8CBB\u7684\u6642\u9593","Format for spent time:":"\u82B1\u8CBB\u6642\u9593\u683C\u5F0F\uFF1A","Calculate spent time when move to next stage.":"\u79FB\u52D5\u5230\u4E0B\u4E00\u968E\u6BB5\u6642\u8A08\u7B97\u82B1\u8CBB\u6642\u9593\u3002","Spent time format":"\u82B1\u8CBB\u6642\u9593\u683C\u5F0F","Calculate full spent time":"\u8A08\u7B97\u7E3D\u82B1\u8CBB\u6642\u9593","Calculate the full spent time from the start of the task to the last stage":"\u8A08\u7B97\u5F9E\u4EFB\u52D9\u958B\u59CB\u5230\u6700\u5F8C\u968E\u6BB5\u7684\u7E3D\u82B1\u8CBB\u6642\u9593","Auto remove last stage marker":"\u81EA\u52D5\u79FB\u9664\u6700\u5F8C\u968E\u6BB5\u6A19\u8A18","Automatically remove the last stage marker when a task is completed":"\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u79FB\u9664\u6700\u5F8C\u968E\u6BB5\u6A19\u8A18","Auto-add next task":"\u81EA\u52D5\u6DFB\u52A0\u4E0B\u4E00\u4EFB\u52D9","Automatically create a new task with the next stage when completing a task":"\u5B8C\u6210\u4EFB\u52D9\u6642\u81EA\u52D5\u5275\u5EFA\u5177\u6709\u4E0B\u4E00\u968E\u6BB5\u7684\u65B0\u4EFB\u52D9","Workflow definitions":"\u5DE5\u4F5C\u6D41\u5B9A\u7FA9","Configure workflow templates for different types of processes":"\u70BA\u4E0D\u540C\u985E\u578B\u7684\u6D41\u7A0B\u914D\u7F6E\u5DE5\u4F5C\u6D41\u6A21\u677F","No workflow definitions created yet. Click 'Add New Workflow' to create one.":"\u5C1A\u672A\u5275\u5EFA\u5DE5\u4F5C\u6D41\u5B9A\u7FA9\u3002\u9EDE\u64CA'\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41'\u5275\u5EFA\u4E00\u500B\u3002","Edit workflow":"\u7DE8\u8F2F\u5DE5\u4F5C\u6D41","Remove workflow":"\u79FB\u9664\u5DE5\u4F5C\u6D41","Delete workflow":"\u522A\u9664\u5DE5\u4F5C\u6D41",Delete:"\u522A\u9664","Add New Workflow":"\u6DFB\u52A0\u65B0\u5DE5\u4F5C\u6D41","New Workflow":"\u65B0\u5DE5\u4F5C\u6D41","Create New Workflow":"\u5275\u5EFA\u65B0\u5DE5\u4F5C\u6D41","Workflow name":"\u5DE5\u4F5C\u6D41\u540D\u7A31","A descriptive name for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Workflow ID":"\u5DE5\u4F5C\u6D41ID","A unique identifier for the workflow (used in tags)":"\u5DE5\u4F5C\u6D41\u7684\u552F\u4E00\u6A19\u8B58\u7B26\uFF08\u7528\u65BC\u6A19\u7C64\uFF09",Description:"\u63CF\u8FF0","Optional description for the workflow":"\u5DE5\u4F5C\u6D41\u7684\u53EF\u9078\u63CF\u8FF0","Describe the purpose and use of this workflow...":"\u63CF\u8FF0\u6B64\u5DE5\u4F5C\u6D41\u7684\u76EE\u7684\u548C\u7528\u9014...","Workflow Stages":"\u5DE5\u4F5C\u6D41\u968E\u6BB5","No stages defined yet. Add a stage to get started.":"\u5C1A\u672A\u5B9A\u7FA9\u968E\u6BB5\u3002\u6DFB\u52A0\u4E00\u500B\u968E\u6BB5\u958B\u59CB\u3002",Edit:"\u7DE8\u8F2F","Move up":"\u4E0A\u79FB","Move down":"\u4E0B\u79FB","Sub-stage":"\u5B50\u968E\u6BB5","Sub-stage name":"\u5B50\u968E\u6BB5\u540D\u7A31","Sub-stage ID":"\u5B50\u968E\u6BB5ID","Next: ":"\u4E0B\u4E00\u500B\uFF1A","Add Sub-stage":"\u6DFB\u52A0\u5B50\u968E\u6BB5","New Sub-stage":"\u65B0\u5B50\u968E\u6BB5","Edit Stage":"\u7DE8\u8F2F\u968E\u6BB5","Stage name":"\u968E\u6BB5\u540D\u7A31","A descriptive name for this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u968E\u6BB5\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Stage ID":"\u968E\u6BB5ID","A unique identifier for the stage (used in tags)":"\u968E\u6BB5\u7684\u552F\u4E00\u6A19\u8B58\u7B26\uFF08\u7528\u65BC\u6A19\u7C64\uFF09","Stage type":"\u968E\u6BB5\u985E\u578B","The type of this workflow stage":"\u6B64\u5DE5\u4F5C\u6D41\u968E\u6BB5\u7684\u985E\u578B","Linear (sequential)":"\u7DDA\u6027\uFF08\u9806\u5E8F\uFF09","Cycle (repeatable)":"\u5FAA\u74B0\uFF08\u53EF\u91CD\u8907\uFF09","Terminal (end stage)":"\u7D42\u7AEF\uFF08\u7D50\u675F\u968E\u6BB5\uFF09","Next stage":"\u4E0B\u4E00\u968E\u6BB5","The stage to proceed to after this one":"\u6B64\u968E\u6BB5\u4E4B\u5F8C\u8981\u9032\u884C\u7684\u968E\u6BB5","Sub-stages":"\u5B50\u968E\u6BB5","Define cycle sub-stages (optional)":"\u5B9A\u7FA9\u5FAA\u74B0\u5B50\u968E\u6BB5\uFF08\u53EF\u9078\uFF09","No sub-stages defined yet.":"\u5C1A\u672A\u5B9A\u7FA9\u5B50\u968E\u6BB5\u3002","Can proceed to":"\u53EF\u4EE5\u9032\u884C\u5230","Additional stages that can follow this one (for right-click menu)":"\u53EF\u4EE5\u8DDF\u96A8\u6B64\u968E\u6BB5\u7684\u5176\u4ED6\u968E\u6BB5\uFF08\u7528\u65BC\u53F3\u9375\u83DC\u55AE\uFF09","No additional destination stages defined.":"\u672A\u5B9A\u7FA9\u5176\u4ED6\u76EE\u6A19\u968E\u6BB5\u3002",Remove:"\u79FB\u9664",Add:"\u6DFB\u52A0","Name and ID are required.":"\u540D\u7A31\u548CID\u662F\u5FC5\u9700\u7684\u3002","End of file":"\u6587\u4EF6\u7D50\u5C3E","Include in cycle":"\u5305\u542B\u5728\u5FAA\u74B0\u4E2D",Preset:"\u9810\u8A2D","Preset name":"\u9810\u8A2D\u540D\u7A31","Edit Filter":"\u7DE8\u8F2F\u904E\u6FFE\u5668","Add New Preset":"\u6DFB\u52A0\u65B0\u9810\u8A2D","New Filter":"\u65B0\u904E\u6FFE\u5668","Reset to Default Presets":"\u91CD\u7F6E\u70BA\u9810\u8A2D","This will replace all your current presets with the default set. Are you sure?":"\u9019\u5C07\u66FF\u63DB\u60A8\u7576\u524D\u7684\u6240\u6709\u9810\u8A2D\uFF0C\u4E26\u4F7F\u7528\u9ED8\u8A8D\u8A2D\u7F6E\u3002\u60A8\u78BA\u5B9A\u55CE\uFF1F","Edit Workflow":"\u7DE8\u8F2F\u5DE5\u4F5C\u6D41",General:"\u5E38\u898F","Progress Bar":"\u9032\u5EA6\u689D","Task Mover":"\u4EFB\u52D9\u79FB\u52D5\u5668","Quick Capture":"\u5FEB\u901F\u6355\u7372","Date & Priority":"\u65E5\u671F\u548C\u512A\u5148\u7D1A",About:"\u95DC\u65BC","Count sub children of current Task":"\u8A08\u7B97\u7576\u524D\u4EFB\u52D9\u7684\u5B50\u4EFB\u52D9","Toggle this to allow this plugin to count sub tasks when generating progress bar .":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u9032\u5EA6\u689D\u6642\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Configure task status settings":"\u914D\u7F6E\u4EFB\u52D9\u72C0\u614B\u8A2D\u7F6E","Configure which task markers to count or exclude":"\u914D\u7F6E\u8981\u8A08\u7B97\u6216\u6392\u9664\u7684\u4EFB\u52D9\u6A19\u8A18","Task status cycle and marks":"\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u548C\u6A19\u8A18","About Task Genius":"\u95DC\u65BC Task Genius",Version:"\u7248\u672C",Documentation:"\u6587\u6A94","View the documentation for this plugin":"\u67E5\u770B\u6B64\u63D2\u4EF6\u7684\u6587\u6A94","Open Documentation":"\u6253\u958B\u6587\u6A94","Incomplete tasks":"\u672A\u5B8C\u6210\u7684\u4EFB\u52D9","In progress tasks":"\u9032\u884C\u4E2D\u7684\u4EFB\u52D9","Completed tasks":"\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9","All tasks":"\u6240\u6709\u4EFB\u52D9","After heading":"\u6A19\u984C\u5F8C","End of section":"\u7AE0\u7BC0\u7D50\u5C3E","Enable text mark in source mode":"\u5728\u6E90\u78BC\u6A21\u5F0F\u4E2D\u555F\u7528\u6587\u672C\u6A19\u8A18","Make the text mark in source mode follow the task status cycle when clicked.":"\u9EDE\u64CA\u6642\u4F7F\u6E90\u78BC\u6A21\u5F0F\u4E2D\u7684\u6587\u672C\u6A19\u8A18\u8DDF\u96A8\u4EFB\u52D9\u72C0\u614B\u5FAA\u74B0\u3002","Status name":"\u72C0\u614B\u540D\u7A31","Progress display mode":"\u9032\u5EA6\u986F\u793A\u6A21\u5F0F","Choose how to display task progress":"\u9078\u64C7\u5982\u4F55\u986F\u793A\u4EFB\u52D9\u9032\u5EA6","No progress indicators":"\u7121\u9032\u5EA6\u6307\u793A\u5668","Graphical progress bar":"\u5716\u5F62\u9032\u5EA6\u689D","Text progress indicator":"\u6587\u672C\u9032\u5EA6\u6307\u793A\u5668","Both graphical and text":"\u5716\u5F62\u548C\u6587\u672C\u90FD\u986F\u793A","Toggle this to allow this plugin to count sub tasks when generating progress bar.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u63D2\u4EF6\u5728\u751F\u6210\u9032\u5EA6\u689D\u6642\u8A08\u7B97\u5B50\u4EFB\u52D9\u3002","Progress format":"\u9032\u5EA6\u683C\u5F0F","Choose how to display the task progress":"\u9078\u64C7\u5982\u4F55\u986F\u793A\u4EFB\u52D9\u9032\u5EA6","Percentage (75%)":"\u767E\u5206\u6BD4 (75%)","Bracketed percentage ([75%])":"\u5E36\u62EC\u865F\u7684\u767E\u5206\u6BD4 ([75%])","Fraction (3/4)":"\u5206\u6578 (3/4)","Bracketed fraction ([3/4])":"\u5E36\u62EC\u865F\u7684\u5206\u6578 ([3/4])","Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])":"\u8A73\u7D30 ([3\u2713 1\u27F3 0\u2717 1? / 5])","Custom format":"\u81EA\u5B9A\u7FA9\u683C\u5F0F","Range-based text":"\u57FA\u65BC\u7BC4\u570D\u7684\u6587\u672C","Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.":"\u4F7F\u7528\u4F54\u4F4D\u7B26\u5982 {{COMPLETED}}\u3001{{TOTAL}}\u3001{{PERCENT}} \u7B49\u3002","Preview:":"\u9810\u89BD\uFF1A","Available placeholders":"\u53EF\u7528\u4F54\u4F4D\u7B26","Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}":"\u53EF\u7528\u4F54\u4F4D\u7B26\uFF1A{{COMPLETED}}\u3001{{TOTAL}}\u3001{{IN_PROGRESS}}\u3001{{ABANDONED}}\u3001{{PLANNED}}\u3001{{NOT_STARTED}}\u3001{{PERCENT}}\u3001{{COMPLETED_SYMBOL}}\u3001{{IN_PROGRESS_SYMBOL}}\u3001{{ABANDONED_SYMBOL}}\u3001{{PLANNED_SYMBOL}}","Expression examples":"\u8868\u9054\u5F0F\u793A\u4F8B","Examples of advanced formats using expressions":"\u4F7F\u7528\u8868\u9054\u5F0F\u7684\u9AD8\u7D1A\u683C\u5F0F\u793A\u4F8B","Text Progress Bar":"\u6587\u672C\u9032\u5EA6\u689D","Emoji Progress Bar":"\u8868\u60C5\u7B26\u865F\u9032\u5EA6\u689D","Color-coded Status":"\u984F\u8272\u7DE8\u78BC\u72C0\u614B","Status with Icons":"\u5E36\u5716\u6A19\u7684\u72C0\u614B",Preview:"\u9810\u89BD",Use:"\u4F7F\u7528","Toggle this to show percentage instead of completed/total count.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u986F\u793A\u767E\u5206\u6BD4\u800C\u4E0D\u662F\u5DF2\u5B8C\u6210/\u7E3D\u8A08\u6578\u3002","Customize progress ranges":"\u81EA\u5B9A\u7FA9\u9032\u5EA6\u7BC4\u570D","Toggle this to customize the text for different progress ranges.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u81EA\u5B9A\u7FA9\u4E0D\u540C\u9032\u5EA6\u7BC4\u570D\u7684\u6587\u672C\u3002","Apply Theme":"\u61C9\u7528\u4E3B\u984C","Back to main settings":"\u8FD4\u56DE\u4E3B\u8A2D\u7F6E","Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.":"\u652F\u6301\u5728\u683C\u5F0F\u4E2D\u4F7F\u7528\u8868\u8FBE\u5F0F\uFF0C\u4F8B\u5982\u4F7F\u7528 data.percentages \u83B7\u53D6\u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u767E\u5206\u6BD4\u3002\u4F7F\u7528 Math \u6216 Repeat \u51FD\u6570\u6765\u83B7\u53D6\u7ED3\u679C\u3002","Target File:":"\u76EE\u6A19\u6587\u4EF6\uFF1A","Task Properties":"\u4EFB\u52D9\u5C6C\u6027","Start Date":"\u958B\u59CB\u65E5\u671F","Due Date":"\u622A\u6B62\u65E5\u671F","Scheduled Date":"\u8A08\u5283\u65E5\u671F",Priority:"\u512A\u5148\u7D1A",None:"\u7121",Highest:"\u6700\u9AD8",High:"\u9AD8",Medium:"\u4E2D\u7B49",Low:"\u4F4E",Lowest:"\u6700\u4F4E",Project:"\u9805\u76EE","Project name":"\u9805\u76EE\u540D\u7A31",Context:"\u4E0A\u4E0B\u6587",Recurrence:"\u91CD\u8907","e.g., every day, every week":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u9031","Task Content":"\u4EFB\u52D9\u5167\u5BB9","Task Details":"\u4EFB\u52D9\u8A73\u60C5",File:"\u6587\u4EF6","Edit in File":"\u5728\u6587\u4EF6\u4E2D\u7DE8\u8F2F","Mark Incomplete":"\u6A19\u8A18\u70BA\u672A\u5B8C\u6210","Mark Complete":"\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210","Task Title":"\u4EFB\u52D9\u6A19\u984C",Tags:"\u6A19\u7C64","e.g. every day, every 2 weeks":"\u4F8B\u5982\uFF1A\u6BCF\u5929\uFF0C\u6BCF\u5169\u9031",Forecast:"\u9810\u6E2C","0 actions, 0 projects":"0 \u500B\u884C\u52D5\uFF0C0 \u500B\u9805\u76EE","Toggle list/tree view":"\u5207\u63DB\u5217\u8868/\u6A39\u5F62\u8996\u5716","Focusing on Work":"\u5C08\u6CE8\u5DE5\u4F5C",Unfocus:"\u53D6\u6D88\u5C08\u6CE8","Past Due":"\u5DF2\u903E\u671F",Today:"\u4ECA\u5929",Future:"\u672A\u4F86",actions:"\u884C\u52D5",project:"\u9805\u76EE","Coming Up":"\u5373\u5C07\u5230\u4F86",Task:"\u4EFB\u52D9",Tasks:"\u4EFB\u52D9","No upcoming tasks":"\u6C92\u6709\u5373\u5C07\u5230\u4F86\u7684\u4EFB\u52D9","No tasks scheduled":"\u6C92\u6709\u8A08\u5283\u4E2D\u7684\u4EFB\u52D9","0 tasks":"0 \u500B\u4EFB\u52D9","Filter tasks...":"\u7BE9\u9078\u4EFB\u52D9...",Projects:"\u9805\u76EE","Toggle multi-select":"\u5207\u63DB\u591A\u9078","No projects found":"\u672A\u627E\u5230\u9805\u76EE","projects selected":"\u5DF2\u9078\u64C7\u7684\u9805\u76EE",tasks:"\u4EFB\u52D9","No tasks in the selected projects":"\u6240\u9078\u9805\u76EE\u4E2D\u6C92\u6709\u4EFB\u52D9","Select a project to see related tasks":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u67E5\u770B\u76F8\u95DC\u4EFB\u52D9","Configure Review for":"\u70BA\u4EE5\u4E0B\u9805\u76EE\u914D\u7F6E\u56DE\u9867","Review Frequency":"\u56DE\u9867\u983B\u7387","How often should this project be reviewed":"\u9019\u500B\u9805\u76EE\u61C9\u8A72\u591A\u4E45\u56DE\u9867\u4E00\u6B21","Custom...":"\u81EA\u5B9A\u7FA9...","e.g., every 3 months":"\u4F8B\u5982\uFF1A\u6BCF3\u500B\u6708","Last Reviewed":"\u4E0A\u6B21\u56DE\u9867","Please specify a review frequency":"\u8ACB\u6307\u5B9A\u56DE\u9867\u983B\u7387","Review schedule updated for":"\u5DF2\u66F4\u65B0\u56DE\u9867\u8A08\u5283","Review Projects":"\u56DE\u9867\u9805\u76EE","Select a project to review its tasks.":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u56DE\u9867\u5176\u4EFB\u52D9\u3002","Configured for Review":"\u5DF2\u914D\u7F6E\u56DE\u9867","Not Configured":"\u672A\u914D\u7F6E","No projects available.":"\u6C92\u6709\u53EF\u7528\u7684\u9805\u76EE\u3002","Select a project to review.":"\u9078\u64C7\u4E00\u500B\u9805\u76EE\u9032\u884C\u56DE\u9867\u3002","Show all tasks":"\u986F\u793A\u6240\u6709\u4EFB\u52D9","Showing all tasks, including completed tasks from previous reviews.":"\u986F\u793A\u6240\u6709\u4EFB\u52D9\uFF0C\u5305\u62EC\u4E4B\u524D\u56DE\u9867\u4E2D\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9\u3002","Show only new and in-progress tasks":"\u50C5\u986F\u793A\u65B0\u4EFB\u52D9\u548C\u9032\u884C\u4E2D\u7684\u4EFB\u52D9","No tasks found for this project.":"\u672A\u627E\u5230\u6B64\u9805\u76EE\u7684\u4EFB\u52D9\u3002","Review every":"\u6BCF\u9694\u591A\u4E45\u56DE\u9867",never:"\u5F9E\u4E0D","Last reviewed":"\u4E0A\u6B21\u56DE\u9867","Mark as Reviewed":"\u6A19\u8A18\u70BA\u5DF2\u56DE\u9867","No review schedule configured for this project":"\u6B64\u9805\u76EE\u672A\u914D\u7F6E\u56DE\u9867\u8A08\u5283","Configure Review Schedule":"\u914D\u7F6E\u56DE\u9867\u8A08\u5283","Project Review":"\u9805\u76EE\u56DE\u9867","Select a project from the left sidebar to review its tasks.":"\u5F9E\u5DE6\u5074\u908A\u6B04\u9078\u64C7\u4E00\u500B\u9805\u76EE\u4EE5\u56DE\u9867\u5176\u4EFB\u52D9\u3002",Inbox:"\u6536\u4EF6\u7BB1",Flagged:"\u5DF2\u6A19\u8A18",Review:"\u56DE\u9867","tags selected":"\u5DF2\u9078\u64C7\u7684\u6A19\u7C64","No tasks with the selected tags":"\u6C92\u6709\u5E36\u6709\u6240\u9078\u6A19\u7C64\u7684\u4EFB\u52D9","Select a tag to see related tasks":"\u9078\u64C7\u4E00\u500B\u6A19\u7C64\u4EE5\u67E5\u770B\u76F8\u95DC\u4EFB\u52D9","Open Task Genius view":"\u6253\u958B Task Genius \u8996\u5716","Task capture with metadata":"\u5E36\u5143\u6578\u64DA\u7684\u4EFB\u52D9\u6355\u7372","Refresh task index":"\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15","Refreshing task index...":"\u6B63\u5728\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15...","Task index refreshed":"\u4EFB\u52D9\u7D22\u5F15\u5DF2\u5237\u65B0","Failed to refresh task index":"\u5237\u65B0\u4EFB\u52D9\u7D22\u5F15\u5931\u6557","Force reindex all tasks":"\u5F37\u5236\u91CD\u5EFA\u6240\u6709\u4EFB\u52D9\u7D22\u5F15","Clearing task cache and rebuilding index...":"\u6B63\u5728\u6E05\u9664\u4EFB\u52D9\u7DE9\u5B58\u4E26\u91CD\u5EFA\u7D22\u5F15...","Task index completely rebuilt":"\u4EFB\u52D9\u7D22\u5F15\u5DF2\u5B8C\u5168\u91CD\u5EFA","Failed to force reindex tasks":"\u5F37\u5236\u91CD\u5EFA\u4EFB\u52D9\u7D22\u5F15\u5931\u6557","Task Genius View":"Task Genius \u8996\u5716","Toggle Sidebar":"\u5207\u63DB\u5074\u908A\u6B04",Details:"\u8A73\u60C5",View:"\u8996\u5716","Task Genius view is a comprehensive view that allows you to manage your tasks in a more efficient way.":"Task Genius \u8996\u5716\u662F\u4E00\u500B\u7D9C\u5408\u8996\u5716\uFF0C\u53EF\u4EE5\u8B93\u60A8\u66F4\u9AD8\u6548\u5730\u7BA1\u7406\u4EFB\u52D9\u3002","Enable task genius view":"\u555F\u7528 Task Genius \u8996\u5716","Select a task to view details":"\u9078\u64C7\u4E00\u500B\u4EFB\u52D9\u4EE5\u67E5\u770B\u8A73\u60C5",Status:"\u72C0\u614B","Comma separated":"\u9017\u865F\u5206\u9694",Focus:"\u5C08\u6CE8","Loading more...":"\u52A0\u8F09\u66F4\u591A...",projects:"\u9805\u76EE","No tasks for this section.":"\u6C92\u6709\u9019\u500B\u7AE0\u7BC0\u7684\u4EFB\u52D9\u3002","No tasks found.":"\u6C92\u6709\u627E\u5230\u4EFB\u52D9\u3002",Complete:"\u5B8C\u6210","Switch status":"\u5207\u63DB\u72C0\u614B","Rebuild index":"\u91CD\u5EFA\u7D22\u5F15",Rebuild:"\u91CD\u5EFA","0 tasks, 0 projects":"0 \u500B\u4EFB\u52D9\uFF0C0 \u500B\u9805\u76EE","New Custom View":"\u65B0\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Create Custom View":"\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Edit View: ":"\u7DE8\u8F2F\u8996\u5716\uFF1A","View Name":"\u8996\u5716\u540D\u7A31","My Custom Task View":"\u6211\u7684\u81EA\u5B9A\u7FA9\u4EFB\u52D9\u8996\u5716","Icon Name":"\u5716\u6A19\u540D\u7A31","Enter any Lucide icon name (e.g., list-checks, filter, inbox)":"\u8F38\u5165\u4EFB\u4F55 Lucide \u5716\u6A19\u540D\u7A31\uFF08\u4F8B\u5982\uFF1Alist-checks\u3001filter\u3001inbox\uFF09","Filter Rules":"\u904E\u6FFE\u898F\u5247","Hide Completed and Abandoned Tasks":"\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9","Hide completed and abandoned tasks in this view.":"\u5728\u6B64\u8996\u5716\u4E2D\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9\u3002","Text Contains":"\u6587\u672C\u5305\u542B","Filter tasks whose content includes this text (case-insensitive).":"\u904E\u6FFE\u5167\u5BB9\u5305\u542B\u6B64\u6587\u672C\u7684\u4EFB\u52D9\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Tags Include":"\u5305\u542B\u6A19\u7C64","Task must include ALL these tags (comma-separated).":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6240\u6709\u9019\u4E9B\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002","Tags Exclude":"\u6392\u9664\u6A19\u7C64","Task must NOT include ANY of these tags (comma-separated).":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u4EFB\u4F55\u9019\u4E9B\u6A19\u7C64\uFF08\u9017\u865F\u5206\u9694\uFF09\u3002","Project Is":"\u9805\u76EE\u662F","Task must belong to this project (exact match).":"\u4EFB\u52D9\u5FC5\u9808\u5C6C\u65BC\u6B64\u9805\u76EE\uFF08\u7CBE\u78BA\u5339\u914D\uFF09\u3002","Priority Is":"\u512A\u5148\u7D1A\u662F","Task must have this priority (e.g., 1, 2, 3).":"\u4EFB\u52D9\u5FC5\u9808\u5177\u6709\u6B64\u512A\u5148\u7D1A\uFF08\u4F8B\u5982\uFF1A1\u30012\u30013\uFF09\u3002","Status Include":"\u5305\u542B\u72C0\u614B","Task status must be one of these (comma-separated markers, e.g., /,>).":"\u4EFB\u52D9\u72C0\u614B\u5FC5\u9808\u662F\u9019\u4E9B\u4E4B\u4E00\uFF08\u9017\u865F\u5206\u9694\u7684\u6A19\u8A18\uFF0C\u4F8B\u5982\uFF1A/,>\uFF09\u3002","Status Exclude":"\u6392\u9664\u72C0\u614B","Task status must NOT be one of these (comma-separated markers, e.g., -,x).":"\u4EFB\u52D9\u72C0\u614B\u4E0D\u5F97\u662F\u9019\u4E9B\u4E4B\u4E00\uFF08\u9017\u865F\u5206\u9694\u7684\u6A19\u8A18\uFF0C\u4F8B\u5982\uFF1A-,x\uFF09\u3002","Use YYYY-MM-DD or relative terms like 'today', 'tomorrow', 'next week', 'last month'.":"\u4F7F\u7528 YYYY-MM-DD \u6216\u76F8\u5C0D\u8853\u8A9E\uFF0C\u5982'\u4ECA\u5929'\u3001'\u660E\u5929'\u3001'\u4E0B\u9031'\u3001'\u4E0A\u500B\u6708'\u3002","Due Date Is":"\u622A\u6B62\u65E5\u671F\u662F","Start Date Is":"\u958B\u59CB\u65E5\u671F\u662F","Scheduled Date Is":"\u8A08\u5283\u65E5\u671F\u662F","Path Includes":"\u8DEF\u5F91\u5305\u542B","Task must contain this path (case-insensitive).":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Path Excludes":"\u8DEF\u5F91\u6392\u9664","Task must NOT contain this path (case-insensitive).":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002","Unnamed View":"\u672A\u547D\u540D\u8996\u5716","View configuration saved.":"\u8996\u5716\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002","Hide Details":"\u96B1\u85CF\u8A73\u60C5","Show Details":"\u986F\u793A\u8A73\u60C5","View Config":"\u8996\u5716\u914D\u7F6E","View Configuration":"\u8996\u5716\u914D\u7F6E","Configure the Task Genius sidebar views, visibility, order, and create custom views.":"\u914D\u7F6E Task Genius \u5074\u908A\u6B04\u8996\u5716\u3001\u53EF\u898B\u6027\u3001\u9806\u5E8F\uFF0C\u4E26\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716\u3002","Manage Views":"\u7BA1\u7406\u8996\u5716","Configure sidebar views, order, visibility, and hide/show completed tasks per view.":"\u914D\u7F6E\u5074\u908A\u6B04\u8996\u5716\u3001\u9806\u5E8F\u3001\u53EF\u898B\u6027\uFF0C\u4EE5\u53CA\u6BCF\u500B\u8996\u5716\u4E2D\u96B1\u85CF/\u986F\u793A\u5DF2\u5B8C\u6210\u7684\u4EFB\u52D9\u3002","Show in sidebar":"\u5728\u5074\u908A\u6B04\u4E2D\u986F\u793A","Edit View":"\u7DE8\u8F2F\u8996\u5716","Move Up":"\u4E0A\u79FB","Move Down":"\u4E0B\u79FB","Delete View":"\u522A\u9664\u8996\u5716","Add Custom View":"\u6DFB\u52A0\u81EA\u5B9A\u7FA9\u8996\u5716","Error: View ID already exists.":"\u932F\u8AA4\uFF1A\u8996\u5716 ID \u5DF2\u5B58\u5728\u3002",Events:"\u4E8B\u4EF6",Plan:"\u8A08\u5283",Year:"\u5E74",Month:"\u6708",Week:"\u5468",Day:"\u65E5",Agenda:"\u8B70\u7A0B","Back to categories":"\u8FD4\u56DE\u5206\u985E","No matching options found":"\u672A\u627E\u5230\u5339\u914D\u9078\u9805","No matching filters found":"\u672A\u627E\u5230\u5339\u914D\u904E\u6FFE\u5668",Tag:"\u6A19\u7C64","File Path":"\u6587\u4EF6\u8DEF\u5F91","Add filter":"\u6DFB\u52A0\u904E\u6FFE\u5668","Clear all":"\u6E05\u9664\u5168\u90E8","Add Card":"\u6DFB\u52A0\u5361\u7247","First Day of Week":"\u6BCF\u5468\u7B2C\u4E00\u5929","Overrides the locale default for calendar views.":"Overrides the locale default for calendar views.","Show checkbox":"\u986F\u793A\u8907\u9078\u6846","Show a checkbox for each task in the kanban view.":"\u5728\u770B\u677F\u8996\u5716\u4E2D\u70BA\u6BCF\u500B\u4EFB\u52D9\u986F\u793A\u8907\u9078\u6846\u3002","Locale Default":"\u5340\u57DF\u9ED8\u8A8D\u8A2D\u7F6E","Use custom goal for progress bar":"\u70BA\u9032\u5EA6\u689D\u4F7F\u7528\u81EA\u5B9A\u7FA9\u76EE\u6A19","Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.":"\u5141\u8A31\u6B64\u63D2\u4EF6\u67E5\u627E\u7236\u4EFB\u52D9\u7684 g::number \u6A21\u5F0F\u4F5C\u70BA\u76EE\u6A19\u3002","Prefer metadata format of task":"\u512A\u5148\u4F7F\u7528\u4EFB\u52D9\u7684\u5143\u6578\u64DA\u683C\u5F0F","You can choose dataview format or tasks format, that will influence both index and save format.":"\u4F60\u53EF\u4EE5\u9078\u64C7 dataview \u683C\u5F0F\u6216 tasks \u683C\u5F0F\uFF0C\u9019\u5C07\u5F71\u97FF\u7D22\u5F15\u548C\u4FDD\u5B58\u683C\u5F0F\u3002","Open in new tab":"\u5728\u65B0\u6A19\u7C64\u9801\u4E2D\u958B\u555F","Open settings":"\u958B\u555F\u8A2D\u5B9A","Hide in sidebar":"\u5728\u5074\u908A\u6B04\u4E2D\u96B1\u85CF","No items found":"\u672A\u627E\u5230\u9805\u76EE","High Priority":"\u9AD8\u512A\u5148\u7D1A","Medium Priority":"\u4E2D\u512A\u5148\u7D1A","Low Priority":"\u4F4E\u512A\u5148\u7D1A","No tasks in the selected items":"\u6240\u9078\u9805\u76EE\u4E2D\u6C92\u6709\u4EFB\u52D9","View Type":"\u8996\u5716\u985E\u578B","Select the type of view to create":"\u9078\u64C7\u8981\u5275\u5EFA\u7684\u8996\u5716\u985E\u578B","Standard View":"\u6A19\u6E96\u8996\u5716","Two Column View":"\u96D9\u5217\u8996\u5716",Items:"\u9805\u76EE","selected items":"\u5DF2\u9078\u9805\u76EE","No items selected":"\u672A\u9078\u64C7\u9805\u76EE","Two Column View Settings":"\u96D9\u5217\u8996\u5716\u8A2D\u5B9A","Group by Task Property":"\u6309\u4EFB\u52D9\u5C6C\u6027\u5206\u7D44","Select which task property to use for left column grouping":"\u9078\u64C7\u7528\u65BC\u5DE6\u5217\u5206\u7D44\u7684\u4EFB\u52D9\u5C6C\u6027",Priorities:"\u512A\u5148\u7D1A",Contexts:"\u4E0A\u4E0B\u6587","Due Dates":"\u622A\u6B62\u65E5\u671F","Scheduled Dates":"\u8A08\u5283\u65E5\u671F","Start Dates":"\u958B\u59CB\u65E5\u671F",Files:"\u6587\u4EF6","Left Column Title":"\u5DE6\u5217\u6A19\u984C","Title for the left column (items list)":"\u5DE6\u5217\u6A19\u984C\uFF08\u9805\u76EE\u5217\u8868\uFF09","Right Column Title":"\u53F3\u5217\u6A19\u984C","Default title for the right column (tasks list)":"\u53F3\u5217\u9810\u8A2D\u6A19\u984C\uFF08\u4EFB\u52D9\u5217\u8868\uFF09","Multi-select Text":"\u591A\u9078\u6587\u672C","Text to show when multiple items are selected":"\u9078\u64C7\u591A\u500B\u9805\u76EE\u6642\u986F\u793A\u7684\u6587\u672C","Empty State Text":"\u7A7A\u72C0\u614B\u6587\u672C","Text to show when no items are selected":"\u672A\u9078\u64C7\u9805\u76EE\u6642\u986F\u793A\u7684\u6587\u672C","Filter Blanks":"\u904E\u6FFE\u7A7A\u767D\u4EFB\u52D9","Filter out blank tasks in this view.":"\u5728\u6B64\u8996\u5716\u4E2D\u904E\u6FFE\u6389\u7A7A\u767D\u4EFB\u52D9\u3002","Task must contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52D9\u5FC5\u9808\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002\u591A\u500B\u8DEF\u5F91\u7528\u9017\u865F\u5206\u9694\u3002","Task must NOT contain this path (case-insensitive). Separate multiple paths with commas.":"\u4EFB\u52D9\u4E0D\u5F97\u5305\u542B\u6B64\u8DEF\u5F91\uFF08\u4E0D\u5340\u5206\u5927\u5C0F\u5BEB\uFF09\u3002\u591A\u500B\u8DEF\u5F91\u7528\u9017\u865F\u5206\u9694\u3002","You have unsaved changes. Save before closing?":"\u60A8\u6709\u672A\u4FDD\u5B58\u7684\u66F4\u6539\u3002\u95DC\u9589\u524D\u4FDD\u5B58\u55CE\uFF1F",Rotate:"\u65CB\u8F49","Are you sure you want to force reindex all tasks?":"\u60A8\u78BA\u5B9A\u8981\u5F37\u5236\u91CD\u65B0\u7D22\u5F15\u6240\u6709\u4EFB\u52D9\u55CE\uFF1F","Enable progress bar in reading mode":"\u5728\u95B1\u8B80\u6A21\u5F0F\u4E2D\u555F\u7528\u9032\u5EA6\u689D","Toggle this to allow this plugin to show progress bars in reading mode.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u63D2\u4EF6\u5728\u95B1\u8B80\u6A21\u5F0F\u4E2D\u986F\u793A\u9032\u5EA6\u689D\u3002",Range:"\u7BC4\u570D","as a placeholder for the percentage value":"\u4F5C\u70BA\u767E\u5206\u6BD4\u503C\u7684\u4F54\u4F4D\u7B26","Template text with":"\u5E36\u6709\u4F54\u4F4D\u7B26\u7684\u6A21\u677F\u6587\u672C",placeholder:"\u4F54\u4F4D\u7B26",Reindex:"\u91CD\u5EFA\u7D22\u5F15","From now":"\u5F9E\u73FE\u5728","Complete workflow":"\u5B8C\u6210\u5DE5\u4F5C\u6D41\u7A0B","Move to":"\u79FB\u52D5\u5230",Settings:"\u8A2D\u5B9A","Just started":"\u525B\u958B\u59CB","Making progress":"\u6B63\u5728\u9032\u884C","Half way":"\u9032\u884C\u4E00\u534A","Good progress":"\u9032\u5C55\u826F\u597D","Almost there":"\u5373\u5C07\u5B8C\u6210","archived on":"\u5B58\u6A94\u65BC",moved:"\u5DF2\u79FB\u52D5","Capture your thoughts...":"\u8A18\u9304\u4F60\u7684\u60F3\u6CD5...","Project Workflow":"\u5C08\u6848\u5DE5\u4F5C\u6D41\u7A0B","Standard project management workflow":"\u6A19\u6E96\u5C08\u6848\u7BA1\u7406\u5DE5\u4F5C\u6D41\u7A0B",Planning:"\u898F\u5283\u4E2D",Development:"\u958B\u767C\u4E2D",Testing:"\u6E2C\u8A66\u4E2D",Cancelled:"\u5DF2\u53D6\u6D88",Habit:"\u7FD2\u6163","Drink a cup of good tea":"\u559D\u4E00\u676F\u597D\u8336","Watch an episode of a favorite series":"\u89C0\u770B\u4E00\u96C6\u559C\u611B\u7684\u5287\u96C6","Play a game":"\u73A9\u4E00\u500B\u904A\u6232","Eat a piece of chocolate":"\u5403\u4E00\u584A\u5DE7\u514B\u529B",common:"\u666E\u901A",rare:"\u7A00\u6709",legendary:"\u50B3\u5947","No Habits Yet":"\u5C1A\u7121\u7FD2\u6163","Click the open habit button to create a new habit.":"\u9EDE\u64CA\u958B\u555F\u7FD2\u6163\u6309\u9215\u4EE5\u5275\u5EFA\u65B0\u7FD2\u6163\u3002","Please enter details":"\u8ACB\u8F38\u5165\u8A73\u7D30\u8CC7\u8A0A","Goal reached":"\u5DF2\u9054\u6210\u76EE\u6A19","Exceeded goal":"\u8D85\u904E\u76EE\u6A19",Active:"\u6D3B\u8E8D",today:"\u4ECA\u5929",Inactive:"\u4E0D\u6D3B\u8E8D","All Done!":"\u5168\u90E8\u5B8C\u6210\uFF01","Select event...":"\u9078\u64C7\u4E8B\u4EF6...","Create new habit":"\u5275\u5EFA\u65B0\u7FD2\u6163","Edit habit":"\u7DE8\u8F2F\u7FD2\u6163","Habit type":"\u7FD2\u6163\u985E\u578B","Daily habit":"\u6BCF\u65E5\u7FD2\u6163","Simple daily check-in habit":"\u7C21\u55AE\u7684\u6BCF\u65E5\u6253\u5361\u7FD2\u6163","Count habit":"\u8A08\u6578\u7FD2\u6163","Record numeric values, e.g., how many cups of water":"\u8A18\u9304\u6578\u503C\uFF0C\u4F8B\u5982\u559D\u4E86\u591A\u5C11\u676F\u6C34","Mapping habit":"\u6620\u5C04\u7FD2\u6163","Use different values to map, e.g., emotion tracking":"\u4F7F\u7528\u4E0D\u540C\u7684\u503C\u9032\u884C\u6620\u5C04\uFF0C\u4F8B\u5982\u60C5\u7DD2\u8FFD\u8E64","Scheduled habit":"\u8A08\u5283\u7FD2\u6163","Habit with multiple events":"\u5305\u542B\u591A\u500B\u4E8B\u4EF6\u7684\u7FD2\u6163","Habit name":"\u7FD2\u6163\u540D\u7A31","Display name of the habit":"\u7FD2\u6163\u7684\u986F\u793A\u540D\u7A31","Optional habit description":"\u53EF\u9078\u7684\u7FD2\u6163\u63CF\u8FF0",Icon:"\u5716\u6A19","Please enter a habit name":"\u8ACB\u8F38\u5165\u7FD2\u6163\u540D\u7A31","Property name":"\u5C6C\u6027\u540D\u7A31","The property name of the daily note front matter":"\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u7684\u5C6C\u6027\u540D\u7A31","Completion text":"\u5B8C\u6210\u6587\u672C","(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed":"\uFF08\u53EF\u9078\uFF09\u8868\u793A\u5B8C\u6210\u7684\u7279\u5B9A\u6587\u672C\uFF0C\u7559\u7A7A\u5247\u4EFB\u4F55\u975E\u7A7A\u503C\u90FD\u8996\u70BA\u5DF2\u5B8C\u6210","The property name in daily note front matter to store count values":"\u5728\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u5B58\u5132\u8A08\u6578\u503C\u7684\u5C6C\u6027\u540D\u7A31","Minimum value":"\u6700\u5C0F\u503C","(Optional) Minimum value for the count":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u6700\u5C0F\u503C","Maximum value":"\u6700\u5927\u503C","(Optional) Maximum value for the count":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u6700\u5927\u503C",Unit:"\u55AE\u4F4D","(Optional) Unit for the count, such as 'cups', 'times', etc.":"\uFF08\u53EF\u9078\uFF09\u8A08\u6578\u7684\u55AE\u4F4D\uFF0C\u5982'\u676F'\u3001'\u6B21'\u7B49","Notice threshold":"\u63D0\u9192\u95BE\u503C","(Optional) Trigger a notification when this value is reached":"\uFF08\u53EF\u9078\uFF09\u7576\u9054\u5230\u6B64\u503C\u6642\u89F8\u767C\u901A\u77E5","The property name in daily note front matter to store mapping values":"\u5728\u65E5\u8A18\u524D\u7F6E\u5143\u6578\u64DA\u4E2D\u5B58\u5132\u6620\u5C04\u503C\u7684\u5C6C\u6027\u540D\u7A31","Value mapping":"\u503C\u6620\u5C04","Define mappings from numeric values to display text":"\u5B9A\u7FA9\u5F9E\u6578\u503C\u5230\u986F\u793A\u6587\u672C\u7684\u6620\u5C04","Add new mapping":"\u6DFB\u52A0\u65B0\u6620\u5C04","Scheduled events":"\u8A08\u5283\u4E8B\u4EF6","Add multiple events that need to be completed":"\u6DFB\u52A0\u9700\u8981\u5B8C\u6210\u7684\u591A\u500B\u4E8B\u4EF6","Event name":"\u4E8B\u4EF6\u540D\u7A31","Event details":"\u4E8B\u4EF6\u8A73\u60C5","Add new event":"\u6DFB\u52A0\u65B0\u4E8B\u4EF6","Please enter a property name":"\u8ACB\u8F38\u5165\u5C6C\u6027\u540D\u7A31","Please add at least one mapping value":"\u8ACB\u81F3\u5C11\u6DFB\u52A0\u4E00\u500B\u6620\u5C04\u503C","Mapping key must be a number":"\u6620\u5C04\u9375\u5FC5\u9808\u662F\u6578\u5B57","Please enter text for all mapping values":"\u8ACB\u70BA\u6240\u6709\u6620\u5C04\u503C\u8F38\u5165\u6587\u672C","Please add at least one event":"\u8ACB\u81F3\u5C11\u6DFB\u52A0\u4E00\u500B\u4E8B\u4EF6","Event name cannot be empty":"\u4E8B\u4EF6\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A","Add new habit":"\u6DFB\u52A0\u65B0\u7FD2\u6163","No habits yet":"\u66AB\u7121\u7FD2\u6163","Click the button above to add your first habit":"\u9EDE\u64CA\u4E0A\u65B9\u6309\u9215\u6DFB\u52A0\u4F60\u7684\u7B2C\u4E00\u500B\u7FD2\u6163","Habit updated":"\u7FD2\u6163\u5DF2\u66F4\u65B0","Habit added":"\u7FD2\u6163\u5DF2\u6DFB\u52A0","Delete habit":"\u522A\u9664\u7FD2\u6163","This action cannot be undone.":"\u6B64\u64CD\u4F5C\u7121\u6CD5\u64A4\u92B7\u3002","Habit deleted":"\u7FD2\u6163\u5DF2\u522A\u9664","You've Earned a Reward!":"\u4F60\u7372\u5F97\u4E86\u4E00\u500B\u734E\u52F5\uFF01","Your reward:":"\u4F60\u7684\u734E\u52F5\uFF1A","Image not found:":"\u672A\u627E\u5230\u5716\u7247\uFF1A","Claim Reward":"\u9818\u53D6\u734E\u52F5",Skip:"\u8DF3\u904E",Reward:"\u734E\u52F5","View & Index Configuration":"\u8996\u5716\u8207\u7D22\u5F15\u914D\u7F6E","Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.":"\u555F\u7528 Task Genius \u8996\u5716\u4E5F\u5C07\u555F\u7528 Task Genius \u7D22\u5F15\u5668\uFF0C\u5B83\u5C07\u63D0\u4F9B\u4F86\u81EA\u6574\u500B\u4FDD\u96AA\u5EAB\u7684 Task Genius \u8996\u5716\u7D50\u679C\u3002","Use daily note path as date":"\u4F7F\u7528\u65E5\u8A18\u8DEF\u5F91\u4F5C\u70BA\u65E5\u671F","If enabled, the daily note path will be used as the date for tasks.":"\u5982\u679C\u555F\u7528\uFF0C\u65E5\u8A18\u8DEF\u5F91\u5C07\u7528\u4F5C\u4EFB\u52D9\u7684\u65E5\u671F\u3002","Task Genius will use moment.js and also this format to parse the daily note path.":"Task Genius \u5C07\u4F7F\u7528moment.js\u548C\u6B64\u683C\u5F0F\u89E3\u6790\u65E5\u8A18\u8DEF\u5F91\u3002","You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.":"\u5728\u683C\u5F0F\u5B57\u7B26\u4E32\u4E2D\u9700\u8981\u4F7F\u7528`yyyy`\u800C\u4E0D\u662F`YYYY`\uFF0C\u4F7F\u7528`dd`\u800C\u4E0D\u662F`DD`\u3002","Daily note format":"\u65E5\u8A18\u683C\u5F0F","Daily note path":"\u65E5\u8A18\u8DEF\u5F91","Select the folder that contains the daily note.":"\u9078\u64C7\u5305\u542B\u65E5\u8A18\u7684\u6587\u4EF6\u593E\u3002","Use as date type":"\u7528\u4F5C\u65E5\u671F\u985E\u578B","You can choose due, start, or scheduled as the date type for tasks.":"\u4F60\u53EF\u4EE5\u9078\u64C7\u622A\u6B62\u65E5\u671F\u3001\u958B\u59CB\u65E5\u671F\u6216\u8A08\u5283\u65E5\u671F\u4F5C\u70BA\u4EFB\u52D9\u7684\u65E5\u671F\u985E\u578B\u3002",Due:"\u622A\u6B62",Start:"\u958B\u59CB",Scheduled:"\u8A08\u5283",Rewards:"\u734E\u52F5","Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.":"\u914D\u7F6E\u5B8C\u6210\u4EFB\u52D9\u7684\u734E\u52F5\u3002\u5B9A\u7FA9\u9805\u76EE\u3001\u5B83\u5011\u7684\u51FA\u73FE\u5E7E\u7387\u548C\u689D\u4EF6\u3002","Enable Rewards":"\u555F\u7528\u734E\u52F5","Toggle to enable or disable the reward system.":"\u5207\u63DB\u4EE5\u555F\u7528\u6216\u7981\u7528\u734E\u52F5\u7CFB\u7D71\u3002","Occurrence Levels":"\u51FA\u73FE\u7B49\u7D1A","Define different levels of reward rarity and their probability.":"\u5B9A\u7FA9\u4E0D\u540C\u7B49\u7D1A\u7684\u734E\u52F5\u7A00\u6709\u5EA6\u53CA\u5176\u6982\u7387\u3002","Chance must be between 0 and 100.":"\u5E7E\u7387\u5FC5\u9808\u57280\u5230100\u4E4B\u9593\u3002","Level Name (e.g., common)":"\u7B49\u7D1A\u540D\u7A31\uFF08\u4F8B\u5982\uFF0C\u666E\u901A\uFF09","Chance (%)":"\u5E7E\u7387\uFF08%\uFF09","Delete Level":"\u522A\u9664\u7B49\u7D1A","Add Occurrence Level":"\u6DFB\u52A0\u51FA\u73FE\u7B49\u7D1A","New Level":"\u65B0\u7B49\u7D1A","Reward Items":"\u734E\u52F5\u9805\u76EE","Manage the specific rewards that can be obtained.":"\u7BA1\u7406\u53EF\u4EE5\u7372\u5F97\u7684\u7279\u5B9A\u734E\u52F5\u3002","No levels defined":"\u672A\u5B9A\u7FA9\u7B49\u7D1A","Reward Name/Text":"\u734E\u52F5\u540D\u7A31/\u6587\u672C","Inventory (-1 for \u221E)":"\u5EAB\u5B58\uFF08-1\u8868\u793A\u7121\u9650\uFF09","Invalid inventory number.":"\u7121\u6548\u7684\u5EAB\u5B58\u6578\u91CF\u3002","Condition (e.g., #tag AND project)":"\u689D\u4EF6\uFF08\u4F8B\u5982\uFF0C#\u6A19\u7C64 AND \u9805\u76EE\uFF09","Image URL (optional)":"\u5716\u7247URL\uFF08\u53EF\u9078\uFF09","Delete Reward Item":"\u522A\u9664\u734E\u52F5\u9805\u76EE","No reward items defined yet.":"\u5C1A\u672A\u5B9A\u7FA9\u734E\u52F5\u9805\u76EE\u3002","Add Reward Item":"\u6DFB\u52A0\u734E\u52F5\u9805\u76EE","New Reward":"\u65B0\u734E\u52F5","Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.":"\u914D\u7F6E\u7FD2\u6163\u8A2D\u7F6E\uFF0C\u5305\u62EC\u6DFB\u52A0\u65B0\u7FD2\u6163\u3001\u7DE8\u8F2F\u73FE\u6709\u7FD2\u6163\u548C\u7BA1\u7406\u7FD2\u6163\u5B8C\u6210\u60C5\u6CC1\u3002","Enable habits":"\u555F\u7528\u7FD2\u6163","Task sorting is disabled or no sort criteria are defined in settings.":"\u4EFB\u52D9\u6392\u5E8F\u5DF2\u7981\u7528\u6216\u8A2D\u7F6E\u4E2D\u672A\u5B9A\u7FA9\u6392\u5E8F\u6A19\u6E96\u3002","e.g. #tag1, #tag2, #tag3":"\u4F8B\u5982 #\u6A19\u7C641, #\u6A19\u7C642, #\u6A19\u7C643",Overdue:"\u903E\u671F","No tasks found for this tag.":"\u672A\u627E\u5230\u6B64\u6A19\u7C64\u7684\u4EFB\u52D9\u3002","New custom view":"\u65B0\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Create custom view":"\u5275\u5EFA\u81EA\u5B9A\u7FA9\u8996\u5716","Edit view: ":"\u7DE8\u8F2F\u8996\u5716: ","Icon name":"\u5716\u6A19\u540D\u7A31","First day of week":"\u6BCF\u9031\u7B2C\u4E00\u5929","Overrides the locale default for forecast views.":"\u8986\u84CB\u9810\u6E2C\u8996\u5716\u7684\u5340\u57DF\u8A2D\u7F6E\u9ED8\u8A8D\u503C\u3002","View type":"\u8996\u5716\u985E\u578B","Standard view":"\u6A19\u6E96\u8996\u5716","Two column view":"\u96D9\u6B04\u8996\u5716","Two column view settings":"\u96D9\u6B04\u8996\u5716\u8A2D\u7F6E","Group by task property":"\u6309\u4EFB\u52D9\u5C6C\u6027\u5206\u7D44","Left column title":"\u5DE6\u6B04\u6A19\u984C","Right column title":"\u53F3\u6B04\u6A19\u984C","Empty state text":"\u7A7A\u72C0\u614B\u6587\u672C","Hide completed and abandoned tasks":"\u96B1\u85CF\u5DF2\u5B8C\u6210\u548C\u5DF2\u653E\u68C4\u7684\u4EFB\u52D9","Filter blanks":"\u904E\u6FFE\u7A7A\u767D","Text contains":"\u6587\u672C\u5305\u542B","Tags include":"\u6A19\u7C64\u5305\u542B","Tags exclude":"\u6A19\u7C64\u6392\u9664","Project is":"\u9805\u76EE\u662F","Priority is":"\u512A\u5148\u7D1A\u662F","Status include":"\u72C0\u614B\u5305\u542B","Status exclude":"\u72C0\u614B\u6392\u9664","Due date is":"\u622A\u6B62\u65E5\u671F\u662F","Start date is":"\u958B\u59CB\u65E5\u671F\u662F","Scheduled date is":"\u8A08\u5283\u65E5\u671F\u662F","Path includes":"\u8DEF\u5F91\u5305\u542B","Path excludes":"\u8DEF\u5F91\u6392\u9664","Sort Criteria":"\u6392\u5E8F\u6A19\u6E96","Define the order in which tasks should be sorted. Criteria are applied sequentially.":"\u5B9A\u7FA9\u4EFB\u52D9\u61C9\u8A72\u6392\u5E8F\u7684\u9806\u5E8F\u3002\u6A19\u6E96\u6309\u9806\u5E8F\u61C9\u7528\u3002","No sort criteria defined. Add criteria below.":"\u672A\u5B9A\u7FA9\u6392\u5E8F\u6A19\u6E96\u3002\u5728\u4E0B\u65B9\u6DFB\u52A0\u6A19\u6E96\u3002",Content:"\u5167\u5BB9",Ascending:"\u5347\u5E8F",Descending:"\u964D\u5E8F","Ascending: High -> Low -> None. Descending: None -> Low -> High":"\u5347\u5E8F\uFF1A\u9AD8 -> \u4F4E -> \u7121\u3002\u964D\u5E8F\uFF1A\u7121 -> \u4F4E -> \u9AD8","Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier":"\u5347\u5E8F\uFF1A\u8F03\u65E9 -> \u8F03\u665A -> \u7121\u3002\u964D\u5E8F\uFF1A\u7121 -> \u8F03\u665A -> \u8F03\u65E9","Ascending respects status order (Overdue first). Descending reverses it.":"\u5347\u5E8F\u9075\u5FAA\u72C0\u614B\u9806\u5E8F\uFF08\u903E\u671F\u512A\u5148\uFF09\u3002\u964D\u5E8F\u5247\u76F8\u53CD\u3002","Ascending: A-Z. Descending: Z-A":"\u5347\u5E8F\uFF1AA-Z\u3002\u964D\u5E8F\uFF1AZ-A","Remove Criterion":"\u79FB\u9664\u6A19\u6E96","Add Sort Criterion":"\u6DFB\u52A0\u6392\u5E8F\u6A19\u6E96","Reset to Defaults":"\u91CD\u7F6E\u70BA\u9ED8\u8A8D\u503C","Has due date":"\u6709\u622A\u6B62\u65E5\u671F","Has date":"\u6709\u65E5\u671F","No date":"\u7121\u65E5\u671F",Any:"\u4EFB\u4F55","Has start date":"\u6709\u958B\u59CB\u65E5\u671F","Has scheduled date":"\u6709\u8A08\u5283\u65E5\u671F","Has created date":"\u6709\u5275\u5EFA\u65E5\u671F","Has completed date":"\u6709\u5B8C\u6210\u65E5\u671F","Only show tasks that match the completed date.":"\u50C5\u986F\u793A\u8207\u5B8C\u6210\u65E5\u671F\u5339\u914D\u7684\u4EFB\u52D9\u3002","Has recurrence":"\u6709\u91CD\u8907","Has property":"\u6709\u5C6C\u6027","No property":"\u7121\u5C6C\u6027","Unsaved Changes":"\u672A\u4FDD\u5B58\u7684\u66F4\u6539","Sort Tasks in Section":"\u5728\u5340\u6BB5\u4E2D\u6392\u5E8F\u4EFB\u52D9","Tasks sorted (using settings). Change application needs refinement.":"\u4EFB\u52D9\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8A2D\u7F6E\uFF09\u3002\u66F4\u6539\u61C9\u7528\u9700\u8981\u5B8C\u5584\u3002","Sort Tasks in Entire Document":"\u5728\u6574\u500B\u6587\u6A94\u4E2D\u6392\u5E8F\u4EFB\u52D9","Entire document sorted (using settings).":"\u6574\u500B\u6587\u6A94\u5DF2\u6392\u5E8F\uFF08\u4F7F\u7528\u8A2D\u7F6E\uFF09\u3002","Tasks already sorted or no tasks found.":"\u4EFB\u52D9\u5DF2\u6392\u5E8F\u6216\u672A\u627E\u5230\u4EFB\u52D9\u3002","Task Handler":"\u4EFB\u52D9\u8655\u7406\u5668","Show progress bars based on heading":"\u6839\u64DA\u6A19\u984C\u986F\u793A\u9032\u5EA6\u689D","Toggle this to enable showing progress bars based on heading.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6839\u64DA\u6A19\u984C\u986F\u793A\u9032\u5EA6\u689D\u3002","# heading":"# \u6A19\u984C","Task Sorting":"\u4EFB\u52D9\u6392\u5E8F","Configure how tasks are sorted in the document.":"\u914D\u7F6E\u6587\u6A94\u4E2D\u4EFB\u52D9\u7684\u6392\u5E8F\u65B9\u5F0F\u3002","Enable Task Sorting":"\u555F\u7528\u4EFB\u52D9\u6392\u5E8F","Toggle this to enable commands for sorting tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6392\u5E8F\u4EFB\u52D9\u7684\u547D\u4EE4\u3002","Use relative time for date":"\u4F7F\u7528\u76F8\u5C0D\u6642\u9593\u8868\u793A\u65E5\u671F","Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.":"\u5728\u4EFB\u52D9\u5217\u8868\u9805\u4E2D\u4F7F\u7528\u76F8\u5C0D\u6642\u9593\u8868\u793A\u65E5\u671F\uFF0C\u4F8B\u5982\u300C\u6628\u5929\u300D\u3001\u300C\u4ECA\u5929\u300D\u3001\u300C\u660E\u5929\u300D\u3001\u300C2\u5929\u5F8C\u300D\u3001\u300C3\u500B\u6708\u524D\u300D\u7B49\u3002","Ignore all tasks behind heading":"\u5FFD\u7565\u6A19\u984C\u5F8C\u7684\u6240\u6709\u4EFB\u52D9","Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma":"\u8F38\u5165\u8981\u5FFD\u7565\u7684\u6A19\u984C\uFF0C\u4F8B\u5982\u300C## \u9805\u76EE\u300D\u3001\u300C## \u6536\u4EF6\u7BB1\u300D\uFF0C\u7528\u9017\u865F\u5206\u9694","Focus all tasks behind heading":"\u805A\u7126\u6A19\u984C\u5F8C\u7684\u6240\u6709\u4EFB\u52D9","Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma":"\u8F38\u5165\u8981\u805A\u7126\u7684\u6A19\u984C\uFF0C\u4F8B\u5982\u300C## \u9805\u76EE\u300D\u3001\u300C## \u6536\u4EF6\u7BB1\u300D\uFF0C\u7528\u9017\u865F\u5206\u9694","Enable rewards":"\u555F\u7528\u734E\u52F5","Reward display type":"\u734E\u52F5\u986F\u793A\u985E\u578B","Choose how rewards are displayed when earned.":"\u9078\u64C7\u7372\u5F97\u734E\u52F5\u6642\u7684\u986F\u793A\u65B9\u5F0F\u3002","Modal dialog":"\u6A21\u614B\u5C0D\u8A71\u6846","Notice (Auto-accept)":"\u901A\u77E5\uFF08\u81EA\u52D5\u63A5\u53D7\uFF09","Occurrence levels":"\u51FA\u73FE\u7B49\u7D1A","Add occurrence level":"\u6DFB\u52A0\u51FA\u73FE\u7B49\u7D1A","Reward items":"\u734E\u52F5\u9805\u76EE","Image url (optional)":"\u5716\u7247\u7DB2\u5740\uFF08\u53EF\u9078\uFF09","Delete reward item":"\u522A\u9664\u734E\u52F5\u9805\u76EE","Add reward item":"\u6DFB\u52A0\u734E\u52F5\u9805\u76EE","moved on":"\u79FB\u52D5\u65BC","Priority (High to Low)":"\u512A\u5148\u7D1A\uFF08\u9AD8\u5230\u4F4E\uFF09","Priority (Low to High)":"\u512A\u5148\u7D1A\uFF08\u4F4E\u5230\u9AD8\uFF09","Due Date (Earliest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Due Date (Latest First)":"\u622A\u6B62\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Scheduled Date (Earliest First)":"\u8A08\u5283\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Scheduled Date (Latest First)":"\u8A08\u5283\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Start Date (Earliest First)":"\u958B\u59CB\u65E5\u671F\uFF08\u6700\u65E9\u512A\u5148\uFF09","Start Date (Latest First)":"\u958B\u59CB\u65E5\u671F\uFF08\u6700\u665A\u512A\u5148\uFF09","Created Date":"\u5275\u5EFA\u65E5\u671F",Overview:"\u6982\u89BD",Dates:"\u65E5\u671F","e.g. #tag1, #tag2":"\u4F8B\u5982 #\u6A19\u7C641, #\u6A19\u7C642","e.g. @home, @work":"\u4F8B\u5982 @\u5BB6, @\u5DE5\u4F5C","Recurrence Rule":"\u91CD\u8907\u898F\u5247","e.g. every day, every week":"\u4F8B\u5982 \u6BCF\u5929, \u6BCF\u9031","Edit Task":"\u7DE8\u8F2F\u4EFB\u52D9","Save Filter Configuration":"\u4FDD\u5B58\u904E\u6FFE\u5668\u914D\u7F6E","Filter Configuration Name":"\u904E\u6FFE\u5668\u914D\u7F6E\u540D\u7A31","Enter a name for this filter configuration":"\u8F38\u5165\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u7684\u540D\u7A31","Filter Configuration Description":"\u904E\u6FFE\u5668\u914D\u7F6E\u63CF\u8FF0","Enter a description for this filter configuration (optional)":"\u8F38\u5165\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u7684\u63CF\u8FF0\uFF08\u53EF\u9078\uFF09","Load Filter Configuration":"\u8F09\u5165\u904E\u6FFE\u5668\u914D\u7F6E","No saved filter configurations":"\u6C92\u6709\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u914D\u7F6E","Select a saved filter configuration":"\u9078\u64C7\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668\u914D\u7F6E",Load:"\u8F09\u5165",Created:"\u5DF2\u5275\u5EFA",Updated:"\u5DF2\u66F4\u65B0","Filter Summary":"\u904E\u6FFE\u5668\u6458\u8981","filter group":"\u904E\u6FFE\u5668\u7FA4\u7D44",filter:"\u904E\u6FFE\u5668","Root condition":"\u6839\u689D\u4EF6","Filter configuration name is required":"\u904E\u6FFE\u5668\u914D\u7F6E\u540D\u7A31\u70BA\u5FC5\u586B\u9805","Failed to save filter configuration":"\u4FDD\u5B58\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Filter configuration saved successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u4FDD\u5B58\u6210\u529F","Failed to load filter configuration":"\u8F09\u5165\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Filter configuration loaded successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u8F09\u5165\u6210\u529F","Failed to delete filter configuration":"\u522A\u9664\u904E\u6FFE\u5668\u914D\u7F6E\u5931\u6557","Delete Filter Configuration":"\u522A\u9664\u904E\u6FFE\u5668\u914D\u7F6E","Are you sure you want to delete this filter configuration?":"\u60A8\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u904E\u6FFE\u5668\u914D\u7F6E\u55CE\uFF1F","Filter configuration deleted successfully":"\u904E\u6FFE\u5668\u914D\u7F6E\u522A\u9664\u6210\u529F",Match:"\u5339\u914D",All:"\u5168\u90E8","Add filter group":"\u6DFB\u52A0\u904E\u6FFE\u5668\u7FA4\u7D44","Save Current Filter":"\u4FDD\u5B58\u7576\u524D\u904E\u6FFE\u5668","Load Saved Filter":"\u8F09\u5165\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","filter in this group":"\u6B64\u7FA4\u7D44\u4E2D\u7684\u904E\u6FFE\u5668","Duplicate filter group":"\u8907\u88FD\u904E\u6FFE\u5668\u7FA4\u7D44","Remove filter group":"\u79FB\u9664\u904E\u6FFE\u5668\u7FA4\u7D44",OR:"\u6216","AND NOT":"\u4E14\u975E",AND:"\u4E14","Remove filter":"\u79FB\u9664\u904E\u6FFE\u5668",contains:"\u5305\u542B","does not contain":"\u4E0D\u5305\u542B",is:"\u662F","is not":"\u4E0D\u662F","starts with":"\u958B\u59CB\u65BC","ends with":"\u7D50\u675F\u65BC","is empty":"\u70BA\u7A7A","is not empty":"\u4E0D\u70BA\u7A7A","is true":"\u70BA\u771F","is false":"\u70BA\u5047","is set":"\u5DF2\u8A2D\u7F6E","is not set":"\u672A\u8A2D\u7F6E",equals:"\u7B49\u65BC",NOR:"\u7686\u975E","Group by":"\u5206\u7D44\u4F9D\u64DA","Select which task property to use for creating columns":"\u9078\u64C7\u7528\u65BC\u5275\u5EFA\u5217\u7684\u4EFB\u52D9\u5C6C\u6027","Hide empty columns":"\u96B1\u85CF\u7A7A\u5217","Hide columns that have no tasks.":"\u96B1\u85CF\u6C92\u6709\u4EFB\u52D9\u7684\u5217\u3002","Default sort field":"\u9ED8\u8A8D\u6392\u5E8F\u5B57\u6BB5","Default field to sort tasks by within each column.":"\u6BCF\u5217\u5167\u4EFB\u52D9\u6392\u5E8F\u7684\u9ED8\u8A8D\u5B57\u6BB5\u3002","Default sort order":"\u9ED8\u8A8D\u6392\u5E8F\u9806\u5E8F","Default order to sort tasks within each column.":"\u6BCF\u5217\u5167\u4EFB\u52D9\u6392\u5E8F\u7684\u9ED8\u8A8D\u9806\u5E8F\u3002","Custom Columns":"\u81EA\u5B9A\u7FA9\u5217","Configure custom columns for the selected grouping property":"\u70BA\u9078\u5B9A\u7684\u5206\u7D44\u5C6C\u6027\u914D\u7F6E\u81EA\u5B9A\u7FA9\u5217","No custom columns defined. Add columns below.":"\u672A\u5B9A\u7FA9\u81EA\u5B9A\u7FA9\u5217\u3002\u8ACB\u5728\u4E0B\u65B9\u6DFB\u52A0\u5217\u3002","Column Title":"\u5217\u6A19\u984C",Value:"\u503C","Remove Column":"\u79FB\u9664\u5217","Add Column":"\u6DFB\u52A0\u5217","New Column":"\u65B0\u5217","Reset Columns":"\u91CD\u7F6E\u5217","Task must have this priority (e.g., 1, 2, 3). You can also use 'none' to filter out tasks without a priority.":"\u4EFB\u52D9\u5FC5\u9808\u5177\u6709\u6B64\u512A\u5148\u7D1A\uFF08\u4F8B\u5982 1\u30012\u30013\uFF09\u3002\u60A8\u4E5F\u53EF\u4EE5\u4F7F\u7528 'none' \u4F86\u904E\u6FFE\u6389\u6C92\u6709\u512A\u5148\u7D1A\u7684\u4EFB\u52D9\u3002","Move all incomplete subtasks to another file":"\u5C07\u6240\u6709\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6","Move direct incomplete subtasks to another file":"\u5C07\u76F4\u63A5\u7684\u672A\u5B8C\u6210\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6",Filter:"\u904E\u6FFE\u5668","Reset Filter":"\u91CD\u7F6E\u904E\u6FFE\u5668","Saved Filters":"\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","Manage Saved Filters":"\u7BA1\u7406\u5DF2\u4FDD\u5B58\u7684\u904E\u6FFE\u5668","Filter applied: ":"\u5DF2\u61C9\u7528\u904E\u6FFE\u5668\uFF1A","Recurrence date calculation":"\u91CD\u8907\u65E5\u671F\u8A08\u7B97","Choose how to calculate the next date for recurring tasks":"\u9078\u64C7\u5982\u4F55\u8A08\u7B97\u91CD\u8907\u4EFB\u52D9\u7684\u4E0B\u4E00\u500B\u65E5\u671F","Based on due date":"\u57FA\u65BC\u622A\u6B62\u65E5\u671F","Based on scheduled date":"\u57FA\u65BC\u8A08\u5283\u65E5\u671F","Based on current date":"\u57FA\u65BC\u7576\u524D\u65E5\u671F","Task Gutter":"\u4EFB\u52D9\u908A\u6B04","Configure the task gutter.":"\u914D\u7F6E\u4EFB\u52D9\u908A\u6B04\u3002","Enable task gutter":"\u555F\u7528\u4EFB\u52D9\u908A\u6B04","Toggle this to enable the task gutter.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u4EFB\u52D9\u908A\u6B04\u3002","Incomplete Task Mover":"\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Enable incomplete task mover":"\u555F\u7528\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5668","Toggle this to enable commands for moving incomplete tasks to another file.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u5C07\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u53E6\u4E00\u500B\u6587\u4EF6\u7684\u547D\u4EE4\u3002","Incomplete task marker type":"\u672A\u5B8C\u6210\u4EFB\u52D9\u6A19\u8A18\u985E\u578B","Choose what type of marker to add to moved incomplete tasks":"\u9078\u64C7\u70BA\u79FB\u52D5\u7684\u672A\u5B8C\u6210\u4EFB\u52D9\u6DFB\u52A0\u4EC0\u9EBC\u985E\u578B\u7684\u6A19\u8A18","Incomplete version marker text":"\u672A\u5B8C\u6210\u7248\u672C\u6A19\u8A18\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'version 1.0')":"\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9\u6642\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'version 1.0'\uFF09","Incomplete date marker text":"\u672A\u5B8C\u6210\u65E5\u671F\u6A19\u8A18\u6587\u672C","Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')":"\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9\u6642\u8981\u9644\u52A0\u7684\u6587\u672C\uFF08\u4F8B\u5982 'moved on 2023-12-31'\uFF09","Incomplete custom marker text":"\u672A\u5B8C\u6210\u81EA\u5B9A\u7FA9\u6A19\u8A18\u6587\u672C","With current file link for incomplete tasks":"\u70BA\u672A\u5B8C\u6210\u4EFB\u52D9\u6DFB\u52A0\u7576\u524D\u6587\u4EF6\u93C8\u63A5","A link to the current file will be added to the parent task of the moved incomplete tasks.":"\u5C07\u70BA\u79FB\u52D5\u7684\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u7236\u4EFB\u52D9\u6DFB\u52A0\u6307\u5411\u7576\u524D\u6587\u4EF6\u7684\u93C8\u63A5\u3002","Line Number":"\u884C\u865F","Clear Date":"\u6E05\u9664\u65E5\u671F","Copy view":"\u8907\u88FD\u8996\u5716","View copied successfully: ":"\u8996\u5716\u8907\u88FD\u6210\u529F\uFF1A","Copy of ":"\u526F\u672C ","Copy view: ":"\u8907\u88FD\u8996\u5716\uFF1A","Creating a copy based on: ":"\u57FA\u65BC\u4EE5\u4E0B\u5167\u5BB9\u5275\u5EFA\u526F\u672C\uFF1A","You can modify all settings below. The original view will remain unchanged.":"\u60A8\u53EF\u4EE5\u4FEE\u6539\u4E0B\u9762\u7684\u6240\u6709\u8A2D\u7F6E\u3002\u539F\u59CB\u8996\u5716\u5C07\u4FDD\u6301\u4E0D\u8B8A\u3002","Tasks Plugin Detected":"\u6AA2\u6E2C\u5230 Tasks \u63D2\u4EF6","Current status management and date management may conflict with the Tasks plugin. Please check the ":"\u7576\u524D\u7684\u72C0\u614B\u7BA1\u7406\u548C\u65E5\u671F\u7BA1\u7406\u53EF\u80FD\u8207 Tasks \u63D2\u4EF6\u885D\u7A81\u3002\u8ACB\u67E5\u770B","compatibility documentation":"\u517C\u5BB9\u6027\u6587\u6A94"," for more information.":"\u4EE5\u7372\u53D6\u66F4\u591A\u4FE1\u606F\u3002","Auto Date Manager":"\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u5668","Automatically manage dates based on task status changes":"\u6839\u64DA\u4EFB\u52D9\u72C0\u614B\u8B8A\u5316\u81EA\u52D5\u7BA1\u7406\u65E5\u671F","Enable auto date manager":"\u555F\u7528\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u5668","Toggle this to enable automatic date management when task status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5728\u4EFB\u52D9\u72C0\u614B\u66F4\u6539\u6642\u555F\u7528\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u3002\u65E5\u671F\u5C07\u6839\u64DA\u60A8\u9996\u9078\u7684\u5143\u6578\u64DA\u683C\u5F0F\uFF08Tasks \u8868\u60C5\u7B26\u865F\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u6DFB\u52A0/\u522A\u9664\u3002","Manage completion dates":"\u7BA1\u7406\u5B8C\u6210\u65E5\u671F","Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u5DF2\u5B8C\u6210\u6642\u81EA\u52D5\u6DFB\u52A0\u5B8C\u6210\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Manage start dates":"\u7BA1\u7406\u958B\u59CB\u65E5\u671F","Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u9032\u884C\u4E2D\u6642\u81EA\u52D5\u6DFB\u52A0\u958B\u59CB\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Manage cancelled dates":"\u7BA1\u7406\u53D6\u6D88\u65E5\u671F","Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.":"\u7576\u4EFB\u52D9\u6A19\u8A18\u70BA\u5DF2\u653E\u68C4\u6642\u81EA\u52D5\u6DFB\u52A0\u53D6\u6D88\u65E5\u671F\uFF0C\u7576\u66F4\u6539\u70BA\u5176\u4ED6\u72C0\u614B\u6642\u522A\u9664\u5B83\u5011\u3002","Copy View":"\u8907\u88FD\u8996\u5716",Beta:"\u6E2C\u8A66\u7248","Beta Test Features":"\u6E2C\u8A66\u7248\u529F\u80FD","Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.":"\u7576\u524D\u8655\u65BC\u6E2C\u8A66\u968E\u6BB5\u7684\u5BE6\u9A57\u6027\u529F\u80FD\u3002\u9019\u4E9B\u529F\u80FD\u53EF\u80FD\u4E0D\u7A69\u5B9A\uFF0C\u5728\u672A\u4F86\u7684\u66F4\u65B0\u4E2D\u53EF\u80FD\u6703\u767C\u751F\u8B8A\u5316\u6216\u88AB\u79FB\u9664\u3002","Beta Features Warning":"\u6E2C\u8A66\u7248\u529F\u80FD\u8B66\u544A","These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.":"\u9019\u4E9B\u529F\u80FD\u662F\u5BE6\u9A57\u6027\u7684\uFF0C\u53EF\u80FD\u4E0D\u7A69\u5B9A\u3002\u7531\u65BC Obsidian API \u8B8A\u5316\u6216\u5176\u4ED6\u56E0\u7D20\uFF0C\u5B83\u5011\u53EF\u80FD\u5728\u672A\u4F86\u7684\u66F4\u65B0\u4E2D\u767C\u751F\u91CD\u5927\u8B8A\u5316\u6216\u88AB\u79FB\u9664\u3002\u8ACB\u8B39\u614E\u4F7F\u7528\u4E26\u63D0\u4F9B\u53CD\u994B\u4EE5\u5E6B\u52A9\u6539\u9032\u9019\u4E9B\u529F\u80FD\u3002","Base View":"\u57FA\u790E\u8996\u5716","Advanced view management features that extend the default Task Genius views with additional functionality.":"\u64F4\u5C55\u9ED8\u8A8D Task Genius \u8996\u5716\u7684\u9AD8\u7D1A\u8996\u5716\u7BA1\u7406\u529F\u80FD\uFF0C\u63D0\u4F9B\u984D\u5916\u7684\u529F\u80FD\u3002","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.":"\u555F\u7528\u5BE6\u9A57\u6027\u57FA\u790E\u8996\u5716\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F37\u7684\u8996\u5716\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u6703\u53D7\u5230\u672A\u4F86 Obsidian API \u8B8A\u5316\u7684\u5F71\u97FF\u3002\u60A8\u53EF\u80FD\u9700\u8981\u91CD\u555F Obsidian \u624D\u80FD\u770B\u5230\u8B8A\u5316\u3002","You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature.":"\u5982\u679C\u60A8\u5DF2\u7D93\u5728\u57FA\u790E\u8996\u5716\u4E2D\u5275\u5EFA\u4E86\u4EFB\u52D9\u8996\u5716\uFF0C\u7576\u7981\u7528\u6B64\u529F\u80FD\u6642\uFF0C\u60A8\u9700\u8981\u95DC\u9589\u6240\u6709\u57FA\u790E\u8996\u5716\u4E26\u901A\u904E\u624B\u52D5\u7DE8\u8F2F\u522A\u9664\u672A\u4F7F\u7528\u7684\u8996\u5716\u3002","Enable Base View":"\u555F\u7528\u57FA\u790E\u8996\u5716","Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes.":"\u555F\u7528\u5BE6\u9A57\u6027\u57FA\u790E\u8996\u5716\u529F\u80FD\u3002\u6B64\u529F\u80FD\u63D0\u4F9B\u589E\u5F37\u7684\u8996\u5716\u7BA1\u7406\u80FD\u529B\uFF0C\u4F46\u53EF\u80FD\u6703\u53D7\u5230\u672A\u4F86 Obsidian API \u8B8A\u5316\u7684\u5F71\u97FF\u3002",Enable:"\u555F\u7528","Beta Feedback":"\u6E2C\u8A66\u7248\u53CD\u994B","Help improve these features by providing feedback on your experience.":"\u901A\u904E\u63D0\u4F9B\u60A8\u7684\u4F7F\u7528\u9AD4\u9A57\u53CD\u994B\u4F86\u5E6B\u52A9\u6539\u9032\u9019\u4E9B\u529F\u80FD\u3002","Report Issues":"\u5831\u544A\u554F\u984C","If you encounter any issues with beta features, please report them to help improve the plugin.":"\u5982\u679C\u60A8\u5728\u4F7F\u7528\u6E2C\u8A66\u7248\u529F\u80FD\u6642\u9047\u5230\u4EFB\u4F55\u554F\u984C\uFF0C\u8ACB\u5831\u544A\u5B83\u5011\u4EE5\u5E6B\u52A9\u6539\u9032\u63D2\u4EF6\u3002","Report Issue":"\u5831\u544A\u554F\u984C",Table:"\u8868\u683C","No Priority":"\u7121\u512A\u5148\u7D1A","Click to select date":"\u9EDE\u64CA\u9078\u64C7\u65E5\u671F","Enter tags separated by commas":"\u8F38\u5165\u6A19\u7C64\uFF0C\u7528\u9017\u865F\u5206\u9694","Enter project name":"\u8F38\u5165\u9805\u76EE\u540D\u7A31","Enter context":"\u8F38\u5165\u4E0A\u4E0B\u6587","Invalid value":"\u7121\u6548\u503C","No tasks":"\u7121\u4EFB\u52D9","1 task":"1 \u4EFB\u52D9",Columns:"\u5217","Toggle column visibility":"\u5207\u63DB\u5217\u53EF\u898B\u6027","Switch to List Mode":"\u5207\u63DB\u5230\u5217\u8868\u6A21\u5F0F","Switch to Tree Mode":"\u5207\u63DB\u5230\u6A39\u5F62\u6A21\u5F0F",Collapse:"\u647A\u758A",Expand:"\u5C55\u958B","Collapse subtasks":"\u647A\u758A\u5B50\u4EFB\u52D9","Expand subtasks":"\u5C55\u958B\u5B50\u4EFB\u52D9","Click to change status":"\u9EDE\u64CA\u66F4\u6539\u72C0\u614B","Click to set priority":"\u9EDE\u64CA\u8A2D\u7F6E\u512A\u5148\u7D1A",Yesterday:"\u6628\u5929","Click to edit date":"\u9EDE\u64CA\u7DE8\u8F2F\u65E5\u671F","No tags":"\u7121\u6A19\u7C64","Click to open file":"\u9EDE\u64CA\u6253\u958B\u6587\u4EF6","No tasks found":"\u672A\u627E\u5230\u4EFB\u52D9","Completed Date":"\u5B8C\u6210\u65E5\u671F","Loading...":"\u8F09\u5165\u4E2D...","Advanced Filtering":"\u9032\u968E\u904E\u6FFE\u5668","Use advanced multi-group filtering with complex conditions":"\u4F7F\u7528\u9032\u968E\u591A\u7D44\u904E\u6FFE\u5668\uFF0C\u652F\u63F4\u8907\u96DC\u689D\u4EF6","Auto-moved":"\u81EA\u52D5\u79FB\u52D5","tasks to":"\u4EFB\u52D9\u79FB\u81F3","Failed to auto-move tasks:":"\u81EA\u52D5\u79FB\u52D5\u4EFB\u52D9\u5931\u6557\uFF1A","Workflow created successfully":"\u5DE5\u4F5C\u6D41\u7A0B\u5EFA\u7ACB\u6210\u529F","No task structure found at cursor position":"\u5728\u6E38\u6A19\u4F4D\u7F6E\u672A\u627E\u5230\u4EFB\u52D9\u7D50\u69CB","Use similar existing workflow":"\u4F7F\u7528\u985E\u4F3C\u7684\u73FE\u6709\u5DE5\u4F5C\u6D41\u7A0B","Create new workflow":"\u5EFA\u7ACB\u65B0\u5DE5\u4F5C\u6D41\u7A0B","No workflows defined. Create a workflow first.":"\u5C1A\u672A\u5B9A\u7FA9\u4EFB\u4F55\u5DE5\u4F5C\u6D41\u7A0B\u3002\u8ACB\u5148\u5EFA\u7ACB\u4E00\u500B\u5DE5\u4F5C\u6D41\u7A0B\u3002","Workflow task created":"\u5DF2\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B\u4EFB\u52D9","Task converted to workflow root":"\u4EFB\u52D9\u5DF2\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Failed to convert task":"\u8F49\u63DB\u4EFB\u52D9\u5931\u6557","No workflows to duplicate":"\u6C92\u6709\u53EF\u8907\u88FD\u7684\u5DE5\u4F5C\u6D41\u7A0B",Duplicate:"\u8907\u88FD","Workflow duplicated and saved":"\u5DE5\u4F5C\u6D41\u7A0B\u5DF2\u8907\u88FD\u4E26\u5132\u5B58","Workflow created from task structure":"\u5DF2\u5F9E\u4EFB\u52D9\u7D50\u69CB\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Create Quick Workflow":"\u5FEB\u901F\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Convert Task to Workflow":"\u5C07\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B","Convert to Workflow Root":"\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Start Workflow Here":"\u5F9E\u6B64\u8655\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B","Duplicate Workflow":"\u8907\u88FD\u5DE5\u4F5C\u6D41\u7A0B","Simple Linear Workflow":"\u7C21\u55AE\u7DDA\u6027\u5DE5\u4F5C\u6D41\u7A0B","A basic linear workflow with sequential stages":"\u4E00\u500B\u5177\u6709\u9023\u7E8C\u968E\u6BB5\u7684\u57FA\u672C\u7DDA\u6027\u5DE5\u4F5C\u6D41\u7A0B","To Do":"\u5F85\u8FA6",Done:"\u5B8C\u6210","Project Management":"\u5C08\u6848\u7BA1\u7406",Coding:"\u7A0B\u5F0F\u958B\u767C","Research Process":"\u7814\u7A76\u6D41\u7A0B","Academic or professional research workflow":"\u5B78\u8853\u6216\u5C08\u696D\u7814\u7A76\u5DE5\u4F5C\u6D41\u7A0B","Literature Review":"\u6587\u737B\u56DE\u9867","Data Collection":"\u8CC7\u6599\u6536\u96C6",Analysis:"\u5206\u6790",Writing:"\u64B0\u5BEB",Published:"\u5DF2\u767C\u8868","Custom Workflow":"\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Create a custom workflow from scratch":"\u5F9E\u982D\u5EFA\u7ACB\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Quick Workflow Creation":"\u5FEB\u901F\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Workflow Template":"\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Choose a template to start with or create a custom workflow":"\u9078\u64C7\u7BC4\u672C\u958B\u59CB\uFF0C\u6216\u5EFA\u7ACB\u81EA\u8A02\u5DE5\u4F5C\u6D41\u7A0B","Workflow Name":"\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31","A descriptive name for your workflow":"\u70BA\u60A8\u7684\u5DE5\u4F5C\u6D41\u7A0B\u63D0\u4F9B\u63CF\u8FF0\u6027\u540D\u7A31","Enter workflow name":"\u8F38\u5165\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31","Unique identifier (auto-generated from name)":"\u552F\u4E00\u8B58\u5225\u78BC\uFF08\u7531\u540D\u7A31\u81EA\u52D5\u7522\u751F\uFF09","Optional description of the workflow purpose":"\uFF08\u9078\u586B\uFF09\u5DE5\u4F5C\u6D41\u7A0B\u7528\u9014\u63CF\u8FF0","Describe your workflow...":"\u63CF\u8FF0\u60A8\u7684\u5DE5\u4F5C\u6D41\u7A0B\u2026\u2026","Preview of workflow stages (edit after creation for advanced options)":"\u5DE5\u4F5C\u6D41\u7A0B\u968E\u6BB5\u9810\u89BD\uFF08\u5EFA\u7ACB\u5F8C\u53EF\u7DE8\u8F2F\u9032\u968E\u9078\u9805\uFF09","Add Stage":"\u65B0\u589E\u968E\u6BB5","No stages defined. Choose a template or add stages manually.":"\u5C1A\u672A\u5B9A\u7FA9\u4EFB\u4F55\u968E\u6BB5\u3002\u8ACB\u9078\u64C7\u7BC4\u672C\u6216\u624B\u52D5\u65B0\u589E\u968E\u6BB5\u3002","Remove stage":"\u79FB\u9664\u968E\u6BB5","Create Workflow":"\u5EFA\u7ACB\u5DE5\u4F5C\u6D41\u7A0B","Please provide a workflow name and ID":"\u8ACB\u63D0\u4F9B\u5DE5\u4F5C\u6D41\u7A0B\u540D\u7A31\u8207\u8B58\u5225\u78BC","Please add at least one stage to the workflow":"\u8ACB\u81F3\u5C11\u65B0\u589E\u4E00\u500B\u968E\u6BB5\u5230\u5DE5\u4F5C\u6D41\u7A0B",Discord:"Discord","Chat with us":"\u8207\u6211\u5011\u804A\u5929","Open Discord":"\u958B\u555F Discord","Task Genius icons are designed by":"Task Genius \u5716\u793A\u8A2D\u8A08\u8005\uFF1A","Task Genius Icons":"Task Genius \u5716\u793A","ICS Calendar Integration":"ICS \u884C\u4E8B\u66C6\u6574\u5408","Configure external calendar sources to display events in your task views.":"\u8A2D\u5B9A\u5916\u90E8\u884C\u4E8B\u66C6\u4F86\u6E90\u4EE5\u5728\u4EFB\u52D9\u8996\u5716\u4E2D\u986F\u793A\u4E8B\u4EF6\u3002","Add New Calendar Source":"\u65B0\u589E\u884C\u4E8B\u66C6\u4F86\u6E90","Global Settings":"\u5168\u57DF\u8A2D\u5B9A","Enable Background Refresh":"\u555F\u7528\u80CC\u666F\u5237\u65B0","Automatically refresh calendar sources in the background":"\u81EA\u52D5\u5728\u80CC\u666F\u5237\u65B0\u884C\u4E8B\u66C6\u4F86\u6E90","Global Refresh Interval":"\u5168\u57DF\u5237\u65B0\u9593\u9694","Default refresh interval for all sources (minutes)":"\u6240\u6709\u4F86\u6E90\u7684\u9810\u8A2D\u5237\u65B0\u9593\u9694\uFF08\u5206\u9418\uFF09","Maximum Cache Age":"\u5FEB\u53D6\u6700\u5927\u4FDD\u5B58\u6642\u9593","How long to keep cached data (hours)":"\u5FEB\u53D6\u8CC7\u6599\u4FDD\u5B58\u6642\u9577\uFF08\u5C0F\u6642\uFF09","Network Timeout":"\u7DB2\u8DEF\u903E\u6642","Request timeout in seconds":"\u8ACB\u6C42\u903E\u6642\uFF08\u79D2\uFF09","Max Events Per Source":"\u6BCF\u500B\u4F86\u6E90\u6700\u5927\u4E8B\u4EF6\u6578","Maximum number of events to load from each source":"\u6BCF\u500B\u4F86\u6E90\u53EF\u8F09\u5165\u7684\u6700\u5927\u4E8B\u4EF6\u6578","Default Event Color":"\u9810\u8A2D\u4E8B\u4EF6\u984F\u8272","Default color for events without a specific color":"\u7121\u6307\u5B9A\u984F\u8272\u4E8B\u4EF6\u7684\u9810\u8A2D\u984F\u8272","Calendar Sources":"\u884C\u4E8B\u66C6\u4F86\u6E90","No calendar sources configured. Add a source to get started.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u884C\u4E8B\u66C6\u4F86\u6E90\u3002\u8ACB\u65B0\u589E\u4F86\u6E90\u4EE5\u958B\u59CB\u4F7F\u7528\u3002","ICS Enabled":"ICS \u5DF2\u555F\u7528","ICS Disabled":"ICS \u5DF2\u505C\u7528",URL:"\u7DB2\u5740",Refresh:"\u5237\u65B0",min:"\u5206\u9418",Color:"\u984F\u8272","Edit this calendar source":"\u7DE8\u8F2F\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90",Sync:"\u540C\u6B65","Sync this calendar source now":"\u7ACB\u5373\u540C\u6B65\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90","Syncing...":"\u540C\u6B65\u4E2D\u2026\u2026","Sync completed successfully":"\u540C\u6B65\u6210\u529F\u5B8C\u6210","Sync failed: ":"\u540C\u6B65\u5931\u6557\uFF1A",Disable:"\u505C\u7528","Disable this source":"\u505C\u7528\u6B64\u4F86\u6E90","Enable this source":"\u555F\u7528\u6B64\u4F86\u6E90","Delete this calendar source":"\u522A\u9664\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90","Are you sure you want to delete this calendar source?":"\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90\u55CE\uFF1F","Edit ICS Source":"\u7DE8\u8F2F ICS \u4F86\u6E90","Add ICS Source":"\u65B0\u589E ICS \u4F86\u6E90","ICS Source Name":"ICS \u4F86\u6E90\u540D\u7A31","Display name for this calendar source":"\u6B64\u884C\u4E8B\u66C6\u4F86\u6E90\u7684\u986F\u793A\u540D\u7A31","My Calendar":"\u6211\u7684\u884C\u4E8B\u66C6","ICS URL":"ICS \u7DB2\u5740","URL to the ICS/iCal file":"ICS/iCal \u6A94\u6848\u7684\u7DB2\u5740","Whether this source is active":"\u6B64\u4F86\u6E90\u662F\u5426\u555F\u7528","Refresh Interval":"\u5237\u65B0\u9593\u9694","How often to refresh this source (minutes)":"\u6B64\u4F86\u6E90\u7684\u5237\u65B0\u983B\u7387\uFF08\u5206\u9418\uFF09","Color for events from this source (optional)":"\u6B64\u4F86\u6E90\u4E8B\u4EF6\u7684\u984F\u8272\uFF08\u9078\u586B\uFF09","Show Type":"\u986F\u793A\u985E\u578B","How to display events from this source in calendar views":"\u5982\u4F55\u5728\u884C\u4E8B\u66C6\u8996\u5716\u4E2D\u986F\u793A\u6B64\u4F86\u6E90\u7684\u4E8B\u4EF6",Event:"\u4E8B\u4EF6",Badge:"\u5FBD\u7AE0","Show All-Day Events":"\u986F\u793A\u5168\u5929\u4E8B\u4EF6","Include all-day events from this source":"\u5305\u542B\u6B64\u4F86\u6E90\u7684\u5168\u5929\u4E8B\u4EF6","Show Timed Events":"\u986F\u793A\u5B9A\u6642\u4E8B\u4EF6","Include timed events from this source":"\u5305\u542B\u6B64\u4F86\u6E90\u7684\u5B9A\u6642\u4E8B\u4EF6","Authentication (Optional)":"\u9A57\u8B49\uFF08\u9078\u586B\uFF09","Authentication Type":"\u9A57\u8B49\u985E\u578B","Type of authentication required":"\u6240\u9700\u9A57\u8B49\u985E\u578B","ICS Auth None":"\u7121 ICS \u9A57\u8B49","Basic Auth":"\u57FA\u672C\u9A57\u8B49","Bearer Token":"\u6301\u6709\u8005\u6B0A\u6756","Custom Headers":"\u81EA\u8A02\u6A19\u982D","Text Replacements":"\u6587\u5B57\u53D6\u4EE3","Configure rules to modify event text using regular expressions":"\u8A2D\u5B9A\u898F\u5247\u4EE5\u4F7F\u7528\u6B63\u5247\u8868\u9054\u5F0F\u4FEE\u6539\u4E8B\u4EF6\u6587\u5B57","No text replacement rules configured":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u6587\u5B57\u53D6\u4EE3\u898F\u5247",Enabled:"\u555F\u7528",Disabled:"\u505C\u7528",Target:"\u76EE\u6A19",Pattern:"\u6A21\u5F0F",Replacement:"\u53D6\u4EE3","Are you sure you want to delete this text replacement rule?":"\u78BA\u5B9A\u8981\u522A\u9664\u6B64\u6587\u5B57\u53D6\u4EE3\u898F\u5247\u55CE\uFF1F","Add Text Replacement Rule":"\u65B0\u589E\u6587\u5B57\u53D6\u4EE3\u898F\u5247","ICS Username":"ICS \u4F7F\u7528\u8005\u540D\u7A31","ICS Password":"ICS \u5BC6\u78BC","ICS Bearer Token":"ICS \u6B0A\u6756","JSON object with custom headers":"\u5305\u542B\u81EA\u8A02\u6A19\u982D\u7684 JSON \u7269\u4EF6","Holiday Configuration":"\u5047\u671F\u8A2D\u5B9A","Configure how holiday events are detected and displayed":"\u8A2D\u5B9A\u5982\u4F55\u5075\u6E2C\u8207\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Enable Holiday Detection":"\u555F\u7528\u5047\u671F\u5075\u6E2C","Automatically detect and group holiday events":"\u81EA\u52D5\u5075\u6E2C\u4E26\u5206\u7D44\u5047\u671F\u4E8B\u4EF6","Status Mapping":"\u72C0\u614B\u5C0D\u61C9","Configure how ICS events are mapped to task statuses":"\u8A2D\u5B9A ICS \u4E8B\u4EF6\u5982\u4F55\u5C0D\u61C9\u5230\u4EFB\u52D9\u72C0\u614B","Enable Status Mapping":"\u555F\u7528\u72C0\u614B\u5C0D\u61C9","Automatically map ICS events to specific task statuses":"\u81EA\u52D5\u5C07 ICS \u4E8B\u4EF6\u5C0D\u61C9\u5230\u7279\u5B9A\u4EFB\u52D9\u72C0\u614B","Grouping Strategy":"\u5206\u7D44\u7B56\u7565","How to handle consecutive holiday events":"\u5982\u4F55\u8655\u7406\u9023\u7E8C\u5047\u671F\u4E8B\u4EF6","Show All Events":"\u986F\u793A\u6240\u6709\u4E8B\u4EF6","Show First Day Only":"\u50C5\u986F\u793A\u7B2C\u4E00\u5929","Show Summary":"\u986F\u793A\u6458\u8981","Show First and Last":"\u986F\u793A\u9996\u65E5\u8207\u672B\u65E5","Maximum Gap Days":"\u6700\u5927\u9593\u9694\u5929\u6578","Maximum days between events to consider them consecutive":"\u8996\u70BA\u9023\u7E8C\u4E8B\u4EF6\u7684\u6700\u5927\u9593\u9694\u5929\u6578","Show in Forecast":"\u5728\u9810\u6E2C\u4E2D\u986F\u793A","Whether to show holiday events in forecast view":"\u662F\u5426\u5728\u9810\u6E2C\u8996\u5716\u4E2D\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Show in Calendar":"\u5728\u884C\u4E8B\u66C6\u4E2D\u986F\u793A","Whether to show holiday events in calendar view":"\u662F\u5426\u5728\u884C\u4E8B\u66C6\u8996\u5716\u4E2D\u986F\u793A\u5047\u671F\u4E8B\u4EF6","Detection Patterns":"\u5075\u6E2C\u6A21\u5F0F","Summary Patterns":"\u6458\u8981\u6A21\u5F0F","Regex patterns to match in event titles (one per line)":"\u4E8B\u4EF6\u6A19\u984C\u4E2D\u8981\u6BD4\u5C0D\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F\uFF08\u6BCF\u884C\u4E00\u500B\uFF09",Keywords:"\u95DC\u9375\u5B57","Keywords to detect in event text (one per line)":"\u4E8B\u4EF6\u6587\u5B57\u4E2D\u8981\u5075\u6E2C\u7684\u95DC\u9375\u5B57\uFF08\u6BCF\u884C\u4E00\u500B\uFF09",Categories:"\u5206\u985E","Event categories that indicate holidays (one per line)":"\u8868\u793A\u5047\u671F\u7684\u4E8B\u4EF6\u5206\u985E\uFF08\u6BCF\u884C\u4E00\u500B\uFF09","Group Display Format":"\u5206\u7D44\u986F\u793A\u683C\u5F0F","Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}":"\u5206\u7D44\u5047\u671F\u986F\u793A\u683C\u5F0F\u3002\u53EF\u7528 {title}\u3001{count}\u3001{startDate}\u3001{endDate}","Override ICS Status":"\u8986\u84CB ICS \u72C0\u614B","Override original ICS event status with mapped status":"\u4EE5\u5C0D\u61C9\u72C0\u614B\u8986\u84CB\u539F\u59CB ICS \u4E8B\u4EF6\u72C0\u614B","Timing Rules":"\u6642\u9593\u898F\u5247","Past Events Status":"\u904E\u53BB\u4E8B\u4EF6\u72C0\u614B","Status for events that have already ended":"\u5DF2\u7D50\u675F\u4E8B\u4EF6\u7684\u72C0\u614B","Status Incomplete":"\u672A\u5B8C\u6210\u72C0\u614B","Status Complete":"\u5DF2\u5B8C\u6210\u72C0\u614B","Status Cancelled":"\u5DF2\u53D6\u6D88\u72C0\u614B","Status In Progress":"\u9032\u884C\u4E2D\u72C0\u614B","Status Question":"\u7591\u554F\u72C0\u614B","Current Events Status":"\u7576\u524D\u4E8B\u4EF6\u72C0\u614B","Status for events happening today":"\u4ECA\u65E5\u4E8B\u4EF6\u7684\u72C0\u614B","Future Events Status":"\u672A\u4F86\u4E8B\u4EF6\u72C0\u614B","Status for events in the future":"\u672A\u4F86\u4E8B\u4EF6\u7684\u72C0\u614B","Property Rules":"\u5C6C\u6027\u898F\u5247","Optional rules based on event properties (higher priority than timing rules)":"\u6839\u64DA\u4E8B\u4EF6\u5C6C\u6027\u7684\u9078\u7528\u898F\u5247\uFF08\u512A\u5148\u65BC\u6642\u9593\u898F\u5247\uFF09","Holiday Status":"\u5047\u671F\u72C0\u614B","Status for events detected as holidays":"\u5075\u6E2C\u70BA\u5047\u671F\u7684\u4E8B\u4EF6\u72C0\u614B","Use timing rules":"\u4F7F\u7528\u6642\u9593\u898F\u5247","Category Mapping":"\u5206\u985E\u5C0D\u61C9","Map specific categories to statuses (format: category:status, one per line)":"\u5C07\u7279\u5B9A\u5206\u985E\u5C0D\u61C9\u5230\u72C0\u614B\uFF08\u683C\u5F0F\uFF1A\u5206\u985E:\u72C0\u614B\uFF0C\u6BCF\u884C\u4E00\u7D44\uFF09","Please enter a name for the source":"\u8ACB\u8F38\u5165\u4F86\u6E90\u540D\u7A31","Please enter a URL for the source":"\u8ACB\u8F38\u5165\u4F86\u6E90\u7684\u7DB2\u5740","Please enter a valid URL":"\u8ACB\u8F38\u5165\u6709\u6548\u7684\u7DB2\u5740","Edit Text Replacement Rule":"\u7DE8\u8F2F\u6587\u5B57\u53D6\u4EE3\u898F\u5247","Rule Name":"\u898F\u5247\u540D\u7A31","Descriptive name for this replacement rule":"\u6B64\u53D6\u4EE3\u898F\u5247\u7684\u63CF\u8FF0\u6027\u540D\u7A31","Remove Meeting Prefix":"\u79FB\u9664\u6703\u8B70\u524D\u7DB4","Whether this rule is active":"\u6B64\u898F\u5247\u662F\u5426\u555F\u7528","Target Field":"\u76EE\u6A19\u6B04\u4F4D","Which field to apply the replacement to":"\u8981\u5957\u7528\u53D6\u4EE3\u7684\u6B04\u4F4D","Summary/Title":"\u6458\u8981\uFF0F\u6A19\u984C",Location:"\u5730\u9EDE","All Fields":"\u6240\u6709\u6B04\u4F4D","Pattern (Regular Expression)":"\u6A21\u5F0F\uFF08\u6B63\u5247\u8868\u9054\u5F0F\uFF09","Regular expression pattern to match. Use parentheses for capture groups.":"\u8981\u6BD4\u5C0D\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F\u3002\u4F7F\u7528\u62EC\u865F\u5EFA\u7ACB\u64F7\u53D6\u7FA4\u7D44\u3002","Text to replace matches with. Use $1, $2, etc. for capture groups.":"\u7528\u65BC\u53D6\u4EE3\u6BD4\u5C0D\u5167\u5BB9\u7684\u6587\u5B57\u3002\u53EF\u7528 $1\u3001$2 \u7B49\u4EE3\u8868\u64F7\u53D6\u7FA4\u7D44\u3002","Regex Flags":"\u6B63\u5247\u6A19\u8A8C","Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)":"\u6B63\u5247\u8868\u9054\u5F0F\u6A19\u8A8C\uFF08\u5982 'g' \u4EE3\u8868\u5168\u57DF\uFF0C'i' \u4EE3\u8868\u4E0D\u5206\u5927\u5C0F\u5BEB\uFF09",Examples:"\u7BC4\u4F8B","Remove prefix":"\u79FB\u9664\u524D\u7DB4","Replace room numbers":"\u53D6\u4EE3\u623F\u9593\u865F\u78BC","Swap words":"\u4EA4\u63DB\u55AE\u5B57","Test Rule":"\u6E2C\u8A66\u898F\u5247","Output: ":"\u8F38\u51FA\uFF1A","Test Input":"\u6E2C\u8A66\u8F38\u5165","Enter text to test the replacement rule":"\u8F38\u5165\u6587\u5B57\u4EE5\u6E2C\u8A66\u53D6\u4EE3\u898F\u5247","Please enter a name for the rule":"\u8ACB\u8F38\u5165\u898F\u5247\u540D\u7A31","Please enter a pattern":"\u8ACB\u8F38\u5165\u6A21\u5F0F","Invalid regular expression pattern":"\u7121\u6548\u7684\u6B63\u5247\u8868\u9054\u5F0F\u6A21\u5F0F","Enhanced Project Configuration":"\u9032\u968E\u5C08\u6848\u8A2D\u5B9A","Configure advanced project detection and management features":"\u8A2D\u5B9A\u9032\u968E\u5C08\u6848\u5075\u6E2C\u8207\u7BA1\u7406\u529F\u80FD","Enable enhanced project features":"\u555F\u7528\u9032\u968E\u5C08\u6848\u529F\u80FD","Enable path-based, metadata-based, and config file-based project detection":"\u555F\u7528\u57FA\u65BC\u8DEF\u5F91\u3001\u4E2D\u7E7C\u8CC7\u6599\u8207\u8A2D\u5B9A\u6A94\u7684\u5C08\u6848\u5075\u6E2C","Path-based Project Mappings":"\u8DEF\u5F91\u5C08\u6848\u5C0D\u61C9","Configure project names based on file paths":"\u6839\u64DA\u6A94\u6848\u8DEF\u5F91\u8A2D\u5B9A\u5C08\u6848\u540D\u7A31","No path mappings configured yet.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u8DEF\u5F91\u5C0D\u61C9\u3002",Mapping:"\u5C0D\u61C9","Path pattern (e.g., Projects/Work)":"\u8DEF\u5F91\u6A21\u5F0F\uFF08\u4F8B\u5982\uFF1AProjects/Work\uFF09","Add Path Mapping":"\u65B0\u589E\u8DEF\u5F91\u5C0D\u61C9","Metadata-based Project Configuration":"\u4E2D\u7E7C\u8CC7\u6599\u5C08\u6848\u8A2D\u5B9A","Configure project detection from file frontmatter":"\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u5075\u6E2C\u5C08\u6848","Enable metadata project detection":"\u555F\u7528\u4E2D\u7E7C\u8CC7\u6599\u5C08\u6848\u5075\u6E2C","Detect project from file frontmatter metadata":"\u5F9E\u6A94\u6848\u524D\u7F6E\u4E2D\u7E7C\u8CC7\u6599\u5075\u6E2C\u5C08\u6848","Metadata key":"\u4E2D\u7E7C\u8CC7\u6599\u9375","The frontmatter key to use for project name":"\u7528\u65BC\u5C08\u6848\u540D\u7A31\u7684\u524D\u7F6E\u8CC7\u6599\u9375","Inherit other metadata fields from file frontmatter":"\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F\u5176\u4ED6\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata.":"\u5141\u8A31\u5B50\u4EFB\u52D9\u5F9E\u6A94\u6848\u524D\u7F6E\u8CC7\u6599\u7E7C\u627F\u4E2D\u7E7C\u8CC7\u6599\u3002\u505C\u7528\u6642\uFF0C\u50C5\u9802\u5C64\u4EFB\u52D9\u6703\u7E7C\u627F\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u3002","Project Configuration File":"\u5C08\u6848\u8A2D\u5B9A\u6A94","Configure project detection from project config files":"\u5F9E\u5C08\u6848\u8A2D\u5B9A\u6A94\u5075\u6E2C\u5C08\u6848","Enable config file project detection":"\u555F\u7528\u8A2D\u5B9A\u6A94\u5C08\u6848\u5075\u6E2C","Detect project from project configuration files":"\u5F9E\u5C08\u6848\u8A2D\u5B9A\u6A94\u5075\u6E2C\u5C08\u6848","Config file name":"\u8A2D\u5B9A\u6A94\u540D\u7A31","Name of the project configuration file":"\u5C08\u6848\u8A2D\u5B9A\u6A94\u540D\u7A31","Search recursively":"\u905E\u8FF4\u641C\u5C0B","Search for config files in parent directories":"\u5728\u4E0A\u5C64\u76EE\u9304\u4E2D\u641C\u5C0B\u8A2D\u5B9A\u6A94","Metadata Mappings":"\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9","Configure how metadata fields are mapped and transformed":"\u8A2D\u5B9A\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u7684\u5C0D\u61C9\u8207\u8F49\u63DB\u65B9\u5F0F","No metadata mappings configured yet.":"\u5C1A\u672A\u8A2D\u5B9A\u4EFB\u4F55\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9\u3002","Source key (e.g., proj)":"\u4F86\u6E90\u9375\uFF08\u4F8B\u5982\uFF1Aproj\uFF09","Select target field":"\u9078\u64C7\u76EE\u6A19\u6B04\u4F4D","Add Metadata Mapping":"\u65B0\u589E\u4E2D\u7E7C\u8CC7\u6599\u5C0D\u61C9","Default Project Naming":"\u9810\u8A2D\u5C08\u6848\u547D\u540D","Configure fallback project naming when no explicit project is found":"\u7576\u672A\u627E\u5230\u660E\u78BA\u5C08\u6848\u6642\u8A2D\u5B9A\u5099\u7528\u5C08\u6848\u547D\u540D","Enable default project naming":"\u555F\u7528\u9810\u8A2D\u5C08\u6848\u547D\u540D","Use default naming strategy when no project is explicitly defined":"\u7576\u672A\u660E\u78BA\u5B9A\u7FA9\u5C08\u6848\u6642\u4F7F\u7528\u9810\u8A2D\u547D\u540D\u7B56\u7565","Naming strategy":"\u547D\u540D\u7B56\u7565","Strategy for generating default project names":"\u7522\u751F\u9810\u8A2D\u5C08\u6848\u540D\u7A31\u7684\u7B56\u7565","Use filename":"\u4F7F\u7528\u6A94\u540D","Use folder name":"\u4F7F\u7528\u8CC7\u6599\u593E\u540D\u7A31","Use metadata field":"\u4F7F\u7528\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Metadata field to use as project name":"\u7528\u4F5C\u5C08\u6848\u540D\u7A31\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Enter metadata key (e.g., project-name)":"\u8F38\u5165\u4E2D\u7E7C\u8CC7\u6599\u9375\uFF08\u4F8B\u5982\uFF1Aproject-name\uFF09","Strip file extension":"\u79FB\u9664\u526F\u6A94\u540D","Remove file extension from filename when using as project name":"\u5C07\u6A94\u540D\u4F5C\u70BA\u5C08\u6848\u540D\u7A31\u6642\u79FB\u9664\u526F\u6A94\u540D","Target type":"\u76EE\u6A19\u985E\u578B","Choose whether to capture to a fixed file or daily note":"\u9078\u64C7\u8981\u5132\u5B58\u5230\u56FA\u5B9A\u6A94\u6848\u6216\u6BCF\u65E5\u7B46\u8A18","Fixed file":"\u56FA\u5B9A\u6A94\u6848","Daily note":"\u6BCF\u65E5\u7B46\u8A18","The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}":"\u5132\u5B58\u64F7\u53D6\u5167\u5BB9\u7684\u6A94\u6848\u3002\u53EF\u5305\u542B\u8DEF\u5F91\uFF0C\u4F8B\u5982 'folder/Quick Capture.md'\u3002\u652F\u63F4\u65E5\u671F\u6A21\u677F\u5982 {{DATE:YYYY-MM-DD}} \u6216 {{date:YYYY-MM-DD-HHmm}}","Sync with Daily Notes plugin":"\u8207\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u540C\u6B65","Automatically sync settings from the Daily Notes plugin":"\u81EA\u52D5\u5F9E\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u540C\u6B65\u8A2D\u5B9A","Sync now":"\u7ACB\u5373\u540C\u6B65","Daily notes settings synced successfully":"\u6BCF\u65E5\u7B46\u8A18\u8A2D\u5B9A\u540C\u6B65\u6210\u529F","Daily Notes plugin is not enabled":"\u6BCF\u65E5\u7B46\u8A18\u5916\u639B\u672A\u555F\u7528","Failed to sync daily notes settings":"\u6BCF\u65E5\u7B46\u8A18\u8A2D\u5B9A\u540C\u6B65\u5931\u6557","Date format for daily notes (e.g., YYYY-MM-DD)":"\u6BCF\u65E5\u7B46\u8A18\u7684\u65E5\u671F\u683C\u5F0F\uFF08\u4F8B\u5982\uFF1AYYYY-MM-DD\uFF09","Daily note folder":"\u6BCF\u65E5\u7B46\u8A18\u8CC7\u6599\u593E","Folder path for daily notes (leave empty for root)":"\u6BCF\u65E5\u7B46\u8A18\u7684\u8CC7\u6599\u593E\u8DEF\u5F91\uFF08\u7559\u7A7A\u5247\u70BA\u6839\u76EE\u9304\uFF09","Daily note template":"\u6BCF\u65E5\u7B46\u8A18\u6A21\u677F","Template file path for new daily notes (optional)":"\u65B0\u6BCF\u65E5\u7B46\u8A18\u7684\u6A21\u677F\u6A94\u6848\u8DEF\u5F91\uFF08\u53EF\u9078\uFF09","Target heading":"\u76EE\u6A19\u6A19\u984C","Optional heading to append content under (leave empty to append to file)":"\u53EF\u9078\u7684\u6A19\u984C\uFF0C\u5C07\u5167\u5BB9\u9644\u52A0\u65BC\u5176\u4E0B\uFF08\u7559\u7A7A\u5247\u9644\u52A0\u81F3\u6A94\u6848\u672B\u5C3E\uFF09","How to add captured content to the target location":"\u5982\u4F55\u5C07\u64F7\u53D6\u5167\u5BB9\u52A0\u5165\u76EE\u6A19\u4F4D\u7F6E",Append:"\u9644\u52A0",Prepend:"\u524D\u7F6E",Replace:"\u53D6\u4EE3","Enable auto-move for completed tasks":"\u555F\u7528\u81EA\u52D5\u79FB\u52D5\u5DF2\u5B8C\u6210\u4EFB\u52D9","Automatically move completed tasks to a default file without manual selection.":"\u81EA\u52D5\u5C07\u5DF2\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848\uFF0C\u7121\u9700\u624B\u52D5\u9078\u64C7\u3002","Default target file":"\u9810\u8A2D\u76EE\u6A19\u6A94\u6848","Default file to move completed tasks to (e.g., 'Archive.md')":"\u5DF2\u5B8C\u6210\u4EFB\u52D9\u9810\u8A2D\u79FB\u52D5\u5230\u7684\u6A94\u6848\uFF08\u4F8B\u5982\uFF1A'Archive.md'\uFF09","Default insertion mode":"\u9810\u8A2D\u63D2\u5165\u6A21\u5F0F","Where to insert completed tasks in the target file":"\u5728\u76EE\u6A19\u6A94\u6848\u4E2D\u63D2\u5165\u5DF2\u5B8C\u6210\u4EFB\u52D9\u7684\u4F4D\u7F6E","Default heading name":"\u9810\u8A2D\u6A19\u984C\u540D\u7A31","Heading name to insert tasks after (will be created if it doesn't exist)":"\u63D2\u5165\u4EFB\u52D9\u5F8C\u7684\u6A19\u984C\u540D\u7A31\uFF08\u82E5\u4E0D\u5B58\u5728\u5247\u81EA\u52D5\u5EFA\u7ACB\uFF09","Enable auto-move for incomplete tasks":"\u555F\u7528\u81EA\u52D5\u79FB\u52D5\u672A\u5B8C\u6210\u4EFB\u52D9","Automatically move incomplete tasks to a default file without manual selection.":"\u81EA\u52D5\u5C07\u672A\u5B8C\u6210\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848\uFF0C\u7121\u9700\u624B\u52D5\u9078\u64C7\u3002","Default target file for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u76EE\u6A19\u6A94\u6848","Default file to move incomplete tasks to (e.g., 'Backlog.md')":"\u672A\u5B8C\u6210\u4EFB\u52D9\u9810\u8A2D\u79FB\u52D5\u5230\u7684\u6A94\u6848\uFF08\u4F8B\u5982\uFF1A'Backlog.md'\uFF09","Default insertion mode for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u63D2\u5165\u6A21\u5F0F","Where to insert incomplete tasks in the target file":"\u5728\u76EE\u6A19\u6A94\u6848\u4E2D\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u4F4D\u7F6E","Default heading name for incomplete tasks":"\u672A\u5B8C\u6210\u4EFB\u52D9\u7684\u9810\u8A2D\u6A19\u984C\u540D\u7A31","Heading name to insert incomplete tasks after (will be created if it doesn't exist)":"\u63D2\u5165\u672A\u5B8C\u6210\u4EFB\u52D9\u5F8C\u7684\u6A19\u984C\u540D\u7A31\uFF08\u82E5\u4E0D\u5B58\u5728\u5247\u81EA\u52D5\u5EFA\u7ACB\uFF09","Other settings":"\u5176\u4ED6\u8A2D\u5B9A","Use Task Genius icons":"\u4F7F\u7528 Task Genius \u5716\u793A","Use Task Genius icons for task statuses":"\u4EFB\u52D9\u72C0\u614B\u4F7F\u7528 Task Genius \u5716\u793A","Timeline Sidebar":"\u6642\u9593\u8EF8\u5074\u908A\u6B04","Enable Timeline Sidebar":"\u555F\u7528\u6642\u9593\u8EF8\u5074\u908A\u6B04","Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u6642\u9593\u8EF8\u5074\u908A\u6B04\uFF0C\u5FEB\u901F\u5B58\u53D6\u6BCF\u65E5\u4E8B\u4EF6\u8207\u4EFB\u52D9\u3002","Auto-open on startup":"\u555F\u52D5\u6642\u81EA\u52D5\u958B\u555F","Automatically open the timeline sidebar when Obsidian starts.":"Obsidian \u555F\u52D5\u6642\u81EA\u52D5\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04\u3002","Show completed tasks":"\u986F\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9","Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.":"\u5728\u6642\u9593\u8EF8\u4E2D\u986F\u793A\u5DF2\u5B8C\u6210\u4EFB\u52D9\u3002\u505C\u7528\u6642\u50C5\u986F\u793A\u672A\u5B8C\u6210\u4EFB\u52D9\u3002","Focus mode by default":"\u9810\u8A2D\u555F\u7528\u5C08\u6CE8\u6A21\u5F0F","Enable focus mode by default, which highlights today's events and dims past/future events.":"\u9810\u8A2D\u555F\u7528\u5C08\u6CE8\u6A21\u5F0F\uFF0C\u7A81\u986F\u4ECA\u65E5\u4E8B\u4EF6\u4E26\u6DE1\u5316\u904E\u53BB\uFF0F\u672A\u4F86\u4E8B\u4EF6\u3002","Maximum events to show":"\u986F\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6578","Maximum number of events to display in the timeline. Higher numbers may affect performance.":"\u6642\u9593\u8EF8\u4E2D\u986F\u793A\u7684\u6700\u5927\u4E8B\u4EF6\u6578\u3002\u6578\u5B57\u8D8A\u5927\u53EF\u80FD\u5F71\u97FF\u6548\u80FD\u3002","Open Timeline Sidebar":"\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04","Click to open the timeline sidebar view.":"\u9EDE\u64CA\u4EE5\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04\u3002","Open Timeline":"\u958B\u555F\u6642\u9593\u8EF8","Timeline sidebar opened":"\u5DF2\u958B\u555F\u6642\u9593\u8EF8\u5074\u908A\u6B04","Task Parser Configuration":"\u4EFB\u52D9\u89E3\u6790\u5668\u8A2D\u5B9A","Configure how task metadata is parsed and recognized.":"\u8A2D\u5B9A\u5982\u4F55\u89E3\u6790\u8207\u8B58\u5225\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u3002","Project tag prefix":"\u5C08\u6848\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u5C08\u6848\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [project:: myproject] \u7684 'project'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.":"\u81EA\u8A02\u5C08\u6848\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 #project/myproject \u7684 'project'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Context tag prefix":"\u60C5\u5883\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u60C5\u5883\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [context:: home] \u7684 'context'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.":"\u81EA\u8A02\u60C5\u5883\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 @home\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Area tag prefix":"\u9818\u57DF\u6A19\u7C64\u524D\u7DB4","Customize the prefix used for area tags in dataview format (e.g., 'area' for [area:: work]). Changes require reindexing.":"\u81EA\u8A02 dataview \u683C\u5F0F\u9818\u57DF\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 [area:: work] \u7684 'area'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Customize the prefix used for area tags (e.g., 'area' for #area/work). Changes require reindexing.":"\u81EA\u8A02\u9818\u57DF\u6A19\u7C64\u7684\u524D\u7DB4\uFF08\u5982 #area/work \u7684 'area'\uFF09\u3002\u66F4\u6539\u5F8C\u9700\u91CD\u65B0\u7D22\u5F15\u3002","Format Examples:":"\u683C\u5F0F\u7BC4\u4F8B\uFF1A",Area:"\u9818\u57DF","always uses @ prefix":"\u4E00\u5F8B\u4F7F\u7528 @ \u524D\u7DB4","File Parsing Configuration":"\u6A94\u6848\u89E3\u6790\u8A2D\u5B9A","Configure how to extract tasks from file metadata and tags.":"\u8A2D\u5B9A\u5982\u4F55\u5F9E\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u8207\u6A19\u7C64\u64F7\u53D6\u4EFB\u52D9\u3002","Enable file metadata parsing":"\u555F\u7528\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u89E3\u6790","Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.":"\u5F9E\u6A94\u6848\u524D\u7F6E\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u89E3\u6790\u4EFB\u52D9\u3002\u555F\u7528\u5F8C\uFF0C\u5177\u6709\u7279\u5B9A\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u7684\u6A94\u6848\u5C07\u8996\u70BA\u4EFB\u52D9\u3002","File metadata parsing enabled. Rebuilding task index...":"\u5DF2\u555F\u7528\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u89E3\u6790\u3002\u6B63\u5728\u91CD\u5EFA\u4EFB\u52D9\u7D22\u5F15\u2026\u2026","Task index rebuilt successfully":"\u4EFB\u52D9\u7D22\u5F15\u91CD\u5EFA\u6210\u529F","Failed to rebuild task index":"\u4EFB\u52D9\u7D22\u5F15\u91CD\u5EFA\u5931\u6557","Metadata fields to parse as tasks":"\u8981\u89E3\u6790\u70BA\u4EFB\u52D9\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D","Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)":"\u4EE5\u9017\u865F\u5206\u9694\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u6E05\u55AE\uFF0C\u9019\u4E9B\u6B04\u4F4D\u5C07\u8996\u70BA\u4EFB\u52D9\uFF08\u4F8B\u5982\uFF1AdueDate, todo, complete, task\uFF09","Task content from metadata":"\u4EFB\u52D9\u5167\u5BB9\u4F86\u6E90\u4E2D\u7E7C\u8CC7\u6599","Which metadata field to use as task content. If not found, will use filename.":"\u7528\u4F5C\u4EFB\u52D9\u5167\u5BB9\u7684\u4E2D\u7E7C\u8CC7\u6599\u6B04\u4F4D\u3002\u82E5\u627E\u4E0D\u5230\u5247\u4F7F\u7528\u6A94\u540D\u3002","Default task status":"\u9810\u8A2D\u4EFB\u52D9\u72C0\u614B","Default status for tasks created from metadata (space for incomplete, x for complete)":"\u7531\u4E2D\u7E7C\u8CC7\u6599\u5EFA\u7ACB\u4EFB\u52D9\u7684\u9810\u8A2D\u72C0\u614B\uFF08\u7A7A\u683C\u4EE3\u8868\u672A\u5B8C\u6210\uFF0Cx \u4EE3\u8868\u5DF2\u5B8C\u6210\uFF09","Enable tag-based task parsing":"\u555F\u7528\u6A19\u7C64\u5F0F\u4EFB\u52D9\u89E3\u6790","Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.":"\u5F9E\u6A94\u6848\u6A19\u7C64\u89E3\u6790\u4EFB\u52D9\u3002\u555F\u7528\u5F8C\uFF0C\u5177\u6709\u7279\u5B9A\u6A19\u7C64\u7684\u6A94\u6848\u5C07\u8996\u70BA\u4EFB\u52D9\u3002","Tags to parse as tasks":"\u8981\u89E3\u6790\u70BA\u4EFB\u52D9\u7684\u6A19\u7C64","Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)":"\u4EE5\u9017\u865F\u5206\u9694\u7684\u6A19\u7C64\u6E05\u55AE\uFF0C\u9019\u4E9B\u6A19\u7C64\u5C07\u8996\u70BA\u4EFB\u52D9\uFF08\u4F8B\u5982\uFF1A#todo, #task, #action, #due\uFF09","Enable worker processing":"\u555F\u7528\u80CC\u666F\u8655\u7406","Use background worker for file parsing to improve performance. Recommended for large vaults.":"\u4F7F\u7528\u80CC\u666F\u8655\u7406\u63D0\u5347\u6A94\u6848\u89E3\u6790\u6548\u80FD\u3002\u5EFA\u8B70\u5927\u578B\u8CC7\u6599\u5EAB\u555F\u7528\u3002","Enable inline editor":"\u555F\u7528\u884C\u5167\u7DE8\u8F2F\u5668","Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.":"\u5728\u4EFB\u52D9\u6AA2\u8996\u4E2D\u76F4\u63A5\u884C\u5167\u7DE8\u8F2F\u4EFB\u52D9\u5167\u5BB9\u8207\u4E2D\u7E7C\u8CC7\u6599\u3002\u505C\u7528\u6642\u50C5\u80FD\u5728\u539F\u59CB\u6A94\u6848\u7DE8\u8F2F\u4EFB\u52D9\u3002","Auto-assigned from path":"\u81EA\u52D5\u5F9E\u8DEF\u5F91\u5206\u914D","Auto-assigned from file metadata":"\u81EA\u52D5\u5F9E\u6A94\u6848\u4E2D\u7E7C\u8CC7\u6599\u5206\u914D","Auto-assigned from config file":"\u81EA\u52D5\u5F9E\u8A2D\u5B9A\u6A94\u5206\u914D","Auto-assigned":"\u81EA\u52D5\u5206\u914D","This project is automatically assigned and cannot be changed":"\u6B64\u5C08\u6848\u70BA\u81EA\u52D5\u5206\u914D\uFF0C\u7121\u6CD5\u66F4\u6539","You can override the auto-assigned project by entering a different value":"\u60A8\u53EF\u4EE5\u8F38\u5165\u4E0D\u540C\u7684\u503C\u4F86\u8986\u84CB\u81EA\u52D5\u5206\u914D\u7684\u5C08\u6848","Auto from path":"\u81EA\u52D5\u5F9E\u8DEF\u5F91\u7372\u53D6","Auto from metadata":"\u81EA\u52D5\u5F9E\u4E2D\u7E7C\u8CC7\u6599\u7372\u53D6","Auto from config":"\u81EA\u52D5\u5F9E\u8A2D\u5B9A\u6A94\u7372\u53D6","You can override the auto-assigned project":"\u60A8\u53EF\u4EE5\u8986\u84CB\u81EA\u52D5\u5206\u914D\u7684\u5C08\u6848",Timeline:"\u6642\u9593\u8EF8","Go to today":"\u8DF3\u81F3\u4ECA\u5929","Focus on today":"\u805A\u7126\u4ECA\u5929","What do you want to do today?":"\u4F60\u4ECA\u5929\u60F3\u505A\u4EC0\u9EBC\uFF1F","More options":"\u66F4\u591A\u9078\u9805","No events to display":"\u6C92\u6709\u53EF\u986F\u793A\u7684\u4E8B\u4EF6","Go to task":"\u524D\u5F80\u4EFB\u52D9",to:"\u81F3","Hide weekends":"\u96B1\u85CF\u9031\u672B","Hide weekend columns (Saturday and Sunday) in calendar views.":"\u5728\u65E5\u66C6\u8996\u5716\u4E2D\u96B1\u85CF\u9031\u672B\u6B04\uFF08\u661F\u671F\u516D\u548C\u661F\u671F\u65E5\uFF09\u3002","Hide weekend columns (Saturday and Sunday) in forecast calendar.":"\u5728\u9810\u6E2C\u65E5\u66C6\u4E2D\u96B1\u85CF\u9031\u672B\u6B04\uFF08\u661F\u671F\u516D\u548C\u661F\u671F\u65E5\uFF09\u3002",Repeatable:"\u53EF\u91CD\u8907",Final:"\u6700\u7D42",Sequential:"\u4F9D\u5E8F","Current: ":"\u7576\u524D\uFF1A",completed:"\u5DF2\u5B8C\u6210","Convert to workflow template":"\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Start workflow here":"\u5F9E\u6B64\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B","Create quick workflow":"\u5EFA\u7ACB\u5FEB\u901F\u5DE5\u4F5C\u6D41\u7A0B","Workflow not found":"\u627E\u4E0D\u5230\u5DE5\u4F5C\u6D41\u7A0B","Stage not found":"\u627E\u4E0D\u5230\u968E\u6BB5","Current stage":"\u7576\u524D\u968E\u6BB5",Type:"\u985E\u578B",Next:"\u4E0B\u4E00\u6B65","Start workflow":"\u958B\u59CB\u5DE5\u4F5C\u6D41\u7A0B",Continue:"\u7E7C\u7E8C","Complete substage and move to":"\u5B8C\u6210\u5B50\u968E\u6BB5\u4E26\u79FB\u81F3","Add new task":"\u65B0\u589E\u4EFB\u52D9","Add new sub-task":"\u65B0\u589E\u5B50\u4EFB\u52D9","Auto-move completed subtasks to default file":"\u81EA\u52D5\u5C07\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move direct completed subtasks to default file":"\u81EA\u52D5\u5C07\u76F4\u63A5\u5DF2\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move all subtasks to default file":"\u81EA\u52D5\u5C07\u6240\u6709\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move incomplete subtasks to default file":"\u81EA\u52D5\u5C07\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Auto-move direct incomplete subtasks to default file":"\u81EA\u52D5\u5C07\u76F4\u63A5\u672A\u5B8C\u6210\u7684\u5B50\u4EFB\u52D9\u79FB\u52D5\u5230\u9810\u8A2D\u6A94\u6848","Convert task to workflow template":"\u5C07\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u7BC4\u672C","Convert current task to workflow root":"\u5C07\u7576\u524D\u4EFB\u52D9\u8F49\u63DB\u70BA\u5DE5\u4F5C\u6D41\u7A0B\u6839\u7BC0\u9EDE","Duplicate workflow":"\u8907\u88FD\u5DE5\u4F5C\u6D41\u7A0B","Workflow quick actions":"\u5DE5\u4F5C\u6D41\u7A0B\u5FEB\u901F\u64CD\u4F5C","Views & Index":"\u8996\u5716\u8207\u7D22\u5F15","Progress Display":"\u9032\u5EA6\u986F\u793A",Workflows:"\u5DE5\u4F5C\u6D41\u7A0B","Dates & Priority":"\u65E5\u671F\u8207\u512A\u5148\u7D1A",Habits:"\u7FD2\u6163","Calendar Sync":"\u65E5\u66C6\u540C\u6B65","Beta Features":"\u6E2C\u8A66\u529F\u80FD","Core Settings":"\u6838\u5FC3\u8A2D\u5B9A","Display & Progress":"\u986F\u793A\u8207\u9032\u5EA6","Task Management":"\u4EFB\u52D9\u7BA1\u7406","Workflow & Automation":"\u5DE5\u4F5C\u6D41\u7A0B\u8207\u81EA\u52D5\u5316",Gamification:"\u904A\u6232\u5316",Integration:"\u6574\u5408",Advanced:"\u9032\u968E",Information:"\u8CC7\u8A0A","Workflow generated from task structure":"\u6839\u64DA\u4EFB\u52D9\u7D50\u69CB\u7522\u751F\u7684\u5DE5\u4F5C\u6D41\u7A0B","Workflow based on existing pattern":"\u57FA\u65BC\u73FE\u6709\u6A21\u5F0F\u7684\u5DE5\u4F5C\u6D41\u7A0B",Matrix:"\u77E9\u9663","More actions":"\u66F4\u591A\u64CD\u4F5C","Open in file":"\u5728\u6A94\u6848\u4E2D\u958B\u555F","Copy task":"\u8907\u88FD\u4EFB\u52D9","Mark as urgent":"\u6A19\u8A18\u70BA\u7DCA\u6025","Mark as important":"\u6A19\u8A18\u70BA\u91CD\u8981","Overdue by {days} days":"\u903E\u671F {days} \u5929","Due today":"\u4ECA\u5929\u5230\u671F","Due tomorrow":"\u660E\u5929\u5230\u671F","Due in {days} days":"{days} \u5929\u5F8C\u5230\u671F","Loading tasks...":"\u8F09\u5165\u4EFB\u52D9\u4E2D...",task:"\u4EFB\u52D9","No crisis tasks - great job!":"\u6C92\u6709\u5371\u6A5F\u4EFB\u52D9 - \u505A\u5F97\u597D\uFF01","No planning tasks - consider adding some goals":"\u6C92\u6709\u898F\u5283\u4EFB\u52D9 - \u8003\u616E\u65B0\u589E\u4E00\u4E9B\u76EE\u6A19","No interruptions - focus time!":"\u6C92\u6709\u5E72\u64FE - \u5C08\u6CE8\u6642\u9593\uFF01","No time wasters - excellent focus!":"\u6C92\u6709\u6642\u9593\u6D6A\u8CBB - \u5C08\u6CE8\u5EA6\u6975\u4F73\uFF01","No tasks in this quadrant":"\u6B64\u8C61\u9650\u4E2D\u6C92\u6709\u4EFB\u52D9","Handle immediately. These are critical tasks that need your attention now.":"\u7ACB\u5373\u8655\u7406\u3002\u9019\u4E9B\u662F\u9700\u8981\u60A8\u73FE\u5728\u95DC\u6CE8\u7684\u95DC\u9375\u4EFB\u52D9\u3002","Schedule and plan. These tasks are key to your long-term success.":"\u5B89\u6392\u548C\u898F\u5283\u3002\u9019\u4E9B\u4EFB\u52D9\u662F\u60A8\u9577\u671F\u6210\u529F\u7684\u95DC\u9375\u3002","Delegate if possible. These tasks are urgent but don't require your specific skills.":"\u5982\u679C\u53EF\u80FD\u7684\u8A71\u8ACB\u59D4\u6D3E\u3002\u9019\u4E9B\u4EFB\u52D9\u5F88\u7DCA\u6025\u4F46\u4E0D\u9700\u8981\u60A8\u7684\u7279\u5B9A\u6280\u80FD\u3002","Eliminate or minimize. These tasks may be time wasters.":"\u6E1B\u5C11\u6216\u6700\u5C0F\u5316\u3002\u9019\u4E9B\u4EFB\u52D9\u53EF\u80FD\u662F\u6642\u9593\u6D6A\u8CBB\u3002","Review and categorize these tasks appropriately.":"\u5BE9\u67E5\u548C\u9069\u7576\u5730\u5206\u985E\u9019\u4E9B\u4EFB\u52D9\u3002","Urgent & Important":"\u7DCA\u6025\u4E14\u91CD\u8981","Do First - Crisis & emergencies":"\u512A\u5148\u8655\u7406 - \u5371\u6A5F\u8207\u7DCA\u6025\u72C0\u6CC1","Not Urgent & Important":"\u4E0D\u7DCA\u6025\u4F46\u91CD\u8981","Schedule - Planning & development":"\u5B89\u6392 - \u898F\u5283\u8207\u767C\u5C55","Urgent & Not Important":"\u7DCA\u6025\u4F46\u4E0D\u91CD\u8981","Delegate - Interruptions & distractions":"\u59D4\u6D3E - \u5E72\u64FE\u8207\u5206\u5FC3","Not Urgent & Not Important":"\u4E0D\u7DCA\u6025\u4E14\u4E0D\u91CD\u8981","Eliminate - Time wasters":"\u6E1B\u5C11 - \u6642\u9593\u6D6A\u8CBB","Task Priority Matrix":"\u4EFB\u52D9\u512A\u5148\u7D1A\u77E9\u9663","Created Date (Newest First)":"\u5EFA\u7ACB\u65E5\u671F\uFF08\u6700\u65B0\u512A\u5148\uFF09","Created Date (Oldest First)":"\u5EFA\u7ACB\u65E5\u671F\uFF08\u6700\u820A\u512A\u5148\uFF09","Toggle empty columns":"\u5207\u63DB\u7A7A\u6B04\u986F\u793A","Failed to update task":"\u66F4\u65B0\u4EFB\u52D9\u5931\u6557","Remove urgent tag":"\u79FB\u9664\u7DCA\u6025\u6A19\u7C64","Remove important tag":"\u79FB\u9664\u91CD\u8981\u6A19\u7C64","Loading more tasks...":"\u8F09\u5165\u66F4\u591A\u4EFB\u52D9...","Action Type":"\u64CD\u4F5C\u985E\u578B","Select action type...":"\u9078\u64C7\u64CD\u4F5C\u985E\u578B...","Delete task":"\u522A\u9664\u4EFB\u52D9","Keep task":"\u4FDD\u7559\u4EFB\u52D9","Complete related tasks":"\u5B8C\u6210\u76F8\u95DC\u4EFB\u52D9","Move task":"\u79FB\u52D5\u4EFB\u52D9","Archive task":"\u6B78\u6A94\u4EFB\u52D9","Duplicate task":"\u8907\u88FD\u4EFB\u52D9","Task IDs":"\u4EFB\u52D9 ID","Enter task IDs separated by commas":"\u8F38\u5165\u7528\u9017\u865F\u5206\u9694\u7684\u4EFB\u52D9 ID","Comma-separated list of task IDs to complete when this task is completed":"\u7576\u6B64\u4EFB\u52D9\u5B8C\u6210\u6642\u8981\u5B8C\u6210\u7684\u4EFB\u52D9 ID \u9017\u865F\u5206\u9694\u5217\u8868","Target File":"\u76EE\u6A19\u6A94\u6848","Path to target file":"\u76EE\u6A19\u6A94\u6848\u8DEF\u5F91","Target Section (Optional)":"\u76EE\u6A19\u7AE0\u7BC0\uFF08\u53EF\u9078\uFF09","Section name in target file":"\u76EE\u6A19\u6A94\u6848\u4E2D\u7684\u7AE0\u7BC0\u540D\u7A31","Archive File (Optional)":"\u6B78\u6A94\u6A94\u6848\uFF08\u53EF\u9078\uFF09","Default: Archive/Completed Tasks.md":"\u9810\u8A2D\uFF1AArchive/Completed Tasks.md","Archive Section (Optional)":"\u6B78\u6A94\u7AE0\u7BC0\uFF08\u53EF\u9078\uFF09","Default: Completed Tasks":"\u9810\u8A2D\uFF1A\u5DF2\u5B8C\u6210\u4EFB\u52D9","Target File (Optional)":"\u76EE\u6A19\u6A94\u6848\uFF08\u53EF\u9078\uFF09","Default: same file":"\u9810\u8A2D\uFF1A\u540C\u4E00\u6A94\u6848","Preserve Metadata":"\u4FDD\u7559\u5143\u6578\u64DA","Keep completion dates and other metadata in the duplicated task":"\u5728\u8907\u88FD\u7684\u4EFB\u52D9\u4E2D\u4FDD\u7559\u5B8C\u6210\u65E5\u671F\u548C\u5176\u4ED6\u5143\u6578\u64DA","Overdue by":"\u903E\u671F",days:"\u5929","Due in":"\u5230\u671F","File Filter":"\u6A94\u6848\u7BE9\u9078","Enable File Filter":"\u555F\u7528\u6A94\u6848\u7BE9\u9078","Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5728\u4EFB\u52D9\u7D22\u5F15\u671F\u9593\u555F\u7528\u6A94\u6848\u548C\u8CC7\u6599\u593E\u7BE9\u9078\u3002\u9019\u53EF\u4EE5\u986F\u8457\u63D0\u9AD8\u5927\u578B\u5EAB\u7684\u6027\u80FD\u3002","File Filter Mode":"\u6A94\u6848\u7BE9\u9078\u6A21\u5F0F","Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)":"\u9078\u64C7\u662F\u5426\u50C5\u5305\u542B\u6307\u5B9A\u7684\u6A94\u6848/\u8CC7\u6599\u593E\uFF08\u767D\u540D\u55AE\uFF09\u6216\u6392\u9664\u5B83\u5011\uFF08\u9ED1\u540D\u55AE\uFF09","Whitelist (Include only)":"\u767D\u540D\u55AE\uFF08\u50C5\u5305\u542B\uFF09","Blacklist (Exclude)":"\u9ED1\u540D\u55AE\uFF08\u6392\u9664\uFF09","File Filter Rules":"\u6A94\u6848\u7BE9\u9078\u898F\u5247","Configure which files and folders to include or exclude from task indexing":"\u914D\u7F6E\u8981\u5728\u4EFB\u52D9\u7D22\u5F15\u4E2D\u5305\u542B\u6216\u6392\u9664\u7684\u6A94\u6848\u548C\u8CC7\u6599\u593E","Type:":"\u985E\u578B\uFF1A",Folder:"\u8CC7\u6599\u593E","Path:":"\u8DEF\u5F91\uFF1A","Enabled:":"\u555F\u7528\uFF1A","Delete rule":"\u522A\u9664\u898F\u5247","Add Filter Rule":"\u65B0\u589E\u7BE9\u9078\u898F\u5247","Add File Rule":"\u65B0\u589E\u6A94\u6848\u898F\u5247","Add Folder Rule":"\u65B0\u589E\u8CC7\u6599\u593E\u898F\u5247","Add Pattern Rule":"\u65B0\u589E\u6A23\u5F0F\u898F\u5247","Refresh Statistics":"\u5237\u65B0\u7D71\u8A08","Manually refresh filter statistics to see current data":"\u624B\u52D5\u5237\u65B0\u7BE9\u9078\u7D71\u8A08\u4EE5\u67E5\u770B\u7576\u524D\u6578\u64DA","Refreshing...":"\u5237\u65B0\u4E2D...","Active Rules":"\u6D3B\u8E8D\u898F\u5247","Cache Size":"\u5FEB\u53D6\u5927\u5C0F","No filter data available":"\u6C92\u6709\u53EF\u7528\u7684\u7BE9\u9078\u6578\u64DA","Error loading statistics":"\u8F09\u5165\u7D71\u8A08\u932F\u8AA4","On Completion":"\u5B8C\u6210\u6642\u64CD\u4F5C","Enable OnCompletion":"\u555F\u7528\u5B8C\u6210\u6642\u64CD\u4F5C","Enable automatic actions when tasks are completed":"\u555F\u7528\u4EFB\u52D9\u5B8C\u6210\u6642\u7684\u81EA\u52D5\u64CD\u4F5C","Default Archive File":"\u9810\u8A2D\u6B78\u6A94\u6A94\u6848","Default file for archive action":"\u6B78\u6A94\u64CD\u4F5C\u7684\u9810\u8A2D\u6A94\u6848","Default Archive Section":"\u9810\u8A2D\u6B78\u6A94\u7AE0\u7BC0","Default section for archive action":"\u6B78\u6A94\u64CD\u4F5C\u7684\u9810\u8A2D\u7AE0\u7BC0","Show Advanced Options":"\u986F\u793A\u9032\u968E\u9078\u9805","Show advanced configuration options in task editors":"\u5728\u4EFB\u52D9\u7DE8\u8F2F\u5668\u4E2D\u986F\u793A\u9032\u968E\u914D\u7F6E\u9078\u9805","Configure checkbox status settings":"\u914D\u7F6E\u8907\u9078\u6846\u72C0\u614B\u8A2D\u5B9A","Auto complete parent checkbox":"\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u8907\u9078\u6846","Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u5141\u8A31\u6B64\u5916\u639B\u7A0B\u5F0F\u5728\u6240\u6709\u5B50\u4EFB\u52D9\u5B8C\u6210\u6642\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u8907\u9078\u6846\u3002","When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.":"\u7576\u90E8\u5206\u5B50\u4EFB\u52D9\u5B8C\u6210\u4F46\u4E0D\u662F\u5168\u90E8\u5B8C\u6210\u6642\uFF0C\u5C07\u7236\u7D1A\u8907\u9078\u6846\u6A19\u8A18\u70BA\u300C\u9032\u884C\u4E2D\u300D\u3002\u50C5\u5728\u555F\u7528\u300C\u81EA\u52D5\u5B8C\u6210\u7236\u7D1A\u300D\u6642\u624D\u6703\u4F5C\u7528\u3002","Select a predefined checkbox status collection or customize your own":"\u9078\u64C7\u9810\u5B9A\u7FA9\u7684\u8907\u9078\u6846\u72C0\u614B\u96C6\u5408\u6216\u81EA\u5B9A\u7FA9\u60A8\u81EA\u5DF1\u7684","Checkbox Switcher":"\u8907\u9078\u6846\u5207\u63DB\u5668","Enable checkbox status switcher":"\u555F\u7528\u8907\u9078\u6846\u72C0\u614B\u5207\u63DB\u5668","Replace default checkboxes with styled text marks that follow your checkbox status cycle when clicked.":"\u7528\u6A23\u5F0F\u5316\u7684\u6587\u5B57\u6A19\u8A18\u53D6\u4EE3\u9810\u8A2D\u8907\u9078\u6846\uFF0C\u9EDE\u64CA\u6642\u9075\u5FAA\u60A8\u7684\u8907\u9078\u6846\u72C0\u614B\u5FAA\u74B0\u3002","Make the text mark in source mode follow the checkbox status cycle when clicked.":"\u4F7F\u539F\u59CB\u6A21\u5F0F\u4E2D\u7684\u6587\u5B57\u6A19\u8A18\u5728\u9EDE\u64CA\u6642\u9075\u5FAA\u8907\u9078\u6846\u72C0\u614B\u5FAA\u74B0\u3002","Automatically manage dates based on checkbox status changes":"\u6839\u64DA\u8907\u9078\u6846\u72C0\u614B\u8B8A\u5316\u81EA\u52D5\u7BA1\u7406\u65E5\u671F","Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528\u8907\u9078\u6846\u72C0\u614B\u8B8A\u5316\u6642\u7684\u81EA\u52D5\u65E5\u671F\u7BA1\u7406\u3002\u5C07\u6839\u64DA\u60A8\u559C\u597D\u7684\u5143\u6578\u64DA\u683C\u5F0F\uFF08\u4EFB\u52D9\u8868\u60C5\u683C\u5F0F\u6216 Dataview \u683C\u5F0F\uFF09\u65B0\u589E/\u79FB\u9664\u65E5\u671F\u3002","Default view mode":"\u9810\u8A2D\u6AA2\u8996\u6A21\u5F0F","Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.":"\u9078\u64C7\u6240\u6709\u6AA2\u8996\u7684\u9810\u8A2D\u986F\u793A\u6A21\u5F0F\u3002\u9019\u5F71\u97FF\u60A8\u7B2C\u4E00\u6B21\u958B\u555F\u6AA2\u8996\u6216\u5EFA\u7ACB\u65B0\u6AA2\u8996\u6642\u4EFB\u52D9\u7684\u986F\u793A\u65B9\u5F0F\u3002","List View":"\u5217\u8868\u6AA2\u8996","Tree View":"\u6A39\u72C0\u6AA2\u8996","Global Filter Configuration":"\u5168\u57DF\u7BE9\u9078\u914D\u7F6E","Configure global filter rules that apply to all Views by default. Individual Views can override these settings.":"\u914D\u7F6E\u9810\u8A2D\u61C9\u7528\u65BC\u6240\u6709\u6AA2\u8996\u7684\u5168\u57DF\u7BE9\u9078\u898F\u5247\u3002\u500B\u5225\u6AA2\u8996\u53EF\u4EE5\u8986\u84CB\u9019\u4E9B\u8A2D\u5B9A\u3002","Cancelled Date":"\u53D6\u6D88\u65E5\u671F","Configuration is valid":"\u914D\u7F6E\u6709\u6548","Action to execute on completion":"\u5B8C\u6210\u6642\u57F7\u884C\u7684\u64CD\u4F5C","Depends On":"\u4F9D\u8CF4\u65BC","Task IDs separated by commas":"\u7528\u9017\u865F\u5206\u9694\u7684\u4EFB\u52D9 ID","Task ID":"\u4EFB\u52D9 ID","Unique task identifier":"\u552F\u4E00\u4EFB\u52D9\u6A19\u8B58\u7B26","Action to execute when task is completed":"\u4EFB\u52D9\u5B8C\u6210\u6642\u57F7\u884C\u7684\u64CD\u4F5C","Comma-separated list of task IDs this task depends on":"\u6B64\u4EFB\u52D9\u4F9D\u8CF4\u7684\u4EFB\u52D9 ID \u9017\u865F\u5206\u9694\u5217\u8868","Unique identifier for this task":"\u6B64\u4EFB\u52D9\u7684\u552F\u4E00\u6A19\u8B58\u7B26","Quadrant Classification Method":"\u8C61\u9650\u5206\u985E\u65B9\u6CD5","Choose how to classify tasks into quadrants":"\u9078\u64C7\u5982\u4F55\u5C07\u4EFB\u52D9\u5206\u985E\u5230\u8C61\u9650\u4E2D","Urgent Priority Threshold":"\u7DCA\u6025\u512A\u5148\u7D1A\u95FE\u503C","Tasks with priority >= this value are considered urgent (1-5)":"\u512A\u5148\u7D1A >= \u6B64\u503C\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u7DCA\u6025\uFF081-5\uFF09","Important Priority Threshold":"\u91CD\u8981\u512A\u5148\u7D1A\u95FE\u503C","Tasks with priority >= this value are considered important (1-5)":"\u512A\u5148\u7D1A >= \u6B64\u503C\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u91CD\u8981\uFF081-5\uFF09","Urgent Tag":"\u7DCA\u6025\u6A19\u7C64","Tag to identify urgent tasks (e.g., #urgent, #fire)":"\u8B58\u5225\u7DCA\u6025\u4EFB\u52D9\u7684\u6A19\u7C64\uFF08\u4F8B\u5982 #urgent, #fire\uFF09","Important Tag":"\u91CD\u8981\u6A19\u7C64","Tag to identify important tasks (e.g., #important, #key)":"\u8B58\u5225\u91CD\u8981\u4EFB\u52D9\u7684\u6A19\u7C64\uFF08\u4F8B\u5982 #important, #key\uFF09","Urgent Threshold Days":"\u7DCA\u6025\u95FE\u503C\u5929\u6578","Tasks due within this many days are considered urgent":"\u5728\u9019\u9EBC\u591A\u5929\u5167\u5230\u671F\u7684\u4EFB\u52D9\u88AB\u8996\u70BA\u7DCA\u6025","Auto Update Priority":"\u81EA\u52D5\u66F4\u65B0\u512A\u5148\u7D1A","Automatically update task priority when moved between quadrants":"\u5728\u8C61\u9650\u9593\u79FB\u52D5\u6642\u81EA\u52D5\u66F4\u65B0\u4EFB\u52D9\u512A\u5148\u7D1A","Auto Update Tags":"\u81EA\u52D5\u66F4\u65B0\u6A19\u7C64","Automatically add/remove urgent/important tags when moved between quadrants":"\u5728\u8C61\u9650\u9593\u79FB\u52D5\u6642\u81EA\u52D5\u65B0\u589E/\u79FB\u9664\u7DCA\u6025/\u91CD\u8981\u6A19\u7C64","Hide Empty Quadrants":"\u96B1\u85CF\u7A7A\u8C61\u9650","Hide quadrants that have no tasks":"\u96B1\u85CF\u6C92\u6709\u4EFB\u52D9\u7684\u8C61\u9650","Configure On Completion Action":"\u914D\u7F6E\u5B8C\u6210\u6642\u64CD\u4F5C","URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)":"ICS/iCal \u6A94\u6848\u7684 URL\uFF08\u652F\u6301 http://\u3001https:// \u548C webcal:// \u5354\u5B9A\uFF09","Task mark display style":"\u4EFB\u52D9\u6A19\u8A18\u986F\u793A\u6A23\u5F0F","Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.":"\u9078\u64C7\u4EFB\u52D9\u6A19\u8A18\u7684\u986F\u793A\u65B9\u5F0F\uFF1A\u9810\u8A2D\u8907\u9078\u6846\u3001\u81EA\u5B9A\u7FA9\u6587\u5B57\u6A19\u8A18\u6216 Task Genius \u5716\u793A\u3002","Default checkboxes":"\u9810\u8A2D\u8907\u9078\u6846","Custom text marks":"\u81EA\u5B9A\u7FA9\u6587\u5B57\u6A19\u8A18","Task Genius icons":"Task Genius \u5716\u793A","Time Parsing Settings":"\u6642\u9593\u89E3\u6790\u8A2D\u5B9A","Enable Time Parsing":"\u555F\u7528\u6642\u9593\u89E3\u6790","Automatically parse natural language time expressions in Quick Capture":"\u5728\u5FEB\u901F\u6355\u7372\u4E2D\u81EA\u52D5\u89E3\u6790\u81EA\u7136\u8A9E\u8A00\u6642\u9593\u8868\u9054\u5F0F","Remove Original Time Expressions":"\u79FB\u9664\u539F\u59CB\u6642\u9593\u8868\u9054\u5F0F","Remove parsed time expressions from the task text":"\u5F9E\u4EFB\u52D9\u6587\u5B57\u4E2D\u79FB\u9664\u5DF2\u89E3\u6790\u7684\u6642\u9593\u8868\u9054\u5F0F","Supported Languages":"\u652F\u6301\u7684\u8A9E\u8A00","Currently supports English and Chinese time expressions. More languages may be added in future updates.":"\u76EE\u524D\u652F\u6301\u82F1\u6587\u548C\u4E2D\u6587\u6642\u9593\u8868\u9054\u5F0F\u3002\u672A\u4F86\u66F4\u65B0\u4E2D\u53EF\u80FD\u6703\u65B0\u589E\u66F4\u591A\u8A9E\u8A00\u3002","Date Keywords Configuration":"\u65E5\u671F\u95DC\u9375\u8A5E\u914D\u7F6E","Start Date Keywords":"\u958B\u59CB\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate start dates (comma-separated)":"\u6307\u793A\u958B\u59CB\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Due Date Keywords":"\u5230\u671F\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate due dates (comma-separated)":"\u6307\u793A\u5230\u671F\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Scheduled Date Keywords":"\u5B89\u6392\u65E5\u671F\u95DC\u9375\u8A5E","Keywords that indicate scheduled dates (comma-separated)":"\u6307\u793A\u5B89\u6392\u65E5\u671F\u7684\u95DC\u9375\u8A5E\uFF08\u9017\u865F\u5206\u9694\uFF09","Configure...":"\u914D\u7F6E...","Collapse quick input":"\u6298\u758A\u5FEB\u901F\u8F38\u5165","Expand quick input":"\u5C55\u958B\u5FEB\u901F\u8F38\u5165","Set Priority":"\u8A2D\u5B9A\u512A\u5148\u7D1A","Clear Flags":"\u6E05\u9664\u65D7\u6A19","Filter by Priority":"\u6309\u512A\u5148\u7D1A\u7BE9\u9078","New Project":"\u65B0\u5C08\u6848","Archive Completed":"\u6B78\u6A94\u5DF2\u5B8C\u6210","Project Statistics":"\u5C08\u6848\u7D71\u8A08","Manage Tags":"\u7BA1\u7406\u6A19\u7C64","Time Parsing":"\u6642\u9593\u89E3\u6790","Minimal Quick Capture":"\u6700\u5C0F\u5316\u5FEB\u901F\u6355\u7372","Enter your task...":"\u8F38\u5165\u60A8\u7684\u4EFB\u52D9...","Set date":"\u8A2D\u5B9A\u65E5\u671F","Set location":"\u8A2D\u5B9A\u4F4D\u7F6E","Add tags":"\u65B0\u589E\u6A19\u7C64","Day after tomorrow":"\u5F8C\u5929","Next week":"\u4E0B\u5468","Next month":"\u4E0B\u6708","Choose date...":"\u9078\u64C7\u65E5\u671F...","Fixed location":"\u56FA\u5B9A\u4F4D\u7F6E",Date:"\u65E5\u671F","Add date (triggers ~)":"\u65B0\u589E\u65E5\u671F\uFF08\u89F8\u767C\u7B26 ~\uFF09","Set priority (triggers !)":"\u8A2D\u5B9A\u512A\u5148\u7D1A\uFF08\u89F8\u767C\u7B26 !\uFF09","Target Location":"\u76EE\u6A19\u4F4D\u7F6E","Set target location (triggers *)":"\u8A2D\u5B9A\u76EE\u6A19\u4F4D\u7F6E\uFF08\u89F8\u767C\u7B26 *\uFF09","Add tags (triggers #)":"\u65B0\u589E\u6A19\u7C64\uFF08\u89F8\u767C\u7B26 #\uFF09","Minimal Mode":"\u6700\u5C0F\u5316\u6A21\u5F0F","Enable minimal mode":"\u555F\u7528\u6700\u5C0F\u5316\u6A21\u5F0F","Enable simplified single-line quick capture with inline suggestions":"\u555F\u7528\u7C21\u5316\u7684\u55AE\u884C\u5FEB\u901F\u6355\u7372\u548C\u5167\u5D4C\u5EFA\u8B70","Suggest trigger character":"\u5EFA\u8B70\u89F8\u767C\u5B57\u5143","Character to trigger the suggestion menu":"\u89F8\u767C\u5EFA\u8B70\u9078\u55AE\u7684\u5B57\u5143","Highest Priority":"\u6700\u9AD8\u512A\u5148\u7D1A","\u{1F53A} Highest priority task":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u7D1A\u4EFB\u52D9","Highest priority set":"\u5DF2\u8A2D\u5B9A\u6700\u9AD8\u512A\u5148\u7D1A","\u23EB High priority task":"\u23EB \u9AD8\u512A\u5148\u7D1A\u4EFB\u52D9","High priority set":"\u5DF2\u8A2D\u5B9A\u9AD8\u512A\u5148\u7D1A","\u{1F53C} Medium priority task":"\u{1F53C} \u4E2D\u7B49\u512A\u5148\u7D1A\u4EFB\u52D9","Medium priority set":"\u5DF2\u8A2D\u5B9A\u4E2D\u7B49\u512A\u5148\u7D1A","\u{1F53D} Low priority task":"\u{1F53D} \u4F4E\u512A\u5148\u7D1A\u4EFB\u52D9","Low priority set":"\u5DF2\u8A2D\u5B9A\u4F4E\u512A\u5148\u7D1A","Lowest Priority":"\u6700\u4F4E\u512A\u5148\u7D1A","\u23EC Lowest priority task":"\u23EC \u6700\u4F4E\u512A\u5148\u7D1A\u4EFB\u52D9","Lowest priority set":"\u5DF2\u8A2D\u5B9A\u6700\u4F4E\u512A\u5148\u7D1A","Set due date to today":"\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u4ECA\u5929","Due date set to today":"\u5DF2\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u4ECA\u5929","Set due date to tomorrow":"\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u660E\u5929","Due date set to tomorrow":"\u5DF2\u8A2D\u5B9A\u5230\u671F\u65E5\u671F\u70BA\u660E\u5929","Pick Date":"\u9078\u64C7\u65E5\u671F","Open date picker":"\u958B\u555F\u65E5\u671F\u9078\u64C7\u5668","Set scheduled date":"\u8A2D\u5B9A\u5B89\u6392\u65E5\u671F","Scheduled date set":"\u5DF2\u8A2D\u5B9A\u5B89\u6392\u65E5\u671F","Save to inbox":"\u5132\u5B58\u5230\u6536\u4EF6\u5323","Target set to Inbox":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u6536\u4EF6\u5323","Daily Note":"\u65E5\u8A18","Save to today's daily note":"\u5132\u5B58\u5230\u4ECA\u5929\u7684\u65E5\u8A18","Target set to Daily Note":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u65E5\u8A18","Current File":"\u7576\u524D\u6A94\u6848","Save to current file":"\u5132\u5B58\u5230\u7576\u524D\u6A94\u6848","Target set to Current File":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA\u7576\u524D\u6A94\u6848","Choose File":"\u9078\u64C7\u6A94\u6848","Open file picker":"\u958B\u555F\u6A94\u6848\u9078\u64C7\u5668","Save to recent file":"\u5132\u5B58\u5230\u6700\u8FD1\u6A94\u6848","Target set to":"\u5DF2\u8A2D\u5B9A\u76EE\u6A19\u70BA",Important:"\u91CD\u8981","Tagged as important":"\u5DF2\u6A19\u8A18\u70BA\u91CD\u8981",Urgent:"\u7DCA\u6025","Tagged as urgent":"\u5DF2\u6A19\u8A18\u70BA\u7DCA\u6025",Work:"\u5DE5\u4F5C","Work related task":"\u5DE5\u4F5C\u76F8\u95DC\u4EFB\u52D9","Tagged as work":"\u5DF2\u6A19\u8A18\u70BA\u5DE5\u4F5C",Personal:"\u500B\u4EBA","Personal task":"\u500B\u4EBA\u4EFB\u52D9","Tagged as personal":"\u5DF2\u6A19\u8A18\u70BA\u500B\u4EBA","Choose Tag":"\u9078\u64C7\u6A19\u7C64","Open tag picker":"\u958B\u555F\u6A19\u7C64\u9078\u64C7\u5668","Existing tag":"\u73FE\u6709\u6A19\u7C64","Tagged with":"\u5DF2\u6A19\u8A18\u70BA","Toggle quick capture panel in editor":"\u5728\u7DE8\u8F2F\u5668\u4E2D\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F","Toggle quick capture panel in editor (Globally)":"\u5728\u7DE8\u8F2F\u5668\u4E2D\u5207\u63DB\u5FEB\u901F\u6355\u7372\u9762\u677F\uFF08\u5168\u57DF\uFF09","Selected Mode":"\u9078\u64C7\u7684\u6A21\u5F0F","Features that will be enabled":"\u5C07\u555F\u7528\u7684\u529F\u80FD","Don't worry! You can customize any of these settings later in the plugin settings.":"\u5225\u64D4\u5FC3\uFF01\u60A8\u53EF\u4EE5\u7A0D\u5F8C\u5728\u5916\u639B\u8A2D\u5B9A\u4E2D\u81EA\u8A02\u9019\u4E9B\u8A2D\u5B9A\u3002","Available views":"\u53EF\u7528\u8996\u5716","Key settings":"\u95DC\u9375\u8A2D\u5B9A","Progress bars":"\u9032\u5EA6\u689D","Enabled (both graphical and text)":"\u5DF2\u555F\u7528\uFF08\u5716\u5F62\u548C\u6587\u5B57\uFF09","Task status switching":"\u4EFB\u52D9\u72C0\u614B\u5207\u63DB","Workflow management":"\u5DE5\u4F5C\u6D41\u7A0B\u7BA1\u7406","Reward system":"\u734E\u52F5\u7CFB\u7D71","Habit tracking":"\u7FD2\u6163\u8FFD\u8E64","Performance optimization":"\u6548\u80FD\u6700\u4F73\u5316","Configuration Changes":"\u8A2D\u5B9A\u8B8A\u66F4","Your custom views will be preserved":"\u60A8\u7684\u81EA\u8A02\u8996\u5716\u5C07\u88AB\u4FDD\u7559","New views to be added":"\u8981\u65B0\u589E\u7684\u8996\u5716","Existing views to be updated":"\u8981\u66F4\u65B0\u7684\u73FE\u6709\u8996\u5716","Feature changes":"\u529F\u80FD\u8B8A\u66F4","Only template settings will be applied. Your existing custom configurations will be preserved.":"\u50C5\u5957\u7528\u7BC4\u672C\u8A2D\u5B9A\u3002\u60A8\u73FE\u6709\u7684\u81EA\u8A02\u8A2D\u5B9A\u5C07\u88AB\u4FDD\u7559\u3002","Congratulations!":"\u606D\u559C\uFF01","Task Genius has been configured with your selected preferences":"Task Genius \u5DF2\u6839\u64DA\u60A8\u9078\u64C7\u7684\u504F\u597D\u5B8C\u6210\u8A2D\u5B9A","Your Configuration":"\u60A8\u7684\u8A2D\u5B9A","Quick Start Guide":"\u5FEB\u901F\u5165\u9580\u6307\u5357","What's next?":"\u63A5\u4E0B\u4F86\u505A\u4EC0\u9EBC\uFF1F","Open Task Genius view from the left ribbon":"\u5F9E\u5DE6\u5074\u529F\u80FD\u5340\u958B\u555F Task Genius \u8996\u5716","Create your first task using Quick Capture":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Explore different views to organize your tasks":"\u63A2\u7D22\u4E0D\u540C\u8996\u5716\u4F86\u7D44\u7E54\u60A8\u7684\u4EFB\u52D9","Customize settings anytime in plugin settings":"\u96A8\u6642\u5728\u5916\u639B\u8A2D\u5B9A\u4E2D\u81EA\u8A02\u8A2D\u5B9A","Helpful Resources":"\u5BE6\u7528\u8CC7\u6E90","Complete guide to all features":"\u6240\u6709\u529F\u80FD\u7684\u5B8C\u6574\u6307\u5357",Community:"\u793E\u7FA4","Get help and share tips":"\u7372\u5F97\u5E6B\u52A9\u548C\u5206\u4EAB\u6280\u5DE7","Customize Task Genius":"\u81EA\u8A02 Task Genius","Click the Task Genius icon in the left sidebar":"\u9EDE\u64CA\u5DE6\u5074\u908A\u6B04\u7684 Task Genius \u5716\u793A","Start with the Inbox view to see all your tasks":"\u5F9E\u6536\u4EF6\u5323\u8996\u5716\u958B\u59CB\u67E5\u770B\u6240\u6709\u4EFB\u52D9","Use quick capture panel to quickly add your first task":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u5FEB\u901F\u65B0\u589E\u7B2C\u4E00\u500B\u4EFB\u52D9","Try the Forecast view to see tasks by date":"\u5617\u8A66\u9810\u6E2C\u8996\u5716\u6309\u65E5\u671F\u67E5\u770B\u4EFB\u52D9","Open Task Genius and explore the available views":"\u958B\u555F Task Genius \u4E26\u63A2\u7D22\u53EF\u7528\u8996\u5716","Set up a project using the Projects view":"\u4F7F\u7528\u5C08\u6848\u8996\u5716\u8A2D\u5B9A\u5C08\u6848","Try the Kanban board for visual task management":"\u5617\u8A66\u770B\u677F\u9032\u884C\u8996\u89BA\u5316\u4EFB\u52D9\u7BA1\u7406","Use workflow stages to track task progress":"\u4F7F\u7528\u5DE5\u4F5C\u6D41\u7A0B\u968E\u6BB5\u8FFD\u8E64\u4EFB\u52D9\u9032\u5EA6","Explore all available views and their configurations":"\u63A2\u7D22\u6240\u6709\u53EF\u7528\u8996\u5716\u53CA\u5176\u8A2D\u5B9A","Set up complex workflows for your projects":"\u70BA\u5C08\u6848\u8A2D\u5B9A\u8907\u96DC\u5DE5\u4F5C\u6D41\u7A0B","Configure habits and rewards to stay motivated":"\u8A2D\u5B9A\u7FD2\u6163\u548C\u734E\u52F5\u4EE5\u4FDD\u6301\u52D5\u529B","Integrate with external calendars and systems":"\u8207\u5916\u90E8\u65E5\u66C6\u548C\u7CFB\u7D71\u6574\u5408","Open Task Genius from the left sidebar":"\u5F9E\u5DE6\u5074\u908A\u6B04\u958B\u555F Task Genius","Create your first task":"\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Explore the different views available":"\u63A2\u7D22\u4E0D\u540C\u7684\u53EF\u7528\u8996\u5716","Customize settings as needed":"\u6839\u64DA\u9700\u8981\u81EA\u8A02\u8A2D\u5B9A","Thank you for your positive feedback!":"\u611F\u8B1D\u60A8\u7684\u6B63\u9762\u56DE\u994B\uFF01","Thank you for your feedback. We'll continue improving the experience.":"\u611F\u8B1D\u60A8\u7684\u56DE\u994B\u3002\u6211\u5011\u5C07\u7E7C\u7E8C\u6539\u5584\u4F7F\u7528\u9AD4\u9A57\u3002","Share detailed feedback":"\u5206\u4EAB\u8A73\u7D30\u56DE\u994B","Skip onboarding":"\u8DF3\u904E\u5F15\u5C0E",Back:"\u8FD4\u56DE","Welcome to Task Genius":"\u6B61\u8FCE\u4F7F\u7528 Task Genius","Transform your task management with advanced progress tracking and workflow automation":"\u900F\u904E\u9032\u968E\u9032\u5EA6\u8FFD\u8E64\u548C\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316\u8F49\u8B8A\u60A8\u7684\u4EFB\u52D9\u7BA1\u7406","Progress Tracking":"\u9032\u5EA6\u8FFD\u8E64","Visual progress bars and completion tracking for all your tasks":"\u70BA\u6240\u6709\u4EFB\u52D9\u63D0\u4F9B\u8996\u89BA\u5316\u9032\u5EA6\u689D\u548C\u5B8C\u6210\u8FFD\u8E64","Organize tasks by projects with advanced filtering and sorting":"\u4F7F\u7528\u9032\u968E\u7BE9\u9078\u548C\u6392\u5E8F\u6309\u5C08\u6848\u7D44\u7E54\u4EFB\u52D9","Workflow Automation":"\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316","Automate task status changes and improve your productivity":"\u81EA\u52D5\u5316\u4EFB\u52D9\u72C0\u614B\u8B8A\u66F4\u4E26\u63D0\u9AD8\u751F\u7522\u529B","Multiple Views":"\u591A\u91CD\u8996\u5716","Kanban boards, calendars, Gantt charts, and more visualization options":"\u770B\u677F\u3001\u65E5\u66C6\u3001\u7518\u7279\u5716\u548C\u66F4\u591A\u8996\u89BA\u5316\u9078\u9805","This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later.":"\u9019\u500B\u5FEB\u901F\u8A2D\u5B9A\u5C07\u6839\u64DA\u60A8\u7684\u7D93\u9A57\u6C34\u5E73\u548C\u9700\u6C42\u5E6B\u52A9\u60A8\u8A2D\u5B9A Task Genius\u3002\u60A8\u96A8\u6642\u53EF\u4EE5\u7A0D\u5F8C\u66F4\u6539\u9019\u4E9B\u8A2D\u5B9A\u3002","Choose Your Usage Mode":"\u9078\u64C7\u60A8\u7684\u4F7F\u7528\u6A21\u5F0F","Select the configuration that best matches your task management experience":"\u9078\u64C7\u6700\u7B26\u5408\u60A8\u4EFB\u52D9\u7BA1\u7406\u7D93\u9A57\u7684\u8A2D\u5B9A","Configuration Preview":"\u8A2D\u5B9A\u9810\u89BD","Review the settings that will be applied for your selected mode":"\u67E5\u770B\u5C07\u5957\u7528\u65BC\u60A8\u9078\u64C7\u6A21\u5F0F\u7684\u8A2D\u5B9A","Include task creation guide":"\u5305\u542B\u4EFB\u52D9\u5EFA\u7ACB\u6307\u5357","Show a quick tutorial on creating your first task":"\u986F\u793A\u5EFA\u7ACB\u7B2C\u4E00\u500B\u4EFB\u52D9\u7684\u5FEB\u901F\u6559\u5B78","Create Your First Task":"\u5EFA\u7ACB\u60A8\u7684\u7B2C\u4E00\u500B\u4EFB\u52D9","Learn how to create and format tasks in Task Genius":"\u5B78\u7FD2\u5982\u4F55\u5728 Task Genius \u4E2D\u5EFA\u7ACB\u548C\u683C\u5F0F\u5316\u4EFB\u52D9","Setup Complete!":"\u8A2D\u5B9A\u5B8C\u6210\uFF01","Task Genius is now configured and ready to use":"Task Genius \u5DF2\u8A2D\u5B9A\u5B8C\u6210\u4E14\u53EF\u4EE5\u4F7F\u7528","Start Using Task Genius":"\u958B\u59CB\u4F7F\u7528 Task Genius","Task Genius Setup":"Task Genius \u8A2D\u5B9A","Skip setup":"\u8DF3\u904E\u8A2D\u5B9A","We noticed you've already configured Task Genius":"\u6211\u5011\u6CE8\u610F\u5230\u60A8\u5DF2\u7D93\u8A2D\u5B9A\u4E86 Task Genius","Your current configuration includes:":"\u60A8\u76EE\u524D\u7684\u8A2D\u5B9A\u5305\u62EC\uFF1A","Would you like to run the setup wizard anyway?":"\u60A8\u9084\u662F\u60F3\u8981\u57F7\u884C\u8A2D\u5B9A\u7CBE\u9748\u55CE\uFF1F","Yes, show me the setup wizard":"\u662F\u7684\uFF0C\u986F\u793A\u8A2D\u5B9A\u7CBE\u9748","No, I'm happy with my current setup":"\u4E0D\u7528\uFF0C\u6211\u6EFF\u610F\u76EE\u524D\u7684\u8A2D\u5B9A","Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax.":"\u5B78\u7FD2\u5728 Task Genius \u4E2D\u5EFA\u7ACB\u548C\u683C\u5F0F\u5316\u4EFB\u52D9\u7684\u4E0D\u540C\u65B9\u5F0F\u3002\u60A8\u53EF\u4EE5\u4F7F\u7528\u8868\u60C5\u7B26\u865F\u6216 Dataview \u98A8\u683C\u7684\u8A9E\u6CD5\u3002","Task Format Examples":"\u4EFB\u52D9\u683C\u5F0F\u7BC4\u4F8B","Basic Task":"\u57FA\u672C\u4EFB\u52D9","With Emoji Metadata":"\u4F7F\u7528\u8868\u60C5\u7B26\u865F\u4E2D\u7E7C\u8CC7\u6599","\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag":"\u{1F4C5} = \u5230\u671F\u65E5\uFF0C\u{1F53A} = \u9AD8\u512A\u5148\u7D1A\uFF0C#project/ = \u6587\u4EF6\u5C08\u6848\u6A19\u7C64","With Dataview Metadata":"\u4F7F\u7528 Dataview \u4E2D\u7E7C\u8CC7\u6599","Mixed Format":"\u6DF7\u5408\u683C\u5F0F","Combine emoji and dataview syntax as needed":"\u6839\u64DA\u9700\u8981\u7D50\u5408\u8868\u60C5\u7B26\u865F\u548C Dataview \u8A9E\u6CD5","Task Status Markers":"\u4EFB\u52D9\u72C0\u614B\u6A19\u8A18","Not started":"\u672A\u958B\u59CB","In progress":"\u9032\u884C\u4E2D","Common Metadata Symbols":"\u5E38\u7528\u4E2D\u7E7C\u8CC7\u6599\u7B26\u865F","Due date":"\u5230\u671F\u65E5","Start date":"\u958B\u59CB\u65E5\u671F","Scheduled date":"\u9810\u5B9A\u65E5\u671F","Higher priority":"\u8F03\u9AD8\u512A\u5148\u7D1A","Lower priority":"\u8F03\u4F4E\u512A\u5148\u7D1A","Recurring task":"\u91CD\u8907\u4EFB\u52D9","Project/tag":"\u5C08\u6848/\u6A19\u7C64","Use quick capture panel to quickly capture tasks from anywhere in Obsidian.":"\u4F7F\u7528\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u5F9E Obsidian \u7684\u4EFB\u4F55\u5730\u65B9\u5FEB\u901F\u64F7\u53D6\u4EFB\u52D9\u3002","Try Quick Capture":"\u5617\u8A66\u5FEB\u901F\u64F7\u53D6","Quick capture is now enabled in your configuration!":"\u5FEB\u901F\u64F7\u53D6\u73FE\u5DF2\u5728\u60A8\u7684\u8A2D\u5B9A\u4E2D\u555F\u7528\uFF01","Failed to open quick capture. Please try again later.":"\u7121\u6CD5\u958B\u555F\u5FEB\u901F\u64F7\u53D6\u3002\u8ACB\u7A0D\u5F8C\u518D\u8A66\u3002","Try It Yourself":"\u81EA\u5DF1\u8A66\u8A66\u770B","Practice creating a task with the format you prefer:":"\u7DF4\u7FD2\u4F7F\u7528\u60A8\u504F\u597D\u7684\u683C\u5F0F\u5EFA\u7ACB\u4EFB\u52D9\uFF1A","Practice Task":"\u7DF4\u7FD2\u4EFB\u52D9","Enter a task using any of the formats shown above":"\u4F7F\u7528\u4E0A\u8FF0\u4EFB\u4F55\u683C\u5F0F\u8F38\u5165\u4EFB\u52D9","- [ ] Your task here":"- [ ] \u60A8\u7684\u4EFB\u52D9\u5728\u6B64","Validate Task":"\u9A57\u8B49\u4EFB\u52D9","Please enter a task to validate":"\u8ACB\u8F38\u5165\u4EFB\u52D9\u4EE5\u9032\u884C\u9A57\u8B49","This doesn't look like a valid task. Tasks should start with '- [ ]'":"\u9019\u770B\u8D77\u4F86\u4E0D\u50CF\u6709\u6548\u7684\u4EFB\u52D9\u3002\u4EFB\u52D9\u61C9\u4EE5 '- [ ]' \u958B\u982D","Valid task format!":"\u6709\u6548\u7684\u4EFB\u52D9\u683C\u5F0F\uFF01","Emoji metadata":"\u8868\u60C5\u7B26\u865F\u4E2D\u7E7C\u8CC7\u6599","Dataview metadata":"Dataview \u4E2D\u7E7C\u8CC7\u6599","Project tags":"\u5C08\u6848\u6A19\u7C64","Detected features: ":"\u6AA2\u6E2C\u5230\u7684\u529F\u80FD\uFF1A",Onboarding:"\u65B0\u624B\u5F15\u5C0E","Restart the welcome guide and setup wizard":"\u91CD\u65B0\u555F\u52D5\u6B61\u8FCE\u6307\u5357\u548C\u8A2D\u5B9A\u7CBE\u9748","Restart Onboarding":"\u91CD\u65B0\u958B\u59CB\u5F15\u5C0E",Copy:"\u8907\u88FD","Copied!":"\u5DF2\u8907\u88FD\uFF01","MCP integration is only available on desktop":"MCP \u6574\u5408\u50C5\u5728\u684C\u9762\u7248\u53EF\u7528","MCP Server Status":"MCP \u4F3A\u670D\u5668\u72C0\u614B","Enable MCP Server":"\u555F\u7528 MCP \u4F3A\u670D\u5668","Start the MCP server to allow external tool connections":"\u555F\u52D5 MCP \u4F3A\u670D\u5668\u4EE5\u5141\u8A31\u5916\u90E8\u5DE5\u5177\u9023\u63A5","WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:\n\n\u2022 Reading all tasks and their details\n\u2022 Creating new tasks\n\u2022 Updating existing tasks\n\u2022 Deleting tasks\n\u2022 Accessing task metadata and properties\n\nOnly enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.\n\nDo you want to continue?":`\u8B66\u544A\uFF1A\u555F\u7528 MCP \u4F3A\u670D\u5668\u5C07\u5141\u8A31\u5916\u90E8 AI \u5DE5\u5177\u548C\u61C9\u7528\u7A0B\u5F0F\u5B58\u53D6\u548C\u4FEE\u6539\u60A8\u7684\u4EFB\u52D9\u8CC7\u6599\u3002\u9019\u5305\u62EC\uFF1A
\u2022 \u8B80\u53D6\u6240\u6709\u4EFB\u52D9\u53CA\u5176\u8A73\u7D30\u8CC7\u8A0A
\u2022 \u5EFA\u7ACB\u65B0\u4EFB\u52D9
\u2022 \u66F4\u65B0\u73FE\u6709\u4EFB\u52D9
\u2022 \u522A\u9664\u4EFB\u52D9
\u2022 \u5B58\u53D6\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u548C\u5C6C\u6027
\u50C5\u5728\u60A8\u4FE1\u4EFB\u5C07\u9023\u63A5\u5230 MCP \u4F3A\u670D\u5668\u7684\u61C9\u7528\u7A0B\u5F0F\u6642\u624D\u555F\u7528\u6B64\u529F\u80FD\u3002\u8ACB\u78BA\u4FDD\u60A8\u7684\u8A8D\u8B49\u6191\u8B49\u5B89\u5168\u3002
\u60A8\u8981\u7E7C\u7E8C\u55CE\uFF1F`,"MCP Server enabled. Keep your authentication token secure!":"MCP \u4F3A\u670D\u5668\u5DF2\u555F\u7528\u3002\u8ACB\u4FDD\u7BA1\u597D\u60A8\u7684\u8A8D\u8B49\u6191\u8B49\uFF01","Server Configuration":"\u4F3A\u670D\u5668\u8A2D\u5B9A",Host:"\u4E3B\u6A5F","Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces":"\u4F3A\u670D\u5668\u4E3B\u6A5F\u4F4D\u5740\u3002\u4F7F\u7528 127.0.0.1 \u50C5\u9650\u672C\u5730\uFF0C\u4F7F\u7528 0.0.0.0 \u7528\u65BC\u6240\u6709\u4ECB\u9762","Security Warning":"\u5B89\u5168\u8B66\u544A","\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.\n\nThis could expose your Obsidian data to:\n- Other devices on your local network\n- Potentially the internet if your firewall is misconfigured\n\n**Only proceed if you:**\n- Understand the security implications\n- Have properly configured your firewall\n- Need external access for legitimate reasons\n\nAre you sure you want to continue?":`\u26A0\uFE0F **\u8B66\u544A**\uFF1A\u5207\u63DB\u5230 0.0.0.0 \u5C07\u4F7F MCP \u4F3A\u670D\u5668\u53EF\u5F9E\u5916\u90E8\u7DB2\u8DEF\u5B58\u53D6\u3002
\u9019\u53EF\u80FD\u6703\u5C07\u60A8\u7684 Obsidian \u8CC7\u6599\u66B4\u9732\u7D66\uFF1A
- \u60A8\u672C\u5730\u7DB2\u8DEF\u4E0A\u7684\u5176\u4ED6\u88DD\u7F6E
- \u5982\u679C\u60A8\u7684\u9632\u706B\u7246\u8A2D\u5B9A\u4E0D\u7576\uFF0C\u53EF\u80FD\u66B4\u9732\u5230\u7DB2\u969B\u7DB2\u8DEF
**\u50C5\u5728\u7B26\u5408\u4EE5\u4E0B\u689D\u4EF6\u6642\u7E7C\u7E8C\uFF1A**
- \u60A8\u4E86\u89E3\u5B89\u5168\u5F71\u97FF
- \u5DF2\u6B63\u78BA\u8A2D\u5B9A\u9632\u706B\u7246
- \u56E0\u5408\u6CD5\u539F\u56E0\u9700\u8981\u5916\u90E8\u5B58\u53D6
\u60A8\u78BA\u5B9A\u8981\u7E7C\u7E8C\u55CE\uFF1F`,"Yes, I understand the risks":"\u662F\u7684\uFF0C\u6211\u4E86\u89E3\u98A8\u96AA","Host changed to 0.0.0.0. Server is now accessible from external networks.":"\u4E3B\u6A5F\u5DF2\u66F4\u6539\u70BA 0.0.0.0\u3002\u4F3A\u670D\u5668\u73FE\u5728\u53EF\u5F9E\u5916\u90E8\u7DB2\u8DEF\u5B58\u53D6\u3002",Port:"\u9023\u63A5\u57E0","Server port number (default: 7777)":"\u4F3A\u670D\u5668\u9023\u63A5\u57E0\u865F\u78BC\uFF08\u9810\u8A2D\uFF1A7777\uFF09",Authentication:"\u8A8D\u8B49","Authentication Token":"\u8A8D\u8B49\u6191\u8B49","Bearer token for authenticating MCP requests (keep this secret)":"\u7528\u65BC\u9A57\u8B49 MCP \u8ACB\u6C42\u7684 Bearer \u6191\u8B49\uFF08\u8ACB\u4FDD\u5BC6\uFF09",Show:"\u986F\u793A",Hide:"\u96B1\u85CF","Token copied to clipboard":"\u6191\u8B49\u5DF2\u8907\u88FD\u5230\u526A\u8CBC\u7C3F",Regenerate:"\u91CD\u65B0\u7522\u751F","New token generated":"\u5DF2\u7522\u751F\u65B0\u6191\u8B49","Advanced Settings":"\u9032\u968E\u8A2D\u5B9A","Enable CORS":"\u555F\u7528 CORS","Allow cross-origin requests (required for web clients)":"\u5141\u8A31\u8DE8\u4F86\u6E90\u8ACB\u6C42\uFF08\u7DB2\u9801\u5BA2\u6236\u7AEF\u6240\u9700\uFF09","Log Level":"\u65E5\u8A8C\u7D1A\u5225","Logging verbosity for debugging":"\u7528\u65BC\u9664\u932F\u7684\u65E5\u8A8C\u8A73\u7D30\u7A0B\u5EA6",Error:"\u932F\u8AA4",Warning:"\u8B66\u544A",Info:"\u8CC7\u8A0A",Debug:"\u9664\u932F","Server Actions":"\u4F3A\u670D\u5668\u64CD\u4F5C","Test Connection":"\u6E2C\u8A66\u9023\u63A5","Test the MCP server connection":"\u6E2C\u8A66 MCP \u4F3A\u670D\u5668\u9023\u63A5",Test:"\u6E2C\u8A66","Testing...":"\u6E2C\u8A66\u4E2D...","Connection test successful! MCP server is working.":"\u9023\u63A5\u6E2C\u8A66\u6210\u529F\uFF01MCP \u4F3A\u670D\u5668\u6B63\u5728\u904B\u4F5C\u3002","Connection test failed: ":"\u9023\u63A5\u6E2C\u8A66\u5931\u6557\uFF1A","Restart Server":"\u91CD\u65B0\u555F\u52D5\u4F3A\u670D\u5668","Stop and restart the MCP server":"\u505C\u6B62\u4E26\u91CD\u65B0\u555F\u52D5 MCP \u4F3A\u670D\u5668",Restart:"\u91CD\u65B0\u555F\u52D5","MCP server restarted":"MCP \u4F3A\u670D\u5668\u5DF2\u91CD\u65B0\u555F\u52D5","Failed to restart server: ":"\u91CD\u65B0\u555F\u52D5\u4F3A\u670D\u5668\u5931\u6557\uFF1A","Use Next Available Port":"\u4F7F\u7528\u4E0B\u4E00\u500B\u53EF\u7528\u9023\u63A5\u57E0","Port updated to ":"\u9023\u63A5\u57E0\u5DF2\u66F4\u65B0\u70BA ","No available port found in range":"\u5728\u7BC4\u570D\u5167\u627E\u4E0D\u5230\u53EF\u7528\u7684\u9023\u63A5\u57E0","Client Configuration":"\u5BA2\u6236\u7AEF\u8A2D\u5B9A","Authentication Method":"\u8A8D\u8B49\u65B9\u6CD5","Choose the authentication method for client configurations":"\u9078\u64C7\u5BA2\u6236\u7AEF\u8A2D\u5B9A\u7684\u8A8D\u8B49\u65B9\u6CD5","Method B: Combined Bearer (Recommended)":"\u65B9\u6CD5 B\uFF1A\u7D44\u5408 Bearer\uFF08\u63A8\u85A6\uFF09","Method A: Custom Headers":"\u65B9\u6CD5 A\uFF1A\u81EA\u8A02\u6A19\u982D","Supported Authentication Methods:":"\u652F\u63F4\u7684\u8A8D\u8B49\u65B9\u6CD5\uFF1A","API Documentation":"API \u6587\u4EF6","Server Endpoint":"\u4F3A\u670D\u5668\u7AEF\u9EDE","Copy URL":"\u8907\u88FD URL","Available Tools":"\u53EF\u7528\u5DE5\u5177","Loading tools...":"\u8F09\u5165\u5DE5\u5177\u4E2D...","No tools available":"\u6C92\u6709\u53EF\u7528\u7684\u5DE5\u5177","Failed to load tools. Is the MCP server running?":"\u8F09\u5165\u5DE5\u5177\u5931\u6557\u3002MCP \u4F3A\u670D\u5668\u662F\u5426\u6B63\u5728\u904B\u4F5C\uFF1F","Example Request":"\u7BC4\u4F8B\u8ACB\u6C42","MCP Server not initialized":"MCP \u4F3A\u670D\u5668\u672A\u521D\u59CB\u5316",Running:"\u904B\u4F5C\u4E2D",Stopped:"\u5DF2\u505C\u6B62",Uptime:"\u904B\u4F5C\u6642\u9593",Requests:"\u8ACB\u6C42\u6578","Toggle this to enable Org-mode style quick capture panel.":"\u5207\u63DB\u6B64\u9078\u9805\u4EE5\u555F\u7528 Org-mode \u98A8\u683C\u7684\u5FEB\u901F\u64F7\u53D6\u9762\u677F\u3002","Auto-add task prefix":"\u81EA\u52D5\u65B0\u589E\u4EFB\u52D9\u524D\u7DB4","Automatically add task checkbox prefix to captured content":"\u81EA\u52D5\u5728\u64F7\u53D6\u7684\u5167\u5BB9\u524D\u65B0\u589E\u4EFB\u52D9\u6838\u53D6\u65B9\u584A\u524D\u7DB4","Task prefix format":"\u4EFB\u52D9\u524D\u7DB4\u683C\u5F0F","The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)":"\u5728\u64F7\u53D6\u5167\u5BB9\u524D\u65B0\u589E\u7684\u524D\u7DB4\uFF08\u4F8B\u5982\uFF0C'- [ ]' \u7528\u65BC\u4EFB\u52D9\uFF0C'- ' \u7528\u65BC\u6E05\u55AE\u9805\u76EE\uFF09","Search settings...":"\u641C\u5C0B\u8A2D\u5B9A...","Search settings":"\u641C\u5C0B\u8A2D\u5B9A","Clear search":"\u6E05\u9664\u641C\u5C0B","Search results":"\u641C\u5C0B\u7D50\u679C","No settings found":"\u627E\u4E0D\u5230\u8A2D\u5B9A","Project Tree View Settings":"\u5C08\u6848\u6A39\u72C0\u8996\u5716\u8A2D\u5B9A","Configure how projects are displayed in tree view.":"\u8A2D\u5B9A\u5C08\u6848\u5728\u6A39\u72C0\u8996\u5716\u4E2D\u7684\u986F\u793A\u65B9\u5F0F\u3002","Default project view mode":"\u9810\u8A2D\u5C08\u6848\u8996\u5716\u6A21\u5F0F","Choose whether to display projects as a flat list or hierarchical tree by default.":"\u9078\u64C7\u9810\u8A2D\u4EE5\u5E73\u9762\u6E05\u55AE\u6216\u968E\u5C64\u6A39\u72C0\u986F\u793A\u5C08\u6848\u3002","Auto-expand project tree":"\u81EA\u52D5\u5C55\u958B\u5C08\u6848\u6A39","Automatically expand all project nodes when opening the project view in tree mode.":"\u5728\u6A39\u72C0\u6A21\u5F0F\u4E2D\u958B\u555F\u5C08\u6848\u8996\u5716\u6642\u81EA\u52D5\u5C55\u958B\u6240\u6709\u5C08\u6848\u7BC0\u9EDE\u3002","Show empty project folders":"\u986F\u793A\u7A7A\u7684\u5C08\u6848\u8CC7\u6599\u593E","Display project folders even if they don't contain any tasks.":"\u5373\u4F7F\u5C08\u6848\u8CC7\u6599\u593E\u4E0D\u5305\u542B\u4EFB\u4F55\u4EFB\u52D9\u4E5F\u986F\u793A\u3002","Project path separator":"\u5C08\u6848\u8DEF\u5F91\u5206\u9694\u7B26","Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').":"\u7528\u65BC\u5206\u9694\u5C08\u6848\u5C64\u7D1A\u7684\u5B57\u5143\uFF08\u4F8B\u5982 'Project/SubProject' \u4E2D\u7684 '/'\uFF09\u3002","Enable dynamic metadata positioning":"\u555F\u7528\u52D5\u614B\u4E2D\u7E7C\u8CC7\u6599\u5B9A\u4F4D","Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.":"\u667A\u6167\u5B9A\u4F4D\u4EFB\u52D9\u4E2D\u7E7C\u8CC7\u6599\u3002\u555F\u7528\u6642\uFF0C\u4E2D\u7E7C\u8CC7\u6599\u6703\u8207\u77ED\u4EFB\u52D9\u986F\u793A\u5728\u540C\u4E00\u884C\uFF0C\u9577\u4EFB\u52D9\u5247\u986F\u793A\u5728\u4E0B\u65B9\u3002\u505C\u7528\u6642\uFF0C\u4E2D\u7E7C\u8CC7\u6599\u7E3D\u662F\u986F\u793A\u5728\u4EFB\u52D9\u5167\u5BB9\u4E0B\u65B9\u3002","Toggle tree/list view":"\u5207\u63DB\u6A39\u72C0/\u6E05\u55AE\u8996\u5716","Clear date":"\u6E05\u9664\u65E5\u671F","Clear priority":"\u6E05\u9664\u512A\u5148\u7D1A","Clear all tags":"\u6E05\u9664\u6240\u6709\u6A19\u7C64","\u{1F53A} Highest priority":"\u{1F53A} \u6700\u9AD8\u512A\u5148\u7D1A","\u23EB High priority":"\u23EB \u9AD8\u512A\u5148\u7D1A","\u{1F53C} Medium priority":"\u{1F53C} \u4E2D\u512A\u5148\u7D1A","\u{1F53D} Low priority":"\u{1F53D} \u4F4E\u512A\u5148\u7D1A","\u23EC Lowest priority":"\u23EC \u6700\u4F4E\u512A\u5148\u7D1A","Fixed File":"\u56FA\u5B9A\u6A94\u6848","Save to Inbox.md":"\u5132\u5B58\u81F3 Inbox.md","Open Task Genius Setup":"\u958B\u555F Task Genius \u8A2D\u5B9A","MCP Integration":"MCP \u6574\u5408",Beginner:"\u521D\u5B78\u8005","Basic task management with essential features":"\u57FA\u790E\u4EFB\u52D9\u7BA1\u7406\u8207\u5FC5\u8981\u529F\u80FD","Basic progress bars":"\u57FA\u790E\u9032\u5EA6\u689D","Essential views (Inbox, Forecast, Projects)":"\u5FC5\u8981\u8996\u5716\uFF08\u6536\u4EF6\u5323\u3001\u9810\u6E2C\u3001\u5C08\u6848\uFF09","Simple task status tracking":"\u7C21\u55AE\u4EFB\u52D9\u72C0\u614B\u8FFD\u8E64","Quick task capture":"\u5FEB\u901F\u4EFB\u52D9\u64F7\u53D6","Date picker functionality":"\u65E5\u671F\u9078\u64C7\u529F\u80FD","Project management with enhanced workflows":"\u5C08\u6848\u7BA1\u7406\u8207\u589E\u5F37\u5DE5\u4F5C\u6D41\u7A0B","Full progress bar customization":"\u5B8C\u6574\u9032\u5EA6\u689D\u81EA\u8A02","Extended views (Kanban, Calendar, Table)":"\u5EF6\u4F38\u8996\u5716\uFF08\u770B\u677F\u3001\u65E5\u66C6\u3001\u8868\u683C\uFF09","Project management features":"\u5C08\u6848\u7BA1\u7406\u529F\u80FD","Basic workflow automation":"\u57FA\u790E\u5DE5\u4F5C\u6D41\u7A0B\u81EA\u52D5\u5316","Advanced filtering and sorting":"\u9032\u968E\u7BE9\u9078\u8207\u6392\u5E8F","Power User":"\u9032\u968E\u4F7F\u7528\u8005","Full-featured experience with all capabilities":"\u5B8C\u6574\u529F\u80FD\u9AD4\u9A57\u8207\u6240\u6709\u80FD\u529B","All views and advanced configurations":"\u6240\u6709\u8996\u5716\u8207\u9032\u968E\u8A2D\u5B9A","Complex workflow definitions":"\u8907\u96DC\u5DE5\u4F5C\u6D41\u7A0B\u5B9A\u7FA9","Reward and habit tracking systems":"\u734E\u52F5\u8207\u7FD2\u6163\u8FFD\u8E64\u7CFB\u7D71","Performance optimizations":"\u6548\u80FD\u6700\u4F73\u5316","Advanced integrations":"\u9032\u968E\u6574\u5408","Experimental features":"\u5BE6\u9A57\u6027\u529F\u80FD","Timeline and calendar sync":"\u6642\u9593\u8EF8\u8207\u65E5\u66C6\u540C\u6B65","Not configured":"\u672A\u8A2D\u5B9A",Custom:"\u81EA\u8A02","Custom views created":"\u5DF2\u5EFA\u7ACB\u81EA\u8A02\u8996\u5716","Progress bar settings modified":"\u5DF2\u4FEE\u6539\u9032\u5EA6\u689D\u8A2D\u5B9A","Task status settings configured":"\u5DF2\u8A2D\u5B9A\u4EFB\u52D9\u72C0\u614B\u8A2D\u5B9A","Quick capture configured":"\u5DF2\u8A2D\u5B9A\u5FEB\u901F\u64F7\u53D6","Workflow settings enabled":"\u5DF2\u555F\u7528\u5DE5\u4F5C\u6D41\u7A0B\u8A2D\u5B9A","Advanced features enabled":"\u5DF2\u555F\u7528\u9032\u968E\u529F\u80FD","File parsing customized":"\u5DF2\u81EA\u8A02\u6A94\u6848\u89E3\u6790"},xj=uz});var Ej,mv,_o,Am,pt,fv=b(()=>{Ej=A(require("obsidian"));uj();mj();hj();kj();wj();bj();Cj();Sj();mv={en:pv,"en-gb":pj,ja:fj,"pt-br":gj,ru:yj,uk:vj,"zh-cn":Tj,"zh-tw":xj},_o=class{constructor(){this.currentLocale="en";this.translations=new Map;this.fallbackTranslation=pv;this.lowercaseKeyMap=new Map;try{this.currentLocale=Ej.moment.locale()}catch(e){this.currentLocale="en"}Object.entries(mv).forEach(([e,t])=>{this.translations.set(e,t);let a=new Map;Object.keys(t).forEach(r=>{a.set(r.toLowerCase(),r)}),this.lowercaseKeyMap.set(e,a)})}static getInstance(){return _o.instance||(_o.instance=new _o),_o.instance}setLocale(e){e in mv?this.currentLocale=e:this.currentLocale="en"}getSupportedLocales(){return Object.keys(mv)}t(e,t){let a=this.translations.get(this.currentLocale)||this.fallbackTranslation,r=this.getNestedValue(a,e);if(!r){let i=e.toLowerCase(),n=this.lowercaseKeyMap.get(this.currentLocale),o=n==null?void 0:n.get(i);o&&(r=this.getNestedValue(a,o))}if(!r&&(r=this.getNestedValue(this.fallbackTranslation,e),!r)){let i=e.toLowerCase(),n=this.lowercaseKeyMap.get("en"),o=n==null?void 0:n.get(i);o?r=this.getNestedValue(this.fallbackTranslation,o):r=e}return(t==null?void 0:t.interpolation)&&(r=this.interpolate(r,t.interpolation)),r=r.replace(/^["""']|["""']$/g,""),r}getNestedValue(e,t){return e[t]}interpolate(e,t){return e.replace(/\{\{(\w+)\}\}/g,(a,r)=>{var i;return((i=t[r])==null?void 0:i.toString())||`{{${r}}}`})}},Am=_o.getInstance(),pt=(s,e)=>Am.t(s,e)});var pz,c,Q=b(()=>{pz=A(require("obsidian"));fv();c=Am.t.bind(Am)});function hv(s,e){let t=Object.keys(e).map(a=>mz(s,a,e[a]));return t.length===1?t[0]:function(){t.forEach(a=>a())}}function mz(s,e,t){let a=s[e],r=s.hasOwnProperty(e),i=r?a:function(){return Object.getPrototypeOf(s)[e].apply(this,arguments)},n=t(i);return a&&Object.setPrototypeOf(n,a),Object.setPrototypeOf(o,n),s[e]=o,l;function o(...d){return n===i&&s[e]===o&&l(),n.apply(this,d)}function l(){s[e]===o&&(r?s[e]=i:delete s[e]),n!==i&&(n=i,Object.setPrototypeOf(o,a||Function))}}var Pj=b(()=>{});function yi(s,e,t){let a=fz(s);return new Aj(s,a,e,t)}function fz(s){let e=s.embedRegistry.embedByExtension.md({app:s,containerEl:createDiv()},null,"");e.editable=!0,e.showEditor();let t=Object.getPrototypeOf(Object.getPrototypeOf(e.editMode));return e.unload(),t.constructor}var Mj,Im,Ql,hz,Aj,Xl=b(()=>{Mj=A(require("obsidian")),Im=A(require("@codemirror/state")),Ql=A(require("@codemirror/view"));Pj();hz={cursorLocation:{anchor:0,head:0},value:"",singleLine:!1,cls:"",placeholder:"",onEnter:()=>!1,onEscape:()=>{},onSubmit:()=>{},onBlur:()=>{},onPaste:()=>{},onChange:()=>{}},Aj=class{get editorEl(){return this.editor.editorEl}get containerEl(){return this.editor.containerEl}get activeCM(){return this.editor.activeCM}get app(){return this.editor.app}get owner(){return this.editor.owner}get _loaded(){return this.editor._loaded}constructor(e,t,a,r){var l;this.options={...hz,...r},this.initial_value=this.options.value,this.scope=new Mj.Scope(e.scope),this.scope.register(["Mod"],"Enter",()=>!0);let i=this,n=hv(t.prototype,{buildLocalExtensions:d=>function(){let u=d.call(this);if(this===i.editor){i.options.placeholder&&u.push((0,Ql.placeholder)(i.options.placeholder)),u.push(Ql.EditorView.domEventHandlers({paste:m=>{i.options.onPaste(m,i)},blur:()=>{e.keymap.popScope(i.scope),i.options.onBlur&&i.options.onBlur(i)},focusin:()=>{e.keymap.pushScope(i.scope),e.workspace.activeEditor=i.owner}}));let p=[{key:"Enter",run:()=>i.options.onEnter(i,!1,!1),shift:()=>i.options.onEnter(i,!1,!0)},{key:"Mod-Enter",run:()=>i.options.onEnter(i,!0,!1),shift:()=>i.options.onEnter(i,!0,!0)},{key:"Escape",run:()=>(i.options.onEscape(i),!0),preventDefault:!0}];i.options.singleLine&&(p[0]={key:"Enter",run:()=>i.options.onEnter(i,!1,!1),shift:()=>i.options.onEnter(i,!1,!0)}),u.push(Im.Prec.highest(Ql.keymap.of(p)))}return u}});this.editor=new t(e,a,{app:e,onMarkdownScroll:()=>{},getMode:()=>"source"}),this.register(n),this.owner&&(this.owner.editMode=this,this.owner.editor=this.editor.editor),this.set(r.value||"",!1),this.register(hv(e.workspace,{setActiveLeaf:d=>(u,...p)=>{var m;((m=this.activeCM)==null?void 0:m.hasFocus)||d.call(e.workspace,u,...p)}})),r.cls&&this.editorEl&&this.editorEl.classList.add(r.cls),r.cursorLocation&&((l=this.editor.editor)==null?void 0:l.cm)&&this.editor.editor.cm.dispatch({selection:Im.EditorSelection.range(r.cursorLocation.anchor,r.cursorLocation.head)});let o=this.editor.onUpdate.bind(this.editor);this.editor.onUpdate=(d,u)=>{o(d,u),u&&this.options.onChange(d)}}get value(){var e,t;return((t=(e=this.editor.editor)==null?void 0:e.cm)==null?void 0:t.state.doc.toString())||""}set(e,t=!1){this.editor.set(e,t)}register(e){this.editor.register(e)}destroy(){this._loaded&&typeof this.editor.unload=="function"&&this.editor.unload(),this.app.keymap.popScope(this.scope),this.app.workspace.activeEditor=null,this.containerEl.empty(),this.editor.destroy()}onunload(){typeof this.editor.onunload=="function"&&this.editor.onunload(),this.destroy()}unload(){typeof this.editor.unload=="function"&&this.editor.unload()}}});function gz(s,e){let t=s.vault.getFileByPath(e);if(!t&&!e.endsWith(".md")){let a=`${e}.md`;t=s.vault.getFileByPath(a)}return t}function kz(s){return s.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function Ij(s){let e=s.split("/");return e.map((a,r)=>r===e.length-1?kz(a):a.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}function kv(s){let e=/\{\{DATE?:([^}]+)\}\}/gi,t=s.replace(e,(a,r)=>{try{return!r||r.trim()===""?a:(0,gv.moment)().format(r)}catch(i){return console.warn(`Invalid date format in template: ${r}`,i),a}});return Ij(t)}async function wi(s,e,t){let{targetFile:a,appendToFile:r,targetType:i,targetHeading:n,dailyNoteSettings:o}=t,l;if(i==="daily-note"&&o){let u=(0,gv.moment)().format(o.format),p=o.folder?`${o.folder}/${u}.md`:`${u}.md`;l=Ij(p)}else l=kv(a||"Quick Capture.md");let d=s.vault.getFileByPath(l);if(d)if(d instanceof Jl.TFile)await s.vault.process(d,u=>{if(n)return yz(u,e,n,r||"append");switch(r){case"append":{let p=(0,Jl.getFrontMatterInfo)(u),m=u.endsWith(`
`)?"":`
`;if(p.exists){let f=p.contentStart;if(f!==void 0){let h=u.slice(0,f),k=u.slice(f);return h+k+m+e}else return u+m+e}else return u+m+e}case"prepend":{let p=(0,Jl.getFrontMatterInfo)(u),m=`
`;return p.exists&&p.contentStart!==void 0?u.slice(0,p.contentStart)+e+m+u.slice(p.contentStart):e+m+u}case"replace":default:return e}});else throw new Error("Target is not a file");else{let u=l.split("/");if(u.length>1){let m=u.slice(0,-1).join("/");try{await s.vault.createFolder(m)}catch(f){}}let p="";if(i==="daily-note"&&(o==null?void 0:o.template)){let m=gz(s,o.template);if(m instanceof Jl.TFile)try{p=await s.vault.read(m)}catch(f){console.warn("Failed to read template file:",f)}else console.warn(`Template file not found: ${o.template} (tried with and without .md extension)`)}if(n)if(p){let m=new RegExp(`^#{1,6}\\s+${n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"m");m.test(p)?p=p.replace(m,`$&
${e}`):p+=`
## ${n}
${e}`}else p=`## ${n}
${e}`;else r==="prepend"?p=p?`${e}
${p}`:e:p=p?`${p}
${e}`:e;d=await s.vault.create(l,p)}}function yz(s,e,t,a){let r=s.split(`
`),i=new RegExp(`^(#{1,6})\\s+${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),n=-1,o=0;for(let m=0;m<r.length;m++){let f=r[m].match(i);if(f){n=m,o=f[1].length;break}}if(n===-1){let m=s.endsWith(`
`)?"":`
`;return`${s}${m}
## ${t}
${e}`}let l=r.length;for(let m=n+1;m<r.length;m++){let h=r[m].match(/^(#{1,6})\s+/);if(h&&h[1].length<=o){l=m;break}}let d;if(a==="prepend")for(d=n+1;d<l&&r[d].trim()==="";)d++;else for(d=l;d>n+1&&r[d-1].trim()==="";)d--;let u=e.split(`
`);return[...r.slice(0,d),"",...u,"",...r.slice(d)].join(`
`)}var Jl,gv,Zl=b(()=>{Jl=A(require("obsidian")),gv=A(require("obsidian"))});function yv(s){var t;let e=Date.now();if(!Rm||e-Rm.lastUpdate>wz){let a=Object.keys(s.app.metadataCache.getTags()||{}).map(n=>n.substring(1)),{projects:r,contexts:i}=((t=s.taskManager)==null?void 0:t.getAvailableContextOrProjects())||{projects:[],contexts:[]};Rm={tags:a,projects:r,contexts:i,lastUpdate:e}}return Rm}var Ys,Rm,wz,Rj,Uo,Or,Nr,zs,wv,vv,bv,ec,Tv,hs=b(()=>{Ys=A(require("obsidian")),Rm=null,wz=3e4;Rj=class extends Ys.AbstractInputSuggest{constructor(e,t){super(e,t);this.inputEl=t}renderSuggestion(e,t){t.setText(this.getSuggestionText(e))}selectSuggestion(e,t){if(!this.inputEl){console.warn("BaseSuggest: inputEl is undefined, cannot set value"),this.close();return}this.inputEl.value=this.getSuggestionValue(e),this.inputEl.trigger("input"),this.close()}},Uo=class extends Rj{constructor(e,t,a){super(e,t);this.availableChoices=[];this.availableChoices=a}getSuggestions(e){if(!e)return this.availableChoices.slice(0,100);let t=(0,Ys.prepareFuzzySearch)(e.toLowerCase());return this.availableChoices.filter(a=>t(a.toLowerCase())).slice(0,100)}getSuggestionText(e){return e}getSuggestionValue(e){return e}},Or=class extends Uo{constructor(e,t,a){let r=yv(a);super(e,t,r.projects)}},Nr=class extends Uo{constructor(e,t,a){let r=yv(a);super(e,t,r.contexts)}},zs=class extends Uo{constructor(e,t,a){let r=yv(a);super(e,t,r.tags)}getSuggestions(e){let t=e.split(","),a=t[t.length-1].trim();if(!a)return this.availableChoices.slice(0,100);let r=(0,Ys.prepareFuzzySearch)(a.toLowerCase());return this.availableChoices.filter(i=>r(i.toLowerCase())).slice(0,100)}getSuggestionValue(e){let a=this.inputEl.value.split(",");return a[a.length-1]=`#${e}`,`${a.join(",")},`}getSuggestionText(e){return`#${e}`}},wv=class extends Uo{constructor(e,t,a){let i=e.vault.getAllFolders().map(n=>n.path);super(e,t,["/",...i])}},vv=class extends Uo{constructor(e,t,a,r="multiple"){let n=e.vault.getAllFolders().map(o=>o.path);super(e,t,n);this.plugin=a,this.outputType=r}getSuggestions(e){if(this.outputType==="multiple"){let t=e.split(","),a=t[t.length-1].trim();if(!a)return this.availableChoices.slice(0,20);let r=(0,Ys.prepareFuzzySearch)(a.toLowerCase());return this.availableChoices.filter(i=>r(i.toLowerCase())).sort((i,n)=>i.length-n.length).slice(0,20)}else{if(!e.trim())return this.availableChoices.slice(0,20);let t=(0,Ys.prepareFuzzySearch)(e.toLowerCase());return this.availableChoices.filter(a=>t(a.toLowerCase())).sort((a,r)=>a.length-r.length).slice(0,20)}}getSuggestionText(e){return e}getSuggestionValue(e){if(this.outputType==="multiple"){let a=this.inputEl.value.split(",");return a[a.length-1]=e,a.join(",")}else return e}},bv=class extends Uo{constructor(e,t,a){let i=e.vault.getFiles().filter(n=>n.extension==="png"||n.extension==="jpg"||n.extension==="jpeg"||n.extension==="gif"||n.extension==="svg"||n.extension==="webp").map(n=>n.path);super(e,t,i)}},ec=class extends Ys.AbstractInputSuggest{constructor(e,t,a,r){super(e,t);this.currentTarget="Quick Capture.md";this.suggestEl.addClass("quick-capture-file-suggest"),this.currentTarget=a.targetFile||"Quick Capture.md",this.onFileSelected=r||(i=>{this.setValue(i.path)}),this.scope.register(["Alt"],"x",i=>(t.focus(),!0)),this.setValue(this.currentTarget),this.onSelect((i,n)=>{this.onFileSelected(i)})}getSuggestions(e){let t=this.app.vault.getMarkdownFiles(),a=e.toLowerCase(),r=(0,Ys.prepareFuzzySearch)(a);return t.map(i=>{let n=r(i.path);return n?{file:i,score:n.score}:null}).filter(i=>i!==null).sort((i,n)=>n.score-i.score).map(i=>i.file).slice(0,10)}renderSuggestion(e,t){t.setText(e.path)}selectSuggestion(e,t){this.setValue(e.path),this.onFileSelected(e),this.close()}},Tv=class extends Ys.AbstractInputSuggest{constructor(e,t,a){super(t.app,e);this.onFileSelected=a||(()=>{})}getSuggestions(e){let t=this.app.vault.getMarkdownFiles(),a=e.toLowerCase(),r=(0,Ys.prepareFuzzySearch)(a);return t.map(i=>{let n=r(i.path);return n?{file:i,score:n.score}:null}).filter(i=>i!==null).sort((i,n)=>n.score-i.score).map(i=>i.file).slice(0,10)}renderSuggestion(e,t){t.setText(e.path)}selectSuggestion(e,t){var a;this.setValue(e.path),(a=this.onFileSelected)==null||a.call(this,e),this.close()}}});function vz(s){let e="",t=0;for(;t<s.length;)if(t<s.length-1&&s[t]==="["&&s[t+1]==="["){let a=t+2,r=1;for(;a<s.length-1&&r>0;){if(s[a]==="]"&&s[a+1]==="]"){if(r--,r===0){a+=2;break}}else s[a]==="["&&s[a+1]==="["&&(r++,a++);a++}e+=s.substring(t,a),t=a}else if(s[t]==="#"){let a=s.substring(t).match(q0);a&&a.index===0?t+=a[0].length:(e+=s[t],t++)}else e+=s[t],t++;return e}function Ka(s){if(!s)return s;let e=s,t=[zn.startDateSymbol,zn.createdDateSymbol,zn.scheduledDateSymbol,zn.dueDateSymbol,zn.doneDateSymbol,"\u274C"].filter(Boolean);if(e=e.replace(/\s*~\s*📅\s*/g," "),t.forEach(p=>{if(!p)return;let m=p.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),f=new RegExp(`${m}\\uFE0F? *\\d{4}-\\d{2}-\\d{2}`,"gu");e=e.replace(f,"")}),e=e.replace(/\s+(?:[🔺⏫🔼🔽⏬️⏬]|\[#[A-C]\])/gu,""),e=e.replace(/\s+!\s*/g," "),e=e.replace(/^\s*!\s*/,""),e=e.replace(/\s*!\s*$/,""),e=e.replace(/🆔\s*[^\s]+/g,""),e=e.replace(/⛔\s*[^\s]+/g,""),e=e.replace(/🏁\s*[^\s]+/g,""),zn.recurrenceSymbol){let p=zn.recurrenceSymbol.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),m=t.map(k=>k.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),f=["\u{1F194}","\u26D4","\u{1F3C1}"].map(k=>k.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),h=new RegExp(`${p}\\uFE0F? *.*?(?=s(?:[${m}${f}${p}]|@|#)|$)`,"gu");e=e.replace(h,"")}e=e.replace(/\[(?:due|📅|completion|✅|created||start|🛫|scheduled|⏳|cancelled|❌|id|🆔|dependsOn|⛔|onCompletion|🏁|priority|repeat|recurrence|🔁|project|context)::\s*[^\]]+\]/gi,"");let a=[],r=/`([^`]+?)`/g,i=/\[\[([^\]]+)\]\]/g,n=/\[([^\[\]]*)\]\((.*?)\)/g,o,l=0;for(r.lastIndex=0;(o=r.exec(e))!==null;)a.push({text:o[0],index:o.index,length:o[0].length,id:`code_${l++}`});for(i.lastIndex=0;(o=i.exec(e))!==null;){let p=o.index,m=p+o[0].length;a.some(h=>Math.max(h.index,p)<Math.min(h.index+h.length,m))||a.push({text:o[0],index:p,length:o[0].length,id:`wiki_${l++}`})}for(n.lastIndex=0;(o=n.exec(e))!==null;){let p=o.index,m=p+o[0].length;a.some(h=>Math.max(h.index,p)<Math.min(h.index+h.length,m))||a.push({text:o[0],index:p,length:o[0].length,id:`md_${l++}`})}let d=e,u=new Map;if(a.length>0){a.sort((p,m)=>m.index-p.index);for(let p of a){let m=`__PRESERVED_${p.id}__`;u.set(m,p.text),d=d.substring(0,p.index)+m+d.substring(p.index+p.length)}}d=vz(d),d=d.replace(/@[\w-]+/g,""),d=d.replace(/\btarget:\s*/gi,""),d=d.replace(/\s*📁\s*/g," "),d=d.replace(/#(?![0-9-]+\b)[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,""),d=d.replace(/\s+~\s+/g," "),d=d.replace(/\s+~(?=\s|$)/g,""),d=d.replace(/^~\s+/,"");for(let[p,m]of u)d=d.replace(p,m);return d=d.replace(/^([\s>]*)?(-|\d+\.|\*|\+)\s\[(.)\]\s*/,""),d=d.replace(/^# /,""),d=d.replace(/\s+/g," ").trim(),d}var iu,Qt,Cr=b(()=>{iu=A(require("obsidian"));Yd();Qt=class extends iu.Component{constructor(e,t,a="",r=!0){super();this.app=e;this.hideMarks=r;this.currentFile=null;this.renderQueue=[];this.isRendering=!1;this.blockElements=new Map;this.container=t,this.sourcePath=a}setFile(e){this.currentFile=e,this.sourcePath=e.path}get file(){return this.currentFile}async render(e,t=!0){t&&this.clear();let a=this.splitIntoBlocks(e);for(let r=0;r<a.length;r++){let i=`block-${Date.now()}-${r}`,n=this.container.createEl("div",{cls:["markdown-block","markdown-renderer"]});n.dataset.blockId=i,this.blockElements.set(i,n),this.queueRender(a[r],i)}this.processRenderQueue()}splitIntoBlocks(e){return this.hideMarks?Ka(e).split(/\n\s*\n/).filter(t=>t.trim().length>0):e.split(/\n\s*\n/).filter(t=>t.trim().length>0)}queueRender(e,t){this.renderQueue.push({markdown:e,blockId:t}),this.processRenderQueue()}async processRenderQueue(){if(!(this.isRendering||this.renderQueue.length===0)){this.isRendering=!0;try{for(;this.renderQueue.length>0;){let e=this.renderQueue.shift();if(!e)continue;let{markdown:t,blockId:a}=e;if(a){let r=this.blockElements.get(a);r&&(r.empty(),await iu.MarkdownRenderer.render(this.app,t,r,this.sourcePath,this))}else await iu.MarkdownRenderer.render(this.app,t,this.container,this.sourcePath,this);await new Promise(r=>setTimeout(r,0))}}finally{this.isRendering=!1}}}updateBlock(e,t){this.blockElements.has(e)&&this.queueRender(t,e)}update(e){this.renderQueue=[],this.render(e,!0)}addBlock(e){let t=`block-${Date.now()}-${this.blockElements.size}`,a=this.container.createEl("div",{cls:"markdown-block"});return a.dataset.blockId=t,this.blockElements.set(t,a),this.queueRender(e,t),t}removeBlock(e){let t=this.blockElements.get(e);t&&(t.remove(),this.blockElements.delete(e))}clear(){this.container.empty(),this.blockElements.clear(),this.renderQueue=[]}onunload(){this.clear(),super.onunload()}}});var Fj=b(()=>{});var ie,Zi=b(()=>{(function(n){n.DELETE="delete",n.KEEP="keep",n.COMPLETE="complete",n.MOVE="move",n.ARCHIVE="archive",n.DUPLICATE="duplicate"})(ie||(ie={}))});var Fm,Cv,nu,jj=b(()=>{Fm=A(require("obsidian")),Cv=class extends Fm.AbstractInputSuggest{constructor(e,t,a,r){super(e,t);this.plugin=a;this.onChoose=r;this.inputEl=t}getSuggestions(e){return this.plugin.taskManager?this.plugin.taskManager.getAllTasks().filter(r=>r.metadata.id).map(r=>r.metadata.id).filter(r=>r.toLowerCase().includes(e.toLowerCase())).slice(0,10):[]}renderSuggestion(e,t){var r;t.createDiv({text:e,cls:"task-id-suggestion"});let a=(r=this.plugin.taskManager)==null?void 0:r.getTaskById(e);a&&t.createDiv({text:a.content,cls:"task-content-preview"})}selectSuggestion(e){if(!this.inputEl){console.warn("TaskIdSuggest: inputEl is undefined, cannot set value"),this.close();return}let t=this.inputEl.value,a=t.lastIndexOf(",");if(a!==-1){let r=t.substring(0,a+1);this.inputEl.value=r+" "+e}else this.inputEl.value=e;this.inputEl.trigger("input"),this.onChoose(e),this.close()}},nu=class extends Fm.AbstractInputSuggest{constructor(e,t,a){super(e,t);this.onChoose=a;this.inputEl=t,this.onChoose=a}getSuggestions(e){return this.app.vault.getMarkdownFiles().filter(a=>a.path.toLowerCase().includes(e.toLowerCase())).slice(0,10)}renderSuggestion(e,t){t.createDiv({text:e.name,cls:"file-name"}),t.createDiv({text:e.path,cls:"file-path"})}selectSuggestion(e){if(!this.inputEl){console.warn("FileLocationSuggest: inputEl is undefined, cannot set value"),this.close();return}this.inputEl.value=e.path,this.inputEl.trigger("input"),this.onChoose(e),this.close()}}});var xv=b(()=>{});var xr,$o,jm=b(()=>{xr=A(require("obsidian"));Zi();Q();jj();xv();$o=class extends xr.Component{constructor(e,t,a={}){super();this.plugin=t;this.options=a;this.currentConfig=null;this.currentRawValue="";this.isInternalUpdate=!1;this.lastActionType=null;this.isUserConfiguring=!1;this.containerEl=e.createDiv({cls:"oncompletion-configurator"}),this.initializeUI(),this.options.initialValue&&this.setValue(this.options.initialValue)}initializeUI(){let e=this.containerEl.createDiv({cls:"oncompletion-action-type"});e.createDiv({cls:"oncompletion-label",text:c("Action Type")}),this.actionTypeDropdown=new xr.DropdownComponent(e),this.actionTypeDropdown.addOption("",c("Select action type...")),this.actionTypeDropdown.addOption(ie.DELETE,c("Delete task")),this.actionTypeDropdown.addOption(ie.KEEP,c("Keep task")),this.actionTypeDropdown.addOption(ie.COMPLETE,c("Complete related tasks")),this.actionTypeDropdown.addOption(ie.MOVE,c("Move task")),this.actionTypeDropdown.addOption(ie.ARCHIVE,c("Archive task")),this.actionTypeDropdown.addOption(ie.DUPLICATE,c("Duplicate task")),this.actionTypeDropdown.onChange(t=>{this.onActionTypeChange(t)}),this.configContainer=this.containerEl.createDiv({cls:"oncompletion-config"})}onActionTypeChange(e){if(this.isInternalUpdate=!0,this.lastActionType=e,this.isUserConfiguring=!1,this.configContainer.empty(),this.currentConfig=null,!e){this.updateValue(),this.isInternalUpdate=!1;return}switch(e){case ie.DELETE:this.currentConfig={type:ie.DELETE};break;case ie.KEEP:this.currentConfig={type:ie.KEEP};break;case ie.COMPLETE:this.createCompleteConfiguration();break;case ie.MOVE:this.createMoveConfiguration();break;case ie.ARCHIVE:this.createArchiveConfiguration();break;case ie.DUPLICATE:this.createDuplicateConfiguration();break}this.updateValue(),this.isInternalUpdate=!1}initializeUIForActionType(e,t){if(this.isInternalUpdate=!0,this.configContainer.empty(),!e){this.isInternalUpdate=!1;return}switch(e){case ie.DELETE:this.currentConfig=t||{type:ie.DELETE};break;case ie.KEEP:this.currentConfig=t||{type:ie.KEEP};break;case ie.COMPLETE:this.createCompleteConfiguration(t);break;case ie.MOVE:this.createMoveConfiguration(t);break;case ie.ARCHIVE:this.createArchiveConfiguration(t);break;case ie.DUPLICATE:this.createDuplicateConfiguration(t);break}this.isInternalUpdate=!1}createCompleteConfiguration(e){let t=e&&e.type===ie.COMPLETE?e:{type:ie.COMPLETE,taskIds:[]};this.currentConfig=t;let a=this.configContainer.createDiv({cls:"oncompletion-field"});a.createDiv({cls:"oncompletion-label",text:c("Task IDs")}),this.taskIdsInput=new xr.TextComponent(a),this.taskIdsInput.setPlaceholder(c("Enter task IDs separated by commas")),t.taskIds&&t.taskIds.length>0&&this.taskIdsInput.setValue(t.taskIds.join(", ")),this.taskIdsInput.onChange(r=>{this.currentConfig&&this.currentConfig.type===ie.COMPLETE&&(this.isUserConfiguring=!0,this.currentConfig.taskIds=r.split(",").map(i=>i.trim()).filter(i=>i),this.updateValue())}),new Cv(this.plugin.app,this.taskIdsInput.inputEl,this.plugin,r=>{}),a.createDiv({cls:"oncompletion-description",text:c("Comma-separated list of task IDs to complete when this task is completed")})}createMoveConfiguration(e){let t=e&&e.type===ie.MOVE?e:{type:ie.MOVE,targetFile:""};this.currentConfig=t;let a=this.configContainer.createDiv({cls:"oncompletion-field"});a.createDiv({cls:"oncompletion-label",text:c("Target File")}),this.targetFileInput=new xr.TextComponent(a),this.targetFileInput.setPlaceholder(c("Path to target file")),t.targetFile&&this.targetFileInput.setValue(t.targetFile),this.targetFileInput.onChange(i=>{this.currentConfig&&this.currentConfig.type===ie.MOVE&&(this.isUserConfiguring=!0,this.currentConfig.targetFile=i,this.updateValue())}),new nu(this.plugin.app,this.targetFileInput.inputEl,i=>{});let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:c("Target Section (Optional)")}),this.targetSectionInput=new xr.TextComponent(r),this.targetSectionInput.setPlaceholder(c("Section name in target file")),t.targetSection&&this.targetSectionInput.setValue(t.targetSection),this.targetSectionInput.onChange(i=>{this.currentConfig&&this.currentConfig.type===ie.MOVE&&(this.isUserConfiguring=!0,this.currentConfig.targetSection=i||void 0,this.updateValue())})}createArchiveConfiguration(e){let t=e&&e.type===ie.ARCHIVE?e:{type:ie.ARCHIVE};this.currentConfig=t;let a=this.configContainer.createDiv({cls:"oncompletion-field"});a.createDiv({cls:"oncompletion-label",text:c("Archive File (Optional)")}),this.archiveFileInput=new xr.TextComponent(a),this.archiveFileInput.setPlaceholder(c("Default: Archive/Completed Tasks.md")),t.archiveFile&&this.archiveFileInput.setValue(t.archiveFile),this.archiveFileInput.onChange(i=>{this.currentConfig&&this.currentConfig.type===ie.ARCHIVE&&(this.isUserConfiguring=!0,this.currentConfig.archiveFile=i||void 0,this.updateValue())}),new nu(this.plugin.app,this.archiveFileInput.inputEl,i=>{});let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:c("Archive Section (Optional)")}),this.archiveSectionInput=new xr.TextComponent(r),this.archiveSectionInput.setPlaceholder(c("Default: Completed Tasks")),t.archiveSection&&this.archiveSectionInput.setValue(t.archiveSection),this.archiveSectionInput.onChange(i=>{this.currentConfig&&this.currentConfig.type===ie.ARCHIVE&&(this.isUserConfiguring=!0,this.currentConfig.archiveSection=i||void 0,this.updateValue())})}createDuplicateConfiguration(e){let t=e&&e.type===ie.DUPLICATE?e:{type:ie.DUPLICATE};this.currentConfig=t;let a=this.configContainer.createDiv({cls:"oncompletion-field"});a.createDiv({cls:"oncompletion-label",text:c("Target File (Optional)")}),this.targetFileInput=new xr.TextComponent(a),this.targetFileInput.setPlaceholder(c("Default: same file")),t.targetFile&&this.targetFileInput.setValue(t.targetFile),this.targetFileInput.onChange(n=>{this.currentConfig&&this.currentConfig.type===ie.DUPLICATE&&(this.isUserConfiguring=!0,this.currentConfig.targetFile=n||void 0,this.currentConfig,this.updateValue())}),new nu(this.plugin.app,this.targetFileInput.inputEl,n=>{});let r=this.configContainer.createDiv({cls:"oncompletion-field"});r.createDiv({cls:"oncompletion-label",text:c("Target Section (Optional)")}),this.targetSectionInput=new xr.TextComponent(r),this.targetSectionInput.setPlaceholder(c("Section name in target file")),t.targetSection&&this.targetSectionInput.setValue(t.targetSection),this.targetSectionInput.onChange(n=>{this.currentConfig&&this.currentConfig.type===ie.DUPLICATE&&(this.isUserConfiguring=!0,this.currentConfig.targetSection=n||void 0,this.updateValue())});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:c("Preserve Metadata")}),this.preserveMetadataToggle=new xr.ToggleComponent(i),t.preserveMetadata!==void 0&&this.preserveMetadataToggle.setValue(t.preserveMetadata),this.preserveMetadataToggle.onChange(n=>{this.currentConfig&&this.currentConfig.type===ie.DUPLICATE&&(this.isUserConfiguring=!0,this.currentConfig.preserveMetadata=n,this.updateValue())}),i.createDiv({cls:"oncompletion-description",text:c("Keep completion dates and other metadata in the duplicated task")})}updateValue(){var a,r,i;this.currentConfig?this.currentRawValue=this.generateRawValue(this.currentConfig):this.currentRawValue="";let e=(r=(a=this.plugin.taskManager)==null?void 0:a.getOnCompletionManager())==null?void 0:r.parseOnCompletion(this.currentRawValue),t=(i=e==null?void 0:e.isValid)!=null?i:!1;(!this.isInternalUpdate||this.isUserConfiguring)&&this.options.onChange&&this.options.onChange(this.currentRawValue),this.options.onValidationChange&&this.options.onValidationChange(t,e==null?void 0:e.error)}generateRawValue(e){switch(e.type){case ie.DELETE:return"delete";case ie.KEEP:return"keep";case ie.ARCHIVE:let t=e;return t.archiveFile?`archive:${t.archiveFile}`:"archive";case ie.COMPLETE:let a=e;return a.taskIds&&a.taskIds.length>0?`complete:${a.taskIds.join(",")}`:"complete:";case ie.MOVE:let r=e;return r.targetFile?`move:${r.targetFile}`:"move:";case ie.DUPLICATE:let i=e;return i.targetFile||i.targetSection||i.preserveMetadata?JSON.stringify(e):"duplicate";default:return JSON.stringify(e)}}setValue(e){var a,r;this.currentRawValue=e;let t=(r=(a=this.plugin.taskManager)==null?void 0:a.getOnCompletionManager())==null?void 0:r.parseOnCompletion(e);(t==null?void 0:t.isValid)&&t.config?(this.currentConfig=t.config,this.updateUIFromConfig(t.config)):(this.currentConfig=null,this.actionTypeDropdown.setValue(""),this.configContainer.empty())}updateUIFromConfig(e){this.actionTypeDropdown.setValue(e.type),this.initializeUIForActionType(e.type,e)}getValue(){return this.currentRawValue}getConfig(){return this.currentConfig}isValid(){var t,a,r;let e=(a=(t=this.plugin.taskManager)==null?void 0:t.getOnCompletionManager())==null?void 0:a.parseOnCompletion(this.currentRawValue);return(r=e==null?void 0:e.isValid)!=null?r:!1}onunload(){this.containerEl.remove()}}});function bz(s,e){let t=Object.keys(e.taskStatuses).find(r=>e.taskStatuses[r].split("|").includes(s.status));return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[t]||"No status"}function Oj(s,e){return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[s]||"No status"}function Ot(s,e,t){let a=t.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});return a.dataset.task=s,s!==" "&&(a.checked=!0),a}var Qa,en,Lr=b(()=>{Qa=A(require("obsidian"));Fj();Q();Cr();Om();hs();xa();jm();en=class extends Qa.Component{constructor(e,t,a){super();this.parentEl=e;this.app=t;this.plugin=a;this.currentTask=null;this.isVisible=!0;this.isEditing=!1;this.editFormEl=null}onload(){this.containerEl=this.parentEl.createDiv({cls:"task-details"}),this.showEmptyState()}showEmptyState(){this.containerEl.empty(),this.containerEl.createDiv({cls:"details-empty"}).setText(c("Select a task to view details"))}getTaskStatus(){var e;return((e=this.currentTask)==null?void 0:e.status)||""}showTaskDetails(e){if(!e){this.currentTask=null,this.showEmptyState();return}this.currentTask=e,this.isEditing=!1,this.containerEl.empty();let t=this.containerEl.createDiv({cls:"details-header"});t.setText(c("Task Details")),t.createEl("div",{cls:"details-close-btn"},d=>{new Qa.ExtraButtonComponent(d).setIcon("x").onClick(()=>{this.toggleDetailsVisibility&&this.toggleDetailsVisibility(!1)})}),this.contentEl=this.containerEl.createDiv({cls:"details-content"}),this.contentEl.createEl("h2",{cls:"details-name"}).setText(Ka(e.content)),this.contentEl.createDiv({cls:"details-status-container"},d=>{d.createDiv({cls:"details-status-label"}).setText(c("Status")),d.createDiv({cls:"details-status"}).setText(bz(e,this.plugin.settings))});let r=new Yo(this.plugin,this.contentEl,e,{onTaskUpdate:this.onTaskUpdate});this.addChild(r);let i=this.contentEl.createDiv({cls:"details-metadata"});this.addMetadataField(i,c("File"),e.filePath);let n=this.contentEl.createDiv({cls:"details-actions"});this.showEditForm(e);let o=n.createEl("button",{cls:"details-edit-file-btn"});o.setText(c("Edit in File")),this.registerDomEvent(o,"click",()=>{this.onTaskEdit?this.onTaskEdit(e):this.editTask(e)});let l=n.createEl("button",{cls:"details-toggle-btn"});l.setText(e.completed?c("Mark Incomplete"):c("Mark Complete")),this.registerDomEvent(l,"click",()=>{this.onTaskToggleComplete&&this.onTaskToggleComplete(e)})}showEditForm(e){if(!e)return;this.isEditing=!0,this.editFormEl=this.contentEl.createDiv({cls:"details-edit-form"});let t=this.createFormField(this.editFormEl,c("Task Title")),a=new Qa.TextComponent(t);e.content,a.setValue(Ka(e.content)),a.inputEl.addClass("details-edit-content");let r=this.createFormField(this.editFormEl,c("Project")),i=bt(e),n=ur(e),o=new Qa.TextComponent(r);if(o.setValue(i||""),e.metadata.tgProject&&(!e.metadata.project||!e.metadata.project.trim())){let q=e.metadata.tgProject,U=r.createDiv({cls:"project-source-indicator"}),z="",te="";switch(q.type){case"path":z=c("Auto-assigned from path")+`: ${q.source}`,te="\u{1F4C1}";break;case"metadata":z=c("Auto-assigned from file metadata")+`: ${q.source}`,te="\u{1F4C4}";break;case"config":z=c("Auto-assigned from config file")+`: ${q.source}`,te="\u2699\uFE0F";break;default:z=c("Auto-assigned")+`: ${q.source}`,te="\u{1F517}"}U.createEl("span",{cls:"indicator-icon",text:te}),U.createEl("span",{cls:"indicator-text",text:z}),n?(U.addClass("readonly-indicator"),o.setDisabled(!0),r.createDiv({cls:"field-description readonly-description",text:c("This project is automatically assigned and cannot be changed")})):(U.addClass("override-indicator"),r.createDiv({cls:"field-description override-description",text:c("You can override the auto-assigned project by entering a different value")}))}new Or(this.app,o.inputEl,this.plugin);let l=this.createFormField(this.editFormEl,c("Tags")),d=new Qa.TextComponent(l);e.metadata.tags,d.setValue(e.metadata.tags?e.metadata.tags.join(", "):""),l.createSpan({cls:"field-description"}).setText(c("Comma separated")+" "+c("e.g. #tag1, #tag2, #tag3")),new zs(this.app,d.inputEl,this.plugin);let u=this.createFormField(this.editFormEl,c("Context")),p=new Qa.TextComponent(u);p.setValue(e.metadata.context||""),new Nr(this.app,p.inputEl,this.plugin);let m=this.createFormField(this.editFormEl,c("Priority")),f=new Qa.DropdownComponent(m);f.addOption("",c("None")),f.addOption("1","\u23EC\uFE0F "+c("Lowest")),f.addOption("2","\u{1F53D} "+c("Low")),f.addOption("3","\u{1F53C} "+c("Medium")),f.addOption("4","\u23EB "+c("High")),f.addOption("5","\u{1F53A} "+c("Highest")),e.metadata.priority?f.setValue(e.metadata.priority.toString()):f.setValue("");let k=this.createFormField(this.editFormEl,c("Due Date")).createEl("input",{type:"date",cls:"date-input"});if(e.metadata.dueDate){let q=new Date(e.metadata.dueDate),U=q.getUTCFullYear(),z=String(q.getUTCMonth()+1).padStart(2,"0"),te=String(q.getUTCDate()).padStart(2,"0");k.value=`${U}-${z}-${te}`}let y=this.createFormField(this.editFormEl,c("Start Date")).createEl("input",{type:"date",cls:"date-input"});if(e.metadata.startDate){let q=new Date(e.metadata.startDate),U=q.getUTCFullYear(),z=String(q.getUTCMonth()+1).padStart(2,"0"),te=String(q.getUTCDate()).padStart(2,"0");y.value=`${U}-${z}-${te}`}let v=this.createFormField(this.editFormEl,c("Scheduled Date")).createEl("input",{type:"date",cls:"date-input"});if(e.metadata.scheduledDate){let q=new Date(e.metadata.scheduledDate),U=q.getUTCFullYear(),z=String(q.getUTCMonth()+1).padStart(2,"0"),te=String(q.getUTCDate()).padStart(2,"0");v.value=`${U}-${z}-${te}`}let x=this.createFormField(this.editFormEl,c("Cancelled Date")).createEl("input",{type:"date",cls:"date-input"});if(e.metadata.cancelledDate){let q=new Date(e.metadata.cancelledDate),U=q.getUTCFullYear(),z=String(q.getUTCMonth()+1).padStart(2,"0"),te=String(q.getUTCDate()).padStart(2,"0");x.value=`${U}-${z}-${te}`}let C=this.createFormField(this.editFormEl,c("On Completion")),S=(0,Qa.debounce)(async()=>{let q={...e},U=a.getValue();q.content=U,e.content!==U&&(q.originalMarkdown=U);let z={...q.metadata},te=o.getValue();n?z.project=e.metadata.project:z.project=te||void 0;let fe=d.getValue();z.tags=fe?fe.split(",").map(Te=>Te.trim()).filter(Te=>Te):[];let ue=p.getValue();z.context=ue||void 0;let De=f.getValue();z.priority=De?parseInt(De):void 0;let $e=k.value;if($e){let[Te,Pe,Ze]=$e.split("-").map(Number),Ie=new Date(Date.UTC(Te,Pe-1,Ze,12,0,0)).getTime();e.metadata.dueDate!==Ie?z.dueDate=Ie:z.dueDate=e.metadata.dueDate}else!$e&&e.metadata.dueDate?z.dueDate=void 0:z.dueDate=e.metadata.dueDate;let Le=y.value;if(Le){let[Te,Pe,Ze]=Le.split("-").map(Number),Ie=new Date(Date.UTC(Te,Pe-1,Ze,12,0,0)).getTime();e.metadata.startDate!==Ie?z.startDate=Ie:z.startDate=e.metadata.startDate}else!Le&&e.metadata.startDate?z.startDate=void 0:z.startDate=e.metadata.startDate;let lt=v.value;if(lt){let[Te,Pe,Ze]=lt.split("-").map(Number),Ie=new Date(Date.UTC(Te,Pe-1,Ze,12,0,0)).getTime();e.metadata.scheduledDate!==Ie?z.scheduledDate=Ie:z.scheduledDate=e.metadata.scheduledDate}else!lt&&e.metadata.scheduledDate?z.scheduledDate=void 0:z.scheduledDate=e.metadata.scheduledDate;let ct=x.value;if(ct){let[Te,Pe,Ze]=ct.split("-").map(Number),Ie=new Date(Date.UTC(Te,Pe-1,Ze,12,0,0)).getTime();e.metadata.cancelledDate!==Ie?z.cancelledDate=Ie:z.cancelledDate=e.metadata.cancelledDate}else!ct&&e.metadata.cancelledDate?z.cancelledDate=void 0:z.cancelledDate=e.metadata.cancelledDate;let _e=I.getValue();z.dependsOn=_e?_e.split(",").map(Te=>Te.trim()).filter(Te=>Te):void 0;let le=E.getValue();z.onCompletion=le||void 0;let ke=W.getValue();z.id=ke||void 0;let Ae=H.getValue();z.recurrence=Ae||void 0,q.metadata=z;let at=this.hasTaskChanges(e,q);if(this.onTaskUpdate&&at)try{await this.onTaskUpdate(e,q),this.currentTask=q}catch(Te){console.error("Failed to update task:",Te)}},800),E=new $o(C,this.plugin,{initialValue:e.metadata.onCompletion||"",onChange:q=>{let U=E.getConfig();this.shouldTriggerOnCompletionSave(U,q)&&S()},onValidationChange:(q,U)=>{let z=C.querySelector(".oncompletion-validation-message");if(z&&z.remove(),U){let te=C.createDiv({cls:"oncompletion-validation-message error",text:U})}else if(q){let te=C.createDiv({cls:"oncompletion-validation-message success",text:c("Configuration is valid")})}}});this.addChild(E);let P=this.createFormField(this.editFormEl,c("Depends On")),I=new Qa.TextComponent(P);I.setValue(Array.isArray(e.metadata.dependsOn)?e.metadata.dependsOn.join(", "):e.metadata.dependsOn||""),P.createSpan({cls:"field-description"}).setText(c("Comma-separated list of task IDs this task depends on"));let L=this.createFormField(this.editFormEl,c("Task ID")),W=new Qa.TextComponent(L);W.setValue(e.metadata.id||""),L.createSpan({cls:"field-description"}).setText(c("Unique identifier for this task"));let O=this.createFormField(this.editFormEl,c("Recurrence")),H=new Qa.TextComponent(O);H.setValue(e.metadata.recurrence||""),O.createSpan({cls:"field-description"}).setText(c("e.g. every day, every 2 weeks"));let $=q=>{this.registerDomEvent(q,"blur",()=>{S()})},B=q=>{this.registerDomEvent(q,"change",()=>{S()})};$(a.inputEl),$(o.inputEl),$(d.inputEl),$(p.inputEl),$(f.selectEl),$(I.inputEl),$(W.inputEl),$(H.inputEl),B(k),B(y),B(v),B(x)}hasTaskChanges(e,t){if("isFileTask"in e&&e.isFileTask){let r={...e},i={...t};"sourceEntry"in r&&delete r.sourceEntry,"sourceEntry"in i&&delete i.sourceEntry;try{return JSON.stringify(r)!==JSON.stringify(i)}catch(n){return console.warn("Failed to compare tasks with JSON.stringify, falling back to property comparison:",n),this.compareTaskProperties(e,t)}}else try{return JSON.stringify(e)!==JSON.stringify(t)}catch(r){return console.warn("Failed to compare tasks with JSON.stringify, falling back to property comparison:",r),this.compareTaskProperties(e,t)}}compareTaskProperties(e,t){let a=["content","originalMarkdown","project","tags","context","priority","dueDate","startDate","scheduledDate","cancelledDate","onCompletion","dependsOn","id","recurrence"];for(let r of a){let i=e[r],n=t[r];if(r==="tags"){let o=Array.isArray(i)?i:[],l=Array.isArray(n)?n:[];if(o.length!==l.length)return!0;for(let d=0;d<o.length;d++)if(o[d]!==l[d])return!0}else if(i!==n)return!0}return!1}createFormField(e,t){let a=e.createDiv({cls:"details-form-field"});return a.createDiv({cls:"details-form-label",text:t}),a.createDiv({cls:"details-form-input"})}addMetadataField(e,t,a){let r=e.createDiv({cls:"metadata-field"});r.createDiv({cls:"metadata-label"}).setText(t),r.createDiv({cls:"metadata-value"}).setText(a)}async editTask(e){var i,n;if(typeof e=="object"&&"isFileTask"in e){let o=e,l=this.app.vault.getFileByPath(o.sourceEntry.file.path);if(!l)return;await this.app.workspace.getLeaf(!0).openFile(l);let u=(i=this.app.workspace.activeEditor)==null?void 0:i.editor;u&&(u.setCursor({line:o.line||0,ch:0}),u.focus());return}let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;await this.app.workspace.getLeaf(!1).openFile(t);let r=(n=this.app.workspace.activeEditor)==null?void 0:n.editor;r&&(r.setCursor({line:e.line||0,ch:0}),r.focus())}setVisible(e){this.isVisible=e,e?(this.containerEl.show(),this.containerEl.addClass("visible"),this.containerEl.removeClass("hidden")):(this.containerEl.addClass("hidden"),this.containerEl.removeClass("visible"),setTimeout(()=>{this.isVisible||this.containerEl.hide()},300))}getCurrentTask(){return this.currentTask}isCurrentlyEditing(){return this.isEditing}shouldTriggerOnCompletionSave(e,t){return!t||!t.trim()||!e?!1:e.type==="delete"||e.type==="keep"||e.type==="archive"||e.type==="duplicate"?!0:e.type==="complete"?t.startsWith("complete:"):e.type==="move"?t.startsWith("move:"):!0}onunload(){this.containerEl.empty(),this.containerEl.remove()}}});var zo,Nj,Yo,Om=b(()=>{zo=A(require("obsidian")),Nj=A(require("obsidian"));Lr();Lr();Q();Yo=class extends Nj.Component{constructor(e,t,a,r){super();this.plugin=e;this.containerEl=t;this.task=a;this.params=r}onload(){this.containerEl.createDiv({cls:"details-status-selector"},e=>{let t=e;this.params.type==="quick-capture"&&(e.createEl("div",{cls:"quick-capture-status-selector-label",text:c("Status")}),t=e.createDiv({cls:"quick-capture-status-selector"})),Object.keys(this.plugin.settings.taskStatuses).map(n=>({status:n,text:this.plugin.settings.taskStatuses[n].split("|")[0]})).forEach(n=>{let o=t.createEl("div",{cls:"status-option"+(n.text===this.task.status?" current":""),attr:{"aria-label":Oj(n.status,this.plugin.settings)}}),l=o;this.plugin.settings.enableTaskGeniusIcons?(0,zo.setIcon)(l,n.status):l=Ot(n.text,this.task,o),this.registerDomEvent(l,"click",d=>{var p,m,f,h;d.stopPropagation(),d.preventDefault();let u={...this.task,status:n.text};n.text==="x"&&!this.task.completed&&(u.completed=!0,u.metadata.completedDate=new Date().getTime()),(m=(p=this.params).onTaskUpdate)==null||m.call(p,this.task,u),(h=(f=this.params).onTaskStatusSelected)==null||h.call(f,n.text),this.task={...this.task,status:n.text},this.containerEl.querySelectorAll(".status-option").forEach(k=>{k.removeClass("current")}),o.addClass("current")})});let r=e.createEl("div",{cls:"more-status"}),i=new zo.ExtraButtonComponent(r).setIcon("ellipsis").onClick(()=>{var u;let n=new zo.Menu,o=this.plugin.settings.taskStatusMarks,l=new Map;for(let p of Object.keys(o)){let m=o[p];Array.from(l.values()).includes(m)||l.set(p,m)}for(let[p,m]of l)n.addItem(f=>{let k={" ":"notStarted","/":"inProgress",x:"completed","-":"abandoned","?":"planned",">":"inProgress",X:"completed"}[m];this.plugin.settings.enableTaskGeniusIcons&&k?f.titleEl.createEl("span",{cls:"status-option-icon"},g=>{(0,zo.setIcon)(g,k)}):f.titleEl.createEl("span",{cls:"status-option-checkbox"},g=>{Ot(m,this.task,g)}),f.titleEl.createEl("span",{cls:"status-option",text:p}),f.onClick(()=>{var g,y,w,v;(y=(g=this.params).onTaskUpdate)==null||y.call(g,this.task,{...this.task,status:m}),(v=(w=this.params).onTaskStatusSelected)==null||v.call(w,m)})});let d=(u=i.extraSettingsEl)==null?void 0:u.getBoundingClientRect();d&&n.showAtPosition({x:d.left,y:d.bottom+10})})})}getTaskStatus(){return this.task.status||""}}});var Lj=ye((Sv,Ev)=>{(function(s,e){typeof Sv=="object"&&typeof Ev!="undefined"?Ev.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis!="undefined"?globalThis:s||self).dayjs_plugin_quarterOfYear=e()})(Sv,function(){"use strict";var s="month",e="quarter";return function(t,a){var r=a.prototype;r.quarter=function(o){return this.$utils().u(o)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(o-1))};var i=r.add;r.add=function(o,l){return o=Number(o),this.$utils().p(l)===e?this.add(3*o,s):i.bind(this)(o,l)};var n=r.startOf;r.startOf=function(o,l){var d=this.$utils(),u=!!d.u(l)||l;if(d.p(o)===e){var p=this.quarter()-1;return u?this.month(3*p).startOf(s).startOf("day"):this.month(3*p+2).endOf(s).endOf("day")}return n.bind(this)(o,l)}}})});var tt=ye((Dv,Pv)=>{(function(s,e){typeof Dv=="object"&&typeof Pv!="undefined"?Pv.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis!="undefined"?globalThis:s||self).dayjs=e()})(Dv,function(){"use strict";var s=1e3,e=6e4,t=36e5,a="millisecond",r="second",i="minute",n="hour",o="day",l="week",d="month",u="quarter",p="year",m="date",f="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(W){var O=["th","st","nd","rd"],H=W%100;return"["+W+(O[(H-20)%10]||O[H]||O[0])+"]"}},y=function(W,O,H){var $=String(W);return!$||$.length>=O?W:""+Array(O+1-$.length).join(H)+W},w={s:y,z:function(W){var O=-W.utcOffset(),H=Math.abs(O),$=Math.floor(H/60),B=H%60;return(O<=0?"+":"-")+y($,2,"0")+":"+y(B,2,"0")},m:function W(O,H){if(O.date()<H.date())return-W(H,O);var $=12*(H.year()-O.year())+(H.month()-O.month()),B=O.clone().add($,d),q=H-B<0,U=O.clone().add($+(q?-1:1),d);return+(-($+(H-B)/(q?B-U:U-B))||0)},a:function(W){return W<0?Math.ceil(W)||0:Math.floor(W)},p:function(W){return{M:d,y:p,w:l,d:o,D:m,h:n,m:i,s:r,ms:a,Q:u}[W]||String(W||"").toLowerCase().replace(/s$/,"")},u:function(W){return W===void 0}},v="en",T={};T[v]=g;var x="$isDayjsObject",C=function(W){return W instanceof I||!(!W||!W[x])},S=function W(O,H,$){var B;if(!O)return v;if(typeof O=="string"){var q=O.toLowerCase();T[q]&&(B=q),H&&(T[q]=H,B=q);var U=O.split("-");if(!B&&U.length>1)return W(U[0])}else{var z=O.name;T[z]=O,B=z}return!$&&B&&(v=B),B||!$&&v},E=function(W,O){if(C(W))return W.clone();var H=typeof O=="object"?O:{};return H.date=W,H.args=arguments,new I(H)},P=w;P.l=S,P.i=C,P.w=function(W,O){return E(W,{locale:O.$L,utc:O.$u,x:O.$x,$offset:O.$offset})};var I=function(){function W(H){this.$L=S(H.locale,null,!0),this.parse(H),this.$x=this.$x||H.x||{},this[x]=!0}var O=W.prototype;return O.parse=function(H){this.$d=function($){var B=$.date,q=$.utc;if(B===null)return new Date(NaN);if(P.u(B))return new Date;if(B instanceof Date)return new Date(B);if(typeof B=="string"&&!/Z$/i.test(B)){var U=B.match(h);if(U){var z=U[2]-1||0,te=(U[7]||"0").substring(0,3);return q?new Date(Date.UTC(U[1],z,U[3]||1,U[4]||0,U[5]||0,U[6]||0,te)):new Date(U[1],z,U[3]||1,U[4]||0,U[5]||0,U[6]||0,te)}}return new Date(B)}(H),this.init()},O.init=function(){var H=this.$d;this.$y=H.getFullYear(),this.$M=H.getMonth(),this.$D=H.getDate(),this.$W=H.getDay(),this.$H=H.getHours(),this.$m=H.getMinutes(),this.$s=H.getSeconds(),this.$ms=H.getMilliseconds()},O.$utils=function(){return P},O.isValid=function(){return this.$d.toString()!==f},O.isSame=function(H,$){var B=E(H);return this.startOf($)<=B&&B<=this.endOf($)},O.isAfter=function(H,$){return E(H)<this.startOf($)},O.isBefore=function(H,$){return this.endOf($)<E(H)},O.$g=function(H,$,B){return P.u(H)?this[$]:this.set(B,H)},O.unix=function(){return Math.floor(this.valueOf()/1e3)},O.valueOf=function(){return this.$d.getTime()},O.startOf=function(H,$){var B=this,q=!!P.u($)||$,U=P.p(H),z=function(ct,_e){var le=P.w(B.$u?Date.UTC(B.$y,_e,ct):new Date(B.$y,_e,ct),B);return q?le:le.endOf(o)},te=function(ct,_e){return P.w(B.toDate()[ct].apply(B.toDate("s"),(q?[0,0,0,0]:[23,59,59,999]).slice(_e)),B)},fe=this.$W,ue=this.$M,De=this.$D,$e="set"+(this.$u?"UTC":"");switch(U){case p:return q?z(1,0):z(31,11);case d:return q?z(1,ue):z(0,ue+1);case l:var Le=this.$locale().weekStart||0,lt=(fe<Le?fe+7:fe)-Le;return z(q?De-lt:De+(6-lt),ue);case o:case m:return te($e+"Hours",0);case n:return te($e+"Minutes",1);case i:return te($e+"Seconds",2);case r:return te($e+"Milliseconds",3);default:return this.clone()}},O.endOf=function(H){return this.startOf(H,!1)},O.$set=function(H,$){var B,q=P.p(H),U="set"+(this.$u?"UTC":""),z=(B={},B[o]=U+"Date",B[m]=U+"Date",B[d]=U+"Month",B[p]=U+"FullYear",B[n]=U+"Hours",B[i]=U+"Minutes",B[r]=U+"Seconds",B[a]=U+"Milliseconds",B)[q],te=q===o?this.$D+($-this.$W):$;if(q===d||q===p){var fe=this.clone().set(m,1);fe.$d[z](te),fe.init(),this.$d=fe.set(m,Math.min(this.$D,fe.daysInMonth())).$d}else z&&this.$d[z](te);return this.init(),this},O.set=function(H,$){return this.clone().$set(H,$)},O.get=function(H){return this[P.p(H)]()},O.add=function(H,$){var B,q=this;H=Number(H);var U=P.p($),z=function(ue){var De=E(q);return P.w(De.date(De.date()+Math.round(ue*H)),q)};if(U===d)return this.set(d,this.$M+H);if(U===p)return this.set(p,this.$y+H);if(U===o)return z(1);if(U===l)return z(7);var te=(B={},B[i]=e,B[n]=t,B[r]=s,B)[U]||1,fe=this.$d.getTime()+H*te;return P.w(fe,this)},O.subtract=function(H,$){return this.add(-1*H,$)},O.format=function(H){var $=this,B=this.$locale();if(!this.isValid())return B.invalidDate||f;var q=H||"YYYY-MM-DDTHH:mm:ssZ",U=P.z(this),z=this.$H,te=this.$m,fe=this.$M,ue=B.weekdays,De=B.months,$e=B.meridiem,Le=function(_e,le,ke,Ae){return _e&&(_e[le]||_e($,q))||ke[le].slice(0,Ae)},lt=function(_e){return P.s(z%12||12,_e,"0")},ct=$e||function(_e,le,ke){var Ae=_e<12?"AM":"PM";return ke?Ae.toLowerCase():Ae};return q.replace(k,function(_e,le){return le||function(ke){switch(ke){case"YY":return String($.$y).slice(-2);case"YYYY":return P.s($.$y,4,"0");case"M":return fe+1;case"MM":return P.s(fe+1,2,"0");case"MMM":return Le(B.monthsShort,fe,De,3);case"MMMM":return Le(De,fe);case"D":return $.$D;case"DD":return P.s($.$D,2,"0");case"d":return String($.$W);case"dd":return Le(B.weekdaysMin,$.$W,ue,2);case"ddd":return Le(B.weekdaysShort,$.$W,ue,3);case"dddd":return ue[$.$W];case"H":return String(z);case"HH":return P.s(z,2,"0");case"h":return lt(1);case"hh":return lt(2);case"a":return ct(z,te,!0);case"A":return ct(z,te,!1);case"m":return String(te);case"mm":return P.s(te,2,"0");case"s":return String($.$s);case"ss":return P.s($.$s,2,"0");case"SSS":return P.s($.$ms,3,"0");case"Z":return U}return null}(_e)||U.replace(":","")})},O.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},O.diff=function(H,$,B){var q,U=this,z=P.p($),te=E(H),fe=(te.utcOffset()-this.utcOffset())*e,ue=this-te,De=function(){return P.m(U,te)};switch(z){case p:q=De()/12;break;case d:q=De();break;case u:q=De()/3;break;case l:q=(ue-fe)/6048e5;break;case o:q=(ue-fe)/864e5;break;case n:q=ue/t;break;case i:q=ue/e;break;case r:q=ue/s;break;default:q=ue}return B?q:P.a(q)},O.daysInMonth=function(){return this.endOf(d).$D},O.$locale=function(){return T[this.$L]},O.locale=function(H,$){if(!H)return this.$L;var B=this.clone(),q=S(H,$,!0);return q&&(B.$L=q),B},O.clone=function(){return P.w(this.$d,this)},O.toDate=function(){return new Date(this.valueOf())},O.toJSON=function(){return this.isValid()?this.toISOString():null},O.toISOString=function(){return this.$d.toISOString()},O.toString=function(){return this.$d.toUTCString()},W}(),L=I.prototype;return E.prototype=L,[["$ms",a],["$s",r],["$m",i],["$H",n],["$W",o],["$M",d],["$y",p],["$D",m]].forEach(function(W){L[W[1]]=function(O){return this.$g(O,W[0],W[1])}}),E.extend=function(W,O){return W.$i||(W(O,I,E),W.$i=!0),E},E.locale=S,E.isDayjs=C,E.unix=function(W){return E(1e3*W)},E.en=T[v],E.Ls=T,E.p={},E})});var V,be,Hr,Ye=b(()=>{(function(s){s[s.AM=0]="AM",s[s.PM=1]="PM"})(V||(V={}));(function(s){s[s.SUNDAY=0]="SUNDAY",s[s.MONDAY=1]="MONDAY",s[s.TUESDAY=2]="TUESDAY",s[s.WEDNESDAY=3]="WEDNESDAY",s[s.THURSDAY=4]="THURSDAY",s[s.FRIDAY=5]="FRIDAY",s[s.SATURDAY=6]="SATURDAY"})(be||(be={}));(function(s){s[s.JANUARY=1]="JANUARY",s[s.FEBRUARY=2]="FEBRUARY",s[s.MARCH=3]="MARCH",s[s.APRIL=4]="APRIL",s[s.MAY=5]="MAY",s[s.JUNE=6]="JUNE",s[s.JULY=7]="JULY",s[s.AUGUST=8]="AUGUST",s[s.SEPTEMBER=9]="SEPTEMBER",s[s.OCTOBER=10]="OCTOBER",s[s.NOVEMBER=11]="NOVEMBER",s[s.DECEMBER=12]="DECEMBER"})(Hr||(Hr={}))});function Hj(s,e){s.assign("day",e.getDate()),s.assign("month",e.getMonth()+1),s.assign("year",e.getFullYear())}function Bj(s,e){s.assign("hour",e.getHours()),s.assign("minute",e.getMinutes()),s.assign("second",e.getSeconds()),s.assign("millisecond",e.getMilliseconds()),s.assign("meridiem",e.getHours()<12?V.AM:V.PM)}function Nm(s,e){s.imply("day",e.getDate()),s.imply("month",e.getMonth()+1),s.imply("year",e.getFullYear())}function Wj(s,e){s.imply("hour",e.getHours()),s.imply("minute",e.getMinutes()),s.imply("second",e.getSeconds()),s.imply("millisecond",e.getMilliseconds()),s.imply("meridiem",e.getHours()<12?V.AM:V.PM)}var Mv=b(()=>{Ye()});function Kn(s,e,t,a,r=0){let i=0,n=0;for(;n<a;)i++,new Date(s,e-1,i).getDay()===t&&n++;return new Date(s,e-1,i,r)}function _j(s,e,t,a=0){let r=t===0?7:t,i=new Date(s,e-1+1,1,12),n=i.getDay()===0?7:i.getDay(),o;return n===r?o=7:n<r?o=7+n-r:o=n-r,i.setDate(i.getDate()-o),new Date(s,e-1,i.getDate(),a)}function Lm(s,e,t={}){var r;if(s==null)return null;if(typeof s=="number")return s;let a=(r=t[s])!=null?r:Tz[s];return a==null?null:typeof a=="number"?a:e==null?null:(0,Av.default)(e).isAfter(a.dstStart(e.getFullYear()))&&!(0,Av.default)(e).isAfter(a.dstEnd(e.getFullYear()))?a.timezoneOffsetDuringDst:a.timezoneOffsetNonDst}var Av,Tz,Iv=b(()=>{Av=A(tt());Ye();Tz={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:{timezoneOffsetDuringDst:2*60,timezoneOffsetNonDst:60,dstStart:s=>_j(s,Hr.MARCH,be.SUNDAY,2),dstEnd:s=>_j(s,Hr.OCTOBER,be.SUNDAY,3)},CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CT:{timezoneOffsetDuringDst:-5*60,timezoneOffsetNonDst:-6*60,dstStart:s=>Kn(s,Hr.MARCH,be.SUNDAY,2,2),dstEnd:s=>Kn(s,Hr.NOVEMBER,be.SUNDAY,1,2)},CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:{timezoneOffsetDuringDst:-4*60,timezoneOffsetNonDst:-5*60,dstStart:s=>Kn(s,Hr.MARCH,be.SUNDAY,2,2),dstEnd:s=>Kn(s,Hr.NOVEMBER,be.SUNDAY,1,2)},FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:180,MST:-420,MT:{timezoneOffsetDuringDst:-6*60,timezoneOffsetNonDst:-7*60,dstStart:s=>Kn(s,Hr.MARCH,be.SUNDAY,2,2),dstEnd:s=>Kn(s,Hr.NOVEMBER,be.SUNDAY,1,2)},MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:{timezoneOffsetDuringDst:-7*60,timezoneOffsetNonDst:-8*60,dstStart:s=>Kn(s,Hr.MARCH,be.SUNDAY,2,2),dstEnd:s=>Kn(s,Hr.NOVEMBER,be.SUNDAY,1,2)},PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360}});function Vj(s,e){var a,r,i,n,o,l,d;let t=new Date(s);if(e.y&&(e.year=e.y,delete e.y),e.mo&&(e.month=e.mo,delete e.mo),e.M&&(e.month=e.M,delete e.M),e.w&&(e.week=e.w,delete e.w),e.d&&(e.day=e.d,delete e.d),e.h&&(e.hour=e.h,delete e.h),e.m&&(e.minute=e.m,delete e.m),e.s&&(e.second=e.s,delete e.s),e.ms&&(e.millisecond=e.ms,delete e.ms),"year"in e){let u=Math.floor(e.year);t.setFullYear(t.getFullYear()+u);let p=e.year-u;p>0&&(e.month=(a=e==null?void 0:e.month)!=null?a:0,e.month+=p*12)}if("quarter"in e){let u=Math.floor(e.quarter);t.setMonth(t.getMonth()+u*3)}if("month"in e){let u=Math.floor(e.month);t.setMonth(t.getMonth()+u);let p=e.month-u;p>0&&(e.week=(r=e==null?void 0:e.week)!=null?r:0,e.week+=p*4)}if("week"in e){let u=Math.floor(e.week);t.setDate(t.getDate()+u*7);let p=e.week-u;p>0&&(e.day=(i=e==null?void 0:e.day)!=null?i:0,e.day+=Math.round(p*7))}if("day"in e){let u=Math.floor(e.day);t.setDate(t.getDate()+u);let p=e.day-u;p>0&&(e.hour=(n=e==null?void 0:e.hour)!=null?n:0,e.hour+=Math.round(p*24))}if("hour"in e){let u=Math.floor(e.hour);t.setHours(t.getHours()+u);let p=e.hour-u;p>0&&(e.minute=(o=e==null?void 0:e.minute)!=null?o:0,e.minute+=Math.round(p*60))}if("minute"in e){let u=Math.floor(e.minute);t.setMinutes(t.getMinutes()+u);let p=e.minute-u;p>0&&(e.second=(l=e==null?void 0:e.second)!=null?l:0,e.second+=Math.round(p*60))}if("second"in e){let u=Math.floor(e.second);t.setSeconds(t.getSeconds()+u);let p=e.second-u;p>0&&(e.millisecond=(d=e==null?void 0:e.millisecond)!=null?d:0,e.millisecond+=Math.round(p*1e3))}if("millisecond"in e){let u=Math.floor(e.millisecond);t.setMilliseconds(t.getMilliseconds()+u)}return t}function tc(s){let e={};for(let t in s)e[t]=-s[t];return e}var ou=b(()=>{});var Uj,Rv,rt,K,ze,Re=b(()=>{Uj=A(Lj()),Rv=A(tt());Mv();Iv();ou();Rv.default.extend(Uj.default);rt=class{constructor(e){_(this,"instant");_(this,"timezoneOffset");var t;e=e!=null?e:new Date,e instanceof Date?(this.instant=e,this.timezoneOffset=null):(this.instant=(t=e.instant)!=null?t:new Date,this.timezoneOffset=Lm(e.timezone,this.instant))}getDateWithAdjustedTimezone(){let e=new Date(this.instant);return this.timezoneOffset!==null&&e.setMinutes(e.getMinutes()-this.getSystemTimezoneAdjustmentMinute(this.instant)),e}getSystemTimezoneAdjustmentMinute(e,t){var i;(!e||e.getTime()<0)&&(e=new Date);let a=-e.getTimezoneOffset(),r=(i=t!=null?t:this.timezoneOffset)!=null?i:a;return a-r}getTimezoneOffset(){var e;return(e=this.timezoneOffset)!=null?e:-this.instant.getTimezoneOffset()}},K=class{constructor(e,t){_(this,"knownValues");_(this,"impliedValues");_(this,"reference");_(this,"_tags",new Set);if(this.reference=e,this.knownValues={},this.impliedValues={},t)for(let r in t)this.knownValues[r]=t[r];let a=e.getDateWithAdjustedTimezone();this.imply("day",a.getDate()),this.imply("month",a.getMonth()+1),this.imply("year",a.getFullYear()),this.imply("hour",12),this.imply("minute",0),this.imply("second",0),this.imply("millisecond",0)}get(e){return e in this.knownValues?this.knownValues[e]:e in this.impliedValues?this.impliedValues[e]:null}isCertain(e){return e in this.knownValues}getCertainComponents(){return Object.keys(this.knownValues)}imply(e,t){return e in this.knownValues?this:(this.impliedValues[e]=t,this)}assign(e,t){return this.knownValues[e]=t,delete this.impliedValues[e],this}delete(e){delete this.knownValues[e],delete this.impliedValues[e]}clone(){let e=new K(this.reference);e.knownValues={},e.impliedValues={};for(let t in this.knownValues)e.knownValues[t]=this.knownValues[t];for(let t in this.impliedValues)e.impliedValues[t]=this.impliedValues[t];return e}isOnlyDate(){return!this.isCertain("hour")&&!this.isCertain("minute")&&!this.isCertain("second")}isOnlyTime(){return!this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")&&!this.isCertain("year")}isOnlyWeekdayComponent(){return this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isDateWithUnknownYear(){return this.isCertain("month")&&!this.isCertain("year")}isValidDate(){let e=this.dateWithoutTimezoneAdjustment();return!(e.getFullYear()!==this.get("year")||e.getMonth()!==this.get("month")-1||e.getDate()!==this.get("day")||this.get("hour")!=null&&e.getHours()!=this.get("hour")||this.get("minute")!=null&&e.getMinutes()!=this.get("minute"))}toString(){return`[ParsingComponents {
tags: ${JSON.stringify(Array.from(this._tags).sort())},
knownValues: ${JSON.stringify(this.knownValues)},
impliedValues: ${JSON.stringify(this.impliedValues)}},
reference: ${JSON.stringify(this.reference)}]`}dayjs(){return(0,Rv.default)(this.dateWithoutTimezoneAdjustment())}date(){let e=this.dateWithoutTimezoneAdjustment(),t=this.reference.getSystemTimezoneAdjustmentMinute(e,this.get("timezoneOffset"));return new Date(e.getTime()+t*6e4)}addTag(e){return this._tags.add(e),this}addTags(e){for(let t of e)this._tags.add(t);return this}tags(){return new Set(this._tags)}dateWithoutTimezoneAdjustment(){let e=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return e.setFullYear(this.get("year")),e}static createRelativeFromReference(e,t){let a=Vj(e.getDateWithAdjustedTimezone(),t),r=new K(e);return r.addTag("result/relativeDate"),t.hour||t.minute||t.second?(r.addTag("result/relativeDateAndTime"),Bj(r,a),Hj(r,a),r.assign("timezoneOffset",e.getTimezoneOffset())):(Wj(r,a),r.imply("timezoneOffset",e.getTimezoneOffset()),t.day?(r.assign("day",a.getDate()),r.assign("month",a.getMonth()+1),r.assign("year",a.getFullYear()),r.assign("weekday",a.getDay())):t.week?(r.assign("day",a.getDate()),r.assign("month",a.getMonth()+1),r.assign("year",a.getFullYear()),r.imply("weekday",a.getDay())):(r.imply("day",a.getDate()),t.month?(r.assign("month",a.getMonth()+1),r.assign("year",a.getFullYear())):(r.imply("month",a.getMonth()+1),t.year?r.assign("year",a.getFullYear()):r.imply("year",a.getFullYear())))),r}},ze=class{constructor(e,t,a,r,i){_(this,"refDate");_(this,"index");_(this,"text");_(this,"reference");_(this,"start");_(this,"end");this.reference=e,this.refDate=e.instant,this.index=t,this.text=a,this.start=r||new K(e),this.end=i}clone(){let e=new ze(this.reference,this.index,this.text);return e.start=this.start?this.start.clone():null,e.end=this.end?this.end.clone():null,e}date(){return this.start.date()}addTag(e){return this.start.addTag(e),this.end&&this.end.addTag(e),this}addTags(e){return this.start.addTags(e),this.end&&this.end.addTags(e),this}tags(){let e=new Set(this.start.tags());if(this.end)for(let t of this.end.tags())e.add(t);return e}toString(){let e=Array.from(this.tags()).sort();return`[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(e)} ...}]`}}});function pr(s,e,t="\\s{0,5},?\\s{0,5}"){let a=e.replace(/\((?!\?)/g,"(?:");return`${s}${a}(?:${t}${a}){0,10}`}function Cz(s){let e;return s instanceof Array?e=[...s]:s instanceof Map?e=Array.from(s.keys()):e=Object.keys(s),e}function ae(s){return`(?:${Cz(s).sort((t,a)=>a.length-t.length).join("|").replace(/\./g,"\\.")})`}var Ve=b(()=>{});function Sr(s){return s<100&&(s>50?s=s+1900:s=s+2e3),s}function it(s,e,t){let a=(0,$j.default)(s),r=a;r=r.month(t-1),r=r.date(e),r=r.year(a.year());let i=r.add(1,"y"),n=r.add(-1,"y");return Math.abs(i.diff(a))<Math.abs(r.diff(a))?r=i:Math.abs(n.diff(a))<Math.abs(r.diff(a))&&(r=n),r.year()}var $j,Bt=b(()=>{$j=A(tt())});function xz(s){let e=s.toLowerCase();return jv[e]!==void 0?jv[e]:e==="a"||e==="an"||e=="the"?1:e.match(/few/)?3:e.match(/half/)?.5:e.match(/couple/)?2:e.match(/several/)?7:parseFloat(e)}function rc(s){let e=s.toLowerCase();return Ov[e]!==void 0?Ov[e]:(e=e.replace(/(?:st|nd|rd|th)$/i,""),parseInt(e))}function Xn(s){if(/BE/i.test(s))return s=s.replace(/BE/i,""),parseInt(s)-543;if(/BCE?/i.test(s))return s=s.replace(/BCE?/i,""),-parseInt(s);if(/(AD|CE)/i.test(s))return s=s.replace(/(AD|CE)/i,""),parseInt(s);let e=parseInt(s);return Sr(e)}function ks(s){let e={},t=s,a=Gj.exec(t);for(;a;)Ez(e,a),t=t.substring(a[0].length).trim(),a=Gj.exec(t);return Object.keys(e).length==0?null:e}function Ez(s,e){if(e[0].match(/^[a-zA-Z]+$/))return;let t=xz(e[1]),a=lu[e[2].toLowerCase()];s[a]=t}var Hm,Fv,gs,jv,Ov,Yj,lu,zj,ac,Qn,qj,Gj,Sz,Kj,tn,Jn,ga=b(()=>{Ve();Bt();Hm={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6},Fv={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},gs={...Fv,jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12},jv={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},Ov={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31},Yj={second:"second",seconds:"second",minute:"minute",minutes:"minute",hour:"hour",hours:"hour",day:"d",days:"d",week:"week",weeks:"week",month:"month",months:"month",quarter:"quarter",quarters:"quarter",year:"year",years:"year"},lu={s:"second",sec:"second",second:"second",seconds:"second",m:"minute",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",d:"d",day:"d",days:"d",w:"w",week:"week",weeks:"week",mo:"month",mon:"month",mos:"month",month:"month",months:"month",qtr:"quarter",quarter:"quarter",quarters:"quarter",y:"year",yr:"year",year:"year",years:"year",...Yj},zj=`(?:${ae(jv)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;ac=`(?:${ae(Ov)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;Qn="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9]|2[0-5])";qj=`(${zj})\\s{0,3}(${ae(lu)})`,Gj=new RegExp(qj,"i"),Sz=`(${zj})\\s{0,3}(${ae(Yj)})`,Kj="\\s{0,5},?(?:\\s*and)?\\s{0,5}",tn=pr("(?:(?:about|around)\\s{0,3})?",qj,Kj),Jn=pr("(?:(?:about|around)\\s{0,3})?",Sz,Kj)});var Y,ce=b(()=>{Y=class{constructor(){_(this,"cachedInnerPattern",null);_(this,"cachedPattern",null)}innerPatternHasChange(e,t){return this.innerPattern(e)!==t}patternLeftBoundary(){return"(\\W|^)"}pattern(e){return this.cachedInnerPattern&&!this.innerPatternHasChange(e,this.cachedInnerPattern)?this.cachedPattern:(this.cachedInnerPattern=this.innerPattern(e),this.cachedPattern=new RegExp(`${this.patternLeftBoundary()}${this.cachedInnerPattern.source}`,this.cachedInnerPattern.flags),this.cachedPattern)}extract(e,t){var r;let a=(r=t[1])!=null?r:"";t.index=t.index+a.length,t[0]=t[0].substring(a.length);for(let i=2;i<t.length;i++)t[i-1]=t[i];return this.innerExtract(e,t)}}});var Dz,Pz,Mz,Bm,Qj=b(()=>{ga();Re();ce();Dz=new RegExp(`(?:(?:within|in|for)\\s*)?(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${tn})(?=\\W|$)`,"i"),Pz=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${tn})(?=\\W|$)`,"i"),Mz=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Jn})(?=\\W|$)`,"i"),Bm=class extends Y{constructor(e){super();_(this,"strictMode");this.strictMode=e}innerPattern(e){return this.strictMode?Mz:e.option.forwardDate?Dz:Pz}innerExtract(e,t){if(t[0].match(/^for\s*the\s*\w+/))return null;let a=ks(t[1]);return a?(e.debug(()=>{K.createRelativeFromReference(e.reference,a)}),K.createRelativeFromReference(e.reference,a)):null}}});var Az,Xj,Jj,Iz,Zj,Wm,eO=b(()=>{Bt();ga();ga();ga();Ve();ce();Az=new RegExp(`(?:on\\s{0,3})?(${ac})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${ac}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${ae(gs)})(?:(?:-|/|,?\\s{0,3})(${Qn}(?!\\w)))?(?=\\W|$)`,"i"),Xj=1,Jj=2,Iz=3,Zj=4,Wm=class extends Y{innerPattern(){return Az}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=gs[t[Iz].toLowerCase()],i=rc(t[Xj]);if(i>31)return t.index=t.index+t[Xj].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[Zj]){let n=Xn(t[Zj]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[Jj]){let n=rc(t[Jj]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var Rz,Fz,tO,Nv,Lv,_m,aO=b(()=>{Bt();ga();ga();ga();Ve();ce();Rz=new RegExp(`(${ae(gs)})(?:-|/|\\s*,?\\s*)(${ac})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${ac})\\s*)?(?:(?:-|/|\\s*,\\s*|\\s+)(${Qn}))?(?=\\W|$)(?!\\:\\d)`,"i"),Fz=1,tO=2,Nv=3,Lv=4,_m=class extends Y{constructor(e){super();_(this,"shouldSkipYearLikeDate");this.shouldSkipYearLikeDate=e}innerPattern(){return Rz}innerExtract(e,t){let a=gs[t[Fz].toLowerCase()],r=rc(t[tO]);if(r>31||this.shouldSkipYearLikeDate&&!t[Nv]&&!t[Lv]&&t[tO].match(/^2[0-5]$/))return null;let i=e.createParsingComponents({day:r,month:a}).addTag("parser/ENMonthNameMiddleEndianParser");if(t[Lv]){let l=Xn(t[Lv]);i.assign("year",l)}else{let l=it(e.refDate,r,a);i.imply("year",l)}if(!t[Nv])return i;let n=rc(t[Nv]),o=e.createParsingResult(t.index,t[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",n),o}}});var jz,Oz,Nz,rO,Vm,sO=b(()=>{ga();Bt();Ve();ga();ce();jz=new RegExp(`((?:in)\\s*)?(${ae(gs)})\\s*(?:(?:,|-|of)?\\s*(${Qn})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),Oz=1,Nz=2,rO=3,Vm=class extends Y{innerPattern(){return jz}innerExtract(e,t){let a=t[Nz].toLowerCase();if(t[0].length<=3&&!Fv[a])return null;let r=e.createParsingResult(t.index+(t[Oz]||"").length,t.index+t[0].length);r.start.imply("day",1),r.start.addTag("parser/ENMonthNameParser");let i=gs[a];if(r.start.assign("month",i),t[rO]){let n=Xn(t[rO]);r.start.assign("year",n)}else{let n=it(e.refDate,1,i);r.start.imply("year",n)}return r}}});var Lz,Hz,Bz,iO,Wz,Um,nO=b(()=>{ga();Ve();ce();Lz=new RegExp(`([0-9]{4})[-\\.\\/\\s](?:(${ae(gs)})|([0-9]{1,2}))[-\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),Hz=1,Bz=2,iO=3,Wz=4,Um=class extends Y{constructor(e){super();_(this,"strictMonthDateOrder");this.strictMonthDateOrder=e}innerPattern(){return Lz}innerExtract(e,t){let a=parseInt(t[Hz]),r=parseInt(t[Wz]),i=t[iO]?parseInt(t[iO]):gs[t[Bz].toLowerCase()];if(i<1||i>12){if(this.strictMonthDateOrder)return null;r>=1&&r<=12&&([i,r]=[r,i])}return r<1||r>31?null:{day:r,month:i,year:a}}}});var _z,Vz,Uz,$m,oO=b(()=>{ce();_z=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),Vz=1,Uz=2,$m=class extends Y{innerPattern(){return _z}innerExtract(e,t){let a=parseInt(t[Uz]),r=parseInt(t[Vz]);return e.createParsingComponents().imply("day",1).assign("month",r).assign("year",a)}}});function $z(s,e,t,a){return new RegExp(`${s}${e}(\\d{1,4})(?:(?:\\.|:|\uFF1A)(\\d{1,2})(?:(?::|\uFF1A)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${t}`,a)}function Yz(s,e){return new RegExp(`^(${s})(\\d{1,4})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${e}`,"i")}var lO,sc,Ym,zm,cu,Ba,an=b(()=>{Ye();lO=2,sc=3,Ym=4,zm=5,cu=6,Ba=class{constructor(e=!1){_(this,"strictMode");_(this,"cachedPrimaryPrefix",null);_(this,"cachedPrimarySuffix",null);_(this,"cachedPrimaryTimePattern",null);_(this,"cachedFollowingPhase",null);_(this,"cachedFollowingSuffix",null);_(this,"cachedFollowingTimePatten",null);this.strictMode=e}patternFlags(){return"i"}primaryPatternLeftBoundary(){return"(^|\\s|T|\\b)"}primarySuffix(){return"(?!/)(?=\\W|$)"}followingSuffix(){return"(?!/)(?=\\W|$)"}pattern(e){return this.getPrimaryTimePatternThroughCache()}extract(e,t){let a=this.extractPrimaryTimeComponents(e,t);if(!a)return t[0].match(/^\d{4}/)?(t.index+=4,null):(t.index+=t[0].length,null);let r=t.index+t[1].length,i=t[0].substring(t[1].length),n=e.createParsingResult(r,i,a);t.index+=t[0].length;let o=e.text.substring(t.index),d=this.getFollowingTimePatternThroughCache().exec(o);return i.match(/^\d{3,4}/)&&d&&(d[0].match(/^\s*([+-])\s*\d{2,4}$/)||d[0].match(/^\s*([+-])\s*\d{2}\W\d{2}/))?null:!d||d[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(n):(n.end=this.extractFollowingTimeComponents(e,d,n),n.end&&(n.text+=d[0]),this.checkAndReturnWithFollowingPattern(n))}extractPrimaryTimeComponents(e,t,a=!1){let r=e.createParsingComponents(),i=0,n=null,o=parseInt(t[lO]);if(o>100){if(this.strictMode||t[sc]!=null)return null;i=o%100,o=Math.floor(o/100)}if(o>24)return null;if(t[sc]!=null){if(t[sc].length==1&&!t[cu])return null;i=parseInt(t[sc])}if(i>=60)return null;if(o>12&&(n=V.PM),t[cu]!=null){if(o>12)return null;let l=t[cu][0].toLowerCase();l=="a"&&(n=V.AM,o==12&&(o=0)),l=="p"&&(n=V.PM,o!=12&&(o+=12))}if(r.assign("hour",o),r.assign("minute",i),n!==null?r.assign("meridiem",n):o<12?r.imply("meridiem",V.AM):r.imply("meridiem",V.PM),t[zm]!=null){let l=parseInt(t[zm].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(t[Ym]!=null){let l=parseInt(t[Ym]);if(l>=60)return null;r.assign("second",l)}return r}extractFollowingTimeComponents(e,t,a){let r=e.createParsingComponents();if(t[zm]!=null){let l=parseInt(t[zm].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(t[Ym]!=null){let l=parseInt(t[Ym]);if(l>=60)return null;r.assign("second",l)}let i=parseInt(t[lO]),n=0,o=-1;if(t[sc]!=null?n=parseInt(t[sc]):i>100&&(n=i%100,i=Math.floor(i/100)),n>=60||i>24)return null;if(i>=12&&(o=V.PM),t[cu]!=null){if(i>12)return null;let l=t[cu][0].toLowerCase();l=="a"&&(o=V.AM,i==12&&(i=0,r.isCertain("day")||r.imply("day",r.get("day")+1))),l=="p"&&(o=V.PM,i!=12&&(i+=12)),a.start.isCertain("meridiem")||(o==V.AM?(a.start.imply("meridiem",V.AM),a.start.get("hour")==12&&a.start.assign("hour",0)):(a.start.imply("meridiem",V.PM),a.start.get("hour")!=12&&a.start.assign("hour",a.start.get("hour")+12)))}return r.assign("hour",i),r.assign("minute",n),o>=0?r.assign("meridiem",o):a.start.isCertain("meridiem")&&a.start.get("hour")>12?a.start.get("hour")-12>i?r.imply("meridiem",V.AM):i<=12&&(r.assign("hour",i+12),r.assign("meridiem",V.PM)):i>12?r.imply("meridiem",V.PM):i<=12&&r.imply("meridiem",V.AM),r.date().getTime()<a.start.date().getTime()&&r.imply("day",r.get("day")+1),r}checkAndReturnWithoutFollowingPattern(e){if(e.text.match(/^\d$/)||e.text.match(/^\d\d\d+$/)||e.text.match(/\d[apAP]$/))return null;let t=e.text.match(/[^\d:.](\d[\d.]+)$/);if(t){let a=t[1];if(this.strictMode||a.includes(".")&&!a.match(/\d(\.\d{2})+$/)||parseInt(a)>24)return null}return e}checkAndReturnWithFollowingPattern(e){if(e.text.match(/^\d+-\d+$/))return null;let t=e.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(t){if(this.strictMode)return null;let a=t[1],r=t[2];if(r.includes(".")&&!r.match(/\d(\.\d{2})+$/))return null;let i=parseInt(r),n=parseInt(a);if(i>24||n>24)return null}return e}getPrimaryTimePatternThroughCache(){let e=this.primaryPrefix(),t=this.primarySuffix();return this.cachedPrimaryPrefix===e&&this.cachedPrimarySuffix===t?this.cachedPrimaryTimePattern:(this.cachedPrimaryTimePattern=$z(this.primaryPatternLeftBoundary(),e,t,this.patternFlags()),this.cachedPrimaryPrefix=e,this.cachedPrimarySuffix=t,this.cachedPrimaryTimePattern)}getFollowingTimePatternThroughCache(){let e=this.followingPhase(),t=this.followingSuffix();return this.cachedFollowingPhase===e&&this.cachedFollowingSuffix===t?this.cachedFollowingTimePatten:(this.cachedFollowingTimePatten=Yz(e,t),this.cachedFollowingPhase=e,this.cachedFollowingSuffix=t,this.cachedFollowingTimePatten)}}});var qm,cO=b(()=>{Ye();an();qm=class extends Ba{constructor(e){super(e)}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|to|until|through|till|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){let a=super.extractPrimaryTimeComponents(e,t);if(!a)return a;if(t[0].endsWith("night")){let r=a.get("hour");r>=6&&r<12?(a.assign("hour",a.get("hour")+12),a.assign("meridiem",V.PM)):r<6&&a.assign("meridiem",V.AM)}if(t[0].endsWith("afternoon")){a.assign("meridiem",V.PM);let r=a.get("hour");r>=0&&r<=6&&a.assign("hour",a.get("hour")+12)}return t[0].endsWith("morning")&&(a.assign("meridiem",V.AM),a.get("hour")<12&&a.assign("hour",a.get("hour"))),a.addTag("parser/ENTimeExpressionParser")}extractFollowingTimeComponents(e,t,a){let r=super.extractFollowingTimeComponents(e,t,a);return r&&r.addTag("parser/ENTimeExpressionParser"),r}}});var zz,qz,Gm,dO=b(()=>{ga();Re();ce();ou();zz=new RegExp(`(${tn})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),qz=new RegExp(`(${Jn})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),Gm=class extends Y{constructor(e){super();_(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?qz:zz}innerExtract(e,t){let a=ks(t[1]);return a?K.createRelativeFromReference(e.reference,tc(a)):null}}});var Gz,Kz,Qz,Km,uO=b(()=>{ga();Re();ce();Gz=new RegExp(`(${tn})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),Kz=new RegExp(`(${Jn})\\s{0,5}(later|after|from now)(?=\\W|$)`,"i"),Qz=1,Km=class extends Y{constructor(e){super();_(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?Kz:Gz}innerExtract(e,t){let a=ks(t[Qz]);return a?K.createRelativeFromReference(e.reference,a):null}}});var du,Br,rn=b(()=>{du=class{refine(e,t){return t.filter(a=>this.isValid(e,a))}},Br=class{refine(e,t){if(t.length<2)return t;let a=[],r=t[0],i=null;for(let n=1;n<t.length;n++){i=t[n];let o=e.text.substring(r.index+r.text.length,i.index);if(!this.shouldMergeResults(o,r,i,e))a.push(r),r=i;else{let l=r,d=i,u=this.mergeResults(o,l,d,e);e.debug(()=>{""+this.constructor.name+l+d+u}),r=u}}return r!=null&&a.push(r),a}}});var Et,ys=b(()=>{rn();Et=class extends Br{shouldMergeResults(e,t,a){return!t.end&&!a.end&&e.match(this.patternBetween())!=null}mergeResults(e,t,a){if(!t.start.isOnlyWeekdayComponent()&&!a.start.isOnlyWeekdayComponent()&&(a.start.getCertainComponents().forEach(i=>{t.start.isCertain(i)||t.start.imply(i,a.start.get(i))}),t.start.getCertainComponents().forEach(i=>{a.start.isCertain(i)||a.start.imply(i,t.start.get(i))})),t.start.date().getTime()>a.start.date().getTime()){let i=t.start.dayjs(),n=a.start.dayjs();a.start.isOnlyWeekdayComponent()&&n.add(7,"days").isAfter(i)?(n=n.add(7,"days"),a.start.imply("day",n.date()),a.start.imply("month",n.month()+1),a.start.imply("year",n.year())):t.start.isOnlyWeekdayComponent()&&i.add(-7,"days").isBefore(n)?(i=i.add(-7,"days"),t.start.imply("day",i.date()),t.start.imply("month",i.month()+1),t.start.imply("year",i.year())):a.start.isDateWithUnknownYear()&&n.add(1,"years").isAfter(i)?(n=n.add(1,"years"),a.start.imply("year",n.year())):t.start.isDateWithUnknownYear()&&i.add(-1,"years").isBefore(n)?(i=i.add(-1,"years"),t.start.imply("year",i.year())):[a,t]=[t,a]}let r=t.clone();return r.start=t.start,r.end=a.start,r.index=Math.min(t.index,a.index),t.index<a.index?r.text=t.text+e+a.text:r.text=a.text+e+t.text,r}}});var Qm,pO=b(()=>{ys();Qm=class extends Et{patternBetween(){return/^\s*(to|-||until|through|till)\s*$/i}}});function qs(s,e){e=e.add(1,"day"),Tt(s,e),vi(s,e)}function mO(s,e){e=e.add(1,"day"),Hv(s,e),vi(s,e)}function Tt(s,e){s.assign("day",e.date()),s.assign("month",e.month()+1),s.assign("year",e.year())}function fO(s,e){s.assign("hour",e.hour()),s.assign("minute",e.minute()),s.assign("second",e.second()),s.assign("millisecond",e.millisecond()),s.get("hour")<12?s.assign("meridiem",V.AM):s.assign("meridiem",V.PM)}function Hv(s,e){s.imply("day",e.date()),s.imply("month",e.month()+1),s.imply("year",e.year())}function vi(s,e){s.imply("hour",e.hour()),s.imply("minute",e.minute()),s.imply("second",e.second()),s.imply("millisecond",e.millisecond())}var Wr=b(()=>{Ye()});function Bv(s,e){let t=s.clone(),a=s.start,r=e.start;if(t.start=hO(a,r),s.end!=null||e.end!=null){let i=s.end==null?s.start:s.end,n=e.end==null?e.start:e.end,o=hO(i,n);if(s.end==null&&o.date().getTime()<t.start.date().getTime()){let l=o.dayjs().add(1,"day");o.isCertain("day")?Tt(o,l):Hv(o,l)}t.end=o}return t}function hO(s,e){let t=s.clone();return e.isCertain("hour")?(t.assign("hour",e.get("hour")),t.assign("minute",e.get("minute")),e.isCertain("second")?(t.assign("second",e.get("second")),e.isCertain("millisecond")?t.assign("millisecond",e.get("millisecond")):t.imply("millisecond",e.get("millisecond"))):(t.imply("second",e.get("second")),t.imply("millisecond",e.get("millisecond")))):(t.imply("hour",e.get("hour")),t.imply("minute",e.get("minute")),t.imply("second",e.get("second")),t.imply("millisecond",e.get("millisecond"))),e.isCertain("timezoneOffset")&&t.assign("timezoneOffset",e.get("timezoneOffset")),e.isCertain("meridiem")?t.assign("meridiem",e.get("meridiem")):e.get("meridiem")!=null&&t.get("meridiem")==null&&t.imply("meridiem",e.get("meridiem")),t.get("meridiem")==V.PM&&t.get("hour")<12&&(e.isCertain("hour")?t.assign("hour",t.get("hour")+12):t.imply("hour",t.get("hour")+12)),t.addTags(s.tags()),t.addTags(e.tags()),t}var gO=b(()=>{Ye();Wr()});var Dt,ws=b(()=>{rn();gO();Dt=class extends Br{shouldMergeResults(e,t,a){return(t.start.isOnlyDate()&&a.start.isOnlyTime()||a.start.isOnlyDate()&&t.start.isOnlyTime())&&e.match(this.patternBetween())!=null}mergeResults(e,t,a){let r=t.start.isOnlyDate()?Bv(t,a):Bv(a,t);return r.index=t.index,r.text=t.text+e+a.text,r}}});var uu,kO=b(()=>{ws();uu=class extends Dt{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|\u2219|:)?\\s*$")}}});var Xz,Xm,yO=b(()=>{Iv();Xz=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),Xm=class{constructor(e){_(this,"timezoneOverrides");this.timezoneOverrides=e}refine(e,t){var r;let a=(r=e.option.timezones)!=null?r:{};return t.forEach(i=>{var f,h;let n=e.text.substring(i.index+i.text.length),o=Xz.exec(n);if(!o)return;let l=o[1].toUpperCase(),d=(h=(f=i.start.date())!=null?f:i.refDate)!=null?h:new Date,u={...this.timezoneOverrides,...a},p=Lm(l,d,u);if(p==null)return;e.debug(()=>{""+l+p+i.start});let m=i.start.get("timezoneOffset");m!==null&&p!=m&&(i.start.isCertain("timezoneOffset")||l!=o[1])||i.start.isOnlyDate()&&l!=o[1]||(i.text+=o[0],i.start.isCertain("timezoneOffset")||i.start.assign("timezoneOffset",p),i.end!=null&&!i.end.isCertain("timezoneOffset")&&i.end.assign("timezoneOffset",p))}),t}}});var Jz,Zz,eq,tq,bi,pu=b(()=>{Jz=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),Zz=1,eq=2,tq=3,bi=class{refine(e,t){return t.forEach(function(a){if(a.start.isCertain("timezoneOffset"))return;let r=e.text.substring(a.index+a.text.length),i=Jz.exec(r);if(!i)return;e.debug(()=>{""+i[0]+a});let n=parseInt(i[eq]),o=parseInt(i[tq]||"0"),l=n*60+o;l>14*60||(i[Zz]==="-"&&(l=-l),a.end!=null&&a.end.assign("timezoneOffset",l),a.start.assign("timezoneOffset",l),a.text+=i[0])}),t}}});var qo,Wv=b(()=>{qo=class{refine(e,t){if(t.length<2)return t;let a=[],r=t[0];for(let i=1;i<t.length;i++){let n=t[i];if(n.index>=r.index+r.text.length){a.push(r),r=n;continue}let o=null,l=null;n.text.length>r.text.length?(o=n,l=r):(o=r,l=n),e.debug(()=>{""+this.constructor.name+l+o}),r=o}return r!=null&&a.push(r),a}}});var wO,Jm,vO=b(()=>{wO=A(tt());Mv();Jm=class{refine(e,t){return e.option.forwardDate&&t.forEach(a=>{let r=(0,wO.default)(e.reference.getDateWithAdjustedTimezone());if(a.start.isOnlyTime()&&e.reference.instant>a.start.date()){let i=e.reference.getDateWithAdjustedTimezone(),n=new Date(i);n.setDate(n.getDate()+1),Nm(a.start,n),e.debug(()=>{""+this.constructor.name+a+i+n}),a.end&&a.end.isOnlyTime()&&(Nm(a.end,n),a.start.date()>a.end.date()&&(n.setDate(n.getDate()+1),Nm(a.end,n)))}if(a.start.isOnlyWeekdayComponent()&&r.isAfter(a.start.dayjs())&&(r.day()>=a.start.get("weekday")?r=r.day(a.start.get("weekday")+7):r=r.day(a.start.get("weekday")),a.start.imply("day",r.date()),a.start.imply("month",r.month()+1),a.start.imply("year",r.year()),e.debug(()=>{""+this.constructor.name+a+a.start}),a.end&&a.end.isOnlyWeekdayComponent()&&(r.day()>a.end.get("weekday")?r=r.day(a.end.get("weekday")+7):r=r.day(a.end.get("weekday")),a.end.imply("day",r.date()),a.end.imply("month",r.month()+1),a.end.imply("year",r.year()),e.debug(()=>{""+this.constructor.name+a+a.end}))),a.start.isDateWithUnknownYear()&&r.isAfter(a.start.dayjs()))for(let i=0;i<3&&r.isAfter(a.start.dayjs());i++)a.start.imply("year",a.start.get("year")+1),e.debug(()=>{""+this.constructor.name+a+a.start}),a.end&&!a.end.isCertain("year")&&(a.end.imply("year",a.end.get("year")+1),e.debug(()=>{""+this.constructor.name+a+a.start}))}),t}}});var Zm,bO=b(()=>{rn();Zm=class extends du{constructor(e){super();_(this,"strictMode");this.strictMode=e}isValid(e,t){return t.text.replace(" ","").match(/^\d*(\.\d*)?$/)?(e.debug(()=>{""+t.text}),!1):t.start.isValidDate()?t.end&&!t.end.isValidDate()?(e.debug(()=>{""+t+t.end}),!1):this.strictMode?this.isStrictModeValid(e,t):!0:(e.debug(()=>{""+t+t.start}),!1)}isStrictModeValid(e,t){return t.start.isOnlyWeekdayComponent()?(e.debug(()=>{""+t+t.end}),!1):!0}}});var aq,rq,sq,iq,TO,nq,CO,xO,oq,SO,EO,Zn,ef=b(()=>{ce();aq=new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})(?:T([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?(Z|([+-]\\d{2}):?(\\d{2})?)?)?(?=\\W|$)","i"),rq=1,sq=2,iq=3,TO=4,nq=5,CO=6,xO=7,oq=8,SO=9,EO=10,Zn=class extends Y{innerPattern(){return aq}innerExtract(e,t){let a=e.createParsingComponents({year:parseInt(t[rq]),month:parseInt(t[sq]),day:parseInt(t[iq])});if(t[TO]!=null&&(a.assign("hour",parseInt(t[TO])),a.assign("minute",parseInt(t[nq])),t[CO]!=null&&a.assign("second",parseInt(t[CO])),t[xO]!=null&&a.assign("millisecond",parseInt(t[xO])),t[oq]!=null)){let r=0;if(t[SO]){let i=parseInt(t[SO]),n=0;t[EO]!=null&&(n=parseInt(t[EO])),r=i*60,r<0?r-=n:r+=n}a.assign("timezoneOffset",r)}return a.addTag("parser/ISOFormatParser")}}});var ic,_v=b(()=>{rn();ic=class extends Br{mergeResults(e,t,a){let r=a.clone();return r.index=t.index,r.text=t.text+e+r.text,r.start.assign("weekday",t.start.get("weekday")),r.end&&r.end.assign("weekday",t.start.get("weekday")),r}shouldMergeResults(e,t,a){return t.start.isOnlyWeekdayComponent()&&!t.start.isCertain("hour")&&a.start.isCertain("day")&&e.match(/^,?\s*$/)!=null}}});function Pt(s,e=!1){return s.parsers.unshift(new Zn),s.refiners.unshift(new ic),s.refiners.unshift(new bi),s.refiners.unshift(new qo),s.refiners.push(new Xm),s.refiners.push(new qo),s.refiners.push(new Jm),s.refiners.push(new Zm(e)),s}var _r=b(()=>{yO();pu();Wv();vO();bO();ef();_v()});function Xa(s){let e=(0,eo.default)(s.getDateWithAdjustedTimezone()),t=new K(s,{});return Tt(t,e),fO(t,e),t.assign("timezoneOffset",s.getTimezoneOffset()),t.addTag("casualReference/now"),t}function Sa(s){let e=(0,eo.default)(s.getDateWithAdjustedTimezone()),t=new K(s,{});return Tt(t,e),vi(t,e),t.addTag("casualReference/today"),t}function Ja(s){return Go(s,1).addTag("casualReference/yesterday")}function Go(s,e){return Ti(s,-e)}function Za(s){return Ti(s,1).addTag("casualReference/tomorrow")}function Ti(s,e){let t=(0,eo.default)(s.getDateWithAdjustedTimezone()),a=new K(s,{});return t=t.add(e,"day"),Tt(a,t),vi(a,t),a}function DO(s,e=22){let t=(0,eo.default)(s.getDateWithAdjustedTimezone()),a=new K(s,{});return Tt(a,t),a.imply("hour",e),a.imply("meridiem",V.PM),a.addTag("casualReference/tonight"),a}function tf(s,e=0){let t=(0,eo.default)(s.getDateWithAdjustedTimezone()),a=new K(s,{});return t.hour()<6&&(t=t.add(-1,"day")),Tt(a,t),a.imply("hour",e),a}function nc(s,e=20){let t=new K(s,{});return t.imply("meridiem",V.PM),t.imply("hour",e),t.addTag("casualReference/evening"),t}function af(s,e=20){let t=(0,eo.default)(s.getDateWithAdjustedTimezone()),a=new K(s,{});return t=t.add(-1,"day"),Tt(a,t),a.imply("hour",e),a.imply("meridiem",V.PM),a.addTag("casualReference/yesterday"),a.addTag("casualReference/evening"),a}function Ko(s){let e=new K(s,{}),t=(0,eo.default)(s.getDateWithAdjustedTimezone());return t.hour()>2&&mO(e,t),e.assign("hour",0),e.imply("minute",0),e.imply("second",0),e.imply("millisecond",0),e.addTag("casualReference/midnight"),e}function oc(s,e=6){let t=new K(s,{});return t.imply("meridiem",V.AM),t.imply("hour",e),t.imply("minute",0),t.imply("second",0),t.imply("millisecond",0),t.addTag("casualReference/morning"),t}function PO(s,e=15){let t=new K(s,{});return t.imply("meridiem",V.PM),t.imply("hour",e),t.imply("minute",0),t.imply("second",0),t.imply("millisecond",0),t.addTag("casualReference/afternoon"),t}function lc(s){let e=new K(s,{});return e.imply("meridiem",V.AM),e.assign("hour",12),e.imply("minute",0),e.imply("second",0),e.imply("millisecond",0),e.addTag("casualReference/noon"),e}var eo,Vr=b(()=>{Re();eo=A(tt());Wr();Ye()});var MO,lq,rf,AO=b(()=>{MO=A(tt());ce();Wr();Vr();lq=/(now|today|tonight|tomorrow|overmorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,rf=class extends Y{innerPattern(e){return lq}innerExtract(e,t){let a=(0,MO.default)(e.refDate),r=t[0].toLowerCase(),i=e.createParsingComponents();switch(r){case"now":i=Xa(e.reference);break;case"today":i=Sa(e.reference);break;case"yesterday":i=Ja(e.reference);break;case"tomorrow":case"tmr":case"tmrw":i=Za(e.reference);break;case"tonight":i=DO(e.reference);break;case"overmorrow":i=Ti(e.reference,2);break;default:r.match(/last\s*night/)&&(a.hour()>6&&(a=a.add(-1,"day")),Tt(i,a),i.imply("hour",0));break}return i.addTag("parser/ENCasualDateParser"),i}}});var cq,sf,IO=b(()=>{ce();Vr();cq=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i,sf=class extends Y{innerPattern(){return cq}innerExtract(e,t){let a=null;switch(t[1].toLowerCase()){case"afternoon":a=PO(e.reference);break;case"evening":case"night":a=nc(e.reference);break;case"midnight":a=Ko(e.reference);break;case"morning":a=oc(e.reference);break;case"noon":case"midday":a=lc(e.reference);break}return a&&a.addTag("parser/ENCasualTimeParser"),a}}});function ia(s){let e={};for(let t in s)e[t]=-s[t];return e}function nf(s,e){let t=s.clone(),a=s.dayjs();for(let r in e)a=a.add(e[r],r);return("day"in e||"d"in e||"week"in e||"month"in e||"year"in e)&&(t.imply("day",a.date()),t.imply("month",a.month()+1),t.imply("year",a.year())),("second"in e||"minute"in e||"hour"in e)&&(t.imply("second",a.second()),t.imply("minute",a.minute()),t.imply("hour",a.hour())),t}var Ur=b(()=>{});function na(s,e,t){let a=s.getDateWithAdjustedTimezone(),r=dq(a,e,t),i=new K(s);return i=nf(i,{day:r}),i.assign("weekday",e),i}function dq(s,e,t){let a=s.getDay();switch(t){case"this":return of(s,e);case"last":return RO(s,e);case"next":return a==be.SUNDAY?e==be.SUNDAY?7:e:a==be.SATURDAY?e==be.SATURDAY?7:e==be.SUNDAY?8:1+e:e<a&&e!=be.SUNDAY?of(s,e):of(s,e)+7}return uq(s,e)}function uq(s,e){let t=RO(s,e),a=of(s,e);return a<-t?a:t}function of(s,e){let t=s.getDay(),a=e-t;return a<0&&(a+=7),a}function RO(s,e){let t=s.getDay(),a=e-t;return a>=0&&(a-=7),a}var Gs=b(()=>{Ye();Re();Ur()});var pq,mq,fq,hq,lf,FO=b(()=>{ga();Ve();ce();Gs();Ye();pq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${ae(Hm)}|weekend|weekday)(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),mq=1,fq=2,hq=3,lf=class extends Y{innerPattern(){return pq}innerExtract(e,t){let a=t[mq],r=t[hq],i=a||r;i=i||"",i=i.toLowerCase();let n=null;i=="last"||i=="past"?n="last":i=="next"?n="next":i=="this"&&(n="this");let o=t[fq].toLowerCase(),l;if(Hm[o]!==void 0)l=Hm[o];else if(o=="weekend")l=n=="last"?be.SUNDAY:be.SATURDAY;else if(o=="weekday"){let d=e.reference.getDateWithAdjustedTimezone().getDay();d==be.SUNDAY||d==be.SATURDAY?l=n=="last"?be.FRIDAY:be.MONDAY:(l=d-1,l=n=="last"?l-1:l+1,l=l%5+1)}else return null;return na(e.reference,l,n)}}});var jO,gq,kq,yq,cf,OO=b(()=>{ga();Re();jO=A(tt());ce();Ve();gq=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${ae(lu)})(?=\\s*)(?=\\W|$)`,"i"),kq=1,yq=2,cf=class extends Y{innerPattern(){return gq}innerExtract(e,t){let a=t[kq].toLowerCase(),r=t[yq].toLowerCase(),i=lu[r];if(a=="next"||a.startsWith("after")){let l={};return l[i]=1,K.createRelativeFromReference(e.reference,l)}if(a=="last"||a=="past"){let l={};return l[i]=-1,K.createRelativeFromReference(e.reference,l)}let n=e.createParsingComponents(),o=(0,jO.default)(e.reference.instant);return r.match(/week/i)?(o=o.add(-o.get("d"),"d"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.imply("year",o.year())):r.match(/month/i)?(o=o.add(-o.date()+1,"d"),n.imply("day",o.date()),n.assign("year",o.year()),n.assign("month",o.month()+1)):r.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.assign("year",o.year())),n}}});var wq,vq,bq,NO,LO,Vv,Ea,sn=b(()=>{Bt();wq=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i"),vq=1,bq=5,NO=2,LO=3,Vv=4,Ea=class{constructor(e){_(this,"groupNumberMonth");_(this,"groupNumberDay");this.groupNumberMonth=e?LO:NO,this.groupNumberDay=e?NO:LO}pattern(){return wq}extract(e,t){let a=t.index+t[vq].length,r=t.index+t[0].length-t[bq].length;if(a>0&&e.text.substring(0,a).match("\\d/?$")||r<e.text.length&&e.text.substring(r).match("^/?\\d"))return;let i=e.text.substring(a,r);if(i.match(/^\d\.\d$/)||i.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)||!t[Vv]&&i.indexOf("/")<0)return;let n=e.createParsingResult(a,i),o=parseInt(t[this.groupNumberMonth]),l=parseInt(t[this.groupNumberDay]);if((o<1||o>12)&&o>12)if(l>=1&&l<=12&&o<=31)[l,o]=[o,l];else return null;if(l<1||l>31)return null;if(n.start.assign("day",l),n.start.assign("month",o),t[Vv]){let d=parseInt(t[Vv]),u=Sr(d);n.start.assign("year",u)}else{let d=it(e.refDate,l,o);n.start.imply("year",d)}return n.addTag("parser/SlashDateFormatParser")}}});var Tq,Cq,df,HO=b(()=>{ga();Re();ce();ou();Tq=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${tn})(?=\\W|$)`,"i"),Cq=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${Jn})(?=\\W|$)`,"i"),df=class extends Y{constructor(e=!0){super();_(this,"allowAbbreviations");this.allowAbbreviations=e}innerPattern(){return this.allowAbbreviations?Tq:Cq}innerExtract(e,t){let a=t[1].toLowerCase(),r=ks(t[2]);if(!r)return null;switch(a){case"last":case"past":case"-":r=tc(r);break}return K.createRelativeFromReference(e.reference,r)}}});function xq(s){return s.text.match(/^[+-]/i)!=null}function BO(s){return s.text.match(/^-/i)!=null}var uf,WO=b(()=>{rn();Re();ga();Ur();uf=class extends Br{shouldMergeResults(e,t,a){return e.match(/^\s*$/i)?xq(a)||BO(a):!1}mergeResults(e,t,a,r){let i=ks(a.text);BO(a)&&(i=ia(i));let n=K.createRelativeFromReference(new rt(t.start.date()),i);return new ze(t.reference,t.index,`${t.text}${e}${a.text}`,n)}}});function _O(s){return s.text.match(/\s+(before|from)$/i)!=null}function Sq(s){return s.text.match(/\s+(after|since)$/i)!=null}var pf,VO=b(()=>{rn();Re();ga();ou();pf=class extends Br{patternBetween(){return/^\s*$/i}shouldMergeResults(e,t,a){return!e.match(this.patternBetween())||!_O(t)&&!Sq(t)?!1:!!a.start.get("day")&&!!a.start.get("month")&&!!a.start.get("year")}mergeResults(e,t,a){let r=ks(t.text);_O(t)&&(r=tc(r));let i=K.createRelativeFromReference(new rt(a.start.date()),r);return new ze(a.reference,t.index,`${t.text}${e}${a.text}`,i)}}});var Eq,Dq,mf,UO=b(()=>{ga();Eq=new RegExp(`^\\s*(${Qn})`,"i"),Dq=1,mf=class{refine(e,t){return t.forEach(function(a){if(!a.start.isDateWithUnknownYear())return;let r=e.text.substring(a.index+a.text.length),i=Eq.exec(r);if(!i||i[0].trim().length<=3)return;e.debug(()=>{""+i[0]+a});let n=Xn(i[Dq]);a.end!=null&&a.end.assign("year",n),a.start.assign("year",n),a.text+=i[0]}),t}}});var ff,$O=b(()=>{rn();ff=class extends du{constructor(){super()}isValid(e,t){let a=t.text.trim();return a===e.text.trim()?!0:a.toLowerCase()==="may"&&!e.text.substring(0,t.index).trim().match(/\b(in)$/i)?(e.debug(()=>{""+t}),!1):a.toLowerCase().endsWith("the second")?(e.text.substring(t.index+t.text.length).trim().length>0&&e.debug(()=>{""+t}),!1):!0}}});var cc,Uv=b(()=>{Qj();eO();aO();sO();nO();oO();cO();dO();uO();pO();kO();_r();AO();IO();FO();OO();sn();HO();WO();VO();Wv();UO();$O();cc=class{createCasualConfiguration(e=!1){let t=this.createConfiguration(!1,e);return t.parsers.push(new rf),t.parsers.push(new sf),t.parsers.push(new Vm),t.parsers.push(new cf),t.parsers.push(new df),t.refiners.push(new ff),t}createConfiguration(e=!0,t=!1){let a=Pt({parsers:[new Ea(t),new Bm(e),new Wm,new _m(t),new lf,new $m,new qm(e),new Gm(e),new Km(e)],refiners:[new uu]},e);return a.parsers.unshift(new Um(e)),a.refiners.unshift(new pf),a.refiners.unshift(new uf),a.refiners.unshift(new qo),a.refiners.push(new uu),a.refiners.push(new mf),a.refiners.push(new Qm),a}}});var we,hf,Er=b(()=>{Re();Uv();we=class{constructor(e){_(this,"parsers");_(this,"refiners");_(this,"defaultConfig",new cc);e=e||this.defaultConfig.createCasualConfiguration(),this.parsers=[...e.parsers],this.refiners=[...e.refiners]}clone(){return new we({parsers:[...this.parsers],refiners:[...this.refiners]})}parseDate(e,t,a){let r=this.parse(e,t,a);return r.length>0?r[0].start.date():null}parse(e,t,a){let r=new hf(e,t,a),i=[];return this.parsers.forEach(n=>{let o=we.executeParser(r,n);i=i.concat(o)}),i.sort((n,o)=>n.index-o.index),this.refiners.forEach(function(n){i=n.refine(r,i)}),i}static executeParser(e,t){let a=[],r=t.pattern(e),i=e.text,n=e.text,o=r.exec(n);for(;o;){let l=o.index+i.length-n.length;o.index=l;let d=t.extract(e,o);if(!d){n=i.substring(o.index+1),o=r.exec(n);continue}let u=null;d instanceof ze?u=d:d instanceof K?(u=e.createParsingResult(o.index,o[0]),u.start=d):u=e.createParsingResult(o.index,o[0],d);let p=u.index,m=u.text;e.debug(()=>console.log(`${t.constructor.name} extracted (at index=${p}) '${m}'`)),a.push(u),n=i.substring(p+m.length),o=r.exec(n)}return a}},hf=class{constructor(e,t,a){_(this,"text");_(this,"option");_(this,"reference");_(this,"refDate");this.text=e,this.reference=new rt(t),this.option=a!=null?a:{},this.refDate=this.reference.instant}createParsingComponents(e){return e instanceof K?e:new K(this.reference,e)}createParsingResult(e,t,a,r){let i=typeof t=="string"?t:this.text.substring(e,t),n=a?this.createParsingComponents(a):null,o=r?this.createParsingComponents(r):null;return new ze(this.reference,e,i,n,o)}debug(e){this.option.debug&&(this.option.debug instanceof Function?this.option.debug(e):this.option.debug.debug(e))}}});var $v={};ha($v,{Chrono:()=>we,GB:()=>Pq,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>kf,configuration:()=>gf,parse:()=>Mq,parseDate:()=>Aq,strict:()=>YO});function Mq(s,e,t){return kf.parse(s,e,t)}function Aq(s,e,t){return kf.parseDate(s,e,t)}var gf,kf,YO,Pq,zO=b(()=>{Er();Re();Ye();Uv();gf=new cc,kf=new we(gf.createCasualConfiguration(!1)),YO=new we(gf.createConfiguration(!0,!1)),Pq=new we(gf.createCasualConfiguration(!0))});var yf,qO=b(()=>{an();yf=class extends Ba{primaryPrefix(){return"(?:(?:um|von)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|bis)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}}});function Kv(s){let e=s.toLowerCase();return qv[e]!==void 0?qv[e]:e==="ein"||e==="einer"||e==="einem"||e==="einen"||e==="eine"?1:e.match(/wenigen/)?2:e.match(/halb/)||e.match(/halben/)?.5:e.match(/einigen/)?3:e.match(/mehreren/)?7:parseFloat(e)}function KO(s){if(/v/i.test(s))return-parseInt(s.replace(/[^0-9]+/gi,""));if(/n/i.test(s))return parseInt(s.replace(/[^0-9]+/gi,""));if(/z/i.test(s))return parseInt(s.replace(/[^0-9]+/gi,""));let e=parseInt(s);return Sr(e)}function ZO(s){let e={},t=s,a=XO.exec(t);for(;a;)Iq(e,a),t=t.substring(a[0].length),a=XO.exec(t);return e}function Iq(s,e){let t=Kv(e[1]),a=mu[e[2].toLowerCase()];s[a]=t}var Yv,zv,qv,mu,Gv,GO,QO,XO,JO,dc=b(()=>{Ve();Bt();Yv={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6},zv={januar:1,j\u00E4nner:1,janner:1,jan:1,"jan.":1,februar:2,feber:2,feb:2,"feb.":2,m\u00E4rz:3,maerz:3,m\u00E4r:3,"m\xE4r.":3,mrz:3,"mrz.":3,april:4,apr:4,"apr.":4,mai:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,august:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,dezember:12,dez:12,"dez.":12},qv={eins:1,eine:1,einem:1,einen:1,einer:1,zwei:2,drei:3,vier:4,f\u00FCnf:5,fuenf:5,sechs:6,sieben:7,acht:8,neun:9,zehn:10,elf:11,zw\u00F6lf:12,zwoelf:12},mu={sek:"second",sekunde:"second",sekunden:"second",min:"minute",minute:"minute",minuten:"minute",h:"hour",std:"hour",stunde:"hour",stunden:"hour",tag:"d",tage:"d",tagen:"d",woche:"week",wochen:"week",monat:"month",monate:"month",monaten:"month",monats:"month",quartal:"quarter",quartals:"quarter",quartale:"quarter",quartalen:"quarter",a:"year",j:"year",jr:"year",jahr:"year",jahre:"year",jahren:"year",jahres:"year"},Gv=`(?:${ae(qv)}|[0-9]+|[0-9]+\\.[0-9]+|halb?|halbe?|einigen?|wenigen?|mehreren?)`;GO="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";QO=`(${Gv})\\s{0,5}(${ae(mu)})\\s{0,5}`,XO=new RegExp(QO,"i"),JO=pr("",QO)});var Rq,Fq,jq,Oq,wf,eN=b(()=>{dc();Ve();ce();Gs();Rq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${ae(Yv)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),Fq=1,jq=3,Oq=2,wf=class extends Y{innerPattern(){return Rq}innerExtract(e,t){let a=t[Oq].toLowerCase(),r=Yv[a],i=t[Fq],n=t[jq],o=i||n;o=o||"",o=o.toLowerCase();let l=null;return o.match(/letzte/)?l="last":o.match(/chste/)?l="next":o.match(/diese/)&&(l="this"),na(e.reference,r,l)}}});var Nq,Lq,Hq,tN,aN,rN,Qo,sN=b(()=>{Ye();Nq=new RegExp("(^|\\s|T)(?:(?:um|von)\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),Lq=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|bis(?:\\s+um)?|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),Hq=2,tN=3,aN=4,rN=5,Qo=class{pattern(e){return Nq}extract(e,t){let a=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(a.text.match(/^\d{4}$/)||(a.start=Qo.extractTimeComponent(a.start.clone(),t),!a.start))return t.index+=t[0].length,null;let r=e.text.substring(t.index+t[0].length),i=Lq.exec(r);return i&&(a.end=Qo.extractTimeComponent(a.start.clone(),i),a.end&&(a.text+=i[0])),a}static extractTimeComponent(e,t){let a=0,r=0,i=null;if(a=parseInt(t[Hq]),t[tN]!=null&&(r=parseInt(t[tN])),r>=60||a>24)return null;if(a>=12&&(i=V.PM),t[rN]!=null){if(a>12)return null;let n=t[rN].toLowerCase();n.match(/morgen|vormittag/)&&(i=V.AM,a==12&&(a=0)),n.match(/nachmittag|abend/)&&(i=V.PM,a!=12&&(a+=12)),n.match(/nacht/)&&(a==12?(i=V.AM,a=0):a<6?i=V.AM:(i=V.PM,a+=12))}if(e.assign("hour",a),e.assign("minute",r),i!==null?e.assign("meridiem",i):a<12?e.imply("meridiem",V.AM):e.imply("meridiem",V.PM),t[aN]!=null){let n=parseInt(t[aN]);if(n>=60)return null;e.assign("second",n)}return e}}});var vf,iN=b(()=>{ys();vf=class extends Et{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}}});var bf,nN=b(()=>{ws();bf=class extends Dt{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}}});var oN,to,Qv=b(()=>{oN=A(tt());Ye();ce();Wr();Ur();to=class extends Y{innerPattern(e){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(e,t){let a=(0,oN.default)(e.refDate),r=t[2].toLowerCase(),i=e.createParsingComponents();return vi(i,a),to.extractTimeComponents(i,r)}static extractTimeComponents(e,t){switch(t){case"morgen":e.imply("hour",6),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.AM);break;case"vormittag":e.imply("hour",9),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.AM);break;case"mittag":case"mittags":e.imply("hour",12),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.AM);break;case"nachmittag":e.imply("hour",15),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.PM);break;case"abend":e.imply("hour",18),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.PM);break;case"nacht":e.imply("hour",22),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.PM);break;case"mitternacht":e.get("hour")>1&&(e=nf(e,{day:1})),e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",V.AM);break}return e}}});var lN,Bq,Wq,_q,Tf,cN=b(()=>{lN=A(tt());ce();Wr();Qv();Vr();Bq=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),Wq=1,_q=2,Tf=class extends Y{innerPattern(e){return Bq}innerExtract(e,t){let a=(0,lN.default)(e.refDate),r=(t[Wq]||"").toLowerCase(),i=(t[_q]||"").toLowerCase(),n=e.createParsingComponents();switch(r){case"jetzt":n=Xa(e.reference);break;case"heute":n=Sa(e.reference);break;case"morgen":qs(n,a);break;case"\xFCbermorgen":case"uebermorgen":a=a.add(1,"day"),qs(n,a);break;case"gestern":a=a.add(-1,"day"),Tt(n,a),vi(n,a);break;case"vorgestern":a=a.add(-2,"day"),Tt(n,a),vi(n,a);break;default:r.match(/letzte\s*nacht/)&&(a.hour()>6&&(a=a.add(-1,"day")),Tt(n,a),n.imply("hour",0));break}return i&&(n=to.extractTimeComponents(n,i)),n}}});var Vq,dN,uN,Uq,pN,Cf,mN=b(()=>{Bt();dc();dc();Ve();ce();Vq=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${ae(zv)})(?:(?:-|/|,?\\s*)(${GO}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),dN=1,uN=2,Uq=3,pN=4,Cf=class extends Y{innerPattern(){return Vq}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=zv[t[Uq].toLowerCase()],i=parseInt(t[dN]);if(i>31)return t.index=t.index+t[dN].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[pN]){let n=KO(t[pN]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[uN]){let n=parseInt(t[uN]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var xf,fN=b(()=>{dc();Re();ce();Ur();Ve();xf=class extends Y{constructor(){super()}innerPattern(){return new RegExp(`(?:\\s*((?:n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\s*)?(${Gv})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${ae(mu)})`,"i")}innerExtract(e,t){let a=t[2]?Kv(t[2]):1,r=mu[t[4].toLowerCase()],i={};i[r]=a;let n=t[1]||t[3]||"";if(n=n.toLowerCase(),!!n)return(/vor/.test(n)||/letzte/.test(n)||/vergangen/.test(n))&&(i=ia(i)),K.createRelativeFromReference(e.reference,i)}}});var Sf,hN=b(()=>{dc();Re();ce();Sf=class extends Y{innerPattern(){return new RegExp(`(?:in|f\xFCr|w\xE4hrend)\\s*(${JO})(?=\\W|$)`,"i")}innerExtract(e,t){let a=ZO(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var Zv={};ha(Zv,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>Xv,createCasualConfiguration:()=>gN,createConfiguration:()=>Jv,parse:()=>Yq,parseDate:()=>zq,strict:()=>$q});function Yq(s,e,t){return Xv.parse(s,e,t)}function zq(s,e,t){return Xv.parseDate(s,e,t)}function gN(s=!0){let e=Jv(!1,s);return e.parsers.unshift(new to),e.parsers.unshift(new Tf),e.parsers.unshift(new xf),e}function Jv(s=!0,e=!0){return Pt({parsers:[new Zn,new Ea(e),new yf,new Qo,new Cf,new wf,new Sf],refiners:[new vf,new bf]},s)}var Xv,$q,kN=b(()=>{_r();Er();Re();Ye();sn();ef();qO();eN();sN();iN();nN();cN();Qv();mN();fN();hN();Xv=new we(gN()),$q=new we(Jv(!0))});var yN,Ef,wN=b(()=>{yN=A(tt());Ye();ce();Wr();Vr();Ef=class extends Y{innerPattern(e){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(e,t){let a=(0,yN.default)(e.refDate),r=t[0].toLowerCase(),i=e.createParsingComponents();switch(r){case"maintenant":return Xa(e.reference);case"aujourd'hui":return Sa(e.reference);case"hier":return Ja(e.reference);case"demain":return Za(e.reference);default:r.match(/cette\s*nuit/)?(Tt(i,a),i.imply("hour",22),i.imply("meridiem",V.PM)):r.match(/la\s*veille/)&&(a=a.add(-1,"day"),Tt(i,a),i.imply("hour",0))}return i}}});var Df,vN=b(()=>{Ye();ce();Df=class extends Y{innerPattern(e){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(e,t){let a=t[2].toLowerCase(),r=e.createParsingComponents();switch(a){case"apr\xE8s-midi":case"aprem":r.imply("hour",14),r.imply("minute",0),r.imply("meridiem",V.PM);break;case"soir":r.imply("hour",18),r.imply("minute",0),r.imply("meridiem",V.PM);break;case"matin":r.imply("hour",8),r.imply("minute",0),r.imply("meridiem",V.AM);break;case"a midi":r.imply("hour",12),r.imply("minute",0),r.imply("meridiem",V.AM);break;case"\xE0 minuit":r.imply("hour",0),r.imply("meridiem",V.AM);break}return r}}});var Pf,bN=b(()=>{an();Pf=class extends Ba{primaryPrefix(){return"(?:(?:[\xE0a])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}}});var Mf,TN=b(()=>{ws();Mf=class extends Dt{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|au|vers|de|,|-)?\\s*$")}}});var Af,CN=b(()=>{ys();Af=class extends Et{patternBetween(){return/^\s*(à|a|au|-)\s*$/i}}});function sb(s){let e=s.toLowerCase();return ab[e]!==void 0?ab[e]:e==="une"||e==="un"?1:e.match(/quelques?/)?3:e.match(/demi-?/)?.5:parseFloat(e)}function nb(s){let e=s.toLowerCase();return e=e.replace(/(?:er)$/i,""),parseInt(e)}function SN(s){if(/AC/i.test(s))return s=s.replace(/BC/i,""),-parseInt(s);if(/AD/i.test(s)||/C/i.test(s))return s=s.replace(/[^\d]+/i,""),parseInt(s);let e=parseInt(s);return e<100&&(e>50?e=e+1900:e=e+2e3),e}function Rf(s){let e={},t=s,a=DN.exec(t);for(;a;)qq(e,a),t=t.substring(a[0].length),a=DN.exec(t);return e}function qq(s,e){let t=sb(e[1]),a=fu[e[2].toLowerCase()];s[a]=t}var eb,tb,ab,fu,rb,ib,xN,EN,DN,If,ao=b(()=>{Ve();eb={dimanche:0,dim:0,lundi:1,lun:1,mardi:2,mar:2,mercredi:3,mer:3,jeudi:4,jeu:4,vendredi:5,ven:5,samedi:6,sam:6},tb={janvier:1,jan:1,"jan.":1,f\u00E9vrier:2,f\u00E9v:2,"f\xE9v.":2,fevrier:2,fev:2,"fev.":2,mars:3,mar:3,"mar.":3,avril:4,avr:4,"avr.":4,mai:5,juin:6,jun:6,juillet:7,juil:7,jul:7,"jul.":7,ao\u00FBt:8,aout:8,septembre:9,sep:9,"sep.":9,sept:9,"sept.":9,octobre:10,oct:10,"oct.":10,novembre:11,nov:11,"nov.":11,d\u00E9cembre:12,decembre:12,dec:12,"dec.":12},ab={un:1,deux:2,trois:3,quatre:4,cinq:5,six:6,sept:7,huit:8,neuf:9,dix:10,onze:11,douze:12,treize:13},fu={sec:"second",seconde:"second",secondes:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",heure:"hour",heures:"hour",jour:"d",jours:"d",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year",ann\u00E9e:"year",ann\u00E9es:"year"},rb=`(?:${ae(ab)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;ib="(?:[0-9]{1,2}(?:er)?)";xN="(?:[1-9][0-9]{0,3}\\s*(?:AC|AD|p\\.\\s*C(?:hr?)?\\.\\s*n\\.)|[1-2][0-9]{3}|[5-9][0-9])";EN=`(${rb})\\s{0,5}(${ae(fu)})\\s{0,5}`,DN=new RegExp(EN,"i"),If=pr("",EN)});var Gq,Kq,Qq,Ff,PN=b(()=>{ao();Ve();ce();Gs();Gq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${ae(eb)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),Kq=1,Qq=2,Ff=class extends Y{innerPattern(){return Gq}innerExtract(e,t){let a=t[Kq].toLowerCase(),r=eb[a];if(r===void 0)return null;let i=t[Qq];i=i||"",i=i.toLowerCase();let n=null;return i=="dernier"?n="last":i=="prochain"&&(n="next"),na(e.reference,r,n)}}});var Xq,Jq,Zq,MN,AN,IN,Xo,RN=b(()=>{Ye();Xq=new RegExp("(^|\\s|T)(?:(?:[\xE0a])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),Jq=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),Zq=2,MN=3,AN=4,IN=5,Xo=class{pattern(e){return Xq}extract(e,t){let a=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(a.text.match(/^\d{4}$/)||(a.start=Xo.extractTimeComponent(a.start.clone(),t),!a.start))return t.index+=t[0].length,null;let r=e.text.substring(t.index+t[0].length),i=Jq.exec(r);return i&&(a.end=Xo.extractTimeComponent(a.start.clone(),i),a.end&&(a.text+=i[0])),a}static extractTimeComponent(e,t){let a=0,r=0,i=null;if(a=parseInt(t[Zq]),t[MN]!=null&&(r=parseInt(t[MN])),r>=60||a>24)return null;if(a>=12&&(i=V.PM),t[IN]!=null){if(a>12)return null;let n=t[IN][0].toLowerCase();n=="a"&&(i=V.AM,a==12&&(a=0)),n=="p"&&(i=V.PM,a!=12&&(a+=12))}if(e.assign("hour",a),e.assign("minute",r),i!==null?e.assign("meridiem",i):a<12?e.imply("meridiem",V.AM):e.imply("meridiem",V.PM),t[AN]!=null){let n=parseInt(t[AN]);if(n>=60)return null;e.assign("second",n)}return e}}});var eG,FN,jN,tG,ON,jf,NN=b(()=>{Bt();ao();ao();ao();Ve();ce();eG=new RegExp(`(?:on\\s*?)?(${ib})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${ib}))?(?:-|/|\\s*(?:de)?\\s*)(${ae(tb)})(?:(?:-|/|,?\\s*)(${xN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),FN=1,jN=2,tG=3,ON=4,jf=class extends Y{innerPattern(){return eG}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=tb[t[tG].toLowerCase()],i=nb(t[FN]);if(i>31)return t.index=t.index+t[FN].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[ON]){let n=SN(t[ON]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[jN]){let n=nb(t[jN]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var Of,LN=b(()=>{ao();Re();ce();Ur();Of=class extends Y{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${If})(?=(?:\\W|$))`,"i")}innerExtract(e,t){let a=Rf(t[1]),r=ia(a);return K.createRelativeFromReference(e.reference,r)}}});var Nf,HN=b(()=>{ao();Re();ce();Nf=class extends Y{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${If})(?=\\W|$)`,"i")}innerExtract(e,t){let a=Rf(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var Lf,BN=b(()=>{ao();Re();ce();Ur();Ve();Lf=class extends Y{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${rb})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${ae(fu)})(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?`,"i")}innerExtract(e,t){let a=t[1]?sb(t[1]):1,r=fu[t[3].toLowerCase()],i={};i[r]=a;let n=t[2]||t[4]||"";if(n=n.toLowerCase(),!!n)return(/derni[eè]re?s?/.test(n)||/pass[ée]e?s?/.test(n)||/pr[ée]c[ée]dents?/.test(n))&&(i=ia(i)),K.createRelativeFromReference(e.reference,i)}}});var cb={};ha(cb,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>ob,createCasualConfiguration:()=>WN,createConfiguration:()=>lb,parse:()=>rG,parseDate:()=>sG,strict:()=>aG});function rG(s,e,t){return ob.parse(s,e,t)}function sG(s,e,t){return ob.parseDate(s,e,t)}function WN(s=!0){let e=lb(!1,s);return e.parsers.unshift(new Ef),e.parsers.unshift(new Df),e.parsers.unshift(new Lf),e}function lb(s=!0,e=!0){return Pt({parsers:[new Ea(e),new jf,new Pf,new Xo,new Of,new Nf,new Ff],refiners:[new Mf,new Af]},s)}var ob,aG,_N=b(()=>{_r();Er();Re();Ye();wN();vN();sn();bN();TN();CN();PN();RN();NN();LN();HN();BN();ob=new we(WN()),aG=new we(lb(!0))});function mr(s){return String(s).replace(/\u2019/g,"'").replace(/\u201D/g,'"').replace(/\u3000/g," ").replace(/\uFFE5/g,"\xA5").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,iG)}function iG(s){return String.fromCharCode(s.charCodeAt(0)-65248)}function Jo(s){let e=0;for(let t=0;t<s.length;t++){let a=s[t];a==="\u5341"?e=e===0?Ci[a]:e*Ci[a]:e+=Ci[a]}return e}var Ci,uc,pc=b(()=>{Ci={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},uc={\u65E5:0,\u6708:1,\u706B:2,\u6C34:3,\u6728:4,\u91D1:5,\u571F:6}});var VN,nG,UN,oG,db,lG,cG,dG,Hf,$N=b(()=>{pc();Bt();VN=A(tt()),nG=/(?:(?:([同今本])|((昭和|平成|令和)?([0-9-]{1,4}|元)))年\s*)?([0-9-]{1,2})月\s*([0-9-]{1,2})日/i,UN=1,oG=2,db=3,lG=4,cG=5,dG=6,Hf=class{pattern(){return nG}extract(e,t){let a=parseInt(mr(t[cG])),r=parseInt(mr(t[dG])),i=e.createParsingComponents({day:r,month:a});if(t[UN]&&t[UN].match("\u540C|\u4ECA|\u672C")){let n=(0,VN.default)(e.refDate);i.assign("year",n.year())}if(t[oG]){let n=t[lG],o=n=="\u5143"?1:parseInt(mr(n));t[db]=="\u4EE4\u548C"?o+=2018:t[db]=="\u5E73\u6210"?o+=1988:t[db]=="\u662D\u548C"&&(o+=1925),i.assign("year",o)}else{let n=it(e.refDate,r,a);i.imply("year",n)}return i}}});var Bf,YN=b(()=>{ys();Bf=class extends Et{patternBetween(){return/^\s*(から||ー|-||~)\s*$/i}}});function pG(s){switch(s){case"\u304D\u3087\u3046":return"\u4ECA\u65E5";case"\u307B\u3093\u3058\u3064":return"\u672C\u65E5";case"\u304D\u306E\u3046":return"\u6628\u65E5";case"\u3042\u3057\u305F":return"\u660E\u65E5";case"\u3053\u3093\u3084":return"\u4ECA\u591C";case"\u3053\u3093\u3086\u3046":return"\u4ECA\u5915";case"\u3053\u3093\u3070\u3093":return"\u4ECA\u6669";case"\u3051\u3055":return"\u4ECA\u671D";default:return s}}var zN,uG,Wf,qN=b(()=>{zN=A(tt());Ye();Vr();uG=/今日|きょう|本日|ほんじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;Wf=class{pattern(){return uG}extract(e,t){let a=pG(t[0]),r=(0,zN.default)(e.refDate),i=e.createParsingComponents();switch(a){case"\u6628\u65E5":return Ja(e.reference);case"\u660E\u65E5":return Za(e.reference);case"\u672C\u65E5":case"\u4ECA\u65E5":return Sa(e.reference)}return a=="\u4ECA\u591C"||a=="\u4ECA\u5915"||a=="\u4ECA\u6669"?(i.imply("hour",22),i.assign("meridiem",V.PM)):a.match("\u4ECA\u671D")&&(i.imply("hour",6),i.assign("meridiem",V.AM)),i.assign("day",r.date()),i.assign("month",r.month()+1),i.assign("year",r.year()),i}}});var mG,_f,GN=b(()=>{pc();Gs();mG=new RegExp("((?<prefix>\u524D\u306E|\u6B21\u306E|\u4ECA\u9031))?(?<weekday>"+Object.keys(uc).join("|")+")(?:\u66DC\u65E5|\u66DC)","i"),_f=class{pattern(){return mG}extract(e,t){let a=t.groups.weekday,r=uc[a];if(r===void 0)return null;let i=t.groups.prefix||"",n=null;return i.match(/前の/)?n="last":i.match(/次の/)?n="next":i.match(/今週/)&&(n="this"),na(e.reference,r,n)}}});var fG,KN,hG,gG,Vf,QN=b(()=>{Bt();pc();fG=new RegExp("([0-9\uFF10-\uFF19]{4}[\\/|\\\uFF0F])?([0-1\uFF10-\uFF11]{0,1}[0-9\uFF10-\uFF19]{1})(?:[\\/|\\\uFF0F]([0-3\uFF10-\uFF13]{0,1}[0-9\uFF10-\uFF19]{1}))","i"),KN=1,hG=2,gG=3,Vf=class{pattern(){return fG}extract(e,t){let a=e.createParsingComponents(),r=parseInt(mr(t[hG])),i=parseInt(mr(t[gG]));if(r<1||r>12||i<1||i>31)return null;if(a.assign("day",i),a.assign("month",r),t[KN]){let n=parseInt(mr(t[KN])),o=Sr(n);a.assign("year",o)}else{let n=it(e.reference.instant,i,r);a.imply("year",n)}return a}}});var kG,yG,Uf,$f,ro,mc,Yf,zf,XN=b(()=>{ce();Ye();pc();kG=new RegExp("(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(Ci).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(Ci).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(Ci).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),yG=new RegExp("(?:^\\s*(?:\u304B\u3089|\\-|\\\u2013|\\\uFF0D|\\~|\\\u301C)\\s*)(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(Ci).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(Ci).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(Ci).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Uf=1,$f=2,ro=3,mc=4,Yf=5,zf=class extends Y{innerPattern(){return kG}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let a=e.createParsingResult(t.index,t[0]),r=0,i=0,n=-1;if(t[mc]){let o=parseInt(mr(t[mc]));if(isNaN(o)&&(o=Jo(t[mc])),o>=60)return null;a.start.assign("second",o)}if(r=parseInt(mr(t[$f])),isNaN(r)&&(r=Jo(t[$f])),t[ro]?t[ro]==="\u534A"?i=30:(i=parseInt(mr(t[ro])),isNaN(i)&&(i=Jo(t[ro]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(n=V.PM),t[Uf]){if(r>12)return null;let o=t[Uf],l=o[0].toLowerCase();o==="\u5348\u524D"||l==="a"?(n=V.AM,r===12&&(r=0)):(o==="\u5348\u5F8C"||l==="p")&&(n=V.PM,r!=12&&(r+=12))}else if(t[Yf]){if(r>12)return null;let o=t[Yf][0].toLowerCase();o==="a"&&(n=V.AM,r===12&&(r=0)),o==="p"&&(n=V.PM,r!=12&&(r+=12))}if(a.start.assign("hour",r),a.start.assign("minute",i),n>=0?a.start.assign("meridiem",n):r<12?a.start.imply("meridiem",0):a.start.imply("meridiem",1),t=yG.exec(e.text.substring(a.index+a.text.length)),!t)return a.text.match(/^\d+$/)?null:a;if(a.end=e.createParsingComponents(),r=0,i=0,n=-1,t[mc]){let o=parseInt(mr(t[mc]));if(isNaN(o)&&(o=Jo(t[mc])),o>=60)return null;a.end.assign("second",o)}if(r=parseInt(mr(t[$f])),isNaN(r)&&(r=Jo(t[$f])),t[ro]?t[ro]==="\u534A"?i=30:(i=parseInt(mr(t[ro])),isNaN(i)&&(i=Jo(t[ro]))):r>100&&(i=r%100,r=Math.floor(r/100)),i>=60||r>24)return null;if(r>=12&&(n=V.PM),t[Uf]){if(r>12)return null;let o=t[Uf],l=o[0].toLowerCase();o==="\u5348\u524D"||l==="a"?(n=V.AM,r===12&&(r=0)):(o==="\u5348\u5F8C"||l==="p")&&(n=V.PM,r!=12&&(r+=12)),a.start.isCertain("meridiem")||(n===V.AM?(a.start.imply("meridiem",V.AM),a.start.get("hour")===12&&a.start.assign("hour",0)):(a.start.imply("meridiem",1),a.start.get("hour")!=12&&a.start.assign("hour",a.start.get("hour")+12)))}else if(t[Yf]){if(r>12)return null;let o=t[Yf][0].toLowerCase();o==="a"&&(n=V.AM,r===12&&(r=0)),o==="p"&&(n=V.PM,r!=12&&(r+=12))}return a.text=a.text+t[0],a.end.assign("hour",r),a.end.assign("minute",i),n>=0?a.end.assign("meridiem",n):a.start.isCertain("meridiem")&&a.start.get("hour")>12?a.start.get("hour")-12>r?a.end.imply("meridiem",V.AM):r<=12&&(a.end.assign("hour",r+12),a.end.assign("meridiem",V.PM)):r>12?a.end.imply("meridiem",V.PM):r<=12&&a.end.imply("meridiem",V.AM),a.end.date().getTime()<a.start.date().getTime()&&a.end.imply("day",a.end.get("day")+1),a}}});var qf,JN=b(()=>{ws();qf=class extends Dt{patternBetween(){return/^\s*(の)?\s*$/i}}});var Gf,ZN=b(()=>{rn();Gf=class extends Br{mergeResults(e,t,a){let r=t.clone();return r.text=t.text+e+a.text,r.start.assign("weekday",a.start.get("weekday")),r.end&&r.end.assign("weekday",a.start.get("weekday")),r}shouldMergeResults(e,t,a){return t.start.isCertain("day")&&a.start.isOnlyWeekdayComponent()&&!a.start.isCertain("hour")&&e.match(/^[,、の]?\s*$/)!==null}}});var wG,Kf,eL=b(()=>{pc();Gs();wG=new RegExp("(?:\\(|\\\uFF08)(?<weekday>"+Object.keys(uc).join("|")+")(?:\\)|\\\uFF09)","i"),Kf=class{pattern(){return wG}extract(e,t){let a=t.groups.weekday,r=uc[a];return r===void 0?null:na(e.reference,r)}}});var mb={};ha(mb,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>ub,createCasualConfiguration:()=>tL,createConfiguration:()=>pb,parse:()=>bG,parseDate:()=>TG,strict:()=>vG});function bG(s,e,t){return ub.parse(s,e,t)}function TG(s,e,t){return ub.parseDate(s,e,t)}function tL(){let s=pb(!1);return s.parsers.unshift(new Wf),s}function pb(s=!0){let e=Pt({parsers:[new Hf,new _f,new Kf,new Vf,new zf],refiners:[new Gf,new qf,new Bf]},s);return e.refiners=e.refiners.filter(t=>!(t instanceof ic)),e}var ub,vG,aL=b(()=>{$N();YN();qN();GN();QN();XN();JN();Er();Re();Ye();ZN();eL();_r();_v();ub=new we(tL()),vG=new we(pb(!0))});function sL(s){if(s.match(/^[0-9]{1,4}$/)){let e=parseInt(s);return e<100&&(e>50?e=e+1900:e=e+2e3),e}return s.match(/a\.?\s*c\.?/i)?(s=s.replace(/a\.?\s*c\.?/i,""),-parseInt(s)):parseInt(s)}var fb,hb,rL,Qf=b(()=>{fb={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,ter\u00E7a:2,"ter\xE7a-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,s\u00E1bado:6,sabado:6,sab:6},hb={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,mar\u00E7o:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12},rL="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?"});var CG,xG,SG,EG,Xf,iL=b(()=>{Qf();Ve();ce();Gs();CG=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${ae(fb)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),xG=1,SG=2,EG=3,Xf=class extends Y{innerPattern(){return CG}innerExtract(e,t){let a=t[SG].toLowerCase(),r=fb[a];if(r===void 0)return null;let i=t[xG],n=t[EG],o=i||n||"";o=o.toLowerCase();let l=null;return o=="passado"?l="this":o=="pr\xF3ximo"||o=="proximo"?l="next":o=="este"&&(l="this"),na(e.reference,r,l)}}});var Jf,nL=b(()=>{an();Jf=class extends Ba{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}}});var Zf,oL=b(()=>{ws();Zf=class extends Dt{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}}});var eh,lL=b(()=>{ys();eh=class extends Et{patternBetween(){return/^\s*(?:-)\s*$/i}}});var DG,cL,dL,PG,uL,th,pL=b(()=>{Bt();Qf();Qf();Ve();ce();DG=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${ae(hb)})(?:\\s*(?:de|,)?\\s*(${rL}))?(?=\\W|$)`,"i"),cL=1,dL=2,PG=3,uL=4,th=class extends Y{innerPattern(){return DG}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=hb[t[PG].toLowerCase()],i=parseInt(t[cL]);if(i>31)return t.index=t.index+t[cL].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[uL]){let n=sL(t[uL]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[dL]){let n=parseInt(t[dL]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var ah,mL=b(()=>{ce();Vr();ah=class extends Y{innerPattern(e){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(e,t){let a=t[0].toLowerCase(),r=e.createParsingComponents();switch(a){case"agora":return Xa(e.reference);case"hoje":return Sa(e.reference);case"amanha":case"amanh\xE3":return Za(e.reference);case"ontem":return Ja(e.reference)}return r}}});var fL,rh,hL=b(()=>{Ye();ce();Wr();fL=A(tt()),rh=class extends Y{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(e,t){let a=(0,fL.default)(e.refDate),r=e.createParsingComponents();switch(t[1].toLowerCase()){case"tarde":r.imply("meridiem",V.PM),r.imply("hour",15);break;case"noite":r.imply("meridiem",V.PM),r.imply("hour",22);break;case"manha":case"manh\xE3":r.imply("meridiem",V.AM),r.imply("hour",6);break;case"meia-noite":qs(r,a),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"meio-dia":r.imply("meridiem",V.AM),r.imply("hour",12);break}return r}}});var yb={};ha(yb,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>gb,createCasualConfiguration:()=>gL,createConfiguration:()=>kb,parse:()=>AG,parseDate:()=>IG,strict:()=>MG});function AG(s,e,t){return gb.parse(s,e,t)}function IG(s,e,t){return gb.parseDate(s,e,t)}function gL(s=!0){let e=kb(!1,s);return e.parsers.push(new ah),e.parsers.push(new rh),e}function kb(s=!0,e=!0){return Pt({parsers:[new Ea(e),new Xf,new Jf,new th],refiners:[new Zf,new eh]},s)}var gb,MG,kL=b(()=>{_r();Er();Re();Ye();sn();iL();nL();oL();lL();pL();mL();hL();gb=new we(gL()),MG=new we(kb(!0))});var sh,yL=b(()=>{ys();sh=class extends Et{patternBetween(){return/^\s*(tot|-)\s*$/i}}});var ih,wL=b(()=>{ws();ih=class extends Dt{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}}});var nh,vL=b(()=>{ce();Vr();nh=class extends Y{innerPattern(e){return/(nu|vandaag|morgen|morgend|gisteren)(?=\W|$)/i}innerExtract(e,t){let a=t[0].toLowerCase(),r=e.createParsingComponents();switch(a){case"nu":return Xa(e.reference);case"vandaag":return Sa(e.reference);case"morgen":case"morgend":return Za(e.reference);case"gisteren":return Ja(e.reference)}return r}}});var bL,RG,FG,oh,TL=b(()=>{Ye();ce();bL=A(tt());Wr();RG=1,FG=2,oh=class extends Y{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(e,t){let a=(0,bL.default)(e.refDate),r=e.createParsingComponents();switch(t[RG]==="deze"&&(r.assign("day",e.refDate.getDate()),r.assign("month",e.refDate.getMonth()+1),r.assign("year",e.refDate.getFullYear())),t[FG].toLowerCase()){case"namiddag":case"'s namiddags":r.imply("meridiem",V.PM),r.imply("hour",15);break;case"avond":case"'s avonds'":r.imply("meridiem",V.PM),r.imply("hour",20);break;case"middernacht":qs(r,a),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"ochtend":case"'s ochtends":r.imply("meridiem",V.AM),r.imply("hour",6);break;case"middag":case"'s middags":r.imply("meridiem",V.AM),r.imply("hour",12);break}return r}}});function OG(s){let e=s.toLowerCase();return vb[e]!==void 0?vb[e]:e==="paar"?2:e==="half"||e.match(/halve?/)?.5:parseFloat(e.replace(",","."))}function Cb(s){let e=s.toLowerCase();return bb[e]!==void 0?bb[e]:(e=e.replace(/(?:ste|de)$/i,""),parseInt(e))}function ch(s){if(/voor Christus/i.test(s))return s=s.replace(/voor Christus/i,""),-parseInt(s);if(/na Christus/i.test(s))return s=s.replace(/na Christus/i,""),parseInt(s);let e=parseInt(s);return Sr(e)}function so(s){let e={},t=s,a=xL.exec(t);for(;a;)NG(e,a),t=t.substring(a[0].length),a=xL.exec(t);return e}function NG(s,e){let t=OG(e[1]),a=hu[e[2].toLowerCase()];s[a]=t}var wb,nn,vb,bb,hu,jG,Tb,lh,CL,xL,xi,$r=b(()=>{Ve();Bt();wb={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6},nn={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,mrt:3,"mrt.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12},vb={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},bb={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,twee\u00EBntwintigste:22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31},hu={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"},jG=`(?:${ae(vb)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;Tb=`(?:${ae(bb)}|[0-9]{1,2}(?:ste|de)?)`;lh="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";CL=`(${jG})\\s{0,5}(${ae(hu)})\\s{0,5}`,xL=new RegExp(CL,"i"),xi=pr("(?:(?:binnen|in)\\s*)?",CL)});var dh,SL=b(()=>{$r();Re();ce();dh=class extends Y{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+xi+")(?=\\W|$)","i")}innerExtract(e,t){let a=so(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var LG,HG,BG,WG,uh,EL=b(()=>{$r();Ve();ce();Gs();LG=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${ae(wb)})(?=\\W|$)`,"i"),HG=1,BG=2,WG=3,uh=class extends Y{innerPattern(){return LG}innerExtract(e,t){let a=t[BG].toLowerCase(),r=wb[a],i=t[HG],n=t[WG],o=i||n;o=o||"",o=o.toLowerCase();let l=null;return o=="vorige"?l="last":o=="volgende"?l="next":o=="deze"&&(l="this"),na(e.reference,r,l)}}});var _G,VG,DL,PL,ML,ph,AL=b(()=>{Bt();$r();$r();$r();Ve();ce();_G=new RegExp(`(?:on\\s*?)?(${Tb})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${Tb}))?(?:-|/|\\s*(?:of)?\\s*)(`+ae(nn)+`)(?:(?:-|/|,?\\s*)(${lh}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),VG=3,DL=1,PL=2,ML=4,ph=class extends Y{innerPattern(){return _G}innerExtract(e,t){let a=nn[t[VG].toLowerCase()],r=Cb(t[DL]);if(r>31)return t.index=t.index+t[DL].length,null;let i=e.createParsingComponents({day:r,month:a});if(t[ML]){let l=ch(t[ML]);i.assign("year",l)}else{let l=it(e.refDate,r,a);i.imply("year",l)}if(!t[PL])return i;let n=Cb(t[PL]),o=e.createParsingResult(t.index,t[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",n),o}}});var UG,$G,IL,gu,RL=b(()=>{$r();Bt();Ve();$r();ce();UG=new RegExp(`(${ae(nn)})\\s*(?:[,-]?\\s*(${lh})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),$G=1,IL=2,gu=class extends Y{innerPattern(){return UG}innerExtract(e,t){let a=e.createParsingComponents();a.imply("day",1);let r=t[$G],i=nn[r.toLowerCase()];if(a.assign("month",i),t[IL]){let n=ch(t[IL]);a.assign("year",n)}else{let n=it(e.refDate,1,i);a.imply("year",n)}return a}}});var YG,zG,qG,mh,FL=b(()=>{ce();YG=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),zG=1,qG=2,mh=class extends Y{innerPattern(){return YG}innerExtract(e,t){let a=parseInt(t[qG]),r=parseInt(t[zG]);return e.createParsingComponents().imply("day",1).assign("month",r).assign("year",a)}}});var fh,jL=b(()=>{an();fh=class extends Ba{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}}});var GG,KG,QG,OL,XG,hh,NL=b(()=>{$r();Ve();ce();GG=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${ae(nn)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),KG=1,QG=2,OL=3,XG=4,hh=class extends Y{innerPattern(){return GG}innerExtract(e,t){let a=t[OL]?parseInt(t[OL]):nn[t[QG].toLowerCase()];if(a<1||a>12)return null;let r=parseInt(t[KG]);return{day:parseInt(t[XG]),month:a,year:r}}}});var LL,JG,ZG,gh,HL=b(()=>{ce();Ye();Wr();LL=A(tt()),JG=1,ZG=2,gh=class extends Y{innerPattern(e){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(e,t){let a=t[JG].toLowerCase(),r=t[ZG].toLowerCase(),i=e.createParsingComponents(),n=(0,LL.default)(e.refDate);switch(a){case"gisteren":Tt(i,n.add(-1,"day"));break;case"van":Tt(i,n);break;case"morgen":qs(i,n);break}switch(r){case"ochtend":i.imply("meridiem",V.AM),i.imply("hour",6);break;case"middag":i.imply("meridiem",V.AM),i.imply("hour",12);break;case"namiddag":i.imply("meridiem",V.PM),i.imply("hour",15);break;case"avond":i.imply("meridiem",V.PM),i.imply("hour",20);break}return i}}});var e6,t6,a6,kh,BL=b(()=>{$r();Re();ce();Ur();e6=new RegExp(`(dit|deze|vorig|afgelopen|(?:aan)?komend|over|\\+|-)e?\\s*(${xi})(?=\\W|$)`,"i"),t6=1,a6=2,kh=class extends Y{innerPattern(){return e6}innerExtract(e,t){let a=t[t6].toLowerCase(),r=so(t[a6]);switch(a){case"vorig":case"afgelopen":case"-":r=ia(r);break}return K.createRelativeFromReference(e.reference,r)}}});var WL,r6,s6,i6,yh,_L=b(()=>{$r();Re();WL=A(tt());ce();Ve();r6=new RegExp(`(dit|deze|(?:aan)?komend|volgend|afgelopen|vorig)e?\\s*(${ae(hu)})(?=\\s*)(?=\\W|$)`,"i"),s6=1,i6=2,yh=class extends Y{innerPattern(){return r6}innerExtract(e,t){let a=t[s6].toLowerCase(),r=t[i6].toLowerCase(),i=hu[r];if(a=="volgend"||a=="komend"||a=="aankomend"){let l={};return l[i]=1,K.createRelativeFromReference(e.reference,l)}if(a=="afgelopen"||a=="vorig"){let l={};return l[i]=-1,K.createRelativeFromReference(e.reference,l)}let n=e.createParsingComponents(),o=(0,WL.default)(e.reference.instant);return r.match(/week/i)?(o=o.add(-o.get("d"),"d"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.imply("year",o.year())):r.match(/maand/i)?(o=o.add(-o.date()+1,"d"),n.imply("day",o.date()),n.assign("year",o.year()),n.assign("month",o.month()+1)):r.match(/jaar/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.assign("year",o.year())),n}}});var n6,o6,wh,VL=b(()=>{$r();Re();ce();Ur();n6=new RegExp("("+xi+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),o6=new RegExp("("+xi+")geleden(?=(?:\\W|$))","i"),wh=class extends Y{constructor(e){super();_(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?o6:n6}innerExtract(e,t){let a=so(t[1]),r=ia(a);return K.createRelativeFromReference(e.reference,r)}}});var l6,c6,d6,vh,UL=b(()=>{$r();Re();ce();l6=new RegExp("("+xi+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),c6=new RegExp("("+xi+")(later|vanaf nu)(?=(?:\\W|$))","i"),d6=1,vh=class extends Y{constructor(e){super();_(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?c6:l6}innerExtract(e,t){let a=so(t[d6]);return K.createRelativeFromReference(e.reference,a)}}});var Eb={};ha(Eb,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>xb,createCasualConfiguration:()=>$L,createConfiguration:()=>Sb,parse:()=>p6,parseDate:()=>m6,strict:()=>u6});function p6(s,e,t){return xb.parse(s,e,t)}function m6(s,e,t){return xb.parseDate(s,e,t)}function $L(s=!0){let e=Sb(!1,s);return e.parsers.unshift(new nh),e.parsers.unshift(new oh),e.parsers.unshift(new gh),e.parsers.unshift(new gu),e.parsers.unshift(new yh),e.parsers.unshift(new kh),e}function Sb(s=!0,e=!0){return Pt({parsers:[new Ea(e),new dh,new ph,new gu,new uh,new hh,new mh,new fh(s),new wh(s),new vh(s)],refiners:[new ih,new sh]},s)}var xb,u6,YL=b(()=>{_r();Er();Re();Ye();yL();wL();vL();TL();sn();SL();EL();AL();RL();FL();jL();NL();HL();BL();_L();VL();UL();xb=new we($L()),u6=new we(Sb(!0))});function vs(s){let e=0;for(let t=0;t<s.length;t++){let a=s[t];a==="\u5341"?e=e===0?Da[a]:e*Da[a]:e+=Da[a]}return e}function zL(s){let e="";for(let t=0;t<s.length;t++){let a=s[t];e=e+Da[a]}return parseInt(e)}var Da,fc,hc=b(()=>{Da={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},fc={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6}});var qL,Db,GL,Pb,gc,Mb=b(()=>{qL=A(tt());ce();hc();Db=1,GL=2,Pb=3,gc=class extends Y{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(Da).join("")+"]{4}|["+Object.keys(Da).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(Da).join("")+"]{1,3})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(Da).join("")+"]{1,3})?(?:\\s*)(?:\u65E5|\u53F7)?")}innerExtract(e,t){let a=(0,qL.default)(e.refDate),r=e.createParsingResult(t.index,t[0]),i=parseInt(t[GL]);if(isNaN(i)&&(i=vs(t[GL])),r.start.assign("month",i),t[Pb]){let n=parseInt(t[Pb]);isNaN(n)&&(n=vs(t[Pb])),r.start.assign("day",n)}else r.start.imply("day",a.date());if(t[Db]){let n=parseInt(t[Db]);isNaN(n)&&(n=zL(t[Db])),r.start.assign("year",n)}else r.start.imply("year",a.year());return r}}});var KL,f6,Ab,h6,kc,Ib=b(()=>{KL=A(tt());ce();hc();f6=new RegExp("(\\d+|["+Object.keys(Da).join("")+"]+|\u534A|\u51E0)(?:\\s*)(?:\u4E2A)?(\u79D2(?:\u949F)?|\u5206\u949F|\u5C0F\u65F6|\u949F|\u65E5|\u5929|\u661F\u671F|\u793C\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u8FC7)?\u540E|(?:\u4E4B)?\u5185)","i"),Ab=1,h6=2,kc=class extends Y{innerPattern(){return f6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=parseInt(t[Ab]);if(isNaN(r)&&(r=vs(t[Ab])),isNaN(r)){let l=t[Ab];if(l==="\u51E0")r=3;else if(l==="\u534A")r=.5;else return null}let i=(0,KL.default)(e.refDate),o=t[h6][0];return o.match(/[日天星礼月年]/)?(o=="\u65E5"||o=="\u5929"?i=i.add(r,"d"):o=="\u661F"||o=="\u793C"?i=i.add(r*7,"d"):o=="\u6708"?i=i.add(r,"month"):o=="\u5E74"&&(i=i.add(r,"year")),a.start.assign("year",i.year()),a.start.assign("month",i.month()+1),a.start.assign("day",i.date()),a):(o=="\u79D2"?i=i.add(r,"second"):o=="\u5206"?i=i.add(r,"minute"):(o=="\u5C0F"||o=="\u949F")&&(i=i.add(r,"hour")),a.start.imply("year",i.year()),a.start.imply("month",i.month()+1),a.start.imply("day",i.date()),a.start.assign("hour",i.hour()),a.start.assign("minute",i.minute()),a.start.assign("second",i.second()),a)}}});var QL,g6,yc,Rb=b(()=>{QL=A(tt());ce();hc();g6=new RegExp("(?<prefix>\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys(fc).join("|")+")"),yc=class extends Y{innerPattern(){return g6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,i=fc[r];if(i===void 0)return null;let n=null,o=t.groups.prefix;o=="\u4E0A"?n="last":o=="\u4E0B"?n="next":o=="\u8FD9"&&(n="this");let l=(0,QL.default)(e.refDate),d=!1,u=l.day();return n=="last"||n=="past"?(l=l.day(i-7),d=!0):n=="next"?(l=l.day(i+7),d=!0):n=="this"?l=l.day(i):Math.abs(i-7-u)<Math.abs(i-u)?l=l.day(i-7):Math.abs(i+7-u)<Math.abs(i-u)?l=l.day(i+7):l=l.day(i),a.start.assign("weekday",i),d?(a.start.assign("day",l.date()),a.start.assign("month",l.month()+1),a.start.assign("year",l.year())):(a.start.imply("day",l.date()),a.start.imply("month",l.month()+1),a.start.imply("year",l.year())),a}}});var XL,k6,y6,bh,Th,Ch,xh,Sh,Eh,bs,wc,Dh,vc,Fb=b(()=>{XL=A(tt());ce();hc();k6=new RegExp("(?:\u4ECE|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(Da).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(Da).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(Da).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),y6=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(Da).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(Da).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(Da).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),bh=1,Th=2,Ch=3,xh=4,Sh=5,Eh=6,bs=7,wc=8,Dh=9,vc=class extends Y{innerPattern(){return k6}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let a=(0,XL.default)(e.refDate),r=e.createParsingResult(t.index,t[0]),i=a.clone();if(t[bh]){let u=t[bh];u=="\u660E"?a.hour()>1&&(i=i.add(1,"day")):u=="\u6628"?i=i.add(-1,"day"):u=="\u524D"?i=i.add(-2,"day"):u=="\u5927\u524D"?i=i.add(-3,"day"):u=="\u540E"?i=i.add(2,"day"):u=="\u5927\u540E"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else if(t[xh]){let u=t[xh];u=="\u660E"?i=i.add(1,"day"):u=="\u6628"?i=i.add(-1,"day"):u=="\u524D"?i=i.add(-2,"day"):u=="\u5927\u524D"?i=i.add(-3,"day"):u=="\u540E"?i=i.add(2,"day"):u=="\u5927\u540E"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else r.start.imply("day",i.date()),r.start.imply("month",i.month()+1),r.start.imply("year",i.year());let n=0,o=0,l=-1;if(t[wc]){let u=parseInt(t[wc]);if(isNaN(u)&&(u=vs(t[wc])),u>=60)return null;r.start.assign("second",u)}if(n=parseInt(t[Eh]),isNaN(n)&&(n=vs(t[Eh])),t[bs]?t[bs]=="\u534A"?o=30:t[bs]=="\u6B63"||t[bs]=="\u6574"?o=0:(o=parseInt(t[bs]),isNaN(o)&&(o=vs(t[bs]))):n>100&&(o=n%100,n=Math.floor(n/100)),o>=60||n>24)return null;if(n>=12&&(l=1),t[Dh]){if(n>12)return null;let u=t[Dh][0].toLowerCase();u=="a"&&(l=0,n==12&&(n=0)),u=="p"&&(l=1,n!=12&&(n+=12))}else if(t[Th]){let p=t[Th][0];p=="\u65E9"?(l=0,n==12&&(n=0)):p=="\u665A"&&(l=1,n!=12&&(n+=12))}else if(t[Ch]){let p=t[Ch][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,n==12&&(n=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,n!=12&&(n+=12))}else if(t[Sh]){let p=t[Sh][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,n==12&&(n=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,n!=12&&(n+=12))}if(r.start.assign("hour",n),r.start.assign("minute",o),l>=0?r.start.assign("meridiem",l):n<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),t=y6.exec(e.text.substring(r.index+r.text.length)),!t)return r.text.match(/^\d+$/)?null:r;let d=i.clone();if(r.end=e.createParsingComponents(),t[bh]){let u=t[bh];u=="\u660E"?a.hour()>1&&(d=d.add(1,"day")):u=="\u6628"?d=d.add(-1,"day"):u=="\u524D"?d=d.add(-2,"day"):u=="\u5927\u524D"?d=d.add(-3,"day"):u=="\u540E"?d=d.add(2,"day"):u=="\u5927\u540E"&&(d=d.add(3,"day")),r.end.assign("day",d.date()),r.end.assign("month",d.month()+1),r.end.assign("year",d.year())}else if(t[xh]){let u=t[xh];u=="\u660E"?d=d.add(1,"day"):u=="\u6628"?d=d.add(-1,"day"):u=="\u524D"?d=d.add(-2,"day"):u=="\u5927\u524D"?d=d.add(-3,"day"):u=="\u540E"?d=d.add(2,"day"):u=="\u5927\u540E"&&(d=d.add(3,"day")),r.end.assign("day",d.date()),r.end.assign("month",d.month()+1),r.end.assign("year",d.year())}else r.end.imply("day",d.date()),r.end.imply("month",d.month()+1),r.end.imply("year",d.year());if(n=0,o=0,l=-1,t[wc]){let u=parseInt(t[wc]);if(isNaN(u)&&(u=vs(t[wc])),u>=60)return null;r.end.assign("second",u)}if(n=parseInt(t[Eh]),isNaN(n)&&(n=vs(t[Eh])),t[bs]?t[bs]=="\u534A"?o=30:t[bs]=="\u6B63"||t[bs]=="\u6574"?o=0:(o=parseInt(t[bs]),isNaN(o)&&(o=vs(t[bs]))):n>100&&(o=n%100,n=Math.floor(n/100)),o>=60||n>24)return null;if(n>=12&&(l=1),t[Dh]){if(n>12)return null;let u=t[Dh][0].toLowerCase();u=="a"&&(l=0,n==12&&(n=0)),u=="p"&&(l=1,n!=12&&(n+=12)),r.start.isCertain("meridiem")||(l==0?(r.start.imply("meridiem",0),r.start.get("hour")==12&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),r.start.get("hour")!=12&&r.start.assign("hour",r.start.get("hour")+12)))}else if(t[Th]){let p=t[Th][0];p=="\u65E9"?(l=0,n==12&&(n=0)):p=="\u665A"&&(l=1,n!=12&&(n+=12))}else if(t[Ch]){let p=t[Ch][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,n==12&&(n=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,n!=12&&(n+=12))}else if(t[Sh]){let p=t[Sh][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(l=0,n==12&&(n=0)):(p=="\u4E0B"||p=="\u665A")&&(l=1,n!=12&&(n+=12))}return r.text=r.text+t[0],r.end.assign("hour",n),r.end.assign("minute",o),l>=0?r.end.assign("meridiem",l):r.start.isCertain("meridiem")&&r.start.get("meridiem")==1&&r.start.get("hour")>n?r.end.imply("meridiem",0):n>12&&r.end.imply("meridiem",1),r.end.date().getTime()<r.start.date().getTime()&&r.end.imply("day",r.end.get("day")+1),r}}});var JL,w6,bc,jb=b(()=>{JL=A(tt());ce();hc();w6=new RegExp("(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys(fc).join("|")+")"),bc=class extends Y{innerPattern(){return w6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,i=fc[r];if(i===void 0)return null;let n=(0,JL.default)(e.refDate),o=!1,l=n.day();return Math.abs(i-7-l)<Math.abs(i-l)?n=n.day(i-7):Math.abs(i+7-l)<Math.abs(i-l)?n=n.day(i+7):n=n.day(i),a.start.assign("weekday",i),o?(a.start.assign("day",n.date()),a.start.assign("month",n.month()+1),a.start.assign("year",n.year())):(a.start.imply("day",n.date()),a.start.imply("month",n.month()+1),a.start.imply("year",n.year())),a}}});var ZL,v6,e2,b6,t2,a2,T6,Tc,Ob=b(()=>{ZL=A(tt());ce();v6=1,e2=2,b6=3,t2=4,a2=5,T6=6,Tc=class extends Y{innerPattern(e){return new RegExp("(\u800C\u5BB6|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let a=t.index,r=e.createParsingResult(a,t[0]),i=(0,ZL.default)(e.refDate),n=i;if(t[v6])r.start.imply("hour",i.hour()),r.start.imply("minute",i.minute()),r.start.imply("second",i.second()),r.start.imply("millisecond",i.millisecond());else if(t[e2]){let o=t[e2],l=t[b6];o=="\u660E"||o=="\u807D"?i.hour()>1&&(n=n.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?n=n.add(-1,"day"):o=="\u524D"?n=n.add(-2,"day"):o=="\u5927\u524D"?n=n.add(-3,"day"):o=="\u5F8C"?n=n.add(2,"day"):o=="\u5927\u5F8C"&&(n=n.add(3,"day")),l=="\u65E9"||l=="\u671D"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(t[t2]){let l=t[t2][0];l=="\u65E9"||l=="\u671D"||l=="\u4E0A"?r.start.imply("hour",6):l=="\u4E0B"||l=="\u664F"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):l=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):l=="\u51CC"&&r.start.imply("hour",0)}else if(t[a2]){let o=t[a2];o=="\u660E"||o=="\u807D"?i.hour()>1&&(n=n.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?n=n.add(-1,"day"):o=="\u524D"?n=n.add(-2,"day"):o=="\u5927\u524D"?n=n.add(-3,"day"):o=="\u5F8C"?n=n.add(2,"day"):o=="\u5927\u5F8C"&&(n=n.add(3,"day"));let l=t[T6];if(l){let d=l[0];d=="\u65E9"||d=="\u671D"||d=="\u4E0A"?r.start.imply("hour",6):d=="\u4E0B"||d=="\u664F"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):d=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):d=="\u591C"||d=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):d=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",n.date()),r.start.assign("month",n.month()+1),r.start.assign("year",n.year()),r}}});function Ts(s){let e=0;for(let t=0;t<s.length;t++){let a=s[t];a==="\u5341"?e=e===0?Pa[a]:e*Pa[a]:e+=Pa[a]}return e}function r2(s){let e="";for(let t=0;t<s.length;t++){let a=s[t];e=e+Pa[a]}return parseInt(e)}var Pa,Cc,xc=b(()=>{Pa={\u96F6:0,\u4E00:1,\u4E8C:2,\u5169:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10,\u5EFF:20,\u5345:30},Cc={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6}});var s2,Nb,i2,Lb,Sc,Hb=b(()=>{s2=A(tt());ce();xc();Nb=1,i2=2,Lb=3,Sc=class extends Y{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(Pa).join("")+"]{4}|["+Object.keys(Pa).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(Pa).join("")+"]{1,2})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(Pa).join("")+"]{1,2})?(?:\\s*)(?:\u65E5|\u865F)?")}innerExtract(e,t){let a=(0,s2.default)(e.refDate),r=e.createParsingResult(t.index,t[0]),i=parseInt(t[i2]);if(isNaN(i)&&(i=Ts(t[i2])),r.start.assign("month",i),t[Lb]){let n=parseInt(t[Lb]);isNaN(n)&&(n=Ts(t[Lb])),r.start.assign("day",n)}else r.start.imply("day",a.date());if(t[Nb]){let n=parseInt(t[Nb]);isNaN(n)&&(n=r2(t[Nb])),r.start.assign("year",n)}else r.start.imply("year",a.year());return r}}});var n2,C6,Bb,x6,Ec,Wb=b(()=>{n2=A(tt());ce();xc();C6=new RegExp("(\\d+|["+Object.keys(Pa).join("")+"]+|\u534A|\u5E7E)(?:\\s*)(?:\u500B)?(\u79D2(?:\u9418)?|\u5206\u9418|\u5C0F\u6642|\u9418|\u65E5|\u5929|\u661F\u671F|\u79AE\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u904E)?\u5F8C|(?:\u4E4B)?\u5167)","i"),Bb=1,x6=2,Ec=class extends Y{innerPattern(){return C6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=parseInt(t[Bb]);if(isNaN(r)&&(r=Ts(t[Bb])),isNaN(r)){let l=t[Bb];if(l==="\u5E7E")r=3;else if(l==="\u534A")r=.5;else return null}let i=(0,n2.default)(e.refDate),o=t[x6][0];return o.match(/[日天星禮月年]/)?(o=="\u65E5"||o=="\u5929"?i=i.add(r,"d"):o=="\u661F"||o=="\u79AE"?i=i.add(r*7,"d"):o=="\u6708"?i=i.add(r,"month"):o=="\u5E74"&&(i=i.add(r,"year")),a.start.assign("year",i.year()),a.start.assign("month",i.month()+1),a.start.assign("day",i.date()),a):(o=="\u79D2"?i=i.add(r,"second"):o=="\u5206"?i=i.add(r,"minute"):(o=="\u5C0F"||o=="\u9418")&&(i=i.add(r,"hour")),a.start.imply("year",i.year()),a.start.imply("month",i.month()+1),a.start.imply("day",i.date()),a.start.assign("hour",i.hour()),a.start.assign("minute",i.minute()),a.start.assign("second",i.second()),a)}}});var o2,S6,Dc,_b=b(()=>{o2=A(tt());ce();xc();S6=new RegExp("(?<prefix>\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(Cc).join("|")+")"),Dc=class extends Y{innerPattern(){return S6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,i=Cc[r];if(i===void 0)return null;let n=null,o=t.groups.prefix;o=="\u4E0A"?n="last":o=="\u4E0B"?n="next":(o=="\u4ECA"||o=="\u9019"||o=="\u5462")&&(n="this");let l=(0,o2.default)(e.refDate),d=!1,u=l.day();return n=="last"||n=="past"?(l=l.day(i-7),d=!0):n=="next"?(l=l.day(i+7),d=!0):n=="this"?l=l.day(i):Math.abs(i-7-u)<Math.abs(i-u)?l=l.day(i-7):Math.abs(i+7-u)<Math.abs(i-u)?l=l.day(i+7):l=l.day(i),a.start.assign("weekday",i),d?(a.start.assign("day",l.date()),a.start.assign("month",l.month()+1),a.start.assign("year",l.year())):(a.start.imply("day",l.date()),a.start.imply("month",l.month()+1),a.start.imply("year",l.year())),a}}});var l2,E6,D6,Ph,Mh,Ah,Ih,Rh,Fh,Cs,Pc,jh,Mc,Vb=b(()=>{l2=A(tt());ce();xc();E6=new RegExp("(?:\u7531|\u5F9E|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(Pa).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(Pa).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(Pa).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),D6=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(Pa).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(Pa).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(Pa).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Ph=1,Mh=2,Ah=3,Ih=4,Rh=5,Fh=6,Cs=7,Pc=8,jh=9,Mc=class extends Y{innerPattern(){return E6}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let a=(0,l2.default)(e.refDate),r=e.createParsingResult(t.index,t[0]),i=a.clone();if(t[Ph]){var n=t[Ph];n=="\u660E"||n=="\u807D"?a.hour()>1&&(i=i.add(1,"day")):n=="\u6628"||n=="\u5C0B"||n=="\u7434"?i=i.add(-1,"day"):n=="\u524D"?i=i.add(-2,"day"):n=="\u5927\u524D"?i=i.add(-3,"day"):n=="\u5F8C"?i=i.add(2,"day"):n=="\u5927\u5F8C"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else if(t[Ih]){var o=t[Ih];o=="\u660E"||o=="\u807D"?i=i.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?i=i.add(-1,"day"):o=="\u524D"?i=i.add(-2,"day"):o=="\u5927\u524D"?i=i.add(-3,"day"):o=="\u5F8C"?i=i.add(2,"day"):o=="\u5927\u5F8C"&&(i=i.add(3,"day")),r.start.assign("day",i.date()),r.start.assign("month",i.month()+1),r.start.assign("year",i.year())}else r.start.imply("day",i.date()),r.start.imply("month",i.month()+1),r.start.imply("year",i.year());let l=0,d=0,u=-1;if(t[Pc]){var p=parseInt(t[Pc]);if(isNaN(p)&&(p=Ts(t[Pc])),p>=60)return null;r.start.assign("second",p)}if(l=parseInt(t[Fh]),isNaN(l)&&(l=Ts(t[Fh])),t[Cs]?t[Cs]=="\u534A"?d=30:t[Cs]=="\u6B63"||t[Cs]=="\u6574"?d=0:(d=parseInt(t[Cs]),isNaN(d)&&(d=Ts(t[Cs]))):l>100&&(d=l%100,l=Math.floor(l/100)),d>=60||l>24)return null;if(l>=12&&(u=1),t[jh]){if(l>12)return null;var m=t[jh][0].toLowerCase();m=="a"&&(u=0,l==12&&(l=0)),m=="p"&&(u=1,l!=12&&(l+=12))}else if(t[Mh]){var f=t[Mh],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(t[Ah]){var k=t[Ah],g=k[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(u=0,l==12&&(l=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(t[Rh]){var y=t[Rh],w=y[0];w=="\u4E0A"||w=="\u671D"||w=="\u65E9"||w=="\u51CC"?(u=0,l==12&&(l=0)):(w=="\u4E0B"||w=="\u664F"||w=="\u665A")&&(u=1,l!=12&&(l+=12))}if(r.start.assign("hour",l),r.start.assign("minute",d),u>=0?r.start.assign("meridiem",u):l<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),t=D6.exec(e.text.substring(r.index+r.text.length)),!t)return r.text.match(/^\d+$/)?null:r;let v=i.clone();if(r.end=e.createParsingComponents(),t[Ph]){var n=t[Ph];n=="\u660E"||n=="\u807D"?a.hour()>1&&(v=v.add(1,"day")):n=="\u6628"||n=="\u5C0B"||n=="\u7434"?v=v.add(-1,"day"):n=="\u524D"?v=v.add(-2,"day"):n=="\u5927\u524D"?v=v.add(-3,"day"):n=="\u5F8C"?v=v.add(2,"day"):n=="\u5927\u5F8C"&&(v=v.add(3,"day")),r.end.assign("day",v.date()),r.end.assign("month",v.month()+1),r.end.assign("year",v.year())}else if(t[Ih]){var o=t[Ih];o=="\u660E"||o=="\u807D"?v=v.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?v=v.add(-1,"day"):o=="\u524D"?v=v.add(-2,"day"):o=="\u5927\u524D"?v=v.add(-3,"day"):o=="\u5F8C"?v=v.add(2,"day"):o=="\u5927\u5F8C"&&(v=v.add(3,"day")),r.end.assign("day",v.date()),r.end.assign("month",v.month()+1),r.end.assign("year",v.year())}else r.end.imply("day",v.date()),r.end.imply("month",v.month()+1),r.end.imply("year",v.year());if(l=0,d=0,u=-1,t[Pc]){var p=parseInt(t[Pc]);if(isNaN(p)&&(p=Ts(t[Pc])),p>=60)return null;r.end.assign("second",p)}if(l=parseInt(t[Fh]),isNaN(l)&&(l=Ts(t[Fh])),t[Cs]?t[Cs]=="\u534A"?d=30:t[Cs]=="\u6B63"||t[Cs]=="\u6574"?d=0:(d=parseInt(t[Cs]),isNaN(d)&&(d=Ts(t[Cs]))):l>100&&(d=l%100,l=Math.floor(l/100)),d>=60||l>24)return null;if(l>=12&&(u=1),t[jh]){if(l>12)return null;var m=t[jh][0].toLowerCase();m=="a"&&(u=0,l==12&&(l=0)),m=="p"&&(u=1,l!=12&&(l+=12)),r.start.isCertain("meridiem")||(u==0?(r.start.imply("meridiem",0),r.start.get("hour")==12&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),r.start.get("hour")!=12&&r.start.assign("hour",r.start.get("hour")+12)))}else if(t[Mh]){var f=t[Mh],h=f[0];h=="\u671D"||h=="\u65E9"?(u=0,l==12&&(l=0)):h=="\u665A"&&(u=1,l!=12&&(l+=12))}else if(t[Ah]){var k=t[Ah],g=k[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(u=0,l==12&&(l=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(u=1,l!=12&&(l+=12))}else if(t[Rh]){var y=t[Rh],w=y[0];w=="\u4E0A"||w=="\u671D"||w=="\u65E9"||w=="\u51CC"?(u=0,l==12&&(l=0)):(w=="\u4E0B"||w=="\u664F"||w=="\u665A")&&(u=1,l!=12&&(l+=12))}return r.text=r.text+t[0],r.end.assign("hour",l),r.end.assign("minute",d),u>=0?r.end.assign("meridiem",u):r.start.isCertain("meridiem")&&r.start.get("meridiem")==1&&r.start.get("hour")>l?r.end.imply("meridiem",0):l>12&&r.end.imply("meridiem",1),r.end.date().getTime()<r.start.date().getTime()&&r.end.imply("day",r.end.get("day")+1),r}}});var c2,P6,Ac,Ub=b(()=>{c2=A(tt());ce();xc();P6=new RegExp("(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(Cc).join("|")+")"),Ac=class extends Y{innerPattern(){return P6}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,i=Cc[r];if(i===void 0)return null;let n=(0,c2.default)(e.refDate),o=!1,l=n.day();return Math.abs(i-7-l)<Math.abs(i-l)?n=n.day(i-7):Math.abs(i+7-l)<Math.abs(i-l)?n=n.day(i+7):n=n.day(i),a.start.assign("weekday",i),o?(a.start.assign("day",n.date()),a.start.assign("month",n.month()+1),a.start.assign("year",n.year())):(a.start.imply("day",n.date()),a.start.imply("month",n.month()+1),a.start.imply("year",n.year())),a}}});var Ic,$b=b(()=>{ys();Ic=class extends Et{patternBetween(){return/^\s*(至|到|\-|\~|||ー)\s*$/i}}});var Rc,Yb=b(()=>{ws();Rc=class extends Dt{patternBetween(){return/^\s*$/i}}});var Oh={};ha(Oh,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>zb,createCasualConfiguration:()=>qb,createConfiguration:()=>Gb,hant:()=>M6,parse:()=>I6,parseDate:()=>R6,strict:()=>A6});function I6(s,e,t){return zb.parse(s,e,t)}function R6(s,e,t){return zb.parseDate(s,e,t)}function qb(){let s=Gb();return s.parsers.unshift(new Tc),s}function Gb(){let s=Pt({parsers:[new Sc,new Dc,new Ac,new Mc,new Ec],refiners:[new Ic,new Rc]});return s.refiners=s.refiners.filter(e=>!(e instanceof bi)),s}var M6,zb,A6,d2=b(()=>{pu();_r();Er();Re();Ye();Ob();Hb();Wb();_b();Vb();Ub();$b();Yb();M6=new we(qb()),zb=new we(qb()),A6=new we(Gb())});var u2,F6,p2,j6,m2,f2,O6,Nh,h2=b(()=>{u2=A(tt());ce();F6=1,p2=2,j6=3,m2=4,f2=5,O6=6,Nh=class extends Y{innerPattern(e){return new RegExp("(\u73B0\u5728|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let a=t.index,r=e.createParsingResult(a,t[0]),i=(0,u2.default)(e.refDate),n=i;if(t[F6])r.start.imply("hour",i.hour()),r.start.imply("minute",i.minute()),r.start.imply("second",i.second()),r.start.imply("millisecond",i.millisecond());else if(t[p2]){let o=t[p2],l=t[j6];o=="\u660E"?i.hour()>1&&(n=n.add(1,"day")):o=="\u6628"?n=n.add(-1,"day"):o=="\u524D"?n=n.add(-2,"day"):o=="\u5927\u524D"?n=n.add(-3,"day"):o=="\u540E"?n=n.add(2,"day"):o=="\u5927\u540E"&&(n=n.add(3,"day")),l=="\u65E9"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(t[m2]){let l=t[m2][0];l=="\u65E9"||l=="\u4E0A"?r.start.imply("hour",6):l=="\u4E0B"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):l=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):l=="\u51CC"&&r.start.imply("hour",0)}else if(t[f2]){let o=t[f2];o=="\u660E"?i.hour()>1&&(n=n.add(1,"day")):o=="\u6628"?n=n.add(-1,"day"):o=="\u524D"?n=n.add(-2,"day"):o=="\u5927\u524D"?n=n.add(-3,"day"):o=="\u540E"?n=n.add(2,"day"):o=="\u5927\u540E"&&(n=n.add(3,"day"));let l=t[O6];if(l){let d=l[0];d=="\u65E9"||d=="\u4E0A"?r.start.imply("hour",6):d=="\u4E0B"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):d=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):d=="\u591C"||d=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):d=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",n.date()),r.start.assign("month",n.month()+1),r.start.assign("year",n.year()),r}}});var Lh,g2=b(()=>{ys();Lh=class extends Et{patternBetween(){return/^\s*(至|到|-|~|||ー)\s*$/i}}});var Hh,k2=b(()=>{ws();Hh=class extends Dt{patternBetween(){return/^\s*$/i}}});var Bh={};ha(Bh,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>Kb,createCasualConfiguration:()=>Qb,createConfiguration:()=>Xb,hans:()=>N6,parse:()=>H6,parseDate:()=>B6,strict:()=>L6});function H6(s,e,t){return Kb.parse(s,e,t)}function B6(s,e,t){return Kb.parseDate(s,e,t)}function Qb(){let s=Xb();return s.parsers.unshift(new Nh),s}function Xb(){let s=Pt({parsers:[new gc,new yc,new bc,new vc,new kc],refiners:[new Lh,new Hh]});return s.refiners=s.refiners.filter(e=>!(e instanceof bi)),s}var N6,Kb,L6,y2=b(()=>{pu();_r();Er();Re();Ye();h2();Mb();Ib();Rb();Fb();jb();g2();k2();N6=new we(Qb()),Kb=new we(Qb()),L6=new we(Xb())});var eT={};ha(eT,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>Jb,createCasualConfiguration:()=>w2,createConfiguration:()=>Zb,hans:()=>Bh,hant:()=>Oh,parse:()=>_6,parseDate:()=>V6,strict:()=>W6});function _6(s,e,t){return Jb.parse(s,e,t)}function V6(s,e,t){return Jb.parseDate(s,e,t)}function w2(){let s=Zb();return s.parsers.unshift(new Tc),s}function Zb(){let s=Pt({parsers:[new Sc,new gc,new Dc,new yc,new Ac,new bc,new Mc,new vc,new Ec,new kc],refiners:[new Ic,new Rc]});return s.refiners=s.refiners.filter(e=>!(e instanceof bi)),s}var Jb,W6,v2=b(()=>{_r();Er();Re();Ye();pu();Mb();Ib();Rb();Fb();jb();Ob();Hb();Wb();_b();Vb();Ub();$b();Yb();d2();y2();Jb=new we(w2()),W6=new we(Zb())});function $6(s){let e=s.toLowerCase();return rT[e]!==void 0?rT[e]:e.match(/несколько/)?3:e.match(/пол/)?.5:e.match(/пар/)?2:e===""?1:parseFloat(e)}function nT(s){let e=s.toLowerCase();return sT[e]!==void 0?sT[e]:parseInt(e)}function _h(s){if(/(год|года|г|г.)/i.test(s)&&(s=s.replace(/(год|года|г|г.)/i,"")),/(до н.э.|до н. э.)/i.test(s))return s=s.replace(/(до н.э.|до н. э.)/i,""),-parseInt(s);if(/(н. э.|н.э.)/i.test(s))return s=s.replace(/(н. э.|н.э.)/i,""),parseInt(s);let e=parseInt(s);return Sr(e)}function Oc(s){let e={},t=s,a=T2.exec(t);for(;a;)Y6(e,a),t=t.substring(a[0].length).trim(),a=T2.exec(t);return e}function Y6(s,e){let t=$6(e[1]),a=ku[e[2].toLowerCase()];s[a]=t}var Yr,tT,aT,Fc,rT,sT,ku,U6,iT,oT,Wh,b2,T2,jc,zr=b(()=>{Ve();Bt();Yr={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},tT={\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435:0,\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u044F:0,\u0432\u0441\u043A:0,"\u0432\u0441\u043A.":0,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0442\u043E\u0440\u043D\u0438\u043A:2,\u0432\u0442\u043E\u0440\u043D\u0438\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0440\u0435\u0434\u0430:3,\u0441\u0440\u0435\u0434\u044B:3,\u0441\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440\u0433:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0442:4,"\u0447\u0442.":4,\u043F\u044F\u0442\u043D\u0438\u0446\u0430:5,\u043F\u044F\u0442\u043D\u0438\u0446\u0443:5,\u043F\u044F\u0442\u043D\u0438\u0446\u044B:5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u0431\u043E\u0442\u0443:6,\u0441\u0443\u0431\u0431\u043E\u0442\u044B:6,\u0441\u0431:6,"\u0441\u0431.":6},aT={\u044F\u043D\u0432\u0430\u0440\u044C:1,\u044F\u043D\u0432\u0430\u0440\u044F:1,\u044F\u043D\u0432\u0430\u0440\u0435:1,\u0444\u0435\u0432\u0440\u0430\u043B\u044C:2,\u0444\u0435\u0432\u0440\u0430\u043B\u044F:2,\u0444\u0435\u0432\u0440\u0430\u043B\u0435:2,\u043C\u0430\u0440\u0442:3,\u043C\u0430\u0440\u0442\u0430:3,\u043C\u0430\u0440\u0442\u0435:3,\u0430\u043F\u0440\u0435\u043B\u044C:4,\u0430\u043F\u0440\u0435\u043B\u044F:4,\u0430\u043F\u0440\u0435\u043B\u0435:4,\u043C\u0430\u0439:5,\u043C\u0430\u044F:5,\u043C\u0430\u0435:5,\u0438\u044E\u043D\u044C:6,\u0438\u044E\u043D\u044F:6,\u0438\u044E\u043D\u0435:6,\u0438\u044E\u043B\u044C:7,\u0438\u044E\u043B\u044F:7,\u0438\u044E\u043B\u0435:7,\u0430\u0432\u0433\u0443\u0441\u0442:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0430:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0435:8,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u0435:9,\u043E\u043A\u0442\u044F\u0431\u0440\u044C:10,\u043E\u043A\u0442\u044F\u0431\u0440\u044F:10,\u043E\u043A\u0442\u044F\u0431\u0440\u0435:10,\u043D\u043E\u044F\u0431\u0440\u044C:11,\u043D\u043E\u044F\u0431\u0440\u044F:11,\u043D\u043E\u044F\u0431\u0440\u0435:11,\u0434\u0435\u043A\u0430\u0431\u0440\u044C:12,\u0434\u0435\u043A\u0430\u0431\u0440\u044F:12,\u0434\u0435\u043A\u0430\u0431\u0440\u0435:12},Fc={...aT,\u044F\u043D\u0432:1,"\u044F\u043D\u0432.":1,\u0444\u0435\u0432:2,"\u0444\u0435\u0432.":2,\u043C\u0430\u0440:3,"\u043C\u0430\u0440.":3,\u0430\u043F\u0440:4,"\u0430\u043F\u0440.":4,\u0430\u0432\u0433:8,"\u0430\u0432\u0433.":8,\u0441\u0435\u043D:9,"\u0441\u0435\u043D.":9,\u043E\u043A\u0442:10,"\u043E\u043A\u0442.":10,\u043D\u043E\u044F:11,"\u043D\u043E\u044F.":11,\u0434\u0435\u043A:12,"\u0434\u0435\u043A.":12},rT={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0439:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0435:2,\u0434\u0432\u0430:2,\u0434\u0432\u0443\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u0435\u0445:3,\u0442\u0440\u0451\u0445:3,\u0447\u0435\u0442\u044B\u0440\u0435:4,\u0447\u0435\u0442\u044B\u0440\u0435\u0445:4,\u0447\u0435\u0442\u044B\u0440\u0451\u0445:4,\u043F\u044F\u0442\u044C:5,\u043F\u044F\u0442\u0438:5,\u0448\u0435\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0435\u043C\u044C:7,\u0441\u0435\u043C\u0438:7,\u0432\u043E\u0441\u0435\u043C\u044C:8,\u0432\u043E\u0441\u044C\u043C\u0438:8,\u0434\u0435\u0432\u044F\u0442\u044C:9,\u0434\u0435\u0432\u044F\u0442\u0438:9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u044C:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u0438:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u044C:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u0438:12},sT={\u043F\u0435\u0440\u0432\u043E\u0435:1,\u043F\u0435\u0440\u0432\u043E\u0433\u043E:1,\u0432\u0442\u043E\u0440\u043E\u0435:2,\u0432\u0442\u043E\u0440\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u044C\u0435:3,\u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,\u043F\u044F\u0442\u043E\u0435:5,\u043F\u044F\u0442\u043E\u0433\u043E:5,\u0448\u0435\u0441\u0442\u043E\u0435:6,\u0448\u0435\u0441\u0442\u043E\u0433\u043E:6,\u0441\u0435\u0434\u044C\u043C\u043E\u0435:7,\u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u043E\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,\u0434\u0435\u0432\u044F\u0442\u043E\u0435:9,\u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E:9,\u0434\u0435\u0441\u044F\u0442\u043E\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:13,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:14,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:14,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:15,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:15,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:16,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:16,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:17,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:17,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:18,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:18,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:19,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:19,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0435:20,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0435:30,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":31},ku={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u044B:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u043C\u0438\u043D:"minute",\u043C\u0438\u043D\u0443\u0442\u0430:"minute",\u043C\u0438\u043D\u0443\u0442:"minute",\u043C\u0438\u043D\u0443\u0442\u044B:"minute",\u043C\u0438\u043D\u0443\u0442\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u0435\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u0447\u043A\u0443:"minute",\u0447\u0430\u0441:"hour",\u0447\u0430\u0441\u043E\u0432:"hour",\u0447\u0430\u0441\u0430:"hour",\u0447\u0430\u0441\u0443:"hour",\u0447\u0430\u0441\u0438\u043A\u043E\u0432:"hour",\u0447\u0430\u0441\u0438\u043A\u0430:"hour",\u0447\u0430\u0441\u0438\u043A\u0435:"hour",\u0447\u0430\u0441\u0438\u043A:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0435\u0439:"d",\u0441\u0443\u0442\u043E\u043A:"d",\u0441\u0443\u0442\u043A\u0438:"d",\u043D\u0435\u0434\u0435\u043B\u044F:"week",\u043D\u0435\u0434\u0435\u043B\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u044E:"week",\u043D\u0435\u0434\u0435\u043B\u044C:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u0435\u043A:"week",\u043C\u0435\u0441\u044F\u0446:"month",\u043C\u0435\u0441\u044F\u0446\u0435:"month",\u043C\u0435\u0441\u044F\u0446\u0435\u0432:"month",\u043C\u0435\u0441\u044F\u0446\u0430:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0435:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u043E\u0432:"quarter",\u0433\u043E\u0434:"year",\u0433\u043E\u0434\u0430:"year",\u0433\u043E\u0434\u0443:"year",\u0433\u043E\u0434\u043E\u0432:"year",\u043B\u0435\u0442:"year",\u0433\u043E\u0434\u0438\u043A:"year",\u0433\u043E\u0434\u0438\u043A\u0430:"year",\u0433\u043E\u0434\u0438\u043A\u043E\u0432:"year"},U6=`(?:${ae(rT)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u043E\u043B|\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E|\u043F\u0430\u0440(?:\u044B|\u0443)|\\s{0,3})`;iT=`(?:${ae(sT)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;oT="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?",Wh=`(?:[1-9][0-9]{0,3}${oT}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${oT}|[5-9][0-9]${oT})`;b2=`(${U6})\\s{0,3}(${ae(ku)})`,T2=new RegExp(b2,"i"),jc=pr("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",b2)});var C2,Vh,x2=b(()=>{zr();Re();ce();C2=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${jc})${Yr.rightBoundary}`,Vh=class extends Y{patternLeftBoundary(){return Yr.leftBoundary}innerPattern(e){return e.option.forwardDate?new RegExp(C2,Yr.flags):new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${C2}`,Yr.flags)}innerExtract(e,t){let a=Oc(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var Nc,qr,on=b(()=>{ce();zr();Nc=class extends Y{patternLeftBoundary(){return Yr.leftBoundary}innerPattern(e){return new RegExp(this.innerPatternString(e),Yr.flags)}innerPatternHasChange(e,t){return!1}},qr=class extends Nc{innerPattern(e){return new RegExp(`${this.innerPatternString(e)}${Yr.rightBoundary}`,Yr.flags)}}});var S2,E2,z6,D2,Uh,P2=b(()=>{Bt();zr();zr();zr();Ve();on();S2=1,E2=2,z6=3,D2=4,Uh=class extends qr{innerPatternString(e){return`(?:\u0441)?\\s*(${iT})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${iT}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${ae(Fc)})(?:(?:-|\\/|,?\\s{0,3})(${Wh}(?![^\\s]\\d)))?`}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=Fc[t[z6].toLowerCase()],i=nT(t[S2]);if(i>31)return t.index=t.index+t[S2].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[D2]){let n=_h(t[D2]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[E2]){let n=nT(t[E2]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var q6,M2,$h,A2=b(()=>{zr();Bt();Ve();zr();on();q6=2,M2=3,$h=class extends Nc{innerPatternString(e){return`((?:\u0432)\\s*)?(${ae(Fc)})\\s*(?:[,-]?\\s*(${Wh})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(e,t){let a=t[q6].toLowerCase();if(t[0].length<=3&&!aT[a])return null;let r=e.createParsingResult(t.index,t.index+t[0].length);r.start.imply("day",1);let i=Fc[a];if(r.start.assign("month",i),t[M2]){let n=_h(t[M2]);r.start.assign("year",n)}else{let n=it(e.refDate,1,i);r.start.imply("year",n)}return r}}});var Yh,I2=b(()=>{Ye();an();zr();Yh=class extends Ba{constructor(e){super(e)}patternFlags(){return Yr.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0438|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0441)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0443\u0442\u0440\u0430|\u0432\u0435\u0447\u0435\u0440\u0430|\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F))?(?!\\/)${Yr.rightBoundary}`}extractPrimaryTimeComponents(e,t){let a=super.extractPrimaryTimeComponents(e,t);if(a){if(t[0].endsWith("\u0432\u0435\u0447\u0435\u0440\u0430")){let r=a.get("hour");r>=6&&r<12?(a.assign("hour",a.get("hour")+12),a.assign("meridiem",V.PM)):r<6&&a.assign("meridiem",V.AM)}if(t[0].endsWith("\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F")){a.assign("meridiem",V.PM);let r=a.get("hour");r>=0&&r<=6&&a.assign("hour",a.get("hour")+12)}t[0].endsWith("\u0443\u0442\u0440\u0430")&&(a.assign("meridiem",V.AM),a.get("hour")<12&&a.assign("hour",a.get("hour")))}return a}}});var zh,R2=b(()=>{zr();Re();Ur();on();zh=class extends Nc{innerPatternString(e){return`(${jc})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`}innerExtract(e,t){let a=Oc(t[1]),r=ia(a);return K.createRelativeFromReference(e.reference,r)}}});var qh,F2=b(()=>{ys();qh=class extends Et{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}}});var Gh,j2=b(()=>{ws();Gh=class extends Dt{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}}});var Kh,O2=b(()=>{Vr();on();Kh=class extends qr{innerPatternString(e){return"(?:\u0441|\u0441\u043E)?\\s*(\u0441\u0435\u0433\u043E\u0434\u043D\u044F|\u0432\u0447\u0435\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430)"}innerExtract(e,t){let a=t[1].toLowerCase(),r=e.createParsingComponents();switch(a){case"\u0441\u0435\u0433\u043E\u0434\u043D\u044F":return Sa(e.reference);case"\u0432\u0447\u0435\u0440\u0430":return Ja(e.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Za(e.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Ti(e.reference,2);case"\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Ti(e.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Go(e.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Go(e.reference,3)}return r}}});var N2,Qh,L2=b(()=>{Vr();Wr();N2=A(tt());on();Qh=class extends qr{innerPatternString(e){return"(\u0441\u0435\u0439\u0447\u0430\u0441|\u043F\u0440\u043E\u0448\u043B\u044B\u043C\\s*\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u043F\u0440\u043E\u0448\u043B\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u0435\u0433\u043E\u0434\u043D\u044F\\s*\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u0438\u043C \u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u0434\u0435\u043D\u044C|\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u0432\u0435\u0447\u0435\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u043D\u043E\u0447\u044C)"}innerExtract(e,t){let a=(0,N2.default)(e.refDate),r=t[0].toLowerCase(),i=e.createParsingComponents();if(r==="\u0441\u0435\u0439\u0447\u0430\u0441")return Xa(e.reference);if(r==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||r==="\u0432\u0435\u0447\u0435\u0440\u0430")return nc(e.reference);if(r.endsWith("\u0443\u0442\u0440\u043E\u043C")||r.endsWith("\u0443\u0442\u0440\u0430"))return oc(e.reference);if(r.match(/в\s*полдень/))return lc(e.reference);if(r.match(/прошлой\s*ночью/))return tf(e.reference);if(r.match(/прошлым\s*вечером/))return af(e.reference);if(r.match(/следующей\s*ночью/)){let n=a.hour()<22?1:2;a=a.add(n,"day"),Tt(i,a),i.imply("hour",0)}return r.match(/в\s*полночь/)||r.endsWith("\u043D\u043E\u0447\u044C\u044E")?Ko(e.reference):i}}});var G6,K6,Q6,Xh,H2=b(()=>{zr();Ve();Gs();on();G6=1,K6=2,Q6=3,Xh=class extends qr{innerPatternString(e){return`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:(\u044D\u0442\u0443|\u044D\u0442\u043E\u0442|\u043F\u0440\u043E\u0448\u043B\u044B\u0439|\u043F\u0440\u043E\u0448\u043B\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E)\\s*)?(${ae(tT)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*\u043D\u0430\\s*(\u044D\u0442\u043E\u0439|\u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439)\\s*\u043D\u0435\u0434\u0435\u043B\u0435)?`}innerExtract(e,t){let a=t[K6].toLowerCase(),r=tT[a],i=t[G6],n=t[Q6],o=i||n;o=o||"",o=o.toLowerCase();let l=null;return o=="\u043F\u0440\u043E\u0448\u043B\u044B\u0439"||o=="\u043F\u0440\u043E\u0448\u043B\u0443\u044E"||o=="\u043F\u0440\u043E\u0448\u043B\u043E\u0439"?l="last":o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E"?l="next":(o=="\u044D\u0442\u043E\u0442"||o=="\u044D\u0442\u0443"||o=="\u044D\u0442\u043E\u0439")&&(l="this"),na(e.reference,r,l)}}});var B2,X6,J6,Jh,W2=b(()=>{zr();Re();B2=A(tt());Ve();on();X6=1,J6=2,Jh=class extends qr{innerPatternString(e){return`(\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439|\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C|\u043D\u0430 \u044D\u0442\u043E\u0439|\u0432 \u044D\u0442\u043E\u043C)\\s*(${ae(ku)})`}innerExtract(e,t){let a=t[X6].toLowerCase(),r=t[J6].toLowerCase(),i=ku[r];if(a=="\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||a=="\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C"){let l={};return l[i]=1,K.createRelativeFromReference(e.reference,l)}if(a=="\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C"||a=="\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439"){let l={};return l[i]=-1,K.createRelativeFromReference(e.reference,l)}let n=e.createParsingComponents(),o=(0,B2.default)(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),n.imply("day",o.date()),n.assign("year",o.year()),n.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.assign("year",o.year())),n}}});var Zh,_2=b(()=>{zr();Re();Ur();on();Zh=class extends qr{innerPatternString(e){return`(\u044D\u0442\u0438|\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435|\u043F\u0440\u043E\u0448\u043B\u044B\u0435|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435|\u043F\u043E\u0441\u043B\u0435|\u0441\u043F\u0443\u0441\u0442\u044F|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${jc})`}innerExtract(e,t){let a=t[1].toLowerCase(),r=Oc(t[2]);switch(a){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":r=ia(r);break}return K.createRelativeFromReference(e.reference,r)}}});var dT={};ha(dT,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>lT,createCasualConfiguration:()=>V2,createConfiguration:()=>cT,parse:()=>e8,parseDate:()=>t8,strict:()=>Z6});function e8(s,e,t){return lT.parse(s,e,t)}function t8(s,e,t){return lT.parseDate(s,e,t)}function V2(){let s=cT(!1);return s.parsers.unshift(new Kh),s.parsers.unshift(new Qh),s.parsers.unshift(new $h),s.parsers.unshift(new Jh),s.parsers.unshift(new Zh),s}function cT(s=!0){return Pt({parsers:[new Ea(!0),new Vh,new Uh,new Xh,new Yh(s),new zh],refiners:[new Gh,new qh]},s)}var lT,Z6,U2=b(()=>{x2();P2();A2();I2();R2();F2();j2();_r();O2();L2();H2();W2();Er();Re();Ye();sn();_2();lT=new we(V2()),Z6=new we(cT(!0))});function r8(s){let e=s.toLowerCase();return mT[e]!==void 0?mT[e]:e==="un"||e==="una"||e==="uno"?1:e.match(/algunos?/)||e.match(/unos?/)?3:e.match(/media?/)?.5:parseFloat(e)}function z2(s){if(s.match(/^[0-9]{1,4}$/)){let e=parseInt(s);return e<100&&(e>50?e=e+1900:e=e+2e3),e}return s.match(/a\.?\s*c\.?/i)?(s=s.replace(/a\.?\s*c\.?/i,""),-parseInt(s)):parseInt(s)}function Q2(s){let e={},t=s,a=G2.exec(t);for(;a;)s8(e,a),t=t.substring(a[0].length),a=G2.exec(t);return e}function s8(s,e){let t=r8(e[1]),a=$2[e[2].toLowerCase()];s[a]=t}var uT,pT,mT,$2,a8,Y2,q2,G2,K2,yu=b(()=>{Ve();uT={domingo:0,dom:0,lunes:1,lun:1,martes:2,mar:2,mi\u00E9rcoles:3,miercoles:3,mi\u00E9:3,mie:3,jueves:4,jue:4,viernes:5,vie:5,s\u00E1bado:6,sabado:6,s\u00E1b:6,sab:6},pT={enero:1,ene:1,"ene.":1,febrero:2,feb:2,"feb.":2,marzo:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,mayo:5,may:5,"may.":5,junio:6,jun:6,"jun.":6,julio:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,septiembre:9,setiembre:9,sep:9,"sep.":9,octubre:10,oct:10,"oct.":10,noviembre:11,nov:11,"nov.":11,diciembre:12,dic:12,"dic.":12},mT={uno:1,dos:2,tres:3,cuatro:4,cinco:5,seis:6,siete:7,ocho:8,nueve:9,diez:10,once:11,doce:12,trece:13},$2={sec:"second",segundo:"second",segundos:"second",min:"minute",mins:"minute",minuto:"minute",minutos:"minute",h:"hour",hr:"hour",hrs:"hour",hora:"hour",horas:"hour",d\u00EDa:"d",d\u00EDas:"d",semana:"week",semanas:"week",mes:"month",meses:"month",cuarto:"quarter",cuartos:"quarter",a\u00F1o:"year",a\u00F1os:"year"},a8=`(?:${ae(mT)}|[0-9]+|[0-9]+\\.[0-9]+|un?|uno?|una?|algunos?|unos?|demi-?)`;Y2="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";q2=`(${a8})\\s{0,5}(${ae($2)})\\s{0,5}`,G2=new RegExp(q2,"i"),K2=pr("",q2)});var i8,n8,o8,l8,eg,X2=b(()=>{yu();Ve();ce();Gs();i8=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|pasado|pr[o\xF3]ximo)\\s*)?(${ae(uT)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|pasado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),n8=1,o8=2,l8=3,eg=class extends Y{innerPattern(){return i8}innerExtract(e,t){let a=t[o8].toLowerCase(),r=uT[a];if(r===void 0)return null;let i=t[n8],n=t[l8],o=i||n||"";o=o.toLowerCase();let l=null;return o=="pasado"?l="this":o=="pr\xF3ximo"||o=="proximo"?l="next":o=="este"&&(l="this"),na(e.reference,r,l)}}});var tg,J2=b(()=>{an();tg=class extends Ba{primaryPrefix(){return"(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:l)?|\\?)\\s*"}}});var ag,Z2=b(()=>{ws();ag=class extends Dt{patternBetween(){return new RegExp("^\\s*(?:,|de|aslas|a)?\\s*$")}}});var rg,eH=b(()=>{ys();rg=class extends Et{patternBetween(){return/^\s*(?:-)\s*$/i}}});var c8,tH,aH,d8,rH,sg,sH=b(()=>{Bt();yu();yu();Ve();ce();c8=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${ae(pT)})(?:\\s*(?:de|,)?\\s*(${Y2}))?(?=\\W|$)`,"i"),tH=1,aH=2,d8=3,rH=4,sg=class extends Y{innerPattern(){return c8}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=pT[t[d8].toLowerCase()],i=parseInt(t[tH]);if(i>31)return t.index=t.index+t[tH].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[rH]){let n=z2(t[rH]);a.start.assign("year",n)}else{let n=it(e.refDate,i,r);a.start.imply("year",n)}if(t[aH]){let n=parseInt(t[aH]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var ig,iH=b(()=>{ce();Vr();ig=class extends Y{innerPattern(e){return/(ahora|hoy|mañana|ayer)(?=\W|$)/i}innerExtract(e,t){let a=t[0].toLowerCase(),r=e.createParsingComponents();switch(a){case"ahora":return Xa(e.reference);case"hoy":return Sa(e.reference);case"ma\xF1ana":return Za(e.reference);case"ayer":return Ja(e.reference)}return r}}});var nH,ng,oH=b(()=>{Ye();ce();Wr();nH=A(tt()),ng=class extends Y{innerPattern(){return/(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i}innerExtract(e,t){let a=(0,nH.default)(e.refDate),r=e.createParsingComponents();switch(t[1].toLowerCase()){case"tarde":r.imply("meridiem",V.PM),r.imply("hour",15);break;case"noche":r.imply("meridiem",V.PM),r.imply("hour",22);break;case"ma\xF1ana":r.imply("meridiem",V.AM),r.imply("hour",6);break;case"medianoche":qs(r,a),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"mediodia":case"mediod\xEDa":r.imply("meridiem",V.AM),r.imply("hour",12);break}return r}}});var og,lH=b(()=>{yu();Re();ce();og=class extends Y{innerPattern(){return new RegExp(`(?:en|por|durante|de|dentro de)\\s*(${K2})(?=\\W|$)`,"i")}innerExtract(e,t){let a=Q2(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var gT={};ha(gT,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>fT,createCasualConfiguration:()=>cH,createConfiguration:()=>hT,parse:()=>p8,parseDate:()=>m8,strict:()=>u8});function p8(s,e,t){return fT.parse(s,e,t)}function m8(s,e,t){return fT.parseDate(s,e,t)}function cH(s=!0){let e=hT(!1,s);return e.parsers.push(new ig),e.parsers.push(new ng),e}function hT(s=!0,e=!0){return Pt({parsers:[new Ea(e),new eg,new tg,new sg,new og],refiners:[new ag,new rg]},s)}var fT,u8,dH=b(()=>{_r();Er();Re();Ye();sn();X2();J2();Z2();eH();sH();iH();oH();lH();fT=new we(cH()),u8=new we(hT(!0))});function h8(s){let e=s.toLowerCase();return wT[e]!==void 0?wT[e]:e.match(/декілька/)?2:e.match(/пів/)?.5:e.match(/пар/)?2:e===""?1:parseFloat(e)}function TT(s){let e=s.toLowerCase();return vT[e]!==void 0?vT[e]:parseInt(e)}function cg(s){if(/(рік|року|р|р.)/i.test(s)&&(s=s.replace(/(рік|року|р|р.)/i,"")),/(до н.е.|до н. е.)/i.test(s))return s=s.replace(/(до н.е.|до н. е.)/i,""),-parseInt(s);if(/(н. е.|н.е.)/i.test(s))return s=s.replace(/(н. е.|н.е.)/i,""),parseInt(s);let e=parseInt(s);return Sr(e)}function Bc(s){let e={},t=s,a=pH.exec(t);for(;a;)g8(e,a),t=t.substring(a[0].length).trim(),a=pH.exec(t);return e}function g8(s,e){let t=h8(e[1]),a=wu[e[2].toLowerCase()];s[a]=t}var xs,kT,yT,Lc,wT,vT,wu,f8,bT,CT,lg,uH,pH,Hc,Gr=b(()=>{Ve();Bt();xs={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},kT={\u043D\u0435\u0434\u0456\u043B\u044F:0,\u043D\u0435\u0434\u0456\u043B\u0456:0,\u043D\u0435\u0434\u0456\u043B\u044E:0,\u043D\u0434:0,"\u043D\u0434.":0,\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A:2,\u0432\u0456\u0432\u0442\u043E\u0440\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0435\u0440\u0435\u0434\u0430:3,\u0441\u0435\u0440\u0435\u0434\u0438:3,\u0441\u0435\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0443:4,\u0447\u0442:4,"\u0447\u0442.":4,"\u043F'\u044F\u0442\u043D\u0438\u0446\u044F":5,"\u043F'\u044F\u0442\u043D\u0438\u0446\u0456":5,"\u043F'\u044F\u0442\u043D\u0438\u0446\u044E":5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u043E\u0442\u0438:6,\u0441\u0443\u0431\u043E\u0442\u0443:6,\u0441\u0431:6,"\u0441\u0431.":6},yT={\u0441\u0456\u0447\u0435\u043D\u044C:1,\u0441\u0456\u0447\u043D\u044F:1,\u0441\u0456\u0447\u043D\u0456:1,\u043B\u044E\u0442\u0438\u0439:2,\u043B\u044E\u0442\u043E\u0433\u043E:2,\u043B\u044E\u0442\u043E\u043C\u0443:2,\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C:3,\u0431\u0435\u0440\u0435\u0437\u043D\u044F:3,\u0431\u0435\u0440\u0435\u0437\u043D\u0456:3,\u043A\u0432\u0456\u0442\u0435\u043D\u044C:4,\u043A\u0432\u0456\u0442\u043D\u044F:4,\u043A\u0432\u0456\u0442\u043D\u0456:4,\u0442\u0440\u0430\u0432\u0435\u043D\u044C:5,\u0442\u0440\u0430\u0432\u043D\u044F:5,\u0442\u0440\u0430\u0432\u043D\u0456:5,\u0447\u0435\u0440\u0432\u0435\u043D\u044C:6,\u0447\u0435\u0440\u0432\u043D\u044F:6,\u0447\u0435\u0440\u0432\u043D\u0456:6,\u043B\u0438\u043F\u0435\u043D\u044C:7,\u043B\u0438\u043F\u043D\u044F:7,\u043B\u0438\u043F\u043D\u0456:7,\u0441\u0435\u0440\u043F\u0435\u043D\u044C:8,\u0441\u0435\u0440\u043F\u043D\u044F:8,\u0441\u0435\u0440\u043F\u043D\u0456:8,\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C:9,\u0432\u0435\u0440\u0435\u0441\u043D\u044F:9,\u0432\u0435\u0440\u0435\u0441\u043D\u0456:9,\u0436\u043E\u0432\u0442\u0435\u043D\u044C:10,\u0436\u043E\u0432\u0442\u043D\u044F:10,\u0436\u043E\u0432\u0442\u043D\u0456:10,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0443:11,\u0433\u0440\u0443\u0434\u0435\u043D\u044C:12,\u0433\u0440\u0443\u0434\u043D\u044F:12,\u0433\u0440\u0443\u0434\u043D\u0456:12},Lc={...yT,\u0441\u0456\u0447:1,"\u0441\u0456\u0447.":1,\u043B\u044E\u0442:2,"\u043B\u044E\u0442.":2,\u0431\u0435\u0440:3,"\u0431\u0435\u0440.":3,\u043A\u0432\u0456\u0442:4,"\u043A\u0432\u0456\u0442.":4,\u0442\u0440\u0430\u0432:5,"\u0442\u0440\u0430\u0432.":5,\u0447\u0435\u0440\u0432:6,"\u0447\u0435\u0440\u0432.":6,\u043B\u0438\u043F:7,"\u043B\u0438\u043F.":7,\u0441\u0435\u0440\u043F:8,"\u0441\u0435\u0440\u043F.":8,\u0441\u0435\u0440:8,"c\u0435\u0440.":8,\u0432\u0435\u0440:9,"\u0432\u0435\u0440.":9,\u0432\u0435\u0440\u0435\u0441:9,"\u0432\u0435\u0440\u0435\u0441.":9,\u0436\u043E\u0432\u0442:10,"\u0436\u043E\u0432\u0442.":10,\u043B\u0438\u0441\u0442\u043E\u043F:11,"\u043B\u0438\u0441\u0442\u043E\u043F.":11,\u0433\u0440\u0443\u0434:12,"\u0433\u0440\u0443\u0434.":12},wT={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0457:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0456:2,\u0434\u0432\u0430:2,\u0434\u0432\u043E\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u044C\u043E\u0445:3,\u0447\u043E\u0442\u0438\u0440\u0438:4,\u0447\u043E\u0442\u0438\u0440\u044C\u043E\u0445:4,"\u043F'\u044F\u0442\u044C":5,"\u043F'\u044F\u0442\u0438":5,\u0448\u0456\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0456\u043C:7,\u0441\u0435\u043C\u0438:7,\u0432\u0456\u0441\u0456\u043C:8,\u0432\u043E\u0441\u044C\u043C\u0438:8,"\u0434\u0435\u0432'\u044F\u0442\u044C":9,"\u0434\u0435\u0432'\u044F\u0442\u0438":9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u044C:11,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0438:11,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u044C:12,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u0438:12},vT={\u043F\u0435\u0440\u0448\u0435:1,\u043F\u0435\u0440\u0448\u043E\u0433\u043E:1,\u0434\u0440\u0443\u0433\u0435:2,\u0434\u0440\u0443\u0433\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u0454:3,\u0442\u0440\u0435\u0442\u044C\u043E\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,"\u043F'\u044F\u0442\u0435":5,"\u043F'\u044F\u0442\u043E\u0433\u043E":5,\u0448\u043E\u0441\u0442\u0435:6,\u0448\u043E\u0441\u0442\u043E\u0433\u043E:6,\u0441\u044C\u043E\u043C\u0435:7,\u0441\u044C\u043E\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,"\u0434\u0435\u0432'\u044F\u0442\u0435":9,"\u0434\u0435\u0432'\u044F\u0442\u043E\u0433\u043E":9,\u0434\u0435\u0441\u044F\u0442\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0435:11,\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u0435:12,\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:13,\u0447\u043E\u0442\u0438\u0440\u043D\u0430\u0434\u0446\u044F\u0442\u0435:14,\u0447\u043E\u0442\u0438\u043D\u0440\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:14,"\u043F'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435":15,"\u043F'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E":15,\u0448\u0456\u0441\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435:16,\u0448\u0456\u0441\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:16,\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u0435:17,\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:17,\u0432\u0456\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u0435:18,\u0432\u0456\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:18,"\u0434\u0435\u0432'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u0435":19,"\u0434\u0435\u0432'\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E":19,\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u0435:20,\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0440\u0443\u0433\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0440\u0443\u0433\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0442\u0440\u0435\u0442\u0454":23,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u043E\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F'\u044F\u0442\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u043F'\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0448\u043E\u0441\u0442\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0448\u043E\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0441\u044C\u043E\u043C\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0441\u044C\u043E\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0435\u0432'\u044F\u0442\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C \u0434\u0435\u0432'\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u0435:30,\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u044C \u043F\u0435\u0440\u0448\u043E\u0433\u043E":31},wu={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043E\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u0445\u0432:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0430:"minute",\u0445\u0432\u0438\u043B\u0438\u043D:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u0443:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u043A:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043A\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043A\u0443:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043E\u043A:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043A\u0438:"minute",\u0445\u0432\u0438\u043B\u0438\u043D\u043E\u0447\u043A\u0443:"minute",\u0433\u043E\u0434:"hour",\u0433\u043E\u0434\u0438\u043D\u0430:"hour",\u0433\u043E\u0434\u0438\u043D:"hour",\u0433\u043E\u0434\u0438\u043D\u0438:"hour",\u0433\u043E\u0434\u0438\u043D\u0443:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0430:"hour",\u0433\u043E\u0434\u0438\u043D\u043E\u043A:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0438:"hour",\u0433\u043E\u0434\u0438\u043D\u043A\u0443:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0456\u0432:"d",\u0434\u043D\u0456:"d",\u0434\u043E\u0431\u0430:"d",\u0434\u043E\u0431\u0443:"d",\u0442\u0438\u0436\u0434\u0435\u043D\u044C:"week",\u0442\u0438\u0436\u043D\u044E:"week",\u0442\u0438\u0436\u043D\u044F:"week",\u0442\u0438\u0436\u043D\u0456:"week",\u0442\u0438\u0436\u043D\u0456\u0432:"week",\u043C\u0456\u0441\u044F\u0446\u044C:"month",\u043C\u0456\u0441\u044F\u0446\u0456\u0432:"month",\u043C\u0456\u0441\u044F\u0446\u0456:"month",\u043C\u0456\u0441\u044F\u0446\u044F:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0443:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0430:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0456\u0432:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0456:"quarter",\u0440\u0456\u043A:"year",\u0440\u043E\u043A\u0443:"year",\u0440\u043E\u0446\u0456:"year",\u0440\u043E\u043A\u0456\u0432:"year",\u0440\u043E\u043A\u0438:"year"},f8=`(?:${ae(wT)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u0456\u0432|\u0434\u0435\u043A\u0456\u043B\u044C\u043A\u0430|\u043F\u0430\u0440(?:\u0443)|\\s{0,3})`;bT=`(?:${ae(vT)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435)?)`;CT="(?:\\s+(?:\u0440\u043E\u043A\u0443|\u0440\u0456\u043A|\u0440|\u0440.))?",lg=`(?:[1-9][0-9]{0,3}${CT}\\s*(?:\u043D.\u0435.|\u0434\u043E \u043D.\u0435.|\u043D. \u0435.|\u0434\u043E \u043D. \u0435.)|[1-2][0-9]{3}${CT}|[5-9][0-9]${CT})`;uH=`(${f8})\\s{0,3}(${ae(wu)})`,pH=new RegExp(uH,"i"),Hc=pr("(?:(?:\u0431\u043B\u0438\u0437\u044C\u043A\u043E|\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E)\\s{0,3})?",uH)});var mH,dg,fH=b(()=>{Gr();Re();ce();mH=`(?:(?:\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E|\u043E\u0440\u0456\u0454\u043D\u0442\u043E\u0432\u043D\u043E)\\s*(?:~\\s*)?)?(${Hc})${xs.rightBoundary}`,dg=class extends Y{patternLeftBoundary(){return xs.leftBoundary}innerPattern(e){return e.option.forwardDate?new RegExp(mH,"i"):new RegExp(`(?:\u043F\u0440\u043E\u0442\u044F\u0433\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0442\u044F\u0437\u0456|\u043F\u0440\u043E\u0442\u044F\u0433\u043E\u043C|\u0443\u043F\u0440\u043E\u0434\u043E\u0432\u0436|\u0432\u043F\u0440\u043E\u0434\u043E\u0432\u0436)\\s*${mH}`,xs.flags)}innerExtract(e,t){let a=Bc(t[1]);return K.createRelativeFromReference(e.reference,a)}}});var Wc,Kr,ln=b(()=>{ce();Gr();Wc=class extends Y{patternLeftBoundary(){return xs.leftBoundary}innerPattern(e){return new RegExp(this.innerPatternString(e),xs.flags)}innerPatternHasChange(e,t){return!1}},Kr=class extends Wc{innerPattern(e){return new RegExp(`${this.innerPatternString(e)}${xs.rightBoundary}`,xs.flags)}}});var hH,gH,k8,kH,ug,yH=b(()=>{Bt();Gr();Gr();Gr();Ve();ln();hH=1,gH=2,k8=3,kH=4,ug=class extends Kr{innerPatternString(e){return`(?:\u0437|\u0456\u0437)?\\s*(${bT})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${bT}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${ae(Lc)})(?:(?:-|\\/|,?\\s{0,3})(${lg}(?![^\\s]\\d)))?`}innerExtract(e,t){let a=e.createParsingResult(t.index,t[0]),r=Lc[t[k8].toLowerCase()],i=TT(t[hH]);if(i>31)return t.index=t.index+t[hH].length,null;if(a.start.assign("month",r),a.start.assign("day",i),t[kH]){let n=cg(t[kH]);a.start.assign("year",n)}else{let n=it(e.reference.instant,i,r);a.start.imply("year",n)}if(t[gH]){let n=TT(t[gH]);a.end=a.start.clone(),a.end.assign("day",n)}return a}}});var y8,wH,pg,vH=b(()=>{Gr();Bt();Ve();Gr();ln();y8=2,wH=3,pg=class extends Wc{innerPatternString(e){return`((?:\u0432|\u0443)\\s*)?(${ae(Lc)})\\s*(?:[,-]?\\s*(${lg})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(e,t){let a=t[y8].toLowerCase();if(t[0].length<=3&&!yT[a])return null;let r=e.createParsingResult(t.index,t.index+t[0].length);r.start.imply("day",1);let i=Lc[a];if(r.start.assign("month",i),t[wH]){let n=cg(t[wH]);r.start.assign("year",n)}else{let n=it(e.reference.instant,1,i);r.start.imply("year",n)}return r}}});var mg,bH=b(()=>{Ye();an();Gr();mg=class extends Ba{constructor(e){super(e)}patternFlags(){return xs.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0456|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0443|\u043E|\u043E\u0431|\u0437|\u0456\u0437|\u0432\u0456\u0434)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0440\u0430\u043D\u043A\u0443|\u0432\u0435\u0447\u043E\u0440\u0430|\u043F\u043E \u043E\u0431\u0456\u0434\u0456|\u043F\u0456\u0441\u043B\u044F \u043E\u0431\u0456\u0434\u0443))?(?!\\/)${xs.rightBoundary}`}extractPrimaryTimeComponents(e,t){let a=super.extractPrimaryTimeComponents(e,t);if(a){if(t[0].endsWith("\u0432\u0435\u0447\u043E\u0440\u0430")){let r=a.get("hour");r>=6&&r<12?(a.assign("hour",a.get("hour")+12),a.assign("meridiem",V.PM)):r<6&&a.assign("meridiem",V.AM)}if(t[0].endsWith("\u043F\u043E \u043E\u0431\u0456\u0434\u0456")||t[0].endsWith("\u043F\u0456\u0441\u043B\u044F \u043E\u0431\u0456\u0434\u0443")){a.assign("meridiem",V.PM);let r=a.get("hour");r>=0&&r<=6&&a.assign("hour",a.get("hour")+12)}t[0].endsWith("\u0440\u0430\u043D\u043A\u0443")&&(a.assign("meridiem",V.AM),a.get("hour")<12&&a.assign("hour",a.get("hour")))}return a}}});var fg,TH=b(()=>{Gr();Re();Ur();ln();fg=class extends Wc{innerPatternString(e){return`(${Hc})\\s{0,5}\u0442\u043E\u043C\u0443(?=(?:\\W|$))`}innerExtract(e,t){let a=Bc(t[1]),r=ia(a);return K.createRelativeFromReference(e.reference,r)}}});var hg,CH=b(()=>{ys();hg=class extends Et{patternBetween(){return/^\s*(і до|і по|до|по|-)\s*$/i}}});var gg,xH=b(()=>{ws();gg=class extends Dt{patternBetween(){return new RegExp("^\\s*(T|\u0432|\u0443|\u043E|,|-)?\\s*$")}}});var kg,SH=b(()=>{Vr();ln();kg=class extends Kr{innerPatternString(e){return"(?:\u0437|\u0456\u0437|\u0432\u0456\u0434)?\\s*(\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456|\u0432\u0447\u043E\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430)"}innerExtract(e,t){let a=t[1].toLowerCase(),r=e.createParsingComponents();switch(a){case"\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456":return Sa(e.reference);case"\u0432\u0447\u043E\u0440\u0430":return Ja(e.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Za(e.reference);case"\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return Ti(e.reference,2);case"\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return Ti(e.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return Go(e.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return Go(e.reference,3)}return r}}});var EH,yg,DH=b(()=>{Vr();Wr();EH=A(tt());ln();yg=class extends Kr{innerPatternString(e){return"(\u0437\u0430\u0440\u0430\u0437|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E\\s*\u0432\u0435\u0447\u043E\u0440\u0430|\u043C\u0438\u043D\u0443\u043B\u043E\u0457\\s*\u043D\u043E\u0447\u0456|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0457\\s*\u043D\u043E\u0447\u0456|\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456\\s*\u0432\u043D\u043E\u0447\u0456|\u0446\u0456\u0454\u0457\\s*\u043D\u043E\u0447\u0456|\u0446\u044C\u043E\u0433\u043E \u0440\u0430\u043D\u043A\u0443|\u0432\u0440\u0430\u043D\u0446\u0456|\u0440\u0430\u043D\u043A\u0443|\u0437\u0440\u0430\u043D\u043A\u0443|\u043E\u043F\u0456\u0432\u0434\u043D\u0456|\u0432\u0432\u0435\u0447\u0435\u0440\u0456|\u0432\u0435\u0447\u043E\u0440\u0430|\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456|\u0432\u043D\u043E\u0447\u0456)"}innerExtract(e,t){let a=(0,EH.default)(e.reference.instant),r=t[0].toLowerCase(),i=e.createParsingComponents();if(r==="\u0437\u0430\u0440\u0430\u0437")return Xa(e.reference);if(r==="\u0432\u0432\u0435\u0447\u0435\u0440\u0456"||r==="\u0432\u0435\u0447\u043E\u0440\u0430")return nc(e.reference);if(r.endsWith("\u0432\u0440\u0430\u043D\u0446\u0456")||r.endsWith("\u0440\u0430\u043D\u043A\u0443")||r.endsWith("\u0437\u0440\u0430\u043D\u043A\u0443"))return oc(e.reference);if(r.endsWith("\u043E\u043F\u0456\u0432\u0434\u043D\u0456"))return lc(e.reference);if(r.match(/минулої\s*ночі/))return tf(e.reference);if(r.match(/минулого\s*вечора/))return af(e.reference);if(r.match(/наступної\s*ночі/)){let n=a.hour()<22?1:2;a=a.add(n,"day"),Tt(i,a),i.imply("hour",1)}return r.match(/цієї\s*ночі/)?Ko(e.reference):r.endsWith("\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456")||r.endsWith("\u0432\u043D\u043E\u0447\u0456")?Ko(e.reference):i}}});var w8,v8,b8,wg,PH=b(()=>{Gr();Ve();Gs();ln();w8=1,v8=2,b8=3,wg=class extends Kr{innerPatternString(e){return`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:\u0443\\s*?)?(?:(\u0446\u0435\u0439|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E|\u043C\u0438\u043D\u0443\u043B\u0438\u0439|\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439|\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E\u0433\u043E|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443)\\s*)?(${ae(kT)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*(\u043D\u0430|\u0443|\u0432)\\s*(\u0446\u044C\u043E\u043C\u0443|\u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443)\\s*\u0442\u0438\u0436\u043D\u0456)?`}innerExtract(e,t){let a=t[v8].toLocaleLowerCase(),r=kT[a],i=t[w8],n=t[b8],o=i||n;o=o||"",o=o.toLocaleLowerCase();let l=null;return o=="\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E"||o=="\u043C\u0438\u043D\u0443\u043B\u0438\u0439"||o=="\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439"||o=="\u043F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044C\u043E\u0433\u043E"?l="last":o=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E"||o=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439"?l="next":(o=="\u0446\u0435\u0439"||o=="\u0446\u044C\u043E\u0433\u043E"||o=="\u0446\u044C\u043E\u043C\u0443")&&(l="this"),na(e.reference,r,l)}}});var MH,T8,C8,vg,AH=b(()=>{Gr();Re();MH=A(tt());Ve();ln();T8=1,C8=2,vg=class extends Kr{innerPatternString(e){return`(\u0432 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u0443 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043D\u0430 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443|\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E|\u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u0432 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E|\u043D\u0430 \u0446\u044C\u043E\u043C\u0443|\u0432 \u0446\u044C\u043E\u043C\u0443|\u0443 \u0446\u044C\u043E\u043C\u0443|\u0446\u044C\u043E\u0433\u043E)\\s*(${ae(wu)})(?=\\s*)`}innerExtract(e,t){let a=t[T8].toLowerCase(),r=t[C8].toLowerCase(),i=wu[r];if(a=="\u043D\u0430 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||a=="\u0432 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||a=="\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u043C\u0443"||a=="\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u043E\u0433\u043E"){let l={};return l[i]=1,K.createRelativeFromReference(e.reference,l)}if(a=="\u043D\u0430 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||a=="\u0432 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||a=="\u0443 \u043C\u0438\u043D\u0443\u043B\u043E\u043C\u0443"||a=="\u043C\u0438\u043D\u0443\u043B\u043E\u0433\u043E"){let l={};return l[i]=-1,K.createRelativeFromReference(e.reference,l)}let n=e.createParsingComponents(),o=(0,MH.default)(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),n.imply("day",o.date()),n.assign("year",o.year()),n.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),n.imply("day",o.date()),n.imply("month",o.month()+1),n.assign("year",o.year())),n}}});var bg,IH=b(()=>{Gr();Re();Ur();ln();bg=class extends Kr{innerPatternString(e){return`(\u0446\u0456|\u043E\u0441\u0442\u0430\u043D\u043D\u0456|\u043C\u0438\u043D\u0443\u043B\u0456|\u043C\u0430\u0439\u0431\u0443\u0442\u043D\u0456|\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0456|\u043F\u0456\u0441\u043B\u044F|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${Hc})`}innerExtract(e,t){let a=t[1].toLowerCase(),r=Bc(t[3]);switch(a){case"\u043E\u0441\u0442\u0430\u043D\u043D\u0456":case"\u043C\u0438\u043D\u0443\u043B\u0456":case"-":r=ia(r);break}return K.createRelativeFromReference(e.reference,r)}}});var ET={};ha(ET,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>xT,createCasualConfiguration:()=>RH,createConfiguration:()=>ST,parse:()=>S8,parseDate:()=>E8,strict:()=>x8});function RH(){let s=ST(!1);return s.parsers.unshift(new kg),s.parsers.unshift(new yg),s.parsers.unshift(new pg),s.parsers.unshift(new vg),s.parsers.unshift(new bg),s}function ST(s){return Pt({parsers:[new Zn,new Ea(!0),new dg,new ug,new wg,new mg(s),new fg],refiners:[new gg,new hg]},s)}function S8(s,e,t){return xT.parse(s,e,t)}function E8(s,e,t){return xT.parseDate(s,e,t)}var xT,x8,FH=b(()=>{fH();yH();vH();bH();TH();CH();xH();_r();SH();DH();PH();AH();Er();Re();Ye();sn();IH();ef();xT=new we(RH()),x8=new we(ST(!0))});var PT={};ha(PT,{Chrono:()=>we,Meridiem:()=>V,ParsingComponents:()=>K,ParsingContext:()=>hf,ParsingResult:()=>ze,ReferenceWithTimezone:()=>rt,Weekday:()=>be,casual:()=>DT,de:()=>Zv,en:()=>$v,es:()=>gT,fr:()=>cb,ja:()=>mb,nl:()=>Eb,parse:()=>P8,parseDate:()=>M8,pt:()=>yb,ru:()=>dT,strict:()=>D8,uk:()=>ET,zh:()=>eT});function P8(s,e,t){return DT.parse(s,e,t)}function M8(s,e,t){return DT.parseDate(s,e,t)}var D8,DT,jH=b(()=>{zO();Er();Re();Ye();kN();_N();aL();kL();YL();v2();U2();dH();FH();D8=YO,DT=kf});var MT,OH,NH=b(()=>{jH();MT=class{constructor(e){this.parseCache=new Map;this.maxCacheSize=100;this.config=e}parseTimeExpressionsForLine(e){let t=this.parseTimeExpressions(e);return{originalLine:e,cleanedLine:t.cleanedText,startDate:t.startDate,dueDate:t.dueDate,scheduledDate:t.scheduledDate,parsedExpressions:t.parsedExpressions}}parseTimeExpressionsPerLine(e){return e.map(t=>this.parseTimeExpressionsForLine(t))}parseTimeExpressions(e){var r;if(!this.config.enabled)return{originalText:e,cleanedText:e,parsedExpressions:[]};let t=this.generateCacheKey(e);if(this.parseCache.has(t))return this.parseCache.get(t);let a={originalText:e,cleanedText:e,parsedExpressions:[]};try{if(typeof e!="string")return console.warn("TimeParsingService: Invalid input type, expected string"),a;if(e.trim().length===0)return a;let i=PT,n;try{n=i.parse(e)}catch(o){console.warn("TimeParsingService: Chrono parsing failed:",o),n=[]}if(n.length===0&&/[\u4e00-\u9fff]/.test(e))try{if(i.zh&&i.zh.hant&&typeof i.zh.hant.parse=="function"){let o=i.zh.parse(e);o&&o.length>0&&(n=o)}if(n.length===0&&i.zh&&typeof i.zh.parse=="function"){let o=i.zh.parse(e);o&&o.length>0&&(n=o)}n.length===0&&(n=this.parseChineseTimeExpressions(e))}catch(o){console.warn("TimeParsingService: Chinese parsing failed:",o);try{n=this.parseChineseTimeExpressions(e)}catch(l){console.warn("TimeParsingService: Custom Chinese parsing failed:",l),n=[]}}for(let o of n)try{if(!o||!o.text||!o.start){console.warn("TimeParsingService: Invalid parse result structure:",o);continue}let l=o.text,d;try{d=o.start.date()}catch(h){console.warn("TimeParsingService: Failed to extract date from parse result:",h);continue}if(!d||isNaN(d.getTime())){console.warn("TimeParsingService: Invalid date extracted:",d);continue}let u=(r=o.index)!=null?r:0,p=l.length,m;try{m=this.determineTimeType(e,l,u)}catch(h){console.warn("TimeParsingService: Failed to determine time type:",h),m="due"}let f={text:l,date:d,type:m,index:u,length:p};switch(a.parsedExpressions.push(f),m){case"start":a.startDate||(a.startDate=d);break;case"due":a.dueDate||(a.dueDate=d);break;case"scheduled":a.scheduledDate||(a.scheduledDate=d);break;default:console.warn("TimeParsingService: Unknown date type:",m);break}}catch(l){console.warn("TimeParsingService: Error processing expression:",l);continue}a.cleanedText=this.cleanTextFromTimeExpressions(e,a.parsedExpressions)}catch(i){console.warn("Time parsing error:",i)}finally{this.cacheResult(t,a)}return a}generateCacheKey(e){let t=JSON.stringify({enabled:this.config.enabled,removeOriginalText:this.config.removeOriginalText,supportedLanguages:this.config.supportedLanguages,dateKeywords:this.config.dateKeywords});return`${e}|${t}`}cacheResult(e,t){if(this.parseCache.size>=this.maxCacheSize){let a=this.parseCache.keys().next().value;a&&this.parseCache.delete(a)}this.parseCache.set(e,t)}clearCache(){this.parseCache.clear()}cleanTextFromTimeExpressions(e,t){var i;if(!this.config.removeOriginalText||t.length===0)return e;let a=[...t].sort((n,o)=>o.index-n.index),r=e;for(let n of a){let o=r.substring(0,n.index),l=r.substring(n.index+n.length),d=o,u=l;o.endsWith(" ")&&l.startsWith(" ")?u=l.trimStart():o.endsWith(" ")&&!l.startsWith(" ")&&(d=o.trimEnd()+" ");let p=d.match(/[,;]\s*$/),m=u.match(/^[,;]\s*/);if(p&&m){d=d.replace(/[,;]\s*$/,"");let f=((i=u.match(/^[,;]/))==null?void 0:i[0])||"";u=u.replace(/^[,;]\s*/,""),u.trim()&&(d+=f+" ")}else p&&!m?(d=d.replace(/[,;]\s*$/,""),u.trim()&&!d.endsWith(" ")&&(d+=" ")):(!p&&m&&(u=u.replace(/^[,;]\s*/,"")),d&&u.trim()&&!d.endsWith(" ")&&(d+=" "));r=d+u}return r=r.replace(/[ \t]+/g," "),r=r.replace(/^[ \t]+|[ \t]+$/g,""),r}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}determineTimeType(e,t,a){let r=e.substring(Math.max(0,a-20),a).toLowerCase(),i=e.substring(a+t.length,Math.min(e.length,a+t.length+20)).toLowerCase(),n=r+" "+i;for(let o of this.config.dateKeywords.start)if(n.includes(o.toLowerCase()))return"start";for(let o of this.config.dateKeywords.due)if(n.includes(o.toLowerCase()))return"due";for(let o of this.config.dateKeywords.scheduled)if(n.includes(o.toLowerCase()))return"scheduled";return"due"}parseChineseTimeExpressions(e){let t=[],a=new Set,r=[/(?:下|上|这)(?:周|礼拜|星期)(?:一|二|三|四|五|六|日|天)/g,/(\d+)[天周月]后/g,/(\d+)[天周月]内/g,/星期(?:一|二|三|四|五|六|日|天)/g,/周(?:一|二|三|四|五|六|日|天)/g,/礼拜(?:一|二|三|四|五|六|日|天)/g,/明天|后天|昨天|前天/g,/下周|上周|这周/g,/下个?月|上个?月|这个?月/g,/明年|去年|今年/g];for(let i of r){let n;for(;(n=i.exec(e))!==null;){let o=n[0],l=n.index,d=l+o.length,u=!1;for(let m=l;m<d;m++)if(a.has(m)){u=!0;break}if(u)continue;let p=this.parseChineseDate(o);if(p){for(let m=l;m<d;m++)a.add(m);t.push({text:o,index:l,length:o.length,start:{date:()=>p}})}}}return t}parseChineseDate(e){let t=new Date,a=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r=o=>{var d;return(d={\u65E5:0,\u5929:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6}[o])!=null?d:-1},i=(o,l=0)=>{let d=a.getDay(),u=o-d;return u+=l*7,l===0&&u<=0&&(u+=7),new Date(a.getTime()+u*24*60*60*1e3)},n=e.match(/(?:(下|上|这)?(?:周|礼拜|星期)?)([一二三四五六日天])/);if(n){let[,o,l]=n,d=r(l);if(d!==-1){let u=0;return o==="\u4E0B"?u=1:o==="\u4E0A"?u=-1:u=0,i(d,u)}}switch(e){case"\u660E\u5929":return new Date(a.getTime()+24*60*60*1e3);case"\u540E\u5929":return new Date(a.getTime()+2*24*60*60*1e3);case"\u6628\u5929":return new Date(a.getTime()-24*60*60*1e3);case"\u524D\u5929":return new Date(a.getTime()-2*24*60*60*1e3);case"\u4E0B\u5468":return new Date(a.getTime()+7*24*60*60*1e3);case"\u4E0A\u5468":return new Date(a.getTime()-7*24*60*60*1e3);case"\u8FD9\u5468":return a;case"\u4E0B\u4E2A\u6708":case"\u4E0B\u6708":return new Date(t.getFullYear(),t.getMonth()+1,t.getDate());case"\u4E0A\u4E2A\u6708":case"\u4E0A\u6708":return new Date(t.getFullYear(),t.getMonth()-1,t.getDate());case"\u8FD9\u4E2A\u6708":case"\u8FD9\u6708":return a;case"\u660E\u5E74":return new Date(t.getFullYear()+1,t.getMonth(),t.getDate());case"\u53BB\u5E74":return new Date(t.getFullYear()-1,t.getMonth(),t.getDate());case"\u4ECA\u5E74":return a;default:let o=e.match(/(\d+)([天周月])[后内]/);if(o){let l=parseInt(o[1]);switch(o[2]){case"\u5929":return new Date(a.getTime()+l*24*60*60*1e3);case"\u5468":return new Date(a.getTime()+l*7*24*60*60*1e3);case"\u6708":return new Date(t.getFullYear(),t.getMonth()+l,t.getDate())}}return null}}},OH={enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","starting","begins","\u5F00\u59CB","\u4ECE","\u8D77\u59CB","\u8D77","\u59CB\u4E8E","\u81EA"],due:["due","deadline","by","until","before","expires","ends","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D","\u671F\u9650","\u6700\u665A","\u7ED3\u675F","\u7EC8\u6B62","\u5B8C\u6210\u4E8E"],scheduled:["scheduled","on","at","planned","set for","arranged","\u5B89\u6392","\u8BA1\u5212","\u5728","\u5B9A\u4E8E","\u9884\u5B9A","\u7EA6\u5B9A","\u8BBE\u5B9A"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!1}});function LH(){return[{id:"priority-highest",label:c("Highest Priority"),icon:"arrow-up",description:"",replacement:"",trigger:"!",action:(s,e)=>{var i;let t=(i=s.cm)==null?void 0:i.dom,a=t==null?void 0:t.closest(".quick-capture-modal.minimal"),r=a==null?void 0:a.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=5,r.updateButtonState(r.priorityButton,!0)),new Ma.Notice(c("Highest priority set"))}},{id:"priority-high",label:c("High Priority"),icon:"arrow-up",description:"",replacement:"",trigger:"!",action:(s,e)=>{var i;let t=(i=s.cm)==null?void 0:i.dom,a=t==null?void 0:t.closest(".quick-capture-modal.minimal"),r=a==null?void 0:a.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=4,r.updateButtonState(r.priorityButton,!0)),new Ma.Notice(c("High priority set"))}},{id:"priority-medium",label:c("Medium Priority"),icon:"minus",description:"",replacement:"",trigger:"!",action:(s,e)=>{var i;let t=(i=s.cm)==null?void 0:i.dom,a=t==null?void 0:t.closest(".quick-capture-modal.minimal"),r=a==null?void 0:a.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=3,r.updateButtonState(r.priorityButton,!0)),new Ma.Notice(c("Medium priority set"))}},{id:"priority-low",label:c("Low Priority"),icon:"arrow-down",description:"",replacement:"",trigger:"!",action:(s,e)=>{var i;let t=(i=s.cm)==null?void 0:i.dom,a=t==null?void 0:t.closest(".quick-capture-modal.minimal"),r=a==null?void 0:a.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=2,r.updateButtonState(r.priorityButton,!0)),new Ma.Notice(c("Low priority set"))}},{id:"priority-lowest",label:c("Lowest Priority"),icon:"arrow-down",description:"",replacement:"",trigger:"!",action:(s,e)=>{var i;let t=(i=s.cm)==null?void 0:i.dom,a=t==null?void 0:t.closest(".quick-capture-modal.minimal"),r=a==null?void 0:a.__minimalQuickCaptureModal;r&&(r.taskMetadata.priority=1,r.updateButtonState(r.priorityButton,!0)),new Ma.Notice(c("Lowest priority set"))}}]}function HH(){let s=new Date,e=new Date(s);e.setDate(e.getDate()+1);let t=a=>a.toISOString().split("T")[0];return[{id:"date-today",label:c("Today"),icon:"calendar-days",description:c("Set due date to today"),replacement:"",trigger:"~",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.dueDate=s,o.updateButtonState(o.dateButton,!0)),new Ma.Notice(c("Due date set to today"))}},{id:"date-tomorrow",label:c("Tomorrow"),icon:"calendar-plus",description:c("Set due date to tomorrow"),replacement:"",trigger:"~",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.dueDate=e,o.updateButtonState(o.dateButton,!0)),new Ma.Notice(c("Due date set to tomorrow"))}},{id:"date-picker",label:c("Pick Date"),icon:"calendar",description:c("Open date picker"),replacement:"",trigger:"~",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&o.showDatePicker()}},{id:"date-scheduled",label:c("Scheduled Date"),icon:"calendar-clock",description:c("Set scheduled date"),replacement:"",trigger:"~",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.scheduledDate=s,o.updateButtonState(o.dateButton,!0)),new Ma.Notice(c("Scheduled date set"))}}]}function BH(s){let e=[{id:"target-inbox",label:c("Inbox"),icon:"inbox",description:c("Save to inbox"),replacement:"",trigger:"*",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="fixed",o.taskMetadata.targetFile=s.settings.quickCapture.targetFile,o.updateButtonState(o.locationButton,!0)),new Ma.Notice(c("Target set to Inbox"))}},{id:"target-daily",label:c("Daily Note"),icon:"calendar-days",description:c("Save to today's daily note"),replacement:"",trigger:"*",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="daily",o.updateButtonState(o.locationButton,!0)),new Ma.Notice(c("Target set to Daily Note"))}},{id:"target-current",label:c("Current File"),icon:"file-text",description:c("Save to current file"),replacement:"",trigger:"*",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&(o.taskMetadata.location="current",o.updateButtonState(o.locationButton,!0)),new Ma.Notice(c("Target set to Current File"))}},{id:"target-picker",label:c("Choose File"),icon:"folder-open",description:c("Open file picker"),replacement:"",trigger:"*",action:(a,r)=>{var l;let i=(l=a.cm)==null?void 0:l.dom,n=i==null?void 0:i.closest(".quick-capture-modal.minimal"),o=n==null?void 0:n.__minimalQuickCaptureModal;o&&o.showLocationMenu()}}];return s.app.workspace.getLastOpenFiles().slice(0,3).forEach((a,r)=>{var n;let i=((n=a.split("/").pop())==null?void 0:n.replace(".md",""))||a;e.push({id:`target-recent-${r}`,label:i,icon:"file",description:c("Save to recent file"),replacement:"",trigger:"*",action:(o,l)=>{var m;let d=(m=o.cm)==null?void 0:m.dom,u=d==null?void 0:d.closest(".quick-capture-modal.minimal"),p=u==null?void 0:u.__minimalQuickCaptureModal;p&&(p.taskMetadata.location="fixed",p.taskMetadata.targetFile=a,p.updateButtonState(p.locationButton,!0)),new Ma.Notice(c("Target set to")+` ${i}`)}})}),e}function WH(s){let e=[{id:"tag-important",label:c("Important"),icon:"star",description:c("Mark as important"),replacement:"",trigger:"#",action:(t,a)=>{var o;let r=(o=t.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),n=i==null?void 0:i.__minimalQuickCaptureModal;n&&(n.taskMetadata.tags||(n.taskMetadata.tags=[]),n.taskMetadata.tags.includes("important")||n.taskMetadata.tags.push("important"),n.updateButtonState(n.tagButton,!0)),new Ma.Notice(c("Tagged as important"))}},{id:"tag-urgent",label:c("Urgent"),icon:"zap",description:c("Mark as urgent"),replacement:"",trigger:"#",action:(t,a)=>{var o;let r=(o=t.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),n=i==null?void 0:i.__minimalQuickCaptureModal;n&&(n.taskMetadata.tags||(n.taskMetadata.tags=[]),n.taskMetadata.tags.includes("urgent")||n.taskMetadata.tags.push("urgent"),n.updateButtonState(n.tagButton,!0)),new Ma.Notice(c("Tagged as urgent"))}},{id:"tag-work",label:c("Work"),icon:"briefcase",description:c("Work related task"),replacement:"",trigger:"#",action:(t,a)=>{var o;let r=(o=t.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),n=i==null?void 0:i.__minimalQuickCaptureModal;n&&(n.taskMetadata.tags||(n.taskMetadata.tags=[]),n.taskMetadata.tags.includes("work")||n.taskMetadata.tags.push("work"),n.updateButtonState(n.tagButton,!0)),new Ma.Notice(c("Tagged as work"))}},{id:"tag-personal",label:c("Personal"),icon:"user",description:c("Personal task"),replacement:"",trigger:"#",action:(t,a)=>{var o;let r=(o=t.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),n=i==null?void 0:i.__minimalQuickCaptureModal;n&&(n.taskMetadata.tags||(n.taskMetadata.tags=[]),n.taskMetadata.tags.includes("personal")||n.taskMetadata.tags.push("personal"),n.updateButtonState(n.tagButton,!0)),new Ma.Notice(c("Tagged as personal"))}},{id:"tag-picker",label:c("Choose Tag"),icon:"tag",description:c("Open tag picker"),replacement:"",trigger:"#",action:(t,a)=>{var o;let r=(o=t.cm)==null?void 0:o.dom,i=r==null?void 0:r.closest(".quick-capture-modal.minimal"),n=i==null?void 0:i.__minimalQuickCaptureModal;n&&n.showTagSelector()}}];try{let t=s.app.metadataCache.getTags();Object.keys(t).map(r=>r.replace("#","")).filter(r=>!["important","urgent","work","personal"].includes(r)).slice(0,5).forEach((r,i)=>{e.push({id:`tag-existing-${i}`,label:`#${r}`,icon:"tag",description:c("Existing tag"),replacement:"",trigger:"#",action:(n,o)=>{var p;let l=(p=n.cm)==null?void 0:p.dom,d=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=d==null?void 0:d.__minimalQuickCaptureModal;u&&(u.taskMetadata.tags||(u.taskMetadata.tags=[]),u.taskMetadata.tags.includes(r)||u.taskMetadata.tags.push(r),u.updateButtonState(u.tagButton,!0)),new Ma.Notice(c("Tagged with")+` #${r}`)}})})}catch(t){console.warn("Failed to load existing tags:",t)}return e}function _H(s){return{priority:LH(),date:HH(),target:BH(s),tag:WH(s)}}function vu(s,e){let t=_H(e);switch(s){case"!":return t.priority;case"~":return t.date;case"*":return t.target;case"#":return t.tag;default:return[]}}var Ma,Tg=b(()=>{Ma=A(require("obsidian"));Q()});var AT=b(()=>{});var Cg,xg,IT=b(()=>{Cg=A(require("obsidian"));Tg();AT();xg=class extends Cg.EditorSuggest{constructor(e,t,a){super(e);this.suggestOptions=[];this.isEnabled=!1;this.plugin=t,this.config=a,this.initializeSuggestOptions()}initializeSuggestOptions(){this.suggestOptions=[]}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}onTrigger(e,t,a){if(!this.isEnabled||this.config.contextFilter&&!this.config.contextFilter(t,a))return null;let r=t.getLine(e.line);if(e.ch>0){let i=r.charAt(e.ch-1);if(this.config.triggerChars.includes(i))return{start:{line:e.line,ch:e.ch-1},end:e,query:i}}return null}getSuggestions(e){let t=e.query;return vu(t,this.plugin)}renderSuggestion(e,t){t.createDiv({cls:"universal-suggest-item"}).createDiv({cls:"universal-suggest-container"},r=>{let i=r.createDiv({cls:"universal-suggest-icon"});(0,Cg.setIcon)(i,e.icon),r.createDiv({cls:"universal-suggest-label",text:e.label})})}selectSuggestion(e,t){var l,d;let a=(l=this.context)==null?void 0:l.editor,r=(d=this.context)==null?void 0:d.end;if(!a||!r)return;let i={line:r.line,ch:r.ch-1},n=r;a.replaceRange(e.replacement,i,n);let o={line:r.line,ch:r.ch-1+e.replacement.length};a.setCursor(o),e.action&&e.action(a,o)}addSuggestOption(e){this.suggestOptions.push(e),this.config.triggerChars.includes(e.trigger)||this.config.triggerChars.push(e.trigger)}removeSuggestOption(e){this.suggestOptions=this.suggestOptions.filter(t=>t.id!==e)}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}}});var io,VH=b(()=>{IT();io=class{constructor(e,t,a){this.activeSuggests=new Map;this.originalSuggestsOrder=[];this.isManaging=!1;this.app=e,this.plugin=t,this.config={enableDynamicPriority:!0,defaultTriggerChars:["!","~","*","#"],contextFilters:{},...a}}startManaging(){this.isManaging||(this.isManaging=!0,this.originalSuggestsOrder=[...this.app.workspace.editorSuggest.suggests])}stopManaging(){!this.isManaging||(this.removeAllManagedSuggests(),this.originalSuggestsOrder.length>0&&(this.app.workspace.editorSuggest.suggests=[...this.originalSuggestsOrder]),this.isManaging=!1,this.originalSuggestsOrder=[])}addSuggestWithPriority(e,t){if(!this.isManaging){console.warn("SuggestManager: Not managing, call startManaging() first");return}this.removeManagedSuggest(t),this.activeSuggests.set(t,e),this.app.workspace.editorSuggest.suggests.unshift(e)}removeManagedSuggest(e){let t=this.activeSuggests.get(e);if(!t)return;let a=this.app.workspace.editorSuggest.suggests.indexOf(t);a!==-1&&this.app.workspace.editorSuggest.suggests.splice(a,1),this.activeSuggests.delete(e)}removeAllManagedSuggests(){for(let[e]of this.activeSuggests)this.removeManagedSuggest(e)}createUniversalSuggest(e,t={}){let a={triggerChars:this.config.defaultTriggerChars,contextFilter:this.config.contextFilters[e],priority:1,...t},r=new xg(this.app,this.plugin,a);return this.addSuggestWithPriority(r,`universal-${e}`),r}enableForEditor(e,t="default"){let a=this.createUniversalSuggest(t,{contextFilter:(r,i)=>r===e});return a.enable(),a}disableForContext(e){this.removeManagedSuggest(`universal-${e}`)}enableForMinimalModal(e){return this.createUniversalSuggest("minimal-modal",{contextFilter:(t,a)=>{var i;let r=(i=t.cm)==null?void 0:i.dom;return(r==null?void 0:r.closest(".quick-capture-modal.minimal"))!==null}})}enableForQuickCaptureModal(e){return this.createUniversalSuggest("quick-capture-modal",{contextFilter:(t,a)=>{var i;let r=(i=t.cm)==null?void 0:i.dom;return(r==null?void 0:r.closest(".quick-capture-modal"))!==null}})}addContextFilter(e,t){this.config.contextFilters[e]=t}removeContextFilter(e){delete this.config.contextFilters[e]}getActiveSuggests(){return new Map(this.activeSuggests)}isCurrentlyManaging(){return this.isManaging}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}debugLogSuggestOrder(){this.app.workspace.editorSuggest.suggests,Array.from(this.activeSuggests.keys())}cleanup(){this.stopManaging(),this.activeSuggests.clear(),this.config.contextFilters={}}}});var Sg=b(()=>{IT();VH();Tg()});var UH={};ha(UH,{QuickCaptureModal:()=>ka});function A8(s){return s.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function I8(s){let e=s.split("/");return e.map((a,r)=>r===e.length-1?A8(a):a.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var Aa,ka,cn=b(()=>{Aa=A(require("obsidian"));Xl();Zl();hs();Q();Cr();Om();hs();NH();Sg();ka=class extends Aa.Modal{constructor(e,t,a,r=!1){super(e);this.markdownEditor=null;this.capturedContent="";this.tempTargetFilePath="";this.taskMetadata={};this.useFullFeaturedMode=!1;this.previewContainerEl=null;this.markdownRenderer=null;this.preferMetadataFormat="tasks";this.universalSuggest=null;if(this.plugin=t,this.suggestManager=new io(e,t),this.plugin.settings.quickCapture.targetType==="daily-note"){let i=(0,Aa.moment)().format(this.plugin.settings.quickCapture.dailyNoteSettings.format),n=this.plugin.settings.quickCapture.dailyNoteSettings.folder?`${this.plugin.settings.quickCapture.dailyNoteSettings.folder}/${i}.md`:`${i}.md`;this.tempTargetFilePath=I8(n)}else this.tempTargetFilePath=this.plugin.settings.quickCapture.targetFile;this.preferMetadataFormat=this.plugin.settings.preferMetadataFormat,this.timeParsingService=new MT(this.plugin.settings.timeParsing||OH),a&&(this.taskMetadata=a),this.useFullFeaturedMode=r&&!Aa.Platform.isPhone}onOpen(){let{contentEl:e}=this;this.modalEl.toggleClass("quick-capture-modal",!0),this.suggestManager.startManaging(),this.useFullFeaturedMode?(this.modalEl.toggleClass(["quick-capture-modal","full"],!0),this.createFullFeaturedModal(e)):this.createSimpleModal(e),setTimeout(()=>{var t,a;((a=(t=this.markdownEditor)==null?void 0:t.editor)==null?void 0:a.editor)&&(this.universalSuggest=this.suggestManager.enableForQuickCaptureModal(this.markdownEditor.editor.editor),this.universalSuggest.enable())},100)}createSimpleModal(e){this.titleEl.createDiv({text:c("Capture to")});let t=this.titleEl.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:this.plugin.settings.quickCapture.targetType==="fixed"?"true":"false",spellcheck:"false"},text:this.tempTargetFilePath}),a=e.createDiv({cls:"quick-capture-modal-editor"});this.setupMarkdownEditor(a,t);let r=e.createDiv({cls:"quick-capture-modal-buttons"});r.createEl("button",{text:c("Capture"),cls:"mod-cta"}).addEventListener("click",()=>this.handleSubmit()),r.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.close()),this.plugin.settings.quickCapture.targetType==="fixed"&&new ec(this.app,t,this.plugin.settings.quickCapture,o=>{var l,d;t.textContent=o.path,this.tempTargetFilePath=o.path,(d=(l=this.markdownEditor)==null?void 0:l.editor)==null||d.focus()})}createFullFeaturedModal(e){let t=e.createDiv({cls:"quick-capture-layout"}),a=t.createDiv({cls:"quick-capture-config-panel"}),r=t.createDiv({cls:"quick-capture-editor-panel"}),i=a.createDiv({cls:"quick-capture-target-container"});i.createDiv({text:c("Target File:"),cls:"quick-capture-section-title"});let n=i.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:this.plugin.settings.quickCapture.targetType==="fixed"?"true":"false",spellcheck:"false"},text:this.tempTargetFilePath});this.plugin.settings.quickCapture.targetType==="fixed"&&new ec(this.app,n,this.plugin.settings.quickCapture,m=>{var f,h;n.textContent=m.path,this.tempTargetFilePath=m.path,(h=(f=this.markdownEditor)==null?void 0:f.editor)==null||h.focus()}),a.createDiv({text:c("Task Properties"),cls:"quick-capture-section-title"}),new Yo(this.plugin,a,{status:this.taskMetadata.status},{type:"quick-capture",onTaskStatusSelected:m=>{this.taskMetadata.status=m,this.updatePreview()}}).load(),new Aa.Setting(a).setName(c("Start Date")).addText(m=>{m.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.startDate?this.formatDate(this.taskMetadata.startDate):"").onChange(f=>{f?(this.taskMetadata.startDate=this.parseDate(f),this.markAsManuallySet("startDate")):(this.taskMetadata.startDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.startDate=!1)),this.updatePreview()}),m.inputEl.type="date",this.startDateInput=m.inputEl}),new Aa.Setting(a).setName(c("Due Date")).addText(m=>{m.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.dueDate?this.formatDate(this.taskMetadata.dueDate):"").onChange(f=>{f?(this.taskMetadata.dueDate=this.parseDate(f),this.markAsManuallySet("dueDate")):(this.taskMetadata.dueDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.dueDate=!1)),this.updatePreview()}),m.inputEl.type="date",this.dueDateInput=m.inputEl}),new Aa.Setting(a).setName(c("Scheduled Date")).addText(m=>{m.setPlaceholder("YYYY-MM-DD").setValue(this.taskMetadata.scheduledDate?this.formatDate(this.taskMetadata.scheduledDate):"").onChange(f=>{f?(this.taskMetadata.scheduledDate=this.parseDate(f),this.markAsManuallySet("scheduledDate")):(this.taskMetadata.scheduledDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.scheduledDate=!1)),this.updatePreview()}),m.inputEl.type="date",this.scheduledDateInput=m.inputEl}),new Aa.Setting(a).setName(c("Priority")).addDropdown(m=>{var f;m.addOption("",c("None")).addOption("5",c("Highest")).addOption("4",c("High")).addOption("3",c("Medium")).addOption("2",c("Low")).addOption("1",c("Lowest")).setValue(((f=this.taskMetadata.priority)==null?void 0:f.toString())||"").onChange(h=>{this.taskMetadata.priority=h?parseInt(h):void 0,this.updatePreview()})}),new Aa.Setting(a).setName(c("Project")).addText(m=>{new Or(this.app,m.inputEl,this.plugin),m.setPlaceholder(c("Project name")).setValue(this.taskMetadata.project||"").onChange(f=>{this.taskMetadata.project=f||void 0,this.updatePreview()})}),new Aa.Setting(a).setName(c("Context")).addText(m=>{new Nr(this.app,m.inputEl,this.plugin),m.setPlaceholder(c("Context")).setValue(this.taskMetadata.context||"").onChange(f=>{this.taskMetadata.context=f||void 0,this.updatePreview()})}),new Aa.Setting(a).setName(c("Recurrence")).addText(m=>{m.setPlaceholder(c("e.g., every day, every week")).setValue(this.taskMetadata.recurrence||"").onChange(f=>{this.taskMetadata.recurrence=f||void 0,this.updatePreview()})});let l=r.createDiv({cls:"quick-capture-modal-editor"});r.createDiv({text:c("Task Content"),cls:"quick-capture-section-title"}),this.previewContainerEl=r.createDiv({cls:"preview-container"}),this.markdownRenderer=new Qt(this.app,this.previewContainerEl,"",!1),this.setupMarkdownEditor(l);let d=e.createDiv({cls:"quick-capture-modal-buttons"});d.createEl("button",{text:c("Capture"),cls:"mod-cta"}).addEventListener("click",()=>this.handleSubmit()),d.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.close())}updatePreview(){var e;this.previewContainerEl&&((e=this.markdownRenderer)==null||e.render(this.processContentWithMetadata(this.capturedContent)))}setupMarkdownEditor(e,t){setTimeout(()=>{var a,r,i,n;this.markdownEditor=yi(this.app,e,{placeholder:this.plugin.settings.quickCapture.placeholder,onEnter:(o,l,d)=>l?(this.handleSubmit(),!0):!1,onEscape:o=>{this.close()},onSubmit:o=>{this.handleSubmit()},onChange:o=>{var l;this.capturedContent=((l=this.markdownEditor)==null?void 0:l.value)||"",this.parseDebounceTimer&&clearTimeout(this.parseDebounceTimer),this.parseDebounceTimer=window.setTimeout(()=>{this.performRealTimeParsing()},300),this.updatePreview&&this.updatePreview()}}),(a=this.markdownEditor)==null||a.scope.register(["Alt"],"c",o=>(o.preventDefault(),this.markdownEditor?this.markdownEditor.value.trim()===""?(this.close(),!0):(this.handleSubmit(),!0):!1)),t&&((r=this.markdownEditor)==null||r.scope.register(["Alt"],"x",o=>(o.preventDefault(),this.plugin.settings.quickCapture.targetType==="fixed"&&t.focus(),!0))),(n=(i=this.markdownEditor)==null?void 0:i.editor)==null||n.focus()},50)}async handleSubmit(){var t;let e=this.capturedContent.trim()||((t=this.markdownEditor)==null?void 0:t.value.trim())||"";if(!e){new Aa.Notice(c("Nothing to capture"));return}try{let a=this.processContentWithMetadata(e),r={...this.plugin.settings.quickCapture,targetFile:this.tempTargetFilePath};await wi(this.app,a,r),new Aa.Notice(c("Captured successfully")),this.close()}catch(a){new Aa.Notice(`${c("Failed to save:")} ${a}`)}}processContentWithMetadata(e){var i;let t=e.split(`
`),a=[],r=/^(\s+)/;for(let n of t){if(!n.trim()){a.push(n);continue}let o=this.timeParsingService.parseTimeExpressionsForLine(n),l=o.cleanedLine,d=n.match(r),u=d&&d[1].length>0,p=l.trim().match(/^(-|\d+\.|\*|\+)(\s+\[[^\]]+\])?/);if(u){let m=d[1],f=this.cleanTemporaryMarks(l.trim());a.push(m+f)}else if(p)if(l.trim().match(/^(-|\d+\.|\*|\+)\s+\[[^\]]+\]/))a.push(this.addLineMetadataToTask(l,o));else{let m=(i=l.trim().match(/^(-|\d+\.|\*|\+)/))==null?void 0:i[0],f=this.cleanTemporaryMarks(l.trim().substring((m==null?void 0:m.length)||0).trim()),h=this.taskMetadata.status||" ",k=`${m} [${h}] ${f}`;a.push(this.addLineMetadataToTask(k,o))}else{let m=this.taskMetadata.status||" ",f=this.cleanTemporaryMarks(l),h=`- [${m}] ${f}`;a.push(this.addLineMetadataToTask(h,o))}}return a.join(`
`)}addMetadataToTask(e){let t=this.generateMetadataString();return t?`${e} ${t}`.trim():e}addLineMetadataToTask(e,t){let a=this.generateLineMetadata(t);return a?`${e} ${a}`.trim():e}generateLineMetadata(e){var o,l,d,u;let t=[],a=this.preferMetadataFormat==="dataview",r=e.startDate||this.taskMetadata.startDate,i=e.dueDate||this.taskMetadata.dueDate,n=e.scheduledDate||this.taskMetadata.scheduledDate;if(r){let p=this.formatDate(r);t.push(a?`[start:: ${p}]`:`\u{1F6EB} ${p}`)}if(i){let p=this.formatDate(i);t.push(a?`[due:: ${p}]`:`\u{1F4C5} ${p}`)}if(n){let p=this.formatDate(n);t.push(a?`[scheduled:: ${p}]`:`\u23F3 ${p}`)}if(this.taskMetadata.priority)if(a){let p;switch(this.taskMetadata.priority){case 5:p="highest";break;case 4:p="high";break;case 3:p="medium";break;case 2:p="low";break;case 1:p="lowest";break;default:p=this.taskMetadata.priority}t.push(`[priority:: ${p}]`)}else{let p="";switch(this.taskMetadata.priority){case 5:p="\u{1F53A}";break;case 4:p="\u23EB";break;case 3:p="\u{1F53C}";break;case 2:p="\u{1F53D}";break;case 1:p="\u23EC";break}p&&t.push(p)}if(this.taskMetadata.project)if(a){let p=((o=this.plugin.settings.projectTagPrefix)==null?void 0:o[this.plugin.settings.preferMetadataFormat])||"project";t.push(`[${p}:: ${this.taskMetadata.project}]`)}else{let p=((l=this.plugin.settings.projectTagPrefix)==null?void 0:l[this.plugin.settings.preferMetadataFormat])||"project";t.push(`#${p}/${this.taskMetadata.project}`)}if(this.taskMetadata.context)if(a){let p=((d=this.plugin.settings.contextTagPrefix)==null?void 0:d[this.plugin.settings.preferMetadataFormat])||"context";t.push(`[${p}:: ${this.taskMetadata.context}]`)}else{let p=((u=this.plugin.settings.contextTagPrefix)==null?void 0:u[this.plugin.settings.preferMetadataFormat])||"@";t.push(`${p}${this.taskMetadata.context}`)}return this.taskMetadata.recurrence&&t.push(a?`[repeat:: ${this.taskMetadata.recurrence}]`:`\u{1F501} ${this.taskMetadata.recurrence}`),t.join(" ")}generateMetadataString(){let e=[],t=this.preferMetadataFormat==="dataview";if(this.taskMetadata.startDate){let a=this.formatDate(this.taskMetadata.startDate);e.push(t?`[start:: ${a}]`:`\u{1F6EB} ${a}`)}if(this.taskMetadata.dueDate){let a=this.formatDate(this.taskMetadata.dueDate);e.push(t?`[due:: ${a}]`:`\u{1F4C5} ${a}`)}if(this.taskMetadata.scheduledDate){let a=this.formatDate(this.taskMetadata.scheduledDate);e.push(t?`[scheduled:: ${a}]`:`\u23F3 ${a}`)}if(this.taskMetadata.priority)if(t){let a;switch(this.taskMetadata.priority){case 5:a="highest";break;case 4:a="high";break;case 3:a="medium";break;case 2:a="low";break;case 1:a="lowest";break;default:a=this.taskMetadata.priority}e.push(`[priority:: ${a}]`)}else{let a="";switch(this.taskMetadata.priority){case 5:a="\u{1F53A}";break;case 4:a="\u23EB";break;case 3:a="\u{1F53C}";break;case 2:a="\u{1F53D}";break;case 1:a="\u23EC";break}a&&e.push(a)}if(this.taskMetadata.project)if(t){let a=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";e.push(`[${a}:: ${this.taskMetadata.project}]`)}else{let a=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";e.push(`#${a}/${this.taskMetadata.project}`)}if(this.taskMetadata.context)if(t){let a=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context";e.push(`[${a}:: ${this.taskMetadata.context}]`)}else{let a=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";e.push(`${a}${this.taskMetadata.context}`)}return this.taskMetadata.recurrence&&e.push(t?`[repeat:: ${this.taskMetadata.recurrence}]`:`\u{1F501} ${this.taskMetadata.recurrence}`),e.join(" ")}formatDate(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}parseDate(e){let[t,a,r]=e.split("-").map(Number);return new Date(t,a-1,r)}isManuallySet(e){var t;return((t=this.taskMetadata.manuallySet)==null?void 0:t[e])||!1}markAsManuallySet(e){this.taskMetadata.manuallySet||(this.taskMetadata.manuallySet={}),this.taskMetadata.manuallySet[e]=!0}cleanTemporaryMarks(e){let t=e;return t=t.replace(/\s*!\s*/g," "),t=t.replace(/\s*~\s*/g," "),t=t.replace(/\s*[🔺⏫🔼🔽⏬️]\s*/g," "),t=t.replace(/\s*[📅🛫⏳✅➕❌]\s*/g," "),t=t.replace(/\s*[📁🏠🏢🏪🏫🏬🏭🏯🏰]\s*/g," "),t=t.replace(/\s*[🆔⛔🏁🔁]\s*/g," "),t=t.replace(/\s*@\w*\s*/g," "),t=t.replace(/\s*target:\s*/gi," "),t=t.replace(/\s+/g," ").trim(),t}performRealTimeParsing(){if(!this.capturedContent)return;let e=this.capturedContent.split(`
`),t=this.timeParsingService.parseTimeExpressionsPerLine(e),a,r,i;for(let n of t)n.startDate&&!a&&(a=n.startDate),n.dueDate&&!r&&(r=n.dueDate),n.scheduledDate&&!i&&(i=n.scheduledDate);a&&!this.isManuallySet("startDate")&&(this.taskMetadata.startDate=a,this.startDateInput&&(this.startDateInput.value=this.formatDate(a))),r&&!this.isManuallySet("dueDate")&&(this.taskMetadata.dueDate=r,this.dueDateInput&&(this.dueDateInput.value=this.formatDate(r))),i&&!this.isManuallySet("scheduledDate")&&(this.taskMetadata.scheduledDate=i,this.scheduledDateInput&&(this.scheduledDateInput.value=this.formatDate(i)))}onClose(){let{contentEl:e}=this;this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.suggestManager.stopManaging(),this.parseDebounceTimer&&(clearTimeout(this.parseDebounceTimer),this.parseDebounceTimer=void 0),this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),e.empty(),this.markdownRenderer&&(this.markdownRenderer.unload(),this.markdownRenderer=null)}}});var gr,bC,y3=b(()=>{gr=A(require("obsidian"));Q();bC=class extends gr.Modal{constructor(e,t,a,r){super(e);this.stage=JSON.parse(JSON.stringify(t)),this.allStages=a,this.onSave=r,this.renderStageTypeSettings=()=>{}}onOpen(){let{contentEl:e,titleEl:t}=this;this.modalEl.toggleClass("modal-stage-definition",!0),t.setText(c("Edit Stage")),new gr.Setting(e).setName(c("Stage name")).setDesc(c("A descriptive name for this workflow stage")).addText(l=>{l.setValue(this.stage.name||"").setPlaceholder(c("Stage name")).onChange(d=>{this.stage.name=d})}),new gr.Setting(e).setName(c("Stage ID")).setDesc(c("A unique identifier for the stage (used in tags)")).addText(l=>{l.setValue(this.stage.id||"").setPlaceholder("stage_id").onChange(d=>{this.stage.id=d})}),new gr.Setting(e).setName(c("Stage type")).setDesc(c("The type of this workflow stage")).addDropdown(l=>{l.addOption("linear",c("Linear (sequential)")).addOption("cycle",c("Cycle (repeatable)")).addOption("terminal",c("Terminal (end stage)")).setValue(this.stage.type||"linear").onChange(d=>{this.stage.type=d,this.renderStageTypeSettings()})});let a=e.createDiv({cls:"stage-type-settings"}),r=()=>{if(a.empty(),this.stage.type==="linear"||this.stage.type==="cycle"){if(this.allStages.length>0&&new gr.Setting(a).setName(c("Next stage")).setDesc(c("The stage to proceed to after this one")).addDropdown(p=>{this.allStages.forEach(m=>{m.id!==this.stage.id&&p.addOption(m.id,m.name)}),typeof this.stage.next=="string"&&this.stage.next&&p.setValue(this.stage.next),p.onChange(m=>{this.stage.next=m})}),this.stage.type==="cycle"){let p=a.createDiv({cls:"substages-section"});new gr.Setting(p).setName(c("Sub-stages")).setDesc(c("Define cycle sub-stages (optional)"));let m=p.createDiv({cls:"substages-container"}),f=()=>{if(m.empty(),!this.stage.subStages||this.stage.subStages.length===0)m.createEl("p",{text:c("No sub-stages defined yet."),cls:"no-substages-message"});else{let k=m.createEl("ul",{cls:"substages-list"});this.stage.subStages.forEach((g,y)=>{let w=k.createEl("li",{cls:"substage-item"}),v=w.createDiv({cls:"substage-name-container"}),T=v.createEl("input",{type:"text",value:g.name||"",placeholder:c("Sub-stage name")});T.addEventListener("change",()=>{g.name=T.value});let x=v.createEl("input",{type:"text",value:g.id||"",placeholder:c("Sub-stage ID")});if(x.addEventListener("change",()=>{g.id=x.value}),this.stage.subStages.length>1){let C=v.createDiv({cls:"substage-next-container"});C.createEl("span",{text:c("Next: ")});let S=new gr.DropdownComponent(C);this.stage.subStages.forEach(E=>{E.id!==g.id&&S.addOption(E.id,E.name)}),g.next&&S.setValue(g.next),S.onChange(E=>{g.next=E})}w.createEl("div",{},C=>{new gr.ExtraButtonComponent(C).setIcon("trash").setTooltip(c("Remove")).onClick(()=>{this.stage.subStages.splice(y,1),f()}).extraSettingsEl.toggleClass("substage-remove-button",!0)})})}m.createEl("button",{cls:"add-substage-button",text:c("Add Sub-stage")}).addEventListener("click",()=>{this.stage.subStages||(this.stage.subStages=[]);let k={id:this.generateUniqueId(),name:c("New Sub-stage")};if(this.stage.subStages.length>0){let g=this.stage.subStages[this.stage.subStages.length-1];g&&("next"in g,g.next=k.id),this.stage.subStages[0]&&(k.next=this.stage.subStages[0].id)}this.stage.subStages.push(k),f()})};f()}let l=a.createDiv({cls:"can-proceed-to-section"});new gr.Setting(l).setName(c("Can proceed to")).setDesc(c("Additional stages that can follow this one (for right-click menu)"));let d=l.createDiv({cls:"can-proceed-to-container"}),u=()=>{if(d.empty(),!this.stage.canProceedTo||this.stage.canProceedTo.length===0)d.createEl("p",{text:c("No additional destination stages defined."),cls:"no-can-proceed-message"});else{let p=d.createEl("ul",{cls:"can-proceed-list"});this.stage.canProceedTo.forEach((m,f)=>{let h=this.allStages.find(k=>k.id===m);if(h){let k=p.createEl("li",{cls:"can-proceed-item"});new gr.Setting(k).setName(h.name).addExtraButton(y=>{y.setIcon("trash").setTooltip(c("Remove")).onClick(()=>{this.stage.canProceedTo.splice(f,1),u()})})}})}if(this.allStages.length>0){let p=d.createDiv({cls:"add-can-proceed-container"}),m;p.createEl("div",{cls:"add-can-proceed-select"},h=>{m=new gr.DropdownComponent(h),this.allStages.forEach(k=>{k.id!==this.stage.id&&(!this.stage.canProceedTo||!this.stage.canProceedTo.includes(k.id))&&m.addOption(k.id,k.name)})}),p.createEl("button",{cls:"add-can-proceed-button",text:c("Add")}).addEventListener("click",()=>{m.selectEl.value&&(this.stage.canProceedTo||(this.stage.canProceedTo=[]),this.stage.canProceedTo.push(m.selectEl.value),u())})}};u()}};this.renderStageTypeSettings=r,r();let i=e.createDiv({cls:"stage-buttons"});i.createEl("button",{text:c("Cancel"),cls:"stage-cancel-button"}).addEventListener("click",()=>{this.close()}),i.createEl("button",{text:c("Save"),cls:"stage-save-button mod-cta"}).addEventListener("click",()=>{if(!this.stage.name||!this.stage.id){let l=e.createDiv({cls:"stage-error-message",text:c("Name and ID are required.")});setTimeout(()=>{l.remove()},3e3);return}this.onSave(this.stage),this.close()})}onClose(){let{contentEl:e}=this;e.empty()}generateUniqueId(){return Date.now().toString(36)+Math.random().toString(36).substring(2,9)}}});var fo,nl,TC=b(()=>{fo=A(require("obsidian"));Q();y3();nl=class extends fo.Modal{constructor(e,t,a,r){super(e);this.plugin=t,this.workflow=JSON.parse(JSON.stringify(a)),this.onSave=r}onOpen(){let{contentEl:e,titleEl:t}=this;this.modalEl.toggleClass("modal-workflow-definition",!0),t.setText(this.workflow.id?c("Edit Workflow")+": "+this.workflow.name:c("Create New Workflow"));let a=e.createDiv({cls:"workflow-form"});new fo.Setting(a).setName(c("Workflow name")).setDesc(c("A descriptive name for the workflow")).addText(p=>{p.setValue(this.workflow.name||"").onChange(m=>{this.workflow.name=m})}),new fo.Setting(a).setName(c("Workflow ID")).setDesc(c("A unique identifier for the workflow (used in tags)")).addText(p=>{p.setValue(this.workflow.id||"").setPlaceholder("unique_id").onChange(m=>{this.workflow.id=m})}),new fo.Setting(a).setName(c("Description")).setDesc(c("Optional description for the workflow")).addTextArea(p=>{p.setValue(this.workflow.description||"").setPlaceholder(c("Describe the purpose and use of this workflow...")).onChange(m=>{this.workflow.description=m}),p.inputEl.rows=3,p.inputEl.cols=40});let r=e.createDiv({cls:"workflow-stages-section"}),i=r.createEl("h2",{text:c("Workflow Stages")}),n=r.createDiv({cls:"workflow-stages-container"}),o=()=>{if(n.empty(),!this.workflow.stages||this.workflow.stages.length===0)n.createEl("p",{text:c("No stages defined yet. Add a stage to get started."),cls:"no-stages-message"});else{let m=n.createEl("ul",{cls:"workflow-stages-list"});this.workflow.stages.forEach((f,h)=>{let k=m.createEl("li",{cls:"workflow-stage-item"}),g=new fo.Setting(k).setName(f.name).setDesc(f.type);if(g.settingEl.toggleClass(["workflow-stage-type-cycle","workflow-stage-type-linear","workflow-stage-type-parallel","workflow-stage-type-conditional","workflow-stage-type-custom"].includes(f.type)?f.type:"workflow-stage-type-unknown",!0),g.addExtraButton(y=>{y.setIcon("pencil").setTooltip(c("Edit")).onClick(()=>{new bC(this.app,f,this.workflow.stages,w=>{this.workflow.stages[h]=w,o()}).open()})}),h>0&&g.addExtraButton(y=>{y.setIcon("arrow-up").setTooltip(c("Move up")).onClick(()=>{[this.workflow.stages[h-1],this.workflow.stages[h]]=[this.workflow.stages[h],this.workflow.stages[h-1]],o()})}),h<this.workflow.stages.length-1&&g.addExtraButton(y=>{y.setIcon("arrow-down").setTooltip(c("Move down")).onClick(()=>{[this.workflow.stages[h],this.workflow.stages[h+1]]=[this.workflow.stages[h+1],this.workflow.stages[h]],o()})}),g.addExtraButton(y=>{y.setIcon("trash").setTooltip(c("Delete")).onClick(()=>{this.workflow.stages.splice(h,1),o()})}),f.type==="cycle"&&f.subStages&&f.subStages.length>0){let y=k.createEl("div",{cls:"workflow-substages-list"});f.subStages.forEach((w,v)=>{let x=y.createEl("div",{cls:"substage-item"}).createDiv({cls:"substage-settings-container"}),C=new fo.Setting(x);C.setName(c("Sub-stage")+" "+(v+1)),C.addText(S=>{S.setValue(w.name||"").setPlaceholder(c("Sub-stage name")).onChange(E=>{w.name=E})}),C.addText(S=>{S.setValue(w.id||"").setPlaceholder(c("Sub-stage ID")).onChange(E=>{w.id=E})}),this.workflow.stages.length>1&&C.addDropdown(S=>{var P;S.selectEl.addClass("substage-next-select");let E=createSpan({text:c("Next: "),cls:"setting-dropdown-label"});(P=S.selectEl.parentElement)==null||P.insertBefore(E,S.selectEl),this.workflow.stages.forEach(I=>{I.id!==w.id&&S.addOption(I.id,I.name)}),w.next&&S.setValue(w.next),S.onChange(I=>{w.next=I})}),C.addExtraButton(S=>{S.setIcon("trash").onClick(()=>{this.workflow.stages.splice(v,1),o()})})})}})}n.createEl("button",{cls:"workflow-add-stage-button",text:c("Add Sub-stage")}).addEventListener("click",()=>{this.workflow.stages||(this.workflow.stages=[]);let m={id:this.generateUniqueId(),name:c("New Sub-stage")};if(this.workflow.stages.length>0){let f=this.workflow.stages[this.workflow.stages.length-1];f&&("next"in f,f.next=m.id),this.workflow.stages[0]&&(m.next=this.workflow.stages[0].id)}this.workflow.stages.push(m),o()})};o();let l=e.createDiv({cls:"workflow-buttons"});l.createEl("button",{text:c("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>{this.close()}),l.createEl("button",{text:c("Save"),cls:"workflow-save-button mod-cta"}).addEventListener("click",()=>{this.workflow.metadata||(this.workflow.metadata={}),this.workflow.metadata.lastModified=new Date().toISOString().split("T")[0],this.onSave(this.workflow),this.close()})}onClose(){let{contentEl:e}=this;e.empty()}generateUniqueId(){return Date.now().toString(36)+Math.random().toString(36).substring(2,9)}}});var es,AC,D3=b(()=>{es=A(require("obsidian"));Q();AC=class extends es.Modal{constructor(e,t,a){super(e);this.templateType="custom";this.templates={simple:{name:c("Simple Linear Workflow"),description:c("A basic linear workflow with sequential stages"),stages:[{id:"todo",name:c("To Do"),type:"linear"},{id:"in_progress",name:c("In Progress"),type:"linear"},{id:"done",name:c("Done"),type:"terminal"}]},project:{name:c("Project Management"),description:c("Standard project management workflow"),stages:[{id:"planning",name:c("Planning"),type:"linear"},{id:"development",name:c("Development"),type:"cycle",subStages:[{id:"coding",name:c("Coding")},{id:"testing",name:c("Testing")}]},{id:"review",name:c("Review"),type:"linear"},{id:"completed",name:c("Completed"),type:"terminal"}]},research:{name:c("Research Process"),description:c("Academic or professional research workflow"),stages:[{id:"literature_review",name:c("Literature Review"),type:"linear"},{id:"data_collection",name:c("Data Collection"),type:"cycle"},{id:"analysis",name:c("Analysis"),type:"cycle"},{id:"writing",name:c("Writing"),type:"linear"},{id:"published",name:c("Published"),type:"terminal"}]},custom:{name:c("Custom Workflow"),description:c("Create a custom workflow from scratch"),stages:[]}};this.plugin=t,this.onSave=a,this.workflow={id:"",name:"",description:"",stages:[],metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}}onOpen(){let{contentEl:e,titleEl:t}=this;this.modalEl.toggleClass("quick-workflow-modal",!0),t.setText(c("Quick Workflow Creation")),this.createTemplateSelection(e),this.createWorkflowForm(e),this.createButtons(e)}createTemplateSelection(e){let t=e.createDiv({cls:"workflow-template-section"});new es.Setting(t).setName(c("Workflow Template")).setDesc(c("Choose a template to start with or create a custom workflow")).addDropdown(r=>{Object.entries(this.templates).forEach(([i,n])=>{r.addOption(i,n.name)}),r.setValue(this.templateType).onChange(i=>{this.templateType=i,this.applyTemplate(),this.refreshForm()})});let a=t.createDiv({cls:"template-description"});this.updateTemplateDescription(a)}createWorkflowForm(e){let t=e.createDiv({cls:"workflow-form-section"});new es.Setting(t).setName(c("Workflow Name")).setDesc(c("A descriptive name for your workflow")).addText(a=>{a.setValue(this.workflow.name||"").setPlaceholder(c("Enter workflow name")).onChange(r=>{this.workflow.name=r,(!this.workflow.id||this.workflow.id===this.generateIdFromName(this.workflow.name||""))&&(this.workflow.id=this.generateIdFromName(r))})}),new es.Setting(t).setName(c("Workflow ID")).setDesc(c("Unique identifier (auto-generated from name)")).addText(a=>{a.setValue(this.workflow.id||"").setPlaceholder("workflow_id").onChange(r=>{this.workflow.id=r})}),new es.Setting(t).setName(c("Description")).setDesc(c("Optional description of the workflow purpose")).addTextArea(a=>{a.setValue(this.workflow.description||"").setPlaceholder(c("Describe your workflow...")).onChange(r=>{this.workflow.description=r}),a.inputEl.rows=2}),this.createStagesPreview(t)}createStagesPreview(e){let t=e.createDiv({cls:"workflow-stages-preview"});new es.Setting(t).setName(c("Workflow Stages")).setDesc(c("Preview of workflow stages (edit after creation for advanced options)")).addButton(r=>{r.setButtonText(c("Add Stage")).setIcon("plus").onClick(()=>{this.addQuickStage()})}),this.renderStagesPreview(t)}renderStagesPreview(e){let t=e.querySelector(".stages-preview-list");if(t&&t.remove(),!this.workflow.stages||this.workflow.stages.length===0){e.createDiv({cls:"no-stages-message",text:c("No stages defined. Choose a template or add stages manually.")});return}let a=e.createDiv({cls:"stages-preview-list"});this.workflow.stages.forEach((r,i)=>{let n=a.createDiv({cls:"stage-preview-item"}),o=n.createDiv({cls:"stage-info"});o.createSpan({cls:"stage-name",text:r.name}),o.createSpan({cls:"stage-type",text:`(${r.type})`});let l=n.createDiv({cls:"stage-actions"});new es.ButtonComponent(l).setIcon("trash").setTooltip(c("Remove stage")).onClick(()=>{var u;(u=this.workflow.stages)==null||u.splice(i,1),this.renderStagesPreview(e)})})}createButtons(e){let t=e.createDiv({cls:"workflow-modal-buttons"});t.createEl("button",{text:c("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>this.close()),t.createEl("button",{text:c("Create Workflow"),cls:"workflow-save-button mod-cta"}).addEventListener("click",()=>this.handleSave())}applyTemplate(){let e=this.templates[this.templateType];e&&(this.workflow.name=e.name,this.workflow.id=this.generateIdFromName(e.name),this.workflow.description=e.description,this.workflow.stages=JSON.parse(JSON.stringify(e.stages)))}updateTemplateDescription(e){e.empty();let t=this.templates[this.templateType];t&&e.createEl("p",{cls:"template-desc-text",text:t.description})}refreshForm(){this.contentEl.empty(),this.createTemplateSelection(this.contentEl),this.createWorkflowForm(this.contentEl),this.createButtons(this.contentEl)}addQuickStage(){this.workflow.stages||(this.workflow.stages=[]);let e=`Stage ${this.workflow.stages.length+1}`,t={id:this.generateIdFromName(e),name:e,type:"linear"};this.workflow.stages.push(t),this.renderStagesPreview(this.contentEl.querySelector(".workflow-stages-preview"))}generateIdFromName(e){return e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30)}handleSave(){if(!this.workflow.name||!this.workflow.id){new es.Notice(c("Please provide a workflow name and ID"));return}if(!this.workflow.stages||this.workflow.stages.length===0){new es.Notice(c("Please add at least one stage to the workflow"));return}let e={id:this.workflow.id,name:this.workflow.name,description:this.workflow.description||"",stages:this.workflow.stages,metadata:this.workflow.metadata||{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};this.onSave(e),this.close()}onClose(){this.contentEl.empty()}}});function P3(s,e){let t=s.getValue().split(`
`),a=e.line,r=P7(t,a);return r===-1?null:M3(t,r)}function P7(s,e){for(let t=e;t>=0;t--){let r=s[t].match(/^(\s*)[-*+] \[(.)\]/);if(r){let i=r[1].length;if(i===0)return t;let n=!1;for(let o=t-1;o>=0;o--){let l=s[o],d=l.match(/^(\s*)[-*+] \[(.)\]/);if(d&&d[1].length<i){n=!0;break}if(l.trim()&&!d)break}if(!n)return t}}return-1}function M3(s,e){var d;let t=s[e],a=t.match(/^(\s*)[-*+] \[(.)\](.+)/);if(!a)return{content:t.trim(),level:0,line:e,isTask:!1,status:"",children:[]};let r=a[1].length,i=a[2],o={content:a[3].trim(),level:r,line:e,isTask:!0,status:i,children:[]},l=e+1;for(;l<s.length;){let u=s[l];if(!u.trim()){l++;continue}let p=u.match(/^(\s*)[-*+] \[(.)\]/);if(p){let m=p[1].length;if(m>r){let f=M3(s,l);o.children.push(f),l=M7(s,l,m)||s.length}else break}else{if((((d=u.match(/^(\s*)/))==null?void 0:d[1].length)||0)<=r)break;l++}}return o}function M7(s,e,t){for(let a=e+1;a<s.length;a++){let r=s[a];if(!r.trim())continue;let i=r.match(/^(\s*)/);if((i?i[1].length:0)<=t)return a}return null}function A3(s,e,t){let a=[];if(s.isTask){a.push({id:Kc(s.content),name:s.content,type:s.children.length>0?"linear":"terminal"}),s.children.forEach((r,i)=>{let n=A7(r,i===s.children.length-1);a.push(n)});for(let r=0;r<a.length-1;r++)a[r].next=a[r+1].id}return{id:t,name:e,description:c("Workflow generated from task structure"),stages:a,metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}}function A7(s,e){let t={id:Kc(s.content),name:s.content,type:e?"terminal":"linear"};return s.children.length>0&&(t.type="cycle",t.subStages=s.children.map((a,r)=>({id:Kc(a.content),name:a.content,next:r<s.children.length-1?Kc(s.children[r+1].content):Kc(s.children[0].content)}))),t}function Kc(s){return s.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30)}function IC(s,e,t,a){let r=s.getLine(e.line),i=r.match(/^(\s*)/),o=`${i?i[1]:""}- [ ] ${t.name} #workflow/${t.id}`;r.trim()===""?s.setLine(e.line,o):s.replaceRange(`
${o}`,{line:e.line,ch:r.length},{line:e.line,ch:r.length})}function RC(s,e,t){let r=s.getLine(e.line).match(/^(\s*)[-*+] \[(.)\](.+)/);if(!r)return!1;let[,i,n,o]=r;if(o.includes("#workflow/"))return!1;let l=`${i}- [${n}]${o} #workflow/${t}`;return s.setLine(e.line,l),!0}function I3(s,e){let t=1+s.children.length,a=e.find(r=>Math.abs(r.stages.length-t)<=1);return a?{...a,id:Kc(s.content+"_workflow"),name:`${s.content} Workflow`,description:c("Workflow based on existing pattern"),metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}:null}var R3=b(()=>{Q()});var ek={};ha(ek,{convertTaskToWorkflowCommand:()=>Qg,convertToWorkflowRootCommand:()=>Jg,createQuickWorkflowCommand:()=>Kg,duplicateWorkflowCommand:()=>Zg,showWorkflowQuickActionsCommand:()=>FC,startWorkflowHereCommand:()=>Xg});function Kg(s,e,t,a){return s?a.settings.workflow.enableWorkflow:(new AC(a.app,a,r=>{a.settings.workflow.definitions.push(r),a.saveSettings(),new da.Notice(c("Workflow created successfully"))}).open(),!0)}function Qg(s,e,t,a){if(s){if(!a.settings.workflow.enableWorkflow)return!1;let o=e.getCursor();return e.getLine(o.line).match(/^\s*[-*+] \[(.)\]/)!==null}let r=e.getCursor(),i=P3(e,r);if(!i||!i.isTask)return new da.Notice(c("No task structure found at cursor position")),!1;let n=I3(i,a.settings.workflow.definitions);if(n){let o=new da.Menu;o.addItem(l=>{l.setTitle(c("Use similar existing workflow")).setIcon("copy").onClick(()=>{j3(i,n.name,n.id,a)})}),o.addItem(l=>{l.setTitle(c("Create new workflow")).setIcon("plus").onClick(()=>{F3(i,a)})}),o.showAtMouseEvent(window.event)}else F3(i,a);return!0}function Xg(s,e,t,a){if(s)return a.settings.workflow.enableWorkflow&&a.settings.workflow.definitions.length>0;let r=a.settings.workflow.definitions;if(r.length===0)return new da.Notice(c("No workflows defined. Create a workflow first.")),!1;if(r.length===1){let i=e.getCursor();IC(e,i,r[0],a),new da.Notice(c("Workflow task created"))}else{let i=new da.Menu;r.forEach(n=>{i.addItem(o=>{o.setTitle(n.name).setIcon("workflow").onClick(()=>{let l=e.getCursor();IC(e,l,n,a),new da.Notice(c("Workflow task created"))})})}),i.showAtMouseEvent(window.event)}return!0}function Jg(s,e,t,a){if(s){if(!a.settings.workflow.enableWorkflow)return!1;let n=e.getCursor(),o=e.getLine(n.line);return o.match(/^\s*[-*+] \[(.)\]/)!==null&&!o.includes("#workflow/")}let r=a.settings.workflow.definitions;if(r.length===0)return new da.Notice(c("No workflows defined. Create a workflow first.")),!1;let i=e.getCursor();if(r.length===1)RC(e,i,r[0].id)?new da.Notice(c("Task converted to workflow root")):new da.Notice(c("Failed to convert task"));else{let n=new da.Menu;r.forEach(o=>{n.addItem(l=>{l.setTitle(o.name).setIcon("workflow").onClick(()=>{RC(e,i,o.id)?new da.Notice(c("Task converted to workflow root")):new da.Notice(c("Failed to convert task"))})})}),n.showAtMouseEvent(window.event)}return!0}function Zg(s,e,t,a){if(s)return a.settings.workflow.enableWorkflow&&a.settings.workflow.definitions.length>0;let r=a.settings.workflow.definitions;if(r.length===0)return new da.Notice(c("No workflows to duplicate")),!1;let i=new da.Menu;return r.forEach(n=>{i.addItem(o=>{o.setTitle(c("Duplicate")+": "+n.name).setIcon("copy").onClick(()=>{let l={...n,id:n.id+"_copy",name:n.name+" (Copy)",metadata:{...n.metadata,created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};new nl(a.app,a,l,d=>{a.settings.workflow.definitions.push(d),a.saveSettings(),new da.Notice(c("Workflow duplicated and saved"))}).open()})})}),i.showAtMouseEvent(window.event),!0}function F3(s,e){let t=s.content+" Workflow",a=t.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30);j3(s,t,a,e)}function j3(s,e,t,a){let r=A3(s,e,t);new nl(a.app,a,r,i=>{a.settings.workflow.definitions.push(i),a.saveSettings(),new da.Notice(c("Workflow created from task structure"))}).open()}function FC(s,e,t,a){if(s)return a.settings.workflow.enableWorkflow;let r=new da.Menu;r.addItem(o=>{o.setTitle(c("Create Quick Workflow")).setIcon("plus-circle").onClick(()=>{Kg(!1,e,t,a)})});let i=e.getCursor(),n=e.getLine(i.line);return n.match(/^\s*[-*+] \[(.)\]/)&&(r.addItem(o=>{o.setTitle(c("Convert Task to Workflow")).setIcon("convert").onClick(()=>{Qg(!1,e,t,a)})}),n.includes("#workflow/")||r.addItem(o=>{o.setTitle(c("Convert to Workflow Root")).setIcon("workflow").onClick(()=>{Jg(!1,e,t,a)})})),r.addItem(o=>{o.setTitle(c("Start Workflow Here")).setIcon("play").onClick(()=>{Xg(!1,e,t,a)})}),a.settings.workflow.definitions.length>0&&r.addItem(o=>{o.setTitle(c("Duplicate Workflow")).setIcon("copy").onClick(()=>{Zg(!1,e,t,a)})}),r.showAtMouseEvent(window.event),!0}var da,Bu=b(()=>{da=A(require("obsidian"));D3();TC();R3();Q()});var zB=ye(YB=>{var qu=class{constructor(e){this._elements=Array.isArray(e)?e:[],this._offset=0}enqueue(e){return this._elements.push(e),this}push(e){return this.enqueue(e)}dequeue(){if(this.size()===0)return null;let e=this.front();return this._offset+=1,this._offset*2<this._elements.length||(this._elements=this._elements.slice(this._offset),this._offset=0),e}pop(){return this.dequeue()}front(){return this.size()>0?this._elements[this._offset]:null}back(){return this.size()>0?this._elements[this._elements.length-1]:null}size(){return this._elements.length-this._offset}isEmpty(){return this.size()===0}toArray(){return this._elements.slice(this._offset)}clear(){this._elements=[],this._offset=0}clone(){return new qu(this._elements.slice(this._offset))}static fromArray(e){return new qu(e)}};YB.Queue=qu});var GB=ye(qB=>{var{Queue:L9}=zB();qB.Queue=L9});var XB=ye((QB,lx)=>{(function(s){if(typeof QB=="object"&&typeof lx!="undefined")lx.exports=s();else if(typeof define=="function"&&define.amd)define([],s);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=s()}})(function(){var s,e,t;return function a(r,i,n){function o(u,p){if(!i[u]){if(!r[u]){var m=typeof require=="function"&&require;if(!p&&m)return m(u,!0);if(l)return l(u,!0);var f=new Error("Cannot find module '"+u+"'");throw f.code="MODULE_NOT_FOUND",f}var h=i[u]={exports:{}};r[u][0].call(h.exports,function(k){var g=r[u][1][k];return o(g||k)},h,h.exports,a,r,i,n)}return i[u].exports}for(var l=typeof require=="function"&&require,d=0;d<n.length;d++)o(n[d]);return o}({1:[function(a,r,i){(function(n){"use strict";var o=n.MutationObserver||n.WebKitMutationObserver,l;if(o){var d=0,u=new o(k),p=n.document.createTextNode("");u.observe(p,{characterData:!0}),l=function(){p.data=d=++d%2}}else if(!n.setImmediate&&typeof n.MessageChannel!="undefined"){var m=new n.MessageChannel;m.port1.onmessage=k,l=function(){m.port2.postMessage(0)}}else"document"in n&&"onreadystatechange"in n.document.createElement("script")?l=function(){var y=n.document.createElement("script");y.onreadystatechange=function(){k(),y.onreadystatechange=null,y.parentNode.removeChild(y),y=null},n.document.documentElement.appendChild(y)}:l=function(){setTimeout(k,0)};var f,h=[];function k(){f=!0;for(var y,w,v=h.length;v;){for(w=h,h=[],y=-1;++y<v;)w[y]();v=h.length}f=!1}r.exports=g;function g(y){h.push(y)===1&&!f&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(a,r,i){"use strict";var n=a(1);function o(){}var l={},d=["REJECTED"],u=["FULFILLED"],p=["PENDING"];r.exports=m;function m(C){if(typeof C!="function")throw new TypeError("resolver must be a function");this.state=p,this.queue=[],this.outcome=void 0,C!==o&&g(this,C)}m.prototype.catch=function(C){return this.then(null,C)},m.prototype.then=function(C,S){if(typeof C!="function"&&this.state===u||typeof S!="function"&&this.state===d)return this;var E=new this.constructor(o);if(this.state!==p){var P=this.state===u?C:S;h(E,P,this.outcome)}else this.queue.push(new f(E,C,S));return E};function f(C,S,E){this.promise=C,typeof S=="function"&&(this.onFulfilled=S,this.callFulfilled=this.otherCallFulfilled),typeof E=="function"&&(this.onRejected=E,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(C){l.resolve(this.promise,C)},f.prototype.otherCallFulfilled=function(C){h(this.promise,this.onFulfilled,C)},f.prototype.callRejected=function(C){l.reject(this.promise,C)},f.prototype.otherCallRejected=function(C){h(this.promise,this.onRejected,C)};function h(C,S,E){n(function(){var P;try{P=S(E)}catch(I){return l.reject(C,I)}P===C?l.reject(C,new TypeError("Cannot resolve promise with itself")):l.resolve(C,P)})}l.resolve=function(C,S){var E=y(k,S);if(E.status==="error")return l.reject(C,E.value);var P=E.value;if(P)g(C,P);else{C.state=u,C.outcome=S;for(var I=-1,L=C.queue.length;++I<L;)C.queue[I].callFulfilled(S)}return C},l.reject=function(C,S){C.state=d,C.outcome=S;for(var E=-1,P=C.queue.length;++E<P;)C.queue[E].callRejected(S);return C};function k(C){var S=C&&C.then;if(C&&(typeof C=="object"||typeof C=="function")&&typeof S=="function")return function(){S.apply(C,arguments)}}function g(C,S){var E=!1;function P(O){E||(E=!0,l.reject(C,O))}function I(O){E||(E=!0,l.resolve(C,O))}function L(){S(I,P)}var W=y(L);W.status==="error"&&P(W.value)}function y(C,S){var E={};try{E.value=C(S),E.status="success"}catch(P){E.status="error",E.value=P}return E}m.resolve=w;function w(C){return C instanceof this?C:l.resolve(new this(o),C)}m.reject=v;function v(C){var S=new this(o);return l.reject(S,C)}m.all=T;function T(C){var S=this;if(Object.prototype.toString.call(C)!=="[object Array]")return this.reject(new TypeError("must be an array"));var E=C.length,P=!1;if(!E)return this.resolve([]);for(var I=new Array(E),L=0,W=-1,O=new this(o);++W<E;)H(C[W],W);return O;function H($,B){S.resolve($).then(q,function(U){P||(P=!0,l.reject(O,U))});function q(U){I[B]=U,++L===E&&!P&&(P=!0,l.resolve(O,I))}}}m.race=x;function x(C){var S=this;if(Object.prototype.toString.call(C)!=="[object Array]")return this.reject(new TypeError("must be an array"));var E=C.length,P=!1;if(!E)return this.resolve([]);for(var I=-1,L=new this(o);++I<E;)W(C[I]);return L;function W(O){S.resolve(O).then(function(H){P||(P=!0,l.resolve(L,H))},function(H){P||(P=!0,l.reject(L,H))})}}},{"1":1}],3:[function(a,r,i){(function(n){"use strict";typeof n.Promise!="function"&&(n.Promise=a(2))}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{"2":2}],4:[function(a,r,i){"use strict";var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(D){return typeof D}:function(D){return D&&typeof Symbol=="function"&&D.constructor===Symbol&&D!==Symbol.prototype?"symbol":typeof D};function o(D,R){if(!(D instanceof R))throw new TypeError("Cannot call a class as a function")}function l(){try{if(typeof indexedDB!="undefined")return indexedDB;if(typeof webkitIndexedDB!="undefined")return webkitIndexedDB;if(typeof mozIndexedDB!="undefined")return mozIndexedDB;if(typeof OIndexedDB!="undefined")return OIndexedDB;if(typeof msIndexedDB!="undefined")return msIndexedDB}catch(D){return}}var d=l();function u(){try{if(!d||!d.open)return!1;var D=typeof openDatabase!="undefined"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),R=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!D||R)&&typeof indexedDB!="undefined"&&typeof IDBKeyRange!="undefined"}catch(M){return!1}}function p(D,R){D=D||[],R=R||{};try{return new Blob(D,R)}catch(F){if(F.name!=="TypeError")throw F;for(var M=typeof BlobBuilder!="undefined"?BlobBuilder:typeof MSBlobBuilder!="undefined"?MSBlobBuilder:typeof MozBlobBuilder!="undefined"?MozBlobBuilder:WebKitBlobBuilder,j=new M,N=0;N<D.length;N+=1)j.append(D[N]);return j.getBlob(R.type)}}typeof Promise=="undefined"&&a(3);var m=Promise;function f(D,R){R&&D.then(function(M){R(null,M)},function(M){R(M)})}function h(D,R,M){typeof R=="function"&&D.then(R),typeof M=="function"&&D.catch(M)}function k(D){return typeof D!="string"&&(console.warn(D+" used as a key, but it is not a string."),D=String(D)),D}function g(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var y="local-forage-detect-blob-support",w=void 0,v={},T=Object.prototype.toString,x="readonly",C="readwrite";function S(D){for(var R=D.length,M=new ArrayBuffer(R),j=new Uint8Array(M),N=0;N<R;N++)j[N]=D.charCodeAt(N);return M}function E(D){return new m(function(R){var M=D.transaction(y,C),j=p([""]);M.objectStore(y).put(j,"key"),M.onabort=function(N){N.preventDefault(),N.stopPropagation(),R(!1)},M.oncomplete=function(){var N=navigator.userAgent.match(/Chrome\/(\d+)/),F=navigator.userAgent.match(/Edge\//);R(F||!N||parseInt(N[1],10)>=43)}}).catch(function(){return!1})}function P(D){return typeof w=="boolean"?m.resolve(w):E(D).then(function(R){return w=R,w})}function I(D){var R=v[D.name],M={};M.promise=new m(function(j,N){M.resolve=j,M.reject=N}),R.deferredOperations.push(M),R.dbReady?R.dbReady=R.dbReady.then(function(){return M.promise}):R.dbReady=M.promise}function L(D){var R=v[D.name],M=R.deferredOperations.pop();if(M)return M.resolve(),M.promise}function W(D,R){var M=v[D.name],j=M.deferredOperations.pop();if(j)return j.reject(R),j.promise}function O(D,R){return new m(function(M,j){if(v[D.name]=v[D.name]||De(),D.db)if(R)I(D),D.db.close();else return M(D.db);var N=[D.name];R&&N.push(D.version);var F=d.open.apply(d,N);R&&(F.onupgradeneeded=function(G){var X=F.result;try{X.createObjectStore(D.storeName),G.oldVersion<=1&&X.createObjectStore(y)}catch(Z){if(Z.name==="ConstraintError")console.warn('The database "'+D.name+'" has been upgraded from version '+G.oldVersion+" to version "+G.newVersion+', but the storage "'+D.storeName+'" already exists.');else throw Z}}),F.onerror=function(G){G.preventDefault(),j(F.error)},F.onsuccess=function(){var G=F.result;G.onversionchange=function(X){X.target.close()},M(G),L(D)}})}function H(D){return O(D,!1)}function $(D){return O(D,!0)}function B(D,R){if(!D.db)return!0;var M=!D.db.objectStoreNames.contains(D.storeName),j=D.version<D.db.version,N=D.version>D.db.version;if(j&&(D.version!==R&&console.warn('The database "'+D.name+`" can't be downgraded from version `+D.db.version+" to version "+D.version+"."),D.version=D.db.version),N||M){if(M){var F=D.db.version+1;F>D.version&&(D.version=F)}return!0}return!1}function q(D){return new m(function(R,M){var j=new FileReader;j.onerror=M,j.onloadend=function(N){var F=btoa(N.target.result||"");R({__local_forage_encoded_blob:!0,data:F,type:D.type})},j.readAsBinaryString(D)})}function U(D){var R=S(atob(D.data));return p([R],{type:D.type})}function z(D){return D&&D.__local_forage_encoded_blob}function te(D){var R=this,M=R._initReady().then(function(){var j=v[R._dbInfo.name];if(j&&j.dbReady)return j.dbReady});return h(M,D,D),M}function fe(D){I(D);for(var R=v[D.name],M=R.forages,j=0;j<M.length;j++){var N=M[j];N._dbInfo.db&&(N._dbInfo.db.close(),N._dbInfo.db=null)}return D.db=null,H(D).then(function(F){return D.db=F,B(D)?$(D):F}).then(function(F){D.db=R.db=F;for(var G=0;G<M.length;G++)M[G]._dbInfo.db=F}).catch(function(F){throw W(D,F),F})}function ue(D,R,M,j){j===void 0&&(j=1);try{var N=D.db.transaction(D.storeName,R);M(null,N)}catch(F){if(j>0&&(!D.db||F.name==="InvalidStateError"||F.name==="NotFoundError"))return m.resolve().then(function(){if(!D.db||F.name==="NotFoundError"&&!D.db.objectStoreNames.contains(D.storeName)&&D.version<=D.db.version)return D.db&&(D.version=D.db.version+1),$(D)}).then(function(){return fe(D).then(function(){ue(D,R,M,j-1)})}).catch(M);M(F)}}function De(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function $e(D){var R=this,M={db:null};if(D)for(var j in D)M[j]=D[j];var N=v[M.name];N||(N=De(),v[M.name]=N),N.forages.push(R),R._initReady||(R._initReady=R.ready,R.ready=te);var F=[];function G(){return m.resolve()}for(var X=0;X<N.forages.length;X++){var Z=N.forages[X];Z!==R&&F.push(Z._initReady().catch(G))}var ee=N.forages.slice(0);return m.all(F).then(function(){return M.db=N.db,H(M)}).then(function(re){return M.db=re,B(M,R._defaultConfig.version)?$(M):re}).then(function(re){M.db=N.db=re,R._dbInfo=M;for(var he=0;he<ee.length;he++){var He=ee[he];He!==R&&(He._dbInfo.db=M.db,He._dbInfo.version=M.version)}})}function Le(D,R){var M=this;D=k(D);var j=new m(function(N,F){M.ready().then(function(){ue(M._dbInfo,x,function(G,X){if(G)return F(G);try{var Z=X.objectStore(M._dbInfo.storeName),ee=Z.get(D);ee.onsuccess=function(){var re=ee.result;re===void 0&&(re=null),z(re)&&(re=U(re)),N(re)},ee.onerror=function(){F(ee.error)}}catch(re){F(re)}})}).catch(F)});return f(j,R),j}function lt(D,R){var M=this,j=new m(function(N,F){M.ready().then(function(){ue(M._dbInfo,x,function(G,X){if(G)return F(G);try{var Z=X.objectStore(M._dbInfo.storeName),ee=Z.openCursor(),re=1;ee.onsuccess=function(){var he=ee.result;if(he){var He=he.value;z(He)&&(He=U(He));var dt=D(He,he.key,re++);dt!==void 0?N(dt):he.continue()}else N()},ee.onerror=function(){F(ee.error)}}catch(he){F(he)}})}).catch(F)});return f(j,R),j}function ct(D,R,M){var j=this;D=k(D);var N=new m(function(F,G){var X;j.ready().then(function(){return X=j._dbInfo,T.call(R)==="[object Blob]"?P(X.db).then(function(Z){return Z?R:q(R)}):R}).then(function(Z){ue(j._dbInfo,C,function(ee,re){if(ee)return G(ee);try{var he=re.objectStore(j._dbInfo.storeName);Z===null&&(Z=void 0);var He=he.put(Z,D);re.oncomplete=function(){Z===void 0&&(Z=null),F(Z)},re.onabort=re.onerror=function(){var dt=He.error?He.error:He.transaction.error;G(dt)}}catch(dt){G(dt)}})}).catch(G)});return f(N,M),N}function _e(D,R){var M=this;D=k(D);var j=new m(function(N,F){M.ready().then(function(){ue(M._dbInfo,C,function(G,X){if(G)return F(G);try{var Z=X.objectStore(M._dbInfo.storeName),ee=Z.delete(D);X.oncomplete=function(){N()},X.onerror=function(){F(ee.error)},X.onabort=function(){var re=ee.error?ee.error:ee.transaction.error;F(re)}}catch(re){F(re)}})}).catch(F)});return f(j,R),j}function le(D){var R=this,M=new m(function(j,N){R.ready().then(function(){ue(R._dbInfo,C,function(F,G){if(F)return N(F);try{var X=G.objectStore(R._dbInfo.storeName),Z=X.clear();G.oncomplete=function(){j()},G.onabort=G.onerror=function(){var ee=Z.error?Z.error:Z.transaction.error;N(ee)}}catch(ee){N(ee)}})}).catch(N)});return f(M,D),M}function ke(D){var R=this,M=new m(function(j,N){R.ready().then(function(){ue(R._dbInfo,x,function(F,G){if(F)return N(F);try{var X=G.objectStore(R._dbInfo.storeName),Z=X.count();Z.onsuccess=function(){j(Z.result)},Z.onerror=function(){N(Z.error)}}catch(ee){N(ee)}})}).catch(N)});return f(M,D),M}function Ae(D,R){var M=this,j=new m(function(N,F){if(D<0){N(null);return}M.ready().then(function(){ue(M._dbInfo,x,function(G,X){if(G)return F(G);try{var Z=X.objectStore(M._dbInfo.storeName),ee=!1,re=Z.openKeyCursor();re.onsuccess=function(){var he=re.result;if(!he){N(null);return}D===0||ee?N(he.key):(ee=!0,he.advance(D))},re.onerror=function(){F(re.error)}}catch(he){F(he)}})}).catch(F)});return f(j,R),j}function at(D){var R=this,M=new m(function(j,N){R.ready().then(function(){ue(R._dbInfo,x,function(F,G){if(F)return N(F);try{var X=G.objectStore(R._dbInfo.storeName),Z=X.openKeyCursor(),ee=[];Z.onsuccess=function(){var re=Z.result;if(!re){j(ee);return}ee.push(re.key),re.continue()},Z.onerror=function(){N(Z.error)}}catch(re){N(re)}})}).catch(N)});return f(M,D),M}function Te(D,R){R=g.apply(this,arguments);var M=this.config();D=typeof D!="function"&&D||{},D.name||(D.name=D.name||M.name,D.storeName=D.storeName||M.storeName);var j=this,N;if(!D.name)N=m.reject("Invalid arguments");else{var F=D.name===M.name&&j._dbInfo.db,G=F?m.resolve(j._dbInfo.db):H(D).then(function(X){var Z=v[D.name],ee=Z.forages;Z.db=X;for(var re=0;re<ee.length;re++)ee[re]._dbInfo.db=X;return X});D.storeName?N=G.then(function(X){if(!!X.objectStoreNames.contains(D.storeName)){var Z=X.version+1;I(D);var ee=v[D.name],re=ee.forages;X.close();for(var he=0;he<re.length;he++){var He=re[he];He._dbInfo.db=null,He._dbInfo.version=Z}var dt=new m(function(ht,ra){var qt=d.open(D.name,Z);qt.onerror=function(cs){var Rd=qt.result;Rd.close(),ra(cs)},qt.onupgradeneeded=function(){var cs=qt.result;cs.deleteObjectStore(D.storeName)},qt.onsuccess=function(){var cs=qt.result;cs.close(),ht(cs)}});return dt.then(function(ht){ee.db=ht;for(var ra=0;ra<re.length;ra++){var qt=re[ra];qt._dbInfo.db=ht,L(qt._dbInfo)}}).catch(function(ht){throw(W(D,ht)||m.resolve()).catch(function(){}),ht})}}):N=G.then(function(X){I(D);var Z=v[D.name],ee=Z.forages;X.close();for(var re=0;re<ee.length;re++){var he=ee[re];he._dbInfo.db=null}var He=new m(function(dt,ht){var ra=d.deleteDatabase(D.name);ra.onerror=function(){var qt=ra.result;qt&&qt.close(),ht(ra.error)},ra.onblocked=function(){console.warn('dropInstance blocked for database "'+D.name+'" until all open connections are closed')},ra.onsuccess=function(){var qt=ra.result;qt&&qt.close(),dt(qt)}});return He.then(function(dt){Z.db=dt;for(var ht=0;ht<ee.length;ht++){var ra=ee[ht];L(ra._dbInfo)}}).catch(function(dt){throw(W(D,dt)||m.resolve()).catch(function(){}),dt})})}return f(N,R),N}var Pe={_driver:"asyncStorage",_initStorage:$e,_support:u(),iterate:lt,getItem:Le,setItem:ct,removeItem:_e,clear:le,length:ke,key:Ae,keys:at,dropInstance:Te};function Ze(){return typeof openDatabase=="function"}var Ie="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fa="~~local_forage_type~",zt=/^~~local_forage_type~([^~]+)~/,ft="__lfsc__:",St=ft.length,lr="arbf",wr="blob",ns="si08",aa="ui08",os="uic8",za="si16",ls="si32",Bn="ur16",Wn="ui32",Ip="fl32",YS="fl64",zS=St+lr.length,qS=Object.prototype.toString;function GS(D){var R=D.length*.75,M=D.length,j,N=0,F,G,X,Z;D[D.length-1]==="="&&(R--,D[D.length-2]==="="&&R--);var ee=new ArrayBuffer(R),re=new Uint8Array(ee);for(j=0;j<M;j+=4)F=Ie.indexOf(D[j]),G=Ie.indexOf(D[j+1]),X=Ie.indexOf(D[j+2]),Z=Ie.indexOf(D[j+3]),re[N++]=F<<2|G>>4,re[N++]=(G&15)<<4|X>>2,re[N++]=(X&3)<<6|Z&63;return ee}function ly(D){var R=new Uint8Array(D),M="",j;for(j=0;j<R.length;j+=3)M+=Ie[R[j]>>2],M+=Ie[(R[j]&3)<<4|R[j+1]>>4],M+=Ie[(R[j+1]&15)<<2|R[j+2]>>6],M+=Ie[R[j+2]&63];return R.length%3==2?M=M.substring(0,M.length-1)+"=":R.length%3==1&&(M=M.substring(0,M.length-2)+"=="),M}function qV(D,R){var M="";if(D&&(M=qS.call(D)),D&&(M==="[object ArrayBuffer]"||D.buffer&&qS.call(D.buffer)==="[object ArrayBuffer]")){var j,N=ft;D instanceof ArrayBuffer?(j=D,N+=lr):(j=D.buffer,M==="[object Int8Array]"?N+=ns:M==="[object Uint8Array]"?N+=aa:M==="[object Uint8ClampedArray]"?N+=os:M==="[object Int16Array]"?N+=za:M==="[object Uint16Array]"?N+=Bn:M==="[object Int32Array]"?N+=ls:M==="[object Uint32Array]"?N+=Wn:M==="[object Float32Array]"?N+=Ip:M==="[object Float64Array]"?N+=YS:R(new Error("Failed to get type for BinaryArray"))),R(N+ly(j))}else if(M==="[object Blob]"){var F=new FileReader;F.onload=function(){var G=fa+D.type+"~"+ly(this.result);R(ft+wr+G)},F.readAsArrayBuffer(D)}else try{R(JSON.stringify(D))}catch(G){console.error("Couldn't convert value into a JSON string: ",D),R(null,G)}}function GV(D){if(D.substring(0,St)!==ft)return JSON.parse(D);var R=D.substring(zS),M=D.substring(St,zS),j;if(M===wr&&zt.test(R)){var N=R.match(zt);j=N[1],R=R.substring(N[0].length)}var F=GS(R);switch(M){case lr:return F;case wr:return p([F],{type:j});case ns:return new Int8Array(F);case aa:return new Uint8Array(F);case os:return new Uint8ClampedArray(F);case za:return new Int16Array(F);case Bn:return new Uint16Array(F);case ls:return new Int32Array(F);case Wn:return new Uint32Array(F);case Ip:return new Float32Array(F);case YS:return new Float64Array(F);default:throw new Error("Unkown type: "+M)}}var cy={serialize:qV,deserialize:GV,stringToBuffer:GS,bufferToString:ly};function KS(D,R,M,j){D.executeSql("CREATE TABLE IF NOT EXISTS "+R.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],M,j)}function KV(D){var R=this,M={db:null};if(D)for(var j in D)M[j]=typeof D[j]!="string"?D[j].toString():D[j];var N=new m(function(F,G){try{M.db=openDatabase(M.name,String(M.version),M.description,M.size)}catch(X){return G(X)}M.db.transaction(function(X){KS(X,M,function(){R._dbInfo=M,F()},function(Z,ee){G(ee)})},G)});return M.serializer=cy,N}function _n(D,R,M,j,N,F){D.executeSql(M,j,N,function(G,X){X.code===X.SYNTAX_ERR?G.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[R.storeName],function(Z,ee){ee.rows.length?F(Z,X):KS(Z,R,function(){Z.executeSql(M,j,N,F)},F)},F):F(G,X)},F)}function QV(D,R){var M=this;D=k(D);var j=new m(function(N,F){M.ready().then(function(){var G=M._dbInfo;G.db.transaction(function(X){_n(X,G,"SELECT * FROM "+G.storeName+" WHERE key = ? LIMIT 1",[D],function(Z,ee){var re=ee.rows.length?ee.rows.item(0).value:null;re&&(re=G.serializer.deserialize(re)),N(re)},function(Z,ee){F(ee)})})}).catch(F)});return f(j,R),j}function XV(D,R){var M=this,j=new m(function(N,F){M.ready().then(function(){var G=M._dbInfo;G.db.transaction(function(X){_n(X,G,"SELECT * FROM "+G.storeName,[],function(Z,ee){for(var re=ee.rows,he=re.length,He=0;He<he;He++){var dt=re.item(He),ht=dt.value;if(ht&&(ht=G.serializer.deserialize(ht)),ht=D(ht,dt.key,He+1),ht!==void 0){N(ht);return}}N()},function(Z,ee){F(ee)})})}).catch(F)});return f(j,R),j}function QS(D,R,M,j){var N=this;D=k(D);var F=new m(function(G,X){N.ready().then(function(){R===void 0&&(R=null);var Z=R,ee=N._dbInfo;ee.serializer.serialize(R,function(re,he){he?X(he):ee.db.transaction(function(He){_n(He,ee,"INSERT OR REPLACE INTO "+ee.storeName+" (key, value) VALUES (?, ?)",[D,re],function(){G(Z)},function(dt,ht){X(ht)})},function(He){if(He.code===He.QUOTA_ERR){if(j>0){G(QS.apply(N,[D,Z,M,j-1]));return}X(He)}})})}).catch(X)});return f(F,M),F}function JV(D,R,M){return QS.apply(this,[D,R,M,1])}function ZV(D,R){var M=this;D=k(D);var j=new m(function(N,F){M.ready().then(function(){var G=M._dbInfo;G.db.transaction(function(X){_n(X,G,"DELETE FROM "+G.storeName+" WHERE key = ?",[D],function(){N()},function(Z,ee){F(ee)})})}).catch(F)});return f(j,R),j}function eU(D){var R=this,M=new m(function(j,N){R.ready().then(function(){var F=R._dbInfo;F.db.transaction(function(G){_n(G,F,"DELETE FROM "+F.storeName,[],function(){j()},function(X,Z){N(Z)})})}).catch(N)});return f(M,D),M}function tU(D){var R=this,M=new m(function(j,N){R.ready().then(function(){var F=R._dbInfo;F.db.transaction(function(G){_n(G,F,"SELECT COUNT(key) as c FROM "+F.storeName,[],function(X,Z){var ee=Z.rows.item(0).c;j(ee)},function(X,Z){N(Z)})})}).catch(N)});return f(M,D),M}function aU(D,R){var M=this,j=new m(function(N,F){M.ready().then(function(){var G=M._dbInfo;G.db.transaction(function(X){_n(X,G,"SELECT key FROM "+G.storeName+" WHERE id = ? LIMIT 1",[D+1],function(Z,ee){var re=ee.rows.length?ee.rows.item(0).key:null;N(re)},function(Z,ee){F(ee)})})}).catch(F)});return f(j,R),j}function rU(D){var R=this,M=new m(function(j,N){R.ready().then(function(){var F=R._dbInfo;F.db.transaction(function(G){_n(G,F,"SELECT key FROM "+F.storeName,[],function(X,Z){for(var ee=[],re=0;re<Z.rows.length;re++)ee.push(Z.rows.item(re).key);j(ee)},function(X,Z){N(Z)})})}).catch(N)});return f(M,D),M}function sU(D){return new m(function(R,M){D.transaction(function(j){j.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(N,F){for(var G=[],X=0;X<F.rows.length;X++)G.push(F.rows.item(X).name);R({db:D,storeNames:G})},function(N,F){M(F)})},function(j){M(j)})})}function iU(D,R){R=g.apply(this,arguments);var M=this.config();D=typeof D!="function"&&D||{},D.name||(D.name=D.name||M.name,D.storeName=D.storeName||M.storeName);var j=this,N;return D.name?N=new m(function(F){var G;D.name===M.name?G=j._dbInfo.db:G=openDatabase(D.name,"","",0),D.storeName?F({db:G,storeNames:[D.storeName]}):F(sU(G))}).then(function(F){return new m(function(G,X){F.db.transaction(function(Z){function ee(dt){return new m(function(ht,ra){Z.executeSql("DROP TABLE IF EXISTS "+dt,[],function(){ht()},function(qt,cs){ra(cs)})})}for(var re=[],he=0,He=F.storeNames.length;he<He;he++)re.push(ee(F.storeNames[he]));m.all(re).then(function(){G()}).catch(function(dt){X(dt)})},function(Z){X(Z)})})}):N=m.reject("Invalid arguments"),f(N,R),N}var nU={_driver:"webSQLStorage",_initStorage:KV,_support:Ze(),iterate:XV,getItem:QV,setItem:JV,removeItem:ZV,clear:eU,length:tU,key:aU,keys:rU,dropInstance:iU};function oU(){try{return typeof localStorage!="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(D){return!1}}function XS(D,R){var M=D.name+"/";return D.storeName!==R.storeName&&(M+=D.storeName+"/"),M}function lU(){var D="_localforage_support_test";try{return localStorage.setItem(D,!0),localStorage.removeItem(D),!1}catch(R){return!0}}function cU(){return!lU()||localStorage.length>0}function dU(D){var R=this,M={};if(D)for(var j in D)M[j]=D[j];return M.keyPrefix=XS(D,R._defaultConfig),cU()?(R._dbInfo=M,M.serializer=cy,m.resolve()):m.reject()}function uU(D){var R=this,M=R.ready().then(function(){for(var j=R._dbInfo.keyPrefix,N=localStorage.length-1;N>=0;N--){var F=localStorage.key(N);F.indexOf(j)===0&&localStorage.removeItem(F)}});return f(M,D),M}function pU(D,R){var M=this;D=k(D);var j=M.ready().then(function(){var N=M._dbInfo,F=localStorage.getItem(N.keyPrefix+D);return F&&(F=N.serializer.deserialize(F)),F});return f(j,R),j}function mU(D,R){var M=this,j=M.ready().then(function(){for(var N=M._dbInfo,F=N.keyPrefix,G=F.length,X=localStorage.length,Z=1,ee=0;ee<X;ee++){var re=localStorage.key(ee);if(re.indexOf(F)===0){var he=localStorage.getItem(re);if(he&&(he=N.serializer.deserialize(he)),he=D(he,re.substring(G),Z++),he!==void 0)return he}}});return f(j,R),j}function fU(D,R){var M=this,j=M.ready().then(function(){var N=M._dbInfo,F;try{F=localStorage.key(D)}catch(G){F=null}return F&&(F=F.substring(N.keyPrefix.length)),F});return f(j,R),j}function hU(D){var R=this,M=R.ready().then(function(){for(var j=R._dbInfo,N=localStorage.length,F=[],G=0;G<N;G++){var X=localStorage.key(G);X.indexOf(j.keyPrefix)===0&&F.push(X.substring(j.keyPrefix.length))}return F});return f(M,D),M}function gU(D){var R=this,M=R.keys().then(function(j){return j.length});return f(M,D),M}function kU(D,R){var M=this;D=k(D);var j=M.ready().then(function(){var N=M._dbInfo;localStorage.removeItem(N.keyPrefix+D)});return f(j,R),j}function yU(D,R,M){var j=this;D=k(D);var N=j.ready().then(function(){R===void 0&&(R=null);var F=R;return new m(function(G,X){var Z=j._dbInfo;Z.serializer.serialize(R,function(ee,re){if(re)X(re);else try{localStorage.setItem(Z.keyPrefix+D,ee),G(F)}catch(he){(he.name==="QuotaExceededError"||he.name==="NS_ERROR_DOM_QUOTA_REACHED")&&X(he),X(he)}})})});return f(N,M),N}function wU(D,R){if(R=g.apply(this,arguments),D=typeof D!="function"&&D||{},!D.name){var M=this.config();D.name=D.name||M.name,D.storeName=D.storeName||M.storeName}var j=this,N;return D.name?N=new m(function(F){D.storeName?F(XS(D,j._defaultConfig)):F(D.name+"/")}).then(function(F){for(var G=localStorage.length-1;G>=0;G--){var X=localStorage.key(G);X.indexOf(F)===0&&localStorage.removeItem(X)}}):N=m.reject("Invalid arguments"),f(N,R),N}var vU={_driver:"localStorageWrapper",_initStorage:dU,_support:oU(),iterate:mU,getItem:pU,setItem:yU,removeItem:kU,clear:uU,length:gU,key:fU,keys:hU,dropInstance:wU},bU=function(R,M){return R===M||typeof R=="number"&&typeof M=="number"&&isNaN(R)&&isNaN(M)},TU=function(R,M){for(var j=R.length,N=0;N<j;){if(bU(R[N],M))return!0;N++}return!1},JS=Array.isArray||function(D){return Object.prototype.toString.call(D)==="[object Array]"},Id={},ZS={},Ml={INDEXEDDB:Pe,WEBSQL:nU,LOCALSTORAGE:vU},CU=[Ml.INDEXEDDB._driver,Ml.WEBSQL._driver,Ml.LOCALSTORAGE._driver],Rp=["dropInstance"],dy=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(Rp),xU={description:"",driver:CU.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function SU(D,R){D[R]=function(){var M=arguments;return D.ready().then(function(){return D[R].apply(D,M)})}}function uy(){for(var D=1;D<arguments.length;D++){var R=arguments[D];if(R)for(var M in R)R.hasOwnProperty(M)&&(JS(R[M])?arguments[0][M]=R[M].slice():arguments[0][M]=R[M])}return arguments[0]}var EU=function(){function D(R){o(this,D);for(var M in Ml)if(Ml.hasOwnProperty(M)){var j=Ml[M],N=j._driver;this[M]=N,Id[N]||this.defineDriver(j)}this._defaultConfig=uy({},xU),this._config=uy({},this._defaultConfig,R),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return D.prototype.config=function(M){if((typeof M=="undefined"?"undefined":n(M))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var j in M){if(j==="storeName"&&(M[j]=M[j].replace(/\W/g,"_")),j==="version"&&typeof M[j]!="number")return new Error("Database version must be a number.");this._config[j]=M[j]}return"driver"in M&&M.driver?this.setDriver(this._config.driver):!0}else return typeof M=="string"?this._config[M]:this._config},D.prototype.defineDriver=function(M,j,N){var F=new m(function(G,X){try{var Z=M._driver,ee=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!M._driver){X(ee);return}for(var re=dy.concat("_initStorage"),he=0,He=re.length;he<He;he++){var dt=re[he],ht=!TU(Rp,dt);if((ht||M[dt])&&typeof M[dt]!="function"){X(ee);return}}var ra=function(){for(var Rd=function(MU){return function(){var AU=new Error("Method "+MU+" is not implemented by the current driver"),eE=m.reject(AU);return f(eE,arguments[arguments.length-1]),eE}},py=0,PU=Rp.length;py<PU;py++){var my=Rp[py];M[my]||(M[my]=Rd(my))}};ra();var qt=function(Rd){Id[Z]&&console.info("Redefining LocalForage driver: "+Z),Id[Z]=M,ZS[Z]=Rd,G()};"_support"in M?M._support&&typeof M._support=="function"?M._support().then(qt,X):qt(!!M._support):qt(!0)}catch(cs){X(cs)}});return h(F,j,N),F},D.prototype.driver=function(){return this._driver||null},D.prototype.getDriver=function(M,j,N){var F=Id[M]?m.resolve(Id[M]):m.reject(new Error("Driver not found."));return h(F,j,N),F},D.prototype.getSerializer=function(M){var j=m.resolve(cy);return h(j,M),j},D.prototype.ready=function(M){var j=this,N=j._driverSet.then(function(){return j._ready===null&&(j._ready=j._initDriver()),j._ready});return h(N,M,M),N},D.prototype.setDriver=function(M,j,N){var F=this;JS(M)||(M=[M]);var G=this._getSupportedDrivers(M);function X(){F._config.driver=F.driver()}function Z(he){return F._extend(he),X(),F._ready=F._initStorage(F._config),F._ready}function ee(he){return function(){var He=0;function dt(){for(;He<he.length;){var ht=he[He];return He++,F._dbInfo=null,F._ready=null,F.getDriver(ht).then(Z).catch(dt)}X();var ra=new Error("No available storage method found.");return F._driverSet=m.reject(ra),F._driverSet}return dt()}}var re=this._driverSet!==null?this._driverSet.catch(function(){return m.resolve()}):m.resolve();return this._driverSet=re.then(function(){var he=G[0];return F._dbInfo=null,F._ready=null,F.getDriver(he).then(function(He){F._driver=He._driver,X(),F._wrapLibraryMethodsWithReady(),F._initDriver=ee(G)})}).catch(function(){X();var he=new Error("No available storage method found.");return F._driverSet=m.reject(he),F._driverSet}),h(this._driverSet,j,N),this._driverSet},D.prototype.supports=function(M){return!!ZS[M]},D.prototype._extend=function(M){uy(this,M)},D.prototype._getSupportedDrivers=function(M){for(var j=[],N=0,F=M.length;N<F;N++){var G=M[N];this.supports(G)&&j.push(G)}return j},D.prototype._wrapLibraryMethodsWithReady=function(){for(var M=0,j=dy.length;M<j;M++)SU(this,dy[M])},D.prototype.createInstance=function(M){return new D(M)},D}(),DU=new EU;r.exports=DU},{"3":3}]},{},[4])(4)})});var SW=ye((L_e,Dk)=>{var sW,iW,nW,oW,lW,cW,dW,uW,pW,Sk,mx,mW,fW,hW,od,gW,kW,yW,wW,vW,bW,TW,CW,xW,Ek;(function(s){var e=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(a){s(t(e,t(a)))}):typeof Dk=="object"&&typeof Dk.exports=="object"?s(t(e,t(Dk.exports))):s(t(e));function t(a,r){return a!==e&&(typeof Object.create=="function"?Object.defineProperty(a,"__esModule",{value:!0}):a.__esModule=!0),function(i,n){return a[i]=r?r(i,n):n}}})(function(s){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,r){a.__proto__=r}||function(a,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(a[i]=r[i])};sW=function(a,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(a,r);function i(){this.constructor=a}a.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)},iW=Object.assign||function(a){for(var r,i=1,n=arguments.length;i<n;i++){r=arguments[i];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(a[o]=r[o])}return a},nW=function(a,r){var i={};for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&r.indexOf(n)<0&&(i[n]=a[n]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,n=Object.getOwnPropertySymbols(a);o<n.length;o++)r.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(a,n[o])&&(i[n[o]]=a[n[o]]);return i},oW=function(a,r,i,n){var o=arguments.length,l=o<3?r:n===null?n=Object.getOwnPropertyDescriptor(r,i):n,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(a,r,i,n);else for(var u=a.length-1;u>=0;u--)(d=a[u])&&(l=(o<3?d(l):o>3?d(r,i,l):d(r,i))||l);return o>3&&l&&Object.defineProperty(r,i,l),l},lW=function(a,r){return function(i,n){r(i,n,a)}},cW=function(a,r){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(a,r)},dW=function(a,r,i,n){function o(l){return l instanceof i?l:new i(function(d){d(l)})}return new(i||(i=Promise))(function(l,d){function u(f){try{m(n.next(f))}catch(h){d(h)}}function p(f){try{m(n.throw(f))}catch(h){d(h)}}function m(f){f.done?l(f.value):o(f.value).then(u,p)}m((n=n.apply(a,r||[])).next())})},uW=function(a,r){var i={label:0,sent:function(){if(l[0]&1)throw l[1];return l[1]},trys:[],ops:[]},n,o,l,d;return d={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function u(m){return function(f){return p([m,f])}}function p(m){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,o&&(l=m[0]&2?o.return:m[0]?o.throw||((l=o.return)&&l.call(o),0):o.next)&&!(l=l.call(o,m[1])).done)return l;switch(o=0,l&&(m=[m[0]&2,l.value]),m[0]){case 0:case 1:l=m;break;case 4:return i.label++,{value:m[1],done:!1};case 5:i.label++,o=m[1],m=[0];continue;case 7:m=i.ops.pop(),i.trys.pop();continue;default:if(l=i.trys,!(l=l.length>0&&l[l.length-1])&&(m[0]===6||m[0]===2)){i=0;continue}if(m[0]===3&&(!l||m[1]>l[0]&&m[1]<l[3])){i.label=m[1];break}if(m[0]===6&&i.label<l[1]){i.label=l[1],l=m;break}if(l&&i.label<l[2]){i.label=l[2],i.ops.push(m);break}l[2]&&i.ops.pop(),i.trys.pop();continue}m=r.call(a,i)}catch(f){m=[6,f],o=0}finally{n=l=0}if(m[0]&5)throw m[1];return{value:m[0]?m[1]:void 0,done:!0}}},pW=function(a,r){for(var i in a)i!=="default"&&!Object.prototype.hasOwnProperty.call(r,i)&&Ek(r,a,i)},Ek=Object.create?function(a,r,i,n){n===void 0&&(n=i);var o=Object.getOwnPropertyDescriptor(r,i);(!o||("get"in o?!r.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return r[i]}}),Object.defineProperty(a,n,o)}:function(a,r,i,n){n===void 0&&(n=i),a[n]=r[i]},Sk=function(a){var r=typeof Symbol=="function"&&Symbol.iterator,i=r&&a[r],n=0;if(i)return i.call(a);if(a&&typeof a.length=="number")return{next:function(){return a&&n>=a.length&&(a=void 0),{value:a&&a[n++],done:!a}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},mx=function(a,r){var i=typeof Symbol=="function"&&a[Symbol.iterator];if(!i)return a;var n=i.call(a),o,l=[],d;try{for(;(r===void 0||r-- >0)&&!(o=n.next()).done;)l.push(o.value)}catch(u){d={error:u}}finally{try{o&&!o.done&&(i=n.return)&&i.call(n)}finally{if(d)throw d.error}}return l},mW=function(){for(var a=[],r=0;r<arguments.length;r++)a=a.concat(mx(arguments[r]));return a},fW=function(){for(var a=0,r=0,i=arguments.length;r<i;r++)a+=arguments[r].length;for(var n=Array(a),o=0,r=0;r<i;r++)for(var l=arguments[r],d=0,u=l.length;d<u;d++,o++)n[o]=l[d];return n},hW=function(a,r,i){if(i||arguments.length===2)for(var n=0,o=r.length,l;n<o;n++)(l||!(n in r))&&(l||(l=Array.prototype.slice.call(r,0,n)),l[n]=r[n]);return a.concat(l||Array.prototype.slice.call(r))},od=function(a){return this instanceof od?(this.v=a,this):new od(a)},gW=function(a,r,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=i.apply(a,r||[]),o,l=[];return o={},d("next"),d("throw"),d("return"),o[Symbol.asyncIterator]=function(){return this},o;function d(k){n[k]&&(o[k]=function(g){return new Promise(function(y,w){l.push([k,g,y,w])>1||u(k,g)})})}function u(k,g){try{p(n[k](g))}catch(y){h(l[0][3],y)}}function p(k){k.value instanceof od?Promise.resolve(k.value.v).then(m,f):h(l[0][2],k)}function m(k){u("next",k)}function f(k){u("throw",k)}function h(k,g){k(g),l.shift(),l.length&&u(l[0][0],l[0][1])}},kW=function(a){var r,i;return r={},n("next"),n("throw",function(o){throw o}),n("return"),r[Symbol.iterator]=function(){return this},r;function n(o,l){r[o]=a[o]?function(d){return(i=!i)?{value:od(a[o](d)),done:o==="return"}:l?l(d):d}:l}},yW=function(a){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=a[Symbol.asyncIterator],i;return r?r.call(a):(a=typeof Sk=="function"?Sk(a):a[Symbol.iterator](),i={},n("next"),n("throw"),n("return"),i[Symbol.asyncIterator]=function(){return this},i);function n(l){i[l]=a[l]&&function(d){return new Promise(function(u,p){d=a[l](d),o(u,p,d.done,d.value)})}}function o(l,d,u,p){Promise.resolve(p).then(function(m){l({value:m,done:u})},d)}},wW=function(a,r){return Object.defineProperty?Object.defineProperty(a,"raw",{value:r}):a.raw=r,a};var t=Object.create?function(a,r){Object.defineProperty(a,"default",{enumerable:!0,value:r})}:function(a,r){a.default=r};vW=function(a){if(a&&a.__esModule)return a;var r={};if(a!=null)for(var i in a)i!=="default"&&Object.prototype.hasOwnProperty.call(a,i)&&Ek(r,a,i);return t(r,a),r},bW=function(a){return a&&a.__esModule?a:{default:a}},TW=function(a,r,i,n){if(i==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof r=="function"?a!==r||!n:!r.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?n:i==="a"?n.call(a):n?n.value:r.get(a)},CW=function(a,r,i,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof r=="function"?a!==r||!o:!r.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(a,i):o?o.value=i:r.set(a,i),i},xW=function(a,r){if(r===null||typeof r!="object"&&typeof r!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof a=="function"?r===a:a.has(r)},s("__extends",sW),s("__assign",iW),s("__rest",nW),s("__decorate",oW),s("__param",lW),s("__metadata",cW),s("__awaiter",dW),s("__generator",uW),s("__exportStar",pW),s("__createBinding",Ek),s("__values",Sk),s("__read",mx),s("__spread",mW),s("__spreadArrays",fW),s("__spreadArray",hW),s("__await",od),s("__asyncGenerator",gW),s("__asyncDelegator",kW),s("__asyncValues",yW),s("__makeTemplateObject",wW),s("__importStar",vW),s("__importDefault",bW),s("__classPrivateFieldGet",TW),s("__classPrivateFieldSet",CW),s("__classPrivateFieldIn",xW)})});var p_={};ha(p_,{OnCompletionModal:()=>u_});var d_,u_,m_=b(()=>{d_=A(require("obsidian"));jm();Q();xv();u_=class extends d_.Modal{constructor(e,t,a){super(e);this.currentValue="";this.isValid=!1;this.plugin=t,this.options=a,this.currentValue=a.initialValue||"",this.modalEl.addClass("oncompletion-modal"),this.titleEl.setText(c("Configure On Completion Action"))}onOpen(){let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"oncompletion-modal-content"}),a={initialValue:this.currentValue,onChange:l=>{this.currentValue=l},onValidationChange:(l,d)=>{this.isValid=l,this.updateSaveButtonState()}};this.configurator=new $o(t,this.plugin,a),this.configurator.onload();let r=e.createDiv({cls:"oncompletion-modal-buttons"}),i=r.createEl("button",{text:c("Save"),cls:"mod-cta"});i.addEventListener("click",()=>this.handleSave()),r.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.handleCancel());let o=r.createEl("button",{text:c("Reset")});o.addEventListener("click",()=>this.handleReset()),this.saveButton=i,this.resetButton=o,this.updateSaveButtonState()}updateSaveButtonState(){let e=this.saveButton;e&&(e.disabled=!this.isValid&&this.currentValue.trim()!=="")}handleSave(){this.options.onSave&&this.options.onSave(this.currentValue),this.close()}handleCancel(){this.options.onCancel&&this.options.onCancel(),this.close()}handleReset(){this.currentValue="",this.configurator.setValue(""),this.updateSaveButtonState()}onClose(){let{contentEl:e}=this;this.configurator&&this.configurator.unload(),e.empty()}}});var wS=ye(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});var Lt=require("obsidian"),kS="YYYY-MM-DD",yS="gggg-[W]ww",Z_="YYYY-MM",eV="YYYY-[Q]Q",tV="YYYY";function wp(s){var t,a;let e=window.app.plugins.getPlugin("periodic-notes");return e&&((a=(t=e.settings)==null?void 0:t[s])==null?void 0:a.enabled)}function vp(){var s,e,t,a;try{let{internalPlugins:r,plugins:i}=window.app;if(wp("daily")){let{format:d,folder:u,template:p}=((e=(s=i.getPlugin("periodic-notes"))==null?void 0:s.settings)==null?void 0:e.daily)||{};return{format:d||kS,folder:(u==null?void 0:u.trim())||"",template:(p==null?void 0:p.trim())||""}}let{folder:n,format:o,template:l}=((a=(t=r.getPluginById("daily-notes"))==null?void 0:t.instance)==null?void 0:a.options)||{};return{format:o||kS,folder:(n==null?void 0:n.trim())||"",template:(l==null?void 0:l.trim())||""}}catch(r){console.info("No custom daily note settings found!",r)}}function bp(){var s,e,t,a,r,i,n;try{let o=window.app.plugins,l=(s=o.getPlugin("calendar"))==null?void 0:s.options,d=(t=(e=o.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.weekly;if(wp("weekly"))return{format:d.format||yS,folder:((a=d.folder)==null?void 0:a.trim())||"",template:((r=d.template)==null?void 0:r.trim())||""};let u=l||{};return{format:u.weeklyNoteFormat||yS,folder:((i=u.weeklyNoteFolder)==null?void 0:i.trim())||"",template:((n=u.weeklyNoteTemplate)==null?void 0:n.trim())||""}}catch(o){console.info("No custom weekly note settings found!",o)}}function Tp(){var e,t,a,r;let s=window.app.plugins;try{let i=wp("monthly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.monthly)||{};return{format:i.format||Z_,folder:((a=i.folder)==null?void 0:a.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){console.info("No custom monthly note settings found!",i)}}function Cp(){var e,t,a,r;let s=window.app.plugins;try{let i=wp("quarterly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.quarterly)||{};return{format:i.format||eV,folder:((a=i.folder)==null?void 0:a.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){console.info("No custom quarterly note settings found!",i)}}function xp(){var e,t,a,r;let s=window.app.plugins;try{let i=wp("yearly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.yearly)||{};return{format:i.format||tV,folder:((a=i.folder)==null?void 0:a.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){console.info("No custom yearly note settings found!",i)}}function aV(...s){let e=[];for(let a=0,r=s.length;a<r;a++)e=e.concat(s[a].split("/"));let t=[];for(let a=0,r=e.length;a<r;a++){let i=e[a];!i||i==="."||t.push(i)}return e[0]===""&&t.unshift(""),t.join("/")}function zK(s){let e=s.substring(s.lastIndexOf("/")+1);return e.lastIndexOf(".")!=-1&&(e=e.substring(0,e.lastIndexOf("."))),e}async function qK(s){let e=s.replace(/\\/g,"/").split("/");if(e.pop(),e.length){let t=aV(...e);window.app.vault.getAbstractFileByPath(t)||await window.app.vault.createFolder(t)}}async function Sp(s,e){e.endsWith(".md")||(e+=".md");let t=Lt.normalizePath(aV(s,e));return await qK(t),t}async function Dd(s){let{metadataCache:e,vault:t}=window.app,a=Lt.normalizePath(s);if(a==="/")return Promise.resolve(["",null]);try{let r=e.getFirstLinkpathDest(a,""),i=await t.cachedRead(r),n=window.app.foldManager.load(r);return[i,n]}catch(r){return console.error(`Failed to read the daily note template '${a}'`,r),new Lt.Notice("Failed to read the daily note template"),["",null]}}function ui(s,e="day"){let t=s.clone().startOf(e).format();return`${e}-${t}`}function rV(s){return s.replace(/\[[^\]]*\]/g,"")}function GK(s,e){if(e==="week"){let t=rV(s);return/w{1,2}/i.test(t)&&(/M{1,4}/.test(t)||/D{1,4}/.test(t))}return!1}function Pd(s,e){return sV(s.basename,e)}function KK(s,e){return sV(zK(s),e)}function sV(s,e){let a={day:vp,week:bp,month:Tp,quarter:Cp,year:xp}[e]().format.split("/").pop(),r=window.moment(s,a,!0);if(!r.isValid())return null;if(GK(a,e)&&e==="week"){let i=rV(a);if(/w{1,2}/i.test(i))return window.moment(s,a.replace(/M{1,4}/g,"").replace(/D{1,4}/g,""),!1)}return r}var iV=class extends Error{};async function nV(s){let e=window.app,{vault:t}=e,a=window.moment,{template:r,format:i,folder:n}=vp(),[o,l]=await Dd(r),d=s.format(i),u=await Sp(n,d);try{let p=await t.create(u,o.replace(/{{\s*date\s*}}/gi,d).replace(/{{\s*time\s*}}/gi,a().format("HH:mm")).replace(/{{\s*title\s*}}/gi,d).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,f,h,k,g,y)=>{let w=a(),v=s.clone().set({hour:w.get("hour"),minute:w.get("minute"),second:w.get("second")});return h&&v.add(parseInt(k,10),g),y?v.format(y.substring(1).trim()):v.format(i)}).replace(/{{\s*yesterday\s*}}/gi,s.clone().subtract(1,"day").format(i)).replace(/{{\s*tomorrow\s*}}/gi,s.clone().add(1,"d").format(i)));return e.foldManager.save(p,l),p}catch(p){console.error(`Failed to create file: '${u}'`,p),new Lt.Notice("Unable to create new file.")}}function QK(s,e){var t;return(t=e[ui(s,"day")])!=null?t:null}function XK(){let{vault:s}=window.app,{folder:e}=vp(),t=s.getAbstractFileByPath(Lt.normalizePath(e));if(!t)throw new iV("Failed to find daily notes folder");let a={};return Lt.Vault.recurseChildren(t,r=>{if(r instanceof Lt.TFile){let i=Pd(r,"day");if(i){let n=ui(i,"day");a[n]=r}}}),a}var oV=class extends Error{};function JK(){let{moment:s}=window,e=s.localeData()._week.dow,t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;e;)t.push(t.shift()),e--;return t}function ZK(s){return JK().indexOf(s.toLowerCase())}async function lV(s){let{vault:e}=window.app,{template:t,format:a,folder:r}=bp(),[i,n]=await Dd(t),o=s.format(a),l=await Sp(r,o);try{let d=await e.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),y=s.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&y.add(parseInt(f,10),h),k?y.format(k.substring(1).trim()):y.format(a)}).replace(/{{\s*title\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(u,p,m)=>{let f=ZK(p);return s.weekday(f).format(m.trim())}));return window.app.foldManager.save(d,n),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new Lt.Notice("Unable to create new file.")}}function eQ(s,e){var t;return(t=e[ui(s,"week")])!=null?t:null}function tQ(){let s={};if(!mV())return s;let{vault:e}=window.app,{folder:t}=bp(),a=e.getAbstractFileByPath(Lt.normalizePath(t));if(!a)throw new oV("Failed to find weekly notes folder");return Lt.Vault.recurseChildren(a,r=>{if(r instanceof Lt.TFile){let i=Pd(r,"week");if(i){let n=ui(i,"week");s[n]=r}}}),s}var cV=class extends Error{};async function dV(s){let{vault:e}=window.app,{template:t,format:a,folder:r}=Tp(),[i,n]=await Dd(t),o=s.format(a),l=await Sp(r,o);try{let d=await e.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),y=s.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&y.add(parseInt(f,10),h),k?y.format(k.substring(1).trim()):y.format(a)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(d,n),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new Lt.Notice("Unable to create new file.")}}function aQ(s,e){var t;return(t=e[ui(s,"month")])!=null?t:null}function rQ(){let s={};if(!fV())return s;let{vault:e}=window.app,{folder:t}=Tp(),a=e.getAbstractFileByPath(Lt.normalizePath(t));if(!a)throw new cV("Failed to find monthly notes folder");return Lt.Vault.recurseChildren(a,r=>{if(r instanceof Lt.TFile){let i=Pd(r,"month");if(i){let n=ui(i,"month");s[n]=r}}}),s}var uV=class extends Error{};async function sQ(s){let{vault:e}=window.app,{template:t,format:a,folder:r}=Cp(),[i,n]=await Dd(t),o=s.format(a),l=await Sp(r,o);try{let d=await e.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),y=s.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&y.add(parseInt(f,10),h),k?y.format(k.substring(1).trim()):y.format(a)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(d,n),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new Lt.Notice("Unable to create new file.")}}function iQ(s,e){var t;return(t=e[ui(s,"quarter")])!=null?t:null}function nQ(){let s={};if(!hV())return s;let{vault:e}=window.app,{folder:t}=Cp(),a=e.getAbstractFileByPath(Lt.normalizePath(t));if(!a)throw new uV("Failed to find quarterly notes folder");return Lt.Vault.recurseChildren(a,r=>{if(r instanceof Lt.TFile){let i=Pd(r,"quarter");if(i){let n=ui(i,"quarter");s[n]=r}}}),s}var pV=class extends Error{};async function oQ(s){let{vault:e}=window.app,{template:t,format:a,folder:r}=xp(),[i,n]=await Dd(t),o=s.format(a),l=await Sp(r,o);try{let d=await e.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,f,h,k)=>{let g=window.moment(),y=s.clone().set({hour:g.get("hour"),minute:g.get("minute"),second:g.get("second")});return m&&y.add(parseInt(f,10),h),k?y.format(k.substring(1).trim()):y.format(a)}).replace(/{{\s*date\s*}}/gi,o).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,o));return window.app.foldManager.save(d,n),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new Lt.Notice("Unable to create new file.")}}function lQ(s,e){var t;return(t=e[ui(s,"year")])!=null?t:null}function cQ(){let s={};if(!gV())return s;let{vault:e}=window.app,{folder:t}=xp(),a=e.getAbstractFileByPath(Lt.normalizePath(t));if(!a)throw new pV("Failed to find yearly notes folder");return Lt.Vault.recurseChildren(a,r=>{if(r instanceof Lt.TFile){let i=Pd(r,"year");if(i){let n=ui(i,"year");s[n]=r}}}),s}function dQ(){var a,r;let{app:s}=window,e=s.internalPlugins.plugins["daily-notes"];if(e&&e.enabled)return!0;let t=s.plugins.getPlugin("periodic-notes");return t&&((r=(a=t.settings)==null?void 0:a.daily)==null?void 0:r.enabled)}function mV(){var t,a;let{app:s}=window;if(s.plugins.getPlugin("calendar"))return!0;let e=s.plugins.getPlugin("periodic-notes");return e&&((a=(t=e.settings)==null?void 0:t.weekly)==null?void 0:a.enabled)}function fV(){var t,a;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((a=(t=e.settings)==null?void 0:t.monthly)==null?void 0:a.enabled)}function hV(){var t,a;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((a=(t=e.settings)==null?void 0:t.quarterly)==null?void 0:a.enabled)}function gV(){var t,a;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((a=(t=e.settings)==null?void 0:t.yearly)==null?void 0:a.enabled)}function uQ(s){return{day:vp,week:bp,month:Tp,quarter:Cp,year:xp}[s]()}function pQ(s,e){return{day:nV,month:dV,week:lV}[s](e)}We.DEFAULT_DAILY_NOTE_FORMAT=kS;We.DEFAULT_MONTHLY_NOTE_FORMAT=Z_;We.DEFAULT_QUARTERLY_NOTE_FORMAT=eV;We.DEFAULT_WEEKLY_NOTE_FORMAT=yS;We.DEFAULT_YEARLY_NOTE_FORMAT=tV;We.appHasDailyNotesPluginLoaded=dQ;We.appHasMonthlyNotesPluginLoaded=fV;We.appHasQuarterlyNotesPluginLoaded=hV;We.appHasWeeklyNotesPluginLoaded=mV;We.appHasYearlyNotesPluginLoaded=gV;We.createDailyNote=nV;We.createMonthlyNote=dV;We.createPeriodicNote=pQ;We.createQuarterlyNote=sQ;We.createWeeklyNote=lV;We.createYearlyNote=oQ;We.getAllDailyNotes=XK;We.getAllMonthlyNotes=rQ;We.getAllQuarterlyNotes=nQ;We.getAllWeeklyNotes=tQ;We.getAllYearlyNotes=cQ;We.getDailyNote=QK;We.getDailyNoteSettings=vp;We.getDateFromFile=Pd;We.getDateFromPath=KK;We.getDateUID=ui;We.getMonthlyNote=aQ;We.getMonthlyNoteSettings=Tp;We.getPeriodicNoteSettings=uQ;We.getQuarterlyNote=iQ;We.getQuarterlyNoteSettings=Cp;We.getTemplateInfo=Dd;We.getWeeklyNote=eQ;We.getWeeklyNoteSettings=bp;We.getYearlyNote=lQ;We.getYearlyNoteSettings=xp});ha(exports,{default:()=>$S,showPopoverWithProgressBar:()=>$y});var ma=A(require("obsidian"));var br=A(require("@codemirror/view")),Ki=A(require("@codemirror/language"));var F0=A(R0()),jY={from:-1,to:-1,match:/.*/.exec("")},OY="gm"+(/x/.unicode==null?"":"u"),Vd=class{constructor(e,t,a,r=0,i=e.length){this.to=i;this.curLine="";this.done=!1;this.value=jY;this.re=new RegExp(t,OY+((a==null?void 0:a.ignoreCase)?"i":"")),this.iter=e.iter();let n=e.lineAt(r);this.curLineStart=n.from,this.matchPos=r,this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&(0,F0.default)(this.re,this.curLine);if(t){let a=this.curLineStart+t.index,r=a+t[0].length;if(this.matchPos=r+(a==r?1:0),a==this.curLine.length&&this.nextLine(),a<r||a>this.value.to)return this.value={from:a,to:r,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}};Symbol.iterator;var BX=new WeakMap;var j0;(function(e){e[e.Base=5e3]="Base"})(j0||(j0={}));var tm=A(require("obsidian"));function O0(s,e){if(!s.settings.hideProgressBarBasedOnConditions)return!1;let t=e.sourcePath?s.app.vault.getFileByPath(e.sourcePath):null;if(!t||!(t instanceof tm.TFile))return!1;let a=t;if(s.settings.hideProgressBarFolders){let r=s.settings.hideProgressBarFolders.split(",").map(n=>n.trim()),i=a.path;for(let n of r)if(n&&i.startsWith(n))return!0}if(s.settings.hideProgressBarTags){let r=s.settings.hideProgressBarTags.split(",").map(n=>n.trim()),i=s.app.metadataCache.getFileCache(a);if(i&&i.tags){for(let n of r)if(i.tags.some(o=>o.tag==="#"+n))return!0}}if(s.settings.hideProgressBarMetadata){let r=s.app.metadataCache.getFileCache(a);if(r&&r.frontmatter){let i=s.settings.hideProgressBarMetadata;if(i&&r.frontmatter[i]!==void 0)return!!r.frontmatter[i]}}return!1}function N0(s,e){if(s.settings.progressBarDisplayMode==="none")return!0;if(!s.settings.hideProgressBarBasedOnConditions)return!1;let t=e.state.field(tm.editorInfoField);if(!t)return!1;let a=t.file;if(!a)return!1;if(s.settings.hideProgressBarFolders){let r=s.settings.hideProgressBarFolders.split(",").map(n=>n.trim()),i=a.path;for(let n of r)if(n&&i.startsWith(n))return!0}if(s.settings.hideProgressBarTags){let r=s.settings.hideProgressBarTags.split(",").map(n=>n.trim()),i=s.app.metadataCache.getFileCache(a);if(i&&i.tags){for(let n of r)if(i.tags.some(o=>o.tag==="#"+n))return!0}}if(s.settings.hideProgressBarMetadata){let r=s.app.metadataCache.getFileCache(a);if(r&&r.frontmatter){let i=s.settings.hideProgressBarMetadata;if(i&&i in r.frontmatter)return!!r.frontmatter[i]}}return!1}function Hs(s){var e,t,a,r;try{let i=s.vault;return((e=i.getConfig)==null?void 0:e.call(i,"useTab"))===void 0||((t=i.getConfig)==null?void 0:t.call(i,"useTab"))===!0?(((a=i.getConfig)==null?void 0:a.call(i,"tabSize"))||4)/4:((r=i.getConfig)==null?void 0:r.call(i,"tabSize"))||4}catch(i){return console.error("Error getting tab size:",i),4}}function La(s){var e,t;try{let a=s.vault,r=((e=a.getConfig)==null?void 0:e.call(a,"useTab"))===void 0||((t=a.getConfig)==null?void 0:t.call(a,"useTab"))===!0,i=Hs(s);return r?" ":" ".repeat(i)}catch(a){return console.error("Error building indent string:",a),""}}function Yn(s){let e=s.app.plugins.plugins["obsidian-tasks-plugin"];return!e||!e._loaded?null:e.apiV1}var Nl=/\b(g|goal)::\s{0,1}(\d+)\b/i;function NY(s){if(!s)return null;let e=s.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]\s*(.*?)$/);return e&&e[3]?e[3].trim():null}function LY(s){if(!s)return null;let e=s.match(Nl);return e?Number(e[2]):null}function Uy(s){if(!s)return null;let e=NY(s);return e?LY(e):null}function Fo(s,e){if(!s.total)return"";let t=Math.round(s.completed/s.total*1e4)/100,a=s.inProgress?Math.round(s.inProgress/s.total*1e4)/100:0,r=s.abandoned?Math.round(s.abandoned/s.total*1e4)/100:0,i=s.planned?Math.round(s.planned/s.total*1e4)/100:0,n={...s,percentages:{completed:t,inProgress:a,abandoned:r,planned:i,notStarted:s.notStarted?Math.round(s.notStarted/s.total*1e4)/100:0}},o="\u2713",l="\u27F3",d="\u2717",u="?",p=(e==null?void 0:e.settings.displayMode)||(((e==null?void 0:e.settings.progressBarDisplayMode)==="text"||(e==null?void 0:e.settings.progressBarDisplayMode)==="both")&&(e==null?void 0:e.settings.showPercentage)?"percentage":"bracketFraction"),m="";switch(p){case"percentage":m=`${t}%`;break;case"bracketPercentage":m=`[${t}%]`;break;case"fraction":m=`${s.completed}/${s.total}`;break;case"bracketFraction":m=`[${s.completed}/${s.total}]`;break;case"detailed":m=`[${s.completed}${o} ${s.inProgress||0}${l} ${s.abandoned||0}${d} ${s.planned||0}${u} / ${s.total}]`;break;case"custom":(e==null?void 0:e.settings.customFormat)?m=e.settings.customFormat.replace(/{{COMPLETED}}/g,s.completed.toString()).replace(/{{TOTAL}}/g,s.total.toString()).replace(/{{IN_PROGRESS}}/g,(s.inProgress||0).toString()).replace(/{{ABANDONED}}/g,(s.abandoned||0).toString()).replace(/{{PLANNED}}/g,(s.planned||0).toString()).replace(/{{NOT_STARTED}}/g,(s.notStarted||0).toString()).replace(/{{PERCENT}}/g,t.toString()).replace(/{{PROGRESS}}/g,t.toString()).replace(/{{PERCENT_IN_PROGRESS}}/g,a.toString()).replace(/{{PERCENT_ABANDONED}}/g,r.toString()).replace(/{{PERCENT_PLANNED}}/g,i.toString()).replace(/{{COMPLETED_SYMBOL}}/g,o).replace(/{{IN_PROGRESS_SYMBOL}}/g,l).replace(/{{ABANDONED_SYMBOL}}/g,d).replace(/{{PLANNED_SYMBOL}}/g,u):m=`[${s.completed}/${s.total}]`;break;case"range-based":if(e==null?void 0:e.settings.customizeProgressRanges){let f=e.settings.progressRanges.find(h=>t>=h.min&&t<=h.max);f?m=f.text.replace("{{PROGRESS}}",t.toString()):m=`${t}%`}else m=`${t}%`;break;default:(e==null?void 0:e.settings.progressBarDisplayMode)==="text"||(e==null?void 0:e.settings.progressBarDisplayMode)==="both"?(e==null?void 0:e.settings.showPercentage)?m=`${t}%`:s.inProgress&&s.inProgress>0||s.abandoned&&s.abandoned>0||s.planned&&s.planned>0?m=`[${s.completed}\u2713 ${s.inProgress||0}\u27F3 ${s.abandoned||0}\u2717 ${s.planned||0}? / ${s.total}]`:m=`[${s.completed}/${s.total}]`:m=`[${s.completed}/${s.total}]`}return m=m.replace(/\${=(.+?)}/g,(f,h)=>{try{return new Function("data",`return ${h}`)(n)}catch(k){return console.error("Error evaluating expression:",h,k),f}}),m}var am=class extends br.WidgetType{constructor(e,t,a,r,i,n,o,l=0,d=0,u=0,p=0){super();this.app=e;this.plugin=t;this.view=a;this.from=r;this.to=i;this.completed=n;this.total=o;this.inProgress=l;this.abandoned=d;this.notStarted=u;this.planned=p}eq(e){return this.from===e.from&&this.to===e.to&&this.inProgress===e.inProgress&&this.abandoned===e.abandoned&&this.notStarted===e.notStarted&&this.planned===e.planned&&this.completed===e.completed&&this.total===e.total?!0:e.completed===this.completed&&e.total===this.total&&e.inProgress===this.inProgress&&e.abandoned===this.abandoned&&e.notStarted===this.notStarted&&e.planned===this.planned}changePercentage(){if(this.total===0)return;let e=Math.round(this.completed/this.total*1e4)/100,t=Math.round(this.inProgress/this.total*1e4)/100,a=Math.round(this.abandoned/this.total*1e4)/100,r=Math.round(this.planned/this.total*1e4)/100;this.progressEl.style.width=e+"%",this.inProgressEl&&(this.inProgressEl.style.width=t+"%",this.inProgressEl.style.left=e+"%"),this.abandonedEl&&(this.abandonedEl.style.width=a+"%",this.abandonedEl.style.left=e+t+"%"),this.plannedEl&&(this.plannedEl.style.width=r+"%",this.plannedEl.style.left=e+t+a+"%");let i="progress-bar-inline";switch(!0){case e===0:i+=" progress-bar-inline-empty";break;case(e>0&&e<25):i+=" progress-bar-inline-0";break;case(e>=25&&e<50):i+=" progress-bar-inline-1";break;case(e>=50&&e<75):i+=" progress-bar-inline-2";break;case(e>=75&&e<100):i+=" progress-bar-inline-3";break;case e>=100:i+=" progress-bar-inline-complete";break}t>0&&(i+=" has-in-progress"),a>0&&(i+=" has-abandoned"),r>0&&(i+=" has-planned"),this.progressEl.className=i}changeNumber(){var e,t;if(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="both"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="text"){let a=Fo({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl?this.numberEl.innerText=a:this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:a})}}toDOM(){var a,r,i,n,o,l,d,u;if((((a=this.plugin)==null?void 0:a.settings.progressBarDisplayMode)==="both"||((r=this.plugin)==null?void 0:r.settings.progressBarDisplayMode)==="text")&&this.numberEl!==void 0&&this.numberEl.detach(),this.progressBarEl!==void 0)return this.changePercentage(),this.numberEl!==void 0&&this.changeNumber(),this.progressBarEl;if(this.progressBarEl=createSpan(((i=this.plugin)==null?void 0:i.settings.progressBarDisplayMode)==="both"||((n=this.plugin)==null?void 0:n.settings.progressBarDisplayMode)==="text"?"cm-task-progress-bar with-number":"cm-task-progress-bar",p=>{var m;p.dataset.completed=this.completed.toString(),p.dataset.total=this.total.toString(),p.dataset.inProgress=this.inProgress.toString(),p.dataset.abandoned=this.abandoned.toString(),p.dataset.notStarted=this.notStarted.toString(),p.dataset.planned=this.planned.toString(),((m=this.plugin)==null?void 0:m.settings.supportHoverToShowProgressInfo)&&(p.onmouseover=()=>{$y(this.plugin,{progressBar:p,data:{completed:this.completed.toString(),total:this.total.toString(),inProgress:this.inProgress.toString(),abandoned:this.abandoned.toString(),notStarted:this.notStarted.toString(),planned:this.planned.toString()},view:this.view})})}),(((o=this.plugin)==null?void 0:o.settings.progressBarDisplayMode)==="graphical"||((l=this.plugin)==null?void 0:l.settings.progressBarDisplayMode)==="both")&&(this.progressBackGroundEl=this.progressBarEl.createEl("div",{cls:"progress-bar-inline-background"}),this.progressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-completed"}),this.inProgress>0&&(this.inProgressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-in-progress"})),this.abandoned>0&&(this.abandonedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-abandoned"})),this.planned>0&&(this.plannedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-planned"})),this.changePercentage()),(((d=this.plugin)==null?void 0:d.settings.progressBarDisplayMode)==="text"||((u=this.plugin)==null?void 0:u.settings.progressBarDisplayMode)==="both")&&this.total){let p=Fo({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:p})}return this.progressBarEl}ignoreEvent(){return!1}};function L0(s,e){return br.ViewPlugin.fromClass(class{constructor(t){this.view=t;this.progressDecorations=br.Decoration.none;let{progress:a}=this.getDeco(t);this.progressDecorations=a}update(t){if(t.docChanged||t.viewportChanged){let{progress:a}=this.getDeco(t.view);this.progressDecorations=a}}getDeco(t){let{state:a}=t,r=[];if(N0(e,t))return{progress:br.Decoration.none};for(let i of t.visibleRanges){let n,o,l;try{n=new Vd(a.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s\\[(.)\\]",{},i.from,i.to)}catch(d){console.debug(d);continue}if(e==null?void 0:e.settings.addTaskProgressBarToHeading){try{o=new Vd(a.doc,"^(#){1,6} ",{},i.from,i.to)}catch(d){console.debug(d);continue}this.processHeadings(o,r,t)}if(e==null?void 0:e.settings.addProgressBarToNonTaskBullet){try{l=new Vd(a.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s(?!\\[.\\])",{},i.from,i.to)}catch(d){console.debug(d);continue}this.processNonTaskBullets(l,r,t)}this.processBullets(n,r,t)}return{progress:br.Decoration.set(r.sort((i,n)=>i.from-n.from))}}processHeadings(t,a,r){for(;!t.next().done;){let{from:i,to:n}=t.value,o=r.state.doc.lineAt(i);if(!this.isPositionEnabledByHeading(r.state,o.from))continue;let l=this.calculateRangeForTransform(r.state,o.from);if(!l)continue;let d=this.extractTasksFromRange(l,r.state,!1);if(d.total===0)continue;let u=br.Decoration.widget({widget:new am(s,e,r,o.to,o.to,d.completed,d.total,d.inProgress||0,d.abandoned||0,d.notStarted||0,d.planned||0)});a.push(u.range(o.to,o.to))}}processBullets(t,a,r){var i;for(;!t.next().done;){let{from:n}=t.value,o=(i=r.state.doc.lineAt(n))==null?void 0:i.from;if(!this.isPositionEnabledByHeading(r.state,o))continue;let d=(0,Ki.syntaxTree)(r.state).resolveInner(o+1).type.prop(Ki.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(w=>d==null?void 0:d.split(" ").includes(w)))continue;let p=r.state.doc.lineAt(o),m=this.getDocumentText(r.state.doc,p.from,p.to),f=(e==null?void 0:e.settings.allowCustomProgressGoal)?Uy(m):null;if(!m||!/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/.test(m))continue;let h=this.calculateRangeForTransform(r.state,p.to);if(!h)continue;let k=this.getDocumentText(r.state.doc,h.from,h.to);if(!k||k.length===1)continue;let g=this.extractTasksFromRange(h,r.state,!0,f);if(g.total===0)continue;let y=br.Decoration.widget({widget:new am(s,e,r,p.to,p.to,g.completed,g.total,g.inProgress||0,g.abandoned||0,g.notStarted||0,g.planned||0),side:1});a.push(y.range(p.to,p.to))}}processNonTaskBullets(t,a,r){var i;for(;!t.next().done;){let{from:n}=t.value,o=(i=r.state.doc.lineAt(n))==null?void 0:i.from;if(!this.isPositionEnabledByHeading(r.state,o))continue;let d=(0,Ki.syntaxTree)(r.state).resolveInner(o+1).type.prop(Ki.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(y=>d==null?void 0:d.split(" ").includes(y)))continue;let p=r.state.doc.lineAt(o);if(!this.getDocumentText(r.state.doc,p.from,p.to))continue;let f=this.calculateRangeForTransform(r.state,p.to);if(!f)continue;let h=this.getDocumentText(r.state.doc,f.from,f.to);if(!h||h.length===1)continue;let k=this.extractTasksFromRange(f,r.state,!0);if(k.total===0)continue;let g=br.Decoration.widget({widget:new am(s,e,r,p.to,p.to,k.completed,k.total,k.inProgress||0,k.abandoned||0,k.notStarted||0,k.planned||0),side:1});a.push(g.range(p.to,p.to))}}extractTasksFromRange(t,a,r,i){let n=this.getDocumentTextArray(a.doc,t.from,t.to);return this.calculateTasksNum(n,r,i)}getDocumentText(t,a,r){try{return t.sliceString(a,r)}catch(i){return console.error("Error getting document text:",i),null}}getDocumentTextArray(t,a,r){let i=this.getDocumentText(t,a,r);return i?i.split(`
`):[]}calculateRangeForTransform(t,a){let r=t.doc.lineAt(a),i=(0,Ki.foldable)(t,r.from,r.to);return i?{from:r.from,to:i.to}:null}createTotalTaskRegex(t,a=0,r=4){if(e==null?void 0:e.settings.useOnlyCountMarks){let o=(e==null?void 0:e.settings.onlyCountTaskMarks)||"";if(!o.trim())return new RegExp("^$");let l=`\\[([ ${o}])\\]`;return t?new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${l}`):(e==null?void 0:e.settings.countSubLevel)?new RegExp(`^[\\t|\\s]*?([-*+]|\\d+\\.)\\s${l}`):new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${l}`)}let i=(e==null?void 0:e.settings.excludeTaskMarks)||"",n="\\[(.)\\]";return i&&i.length>0&&(n=`\\[([^${i.split("").map(l=>"\\"+l).join("")}])\\]`),t?new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${n}`):(e==null?void 0:e.settings.countSubLevel)?new RegExp(`^[\\t|\\s]*?([-*+]|\\d+\\.)\\s${n}`):new RegExp(`^[\\t|\\s]*([-*+]|\\d+\\.)\\s${n}`)}createCompletedTaskRegex(t,a,r=0,i=4){var m;let n=t==null?void 0:t.settings.useOnlyCountMarks,o=(t==null?void 0:t.settings.onlyCountTaskMarks)||"x|X";if(n&&!o.trim())return new RegExp("^$");let l=(t==null?void 0:t.settings.excludeTaskMarks)||"",d=((m=t==null?void 0:t.settings.taskStatuses)==null?void 0:m.completed)||"x|X",u=a?"^[\\t|\\s]*":(t==null?void 0:t.settings.countSubLevel)?"^[\\t|\\s]*?":"^[\\t|\\s]*",p=(a||(t==null?void 0:t.settings.countSubLevel),"([-*+]|\\d+\\.)\\s");if(n)return new RegExp(u+p+"\\[("+o+")\\]");if(l){let f=d.split("|"),h=l.split(""),k=f.filter(g=>!h.includes(g)).join("|");return new RegExp(u+p+"\\[("+k+")\\]")}else return new RegExp(u+p+"\\[("+d+")\\]")}isCompletedTask(t){var n,o;let a=t.match(/\[(.)]/);if(!a||!a[1])return!1;let r=a[1];return(e==null?void 0:e.settings.useOnlyCountMarks)?(e==null?void 0:e.settings.onlyCountTaskMarks.split("|")).includes(r):(e==null?void 0:e.settings.excludeTaskMarks)&&e.settings.excludeTaskMarks.includes(r)?!1:(((o=(n=e==null?void 0:e.settings.taskStatuses)==null?void 0:n.completed)==null?void 0:o.split("|"))||["x","X"]).includes(r)}getTaskStatus(t){let a=t.match(/\[(.)]/);if(!a||!a[1])return"notStarted";let r=a[1];return(e==null?void 0:e.settings.useOnlyCountMarks)?(e==null?void 0:e.settings.onlyCountTaskMarks.split("|")).includes(r)?"completed":this.determineNonCompletedStatus(r):(e==null?void 0:e.settings.excludeTaskMarks)&&e.settings.excludeTaskMarks.includes(r)?"notStarted":this.determineTaskStatus(r)}determineNonCompletedStatus(t){var n,o,l,d,u,p;return(((o=(n=e==null?void 0:e.settings.taskStatuses)==null?void 0:n.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(t)?"inProgress":(((d=(l=e==null?void 0:e.settings.taskStatuses)==null?void 0:l.abandoned)==null?void 0:d.split("|"))||[">"]).includes(t)?"abandoned":(((p=(u=e==null?void 0:e.settings.taskStatuses)==null?void 0:u.planned)==null?void 0:p.split("|"))||["?"]).includes(t)?"planned":(e==null?void 0:e.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(t){var l,d,u,p,m,f,h,k,g,y;return(((d=(l=e==null?void 0:e.settings.taskStatuses)==null?void 0:l.completed)==null?void 0:d.split("|"))||["x","X"]).includes(t)?"completed":(((p=(u=e==null?void 0:e.settings.taskStatuses)==null?void 0:u.inProgress)==null?void 0:p.split("|"))||["-","/"]).includes(t)?"inProgress":(((f=(m=e==null?void 0:e.settings.taskStatuses)==null?void 0:m.abandoned)==null?void 0:f.split("|"))||[">"]).includes(t)?"abandoned":(((k=(h=e==null?void 0:e.settings.taskStatuses)==null?void 0:h.planned)==null?void 0:k.split("|"))||["?"]).includes(t)?"planned":(((y=(g=e==null?void 0:e.settings.taskStatuses)==null?void 0:g.notStarted)==null?void 0:y.split("|"))||[" "]).includes(t)?"notStarted":(e==null?void 0:e.settings.countOtherStatusesAs)||"notStarted"}shouldExcludeTask(t){if(!(e==null?void 0:e.settings.excludeTaskMarks)||e.settings.excludeTaskMarks.length===0)return!1;let a=t.match(/\[(.)]/);if(a&&a[1]){let r=a[1];return e.settings.excludeTaskMarks.includes(r)}return!1}getTabSize(){var t,a,r;try{let i=s.vault,n=((t=i.getConfig)==null?void 0:t.call(i,"useTab"))===void 0||((a=i.getConfig)==null?void 0:a.call(i,"useTab"))===!0,o=(r=i.getConfig)==null?void 0:r.call(i,"tabSize"),l=typeof o=="number"?o:4;return n?l/4:l}catch(i){return console.error("Error getting tab size:",i),4}}findNearestPrecedingHeadingText(t,a){let r=t.doc.lineAt(a),i=t.doc.sliceString(r.from,r.to);if(/^#{1,6}\s+/.test(i.trim()))return i.trim();let n=null,o=-1;return(0,Ki.syntaxTree)(t).iterate({to:a,enter:l=>{if(l.type.name.startsWith("header")&&l.from<a&&l.from>o){o=l.from;let d=t.doc.lineAt(l.from);n=t.doc.sliceString(d.from,d.to).trim()}}}),n}isPositionEnabledByHeading(t,a){var i;if(!((i=e.settings.showProgressBarBasedOnHeading)==null?void 0:i.trim()))return!0;let r=this.findNearestPrecedingHeadingText(t,a);return!!(r&&e.settings.showProgressBarBasedOnHeading.split(",").includes(r))}calculateTasksNum(t,a,r){var y,w;if(!t||t.length===0)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0};if(t.length>1&&a){let v=((y=t[0].match(/^[\s|\t]*/))==null?void 0:y[0])||"",T=((w=t[1].match(/^[\s|\t]*/))==null?void 0:w[0])||"";if(v===T)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0}}let i=0,n=0,o=0,l=0,d=0,u=0,p=0,m=this.getTabSize(),f=[];if(!(e==null?void 0:e.settings.countSubLevel)&&a&&t[0]){let v=t[0].match(/^[\s|\t]*/);v&&(p=v[0].length/m)}let h=this.createTotalTaskRegex(!1,p,m),k=this.createTotalTaskRegex(!0),g=(e==null?void 0:e.settings.allowCustomProgressGoal)&&r!==null;for(let v=0;v<t.length;v++)if(v!==0){if(a){let T=t[v],x=T.trim();if(!(e==null?void 0:e.settings.countSubLevel)){let C=T.match(/^[\s|\t]*/);if((C?C[0].length/m:0)!==p+1)continue}if(x&&T.match(h)&&!this.shouldExcludeTask(x)){u++;let C=this.getTaskStatus(x),S=x.match(/\[(.)]/);S&&S[1]&&f.push({mark:S[1],status:C,lineText:x});let E=Uy(x);C==="completed"?(g||i++,g&&E!==null&&(i+=E)):C==="inProgress"?(g||n++,g&&E!==null&&(n+=E)):C==="abandoned"?(g||o++,g&&E!==null&&(o+=E)):C==="planned"?(g||d++,g&&E!==null&&(d+=E)):C==="notStarted"&&(g||l++,g&&E!==null&&(l+=E))}}else if(e==null?void 0:e.settings.addTaskProgressBarToHeading){let T=t[v],x=T.trim();if(!(e==null?void 0:e.settings.countSubLevel)){let C=T.match(/^[\s|\t]*/);if((C?C[0].length/m:0)!==0)continue}if(x&&T.match(k)&&!this.shouldExcludeTask(x)){u++;let C=this.getTaskStatus(x),S=x.match(/\[(.)]/);S&&S[1]&&f.push({mark:S[1],status:C,lineText:x}),C==="completed"?i++:C==="inProgress"?n++:C==="abandoned"?o++:C==="planned"?d++:C==="notStarted"&&l++}}}return g&&a&&(u=r||0),i=Math.min(i,u),n=Math.min(n,u-i),o=Math.min(o,u-i-n),d=Math.min(d,u-i-n-o),l=u-i-n-o-d,{completed:i,total:u,inProgress:n,abandoned:o,notStarted:l,planned:d}}},{provide:t=>[br.EditorView.decorations.of(a=>{var r;return((r=a.plugin(t))==null?void 0:r.progressDecorations)||br.Decoration.none})]})}var Ws=A(require("@codemirror/view")),sm=A(require("@codemirror/state")),fi=A(require("obsidian"));var Yy=class{constructor(e,t){this.settings=e,this.metadataCache=t}isTaskTimerEnabled(e){return!this.settings.enabled||!e?!1:this.checkFrontmatterCondition(e)||this.checkFolderCondition(e)||this.checkTagCondition(e)}checkFrontmatterCondition(e){if(!this.settings.metadataDetection.frontmatter)return!1;let t=this.metadataCache.getFileCache(e);if(!t||!t.frontmatter)return!1;let a=this.settings.metadataDetection.frontmatter,r=t.frontmatter[a];return Boolean(r)}checkFolderCondition(e){let t=this.settings.metadataDetection.folders;if(!t||t.length===0)return!1;let a=e.path;return t.some(r=>{if(!r.trim())return!1;let i=r.endsWith("/")?r:r+"/";return a.startsWith(i)||a.startsWith(r)})}checkTagCondition(e){let t=this.settings.metadataDetection.tags;if(!t||t.length===0)return!1;let a=this.metadataCache.getFileCache(e);if(!a||!a.tags)return!1;let r=a.tags.map(i=>i.tag.replace("#",""));return t.some(i=>{let n=i.replace("#","");return r.includes(n)})}updateSettings(e){this.settings=e}};var Ll=class{constructor(e){this.STORAGE_PREFIX="taskTimer_";this.TIMER_LIST_KEY="taskTimer_activeList";this.settings=e}generateBlockId(e){let t=e||this.settings.blockRefPrefix,a=Date.now().toString().slice(-6),r=Math.floor(Math.random()*1e4).toString().padStart(4,"0");return`${t}-${a}-${r}`}getStorageKey(e,t){return`${this.STORAGE_PREFIX}${e}#${t}`}startTimer(e,t){try{""+e+(t||"new");let a=t||this.generateBlockId(),r=this.getStorageKey(e,a),i=Date.now();if(!a)throw console.error("[TaskTimerManager] Failed to generate or use block ID"),new Error("Block ID generation failed");let n=this.getTimerState(r);if(n)return""+n.status,n.status==="paused"&&this.resumeTimer(r),a;let o={taskId:r,filePath:e,blockId:a,segments:[{startTime:i}],status:"running",createdAt:i};try{localStorage.setItem(r,JSON.stringify(o)),this.addToActiveList(r),""+r}catch(l){throw console.error("[TaskTimerManager] Failed to save timer to localStorage:",l),new Error("Failed to save timer state - localStorage may be full or unavailable")}return a}catch(a){throw console.error("[TaskTimerManager] Critical error starting timer:",a),a}}pauseTimer(e){let t=this.getTimerState(e);if(!t||t.status!=="running")return;let a=Date.now(),r=t.segments[t.segments.length-1];r&&!r.endTime&&(r.endTime=a,r.duration=a-r.startTime),t.status="paused",localStorage.setItem(e,JSON.stringify(t))}resumeTimer(e){let t=this.getTimerState(e);if(!t||t.status!=="paused")return;let a=Date.now();t.segments.push({startTime:a}),t.status="running",localStorage.setItem(e,JSON.stringify(t))}resetTimer(e){let t=this.getTimerState(e);if(!t)return;let a=Date.now();t.segments=[{startTime:a}],t.status="running",localStorage.setItem(e,JSON.stringify(t))}completeTimer(e){try{""+e;let t=this.getTimerState(e);if(!t)return console.warn(`[TaskTimerManager] Timer not found for completion: ${e}`),"";let a=Date.now();if(t.status==="running"){let n=t.segments[t.segments.length-1];n&&!n.endTime&&(n.endTime=a,n.duration=a-n.startTime)}let r=this.calculateTotalDuration(t);if(""+t.segments.length+r,r<0)return console.error(`[TaskTimerManager] Invalid duration calculated: ${r}ms`),this.formatDuration(0);try{this.removeTimer(e)}catch(n){console.error("[TaskTimerManager] Failed to remove timer from storage:",n)}let i=this.formatDuration(r);return""+i,i}catch(t){return console.error("[TaskTimerManager] Critical error completing timer:",t),""}}getTimerState(e){try{let t=localStorage.getItem(e);if(!t)return null;let a=JSON.parse(t);if(this.isLegacyFormat(a)){""+e;let r=this.migrateLegacyState(a);return localStorage.setItem(e,JSON.stringify(r)),r}return this.validateTimerState(a)?a:(console.error(`[TaskTimerManager] Invalid timer state structure for ${e}:`,a),localStorage.removeItem(e),null)}catch(t){console.error(`[TaskTimerManager] Error retrieving timer state for ${e}:`,t);try{localStorage.removeItem(e)}catch(a){console.error("[TaskTimerManager] Failed to clean up corrupted timer data:",a)}return null}}isLegacyFormat(e){return e&&typeof e.startTime=="number"&&!e.segments&&typeof e.totalPausedDuration=="number"}migrateLegacyState(e){let t=[];return e.status==="running"?t.push({startTime:e.startTime+e.totalPausedDuration}):e.status==="paused"&&e.pausedTime&&t.push({startTime:e.startTime+e.totalPausedDuration,endTime:e.pausedTime,duration:e.pausedTime-e.startTime-e.totalPausedDuration}),{taskId:e.taskId,filePath:e.filePath,blockId:e.blockId,segments:t,status:e.status,createdAt:e.createdAt,legacyStartTime:e.startTime,legacyPausedTime:e.pausedTime,legacyTotalPausedDuration:e.totalPausedDuration}}validateTimerState(e){return e&&typeof e.taskId=="string"&&typeof e.filePath=="string"&&typeof e.blockId=="string"&&Array.isArray(e.segments)&&typeof e.createdAt=="number"&&["idle","running","paused"].includes(e.status)}getAllActiveTimers(){let e=this.getActiveList(),t=[];for(let a of e){let r=this.getTimerState(a);r?t.push(r):this.removeFromActiveList(a)}return t}getTimerByFileAndBlock(e,t){let a=this.getStorageKey(e,t);return this.getTimerState(a)}removeTimer(e){localStorage.removeItem(e),this.removeFromActiveList(e)}calculateTotalDuration(e){let t=Date.now();return e.segments.reduce((a,r)=>{let i;return r.duration?i=r.duration:r.endTime?i=r.endTime-r.startTime:i=t-r.startTime,a+i},0)}getCurrentDuration(e){let t=this.getTimerState(e);return t?this.calculateTotalDuration(t):0}getSegmentCount(e){let t=this.getTimerState(e);return t?t.segments.length:0}getSegments(e){let t=this.getTimerState(e);return t?t.segments:[]}formatDuration(e){let t=Math.floor(e/1e3),a=Math.floor(t/60),r=Math.floor(a/60),i=a%60,n=t%60,o=this.settings.timeFormat;return o=o.replace("{h}",r.toString()),o=o.replace("{m}",i.toString()),o=o.replace("{s}",n.toString()),o=o.replace("{ms}",e.toString()),o=o.replace(/\b0hrs\b/g,""),o=o.replace(/\b0mins\b/g,""),o=o.replace(/\s+/g," ").trim(),o||"0s"}getActiveList(){let e=localStorage.getItem(this.TIMER_LIST_KEY);if(!e)return[];try{return JSON.parse(e)}catch(t){return console.error("Error parsing active timer list:",t),[]}}addToActiveList(e){let t=this.getActiveList();t.includes(e)||(t.push(e),localStorage.setItem(this.TIMER_LIST_KEY,JSON.stringify(t)))}removeFromActiveList(e){let a=this.getActiveList().filter(r=>r!==e);localStorage.setItem(this.TIMER_LIST_KEY,JSON.stringify(a))}updateSettings(e){this.settings=e}cleanup(e=24){let t=this.getActiveList(),a=Date.now(),r=e*60*60*1e3;for(let i of t){let n=this.getTimerState(i);if(!n){this.removeFromActiveList(i);continue}a-n.createdAt>r&&this.removeTimer(i)}}};var Ud=class{static parseTimeComponents(e){let t=Math.floor(e/1e3),a=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return{hours:a,minutes:r,seconds:i,totalMilliseconds:e}}static formatDuration(e,t){e<0&&(e=0);let a=this.parseTimeComponents(e),r=t;return r=r.replace(/\{h\}/g,a.hours.toString()),r=r.replace(/\{m\}/g,a.minutes.toString()),r=r.replace(/\{s\}/g,a.seconds.toString()),r=r.replace(/\{ms\}/g,a.totalMilliseconds.toString()),r=this.cleanupZeroValues(r),r=r.replace(/\s+/g," ").trim(),r||"0s"}static formatDurationSmart(e){let t=this.parseTimeComponents(e);return t.hours>0?t.minutes>0?`${t.hours}hrs${t.minutes}mins`:`${t.hours}hrs`:t.minutes>0?t.seconds>30?`${t.minutes+1}mins`:`${t.minutes}mins`:t.seconds>0?`${t.seconds}s`:"0s"}static formatForContext(e,t){let a=this.parseTimeComponents(e);switch(t){case"compact":return this.formatDurationSmart(e);case"detailed":let r=[];return a.hours>0&&r.push(`${a.hours}h`),a.minutes>0&&r.push(`${a.minutes}m`),a.seconds>0&&r.push(`${a.seconds}s`),r.join(" ")||"0s";case"precise":return a.hours>0?`${a.hours}:${a.minutes.toString().padStart(2,"0")}:${a.seconds.toString().padStart(2,"0")}`:`${a.minutes}:${a.seconds.toString().padStart(2,"0")}`;default:return this.formatDurationSmart(e)}}static validateTemplate(e){let t=/\{[hms]\}/g,a=/\{[^hms\}]*\}/g,r=t.test(e),i=a.test(e);return r&&!i}static getTemplateSuggestions(){let e=2*36e5+35*6e4+42*1e3;return[{template:"{h}hrs{m}mins",description:"Hours and minutes (default)",example:this.formatDuration(e,"{h}hrs{m}mins")},{template:"{h}h {m}m {s}s",description:"Full time with spaces",example:this.formatDuration(e,"{h}h {m}m {s}s")},{template:"{h}:{m}:{s}",description:"Clock format",example:this.formatDuration(e,"{h}:{m}:{s}")},{template:"{m}mins",description:"Minutes only",example:this.formatDuration(e,"{m}mins")},{template:"({h}h{m}m)",description:"Parentheses format",example:this.formatDuration(e,"({h}h{m}m)")}]}static cleanupZeroValues(e){return e=e.replace(/^0hrs?\b/i,""),e=e.replace(/^0mins?\b/i,""),e=e.replace(/^0secs?\b/i,""),e=e.replace(/^0s\b/i,""),e=e.replace(/\s+0hrs?\b/gi,""),e=e.replace(/\s+0mins?\b/gi,""),e=e.replace(/\s+0secs?\b/gi,""),e=e.replace(/\s+0s\b/gi,""),e=e.replace(/\b0[hm]\b\s*/g,""),e}static parseTimeString(e){let t=0,a=e.match(/(\d+)hrs?/i);a&&(t+=parseInt(a[1])*36e5);let r=e.match(/(\d+)mins?/i);r&&(t+=parseInt(r[1])*6e4);let i=e.match(/(\d+)s(?:ecs?)?/i);return i&&(t+=parseInt(i[1])*1e3),t}static formatForExport(e){let t=this.parseTimeComponents(e);return`PT${t.hours}H${t.minutes}M${t.seconds}S`}static parseFromExport(e){let t=e.match(/PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?/);if(!t)return 0;let a=parseInt(t[1]||"0"),r=parseInt(t[2]||"0"),i=parseInt(t[3]||"0");return a*36e5+r*6e4+i*1e3}};var Bs=A(require("@codemirror/view")),Qi=A(require("obsidian")),$d=A(require("@codemirror/state")),rm=A(require("@codemirror/language"));var gt=$d.Annotation.define(),H0={TODO:" ",DOING:"-","IN-PROGRESS":">",DONE:"x"},zy=class extends Bs.WidgetType{constructor(e,t,a,r,i,n,o){super();this.app=e;this.plugin=t;this.view=a;this.from=r;this.to=i;this.currentState=n;this.listPrefix=o;this.cycle=[];this.marks={};let l=this.getStatusConfig();this.cycle=l.cycle,this.marks=l.marks,this.isLivePreview=a.state.field(Qi.editorLivePreviewField),this.bulletText=o.trim()}eq(e){return this.from===e.from&&this.to===e.to&&this.currentState===e.currentState&&this.bulletText===e.bulletText}toDOM(){let{cycle:e,marks:t,excludeMarksFromCycle:a}=this.getStatusConfig(),r=this.currentState,i=e.filter(u=>!a.includes(u));if(i.length>0){let p=(i.indexOf(this.currentState)+1)%i.length;r=i[p]}let n=createEl("span",{cls:"task-status-widget",attr:{"aria-label":"Next status: "+r}});if(this.isLivePreview){let u=/^\d+[.)]$/.test(this.bulletText);n.createEl("span",{cls:u?"cm-formatting cm-formatting-list cm-formatting-list-ol":"cm-formatting cm-formatting-list cm-formatting-list-ul"},p=>{p.createEl("span",{cls:u?"list-number":"list-bullet",text:this.bulletText})})}let o=document.createElement("span");o.toggleClass(["task-state",this.isLivePreview?"live-preview-mode":"source-mode"],!0),this.isLivePreview?o.classList.add("live-preview-mode"):o.classList.add("source-mode");let l=t[this.currentState]||" ";o.setAttribute("data-task-state",l),o.textContent=this.currentState;let d=createEl("input",{attr:{type:"checkbox"}});return d.hide(),n.appendChild(d),o.addEventListener("click",u=>{if(u.preventDefault(),u.stopPropagation(),Yn(this.plugin)){d.click();return}if(Qi.Keymap.isModEvent(u)){let{cycle:p}=this.getStatusConfig();p.length>0&&(this.currentState!==p[p.length-1]?this.setTaskState(p[p.length-1]):this.setTaskState(p[0]))}else this.cycleTaskState()}),o.addEventListener("contextmenu",u=>{u.preventDefault(),u.stopPropagation();let p=new Qi.Menu;for(let m of this.cycle)p.addItem(f=>{f.setTitle(m),f.onClick(()=>{this.setTaskState(m)})});p.showAtMouseEvent(u)}),n.appendChild(o),n}setTaskState(e){let t=this.view.state.doc.sliceString(this.from,this.to);if(!t.match(/\[(.)]/))return;let r=this.marks[e]||" ",i=t.replace(/\[(.)]/,`[${r}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:i},annotations:gt.of("taskStatusChange")})}getStatusConfig(){return this.plugin.settings.enableTaskStatusSwitcher?{cycle:this.plugin.settings.taskStatusCycle,excludeMarksFromCycle:this.plugin.settings.excludeMarksFromCycle||[],marks:this.plugin.settings.taskStatusMarks}:{cycle:Object.keys(H0),marks:H0,excludeMarksFromCycle:[]}}cycleTaskState(){var f,h;let e=this.view.state.doc.sliceString(this.from,this.to),t=e.match(/\[(.)]/);if(!t)return;let a=t[1],{cycle:r,marks:i,excludeMarksFromCycle:n}=this.getStatusConfig(),o=r.filter(k=>!n.includes(k));if(o.length===0){let k=this.view.state.field(Qi.editorInfoField);k&&((h=(f=k==null?void 0:k.editor)==null?void 0:f.cm)==null||h.dispatch({selection:$d.EditorSelection.range(this.to+1,this.to+1)})),this.app.commands.executeCommandById("editor:toggle-checklist-status");return}let l=-1;for(let k=0;k<o.length;k++){let g=o[k];if(i[g]===a){l=k;break}}l===-1&&(l=0);let d=(l+1)%o.length,u=o[d],p=i[u]||" ",m=e.replace(/\[(.)]/,`[${p}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:m},annotations:gt.of("taskStatusChange"),selection:$d.EditorSelection.range(this.to+1,this.to+1)})}};function B0(s,e){class t{constructor(i){this.decorations=Bs.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.match=new Bs.MatchDecorator({regexp:/^(\s*)((?:[-*+]|\d+[.)])\s)(\[(.)]\s)/g,decorate:(i,n,o,l,d)=>{if(!this.shouldRender(d,n,o))return;let u=l[4],p=l[2],m=p.trim(),h=l[3].trim(),k=this.isLivePreview(d.state),g=e.settings.taskStatusCycle,y=e.settings.taskStatusMarks,w=e.settings.excludeMarksFromCycle||[],v=g.filter(x=>!w.includes(x));if(v.length===0&&!e.settings.enableCustomTaskMarks)return;let T=Object.keys(y).find(x=>y[x]===u)||v[0];if(!k&&e.settings.enableTextMarkInSourceMode){let x=n+l[1].length+p.length,C=x+h.length;i(x,C,Bs.Decoration.replace({widget:new zy(s,e,d,x,C,T,m)}))}else i(n+l[1].length,n+l[1].length+p.length+h.length,Bs.Decoration.replace({widget:new zy(s,e,d,n+l[1].length,n+l[1].length+p.length+h.length,T,m)}))}});this.view=i,this.updateDecorations(i)}update(i){let n=Date.now();(i.docChanged||i.viewportChanged||n-this.lastUpdate>this.updateThreshold&&i.selectionSet)&&(this.lastUpdate=n,this.updateDecorations(i.view,i))}destroy(){this.decorations=Bs.Decoration.none}updateDecorations(i,n){!n||n.docChanged||n.selectionSet||this.decorations.size===0?this.decorations=this.match.createDeco(i):this.decorations=this.match.updateDeco(n,this.decorations)}isLivePreview(i){return i.field(Qi.editorLivePreviewField)}shouldRender(i,n,o){let d=(0,rm.syntaxTree)(i.state).resolveInner(n+1).type.prop(rm.tokenClassNodeProp);if(d){let m=d.split(" ");if(m.includes("hmd-codeblock")||m.includes("hmd-frontmatter"))return!1}return!i.state.selection.ranges.some(m=>!(m.to<=n||m.from>=o))&&(this.isLivePreview(i.state)||e.settings.enableTextMarkInSourceMode)}}let a={decorations:r=>r.decorations.update({filter:(i,n,o)=>{var u;if(((u=o.spec)==null?void 0:u.widget).error)return!1;let d=r.view.state.selection;for(let p of d.ranges)if(!(p.to<=i||p.from>=n))return!1;return!0}})};return Bs.ViewPlugin.fromClass(t,a)}var qy=sm.Facet.define({combine:s=>s[0]||null}),W0=class extends Ws.WidgetType{constructor(e,t,a,r,i,n,o,l){super();this.state=e;this.settings=t;this.timerManager=a;this.lineFrom=r;this.lineTo=i;this.filePath=n;this.plugin=o;this.existingBlockId=l;this.dom=null;this.updateInterval=null;this.timerState=null;this.currentTaskStatus=null;this.existingBlockId&&this.loadTimerState()}eq(e){let t=this.state.doc.lineAt(this.lineFrom),a=this.getTaskStatus(t.text);return this.currentTaskStatus&&this.currentTaskStatus!==a?(this.currentTaskStatus,!1):a==="completed"?!1:this.lineFrom===e.lineFrom&&this.lineTo===e.lineTo&&this.filePath===e.filePath&&this.existingBlockId===e.existingBlockId}toDOM(){if(this.dom)return this.refreshUI(),this.dom;this.dom=createDiv({cls:"task-timer-widget"});let e=this.state.doc.lineAt(this.lineFrom);return this.currentTaskStatus=this.getTaskStatus(e.text),this.lineFrom,this.currentTaskStatus,this.existingBlockId,this.existingBlockId?this.loadTimerState():this.updateTimerState(),this.createContent(),this.dom}getTaskStatus(e){var i,n;let t=e.match(/\[([^\]]+)\]/);if(!t)return"pending";let a=t[1],r=((n=(i=this.plugin)==null?void 0:i.settings)==null?void 0:n.taskStatuses)||{completed:"x|X",inProgress:">|/",abandoned:"-",planned:"?",notStarted:" "};return r.completed.split("|").includes(a)?"completed":r.inProgress.split("|").includes(a)?"in-progress":r.abandoned.split("|").includes(a)?"cancelled":(r.notStarted.split("|").includes(a)||a===" ","pending")}createContent(){if(!this.dom)return;this.dom.empty();let e=this.state.doc.lineAt(this.lineFrom),t=this.getTaskStatus(e.text);if(this.currentTaskStatus=t,t!=="completed"){if(this.existingBlockId&&this.timerState&&this.timerState.status!=="idle"){let a=this.getTaskId(),r=a?this.timerManager.getCurrentDuration(a):0,i=Ud.formatDuration(r,this.settings.timeFormat),n=this.dom.createSpan();this.timerState.status==="paused"?n.setText(`\u23F8 ${i} (Paused) `):n.setText(`\u23F1 ${i} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer()),this.startRealtimeUpdates()):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer());return}if(t==="in-progress"&&this.existingBlockId)if(this.timerState&&this.timerState.status!=="idle"){let a=this.getTaskId(),r=a?this.timerManager.getCurrentDuration(a):0,i=Ud.formatDuration(r,this.settings.timeFormat),n=this.dom.createSpan();this.timerState.status==="paused"?n.setText(`\u23F8 ${i} (Paused) `):n.setText(`\u23F1 ${i} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer())}else{this.startTimer();return}else if(!this.timerState||this.timerState.status==="idle"){let a=this.dom.createSpan({cls:"task-timer-start"});a.setText("Start Task"),a.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.startTimer()})}else{let a=this.getTaskId(),r=a?this.timerManager.getCurrentDuration(a):0,i=Ud.formatDuration(r,this.settings.timeFormat),n=this.dom.createSpan();this.timerState.status==="paused"?n.setText(`\u23F8 ${i} (Paused) `):n.setText(`\u23F1 ${i} `),this.timerState.status==="running"?(this.addActionLink("Pause",()=>this.pauseTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())):this.timerState.status==="paused"&&(this.addActionLink("Resume",()=>this.resumeTimer()),this.dom.appendText(" | "),this.addActionLink("Complete",()=>this.completeTimer())),this.dom.appendText(" | "),this.addActionLink("Reset",()=>this.resetTimer())}}}addActionLink(e,t){if(!this.dom)return;let a=this.dom.createSpan({cls:"task-timer-action"});a.setText(e),a.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),t()})}getEditorView(){var r,i,n;let e=this.state.field(fi.editorEditorField,!1);if(e)return e;if((r=this.plugin)==null?void 0:r.app){let o=this.plugin.app.workspace.getActiveViewOfType(fi.MarkdownView);if(o==null?void 0:o.editor){let l=o.editor;if(l.cm)return l.cm;if(l.cm6)return l.cm6}}let t=window.app,a=(i=t==null?void 0:t.workspace)==null?void 0:i.activeLeaf;if((n=a==null?void 0:a.view)==null?void 0:n.editor){let o=a.view.editor;if(o.cm)return o.cm;if(o.cm6)return o.cm6}if(this.dom&&this.dom.parentElement){let o=this.dom.closest(".cm-content");if(o){let l=o.closest(".cm-editor");if(l&&l.cmView)return l.cmView.view}}return console.error("[TaskTimer] Could not find EditorView through any method"),null}updateTaskStatus(e){var l,d,u;let t=this.state.doc.lineAt(this.lineFrom),a=t.text,r=/^[\s|\t]*([-*+]|\d+\.)\s+\[[^]]*\]/;if(!a.match(r))return!1;let n=a.replace(/\[([^\]]*)\]/,e);if(""+a,""+e,""+n,n===a)return!1;let o=this.getEditorView();if(!o){let p=(u=(d=(l=this.plugin)==null?void 0:l.app)==null?void 0:d.workspace)==null?void 0:u.getActiveViewOfType(fi.MarkdownView);if(!(p==null?void 0:p.editor)||!p.file||p.file.path!==this.filePath)return!1;let m=t.number-1;return p.editor.setLine(m,n),!0}return o.dispatch({changes:{from:t.from,to:t.to,insert:n},annotations:gt.of("taskTimer")}),!0}startTimer(){var e,t,a,r,i,n,o,l,d;try{let u=this.getTaskId();if(!u){let p=this.timerManager.generateBlockId(this.settings.blockRefPrefix),m=this.getEditorView();if(m){let f=this.state.doc.lineAt(this.lineFrom),h=f.text,k=` ^${p}`,y=(((a=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:a.inProgress)||">|/").split("|")[0]||"/",w=h.replace(/\[([^\]]+)\]/,`[${y}]`).trimEnd()+k;""+f.number;try{m.dispatch({changes:{from:f.from,to:f.to,insert:w},annotations:gt.of("taskTimer")}),this.existingBlockId=p,u=`${this.filePath}#^${p}`,""+u,this.timerManager.startTimer(this.filePath,p),this.startRealtimeUpdates(),this.updateTimerState()}catch(v){console.error("[TaskTimer] Error dispatching change:",v);return}}else{console.error("[TaskTimer] No EditorView available");let f=this.state.field(fi.editorInfoField);if(f==null?void 0:f.editor){let h=this.state.doc.lineAt(this.lineFrom),k=h.text,y=(((n=(i=(r=this.plugin)==null?void 0:r.settings)==null?void 0:i.taskStatuses)==null?void 0:n.inProgress)||">|/").split("|")[0]||"/",w=k.replace(/\[([^\]]+)\]/,`[${y}]`).trimEnd()+` ^${p}`;try{f.editor.replaceRange(w,{line:h.number-1,ch:0},{line:h.number-1,ch:k.length}),this.existingBlockId=p,u=`${this.filePath}#^${p}`,""+u,this.timerManager.startTimer(this.filePath,p),this.startRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(v){console.error("[TaskTimer] Fallback also failed:",v);return}}return}}if(u&&this.existingBlockId){let p=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(p.text)!=="in-progress"){let h=(((d=(l=(o=this.plugin)==null?void 0:o.settings)==null?void 0:l.taskStatuses)==null?void 0:d.inProgress)||">|/").split("|")[0]||"/";this.updateTaskStatus(`[${h}]`)}""+u,this.timerManager.startTimer(this.filePath,this.existingBlockId),this.updateTimerState(),this.refreshUI()}}catch(u){console.error("[TaskTimer] Error starting timer:",u),this.updateTimerState()}}pauseTimer(){try{let e=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(e.text)==="completed"){console.warn("[TaskTimer] Cannot pause a completed task");return}let a=this.getTaskId();if(!a){console.warn("[TaskTimer] Cannot pause timer - no task ID found");return}""+a,this.timerManager.pauseTimer(a),this.stopRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error pausing timer:",e),this.updateTimerState()}}resumeTimer(){try{let e=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(e.text)==="completed"){console.warn("[TaskTimer] Cannot resume a completed task");return}let a=this.getTaskId();if(!a){console.warn("[TaskTimer] Cannot resume timer - no task ID found");return}""+a,this.timerManager.resumeTimer(a),this.startRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error resuming timer:",e),this.stopRealtimeUpdates(),this.updateTimerState()}}resetTimer(){try{let e=this.getTaskId();if(!e){console.warn("[TaskTimer] Cannot reset timer - no task ID found");return}""+e,this.timerManager.resetTimer(e),this.stopRealtimeUpdates(),this.updateTimerState(),this.refreshUI()}catch(e){console.error("[TaskTimer] Error resetting timer:",e),this.updateTimerState()}}completeTimer(){var e,t,a;try{let r=this.state.doc.lineAt(this.lineFrom);if(this.getTaskStatus(r.text)==="completed"){console.warn("[TaskTimer] Task is already completed");return}let n=this.getTaskId();if(!n){console.warn("[TaskTimer] Cannot complete timer - no task ID found");return}if(""+n,!this.timerManager.getTimerState(n)){console.warn("[TaskTimer] No timer state found for task:",n);return}let l=this.timerManager.completeTimer(n),d=this.getEditorView();if(d){let u=this.state.doc.lineAt(this.lineFrom),p=u.text,f=(((a=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:a.completed)||"x|X").split("|")[0]||"x",h=p.replace(/\[([^\]]+)\]/,`[${f}]`),k=h.match(/\s*\^[\w-]+\s*$/);if(k){let g=h.length-k[0].length;h=h.slice(0,g)+` (${l})`+h.slice(g)}else h=h.replace(/\s*$/,` (${l})`);try{d.dispatch({changes:{from:u.from,to:u.to,insert:h}})}catch(g){console.error("[TaskTimer] Error updating task:",g);let y=this.state.field(fi.editorInfoField);(y==null?void 0:y.editor)&&y.editor.replaceRange(h,{line:u.number-1,ch:0},{line:u.number-1,ch:p.length})}}else{console.error("[TaskTimer] No view available to complete task");return}this.stopRealtimeUpdates(),this.updateTimerState(),""+l}catch(r){console.error("[TaskTimer] Error completing timer:",r),this.updateTimerState()}}loadTimerState(){if(!this.existingBlockId)return;let e=this.getTaskId();e&&(this.timerState=this.timerManager.getTimerState(e),this.timerState&&(this.filePath,this.existingBlockId,this.timerState,this.timerState.status==="running"&&this.startRealtimeUpdates()))}updateTimerState(){let e=this.getTaskId();e&&(this.timerState=this.timerManager.getTimerState(e))}getTaskId(){return this.existingBlockId?`taskTimer_${this.filePath}#${this.existingBlockId}`:null}startRealtimeUpdates(){this.updateInterval&&clearInterval(this.updateInterval),this.updateInterval=window.setInterval(()=>{this.createContent()},1e3)}stopRealtimeUpdates(){this.updateInterval&&(clearInterval(this.updateInterval),this.updateInterval=null)}refreshUI(){!this.dom||(this.existingBlockId?this.loadTimerState():this.updateTimerState(),this.createContent())}destroy(){this.stopRealtimeUpdates(),this.dom&&(this.dom.remove(),this.dom=null)}},HY=sm.StateField.define({create(s){return _0(s)},update(s,e){let t=e.isUserEvent("undo")||e.isUserEvent("redo");return e.docChanged||e.effects.length>0||t?(e.docChanged&&BY(e),_0(e.state)):s},provide:s=>Ws.EditorView.decorations.from(s)});function _0(s){var d,u,p,m,f;let e=s.facet(qy);if(!((d=e==null?void 0:e.settings)==null?void 0:d.enabled))return Ws.Decoration.none;let t=s.field(fi.editorInfoField);if(!(t==null?void 0:t.app))return Ws.Decoration.none;let a=t.app.workspace.getActiveFile();if(!a)return Ws.Decoration.none;if(a.path,!new Yy(e.settings,e.metadataCache).isTaskTimerEnabled(a))return a.path,Ws.Decoration.none;let i=new Ll(e.settings),n=[],o=s.doc;o.lines;let l=1/0;for(let h=1;h<=o.lines;h++){let g=o.line(h).text;if(Gy(g)){let y=((u=g.match(/^(\s*)/))==null?void 0:u[1].length)||0;y<l&&(l=y)}}for(let h=1;h<=o.lines;h++){let k=o.line(h),g=k.text;if(Gy(g)&&(g.trim(),(((p=g.match(/^(\s*)/))==null?void 0:p[1].length)||0)===l)){let v=g.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(v){let C=v[1],S=((f=(m=e==null?void 0:e.plugin)==null?void 0:m.settings)==null?void 0:f.taskStatuses)||{completed:"x|X",abandoned:"-"};if(S.completed.split("|").includes(C)||S.abandoned.split("|").includes(C)&&!Ky(g))continue}let T=Ky(g),x=Ws.Decoration.widget({widget:new W0(s,e.settings,i,k.from,k.to,a.path,e.plugin,T),side:-1,block:!0});n.push(x.range(k.from))}}return n.length,Ws.Decoration.set(n,!0)}function Gy(s){return/^\s*[-*+]\s+\[[^\]]*\]/.test(s)}function Ky(s){let e=s.match(/\^([a-zA-Z0-9\-_]+)/);return e?e[1]:void 0}function BY(s){var n;let e=s.state.facet(qy);if(!((n=e==null?void 0:e.settings)==null?void 0:n.enabled)||!e.plugin)return;let t=s.state.field(fi.editorInfoField);if(!(t==null?void 0:t.app))return;let a=t.app.workspace.getActiveFile();if(!a)return;let r=new Ll(e.settings),i=s.state.doc;s.changes.iterChangedRanges((o,l,d,u)=>{var f,h;let p=i.lineAt(d).number,m=i.lineAt(u).number;for(let k=p;k<=m;k++){if(k>i.lines)continue;let y=i.line(k).text;if(!Gy(y))continue;let w=Ky(y);if(!w)continue;let v=y.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(!v)continue;let T=v[1],x=((h=(f=e==null?void 0:e.plugin)==null?void 0:f.settings)==null?void 0:h.taskStatuses)||{completed:"x|X",inProgress:">|/",abandoned:"-",notStarted:" "},C=x.inProgress.split("|"),S=x.abandoned.split("|"),E=x.completed.split("|"),P=x.notStarted.split("|"),I=`taskTimer_${a.path}#${w}`,L=r.getTimerState(I);""+T+I,C.includes(T)?!L||L.status==="idle"?r.startTimer(a.path,w):L.status==="paused"?r.resumeTimer(I):L.status==="running":S.includes(T)?L&&L.status==="running"?r.pauseTimer(I):L&&L.status==="paused":E.includes(T)?L&&(L.status==="running"||L.status==="paused")&&r.pauseTimer(I):P.includes(T)&&L&&r.resetTimer(I)}})}function V0(s){let e={settings:s.settings.taskTimer,metadataCache:s.app.metadataCache,plugin:s};return[qy.of(e),HY]}var im=A(require("obsidian"));function Qy(s){let e=s.cloneNode(!0);e.querySelectorAll("ul").forEach(i=>i.remove());let a=e.querySelector(".cm-task-progress-bar");a&&a.remove();let r=e.textContent||"";return r=r.trim(),r}function WY(s){if(!s)return null;let e=s.match(Nl);return e?Number(e[2]):null}function U0(s){if(!s)return null;let e=Qy(s);return e?WY(e):null}function $0(s){if(!s)return null;let e=s.getAttribute("data-custom-goal");if(e){let i=parseInt(e,10);if(!isNaN(i))return i}let t=Qy(s);if(!t)return null;let a=t.match(Nl);if(!a)return null;let r=parseInt(a[2],10);return s.setAttribute("data-custom-goal",r.toString()),r}function Y0(s){if(!s)return!1;let e=Qy(s);return e?!!e.match(Nl):!1}function Xy(s){let e=new Map;s.forEach(a=>{let r=a.parentElement;r&&(e.has(r)?e.get(r).push(a):e.set(r,[a]))});let t=[];return e.forEach((a,r)=>{t.push({parentElement:r,childrenElement:a})}),t}function Jy(s){var n;let e=s.findAll(".task-list-item"),t=s.findAll("h1, h2, h3, h4, h5, h6"),a=new Map;if(a.set(null,[]),t.length===0)return a.set(null,e),a;let r=null,i=[...t,...e].sort((o,l)=>{let d=o.getBoundingClientRect().top,u=l.getBoundingClientRect().top;return d-u});for(let o of i)o.matches("h1, h2, h3, h4, h5, h6")?(r=o,a.has(r)||a.set(r,[])):o.matches(".task-list-item")&&((n=a.get(r))==null||n.push(o));return a}function Zy(s,e,t){var a,r;for(let i of e)if(i.parentElement.parentElement&&((a=i.parentElement)==null?void 0:a.parentElement.hasClass("task-list-item"))){let n=new nm(s,i,t).onload(),o=i.parentElement.previousElementSibling;o&&o.tagName==="P"?((r=s.app.plugins.getPlugin("dataview"))==null?void 0:r._loaded)?i.parentElement.parentElement.insertBefore(n,i.parentElement):o.appendChild(n):i.parentElement.parentElement.insertBefore(n,i.parentElement)}}function ew(s,e,t){!s.settings.addTaskProgressBarToHeading||e.forEach((a,r)=>{if(!r||a.length===0)return;let i={parentElement:r,childrenElement:a},n=new nm(s,i,t).onload();r.appendChild(n)})}function z0({plugin:s,element:e,ctx:t}){var a,r;if(!O0(s,t)){if((a=s.settings.showProgressBarBasedOnHeading)==null?void 0:a.trim()){let i=t.getSectionInfo(e);if(i){let n=i.text.split(`
`),o=null,l=-1;for(let d=i.lineStart;d>=0;d--){let u=n[d];if(u.match(/^(#{1,6})\s+(.+)$/)){o=u.trim(),l=d;break}}if(o){if(!s.settings.showProgressBarBasedOnHeading.split(",").map(u=>u.trim()).includes(o)){e.addClass("no-progress-bar");return}}else e.addClass("no-progress-bar")}}if(s.settings.addTaskProgressBarToHeading&&e.children[0]&&e.children[0].matches("h1, h2, h3, h4, h5, h6")){if(e.find(".cm-task-progress-bar"))return;let i=t.getSectionInfo(e);if(i){let n=i.text.split(`
`),o=[],l=n[i.lineStart],d=l.match(/^(#{1,6})\s/);if(!d)return;let u=d[1].length,p=!1;for(let f of n.slice(i.lineStart)){let h=f.match(/^(#{1,6})\s/);if(h){let k=h[1].length;if(p&&k<=u)break}p||(p=!0),o.push(f)}if(((r=s.settings.showProgressBarBasedOnHeading)==null?void 0:r.trim())&&!s.settings.showProgressBarBasedOnHeading.split(",").map(h=>h.trim()).includes(l.trim())){e.addClass("no-progress-bar");return}let m=o.filter(f=>f.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(m.length>0){let f=[];for(let g of m){let y=createEl("li",{cls:"task-list-item"}),w=g.match(/\[(.)\]/);if(w&&w[1]){let T=w[1];y.setAttribute("data-task",T);let x=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});s.settings.taskStatuses.completed.split("|").includes(T)&&(x.checked=!0),y.prepend(x)}let v=g.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");y.appendChild(createSpan({text:v})),f.push(y)}let h={parentElement:e.children[0],childrenElement:f},k=new nm(s,h,"normal",{sectionInfo:i,ctx:t,element:e}).onload();e.children[0].appendChild(k)}}}if(e.find("ul.contains-task-list")){let i=e.findAll(".task-list-item"),n=Xy(i);if(Zy(s,n,"normal"),s.settings.addTaskProgressBarToHeading){let o=Jy(e);ew(s,o,"normal")}}else if(e.find("ol.contains-task-list")){let i=e.findAll(".task-list-item"),n=Xy(i);if(Zy(s,n,"normal"),s.settings.addTaskProgressBarToHeading){let o=Jy(e);ew(s,o,"normal")}}else if(e.closest(".dataview-container")){let i=e.closest(".dataview-container");if(!i||i.getAttribute("data-task-progress-bar")==="true")return;let n=i.findAll(".task-list-item"),o=Xy(n);if(Zy(s,o,"dataview"),s.settings.addTaskProgressBarToHeading){let l=Jy(i);ew(s,l,"dataview")}i.setAttribute("data-task-progress-bar","true")}}}var nm=class extends im.Component{constructor(e,t,a,r){super();this.type=a;this.debounceUpdateFromModifiedFile=(0,im.debounce)(()=>{this.updateFromModifiedFile()},200);this.plugin=e,this.group=t,this.info=r,this.completed=0,this.total=0,this.inProgress=0,this.abandoned=0,this.notStarted=0,this.planned=0,a==="dataview"?this.updateCompletedAndTotalDataview():this.updateCompletedAndTotal();for(let i of this.group.childrenElement)this.type==="normal"?i.on("click","input",()=>{setTimeout(()=>{if(this.updateCompletedAndTotal(),this.changePercentage(),this.changeNumber(),this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let n=this.group.parentElement.closest(".markdown-reading-view");n&&(n.hide(),setTimeout(()=>{n.show()},10))}},200)}):this.type==="dataview"&&this.registerDomEvent(i,"mousedown",n=>{!n.target||n.target.tagName==="INPUT"&&setTimeout(()=>{if(this.updateCompletedAndTotalDataview(),this.changePercentage(),this.changeNumber(),this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let o=this.group.parentElement.closest(".markdown-reading-view");o&&(o.hide(),setTimeout(()=>{o.show()},10))}},200)});this.setupFileMonitoring()}setupFileMonitoring(){var t;if(!this.info)return;let e=(t=this.info.ctx)==null?void 0:t.sourcePath;!e||this.registerEvent(this.plugin.app.vault.on("modify",a=>{e===a.path&&this.debounceUpdateFromModifiedFile()}))}updateFromModifiedFile(){var h,k,g;if(!this.info||!this.info.ctx||!this.info.element||!this.info.sectionInfo){this.unload();return}let{ctx:e,element:t,sectionInfo:a}=this.info,r=e.getSectionInfo(t);if(!r){this.unload();return}this.info.sectionInfo=r;let i=r.text.split(`
`),n=[],l=i[r.lineStart].match(/^(#{1,6})\s/);if(!l){this.unload();return}let d=l[1].length,u=!1;for(let y of i.slice(r.lineStart)){let w=y.match(/^(#{1,6})\s/);if(w){let v=w[1].length;if(u&&v<=d)break}u||(u=!0),n.push(y)}let p=n.filter(y=>y.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(p.length===0){this.unload();return}let m=[];for(let y of p){let w=createEl("li",{cls:"task-list-item"}),v=y.match(/\[(.)\]/);if(v&&v[1]){let x=v[1];w.setAttribute("data-task",x);let C=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});this.plugin.settings.taskStatuses.completed.split("|").includes(x)&&(C.checked=!0),w.prepend(C)}let T=y.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");w.appendChild(createSpan({text:T})),m.push(w)}if(this.group.childrenElement=m,this.updateCompletedAndTotal(),this.inProgress>0&&!this.inProgressEl||this.inProgress===0&&this.inProgressEl||this.abandoned>0&&!this.abandonedEl||this.abandoned===0&&this.abandonedEl||this.planned>0&&!this.plannedEl||this.planned===0&&this.plannedEl){if(this.progressBarEl&&this.progressBarEl.parentElement){let y=this.progressBarEl.parentElement;(h=this.progressBarEl)==null||h.detach(),this.onunload();let w=this.onload();this.progressBarEl.remove(),y.appendChild(w),(((k=this.plugin)==null?void 0:k.settings.progressBarDisplayMode)==="text"||((g=this.plugin)==null?void 0:g.settings.progressBarDisplayMode)==="none")&&this.progressBackGroundEl.hide()}}else this.changePercentage(),this.changeNumber()}getTaskStatusFromDataTask(e){var t,a,r;return((t=this.plugin)==null?void 0:t.settings.useOnlyCountMarks)?((a=this.plugin)==null?void 0:a.settings.onlyCountTaskMarks.split("|")).includes(e)?"completed":this.determineNonCompletedStatusFromDataTask(e):((r=this.plugin)==null?void 0:r.settings.excludeTaskMarks)&&this.plugin.settings.excludeTaskMarks.includes(e)?"notStarted":this.determineTaskStatusFromDataTask(e)}getTaskStatus(e){var r,i,n;let t=e.match(/\[(.)]/);if(!t||!t[1])return"notStarted";let a=t[1];return((r=this.plugin)==null?void 0:r.settings.useOnlyCountMarks)?((i=this.plugin)==null?void 0:i.settings.onlyCountTaskMarks.split("|")).includes(a)?"completed":this.determineNonCompletedStatus(a):((n=this.plugin)==null?void 0:n.settings.excludeTaskMarks)&&this.plugin.settings.excludeTaskMarks.includes(a)?"notStarted":this.determineTaskStatus(a)}determineNonCompletedStatusFromDataTask(e){var i,n,o,l,d,u,p;return(((n=(i=this.plugin)==null?void 0:i.settings.taskStatuses.inProgress)==null?void 0:n.split("|"))||["-","/"]).includes(e)?"inProgress":(((l=(o=this.plugin)==null?void 0:o.settings.taskStatuses.abandoned)==null?void 0:l.split("|"))||[">"]).includes(e)?"abandoned":(((u=(d=this.plugin)==null?void 0:d.settings.taskStatuses.planned)==null?void 0:u.split("|"))||["?"]).includes(e)?"planned":((p=this.plugin)==null?void 0:p.settings.countOtherStatusesAs)||"notStarted"}determineNonCompletedStatus(e){var i,n,o,l,d,u,p;return(((n=(i=this.plugin)==null?void 0:i.settings.taskStatuses.inProgress)==null?void 0:n.split("|"))||["-","/"]).includes(e)?"inProgress":(((l=(o=this.plugin)==null?void 0:o.settings.taskStatuses.abandoned)==null?void 0:l.split("|"))||[">"]).includes(e)?"abandoned":(((u=(d=this.plugin)==null?void 0:d.settings.taskStatuses.planned)==null?void 0:u.split("|"))||["?"]).includes(e)?"planned":((p=this.plugin)==null?void 0:p.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatusFromDataTask(e){var o,l,d,u,p,m,f,h,k,g,y;return(((l=(o=this.plugin)==null?void 0:o.settings.taskStatuses.completed)==null?void 0:l.split("|"))||["x","X"]).includes(e)?"completed":(((u=(d=this.plugin)==null?void 0:d.settings.taskStatuses.inProgress)==null?void 0:u.split("|"))||["-","/"]).includes(e)?"inProgress":(((m=(p=this.plugin)==null?void 0:p.settings.taskStatuses.abandoned)==null?void 0:m.split("|"))||[">"]).includes(e)?"abandoned":(((h=(f=this.plugin)==null?void 0:f.settings.taskStatuses.planned)==null?void 0:h.split("|"))||["?"]).includes(e)?"planned":(((g=(k=this.plugin)==null?void 0:k.settings.taskStatuses.notStarted)==null?void 0:g.split("|"))||[" "]).includes(e)?"notStarted":((y=this.plugin)==null?void 0:y.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var o,l,d,u,p,m,f,h,k;return((o=this.plugin)==null?void 0:o.settings.taskStatuses.completed.split("|")).includes(e)?"completed":((d=(l=this.plugin)==null?void 0:l.settings.taskStatuses.inProgress)==null?void 0:d.split("|")).includes(e)?"inProgress":((p=(u=this.plugin)==null?void 0:u.settings.taskStatuses.abandoned)==null?void 0:p.split("|")).includes(e)?"abandoned":((f=(m=this.plugin)==null?void 0:m.settings.taskStatuses.planned)==null?void 0:f.split("|")).includes(e)?"planned":(((k=(h=this.plugin)==null?void 0:h.settings.taskStatuses.notStarted)==null?void 0:k.split("|")).includes(e),"notStarted")}isCompletedTaskFromDataTask(e){var a,r,i,n;return((a=this.plugin)==null?void 0:a.settings.useOnlyCountMarks)?((r=this.plugin)==null?void 0:r.settings.onlyCountTaskMarks.split("|")).includes(e):((i=this.plugin)==null?void 0:i.settings.excludeTaskMarks)&&this.plugin.settings.excludeTaskMarks.includes(e)?!1:((n=this.plugin)==null?void 0:n.settings.taskStatuses.completed.split("|")).includes(e)}isCompletedTask(e){var i,n,o,l;let t=e.match(/\[(.)]/);if(!t||!t[1])return!1;let a=t[1];return((i=this.plugin)==null?void 0:i.settings.useOnlyCountMarks)?((n=this.plugin)==null?void 0:n.settings.onlyCountTaskMarks.split("|")).includes(a):((o=this.plugin)==null?void 0:o.settings.excludeTaskMarks)&&this.plugin.settings.excludeTaskMarks.includes(a)?!1:((l=this.plugin)==null?void 0:l.settings.taskStatuses.completed.split("|")).includes(a)}updateCompletedAndTotalDataview(){var l,d,u,p;let e=0,t=0,a=0,r=0,i=0,n=0,o=new Map;for(let m of this.group.childrenElement){let f=m.parentElement;f&&(o.has(f)||o.set(f,[]),(l=o.get(f))==null||l.push(m))}for(let m of this.group.childrenElement){let f=m.querySelector(".task-list-item-checkbox");if(!f)continue;if(!((d=this.plugin)==null?void 0:d.settings.countSubLevel)){let k=m.parentElement;if(k&&k.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let g=m.closest("li");if(g){let y=g.parentElement;if((u=y==null?void 0:y.parentElement)==null?void 0:u.closest("li"))continue}}}n++;let h=m.getAttribute("data-task");if(h){let k=this.getTaskStatusFromDataTask(h);this.isCompletedTaskFromDataTask(h)?e++:k==="inProgress"?t++:k==="abandoned"?a++:k==="planned"?r++:k==="notStarted"&&i++}else{let k=((p=m.textContent)==null?void 0:p.trim())||"",g=k.match(/\[(.)]/);if(g&&g[1]){let y=this.getTaskStatus(k);this.isCompletedTask(k)?e++:y==="inProgress"?t++:y==="abandoned"?a++:y==="planned"?r++:y==="notStarted"&&i++}else f.checked?e++:i++}}this.completed=e,this.inProgress=t,this.abandoned=a,this.planned=r,this.notStarted=i,this.total=n}countTasks(e){var l,d,u;let t=0,a=0,r=0,i=0,n=0,o=0;for(let p of e){let m=null,f=((l=this.plugin)==null?void 0:l.settings.allowCustomProgressGoal)&&Y0((d=p.parentElement)==null?void 0:d.parentElement),h=p.querySelector(".task-list-item-checkbox");if(!h)continue;let k=p.getAttribute("data-task");if(k){let g=this.getTaskStatusFromDataTask(k);f&&(m=U0(p)),this.isCompletedTaskFromDataTask(k)?(f||t++,m!==null&&(t+=m)):g==="inProgress"?(f||a++,f&&m!==null&&(a+=m)):g==="abandoned"?(f||r++,f&&m!==null&&(r+=m)):g==="planned"?(f||i++,f&&m!==null&&(i+=m)):g==="notStarted"&&(f||n++,f&&m!==null&&(n+=m))}else{let g=((u=p.textContent)==null?void 0:u.trim())||"",y=h,w=g.match(/\[(.)]/);if(w&&w[1]){let v=this.getTaskStatus(g);this.isCompletedTask(g)?t++:v==="inProgress"?a++:v==="abandoned"?r++:v==="planned"?i++:v==="notStarted"&&n++}else y.checked?t++:n++}o++}return{completed:t,inProgress:a,abandoned:r,planned:i,notStarted:n,total:o}}updateCompletedAndTotal(){var d,u,p,m,f;let e=0,t=new Map;for(let h of this.group.childrenElement){let k=h.parentElement;k&&(t.has(k)||t.set(k,[]),(d=t.get(k))==null||d.push(h))}let a=[];for(let h of this.group.childrenElement){if(!h.querySelector(".task-list-item-checkbox"))continue;if(a.push(h),(u=this.plugin)==null?void 0:u.settings.countSubLevel){if((m=this.plugin)==null?void 0:m.settings.countSubLevel){let y=h.findAll(".task-list-item");for(let w of y)e++,a.push(w)}}else{let y=h.parentElement;if(y&&y.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let w=h.closest("li");if(w){let v=w.parentElement;if((p=v==null?void 0:v.parentElement)==null?void 0:p.closest("li"))continue}}}let g=$0((f=h.parentElement)==null?void 0:f.parentElement);g?e=g:e++}let{completed:r,inProgress:i,abandoned:n,planned:o,notStarted:l}=this.countTasks(a);this.completed=r,this.inProgress=i,this.abandoned=n,this.planned=o,this.notStarted=l,this.total=e}changePercentage(){if(this.total===0)return;let e=Math.round(this.completed/this.total*1e4)/100,t=Math.round(this.inProgress/this.total*1e4)/100,a=Math.round(this.abandoned/this.total*1e4)/100,r=Math.round(this.planned/this.total*1e4)/100;this.progressEl.style.width=e+"%",this.inProgressEl&&(this.inProgressEl.style.width=t+"%",this.inProgressEl.style.left=e+"%"),this.abandonedEl&&(this.abandonedEl.style.width=a+"%",this.abandonedEl.style.left=e+t+"%"),this.plannedEl&&(this.plannedEl.style.width=r+"%",this.plannedEl.style.left=e+t+a+"%");let i="progress-bar-inline";switch(!0){case e===0:i+=" progress-bar-inline-empty";break;case(e>0&&e<25):i+=" progress-bar-inline-0";break;case(e>=25&&e<50):i+=" progress-bar-inline-1";break;case(e>=50&&e<75):i+=" progress-bar-inline-2";break;case(e>=75&&e<100):i+=" progress-bar-inline-3";break;case e>=100:i+=" progress-bar-inline-complete";break}t>0&&(i+=" has-in-progress"),a>0&&(i+=" has-abandoned"),r>0&&(i+=" has-planned"),this.progressEl.className=i}changeNumber(){var e,t;if(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="text"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="both"){let a=Fo({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl?this.numberEl.innerText=a:this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:a})}}onload(){var e,t,a,r,i,n;if(this.progressBarEl=createSpan(((e=this.plugin)==null?void 0:e.settings.progressBarDisplayMode)==="both"||((t=this.plugin)==null?void 0:t.settings.progressBarDisplayMode)==="text"?"cm-task-progress-bar with-number":"cm-task-progress-bar"),this.progressBackGroundEl=this.progressBarEl.createEl("div",{cls:"progress-bar-inline-background"}),this.progressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-completed"}),this.inProgress>0&&(this.inProgressEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-in-progress"})),this.abandoned>0&&(this.abandonedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-abandoned"})),this.planned>0&&(this.plannedEl=this.progressBackGroundEl.createEl("div",{cls:"progress-bar-inline progress-planned"})),((a=this.plugin)==null?void 0:a.settings.progressBarDisplayMode)==="both"||((r=this.plugin)==null?void 0:r.settings.progressBarDisplayMode)==="text"){let o=Fo({completed:this.completed,total:this.total,inProgress:this.inProgress,abandoned:this.abandoned,notStarted:this.notStarted,planned:this.planned},this.plugin);this.numberEl=this.progressBarEl.createEl("div",{cls:"progress-status",text:o})}return this.changePercentage(),(((i=this.plugin)==null?void 0:i.settings.progressBarDisplayMode)==="text"||((n=this.plugin)==null?void 0:n.settings.progressBarDisplayMode)==="none")&&this.progressBackGroundEl.hide(),this.plugin.addChild(this),this.progressBarEl}onunload(){super.onunload()}};var Kl=A(require("obsidian"));xa();function cj({plugin:s,element:e,ctx:t}){let a=e.findAll(".task-list-item"),r=new Set;for(let i of a){if(i.querySelector(".task-text-mark")||r.has(i))continue;r.add(i);let n=i.querySelector(".task-list-item-checkbox");if(!n)continue;let o=i.getAttribute("data-task")||" ";new dj(s,i,n,o,t).load()}}var dj=class extends Kl.Component{constructor(e,t,a,r,i){super();this.plugin=e;this.taskItem=t;this.originalCheckbox=a;this.currentMark=r;this.ctx=i;this.debounceCycleTaskStatus=(0,Kl.debounce)(()=>{this.cycleTaskStatus()},200)}load(){var e,t,a,r;if(!((t=(e=this.ctx)==null?void 0:e.el)==null?void 0:t.hasClass("planner-sticky-block-content"))){if(this.plugin.settings.enableCustomTaskMarks)this.markContainerEl=createEl("span",{cls:"task-state-container",attr:{"data-task-state":this.currentMark}}),this.bulletEl=this.markContainerEl.createEl("span",{cls:"task-fake-bullet"}),this.markEl=this.markContainerEl.createEl("span",{cls:"task-state",attr:{"data-task-state":this.currentMark}}),this.styleMarkByStatus(),(a=this.originalCheckbox.parentElement)==null||a.insertBefore(this.markContainerEl,this.originalCheckbox.nextSibling),this.registerDomEvent(this.markEl,"click",i=>{i.preventDefault(),i.stopPropagation(),this.debounceCycleTaskStatus()});else{let i=this.originalCheckbox.cloneNode(!0);(r=this.originalCheckbox.parentElement)==null||r.insertBefore(i,this.originalCheckbox.nextSibling),this.registerDomEvent(i,"click",n=>{n.preventDefault(),n.stopPropagation(),this.debounceCycleTaskStatus()})}return this.originalCheckbox.hide(),this}}styleMarkByStatus(){this.markEl.empty();let e=this.getTaskStatusFromMark(this.currentMark);e?this.markEl.setText(e):this.markEl.setText(this.currentMark)}triggerMarkUpdate(e){this.plugin.settings.enableCustomTaskMarks&&(this.taskItem.setAttribute("data-task",e),this.markEl.setAttribute("data-task-state",e),this.styleMarkByStatus())}cycleTaskStatus(){var g;let e=this.ctx.getSectionInfo(this.taskItem),t=this.ctx.sourcePath?this.plugin.app.vault.getFileByPath(this.ctx.sourcePath):null;if(!t||!(t instanceof Kl.TFile))return;let a=null;if(!e){if((g=this.ctx.containerEl)==null?void 0:g.cmView){let y=this.ctx.containerEl.cmView;y.widget.clazz==="cm-callout"&&(a={lineStart:0,start:y.widget.start,end:y.widget.end,text:y.widget.text})}if(!a)return}let r=this.plugin.settings.taskStatusCycle||[],i=this.plugin.settings.taskStatusMarks||{},n=this.plugin.settings.excludeMarksFromCycle||[],o=r.filter(y=>!n.includes(y));if(o.length===0)return;let l=Object.keys(i).find(y=>i[y]===this.currentMark)||o[0],u=(o.indexOf(l)+1)%o.length,p=o[u],m=i[p]||" ",f=Yn(this.plugin),h=p==="DONE"&&f,k=l==="DONE";this.plugin.app.vault.process(t,y=>{var x;let w=y.split(`
`),v,T;if(e){let C=parseInt(this.taskItem.getAttribute("data-line")||"0");v=e.lineStart+C,T=w[v]}else if(a){let C=parseInt(((x=this.taskItem.querySelector("input"))==null?void 0:x.getAttribute("data-line"))||"0");v=y.substring(0,a.start).split(`
`).length-1+C,T=w[v]}else return y;if(h){let C=f.executeToggleTaskDoneCommand(T,t.path),S=C.split(`
`);S.length===1?w[v]=C:w.splice(v,1,...S),this.currentMark=m,this.triggerMarkUpdate(m),this.originalCheckbox.checked=!0}else{let C=T;if(k&&(C=C.replace(/\s+✅\s+\d{4}-\d{2}-\d{2}/,"")),C=C.replace(/(\s*[-*+]\s*\[)(.)(])/,`$1${m}$3`),C!==T){w[v]=C,this.currentMark=m,this.triggerMarkUpdate(m);let S=this.plugin.settings.taskStatuses.completed.split("|");this.originalCheckbox.checked=S.includes(m)}}if(m==="x"||m==="X"){let C=Gn(t.path,T,v,this.plugin.settings.preferMetadataFormat,this.plugin);C&&this.plugin.app.workspace.trigger("task-genius:task-completed",C)}return w.join(`
`)})}getTaskStatusFromMark(e){let t=this.plugin.settings.taskStatusCycle,a=this.plugin.settings.taskStatusMarks,r=this.plugin.settings.excludeMarksFromCycle||[],i=t.filter(o=>!r.includes(o));return i.length===0?null:Object.keys(a).find(o=>a[o]===e)||i[0]}unload(){this.markEl&&this.markEl.remove(),this.bulletEl&&this.bulletEl.remove(),this.originalCheckbox&&(this.originalCheckbox.style.display=""),super.unload()}};Q();var gi;(function(t){t.WHITELIST="whitelist",t.BLACKLIST="blacklist"})(gi||(gi={}));var me={progressBarDisplayMode:"both",supportHoverToShowProgressInfo:!1,addProgressBarToNonTaskBullet:!1,addTaskProgressBarToHeading:!1,enableProgressbarInReadingMode:!1,countSubLevel:!1,displayMode:"bracketFraction",customFormat:"[{{COMPLETED}}/{{TOTAL}}]",showPercentage:!1,customizeProgressRanges:!1,progressRanges:[{min:0,max:20,text:c("Just started")+" {{PROGRESS}}%"},{min:20,max:40,text:c("Making progress")+" {{PROGRESS}}% "},{min:40,max:60,text:c("Half way")+" {{PROGRESS}}% "},{min:60,max:80,text:c("Good progress")+" {{PROGRESS}}% "},{min:80,max:100,text:c("Almost there")+" {{PROGRESS}}% "}],allowCustomProgressGoal:!1,hideProgressBarBasedOnConditions:!1,hideProgressBarTags:"no-progress,hide-progress",hideProgressBarFolders:"",hideProgressBarMetadata:"hide-progress-bar",showProgressBarBasedOnHeading:"",projectViewDefaultMode:"list",projectTreeAutoExpand:!1,projectTreeShowEmptyFolders:!1,projectPathSeparator:"/",autoCompleteParent:!1,markParentInProgressWhenPartiallyComplete:!1,taskStatuses:{completed:"x|X",inProgress:">|/",abandoned:"-",planned:"?",notStarted:" "},countOtherStatusesAs:"notStarted",excludeTaskMarks:"",useOnlyCountMarks:!1,onlyCountTaskMarks:"x|X|>|/",enableTaskStatusSwitcher:!1,enableCustomTaskMarks:!1,enableTextMarkInSourceMode:!1,enableCycleCompleteStatus:!1,taskStatusCycle:["Not Started","In Progress","Completed","Abandoned","Planned"],taskStatusMarks:{"Not Started":" ","In Progress":"/",Completed:"x",Abandoned:"-",Planned:"?"},excludeMarksFromCycle:[],enableTaskGeniusIcons:!1,enablePriorityPicker:!1,enablePriorityKeyboardShortcuts:!1,enableDatePicker:!1,recurrenceDateBase:"due",taskFilter:{enableTaskFilter:!1,presetTaskFilters:[]},taskGutter:{enableTaskGutter:!1},completedTaskMover:{enableCompletedTaskMover:!1,taskMarkerType:"date",versionMarker:"version 1.0",dateMarker:c("archived on")+" {{date}}",customMarker:c("moved")+" {{DATE:YYYY-MM-DD HH:mm}}",treatAbandonedAsCompleted:!1,completeAllMovedTasks:!0,withCurrentFileLink:!0,enableAutoMove:!1,defaultTargetFile:"Archive.md",defaultInsertionMode:"end",defaultHeadingName:"Completed Tasks",enableIncompletedTaskMover:!0,incompletedTaskMarkerType:"date",incompletedVersionMarker:"version 1.0",incompletedDateMarker:c("moved on")+" {{date}}",incompletedCustomMarker:c("moved")+" {{DATE:YYYY-MM-DD HH:mm}}",withCurrentFileLinkForIncompleted:!0,enableIncompletedAutoMove:!1,incompletedDefaultTargetFile:"Backlog.md",incompletedDefaultInsertionMode:"end",incompletedDefaultHeadingName:"Incomplete Tasks"},quickCapture:{enableQuickCapture:!1,targetFile:"QuickCapture.md",placeholder:c("Capture your thoughts..."),appendToFile:"append",targetType:"fixed",targetHeading:"",dailyNoteSettings:{format:"YYYY-MM-DD",folder:"",template:""},enableMinimalMode:!1,minimalModeSettings:{suggestTrigger:"/"}},workflow:{enableWorkflow:!1,autoAddTimestamp:!1,timestampFormat:"YYYY-MM-DD HH:mm:ss",removeTimestampOnTransition:!1,calculateSpentTime:!1,spentTimeFormat:"HH:mm:ss",calculateFullSpentTime:!1,autoRemoveLastStageMarker:!1,autoAddNextTask:!1,definitions:[{id:"project_workflow",name:c("Project Workflow"),description:c("Standard project management workflow"),stages:[{id:"planning",name:c("Planning"),type:"linear",next:"in_progress"},{id:"in_progress",name:c("In Progress"),type:"cycle",subStages:[{id:"development",name:c("Development"),next:"testing"},{id:"testing",name:c("Testing"),next:"development"}],canProceedTo:["review","cancelled"]},{id:"review",name:c("Review"),type:"cycle",canProceedTo:["in_progress","completed"]},{id:"completed",name:c("Completed"),type:"terminal"},{id:"cancelled",name:c("Cancelled"),type:"terminal"}],metadata:{version:"1.0",created:"2024-03-20",lastModified:"2024-03-20"}}]},useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",preferMetadataFormat:"tasks",projectTagPrefix:{tasks:"project",dataview:"project"},contextTagPrefix:{tasks:"@",dataview:"context"},areaTagPrefix:{tasks:"area",dataview:"area"},fileMetadataInheritance:{enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!1},projectConfig:{enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1,detectionMethods:[{type:"metadata",propertyKey:"project",enabled:!1},{type:"tag",propertyKey:"project",enabled:!1},{type:"link",propertyKey:"category",linkFilter:"",enabled:!1}]},configFile:{fileName:"project.md",searchRecursively:!1,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!1,enabled:!1}},fileParsingConfig:{enableFileMetadataParsing:!1,metadataFieldsToParseAsTasks:["dueDate","todo","complete","task"],enableTagBasedTaskParsing:!1,tagsToParseAsTasks:["#todo","#task","#action","#due"],taskContentFromMetadata:"title",defaultTaskStatus:" ",enableWorkerProcessing:!0,enableMtimeOptimization:!0,mtimeCacheSize:1e4},useRelativeTimeForDate:!1,ignoreHeading:"",focusHeading:"",enableView:!0,enableInlineEditor:!0,enableDynamicMetadataPositioning:!0,defaultViewMode:"list",globalFilterRules:{},viewConfiguration:[{id:"inbox",name:c("Inbox"),icon:"inbox",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"forecast",name:c("Forecast"),icon:"calendar-days",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"forecast",firstDayOfWeek:void 0,hideWeekends:!1}},{id:"projects",name:c("Projects"),icon:"folders",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"tags",name:c("Tags"),icon:"tag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"flagged",name:c("Flagged"),icon:"flag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"review",name:c("Review"),icon:"eye",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"calendar",name:c("Events"),icon:"calendar",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"calendar",firstDayOfWeek:void 0,hideWeekends:!1}},{id:"kanban",name:c("Status"),icon:"kanban",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}},{id:"gantt",name:c("Plan"),icon:"chart-gantt",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"gantt",showTaskLabels:!0,useMarkdownRenderer:!0}},{id:"habit",name:c("Habit"),icon:"calendar-clock",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"table",name:c("Table"),icon:"table",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"table",enableTreeView:!0,enableLazyLoading:!0,pageSize:50,enableInlineEditing:!0,visibleColumns:["status","content","priority","dueDate","startDate","scheduledDate","tags","project","context","filePath"],columnWidths:{status:80,content:300,priority:100,dueDate:120,startDate:120,scheduledDate:120,createdDate:120,completedDate:120,tags:150,project:150,context:120,recurrence:120,estimatedTime:120,actualTime:120,filePath:200},sortableColumns:!0,resizableColumns:!0,showRowNumbers:!0,enableRowSelection:!0,enableMultiSelect:!0,defaultSortField:"",defaultSortOrder:"asc"}},{id:"quadrant",name:c("Matrix"),icon:"layout-grid",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"quadrant",hideEmptyQuadrants:!1,autoUpdatePriority:!0,autoUpdateTags:!0,showTaskCount:!0,defaultSortField:"priority",defaultSortOrder:"desc",urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3,usePriorityForClassification:!1,urgentPriorityThreshold:4,importantPriorityThreshold:3,customQuadrantColors:!1,quadrantColors:{urgentImportant:"#dc3545",notUrgentImportant:"#28a745",urgentNotImportant:"#ffc107",notUrgentNotImportant:"#6c757d"}}}],reviewSettings:{},rewards:{enableRewards:!1,rewardItems:[{id:"reward-tea",name:c("Drink a cup of good tea"),occurrence:"common",inventory:-1},{id:"reward-series-episode",name:c("Watch an episode of a favorite series"),occurrence:"rare",inventory:20},{id:"reward-champagne-project",name:c("Play a game"),occurrence:"legendary",inventory:1,condition:"#project AND #milestone"},{id:"reward-chocolate-quick",name:c("Eat a piece of chocolate"),occurrence:"common",inventory:10,condition:"#quickwin",imageUrl:""}],occurrenceLevels:[{name:c("common"),chance:70},{name:c("rare"),chance:25},{name:c("legendary"),chance:5}],showRewardType:"modal"},habit:{enableHabits:!1,habits:[]},filterConfig:{enableSavedFilters:!0,savedConfigs:[]},sortTasks:!0,sortCriteria:[{field:"completed",order:"asc"},{field:"status",order:"asc"},{field:"priority",order:"asc"},{field:"dueDate",order:"asc"}],autoDateManager:{enabled:!1,manageCompletedDate:!0,manageStartDate:!0,manageCancelledDate:!0,completedDateFormat:"YYYY-MM-DD",startDateFormat:"YYYY-MM-DD",cancelledDateFormat:"YYYY-MM-DD",completedDateMarker:"\u2705",startDateMarker:"\u{1F680}",cancelledDateMarker:"\u274C"},betaTest:{enableBaseView:!1},icsIntegration:{sources:[],globalRefreshInterval:60,maxCacheAge:24,enableBackgroundRefresh:!1,networkTimeout:30,maxEventsPerSource:1e3,showInCalendar:!1,showInTaskLists:!1,defaultEventColor:"#3b82f6"},timelineSidebar:{enableTimelineSidebar:!1,autoOpenOnStartup:!1,showCompletedTasks:!0,focusModeByDefault:!1,maxEventsToShow:100,quickInputCollapsed:!1,quickInputDefaultHeight:150,quickInputAnimationDuration:300,quickInputCollapseOnCapture:!1,quickInputShowQuickActions:!0},fileFilter:{enabled:!1,mode:gi.BLACKLIST,rules:[]},onCompletion:{enableOnCompletion:!0,defaultArchiveFile:"Archive/Completed Tasks.md",defaultArchiveSection:"Completed Tasks",showAdvancedOptions:!1},timeParsing:{enabled:!0,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","starting","begins","\u5F00\u59CB","\u4ECE","\u8D77\u59CB","\u8D77","\u59CB\u4E8E","\u81EA"],due:["due","deadline","by","until","before","expires","ends","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D","\u671F\u9650","\u6700\u665A","\u7ED3\u675F","\u7EC8\u6B62","\u5B8C\u6210\u4E8E"],scheduled:["scheduled","on","at","planned","set for","arranged","\u5B89\u6392","\u8BA1\u5212","\u5728","\u5B9A\u4E8E","\u9884\u5B9A","\u7EA6\u5B9A","\u8BBE\u5B9A"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!0},taskTimer:{enabled:!1,metadataDetection:{frontmatter:"task-timer",folders:[],tags:["timer","tracked"]},timeFormat:"{h}hrs {m}mins",blockRefPrefix:"timer"},enableCustomDateFormats:!1,customDateFormats:[],onboarding:{completed:!1,version:"",configMode:"beginner",skipOnboarding:!1,completedAt:""}};function yt(s,e){let t=s.settings.viewConfiguration||me.viewConfiguration,a=t.find(l=>l.id===e),n=me.viewConfiguration.find(l=>l.id===e)||{id:e,name:e,icon:"list-plus",type:"custom",visible:!0,filterBlanks:!1,hideCompletedAndAbandonedTasks:!1,filterRules:{}},o={...n,...a||{},filterRules:(a==null?void 0:a.filterRules)?{...n.filterRules||{},...a.filterRules}:n.filterRules||{},specificConfig:(a==null?void 0:a.specificConfig)!==void 0?{...n.specificConfig||{},...a.specificConfig}:n.specificConfig};if(o.filterRules=o.filterRules||{},e==="gantt"&&Array.isArray(t)&&t.filter(d=>d.id==="gantt").length>1){let d=t.map((u,p)=>u.id==="gantt"?p:-1).filter(u=>u!==-1).slice(1);for(let u of d.reverse())t.splice(u,1);s.saveSettings()}return o}var _a=A(require("obsidian"));Q();var Ks=A(require("obsidian"));Q();var Si=A(require("obsidian"));Q();Q();var Vo=class{constructor(e){this.plugin=e}getOnboardingConfigs(){return[this.getBeginnerConfig(),this.getAdvancedConfig(),this.getPowerUserConfig()]}getBeginnerConfig(){let e=me.viewConfiguration.filter(t=>["inbox","forecast","projects"].includes(t.id));return{mode:"beginner",name:c("Beginner"),description:c("Basic task management with essential features"),features:[c("Basic progress bars"),c("Essential views (Inbox, Forecast, Projects)"),c("Simple task status tracking"),c("Quick task capture"),c("Date picker functionality")],settings:{progressBarDisplayMode:"both",displayMode:"bracketFraction",showPercentage:!1,customizeProgressRanges:!1,allowCustomProgressGoal:!1,hideProgressBarBasedOnConditions:!1,enableTaskStatusSwitcher:!1,enableCustomTaskMarks:!1,enableCycleCompleteStatus:!1,enableView:!0,enableInlineEditor:!1,viewConfiguration:e,enableDatePicker:!0,enablePriorityPicker:!1,quickCapture:{...me.quickCapture,enableQuickCapture:!0},workflow:{...me.workflow,enableWorkflow:!1},rewards:{...me.rewards,enableRewards:!1},habit:{...me.habit,enableHabits:!1},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!1,enableFileMetadataParsing:!1,enableTagBasedTaskParsing:!1},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!1},betaTest:{enableBaseView:!1}}}}getAdvancedConfig(){let e=me.viewConfiguration.filter(t=>["inbox","forecast","projects","tags","kanban","calendar","table"].includes(t.id));return{mode:"advanced",name:c("Advanced"),description:c("Project management with enhanced workflows"),features:[c("Full progress bar customization"),c("Extended views (Kanban, Calendar, Table)"),c("Project management features"),c("Basic workflow automation"),c("Task status switching"),c("Advanced filtering and sorting")],settings:{progressBarDisplayMode:"both",displayMode:"bracketFraction",showPercentage:!0,customizeProgressRanges:!0,allowCustomProgressGoal:!0,hideProgressBarBasedOnConditions:!1,enableTaskStatusSwitcher:!0,enableCycleCompleteStatus:!0,enableCustomTaskMarks:!1,enableView:!0,enableInlineEditor:!0,viewConfiguration:e,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...me.quickCapture,enableQuickCapture:!0},projectConfig:{...me.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...me.fileMetadataInheritance,enabled:!0},workflow:{...me.workflow,enableWorkflow:!0,autoAddTimestamp:!0},autoDateManager:{...me.autoDateManager,enabled:!0},completedTaskMover:{...me.completedTaskMover,enableCompletedTaskMover:!0},rewards:{...me.rewards,enableRewards:!1},habit:{...me.habit,enableHabits:!1},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!1},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!1}}}}getPowerUserConfig(){return{mode:"power",name:c("Power User"),description:c("Full-featured experience with all capabilities"),features:[c("All views and advanced configurations"),c("Complex workflow definitions"),c("Reward and habit tracking systems"),c("Performance optimizations"),c("Advanced integrations"),c("Experimental features"),c("Timeline and calendar sync")],settings:{progressBarDisplayMode:"both",displayMode:"custom",showPercentage:!0,customizeProgressRanges:!0,allowCustomProgressGoal:!0,hideProgressBarBasedOnConditions:!0,enableTaskStatusSwitcher:!0,enableCustomTaskMarks:!0,enableCycleCompleteStatus:!0,enableView:!0,enableInlineEditor:!0,viewConfiguration:me.viewConfiguration,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...me.quickCapture,enableQuickCapture:!0,enableMinimalMode:!0},projectConfig:{...me.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...me.fileMetadataInheritance,enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!0},workflow:{...me.workflow,enableWorkflow:!0,autoAddTimestamp:!0,calculateSpentTime:!0},rewards:{...me.rewards,enableRewards:!0},habit:{...me.habit,enableHabits:!0},fileParsingConfig:{...me.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!0,enableTagBasedTaskParsing:!0,enableMtimeOptimization:!0},timelineSidebar:{...me.timelineSidebar,enableTimelineSidebar:!0},autoDateManager:{...me.autoDateManager,enabled:!0,manageCompletedDate:!0,manageStartDate:!0},completedTaskMover:{...me.completedTaskMover,enableCompletedTaskMover:!0,enableAutoMove:!0},betaTest:{enableBaseView:!0}}}}async applyConfiguration(e){let a=this.getOnboardingConfigs().find(u=>u.mode===e);if(!a)throw new Error(`Configuration mode ${e} not found`);let i=(this.plugin.settings.viewConfiguration||[]).filter(u=>u.type==="custom"),n=a.settings.viewConfiguration||[],o=this.mergeViewConfigurations(n,i),l={...a.settings};delete l.viewConfiguration;let d=this.deepMerge(this.plugin.settings,l);d.viewConfiguration=o,d.onboarding||(d.onboarding=me.onboarding),d.onboarding.configMode=e,this.plugin.settings=d,await this.plugin.saveSettings(),""+e+i.length}async completeOnboarding(e){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.completed=!0,this.plugin.settings.onboarding.configMode=e,this.plugin.settings.onboarding.completedAt=new Date().toISOString(),this.plugin.settings.onboarding.version=this.plugin.manifest.version,await this.plugin.saveSettings(),""+e}shouldShowOnboarding(){var e,t;return!((e=this.plugin.settings.onboarding)==null?void 0:e.completed)&&!((t=this.plugin.settings.onboarding)==null?void 0:t.skipOnboarding)}async skipOnboarding(){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.skipOnboarding=!0,this.plugin.settings.onboarding.version=this.plugin.manifest.version,await this.plugin.saveSettings()}async resetOnboarding(){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...me.onboarding}),this.plugin.settings.onboarding.completed=!1,this.plugin.settings.onboarding.skipOnboarding=!1,this.plugin.settings.onboarding.completedAt="",await this.plugin.saveSettings()}getCurrentConfigModeDisplay(){var r;let e=(r=this.plugin.settings.onboarding)==null?void 0:r.configMode;if(!e)return c("Not configured");let a=this.getOnboardingConfigs().find(i=>i.mode===e);return a?a.name:c("Custom")}mergeViewConfigurations(e,t){let a=[...e];return t.forEach(r=>{a.find(i=>i.id===r.id)||a.push(r)}),a}getConfigurationPreview(e){var p,m,f,h,k,g;let a=this.getOnboardingConfigs().find(y=>y.mode===e);if(!a)throw new Error(`Configuration mode ${e} not found`);let r=this.plugin.settings.viewConfiguration||[],i=r.filter(y=>y.type==="custom"),n=a.settings.viewConfiguration||[],o=new Set(r.map(y=>y.id)),l=n.filter(y=>!o.has(y.id)),d=n.filter(y=>o.has(y.id)),u=[];return a.settings.enableView!==this.plugin.settings.enableView&&u.push(`Views ${a.settings.enableView?"enabled":"disabled"}`),((p=a.settings.quickCapture)==null?void 0:p.enableQuickCapture)!==((m=this.plugin.settings.quickCapture)==null?void 0:m.enableQuickCapture)&&u.push(`Quick Capture ${((f=a.settings.quickCapture)==null?void 0:f.enableQuickCapture)?"enabled":"disabled"}`),((h=a.settings.workflow)==null?void 0:h.enableWorkflow)!==((k=this.plugin.settings.workflow)==null?void 0:k.enableWorkflow)&&u.push(`Workflow ${((g=a.settings.workflow)==null?void 0:g.enableWorkflow)?"enabled":"disabled"}`),{viewsToAdd:l,viewsToUpdate:d,userCustomViewsPreserved:i,settingsChanges:u}}deepMerge(e,t){let a={...e};for(let r in t)t.hasOwnProperty(r)&&(t[r]&&typeof t[r]=="object"&&!Array.isArray(t[r])?a[r]=this.deepMerge(a[r]||{},t[r]):a[r]=t[r]);return a}};var Dj=A(require("obsidian")),ru=class{constructor(e){this.selectedConfig=null;this.onSelectionChange=()=>{};this.configManager=e}render(e,t){this.onSelectionChange=t,e.empty();let a=this.configManager.getOnboardingConfigs(),r=e.createDiv("user-level-cards");a.forEach(i=>{this.createConfigCard(r,i)})}createConfigCard(e,t){let a=e.createDiv("user-level-card");a.setAttribute("data-mode",t.mode);let r=a.createDiv("card-header"),i=r.createDiv("card-icon");(0,Dj.setIcon)(i,this.getConfigIcon(t.mode));let n=r.createEl("h3",{text:t.name,cls:"card-title"}),o=a.createEl("p",{text:t.description,cls:"card-description"}),d=a.createDiv("card-features").createEl("ul");t.features.forEach(u=>{d.createEl("li").setText(u)}),a.addEventListener("click",()=>{this.selectConfig(t)}),a.addEventListener("mouseenter",()=>{a.addClass("card-hover")}),a.addEventListener("mouseleave",()=>{a.removeClass("card-hover")})}getConfigIcon(e){switch(e){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}selectConfig(e){if(this.selectedConfig){let a=document.querySelector(`[data-mode="${this.selectedConfig.mode}"]`);a==null||a.removeClass("selected")}this.selectedConfig=e;let t=document.querySelector(`[data-mode="${e.mode}"]`);t==null||t.addClass("selected"),this.onSelectionChange(e)}getSelectedConfig(){return this.selectedConfig}};Q();var ki=A(require("obsidian")),su=class{constructor(e){this.configManager=e}render(e,t){e.empty();let r=e.createDiv("config-overview").createDiv("selected-mode");r.createEl("h3",{text:c("Selected Mode")});let i=r.createDiv("mode-card"),n=i.createDiv("mode-icon");(0,ki.setIcon)(n,this.getConfigIcon(t.mode));let o=i.createDiv("mode-content");o.createEl("h4",{text:t.name}),o.createEl("p",{text:t.description});let l=e.createDiv("config-features");l.createEl("h3",{text:c("Features that will be enabled")});let d=l.createEl("ul",{cls:"enabled-features-list"});t.features.forEach(p=>{let m=d.createEl("li"),f=m.createSpan("feature-check");(0,ki.setIcon)(f,"check"),m.createSpan("feature-text").setText(p)}),this.renderViewsPreview(e,t),this.renderSettingsSummary(e,t),e.createDiv("customization-note").createEl("p",{text:c("Don't worry! You can customize any of these settings later in the plugin settings."),cls:"note-text"})}renderViewsPreview(e,t){if(!t.settings.viewConfiguration)return;let a=e.createDiv("config-views");a.createEl("h3",{text:c("Available views")});let r=a.createDiv("views-grid");t.settings.viewConfiguration.forEach(i=>{let n=r.createDiv("view-item"),o=n.createDiv("view-icon");(0,ki.setIcon)(o,i.icon||"list"),n.createDiv("view-name").setText(i.name)})}renderSettingsSummary(e,t){var i,n,o,l,d;let a=e.createDiv("config-settings");a.createEl("h3",{text:c("Key settings")});let r=a.createEl("ul",{cls:"settings-summary-list"});if(t.settings.progressBarDisplayMode){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Progress bars")+":"),u.createSpan("setting-value").setText(t.settings.progressBarDisplayMode==="both"?c("Enabled (both graphical and text)"):t.settings.progressBarDisplayMode)}if(t.settings.enableTaskStatusSwitcher!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Task status switching")+":"),u.createSpan("setting-value").setText(t.settings.enableTaskStatusSwitcher?c("Enabled"):c("Disabled"))}if(((i=t.settings.quickCapture)==null?void 0:i.enableQuickCapture)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Quick capture")+":"),u.createSpan("setting-value").setText(t.settings.quickCapture.enableQuickCapture?c("Enabled"):c("Disabled"))}if(((n=t.settings.workflow)==null?void 0:n.enableWorkflow)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Workflow management")+":"),u.createSpan("setting-value").setText(t.settings.workflow.enableWorkflow?c("Enabled"):c("Disabled"))}if(((o=t.settings.rewards)==null?void 0:o.enableRewards)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Reward system")+":"),u.createSpan("setting-value").setText(t.settings.rewards.enableRewards?c("Enabled"):c("Disabled"))}if(((l=t.settings.habit)==null?void 0:l.enableHabits)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Habit tracking")+":"),u.createSpan("setting-value").setText(t.settings.habit.enableHabits?c("Enabled"):c("Disabled"))}if(((d=t.settings.fileParsingConfig)==null?void 0:d.enableWorkerProcessing)!==void 0){let u=r.createEl("li");u.createSpan("setting-label").setText(c("Performance optimization")+":"),u.createSpan("setting-value").setText(t.settings.fileParsingConfig.enableWorkerProcessing?c("Enabled"):c("Disabled"))}this.renderConfigurationChanges(e,t)}renderConfigurationChanges(e,t){try{let a=this.configManager.getConfigurationPreview(t.mode),r=e.createDiv("config-changes-summary");if(r.createEl("h3",{text:c("Configuration Changes")}),a.userCustomViewsPreserved.length>0){let o=r.createDiv("preserved-views"),l=o.createDiv("preserved-header"),d=l.createSpan("preserved-icon");(0,ki.setIcon)(d,"shield-check"),l.createSpan("preserved-text").setText(c("Your custom views will be preserved")+` (${a.userCustomViewsPreserved.length})`);let u=o.createEl("ul",{cls:"preserved-views-list"});a.userCustomViewsPreserved.forEach(p=>{let m=u.createEl("li"),f=m.createSpan();(0,ki.setIcon)(f,p.icon||"list"),m.createSpan().setText(" "+p.name)})}if(a.viewsToAdd.length>0){let o=r.createDiv("added-views"),l=o.createSpan("change-icon");(0,ki.setIcon)(l,"plus-circle"),o.createSpan("change-text").setText(c("New views to be added")+` (${a.viewsToAdd.length})`)}if(a.viewsToUpdate.length>0){let o=r.createDiv("updated-views"),l=o.createSpan("change-icon");(0,ki.setIcon)(l,"refresh-cw"),o.createSpan("change-text").setText(c("Existing views to be updated")+` (${a.viewsToUpdate.length})`)}if(a.settingsChanges.length>0){let o=r.createDiv("settings-changes"),l=o.createSpan("change-icon");(0,ki.setIcon)(l,"settings"),o.createSpan("change-text").setText(c("Feature changes"));let d=o.createEl("ul",{cls:"settings-changes-list"});a.settingsChanges.forEach(u=>{d.createEl("li").setText(u)})}let i=r.createDiv("safety-note"),n=i.createSpan("safety-icon");(0,ki.setIcon)(n,"info"),i.createSpan("safety-text").setText(c("Only template settings will be applied. Your existing custom configurations will be preserved."))}catch(a){console.warn("Could not generate configuration preview:",a)}}getConfigIcon(e){switch(e){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}};var Zo=A(require("obsidian"));Q();cn();var bu=class{constructor(e){this.plugin=e}render(e){e.empty(),e.createDiv("task-guide-intro").createEl("p",{text:c("Learn the different ways to create and format tasks in Task Genius. You can use either emoji-based or Dataview-style syntax."),cls:"guide-description"}),this.renderTaskFormats(e),this.renderQuickCaptureDemo(e)}renderTaskFormats(e){let t=e.createDiv("task-formats-section");t.createEl("h3",{text:c("Task Format Examples")});let a=t.createDiv("format-example");a.createEl("h4",{text:c("Basic Task")}),a.createEl("code",{text:"- [ ] Complete project documentation"});let r=t.createDiv("format-example");r.createEl("h4",{text:c("With Emoji Metadata")}),r.createEl("code",{text:"- [ ] Complete project documentation \u{1F4C5} 2024-01-15 \u{1F53A} #project/docs"}),r.createDiv("format-legend").createEl("small",{text:c("\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag")});let n=t.createDiv("format-example");n.createEl("h4",{text:c("With Dataview Metadata")}),n.createEl("code",{text:"- [ ] Complete project documentation [due:: 2024-01-15] [priority:: high] [project:: docs]"});let o=t.createDiv("format-example");o.createEl("h4",{text:c("Mixed Format")}),o.createEl("code",{text:"- [ ] Complete project documentation \u{1F4C5} 2024-01-15 [priority:: high] @work"}),o.createDiv("format-legend").createEl("small",{text:c("Combine emoji and dataview syntax as needed")});let d=t.createDiv("status-markers");d.createEl("h4",{text:c("Task Status Markers")});let u=d.createEl("ul",{cls:"status-list"});[{marker:"[ ]",description:c("Not started")},{marker:"[x]",description:c("Completed")},{marker:"[/]",description:c("In progress")},{marker:"[?]",description:c("Planned")},{marker:"[-]",description:c("Abandoned")}].forEach(k=>{let g=u.createEl("li");g.createEl("code",{text:k.marker}),g.createSpan().setText(" - "+k.description)});let m=t.createDiv("metadata-symbols");m.createEl("h4",{text:c("Common Metadata Symbols")});let f=m.createEl("ul",{cls:"symbols-list"});[{symbol:"\u{1F4C5}",description:c("Due date")},{symbol:"\u{1F6EB}",description:c("Start date")},{symbol:"\u23F3",description:c("Scheduled date")},{symbol:"\u{1F53A}",description:c("High priority")},{symbol:"\u23EB",description:c("Higher priority")},{symbol:"\u{1F53C}",description:c("Medium priority")},{symbol:"\u{1F53D}",description:c("Lower priority")},{symbol:"\u23EC",description:c("Lowest priority")},{symbol:"\u{1F501}",description:c("Recurring task")},{symbol:"#",description:c("Project/tag")},{symbol:"@",description:c("Context")}].forEach(k=>{f.createEl("li").createSpan().setText(k.symbol+" - "+k.description)})}renderQuickCaptureDemo(e){let t=e.createDiv("quick-capture-section");t.createEl("h3",{text:c("Quick Capture")});let a=t.createDiv("demo-content");a.createEl("p",{text:c("Use quick capture panel to quickly capture tasks from anywhere in Obsidian.")}),a.createEl("button",{text:c("Try Quick Capture"),cls:"mod-cta demo-button"}).addEventListener("click",()=>{var i;try{((i=this.plugin.settings.quickCapture)==null?void 0:i.enableQuickCapture)?new ka(this.plugin.app,this.plugin).open():new Zo.Notice(c("Quick capture is now enabled in your configuration!"),3e3)}catch(n){console.error("Failed to open quick capture:",n),new Zo.Notice(c("Failed to open quick capture. Please try again later."),3e3)}})}renderInteractivePractice(e){let t=e.createDiv("practice-section");t.createEl("h3",{text:c("Try It Yourself")}),t.createEl("p",{text:c("Practice creating a task with the format you prefer:")});let a;new Zo.Setting(t).setName(c("Practice Task")).setDesc(c("Enter a task using any of the formats shown above")).addTextArea(n=>{a=n,n.setPlaceholder(c("- [ ] Your task here")).setValue("").then(()=>{n.inputEl.rows=3,n.inputEl.style.width="100%"})});let r=t.createDiv("practice-feedback");t.createEl("button",{text:c("Validate Task"),cls:"demo-button"}).addEventListener("click",()=>{let n=a.getValue().trim();this.validateTaskFormat(n,r)})}validateTaskFormat(e,t){if(t.empty(),!e){t.createEl("div",{text:c("Please enter a task to validate"),cls:"validation-message validation-warning"});return}if(!/^-\s*\[.\]\s*.+/.test(e)){t.createEl("div",{text:c("This doesn't look like a valid task. Tasks should start with '- [ ]'"),cls:"validation-message validation-error"});return}let r=/[📅🛫⏳🔺⏫🔼🔽⏬🔁]/.test(e),i=/\[[\w]+::[^\]]+\]/.test(e),n=/#[\w\/]+/.test(e),o=/@[\w]+/.test(e),l=t.createEl("div",{cls:"validation-message validation-success"}),d=l.createSpan();(0,Zo.setIcon)(d,"check"),l.createSpan().setText(" "+c("Valid task format!"));let u=[];r&&u.push(c("Emoji metadata")),i&&u.push(c("Dataview metadata")),n&&u.push(c("Project tags")),o&&u.push(c("Context")),u.length>0&&t.createEl("div",{text:c("Detected features: ")+u.join(", "),cls:"validation-message validation-info"})}};Q();var RT=A(require("obsidian")),Tu=class{render(e,t){e.empty();let a=e.createDiv("completion-success");a.createDiv("success-icon").setText("\u{1F389}"),a.createEl("h2",{text:c("Congratulations!")}),a.createEl("p",{text:c("Task Genius has been configured with your selected preferences"),cls:"success-message"});let i=e.createDiv("completion-summary");i.createEl("h3",{text:c("Your Configuration")});let n=i.createDiv("config-summary-card"),o=n.createDiv("config-header"),l=o.createDiv("config-icon");(0,RT.setIcon)(l,this.getConfigIcon(t.mode)),o.createDiv("config-name").setText(t.name),n.createDiv("config-description").setText(t.description);let u=e.createDiv("quick-start-section");u.createEl("h3",{text:c("Quick Start Guide")});let p=u.createDiv("quick-start-steps");this.getQuickStartSteps(t.mode).forEach((v,T)=>{let x=p.createDiv("quick-start-step");x.createDiv("step-number").setText((T+1).toString()),x.createDiv("step-content").setText(v)});let f=e.createDiv("next-steps-section");f.createEl("h3",{text:c("What's next?")});let h=f.createEl("ul",{cls:"next-steps-list"});[c("Open Task Genius view from the left ribbon"),c("Create your first task using Quick Capture"),c("Explore different views to organize your tasks"),c("Customize settings anytime in plugin settings")].forEach(v=>{let T=h.createEl("li"),x=T.createSpan("step-check");(0,RT.setIcon)(x,"arrow-right"),T.createSpan("step-text").setText(v)});let g=e.createDiv("resources-section");g.createEl("h3",{text:c("Helpful Resources")});let y=g.createDiv("resources-list");[{icon:"book-open",title:c("Documentation"),description:c("Complete guide to all features"),url:"https://taskgenius.md"},{icon:"message-circle",title:c("Community"),description:c("Get help and share tips"),url:"https://discord.gg/ARR2rHHX6b"},{icon:"settings",title:c("Settings"),description:c("Customize Task Genius"),action:"open-settings"}].forEach(v=>{let T=y.createDiv("resource-item"),x=T.createDiv("resource-content");x.createEl("h4",{text:v.title}),x.createEl("p",{text:v.description}),v.url?(T.addEventListener("click",()=>{window.open(v.url,"_blank")}),T.addClass("resource-clickable")):v.action==="open-settings"&&(T.addEventListener("click",()=>{let C=new CustomEvent("task-genius-open-settings");document.dispatchEvent(C)}),T.addClass("resource-clickable"))})}getConfigIcon(e){switch(e){case"beginner":return"edit-3";case"advanced":return"settings";case"power":return"zap";default:return"clipboard-list"}}getQuickStartSteps(e){switch(e){case"beginner":return[c("Click the Task Genius icon in the left sidebar"),c("Start with the Inbox view to see all your tasks"),c("Use quick capture panel to quickly add your first task"),c("Try the Forecast view to see tasks by date")];case"advanced":return[c("Open Task Genius and explore the available views"),c("Set up a project using the Projects view"),c("Try the Kanban board for visual task management"),c("Use workflow stages to track task progress")];case"power":return[c("Explore all available views and their configurations"),c("Set up complex workflows for your projects"),c("Configure habits and rewards to stay motivated"),c("Integrate with external calendars and systems")];default:return[c("Open Task Genius from the left sidebar"),c("Create your first task"),c("Explore the different views available"),c("Customize settings as needed")]}}handleFeedback(e,t){let a=t.querySelector(".feedback-buttons");a&&a.remove();let r=t.createDiv("feedback-thanks");r.createEl("p",{text:e==="positive"?c("Thank you for your positive feedback!"):c("Thank you for your feedback. We'll continue improving the experience."),cls:"feedback-thanks-message"}),e==="negative"&&r.createEl("a",{text:c("Share detailed feedback"),href:"https://github.com/obsidian-task-genius/feedback/issues/new"}).setAttribute("target","_blank"),""+e}};var ya;(function(i){i[i.WELCOME=0]="WELCOME",i[i.USER_LEVEL_SELECT=1]="USER_LEVEL_SELECT",i[i.CONFIG_PREVIEW=2]="CONFIG_PREVIEW",i[i.TASK_CREATION_GUIDE=3]="TASK_CREATION_GUIDE",i[i.COMPLETE=4]="COMPLETE"})(ya||(ya={}));var FT=class extends Si.Modal{constructor(e,t,a){super(e);this.plugin=t,this.configManager=new Vo(t),this.onComplete=a,this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1},this.userLevelSelector=new ru(this.configManager),this.configPreview=new su(this.configManager),this.taskCreationGuide=new bu(this.plugin),this.onboardingComplete=new Tu,this.modalEl.addClass("onboarding-modal")}onOpen(){let{contentEl:e}=this;e.empty(),this.createModalStructure(),this.displayCurrentStep()}onClose(){let{contentEl:e}=this;e.empty()}createModalStructure(){let{contentEl:e}=this;this.headerEl=e.createDiv("onboarding-header"),this.onboardingContentEl=e.createDiv("onboarding-content"),this.footerEl=e.createDiv("onboarding-footer"),this.createFooterButtons()}createFooterButtons(){let e=this.footerEl.createDiv("onboarding-buttons");this.skipButton=new Si.ButtonComponent(e).setButtonText(c("Skip onboarding")).onClick(()=>this.handleSkip()),this.backButton=new Si.ButtonComponent(e).setButtonText(c("Back")).onClick(()=>this.handleBack()),this.nextButton=new Si.ButtonComponent(e).setButtonText(c("Next")).setCta().onClick(()=>this.handleNext())}displayCurrentStep(){switch(this.headerEl.empty(),this.onboardingContentEl.empty(),this.updateButtonStates(),this.state.currentStep){case 0:this.displayWelcomeStep();break;case 1:this.displayUserLevelSelectStep();break;case 2:this.displayConfigPreviewStep();break;case 3:this.displayTaskCreationGuideStep();break;case 4:this.displayCompleteStep();break}}displayWelcomeStep(){this.headerEl.createEl("h1",{text:c("Welcome to Task Genius")}),this.headerEl.createEl("p",{text:c("Transform your task management with advanced progress tracking and workflow automation"),cls:"onboarding-subtitle"});let e=this.onboardingContentEl,a=e.createDiv("welcome-section").createDiv("features-overview");[{icon:"bar-chart-3",title:c("Progress Tracking"),description:c("Visual progress bars and completion tracking for all your tasks")},{icon:"building",title:c("Project Management"),description:c("Organize tasks by projects with advanced filtering and sorting")},{icon:"zap",title:c("Workflow Automation"),description:c("Automate task status changes and improve your productivity")},{icon:"calendar",title:c("Multiple Views"),description:c("Kanban boards, calendars, Gantt charts, and more visualization options")}].forEach(n=>{let o=a.createDiv("feature-item"),l=o.createDiv("feature-icon");(0,Si.setIcon)(l,n.icon);let d=o.createDiv("feature-content");d.createEl("h3",{text:n.title}),d.createEl("p",{text:n.description})}),e.createDiv("setup-note").createEl("p",{text:c("This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later."),cls:"setup-description"})}displayUserLevelSelectStep(){this.headerEl.createEl("h1",{text:c("Choose Your Usage Mode")}),this.headerEl.createEl("p",{text:c("Select the configuration that best matches your task management experience"),cls:"onboarding-subtitle"}),this.userLevelSelector.render(this.onboardingContentEl,e=>{this.state.selectedConfig=e,this.updateButtonStates()})}displayConfigPreviewStep(){if(!this.state.selectedConfig){this.state.currentStep=1,this.displayCurrentStep();return}this.headerEl.createEl("h1",{text:c("Configuration Preview")}),this.headerEl.createEl("p",{text:c("Review the settings that will be applied for your selected mode"),cls:"onboarding-subtitle"}),this.configPreview.render(this.onboardingContentEl,this.state.selectedConfig);let e=this.onboardingContentEl.createDiv("config-options");new Si.Setting(e).setName(c("Include task creation guide")).setDesc(c("Show a quick tutorial on creating your first task")).addToggle(t=>{t.setValue(!this.state.skipTaskGuide).onChange(a=>{this.state.skipTaskGuide=!a})})}displayTaskCreationGuideStep(){this.headerEl.createEl("h1",{text:c("Create Your First Task")}),this.headerEl.createEl("p",{text:c("Learn how to create and format tasks in Task Genius"),cls:"onboarding-subtitle"}),this.taskCreationGuide.render(this.onboardingContentEl)}displayCompleteStep(){!this.state.selectedConfig||(this.headerEl.createEl("h1",{text:c("Setup Complete!")}),this.headerEl.createEl("p",{text:c("Task Genius is now configured and ready to use"),cls:"onboarding-subtitle"}),this.onboardingComplete.render(this.onboardingContentEl,this.state.selectedConfig))}updateButtonStates(){let e=this.state.currentStep;this.skipButton.buttonEl.style.display=e===0?"inline-block":"none",this.backButton.buttonEl.style.display=e===0?"none":"inline-block";let t=e===4;this.nextButton.setButtonText(t?c("Start Using Task Genius"):c("Next")),e===1?this.nextButton.setDisabled(!this.state.selectedConfig):this.nextButton.setDisabled(this.state.isCompleting)}async handleSkip(){await this.configManager.skipOnboarding(),this.close()}handleBack(){this.state.currentStep>0&&(this.state.currentStep--,this.state.currentStep===3&&this.state.skipTaskGuide&&this.state.currentStep--,this.displayCurrentStep())}async handleNext(){if(this.state.currentStep===4){await this.completeOnboarding();return}if(!!this.validateCurrentStep()){if(this.state.currentStep++,this.state.currentStep===2&&this.state.selectedConfig)try{await this.configManager.applyConfiguration(this.state.selectedConfig.mode)}catch(t){console.error("Failed to apply configuration:",t)}this.state.currentStep===3&&this.state.skipTaskGuide&&this.state.currentStep++,this.displayCurrentStep()}}validateCurrentStep(){switch(this.state.currentStep){case 1:return!!this.state.selectedConfig;default:return!0}}async completeOnboarding(){if(!(!this.state.selectedConfig||this.state.isCompleting)){this.state.isCompleting=!0,this.updateButtonStates();try{await this.configManager.completeOnboarding(this.state.selectedConfig.mode),this.close(),this.onComplete()}catch(e){console.error("Failed to complete onboarding:",e),this.state.isCompleting=!1,this.updateButtonStates()}}}};function jT(s,e){new Ks.Setting(e).setName(c("About")+" Task Genius").setHeading(),new Ks.Setting(e).setName(c("Version")).setDesc(`Task Genius v${s.plugin.manifest.version}`),new Ks.Setting(e).setName(c("Donate")).setDesc(c("If you like this plugin, consider donating to support continued development:")).addButton(a=>{a.buttonEl.outerHTML='<a href="https://www.buymeacoffee.com/boninall"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=boninall&button_colour=6495ED&font_colour=ffffff&font_family=Inter&outline_colour=000000&coffee_colour=FFDD00"></a>'}),new Ks.Setting(e).setName(c("Documentation")).setDesc(c("View the documentation for this plugin")).addButton(a=>{a.setButtonText(c("Open Documentation")).onClick(()=>{window.open("https://taskgenius.md/docs/getting-started")})}),new Ks.Setting(e).setName(c("Onboarding")).setDesc(c("Restart the welcome guide and setup wizard")).addButton(a=>{a.setButtonText(c("Restart Onboarding")).setIcon("graduation-cap").onClick(async()=>{await s.plugin.onboardingConfigManager.resetOnboarding(),new FT(s.plugin.app,s.plugin,()=>{s.display()}).open()})}),new Ks.Setting(e).setName(c("Discord")).setDesc(c("Chat with us")).addButton(a=>{a.setButtonText(c("Open Discord")).onClick(()=>{window.open("https://discord.gg/ARR2rHHX6b")})});let t=document.createDocumentFragment();t.createEl("span",{cls:"tg-icons-desc"},a=>{a.setText(c("Task Genius icons are designed by"))}),t.createEl("a",{href:"https://github.com/jsmorabito",attr:{target:"_blank",rel:"noopener noreferrer"}},a=>{a.setText(" @Jsmorabito")}),new Ks.Setting(e).setName(c("Task Genius Icons")).setDesc(t).setHeading(),e.createDiv({cls:"tg-icons-container"},a=>{for(let i of Object.keys(s.plugin.settings.taskStatuses)){let n=a.createSpan();(0,Ks.setIcon)(n,i)}let r=a.createSpan();(0,Ks.setIcon)(r,"task-genius")})}var _c=A(require("obsidian"));Q();var el=A(require("obsidian"));var Ss=class extends el.Modal{constructor(e,t){super(e.app);this.params=t;this.plugin=e}async onOpen(){this.titleEl.setText(this.params.title),this.params.message.includes(`
`)?await el.MarkdownRenderer.render(this.plugin.app,this.params.message,this.contentEl,"",this.plugin):this.contentEl.setText(this.params.message);let e=this.contentEl.createEl("div",{cls:"confirm-modal-buttons"});new el.ButtonComponent(e).setButtonText(this.params.confirmText).setCta().onClick(()=>{this.params.onConfirm(!0),this.close()}),new el.ButtonComponent(e).setButtonText(this.params.cancelText).setCta().onClick(()=>{this.params.onConfirm(!1),this.close()})}onClose(){this.contentEl.empty()}};function OT(s,e){new _c.Setting(e).setName(c("Beta Test Features")).setDesc(c("Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.")).setHeading();let t=e.createDiv({cls:"beta-test-warning-banner"});t.createEl("div",{cls:"beta-warning-icon",text:"\u26A0\uFE0F"});let a=t.createDiv({cls:"beta-warning-content"});a.createEl("div",{cls:"beta-warning-title",text:c("Beta Features Warning")});let r=a.createEl("div",{cls:"beta-warning-text",text:c("These features are experimental and may be unstable. They could change significantly or be removed in future updates due to Obsidian API changes or other factors. Please use with caution and provide feedback to help improve these features.")});new _c.Setting(e).setName(c("Base View")).setDesc(c("Advanced view management features that extend the default Task Genius views with additional functionality.")).setHeading();let i=new DocumentFragment;i.createEl("span",{text:c("Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.")}),i.createEl("div",{text:c("You need to close all bases view if you already create task view in them and remove unused view via edit them manually when disable this feature."),cls:"mod-warning"}),new _c.Setting(e).setName(c("Enable Base View")).setDesc(i).addToggle(n=>{var o;return n.setValue(((o=s.plugin.settings.betaTest)==null?void 0:o.enableBaseView)||!1).onChange(async l=>{l?new Ss(s.plugin,{title:c("Enable Base View"),message:c("Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes."),confirmText:c("Enable"),cancelText:c("Cancel"),onConfirm:d=>{if(!d){setTimeout(()=>{n.setValue(!1),s.display()},200);return}s.plugin.settings.betaTest||(s.plugin.settings.betaTest={enableBaseView:!1}),s.plugin.settings.betaTest.enableBaseView=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)}}).open():(s.plugin.settings.betaTest&&(s.plugin.settings.betaTest.enableBaseView=!1),s.applySettingsUpdate(),setTimeout(()=>{s.display()},200))})}),new _c.Setting(e).setName(c("Beta Feedback")).setDesc(c("Help improve these features by providing feedback on your experience.")).setHeading(),new _c.Setting(e).setName(c("Report Issues")).setDesc(c("If you encounter any issues with beta features, please report them to help improve the plugin.")).addButton(n=>{n.setButtonText(c("Report Issue")).onClick(()=>{window.open("https://github.com/quorafind/obsidian-task-genius/issues")})})}var HT=A(require("obsidian"));Q();var Dr=A(require("obsidian"));var qe=A(require("obsidian"));Q();var dn=A(require("obsidian")),Eg=(s,e)=>{let t=null,a=s.buttonEl,r=e.containerEl.win,i=[];try{typeof dn.getIconIds=="function"?i=(0,dn.getIconIds)():console.warn("Task Genius: getIconIds() not available.")}catch(o){console.error("Task Genius: Error calling getIconIds():",o)}let n=()=>{if(i.length,!i.length){new dn.Notice("Icon list unavailable.");return}t=e.containerEl.createDiv("tg-icon-menu bm-menu");let o=a.closest(".vertical-tab-content")||e.containerEl,l={},d=t.createEl("input",{attr:{type:"text",placeholder:"Search icons..."},cls:"tg-menu-search"});r.setTimeout(()=>d.focus(),50);let u=()=>{setTimeout(()=>{d.focus()},400)},p=()=>{d.focus()},m=t.createDiv("tg-menu-icons"),f=100,h=0,k=!1,g=(S,E=!0)=>{if(E&&(m.empty(),l={},h=0),!S.length&&h===0){m.empty(),m.createEl("p",{text:"No matching icons found."});return}let P=k?0:h*f,I=k?S.length:Math.min((h+1)*f,S.length);if(P>=I&&!k)return;S.slice(P,I).forEach(W=>{let O=m.createDiv({cls:"clickable-icon",attr:{"data-icon":W,"aria-label":W}});l[W]=O,(0,dn.setIcon)(O,W),O.addEventListener("click",()=>{e.onIconSelected(W),w()})}),k||h++,r.setTimeout(x,0)},y=()=>{let{scrollTop:S,scrollHeight:E,clientHeight:P}=m;k||E-S-P<50&&h*f<i.length&&g(i,!1)},w=()=>{t&&(t.remove(),t=null),r.removeEventListener("click",v),o==null||o.removeEventListener("scroll",C),m.removeEventListener("scroll",y),d.removeEventListener("click",u),d.removeEventListener("blur",p)},v=S=>{t&&!t.contains(S.target)&&w()},T=(0,dn.debounce)(()=>{let S=d.value.toLowerCase().trim();if(!S)k=!1,g(i);else{k=!0;let E=i.filter(P=>P.toLowerCase().includes(S));g(E)}},250,!0),x=()=>{if(!t)return;let S=a.getBoundingClientRect(),E=t.offsetHeight,P=t.offsetWidth,I=r.innerWidth,L=r.innerHeight,W=S.bottom+2,O=S.left;W+E>L-20&&(W=S.top-E-2),W<0&&(W=5),O+P>I-20&&(O=S.right-P,O<0&&(O=5)),O<0&&(O=5),t.style.position="fixed",t.style.top=`${W}px`,t.style.left=`${O}px`},C=()=>{w()};d.addEventListener("click",u),d.addEventListener("blur",p),m.addEventListener("scroll",y),g(i),d.addEventListener("input",T),document.body.appendChild(t),x(),r.setTimeout(()=>{r.addEventListener("click",v),o==null||o.addEventListener("scroll",C)},10)};s.onClick(()=>{t||n()})};var NT=class extends qe.Modal{constructor(e,t,a=null,r){super(e);this.habitData=null;this.habitType="daily";this.iconInput="circle-check";this.dailyInputs=null;this.countInputs=null;this.mappingPropertyInput=null;this.mappingInputs=[];this.eventInputs=[];this.plugin=t,this.habitData=a,this.onSubmit=r,this.isNew=!a,a&&(this.habitType=a.type,this.iconInput=a.icon)}onOpen(){this.titleEl.setText(this.isNew?c("Create new habit"):c("Edit habit")),this.modalEl.addClass("habit-edit-dialog"),this.buildForm()}buildForm(){var f;let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"habit-type-selector"});t.createDiv({cls:"habit-type-description"}).setText(c("Habit type"));let r=t.createDiv({cls:"habit-type-grid"});[{id:"daily",name:c("Daily habit"),icon:"calendar-check",description:c("Simple daily check-in habit")},{id:"count",name:c("Count habit"),icon:"bar-chart",description:c("Record numeric values, e.g., how many cups of water")},{id:"mapping",name:c("Mapping habit"),icon:"smile",description:c("Use different values to map, e.g., emotion tracking")},{id:"scheduled",name:c("Scheduled habit"),icon:"calendar",description:c("Habit with multiple events")}].forEach(h=>{let k=r.createDiv({cls:`habit-type-item ${h.id===this.habitType?"selected":""}`,attr:{"data-type":h.id}}),g=k.createDiv({cls:"habit-type-icon"},w=>{(0,qe.setIcon)(w,h.icon)}),y=k.createDiv({cls:"habit-type-text"});y.createDiv({cls:"habit-type-name",text:h.name}),y.createDiv({cls:"habit-type-desc",text:h.description}),k.addEventListener("click",()=>{document.querySelectorAll(".habit-type-item").forEach(w=>{w.removeClass("selected")}),k.addClass("selected"),this.habitType=h.id,this.buildTypeSpecificForm()})});let n=e.createDiv({cls:"habit-common-form"}),o=((f=this.habitData)==null?void 0:f.id)||this.generateId(),l;new qe.Setting(n).setName(c("Habit name")).setDesc(c("Display name of the habit")).addText(h=>{var k;l=h,h.setValue(((k=this.habitData)==null?void 0:k.name)||""),h.inputEl.addClass("habit-name-input")});let d;new qe.Setting(n).setName(c("Description")).setDesc(c("Optional habit description")).addText(h=>{var k;d=h,h.setValue(((k=this.habitData)==null?void 0:k.description)||""),h.inputEl.addClass("habit-desc-input")});let u;new qe.Setting(n).setName(c("Icon")).addButton(h=>{try{h.setIcon(this.iconInput||"circle-check")}catch(k){console.error("Error setting icon:",k);try{h.setIcon("circle-check")}catch(g){console.error("Failed to set default icon:",g)}}Eg(h,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:k=>{this.iconInput=k;try{(0,qe.setIcon)(h.buttonEl,k||"circle-check")}catch(g){console.error("Error setting icon:",g);try{(0,qe.setIcon)(h.buttonEl,"circle-check")}catch(y){console.error("Failed to set default icon:",y)}}this.iconInput=k}})});let p=e.createDiv({cls:"habit-type-form"}),m=e.createDiv({cls:"habit-edit-buttons"},h=>{new qe.ButtonComponent(h).setWarning().setButtonText(c("Cancel")).onClick(()=>{this.close()}),new qe.ButtonComponent(h).setCta().setButtonText(c("Save")).onClick(()=>{let k=l.getValue().trim();if(!k){new qe.Notice(c("Please enter a habit name"));return}let g={id:o,name:k,description:d.getValue()||void 0,icon:this.iconInput||"circle-check",type:this.habitType},y=this.getTypeSpecificData();!y||(g={...g,...y},this.onSubmit(g),this.close())})});this.buildTypeSpecificForm(p)}buildTypeSpecificForm(e){if(!(!e&&(e=this.contentEl.querySelector(".habit-type-form"),!e)))switch(e.empty(),this.habitType){case"daily":this.buildDailyHabitForm(e);break;case"count":this.buildCountHabitForm(e);break;case"mapping":this.buildMappingHabitForm(e);break;case"scheduled":this.buildScheduledHabitForm(e);break}}buildDailyHabitForm(e){let t=this.habitData,a,r;new qe.Setting(e).setName(c("Property name")).setDesc(c("The property name of the daily note front matter")).addText(i=>{a=i,i.setValue((t==null?void 0:t.property)||""),i.inputEl.addClass("habit-property-input")}),new qe.Setting(e).setName(c("Completion text")).setDesc(c("(Optional) Specific text representing completion, leave blank for any non-empty value to be considered completed")).addText(i=>{r=i,i.setValue((t==null?void 0:t.completionText)||""),i.inputEl.addClass("habit-completion-text-input")}),this.dailyInputs={property:a,completionText:r}}buildCountHabitForm(e){let t=this.habitData,a,r,i,n,o;new qe.Setting(e).setName(c("Property name")).setDesc(c("The property name in daily note front matter to store count values")).addText(l=>{a=l,l.setValue((t==null?void 0:t.property)||""),l.inputEl.addClass("habit-property-input")}),new qe.Setting(e).setName(c("Minimum value")).setDesc(c("(Optional) Minimum value for the count")).addText(l=>{var d;r=l,l.setValue(((d=t==null?void 0:t.min)==null?void 0:d.toString())||""),l.inputEl.type="number",l.inputEl.addClass("habit-min-input")}),new qe.Setting(e).setName(c("Maximum value")).setDesc(c("(Optional) Maximum value for the count")).addText(l=>{var d;i=l,l.setValue(((d=t==null?void 0:t.max)==null?void 0:d.toString())||""),l.inputEl.type="number",l.inputEl.addClass("habit-max-input")}),new qe.Setting(e).setName(c("Unit")).setDesc(c("(Optional) Unit for the count, such as 'cups', 'times', etc.")).addText(l=>{n=l,l.setValue((t==null?void 0:t.countUnit)||""),l.inputEl.addClass("habit-unit-input")}),new qe.Setting(e).setName(c("Notice threshold")).setDesc(c("(Optional) Trigger a notification when this value is reached")).addText(l=>{o=l,l.setValue((t==null?void 0:t.notice)||""),l.inputEl.addClass("habit-notice-input")}),this.countInputs={property:a,min:r,max:i,countUnit:n,notice:o}}buildMappingHabitForm(e){let t=this.habitData,a;new qe.Setting(e).setName(c("Property name")).setDesc(c("The property name in daily note front matter to store mapping values")).addText(l=>{a=l,l.setValue((t==null?void 0:t.property)||""),l.inputEl.addClass("habit-property-input")}),new qe.Setting(e).setName(c("Value mapping")).setDesc(c("Define mappings from numeric values to display text"));let r=e.createDiv({cls:"habit-mapping-container"}),i=(t==null?void 0:t.mapping)||{1:"\u{1F60A}",2:"\u{1F610}",3:"\u{1F614}"};this.mappingInputs=[];let n=(l,d)=>{let u=r.createDiv({cls:"habit-mapping-row"}),p=u.createEl("input",{type:"number",value:l.toString(),cls:"habit-mapping-key"});u.createSpan({text:"\u2192",cls:"habit-mapping-arrow"});let m=u.createEl("input",{type:"text",value:d,cls:"habit-mapping-value"});new qe.ExtraButtonComponent(u).setIcon("trash").setTooltip(c("Delete")).onClick(()=>{u.remove();let f=this.mappingInputs.findIndex(h=>h.keyInput===p&&h.valueInput===m);f>-1&&this.mappingInputs.splice(f,1)}),this.mappingInputs.push({keyInput:p,valueInput:m})};Object.entries(i).forEach(([l,d])=>{n(parseInt(l),d)}),e.createEl("button",{cls:"habit-add-mapping-button",text:c("Add new mapping")}).addEventListener("click",()=>{let l=0;this.mappingInputs.forEach(d=>{let u=parseInt(d.keyInput.value);!isNaN(u)&&u>l&&(l=u)}),n(l+1,"")}),this.mappingPropertyInput=a}buildScheduledHabitForm(e){let t=this.habitData;new qe.Setting(e).setName(c("Scheduled events")).setDesc(c("Add multiple events that need to be completed"));let a=e.createDiv({cls:"habit-events-container"}),r=(t==null?void 0:t.events)||[],i=(t==null?void 0:t.propertiesMap)||{};this.eventInputs=[];let n=(l={name:"",details:""},d="")=>{let u=a.createDiv({cls:"habit-event-row"}),p=u.createEl("input",{type:"text",value:l.name,cls:"habit-event-name",placeholder:c("Event name")}),m=u.createEl("input",{type:"text",value:l.details,cls:"habit-event-details",placeholder:c("Event details")}),f=u.createEl("input",{type:"text",value:d,cls:"habit-event-property",placeholder:c("Property name")});new qe.ExtraButtonComponent(u).setIcon("trash").setTooltip(c("Delete")).onClick(()=>{u.remove();let h=this.eventInputs.findIndex(k=>k.nameInput===p&&k.detailsInput===m&&k.propertyInput===f);h>-1&&this.eventInputs.splice(h,1)}),this.eventInputs.push({nameInput:p,detailsInput:m,propertyInput:f})};r.length>0?r.forEach(l=>{let d=i[l.name]||"";n(l,d)}):n(),e.createEl("button",{cls:"habit-add-event-button",text:c("Add new event")}).addEventListener("click",()=>{n()})}getTypeSpecificData(){switch(this.habitType){case"daily":return this.getDailyHabitData();case"count":return this.getCountHabitData();case"mapping":return this.getMappingHabitData();case"scheduled":return this.getScheduledHabitData()}return null}getDailyHabitData(){if(!this.dailyInputs)return null;let e=this.dailyInputs.property.getValue().trim();return e?{type:"daily",property:e,completionText:this.dailyInputs.completionText.getValue()||void 0}:(new qe.Notice(c("Please enter a property name")),null)}getCountHabitData(){if(!this.countInputs)return null;let e=this.countInputs.property.getValue().trim();if(!e)return new qe.Notice(c("Please enter a property name")),null;let t=this.countInputs.min.getValue(),a=this.countInputs.max.getValue(),r=this.countInputs.notice.getValue();return{type:"count",property:e,min:t?parseInt(t):void 0,max:a?parseInt(a):void 0,notice:r||void 0,countUnit:this.countInputs.countUnit.getValue()||void 0}}getMappingHabitData(){if(!this.mappingPropertyInput||!this.mappingInputs)return null;let e=this.mappingPropertyInput.getValue().trim();if(!e)return new qe.Notice(c("Please enter a property name")),null;if(this.mappingInputs.length===0)return new qe.Notice(c("Please add at least one mapping value")),null;let t={};for(let a of this.mappingInputs){let r=parseInt(a.keyInput.value),i=a.valueInput.value;if(isNaN(r))return new qe.Notice(c("Mapping key must be a number")),null;if(!i)return new qe.Notice(c("Please enter text for all mapping values")),null;t[r]=i}return{type:"mapping",property:e,mapping:t}}getScheduledHabitData(){if(!this.eventInputs)return null;if(this.eventInputs.length===0)return new qe.Notice(c("Please add at least one event")),null;let e=[],t={};for(let a of this.eventInputs){let r=a.nameInput.value.trim(),i=a.detailsInput.value.trim(),n=a.propertyInput.value.trim();if(!r)return new qe.Notice(c("Event name cannot be empty")),null;e.push({name:r,details:i}),n&&(t[r]=n)}return{type:"scheduled",events:e,propertiesMap:t}}generateId(){return Date.now().toString()+Math.random().toString(36).substring(2,9)}};Q();var LT=class{constructor(e,t){this.plugin=e,this.containerEl=t,this.app=e.app,this.render()}render(){let{containerEl:e}=this;e.empty();let t=e.createDiv({cls:"habit-add-button-container"});new Dr.ButtonComponent(t).setButtonText(c("Add new habit")).setClass("habit-add-button").onClick(()=>{this.openHabitEditDialog()}),this.plugin.settings.habit?this.plugin.settings.habit.enableHabits||(this.plugin.settings.habit.enableHabits=!0):this.plugin.settings.habit={habits:[],enableHabits:!0},this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]);let a=this.plugin.settings.habit.habits||[];a.length===0?this.renderEmptyState():this.renderHabitList(a)}renderEmptyState(){let e=this.containerEl.createDiv({cls:"habit-empty-state"});e.createEl("h2",{text:c("No habits yet")}),e.createEl("p",{text:c("Click the button above to add your first habit")})}renderHabitList(e){let{containerEl:t}=this,a=t.createDiv({cls:"habit-items-container"});e.forEach(r=>{let i=a.createDiv({cls:"habit-item"}),n=i.createDiv({cls:"habit-item-icon"});(0,Dr.setIcon)(n,r.icon||"circle-check");let o=i.createDiv({cls:"habit-item-info"});o.createEl("div",{cls:"habit-item-name",text:r.name}),r.description&&o.createEl("div",{cls:"habit-item-description",text:r.description});let l={daily:c("Daily habit"),count:c("Count habit"),mapping:c("Mapping habit"),scheduled:c("Scheduled habit")},d=o.createEl("div",{cls:"habit-item-type",text:l[r.type]||r.type});i.createDiv({cls:"habit-item-actions"},u=>{new Dr.ExtraButtonComponent(u).setTooltip(c("Edit")).setIcon("edit").onClick(()=>{this.openHabitEditDialog(r)}),new Dr.ExtraButtonComponent(u).setTooltip(c("Delete")).setIcon("trash").onClick(()=>{this.deleteHabit(r)})})})}openHabitEditDialog(e){new NT(this.app,this.plugin,e||null,a=>{if(this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]),e){let r=this.plugin.settings.habit.habits,i=r.findIndex(n=>n.id===e.id);i>-1&&(r[i]=a)}else this.plugin.settings.habit.habits.push(a);this.plugin.saveSettings(),this.render(),new Dr.Notice(e?c("Habit updated"):c("Habit added"))}).open()}deleteHabit(e){let t=e.name,a=new Dr.Modal(this.app);a.titleEl.setText(c("Delete habit")),a.contentEl.createDiv().setText(c("Are you sure you want to delete the habit ")+`"${t}"?`+c("This action cannot be undone.")),a.contentEl.createDiv({cls:"habit-delete-modal-buttons"},i=>{new Dr.ButtonComponent(i).setButtonText(c("Cancel")).setClass("habit-cancel-button").onClick(()=>{a.close()}),new Dr.ButtonComponent(i).setWarning().setButtonText(c("Delete")).setClass("habit-delete-button-confirm").onClick(()=>{if(!this.plugin.settings.habit.habits){this.plugin.settings.habit.habits=[],a.close();return}let n=this.plugin.settings.habit.habits,o=n.findIndex(l=>l.id===e.id);o>-1&&(n.splice(o,1),this.plugin.saveSettings(),this.render(),new Dr.Notice(c("Habit deleted"))),a.close()})}),a.open()}};function BT(s,e){new HT.Setting(e).setName(c("Habit")).setDesc(c("Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.")).setHeading(),new HT.Setting(e).setName(c("Enable habits")).addToggle(a=>{a.setValue(s.plugin.settings.habit.enableHabits).onChange(async r=>{s.plugin.settings.habit.enableHabits=r,s.applySettingsUpdate()})});let t=e.createDiv({cls:"habit-settings-container"});R8(s,t)}function R8(s,e){new LT(s.plugin,e)}var ge=A(require("obsidian"));Q();var no=class{static isHoliday(e,t){if(!t.enabled)return!1;let{detectionPatterns:a}=t;if(a.summary)for(let r of a.summary)try{if(new RegExp(r,"i").test(e.summary))return!0}catch(i){console.warn(`Invalid regex pattern: ${r}`,i)}if(a.description&&e.description)for(let r of a.description)try{if(new RegExp(r,"i").test(e.description))return!0}catch(i){console.warn(`Invalid regex pattern: ${r}`,i)}if(a.categories&&e.categories){for(let r of a.categories)if(e.categories.some(i=>i.toLowerCase().includes(r.toLowerCase())))return!0}if(a.keywords){let r=[e.summary,e.description||""].join(" ");for(let i of a.keywords)if(r.toLowerCase().includes(i.toLowerCase()))return!0}return!1}static groupConsecutiveHolidays(e,t){if(!t.enabled||t.groupingStrategy==="none")return[];let a=e.filter(n=>this.isHoliday(n,t)).sort((n,o)=>n.dtstart.getTime()-o.dtstart.getTime());if(a.length===0)return[];let r=[],i=[a[0]];for(let n=1;n<a.length;n++){let o=a[n],l=i[i.length-1];this.calculateDaysBetween(l.dtend||l.dtstart,o.dtstart)<=t.maxGapDays?i.push(o):(i.length>0&&r.push(this.createHolidayGroup(i,t)),i=[o])}return i.length>0&&r.push(this.createHolidayGroup(i,t)),r}static processEventsWithHolidayDetection(e,t){if(!t.enabled)return e.map(n=>({...n,isHoliday:!1,showInForecast:!0}));let a=this.groupConsecutiveHolidays(e,t),r=new Map;a.forEach(n=>{n.events.forEach(o=>{r.set(o.uid,n)})});let i=[];return e.forEach(n=>{let o=this.isHoliday(n,t),l=r.get(n.uid),d=!0;if(o&&l){switch(t.groupingStrategy){case"first-only":d=l.events[0].uid===n.uid;break;case"summary":d=l.events[0].uid===n.uid;break;case"range":let u=l.events[0].uid===n.uid,p=l.events[l.events.length-1].uid===n.uid;d=u||p;break;default:d=!0}t.showInForecast||(d=!1)}i.push({...n,isHoliday:o,holidayGroup:l,showInForecast:d})}),i}static createHolidayGroup(e,t){let a=e.sort((u,p)=>u.dtstart.getTime()-p.dtstart.getTime()),r=a[0],i=a[a.length-1],n=r.dtstart,o=i.dtend||i.dtstart,l=a.length>1,d=r.summary;return t.groupingStrategy==="summary"&&l?t.groupDisplayFormat?d=t.groupDisplayFormat.replace("{title}",r.summary).replace("{count}",a.length.toString()).replace("{startDate}",this.formatDate(n)).replace("{endDate}",this.formatDate(o)):d=`${r.summary} (${a.length} days)`:t.groupingStrategy==="range"&&l&&(d=`${r.summary} - ${this.formatDateRange(n,o)}`),{id:`holiday-group-${r.uid}-${a.length}`,title:d,startDate:n,endDate:o,events:a,source:r.source,isMultiDay:l,displayStrategy:t.groupingStrategy==="none"?"first-only":t.groupingStrategy}}static calculateDaysBetween(e,t){let a=24*60*60*1e3,r=new Date(e),i=new Date(t);return r.setHours(0,0,0,0),i.setHours(0,0,0,0),Math.round(Math.abs((r.getTime()-i.getTime())/a))}static formatDate(e){return e.toLocaleDateString()}static formatDateRange(e,t){let a=this.formatDate(e),r=this.formatDate(t);return a===r?a:`${a} - ${r}`}static getDefaultConfig(){return{enabled:!1,detectionPatterns:{summary:["holiday","vacation","\u516C\u5047","\u5047\u671F","\u8282\u65E5","\u6625\u8282","\u56FD\u5E86","\u4E2D\u79CB","\u6E05\u660E","\u52B3\u52A8\u8282","\u7AEF\u5348","\u5143\u65E6","Christmas","New Year","Easter","Thanksgiving"],keywords:["holiday","vacation","day off","public holiday","bank holiday","\u5047\u671F","\u4F11\u5047","\u8282\u65E5","\u516C\u5047"],categories:["holiday","vacation","\u5047\u671F","\u8282\u65E5"]},groupingStrategy:"first-only",maxGapDays:1,showInForecast:!1,showInCalendar:!0,groupDisplayFormat:"{title} ({count} days)"}}};var Ei=class{static convertWebcalUrl(e){let t=e.trim();if(!t)return{success:!1,originalUrl:e,error:"URL cannot be empty",wasWebcal:!1};if(!this.WEBCAL_REGEX.test(t))return this.isValidHttpUrl(t)?{success:!0,convertedUrl:t,originalUrl:e,wasWebcal:!1}:{success:!1,originalUrl:e,error:"Invalid URL format. Please provide a valid http://, https://, or webcal:// URL",wasWebcal:!1};try{let r=this.performWebcalConversion(t);return this.isValidHttpUrl(r)?{success:!0,convertedUrl:r,originalUrl:e,wasWebcal:!0}:{success:!1,originalUrl:e,error:"Converted URL is not valid",wasWebcal:!0}}catch(r){return{success:!1,originalUrl:e,error:r instanceof Error?r.message:"Unknown conversion error",wasWebcal:!0}}}static performWebcalConversion(e){let t=e.replace(this.WEBCAL_REGEX,"");return(this.shouldUseHttps(t)?"https://":"http://")+t}static shouldUseHttps(e){let t=e.split("/")[0].split("?")[0].toLowerCase(),a=["localhost","127.0.0.1"],r=t.split(":")[0];return!a.includes(r)}static isValidHttpUrl(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch(t){return!1}}static isWebcalUrl(e){return this.WEBCAL_REGEX.test(e.trim())}static getConversionDescription(e){return e.success?e.wasWebcal?`Converted webcal URL to: ${e.convertedUrl}`:`Valid HTTP/HTTPS URL: ${e.convertedUrl}`:`Error: ${e.error}`}static getFetchUrl(e){let t=this.convertWebcalUrl(e);return t.success?t.convertedUrl:null}};Ei.WEBCAL_REGEX=/^webcal:\/\//i,Ei.URL_VALIDATION_REGEX=/^https?:\/\/[^\s/$.?#].[^\s]*$/i;var Dg=class{constructor(e,t,a){this.plugin=e,this.containerEl=t,this.config={...e.settings.icsIntegration},this.onBack=a}display(){this.containerEl.empty(),this.containerEl.addClass("ics-settings-container");let e=this.containerEl.createDiv("settings-tab-section-header"),t=this.containerEl.createDiv("ics-header-container");if(this.onBack){let i=new ge.ButtonComponent(e).setClass("header-button").onClick(()=>{var n;(n=this.onBack)==null||n.call(this)});i.buttonEl.createEl("span",{cls:"header-button-icon"},n=>{(0,ge.setIcon)(n,"arrow-left")}),i.buttonEl.createEl("span",{cls:"header-button-text",text:c("Back to main settings")})}t.createEl("h2",{text:c("ICS Calendar Integration")}),t.createEl("p",{text:c("Configure external calendar sources to display events in your task views."),cls:"ics-description"}),this.displayGlobalSettings(),this.displaySourcesList();let r=this.containerEl.createDiv("ics-add-source-container").createEl("button",{text:"+ "+c("Add New Calendar Source")});r.onclick=()=>{new WT(this.plugin.app,i=>{this.config.sources.push(i),this.saveAndRefresh()}).open()}}displayGlobalSettings(){let e=this.containerEl.createDiv("ics-global-settings");e.createEl("h3",{text:c("Global Settings")}),new ge.Setting(e).setName(c("Enable Background Refresh")).setDesc(c("Automatically refresh calendar sources in the background")).addToggle(t=>{t.setValue(this.config.enableBackgroundRefresh).onChange(a=>{this.config.enableBackgroundRefresh=a,this.saveSettings()})}),new ge.Setting(e).setName(c("Global Refresh Interval")).setDesc(c("Default refresh interval for all sources (minutes)")).addText(t=>{t.setPlaceholder("60").setValue(this.config.globalRefreshInterval.toString()).onChange(a=>{let r=parseInt(a,10);!isNaN(r)&&r>0&&(this.config.globalRefreshInterval=r,this.saveSettings())})}),new ge.Setting(e).setName(c("Maximum Cache Age")).setDesc(c("How long to keep cached data (hours)")).addText(t=>{t.setPlaceholder("24").setValue(this.config.maxCacheAge.toString()).onChange(a=>{let r=parseInt(a,10);!isNaN(r)&&r>0&&(this.config.maxCacheAge=r,this.saveSettings())})}),new ge.Setting(e).setName(c("Network Timeout")).setDesc(c("Request timeout in seconds")).addText(t=>{t.setPlaceholder("30").setValue(this.config.networkTimeout.toString()).onChange(a=>{let r=parseInt(a,10);!isNaN(r)&&r>0&&(this.config.networkTimeout=r,this.saveSettings())})}),new ge.Setting(e).setName(c("Max Events Per Source")).setDesc(c("Maximum number of events to load from each source")).addText(t=>{t.setPlaceholder("1000").setValue(this.config.maxEventsPerSource.toString()).onChange(a=>{let r=parseInt(a,10);!isNaN(r)&&r>0&&(this.config.maxEventsPerSource=r,this.saveSettings())})}),new ge.Setting(e).setName(c("Default Event Color")).setDesc(c("Default color for events without a specific color")).addColorPicker(t=>{t.setValue(this.config.defaultEventColor).onChange(a=>{this.config.defaultEventColor=a,this.saveSettings()})})}displaySourcesList(){let e=this.containerEl.createDiv("ics-sources-list");if(e.createEl("h3",{text:c("Calendar Sources")}),this.config.sources.length===0){e.createDiv("ics-empty-state").createEl("p",{text:c("No calendar sources configured. Add a source to get started.")});return}this.config.sources.forEach((t,a)=>{let r=e.createDiv("ics-source-item"),i=r.createDiv("ics-source-header");i.createDiv("ics-source-title").createEl("strong",{text:t.name});let o=i.createEl("span",{cls:"ics-source-status"});o.setText(t.enabled?c("ICS Enabled"):c("ICS Disabled")),o.addClass(t.enabled?"status-enabled":"status-disabled");let l=r.createDiv("ics-source-details");if(l.createEl("div",{text:`${c("URL")}: ${this.truncateUrl(t.url)}`,title:t.url}),l.createEl("div",{text:`${c("Refresh")}: ${t.refreshInterval}${c("min")}`}),t.color){let g=l.createEl("div");g.createSpan({text:`${c("Color")}: `}),g.createEl("span",{attr:{style:`display: inline-block; width: 12px; height: 12px; background: ${t.color}; border-radius: 2px; margin-left: 4px; vertical-align: middle;`}}),g.createSpan({text:` ${t.color}`})}let d=r.createDiv("ics-source-actions"),u=d.createDiv("primary-actions"),p=u.createEl("button",{text:c("Edit"),cls:"mod-cta",title:c("Edit this calendar source")});p.onclick=()=>{new WT(this.plugin.app,g=>{this.config.sources[a]=g,this.saveAndRefresh()},t).open()};let m=u.createEl("button",{text:c("Sync"),attr:{"aria-label":c("Sync this calendar source now")}});m.onclick=async()=>{m.disabled=!0,m.addClass("syncing"),m.setText("\u27F3 "+c("Syncing..."));try{let g=this.plugin.getIcsManager();if(g){let y=await g.syncSource(t.id);y.success?(new ge.Notice(c("Sync completed successfully")),m.removeClass("syncing"),m.addClass("success"),setTimeout(()=>m.removeClass("success"),2e3)):(new ge.Notice(c("Sync failed: ")+y.error),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3))}}catch(g){new ge.Notice(c("Sync failed: ")+g.message),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3)}finally{m.disabled=!1,m.setText(c("Sync"))}};let f=d.createDiv("secondary-actions"),h=f.createEl("button",{text:t.enabled?c("Disable"):c("Enable"),title:t.enabled?c("Disable this source"):c("Enable this source")});h.onclick=()=>{this.config.sources[a].enabled=!this.config.sources[a].enabled,this.saveAndRefresh()};let k=f.createEl("button",{text:c("Delete"),cls:"mod-warning",title:c("Delete this calendar source")});k.onclick=()=>{confirm(c("Are you sure you want to delete this calendar source?"))&&(this.config.sources.splice(a,1),this.saveAndRefresh())}})}truncateUrl(e,t=50){return e.length<=t?e:e.substring(0,t-3)+"..."}saveSettings(){this.plugin.settings.icsIntegration={...this.config},this.plugin.saveSettings();let e=this.plugin.getIcsManager();e&&e.updateConfig(this.config)}saveAndRefresh(){this.saveSettings(),this.display()}},WT=class extends ge.Modal{constructor(e,t,a){super(e);this.onSave=t,this.isEditing=!!a,this.modalEl.addClass("ics-source-modal"),a?this.source={...a}:this.source={id:this.generateId(),name:"",url:"",enabled:!0,refreshInterval:60,showAllDayEvents:!0,showTimedEvents:!0,showType:"event"}}onOpen(){let{contentEl:e}=this;e.empty(),e.createEl("h2",{text:this.isEditing?c("Edit ICS Source"):c("Add ICS Source")}),new ge.Setting(e).setName(c("ICS Source Name")).setDesc(c("Display name for this calendar source")).addText(n=>{n.setPlaceholder(c("My Calendar")).setValue(this.source.name).onChange(o=>{this.source.name=o})}),new ge.Setting(e).setName(c("ICS URL")).setDesc(c("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)")).addText(n=>{n.setPlaceholder("https://example.com/calendar.ics or webcal://example.com/calendar.ics").setValue(this.source.url).onChange(o=>{var l,d;if(this.source.url=o,Ei.isWebcalUrl(o)){let u=Ei.convertWebcalUrl(o);if(u.success){let p=Ei.getConversionDescription(u),m=(l=n.inputEl.parentElement)==null?void 0:l.querySelector(".setting-item-description");m&&(m.textContent=`${c("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)")} - ${p}`)}}else{let u=(d=n.inputEl.parentElement)==null?void 0:d.querySelector(".setting-item-description");u&&(u.textContent=c("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)"))}})}),new ge.Setting(e).setName(c("ICS Enabled")).setDesc(c("Whether this source is active")).addToggle(n=>{n.setValue(this.source.enabled).onChange(o=>{this.source.enabled=o})}),new ge.Setting(e).setName(c("Refresh Interval")).setDesc(c("How often to refresh this source (minutes)")).addText(n=>{n.setPlaceholder("60").setValue(this.source.refreshInterval.toString()).onChange(o=>{let l=parseInt(o,10);!isNaN(l)&&l>0&&(this.source.refreshInterval=l)})}),new ge.Setting(e).setName(c("Color")).setDesc(c("Color for events from this source (optional)")).addText(n=>{n.setPlaceholder("#3b82f6").setValue(this.source.color||"").onChange(o=>{(!o||o.match(/^#[0-9a-fA-F]{6}$/))&&(this.source.color=o||void 0)})}),new ge.Setting(e).setName(c("Show Type")).setDesc(c("How to display events from this source in calendar views")).addDropdown(n=>{n.addOption("event",c("Event")).addOption("badge",c("Badge")).setValue(this.source.showType).onChange(o=>{this.source.showType=o})}),new ge.Setting(e).setName(c("Show All-Day Events")).setDesc(c("Include all-day events from this source")).addToggle(n=>{n.setValue(this.source.showAllDayEvents).onChange(o=>{this.source.showAllDayEvents=o})}),new ge.Setting(e).setName(c("Show Timed Events")).setDesc(c("Include timed events from this source")).addToggle(n=>{n.setValue(this.source.showTimedEvents).onChange(o=>{this.source.showTimedEvents=o})}),this.displayTextReplacements(e),this.displayHolidayConfiguration(e),this.displayStatusMappingConfiguration(e);let t=e.createDiv();t.createEl("h3",{text:c("Authentication (Optional)")}),new ge.Setting(t).setName(c("Authentication Type")).setDesc(c("Type of authentication required")).addDropdown(n=>{var o;n.addOption("none",c("ICS Auth None")).addOption("basic",c("Basic Auth")).addOption("bearer",c("Bearer Token")).addOption("custom",c("Custom Headers")).setValue(((o=this.source.auth)==null?void 0:o.type)||"none").onChange(l=>{l==="none"?this.source.auth=void 0:this.source.auth={type:l,...this.source.auth},this.refreshAuthFields(t)})}),this.refreshAuthFields(t);let a=e.createDiv("modal-button-container"),r=a.createEl("button",{text:c("Save"),cls:"mod-cta"});r.onclick=()=>{this.validateSource()&&(this.onSave(this.source),this.close())};let i=a.createEl("button",{text:c("Cancel")});i.onclick=()=>{this.close()}}displayTextReplacements(e){let t=e.createDiv();t.createEl("h3",{text:c("Text Replacements")}),t.createEl("p",{text:c("Configure rules to modify event text using regular expressions"),cls:"setting-item-description"}),this.source.textReplacements||(this.source.textReplacements=[]);let a=t.createDiv("text-replacements-list"),r=()=>{a.empty(),this.source.textReplacements.length===0?a.createDiv("text-replacements-empty").createEl("p",{text:c("No text replacement rules configured"),cls:"setting-item-description"}):this.source.textReplacements.forEach((o,l)=>{let d=a.createDiv("text-replacement-rule"),u=d.createDiv("text-replacement-header"),p=u.createEl("strong",{text:o.name||`Rule ${l+1}`}),m=u.createEl("span",{cls:`text-replacement-status ${o.enabled?"enabled":"disabled"}`,text:o.enabled?c("Enabled"):c("Disabled")}),f=d.createDiv("text-replacement-details");f.createEl("div",{text:`${c("Target")}: ${o.target}`}),f.createEl("div",{text:`${c("Pattern")}: ${o.pattern}`,cls:"text-replacement-pattern"}),f.createEl("div",{text:`${c("Replacement")}: ${o.replacement}`,cls:"text-replacement-replacement"});let h=d.createDiv("text-replacement-actions"),k=h.createEl("button",{text:c("Edit"),cls:"mod-cta"});k.onclick=()=>{new _T(this.app,w=>{this.source.textReplacements[l]=w,r()},o).open()};let g=h.createEl("button",{text:o.enabled?c("Disable"):c("Enable")});g.onclick=()=>{this.source.textReplacements[l].enabled=!o.enabled,r()};let y=h.createEl("button",{text:c("Delete"),cls:"mod-warning"});y.onclick=()=>{confirm(c("Are you sure you want to delete this text replacement rule?"))&&(this.source.textReplacements.splice(l,1),r())}})};r();let n=t.createDiv("text-replacement-add").createEl("button",{text:"+ "+c("Add Text Replacement Rule")});n.onclick=()=>{new _T(this.app,o=>{this.source.textReplacements.push(o),r()}).open()}}refreshAuthFields(e){if(e.querySelectorAll(".auth-field").forEach(a=>a.remove()),!(!this.source.auth||this.source.auth.type==="none"))switch(this.source.auth.type){case"basic":new ge.Setting(e).setName(c("ICS Username")).setClass("auth-field").addText(a=>{var r;a.setValue(((r=this.source.auth)==null?void 0:r.username)||"").onChange(i=>{this.source.auth&&(this.source.auth.username=i)})}),new ge.Setting(e).setName(c("ICS Password")).setClass("auth-field").addText(a=>{var r;a.setValue(((r=this.source.auth)==null?void 0:r.password)||"").onChange(i=>{this.source.auth&&(this.source.auth.password=i)}),a.inputEl.type="password"});break;case"bearer":new ge.Setting(e).setName(c("ICS Bearer Token")).setClass("auth-field").addText(a=>{var r;a.setValue(((r=this.source.auth)==null?void 0:r.token)||"").onChange(i=>{this.source.auth&&(this.source.auth.token=i)})});break;case"custom":new ge.Setting(e).setName(c("Custom Headers")).setDesc(c("JSON object with custom headers")).setClass("auth-field").addTextArea(a=>{var r;a.setValue(JSON.stringify(((r=this.source.auth)==null?void 0:r.headers)||{},null,2)).onChange(i=>{try{let n=JSON.parse(i);this.source.auth&&(this.source.auth.headers=n)}catch(n){}})});break}}displayHolidayConfiguration(e){let t=e.createDiv();t.createEl("h3",{text:c("Holiday Configuration")}),t.createEl("p",{text:c("Configure how holiday events are detected and displayed"),cls:"setting-item-description"}),this.source.holidayConfig||(this.source.holidayConfig=no.getDefaultConfig()),new ge.Setting(t).setName(c("Enable Holiday Detection")).setDesc(c("Automatically detect and group holiday events")).addToggle(a=>{a.setValue(this.source.holidayConfig.enabled).onChange(r=>{this.source.holidayConfig.enabled=r,this.refreshHolidaySettings(t)})}),this.refreshHolidaySettings(t)}displayStatusMappingConfiguration(e){let t=e.createDiv();t.createEl("h3",{text:c("Status Mapping")}),t.createEl("p",{text:c("Configure how ICS events are mapped to task statuses"),cls:"setting-item-description"}),this.source.statusMapping||(this.source.statusMapping={enabled:!1,timingRules:{pastEvents:"x",currentEvents:"/",futureEvents:" "},overrideIcsStatus:!0}),new ge.Setting(t).setName(c("Enable Status Mapping")).setDesc(c("Automatically map ICS events to specific task statuses")).addToggle(a=>{a.setValue(this.source.statusMapping.enabled).onChange(r=>{this.source.statusMapping.enabled=r,this.refreshStatusMappingSettings(t)})}),this.refreshStatusMappingSettings(t)}refreshHolidaySettings(e){var r;if(e.querySelectorAll(".holiday-setting").forEach(i=>i.remove()),!((r=this.source.holidayConfig)==null?void 0:r.enabled))return;new ge.Setting(e).setName(c("Grouping Strategy")).setDesc(c("How to handle consecutive holiday events")).setClass("holiday-setting").addDropdown(i=>{i.addOption("none",c("Show All Events")).addOption("first-only",c("Show First Day Only")).addOption("summary",c("Show Summary")).addOption("range",c("Show First and Last")).setValue(this.source.holidayConfig.groupingStrategy).onChange(n=>{this.source.holidayConfig.groupingStrategy=n})}),new ge.Setting(e).setName(c("Maximum Gap Days")).setDesc(c("Maximum days between events to consider them consecutive")).setClass("holiday-setting").addText(i=>{i.setPlaceholder("1").setValue(this.source.holidayConfig.maxGapDays.toString()).onChange(n=>{let o=parseInt(n,10);!isNaN(o)&&o>=0&&(this.source.holidayConfig.maxGapDays=o)})}),new ge.Setting(e).setName(c("Show in Forecast")).setDesc(c("Whether to show holiday events in forecast view")).setClass("holiday-setting").addToggle(i=>{i.setValue(this.source.holidayConfig.showInForecast).onChange(n=>{this.source.holidayConfig.showInForecast=n})}),new ge.Setting(e).setName(c("Show in Calendar")).setDesc(c("Whether to show holiday events in calendar view")).setClass("holiday-setting").addToggle(i=>{i.setValue(this.source.holidayConfig.showInCalendar).onChange(n=>{this.source.holidayConfig.showInCalendar=n})});let a=e.createDiv("holiday-setting");a.createEl("h4",{text:c("Detection Patterns")}),new ge.Setting(a).setName(c("Summary Patterns")).setDesc(c("Regex patterns to match in event titles (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.summary||[]).join(`
`)).onChange(n=>{this.source.holidayConfig.detectionPatterns.summary=n.split(`
`).map(o=>o.trim()).filter(o=>o.length>0)})}),new ge.Setting(a).setName(c("Keywords")).setDesc(c("Keywords to detect in event text (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.keywords||[]).join(`
`)).onChange(n=>{this.source.holidayConfig.detectionPatterns.keywords=n.split(`
`).map(o=>o.trim()).filter(o=>o.length>0)})}),new ge.Setting(a).setName(c("Categories")).setDesc(c("Event categories that indicate holidays (one per line)")).addTextArea(i=>{i.setValue((this.source.holidayConfig.detectionPatterns.categories||[]).join(`
`)).onChange(n=>{this.source.holidayConfig.detectionPatterns.categories=n.split(`
`).map(o=>o.trim()).filter(o=>o.length>0)})}),new ge.Setting(e).setName(c("Group Display Format")).setDesc(c("Format for grouped holiday display. Use {title}, {count}, {startDate}, {endDate}")).setClass("holiday-setting").addText(i=>{i.setPlaceholder("{title} ({count} days)").setValue(this.source.holidayConfig.groupDisplayFormat||"").onChange(n=>{this.source.holidayConfig.groupDisplayFormat=n||void 0})})}refreshStatusMappingSettings(e){var i;if(e.querySelectorAll(".status-mapping-setting").forEach(n=>n.remove()),!((i=this.source.statusMapping)==null?void 0:i.enabled))return;new ge.Setting(e).setName(c("Override ICS Status")).setDesc(c("Override original ICS event status with mapped status")).setClass("status-mapping-setting").addToggle(n=>{n.setValue(this.source.statusMapping.overrideIcsStatus).onChange(o=>{this.source.statusMapping.overrideIcsStatus=o})});let a=e.createDiv("status-mapping-setting");a.createEl("h4",{text:c("Timing Rules")}),new ge.Setting(a).setName(c("Past Events Status")).setDesc(c("Status for events that have already ended")).addDropdown(n=>{n.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(this.source.statusMapping.timingRules.pastEvents).onChange(o=>{this.source.statusMapping.timingRules.pastEvents=o})}),new ge.Setting(a).setName(c("Current Events Status")).setDesc(c("Status for events happening today")).addDropdown(n=>{n.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(this.source.statusMapping.timingRules.currentEvents).onChange(o=>{this.source.statusMapping.timingRules.currentEvents=o})}),new ge.Setting(a).setName(c("Future Events Status")).setDesc(c("Status for events in the future")).addDropdown(n=>{n.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(this.source.statusMapping.timingRules.futureEvents).onChange(o=>{this.source.statusMapping.timingRules.futureEvents=o})});let r=e.createDiv("status-mapping-setting");r.createEl("h4",{text:c("Property Rules")}),r.createEl("p",{text:c("Optional rules based on event properties (higher priority than timing rules)"),cls:"setting-item-description"}),this.source.statusMapping.propertyRules||(this.source.statusMapping.propertyRules={}),new ge.Setting(r).setName(c("Holiday Status")).setDesc(c("Status for events detected as holidays")).addDropdown(n=>{var o;n.addOption("",c("Use timing rules")).addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(((o=this.source.statusMapping.propertyRules.holidayMapping)==null?void 0:o.holidayStatus)||"").onChange(l=>{this.source.statusMapping.propertyRules.holidayMapping||(this.source.statusMapping.propertyRules.holidayMapping={holidayStatus:"-"}),l?this.source.statusMapping.propertyRules.holidayMapping.holidayStatus=l:delete this.source.statusMapping.propertyRules.holidayMapping})}),new ge.Setting(r).setName(c("Category Mapping")).setDesc(c("Map specific categories to statuses (format: category:status, one per line)")).addTextArea(n=>{let o=this.source.statusMapping.propertyRules.categoryMapping||{},l=Object.entries(o).map(([d,u])=>`${d}:${u}`).join(`
`);n.setValue(l).onChange(d=>{let u={},p=d.split(`
`).filter(m=>m.trim());for(let m of p){let[f,h]=m.split(":").map(k=>k.trim());f&&h&&(u[f]=h)}Object.keys(u).length>0?this.source.statusMapping.propertyRules.categoryMapping=u:delete this.source.statusMapping.propertyRules.categoryMapping})})}validateSource(){if(!this.source.name.trim())return new ge.Notice(c("Please enter a name for the source")),!1;if(!this.source.url.trim())return new ge.Notice(c("Please enter a URL for the source")),!1;let e=Ei.convertWebcalUrl(this.source.url);return e.success?!0:(new ge.Notice(c("Please enter a valid URL")+": "+e.error),!1)}generateId(){return`ics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}},_T=class extends ge.Modal{constructor(e,t,a){super(e);this.onSave=t,this.isEditing=!!a,this.modalEl.addClass("ics-text-replacement-modal"),a?this.rule={...a}:this.rule={id:this.generateId(),name:"",enabled:!0,target:"summary",pattern:"",replacement:"",flags:"g"}}onOpen(){let{contentEl:e}=this;e.empty(),e.createEl("h2",{text:this.isEditing?c("Edit Text Replacement Rule"):c("Add Text Replacement Rule")}),new ge.Setting(e).setName(c("Rule Name")).setDesc(c("Descriptive name for this replacement rule")).addText(k=>{k.setPlaceholder(c("Remove Meeting Prefix")).setValue(this.rule.name).onChange(g=>{this.rule.name=g})}),new ge.Setting(e).setName(c("Enabled")).setDesc(c("Whether this rule is active")).addToggle(k=>{k.setValue(this.rule.enabled).onChange(g=>{this.rule.enabled=g})}),new ge.Setting(e).setName(c("Target Field")).setDesc(c("Which field to apply the replacement to")).addDropdown(k=>{k.addOption("summary",c("Summary/Title")).addOption("description",c("Description")).addOption("location",c("Location")).addOption("all",c("All Fields")).setValue(this.rule.target).onChange(g=>{this.rule.target=g})});let t,a,r=k=>{if(!!a)try{if(this.rule.pattern&&k){let g=new RegExp(this.rule.pattern,this.rule.flags||"g"),y=k.replace(g,this.rule.replacement),w=a.querySelector(".test-result");w&&(w.textContent=y,w.style.color=y!==k?"#4caf50":"#666")}else{let g=a.querySelector(".test-result");g&&(g.textContent=k||"",g.style.color="#666")}}catch(g){let y=a.querySelector(".test-result");y&&(y.textContent="Invalid regex pattern",y.style.color="#f44336")}};new ge.Setting(e).setName(c("Pattern (Regular Expression)")).setDesc(c("Regular expression pattern to match. Use parentheses for capture groups.")).addText(k=>{k.setPlaceholder("^Meeting: ").setValue(this.rule.pattern).onChange(g=>{this.rule.pattern=g,t&&t.getValue()&&r(t.getValue())})}),new ge.Setting(e).setName(c("Replacement")).setDesc(c("Text to replace matches with. Use $1, $2, etc. for capture groups.")).addText(k=>{k.setPlaceholder("").setValue(this.rule.replacement).onChange(g=>{this.rule.replacement=g,t&&t.getValue()&&r(t.getValue())})}),new ge.Setting(e).setName(c("Regex Flags")).setDesc(c("Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)")).addText(k=>{k.setPlaceholder("g").setValue(this.rule.flags||"").onChange(g=>{this.rule.flags=g,t&&t.getValue()&&r(t.getValue())})});let i=e.createDiv();i.createEl("h3",{text:c("Examples")});let n=i.createEl("ul"),o=n.createEl("li");o.createEl("strong",{text:c("Remove prefix")+": "}),o.createSpan({text:"Pattern: "}),o.createEl("code",{text:"^Meeting: "}),o.createSpan({text:", Replacement: "}),o.createEl("code",{text:""});let l=n.createEl("li");l.createEl("strong",{text:c("Replace room numbers")+": "}),l.createSpan({text:"Pattern: "}),l.createEl("code",{text:"Room (\\d+)"}),l.createSpan({text:", Replacement: "}),l.createEl("code",{text:"Conference Room $1"});let d=n.createEl("li");d.createEl("strong",{text:c("Swap words")+": "}),d.createSpan({text:"Pattern: "}),d.createEl("code",{text:"(\\w+) with (\\w+)"}),d.createSpan({text:", Replacement: "}),d.createEl("code",{text:"$2 and $1"});let u=e.createDiv();u.createEl("h3",{text:c("Test Rule")}),a=u.createDiv("test-output"),a.createEl("strong",{text:c("Output: ")});let p=a.createEl("span",{cls:"test-result"});new ge.Setting(u).setName(c("Test Input")).setDesc(c("Enter text to test the replacement rule")).addText(k=>{t=k,k.setPlaceholder("Meeting: Weekly Standup").onChange(g=>{r(g)})});let m=e.createDiv("modal-button-container"),f=m.createEl("button",{text:c("Save"),cls:"mod-cta"});f.onclick=()=>{this.validateRule()&&(this.onSave(this.rule),this.close())};let h=m.createEl("button",{text:c("Cancel")});h.onclick=()=>{this.close()}}validateRule(){if(!this.rule.name.trim())return new ge.Notice(c("Please enter a name for the rule")),!1;if(!this.rule.pattern.trim())return new ge.Notice(c("Please enter a pattern")),!1;try{new RegExp(this.rule.pattern,this.rule.flags||"g")}catch(e){return new ge.Notice(c("Invalid regular expression pattern")),!1}return!0}generateId(){return`rule-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}};var vt=A(require("obsidian"));Q();function VT(s,e){new vt.Setting(e).setName(c("Progress bar")).setDesc(c("You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.")).setHeading().settingEl.setAttribute("data-setting-id","progress-bar-main"),new vt.Setting(e).setName(c("Progress display mode")).setDesc(c("Choose how to display task progress")).addDropdown(a=>a.addOption("none",c("No progress indicators")).addOption("graphical",c("Graphical progress bar")).addOption("text",c("Text progress indicator")).addOption("both",c("Both graphical and text")).setValue(s.plugin.settings.progressBarDisplayMode).onChange(async r=>{s.plugin.settings.progressBarDisplayMode=r,s.applySettingsUpdate(),s.display()})).settingEl.setAttribute("data-setting-id","progress-display-mode"),s.plugin.settings.progressBarDisplayMode!=="none"&&(new vt.Setting(e).setName(c("Enable progress bar in reading mode")).setDesc(c("Toggle this to allow this plugin to show progress bars in reading mode.")).addToggle(a=>a.setValue(s.plugin.settings.enableProgressbarInReadingMode).onChange(async r=>{s.plugin.settings.enableProgressbarInReadingMode=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Support hover to show progress info")).setDesc(c("Toggle this to allow this plugin to show progress info when hovering over the progress bar.")).addToggle(a=>a.setValue(s.plugin.settings.supportHoverToShowProgressInfo).onChange(async r=>{s.plugin.settings.supportHoverToShowProgressInfo=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Add progress bar to non-task bullet")).setDesc(c("Toggle this to allow adding progress bars to regular list items (non-task bullets).")).addToggle(a=>a.setValue(s.plugin.settings.addProgressBarToNonTaskBullet).onChange(async r=>{s.plugin.settings.addProgressBarToNonTaskBullet=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Add progress bar to Heading")).setDesc(c("Toggle this to allow this plugin to add progress bar for Task below the headings.")).addToggle(a=>a.setValue(s.plugin.settings.addTaskProgressBarToHeading).onChange(async r=>{s.plugin.settings.addTaskProgressBarToHeading=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Count sub children of current Task")).setDesc(c("Toggle this to allow this plugin to count sub tasks when generating progress bar.")).addToggle(a=>a.setValue(s.plugin.settings.countSubLevel).onChange(async r=>{s.plugin.settings.countSubLevel=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Use custom goal for progress bar")).setDesc(c("Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.")).addToggle(a=>a.setValue(s.plugin.settings.allowCustomProgressGoal).onChange(async r=>{s.plugin.settings.allowCustomProgressGoal=r,s.applySettingsUpdate()})),(s.plugin.settings.progressBarDisplayMode==="text"||s.plugin.settings.progressBarDisplayMode==="both")&&F8(s,e),new vt.Setting(e).setName(c("Hide progress bars")).setHeading(),new vt.Setting(e).setName(c("Hide progress bars based on conditions")).setDesc(c("Toggle this to enable hiding progress bars based on tags, folders, or metadata.")).addToggle(a=>a.setValue(s.plugin.settings.hideProgressBarBasedOnConditions).onChange(async r=>{s.plugin.settings.hideProgressBarBasedOnConditions=r,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),s.plugin.settings.hideProgressBarBasedOnConditions&&(new vt.Setting(e).setName(c("Hide by tags")).setDesc(c('Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"')).addText(a=>a.setPlaceholder(me.hideProgressBarTags).setValue(s.plugin.settings.hideProgressBarTags).onChange(async r=>{s.plugin.settings.hideProgressBarTags=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Hide by folders")).setDesc(c('Specify folder paths that will hide progress bars (comma-separated). Example: "Daily Notes,Projects/Hidden"')).addText(a=>a.setPlaceholder("folder1,folder2/subfolder").setValue(s.plugin.settings.hideProgressBarFolders).onChange(async r=>{s.plugin.settings.hideProgressBarFolders=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Hide by metadata")).setDesc(c('Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"')).addText(a=>a.setPlaceholder(me.hideProgressBarMetadata).setValue(s.plugin.settings.hideProgressBarMetadata).onChange(async r=>{s.plugin.settings.hideProgressBarMetadata=r,s.applySettingsUpdate()})),new vt.Setting(e).setName(c("Show progress bars based on heading")).setDesc(c("Toggle this to enable showing progress bars based on heading.")).addText(a=>a.setPlaceholder(c("# heading")).setValue(s.plugin.settings.showProgressBarBasedOnHeading).onChange(async r=>{s.plugin.settings.showProgressBarBasedOnHeading=r,s.applySettingsUpdate()}))))}function F8(s,e){if(new vt.Setting(e).setName(c("Progress format")).setDesc(c("Choose how to display the task progress")).addDropdown(t=>{t.addOption("percentage",c("Percentage (75%)")).addOption("bracketPercentage",c("Bracketed percentage ([75%])")).addOption("fraction",c("Fraction (3/4)")).addOption("bracketFraction",c("Bracketed fraction ([3/4])")).addOption("detailed",c("Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])")).addOption("custom",c("Custom format")).addOption("range-based",c("Range-based text")).setValue(s.plugin.settings.displayMode||"bracketFraction").onChange(async a=>{s.plugin.settings.displayMode=a,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.displayMode==="custom"){let t=document.createDocumentFragment();t.createEl("div",{cls:"custom-format-placeholder-info",text:c("Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.")}),t.createEl("div",{cls:"custom-format-placeholder-info",text:c("Available placeholders: {{COMPLETED}}, {{TOTAL}}, {{IN_PROGRESS}}, {{ABANDONED}}, {{PLANNED}}, {{NOT_STARTED}}, {{PERCENT}}, {{COMPLETED_SYMBOL}}, {{IN_PROGRESS_SYMBOL}}, {{ABANDONED_SYMBOL}}, {{PLANNED_SYMBOL}}")}),t.createEl("div",{cls:"custom-format-placeholder-info",text:c("Support expression in format, like using data.percentages to get the percentage of completed tasks. And using math or even repeat functions to get the result.")}),new vt.Setting(e).setName(c("Custom format")).setDesc(t);let a=e.createDiv({cls:"custom-format-preview-container"}),r=a.createDiv({cls:"custom-format-preview-label",text:c("Preview:")}),i=a.createDiv({cls:"custom-format-preview-content"});UT(s,e,s.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]");let n=e.createEl("div",{cls:"custom-format-textarea-container"},d=>{let u=new vt.TextAreaComponent(d);u.inputEl.toggleClass("custom-format-textarea",!0),u.setPlaceholder("[{{COMPLETED}}/{{TOTAL}}]").setValue(s.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]").onChange(async p=>{s.plugin.settings.customFormat=p,s.applySettingsUpdate(),UT(s,e,p)})});new vt.Setting(e).setName(c("Expression examples")).setDesc(c("Examples of advanced formats using expressions")).setHeading();let o=e.createEl("div",{cls:"expression-examples"});[{name:c("Text Progress Bar"),code:'[${="=".repeat(Math.floor(data.percentages.completed/10)) + " ".repeat(10-Math.floor(data.percentages.completed/10))}] {{PERCENT}}%'},{name:c("Emoji Progress Bar"),code:'${="\u2B1B".repeat(Math.floor(data.percentages.completed/10)) + "\u2B1C".repeat(10-Math.floor(data.percentages.completed/10))} {{PERCENT}}%'},{name:c("Color-coded Status"),code:"{{COMPLETED}}/{{TOTAL}} ${=data.percentages.completed < 30 ? '\u{1F534}' : data.percentages.completed < 70 ? '\u{1F7E0}' : '\u{1F7E2}'}"},{name:c("Status with Icons"),code:"[{{COMPLETED_SYMBOL}}:{{COMPLETED}} {{IN_PROGRESS_SYMBOL}}:{{IN_PROGRESS}} {{PLANNED_SYMBOL}}:{{PLANNED}} / {{TOTAL}}]"}].forEach(d=>{let u=o.createEl("div",{cls:"expression-example-item"});u.createEl("div",{cls:"expression-example-name",text:d.name});let p=u.createEl("code",{cls:"expression-example-code",text:d.code}),m=u.createEl("div",{cls:"expression-example-preview"}),f={completed:3,total:5,inProgress:1,abandoned:0,notStarted:0,planned:1,percentages:{completed:60,inProgress:20,abandoned:0,notStarted:0,planned:20}};try{let k=$H(s,d.code,f);m.setText(`${c("Preview")}: ${k}`)}catch(k){m.setText(`${c("Preview")}: Error`),m.addClass("expression-preview-error")}u.createEl("button",{cls:"expression-example-use",text:c("Use")}).addEventListener("click",()=>{s.plugin.settings.customFormat=d.code,s.applySettingsUpdate();let k=e.querySelectorAll("textarea");for(let g of Array.from(k))if(g.placeholder==="[{{COMPLETED}}/{{TOTAL}}]"){g.value=d.code;break}UT(s,e,d.code)})})}else(s.plugin.settings.displayMode==="range-based"||!s.plugin.settings.displayMode)&&(new vt.Setting(e).setName(c("Show percentage")).setDesc(c("Toggle this to show percentage instead of completed/total count.")).addToggle(t=>t.setValue(s.plugin.settings.showPercentage).onChange(async a=>{s.plugin.settings.showPercentage=a,s.applySettingsUpdate()})),s.plugin.settings.showPercentage&&s.plugin.settings.displayMode==="range-based"&&(new vt.Setting(e).setName(c("Customize progress ranges")).setDesc(c("Toggle this to customize the text for different progress ranges.")).addToggle(t=>t.setValue(s.plugin.settings.customizeProgressRanges).onChange(async a=>{s.plugin.settings.customizeProgressRanges=a,s.applySettingsUpdate(),s.display()})),s.plugin.settings.customizeProgressRanges&&j8(s,e)))}function j8(s,e){new vt.Setting(e).setName(c("Progress Ranges")).setDesc(c("Define progress ranges and their corresponding text representations.")).setHeading(),s.plugin.settings.progressRanges.forEach((a,r)=>{new vt.Setting(e).setName(`${c("Range")} ${r+1}: ${a.min}%-${a.max}%`).setDesc(`${c("Use")} {{PROGRESS}} ${c("as a placeholder for the percentage value")}`).addText(i=>i.setPlaceholder(`${c("Template text with")} {{PROGRESS}} ${c("placeholder")}`).setValue(a.text).onChange(async n=>{s.plugin.settings.progressRanges[r].text=n,s.applySettingsUpdate()})).addButton(i=>{i.setButtonText("Delete").onClick(async()=>{s.plugin.settings.progressRanges.splice(r,1),s.applySettingsUpdate(),s.display()})})}),new vt.Setting(e).setName(c("Add new range")).setDesc(c("Add a new progress percentage range with custom text"));let t=new vt.Setting(e);t.infoEl.detach(),t.addText(a=>a.setPlaceholder(c("Min percentage (0-100)")).setValue("").onChange(async r=>{})).addText(a=>a.setPlaceholder(c("Max percentage (0-100)")).setValue("").onChange(async r=>{})).addText(a=>a.setPlaceholder(c("Text template (use {{PROGRESS}})")).setValue("").onChange(async r=>{})).addButton(a=>{a.setButtonText("Add").onClick(async()=>{let r=a.buttonEl.parentElement;if(!r)return;let i=r.querySelectorAll("input");if(i.length<3)return;let n=parseInt(i[0].value),o=parseInt(i[1].value),l=i[2].value;isNaN(n)||isNaN(o)||!l||(s.plugin.settings.progressRanges.push({min:n,max:o,text:l}),i[0].value="",i[1].value="",i[2].value="",s.applySettingsUpdate(),s.display())})}),new vt.Setting(e).setName(c("Reset to defaults")).setDesc(c("Reset progress ranges to default values")).addButton(a=>{a.setButtonText(c("Reset")).onClick(async()=>{s.plugin.settings.progressRanges=[{min:0,max:20,text:c("Just started {{PROGRESS}}%")},{min:20,max:40,text:c("Making progress {{PROGRESS}}%")},{min:40,max:60,text:c("Half way {{PROGRESS}}%")},{min:60,max:80,text:c("Good progress {{PROGRESS}}%")},{min:80,max:100,text:c("Almost there {{PROGRESS}}%")}],s.applySettingsUpdate(),s.display()})})}function UT(s,e,t){let a=e.querySelector(".custom-format-preview-content");if(!a)return;let r={completed:3,total:5,inProgress:1,abandoned:0,notStarted:0,planned:1,percentages:{completed:60,inProgress:20,abandoned:0,notStarted:0,planned:20}};try{let i=$H(s,t,r);a.setText(i),a.removeClass("custom-format-preview-error")}catch(i){a.setText("Error rendering format"),a.addClass("custom-format-preview-error")}}function $H(s,e,t){try{let a=s.plugin.settings.customFormat;s.plugin.settings.customFormat=e;let r=Fo(t,s.plugin);return s.plugin.settings.customFormat=a,r}catch(a){throw console.error("Error in renderFormatPreview:",a),a}}var Xt=A(require("obsidian"));Q();function $T(s,e){new Xt.Setting(e).setName(c("Quick capture")).setHeading(),new Xt.Setting(e).setName(c("Enable quick capture")).setDesc(c("Toggle this to enable Org-mode style quick capture panel.")).addToggle(t=>t.setValue(s.plugin.settings.quickCapture.enableQuickCapture).onChange(async a=>{s.plugin.settings.quickCapture.enableQuickCapture=a,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),!!s.plugin.settings.quickCapture.enableQuickCapture&&(new Xt.Setting(e).setName(c("Target type")).setDesc(c("Choose whether to capture to a fixed file or daily note")).addDropdown(t=>t.addOption("fixed",c("Fixed file")).addOption("daily-note",c("Daily note")).setValue(s.plugin.settings.quickCapture.targetType).onChange(async a=>{s.plugin.settings.quickCapture.targetType=a,s.applySettingsUpdate(),setTimeout(()=>{s.display()},100)})),s.plugin.settings.quickCapture.targetType==="fixed"&&new Xt.Setting(e).setName(c("Target file")).setDesc(c("The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}")).addText(t=>t.setValue(s.plugin.settings.quickCapture.targetFile).onChange(async a=>{s.plugin.settings.quickCapture.targetFile=a,s.applySettingsUpdate()})),s.plugin.settings.quickCapture.targetType==="daily-note"&&(new Xt.Setting(e).setName(c("Sync with Daily Notes plugin")).setDesc(c("Automatically sync settings from the Daily Notes plugin")).addButton(t=>t.setButtonText(c("Sync now")).onClick(async()=>{var a;try{let r=s.app.internalPlugins.plugins["daily-notes"];if(r&&r.enabled){let i=((a=r.instance)==null?void 0:a.options)||{};s.plugin.settings.quickCapture.dailyNoteSettings={format:i.format||"YYYY-MM-DD",folder:i.folder||"",template:i.template||""},await s.plugin.saveSettings(),setTimeout(()=>{s.display()},200),new Xt.Notice(c("Daily notes settings synced successfully"))}else new Xt.Notice(c("Daily Notes plugin is not enabled"))}catch(r){console.error("Failed to sync daily notes settings:",r),new Xt.Notice(c("Failed to sync daily notes settings"))}})),new Xt.Setting(e).setName(c("Daily note format")).setDesc(c("Date format for daily notes (e.g., YYYY-MM-DD)")).addText(t=>{var a;return t.setValue(((a=s.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:a.format)||"YYYY-MM-DD").onChange(async r=>{s.plugin.settings.quickCapture.dailyNoteSettings.format=r,s.applySettingsUpdate()})}),new Xt.Setting(e).setName(c("Daily note folder")).setDesc(c("Folder path for daily notes (leave empty for root)")).addText(t=>{var a;return t.setValue(((a=s.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:a.folder)||"").onChange(async r=>{s.plugin.settings.quickCapture.dailyNoteSettings.folder=r,s.applySettingsUpdate()})}),new Xt.Setting(e).setName(c("Daily note template")).setDesc(c("Template file path for new daily notes (optional)")).addText(t=>{var a;return t.setValue(((a=s.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:a.template)||"").onChange(async r=>{s.plugin.settings.quickCapture.dailyNoteSettings.template=r,s.applySettingsUpdate()})})),new Xt.Setting(e).setName(c("Target heading")).setDesc(c("Optional heading to append content under (leave empty to append to file)")).addText(t=>t.setValue(s.plugin.settings.quickCapture.targetHeading||"").onChange(async a=>{s.plugin.settings.quickCapture.targetHeading=a,s.applySettingsUpdate()})),new Xt.Setting(e).setName(c("Placeholder text")).setDesc(c("Placeholder text to display in the capture panel")).addText(t=>t.setValue(s.plugin.settings.quickCapture.placeholder).onChange(async a=>{s.plugin.settings.quickCapture.placeholder=a,s.applySettingsUpdate()})),new Xt.Setting(e).setName(c("Append to file")).setDesc(c("How to add captured content to the target location")).addDropdown(t=>t.addOption("append",c("Append")).addOption("prepend",c("Prepend")).addOption("replace",c("Replace")).setValue(s.plugin.settings.quickCapture.appendToFile).onChange(async a=>{s.plugin.settings.quickCapture.appendToFile=a,s.applySettingsUpdate()})),new Xt.Setting(e).setName(c("Auto-add task prefix")).setDesc(c("Automatically add task checkbox prefix to captured content")).addToggle(t=>{var a;return t.setValue((a=s.plugin.settings.quickCapture.autoAddTaskPrefix)!=null?a:!0).onChange(async r=>{s.plugin.settings.quickCapture.autoAddTaskPrefix=r,s.applySettingsUpdate(),setTimeout(()=>{s.display()},100)})}),s.plugin.settings.quickCapture.autoAddTaskPrefix&&new Xt.Setting(e).setName(c("Task prefix format")).setDesc(c("The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)")).addText(t=>t.setValue(s.plugin.settings.quickCapture.taskPrefix||"- [ ]").onChange(async a=>{s.plugin.settings.quickCapture.taskPrefix=a||"- [ ]",s.applySettingsUpdate()})),new Xt.Setting(e).setName(c("Minimal Mode")).setHeading(),new Xt.Setting(e).setName(c("Enable minimal mode")).setDesc(c("Enable simplified single-line quick capture with inline suggestions")).addToggle(t=>t.setValue(s.plugin.settings.quickCapture.enableMinimalMode).onChange(async a=>{s.plugin.settings.quickCapture.enableMinimalMode=a,s.applySettingsUpdate(),setTimeout(()=>{s.display()},100)})),!!s.plugin.settings.quickCapture.enableMinimalMode&&(s.plugin.settings.quickCapture.minimalModeSettings||(s.plugin.settings.quickCapture.minimalModeSettings={suggestTrigger:"/"}),new Xt.Setting(e).setName(c("Suggest trigger character")).setDesc(c("Character to trigger the suggestion menu")).addText(t=>t.setValue(s.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger).onChange(async a=>{s.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger=a||"/",s.applySettingsUpdate()}))))}var er=A(require("obsidian"));fv();hs();function YT(s,e){if(new er.Setting(e).setName(pt("Rewards")).setDesc(pt("Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.")).setHeading(),new er.Setting(e).setName(pt("Enable rewards")).setDesc(pt("Toggle to enable or disable the reward system.")).addToggle(o=>o.setValue(s.plugin.settings.rewards.enableRewards).onChange(async l=>{s.plugin.settings.rewards.enableRewards=l,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),!s.plugin.settings.rewards.enableRewards)return;new er.Setting(e).setName(pt("Reward display type")).setDesc(pt("Choose how rewards are displayed when earned.")).addDropdown(o=>{o.addOption("modal",pt("Modal dialog")).addOption("notice",pt("Notice (Auto-accept)")).setValue(s.plugin.settings.rewards.showRewardType||"modal").onChange(async l=>{s.plugin.settings.rewards.showRewardType=l,s.applySettingsUpdate()})}),new er.Setting(e).setName(pt("Occurrence levels")).setDesc(pt("Define different levels of reward rarity and their probability.")).setHeading();let t=e.createDiv({cls:"rewards-levels-container"}),a=(0,er.debounce)((o,l,d,u)=>{let p=parseInt(d,10);!isNaN(p)&&p>=0&&p<=100?(s.plugin.settings.rewards.occurrenceLevels[u].chance=p,s.applySettingsUpdate()):(new er.Notice(pt("Chance must be between 0 and 100.")),o.setValue(l.chance.toString()))},1e3),r=(0,er.debounce)((o,l)=>{s.plugin.settings.rewards.occurrenceLevels[l].name=o.trim(),s.applySettingsUpdate()},1e3);s.plugin.settings.rewards.occurrenceLevels.forEach((o,l)=>{let d=new er.Setting(t).setClass("rewards-level-row").addText(u=>u.setPlaceholder(pt("Level Name (e.g., common)")).setValue(o.name).onChange(p=>{r(p,l)})).addText(u=>u.setPlaceholder(pt("Chance (%)")).setValue(o.chance.toString()).onChange(p=>{a(u,o,p,l)})).addButton(u=>u.setIcon("trash").setTooltip(pt("Delete Level")).setClass("mod-warning").onClick(()=>{s.plugin.settings.rewards.occurrenceLevels.splice(l,1),s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)}))}),new er.Setting(t).addButton(o=>o.setButtonText(pt("Add occurrence level")).setCta().onClick(()=>{let l={name:pt("New Level"),chance:0};s.plugin.settings.rewards.occurrenceLevels.push(l),s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),new er.Setting(e).setName(pt("Reward items")).setDesc(pt("Manage the specific rewards that can be obtained.")).setHeading();let i=e.createDiv({cls:"rewards-items-container"}),n=s.plugin.settings.rewards.occurrenceLevels.map(o=>o.name);n.length===0&&n.push(pt("No levels defined")),s.plugin.settings.rewards.rewardItems.forEach((o,l)=>{let d=new er.Setting(i).setClass("rewards-item-row").addTextArea(u=>u.setPlaceholder(pt("Reward Name/Text")).setValue(o.name).onChange(p=>{s.plugin.settings.rewards.rewardItems[l].name=p,s.applySettingsUpdate()})).addDropdown(u=>{n.forEach(p=>{u.addOption(p,p)}),u.setValue(o.occurrence||n[0]).onChange(p=>{s.plugin.settings.rewards.rewardItems[l].occurrence=p,s.applySettingsUpdate()})}).addText(u=>{u.inputEl.ariaLabel=pt("Inventory (-1 for \u221E)"),u.setPlaceholder(pt("Inventory (-1 for \u221E)")).setValue(o.inventory.toString()).onChange(p=>{let m=parseInt(p,10);isNaN(m)?(new er.Notice(pt("Invalid inventory number.")),u.setValue(o.inventory.toString())):(s.plugin.settings.rewards.rewardItems[l].inventory=m,s.applySettingsUpdate())})}).addText(u=>u.setPlaceholder(pt("Condition (e.g., #tag AND project)")).setValue(o.condition||"").onChange(p=>{s.plugin.settings.rewards.rewardItems[l].condition=p.trim()||void 0,s.applySettingsUpdate()})).addText(u=>{u.setPlaceholder(pt("Image url (optional)")).setValue(o.imageUrl||"").onChange(p=>{s.plugin.settings.rewards.rewardItems[l].imageUrl=p.trim()||void 0,s.applySettingsUpdate()}),new bv(s.app,u.inputEl,s.plugin)}).addButton(u=>u.setIcon("trash").setTooltip(pt("Delete reward item")).setClass("mod-warning").onClick(()=>{s.plugin.settings.rewards.rewardItems.splice(l,1),s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)}));i.createEl("hr",{cls:"rewards-item-divider"})}),s.plugin.settings.rewards.rewardItems.length===0&&i.createEl("p",{text:pt("No reward items defined yet."),cls:"setting-item-description"}),new er.Setting(i).addButton(o=>o.setButtonText(pt("Add reward item")).setCta().onClick(()=>{var d;let l={id:`reward-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,name:pt("New Reward"),occurrence:((d=s.plugin.settings.rewards.occurrenceLevels[0])==null?void 0:d.name)||"default",inventory:-1};s.plugin.settings.rewards.rewardItems.push(l),s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)}))}var Ia=A(require("obsidian"));Q();var wt=A(require("obsidian")),fr=A(require("@codemirror/state")),pn=A(require("@codemirror/view"));var zT=A(require("obsidian"));function Qr(s){if(s=s.trim(),!s)return{type:"TEXT",value:""};let e=0,t=-1;for(let i=0;i<s.length;i++)if(s[i]==="(")e===0&&(t=i),e++;else if(s[i]===")"&&(e--,e===0&&t!==-1)){let n=s.substring(0,t).trim(),o=s.substring(t+1,i).trim(),l=s.substring(i+1).trim();if(n.toUpperCase().endsWith("NOT")){let d=n.substring(0,n.length-3).trim(),u={type:"NOT",child:Qr(o)};if(d||l){let p=(d+" "+l).trim();return zH(u,Qr(p))}return u}else{let d=Qr(o);if(n||l){let u=(n+" "+l).trim();return zH(d,Qr(u))}return d}}if(s.toUpperCase().startsWith("NOT "))return{type:"NOT",child:Qr(s.substring(4).trim())};let a=YH(s," AND ");if(a!==-1)return{type:"AND",left:Qr(s.substring(0,a).trim()),right:Qr(s.substring(a+5).trim())};let r=YH(s," OR ");if(r!==-1)return{type:"OR",left:Qr(s.substring(0,r).trim()),right:Qr(s.substring(r+4).trim())};if(s.startsWith("#"))return{type:"TAG",value:s};if(s.toUpperCase().startsWith("PRIORITY:")){let i=s.substring(9).trim();if(i.startsWith(">="))return{type:"PRIORITY",op:">=",value:s.substring(11).trim()};if(i.startsWith("<="))return{type:"PRIORITY",op:"<=",value:s.substring(11).trim()};if(i.startsWith("!="))return{type:"PRIORITY",op:"!=",value:s.substring(11).trim()};if(i.startsWith(">")||i.startsWith("<")||i.startsWith("=")){let n=i.charAt(0);return{type:"PRIORITY",op:n,value:i.substring(1).trim()}}else return{type:"PRIORITY",op:"=",value:i.trim()}}if(s.toUpperCase().startsWith("DATE:")){let i=s.substring(5).trim();if(i.startsWith(">="))return{type:"DATE",op:">=",value:s.substring(7).trim()};if(i.startsWith("<="))return{type:"DATE",op:"<=",value:s.substring(7).trim()};if(i.startsWith("!="))return{type:"DATE",op:"!=",value:s.substring(7).trim()};if(i.startsWith(">")||i.startsWith("<")||i.startsWith("=")){let n=i.charAt(0);return{type:"DATE",op:n,value:i.substring(1).trim()}}else return{type:"DATE",op:"=",value:i.trim()}}return{type:"TEXT",value:s}}function YH(s,e){let t=0;for(let a=0;a<=s.length-e.length;a++)if(s[a]==="(")t++;else if(s[a]===")")t--;else if(t===0&&s.substring(a,a+e.length).toUpperCase()===e)return a;return-1}function zH(s,e){return{type:"AND",left:s,right:e}}function un(s,e){switch(s.type){case"AND":return un(s.left,e)&&un(s.right,e);case"OR":return un(s.left,e)||un(s.right,e);case"NOT":return!un(s.child,e);case"TEXT":return e.content.toLowerCase().includes(s.value.toLowerCase());case"TAG":return e.metadata.tags.some(i=>typeof i=="string"&&i.toLowerCase()===s.value.toLowerCase());case"PRIORITY":let t=e.metadata.priority;if(t===void 0)return!1;let a=qT(s.value);if(a===null)return!1;switch(s.op){case">":return t>a;case"<":return t<a;case"=":return t===a;case">=":return t>=a;case"<=":return t<=a;case"!=":return t!==a;default:return!1}case"DATE":let r=e.metadata.dueDate;if(r===void 0)return!1;try{let i=(0,zT.moment)(r),n=(0,zT.moment)(s.value);if(!i.isValid()||!n.isValid())return!1;switch(s.op){case">":return i.isAfter(n,"day");case"<":return i.isBefore(n,"day");case"=":return i.isSame(n,"day");case">=":return i.isSameOrAfter(n,"day");case"<=":return i.isSameOrBefore(n,"day");case"!=":return!i.isSame(n,"day");default:return!1}}catch(i){return console.error("Date comparison error:",i),!1}}}function qT(s){let e={"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u{1F534}":4,"\u{1F7E0}":3,"\u{1F7E1}":2.5,"\u{1F7E2}":2,"\u{1F535}":1.5,"\u26AA\uFE0F":1,"\u26AB\uFE0F":0,highest:5,high:4,medium:3,low:2,lowest:1,"[#A]":5,"[#B]":4,"[#C]":3,"[#D]":2,"[#E]":1};if(e.hasOwnProperty(s))return e[s];if(s.startsWith("#")){let a=s.substring(1),r=parseInt(a,10);if(!isNaN(r))return r}let t=parseInt(s,10);return isNaN(t)?(console.warn(`Unrecognized priority filter value: ${s}`),null):t}Q();var tl=fr.StateEffect.define(),Xr=fr.StateEffect.define(),GT=fr.StateEffect.define(),Cu=fr.StateField.define({create:()=>!1,update(s,e){var t;for(let a of e.effects)a.is(tl)&&((t=e.state.field(wt.editorInfoField))==null?void 0:t.file)&&(s=a.value);return s},provide:s=>pn.showPanel.from(s,e=>e?W8:null)}),KT=fr.StateField.define({create:()=>({...Es}),update(s,e){for(let t of e.effects)t.is(Xr)&&(s=t.value);return s}}),O8=fr.StateField.define({create:s=>!1,update(s,e){return s||(setTimeout(()=>{let t=e.state.field(wt.editorInfoField),a=e.state.field(wt.editorEditorField);if(t&&a&&(t==null?void 0:t.file)){if(t.filterAction)return!0;let r=e.state.facet(JT),i=t==null?void 0:t.addAction("filter",c("Filter Tasks"),n=>{let o=new wt.Menu;al(a)&&QT(a,r)&&o.addItem(d=>{d.setTitle(c("Reset")).onClick(()=>{a==null||a.dispatch({effects:Xr.of(Es)}),Di(a,r),a.dispatch({effects:tl.of(!1)})})}),o.addItem(d=>{d.setTitle(a.state.field(Cu)?c("Hide filter panel"):c("Show filter panel")).onClick(()=>{a==null||a.dispatch({effects:tl.of(!a.state.field(Cu))})})}),o.addSeparator(),r&&r.settings.taskFilter.presetTaskFilters&&r.settings.taskFilter.presetTaskFilters.forEach(d=>{o.addItem(u=>{u.setTitle(d.name).onClick(()=>{a&&(a.dispatch({effects:Xr.of({...d.options})}),Di(a,r))})})}),o.showAtMouseEvent(n)});r.register(()=>{i.detach(),t.filterAction=null}),t.filterAction=i}},0),!0)}}),N8=fr.StateField.define({create:()=>[],update(s,e){for(let t of e.effects)if(t.is(GT))return t.value;return e.docChanged&&(s=s.map(t=>({from:e.changes.mapPos(t.from),to:e.changes.mapPos(t.to)}))),s}}),Es={includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"},L8=fr.Facet.define({combine:s=>{let e={...Es};for(let t of s)Object.assign(e,t);return e}});function xu(s){let e={...Es};return Object.keys(Es).forEach(t=>{t in s&&s[t]!==void 0&&(e[t]=s[t])}),"filterOutTasks"in s&&s.filterMode===void 0&&(e.filterMode=s.filterOutTasks?"EXCLUDE":"INCLUDE"),e}function Pg(s,e){return s[e]}function H8(s){let e;if(s.priority){let a=qT(s.priority);a!==null&&(e=a)}let t;if(s.date){let a=(0,wt.moment)(s.date,[wt.moment.ISO_8601,"YYYY-MM-DD","DD.MM.YYYY","MM/DD/YYYY"],!0);a.isValid()&&(t=a.valueOf())}return{id:`${s.from}-${s.to}`,content:s.text,filePath:"",line:0,completed:s.status==="completed",status:s.status,originalMarkdown:s.text,metadata:{tags:s.tags,priority:e,dueDate:t,children:[]}}}function QT(s,e){let t=al(s);return!Object.keys(Es).every(r=>t[r]===Es[r])}function B8(s,e,t,a){let r=al(s),i=(0,wt.debounce)((S,E)=>{Di(S,E)},2e3);e.createEl("div",{cls:"task-filter-header-container"}).createEl("span",{cls:"task-filter-title",text:c("Filter Tasks")});let o=e.createEl("div",{cls:"task-filter-options"}),l=o.createEl("div",{cls:"task-filter-preset-container"}),d=a.settings.taskFilter.presetTaskFilters||[],u=null;d.length>0&&new wt.Setting(l).setName(c("Preset filters")).setDesc(c("Select a saved filter preset to apply")).addDropdown(S=>{S.addOption("",c("Select a preset...")),u=S,d.forEach(E=>{S.addOption(E.id,E.name)}),S.onChange(E=>{if(E){let P=d.find(I=>I.id===E);P&&(r={...P.options},s.dispatch({effects:Xr.of({...r})}),x(),Di(s,a))}else r={...Es},s.dispatch({effects:Xr.of({...r})}),x(),Di(s,a)})});let p=o.createEl("div",{cls:"task-filter-section"}),m=null;new wt.Setting(p).setName(c("Query")).setDesc(c("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1 AND DATE:<2022-01-02 NOT PRIORITY:>=#B' - Supports >, <, =, >=, <=, != for PRIORITY and DATE.")).addText(S=>{m=S,S.setValue(Pg(t,"advancedFilterQuery")).onChange(E=>{r.advancedFilterQuery=E,s.dispatch({effects:Xr.of({...r})}),i(s,a)}),S.inputEl.addEventListener("keydown",E=>{E.key==="Enter"?wt.Keymap.isModEvent(E)?(r.filterMode="EXCLUDE",s.dispatch({effects:Xr.of({...r})}),i(s,a)):(r.filterMode="INCLUDE",s.dispatch({effects:Xr.of({...r})}),i(s,a)):E.key==="Escape"&&s.dispatch({effects:tl.of(!1)})}),S.inputEl.toggleClass("task-filter-query-input",!0)});let f=o.createEl("div",{cls:"task-filter-section"}),h=null;new wt.Setting(f).setName(c("Filter Mode")).setDesc(c("Choose whether to include or exclude tasks that match the filters")).addDropdown(S=>{h=S,S.addOption("INCLUDE",c("Show matching tasks")).addOption("EXCLUDE",c("Hide matching tasks")).setValue(Pg(t,"filterMode")).onChange(E=>{r.filterMode=E,s.dispatch({effects:Xr.of({...r})}),Di(s,a)})});let k=o.createEl("div",{cls:"task-filter-section"});new wt.Setting(k).setName(c("Checkbox Status")).setHeading();let g=[{id:"Completed",label:c("Completed")},{id:"InProgress",label:c("In Progress")},{id:"Abandoned",label:c("Abandoned")},{id:"NotStarted",label:c("Not Started")},{id:"Planned",label:c("Planned")}],y={};for(let S of g){let E=`include${S.id}`;new wt.Setting(k).setName(S.label).addToggle(P=>{y[E]=P,P.setValue(Pg(t,E)).onChange(I=>{r[E]=I,s.dispatch({effects:Xr.of({...r})}),Di(s,a)})})}let w=o.createEl("div",{cls:"task-filter-section"});new wt.Setting(w).setName(c("Include Related Tasks")).setHeading();let v=[{id:"ParentTasks",label:c("Parent Tasks")},{id:"ChildTasks",label:c("Child Tasks")},{id:"SiblingTasks",label:c("Sibling Tasks")}],T={};for(let S of v){let E=`include${S.id}`;new wt.Setting(w).setName(S.label).addToggle(P=>{T[E]=P,P.setValue(Pg(t,E)).onChange(I=>{r[E]=I,s.dispatch({effects:Xr.of({...r})}),Di(s,a)})})}new wt.Setting(e).addButton(S=>{S.setCta(),S.setButtonText(c("Apply")).onClick(()=>{Di(s,a)})}).addButton(S=>{S.setCta(),S.setButtonText(c("Save")).onClick(()=>{if(QT(s,a)){let E=al(s),P={id:Date.now().toString()+Math.random().toString(36).substr(2,9),name:c("New Preset"),options:{...E}};a.settings.taskFilter.presetTaskFilters.push(P),a.saveSettings(),new wt.Notice(c("Preset saved"))}else new wt.Notice(c("No changes to save"))})}).addButton(S=>{S.buttonEl.toggleClass("mod-destructive",!0),S.setButtonText(c("Reset")).onClick(()=>{V8(s),m&&m.inputEl&&(m.inputEl.value=""),r={...Es},s.dispatch({effects:Xr.of({...r})}),x(),u&&u.setValue(""),Di(s,a)})}).addButton(S=>{S.buttonEl.toggleClass("mod-destructive",!0),S.setButtonText(c("Close")).onClick(()=>{s.dispatch({effects:tl.of(!1)})})});function x(){let S=al(s);m&&m.setValue(S.advancedFilterQuery),h&&h.setValue(S.filterMode);for(let E of g){let P=`include${E.id}`;y[P]&&y[P].setValue(S[P])}for(let E of v){let P=`include${E.id}`;T[P]&&T[P].setValue(S[P])}}return{focusInput:()=>{m&&m.inputEl&&m.inputEl.focus()}}}function W8(s){let e=createDiv({cls:"task-filter-panel"}),t=s.state.facet(JT),a=al(s),{focusInput:r}=B8(s,e,a,t);return{dom:e,top:!0,mount:()=>{r()},update:i=>{},destroy:()=>{}}}function Di(s,e){var d,u;let t=al(s),a=U8(s,e.settings.taskStatuses),r=new Set,i=new Set,n=[],o=[];a.forEach((p,m)=>{(t.includeCompleted&&p.status==="completed"||t.includeInProgress&&p.status==="inProgress"||t.includeAbandoned&&p.status==="abandoned"||t.includeNotStarted&&p.status==="notStarted"||t.includePlanned&&p.status==="planned")&&o.push({task:p,index:m})});for(let{task:p,index:m}of o){let f=!0;if(t.advancedFilterQuery.trim()!=="")try{let h=Qr(t.advancedFilterQuery);f=un(h,H8(p))}catch(h){console.error("Error evaluating advanced filter:",h)}f&&(i.add(m),r.add(m))}if(t.includeParentTasks||t.includeChildTasks||t.includeSiblingTasks){for(let p=0;p<a.length;p++)if(i.has(p)){let m=a[p];if(t.includeParentTasks){let f=m.parentTask;for(;f;){if(t.includeCompleted&&f.status==="completed"||t.includeInProgress&&f.status==="inProgress"||t.includeAbandoned&&f.status==="abandoned"||t.includeNotStarted&&f.status==="notStarted"||t.includePlanned&&f.status==="planned"){let h=a.indexOf(f);h!==-1&&r.add(h)}f=f.parentTask}}if(t.includeChildTasks){let f=h=>{for(let k of h.childTasks)if(t.includeCompleted&&k.status==="completed"||t.includeInProgress&&k.status==="inProgress"||t.includeAbandoned&&k.status==="abandoned"||t.includeNotStarted&&k.status==="notStarted"||t.includePlanned&&k.status==="planned"){let g=a.indexOf(k);g!==-1&&(r.add(g),f(k))}};f(m)}if(t.includeSiblingTasks&&m.parentTask){for(let f of m.parentTask.childTasks)if(f!==m&&(t.includeCompleted&&f.status==="completed"||t.includeInProgress&&f.status==="inProgress"||t.includeAbandoned&&f.status==="abandoned"||t.includeNotStarted&&f.status==="notStarted"||t.includePlanned&&f.status==="planned")){let h=a.indexOf(f);h!==-1&&r.add(h)}}}}let l;t.filterMode==="INCLUDE"?l=a.filter((p,m)=>!r.has(m)):l=a.filter((p,m)=>r.has(m)),n=l.map(p=>({from:p.from,to:p.to})),s.dispatch({effects:GT.of(n)}),(u=(d=s.state.field(wt.editorInfoField))==null?void 0:d.filterAction)==null||u.toggleClass("task-filter-active",QT(s,e)),qH(s,n)}function qH(s,e=[]){let t=e.map(a=>pn.Decoration.replace({inclusive:!0,block:!0}).range(a.from,a.to));t.length>0?s.dispatch({effects:XT.of(pn.Decoration.none.update({add:t,filter:()=>!1}))}):s.dispatch({effects:XT.of(pn.Decoration.none)})}var XT=fr.StateEffect.define(),_8=fr.StateField.define({create(){return pn.Decoration.none},update(s,e){s=s.map(e.changes);for(let t of e.effects)t.is(XT)&&(s=t.value);return s},provide(s){return pn.EditorView.decorations.from(s)}}),wFe=fr.Facet.define({combine:s=>s[0]}),JT=fr.Facet.define({combine:s=>s[0]});function GH(s){return[Cu,KT,N8,O8,_8,L8.of(Es),JT.of(s)]}function al(s){if(s.state.field(KT,!1)){let e=s.state.field(KT);return xu(e)}return{...Es}}function V8(s){var e,t;s.dispatch({effects:[Xr.of({...Es}),GT.of([])]}),(t=(e=s.state.field(wt.editorInfoField))==null?void 0:e.filterAction)==null||t.toggleClass("task-filter-active",!1),qH(s,[])}function U8(s,e){let t=s.state.doc,a=[],r=[],i=e.completed.split("|"),n=e.inProgress.split("|"),o=e.abandoned.split("|"),l=e.notStarted.split("|"),d=e.planned.split("|"),u=/^(\s*)(-|\*|(\d+\.)) \[(.)\] (.*)$/gm,p=/\[(#[A-Z])\]|(?:🔺|⏫|🔼|🔽|⏬️|🔴|🟠|🟡|🟢|🔵|⚪️|⚫️)/g,m=/#([a-zA-Z0-9_\-/\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f\u3131-\uD79D]+)/g,f=/\d{4}-\d{2}-\d{2}|\d{2}\.\d{2}\.\d{4}|\d{2}\/\d{2}\/\d{4}/g;for(let h=1;h<=t.lines;h++){let k=t.line(h),g=k.text;u.lastIndex=0;let y;if(y=u.exec(g)){let w=y[1].length,v=y[4],T=y[5],x;i.includes(v)?x="completed":n.includes(v)?x="inProgress":o.includes(v)?x="abandoned":d.includes(v)?x="planned":x="notStarted",p.lastIndex=0;let C=p.exec(T),S=C?C[0]:void 0;m.lastIndex=0;let E=[],P;for(;(P=m.exec(T))!==null;)E.push(P[0]);f.lastIndex=0;let I=f.exec(T),L=I?I[0]:void 0,W={from:k.from,to:k.to,text:T,status:x,indentation:w,childTasks:[],priority:S,date:L,tags:E};for(;r.length>0&&r[r.length-1].indentation>=w;)r.pop();if(r.length>0){let O=r[r.length-1];W.parentTask=O,O.childTasks.push(W)}a.push(W),r.push(W)}}return a}function oo(){return Date.now().toString()+Math.random().toString(36).substr(2,9)}var ZT=class extends Ia.Modal{constructor(e,t,a){super(e);this.preset=t;this.onSave=a;this.preset&&this.preset.options&&(this.preset.options=xu(this.preset.options))}onOpen(){let{contentEl:e}=this;e.empty(),this.titleEl.setText(c("Edit Filter: ")+this.preset.name),new Ia.Setting(e).setName(c("Filter name")).addText(r=>{r.setValue(this.preset.name).onChange(i=>{this.preset.name=i})}),new Ia.Setting(e).setName(c("Checkbox Status")).setDesc(c("Include or exclude tasks based on their status"));let t=[{id:"includeCompleted",name:c("Include Completed Tasks")},{id:"includeInProgress",name:c("Include In Progress Tasks")},{id:"includeAbandoned",name:c("Include Abandoned Tasks")},{id:"includeNotStarted",name:c("Include Not Started Tasks")},{id:"includePlanned",name:c("Include Planned Tasks")}];for(let r of t)new Ia.Setting(e).setName(r.name).addToggle(i=>{i.setValue(this.preset.options[r.id]).onChange(n=>{this.preset.options[r.id]=n})});new Ia.Setting(e).setName(c("Related Tasks")).setDesc(c("Include parent, child, and sibling tasks in the filter"));let a=[{id:"includeParentTasks",name:c("Include Parent Tasks")},{id:"includeChildTasks",name:c("Include Child Tasks")},{id:"includeSiblingTasks",name:c("Include Sibling Tasks")}];for(let r of a)new Ia.Setting(e).setName(r.name).addToggle(i=>{i.setValue(this.preset.options[r.id]).onChange(n=>{this.preset.options[r.id]=n})});new Ia.Setting(e).setName(c("Advanced Filter")).setDesc(c("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")),new Ia.Setting(e).setName(c("Filter query")).setDesc(c("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")).addText(r=>{r.setValue(this.preset.options.advancedFilterQuery).onChange(i=>{this.preset.options.advancedFilterQuery=i})}),new Ia.Setting(e).setName(c("Filter Mode")).setDesc(c("Choose whether to show or hide tasks that match the filters")).addDropdown(r=>{r.addOption("INCLUDE",c("Show matching tasks")).addOption("EXCLUDE",c("Hide matching tasks")).setValue(this.preset.options.filterMode||"INCLUDE").onChange(i=>{this.preset.options.filterMode=i})}),new Ia.Setting(e).addButton(r=>{r.setButtonText(c("Save")).setCta().onClick(()=>{this.onSave(),this.close()})}).addButton(r=>{r.setButtonText(c("Cancel")).onClick(()=>{this.close()})})}onClose(){let{contentEl:e}=this;e.empty()}};function eC(s,e){new Ia.Setting(e).setName(c("Task Filter")).setHeading(),new Ia.Setting(e).setName(c("Enable Task Filter")).setDesc(c("Toggle this to enable the task filter panel")).addToggle(r=>{r.setValue(s.plugin.settings.taskFilter.enableTaskFilter).onChange(async i=>{s.plugin.settings.taskFilter.enableTaskFilter=i,s.applySettingsUpdate()})}),new Ia.Setting(e).setName(c("Preset Filters")).setDesc(c("Create and manage preset filters for quick access to commonly used task filters."));let t=e.createDiv({cls:"preset-filters-container"}),a=()=>{t.empty();let r=s.plugin.settings.taskFilter.presetTaskFilters;r.length===0&&t.createEl("div",{cls:"no-presets-message",text:c("No preset filters created yet. Click 'Add New Preset' to create one.")}),r.forEach((n,o)=>{let l=t.createDiv({cls:"preset-filter-row"}),d=new Ia.Setting(l).setName(`${c("Preset")} #${o+1}`).addText(u=>{u.setValue(n.name).setPlaceholder(c("Preset name")).onChange(p=>{n.name=p,s.applySettingsUpdate()})});d.addExtraButton(u=>{u.setIcon("pencil").setTooltip(c("Edit Filter")).onClick(()=>{new ZT(s.app,n,()=>{s.applySettingsUpdate(),a()}).open()})}),d.addExtraButton(u=>{u.setIcon("trash").setTooltip(c("Remove")).onClick(()=>{r.splice(o,1),s.applySettingsUpdate(),a()})})});let i=t.createDiv();new Ia.Setting(i).addButton(n=>{n.setButtonText(c("Add New Preset")).setCta().onClick(()=>{let o={id:oo(),name:c("New Filter"),options:{includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}};s.plugin.settings.taskFilter.presetTaskFilters.push(o),s.applySettingsUpdate(),new ZT(s.app,o,()=>{s.applySettingsUpdate(),a()}).open(),a()})}).addButton(n=>{n.setButtonText(c("Reset to Default Presets")).onClick(()=>{let o=new Ia.Modal(s.app);o.titleEl.setText(c("Reset to Default Presets")),o.contentEl.createDiv().setText(c("This will replace all your current presets with the default set. Are you sure?"));let d=o.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),u=d.createEl("button");u.setText(c("Cancel")),u.addEventListener("click",()=>{o.close()});let p=d.createEl("button");p.setText(c("Reset")),p.addClass("mod-warning"),p.addEventListener("click",()=>{$8(s),a(),o.close()}),o.open()})})};a()}function $8(s){s.plugin.settings.taskFilter.presetTaskFilters=[];let e=[{id:oo(),name:c("Incomplete tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:oo(),name:c("In progress tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:oo(),name:c("Completed tasks"),options:{includeCompleted:!0,includeInProgress:!1,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!1,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:oo(),name:c("All tasks"),options:{includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!0,advancedFilterQuery:"",filterMode:"INCLUDE"}}];s.plugin.settings.taskFilter.presetTaskFilters=e,s.applySettingsUpdate()}var Ue=A(require("obsidian"));Q();function tC(s,e){if(new Ue.Setting(e).setName(c("Task Gutter")).setDesc(c("Configure the task gutter.")).setHeading(),new Ue.Setting(e).setName(c("Enable task gutter")).setDesc(c("Toggle this to enable the task gutter.")).addToggle(t=>{t.setValue(s.plugin.settings.taskGutter.enableTaskGutter),t.onChange(async a=>{s.plugin.settings.taskGutter.enableTaskGutter=a,s.applySettingsUpdate()})}),new Ue.Setting(e).setName(c("Completed Task Mover")).setHeading(),new Ue.Setting(e).setName(c("Enable completed task mover")).setDesc(c("Toggle this to enable commands for moving completed tasks to another file.")).addToggle(t=>t.setValue(s.plugin.settings.completedTaskMover.enableCompletedTaskMover).onChange(async a=>{s.plugin.settings.completedTaskMover.enableCompletedTaskMover=a,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),s.plugin.settings.completedTaskMover.enableCompletedTaskMover){new Ue.Setting(e).setName(c("Task marker type")).setDesc(c("Choose what type of marker to add to moved tasks")).addDropdown(a=>{a.addOption("version","Version marker").addOption("date","Date marker").addOption("custom","Custom marker").setValue(s.plugin.settings.completedTaskMover.taskMarkerType).onChange(async r=>{s.plugin.settings.completedTaskMover.taskMarkerType=r,s.applySettingsUpdate()})});let t=s.plugin.settings.completedTaskMover.taskMarkerType;t==="version"?new Ue.Setting(e).setName(c("Version marker text")).setDesc(c("Text to append to tasks when moved (e.g., 'version 1.0')")).addText(a=>a.setPlaceholder("version 1.0").setValue(s.plugin.settings.completedTaskMover.versionMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.versionMarker=r,s.applySettingsUpdate()})):t==="date"?new Ue.Setting(e).setName(c("Date marker text")).setDesc(c("Text to append to tasks when moved (e.g., 'archived on 2023-12-31')")).addText(a=>a.setPlaceholder("archived on {{date}}").setValue(s.plugin.settings.completedTaskMover.dateMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.dateMarker=r,s.applySettingsUpdate()})):t==="custom"&&new Ue.Setting(e).setName(c("Custom marker text")).setDesc(c("Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}")).addText(a=>a.setPlaceholder("moved {{DATE:YYYY-MM-DD HH:mm}}").setValue(s.plugin.settings.completedTaskMover.customMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.customMarker=r,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("Treat abandoned tasks as completed")).setDesc(c("If enabled, abandoned tasks will be treated as completed.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.treatAbandonedAsCompleted),a.onChange(r=>{s.plugin.settings.completedTaskMover.treatAbandonedAsCompleted=r,s.applySettingsUpdate()})}),new Ue.Setting(e).setName(c("Complete all moved tasks")).setDesc(c("If enabled, all moved tasks will be marked as completed.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.completeAllMovedTasks),a.onChange(r=>{s.plugin.settings.completedTaskMover.completeAllMovedTasks=r,s.applySettingsUpdate()})}),new Ue.Setting(e).setName(c("With current file link")).setDesc(c("A link to the current file will be added to the parent task of the moved tasks.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.withCurrentFileLink),a.onChange(r=>{s.plugin.settings.completedTaskMover.withCurrentFileLink=r,s.applySettingsUpdate()})}),new Ue.Setting(e).setName(c("Enable auto-move for completed tasks")).setDesc(c("Automatically move completed tasks to a default file without manual selection.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.enableAutoMove),a.onChange(r=>{s.plugin.settings.completedTaskMover.enableAutoMove=r,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.completedTaskMover.enableAutoMove&&(new Ue.Setting(e).setName(c("Default target file")).setDesc(c("Default file to move completed tasks to (e.g., 'Archive.md')")).addText(a=>a.setPlaceholder("Archive.md").setValue(s.plugin.settings.completedTaskMover.defaultTargetFile).onChange(async r=>{s.plugin.settings.completedTaskMover.defaultTargetFile=r,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("Default insertion mode")).setDesc(c("Where to insert completed tasks in the target file")).addDropdown(a=>{a.addOption("beginning",c("Beginning of file")).addOption("end",c("End of file")).addOption("after-heading",c("After heading")).setValue(s.plugin.settings.completedTaskMover.defaultInsertionMode).onChange(async r=>{s.plugin.settings.completedTaskMover.defaultInsertionMode=r,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.completedTaskMover.defaultInsertionMode==="after-heading"&&new Ue.Setting(e).setName(c("Default heading name")).setDesc(c("Heading name to insert tasks after (will be created if it doesn't exist)")).addText(a=>a.setPlaceholder("Completed Tasks").setValue(s.plugin.settings.completedTaskMover.defaultHeadingName).onChange(async r=>{s.plugin.settings.completedTaskMover.defaultHeadingName=r,s.applySettingsUpdate()})))}if(new Ue.Setting(e).setName(c("Incomplete Task Mover")).setHeading(),new Ue.Setting(e).setName(c("Enable incomplete task mover")).setDesc(c("Toggle this to enable commands for moving incomplete tasks to another file.")).addToggle(t=>t.setValue(s.plugin.settings.completedTaskMover.enableIncompletedTaskMover).onChange(async a=>{s.plugin.settings.completedTaskMover.enableIncompletedTaskMover=a,s.applySettingsUpdate()})),s.plugin.settings.completedTaskMover.enableIncompletedTaskMover){new Ue.Setting(e).setName(c("Incomplete task marker type")).setDesc(c("Choose what type of marker to add to moved incomplete tasks")).addDropdown(a=>{a.addOption("version","Version marker").addOption("date","Date marker").addOption("custom","Custom marker").setValue(s.plugin.settings.completedTaskMover.incompletedTaskMarkerType).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedTaskMarkerType=r,s.applySettingsUpdate()})});let t=s.plugin.settings.completedTaskMover.incompletedTaskMarkerType;t==="version"?new Ue.Setting(e).setName(c("Incomplete version marker text")).setDesc(c("Text to append to incomplete tasks when moved (e.g., 'version 1.0')")).addText(a=>a.setPlaceholder("version 1.0").setValue(s.plugin.settings.completedTaskMover.incompletedVersionMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedVersionMarker=r,s.applySettingsUpdate()})):t==="date"?new Ue.Setting(e).setName(c("Incomplete date marker text")).setDesc(c("Text to append to incomplete tasks when moved (e.g., 'moved on 2023-12-31')")).addText(a=>a.setPlaceholder("moved on {{date}}").setValue(s.plugin.settings.completedTaskMover.incompletedDateMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedDateMarker=r,s.applySettingsUpdate()})):t==="custom"&&new Ue.Setting(e).setName(c("Incomplete custom marker text")).setDesc(c("Use {{DATE:format}} for date formatting (e.g., {{DATE:YYYY-MM-DD}}")).addText(a=>a.setPlaceholder("moved {{DATE:YYYY-MM-DD HH:mm}}").setValue(s.plugin.settings.completedTaskMover.incompletedCustomMarker).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedCustomMarker=r,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("With current file link for incomplete tasks")).setDesc(c("A link to the current file will be added to the parent task of the moved incomplete tasks.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.withCurrentFileLinkForIncompleted),a.onChange(r=>{s.plugin.settings.completedTaskMover.withCurrentFileLinkForIncompleted=r,s.applySettingsUpdate()})}),new Ue.Setting(e).setName(c("Enable auto-move for incomplete tasks")).setDesc(c("Automatically move incomplete tasks to a default file without manual selection.")).addToggle(a=>{a.setValue(s.plugin.settings.completedTaskMover.enableIncompletedAutoMove),a.onChange(r=>{s.plugin.settings.completedTaskMover.enableIncompletedAutoMove=r,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.completedTaskMover.enableIncompletedAutoMove&&(new Ue.Setting(e).setName(c("Default target file for incomplete tasks")).setDesc(c("Default file to move incomplete tasks to (e.g., 'Backlog.md')")).addText(a=>a.setPlaceholder("Backlog.md").setValue(s.plugin.settings.completedTaskMover.incompletedDefaultTargetFile).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedDefaultTargetFile=r,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("Default insertion mode for incomplete tasks")).setDesc(c("Where to insert incomplete tasks in the target file")).addDropdown(a=>{a.addOption("beginning",c("Beginning of file")).addOption("end",c("End of file")).addOption("after-heading",c("After heading")).setValue(s.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode=r,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.completedTaskMover.incompletedDefaultInsertionMode==="after-heading"&&new Ue.Setting(e).setName(c("Default heading name for incomplete tasks")).setDesc(c("Heading name to insert incomplete tasks after (will be created if it doesn't exist)")).addText(a=>a.setPlaceholder("Incomplete Tasks").setValue(s.plugin.settings.completedTaskMover.incompletedDefaultHeadingName).onChange(async r=>{s.plugin.settings.completedTaskMover.incompletedDefaultHeadingName=r,s.applySettingsUpdate()})))}if(new Ue.Setting(e).setName(c("Task Sorting")).setDesc(c("Configure how tasks are sorted in the document.")).setHeading(),new Ue.Setting(e).setName(c("Enable Task Sorting")).setDesc(c("Toggle this to enable commands for sorting tasks.")).addToggle(t=>{t.setValue(s.plugin.settings.sortTasks).onChange(async a=>{s.plugin.settings.sortTasks=a,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.sortTasks){new Ue.Setting(e).setName(c("Sort Criteria")).setDesc(c("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let t=e.createDiv({cls:"sort-criteria-container"}),a=()=>{t.empty();let r=s.plugin.settings.sortCriteria||[];r.length===0&&t.createEl("p",{text:c("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),r.forEach((i,n)=>{let o=new Ue.Setting(t).setClass("sort-criterion-row").addDropdown(l=>{l.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("startDate",c("Start Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("content",c("Content")).addOption("lineNumber",c("Line Number")).setValue(i.field).onChange(d=>{s.plugin.settings.sortCriteria[n].field=d,s.applySettingsUpdate()})}).addDropdown(l=>{l.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(i.order).onChange(d=>{s.plugin.settings.sortCriteria[n].order=d,s.applySettingsUpdate()}),i.field==="priority"?l.selectEl.title=c("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(i.field)?l.selectEl.title=c("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):i.field==="status"?l.selectEl.title=c("Ascending respects status order (Overdue first). Descending reverses it."):l.selectEl.title=c("Ascending: A-Z. Descending: Z-A")});o.addExtraButton(l=>{l.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(n===0).onClick(()=>{if(n>0){let d=s.plugin.settings.sortCriteria.splice(n,1)[0];s.plugin.settings.sortCriteria.splice(n-1,0,d),s.applySettingsUpdate(),a()}})}),o.addExtraButton(l=>{l.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(n===r.length-1).onClick(()=>{if(n<r.length-1){let d=s.plugin.settings.sortCriteria.splice(n,1)[0];s.plugin.settings.sortCriteria.splice(n+1,0,d),s.applySettingsUpdate(),a()}})}),o.addExtraButton(l=>{l.setIcon("trash").setTooltip(c("Remove Criterion")).onClick(()=>{s.plugin.settings.sortCriteria.splice(n,1),s.applySettingsUpdate(),a()}),l.extraSettingsEl.addClass("mod-warning")})}),new Ue.Setting(t).addButton(i=>{i.setButtonText(c("Add Sort Criterion")).setCta().onClick(()=>{let n={field:"status",order:"asc"};s.plugin.settings.sortCriteria||(s.plugin.settings.sortCriteria=[]),s.plugin.settings.sortCriteria.push(n),s.applySettingsUpdate(),a()})}).addButton(i=>{i.setButtonText(c("Reset to Defaults")).onClick(()=>{s.plugin.settings.sortCriteria=[...me.sortCriteria],s.applySettingsUpdate(),a()})})};a()}new Ue.Setting(e).setName(c("On Completion")).setHeading(),new Ue.Setting(e).setName(c("Enable OnCompletion")).setDesc(c("Enable automatic actions when tasks are completed")).addToggle(t=>t.setValue(s.plugin.settings.onCompletion.enableOnCompletion).onChange(async a=>{s.plugin.settings.onCompletion.enableOnCompletion=a,s.applySettingsUpdate(),s.display()})),s.plugin.settings.onCompletion.enableOnCompletion&&(new Ue.Setting(e).setName(c("Default Archive File")).setDesc(c("Default file for archive action")).addText(t=>t.setPlaceholder("Archive/Completed Tasks.md").setValue(s.plugin.settings.onCompletion.defaultArchiveFile).onChange(async a=>{s.plugin.settings.onCompletion.defaultArchiveFile=a,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("Default Archive Section")).setDesc(c("Default section for archive action")).addText(t=>t.setPlaceholder("Completed Tasks").setValue(s.plugin.settings.onCompletion.defaultArchiveSection).onChange(async a=>{s.plugin.settings.onCompletion.defaultArchiveSection=a,s.applySettingsUpdate()})),new Ue.Setting(e).setName(c("Show Advanced Options")).setDesc(c("Show advanced configuration options in task editors")).addToggle(t=>t.setValue(s.plugin.settings.onCompletion.showAdvancedOptions).onChange(async a=>{s.plugin.settings.onCompletion.showAdvancedOptions=a,s.applySettingsUpdate()})))}var Ne=A(require("obsidian"));Q();var Ag={};ha(Ag,{allStatusCollections:()=>Mg,anuppuccinSupportedStatuses:()=>Y8,auraSupportedStatuses:()=>z8,borderSupportedStatuses:()=>q8,ebullientworksSupportedStatuses:()=>G8,itsSupportedStatuses:()=>K8,lytModeSupportedStatuses:()=>Q8,minimalSupportedStatuses:()=>X8,thingsSupportedStatuses:()=>J8});function Y8(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],["?","Question","notStarted"],["*","Star","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["i","Information","notStarted"],["I","Idea","notStarted"],["S","Amount","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["b","Bookmark","notStarted"],['"',"Quote","notStarted"],["0","Speech bubble 0","notStarted"],["1","Speech bubble 1","notStarted"],["2","Speech bubble 2","notStarted"],["3","Speech bubble 3","notStarted"],["4","Speech bubble 4","notStarted"],["5","Speech bubble 5","notStarted"],["6","Speech bubble 6","notStarted"],["7","Speech bubble 7","notStarted"],["8","Speech bubble 8","notStarted"],["9","Speech bubble 9","notStarted"]]}function z8(){return[[" ","incomplete","notStarted"],["x","complete / done","completed"],["-","cancelled","abandoned"],[">","deferred","planned"],["/","in progress, or half-done","inProgress"],["!","Important","notStarted"],["?","question","notStarted"],["R","review","notStarted"],["+","Inbox / task that should be processed later","notStarted"],["b","bookmark","notStarted"],["B","brainstorm","notStarted"],["D","deferred or scheduled","planned"],["I","Info","notStarted"],["i","idea","notStarted"],["N","note","notStarted"],["Q","quote","notStarted"],["W","win / success / reward","notStarted"],["P","pro","notStarted"],["C","con","notStarted"]]}function q8(){return[[" ","To Do","notStarted"],["/","In Progress","inProgress"],["x","Done","completed"],["-","Cancelled","abandoned"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["?","Question","notStarted"],["i","Infomation","notStarted"],["S","Amount","notStarted"],["*","Star","notStarted"],["b","Bookmark","notStarted"],["\u201C","Quote","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["I","Idea","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["u","Up","notStarted"],["d","Down","notStarted"]]}function G8(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],[">","Deferred","planned"],["!","Important","notStarted"],["?","Question","planned"],["r","Review","notStarted"]]}function K8(){return[[" ","Unchecked","notStarted"],["x","Regular","completed"],["X","Checked","completed"],["-","Dropped","abandoned"],[">","Forward","planned"],["D","Date","notStarted"],["?","Question","planned"],["/","Half Done","inProgress"],["+","Add","notStarted"],["R","Research","notStarted"],["!","Important","notStarted"],["i","Idea","notStarted"],["B","Brainstorm","notStarted"],["P","Pro","notStarted"],["C","Con","notStarted"],["Q","Quote","notStarted"],["N","Note","notStarted"],["b","Bookmark","notStarted"],["I","Information","notStarted"],["p","Paraphrase","notStarted"],["L","Location","notStarted"],["E","Example","notStarted"],["A","Answer","notStarted"],["r","Reward","notStarted"],["c","Choice","notStarted"],["d","Doing","inProgress"],["T","Time","notStarted"],["@","Character / Person","notStarted"],["t","Talk","notStarted"],["O","Outline / Plot","notStarted"],["~","Conflict","notStarted"],["W","World","notStarted"],["f","Clue / Find","notStarted"],["F","Foreshadow","notStarted"],["H","Favorite / Health","notStarted"],["&","Symbolism","notStarted"],["s","Secret","notStarted"]]}function Q8(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],[">","Rescheduled","planned"],["<","Scheduled","planned"],["!","Important","notStarted"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],["?","Question","notStarted"],["*","Star","notStarted"],["n","Note","notStarted"],["l","Location","notStarted"],["i","Information","notStarted"],["I","Idea","notStarted"],["S","Amount","notStarted"],["p","Pro","notStarted"],["c","Con","notStarted"],["b","Bookmark","notStarted"],["f","Fire","notStarted"],["k","Key","notStarted"],["w","Win","notStarted"],["u","Up","notStarted"],["d","Down","notStarted"]]}function X8(){return[[" ","to-do","notStarted"],["/","incomplete","inProgress"],["x","done","completed"],["-","canceled","abandoned"],[">","forwarded","planned"],["<","scheduling","planned"],["?","question","notStarted"],["!","important","notStarted"],["*","star","notStarted"],['"',"quote","notStarted"],["l","location","notStarted"],["b","bookmark","notStarted"],["i","information","notStarted"],["S","savings","notStarted"],["I","idea","notStarted"],["p","pros","notStarted"],["c","cons","notStarted"],["f","fire","notStarted"],["k","key","notStarted"],["w","win","notStarted"],["u","up","notStarted"],["d","down","notStarted"]]}function J8(){return[[" ","to-do","notStarted"],["/","incomplete","inProgress"],["x","done","completed"],["-","canceled","abandoned"],[">","forwarded","planned"],["<","scheduling","planned"],["?","question","notStarted"],["!","important","notStarted"],["*","star","notStarted"],['"',"quote","notStarted"],["l","location","notStarted"],["b","bookmark","notStarted"],["i","information","notStarted"],["S","savings","notStarted"],["I","idea","notStarted"],["p","pros","notStarted"],["c","cons","notStarted"],["f","fire","notStarted"],["k","key","notStarted"],["w","win","notStarted"],["u","up","notStarted"],["d","down","notStarted"]]}var Mg=["AnuPpuccin","Aura","Border","Ebullientworks","ITS","LYTMode","Minimal","Things"];function aC(s,e){if(new Ne.Setting(e).setName(c("Checkbox Status Settings")).setDesc(c("Configure checkbox status settings")).setHeading(),new Ne.Setting(e).setName(c("File Metadata Inheritance")).setDesc(c("Configure how tasks inherit metadata from file frontmatter")).setHeading(),new Ne.Setting(e).setName(c("Enable file metadata inheritance")).setDesc(c("Allow tasks to inherit metadata properties from their file's frontmatter")).addToggle(l=>l.setValue(s.plugin.settings.fileMetadataInheritance.enabled).onChange(async d=>{s.plugin.settings.fileMetadataInheritance.enabled=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),s.plugin.settings.fileMetadataInheritance.enabled&&(new Ne.Setting(e).setName(c("Inherit from frontmatter")).setDesc(c("Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task")).addToggle(l=>l.setValue(s.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter).onChange(async d=>{s.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Inherit from frontmatter for subtasks")).setDesc(c("Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata")).addToggle(l=>l.setValue(s.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks).onChange(async d=>{s.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks=d,s.applySettingsUpdate()}))),Yn(s.plugin)){let l=e.createDiv({cls:"tasks-compatibility-warning"});l.createEl("div",{cls:"tasks-warning-icon",text:"\u26A0\uFE0F"});let d=l.createDiv({cls:"tasks-warning-content"});d.createEl("div",{cls:"tasks-warning-title",text:c("Tasks Plugin Detected")});let u=d.createEl("div",{cls:"tasks-warning-text"});u.createEl("span",{text:c("Current status management and date management may conflict with the Tasks plugin. Please check the ")});let p=u.createEl("a",{text:c("compatibility documentation"),href:"https://taskgenius.md/docs/compatibility"});p.setAttribute("target","_blank"),p.setAttribute("rel","noopener noreferrer"),u.createEl("span",{text:c(" for more information.")})}new Ne.Setting(e).setName(c("Auto complete parent checkbox")).setDesc(c("Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.")).addToggle(l=>l.setValue(s.plugin.settings.autoCompleteParent).onChange(async d=>{s.plugin.settings.autoCompleteParent=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Mark parent as 'In Progress' when partially complete")).setDesc(c("When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.")).addToggle(l=>l.setValue(s.plugin.settings.markParentInProgressWhenPartiallyComplete).onChange(async d=>{s.plugin.settings.markParentInProgressWhenPartiallyComplete=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Checkbox Status Settings")).setDesc(c("Select a predefined checkbox status collection or customize your own")).setHeading().addDropdown(l=>{l.addOption("custom","Custom");for(let d of Mg)l.addOption(d,d);l.setValue("custom"),l.onChange(async d=>{if(d==="custom")return;let u=new Ne.Modal(s.app);u.titleEl.setText(`Apply ${d} Theme?`),u.contentEl.createDiv().setText(`This will override your current checkbox status settings with the ${d} theme. Do you want to continue?`);let m=u.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),f=m.createEl("button");f.setText(c("Cancel")),f.addEventListener("click",()=>{l.setValue("custom"),u.close()});let h=m.createEl("button");h.setText(c("Apply Theme")),h.addClass("mod-cta"),h.addEventListener("click",async()=>{u.close();try{let k=d.toLowerCase()+"SupportedStatuses",g=Ag[k];if(typeof g=="function"){let y=g(),w=s.plugin.settings.taskStatusCycle,v=s.plugin.settings.taskStatusMarks,T=s.plugin.settings.excludeMarksFromCycle;w.length=0,Object.keys(v).forEach(C=>delete v[C]),T.length=0;for(let[C,S,E]of y){let P=S.split("/")[0].trim();w.includes(P)||w.push(P),v[P]=C,C!==" "&&C!=="x"&&T.push(P)}let x={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[C,S,E]of y)E in x&&x[E].push(C);for(let C of Object.keys(x))C in s.plugin.settings.taskStatuses&&x[C]&&x[C].length>0&&(s.plugin.settings.taskStatuses[C]=x[C].join("|"));s.applySettingsUpdate(),s.display()}}catch(k){console.error("Failed to apply checkbox status theme:",k)}}),u.open()})});let a=createFragment();a.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ne.setIcon)(l,"completed")}),a.createEl("span",{cls:"tg-status-text"},l=>{l.setText(c("Completed"))}),new Ne.Setting(e).setName(a).setDesc(c('Characters in square brackets that represent completed tasks. Example: "x|X"')).addText(l=>l.setPlaceholder(me.taskStatuses.completed).setValue(s.plugin.settings.taskStatuses.completed).onChange(async d=>{s.plugin.settings.taskStatuses.completed=d||me.taskStatuses.completed,s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update()}));let r=createFragment();r.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ne.setIcon)(l,"planned")}),r.createEl("span",{cls:"tg-status-text"},l=>{l.setText(c("Planned"))}),new Ne.Setting(e).setName(r).setDesc(c('Characters in square brackets that represent planned tasks. Example: "?"')).addText(l=>l.setPlaceholder(me.taskStatuses.planned).setValue(s.plugin.settings.taskStatuses.planned).onChange(async d=>{s.plugin.settings.taskStatuses.planned=d||me.taskStatuses.planned,s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update()}));let i=createFragment();i.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ne.setIcon)(l,"inProgress")}),i.createEl("span",{cls:"tg-status-text"},l=>{l.setText(c("In Progress"))}),new Ne.Setting(e).setName(i).setDesc(c('Characters in square brackets that represent tasks in progress. Example: ">|/"')).addText(l=>l.setPlaceholder(me.taskStatuses.inProgress).setValue(s.plugin.settings.taskStatuses.inProgress).onChange(async d=>{s.plugin.settings.taskStatuses.inProgress=d||me.taskStatuses.inProgress,s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update()}));let n=createFragment();n.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ne.setIcon)(l,"abandoned")}),n.createEl("span",{cls:"tg-status-text"},l=>{l.setText(c("Abandoned"))}),new Ne.Setting(e).setName(n).setDesc(c('Characters in square brackets that represent abandoned tasks. Example: "-"')).addText(l=>l.setPlaceholder(me.taskStatuses.abandoned).setValue(s.plugin.settings.taskStatuses.abandoned).onChange(async d=>{s.plugin.settings.taskStatuses.abandoned=d||me.taskStatuses.abandoned,s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update()}));let o=createFragment();if(o.createEl("span",{cls:"tg-status-icon"},l=>{(0,Ne.setIcon)(l,"notStarted")}),o.createEl("span",{cls:"tg-status-text"},l=>{l.setText(c("Not Started"))}),new Ne.Setting(e).setName(o).setDesc(c('Characters in square brackets that represent not started tasks. Default is space " "')).addText(l=>l.setPlaceholder(me.taskStatuses.notStarted).setValue(s.plugin.settings.taskStatuses.notStarted).onChange(async d=>{s.plugin.settings.taskStatuses.notStarted=d||me.taskStatuses.notStarted,s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update()})),new Ne.Setting(e).setName(c("Count other statuses as")).setDesc(c('Select the status to count other statuses as. Default is "Not Started".')).addDropdown(l=>{l.addOption("notStarted","Not Started"),l.addOption("abandoned","Abandoned"),l.addOption("planned","Planned"),l.addOption("completed","Completed"),l.addOption("inProgress","In Progress"),l.setValue(s.plugin.settings.countOtherStatusesAs||"notStarted"),l.onChange(d=>{s.plugin.settings.countOtherStatusesAs=d,s.applySettingsUpdate()})}),new Ne.Setting(e).setName(c("Task Counting Settings")).setDesc(c("Configure which task markers to count or exclude")).setHeading(),new Ne.Setting(e).setName(c("Exclude specific task markers")).setDesc(c('Specify task markers to exclude from counting. Example: "?|/"')).addText(l=>l.setPlaceholder("").setValue(s.plugin.settings.excludeTaskMarks).onChange(async d=>{s.plugin.settings.excludeTaskMarks=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Only count specific task markers")).setDesc(c("Toggle this to only count specific task markers")).addToggle(l=>l.setValue(s.plugin.settings.useOnlyCountMarks).onChange(async d=>{s.plugin.settings.useOnlyCountMarks=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),s.plugin.settings.useOnlyCountMarks&&new Ne.Setting(e).setName(c("Specific task markers to count")).setDesc(c('Specify which task markers to count. Example: "x|X|>|/"')).addText(l=>l.setPlaceholder(me.onlyCountTaskMarks).setValue(s.plugin.settings.onlyCountTaskMarks).onChange(async d=>{d.length===0?s.plugin.settings.onlyCountTaskMarks=me.onlyCountTaskMarks:s.plugin.settings.onlyCountTaskMarks=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Checkbox Switcher")).setHeading(),new Ne.Setting(e).setName(c("Enable checkbox status switcher")).setDesc(c("Enable/disable the ability to cycle through task states by clicking.")).addToggle(l=>{l.setValue(s.plugin.settings.enableTaskStatusSwitcher).onChange(async d=>{s.plugin.settings.enableTaskStatusSwitcher=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.enableTaskStatusSwitcher&&(new Ne.Setting(e).setName(c("Task mark display style")).setDesc(c("Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.")).addDropdown(l=>{l.addOption("default",c("Default checkboxes")),l.addOption("textmarks",c("Custom text marks")),l.addOption("icons",c("Task Genius icons"));let d="default";s.plugin.settings.enableTaskGeniusIcons?d="icons":s.plugin.settings.enableCustomTaskMarks&&(d="textmarks"),l.setValue(d),l.onChange(async u=>{s.plugin.settings.enableCustomTaskMarks=!1,s.plugin.settings.enableTaskGeniusIcons=!1,u==="textmarks"?s.plugin.settings.enableCustomTaskMarks=!0:u==="icons"&&(s.plugin.settings.enableTaskGeniusIcons=!0),s.applySettingsUpdate(),s.plugin.taskGeniusIconManager&&s.plugin.taskGeniusIconManager.update(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.enableCustomTaskMarks&&new Ne.Setting(e).setName(c("Enable text mark in source mode")).setDesc(c("Make the text mark in source mode follow the checkbox status cycle when clicked.")).addToggle(l=>{l.setValue(s.plugin.settings.enableTextMarkInSourceMode).onChange(async d=>{s.plugin.settings.enableTextMarkInSourceMode=d,s.applySettingsUpdate()})})),new Ne.Setting(e).setName(c("Enable cycle complete status")).setDesc(c("Enable/disable the ability to automatically cycle through task states when pressing a mark.")).addToggle(l=>{l.setValue(s.plugin.settings.enableCycleCompleteStatus).onChange(async d=>{s.plugin.settings.enableCycleCompleteStatus=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.enableCycleCompleteStatus){new Ne.Setting(e).setName(c("Task status cycle and marks")).setDesc(c("Define task states and their corresponding marks. The order from top to bottom defines the cycling sequence.")).addDropdown(u=>{u.addOption("custom","Custom");for(let p of Mg)u.addOption(p,p);u.setValue("custom"),u.onChange(async p=>{if(p==="custom")return;let m=new Ne.Modal(s.app);m.titleEl.setText(`Apply ${p} Theme?`),m.contentEl.createDiv().setText(c("This will override your current checkbox status settings with the selected theme. Do you want to continue?"));let h=m.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),k=h.createEl("button");k.setText(c("Cancel")),k.addEventListener("click",()=>{u.setValue("custom"),m.close()});let g=h.createEl("button");g.setText(c("Apply Theme")),g.addClass("mod-cta"),g.addEventListener("click",async()=>{m.close();try{let y=p.toLowerCase()+"SupportedStatuses",w=Ag[y];if(typeof w=="function"){let v=w(),T=s.plugin.settings.taskStatusCycle,x=s.plugin.settings.taskStatusMarks,C=s.plugin.settings.excludeMarksFromCycle;T.length=0,Object.keys(x).forEach(E=>delete x[E]),C.length=0;for(let[E,P,I]of v){let L=P.split("/")[0].trim();T.includes(L)||T.push(L),x[L]=E,E!==" "&&E!=="x"&&C.push(L)}let S={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[E,P,I]of v)I in S&&S[I].push(E);for(let E of Object.keys(S))E in s.plugin.settings.taskStatuses&&S[E]&&S[E].length>0&&(s.plugin.settings.taskStatuses[E]=S[E].join("|"));s.applySettingsUpdate(),s.display()}}catch(y){console.error("Failed to apply checkbox status theme:",y)}}),m.open()})});let l=e.createDiv({cls:"task-states-container"}),d=()=>{l.empty();let u=s.plugin.settings.taskStatusCycle,p=s.plugin.settings.taskStatusMarks;s.plugin.settings.excludeMarksFromCycle||(s.plugin.settings.excludeMarksFromCycle=[]),u.forEach((f,h)=>{let k=l.createDiv({cls:"task-state-row"}),g=new Ne.Setting(k).setName(`Status #${h+1}`).addText(y=>{y.setValue(f).setPlaceholder(c("Status name")).onChange(w=>{let v=u[h];u[h]=w,v in p&&(p[w]=p[v],delete p[v]),s.applySettingsUpdate()})}).addText(y=>{y.setValue(p[f]||" ").setPlaceholder("Mark").onChange(w=>{let v=w.trim().charAt(0)||" ";p[f]=v,s.applySettingsUpdate()}),y.inputEl.maxLength=1,y.inputEl.style.width="40px"});g.addToggle(y=>{y.setTooltip(c("Include in cycle")).setValue(!s.plugin.settings.excludeMarksFromCycle.includes(f)).onChange(w=>{w?s.plugin.settings.excludeMarksFromCycle=s.plugin.settings.excludeMarksFromCycle.filter(v=>v!==f):s.plugin.settings.excludeMarksFromCycle.includes(f)||s.plugin.settings.excludeMarksFromCycle.push(f),s.applySettingsUpdate()})}),g.addExtraButton(y=>{y.setIcon("arrow-up").setTooltip(c("Move up")).onClick(()=>{h>0&&([u[h-1],u[h]]=[u[h],u[h-1]],s.applySettingsUpdate(),d())}),y.extraSettingsEl.style.marginRight="0"}),g.addExtraButton(y=>{y.setIcon("arrow-down").setTooltip(c("Move down")).onClick(()=>{h<u.length-1&&([u[h],u[h+1]]=[u[h+1],u[h]],s.applySettingsUpdate(),d())}),y.extraSettingsEl.style.marginRight="0"}),g.addExtraButton(y=>{y.setIcon("trash").setTooltip(c("Remove")).onClick(()=>{u.splice(h,1),delete p[f],s.applySettingsUpdate(),d()}),y.extraSettingsEl.style.marginRight="0"})});let m=l.createDiv();new Ne.Setting(m).addButton(f=>{f.setButtonText(c("Add Status")).setCta().onClick(()=>{let h=`STATUS_${u.length+1}`;u.push(h),p[h]=" ",s.applySettingsUpdate(),d()})})};d()}new Ne.Setting(e).setName(c("Auto Date Manager")).setDesc(c("Automatically manage dates based on checkbox status changes")).setHeading(),new Ne.Setting(e).setName(c("Enable auto date manager")).setDesc(c("Toggle this to enable automatic date management when checkbox status changes. Dates will be added/removed based on your preferred metadata format (Tasks emoji format or Dataview format).")).addToggle(l=>l.setValue(s.plugin.settings.autoDateManager.enabled).onChange(async d=>{s.plugin.settings.autoDateManager.enabled=d,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})),s.plugin.settings.autoDateManager.enabled&&(new Ne.Setting(e).setName(c("Manage completion dates")).setDesc(c("Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(s.plugin.settings.autoDateManager.manageCompletedDate).onChange(async d=>{s.plugin.settings.autoDateManager.manageCompletedDate=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Manage start dates")).setDesc(c("Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(s.plugin.settings.autoDateManager.manageStartDate).onChange(async d=>{s.plugin.settings.autoDateManager.manageStartDate=d,s.applySettingsUpdate()})),new Ne.Setting(e).setName(c("Manage cancelled dates")).setDesc(c("Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.")).addToggle(l=>l.setValue(s.plugin.settings.autoDateManager.manageCancelledDate).onChange(async d=>{s.plugin.settings.autoDateManager.manageCancelledDate=d,s.applySettingsUpdate()})))}var Se=A(require("obsidian"));Q();hs();var Ee=A(require("obsidian"));Q();var ca=A(require("obsidian"));function KH(s,e){var t=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);e&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(s,r).enumerable})),t.push.apply(t,a)}return t}function Pi(s){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?KH(Object(t),!0).forEach(function(a){Z8(s,a,t[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(t)):KH(Object(t)).forEach(function(a){Object.defineProperty(s,a,Object.getOwnPropertyDescriptor(t,a))})}return s}function Ig(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ig=function(e){return typeof e}:Ig=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ig(s)}function Z8(s,e,t){return e in s?Object.defineProperty(s,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):s[e]=t,s}function mn(){return mn=Object.assign||function(s){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(s[a]=t[a])}return s},mn.apply(this,arguments)}function e7(s,e){if(s==null)return{};var t={},a=Object.keys(s),r,i;for(i=0;i<a.length;i++)r=a[i],!(e.indexOf(r)>=0)&&(t[r]=s[r]);return t}function t7(s,e){if(s==null)return{};var t=e7(s,e),a,r;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(s);for(r=0;r<i.length;r++)a=i[r],!(e.indexOf(a)>=0)&&(!Object.prototype.propertyIsEnumerable.call(s,a)||(t[a]=s[a]))}return t}var a7="1.15.6";function fn(s){if(typeof window!="undefined"&&window.navigator)return!!navigator.userAgent.match(s)}var hn=fn(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Su=fn(/Edge/i),QH=fn(/firefox/i),Eu=fn(/safari/i)&&!fn(/chrome/i)&&!fn(/android/i),rC=fn(/iP(ad|od|hone)/i),XH=fn(/chrome/i)&&fn(/android/i),JH={capture:!1,passive:!1};function Xe(s,e,t){s.addEventListener(e,t,!hn&&JH)}function Ge(s,e,t){s.removeEventListener(e,t,!hn&&JH)}function Rg(s,e){if(!!e){if(e[0]===">"&&(e=e.substring(1)),s)try{if(s.matches)return s.matches(e);if(s.msMatchesSelector)return s.msMatchesSelector(e);if(s.webkitMatchesSelector)return s.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function ZH(s){return s.host&&s!==document&&s.host.nodeType?s.host:s.parentNode}function Qs(s,e,t,a){if(s){t=t||document;do{if(e!=null&&(e[0]===">"?s.parentNode===t&&Rg(s,e):Rg(s,e))||a&&s===t)return s;if(s===t)break}while(s=ZH(s))}return null}var e3=/\s+/g;function Jr(s,e,t){if(s&&e)if(s.classList)s.classList[t?"add":"remove"](e);else{var a=(" "+s.className+" ").replace(e3," ").replace(" "+e+" "," ");s.className=(a+(t?" "+e:"")).replace(e3," ")}}function Ce(s,e,t){var a=s&&s.style;if(a){if(t===void 0)return document.defaultView&&document.defaultView.getComputedStyle?t=document.defaultView.getComputedStyle(s,""):s.currentStyle&&(t=s.currentStyle),e===void 0?t:t[e];!(e in a)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),a[e]=t+(typeof t=="string"?"":"px")}}function Vc(s,e){var t="";if(typeof s=="string")t=s;else do{var a=Ce(s,"transform");a&&a!=="none"&&(t=a+" "+t)}while(!e&&(s=s.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(t)}function t3(s,e,t){if(s){var a=s.getElementsByTagName(e),r=0,i=a.length;if(t)for(;r<i;r++)t(a[r],r);return a}return[]}function Mi(){var s=document.scrollingElement;return s||document.documentElement}function oa(s,e,t,a,r){if(!(!s.getBoundingClientRect&&s!==window)){var i,n,o,l,d,u,p;if(s!==window&&s.parentNode&&s!==Mi()?(i=s.getBoundingClientRect(),n=i.top,o=i.left,l=i.bottom,d=i.right,u=i.height,p=i.width):(n=0,o=0,l=window.innerHeight,d=window.innerWidth,u=window.innerHeight,p=window.innerWidth),(e||t)&&s!==window&&(r=r||s.parentNode,!hn))do if(r&&r.getBoundingClientRect&&(Ce(r,"transform")!=="none"||t&&Ce(r,"position")!=="static")){var m=r.getBoundingClientRect();n-=m.top+parseInt(Ce(r,"border-top-width")),o-=m.left+parseInt(Ce(r,"border-left-width")),l=n+i.height,d=o+i.width;break}while(r=r.parentNode);if(a&&s!==window){var f=Vc(r||s),h=f&&f.a,k=f&&f.d;f&&(n/=k,o/=h,p/=h,u/=k,l=n+u,d=o+p)}return{top:n,left:o,bottom:l,right:d,width:p,height:u}}}function a3(s,e,t){for(var a=lo(s,!0),r=oa(s)[e];a;){var i=oa(a)[t],n=void 0;if(t==="top"||t==="left"?n=r>=i:n=r<=i,!n)return a;if(a===Mi())break;a=lo(a,!1)}return!1}function Uc(s,e,t,a){for(var r=0,i=0,n=s.children;i<n.length;){if(n[i].style.display!=="none"&&n[i]!==xe.ghost&&(a||n[i]!==xe.dragged)&&Qs(n[i],t.draggable,s,!1)){if(r===e)return n[i];r++}i++}return null}function sC(s,e){for(var t=s.lastElementChild;t&&(t===xe.ghost||Ce(t,"display")==="none"||e&&!Rg(t,e));)t=t.previousElementSibling;return t||null}function Ds(s,e){var t=0;if(!s||!s.parentNode)return-1;for(;s=s.previousElementSibling;)s.nodeName.toUpperCase()!=="TEMPLATE"&&s!==xe.clone&&(!e||Rg(s,e))&&t++;return t}function r3(s){var e=0,t=0,a=Mi();if(s)do{var r=Vc(s),i=r.a,n=r.d;e+=s.scrollLeft*i,t+=s.scrollTop*n}while(s!==a&&(s=s.parentNode));return[e,t]}function r7(s,e){for(var t in s)if(!!s.hasOwnProperty(t)){for(var a in e)if(e.hasOwnProperty(a)&&e[a]===s[t][a])return Number(t)}return-1}function lo(s,e){if(!s||!s.getBoundingClientRect)return Mi();var t=s,a=!1;do if(t.clientWidth<t.scrollWidth||t.clientHeight<t.scrollHeight){var r=Ce(t);if(t.clientWidth<t.scrollWidth&&(r.overflowX=="auto"||r.overflowX=="scroll")||t.clientHeight<t.scrollHeight&&(r.overflowY=="auto"||r.overflowY=="scroll")){if(!t.getBoundingClientRect||t===document.body)return Mi();if(a||e)return t;a=!0}}while(t=t.parentNode);return Mi()}function s7(s,e){if(s&&e)for(var t in e)e.hasOwnProperty(t)&&(s[t]=e[t]);return s}function iC(s,e){return Math.round(s.top)===Math.round(e.top)&&Math.round(s.left)===Math.round(e.left)&&Math.round(s.height)===Math.round(e.height)&&Math.round(s.width)===Math.round(e.width)}var Du;function s3(s,e){return function(){if(!Du){var t=arguments,a=this;t.length===1?s.call(a,t[0]):s.apply(a,t),Du=setTimeout(function(){Du=void 0},e)}}}function i7(){clearTimeout(Du),Du=void 0}function i3(s,e,t){s.scrollLeft+=e,s.scrollTop+=t}function n3(s){var e=window.Polymer,t=window.jQuery||window.Zepto;return e&&e.dom?e.dom(s).cloneNode(!0):t?t(s).clone(!0)[0]:s.cloneNode(!0)}function o3(s,e,t){var a={};return Array.from(s.children).forEach(function(r){var i,n,o,l;if(!(!Qs(r,e.draggable,s,!1)||r.animated||r===t)){var d=oa(r);a.left=Math.min((i=a.left)!==null&&i!==void 0?i:1/0,d.left),a.top=Math.min((n=a.top)!==null&&n!==void 0?n:1/0,d.top),a.right=Math.max((o=a.right)!==null&&o!==void 0?o:-1/0,d.right),a.bottom=Math.max((l=a.bottom)!==null&&l!==void 0?l:-1/0,d.bottom)}}),a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}var Pr="Sortable"+new Date().getTime();function n7(){var s=[],e;return{captureAnimationState:function(){if(s=[],!!this.options.animation){var a=[].slice.call(this.el.children);a.forEach(function(r){if(!(Ce(r,"display")==="none"||r===xe.ghost)){s.push({target:r,rect:oa(r)});var i=Pi({},s[s.length-1].rect);if(r.thisAnimationDuration){var n=Vc(r,!0);n&&(i.top-=n.f,i.left-=n.e)}r.fromRect=i}})}},addAnimationState:function(a){s.push(a)},removeAnimationState:function(a){s.splice(r7(s,{target:a}),1)},animateAll:function(a){var r=this;if(!this.options.animation){clearTimeout(e),typeof a=="function"&&a();return}var i=!1,n=0;s.forEach(function(o){var l=0,d=o.target,u=d.fromRect,p=oa(d),m=d.prevFromRect,f=d.prevToRect,h=o.rect,k=Vc(d,!0);k&&(p.top-=k.f,p.left-=k.e),d.toRect=p,d.thisAnimationDuration&&iC(m,p)&&!iC(u,p)&&(h.top-p.top)/(h.left-p.left)==(u.top-p.top)/(u.left-p.left)&&(l=l7(h,m,f,r.options)),iC(p,u)||(d.prevFromRect=u,d.prevToRect=p,l||(l=r.options.animation),r.animate(d,h,p,l)),l&&(i=!0,n=Math.max(n,l),clearTimeout(d.animationResetTimer),d.animationResetTimer=setTimeout(function(){d.animationTime=0,d.prevFromRect=null,d.fromRect=null,d.prevToRect=null,d.thisAnimationDuration=null},l),d.thisAnimationDuration=l)}),clearTimeout(e),i?e=setTimeout(function(){typeof a=="function"&&a()},n):typeof a=="function"&&a(),s=[]},animate:function(a,r,i,n){if(n){Ce(a,"transition",""),Ce(a,"transform","");var o=Vc(this.el),l=o&&o.a,d=o&&o.d,u=(r.left-i.left)/(l||1),p=(r.top-i.top)/(d||1);a.animatingX=!!u,a.animatingY=!!p,Ce(a,"transform","translate3d("+u+"px,"+p+"px,0)"),this.forRepaintDummy=o7(a),Ce(a,"transition","transform "+n+"ms"+(this.options.easing?" "+this.options.easing:"")),Ce(a,"transform","translate3d(0,0,0)"),typeof a.animated=="number"&&clearTimeout(a.animated),a.animated=setTimeout(function(){Ce(a,"transition",""),Ce(a,"transform",""),a.animated=!1,a.animatingX=!1,a.animatingY=!1},n)}}}}function o7(s){return s.offsetWidth}function l7(s,e,t,a){return Math.sqrt(Math.pow(e.top-s.top,2)+Math.pow(e.left-s.left,2))/Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))*a.animation}var $c=[],nC={initializeByDefault:!0},Pu={mount:function(e){for(var t in nC)nC.hasOwnProperty(t)&&!(t in e)&&(e[t]=nC[t]);$c.forEach(function(a){if(a.pluginName===e.pluginName)throw"Sortable: Cannot mount plugin ".concat(e.pluginName," more than once")}),$c.push(e)},pluginEvent:function(e,t,a){var r=this;this.eventCanceled=!1,a.cancel=function(){r.eventCanceled=!0};var i=e+"Global";$c.forEach(function(n){!t[n.pluginName]||(t[n.pluginName][i]&&t[n.pluginName][i](Pi({sortable:t},a)),t.options[n.pluginName]&&t[n.pluginName][e]&&t[n.pluginName][e](Pi({sortable:t},a)))})},initializePlugins:function(e,t,a,r){$c.forEach(function(o){var l=o.pluginName;if(!(!e.options[l]&&!o.initializeByDefault)){var d=new o(e,t,e.options);d.sortable=e,d.options=e.options,e[l]=d,mn(a,d.defaults)}});for(var i in e.options)if(!!e.options.hasOwnProperty(i)){var n=this.modifyOption(e,i,e.options[i]);typeof n!="undefined"&&(e.options[i]=n)}},getEventProperties:function(e,t){var a={};return $c.forEach(function(r){typeof r.eventProperties=="function"&&mn(a,r.eventProperties.call(t[r.pluginName],e))}),a},modifyOption:function(e,t,a){var r;return $c.forEach(function(i){!e[i.pluginName]||i.optionListeners&&typeof i.optionListeners[t]=="function"&&(r=i.optionListeners[t].call(e[i.pluginName],a))}),r}};function c7(s){var e=s.sortable,t=s.rootEl,a=s.name,r=s.targetEl,i=s.cloneEl,n=s.toEl,o=s.fromEl,l=s.oldIndex,d=s.newIndex,u=s.oldDraggableIndex,p=s.newDraggableIndex,m=s.originalEvent,f=s.putSortable,h=s.extraEventProperties;if(e=e||t&&t[Pr],!!e){var k,g=e.options,y="on"+a.charAt(0).toUpperCase()+a.substr(1);window.CustomEvent&&!hn&&!Su?k=new CustomEvent(a,{bubbles:!0,cancelable:!0}):(k=document.createEvent("Event"),k.initEvent(a,!0,!0)),k.to=n||t,k.from=o||t,k.item=r||t,k.clone=i,k.oldIndex=l,k.newIndex=d,k.oldDraggableIndex=u,k.newDraggableIndex=p,k.originalEvent=m,k.pullMode=f?f.lastPutMode:void 0;var w=Pi(Pi({},h),Pu.getEventProperties(a,e));for(var v in w)k[v]=w[v];t&&t.dispatchEvent(k),g[y]&&g[y].call(e,k)}}var d7=["evt"],Mr=function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=a.evt,i=t7(a,d7);Pu.pluginEvent.bind(xe)(e,t,Pi({dragEl:se,parentEl:Wt,ghostEl:Me,rootEl:Mt,nextEl:rl,lastDownEl:Fg,cloneEl:Nt,cloneHidden:co,dragStarted:Au,putSortable:Wa,activeSortable:xe.active,originalEvent:r,oldIndex:Yc,oldDraggableIndex:Mu,newIndex:Zr,newDraggableIndex:uo,hideGhostForTarget:f3,unhideGhostForTarget:h3,cloneNowHidden:function(){co=!0},cloneNowShown:function(){co=!1},dispatchSortableEvent:function(o){hr({sortable:t,name:o,originalEvent:r})}},i))};function hr(s){c7(Pi({putSortable:Wa,cloneEl:Nt,targetEl:se,rootEl:Mt,oldIndex:Yc,oldDraggableIndex:Mu,newIndex:Zr,newDraggableIndex:uo},s))}var se,Wt,Me,Mt,rl,Fg,Nt,co,Yc,Zr,Mu,uo,jg,Wa,zc=!1,Og=!1,Ng=[],sl,Xs,oC,lC,l3,c3,Au,qc,Iu,Ru=!1,Lg=!1,Hg,tr,cC=[],dC=!1,Bg=[],Wg=typeof document!="undefined",_g=rC,d3=Su||hn?"cssFloat":"float",u7=Wg&&!XH&&!rC&&"draggable"in document.createElement("div"),u3=function(){if(!!Wg){if(hn)return!1;var s=document.createElement("x");return s.style.cssText="pointer-events:auto",s.style.pointerEvents==="auto"}}(),p3=function(e,t){var a=Ce(e),r=parseInt(a.width)-parseInt(a.paddingLeft)-parseInt(a.paddingRight)-parseInt(a.borderLeftWidth)-parseInt(a.borderRightWidth),i=Uc(e,0,t),n=Uc(e,1,t),o=i&&Ce(i),l=n&&Ce(n),d=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+oa(i).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+oa(n).width;if(a.display==="flex")return a.flexDirection==="column"||a.flexDirection==="column-reverse"?"vertical":"horizontal";if(a.display==="grid")return a.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&o.float&&o.float!=="none"){var p=o.float==="left"?"left":"right";return n&&(l.clear==="both"||l.clear===p)?"vertical":"horizontal"}return i&&(o.display==="block"||o.display==="flex"||o.display==="table"||o.display==="grid"||d>=r&&a[d3]==="none"||n&&a[d3]==="none"&&d+u>r)?"vertical":"horizontal"},p7=function(e,t,a){var r=a?e.left:e.top,i=a?e.right:e.bottom,n=a?e.width:e.height,o=a?t.left:t.top,l=a?t.right:t.bottom,d=a?t.width:t.height;return r===o||i===l||r+n/2===o+d/2},m7=function(e,t){var a;return Ng.some(function(r){var i=r[Pr].options.emptyInsertThreshold;if(!(!i||sC(r))){var n=oa(r),o=e>=n.left-i&&e<=n.right+i,l=t>=n.top-i&&t<=n.bottom+i;if(o&&l)return a=r}}),a},m3=function(e){function t(i,n){return function(o,l,d,u){var p=o.options.group.name&&l.options.group.name&&o.options.group.name===l.options.group.name;if(i==null&&(n||p))return!0;if(i==null||i===!1)return!1;if(n&&i==="clone")return i;if(typeof i=="function")return t(i(o,l,d,u),n)(o,l,d,u);var m=(n?o:l).options.group.name;return i===!0||typeof i=="string"&&i===m||i.join&&i.indexOf(m)>-1}}var a={},r=e.group;(!r||Ig(r)!="object")&&(r={name:r}),a.name=r.name,a.checkPull=t(r.pull,!0),a.checkPut=t(r.put),a.revertClone=r.revertClone,e.group=a},f3=function(){!u3&&Me&&Ce(Me,"display","none")},h3=function(){!u3&&Me&&Ce(Me,"display","")};Wg&&!XH&&document.addEventListener("click",function(s){if(Og)return s.preventDefault(),s.stopPropagation&&s.stopPropagation(),s.stopImmediatePropagation&&s.stopImmediatePropagation(),Og=!1,!1},!0);var il=function(e){if(se){e=e.touches?e.touches[0]:e;var t=m7(e.clientX,e.clientY);if(t){var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=e[r]);a.target=a.rootEl=t,a.preventDefault=void 0,a.stopPropagation=void 0,t[Pr]._onDragOver(a)}}},f7=function(e){se&&se.parentNode[Pr]._isOutsideThisEl(e.target)};function xe(s,e){if(!(s&&s.nodeType&&s.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(s));this.el=s,this.options=e=mn({},e),s[Pr]=this;var t={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(s.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return p3(s,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(n,o){n.setData("Text",o.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:xe.supportPointer!==!1&&"PointerEvent"in window&&(!Eu||rC),emptyInsertThreshold:5};Pu.initializePlugins(this,s,t);for(var a in t)!(a in e)&&(e[a]=t[a]);m3(e);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=e.forceFallback?!1:u7,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?Xe(s,"pointerdown",this._onTapStart):(Xe(s,"mousedown",this._onTapStart),Xe(s,"touchstart",this._onTapStart)),this.nativeDraggable&&(Xe(s,"dragover",this),Xe(s,"dragenter",this)),Ng.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),mn(this,n7())}xe.prototype={constructor:xe,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(qc=null)},_getDirection:function(e,t){return typeof this.options.direction=="function"?this.options.direction.call(this,e,t,se):this.options.direction},_onTapStart:function(e){if(!!e.cancelable){var t=this,a=this.el,r=this.options,i=r.preventOnFilter,n=e.type,o=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(o||e).target,d=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,u=r.filter;if(T7(a),!se&&!(/mousedown|pointerdown/.test(n)&&e.button!==0||r.disabled)&&!d.isContentEditable&&!(!this.nativeDraggable&&Eu&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Qs(l,r.draggable,a,!1),!(l&&l.animated)&&Fg!==l)){if(Yc=Ds(l),Mu=Ds(l,r.draggable),typeof u=="function"){if(u.call(this,e,l,this)){hr({sortable:t,rootEl:d,name:"filter",targetEl:l,toEl:a,fromEl:a}),Mr("filter",t,{evt:e}),i&&e.preventDefault();return}}else if(u&&(u=u.split(",").some(function(p){if(p=Qs(d,p.trim(),a,!1),p)return hr({sortable:t,rootEl:p,name:"filter",targetEl:l,fromEl:a,toEl:a}),Mr("filter",t,{evt:e}),!0}),u)){i&&e.preventDefault();return}r.handle&&!Qs(d,r.handle,a,!1)||this._prepareDragStart(e,o,l)}}},_prepareDragStart:function(e,t,a){var r=this,i=r.el,n=r.options,o=i.ownerDocument,l;if(a&&!se&&a.parentNode===i){var d=oa(a);if(Mt=i,se=a,Wt=se.parentNode,rl=se.nextSibling,Fg=a,jg=n.group,xe.dragged=se,sl={target:se,clientX:(t||e).clientX,clientY:(t||e).clientY},l3=sl.clientX-d.left,c3=sl.clientY-d.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,se.style["will-change"]="all",l=function(){if(Mr("delayEnded",r,{evt:e}),xe.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!QH&&r.nativeDraggable&&(se.draggable=!0),r._triggerDragStart(e,t),hr({sortable:r,name:"choose",originalEvent:e}),Jr(se,n.chosenClass,!0)},n.ignore.split(",").forEach(function(u){t3(se,u.trim(),uC)}),Xe(o,"dragover",il),Xe(o,"mousemove",il),Xe(o,"touchmove",il),n.supportPointer?(Xe(o,"pointerup",r._onDrop),!this.nativeDraggable&&Xe(o,"pointercancel",r._onDrop)):(Xe(o,"mouseup",r._onDrop),Xe(o,"touchend",r._onDrop),Xe(o,"touchcancel",r._onDrop)),QH&&this.nativeDraggable&&(this.options.touchStartThreshold=4,se.draggable=!0),Mr("delayStart",this,{evt:e}),n.delay&&(!n.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(Su||hn))){if(xe.eventCanceled){this._onDrop();return}n.supportPointer?(Xe(o,"pointerup",r._disableDelayedDrag),Xe(o,"pointercancel",r._disableDelayedDrag)):(Xe(o,"mouseup",r._disableDelayedDrag),Xe(o,"touchend",r._disableDelayedDrag),Xe(o,"touchcancel",r._disableDelayedDrag)),Xe(o,"mousemove",r._delayedDragTouchMoveHandler),Xe(o,"touchmove",r._delayedDragTouchMoveHandler),n.supportPointer&&Xe(o,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(l,n.delay)}else l()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){se&&uC(se),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Ge(e,"mouseup",this._disableDelayedDrag),Ge(e,"touchend",this._disableDelayedDrag),Ge(e,"touchcancel",this._disableDelayedDrag),Ge(e,"pointerup",this._disableDelayedDrag),Ge(e,"pointercancel",this._disableDelayedDrag),Ge(e,"mousemove",this._delayedDragTouchMoveHandler),Ge(e,"touchmove",this._delayedDragTouchMoveHandler),Ge(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||e.pointerType=="touch"&&e,!this.nativeDraggable||t?this.options.supportPointer?Xe(document,"pointermove",this._onTouchMove):t?Xe(document,"touchmove",this._onTouchMove):Xe(document,"mousemove",this._onTouchMove):(Xe(se,"dragend",this),Xe(Mt,"dragstart",this._onDragStart));try{document.selection?Ug(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(a){}},_dragStarted:function(e,t){if(zc=!1,Mt&&se){Mr("dragStarted",this,{evt:t}),this.nativeDraggable&&Xe(document,"dragover",f7);var a=this.options;!e&&Jr(se,a.dragClass,!1),Jr(se,a.ghostClass,!0),xe.active=this,e&&this._appendGhost(),hr({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Xs){this._lastX=Xs.clientX,this._lastY=Xs.clientY,f3();for(var e=document.elementFromPoint(Xs.clientX,Xs.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Xs.clientX,Xs.clientY),e!==t);)t=e;if(se.parentNode[Pr]._isOutsideThisEl(e),t)do{if(t[Pr]){var a=void 0;if(a=t[Pr]._onDragOver({clientX:Xs.clientX,clientY:Xs.clientY,target:e,rootEl:t}),a&&!this.options.dragoverBubble)break}e=t}while(t=ZH(t));h3()}},_onTouchMove:function(e){if(sl){var t=this.options,a=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,n=Me&&Vc(Me,!0),o=Me&&n&&n.a,l=Me&&n&&n.d,d=_g&&tr&&r3(tr),u=(i.clientX-sl.clientX+r.x)/(o||1)+(d?d[0]-cC[0]:0)/(o||1),p=(i.clientY-sl.clientY+r.y)/(l||1)+(d?d[1]-cC[1]:0)/(l||1);if(!xe.active&&!zc){if(a&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<a)return;this._onDragStart(e,!0)}if(Me){n?(n.e+=u-(oC||0),n.f+=p-(lC||0)):n={a:1,b:0,c:0,d:1,e:u,f:p};var m="matrix(".concat(n.a,",").concat(n.b,",").concat(n.c,",").concat(n.d,",").concat(n.e,",").concat(n.f,")");Ce(Me,"webkitTransform",m),Ce(Me,"mozTransform",m),Ce(Me,"msTransform",m),Ce(Me,"transform",m),oC=u,lC=p,Xs=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!Me){var e=this.options.fallbackOnBody?document.body:Mt,t=oa(se,!0,_g,!0,e),a=this.options;if(_g){for(tr=e;Ce(tr,"position")==="static"&&Ce(tr,"transform")==="none"&&tr!==document;)tr=tr.parentNode;tr!==document.body&&tr!==document.documentElement?(tr===document&&(tr=Mi()),t.top+=tr.scrollTop,t.left+=tr.scrollLeft):tr=Mi(),cC=r3(tr)}Me=se.cloneNode(!0),Jr(Me,a.ghostClass,!1),Jr(Me,a.fallbackClass,!0),Jr(Me,a.dragClass,!0),Ce(Me,"transition",""),Ce(Me,"transform",""),Ce(Me,"box-sizing","border-box"),Ce(Me,"margin",0),Ce(Me,"top",t.top),Ce(Me,"left",t.left),Ce(Me,"width",t.width),Ce(Me,"height",t.height),Ce(Me,"opacity","0.8"),Ce(Me,"position",_g?"absolute":"fixed"),Ce(Me,"zIndex","100000"),Ce(Me,"pointerEvents","none"),xe.ghost=Me,e.appendChild(Me),Ce(Me,"transform-origin",l3/parseInt(Me.style.width)*100+"% "+c3/parseInt(Me.style.height)*100+"%")}},_onDragStart:function(e,t){var a=this,r=e.dataTransfer,i=a.options;if(Mr("dragStart",this,{evt:e}),xe.eventCanceled){this._onDrop();return}Mr("setupClone",this),xe.eventCanceled||(Nt=n3(se),Nt.removeAttribute("id"),Nt.draggable=!1,Nt.style["will-change"]="",this._hideClone(),Jr(Nt,this.options.chosenClass,!1),xe.clone=Nt),a.cloneId=Ug(function(){Mr("clone",a),!xe.eventCanceled&&(a.options.removeCloneOnHide||Mt.insertBefore(Nt,se),a._hideClone(),hr({sortable:a,name:"clone"}))}),!t&&Jr(se,i.dragClass,!0),t?(Og=!0,a._loopId=setInterval(a._emulateDragOver,50)):(Ge(document,"mouseup",a._onDrop),Ge(document,"touchend",a._onDrop),Ge(document,"touchcancel",a._onDrop),r&&(r.effectAllowed="move",i.setData&&i.setData.call(a,r,se)),Xe(document,"drop",a),Ce(se,"transform","translateZ(0)")),zc=!0,a._dragStartId=Ug(a._dragStarted.bind(a,t,e)),Xe(document,"selectstart",a),Au=!0,window.getSelection().removeAllRanges(),Eu&&Ce(document.body,"user-select","none")},_onDragOver:function(e){var t=this.el,a=e.target,r,i,n,o=this.options,l=o.group,d=xe.active,u=jg===l,p=o.sort,m=Wa||d,f,h=this,k=!1;if(dC)return;function g(U,z){Mr(U,h,Pi({evt:e,isOwner:u,axis:f?"vertical":"horizontal",revert:n,dragRect:r,targetRect:i,canSort:p,fromSortable:m,target:a,completed:w,onMove:function(fe,ue){return Vg(Mt,t,se,r,fe,oa(fe),e,ue)},changed:v},z))}function y(){g("dragOverAnimationCapture"),h.captureAnimationState(),h!==m&&m.captureAnimationState()}function w(U){return g("dragOverCompleted",{insertion:U}),U&&(u?d._hideClone():d._showClone(h),h!==m&&(Jr(se,Wa?Wa.options.ghostClass:d.options.ghostClass,!1),Jr(se,o.ghostClass,!0)),Wa!==h&&h!==xe.active?Wa=h:h===xe.active&&Wa&&(Wa=null),m===h&&(h._ignoreWhileAnimating=a),h.animateAll(function(){g("dragOverAnimationComplete"),h._ignoreWhileAnimating=null}),h!==m&&(m.animateAll(),m._ignoreWhileAnimating=null)),(a===se&&!se.animated||a===t&&!a.animated)&&(qc=null),!o.dragoverBubble&&!e.rootEl&&a!==document&&(se.parentNode[Pr]._isOutsideThisEl(e.target),!U&&il(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),k=!0}function v(){Zr=Ds(se),uo=Ds(se,o.draggable),hr({sortable:h,name:"change",toEl:t,newIndex:Zr,newDraggableIndex:uo,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),a=Qs(a,o.draggable,t,!0),g("dragOver"),xe.eventCanceled)return k;if(se.contains(e.target)||a.animated&&a.animatingX&&a.animatingY||h._ignoreWhileAnimating===a)return w(!1);if(Og=!1,d&&!o.disabled&&(u?p||(n=Wt!==Mt):Wa===this||(this.lastPutMode=jg.checkPull(this,d,se,e))&&l.checkPut(this,d,se,e))){if(f=this._getDirection(e,a)==="vertical",r=oa(se),g("dragOverValid"),xe.eventCanceled)return k;if(n)return Wt=Mt,y(),this._hideClone(),g("revert"),xe.eventCanceled||(rl?Mt.insertBefore(se,rl):Mt.appendChild(se)),w(!0);var T=sC(t,o.draggable);if(!T||y7(e,f,this)&&!T.animated){if(T===se)return w(!1);if(T&&t===e.target&&(a=T),a&&(i=oa(a)),Vg(Mt,t,se,r,a,i,e,!!a)!==!1)return y(),T&&T.nextSibling?t.insertBefore(se,T.nextSibling):t.appendChild(se),Wt=t,v(),w(!0)}else if(T&&k7(e,f,this)){var x=Uc(t,0,o,!0);if(x===se)return w(!1);if(a=x,i=oa(a),Vg(Mt,t,se,r,a,i,e,!1)!==!1)return y(),t.insertBefore(se,x),Wt=t,v(),w(!0)}else if(a.parentNode===t){i=oa(a);var C=0,S,E=se.parentNode!==t,P=!p7(se.animated&&se.toRect||r,a.animated&&a.toRect||i,f),I=f?"top":"left",L=a3(a,"top","top")||a3(se,"top","top"),W=L?L.scrollTop:void 0;qc!==a&&(S=i[I],Ru=!1,Lg=!P&&o.invertSwap||E),C=w7(e,a,i,f,P?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Lg,qc===a);var O;if(C!==0){var H=Ds(se);do H-=C,O=Wt.children[H];while(O&&(Ce(O,"display")==="none"||O===Me))}if(C===0||O===a)return w(!1);qc=a,Iu=C;var $=a.nextElementSibling,B=!1;B=C===1;var q=Vg(Mt,t,se,r,a,i,e,B);if(q!==!1)return(q===1||q===-1)&&(B=q===1),dC=!0,setTimeout(g7,30),y(),B&&!$?t.appendChild(se):a.parentNode.insertBefore(se,B?$:a),L&&i3(L,0,W-L.scrollTop),Wt=se.parentNode,S!==void 0&&!Lg&&(Hg=Math.abs(S-oa(a)[I])),v(),w(!0)}if(t.contains(se))return w(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){Ge(document,"mousemove",this._onTouchMove),Ge(document,"touchmove",this._onTouchMove),Ge(document,"pointermove",this._onTouchMove),Ge(document,"dragover",il),Ge(document,"mousemove",il),Ge(document,"touchmove",il)},_offUpEvents:function(){var e=this.el.ownerDocument;Ge(e,"mouseup",this._onDrop),Ge(e,"touchend",this._onDrop),Ge(e,"pointerup",this._onDrop),Ge(e,"pointercancel",this._onDrop),Ge(e,"touchcancel",this._onDrop),Ge(document,"selectstart",this)},_onDrop:function(e){var t=this.el,a=this.options;if(Zr=Ds(se),uo=Ds(se,a.draggable),Mr("drop",this,{evt:e}),Wt=se&&se.parentNode,Zr=Ds(se),uo=Ds(se,a.draggable),xe.eventCanceled){this._nulling();return}zc=!1,Lg=!1,Ru=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),pC(this.cloneId),pC(this._dragStartId),this.nativeDraggable&&(Ge(document,"drop",this),Ge(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Eu&&Ce(document.body,"user-select",""),Ce(se,"transform",""),e&&(Au&&(e.cancelable&&e.preventDefault(),!a.dropBubble&&e.stopPropagation()),Me&&Me.parentNode&&Me.parentNode.removeChild(Me),(Mt===Wt||Wa&&Wa.lastPutMode!=="clone")&&Nt&&Nt.parentNode&&Nt.parentNode.removeChild(Nt),se&&(this.nativeDraggable&&Ge(se,"dragend",this),uC(se),se.style["will-change"]="",Au&&!zc&&Jr(se,Wa?Wa.options.ghostClass:this.options.ghostClass,!1),Jr(se,this.options.chosenClass,!1),hr({sortable:this,name:"unchoose",toEl:Wt,newIndex:null,newDraggableIndex:null,originalEvent:e}),Mt!==Wt?(Zr>=0&&(hr({rootEl:Wt,name:"add",toEl:Wt,fromEl:Mt,originalEvent:e}),hr({sortable:this,name:"remove",toEl:Wt,originalEvent:e}),hr({rootEl:Wt,name:"sort",toEl:Wt,fromEl:Mt,originalEvent:e}),hr({sortable:this,name:"sort",toEl:Wt,originalEvent:e})),Wa&&Wa.save()):Zr!==Yc&&Zr>=0&&(hr({sortable:this,name:"update",toEl:Wt,originalEvent:e}),hr({sortable:this,name:"sort",toEl:Wt,originalEvent:e})),xe.active&&((Zr==null||Zr===-1)&&(Zr=Yc,uo=Mu),hr({sortable:this,name:"end",toEl:Wt,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Mr("nulling",this),Mt=se=Wt=Me=rl=Nt=Fg=co=sl=Xs=Au=Zr=uo=Yc=Mu=qc=Iu=Wa=jg=xe.dragged=xe.ghost=xe.clone=xe.active=null,Bg.forEach(function(e){e.checked=!0}),Bg.length=oC=lC=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":se&&(this._onDragOver(e),h7(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],t,a=this.el.children,r=0,i=a.length,n=this.options;r<i;r++)t=a[r],Qs(t,n.draggable,this.el,!1)&&e.push(t.getAttribute(n.dataIdAttr)||b7(t));return e},sort:function(e,t){var a={},r=this.el;this.toArray().forEach(function(i,n){var o=r.children[n];Qs(o,this.options.draggable,r,!1)&&(a[i]=o)},this),t&&this.captureAnimationState(),e.forEach(function(i){a[i]&&(r.removeChild(a[i]),r.appendChild(a[i]))}),t&&this.animateAll()},save:function(){var e=this.options.store;e&&e.set&&e.set(this)},closest:function(e,t){return Qs(e,t||this.options.draggable,this.el,!1)},option:function(e,t){var a=this.options;if(t===void 0)return a[e];var r=Pu.modifyOption(this,e,t);typeof r!="undefined"?a[e]=r:a[e]=t,e==="group"&&m3(a)},destroy:function(){Mr("destroy",this);var e=this.el;e[Pr]=null,Ge(e,"mousedown",this._onTapStart),Ge(e,"touchstart",this._onTapStart),Ge(e,"pointerdown",this._onTapStart),this.nativeDraggable&&(Ge(e,"dragover",this),Ge(e,"dragenter",this)),Array.prototype.forEach.call(e.querySelectorAll("[draggable]"),function(t){t.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),Ng.splice(Ng.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!co){if(Mr("hideClone",this),xe.eventCanceled)return;Ce(Nt,"display","none"),this.options.removeCloneOnHide&&Nt.parentNode&&Nt.parentNode.removeChild(Nt),co=!0}},_showClone:function(e){if(e.lastPutMode!=="clone"){this._hideClone();return}if(co){if(Mr("showClone",this),xe.eventCanceled)return;se.parentNode==Mt&&!this.options.group.revertClone?Mt.insertBefore(Nt,se):rl?Mt.insertBefore(Nt,rl):Mt.appendChild(Nt),this.options.group.revertClone&&this.animate(se,Nt),Ce(Nt,"display",""),co=!1}}};function h7(s){s.dataTransfer&&(s.dataTransfer.dropEffect="move"),s.cancelable&&s.preventDefault()}function Vg(s,e,t,a,r,i,n,o){var l,d=s[Pr],u=d.options.onMove,p;return window.CustomEvent&&!hn&&!Su?l=new CustomEvent("move",{bubbles:!0,cancelable:!0}):(l=document.createEvent("Event"),l.initEvent("move",!0,!0)),l.to=e,l.from=s,l.dragged=t,l.draggedRect=a,l.related=r||e,l.relatedRect=i||oa(e),l.willInsertAfter=o,l.originalEvent=n,s.dispatchEvent(l),u&&(p=u.call(d,l,n)),p}function uC(s){s.draggable=!1}function g7(){dC=!1}function k7(s,e,t){var a=oa(Uc(t.el,0,t.options,!0)),r=o3(t.el,t.options,Me),i=10;return e?s.clientX<r.left-i||s.clientY<a.top&&s.clientX<a.right:s.clientY<r.top-i||s.clientY<a.bottom&&s.clientX<a.left}function y7(s,e,t){var a=oa(sC(t.el,t.options.draggable)),r=o3(t.el,t.options,Me),i=10;return e?s.clientX>r.right+i||s.clientY>a.bottom&&s.clientX>a.left:s.clientY>r.bottom+i||s.clientX>a.right&&s.clientY>a.top}function w7(s,e,t,a,r,i,n,o){var l=a?s.clientY:s.clientX,d=a?t.height:t.width,u=a?t.top:t.left,p=a?t.bottom:t.right,m=!1;if(!n){if(o&&Hg<d*r){if(!Ru&&(Iu===1?l>u+d*i/2:l<p-d*i/2)&&(Ru=!0),Ru)m=!0;else if(Iu===1?l<u+Hg:l>p-Hg)return-Iu}else if(l>u+d*(1-r)/2&&l<p-d*(1-r)/2)return v7(e)}return m=m||n,m&&(l<u+d*i/2||l>p-d*i/2)?l>u+d/2?1:-1:0}function v7(s){return Ds(se)<Ds(s)?1:-1}function b7(s){for(var e=s.tagName+s.className+s.src+s.href+s.textContent,t=e.length,a=0;t--;)a+=e.charCodeAt(t);return a.toString(36)}function T7(s){Bg.length=0;for(var e=s.getElementsByTagName("input"),t=e.length;t--;){var a=e[t];a.checked&&Bg.push(a)}}function Ug(s){return setTimeout(s,0)}function pC(s){return clearTimeout(s)}Wg&&Xe(document,"touchmove",function(s){(xe.active||zc)&&s.cancelable&&s.preventDefault()});xe.utils={on:Xe,off:Ge,css:Ce,find:t3,is:function(e,t){return!!Qs(e,t,e,!1)},extend:s7,throttle:s3,closest:Qs,toggleClass:Jr,clone:n3,index:Ds,nextTick:Ug,cancelNextTick:pC,detectDirection:p3,getChild:Uc,expando:Pr};xe.get=function(s){return s[Pr]};xe.mount=function(){for(var s=arguments.length,e=new Array(s),t=0;t<s;t++)e[t]=arguments[t];e[0].constructor===Array&&(e=e[0]),e.forEach(function(a){if(!a.prototype||!a.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(a));a.utils&&(xe.utils=Pi(Pi({},xe.utils),a.utils)),Pu.mount(a)})};xe.create=function(s,e){return new xe(s,e)};xe.version=a7;var la=[],Fu,mC,fC=!1,hC,gC,$g,ju;function C7(){function s(){this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0};for(var e in this)e.charAt(0)==="_"&&typeof this[e]=="function"&&(this[e]=this[e].bind(this))}return s.prototype={dragStarted:function(t){var a=t.originalEvent;this.sortable.nativeDraggable?Xe(document,"dragover",this._handleAutoScroll):this.options.supportPointer?Xe(document,"pointermove",this._handleFallbackAutoScroll):a.touches?Xe(document,"touchmove",this._handleFallbackAutoScroll):Xe(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){var a=t.originalEvent;!this.options.dragOverBubble&&!a.rootEl&&this._handleAutoScroll(a)},drop:function(){this.sortable.nativeDraggable?Ge(document,"dragover",this._handleAutoScroll):(Ge(document,"pointermove",this._handleFallbackAutoScroll),Ge(document,"touchmove",this._handleFallbackAutoScroll),Ge(document,"mousemove",this._handleFallbackAutoScroll)),g3(),Yg(),i7()},nulling:function(){$g=mC=Fu=fC=ju=hC=gC=null,la.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(t,a){var r=this,i=(t.touches?t.touches[0]:t).clientX,n=(t.touches?t.touches[0]:t).clientY,o=document.elementFromPoint(i,n);if($g=t,a||this.options.forceAutoScrollFallback||Su||hn||Eu){kC(t,this.options,o,a);var l=lo(o,!0);fC&&(!ju||i!==hC||n!==gC)&&(ju&&g3(),ju=setInterval(function(){var d=lo(document.elementFromPoint(i,n),!0);d!==l&&(l=d,Yg()),kC(t,r.options,d,a)},10),hC=i,gC=n)}else{if(!this.options.bubbleScroll||lo(o,!0)===Mi()){Yg();return}kC(t,this.options,lo(o,!1),!1)}}},mn(s,{pluginName:"scroll",initializeByDefault:!0})}function Yg(){la.forEach(function(s){clearInterval(s.pid)}),la=[]}function g3(){clearInterval(ju)}var kC=s3(function(s,e,t,a){if(!!e.scroll){var r=(s.touches?s.touches[0]:s).clientX,i=(s.touches?s.touches[0]:s).clientY,n=e.scrollSensitivity,o=e.scrollSpeed,l=Mi(),d=!1,u;mC!==t&&(mC=t,Yg(),Fu=e.scroll,u=e.scrollFn,Fu===!0&&(Fu=lo(t,!0)));var p=0,m=Fu;do{var f=m,h=oa(f),k=h.top,g=h.bottom,y=h.left,w=h.right,v=h.width,T=h.height,x=void 0,C=void 0,S=f.scrollWidth,E=f.scrollHeight,P=Ce(f),I=f.scrollLeft,L=f.scrollTop;f===l?(x=v<S&&(P.overflowX==="auto"||P.overflowX==="scroll"||P.overflowX==="visible"),C=T<E&&(P.overflowY==="auto"||P.overflowY==="scroll"||P.overflowY==="visible")):(x=v<S&&(P.overflowX==="auto"||P.overflowX==="scroll"),C=T<E&&(P.overflowY==="auto"||P.overflowY==="scroll"));var W=x&&(Math.abs(w-r)<=n&&I+v<S)-(Math.abs(y-r)<=n&&!!I),O=C&&(Math.abs(g-i)<=n&&L+T<E)-(Math.abs(k-i)<=n&&!!L);if(!la[p])for(var H=0;H<=p;H++)la[H]||(la[H]={});(la[p].vx!=W||la[p].vy!=O||la[p].el!==f)&&(la[p].el=f,la[p].vx=W,la[p].vy=O,clearInterval(la[p].pid),(W!=0||O!=0)&&(d=!0,la[p].pid=setInterval(function(){a&&this.layer===0&&xe.active._onTouchMove($g);var $=la[this.layer].vy?la[this.layer].vy*o:0,B=la[this.layer].vx?la[this.layer].vx*o:0;typeof u=="function"&&u.call(xe.dragged.parentNode[Pr],B,$,s,$g,la[this.layer].el)!=="continue"||i3(la[this.layer].el,B,$)}.bind({layer:p}),24))),p++}while(e.bubbleScroll&&m!==l&&(m=lo(m,!1)));fC=d}},30),k3=function(e){var t=e.originalEvent,a=e.putSortable,r=e.dragEl,i=e.activeSortable,n=e.dispatchSortableEvent,o=e.hideGhostForTarget,l=e.unhideGhostForTarget;if(!!t){var d=a||i;o();var u=t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t,p=document.elementFromPoint(u.clientX,u.clientY);l(),d&&!d.el.contains(p)&&(n("spill"),this.onSpill({dragEl:r,putSortable:a}))}};function yC(){}yC.prototype={startIndex:null,dragStart:function(e){var t=e.oldDraggableIndex;this.startIndex=t},onSpill:function(e){var t=e.dragEl,a=e.putSortable;this.sortable.captureAnimationState(),a&&a.captureAnimationState();var r=Uc(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(t,r):this.sortable.el.appendChild(t),this.sortable.animateAll(),a&&a.animateAll()},drop:k3};mn(yC,{pluginName:"revertOnSpill"});function wC(){}wC.prototype={onSpill:function(e){var t=e.dragEl,a=e.putSortable,r=a||this.sortable;r.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),r.animateAll()},drop:k3};mn(wC,{pluginName:"removeOnSpill"});xe.mount(new C7);xe.mount(wC,yC);var Js=xe;Q();var At=A(require("obsidian"));Q();var po=class extends At.Modal{constructor(e,t,a,r,i,n){super(e);this.plugin=t,this.mode=a,this.currentFilterState=r,this.onSave=i,this.onLoad=n}onOpen(){let{contentEl:e}=this;e.empty(),this.mode==="save"?this.renderSaveMode():this.renderLoadMode()}renderSaveMode(){let{contentEl:e}=this;e.createEl("h2",{text:c("Save Filter Configuration")});let t="",a="";new At.Setting(e).setName(c("Filter Configuration Name")).setDesc(c("Enter a name for this filter configuration")).addText(r=>{r.setPlaceholder(c("Filter Configuration Name")).setValue(t).onChange(i=>{t=i})}),new At.Setting(e).setName(c("Filter Configuration Description")).setDesc(c("Enter a description for this filter configuration (optional)")).addTextArea(r=>{r.setPlaceholder(c("Filter Configuration Description")).setValue(a).onChange(i=>{a=i}),r.inputEl.rows=3}),new At.Setting(e).addButton(r=>{r.setButtonText(c("Save")).setCta().onClick(()=>{this.saveConfiguration(t,a)})}).addButton(r=>{r.setButtonText(c("Cancel")).onClick(()=>{this.close()})})}renderLoadMode(){let{contentEl:e}=this;e.createEl("h2",{text:c("Load Filter Configuration")});let t=this.plugin.settings.filterConfig.savedConfigs;if(t.length===0){e.createEl("p",{text:c("No saved filter configurations")}),new At.Setting(e).addButton(n=>{n.setButtonText(c("Close")).onClick(()=>{this.close()})});return}let a="";new At.Setting(e).setName(c("Select a saved filter configuration")).addDropdown(n=>{n.addOption("",c("Select a saved filter configuration")),t.forEach(o=>{n.addOption(o.id,o.name)}),n.onChange(o=>{a=o,this.updateConfigDetails(o)})});let r=e.createDiv({cls:"filter-config-details"}),i=e.createDiv({cls:"filter-config-buttons"});new At.Setting(i).addButton(n=>{n.setButtonText(c("Load")).setCta().onClick(()=>{this.loadConfiguration(a)})}).addButton(n=>{n.setButtonText(c("Delete")).setWarning().onClick(()=>{this.deleteConfiguration(a)})}).addButton(n=>{n.setButtonText(c("Cancel")).onClick(()=>{this.close()})}),this.detailsContainer=r}updateConfigDetails(e){let t=this.detailsContainer;if(!t||(t.empty(),!e))return;let a=this.plugin.settings.filterConfig.savedConfigs.find(o=>o.id===e);if(!a)return;t.createEl("h3",{text:a.name}),a.description&&t.createEl("p",{text:a.description}),t.createEl("p",{text:`${c("Created")}: ${new Date(a.createdAt).toLocaleString()}`,cls:"filter-config-meta"}),t.createEl("p",{text:`${c("Updated")}: ${new Date(a.updatedAt).toLocaleString()}`,cls:"filter-config-meta"});let r=t.createDiv({cls:"filter-config-summary"});r.createEl("h4",{text:c("Filter Summary")});let i=a.filterState.filterGroups.length,n=a.filterState.filterGroups.reduce((o,l)=>o+l.filters.length,0);r.createEl("p",{text:`${i} ${c("filter group")}${i!==1?"s":""}, ${n} ${c("filter")}${n!==1?"s":""}`}),r.createEl("p",{text:`${c("Root condition")}: ${a.filterState.rootCondition}`})}async saveConfiguration(e,t){if(!e.trim()){new At.Notice(c("Filter configuration name is required"));return}if(!this.currentFilterState){new At.Notice(c("Failed to save filter configuration"));return}let a=new Date().toISOString(),r={id:`filter-config-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:e.trim(),description:t.trim()||void 0,filterState:JSON.parse(JSON.stringify(this.currentFilterState)),createdAt:a,updatedAt:a};try{this.plugin.settings.filterConfig.savedConfigs.push(r),await this.plugin.saveSettings(),new At.Notice(c("Filter configuration saved successfully")),this.onSave&&this.onSave(r),this.close()}catch(i){console.error("Failed to save filter configuration:",i),new At.Notice(c("Failed to save filter configuration"))}}async loadConfiguration(e){if(!e){new At.Notice(c("Select a saved filter configuration"));return}let t=this.plugin.settings.filterConfig.savedConfigs.find(a=>a.id===e);if(!t){new At.Notice(c("Failed to load filter configuration"));return}try{this.onLoad&&this.onLoad(t),new At.Notice(c("Filter configuration loaded successfully")),this.close()}catch(a){console.error("Failed to load filter configuration:",a),new At.Notice(c("Failed to load filter configuration"))}}async deleteConfiguration(e){if(!e){new At.Notice(c("Select a saved filter configuration"));return}let t=this.plugin.settings.filterConfig.savedConfigs.find(r=>r.id===e);if(!t){new At.Notice(c("Failed to delete filter configuration"));return}if(!!await new Promise(r=>{let i=new At.Modal(this.app);i.contentEl.createEl("h2",{text:c("Delete Filter Configuration")}),i.contentEl.createEl("p",{text:c("Are you sure you want to delete this filter configuration?")}),i.contentEl.createEl("p",{text:`"${t.name}"`,cls:"filter-config-name-highlight"}),new At.Setting(i.contentEl).addButton(n=>{n.setButtonText(c("Delete")).setWarning().onClick(()=>{r(!0),i.close()})}).addButton(n=>{n.setButtonText(c("Cancel")).onClick(()=>{r(!1),i.close()})}),i.open()}))try{this.plugin.settings.filterConfig.savedConfigs=this.plugin.settings.filterConfig.savedConfigs.filter(i=>i.id!==e),await this.plugin.saveSettings(),new At.Notice(c("Filter configuration deleted successfully")),this.close(),new po(this.app,this.plugin,"load",void 0,this.onSave,this.onLoad).open()}catch(r){console.error("Failed to delete filter configuration:",r),new At.Notice(c("Failed to delete filter configuration"))}}onClose(){let{contentEl:e}=this;e.empty()}};var Ai=class extends ca.Component{constructor(e,t,a,r){super();this.leafId=a;this.hostEl=e,this.app=t,this.plugin=r}onload(){let e=this.leafId?this.app.loadLocalStorage(`task-genius-view-filter-${this.leafId}`):this.app.loadLocalStorage("task-genius-view-filter");this.leafId,e&&typeof e.rootCondition=="string"&&Array.isArray(e.filterGroups)?this.rootFilterState=e:(e&&console.warn("Task Filter: Invalid data in local storage. Resetting to default state."),this.rootFilterState={rootCondition:"any",filterGroups:[]}),this.render()}onunload(){var e,t;(e=this.groupsSortable)==null||e.destroy(),(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filters-list").forEach(a=>{a.sortableInstance&&a.sortableInstance.destroy()}),this.hostEl.empty()}close(){this.onunload()}generateId(){return`id-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}render(){this.hostEl.empty(),this.hostEl.addClass("task-filter-root-container");let t=this.hostEl.createDiv({cls:"task-filter-main-panel"}).createDiv({attr:{id:"root-filter-setup-section"}});t.addClass("root-filter-setup-section");let a=t.createDiv({});a.addClass("root-condition-section"),a.createEl("label",{text:c("Match"),attr:{for:"task-filter-root-condition"},cls:["compact-text","root-condition-label"]}),new ca.DropdownComponent(a).addOptions({any:c("Any"),all:c("All"),none:c("None")}).setValue(this.rootFilterState.rootCondition).onChange(n=>{this.rootFilterState.rootCondition=n,this.saveStateToLocalStorage(),this.updateGroupSeparators()}).selectEl.toggleClass("compact-select",!0),a.createEl("span",{cls:["compact-text","root-condition-span"],text:c("filter group")}),this.filterGroupsContainerEl=t.createDiv({attr:{id:"task-filter-groups-container"},cls:"filter-groups-container"});let i=t.createDiv({cls:"add-group-section"});if(i.createEl("div",{cls:["add-filter-group-btn","compact-btn"]},n=>{n.createEl("span",{cls:"add-filter-group-btn-icon"},o=>{(0,ca.setIcon)(o,"plus")}),n.createEl("span",{cls:"add-filter-group-btn-text",text:c("Add filter group")}),this.registerDomEvent(n,"click",()=>{this.addFilterGroup()})}),this.plugin){let n=i.createDiv({cls:"filter-config-section"});n.createEl("div",{cls:["save-filter-config-btn","compact-btn"]},o=>{o.createEl("span",{cls:"save-filter-config-btn-icon"},l=>{(0,ca.setIcon)(l,"save"),(0,ca.setTooltip)(o,c("Save Current Filter"))}),this.registerDomEvent(o,"click",()=>{this.openSaveConfigModal()})}),n.createEl("div",{cls:["load-filter-config-btn","compact-btn"]},o=>{o.createEl("span",{cls:"load-filter-config-btn-icon"},l=>{(0,ca.setIcon)(l,"folder-open"),(0,ca.setTooltip)(o,c("Load Saved Filter"))}),this.registerDomEvent(o,"click",()=>{this.openLoadConfigModal()})})}this.rootFilterState.filterGroups.forEach(n=>{let o=this.createFilterGroupElement(n);this.filterGroupsContainerEl.appendChild(o)}),this.updateGroupSeparators(),this.makeSortableGroups()}createFilterGroupElement(e){let t=this.hostEl.createEl("div",{attr:{id:e.id},cls:["filter-group"]}),a=t.createDiv({cls:["filter-group-header"]}),r=a.createDiv({cls:["filter-group-header-left"]});r.createDiv({cls:"drag-handle-container"},p=>{p.createEl("span",{cls:"drag-handle"},m=>{(0,ca.setIcon)(m,"grip-vertical")})}),r.createEl("label",{cls:["compact-text"],text:c("Match")}),new ca.DropdownComponent(r).addOptions({all:c("All"),any:c("Any"),none:c("None")}).onChange(p=>{let m=p;e.groupCondition=m,this.saveStateToLocalStorage(),this.updateFilterConjunctions(t.querySelector(".filters-list"),m)}).setValue(e.groupCondition).selectEl.toggleClass(["group-condition-select","compact-select"],!0),r.createEl("span",{cls:["compact-text"],text:c("filter in this group")});let n=a.createDiv({cls:["filter-group-header-right"]});new ca.ExtraButtonComponent(n).setIcon("copy").setTooltip(c("Duplicate filter group")).onClick(()=>{let p=this.generateId(),m=e.filters.map(h=>({...h,id:this.generateId()})),f={...e,id:p,filters:m};this.addFilterGroup(f,t)}).extraSettingsEl.addClasses(["duplicate-group-btn","clickable-icon"]),new ca.ExtraButtonComponent(n).setIcon("trash-2").setTooltip(c("Remove filter group")).onClick(()=>{let p=t.querySelector(".filters-list");p&&p.sortableInstance&&p.sortableInstance.destroy(),this.rootFilterState.filterGroups=this.rootFilterState.filterGroups.filter(f=>f.id!==e.id),this.saveStateToLocalStorage(),t.remove();let m=t.nextElementSibling;if(m&&m.classList.contains("filter-group-separator-container"))m.remove();else{let f=t.previousElementSibling;f&&f.classList.contains("filter-group-separator-container")&&f.remove()}this.updateGroupSeparators()}).extraSettingsEl.addClasses(["remove-group-btn","clickable-icon"]);let d=t.createDiv({cls:["filters-list"]});return e.filters.forEach(p=>{let m=this.createFilterItemElement(p,e);d.appendChild(m)}),this.updateFilterConjunctions(d,e.groupCondition),t.createDiv({cls:["group-footer"]}).createEl("div",{cls:["add-filter-btn","compact-btn"]},p=>{p.createEl("span",{cls:"add-filter-btn-icon"},m=>{(0,ca.setIcon)(m,"plus")}),p.createEl("span",{cls:"add-filter-btn-text",text:c("Add filter")}),this.registerDomEvent(p,"click",()=>{this.addFilterToGroup(e,d)})}),t}addFilterGroup(e=null,t=null){if(!this.filterGroupsContainerEl){console.warn("TaskFilterComponent: filterGroupsContainerEl not initialized yet");return}let a=e?e.id:this.generateId(),r;e&&t?r={id:a,groupCondition:e.groupCondition,filters:e.filters.map(o=>({...o,id:this.generateId()}))}:r={id:a,groupCondition:"all",filters:[]};let i=t?this.rootFilterState.filterGroups.findIndex(o=>o.id===t.id)+1:this.rootFilterState.filterGroups.length;this.rootFilterState.filterGroups.splice(i,0,r),this.saveStateToLocalStorage();let n=this.createFilterGroupElement(r);t&&t.parentNode===this.filterGroupsContainerEl?this.filterGroupsContainerEl.insertBefore(n,t.nextSibling):this.filterGroupsContainerEl.appendChild(n),(!e||e.filters.length===0)&&!t?this.addFilterToGroup(r,n.querySelector(".filters-list")):e&&e.filters.length===0&&t&&this.addFilterToGroup(r,n.querySelector(".filters-list")),this.updateGroupSeparators(),this.makeSortableGroups()}createFilterItemElement(e,t){let a=this.hostEl.createEl("div",{attr:{id:e.id},cls:["filter-item"]});t.groupCondition==="any"?a.createEl("span",{cls:["filter-conjunction"],text:c("OR")}):t.groupCondition==="none"?a.createEl("span",{cls:["filter-conjunction"],text:c("AND NOT")}):a.createEl("span",{cls:["filter-conjunction"],text:c("AND")});let r=new ca.DropdownComponent(a);r.selectEl.addClasses(["filter-property-select","compact-select"]);let i=new ca.DropdownComponent(a);i.selectEl.addClasses(["filter-condition-select","compact-select"]);let n=a.createEl("input",{cls:["filter-value-input","compact-input"]});n.hide(),r.onChange(d=>{e.property=d,this.saveStateToLocalStorage(),this.updateFilterPropertyOptions(a,e,r,i,n)});let o=(d,u)=>{let m=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(d);u==="completed"&&(d==="isTrue"||d==="isFalse")&&(m=!1),(d==="isEmpty"||d==="isNotEmpty")&&(m=!1),n.style.display=m?"block":"none",!m&&e.value!==void 0&&(e.value=void 0,this.saveStateToLocalStorage(),n.value="")};return i.onChange(d=>{e.condition=d,this.saveStateToLocalStorage(),o(d,e.property),n.style.display==="none"&&n.value!==""}),n.value=e.value||"",this.registerDomEvent(n,"input",d=>{e.value=d.target.value,this.saveStateToLocalStorage()}),new ca.ExtraButtonComponent(a).setIcon("trash-2").setTooltip(c("Remove filter")).onClick(()=>{t.filters=t.filters.filter(d=>d.id!==e.id),this.saveStateToLocalStorage(),a.remove(),this.updateFilterConjunctions(a.parentElement,t.groupCondition)}).extraSettingsEl.addClasses(["remove-filter-btn","clickable-icon"]),this.updateFilterPropertyOptions(a,e,r,i,n),a}addFilterToGroup(e,t){let r={id:this.generateId(),property:"content",condition:"contains",value:""};e.filters.push(r),this.saveStateToLocalStorage();let i=this.createFilterItemElement(r,e);t.appendChild(i),this.updateFilterConjunctions(t,e.groupCondition)}updateFilterPropertyOptions(e,t,a,r,i){let n=t.property;a.selectEl.options.length===0&&a.addOptions({content:c("Content"),status:c("Status"),priority:c("Priority"),dueDate:c("Due Date"),startDate:c("Start Date"),scheduledDate:c("Scheduled Date"),tags:c("Tags"),filePath:c("File Path"),completed:c("Completed")}),a.setValue(n);let o=[];switch(i.type="text",n){case"content":case"filePath":case"status":o=[{value:"contains",text:c("contains")},{value:"doesNotContain",text:c("does not contain")},{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:"startsWith",text:c("starts with")},{value:"endsWith",text:c("ends with")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"priority":o=[{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"dueDate":case"startDate":case"scheduledDate":i.type="date",o=[{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:">",text:">"},{value:"<",text:"<"},{value:">=",text:">="},{value:"<=",text:"<="},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"tags":o=[{value:"contains",text:c("contains")},{value:"doesNotContain",text:c("does not contain")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"completed":o=[{value:"isTrue",text:c("is true")},{value:"isFalse",text:c("is false")}];break;default:o=[{value:"isSet",text:c("is set")},{value:"isNotSet",text:c("is not set")},{value:"equals",text:c("equals")},{value:"contains",text:c("contains")}]}r.selectEl.empty(),o.forEach(h=>r.addOption(h.value,h.text));let l=t.condition,d=!1;o.some(h=>h.value===l)?r.setValue(l):o.length>0&&(r.setValue(o[0].value),t.condition=o[0].value,d=!0);let u=r.getValue(),m=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(u);n==="completed"&&(u==="isTrue"||u==="isFalse")&&(m=!1),(u==="isEmpty"||u==="isNotEmpty")&&(m=!1);let f=!1;i.style.display=m?"block":"none",m?t.value!==void 0?i.value=t.value:i.value!==""&&(i.value=""):(i.value="",t.value!==void 0&&(t.value=void 0,f=!0)),(d||f)&&this.saveStateToLocalStorage()}updateFilterConjunctions(e,t="all"){if(!e)return;e.querySelectorAll(".filter-item").forEach((r,i)=>{let n=r.querySelector(".filter-conjunction");n&&(i!==0?(n.show(),t==="any"?n.textContent=c("OR"):t==="none"?n.textContent=c("NOR"):n.textContent=c("AND")):(n.hide(),t==="any"?n.textContent=c("OR"):t==="none"?n.textContent=c("NOR"):n.textContent=c("AND")))})}updateGroupSeparators(){var t,a;(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filter-group-separator-container").forEach(r=>r.remove());let e=Array.from(((a=this.filterGroupsContainerEl)==null?void 0:a.children)||[]).filter(r=>r.classList.contains("filter-group"));e.length>1&&e.forEach((r,i)=>{var n;if(i<e.length-1){let o=createEl("div",{cls:"filter-group-separator-container"}),l=o.createDiv({cls:"filter-group-separator"}),d=this.rootFilterState.rootCondition,u=c("OR");d==="all"?u=c("AND"):d==="none"&&(u=c("AND NOT")),l.textContent=u.toUpperCase(),(n=r.parentNode)==null||n.insertBefore(o,r.nextSibling)}})}makeSortableGroups(){this.groupsSortable&&(this.groupsSortable.destroy(),this.groupsSortable=void 0),!!this.filterGroupsContainerEl&&(this.groupsSortable=new Js(this.filterGroupsContainerEl,{animation:150,handle:".drag-handle",filter:".filter-group-separator-container",preventOnFilter:!0,ghostClass:"dragging-placeholder",onEnd:e=>{let t=e;if(t.oldDraggableIndex===void 0||t.newDraggableIndex===void 0)return;let a=this.rootFilterState.filterGroups.splice(t.oldDraggableIndex,1)[0];this.rootFilterState.filterGroups.splice(t.newDraggableIndex,0,a),this.saveStateToLocalStorage(),this.updateGroupSeparators()}}))}updateFilterState(e,t){this.rootFilterState.filterGroups=e,this.rootFilterState.rootCondition=t,this.saveStateToLocalStorage()}getFilterState(){return JSON.parse(JSON.stringify(this.rootFilterState))}loadFilterState(e){var t;try{this.groupsSortable&&(this.groupsSortable.destroy(),this.groupsSortable=void 0)}catch(a){console.warn("Error destroying groups sortable:",a),this.groupsSortable=void 0}(t=this.filterGroupsContainerEl)==null||t.querySelectorAll(".filters-list").forEach(a=>{try{a.sortableInstance&&(a.sortableInstance.destroy(),a.sortableInstance=void 0)}catch(r){console.warn("Error destroying filter list sortable:",r),a.sortableInstance=void 0}}),this.rootFilterState=JSON.parse(JSON.stringify(e)),this.saveStateToLocalStorage(),this.render()}saveStateToLocalStorage(e=!0){this.app&&(this.app.saveLocalStorage(this.leafId?`task-genius-view-filter-${this.leafId}`:"task-genius-view-filter",this.rootFilterState),e&&this.app.workspace.trigger("task-genius:filter-changed",this.rootFilterState,this.leafId||void 0))}openSaveConfigModal(){if(!this.plugin)return;new po(this.app,this.plugin,"save",this.getFilterState(),t=>{t.name}).open()}openLoadConfigModal(){if(!this.plugin)return;new po(this.app,this.plugin,"load",void 0,void 0,t=>{this.loadFilterState(t.filterState),t.name}).open()}};var mo=class extends Ee.Modal{constructor(e,t,a,r,i,n){super(e);this.isCopyMode=!1;this.sourceViewId=null;this.hasChanges=!1;this.taskFilterComponent=null;this.advancedFilterContainer=null;this.filterChangeHandler=null;if(this.plugin=t,this.isCreate=a===null,this.isCopyMode=n!==void 0,this.isCreate){let o=`custom_${Date.now()}`;this.isCopyMode&&n?(this.sourceViewId=n.id,this.viewConfig={...JSON.parse(JSON.stringify(n)),id:o,name:c("Copy of ")+n.name,type:"custom"},this.viewFilterRule=n.filterRules?JSON.parse(JSON.stringify(n.filterRules)):r||{}):(this.viewConfig={id:o,name:c("New custom view"),icon:"list-plus",type:"custom",visible:!0,hideCompletedAndAbandonedTasks:!1,filterBlanks:!1,sortCriteria:[]},this.viewFilterRule=r||{})}else this.viewConfig=JSON.parse(JSON.stringify(a)),this.viewFilterRule=JSON.parse(JSON.stringify(r||{})),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]);this.originalViewConfig=JSON.stringify(this.viewConfig),this.originalViewFilterRule=JSON.stringify(this.viewFilterRule),this.onSave=i}onOpen(){this.display()}display(){var l,d,u,p,m,f,h,k;let{contentEl:e}=this;e.empty(),this.modalEl.toggleClass("task-genius-view-config-modal",!0);let t=[{value:-1,name:c("Locale Default")},{value:0,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,7))},{value:1,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,8))},{value:2,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,9))},{value:3,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,10))},{value:4,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,11))},{value:5,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,12))},{value:6,name:new Intl.DateTimeFormat(window.navigator.language,{weekday:"long"}).format(new Date(2024,0,13))}],a;if(this.isCreate?this.isCopyMode?a=c("Copy view: ")+(this.sourceViewId||"Unknown"):a=c("Create custom view"):a=c("Edit view: ")+this.viewConfig.name,this.titleEl.setText(a),this.isCopyMode&&this.sourceViewId){let g=this.plugin.settings.viewConfiguration.find(y=>y.id===this.sourceViewId);if(g){let y=e.createDiv({cls:"copy-mode-info"});y.createEl("p",{text:c("Creating a copy based on: ")+g.name,cls:"setting-item-description"}),y.createEl("p",{text:c("You can modify all settings below. The original view will remain unchanged."),cls:"setting-item-description"})}}new Ee.Setting(e).setName(c("View Name")).addText(g=>{this.nameInput=g,g.setValue(this.viewConfig.name).setPlaceholder(c("My Custom Task View")),g.onChange(()=>this.checkForChanges())}),new Ee.Setting(e).setName(c("Icon name")).setDesc(c("Enter any Lucide icon name (e.g., list-checks, filter, inbox)")).addText(g=>{g.inputEl.hide(),this.iconInput=g,g.setValue(this.viewConfig.icon).setPlaceholder("list-plus"),g.onChange(()=>this.checkForChanges())}).addButton(g=>{try{g.setIcon(this.viewConfig.icon)}catch(y){console.error("Error setting icon:",y)}Eg(g,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:y=>{this.viewConfig.icon=y,this.checkForChanges();try{(0,Ee.setIcon)(g.buttonEl,y)}catch(w){console.error("Error setting icon:",w)}this.iconInput.setValue(y)}})});let r=this.viewConfig.id==="calendar"||this.isCopyMode&&this.sourceViewId==="calendar"||((l=this.viewConfig.specificConfig)==null?void 0:l.viewType)==="calendar",i=this.viewConfig.id==="kanban"||this.isCopyMode&&this.sourceViewId==="kanban"||((d=this.viewConfig.specificConfig)==null?void 0:d.viewType)==="kanban",n=this.viewConfig.id==="forecast"||this.isCopyMode&&this.sourceViewId==="forecast"||((u=this.viewConfig.specificConfig)==null?void 0:u.viewType)==="forecast",o=this.viewConfig.id==="quadrant"||this.isCopyMode&&this.sourceViewId==="quadrant"||((p=this.viewConfig.specificConfig)==null?void 0:p.viewType)==="quadrant";if(r)new Ee.Setting(e).setName(c("First day of week")).setDesc(c("Overrides the locale default for calendar views.")).addDropdown(g=>{var w,v;t.forEach(T=>{g.addOption(String(T.value),T.name)});let y=-1;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="calendar"&&(y=(v=this.viewConfig.specificConfig.firstDayOfWeek)!=null?v:-1),g.setValue(String(y)),g.onChange(T=>{let x=parseInt(T),C=x===-1?void 0:x;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="calendar"?this.viewConfig.specificConfig={viewType:"calendar",firstDayOfWeek:C}:this.viewConfig.specificConfig.firstDayOfWeek=C,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Hide weekends")).setDesc(c("Hide weekend columns (Saturday and Sunday) in calendar views.")).addToggle(g=>{var w,v;let y=(v=(w=this.viewConfig.specificConfig)==null?void 0:w.hideWeekends)!=null?v:!1;g.setValue(y),g.onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="calendar"?this.viewConfig.specificConfig={viewType:"calendar",firstDayOfWeek:void 0,hideWeekends:T}:this.viewConfig.specificConfig.hideWeekends=T,this.checkForChanges()})});else if(i){new Ee.Setting(e).setName(c("Group by")).setDesc(c("Select which task property to use for creating columns")).addDropdown(y=>{var w;y.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("tags",c("Tags")).addOption("project",c("Project")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("context",c("Context")).addOption("filePath",c("File Path")).setValue(((w=this.viewConfig.specificConfig)==null?void 0:w.groupBy)||"status").onChange(v=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:v}:this.viewConfig.specificConfig.groupBy=v,this.checkForChanges(),this.display()})}),new Ee.Setting(e).setName(c("Show checkbox")).setDesc(c("Show a checkbox for each task in the kanban view.")).addToggle(y=>{var w;y.setValue((w=this.viewConfig.specificConfig)==null?void 0:w.showCheckbox),y.onChange(v=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:v,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.showCheckbox=v,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Hide empty columns")).setDesc(c("Hide columns that have no tasks.")).addToggle(y=>{var w;y.setValue((w=this.viewConfig.specificConfig)==null?void 0:w.hideEmptyColumns),y.onChange(v=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:v,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.hideEmptyColumns=v,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Default sort field")).setDesc(c("Default field to sort tasks by within each column.")).addDropdown(y=>{var w;y.addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("createdDate",c("Created Date")).setValue(((w=this.viewConfig.specificConfig)==null?void 0:w.defaultSortField)||"priority").onChange(v=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:v,defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.defaultSortField=v,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Default sort order")).setDesc(c("Default order to sort tasks within each column.")).addDropdown(y=>{var w;y.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(((w=this.viewConfig.specificConfig)==null?void 0:w.defaultSortOrder)||"desc").onChange(v=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:v,groupBy:"status"}:this.viewConfig.specificConfig.defaultSortOrder=v,this.checkForChanges()})});let g=this.viewConfig.specificConfig;if((g==null?void 0:g.groupBy)&&g.groupBy!=="status"){new Ee.Setting(e).setName(c("Custom Columns")).setDesc(c("Configure custom columns for the selected grouping property")).setHeading();let y=e.createDiv({cls:"kanban-columns-container"}),w=()=>{y.empty(),g.customColumns||(g.customColumns=[]);let v=g.customColumns;v.length===0&&y.createEl("p",{text:c("No custom columns defined. Add columns below."),cls:"setting-item-description"}),v.forEach((T,x)=>{let C=new Ee.Setting(y).setClass("kanban-column-row").addText(S=>{S.setValue(T.title).setPlaceholder(c("Column Title")).onChange(E=>{g.customColumns&&(g.customColumns[x].title=E,this.checkForChanges())})}).addText(S=>{var E;S.setValue(((E=T.value)==null?void 0:E.toString())||"").setPlaceholder(c("Value")).onChange(P=>{if(g.customColumns){let I=P;if(g.groupBy==="priority"&&P){let L=parseInt(P);I=isNaN(L)?P:L}g.customColumns[x].value=I,this.checkForChanges()}})});C.addExtraButton(S=>{S.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(x===0).onClick(()=>{if(x>0&&g.customColumns){let E=g.customColumns.splice(x,1)[0];g.customColumns.splice(x-1,0,E),g.customColumns.forEach((P,I)=>{P.order=I}),this.checkForChanges(),w()}})}),C.addExtraButton(S=>{S.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(x===v.length-1).onClick(()=>{if(x<v.length-1&&g.customColumns){let E=g.customColumns.splice(x,1)[0];g.customColumns.splice(x+1,0,E),g.customColumns.forEach((P,I)=>{P.order=I}),this.checkForChanges(),w()}})}),C.addExtraButton(S=>{S.setIcon("trash").setTooltip(c("Remove Column")).onClick(()=>{g.customColumns&&(g.customColumns.splice(x,1),g.customColumns.forEach((E,P)=>{E.order=P}),this.checkForChanges(),w())}),S.extraSettingsEl.addClass("mod-warning")})}),new Ee.Setting(y).addButton(T=>{T.setButtonText(c("Add Column")).setCta().onClick(()=>{g.customColumns||(g.customColumns=[]);let x={id:`column_${Date.now()}`,title:c("New Column"),value:"",order:g.customColumns.length};g.customColumns.push(x),this.checkForChanges(),w()})}).addButton(T=>{T.setButtonText(c("Reset Columns")).onClick(()=>{g.customColumns&&(g.customColumns=[],this.checkForChanges(),w())})})};w()}}else if(n)new Ee.Setting(e).setName(c("First day of week")).setDesc(c("Overrides the locale default for forecast views.")).addDropdown(g=>{var w,v;t.forEach(T=>{g.addOption(String(T.value),T.name)});let y=-1;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="forecast"&&(y=(v=this.viewConfig.specificConfig.firstDayOfWeek)!=null?v:-1),g.setValue(String(y)),g.onChange(T=>{let x=parseInt(T),C=x===-1?void 0:x;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="forecast"?this.viewConfig.specificConfig={viewType:"forecast",firstDayOfWeek:C}:this.viewConfig.specificConfig.firstDayOfWeek=C,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Hide weekends")).setDesc(c("Hide weekend columns (Saturday and Sunday) in forecast calendar.")).addToggle(g=>{var w,v;let y=(v=(w=this.viewConfig.specificConfig)==null?void 0:w.hideWeekends)!=null?v:!1;g.setValue(y),g.onChange(T=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="forecast"?this.viewConfig.specificConfig={viewType:"forecast",firstDayOfWeek:void 0,hideWeekends:T}:this.viewConfig.specificConfig.hideWeekends=T,this.checkForChanges()})});else if(o){new Ee.Setting(e).setName(c("Quadrant Classification Method")).setDesc(c("Choose how to classify tasks into quadrants")).addToggle(w=>{var T,x;let v=(x=(T=this.viewConfig.specificConfig)==null?void 0:T.usePriorityForClassification)!=null?x:!1;w.setValue(v),w.onChange(C=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="quadrant"?this.viewConfig.specificConfig={viewType:"quadrant",hideEmptyQuadrants:!1,autoUpdatePriority:!0,autoUpdateTags:!0,showTaskCount:!0,defaultSortField:"priority",defaultSortOrder:"desc",urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3,usePriorityForClassification:C,urgentPriorityThreshold:4,importantPriorityThreshold:3,customQuadrantColors:!1,quadrantColors:{urgentImportant:"#dc3545",notUrgentImportant:"#28a745",urgentNotImportant:"#ffc107",notUrgentNotImportant:"#6c757d"}}:this.viewConfig.specificConfig.usePriorityForClassification=C,this.checkForChanges(),this.display()})});let g=this.viewConfig.specificConfig;((m=g==null?void 0:g.usePriorityForClassification)!=null?m:!1)?(new Ee.Setting(e).setName(c("Urgent Priority Threshold")).setDesc(c("Tasks with priority >= this value are considered urgent (1-5)")).addSlider(w=>{var v;w.setLimits(1,5,1).setValue((v=g==null?void 0:g.urgentPriorityThreshold)!=null?v:4).setDynamicTooltip().onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentPriorityThreshold=T,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Important Priority Threshold")).setDesc(c("Tasks with priority >= this value are considered important (1-5)")).addSlider(w=>{var v;w.setLimits(1,5,1).setValue((v=g==null?void 0:g.importantPriorityThreshold)!=null?v:3).setDynamicTooltip().onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.importantPriorityThreshold=T,this.checkForChanges())})})):(new Ee.Setting(e).setName(c("Urgent Tag")).setDesc(c("Tag to identify urgent tasks (e.g., #urgent, #fire)")).addText(w=>{var v;w.setValue((v=g==null?void 0:g.urgentTag)!=null?v:"#urgent").setPlaceholder("#urgent").onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentTag=T,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Important Tag")).setDesc(c("Tag to identify important tasks (e.g., #important, #key)")).addText(w=>{var v;w.setValue((v=g==null?void 0:g.importantTag)!=null?v:"#important").setPlaceholder("#important").onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.importantTag=T,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Urgent Threshold Days")).setDesc(c("Tasks due within this many days are considered urgent")).addSlider(w=>{var v;w.setLimits(1,14,1).setValue((v=g==null?void 0:g.urgentThresholdDays)!=null?v:3).setDynamicTooltip().onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentThresholdDays=T,this.checkForChanges())})})),new Ee.Setting(e).setName(c("Auto Update Priority")).setDesc(c("Automatically update task priority when moved between quadrants")).addToggle(w=>{var v;w.setValue((v=g==null?void 0:g.autoUpdatePriority)!=null?v:!0).onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdatePriority=T,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Auto Update Tags")).setDesc(c("Automatically add/remove urgent/important tags when moved between quadrants")).addToggle(w=>{var v;w.setValue((v=g==null?void 0:g.autoUpdateTags)!=null?v:!0).onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdateTags=T,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Hide Empty Quadrants")).setDesc(c("Hide quadrants that have no tasks")).addToggle(w=>{var v;w.setValue((v=g==null?void 0:g.hideEmptyQuadrants)!=null?v:!1).onChange(T=>{var x;((x=this.viewConfig.specificConfig)==null?void 0:x.viewType)==="quadrant"&&(this.viewConfig.specificConfig.hideEmptyQuadrants=T,this.checkForChanges())})})}if((this.isCreate||((f=this.viewConfig.specificConfig)==null?void 0:f.viewType)==="twocolumn")&&(this.isCreate&&!this.isCopyMode&&new Ee.Setting(e).setName(c("View type")).setDesc(c("Select the type of view to create")).addDropdown(g=>{var y;g.addOption("standard",c("Standard view")).addOption("twocolumn",c("Two column view")).setValue(((y=this.viewConfig.specificConfig)==null?void 0:y.viewType)==="twocolumn"?"twocolumn":"standard").onChange(w=>{w==="twocolumn"?this.viewConfig.specificConfig={viewType:"twocolumn",taskPropertyKey:"tags",leftColumnTitle:c("Items"),rightColumnDefaultTitle:c("Tasks"),multiSelectText:c("selected items"),emptyStateText:c("No items selected")}:delete this.viewConfig.specificConfig,this.checkForChanges(),this.display()})}),((h=this.viewConfig.specificConfig)==null?void 0:h.viewType)==="twocolumn"&&(new Ee.Setting(e).setName(c("Two column view settings")).setHeading(),new Ee.Setting(e).setName(c("Group by task property")).setDesc(c("Select which task property to use for left column grouping")).addDropdown(g=>{g.addOption("tags",c("Tags")).addOption("project",c("Project")).addOption("priority",c("Priority")).addOption("context",c("Context")).addOption("status",c("Status")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("filePath",c("File Path")).setValue(this.viewConfig.specificConfig.taskPropertyKey||"tags").onChange(y=>{var w;if(((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"){if(this.viewConfig.specificConfig.taskPropertyKey=y,!this.leftColumnTitleInput.getValue()){let v=c("Items");switch(y){case"tags":v=c("Tags");break;case"project":v=c("Projects");break;case"priority":v=c("Priorities");break;case"context":v=c("Contexts");break;case"status":v=c("Status");break;case"dueDate":v=c("Due Dates");break;case"scheduledDate":v=c("Scheduled Dates");break;case"startDate":v=c("Start Dates");break;case"filePath":v=c("Files");break}this.leftColumnTitleInput.setValue(v),this.viewConfig.specificConfig.leftColumnTitle=v}this.checkForChanges()}})}),new Ee.Setting(e).setName(c("Left column title")).setDesc(c("Title for the left column (items list)")).addText(g=>{this.leftColumnTitleInput=g,g.setValue(this.viewConfig.specificConfig.leftColumnTitle||c("Items")),g.onChange(y=>{var w;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.leftColumnTitle=y,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Right column title")).setDesc(c("Default title for the right column (tasks list)")).addText(g=>{this.rightColumnTitleInput=g,g.setValue(this.viewConfig.specificConfig.rightColumnDefaultTitle||c("Tasks")),g.onChange(y=>{var w;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.rightColumnDefaultTitle=y,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Multi-select Text")).setDesc(c("Text to show when multiple items are selected")).addText(g=>{this.multiSelectTextInput=g,g.setValue(this.viewConfig.specificConfig.multiSelectText||c("selected items")),g.onChange(y=>{var w;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.multiSelectText=y,this.checkForChanges())})}),new Ee.Setting(e).setName(c("Empty state text")).setDesc(c("Text to show when no items are selected")).addText(g=>{this.emptyStateTextInput=g,g.setValue(this.viewConfig.specificConfig.emptyStateText||c("No items selected")),g.onChange(y=>{var w;((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.emptyStateText=y,this.checkForChanges())})}))),new Ee.Setting(e).setName(c("Filter Rules")).setHeading(),new Ee.Setting(e).setName(c("Hide completed and abandoned tasks")).setDesc(c("Hide completed and abandoned tasks in this view.")).addToggle(g=>{g.setValue(this.viewConfig.hideCompletedAndAbandonedTasks),g.onChange(y=>{this.viewConfig.hideCompletedAndAbandonedTasks=y,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Filter blanks")).setDesc(c("Filter out blank tasks in this view.")).addToggle(g=>{g.setValue(this.viewConfig.filterBlanks),g.onChange(y=>{this.viewConfig.filterBlanks=y,this.checkForChanges()})}),new Ee.Setting(e).setName(c("Advanced Filtering")).setDesc(c("Use advanced multi-group filtering with complex conditions")).addToggle(g=>{let y=!!this.viewFilterRule.advancedFilter;this.viewFilterRule.advancedFilter,g.setValue(y),g.onChange(w=>{w?(this.viewFilterRule.advancedFilter||(this.viewFilterRule.advancedFilter={rootCondition:"any",filterGroups:[]},this.viewFilterRule.advancedFilter),this.setupAdvancedFilter()):(delete this.viewFilterRule.advancedFilter,this.cleanupAdvancedFilter()),this.checkForChanges()})}),this.advancedFilterContainer=e.createDiv({cls:"advanced-filter-container"}),this.viewFilterRule.advancedFilter?this.setupAdvancedFilter():this.advancedFilterContainer.style.display="none",!["kanban","gantt","calendar"].includes(((k=this.viewConfig.specificConfig)==null?void 0:k.viewType)||"")){new Ee.Setting(e).setName(c("Sort Criteria")).setDesc(c("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let g=e.createDiv({cls:"sort-criteria-container"}),y=()=>{g.empty(),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]);let w=this.viewConfig.sortCriteria;w.length===0&&g.createEl("p",{text:c("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),w.forEach((v,T)=>{let x=new Ee.Setting(g).setClass("sort-criterion-row").addDropdown(C=>{C.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("startDate",c("Start Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("content",c("Content")).setValue(v.field).onChange(S=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[T].field=S,this.checkForChanges())})}).addDropdown(C=>{C.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(v.order).onChange(S=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[T].order=S,this.checkForChanges())}),v.field==="priority"?C.selectEl.title=c("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(v.field)?C.selectEl.title=c("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):v.field==="status"?C.selectEl.title=c("Ascending respects status order (Overdue first). Descending reverses it."):C.selectEl.title=c("Ascending: A-Z. Descending: Z-A")});x.addExtraButton(C=>{C.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(T===0).onClick(()=>{if(T>0&&this.viewConfig.sortCriteria){let S=this.viewConfig.sortCriteria.splice(T,1)[0];this.viewConfig.sortCriteria.splice(T-1,0,S),this.checkForChanges(),y()}})}),x.addExtraButton(C=>{C.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(T===w.length-1).onClick(()=>{if(T<w.length-1&&this.viewConfig.sortCriteria){let S=this.viewConfig.sortCriteria.splice(T,1)[0];this.viewConfig.sortCriteria.splice(T+1,0,S),this.checkForChanges(),y()}})}),x.addExtraButton(C=>{C.setIcon("trash").setTooltip(c("Remove Criterion")).onClick(()=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria.splice(T,1),this.checkForChanges(),y())}),C.extraSettingsEl.addClass("mod-warning")})}),new Ee.Setting(g).addButton(v=>{v.setButtonText(c("Add Sort Criterion")).setCta().onClick(()=>{let T={field:"status",order:"asc"};this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]),this.viewConfig.sortCriteria.push(T),this.checkForChanges(),y()})}).addButton(v=>{v.setButtonText(c("Reset to Defaults")).onClick(()=>{this.viewConfig.sortCriteria=[],this.checkForChanges(),y()})})};y()}new Ee.Setting(e).addButton(g=>{g.setButtonText(c("Save")).setCta().onClick(()=>{this.saveChanges()})}).addButton(g=>{g.setButtonText(c("Cancel")).onClick(()=>{this.close()})})}parseStringToArray(e){return!e||e.trim()===""?[]:e.split(",").map(t=>t.trim()).filter(t=>t!=="")}checkForChanges(){let e=JSON.stringify(this.viewConfig),t=JSON.stringify(this.getCurrentFilterRule());this.hasChanges=e!==this.originalViewConfig||t!==this.originalViewFilterRule}getCurrentFilterRule(){let e={};if(this.taskFilterComponent)try{let t=this.taskFilterComponent.getFilterState();t&&t.filterGroups.length>0&&(e.advancedFilter=t)}catch(t){console.warn("Error getting current filter state:",t)}else this.viewFilterRule.advancedFilter&&(e.advancedFilter=this.viewFilterRule.advancedFilter);return e}saveChanges(){this.viewConfig.name=this.nameInput.getValue().trim()||c("Unnamed View"),this.viewConfig.icon=this.iconInput.getValue().trim()||"list",this.viewFilterRule=this.getCurrentFilterRule(),this.originalViewConfig=JSON.stringify(this.viewConfig),this.originalViewFilterRule=JSON.stringify(this.viewFilterRule),this.hasChanges=!1,this.onSave(this.viewConfig,this.viewFilterRule),this.close(),new Ee.Notice(c("View configuration saved."))}close(){this.hasChanges?new Ss(this.plugin,{title:c("Unsaved Changes"),message:c("You have unsaved changes. Save before closing?"),confirmText:c("Save"),cancelText:c("Cancel"),onConfirm:e=>{if(e){this.saveChanges();return}super.close()}}).open():super.close()}onClose(){this.cleanupAdvancedFilter();let{contentEl:e}=this;e.empty()}saveSettingsUpdate(){this.checkForChanges()}setupAdvancedFilter(){if(!this.advancedFilterContainer)return;this.cleanupAdvancedFilter(),this.taskFilterComponent=new Ai(this.advancedFilterContainer,this.app,`view-config-${this.viewConfig.id}`,this.plugin),this.taskFilterComponent;let e=this.viewFilterRule.advancedFilter?JSON.parse(JSON.stringify(this.viewFilterRule.advancedFilter)):{rootCondition:"any",filterGroups:[]};this.app.saveLocalStorage(`task-genius-view-filter-view-config-${this.viewConfig.id}`,e),this.taskFilterComponent.onload(),this.taskFilterComponent.loadFilterState(e),this.filterChangeHandler=(t,a)=>{this.taskFilterComponent&&a===`view-config-${this.viewConfig.id}`&&(this.viewFilterRule.advancedFilter=t,this.checkForChanges())},this.app.workspace.on("task-genius:filter-changed",this.filterChangeHandler),this.advancedFilterContainer.style.display="block"}cleanupAdvancedFilter(){if(this.taskFilterComponent){try{this.taskFilterComponent.onunload()}catch(e){console.warn("Error unloading task filter component:",e)}this.taskFilterComponent=null}this.advancedFilterContainer&&(this.advancedFilterContainer.empty(),this.advancedFilterContainer.style.display="none"),this.filterChangeHandler&&(this.app.workspace.off("task-genius:filter-changed",this.filterChangeHandler),this.filterChangeHandler=null)}};function vC(s,e){if(new Se.Setting(e).setName(c("View & Index Configuration")).setDesc(c("Configure the Task Genius sidebar views, visibility, order, and create custom views.")).setHeading(),new Se.Setting(e).setName(c("Enable task genius view")).setDesc(c("Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.")).addToggle(p=>{p.setValue(s.plugin.settings.enableView),p.onChange(m=>{s.plugin.settings.enableView=m,s.applySettingsUpdate(),s.display()})}),new Se.Setting(e).setName(c("Default view mode")).setDesc(c("Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.")).addDropdown(p=>{p.addOption("list",c("List View")).addOption("tree",c("Tree View")).setValue(s.plugin.settings.defaultViewMode).onChange(m=>{s.plugin.settings.defaultViewMode=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Prefer metadata format of task")).setDesc(c("You can choose dataview format or tasks format, that will influence both index and save format.")).addDropdown(p=>{p.addOption("dataview","Dataview").addOption("tasks","Tasks").setValue(s.plugin.settings.preferMetadataFormat).onChange(async m=>{s.plugin.settings.preferMetadataFormat=m,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),new Se.Setting(e).setName(c("Project Tree View Settings")).setDesc(c("Configure how projects are displayed in tree view.")).setHeading(),new Se.Setting(e).setName(c("Default project view mode")).setDesc(c("Choose whether to display projects as a flat list or hierarchical tree by default.")).addDropdown(p=>{p.addOption("list",c("List View")).addOption("tree",c("Tree View")).setValue(s.plugin.settings.projectViewDefaultMode).onChange(m=>{s.plugin.settings.projectViewDefaultMode=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Auto-expand project tree")).setDesc(c("Automatically expand all project nodes when opening the project view in tree mode.")).addToggle(p=>{p.setValue(s.plugin.settings.projectTreeAutoExpand).onChange(m=>{s.plugin.settings.projectTreeAutoExpand=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Show empty project folders")).setDesc(c("Display project folders even if they don't contain any tasks.")).addToggle(p=>{p.setValue(s.plugin.settings.projectTreeShowEmptyFolders).onChange(m=>{s.plugin.settings.projectTreeShowEmptyFolders=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Project path separator")).setDesc(c("Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').")).addText(p=>{p.setPlaceholder("/").setValue(s.plugin.settings.projectPathSeparator).onChange(m=>{s.plugin.settings.projectPathSeparator=m||"/",s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Task Parser Configuration")).setDesc(c("Configure how task metadata is parsed and recognized.")).setHeading(),new Se.Setting(e).setName(c("Enable custom date formats")).setDesc(c("Enable custom date format patterns for parsing dates. When enabled, the parser will try your custom formats before falling back to default formats.")).addToggle(p=>{var m;p.setValue((m=s.plugin.settings.enableCustomDateFormats)!=null?m:!1).onChange(f=>{s.plugin.settings.enableCustomDateFormats=f,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.enableCustomDateFormats){let p=e.createDiv({cls:"task-genius-date-formats-container"});p.createEl("h3",{text:c("Custom date formats"),cls:"task-genius-formats-header"}),p.createEl("p",{text:c("Add custom date format patterns. Date patterns: yyyy (4-digit year), yy (2-digit year), MM (2-digit month), M (1-2 digit month), dd (2-digit day), d (1-2 digit day), MMM (short month name), MMMM (full month name). Time patterns: HH (2-digit hour), mm (2-digit minute), ss (2-digit second). Use single quotes for literals (e.g., 'T' for ISO format)."),cls:"setting-item-description"});let m=p.createDiv({cls:"task-genius-format-list"}),f=()=>{var T;m.empty(),((T=s.plugin.settings.customDateFormats)!=null?T:[]).forEach((x,C)=>{let S=m.createDiv({cls:"task-genius-format-item"});S.createEl("input",{type:"text",value:x,cls:"task-genius-format-input",placeholder:c("Enter date format (e.g., yyyy-MM-dd or yyyyMMdd_HHmmss)")}).addEventListener("input",I=>{let L=I.target;s.plugin.settings.customDateFormats[C]=L.value.trim(),s.applySettingsUpdate()}),S.createEl("button",{cls:"task-genius-format-delete-btn",text:"\xD7",attr:{"aria-label":c("Delete format"),title:c("Delete this format")}}).addEventListener("click",()=>{s.plugin.settings.customDateFormats.splice(C,1),s.applySettingsUpdate(),f()})}),m.createEl("button",{cls:"task-genius-add-format-btn",text:c("+ Add Date Format")}).addEventListener("click",()=>{s.plugin.settings.customDateFormats||(s.plugin.settings.customDateFormats=[]),s.plugin.settings.customDateFormats.push(""),s.applySettingsUpdate(),f();let x=m.querySelectorAll(".task-genius-format-input"),C=x[x.length-1];C&&C.focus()})};f();let h=e.createDiv({cls:"task-genius-date-examples"});h.createEl("h4",{text:c("Format Examples:"),cls:"task-genius-examples-header"});let k=[{format:"yyyy-MM-dd",example:"2025-08-16"},{format:"dd/MM/yyyy",example:"16/08/2025"},{format:"MM-dd-yyyy",example:"08-16-2025"},{format:"yyyy.MM.dd",example:"2025.08.16"},{format:"yyyyMMdd",example:"20250816"},{format:"yyyyMMdd_HHmmss",example:"20250816_144403"},{format:"yyyyMMddHHmmss",example:"20250816144403"},{format:"yyyy-MM-dd'T'HH:mm",example:"2025-08-16T14:44"},{format:"dd MMM yyyy",example:"16 Aug 2025"},{format:"MMM dd, yyyy",example:"Aug 16, 2025"},{format:"yyyy\u5E74MM\u6708dd\u65E5",example:"2025\u5E7408\u670816\u65E5"}],g=h.createEl("table",{cls:"task-genius-date-examples-table"}),y=g.createEl("tr");y.createEl("th",{text:c("Format Pattern")}),y.createEl("th",{text:c("Example")}),k.forEach(({format:w,example:v})=>{let T=g.createEl("tr");T.createEl("td",{text:w}),T.createEl("td",{text:v})})}let t=s.plugin.settings.preferMetadataFormat==="dataview";new Se.Setting(e).setName(c("Project tag prefix")).setDesc(t?c("Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing."):c("Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.")).addText(p=>{p.setPlaceholder("project").setValue(s.plugin.settings.projectTagPrefix[s.plugin.settings.preferMetadataFormat]).onChange(async m=>{s.plugin.settings.projectTagPrefix[s.plugin.settings.preferMetadataFormat]=m||"project",s.applySettingsUpdate();let f=e.updateFormatExamples;f&&f()})}),new Se.Setting(e).setName(c("Context tag prefix")).setDesc(t?c("Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing."):c("Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.")).addText(p=>{p.setPlaceholder("context").setValue(s.plugin.settings.contextTagPrefix[s.plugin.settings.preferMetadataFormat]).onChange(async m=>{s.plugin.settings.contextTagPrefix[s.plugin.settings.preferMetadataFormat]=m||(t?"context":"@"),s.applySettingsUpdate();let f=e.updateFormatExamples;f&&f()})});let a=e.createDiv({cls:"task-genius-format-examples"}),r=()=>{a.empty(),a.createEl("strong",{text:c("Format Examples:")}),s.plugin.settings.preferMetadataFormat==="dataview"?(a.createEl("br"),a.createEl("span",{text:`\u2022 ${c("Project")}: [${s.plugin.settings.projectTagPrefix[s.plugin.settings.preferMetadataFormat]}:: myproject]`}),a.createEl("span",{text:`\u2022 ${c("Context")}: [${s.plugin.settings.contextTagPrefix[s.plugin.settings.preferMetadataFormat]}:: home]`}),a.createEl("span",{text:`\u2022 ${c("Area")}: [${s.plugin.settings.areaTagPrefix[s.plugin.settings.preferMetadataFormat]}:: work]`})):(a.createEl("br"),a.createEl("span",{text:`\u2022 ${c("Project")}: #${s.plugin.settings.projectTagPrefix[s.plugin.settings.preferMetadataFormat]}/myproject`}),a.createEl("span",{text:`\u2022 ${c("Context")}: @home (${c("always uses @ prefix")})`}),a.createEl("span",{text:`\u2022 ${c("Area")}: #${s.plugin.settings.areaTagPrefix[s.plugin.settings.preferMetadataFormat]}/work`}))};if(r(),e.updateFormatExamples=r,new Se.Setting(e).setName(c("File Parsing Configuration")).setDesc(c("Configure how to extract tasks from file metadata and tags.")).setHeading(),new Se.Setting(e).setName(c("Enable file metadata parsing")).setDesc(c("Parse tasks from file frontmatter metadata fields. When enabled, files with specific metadata fields will be treated as tasks.")).addToggle(p=>{p.setValue(s.plugin.settings.fileParsingConfig.enableFileMetadataParsing),p.onChange(async m=>{let f=s.plugin.settings.fileParsingConfig.enableFileMetadataParsing;if(s.plugin.settings.fileParsingConfig.enableFileMetadataParsing=m,s.applySettingsUpdate(),!f&&m&&s.plugin.taskManager)try{new Se.Notice(c("File metadata parsing enabled. Rebuilding task index...")),await s.plugin.taskManager.forceReindex(),new Se.Notice(c("Task index rebuilt successfully"))}catch(h){console.error("Failed to reindex after enabling file metadata parsing:",h),new Se.Notice(c("Failed to rebuild task index"))}s.display()})}),s.plugin.settings.fileParsingConfig.enableFileMetadataParsing&&(new Se.Setting(e).setName(c("Metadata fields to parse as tasks")).setDesc(c("Comma-separated list of metadata fields that should be treated as tasks (e.g., dueDate, todo, complete, task)")).addText(p=>{p.setPlaceholder("dueDate, todo, complete, task").setValue(s.plugin.settings.fileParsingConfig.metadataFieldsToParseAsTasks.join(", ")).onChange(m=>{s.plugin.settings.fileParsingConfig.metadataFieldsToParseAsTasks=m.split(",").map(f=>f.trim()).filter(f=>f.length>0),s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Task content from metadata")).setDesc(c("Which metadata field to use as task content. If not found, will use filename.")).addText(p=>{p.setPlaceholder("title").setValue(s.plugin.settings.fileParsingConfig.taskContentFromMetadata).onChange(m=>{s.plugin.settings.fileParsingConfig.taskContentFromMetadata=m||"title",s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Default task status")).setDesc(c("Default status for tasks created from metadata (space for incomplete, x for complete)")).addText(p=>{p.setPlaceholder(" ").setValue(s.plugin.settings.fileParsingConfig.defaultTaskStatus).onChange(m=>{s.plugin.settings.fileParsingConfig.defaultTaskStatus=m||" ",s.applySettingsUpdate()})})),new Se.Setting(e).setName(c("Enable tag-based task parsing")).setDesc(c("Parse tasks from file tags. When enabled, files with specific tags will be treated as tasks.")).addToggle(p=>{p.setValue(s.plugin.settings.fileParsingConfig.enableTagBasedTaskParsing),p.onChange(m=>{s.plugin.settings.fileParsingConfig.enableTagBasedTaskParsing=m,s.applySettingsUpdate(),s.display()})}),s.plugin.settings.fileParsingConfig.enableTagBasedTaskParsing&&new Se.Setting(e).setName(c("Tags to parse as tasks")).setDesc(c("Comma-separated list of tags that should be treated as tasks (e.g., #todo, #task, #action, #due)")).addText(p=>{p.setPlaceholder("#todo, #task, #action, #due").setValue(s.plugin.settings.fileParsingConfig.tagsToParseAsTasks.join(", ")).onChange(m=>{s.plugin.settings.fileParsingConfig.tagsToParseAsTasks=m.split(",").map(f=>f.trim()).filter(f=>f.length>0),s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Enable worker processing")).setDesc(c("Use background worker for file parsing to improve performance. Recommended for large vaults.")).addToggle(p=>{p.setValue(s.plugin.settings.fileParsingConfig.enableWorkerProcessing),p.onChange(m=>{s.plugin.settings.fileParsingConfig.enableWorkerProcessing=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Use daily note path as date")).setDesc(c("If enabled, the daily note path will be used as the date for tasks.")).addToggle(p=>{p.setValue(s.plugin.settings.useDailyNotePathAsDate),p.onChange(m=>{s.plugin.settings.useDailyNotePathAsDate=m,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.useDailyNotePathAsDate){let p=document.createDocumentFragment();p.createEl("div",{text:c("Task Genius will use moment.js and also this format to parse the daily note path.")}),p.createEl("div",{text:c("You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.")}),new Se.Setting(e).setName(c("Daily note format")).setDesc(p).addText(m=>{m.setValue(s.plugin.settings.dailyNoteFormat),m.onChange(f=>{s.plugin.settings.dailyNoteFormat=f,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Daily note path")).setDesc(c("Select the folder that contains the daily note.")).addText(m=>{new wv(s.app,m.inputEl,s.plugin),m.setValue(s.plugin.settings.dailyNotePath),m.onChange(f=>{s.plugin.settings.dailyNotePath=f,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Use as date type")).setDesc(c("You can choose due, start, or scheduled as the date type for tasks.")).addDropdown(m=>{m.addOption("due",c("Due")).addOption("start",c("Start")).addOption("scheduled",c("Scheduled")).setValue(s.plugin.settings.useAsDateType).onChange(async f=>{s.plugin.settings.useAsDateType=f,s.applySettingsUpdate()})})}if(new Se.Setting(e).setName(c("Use relative time for date")).setDesc(c("Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.")).addToggle(p=>{p.setValue(s.plugin.settings.useRelativeTimeForDate),p.onChange(m=>{s.plugin.settings.useRelativeTimeForDate=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Enable inline editor")).setDesc(c("Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.")).addToggle(p=>{p.setValue(s.plugin.settings.enableInlineEditor),p.onChange(m=>{s.plugin.settings.enableInlineEditor=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Enable dynamic metadata positioning")).setDesc(c("Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.")).addToggle(p=>{p.setValue(s.plugin.settings.enableDynamicMetadataPositioning),p.onChange(m=>{s.plugin.settings.enableDynamicMetadataPositioning=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Ignore all tasks behind heading")).setDesc(c("Enter the heading to ignore, e.g. '## Project', '## Inbox', separated by comma")).addText(p=>{p.setValue(s.plugin.settings.ignoreHeading),p.onChange(m=>{s.plugin.settings.ignoreHeading=m,s.applySettingsUpdate()})}),new Se.Setting(e).setName(c("Focus all tasks behind heading")).setDesc(c("Enter the heading to focus, e.g. '## Project', '## Inbox', separated by comma")).addText(p=>{p.setValue(s.plugin.settings.focusHeading),p.onChange(m=>{s.plugin.settings.focusHeading=m,s.applySettingsUpdate()})}),!s.plugin.settings.enableView)return;new Se.Setting(e).setName(c("Global Filter Configuration")).setDesc(c("Configure global filter rules that apply to all Views by default. Individual Views can override these settings.")).setHeading();let i=e.createDiv({cls:"global-filter-container"}),n=null;(()=>{n&&n.onunload(),s.plugin.settings.globalFilterRules.advancedFilter&&s.app.saveLocalStorage("task-genius-view-filter-global-filter",s.plugin.settings.globalFilterRules.advancedFilter),n=new Ai(i,s.app,"global-filter",s.plugin),n.onload();let p=m=>{n&&(s.plugin.settings.globalFilterRules={...s.plugin.settings.globalFilterRules,advancedFilter:m},s.applySettingsUpdate(),s.plugin.triggerViewUpdate())};s.plugin.registerEvent(s.app.workspace.on("task-genius:filter-changed",(m,f)=>{f==="global-filter"&&p(m)}))})(),e.cleanupGlobalFilter=()=>{n&&(n.onunload(),n=null)},new Se.Setting(e).setName(c("Manage Views")).setDesc(c("Configure sidebar views, order, visibility, and hide/show completed tasks per view.")).setHeading();let l=e.createDiv({cls:"view-management-list"}),d=()=>{l.empty(),s.plugin.settings.viewConfiguration.forEach((p,m)=>{let f=new Se.Setting(l).setName(p.name).setDesc(`[${p.type}]`).addToggle(g=>{g.setTooltip(c("Show in sidebar")).setValue(p.visible).onChange(async y=>{s.plugin.settings.viewConfiguration[m].visible=y,s.applySettingsUpdate()})});f.addExtraButton(g=>{g.setIcon("pencil").setTooltip(c("Edit View")).onClick(()=>{if(p.id==="habit"){s.openTab("habit");return}let y=p.filterRules||{};new mo(s.app,s.plugin,p,y,(w,v)=>{let T=s.plugin.settings.viewConfiguration.findIndex(x=>x.id===w.id);T!==-1&&(s.plugin.settings.viewConfiguration[T]={...w,filterRules:v},s.applySettingsUpdate(),d())}).open()}),g.extraSettingsEl.addClass("view-edit-button")}),f.addExtraButton(g=>{g.setIcon("copy").setTooltip(c("Copy View")).onClick(()=>{new mo(s.app,s.plugin,null,null,(y,w)=>{s.plugin.settings.viewConfiguration.some(v=>v.id===y.id)?new Se.Notice(c("Error: View ID already exists.")):(s.plugin.settings.viewConfiguration.push({...y,filterRules:w}),s.applySettingsUpdate(),d(),new Se.Notice(c("View copied successfully: ")+y.name))},p).open()}),g.extraSettingsEl.addClass("view-copy-button")}),f.addExtraButton(g=>{g.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(m===0).onClick(()=>{if(m>0){let y=s.plugin.settings.viewConfiguration.splice(m,1)[0];s.plugin.settings.viewConfiguration.splice(m-1,0,y),s.applySettingsUpdate(),d()}}),g.extraSettingsEl.addClass("view-order-button")}),f.addExtraButton(g=>{g.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(m===s.plugin.settings.viewConfiguration.length-1).onClick(()=>{if(m<s.plugin.settings.viewConfiguration.length-1){let y=s.plugin.settings.viewConfiguration.splice(m,1)[0];s.plugin.settings.viewConfiguration.splice(m+1,0,y),s.applySettingsUpdate(),d()}}),g.extraSettingsEl.addClass("view-order-button")}),p.type==="custom"&&f.addExtraButton(g=>{g.setIcon("trash").setTooltip(c("Delete View")).onClick(()=>{s.plugin.settings.viewConfiguration.splice(m,1),s.applySettingsUpdate(),d()}),g.extraSettingsEl.addClass("view-delete-button")});let h=document.createDocumentFragment(),k=h.createEl("i",{cls:"view-icon"});(0,Se.setIcon)(k,p.icon),f.settingEl.prepend(h)})};d();let u=e.createDiv();new Se.Setting(u).addButton(p=>{p.setButtonText(c("Add Custom View")).setCta().onClick(()=>{new mo(s.app,s.plugin,null,null,(m,f)=>{s.plugin.settings.viewConfiguration.some(h=>h.id===m.id)?new Se.Notice(c("Error: View ID already exists.")):(s.plugin.settings.viewConfiguration.push({...m,filterRules:f}),s.applySettingsUpdate(),d())}).open()})}),new Se.Setting(e).setName(c("Rebuild index")).setClass("mod-warning").addButton(p=>{p.setButtonText(c("Rebuild")).onClick(async()=>{new Ss(s.plugin,{title:c("Reindex"),message:c("Are you sure you want to force reindex all tasks?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async m=>{if(!!m)try{new Se.Notice(c("Clearing task cache and rebuilding index...")),await s.plugin.taskManager.forceReindex(),new Se.Notice(c("Task index completely rebuilt"))}catch(f){console.error("Failed to force reindex tasks:",f),new Se.Notice(c("Failed to force reindex tasks"))}}}).open()})})}var ar=A(require("obsidian"));Q();TC();function CC(s,e){if(new ar.Setting(e).setName(c("Workflow")).setDesc(c("Configure task workflows for project and process management")).setHeading(),new ar.Setting(e).setName(c("Enable workflow")).setDesc(c("Toggle to enable the workflow system for tasks")).addToggle(r=>{r.setValue(s.plugin.settings.workflow.enableWorkflow).onChange(async i=>{s.plugin.settings.workflow.enableWorkflow=i,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),!s.plugin.settings.workflow.enableWorkflow)return;if(new ar.Setting(e).setName(c("Auto-add timestamp")).setDesc(c("Automatically add a timestamp to the task when it is created")).addToggle(r=>{r.setValue(s.plugin.settings.workflow.autoAddTimestamp).onChange(async i=>{s.plugin.settings.workflow.autoAddTimestamp=i,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.workflow.autoAddTimestamp){let r=document.createDocumentFragment();r.createEl("span",{text:c("Timestamp format:")}),r.createEl("span",{text:" "});let i=r.createEl("span");if(new ar.Setting(e).setName(c("Timestamp format")).setDesc(r).addMomentFormat(n=>{n.setSampleEl(i),n.setDefaultFormat(s.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss"),n.setValue(s.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss").onChange(o=>{s.plugin.settings.workflow.timestampFormat=o,s.applySettingsUpdate(),n.updateSample()})}),new ar.Setting(e).setName(c("Remove timestamp when moving to next stage")).setDesc(c("Remove the timestamp from the current task when moving to the next stage")).addToggle(n=>{n.setValue(s.plugin.settings.workflow.removeTimestampOnTransition).onChange(async o=>{s.plugin.settings.workflow.removeTimestampOnTransition=o,s.applySettingsUpdate()})}),new ar.Setting(e).setName(c("Calculate spent time")).setDesc(c("Calculate and display the time spent on the task when moving to the next stage")).addToggle(n=>{n.setValue(s.plugin.settings.workflow.calculateSpentTime).onChange(async o=>{s.plugin.settings.workflow.calculateSpentTime=o,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),s.plugin.settings.workflow.calculateSpentTime){let n=document.createDocumentFragment();n.createEl("span",{text:c("Format for spent time:")}),n.createEl("span",{text:" "});let o=n.createEl("span",{text:"HH:mm:ss"});n.createEl("span",{text:". "}),n.createEl("span",{text:c("Calculate spent time when move to next stage.")}),new ar.Setting(e).setName(c("Spent time format")).setDesc(n).addMomentFormat(l=>{l.setSampleEl(o),l.setDefaultFormat(s.plugin.settings.workflow.spentTimeFormat||"HH:mm:ss"),l.setValue(s.plugin.settings.workflow.spentTimeFormat||"HH:mm:ss").onChange(d=>{s.plugin.settings.workflow.spentTimeFormat=d,s.applySettingsUpdate(),l.updateSample()})}),new ar.Setting(e).setName(c("Calculate full spent time")).setDesc(c("Calculate the full spent time from the start of the task to the last stage")).addToggle(l=>{l.setValue(s.plugin.settings.workflow.calculateFullSpentTime).onChange(async d=>{s.plugin.settings.workflow.calculateFullSpentTime=d,s.applySettingsUpdate()})})}}new ar.Setting(e).setName(c("Auto remove last stage marker")).setDesc(c("Automatically remove the last stage marker when a task is completed")).addToggle(r=>{r.setValue(s.plugin.settings.workflow.autoRemoveLastStageMarker).onChange(async i=>{s.plugin.settings.workflow.autoRemoveLastStageMarker=i,s.applySettingsUpdate()})}),new ar.Setting(e).setName(c("Auto-add next task")).setDesc(c("Automatically create a new task with the next stage when completing a task")).addToggle(r=>{r.setValue(s.plugin.settings.workflow.autoAddNextTask).onChange(async i=>{s.plugin.settings.workflow.autoAddNextTask=i,s.applySettingsUpdate()})}),new ar.Setting(e).setName(c("Workflow definitions")).setDesc(c("Configure workflow templates for different types of processes"));let t=e.createDiv({cls:"workflow-container"}),a=()=>{t.empty();let r=s.plugin.settings.workflow.definitions;r.length===0&&t.createEl("div",{cls:"no-workflows-message",text:c("No workflow definitions created yet. Click 'Add New Workflow' to create one.")}),r.forEach((n,o)=>{let l=t.createDiv({cls:"workflow-row"}),d=new ar.Setting(l).setName(n.name).setDesc(n.description||"");d.addExtraButton(p=>{p.setIcon("pencil").setTooltip(c("Edit workflow")).onClick(()=>{new nl(s.app,s.plugin,n,m=>{s.plugin.settings.workflow.definitions[o]=m,s.applySettingsUpdate(),a()}).open()})}),d.addExtraButton(p=>{p.setIcon("trash").setTooltip(c("Remove workflow")).onClick(()=>{let m=new ar.Modal(s.app);m.titleEl.setText(c("Delete workflow")),m.contentEl.createDiv().setText(c(`Are you sure you want to delete the '${n.name}' workflow?`));let h=m.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),k=h.createEl("button");k.setText(c("Cancel")),k.addEventListener("click",()=>{m.close()});let g=h.createEl("button");g.setText(c("Delete")),g.addClass("mod-warning"),g.addEventListener("click",()=>{s.plugin.settings.workflow.definitions.splice(o,1),s.applySettingsUpdate(),a(),m.close()}),m.open()})});let u=l.createDiv({cls:"workflow-stages-info"});if(n.stages.length>0){let p=u.createEl("ul");p.addClass("workflow-stages-list"),n.stages.forEach(m=>{let f=p.createEl("li");f.addClass("workflow-stage-item"),f.addClass(`workflow-stage-type-${m.type}`);let h=f.createSpan({text:m.name});m.type==="cycle"?(f.addClass("workflow-stage-cycle"),h.addClass("workflow-stage-name-cycle")):m.type==="terminal"&&(f.addClass("workflow-stage-terminal"),h.addClass("workflow-stage-name-terminal"))})}});let i=t.createDiv();new ar.Setting(i).addButton(n=>{n.setButtonText(c("Add New Workflow")).setCta().onClick(()=>{let o={id:oo(),name:c("New Workflow"),description:"",stages:[],metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};new nl(s.app,s.plugin,o,l=>{s.plugin.settings.workflow.definitions.push(l),s.applySettingsUpdate(),a()}).open()})})};a()}var xt=A(require("obsidian"));Q();function xC(s,e){var t,a,r,i,n,o,l,d;if(new xt.Setting(e).setName(c("Enhanced Project Configuration")).setDesc(c("Configure advanced project detection and management features")).setHeading(),new xt.Setting(e).setName(c("Enable enhanced project features")).setDesc(c("Enable path-based, metadata-based, and config file-based project detection")).addToggle(u=>{var p;u.setValue(((p=s.plugin.settings.projectConfig)==null?void 0:p.enableEnhancedProject)||!1).onChange(async m=>{s.plugin.settings.projectConfig||(s.plugin.settings.projectConfig={enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),s.plugin.settings.projectConfig.enableEnhancedProject=m,s.applySettingsUpdate(),setTimeout(()=>{s.display()},200)})}),(t=s.plugin.settings.projectConfig)==null?void 0:t.enableEnhancedProject){new xt.Setting(e).setName(c("Path-based Project Mappings")).setDesc(c("Configure project names based on file paths")).setHeading();let u=e.createDiv({cls:"project-path-mappings-container"}),p=()=>{var y;u.empty(),s.plugin.settings.projectConfig||(s.plugin.settings.projectConfig={enableEnhancedProject:!1,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),(!s.plugin.settings.projectConfig.pathMappings||!Array.isArray(s.plugin.settings.projectConfig.pathMappings))&&(s.plugin.settings.projectConfig.pathMappings=[]);let g=((y=s.plugin.settings.projectConfig)==null?void 0:y.pathMappings)||[];g.length===0&&u.createDiv({cls:"no-mappings-message",text:c("No path mappings configured yet.")}),g.forEach((w,v)=>{let T=u.createDiv({cls:"project-path-mapping-row"});new xt.Setting(T).setName(`${c("Mapping")} ${v+1}`).addText(x=>{x.setPlaceholder(c("Path pattern (e.g., Projects/Work)")).setValue(w.pathPattern).onChange(async C=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.pathMappings[v].pathPattern=C,await s.plugin.saveSettings())})}).addText(x=>{x.setPlaceholder(c("Project name")).setValue(w.projectName).onChange(async C=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.pathMappings[v].projectName=C,await s.plugin.saveSettings())})}).addToggle(x=>{x.setTooltip(c("Enabled")).setValue(w.enabled).onChange(async C=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.pathMappings[v].enabled=C,await s.plugin.saveSettings())})}).addButton(x=>{x.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.pathMappings.splice(v,1),await s.plugin.saveSettings(),p())})})}),new xt.Setting(u).addButton(w=>{w.setButtonText(c("Add Path Mapping")).setCta().onClick(async()=>{s.plugin.settings.projectConfig||(s.plugin.settings.projectConfig={enableEnhancedProject:!0,pathMappings:[],metadataConfig:{metadataKey:"project",enabled:!1},configFile:{fileName:"project.md",searchRecursively:!0,enabled:!1},metadataMappings:[],defaultProjectNaming:{strategy:"filename",stripExtension:!0,enabled:!1}}),Array.isArray(s.plugin.settings.projectConfig.pathMappings)||(s.plugin.settings.projectConfig.pathMappings=[]),s.plugin.settings.projectConfig.pathMappings.push({pathPattern:"",projectName:"",enabled:!0}),await s.plugin.saveSettings(),setTimeout(()=>{p()},100)})})};p(),new xt.Setting(e).setName(c("Metadata-based Project Configuration")).setDesc(c("Configure project detection from file frontmatter")).setHeading(),new xt.Setting(e).setName(c("Enable metadata project detection")).setDesc(c("Detect project from file frontmatter metadata")).addToggle(g=>{var y,w;g.setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)==null?void 0:w.enabled)||!1).onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.metadataConfig)&&(s.plugin.settings.projectConfig.metadataConfig.enabled=v,await s.plugin.saveSettings())})}),new xt.Setting(e).setName(c("Metadata key")).setDesc(c("The frontmatter key to use for project name")).addText(g=>{var y,w;g.setPlaceholder("project").setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)==null?void 0:w.metadataKey)||"project").onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.metadataConfig)&&(s.plugin.settings.projectConfig.metadataConfig.metadataKey=v||"project",await s.plugin.saveSettings())})}),new xt.Setting(e).setName(c("Custom Project Detection Methods")).setDesc(c("Configure additional methods to detect project files")).setHeading();let m=e.createDiv({cls:"project-detection-methods-container"}),f=()=>{var y,w,v,T,x;m.empty(),((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.metadataConfig)==null?void 0:w.detectionMethods)||((v=s.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)&&(s.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]);let g=((x=(T=s.plugin.settings.projectConfig)==null?void 0:T.metadataConfig)==null?void 0:x.detectionMethods)||[];g.forEach((C,S)=>{let E=m.createDiv({cls:"project-detection-method"});new xt.Setting(E).setName(`${c("Method")} ${S+1}`).addDropdown(P=>{P.addOption("metadata",c("Metadata Property")).addOption("tag",c("Tag")).addOption("link",c("Linked Note")).setValue(C.type).onChange(async I=>{C.type=I,await s.plugin.saveSettings(),f()})}).addText(P=>{let I=C.type==="metadata"||C.type==="tag"?"project":"category";P.setPlaceholder(I).setValue(C.propertyKey).onChange(async L=>{C.propertyKey=L,await s.plugin.saveSettings()})}).addToggle(P=>{P.setValue(C.enabled).onChange(async I=>{C.enabled=I,await s.plugin.saveSettings()})}).addButton(P=>{P.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{g.splice(S,1),await s.plugin.saveSettings(),f()})}),C.type==="link"&&new xt.Setting(E).setName(c("Link Filter")).setDesc(c("Optional: Only match links containing this text")).addText(P=>{P.setPlaceholder("Projects/").setValue(C.linkFilter||"").onChange(async I=>{C.linkFilter=I,await s.plugin.saveSettings()})})}),new xt.Setting(m).addButton(C=>{C.setButtonText(c("Add Detection Method")).setCta().onClick(async()=>{var S,E,P,I,L,W;((E=(S=s.plugin.settings.projectConfig)==null?void 0:S.metadataConfig)==null?void 0:E.detectionMethods)||((P=s.plugin.settings.projectConfig)==null?void 0:P.metadataConfig)&&(s.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]),(W=(L=(I=s.plugin.settings.projectConfig)==null?void 0:I.metadataConfig)==null?void 0:L.detectionMethods)==null||W.push({type:"metadata",propertyKey:"",enabled:!1}),await s.plugin.saveSettings(),f()})})};f(),new xt.Setting(e).setName(c("Project Configuration File")).setDesc(c("Configure project detection from project config files")).setHeading(),new xt.Setting(e).setName(c("Enable config file project detection")).setDesc(c("Detect project from project configuration files")).addToggle(g=>{var y,w;g.setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.configFile)==null?void 0:w.enabled)||!1).onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.configFile)&&(s.plugin.settings.projectConfig.configFile.enabled=v,await s.plugin.saveSettings())})}),new xt.Setting(e).setName(c("Config file name")).setDesc(c("Name of the project configuration file")).addText(g=>{var y,w;g.setPlaceholder("project.md").setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.configFile)==null?void 0:w.fileName)||"project.md").onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.configFile)&&(s.plugin.settings.projectConfig.configFile.fileName=v||"project.md",await s.plugin.saveSettings())})}),new xt.Setting(e).setName(c("Search recursively")).setDesc(c("Search for config files in parent directories")).addToggle(g=>{var y,w,v;g.setValue((v=(w=(y=s.plugin.settings.projectConfig)==null?void 0:y.configFile)==null?void 0:w.searchRecursively)!=null?v:!1).onChange(async T=>{var x;((x=s.plugin.settings.projectConfig)==null?void 0:x.configFile)&&(s.plugin.settings.projectConfig.configFile.searchRecursively=T,await s.plugin.saveSettings())})}),new xt.Setting(e).setName(c("Metadata Mappings")).setDesc(c("Configure how metadata fields are mapped and transformed")).setHeading();let h=e.createDiv({cls:"project-metadata-mappings-container"}),k=()=>{var y,w;h.empty(),(!((y=s.plugin.settings.projectConfig)==null?void 0:y.metadataMappings)||!Array.isArray(s.plugin.settings.projectConfig.metadataMappings))&&s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.metadataMappings=[]);let g=((w=s.plugin.settings.projectConfig)==null?void 0:w.metadataMappings)||[];g.length===0&&h.createDiv({cls:"no-mappings-message",text:c("No metadata mappings configured yet.")}),g.forEach((v,T)=>{let x=h.createDiv({cls:"project-metadata-mapping-row"}),C=new Set(g.filter((E,P)=>P!==T).map(E=>E.targetKey).filter(E=>E&&E.trim()!=="")),S=["project","context","priority","tags","startDate","scheduledDate","dueDate","completedDate","createdDate","recurrence"].filter(E=>!C.has(E)||E===v.targetKey);new xt.Setting(x).setName(`${c("Mapping")} ${T+1}`).addText(E=>{E.setPlaceholder(c("Source key (e.g., proj)")).setValue(v.sourceKey).onChange(async P=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.metadataMappings[T].sourceKey=P,await s.plugin.saveSettings())})}).addDropdown(E=>{E.addOption("",c("Select target field")),S.forEach(P=>{E.addOption(P,P)}),E.setValue(v.targetKey).onChange(async P=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.metadataMappings[T].targetKey=P,await s.plugin.saveSettings(),k())})}).addToggle(E=>{E.setTooltip(c("Enabled")).setValue(v.enabled).onChange(async P=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.metadataMappings[T].enabled=P,await s.plugin.saveSettings())})}).addButton(E=>{E.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{s.plugin.settings.projectConfig&&(s.plugin.settings.projectConfig.metadataMappings.splice(T,1),await s.plugin.saveSettings(),k())})})}),new xt.Setting(h).addButton(v=>{v.setButtonText(c("Add Metadata Mapping")).setCta().onClick(async()=>{s.plugin.settings.projectConfig&&(Array.isArray(s.plugin.settings.projectConfig.metadataMappings)||(s.plugin.settings.projectConfig.metadataMappings=[]),s.plugin.settings.projectConfig.metadataMappings.push({sourceKey:"",targetKey:"",enabled:!0}),await s.plugin.saveSettings(),setTimeout(()=>{k()},100))})})};k(),new xt.Setting(e).setName(c("Default Project Naming")).setDesc(c("Configure fallback project naming when no explicit project is found")).setHeading(),new xt.Setting(e).setName(c("Enable default project naming")).setDesc(c("Use default naming strategy when no project is explicitly defined")).addToggle(g=>{var y,w;g.setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:w.enabled)||!1).onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.defaultProjectNaming)&&(s.plugin.settings.projectConfig.defaultProjectNaming.enabled=v,await s.plugin.saveSettings(),setTimeout(()=>{s.display()},200))})}),((a=s.plugin.settings.projectConfig)==null?void 0:a.defaultProjectNaming)||(s.plugin.settings.projectConfig.defaultProjectNaming={strategy:"filename",stripExtension:!0,enabled:!1}),new xt.Setting(e).setName(c("Naming strategy")).setDesc(c("Strategy for generating default project names")).addDropdown(g=>{var y,w;g.addOption("filename",c("Use filename")).addOption("foldername",c("Use folder name")).addOption("metadata",c("Use metadata field")).setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:w.strategy)||"filename").onChange(async v=>{var T,x;((T=s.plugin.settings.projectConfig)==null?void 0:T.defaultProjectNaming)||(s.plugin.settings.projectConfig.defaultProjectNaming={strategy:"filename",stripExtension:!0,enabled:!1}),((x=s.plugin.settings.projectConfig)==null?void 0:x.defaultProjectNaming)&&(s.plugin.settings.projectConfig.defaultProjectNaming.strategy=v,await s.plugin.saveSettings(),setTimeout(()=>{s.display()},200))})}),(i=(r=s.plugin.settings.projectConfig)==null?void 0:r.defaultProjectNaming)==null||i.strategy,((o=(n=s.plugin.settings.projectConfig)==null?void 0:n.defaultProjectNaming)==null?void 0:o.strategy)==="metadata"&&new xt.Setting(e).setName(c("Metadata key")).setDesc(c("Metadata field to use as project name")).addText(g=>{var y,w;g.setPlaceholder(c("Enter metadata key (e.g., project-name)")).setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:w.metadataKey)||"").onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.defaultProjectNaming)&&(s.plugin.settings.projectConfig.defaultProjectNaming.metadataKey=v,await s.plugin.saveSettings())})}),((d=(l=s.plugin.settings.projectConfig)==null?void 0:l.defaultProjectNaming)==null?void 0:d.strategy)==="filename"&&new xt.Setting(e).setName(c("Strip file extension")).setDesc(c("Remove file extension from filename when using as project name")).addToggle(g=>{var y,w;g.setValue(((w=(y=s.plugin.settings.projectConfig)==null?void 0:y.defaultProjectNaming)==null?void 0:w.stripExtension)||!0).onChange(async v=>{var T;((T=s.plugin.settings.projectConfig)==null?void 0:T.defaultProjectNaming)&&(s.plugin.settings.projectConfig.defaultProjectNaming.stripExtension=v,await s.plugin.saveSettings())})})}}var ol=A(require("obsidian"));Q();function SC(s,e){new ol.Setting(e).setName(c("Priority Picker Settings")).setDesc(c("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).setHeading(),new ol.Setting(e).setName(c("Enable priority picker")).setDesc(c("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).addToggle(t=>t.setValue(s.plugin.settings.enablePriorityPicker).onChange(async a=>{s.plugin.settings.enablePriorityPicker=a,s.applySettingsUpdate()})),new ol.Setting(e).setName(c("Enable priority keyboard shortcuts")).setDesc(c("Toggle to enable keyboard shortcuts for setting task priorities.")).addToggle(t=>t.setValue(s.plugin.settings.enablePriorityKeyboardShortcuts).onChange(async a=>{s.plugin.settings.enablePriorityKeyboardShortcuts=a,s.applySettingsUpdate()})),new ol.Setting(e).setName(c("Date picker")).setHeading(),new ol.Setting(e).setName(c("Enable date picker")).setDesc(c("Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.")).addToggle(t=>t.setValue(s.plugin.settings.enableDatePicker).onChange(async a=>{s.plugin.settings.enableDatePicker=a,s.applySettingsUpdate()})),new ol.Setting(e).setName(c("Recurrence date calculation")).setDesc(c("Choose how to calculate the next date for recurring tasks")).addDropdown(t=>t.addOption("due",c("Based on due date")).addOption("scheduled",c("Based on scheduled date")).addOption("current",c("Based on current date")).setValue(s.plugin.settings.recurrenceDateBase||"due").onChange(async a=>{s.plugin.settings.recurrenceDateBase=a,s.applySettingsUpdate()}))}var Ii=A(require("obsidian"));Q();function EC(s,e){new Ii.Setting(e).setName(c("Timeline Sidebar")).setHeading(),new Ii.Setting(e).setName(c("Enable Timeline Sidebar")).setDesc(c("Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.")).addToggle(t=>t.setValue(s.plugin.settings.timelineSidebar.enableTimelineSidebar).onChange(async a=>{s.plugin.settings.timelineSidebar.enableTimelineSidebar=a,s.applySettingsUpdate(),setTimeout(()=>{s.display(),a&&s.plugin.activateTimelineSidebarView()},200)})),!!s.plugin.settings.timelineSidebar.enableTimelineSidebar&&(new Ii.Setting(e).setName(c("Auto-open on startup")).setDesc(c("Automatically open the timeline sidebar when Obsidian starts.")).addToggle(t=>t.setValue(s.plugin.settings.timelineSidebar.autoOpenOnStartup).onChange(async a=>{s.plugin.settings.timelineSidebar.autoOpenOnStartup=a,s.applySettingsUpdate()})),new Ii.Setting(e).setName(c("Show completed tasks")).setDesc(c("Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.")).addToggle(t=>t.setValue(s.plugin.settings.timelineSidebar.showCompletedTasks).onChange(async a=>{s.plugin.settings.timelineSidebar.showCompletedTasks=a,s.applySettingsUpdate()})),new Ii.Setting(e).setName(c("Focus mode by default")).setDesc(c("Enable focus mode by default, which highlights today's events and dims past/future events.")).addToggle(t=>t.setValue(s.plugin.settings.timelineSidebar.focusModeByDefault).onChange(async a=>{s.plugin.settings.timelineSidebar.focusModeByDefault=a,s.applySettingsUpdate()})),new Ii.Setting(e).setName(c("Maximum events to show")).setDesc(c("Maximum number of events to display in the timeline. Higher numbers may affect performance.")).addSlider(t=>t.setLimits(50,500,25).setValue(s.plugin.settings.timelineSidebar.maxEventsToShow).setDynamicTooltip().onChange(async a=>{s.plugin.settings.timelineSidebar.maxEventsToShow=a,s.applySettingsUpdate()})),new Ii.Setting(e).setName(c("Open Timeline Sidebar")).setDesc(c("Click to open the timeline sidebar view.")).addButton(t=>t.setButtonText(c("Open Timeline")).setCta().onClick(async()=>{await s.plugin.activateTimelineSidebarView(),new Ii.Notice(c("Timeline sidebar opened"))})))}var Zs=A(require("obsidian"));Q();hs();function w3(s,e){if(new Zs.Setting(e).setName(c("File Filter")).setHeading(),new Zs.Setting(e).setName(c("Enable File Filter")).setDesc(c("Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.")).addToggle(p=>p.setValue(s.plugin.settings.fileFilter.enabled).onChange(async m=>{var f;s.plugin.settings.fileFilter.enabled=m,await s.plugin.saveSettings(),(f=s.plugin.taskManager)==null||f.updateFileFilterConfiguration(),o(),setTimeout(()=>{s.display()},100)})),!s.plugin.settings.fileFilter.enabled)return;new Zs.Setting(e).setName(c("File Filter Mode")).setDesc(c("Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)")).addDropdown(p=>p.addOption(gi.WHITELIST,c("Whitelist (Include only)")).addOption(gi.BLACKLIST,c("Blacklist (Exclude)")).setValue(s.plugin.settings.fileFilter.mode).onChange(async m=>{var f;s.plugin.settings.fileFilter.mode=m,await s.plugin.saveSettings(),(f=s.plugin.taskManager)==null||f.updateFileFilterConfiguration(),o()})),new Zs.Setting(e).setName(c("File Filter Rules")).setDesc(c("Configure which files and folders to include or exclude from task indexing"));let t=e.createDiv({cls:"file-filter-rules-container"}),a=()=>{t.empty(),s.plugin.settings.fileFilter.rules.forEach((p,m)=>{let f=t.createDiv({cls:"file-filter-rule"}),h=f.createDiv({cls:"file-filter-rule-type"});h.createEl("label",{text:c("Type:")}),new Zs.DropdownComponent(h).addOption("file",c("File")).addOption("folder",c("Folder")).addOption("pattern",c("Pattern")).setValue(p.type).onChange(async T=>{var x;p.type=T,await s.plugin.saveSettings(),(x=s.plugin.taskManager)==null||x.updateFileFilterConfiguration(),o(),a()});let k=f.createDiv({cls:"file-filter-rule-path"});k.createEl("label",{text:c("Path:")});let g=k.createEl("input",{type:"text",value:p.path,placeholder:p.type==="pattern"?"*.tmp, temp/*":p.type==="folder"?"path/to/folder":"path/to/file.md"});p.type==="folder"?new vv(s.app,g,s.plugin,"single"):p.type==="file"&&new Tv(g,s.plugin,T=>{var x;p.path=T.path,g.value=T.path,s.plugin.saveSettings(),(x=s.plugin.taskManager)==null||x.updateFileFilterConfiguration(),o()}),g.addEventListener("input",async()=>{var T;p.path=g.value,await s.plugin.saveSettings(),(T=s.plugin.taskManager)==null||T.updateFileFilterConfiguration(),o()});let y=f.createDiv({cls:"file-filter-rule-enabled"});y.createEl("label",{text:c("Enabled:")});let w=y.createEl("input",{type:"checkbox"});w.checked=p.enabled,w.addEventListener("change",async()=>{var T;p.enabled=w.checked,await s.plugin.saveSettings(),(T=s.plugin.taskManager)==null||T.updateFileFilterConfiguration(),o()});let v=f.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,Zs.setIcon)(v,"trash"),v.title=c("Delete rule"),v.addEventListener("click",async()=>{var T;s.plugin.settings.fileFilter.rules.splice(m,1),await s.plugin.saveSettings(),(T=s.plugin.taskManager)==null||T.updateFileFilterConfiguration(),a(),o()})})},r=e.createDiv({cls:"file-filter-add-rule"});new Zs.Setting(r).setName(c("Add Filter Rule")).addButton(p=>p.setButtonText(c("Add File Rule")).onClick(async()=>{var f;let m={type:"file",path:"",enabled:!0};s.plugin.settings.fileFilter.rules.push(m),await s.plugin.saveSettings(),(f=s.plugin.taskManager)==null||f.updateFileFilterConfiguration(),a(),o()})).addButton(p=>p.setButtonText(c("Add Folder Rule")).onClick(async()=>{var f;let m={type:"folder",path:"",enabled:!0};s.plugin.settings.fileFilter.rules.push(m),await s.plugin.saveSettings(),(f=s.plugin.taskManager)==null||f.updateFileFilterConfiguration(),a(),o()})).addButton(p=>p.setButtonText(c("Add Pattern Rule")).onClick(async()=>{var f;let m={type:"pattern",path:"",enabled:!0};s.plugin.settings.fileFilter.rules.push(m),await s.plugin.saveSettings(),(f=s.plugin.taskManager)==null||f.updateFileFilterConfiguration(),a(),o()})),new Zs.Setting(e).setName(c("Refresh Statistics")).setDesc(c("Manually refresh filter statistics to see current data")).addButton(p=>p.setButtonText(c("Refresh")).onClick(()=>{p.setDisabled(!0),p.setButtonText(c("Refreshing...")),setTimeout(()=>{l(),p.setDisabled(!1),p.setButtonText(c("Refresh"))},100)}));let i=e.createDiv({cls:"file-filter-stats"}),n=null,o=()=>{n&&clearTimeout(n),n=setTimeout(()=>{l()},200)},l=()=>{var p,m;try{let f=(m=(p=s.plugin.taskManager)==null?void 0:p.getFileFilterManager)==null?void 0:m.call(p);if(f){let h=f.getStats();i.empty();let k=i.createDiv({cls:"file-filter-stat"});k.createEl("span",{cls:"stat-label",text:`${c("Active Rules")}:`}),k.createEl("span",{cls:"stat-value",text:h.rulesCount.toString()});let g=i.createDiv({cls:"file-filter-stat"});g.createEl("span",{cls:"stat-label",text:`${c("Cache Size")}:`}),g.createEl("span",{cls:"stat-value",text:h.cacheSize.toString()});let y=i.createDiv({cls:"file-filter-stat"});y.createEl("span",{cls:"stat-label",text:`${c("Status")}:`}),y.createEl("span",{cls:"stat-value",text:h.enabled?c("Enabled"):c("Disabled")})}else i.empty(),i.createDiv({cls:"file-filter-stat"}).createEl("span",{cls:"stat-label",text:c("No filter data available")})}catch(f){console.error("Error updating filter statistics:",f),i.empty(),i.createDiv({cls:"file-filter-stat error"}).createEl("span",{cls:"stat-label",text:c("Error loading statistics")})}};a(),l();let d=setInterval(l,5e3),u=new MutationObserver(p=>{p.forEach(m=>{m.removedNodes.forEach(f=>{var h;(f===e||((h=f==null?void 0:f.contains)==null?void 0:h.call(f,e)))&&(clearInterval(d),u.disconnect())})})});e.parentNode&&u.observe(e.parentNode,{childList:!0,subtree:!0})}var Gc=A(require("obsidian"));Q();function v3(s,e){e.createEl("h2",{text:c("Time Parsing Settings")}),new Gc.Setting(e).setName(c("Enable Time Parsing")).setDesc(c("Automatically parse natural language time expressions in Quick Capture")).addToggle(r=>{var i,n;return r.setValue((n=(i=s.plugin.settings.timeParsing)==null?void 0:i.enabled)!=null?n:!0).onChange(async o=>{s.plugin.settings.timeParsing?s.plugin.settings.timeParsing.enabled=o:s.plugin.settings.timeParsing={enabled:o,supportedLanguages:["en","zh"],dateKeywords:{start:["start","begin","from","\u5F00\u59CB","\u4ECE"],due:["due","deadline","by","until","\u622A\u6B62","\u5230\u671F","\u4E4B\u524D"],scheduled:["scheduled","on","at","\u5B89\u6392","\u8BA1\u5212","\u5728"]},removeOriginalText:!0,perLineProcessing:!0,realTimeReplacement:!0},s.applySettingsUpdate()})}),new Gc.Setting(e).setName(c("Remove Original Time Expressions")).setDesc(c("Remove parsed time expressions from the task text")).addToggle(r=>{var i,n;return r.setValue((n=(i=s.plugin.settings.timeParsing)==null?void 0:i.removeOriginalText)!=null?n:!0).onChange(async o=>{!s.plugin.settings.timeParsing||(s.plugin.settings.timeParsing.removeOriginalText=o,s.applySettingsUpdate())})}),e.createEl("h3",{text:c("Supported Languages")}),e.createEl("p",{text:c("Currently supports English and Chinese time expressions. More languages may be added in future updates."),cls:"setting-item-description"}),e.createEl("h3",{text:c("Date Keywords Configuration")}),new Gc.Setting(e).setName(c("Start Date Keywords")).setDesc(c("Keywords that indicate start dates (comma-separated)")).addTextArea(r=>{var n,o;let i=((o=(n=s.plugin.settings.timeParsing)==null?void 0:n.dateKeywords)==null?void 0:o.start)||[];r.setValue(i.join(", ")).setPlaceholder("start, begin, from, \u5F00\u59CB, \u4ECE").onChange(async l=>{!s.plugin.settings.timeParsing||(s.plugin.settings.timeParsing.dateKeywords.start=l.split(",").map(d=>d.trim()).filter(d=>d.length>0),s.applySettingsUpdate())}),r.inputEl.rows=2}),new Gc.Setting(e).setName(c("Due Date Keywords")).setDesc(c("Keywords that indicate due dates (comma-separated)")).addTextArea(r=>{var n,o;let i=((o=(n=s.plugin.settings.timeParsing)==null?void 0:n.dateKeywords)==null?void 0:o.due)||[];r.setValue(i.join(", ")).setPlaceholder("due, deadline, by, until, \u622A\u6B62, \u5230\u671F, \u4E4B\u524D").onChange(async l=>{!s.plugin.settings.timeParsing||(s.plugin.settings.timeParsing.dateKeywords.due=l.split(",").map(d=>d.trim()).filter(d=>d.length>0),s.applySettingsUpdate())}),r.inputEl.rows=2}),new Gc.Setting(e).setName(c("Scheduled Date Keywords")).setDesc(c("Keywords that indicate scheduled dates (comma-separated)")).addTextArea(r=>{var n,o;let i=((o=(n=s.plugin.settings.timeParsing)==null?void 0:n.dateKeywords)==null?void 0:o.scheduled)||[];r.setValue(i.join(", ")).setPlaceholder("scheduled, on, at, \u5B89\u6392, \u8BA1\u5212, \u5728").onChange(async l=>{!s.plugin.settings.timeParsing||(s.plugin.settings.timeParsing.dateKeywords.scheduled=l.split(",").map(d=>d.trim()).filter(d=>d.length>0),s.applySettingsUpdate())}),r.inputEl.rows=2}),e.createEl("h3",{text:c("Examples")});let t=e.createEl("div",{cls:"time-parsing-examples"});[{input:"go to bed tomorrow",output:"go to bed \u{1F4C5} 2025-01-05"},{input:"meeting next week",output:"meeting \u{1F4C5} 2025-01-11"},{input:"project due by Friday",output:"project \u{1F4C5} 2025-01-04"},{input:"\u660E\u5929\u5F00\u4F1A",output:"\u5F00\u4F1A \u{1F4C5} 2025-01-05"},{input:"3\u5929\u540E\u5B8C\u6210",output:"\u5B8C\u6210 \u{1F4C5} 2025-01-07"}].forEach(r=>{let i=t.createEl("div",{cls:"time-parsing-example"});i.createEl("span",{text:"Input: ",cls:"example-label"}),i.createEl("code",{text:r.input,cls:"example-input"}),i.createEl("br"),i.createEl("span",{text:"Output: ",cls:"example-label"}),i.createEl("code",{text:r.output,cls:"example-output"})})}var Ou=A(require("obsidian"));var T3=A(require("obsidian"));var b3=[{id:"progress-bar-main",tabId:"progress-bar",name:"Progress bar",description:"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.",keywords:["progress","bar","parent","task","customize"],translationKey:"Progress bar",descriptionKey:"You can customize the progress bar behind the parent task(usually at the end of the task). You can also customize the progress bar for the task below the heading.",category:"display"},{id:"progress-display-mode",tabId:"progress-bar",name:"Progress display mode",description:"Choose how to display task progress",keywords:["progress","display","mode","choose","task"],translationKey:"Progress display mode",descriptionKey:"Choose how to display task progress",category:"display"},{id:"progress-reading-mode",tabId:"progress-bar",name:"Enable progress bar in reading mode",description:"Toggle this to allow this plugin to show progress bars in reading mode.",keywords:["progress","bar","reading","mode","enable","show"],translationKey:"Enable progress bar in reading mode",descriptionKey:"Toggle this to allow this plugin to show progress bars in reading mode.",category:"display"},{id:"progress-hover-info",tabId:"progress-bar",name:"Support hover to show progress info",description:"Toggle this to allow this plugin to show progress info when hovering over the progress bar.",keywords:["hover","progress","info","show","support"],translationKey:"Support hover to show progress info",descriptionKey:"Toggle this to allow this plugin to show progress info when hovering over the progress bar.",category:"display"},{id:"progress-non-task-bullet",tabId:"progress-bar",name:"Add progress bar to non-task bullet",description:"Toggle this to allow adding progress bars to regular list items (non-task bullets).",keywords:["progress","bar","non-task","bullet","list","items"],translationKey:"Add progress bar to non-task bullet",descriptionKey:"Toggle this to allow adding progress bars to regular list items (non-task bullets).",category:"display"},{id:"progress-heading",tabId:"progress-bar",name:"Add progress bar to Heading",description:"Toggle this to allow this plugin to add progress bar for Task below the headings.",keywords:["progress","bar","heading","task","below"],translationKey:"Add progress bar to Heading",descriptionKey:"Toggle this to allow this plugin to add progress bar for Task below the headings.",category:"display"},{id:"progress-sub-children",tabId:"progress-bar",name:"Count sub children of current Task",description:"Toggle this to allow this plugin to count sub tasks when generating progress bar.",keywords:["count","sub","children","task","sub-tasks"],translationKey:"Count sub children of current Task",descriptionKey:"Toggle this to allow this plugin to count sub tasks when generating progress bar.",category:"display"},{id:"progress-custom-goal",tabId:"progress-bar",name:"Use custom goal for progress bar",description:"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.",keywords:["custom","goal","progress","bar","pattern","number"],translationKey:"Use custom goal for progress bar",descriptionKey:"Toggle this to allow this plugin to find the pattern g::number as goal of the parent task.",category:"display"},{id:"progress-format",tabId:"progress-bar",name:"Progress format",description:"Choose how to display the task progress",keywords:["progress","format","display","task"],translationKey:"Progress format",descriptionKey:"Choose how to display the task progress",category:"display"},{id:"hide-progress-bars",tabId:"progress-bar",name:"Hide progress bars",keywords:["hide","progress","bars"],translationKey:"Hide progress bars",category:"display"},{id:"hide-progress-conditions",tabId:"progress-bar",name:"Hide progress bars based on conditions",description:"Toggle this to enable hiding progress bars based on tags, folders, or metadata.",keywords:["hide","progress","bars","conditions","tags","folders","metadata"],translationKey:"Hide progress bars based on conditions",descriptionKey:"Toggle this to enable hiding progress bars based on tags, folders, or metadata.",category:"display"},{id:"checkbox-status-settings",tabId:"task-status",name:"Checkbox Status Settings",description:"Configure checkbox status settings",keywords:["checkbox","status","settings","configure"],translationKey:"Checkbox Status Settings",descriptionKey:"Configure checkbox status settings",category:"display"},{id:"file-metadata-inheritance",tabId:"task-status",name:"File Metadata Inheritance",description:"Configure how tasks inherit metadata from file frontmatter",keywords:["file","metadata","inheritance","tasks","frontmatter"],translationKey:"File Metadata Inheritance",descriptionKey:"Configure how tasks inherit metadata from file frontmatter",category:"display"},{id:"enable-metadata-inheritance",tabId:"task-status",name:"Enable file metadata inheritance",description:"Allow tasks to inherit metadata properties from their file's frontmatter",keywords:["enable","file","metadata","inheritance","properties"],translationKey:"Enable file metadata inheritance",descriptionKey:"Allow tasks to inherit metadata properties from their file's frontmatter",category:"display"},{id:"auto-complete-parent",tabId:"task-status",name:"Auto complete parent checkbox",description:"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.",keywords:["auto","complete","parent","checkbox","child","tasks"],translationKey:"Auto complete parent checkbox",descriptionKey:"Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.",category:"display"},{id:"parent-in-progress",tabId:"task-status",name:"Mark parent as 'In Progress' when partially complete",description:"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.",keywords:["parent","in progress","partially","complete","child","tasks"],translationKey:"Mark parent as 'In Progress' when partially complete",descriptionKey:"When some but not all child tasks are completed, mark the parent checkbox as 'In Progress'. Only works when 'Auto complete parent' is enabled.",category:"display"},{id:"completed-chars",tabId:"task-status",name:"Completed",description:'Characters in square brackets that represent completed tasks. Example: "x|X"',keywords:["completed","characters","square","brackets","tasks"],translationKey:"Completed",descriptionKey:'Characters in square brackets that represent completed tasks. Example: "x|X"',category:"display"},{id:"planned-chars",tabId:"task-status",name:"Planned",description:'Characters in square brackets that represent planned tasks. Example: "?"',keywords:["planned","characters","square","brackets","tasks"],translationKey:"Planned",descriptionKey:'Characters in square brackets that represent planned tasks. Example: "?"',category:"display"},{id:"in-progress-chars",tabId:"task-status",name:"In Progress",description:'Characters in square brackets that represent tasks in progress. Example: ">|/"',keywords:["in progress","characters","square","brackets","tasks"],translationKey:"In Progress",descriptionKey:'Characters in square brackets that represent tasks in progress. Example: ">|/"',category:"display"},{id:"abandoned-chars",tabId:"task-status",name:"Abandoned",description:'Characters in square brackets that represent abandoned tasks. Example: "-"',keywords:["abandoned","characters","square","brackets","tasks"],translationKey:"Abandoned",descriptionKey:'Characters in square brackets that represent abandoned tasks. Example: "-"',category:"display"},{id:"not-started-chars",tabId:"task-status",name:"Not Started",description:'Characters in square brackets that represent not started tasks. Default is space " "',keywords:["not started","characters","square","brackets","tasks","space"],translationKey:"Not Started",descriptionKey:'Characters in square brackets that represent not started tasks. Default is space " "',category:"display"},{id:"priority-picker-settings",tabId:"date-priority",name:"Priority Picker Settings",description:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",keywords:["priority","picker","settings","dropdown","emoji","letter"],translationKey:"Priority Picker Settings",descriptionKey:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",category:"workflow"},{id:"enable-priority-picker",tabId:"date-priority",name:"Enable priority picker",description:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",keywords:["enable","priority","picker","dropdown","emoji","letter"],translationKey:"Enable priority picker",descriptionKey:"Toggle to enable priority picker dropdown for emoji and letter format priorities.",category:"workflow"},{id:"enable-priority-shortcuts",tabId:"date-priority",name:"Enable priority keyboard shortcuts",description:"Toggle to enable keyboard shortcuts for setting task priorities.",keywords:["enable","priority","keyboard","shortcuts","task"],translationKey:"Enable priority keyboard shortcuts",descriptionKey:"Toggle to enable keyboard shortcuts for setting task priorities.",category:"workflow"},{id:"date-picker",tabId:"date-priority",name:"Date picker",keywords:["date","picker"],translationKey:"Date picker",category:"workflow"},{id:"enable-date-picker",tabId:"date-priority",name:"Enable date picker",description:"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.",keywords:["enable","date","picker","tasks","calendar","icon"],translationKey:"Enable date picker",descriptionKey:"Toggle this to enable date picker for tasks. This will add a calendar icon near your tasks which you can click to select a date.",category:"workflow"},{id:"recurrence-calculation",tabId:"date-priority",name:"Recurrence date calculation",description:"Choose how to calculate the next date for recurring tasks",keywords:["recurrence","date","calculation","recurring","tasks"],translationKey:"Recurrence date calculation",descriptionKey:"Choose how to calculate the next date for recurring tasks",category:"workflow"},{id:"task-filter",tabId:"task-filter",name:"Task Filter",keywords:["task","filter"],translationKey:"Task Filter",category:"management"},{id:"enable-task-filter",tabId:"task-filter",name:"Enable Task Filter",description:"Toggle this to enable the task filter panel",keywords:["enable","task","filter","panel"],translationKey:"Enable Task Filter",descriptionKey:"Toggle this to enable the task filter panel",category:"management"},{id:"preset-filters",tabId:"task-filter",name:"Preset Filters",description:"Create and manage preset filters for quick access to commonly used task filters.",keywords:["preset","filters","create","manage","quick","access"],translationKey:"Preset Filters",descriptionKey:"Create and manage preset filters for quick access to commonly used task filters.",category:"management"},{id:"file-filter",tabId:"file-filter",name:"File Filter",keywords:["file","filter"],translationKey:"File Filter",category:"core"},{id:"enable-file-filter",tabId:"file-filter",name:"Enable File Filter",description:"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.",keywords:["enable","file","filter","folder","indexing","performance"],translationKey:"Enable File Filter",descriptionKey:"Toggle this to enable file and folder filtering during task indexing. This can significantly improve performance for large vaults.",category:"core"},{id:"file-filter-mode",tabId:"file-filter",name:"File Filter Mode",description:"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)",keywords:["file","filter","mode","whitelist","blacklist","include","exclude"],translationKey:"File Filter Mode",descriptionKey:"Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)",category:"core"},{id:"file-filter-rules",tabId:"file-filter",name:"File Filter Rules",description:"Configure which files and folders to include or exclude from task indexing",keywords:["file","filter","rules","configure","folders","indexing"],translationKey:"File Filter Rules",descriptionKey:"Configure which files and folders to include or exclude from task indexing",category:"core"},{id:"task-gutter",tabId:"task-handler",name:"Task Gutter",description:"Configure the task gutter.",keywords:["task","gutter","configure"],translationKey:"Task Gutter",descriptionKey:"Configure the task gutter.",category:"management"},{id:"enable-task-gutter",tabId:"task-handler",name:"Enable task gutter",description:"Toggle this to enable the task gutter.",keywords:["enable","task","gutter"],translationKey:"Enable task gutter",descriptionKey:"Toggle this to enable the task gutter.",category:"management"},{id:"completed-task-mover",tabId:"task-handler",name:"Completed Task Mover",keywords:["completed","task","mover"],translationKey:"Completed Task Mover",category:"management"},{id:"enable-completed-mover",tabId:"task-handler",name:"Enable completed task mover",description:"Toggle this to enable commands for moving completed tasks to another file.",keywords:["enable","completed","task","mover","commands","moving"],translationKey:"Enable completed task mover",descriptionKey:"Toggle this to enable commands for moving completed tasks to another file.",category:"management"},{id:"task-sorting",tabId:"task-handler",name:"Task Sorting",description:"Configure how tasks are sorted in the document.",keywords:["task","sorting","configure","document"],translationKey:"Task Sorting",descriptionKey:"Configure how tasks are sorted in the document.",category:"management"},{id:"enable-task-sorting",tabId:"task-handler",name:"Enable Task Sorting",description:"Toggle this to enable commands for sorting tasks.",keywords:["enable","task","sorting","commands"],translationKey:"Enable Task Sorting",descriptionKey:"Toggle this to enable commands for sorting tasks.",category:"management"},{id:"workflow",tabId:"workflow",name:"Workflow",description:"Configure task workflows for project and process management",keywords:["workflow","configure","task","project","process","management"],translationKey:"Workflow",descriptionKey:"Configure task workflows for project and process management",category:"workflow"},{id:"enable-workflow",tabId:"workflow",name:"Enable workflow",description:"Toggle to enable the workflow system for tasks",keywords:["enable","workflow","system","tasks"],translationKey:"Enable workflow",descriptionKey:"Toggle to enable the workflow system for tasks",category:"workflow"},{id:"auto-add-timestamp",tabId:"workflow",name:"Auto-add timestamp",description:"Automatically add a timestamp to the task when it is created",keywords:["auto","add","timestamp","task","created"],translationKey:"Auto-add timestamp",descriptionKey:"Automatically add a timestamp to the task when it is created",category:"workflow"},{id:"auto-remove-stage-marker",tabId:"workflow",name:"Auto remove last stage marker",description:"Automatically remove the last stage marker when a task is completed",keywords:["auto","remove","stage","marker","task","completed"],translationKey:"Auto remove last stage marker",descriptionKey:"Automatically remove the last stage marker when a task is completed",category:"workflow"},{id:"auto-add-next-task",tabId:"workflow",name:"Auto-add next task",description:"Automatically create a new task with the next stage when completing a task",keywords:["auto","add","next","task","create","stage","completing"],translationKey:"Auto-add next task",descriptionKey:"Automatically create a new task with the next stage when completing a task",category:"workflow"},{id:"quick-capture",tabId:"quick-capture",name:"Quick capture",keywords:["quick","capture"],translationKey:"Quick capture",category:"workflow"},{id:"enable-quick-capture",tabId:"quick-capture",name:"Enable quick capture",description:"Toggle this to enable Org-mode style quick capture panel.",keywords:["enable","quick","capture","org-mode","panel"],translationKey:"Enable quick capture",descriptionKey:"Toggle this to enable Org-mode style quick capture panel.",category:"workflow"},{id:"capture-target-type",tabId:"quick-capture",name:"Target type",description:"Choose whether to capture to a fixed file or daily note",keywords:["target","type","capture","fixed","file","daily","note"],translationKey:"Target type",descriptionKey:"Choose whether to capture to a fixed file or daily note",category:"workflow"},{id:"capture-target-file",tabId:"quick-capture",name:"Target file",description:"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}",keywords:["target","file","captured","text","saved","path","templates"],translationKey:"Target file",descriptionKey:"The file where captured text will be saved. You can include a path, e.g., 'folder/Quick Capture.md'. Supports date templates like {{DATE:YYYY-MM-DD}} or {{date:YYYY-MM-DD-HHmm}}",category:"workflow"},{id:"minimal-mode",tabId:"quick-capture",name:"Minimal Mode",keywords:["minimal","mode"],translationKey:"Minimal Mode",category:"workflow"},{id:"enable-minimal-mode",tabId:"quick-capture",name:"Enable minimal mode",description:"Enable simplified single-line quick capture with inline suggestions",keywords:["enable","minimal","mode","simplified","single-line","suggestions"],translationKey:"Enable minimal mode",descriptionKey:"Enable simplified single-line quick capture with inline suggestions",category:"workflow"},{id:"time-parsing-settings",tabId:"time-parsing",name:"Time Parsing Settings",keywords:["time","parsing","settings"],translationKey:"Time Parsing Settings",category:"workflow"},{id:"enable-time-parsing",tabId:"time-parsing",name:"Enable Time Parsing",description:"Automatically parse natural language time expressions in Quick Capture",keywords:["enable","time","parsing","natural","language","expressions","quick","capture"],translationKey:"Enable Time Parsing",descriptionKey:"Automatically parse natural language time expressions in Quick Capture",category:"workflow"},{id:"remove-time-expressions",tabId:"time-parsing",name:"Remove Original Time Expressions",description:"Remove parsed time expressions from the task text",keywords:["remove","original","time","expressions","parsed","task","text"],translationKey:"Remove Original Time Expressions",descriptionKey:"Remove parsed time expressions from the task text",category:"workflow"},{id:"start-date-keywords",tabId:"time-parsing",name:"Start Date Keywords",description:"Keywords that indicate start dates (comma-separated)",keywords:["start","date","keywords","indicate","comma-separated"],translationKey:"Start Date Keywords",descriptionKey:"Keywords that indicate start dates (comma-separated)",category:"workflow"},{id:"due-date-keywords",tabId:"time-parsing",name:"Due Date Keywords",description:"Keywords that indicate due dates (comma-separated)",keywords:["due","date","keywords","indicate","comma-separated"],translationKey:"Due Date Keywords",descriptionKey:"Keywords that indicate due dates (comma-separated)",category:"workflow"},{id:"scheduled-date-keywords",tabId:"time-parsing",name:"Scheduled Date Keywords",description:"Keywords that indicate scheduled dates (comma-separated)",keywords:["scheduled","date","keywords","indicate","comma-separated"],translationKey:"Scheduled Date Keywords",descriptionKey:"Keywords that indicate scheduled dates (comma-separated)",category:"workflow"},{id:"timeline-sidebar",tabId:"timeline-sidebar",name:"Timeline Sidebar",keywords:["timeline","sidebar"],translationKey:"Timeline Sidebar",category:"workflow"},{id:"enable-timeline-sidebar",tabId:"timeline-sidebar",name:"Enable Timeline Sidebar",description:"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.",keywords:["enable","timeline","sidebar","view","quick","access","daily","events","tasks"],translationKey:"Enable Timeline Sidebar",descriptionKey:"Toggle this to enable the timeline sidebar view for quick access to your daily events and tasks.",category:"workflow"},{id:"timeline-auto-open",tabId:"timeline-sidebar",name:"Auto-open on startup",description:"Automatically open the timeline sidebar when Obsidian starts.",keywords:["auto-open","startup","automatically","timeline","sidebar","obsidian"],translationKey:"Auto-open on startup",descriptionKey:"Automatically open the timeline sidebar when Obsidian starts.",category:"workflow"},{id:"timeline-show-completed",tabId:"timeline-sidebar",name:"Show completed tasks",description:"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.",keywords:["show","completed","tasks","timeline","view","incomplete"],translationKey:"Show completed tasks",descriptionKey:"Include completed tasks in the timeline view. When disabled, only incomplete tasks will be shown.",category:"workflow"},{id:"enhanced-project-config",tabId:"project",name:"Enhanced Project Configuration",description:"Configure advanced project detection and management features",keywords:["enhanced","project","configuration","advanced","detection","management"],translationKey:"Enhanced Project Configuration",descriptionKey:"Configure advanced project detection and management features",category:"management"},{id:"enable-enhanced-projects",tabId:"project",name:"Enable enhanced project features",description:"Enable path-based, metadata-based, and config file-based project detection",keywords:["enable","enhanced","project","features","path-based","metadata-based","config"],translationKey:"Enable enhanced project features",descriptionKey:"Enable path-based, metadata-based, and config file-based project detection",category:"management"},{id:"path-based-projects",tabId:"project",name:"Path-based Project Mappings",description:"Configure project names based on file paths",keywords:["path-based","project","mappings","configure","names","file","paths"],translationKey:"Path-based Project Mappings",descriptionKey:"Configure project names based on file paths",category:"management"},{id:"metadata-based-projects",tabId:"project",name:"Metadata-based Project Configuration",description:"Configure project detection from file frontmatter",keywords:["metadata-based","project","configuration","detection","file","frontmatter"],translationKey:"Metadata-based Project Configuration",descriptionKey:"Configure project detection from file frontmatter",category:"management"},{id:"view-index-config",tabId:"view-settings",name:"View & Index Configuration",description:"Configure the Task Genius sidebar views, visibility, order, and create custom views.",keywords:["view","index","configuration","sidebar","visibility","order","custom"],translationKey:"View & Index Configuration",descriptionKey:"Configure the Task Genius sidebar views, visibility, order, and create custom views.",category:"core"},{id:"enable-task-genius-view",tabId:"view-settings",name:"Enable task genius view",description:"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.",keywords:["enable","task","genius","view","indexer","vault"],translationKey:"Enable task genius view",descriptionKey:"Enable task genius view will also enable the task genius indexer, which will provide the task genius view results from whole vault.",category:"core"},{id:"default-view-mode",tabId:"view-settings",name:"Default view mode",description:"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.",keywords:["default","view","mode","display","tasks","open","create"],translationKey:"Default view mode",descriptionKey:"Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.",category:"core"},{id:"prefer-metadata-format",tabId:"view-settings",name:"Prefer metadata format of task",description:"You can choose dataview format or tasks format, that will influence both index and save format.",keywords:["prefer","metadata","format","task","dataview","tasks","index","save"],translationKey:"Prefer metadata format of task",descriptionKey:"You can choose dataview format or tasks format, that will influence both index and save format.",category:"core"},{id:"rewards",tabId:"reward",name:"Rewards",description:"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.",keywords:["rewards","configure","completing","tasks","items","occurrence","chances","conditions"],translationKey:"Rewards",descriptionKey:"Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.",category:"gamification"},{id:"enable-rewards",tabId:"reward",name:"Enable rewards",description:"Toggle to enable or disable the reward system.",keywords:["enable","rewards","toggle","disable","reward","system"],translationKey:"Enable rewards",descriptionKey:"Toggle to enable or disable the reward system.",category:"gamification"},{id:"reward-display-type",tabId:"reward",name:"Reward display type",description:"Choose how rewards are displayed when earned.",keywords:["reward","display","type","choose","displayed","earned"],translationKey:"Reward display type",descriptionKey:"Choose how rewards are displayed when earned.",category:"gamification"},{id:"occurrence-levels",tabId:"reward",name:"Occurrence levels",description:"Define different levels of reward rarity and their probability.",keywords:["occurrence","levels","define","different","reward","rarity","probability"],translationKey:"Occurrence levels",descriptionKey:"Define different levels of reward rarity and their probability.",category:"gamification"},{id:"reward-items",tabId:"reward",name:"Reward items",description:"Manage the specific rewards that can be obtained.",keywords:["reward","items","manage","specific","rewards","obtained"],translationKey:"Reward items",descriptionKey:"Manage the specific rewards that can be obtained.",category:"gamification"},{id:"habit",tabId:"habit",name:"Habit",description:"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.",keywords:["habit","configure","settings","adding","editing","managing","completion"],translationKey:"Habit",descriptionKey:"Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.",category:"gamification"},{id:"enable-habits",tabId:"habit",name:"Enable habits",keywords:["enable","habits"],translationKey:"Enable habits",category:"gamification"},{id:"ics-calendar-integration",tabId:"ics-integration",name:"ICS Calendar Integration",keywords:["ics","calendar","integration"],translationKey:"ICS Calendar Integration",category:"integration"},{id:"enable-background-refresh",tabId:"ics-integration",name:"Enable Background Refresh",description:"Automatically refresh calendar sources in the background",keywords:["enable","background","refresh","automatically","calendar","sources"],translationKey:"Enable Background Refresh",descriptionKey:"Automatically refresh calendar sources in the background",category:"integration"},{id:"global-refresh-interval",tabId:"ics-integration",name:"Global Refresh Interval",description:"Default refresh interval for all sources (minutes)",keywords:["global","refresh","interval","default","sources","minutes"],translationKey:"Global Refresh Interval",descriptionKey:"Default refresh interval for all sources (minutes)",category:"integration"},{id:"maximum-cache-age",tabId:"ics-integration",name:"Maximum Cache Age",description:"How long to keep cached data (hours)",keywords:["maximum","cache","age","keep","cached","data","hours"],translationKey:"Maximum Cache Age",descriptionKey:"How long to keep cached data (hours)",category:"integration"},{id:"beta-test-features",tabId:"beta-test",name:"Beta Test Features",description:"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.",keywords:["beta","test","features","experimental","testing","phase","unstable"],translationKey:"Beta Test Features",descriptionKey:"Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.",category:"advanced"},{id:"base-view",tabId:"beta-test",name:"Base View",description:"Advanced view management features that extend the default Task Genius views with additional functionality.",keywords:["base","view","advanced","management","features","extend","default","functionality"],translationKey:"Base View",descriptionKey:"Advanced view management features that extend the default Task Genius views with additional functionality.",category:"advanced"},{id:"enable-base-view",tabId:"beta-test",name:"Enable Base View",description:"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.",keywords:["enable","base","view","experimental","functionality","enhanced","management","capabilities"],translationKey:"Enable Base View",descriptionKey:"Enable experimental Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes. You may need to restart Obsidian to see the changes.",category:"advanced"},{id:"about-task-genius",tabId:"about",name:"About Task Genius",keywords:["about","task","genius"],translationKey:"About",category:"info"},{id:"version",tabId:"about",name:"Version",keywords:["version"],translationKey:"Version",category:"info"},{id:"donate",tabId:"about",name:"Donate",description:"If you like this plugin, consider donating to support continued development:",keywords:["donate","plugin","support","development"],translationKey:"Donate",descriptionKey:"If you like this plugin, consider donating to support continued development:",category:"info"},{id:"documentation",tabId:"about",name:"Documentation",description:"View the documentation for this plugin",keywords:["documentation","view","plugin"],translationKey:"Documentation",descriptionKey:"View the documentation for this plugin",category:"info"},{id:"onboarding",tabId:"about",name:"Onboarding",description:"Restart the welcome guide and setup wizard",keywords:["onboarding","restart","welcome","guide","setup","wizard"],translationKey:"Onboarding",descriptionKey:"Restart the welcome guide and setup wizard",category:"info"}];Q();var DC=class{constructor(e){this.isInitialized=!1;this.rootEl=null;this.index={items:[],keywordMap:new Map,tabMap:new Map},this.rootEl=e!=null?e:null}initialize(){if(this.isInitialized)return;let e=performance.now();this.rootEl?this.buildIndexFromDOM(this.rootEl):this.buildIndexFromStatic();let t=performance.now();""+(t-e).toFixed(2)+this.index.items.length,this.isInitialized=!0}buildIndexFromStatic(){for(let e of b3){let t={...e,name:c(e.translationKey),description:e.descriptionKey?c(e.descriptionKey):e.description};this.addItemToIndex(t)}}buildIndexFromDOM(e){let t=Array.from(e.querySelectorAll(".settings-tab-section")),a=new Set;t.forEach(r=>{let i=r.getAttribute("data-tab-id")||"general",n=r.getAttribute("data-category")||"core";Array.from(r.querySelectorAll(".setting-item")).forEach((l,d)=>{let u=l.querySelector(".setting-item-name"),p=l.querySelector(".setting-item-description"),m=((u==null?void 0:u.textContent)||"").trim(),f=((p==null?void 0:p.textContent)||"").trim();if(!m)return;let h=l.getAttribute("data-setting-id");(!h||a.has(h))&&(h=this.generateStableId(i,m,d),l.setAttribute("data-setting-id",h)),a.add(h);let k=this.generateKeywords(m,f),g={id:h,tabId:i,name:m,description:f||void 0,keywords:k,translationKey:m,descriptionKey:f||void 0,category:n};this.addItemToIndex(g)})})}addItemToIndex(e){this.index.items.push(e);for(let t of e.keywords){let a=t.toLowerCase();this.index.keywordMap.has(a)||this.index.keywordMap.set(a,[]),this.index.keywordMap.get(a).push(e.id)}this.index.tabMap.has(e.tabId)||this.index.tabMap.set(e.tabId,[]),this.index.tabMap.get(e.tabId).push(e)}generateStableId(e,t,a){let r=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return`${e}-${r||"setting"}-${a}`}generateKeywords(e,t){let r=`${e} ${t||""}`.toLowerCase().replace(/[^a-z0-9\s]+/g," ").split(/\s+/).filter(Boolean);return Array.from(new Set(r)).sort((n,o)=>o.length-n.length).slice(0,12)}buildIndex(){this.index.items.length=0,this.index.keywordMap.clear(),this.index.tabMap.clear(),this.rootEl?this.buildIndexFromDOM(this.rootEl):this.buildIndexFromStatic()}search(e,t=10){if(this.isInitialized||this.initialize(),!e||e.trim().length<2)return[];let a=e.toLowerCase().trim(),r=[],i=new Set,n=(0,T3.prepareFuzzySearch)(a);for(let o of this.index.items){if(i.has(o.id))continue;n(o.name.toLowerCase())&&(r.push({item:o,score:this.calculateScore(a,o.name,"name"),matchType:"name"}),i.add(o.id))}for(let o of this.index.items){if(i.has(o.id)||!o.description)continue;n(o.description.toLowerCase())&&(r.push({item:o,score:this.calculateScore(a,o.description,"description"),matchType:"description"}),i.add(o.id))}for(let o of this.index.items)if(!i.has(o.id)){for(let l of o.keywords)if(n(l.toLowerCase())){r.push({item:o,score:this.calculateScore(a,l,"keyword"),matchType:"keyword"}),i.add(o.id);break}}return r.sort((o,l)=>l.score-o.score).slice(0,t)}calculateScore(e,t,a){let r=t.toLowerCase(),i=e.toLowerCase(),n=0;return n+={name:100,description:60,keyword:80}[a],r.includes(i)&&(n+=50,r.startsWith(i)&&(n+=30)),n+=Math.min(e.length/t.length,1)*20,n}getItemsByTab(e){return this.isInitialized||this.initialize(),this.index.tabMap.get(e)||[]}getItemById(e){return this.isInitialized||this.initialize(),this.index.items.find(t=>t.id===e)}getAllTabIds(){return this.isInitialized||this.initialize(),Array.from(this.index.tabMap.keys())}getStats(){return this.isInitialized||this.initialize(),{itemCount:this.index.items.length,tabCount:this.index.tabMap.size,keywordCount:this.index.keywordMap.size}}};Q();var PC=class extends Ou.Component{constructor(e,t){super();this.currentResults=[];this.selectedIndex=-1;this.debounceTimer=0;this.isVisible=!1;this.blurTimeoutId=0;this.settingTab=e,this.indexer=new DC(t),this.containerEl=t,this.createSearchUI(),this.setupEventListeners()}createSearchUI(){let e=this.containerEl.createDiv();e.addClass("settings-search-container");let t=e.createDiv();t.addClass("settings-search-input-container");let a=t.createSpan();a.addClass("settings-search-icon"),(0,Ou.setIcon)(a,"search"),this.searchInputEl=t.createEl("input"),this.searchInputEl.type="text",this.searchInputEl.placeholder=c("Search settings...")+" (Ctrl+K)",this.searchInputEl.addClass("settings-search-input"),this.searchInputEl.setAttribute("aria-label",c("Search settings")),this.searchInputEl.setAttribute("autocomplete","off"),this.searchInputEl.setAttribute("spellcheck","false"),this.clearButton=t.createEl("button"),this.clearButton.addClass("settings-search-clear"),this.clearButton.setAttribute("aria-label",c("Clear search")),(0,Ou.setIcon)(this.clearButton,"x"),this.clearButton.style.display="none",this.resultsContainerEl=e.createDiv(),this.resultsContainerEl.addClass("settings-search-results"),this.resultsContainerEl.style.display="none",this.resultsContainerEl.setAttribute("role","listbox"),this.resultsContainerEl.setAttribute("aria-label",c("Search results"))}setupEventListeners(){this.registerDomEvent(this.clearButton,"click",()=>{this.clearSearch(),this.searchInputEl.focus()}),this.registerDomEvent(this.searchInputEl,"input",e=>{let t=e.target.value;this.handleSearchInput(t)}),this.registerDomEvent(this.searchInputEl,"keydown",e=>{this.handleKeyDown(e)}),this.registerDomEvent(this.searchInputEl,"focus",()=>{this.currentResults.length>0&&this.showResults()}),this.registerDomEvent(this.searchInputEl,"blur",()=>{this.blurTimeoutId=window.setTimeout(()=>{this.resultsContainerEl.contains(document.activeElement)||this.hideResults()},200)}),this.registerDomEvent(document,"click",e=>{this.containerEl.contains(e.target)||this.hideResults()})}handleSearchInput(e){this.clearButton.style.display=e.length>0?"block":"none",clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout(()=>{this.performSearch(e)},100)}performSearch(e){if(""+e,e.length===0){this.hideResults();return}if(e.length<1){""+e.length;return}this.currentResults=this.indexer.search(e,12),this.selectedIndex=-1,""+this.currentResults.length,this.currentResults.forEach((t,a)=>{""+(a+1)+t.item.name+t.matchType+t.score}),this.currentResults.length>0?(this.renderResults(),this.showResults(),this.selectedIndex===-1&&this.setSelectedIndex(0)):(this.renderNoResults(),this.showResults())}renderResults(){this.resultsContainerEl.empty(),this.currentResults.forEach((e,t)=>{let a=this.resultsContainerEl.createDiv();a.addClass("settings-search-result"),a.setAttribute("data-index",t.toString());let r=a.createDiv();r.addClass("settings-search-result-name"),r.textContent=e.item.name;let i=a.createDiv();i.addClass("settings-search-result-meta");let n=i.createSpan();if(n.addClass("settings-search-result-category"),n.textContent=this.getCategoryDisplayName(e.item.category),e.item.description&&e.matchType==="description"){let o=a.createDiv();o.addClass("settings-search-result-desc"),o.textContent=this.truncateText(e.item.description,80)}this.registerDomEvent(a,"click",()=>{this.selectResult(e)}),this.registerDomEvent(a,"mouseenter",()=>{this.setSelectedIndex(t)})})}renderNoResults(){this.resultsContainerEl.empty();let e=this.resultsContainerEl.createDiv();e.addClass("settings-search-no-result"),e.textContent=c("No settings found")}handleKeyDown(e){if(!this.isVisible||this.currentResults.length===0){e.key==="Escape"&&this.clearSearch();return}switch(e.key){case"ArrowDown":e.preventDefault(),this.moveSelection(1);break;case"ArrowUp":e.preventDefault(),this.moveSelection(-1);break;case"Enter":e.preventDefault(),this.selectedIndex>=0&&this.currentResults[this.selectedIndex]&&this.selectResult(this.currentResults[this.selectedIndex]);break;case"Escape":e.preventDefault(),this.clearSearch();break}}moveSelection(e){let t=this.selectedIndex+e;t>=0&&t<this.currentResults.length&&this.setSelectedIndex(t)}setSelectedIndex(e){let t=this.resultsContainerEl.querySelector(".settings-search-result-selected");if(t&&t.removeClass("settings-search-result-selected"),this.selectedIndex=e,e>=0){let a=this.resultsContainerEl.querySelector(`[data-index="${e}"]`);a&&(a.addClass("settings-search-result-selected"),a.scrollIntoView({block:"nearest"}))}}selectResult(e){this.navigateToSetting(e.item.tabId,e.item.id),this.clearSearch()}navigateToSetting(e,t){this.settingTab.switchToTab(e);let a=window.setTimeout(()=>{this.scrollToSetting(t)},100);this.register(()=>clearTimeout(a))}scrollToSetting(e){let t=this.containerEl.querySelector(`[data-setting-id="${e}"]`);if(t){t.scrollIntoView({behavior:"smooth",block:"center"}),t.addClass("settings-search-highlight");let a=window.setTimeout(()=>{t.removeClass("settings-search-highlight")},2e3);this.register(()=>clearTimeout(a))}}showResults(){this.resultsContainerEl.style.display="block",this.isVisible=!0}hideResults(){this.resultsContainerEl.style.display="none",this.isVisible=!1,this.selectedIndex=-1}clearSearch(){this.searchInputEl.value="",this.currentResults=[],this.hideResults(),this.clearButton.style.display="none"}getCategoryDisplayName(e){return{core:c("Core Settings"),display:c("Display & Progress"),management:c("Task Management"),workflow:c("Workflow & Automation"),gamification:c("Gamification"),integration:c("Integration"),advanced:c("Advanced"),info:c("Information")}[e]||e}truncateText(e,t){return e.length<=t?e:e.substring(0,t-3)+"..."}onunload(){clearTimeout(this.debounceTimer),clearTimeout(this.blurTimeoutId),this.containerEl.empty()}destroy(){this.unload()}};var nt=A(require("obsidian"));Q();var ei=class{constructor(e){this.authToken=e}validateRequest(e){let t=e.headers.authorization;if(!t)return!1;let a=ei.parseAuthHeader(t);return a?a.token===this.authToken:!1}static parseAuthHeader(e){let t=e.split(" ");if(t.length!==2||t[0]!=="Bearer")return null;let a=t[1],r=a.indexOf("+");if(r===-1)return{token:a};let i=a.substring(0,r),n=a.substring(r+1)||void 0;return{token:i,appId:n}}getClientAppId(e){let t=e.headers["mcp-app-id"];if(t)return t;let a=e.headers.authorization;if(!a)return;let r=ei.parseAuthHeader(a);return r==null?void 0:r.appId}handleUnauthorized(e){e.statusCode=401,e.setHeader("Content-Type","application/json"),e.setHeader("WWW-Authenticate",'Bearer realm="MCP Server"'),e.end(JSON.stringify({error:"Unauthorized",message:"Invalid or missing authentication token"}))}middleware(e,t,a){let r=e.url||"";if(r==="/health"||r==="/"){a();return}if(!this.validateRequest(e)){this.handleUnauthorized(t);return}a()}updateToken(e){this.authToken=e}static generateToken(){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let a=0;a<32;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}};function C3(s,e,t){let a=s.createDiv("mcp-config-block");a.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(JSON.stringify(e,null,2));let n=a.createEl("button",{text:c("Copy"),cls:"mcp-copy-btn"});n.onclick=async()=>{await navigator.clipboard.writeText(JSON.stringify(e,null,2)),n.setText(c("Copied!")),n.addClass("copied"),setTimeout(()=>{n.setText(c("Copy")),n.removeClass("copied")},2e3)}}function x3(s,e,t){var Le,lt,ct,_e;if(!nt.Platform.isDesktopApp){s.createEl("div",{text:c("MCP integration is only available on desktop"),cls:"setting-item-description"});return}let a=e.mcpServerManager;s.createEl("h3",{text:c("MCP Server Status")});let r=s.createDiv("mcp-status-container");Nu(r,a),new nt.Setting(s).setName(c("Enable MCP Server")).setDesc(c("Start the MCP server to allow external tool connections")).addToggle(le=>{var ke;le.setValue(((ke=e.settings.mcpIntegration)==null?void 0:ke.enabled)||!1).onChange(async Ae=>{Ae?new Ss(e,{title:c("Enable MCP Server"),message:c(`WARNING: Enabling the MCP server will allow external AI tools and applications to access and modify your task data. This includes:
\u2022 Reading all tasks and their details
\u2022 Creating new tasks
\u2022 Updating existing tasks
\u2022 Deleting tasks
\u2022 Accessing task metadata and properties
Only enable this if you trust the applications that will connect to the MCP server. Make sure to keep your authentication token secure.
Do you want to continue?`),confirmText:c("Enable MCP Server"),cancelText:c("Cancel"),onConfirm:async Te=>{Te?(e.settings.mcpIntegration?e.settings.mcpIntegration.enabled=!0:e.settings.mcpIntegration={enabled:!0,port:7777,host:"127.0.0.1",authToken:ei.generateToken(),enableCors:!0,logLevel:"info"},await e.saveSettings(),a&&(await a.updateConfig({enabled:!0}),Nu(r,a)),le.setValue(!0),new nt.Notice(c("MCP Server enabled. Keep your authentication token secure!"))):le.setValue(!1)}}).open():(e.settings.mcpIntegration&&(e.settings.mcpIntegration.enabled=!1),await e.saveSettings(),a&&(await a.updateConfig({enabled:!1}),Nu(r,a)))})}),s.createEl("h3",{text:c("Server Configuration")}),new nt.Setting(s).setName(c("Host")).setDesc(c("Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces")).addDropdown(le=>{var ke;le.addOption("127.0.0.1","127.0.0.1 (Local only)").addOption("0.0.0.0","0.0.0.0 (All interfaces - for external access)").setValue(((ke=e.settings.mcpIntegration)==null?void 0:ke.host)||"127.0.0.1").onChange(async Ae=>{!e.settings.mcpIntegration||(Ae==="0.0.0.0"&&e.settings.mcpIntegration.host!=="0.0.0.0"?new Ss(e,{title:c("Security Warning"),message:c(`\u26A0\uFE0F **WARNING**: Switching to 0.0.0.0 will make the MCP server accessible from external networks.
This could expose your Obsidian data to:
- Other devices on your local network
- Potentially the internet if your firewall is misconfigured
**Only proceed if you:**
- Understand the security implications
- Have properly configured your firewall
- Need external access for legitimate reasons
Are you sure you want to continue?`),confirmText:c("Yes, I understand the risks"),cancelText:c("Cancel"),onConfirm:async Te=>{var Pe;Te?(e.settings.mcpIntegration&&(e.settings.mcpIntegration.host=Ae,t()),new nt.Notice(c("Host changed to 0.0.0.0. Server is now accessible from external networks."))):le.setValue(((Pe=e.settings.mcpIntegration)==null?void 0:Pe.host)||"127.0.0.1")}}).open():(e.settings.mcpIntegration.host=Ae,t()))})}),new nt.Setting(s).setName(c("Port")).setDesc(c("Server port number (default: 7777)")).addText(le=>{var ke;le.setPlaceholder("7777").setValue(String(((ke=e.settings.mcpIntegration)==null?void 0:ke.port)||7777)).onChange(async Ae=>{if(!e.settings.mcpIntegration)return;let at=parseInt(Ae);!isNaN(at)&&at>0&&at<65536&&(e.settings.mcpIntegration.port=at,t())})}),s.createEl("h3",{text:c("Authentication")});let i=new nt.Setting(s).setName(c("Authentication Token")).setDesc(c("Bearer token for authenticating MCP requests (keep this secret)")),n=i.controlEl.createEl("input",{type:"password",value:((Le=e.settings.mcpIntegration)==null?void 0:Le.authToken)||"",cls:"mcp-token-input"});n.readOnly=!0,i.addButton(le=>{le.setButtonText(c("Show")).onClick(()=>{n.type==="password"?(n.type="text",le.setButtonText(c("Hide"))):(n.type="password",le.setButtonText(c("Show")))})}),i.addButton(le=>{le.setButtonText(c("Copy")).onClick(async()=>{await navigator.clipboard.writeText(n.value),new nt.Notice(c("Token copied to clipboard"))})}),i.addButton(le=>{le.setButtonText(c("Regenerate")).onClick(async()=>{if(!e.settings.mcpIntegration||!a)return;let ke=a.regenerateAuthToken();n.value=ke,await e.saveSettings(),new nt.Notice(c("New token generated"))})}),s.createEl("h3",{text:c("Advanced Settings")}),new nt.Setting(s).setName(c("Enable CORS")).setDesc(c("Allow cross-origin requests (required for web clients)")).addToggle(le=>{var ke,Ae;le.setValue((Ae=(ke=e.settings.mcpIntegration)==null?void 0:ke.enableCors)!=null?Ae:!0).onChange(async at=>{!e.settings.mcpIntegration||(e.settings.mcpIntegration.enableCors=at,t())})}),new nt.Setting(s).setName(c("Log Level")).setDesc(c("Logging verbosity for debugging")).addDropdown(le=>{var ke;le.addOption("error",c("Error")).addOption("warn",c("Warning")).addOption("info",c("Info")).addOption("debug",c("Debug")).setValue(((ke=e.settings.mcpIntegration)==null?void 0:ke.logLevel)||"info").onChange(async Ae=>{!e.settings.mcpIntegration||(e.settings.mcpIntegration.logLevel=Ae,t())})}),s.createEl("h3",{text:c("Server Actions")});let o=s.createDiv("mcp-actions-container");new nt.Setting(o).setName(c("Test Connection")).setDesc(c("Test the MCP server connection")).addButton(le=>{le.setButtonText(c("Test")).onClick(async()=>{var ke,Ae,at;le.setDisabled(!0),le.setButtonText(c("Testing..."));try{let Te=await(0,nt.requestUrl)({url:`http://${((ke=e.settings.mcpIntegration)==null?void 0:ke.host)||"127.0.0.1"}:${((Ae=e.settings.mcpIntegration)==null?void 0:Ae.port)||7777}/health`,method:"GET"}).catch(ft=>{throw console.error("[MCP Test] Health check failed:",ft),new Error(`Cannot reach server: ${ft.message}`)});if(!Te||Te.status!==200)throw new Error("Health check failed");let Pe=await(0,nt.requestUrl)({url:k,method:"POST",headers:{Authorization:T,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize"})}).catch(ft=>{throw new Error(`Initialize failed: ${ft.message}`)});if(Pe.status!==200){let ft=Pe.text;throw new Error(`Initialize failed with status ${Pe.status}: ${ft}`)}let Ze=Pe.json;if(Pe.headers,Ze.error)throw new Error(`MCP error: ${Ze.error.message}`);let Ie=Pe.headers["mcp-session-id"]||Pe.headers["Mcp-Session-Id"]||(Ze==null?void 0:Ze.sessionId)||((at=Ze==null?void 0:Ze.result)==null?void 0:at.sessionId);if(!Ie)throw console.error("[MCP Test] No session ID in response"),new Error("No session ID returned");let zt=(await(0,nt.requestUrl)({url:k,method:"POST",headers:{Authorization:T,"Mcp-Session-Id":Ie,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/list"})})).json;if(zt.error)throw new Error(`Tools list error: ${zt.error.message}`);new nt.Notice(c("Connection test successful! MCP server is working."))}catch(Te){console.error("[MCP Test] Test failed:",Te),new nt.Notice(c("Connection test failed: ")+Te.message)}finally{le.setDisabled(!1),le.setButtonText(c("Test"))}})}),new nt.Setting(o).setName(c("Restart Server")).setDesc(c("Stop and restart the MCP server")).addButton(le=>{le.setButtonText(c("Restart")).setCta().onClick(async()=>{if(!!a){le.setDisabled(!0);try{await a.restart(),new nt.Notice(c("MCP server restarted")),Nu(r,a)}catch(ke){new nt.Notice(c("Failed to restart server: ")+ke.message)}finally{le.setDisabled(!1)}}})}).addButton(le=>{le.setButtonText(c("Use Next Available Port")).onClick(async()=>{if(!(!a||!e.settings.mcpIntegration)){le.setDisabled(!0);try{let Ae=(e.settings.mcpIntegration.port||7777)+1,at=!1;for(let Te=0;Te<50;Te++)try{await a.updateConfig({port:Ae}),at=!0;break}catch(Pe){Ae++}at?(new nt.Notice(c("Port updated to ")+String(Ae)),Nu(r,a)):new nt.Notice(c("No available port found in range"))}finally{le.setDisabled(!1)}}})}),s.createEl("h3",{text:c("Client Configuration")});let l=s.createDiv("mcp-config-container"),d=!0,u,p,m=new nt.Setting(l).setName(c("Authentication Method")).setDesc(c("Choose the authentication method for client configurations")).addDropdown(le=>{le.addOption("methodB",c("Method B: Combined Bearer (Recommended)")).addOption("methodA",c("Method A: Custom Headers")).setValue("methodB").onChange(ke=>{d=ke==="methodB",u(),p&&p()})}),f=((lt=e.settings.mcpIntegration)==null?void 0:lt.host)||"127.0.0.1",k=`http://${f==="0.0.0.0"?"127.0.0.1":f}:${((ct=e.settings.mcpIntegration)==null?void 0:ct.port)||7777}/mcp`,g=((_e=e.settings.mcpIntegration)==null?void 0:_e.authToken)||"",w=`${e.app.vault.getName().toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`,v=e.app.appId,T=`Bearer ${g}+${v}`,x=l.createDiv("mcp-auth-methods");x.createEl("div",{text:c("Supported Authentication Methods:"),cls:"setting-item-description"});let C=x.createEl("ul",{cls:"mcp-auth-list"}),S=C.createEl("li");S.createEl("strong",{text:"Method A (Custom Header):"}),S.appendText(" "),S.createEl("code",{text:`mcp-app-id: ${v}`}),S.appendText(" + "),S.createEl("code",{text:`Authorization: Bearer ${g}`});let E=C.createEl("li");E.createEl("strong",{text:"Method B (Combined Bearer):"}),E.appendText(" "),E.createEl("code",{text:`Authorization: Bearer ${g}+${v}`});let P=l.createDiv("mcp-client-configs-container"),I=()=>d?[{name:"Cursor",config:{mcpServers:{[w]:{url:k,headers:{Authorization:T}}}}},{name:"Claude Desktop",config:{mcpServers:{[w]:{command:"curl",args:["-X","POST","-H",`Authorization: ${T}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${w} ${k} --header "Authorization: ${T}"`},{name:"VS Code",config:{mcp:{servers:{[w]:{type:"http",url:k,headers:{Authorization:T}}}}}},{name:"Windsurf",config:{mcpServers:{[w]:{serverUrl:k,headers:{Authorization:T}}}}},{name:"Zed",config:{context_servers:{[w]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: ${T}`,"-H","Content-Type: application/json","--data-raw","@-",k]},settings:{}}}}}]:[{name:"Cursor",config:{mcpServers:{[w]:{url:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":v}}}}},{name:"Claude Desktop",config:{mcpServers:{[w]:{command:"curl",args:["-X","POST","-H",`Authorization: Bearer ${g}`,"-H",`mcp-app-id: ${v}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${w} ${k} --header "Authorization: Bearer ${g}" --header "mcp-app-id: ${v}"`},{name:"VS Code",config:{mcp:{servers:{[w]:{type:"http",url:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":v}}}}}},{name:"Windsurf",config:{mcpServers:{[w]:{serverUrl:k,headers:{Authorization:`Bearer ${g}`,"mcp-app-id":v}}}}},{name:"Zed",config:{context_servers:{[w]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: Bearer ${g}`,"-H",`mcp-app-id: ${v}`,"-H","Content-Type: application/json","--data-raw","@-",k]},settings:{}}}}}];u=()=>{P.empty(),I().forEach(ke=>{let Ae=P.createDiv("mcp-client-section"),at=Ae.createDiv("mcp-client-header"),Te=at.createDiv("mcp-arrow");(0,nt.setIcon)(Te,"chevron-right"),at.createEl("span",{text:ke.name,cls:"mcp-client-name"});let Pe=Ae.createDiv("mcp-client-content"),Ze=!1;if(at.onclick=()=>{Ze=!Ze,Ze?(Pe.classList.add("expanded"),Te.classList.add("expanded")):(Pe.classList.remove("expanded"),Te.classList.remove("expanded"))},ke.name==="Cursor"){let Ie=Pe.createDiv("mcp-cursor-install-section");Ie.createEl("h4",{text:c("Quick Install"),cls:"mcp-docs-subtitle"});let fa={url:k,headers:{Authorization:T}},zt=btoa(JSON.stringify(fa)),ft=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(w)}&config=${zt}`,St=Ie.createDiv("mcp-cursor-install-container");St.createEl("p",{text:c("Click the button below to automatically add this MCP server to Cursor:"),cls:"mcp-cursor-install-desc"});let wr=St.createEl("a",{href:ft,cls:"mcp-cursor-install-link"}).createEl("img",{attr:{src:"https://cursor.com/deeplink/mcp-install-dark.svg",alt:`Add ${w} MCP server to Cursor`,height:"32"}}),aa=St.createDiv("mcp-cursor-additional-buttons").createEl("button",{text:c("Copy Install Link"),cls:"mcp-cursor-copy-deeplink-btn"});aa.onclick=async()=>{await navigator.clipboard.writeText(ft),aa.setText(c("Copied!")),aa.addClass("copied"),setTimeout(()=>{aa.setText(c("Copy Install Link")),aa.removeClass("copied")},2e3)},Pe.createEl("hr",{cls:"mcp-section-separator"}),Pe.createEl("h4",{text:c("Manual Configuration"),cls:"mcp-docs-subtitle"}),C3(Pe,ke.config,`${ke.name} configuration`)}else if(ke.config)C3(Pe,ke.config,`${ke.name} configuration`);else if(ke.commandLine){let Ie=Pe.createDiv("mcp-config-block");Ie.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(ke.commandLine);let ft=Ie.createEl("button",{text:c("Copy"),cls:"mcp-copy-btn"});ft.onclick=async()=>{await navigator.clipboard.writeText(ke.commandLine),ft.setText(c("Copied!")),ft.addClass("copied"),setTimeout(()=>{ft.setText(c("Copy")),ft.removeClass("copied")},2e3)}}})},u(),s.createEl("h3",{text:c("API Documentation")});let L=s.createDiv("mcp-docs-container"),W=L.createDiv("mcp-docs-section");W.createEl("h4",{text:c("Server Endpoint"),cls:"mcp-docs-subtitle"});let O=W.createDiv("mcp-endpoint-box"),H=O.createDiv("mcp-endpoint-content");H.createSpan("mcp-endpoint-label").setText("URL: ");let B=k;H.createEl("code",{text:B,cls:"mcp-endpoint-url"});let q=O.createEl("button",{text:c("Copy URL"),cls:"mcp-copy-endpoint-btn"});q.onclick=async()=>{await navigator.clipboard.writeText(B),q.setText(c("Copied!")),q.addClass("copied"),setTimeout(()=>{q.setText(c("Copy URL")),q.removeClass("copied")},2e3)};let U=L.createDiv("mcp-docs-section");U.createEl("h4",{text:c("Available Tools"),cls:"mcp-docs-subtitle"});let z=U.createDiv("mcp-tools-grid"),te=U.createDiv("mcp-tools-info");te.setText(c("Loading tools..."));async function fe(){var le;try{let ke=await(0,nt.requestUrl)({url:k,method:"POST",headers:{Authorization:`${T}`,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize"})}),Ae=ke.headers["mcp-session-id"]||ke.headers["Mcp-Session-Id"];if(!Ae)throw new Error("No session id returned");let at=await(0,nt.requestUrl)({url:k,method:"POST",headers:{Authorization:`${T}`,"Mcp-Session-Id":Ae,"Content-Type":"application/json",Accept:"application/json, text/event-stream","MCP-Protocol-Version":"2025-06-18"},body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/list"})}),Te=((le=at==null?void 0:at.json.result)==null?void 0:le.tools)||[];if(te.setText(""),!Te.length){te.setText(c("No tools available"));return}Te.forEach(Pe=>{let Ze=z.createDiv("mcp-tool-card"),Ie=Ze.createDiv("mcp-tool-header"),fa=Ie.createDiv("mcp-tool-icon");(0,nt.setIcon)(fa,"wrench"),Ie.createEl("code",{text:Pe.name,cls:"mcp-tool-name"}),Ze.createDiv("mcp-tool-desc").setText(Pe.description||"")})}catch(ke){console.error("[MCP Tools] Failed to load tools:",ke),te.setText(c("Failed to load tools. Is the MCP server running?"))}}fe();let ue=L.createDiv("mcp-docs-section");ue.createEl("h4",{text:c("Example Request"),cls:"mcp-docs-subtitle"});let De=ue.createDiv("mcp-example-container");p=()=>{De.empty(),$e()};let $e=()=>{let le=De.createDiv("mcp-example-tabs"),ke=le.createEl("button",{text:"cURL",cls:"mcp-example-tab active"}),Ae=le.createEl("button",{text:"JavaScript",cls:"mcp-example-tab"}),at=le.createEl("button",{text:"Python",cls:"mcp-example-tab"}),Te=De.createDiv("mcp-example-code-container"),Pe=Te.createDiv("mcp-example-block active");Pe.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let Ze=Pe.createEl("pre",{cls:"mcp-example-code"});d?Ze.createEl("code",{text:`curl -i -X POST ${B} \\
-H "Authorization: ${T}" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}):Ze.createEl("code",{text:`curl -i -X POST ${B} \\
-H "Authorization: Bearer ${g}" \\
-H "mcp-app-id: ${v}" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}),Pe.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let Ie=Pe.createEl("pre",{cls:"mcp-example-code"});d?Ie.createEl("code",{text:`curl -X POST ${B} \\
-H "Authorization: ${T}" \\
-H "mcp-session-id: REPLACE_WITH_SESSION_ID" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_tasks","arguments":{"filter":{"completed":false,"priority":5},"limit":10}}}'`}):Ie.createEl("code",{text:`curl -X POST ${B} \\
-H "Authorization: Bearer ${g}" \\
-H "mcp-app-id: ${v}" \\
-H "mcp-session-id: REPLACE_WITH_SESSION_ID" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"query_tasks","arguments":{"filter":{"completed":false,"priority":5},"limit":10}}}'`});let fa=Te.createDiv("mcp-example-block");fa.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let zt=fa.createEl("pre",{cls:"mcp-example-code"});d?zt.createEl("code",{text:`const initRes = await fetch('${B}', {
method: 'POST',
headers: {
'Authorization': '${T}',
'Content-Type': 'application/json'
},
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' })
});
const sessionId = initRes.headers.get('mcp-session-id');`}):zt.createEl("code",{text:`const initRes = await fetch('${B}', {
method: 'POST',
headers: {
'Authorization': 'Bearer ${g}',
'mcp-app-id': '${v}',
'Content-Type': 'application/json'
},
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' })
});
const sessionId = initRes.headers.get('mcp-session-id');`}),fa.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let ft=fa.createEl("pre",{cls:"mcp-example-code"});d?ft.createEl("code",{text:`const callRes = await fetch('${B}', {
method: 'POST',
headers: {
'Authorization': '${T}',
'mcp-session-id': sessionId,
'Content-Type': 'application/json'
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: { name: 'query_tasks', arguments: { filter: { completed: false, priority: 5 }, limit: 10 } }
})
});
console.log(await callRes.json());`}):ft.createEl("code",{text:`const callRes = await fetch('${B}', {
method: 'POST',
headers: {
'Authorization': 'Bearer ${g}',
'mcp-app-id': '${v}',
'mcp-session-id': sessionId,
'Content-Type': 'application/json'
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: { name: 'query_tasks', arguments: { filter: { completed: false, priority: 5 }, limit: 10 } }
})
});
console.log(await callRes.json());`});let St=Te.createDiv("mcp-example-block");St.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let lr=St.createEl("pre",{cls:"mcp-example-code"});d?lr.createEl("code",{text:`import requests
# Initialize session
init_res = requests.post(
'${B}',
headers={
'Authorization': '${T}',
'Content-Type': 'application/json'
},
json={'jsonrpc': '2.0', 'id': 1, 'method': 'initialize'}
)
session_id = init_res.headers.get('mcp-session-id')
print(f"Session ID: {session_id}")`}):lr.createEl("code",{text:`import requests
# Initialize session
init_res = requests.post(
'${B}',
headers={
'Authorization': 'Bearer ${g}',
'mcp-app-id': '${v}',
'Content-Type': 'application/json'
},
json={'jsonrpc': '2.0', 'id': 1, 'method': 'initialize'}
)
session_id = init_res.headers.get('mcp-session-id')
print(f"Session ID: {session_id}")`}),St.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let wr=St.createEl("pre",{cls:"mcp-example-code"});d?wr.createEl("code",{text:`# Call tool
call_res = requests.post(
'${B}',
headers={
'Authorization': '${T}',
'mcp-session-id': session_id,
'Content-Type': 'application/json'
},
json={
'jsonrpc': '2.0',
'id': 2,
'method': 'tools/call',
'params': {
'name': 'query_tasks',
'arguments': {
'filter': {'completed': False, 'priority': 5},
'limit': 10
}
}
}
)
print(call_res.json())`}):wr.createEl("code",{text:`# Call tool
call_res = requests.post(
'${B}',
headers={
'Authorization': 'Bearer ${g}',
'mcp-app-id': '${v}',
'mcp-session-id': session_id,
'Content-Type': 'application/json'
},
json={
'jsonrpc': '2.0',
'id': 2,
'method': 'tools/call',
'params': {
'name': 'query_tasks',
'arguments': {
'filter': {'completed': False, 'priority': 5},
'limit': 10
}
}
}
)
print(call_res.json())`});let ns=[ke,Ae,at],aa=[Pe,fa,St];ns.forEach((os,za)=>{os.onclick=()=>{ns.forEach(ls=>ls.removeClass("active")),aa.forEach(ls=>ls.removeClass("active")),os.addClass("active"),aa[za].addClass("active")}}),aa.forEach(os=>{os.querySelectorAll("pre.mcp-example-code").forEach(ls=>{let Bn=ls.querySelector("code");if(!Bn)return;let Wn=ls.createEl("button",{text:c("Copy"),cls:"mcp-example-copy-btn"});Wn.onclick=async()=>{let Ip=Bn.textContent||"";await navigator.clipboard.writeText(Ip),Wn.setText(c("Copied!")),Wn.addClass("copied"),setTimeout(()=>{Wn.setText(c("Copy")),Wn.removeClass("copied")},2e3)}})})};$e()}function Nu(s,e){if(s.empty(),!e){s.createEl("div",{text:c("MCP Server not initialized"),cls:"mcp-status-error"});return}let t=e.getStatus(),a=s.createDiv("mcp-status"),r=a.createDiv("mcp-status-indicator");if(r.addClass(t.running?"running":"stopped"),r.createSpan({text:t.running?"\u25CF":"\u25CB",cls:"status-dot"}),r.createSpan({text:t.running?c("Running"):c("Stopped"),cls:"status-text"}),t.running&&t.port){let i=a.createDiv("mcp-status-details");if(i.createEl("div",{text:`${c("Port")}: ${t.port}`}),t.startTime){let n=Date.now()-t.startTime.getTime(),o=Math.floor(n/36e5),l=Math.floor(n%36e5/6e4);i.createEl("div",{text:`${c("Uptime")}: ${o}h ${l}m`})}t.requestCount!==void 0&&i.createEl("div",{text:`${c("Requests")}: ${t.requestCount}`})}}var MC=class extends _a.PluginSettingTab{constructor(e,t){super(e,t);this.applyDebounceTimer=0;this.searchComponent=null;this.currentTab="general";this.tabs=[{id:"general",name:c("General"),icon:"settings",category:"core"},{id:"view-settings",name:c("Views & Index"),icon:"layout",category:"core"},{id:"file-filter",name:c("File Filter"),icon:"folder-x",category:"core"},{id:"progress-bar",name:c("Progress Display"),icon:"trending-up",category:"display"},{id:"task-status",name:c("Checkbox Status"),icon:"checkbox-glyph",category:"display"},{id:"task-handler",name:c("Task Handler"),icon:"list-checks",category:"management"},{id:"task-filter",name:c("Task Filter"),icon:"filter",category:"management"},{id:"project",name:c("Projects"),icon:"folder-open",category:"management"},{id:"workflow",name:c("Workflows"),icon:"git-branch",category:"workflow"},{id:"date-priority",name:c("Dates & Priority"),icon:"calendar-clock",category:"workflow"},{id:"quick-capture",name:c("Quick Capture"),icon:"zap",category:"workflow"},{id:"task-timer",name:"Task Timer",icon:"timer",category:"workflow"},{id:"time-parsing",name:c("Time Parsing"),icon:"clock",category:"workflow"},{id:"timeline-sidebar",name:c("Timeline Sidebar"),icon:"clock",category:"workflow"},{id:"reward",name:c("Rewards"),icon:"gift",category:"gamification"},{id:"habit",name:c("Habits"),icon:"repeat",category:"gamification"},{id:"ics-integration",name:c("Calendar Sync"),icon:"calendar-plus",category:"integration"},{id:"mcp-integration",name:c("MCP Integration"),icon:"network",category:"integration"},{id:"beta-test",name:c("Beta Features"),icon:"flask-conical",category:"advanced"},{id:"about",name:c("About"),icon:"info",category:"info"}];this.plugin=t}applySettingsUpdate(){clearTimeout(this.applyDebounceTimer);let e=this.plugin;this.applyDebounceTimer=window.setTimeout(async()=>{await e.saveSettings(),e.taskManager&&e.taskManager.updateParsingConfiguration(),await e.triggerViewUpdate()},100)}createSearchComponent(){this.searchComponent&&this.searchComponent.destroy(),this.searchComponent=new PC(this,this.containerEl)}createCategorizedTabsUI(){this.containerEl.toggleClass("task-genius-settings",!0),this.createSearchComponent();let e={core:{name:c("Core Settings"),tabs:[]},display:{name:c("Display & Progress"),tabs:[]},management:{name:c("Task Management"),tabs:[]},workflow:{name:c("Workflow & Automation"),tabs:[]},gamification:{name:c("Gamification"),tabs:[]},integration:{name:c("Integration"),tabs:[]},advanced:{name:c("Advanced"),tabs:[]},info:{name:c("Information"),tabs:[]}};this.tabs.forEach(r=>{if(r.id==="mcp-integration"&&!_a.Platform.isDesktopApp)return;let i=r.category||"core";e[i]&&e[i].tabs.push(r)});let t=this.containerEl.createDiv();t.addClass("settings-tabs-categorized-container"),Object.entries(e).forEach(([r,i])=>{if(i.tabs.length===0)return;let n=t.createDiv();n.addClass("settings-category-section");let o=n.createDiv();o.addClass("settings-category-header"),o.setText(i.name);let l=n.createDiv();l.addClass("settings-category-tabs"),i.tabs.forEach(d=>{let u=l.createDiv();u.addClass("settings-tab"),this.currentTab===d.id&&u.addClass("settings-tab-active"),u.setAttribute("data-tab-id",d.id),u.setAttribute("data-category",r);let p=u.createSpan();p.addClass("settings-tab-icon"),(0,_a.setIcon)(p,d.icon);let m=u.createSpan();m.addClass("settings-tab-label"),m.setText(d.name+(d.id==="about"?" v"+this.plugin.manifest.version:"")),u.addEventListener("click",()=>{this.switchToTab(d.id)})})}),this.containerEl.createDiv().addClass("settings-tab-sections")}switchToTab(e){this.currentTab=e,this.containerEl.querySelectorAll(".settings-tab").forEach(n=>{n.getAttribute("data-tab-id")===e?n.addClass("settings-tab-active"):n.removeClass("settings-tab-active")}),this.containerEl.querySelectorAll(".settings-tab-section").forEach(n=>{n.getAttribute("data-tab-id")===e?(n.addClass("settings-tab-section-active"),n.style.display="block"):(n.removeClass("settings-tab-section-active"),n.style.display="none")});let r=this.containerEl.querySelector(".settings-tabs-categorized-container"),i=this.containerEl.querySelector(".task-genius-settings-header");e==="general"?(r&&(r.style.display="flex"),i&&(i.style.display="block")):(r&&(r.style.display="none"),i&&(i.style.display="none")),this.containerEl.querySelectorAll(".settings-tab-section-active").length}openTab(e){this.currentTab=e,this.display()}createTabSection(e){let t=this.containerEl.querySelector(".settings-tab-sections");if(!t)return this.containerEl;let a=t.createDiv();a.addClass("settings-tab-section"),this.currentTab===e&&a.addClass("settings-tab-section-active"),a.setAttribute("data-tab-id",e);let r=this.tabs.find(i=>i.id===e);if((r==null?void 0:r.category)&&a.setAttribute("data-category",r.category),e!=="general"){let i=a.createDiv();i.addClass("settings-tab-section-header");let n=new _a.ButtonComponent(i).setClass("header-button").onClick(()=>{this.currentTab="general",this.display()}),o=n.buttonEl.createEl("span");o.addClass("header-button-icon"),(0,_a.setIcon)(o,"arrow-left");let l=n.buttonEl.createEl("span");l.addClass("header-button-text"),l.setText(c("Back to main settings"))}return a}display(){let{containerEl:e}=this;e.empty(),this.currentTab||(this.currentTab="general"),this.createCategorizedTabsUI();let t=this.createTabSection("general");this.displayGeneralSettings(t);let a=this.createTabSection("progress-bar");this.displayProgressBarSettings(a);let r=this.createTabSection("task-status");this.displayTaskStatusSettings(r);let i=this.createTabSection("task-filter");this.displayTaskFilterSettings(i);let n=this.createTabSection("file-filter");this.displayFileFilterSettings(n);let o=this.createTabSection("task-handler");this.displayTaskHandlerSettings(o);let l=this.createTabSection("quick-capture");this.displayQuickCaptureSettings(l);let d=this.createTabSection("task-timer");this.displayTaskTimerSettings(d);let u=this.createTabSection("time-parsing");this.displayTimeParsingSettings(u);let p=this.createTabSection("timeline-sidebar");this.displayTimelineSidebarSettings(p);let m=this.createTabSection("workflow");this.displayWorkflowSettings(m);let f=this.createTabSection("date-priority");this.displayDatePrioritySettings(f);let h=this.createTabSection("project");this.displayProjectSettings(h);let k=this.createTabSection("view-settings");this.displayViewSettings(k);let g=this.createTabSection("reward");this.displayRewardSettings(g);let y=this.createTabSection("habit");this.displayHabitSettings(y);let w=this.createTabSection("ics-integration");if(this.displayIcsSettings(w),_a.Platform.isDesktopApp){let x=this.createTabSection("mcp-integration");this.displayMcpSettings(x)}let v=this.createTabSection("beta-test");this.displayBetaTestSettings(v);let T=this.createTabSection("about");this.displayAboutSettings(T),this.switchToTab(this.currentTab)}displayGeneralSettings(e){}displayProgressBarSettings(e){VT(this,e)}displayTaskStatusSettings(e){aC(this,e)}displayDatePrioritySettings(e){SC(this,e)}displayTaskFilterSettings(e){eC(this,e)}displayFileFilterSettings(e){w3(this,e)}displayWorkflowSettings(e){CC(this,e)}displayQuickCaptureSettings(e){$T(this,e)}displayTaskTimerSettings(e){this.renderTaskTimerSettingsTab(e)}displayTimeParsingSettings(e){v3(this,e)}displayTimelineSidebarSettings(e){EC(this,e)}displayTaskHandlerSettings(e){tC(this,e)}displayViewSettings(e){vC(this,e)}displayProjectSettings(e){xC(this,e)}displayIcsSettings(e){new Dg(this.plugin,e,()=>{this.currentTab="general",this.display()}).display()}displayMcpSettings(e){x3(e,this.plugin,()=>this.applySettingsUpdate())}displayAboutSettings(e){jT(this,e)}displayRewardSettings(e){YT(this,e)}displayHabitSettings(e){BT(this,e)}displayBetaTestSettings(e){OT(this,e)}renderTaskTimerSettingsTab(e){var a;let t=e.createDiv();if(t.addClass("task-timer-settings-section"),new _a.Setting(t).setName("Enable Task Timer").setDesc("Enable task timer functionality for tracking time spent on tasks").addToggle(r=>{var i;r.setValue(((i=this.plugin.settings.taskTimer)==null?void 0:i.enabled)||!1).onChange(async n=>{this.plugin.settings.taskTimer||(this.plugin.settings.taskTimer={enabled:!1,metadataDetection:{frontmatter:"task-timer",folders:[],tags:[]},timeFormat:"{h}hrs{m}mins",blockRefPrefix:"timer"}),this.plugin.settings.taskTimer.enabled=n,this.applySettingsUpdate(),this.display()})}),(a=this.plugin.settings.taskTimer)==null?void 0:a.enabled){let r=t.createDiv();r.addClass("task-timer-metadata-section");let i=r.createEl("h3");i.setText("Metadata Detection"),i.addClass("task-timer-section-heading"),new _a.Setting(r).setName("Frontmatter field").setDesc("Field name in frontmatter to check for enabling task timer (e.g., 'task-timer: true')").addText(T=>{var x,C;T.setValue(((C=(x=this.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:C.frontmatter)||"task-timer").onChange(async S=>{var E;((E=this.plugin.settings.taskTimer)==null?void 0:E.metadataDetection)&&(this.plugin.settings.taskTimer.metadataDetection.frontmatter=S,this.applySettingsUpdate())})}),new _a.Setting(r).setName("Folder paths").setDesc("Comma-separated list of folder paths where task timer should be enabled").addTextArea(T=>{var x,C,S;T.setValue(((S=(C=(x=this.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:C.folders)==null?void 0:S.join(", "))||"").onChange(async E=>{var P;((P=this.plugin.settings.taskTimer)==null?void 0:P.metadataDetection)&&(this.plugin.settings.taskTimer.metadataDetection.folders=E.split(",").map(I=>I.trim()).filter(I=>I),this.applySettingsUpdate())}),T.inputEl.rows=3}),new _a.Setting(r).setName("Tags").setDesc("Comma-separated list of tags that enable task timer").addTextArea(T=>{var x,C,S;T.setValue(((S=(C=(x=this.plugin.settings.taskTimer)==null?void 0:x.metadataDetection)==null?void 0:C.tags)==null?void 0:S.join(", "))||"").onChange(async E=>{var P;((P=this.plugin.settings.taskTimer)==null?void 0:P.metadataDetection)&&(this.plugin.settings.taskTimer.metadataDetection.tags=E.split(",").map(I=>I.trim()).filter(I=>I),this.applySettingsUpdate())}),T.inputEl.rows=3});let n=t.createDiv();n.addClass("task-timer-format-section");let o=n.createEl("h3");o.setText("Time Format"),o.addClass("task-timer-section-heading"),new _a.Setting(n).setName("Time format template").setDesc("Template for displaying completed task time. Use {h} for hours, {m} for minutes, {s} for seconds").addText(T=>{var x;T.setValue(((x=this.plugin.settings.taskTimer)==null?void 0:x.timeFormat)||"{h}hrs{m}mins").onChange(async C=>{this.plugin.settings.taskTimer&&(this.plugin.settings.taskTimer.timeFormat=C,this.applySettingsUpdate())})});let l=n.createDiv();l.addClass("task-timer-examples");let d=l.createDiv();d.addClass("task-timer-examples-title"),d.setText("Format Examples:");let u=l.createEl("ul");[{format:"{h}hrs{m}mins",result:"2hrs30mins"},{format:"{h}h {m}m {s}s",result:"2h 30m 45s"},{format:"{h}:{m}:{s}",result:"2:30:45"},{format:"({m}mins)",result:"(150mins)"}].forEach(T=>{let x=u.createEl("li");x.createEl("code").setText(T.format),x.appendText(" \u2192 "+T.result)});let m=t.createDiv();m.addClass("task-timer-blockref-section");let f=m.createEl("h3");f.setText("Block References"),f.addClass("task-timer-section-heading"),new _a.Setting(m).setName("Block reference prefix").setDesc("Prefix for generated block reference IDs (e.g., 'timer' creates ^timer-123456-7890)").addText(T=>{var x;T.setValue(((x=this.plugin.settings.taskTimer)==null?void 0:x.blockRefPrefix)||"timer").onChange(async C=>{this.plugin.settings.taskTimer&&(this.plugin.settings.taskTimer.blockRefPrefix=C,this.applySettingsUpdate())})});let h=t.createDiv();h.addClass("task-timer-commands-section");let k=h.createEl("h3");k.setText("Data Management"),k.addClass("task-timer-section-heading");let g=h.createDiv();g.addClass("task-timer-commands-desc"),g.createEl("p").setText("Use the command palette to access timer data management:");let w=g.createEl("ul");[{name:"Export task timer data",desc:"Export all timer data to JSON"},{name:"Import task timer data",desc:"Import timer data from JSON file"},{name:"Export task timer data (YAML)",desc:"Export to YAML format"},{name:"Create task timer backup",desc:"Create a backup of active timers"},{name:"Show task timer statistics",desc:"Display timer usage statistics"}].forEach(T=>{let x=w.createEl("li");x.createEl("strong").setText(T.name),x.appendText(" - "+T.desc)})}}};var _3=A(require("@codemirror/state"));var Ri=A(require("obsidian")),O3=A(require("@codemirror/state")),N3=A(require("@codemirror/state"));var Ra=A(require("@codemirror/view")),zg=A(require("obsidian")),S3=A(require("@codemirror/state")),qg=A(require("@codemirror/language"));Q();var ti=S3.Annotation.define(),Lu={highest:{emoji:"\u{1F53A}",text:c("Highest priority"),regex:"\u{1F53A}",dataviewValue:"highest",numericValue:5},high:{emoji:"\u23EB",text:c("High priority"),regex:"\u23EB",dataviewValue:"high",numericValue:4},medium:{emoji:"\u{1F53C}",text:c("Medium priority"),regex:"\u{1F53C}",dataviewValue:"medium",numericValue:3},none:{emoji:"",text:c("No priority"),regex:"",dataviewValue:"none",numericValue:0},low:{emoji:"\u{1F53D}",text:c("Low priority"),regex:"\u{1F53D}",dataviewValue:"low",numericValue:2},lowest:{emoji:"\u23EC\uFE0F",text:c("Lowest priority"),regex:"\u23EC\uFE0F",dataviewValue:"lowest",numericValue:1}},Hu={A:{text:c("Priority A"),regex:"\\[#A\\]",numericValue:4},B:{text:c("Priority B"),regex:"\\[#B\\]",numericValue:3},C:{text:c("Priority C"),regex:"\\[#C\\]",numericValue:2}},x7=Object.values(Lu).map(s=>s.regex).filter(s=>s).join("|"),S7=Object.values(Hu).map(s=>s.regex).join("|"),E7=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/gi;function D7(s,e){let t=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/i;return e&&t.test(s)?"dataview":/(🔺|⏫|🔼|🔽|⏬️)/.test(s)?"tasks":/\[#([ABC])\]/.test(s)?"letter":!e&&t.test(s)?"dataview":"none"}var Gg=class extends Ra.WidgetType{constructor(e,t,a,r,i,n,o){super();this.app=e;this.plugin=t;this.view=a;this.from=r;this.to=i;this.currentPriority=n;this.mode=o}eq(e){return this.from===e.from&&this.to===e.to&&this.currentPriority===e.currentPriority&&this.mode===e.mode}toDOM(){try{let e=createEl("span",{cls:"priority-widget",attr:{"aria-label":c("Task Priority")}}),t;if(this.mode==="letter"){let a=document.createElement("span");a.classList.add("cm-formatting","cm-formatting-link","cm-hmd-barelink","cm-link","cm-list-1"),a.setAttribute("spellcheck","false"),a.textContent="[",t=document.createElement("span"),t.classList.add("cm-hmd-barelink","cm-link","cm-list-1"),t.textContent=this.currentPriority.slice(1,-1);let r=document.createElement("span");r.classList.add("cm-formatting","cm-formatting-link","cm-hmd-barelink","cm-link","cm-list-1"),r.setAttribute("spellcheck","false"),r.textContent="]",e.appendChild(a),e.appendChild(t),e.appendChild(r)}else this.mode==="dataview"?(t=document.createElement("span"),t.classList.add("task-priority-dataview"),t.textContent=this.currentPriority,e.appendChild(t)):(t=document.createElement("span"),t.classList.add("task-priority"),t.textContent=this.currentPriority,e.appendChild(t));return t.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),this.showPriorityMenu(a)}),e}catch(e){return console.error("Error creating priority widget DOM:",e),createEl("span",{cls:"priority-widget-error",text:this.currentPriority})}}showPriorityMenu(e){try{let t=new zg.Menu,a=this.plugin.settings.preferMetadataFormat==="dataview";this.mode==="letter"?(Object.entries(Hu).forEach(([r,i])=>{t.addItem(n=>{n.setTitle(i.text),n.onClick(()=>{this.setPriority(`[#${r}]`,"letter")})})}),t.addItem(r=>{r.setTitle(c("Remove Priority")),r.onClick(()=>{this.removePriority("letter")})})):(Object.entries(Lu).forEach(([r,i])=>{r!=="none"&&t.addItem(n=>{let o=a?i.text:`${i.emoji} ${i.text}`;n.setTitle(o),n.onClick(()=>{a?this.setPriority(`[priority:: ${i.dataviewValue}]`,"dataview"):this.setPriority(i.emoji,"tasks")})})}),t.addItem(r=>{r.setTitle(c("Remove Priority")),r.onClick(()=>{this.removePriority(a?"dataview":"tasks")})})),t.showAtMouseEvent(e)}catch(t){console.error("Error showing priority menu:",t)}}setPriority(e,t){try{if(!this.view||this.view.state.doc.length<this.to){console.warn("Invalid view state, skipping priority update");return}let a=this.view.state.doc.lineAt(this.from),r=a.text;r=this.removeExistingPriority(r),r=r.trimEnd()+" "+e;let i=this.view.state.update({changes:{from:a.from,to:a.to,insert:r},annotations:[ti.of(!0)]});this.view.dispatch(i)}catch(a){console.error("Error setting priority:",a)}}removePriority(e){try{if(!this.view||this.view.state.doc.length<this.to){console.warn("Invalid view state, skipping priority removal");return}let t=this.view.state.doc.lineAt(this.from),a=this.removeExistingPriority(t.text).trimEnd(),r=this.view.state.update({changes:{from:t.from,to:t.to,insert:a},annotations:[ti.of(!0)]});this.view.dispatch(r)}catch(t){console.error("Error removing priority:",t)}}removeExistingPriority(e){let t=e;return t=t.replace(/\[priority::\s*\w+\]/i,""),t=t.replace(/(🔺|⏫|🔼|🔽|⏬️)/g,""),t=t.replace(/\[#([ABC])\]/g,""),t=t.replace(/\s+/g," "),t}};function E3(s,e){if(!e.settings.enablePriorityPicker)return[];class t{constructor(n){this.decorations=Ra.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.emojiMatch=new Ra.MatchDecorator({regexp:new RegExp(`(${x7})`,"g"),decorate:(n,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m=this.view.state.doc.lineAt(o),f=D7(m.text,p);n(o,l,Ra.Decoration.replace({widget:new Gg(s,e,u,o,l,d[0],f)}))}catch(p){console.warn("Error decorating emoji priority:",p)}}});this.letterMatch=new Ra.MatchDecorator({regexp:new RegExp(`(${S7})`,"g"),decorate:(n,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;n(o,l,Ra.Decoration.replace({widget:new Gg(s,e,u,o,l,d[0],"letter")}))}catch(p){console.warn("Error decorating letter priority:",p)}}});this.dataviewMatch=new Ra.MatchDecorator({regexp:E7,decorate:(n,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;n(o,l,Ra.Decoration.replace({widget:new Gg(s,e,u,o,l,d[0],"dataview")}))}catch(p){console.warn("Error decorating dataview priority:",p)}}});this.view=n,this.plugin=e,this.updateDecorations(n)}update(n){if(!this.isDestroyed)try{if(n.docChanged||n.viewportChanged||n.selectionSet||n.transactions.some(o=>o.annotation(ti))){let o=Date.now();o-this.lastUpdate>this.updateThreshold?(this.lastUpdate=o,this.updateDecorations(n.view,n)):setTimeout(()=>{this.view&&!this.isDestroyed&&this.updateDecorations(this.view)},this.updateThreshold)}}catch(o){console.error("Error in priority picker update:",o)}}destroy(){this.isDestroyed=!0,this.decorations=Ra.Decoration.none}updateDecorations(n,o){if(!this.isDestroyed){if(!this.isLivePreview(n.state)){this.decorations=Ra.Decoration.none;return}try{let l=this.plugin.settings.preferMetadataFormat==="dataview";if(o&&!o.docChanged&&this.decorations.size>0){if(l){let p=this.dataviewMatch.updateDeco(o,this.decorations);if(p.size>0){this.decorations=p;return}}let d=this.emojiMatch.updateDeco(o,this.decorations);if(d.size>0){this.decorations=d;return}let u=this.letterMatch.updateDeco(o,this.decorations);if(u.size>0){this.decorations=u;return}if(!l){let p=this.dataviewMatch.updateDeco(o,this.decorations);this.decorations=p}}else{let d=Ra.Decoration.none;l?(d=this.dataviewMatch.createDeco(n),d.size===0&&(d=this.emojiMatch.createDeco(n))):(d=this.emojiMatch.createDeco(n),d.size===0&&(d=this.dataviewMatch.createDeco(n)));let u=this.letterMatch.createDeco(n);if(u.size>0){let p=[],m=u.iter();for(;m.value!==null;)p.push({from:m.from,to:m.to,value:m.value}),m.next();p.length>0&&(d=d.update({add:p}))}this.decorations=d}}catch(l){console.warn("Error updating priority decorations, clearing decorations",l),this.decorations=Ra.Decoration.none}}}isLivePreview(n){try{return n.field(zg.editorLivePreviewField)}catch(o){return console.warn("Error checking live preview state:",o),!1}}shouldRender(n,o,l){try{if(o<0||l>n.state.doc.length||o>=l)return!1;let u=(0,qg.syntaxTree)(n.state).resolveInner(o+1).type.prop(qg.tokenClassNodeProp);if(u){let f=u.split(" ");if(f.includes("hmd-codeblock")||f.includes("hmd-frontmatter"))return!1}return!n.state.selection.ranges.some(f=>!(f.to<=o||f.from>=l))&&this.isLivePreview(n.state)}catch(d){return console.warn("Error checking if priority should render",d),!1}}}let a={decorations:i=>{try{return i.isDestroyed?Ra.Decoration.none:i.decorations.update({filter:(n,o,l)=>{var d;try{if(((d=l.spec)==null?void 0:d.widget).error||n<0||o>i.view.state.doc.length||n>=o)return!1;let p=i.view.state.selection;for(let m of p.ranges)if(!(m.to<=n||m.from>=o))return!1;return!0}catch(u){return console.warn("Error filtering priority decoration",u),!1}}})}catch(n){return console.error("Failed to update decorations filter",n),i.decorations}}};return Ra.ViewPlugin.fromClass(t,a)}var I7=A(require("@codemirror/language"));Q();var L3=N3.Annotation.define();function H3(s,e){return O3.EditorState.transactionFilter.of(t=>R7(t,s,e))}function ho(s){let e=/\[stage::([^\]]+)\]/,t=s.match(e);if(t){let i=t[1];if(i.includes(".")){let n=i.split(".");return{workflowType:"fromParent",currentStage:n[0],subStage:n[1]}}return{workflowType:"fromParent",currentStage:i,subStage:void 0}}let a=/#workflow\/([^\/\s]+)/,r=s.match(a);return r?{workflowType:r[1],currentStage:"root",subStage:void 0}:null}function jC(s,e){let t=Math.min(e,s.lines);if(t<=0)return null;let a=t-1,i=s.line(a+1).text.match(/^([\s|\t]*)/),n=i?i[1].length:0;for(let o=a;o>=0;o--){let d=s.line(o+1).text,u=d.match(/^([\s|\t]*)/),p=u?u[1].length:0,m=d.match(/#workflow\/([^\/\s]+)/);if(m&&(m[0],m[1],p<n||p===n&&o<a))return m[1]}return null}function R7(s,e,t){var o,l;if(!t.settings.workflow.enableWorkflow||!s.docChanged||s.annotation(L3)||s.annotation(ti)||((o=s.annotation(gt))==null?void 0:o.startsWith("workflowChange")))return s;let a=[];s.changes.iterChanges((d,u,p,m,f)=>{a.push({fromA:d,toA:u,fromB:p,toB:m,text:f.toString()})});let r=t.settings.taskStatuses.completed.split("|");if(!a.some(d=>r.includes(d.text)||r.some(u=>d.text===`- [${u}]`||d.text===`[${u}]`)))return s;let i=[];for(let d of a)if(r.includes(d.text)||r.some(u=>d.text===`- [${u}]`||d.text===`[${u}]`)){let u=s.newDoc.lineAt(d.fromB),p=u.text,m=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(p.match(m)){let h=Fi(p,s.newDoc,u.number,t);h&&i.push({line:u.number,lineText:p,workflowType:h.workflowType,currentStage:h.currentStage.id,currentSubStage:(l=h.currentSubStage)==null?void 0:l.id})}}let n=[];if(i.length>0)for(let d of i){let u=s.newDoc.line(d.line),p=Fi(d.lineText,s.newDoc,d.line,t);if(!p)continue;let{workflowType:m,currentStage:f,currentSubStage:h,workflow:k,isRootTask:g}=p,y=B3(u.text,s.newDoc,u.from,u.number,m,t);n.push(...y);let w=/\s*\[stage::[^\]]+\]/,v=u.text.match(w);if(v&&v.index&&t.settings.workflow.autoRemoveLastStageMarker&&n.push({from:u.from+v.index,to:u.from+v.index+v[0].length,insert:""}),f.type==="terminal"){let $=u.text.match(/^([\s|\t]*)/),B=$?$[1].length:0,q=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;for(let U=d.line-1;U>=1;U--){let z=s.newDoc.line(U),te=z.text.match(/^([\s|\t]*)/);if((te?te[1].length:0)<B&&z.text.includes(`#workflow/${m}`)){z.text;let ue=z.text.match(q);if(ue){let De=ue[3];if(!t.settings.taskStatuses.completed.split("|").includes(De)){let Le=z.from+ue[0].indexOf("[");n.push({from:Le+1,to:Le+2,insert:"x"})}break}}}continue}let{nextStageId:T,nextSubStageId:x}=tk(f,k,h),C=k.stages.find($=>$.id===T);if(!C)continue;let S;x&&C.subStages&&(S=C.subStages.find($=>$.id===x));let E=d.lineText.match(/^([\s|\t]*)/),P=E?E[1]:"",I=Hs(e),L=La(e),W=g?P+L:P,O=ak(C,W,t,!0,S),H=F7(u,s.newDoc,P);s.annotation(gt)!=="autoCompleteParent.DONE"&&n.push({from:H,to:H,insert:`
${O}`})}return n.length>0?{changes:[s.changes,...n],selection:s.selection,annotations:L3.of("workflowChange")}:s}function B3(s,e,t,a,r,i){let n=[],o=i.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss",l=`\u{1F6EB} ${(0,Ri.moment)().format(o)}`.length,d=s.indexOf("\u{1F6EB}");if(d===-1)return n;let u=d+l,p=s.substring(d,u),m=(0,Ri.moment)(p,o),f=(0,Ri.moment)(),h=Ri.moment.duration(f.diff(m));if(i.settings.workflow.removeTimestampOnTransition){let k=t+d,g=k+l;n.push({from:k-1,to:g,insert:""})}if(i.settings.workflow.calculateSpentTime){let k=Ri.moment.utc(h.asMilliseconds()).format(i.settings.workflow.spentTimeFormat),g=s.indexOf("[stage::"),y=t+(g!==-1?g:s.length);if((!ll(s,a,e,i)||!i.settings.workflow.calculateFullSpentTime)&&n.push({from:y,to:y,insert:` (\u23F1\uFE0F ${k})`}),i.settings.workflow.calculateFullSpentTime&&ll(s,a,e,i)){let w=`#workflow/${r}`,v=Ri.moment.duration(0),T=!1,x=/\(⏱️\s+([0-9:]+)\)/,C=s.match(/^(\s*)/),S=C?C[1].length:0;for(let E=a-1;E>=1;E--){if(E>=e.lines)continue;if(e.line(E).text.includes(w)){for(let I=E;I<=a;I++){if(I>=e.lines)continue;let L=e.line(I),W=L.text.match(/^(\s*)/);if((W?W[1].length:0)>S)continue;let H=L.text.match(x);if(H&&H[1]){let $=H[1].split(":"),B=0;$.length===3?B=(parseInt($[0])*3600+parseInt($[1])*60+parseInt($[2]))*1e3:$.length===2&&(B=(parseInt($[0])*60+parseInt($[1]))*1e3),B>0&&(v.add(B),T=!0)}}break}}if(T?v.add(h):(v=h,T=!0),T){let E=Ri.moment.utc(v.asMilliseconds()).format(i.settings.workflow.spentTimeFormat);n.push({from:y,to:y,insert:` (${c("Total")}: ${E})`})}}}return n}function W3(s,e,t){if(!t.settings.workflow.enableWorkflow)return;let a=e.getCursor(),r=e.getLine(a.line),i=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(!r.match(i))return;let o=ho(r);if(!o){s.addItem(h=>{h.setTitle(c("Workflow")),h.setIcon("list-ordered");let k=h.setSubmenu();k.addItem(g=>{g.setTitle(c("Add as workflow root")),g.setIcon("plus-circle");let y=g.setSubmenu();t.settings.workflow.definitions.forEach(w=>{y.addItem(v=>{v.setTitle(w.name),v.onClick(()=>{e.cm.dispatch({changes:{from:e.posToOffset(a),to:e.posToOffset(a),insert:`#workflow/${w.id}`}})})})})}),k.addSeparator(),k.addItem(g=>{g.setTitle(c("Convert to workflow template")),g.setIcon("convert"),g.onClick(()=>{Promise.resolve().then(()=>(Bu(),ek)).then(({convertTaskToWorkflowCommand:y})=>{y(!1,e,null,t)})})}),k.addItem(g=>{g.setTitle(c("Start workflow here")),g.setIcon("play"),g.onClick(()=>{Promise.resolve().then(()=>(Bu(),ek)).then(({startWorkflowHereCommand:y})=>{y(!1,e,null,t)})})}),k.addItem(g=>{g.setTitle(c("Create quick workflow")),g.setIcon("zap"),g.onClick(()=>{Promise.resolve().then(()=>(Bu(),ek)).then(({createQuickWorkflowCommand:y})=>{y(!1,e,null,t)})})})});return}let l=Fi(r,e.cm.state.doc,a.line+1,t);if(!l)return;let{workflowType:d,currentStage:u,currentSubStage:p,workflow:m,isRootTask:f}=l;s.addItem(h=>{h.setTitle(c("Workflow")),h.setIcon("list-ordered");let k=h.setSubmenu();if(u.id==="_root_task_"){if(m.stages.length>0){let g=m.stages[0];k.addItem(y=>{y.setTitle(`${c("Move to stage")} ${g.name}`),y.onClick(()=>{let w=Ps(t,e,r,a.line,g,!0,void 0,void 0);e.cm.dispatch({changes:w,annotations:gt.of("workflowChange")})})})}}else if(u.canProceedTo)u.canProceedTo.forEach(g=>{let y=m.stages.find(w=>w.id===g);y&&k.addItem(w=>{let v=ll(r,a.line,e.cm.state.doc,t);w.setTitle(v?`${c("Complete stage")}: ${y.name}`:`${c("Move to stage")} ${y.name}`),w.onClick(()=>{let T=Ps(t,e,r,a.line,y,!1,void 0,p);e.cm.dispatch({changes:T,annotations:gt.of(v?"workflowChange.completeStage":"workflowChange.moveToStage")})})})});else if(u.type==="terminal")k.addItem(g=>{g.setTitle(c("Complete workflow")),g.onClick(()=>{let y=Ps(t,e,r,a.line,u,!1,void 0,p);e.cm.dispatch({changes:y,annotations:gt.of("workflowChange")})})});else{let{nextStageId:g}=tk(u,m,p);if(g&&g!==u.id){let y=m.stages.find(w=>w.id===g);y&&k.addItem(w=>{w.setTitle(`${c("Move to")} ${y.name}`),w.onClick(()=>{let v=Ps(t,e,r,a.line,y,!1,void 0,void 0);e.cm.dispatch({changes:v,annotations:gt.of("workflowChange")})})})}}k.addSeparator(),k.addItem(g=>{g.setTitle(c("Add child task with same stage")),g.setIcon("plus-circle"),g.onClick(()=>{if(o.currentStage==="root"){if(m.stages.length>0){let y=m.stages[0],w=Ps(t,e,r,a.line,y,!1,void 0,void 0);e.cm.dispatch({changes:w,annotations:gt.of("workflowChange")})}}else if(u.id==="_root_task_"){if(m.stages.length>0){let y=m.stages[0],w=Ps(t,e,r,a.line,y,!1,void 0,void 0);e.cm.dispatch({changes:w,annotations:gt.of("workflowChange")})}}else{let y=Ps(t,e,r,a.line,u,!1,p,void 0);e.cm.dispatch({changes:y,annotations:gt.of("workflowChange")})}})})})}function ll(s,e,t,a){a.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=ho(s);if(!r)return!0;let i=r.workflowType,n=r.currentStage,o=r.subStage;if(i==="fromParent"){t.lines;let m=Math.min(e,t.lines),f=jC(t,m);if(!f)return!0;i=f}let l=a.settings.workflow.definitions.find(m=>m.id===i);if(a.settings.workflow.definitions.map(m=>({id:m.id,name:m.name})),!l)return!0;if(l.name,n==="root")return!1;let d=l.stages.find(m=>m.id===n);if(!d)return console.warn(`Stage definition not found: ${n} in workflow ${i}`),!0;if(d.type==="terminal")return!0;if(d.type==="cycle"&&d.subStages&&o){let m=d.subStages.find(g=>g.id===o);if(!m)return console.warn(`SubStage definition not found: ${o} in stage ${n}`),!0;let f=!m.next,h=d.canProceedTo&&d.canProceedTo.length>0,k=typeof d.next=="string"||Array.isArray(d.next)&&d.next.length>0;return!!(f&&!h&&!k&&l.stages.findIndex(y=>y.id===d.id)===l.stages.length-1)}if(d.next||d.canProceedTo&&d.canProceedTo.length>0)return!1;let p=l.stages.findIndex(m=>m.id===d.id);return p<0?(console.warn(`Current stage ${d.id} not found in workflow stages array.`),!0):p===l.stages.length-1}function tk(s,e,t){let a,r;if(s.id==="_root_task_")a=e.stages[0].id;else if(s.type==="terminal")a=s.id;else if(s.type==="cycle"&&t)if(t.next)a=s.id,r=t.next;else if(s.canProceedTo&&s.canProceedTo.length>0)a=s.canProceedTo[0],r=void 0;else{let i=s.subStages?s.subStages.length:0;i===1?(a=s.id,r=t.id):i>1?(a=s.id,r=s.subStages[0].id):(a=s.id,r=void 0)}else if(s.type==="linear")if(typeof s.next=="string")a=s.next;else if(Array.isArray(s.next)&&s.next.length>0)a=s.next[0];else if(s.canProceedTo&&s.canProceedTo.length>0)a=s.canProceedTo[0];else{let i=e.stages.findIndex(n=>n.id===s.id);i>=0&&i<e.stages.length-1?a=e.stages[i+1].id:a=s.id}else s.type==="cycle"&&s.canProceedTo&&s.canProceedTo.length>0?a=s.canProceedTo[0]:a=s.id;return{nextStageId:a,nextSubStageId:r}}function Ps(s,e,t,a,r,i,n,o){let l=e.cm.state.doc,d=s.app,u=Math.min(a+1,l.lines),p=l.line(u),m=t.match(/^([\s|\t]*)/),f=La(d),h=Hs(d),k=m?m[1]+(i?f:""):"";s.settings.workflow.autoAddTimestamp&&""+(0,Ri.moment)().format(s.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss");let g=[],y=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,w=t.match(y);if(w){let C=p.from+w[0].indexOf("[");g.push({from:C+1,to:C+2,insert:"x"})}let v="",T=t.match(/#workflow\/([^\/\s]+)/);T?v=T[1]:v=jC(l,u)||r.id.split(".")[0];let x=B3(t,l,p.from,a,v,s);if(g.push(...x),o&&!n&&!ll(t,a,l,s)){let C=/\s*\[stage::[^\]]+\]/,S=t.match(C);S&&S.index&&s.settings.workflow.autoRemoveLastStageMarker&&g.push({from:p.from+S.index,to:p.from+S.index+S[0].length,insert:""}),k=k.slice(0,-h)}if(!ll(t,a,l,s)){let C=ak(r,k,s,!0,n);g.push({from:p.to,to:p.to,insert:`
${C}`})}if(s==null?void 0:s.settings.workflow.autoRemoveLastStageMarker){let C=/\s*\[stage::[^\]]+\]/,S=t.match(C);S&&S.index&&g.push({from:p.from+S.index,to:p.from+S.index+S[0].length,insert:""})}return g}function Fi(s,e,t,a){a.settings.workflow.definitions.map(m=>({id:m.id,name:m.name}));let r=ho(s);if(!r)return null;let i=r.workflowType,n=r.currentStage,o=r.subStage;if(i==="fromParent"){e.lines;let m=Math.min(t,e.lines),f=jC(e,m);if(!f)return null;i=f}let l=a.settings.workflow.definitions.find(m=>m.id===i);if(!l)return null;l.name;let d=n==="root"||s.includes(`#workflow/${i}`)&&!s.includes("[stage::"),u;if(n==="root"||d)u={id:"_root_task_",name:"Root Task",type:"linear",next:l.stages.length>0?l.stages[0].id:void 0};else{let m=l.stages.find(f=>f.id===n);if(!m)return l.stages.map(f=>f.id),null;u=m}let p;return o&&u.subStages&&(p=u.subStages.find(m=>m.id===o)),{workflowType:i,currentStage:u,currentSubStage:p,workflow:l,isRootTask:d}}function ak(s,e,t,a=!0,r){let i=t.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${(0,Ri.moment)().format(t.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`:"",n=La(t.app);if(r)return`${e}- [ ] ${s.name} (${r.name}) [stage::${s.id}.${r.id}]${i}`;{let o=`${e}- [ ] ${s.name} [stage::${s.id}]${i}`;if(a&&s.type==="cycle"&&s.subStages&&s.subStages.length>0){let l=s.subStages[0];o+=`
${e+n}- [ ] ${s.name} (${l.name}) [stage::${s.id}.${l.id}]${i}`}return o}}function F7(s,e,t){let a=s.to,r=t.length,i=s.number,n=!1;for(let o=s.number+1;o<=Math.min(s.number+20,e.lines);o++){let d=e.line(o).text.match(/^([\s|\t]*)/);if((d?d[1].length:0)>r)i=o,n=!0;else if(n)break}return n&&(a=e.line(i).to),a}function V3(s,e){return _3.EditorState.transactionFilter.of(t=>j7(t,s,e))}function j7(s,e,t){if(!s.docChanged||!t.settings.autoCompleteParent)return s;let a=s.annotation(gt);if(typeof a=="string"&&a.includes("autoCompleteParent")||s.isUserEvent("input.paste")||s.isUserEvent("set")||O7(s))return s;let r=N7(s);if(!r)return s;let{doc:i,lineNumber:n}=r,o=L7(i,n);if(!o)return s;let{lineNumber:l,indentationLevel:d}=o;if(t.settings.autoCompleteParent&&U3(i,l,d,t))return H7(s,l,i);if(t.settings.markParentInProgressWhenPartiallyComplete){let u=W7(i,l),p=U3(i,l,d,t),m=B7(i,l,d,e),f=V7(i,l,d,e);if(u===" "&&m||u==="x"&&!p&&f){let h=t.settings.taskStatuses.inProgress.split("|")[0]||"/";return _7(s,l,i,[h])}}return s}function O7(s){let e=[];s.changes.iterChanges((r,i,n,o,l)=>{if(r<i){let d=s.startState.doc.sliceString(r,i);e.push({type:"delete",content:d,fromA:r,toA:i,fromB:n,toB:o})}l.length>0&&e.push({type:"insert",content:l.toString(),fromA:r,toA:i,fromB:n,toB:o})});let t=e.filter(r=>r.type==="delete"),a=e.filter(r=>r.type==="insert");if(t.length===0||a.length===0)return!1;for(let r of t)for(let i of a){let n=r.content.split(`
`).filter(l=>l.trim()),o=i.content.split(`
`).filter(l=>l.trim());if(n.length===o.length&&n.length>0){let l=!0;for(let d=0;d<n.length;d++){let u=n[d].trim(),p=o[d].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function N7(s){let e=null;return s.changes.iterChanges((t,a,r,i,n)=>{if(n.length>0&&e===null){let m=n.toString(),f=m.match(/\n[\s|\t]*([-*+]|\d+\.)\s\[ \]/);if(f)try{e=s.newDoc.lineAt(r+m.indexOf(f[0])+1).number;return}catch(k){}if(m.match(/^[\s|\t]*([-*+]|\d+\.)\s\[ \]/))try{e=s.newDoc.lineAt(r).number;return}catch(k){}}let o=r,l=s.newDoc.lineAt(o),d=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i;if(d.match(u)){let m=null;try{let f=t;f>=0&&f<s.startState.doc.length&&(m=s.startState.doc.lineAt(f))}catch(f){}(!m||n.length>0&&l.from+d.indexOf("[")<=i&&l.from+d.indexOf("]")>=r)&&(e=l.number)}}),e===null?null:{doc:s.newDoc,lineNumber:e}}function L7(s,e){let r=s.line(e).text.match(/^[\s|\t]*/),i=r?r[0].length:0;if(i===0)return null;let n=r&&r[0].includes(" "),o=r&&r[0].includes(" ");for(let l=e-1;l>=1;l--){let u=s.line(l).text;if(u.trim()==="")continue;let p=u.match(/^[\s|\t]*/),m=p?p[0].length:0,f=p&&p[0].includes(" "),h=p&&p[0].includes(" ");if(!(m>0&&i>0&&(n&&!f||o&&!h))&&m<i){if(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i.test(u))return{lineNumber:l,indentationLevel:m};if(!u.startsWith("#")&&!u.startsWith(">"))break}}return null}function U3(s,e,t,a){let r=Hs(a.app),i=t+r,n=!1;for(let o=e+1;o<=s.lines;o++){let d=s.line(o).text;if(d.trim()==="")continue;let u=d.match(/^[\s|\t]*/),m=(u?u[0]:"").length;if(m<=t)break;if(m===i){let f=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i,h=d.match(f);if(h){n=!0;let k=h[2];if(k!=="x"&&k!=="X")return!1;if(a.settings.workflow.enableWorkflow&&a.settings.workflow.autoRemoveLastStageMarker&&!ll(d,o,s,a))return!1}}}return n}function H7(s,e,t){let a=t.line(e),r=a.text,i=r.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/);if(!i)return s;let n=i[2];if(n==="x"||n==="X")return s;let o=!1;if(s.changes.iterChanges((u,p,m,f,h)=>{let k=r.indexOf("[")+1,g=a.from+k;g>=m&&g<f&&(o=!0)}),o)return s;let l=r.indexOf("[")+1,d=a.from+l;return{changes:[s.changes,{from:d,to:d+1,insert:"x"}],selection:s.selection,annotations:[gt.of("autoCompleteParent.DONE")]}}function B7(s,e,t,a){let r=Hs(a),i=t+r;for(let n=e+1;n<=s.lines;n++){let l=s.line(n).text;if(l.trim()==="")continue;let d=l.match(/^[\s|\t]*/),u=d?d[0].length:0;if(u<=t)break;if(u===i){let p=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i,m=l.match(p);if(m&&m[2]!==" ")return!0}}return!1}function W7(s,e){let r=s.line(e).text.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/);return r?r[2]:""}function _7(s,e,t,a){let r=t.line(e),i=r.text,n=i.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/);if(!n||n[2]===a[0])return s;let l=!1;if(s.changes.iterChanges((p,m,f,h,k)=>{let g=i.indexOf("[")+1,y=r.from+g;y>=f&&y<h&&(l=!0)}),l)return s;let d=i.indexOf("[")+1,u=r.from+d;return{changes:[s.changes,{from:u,to:u+1,insert:a[0]}],selection:s.selection,annotations:[gt.of("autoCompleteParent.IN_PROGRESS")]}}function V7(s,e,t,a){let r=Hs(a),i=t+r;for(let n=e+1;n<=s.lines;n++){let l=s.line(n).text;if(l.trim()==="")continue;let d=l.match(/^[\s|\t]*/),u=d?d[0].length:0;if(u<=t)break;if(u===i&&/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i.test(l))return!0}return!1}var $3=A(require("obsidian")),Y3=A(require("@codemirror/state"));xa();function z3(s,e){return Y3.EditorState.transactionFilter.of(t=>Y7(t,s,e))}function q3(s){return{cycle:s.settings.taskStatusCycle,excludeMarksFromCycle:s.settings.excludeMarksFromCycle||[],marks:s.settings.taskStatusMarks}}function U7(s,e,t,a,r,i,n,o){if(t-e!=1||a.length!==1)return!1;let l=s.startState.selection.main;if(l&&!l.empty&&l&&e>=l.from&&t<=l.to)return""+l.from+l.to+e+t,!1;let{marks:u}=q3(o),p=Object.values(u),m=p.includes(r)||r===" ",f=p.includes(a)||a===" ";if(!m||!f)return!1;let h=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/;return n.match(h)?(""+r+a+e+t,!0):!1}function $7(s,e,t){let a=[],r=!1;if(s.changes.length>1){let n=[];s.changes.iterChanges((o,l,d,u,p)=>{n.push({fromA:o,toA:l,fromB:d,toB:u,text:p.toString()})}),n.length>1&&n.every(l=>l.text===" "||l.text===" "||l.text===""&&(s.startState.doc.sliceString(l.fromA,l.toA)===" "||s.startState.doc.sliceString(l.fromA,l.toA)===" "))&&(r=!0)}if(r)return[];let i=!1;return s.changes.iterChanges((n,o,l,d,u)=>{if(u.toString()===""&&o>n&&s.startState.doc.sliceString(n,o)==="-"){let m=s.startState.doc.lineAt(n);m.text.substring(0,n-m.from).trim()===""&&(i=!0)}}),i?[]:(s.changes.iterChanges((n,o,l,d,u)=>{let p=u.toString();if(p.includes(`
`)||p.includes("[[")||p.includes("]]")||l>s.startState.doc.length)return;let m=l,h=s.startState.doc.lineAt(m).text;if(h.trim()==="")return;let k=s.newDoc.lineAt(m),g=k.text,y=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,w=h.match(y),v=g.match(y);if(v&&!w&&p===g){let T=g.indexOf("[")+1,x=k.from+T,C=v[2];a.push({position:x,currentMark:C,wasCompleteTask:!0,tasksInfo:{isTaskChange:!0,originalFromA:n,originalToA:o,originalFromB:l,originalToB:d,originalInsertedText:p}});return}if(w){let T=null,x=null,C=!1,S=!1,E=!1;if(p.trim().match(/^(?:[\s|\t]*(?:[-*+]|\d+\.)\s+\[.(?:\])?)/)){let P=g.indexOf("[")+1;T=k.from+P,x=w[2],C=!0,S=!0}else if(p.length===1){let P=g.indexOf("[")+1;if(m===k.from+P&&p!=="["){if(n!==o){let I=s.startState.doc.sliceString(n,o);if(t){if(!U7(s,n,o,p,I,m,g,t)){""+n+o+p+I;return}""+n+o+I+p}else{""+n+o+p;return}}T=m,x=w[2],C=!0,S=!0}}else if(p.indexOf("[")!==-1&&p.indexOf("]")!==-1&&p!=="[]"){let P=g.indexOf("[")+1;T=k.from+P,x=w[2],C=!0,S=!0}e&&g===p&&(p.includes("\u2705")||p.includes("\u274C")||p.includes("\u{1F6EB}")||p.includes("\u{1F4C5}")||h.includes("\u2705")||h.includes("\u274C")||h.includes("\u{1F6EB}")||h.includes("\u{1F4C5}"))&&(E=!0),T!==null&&x!==null&&S&&a.push({position:T,currentMark:x,wasCompleteTask:C,tasksInfo:E?{isTaskChange:E,originalFromA:n,originalToA:o,originalFromB:l,originalToB:d,originalInsertedText:p}:null})}}),a)}function Y7(s,e,t){var h,k;if(!s.docChanged||s.annotation(gt)||s.annotation(ti)||s.isUserEvent("set")&&s.changes.length>1||s.isUserEvent("input.paste"))return s;if(s.changes,s.isUserEvent("input.autocomplete")){let g=!1;if(s.changes.iterChanges((y,w,v,T,x)=>{let C=x.toString();C.includes("](")&&C.startsWith("[")&&C.endsWith(")")&&(g=!0)}),g)return s}let a=!1;if(s.changes.iterChanges((g,y,w,v,T)=>{let x=T.toString();s.startState.doc.sliceString(g,y)==="-"&&x===""&&(w!==g||v!==y)&&s.newDoc.sliceString(Math.max(0,w-5),Math.min(w+5,s.newDoc.length)).includes("[")&&(a=!0)}),a)return s;let r=$7(s,!!Yn(t),t);if(r.length===0)return s;let{cycle:i,marks:n,excludeMarksFromCycle:o}=q3(t),l=i.filter(g=>!o.includes(g));if(l.length===0)return s;let d=!1;if(s.changes.length>1){let g=[];s.changes.iterChanges((v,T,x,C,S)=>{g.push({fromA:v,toA:T,fromB:x,toB:C,text:S.toString()})});let y=g.some(v=>v.text===""&&v.toA>v.fromA),w=g.some(v=>{let T=v.fromB;try{let x=s.newDoc.lineAt(T);return x.text.includes("[")&&x.text.includes("]")}catch(x){return!1}});y&&w&&(d=!0)}if(d)return s;let u=!1;if(s.changes.iterChanges((g,y,w,v,T)=>{if(g===0||s.startState.doc.sliceString(g-1,g)===`
`){let C=s.startState.doc.lineAt(g).text,S=T.toString();S.trim()===C.trim()&&S.length>C.length&&(u=!0),C.trim()===S.trim()&&C.length>S.length&&(u=!0)}}),u)return s;let p=!1;if(s.changes.iterChanges((g,y,w,v,T)=>{let x=s.startState.doc.sliceString(g,y),C=T.toString(),S=/(?:-|\*|\+|\d+\.)\s\[.\]/;if(x.includes(`
`)&&!C.includes(`
`)&&S.test(C)&&S.test(x)){let E=C.trim();x.includes(E)&&(p=!0)}g===0&&y===s.startState.doc.length&&S.test(C)&&!C.includes(`
`)&&(p=!0)}),p)return s;let m=[],f=!1;for(let g of r){let{position:y,currentMark:w,wasCompleteTask:v,tasksInfo:T}=g;if(T==null?void 0:T.isTaskChange)continue;let x=-1;for(let U=0;U<l.length;U++){let z=l[U];if(n[z]===w){x=U;break}}x===-1&&(x=0);let C=(x+1)%l.length,S=l[C],E=n[S]||" ";if(w===E){""+w;continue}let P=null;if(s.changes.iterChanges((U,z,te,fe,ue)=>{let De=ue.toString();te===y&&De.length===1&&(P=De)}),P===E){""+P+E;continue}let L=s.newDoc.lineAt(y).text,O=s.startState.doc.lineAt(Math.min(y,s.startState.doc.length)).text;if(v){for(let[te,fe]of Object.entries(n))if(fe===w)break;let U=w===" "&&(((h=T==null?void 0:T.originalInsertedText)==null?void 0:h.includes("[ ]"))||L.includes("[ ]")&&!O.includes("[ ]")),z=w===" "&&(te=>(te==null?void 0:te.includes("- [ ]"))||(te==null?void 0:te.includes("* [ ]"))||(te==null?void 0:te.includes("+ [ ]"))||/^\d+\.\s+\[\s\]/.test(te||""))(T==null?void 0:T.originalInsertedText);if(U||z)continue}let H=y,$=s.newDoc.lineAt(H),B=$.to;if(H<$.from||H>=B){""+H+$.from+B;continue}let q=Math.min(H+1,B);if(q<=H){""+H+q;continue}if((E==="x"||E==="X")&&(f=!0),(E==="x"||E==="X"||E===" ")&&T!==null){let U=s.startState.doc.lineAt(T.originalFromA),z=s.startState.doc.lineAt(Math.min(T.originalToA,s.startState.doc.length));U.number!==z.number?(""+U.number+z.number,m.push({from:H,to:q,insert:E})):m.push({from:T.originalFromA,to:T.originalToA,insert:T.originalInsertedText})}else m.push({from:H,to:q,insert:E})}if(m.length>0){let g=s.startState.field($3.editorInfoField),y=m[0],w=s.newDoc.lineAt(y.from),v=Gn(((k=g==null?void 0:g.file)==null?void 0:k.path)||"",w.text,w.number,t.settings.preferMetadataFormat,t);return{changes:m,selection:s.selection,annotations:gt.of("taskStatusChange")}}return s}var gn=A(require("@codemirror/view")),G3=A(require("obsidian")),K3=A(require("@codemirror/state")),rk=A(require("@codemirror/language"));Q();var Q3=A(require("@codemirror/search")),X3=A(require("obsidian"));var iLe=K3.Annotation.define(),J3=class extends gn.WidgetType{constructor(e,t,a,r,i,n,o,l){super();this.app=e;this.plugin=t;this.view=a;this.from=r;this.to=i;this.workflowType=n;this.stageId=o;this.subStageId=l}eq(e){return e.from===this.from&&e.to===this.to&&e.workflowType===this.workflowType&&e.stageId===this.stageId&&e.subStageId===this.subStageId}toDOM(){let e=document.createElement("span");e.className="cm-workflow-stage-indicator";let{icon:t,stageType:a}=this.getStageIconAndType();(0,X3.setIcon)(e.createSpan(),t),e.setAttribute("data-stage-type",a);let r=this.generateTooltipContent();return(0,G3.setTooltip)(e,r),e.addEventListener("click",i=>{this.handleClick(i)}),e}getStageIconAndType(){let e=this.plugin.settings.workflow.definitions.find(a=>a.id===this.workflowType);if(!e)return{icon:"help-circle",stageType:"unknown"};let t=e.stages.find(a=>a.id===this.stageId);if(!t)return{icon:"help-circle",stageType:"unknown"};switch(t.type){case"linear":return{icon:"arrow-right",stageType:"linear"};case"cycle":return{icon:"rotate-cw",stageType:"cycle"};case"terminal":return{icon:"check",stageType:"terminal"};default:return{icon:"circle",stageType:"default"}}}generateTooltipContent(){var r;let e=this.plugin.settings.workflow.definitions.find(i=>i.id===this.workflowType);if(!e)return c("Workflow not found");let t=e.stages.find(i=>i.id===this.stageId);if(!t)return c("Stage not found");let a=`${c("Workflow")}: ${e.name}
`;if(this.subStageId){let i=(r=t.subStages)==null?void 0:r.find(n=>n.id===this.subStageId);i?a+=`${c("Current stage")}: ${t.name} (${i.name})
`:a+=`${c("Current stage")}: ${t.name}
`}else a+=`${c("Current stage")}: ${t.name}
`;if(a+=`${c("Type")}: ${t.type}`,t.type!=="terminal"){if(t.next){let i=e.stages.find(n=>n.id===t.next);i&&(a+=`
${c("Next")}: ${i.name}`)}else if(t.canProceedTo&&t.canProceedTo.length>0){let i=e.stages.find(n=>n.id===t.canProceedTo[0]);i&&(a+=`
${c("Next")}: ${i.name}`)}}return a}handleClick(e){var g,y;e.preventDefault(),e.stopPropagation();let t=this.app.workspace.activeLeaf;if(!t||!t.view||!t.view.editor)return;let a=t.view.editor,r=this.view.state.doc.lineAt(this.from),i=r.text,n=Fi(i,this.view.state.doc,r.number,this.plugin);if(!n)return;let{currentStage:o,workflow:l,currentSubStage:d}=n,u,p;if(o.type==="terminal")return;if(o.type==="cycle"&&d)d.next?(u=o.id,p=d.next):o.canProceedTo&&o.canProceedTo.length>0?(u=o.canProceedTo[0],p=void 0):(u=o.id,p=(y=(g=o.subStages)==null?void 0:g[0])==null?void 0:y.id);else if(o.canProceedTo&&o.canProceedTo.length>0)u=o.canProceedTo[0];else if(o.next)u=Array.isArray(o.next)?o.next[0]:o.next;else{let w=l.stages.findIndex(v=>v.id===o.id);if(w>=0&&w<l.stages.length-1)u=l.stages[w+1].id;else return}if(!l.stages.find(w=>w.id===u))return;let f;p?f=`[stage::${u}.${p}]`:f=`[stage::${u}]`;let h=/\[stage::[^\]]+\]/,k=i.match(h);if(k&&k.index!==void 0){let w=r.from+k.index,v=w+k[0].length;a.cm.dispatch({changes:{from:w,to:v,insert:f}})}}ignoreEvent(){return!1}};function Z3(s,e){return e.settings.workflow.enableWorkflow?gn.ViewPlugin.fromClass(class{constructor(t){this.view=t;this.decorations=gn.Decoration.none;this.lastDocVersion=0;this.lastViewportFrom=0;this.lastViewportTo=0;this.decorationCache=new Map;this.updateTimeout=null;this.MAX_CACHE_SIZE=100;this.updateDecorations()}update(t){let a=t.viewportChanged&&(Math.abs(this.view.viewport.from-this.lastViewportFrom)>100||Math.abs(this.view.viewport.to-this.lastViewportTo)>100);(t.docChanged||a)&&(t.docChanged&&(this.decorationCache.clear(),this.lastDocVersion=this.view.state.doc.length),this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=window.setTimeout(()=>{this.updateDecorations(),this.updateTimeout=null},t.docChanged?0:50))}destroy(){this.decorations=gn.Decoration.none,this.decorationCache.clear(),this.updateTimeout&&clearTimeout(this.updateTimeout)}updateDecorations(){let t=[];this.lastViewportFrom=this.view.viewport.from,this.lastViewportTo=this.view.viewport.to;for(let{from:a,to:r}of this.view.visibleRanges){let i=new Q3.RegExpCursor(this.view.state.doc,"(#workflow\\/[^\\/\\s]+|\\[stage::[^\\]]+\\])",{},a,r);for(;!i.next().done;){let{from:n,to:o}=i.value,l=this.view.state.doc.lineAt(n),d=this.simpleHash(l.text),u=`${l.number}:${d}`;if(this.decorationCache.has(u)){let x=this.decorationCache.get(u);t.push(x);continue}if(!this.shouldRender(n,o))continue;let p=l.text,m=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,f=/\[([ xX\-])\]/.test(p);if(!m.test(p)&&!f||!ho(p))continue;let k=Fi(p,this.view.state.doc,l.number,e);if(!k)continue;let{workflowType:g,currentStage:y,currentSubStage:w}=k,T=gn.Decoration.widget({widget:new J3(s,e,this.view,n,o,g,y.id,w==null?void 0:w.id),side:1}).range(o,o);if(t.push(T),this.decorationCache.size>=this.MAX_CACHE_SIZE){let x=this.decorationCache.keys().next().value;this.decorationCache.delete(x)}this.decorationCache.set(u,T)}}this.decorations=gn.Decoration.set(t.sort((a,r)=>a.from-r.from))}simpleHash(t){let a=0;for(let r=0;r<t.length;r++){let i=t.charCodeAt(r);a=(a<<5)-a+i,a=a&a}return a}shouldRender(t,a){try{let i=(0,rk.syntaxTree)(this.view.state).resolveInner(t+1).type.prop(rk.tokenClassNodeProp);if(i){let l=i.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return!1}return!this.view.state.selection.ranges.some(l=>l.from===a||l.to===t)}catch(r){return console.warn("Error checking if workflow decorator should render",r),!1}}},{decorations:t=>t.decorations}):[]}var Qc=A(require("obsidian")),eB=A(require("@codemirror/state")),tB=A(require("@codemirror/view"));Q();function z7(s,e,t,a,r){var k;let i=new Qc.Menu,o=s.state.doc.line(a).text,l=Fi(o,s.state.doc,a,t);if(!l)return!1;let{currentStage:d,currentSubStage:u,workflow:p,isRootTask:m}=l;if(d.type,r.currentStage==="root"||m)i.addItem(g=>{g.setTitle(c("Start workflow")).setIcon("play").onClick(()=>{K7(s,e,t,a)})});else if(d.type==="terminal")i.addItem(g=>{g.setTitle(c("Complete workflow")).setIcon("check").onClick(()=>{X7(s,e,t,a)})});else{let{nextStageId:g,nextSubStageId:y}=tk(d,p,u);if(g){let w=p.stages.find(v=>v.id===g);if(w){let v;if(g===d.id&&y===(u==null?void 0:u.id))v=`${c("Continue")} ${w.name}${y?` (${u==null?void 0:u.name})`:""}`;else if(g===d.id&&y){let T=(k=w.subStages)==null?void 0:k.find(x=>x.id===y);v=`${c("Move to")} ${w.name} (${(T==null?void 0:T.name)||y})`}else v=`${c("Move to")} ${w.name}`;i.addItem(T=>{T.setTitle(v).setIcon("arrow-right").onClick(()=>{var x;Q7(s,e,t,a,w,!1,y?(x=w.subStages)==null?void 0:x.find(C=>C.id===y):void 0,u)})})}}if(u&&d.type==="cycle"){let w=d.canProceedTo;if(w&&w.length>0)w.forEach(v=>{let T=p.stages.find(x=>x.id===v);T&&i.addItem(x=>{x.setTitle(`${c("Complete substage and move to")} ${T.name}`).setIcon("skip-forward").onClick(()=>{sk(s,e,t,a,T,u)})})});else if(typeof d.next=="string"){let v=p.stages.find(T=>T.id===d.next);v&&i.addItem(T=>{T.setTitle(`${c("Complete substage and move to")} ${v.name}`).setIcon("skip-forward").onClick(()=>{sk(s,e,t,a,v,u)})})}else if(Array.isArray(d.next)&&d.next.length>0){let v=p.stages.find(T=>T.id===d.next[0]);v&&i.addItem(T=>{T.setTitle(`${c("Complete substage and move to")} ${v.name}`).setIcon("skip-forward").onClick(()=>{sk(s,e,t,a,v,u)})})}else{let v=p.stages.findIndex(T=>T.id===d.id);if(v>=0&&v<p.stages.length-1){let T=p.stages[v+1];i.addItem(x=>{x.setTitle(`${c("Complete substage and move to")} ${T.name}`).setIcon("skip-forward").onClick(()=>{sk(s,e,t,a,T,u)})})}}}i.addSeparator(),i.addItem(w=>{w.setTitle(c("Add child task with same stage")).setIcon("plus-circle").onClick(()=>{J7(s,e,t,a,d,u)})})}i.addSeparator(),i.addItem(g=>{g.setTitle(c("Add new task")).setIcon("plus").onClick(()=>{q7(s,e,a)})}),i.addItem(g=>{g.setTitle(c("Add new sub-task")).setIcon("plus-circle").onClick(()=>{G7(s,e,a)})});let f=s.state.selection.main,h=s.coordsAtPos(f.head);return h?i.showAtPosition({x:h.left,y:h.bottom}):i.showAtMouseEvent(window.event),!0}function q7(s,e,t){let a=s.state.doc.line(t),r=a.text.match(/^([\s|\t]*)/),i=r?r[1]:"";s.dispatch({changes:{from:a.to,to:a.to,insert:`
${i}- [ ] `},selection:{anchor:a.to+i.length+7}}),s.focus()}function G7(s,e,t){let a=s.state.doc.line(t),r=a.text.match(/^([\s|\t]*)/),i=r?r[1]:"",n=La(e),o=i+n;s.dispatch({changes:{from:a.to,to:a.to,insert:`
${o}- [ ] `},selection:{anchor:a.to+o.length+7}}),s.focus()}function K7(s,e,t,a){let r=s.state.doc.line(a),i=r.text;if(!ho(i))return;let o=Fi(i,s.state.doc,a,t);if(!o||!o.workflow.stages.length)return;let{workflow:l}=o,d=l.stages[0],u=i.match(/^([\s|\t]*)/),p=u?u[1]:"",m=La(e),f=p+m,h=t.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${new Date().toISOString().slice(0,19).replace("T"," ")}`:"",k=`${f}- [ ] ${d.name} [stage::${d.id}]${h}`;if(d.type==="cycle"&&d.subStages&&d.subStages.length>0){let v=d.subStages[0];k+=`
${f+m}- [ ] ${d.name} (${v.name}) [stage::${d.id}.${v.id}]${h}`}let g=`
${k}`,w=r.to+1+f.length+7;s.dispatch({changes:{from:r.to,to:r.to,insert:g},selection:{anchor:w}}),s.focus()}function aB(s,e){return e.settings.workflow.enableWorkflow?[eB.Prec.high(tB.keymap.of([{key:"Enter",run:a=>{let r=a.state.selection.main,i=a.state.doc.lineAt(r.head),n=i.text,o=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;if(!n.match(o))return!1;let d=ho(n);return!d||r.head!==i.to?!1:z7(a,s,e,i.number,d)}}]))]:[]}function Q7(s,e,t,a,r,i,n,o){var k;let l=s.state.doc,d=l.line(a),u=d.text;if(a>l.lines||a<1){console.warn(`Invalid line number: ${a}, doc has ${l.lines} lines`);return}let p=(k=s.state.field(Qc.editorInfoField))==null?void 0:k.editor;if(!p){console.warn("Editor not found");return}let m=Ps(t,p,u,a-1,r,i,n,o),f=d.to,h=m.find(g=>g.insert&&g.insert.includes("- [ ]"));if(h){let g=u.match(/^([\s|\t]*)/),y=g?g[1]:"",w=La(e),v=y+(i?w:"");f=h.from+1+v.length+6}s.dispatch({changes:m,selection:{anchor:f},annotations:gt.of("workflowChange")}),s.focus()}function X7(s,e,t,a){var m;let r=s.state.doc,n=r.line(a).text;if(a>r.lines||a<1){console.warn(`Invalid line number: ${a}, doc has ${r.lines} lines`);return}let o=(m=s.state.field(Qc.editorInfoField))==null?void 0:m.editor;if(!o){console.warn("Editor not found");return}let l=Fi(n,r,a,t);if(!l){console.warn("Could not resolve workflow information");return}let{currentStage:d,currentSubStage:u}=l,p=Ps(t,o,n,a-1,d,!1,void 0,u);s.dispatch({changes:p,annotations:gt.of("workflowChange")}),s.focus()}function J7(s,e,t,a,r,i){let n=s.state.doc.line(a),o=n.text.match(/^([\s|\t]*)/),l=o?o[1]:"",d=La(e),u=l+d,p=ak(r,u,t,!1,i);s.dispatch({changes:{from:n.to,to:n.to,insert:`
${p}`},selection:{anchor:n.to+u.length+7}}),s.focus()}function sk(s,e,t,a,r,i){var k;let n=s.state.doc,l=n.line(a).text;if(a>n.lines||a<1){console.warn(`Invalid line number: ${a}, doc has ${n.lines} lines`);return}let d=(k=s.state.field(Qc.editorInfoField))==null?void 0:k.editor;if(!d){console.warn("Editor not found");return}let u=[],p=l.match(/^([\s|\t]*)/),m=p?p[1].length:0,f=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/;for(let g=a-1;g>=1;g--){let y=n.line(g),w=y.text.match(/^([\s|\t]*)/);if((w?w[1].length:0)<m&&y.text.match(f)&&y.text.includes("[stage::")){let C=Ps(t,d,y.text,g-1,r,!1,void 0,void 0).filter(S=>!S.insert||!S.insert.includes("- [ ]"));u.push(...C);break}}let h=Ps(t,d,l,a-1,r,!1,void 0,i);u.push(...h),s.dispatch({changes:u,annotations:gt.of("workflowChange")}),s.focus()}function rB(s,e,t,a){return iB(s,e,a,"forward")}function sB(s,e,t,a){return iB(s,e,a,"backward")}function iB(s,e,t,a){let r=e.getCursor(),i=e.getLine(r.line),n=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,o=i.match(n);if(!o)return!1;if(s)return!0;let{cycle:l,marks:d,excludeMarksFromCycle:u}=Z7(t),p=l.filter(w=>!u.includes(w));if(p.length===0)return!1;let m=o[2],f=-1;for(let w=0;w<p.length;w++){let v=p[w];if(d[v]===m){f=w;break}}f===-1&&(f=0);let h;a==="forward"?h=(f+1)%p.length:h=(f-1+p.length)%p.length;let k=p[h],g=d[k]||" ",y=i.indexOf("[")+1;return e.replaceRange(g,{line:r.line,ch:y},{line:r.line,ch:y+1}),!0}function Z7(s){return{cycle:s.settings.taskStatusCycle,excludeMarksFromCycle:s.settings.excludeMarksFromCycle||[],marks:s.settings.taskStatusMarks}}var Oi=A(require("obsidian"));Q();var ji;(function(t){t.MARKDOWN="md",t.CANVAS="canvas"})(ji||(ji={}));function OC(s){return nB(s.extension)}function ai(s,e){return nB(s.extension)?e?e.shouldIncludeFile(s):!0:!1}function nB(s){return Object.values(ji).includes(s)}function oB(s){return s.extension===ji.MARKDOWN?ji.MARKDOWN:s.extension===ji.CANVAS?ji.CANVAS:null}var lB=class extends Oi.FuzzySuggestModal{constructor(e,t,a,r,i){super(e);this.plugin=t,this.editor=a,this.currentFile=r,this.taskLine=i,this.setPlaceholder("Select a file or type to create a new one")}getItems(){let a=this.app.vault.getFiles().filter(r=>OC(r)).filter(r=>r.path!==this.currentFile.path);return a.sort((r,i)=>r.path.localeCompare(i.path)),a}getItemText(e){return typeof e=="string"?`Create new file: ${e}`:e.path}renderSuggestion(e,t){let a=e.item;typeof a=="string"?t.createEl("div",{text:`${c("Create new file:")} ${a}`}):t.createEl("div",{text:a.path})}onChooseItem(e,t){typeof e=="string"?this.createNewFileWithTasks(e):new cB(this.app,this.plugin,this.editor,this.currentFile,e,this.taskLine).open()}getSuggestions(e){let t=super.getSuggestions(e);return e&&!t.some(a=>typeof a.item=="string"&&a.item===e)&&this.isValidFileName(e)&&t.push({item:e,match:{score:1,matches:[]}}),t.slice(0,20)}isValidFileName(e){return e.length>0&&!e.includes("/")&&!e.includes("\\")}async createNewFileWithTasks(e){try{e.endsWith(".md")||(e+=".md");let t=this.getTaskWithChildren(),a=this.resetIndentation(t),r=this.currentFile.parent,i=r?`${r.path}/${e}`:e,n=await this.app.vault.create(i,a);this.removeTaskFromCurrentFile(),this.app.workspace.getLeaf(!0).openFile(n),new Oi.Notice(`${c("Task moved to")} ${e}`)}catch(t){new Oi.Notice(`${c("Failed to create file:")} ${t}`),console.error(t)}}getTaskWithChildren(){let t=this.editor.getValue().split(`
`),a=t[this.taskLine],r=this.getIndentation(a),i=[a];for(let n=this.taskLine+1;n<t.length;n++){let o=t[n];if(this.getIndentation(o)<=r)break;i.push(o)}return i.join(`
`)}removeTaskFromCurrentFile(){let t=this.editor.getValue().split(`
`),a=this.getIndentation(t[this.taskLine]),r=this.taskLine;for(let i=this.taskLine+1;i<t.length&&!(this.getIndentation(t[i])<=a);i++)r=i;this.editor.replaceRange("",{line:this.taskLine,ch:0},{line:r+1,ch:0})}getIndentation(e){let t=e.match(/^(\s*)/);return t?t[1].length:0}resetIndentation(e){let t=e.split(`
`),a=Number.MAX_SAFE_INTEGER;for(let r of t){if(r.trim().length===0)continue;let i=this.getIndentation(r);a=Math.min(a,i)}return a===Number.MAX_SAFE_INTEGER||a===0?e:t.map(r=>r.trim().length===0?r:r.substring(a)).join(`
`)}},cB=class extends Oi.SuggestModal{constructor(e,t,a,r,i,n){super(e);this.plugin=t,this.editor=a,this.sourceFile=r,this.targetFile=i,this.taskLine=n,this.metadataCache=e.metadataCache,this.setPlaceholder("Select where to insert the task")}async getSuggestions(e){let a=(await this.app.vault.read(this.targetFile)).split(`
`),r=this.metadataCache.getFileCache(this.targetFile),i=[];if(i.push({id:"beginning",text:c("Beginning of file"),level:0,line:0}),i.push({id:"end",text:c("End of file"),level:0,line:a.length}),r&&r.headings)for(let n of r.headings){let o=a[n.position.start.line];i.push({id:`heading-start-${n.position.start.line}`,text:`${c("After heading")}: ${o}`,level:n.level,line:n.position.start.line}),i.push({id:`heading-end-${n.position.start.line}`,text:`${c("End of section")}: ${o}`,level:n.level,line:n.position.start.line})}return e&&(i=i.filter(n=>n.text.toLowerCase().includes(e.toLowerCase()))),i.slice(0,20)}renderSuggestion(e,t){let a=" ".repeat(e.level);t.createEl("div",{text:`${a}${e.text}`})}onChooseSuggestion(e,t){this.moveTaskToTargetFile(e)}async moveTaskToTargetFile(e){try{let t=this.getTaskWithChildren(),r=(await this.app.vault.read(this.targetFile)).split(`
`),i,n=0;if(e.id==="beginning")i=0;else if(e.id==="end")i=r.length;else if(e.id.startsWith("heading-start-"))i=e.line+1,n=La(this.app).length;else if(e.id.startsWith("heading-end-"))i=this.findSectionEnd(r,e.line,e.level),n=La(this.app).length;else throw new Error("Invalid block ID");let o=this.resetIndentation(t),l=this.addIndentation(o,0);await this.app.vault.modify(this.targetFile,[...r.slice(0,i),l,...r.slice(i)].join(`
`)),this.removeTaskFromSourceFile(),new Oi.Notice(`${c("Task moved to")} ${this.targetFile.path}`)}catch(t){new Oi.Notice(`${c("Failed to move task:")} ${t}`),console.error(t)}}findSectionEnd(e,t,a){for(let r=t+1;r<e.length;r++){let n=e[r].match(/^(#+)\s+/);if(n&&n[1].length<=a)return r}return e.length}getTaskWithChildren(){let t=this.editor.getValue().split(`
`),a=t[this.taskLine],r=this.getIndentation(a),i=[a];for(let n=this.taskLine+1;n<t.length;n++){let o=t[n];if(this.getIndentation(o)<=r)break;i.push(o)}return i.join(`
`)}resetIndentation(e){let t=e.split(`
`),a=Number.MAX_SAFE_INTEGER;for(let r of t){if(r.trim().length===0)continue;let i=this.getIndentation(r);a=Math.min(a,i)}return a===Number.MAX_SAFE_INTEGER||a===0?e:t.map(r=>r.trim().length===0?r:r.substring(a)).join(`
`)}addIndentation(e,t){if(t<=0)return e;let a=La(this.app).repeat(t/La(this.app).length);return e.split(`
`).map(r=>r.length>0?a+r:r).join(`
`)}removeTaskFromSourceFile(){let t=this.editor.getValue().split(`
`),a=this.getIndentation(t[this.taskLine]),r=this.taskLine;for(let i=this.taskLine+1;i<t.length&&!(this.getIndentation(t[i])<=a);i++)r=i;this.editor.replaceRange("",{line:this.taskLine,ch:0},{line:r+1,ch:0})}getIndentation(e){let t=e.match(/^(\s*)/);return t?t[1].length:0}};function dB(s,e,t,a){let r=t.file;if(s){if(!r||!OC(r))return!1;if(r.extension==="md"){let n=e.getCursor();return e.getLine(n.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!1}if(!r)return new Oi.Notice(c("No active file found")),!1;let i=e.getCursor();return new lB(a.app,a,e,r,i.line).open(),!0}var wa=A(require("obsidian"));Q();var Ms=class{static getIndentation(e,t){let a=e.match(/^(\s*)/);return a?a[1].length:0}static getTabSize(e){return Hs(e)}static processCustomMarker(e){return e?e.replace(/\{\{DATE:([^}]+)\}\}/g,(t,a)=>(0,wa.moment)().format(a)):""}static processDateMarker(e){return e?e.replace(/\{\{date\}\}/g,()=>(0,wa.moment)().format("YYYY-MM-DD")):""}static addMarkerToTask(e,t,a,r,i=!1){var k;let{taskMarkerType:n,versionMarker:o,dateMarker:l,customMarker:d,withCurrentFileLink:u}=t.completedTaskMover,p=e.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return e;let m=p[1].trimEnd(),f=(k=p[2])==null?void 0:k.trim(),h=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(d)))switch(n){case"version":o&&(h=`${m} ${o}`);break;case"date":let g=this.processDateMarker(l);g&&(h=`${m} ${g}`);break;case"custom":let y=this.processCustomMarker(d);y&&(h=`${m} ${y}`);break;default:h=m}if(u&&i){let g=r.fileManager.generateMarkdownLink(a,a.path);h=`${h} from ${g}`}return f&&(h=`${h} ${f}`),h}static addMarkerToIncompletedTask(e,t,a,r,i=!1){var k;let{incompletedTaskMarkerType:n,incompletedVersionMarker:o,incompletedDateMarker:l,incompletedCustomMarker:d,withCurrentFileLinkForIncompleted:u}=t.completedTaskMover,p=e.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return e;let m=p[1].trimEnd(),f=(k=p[2])==null?void 0:k.trim(),h=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(d)))switch(n){case"version":o&&(h=`${m} ${o}`);break;case"date":let g=this.processDateMarker(l);g&&(h=`${m} ${g}`);break;case"custom":let y=this.processCustomMarker(d);y&&(h=`${m} ${y}`);break;default:h=m}if(u&&i){let g=r.fileManager.generateMarkdownLink(a,a.path);h=`${h} from ${g}`}return f&&(h=`${h} ${f}`),h}static isCompletedTaskMark(e,t){var r,i;let a=((r=t.taskStatuses.completed)==null?void 0:r.split("|"))||["x","X"];if(t.completedTaskMover.treatAbandonedAsCompleted){let n=((i=t.taskStatuses.abandoned)==null?void 0:i.split("|"))||["-"];return a.includes(e)||n.includes(e)}return a.includes(e)}static isIncompletedTaskMark(e,t){var i,n;let a=((i=t.taskStatuses.completed)==null?void 0:i.split("|"))||["x","X"],r=[];return t.completedTaskMover.treatAbandonedAsCompleted&&(r=((n=t.taskStatuses.abandoned)==null?void 0:n.split("|"))||["-"]),!a.includes(e)&&!r.includes(e)}static completeTaskIfNeeded(e,t){var i;if(!t.completedTaskMover.completeAllMovedTasks)return e;let a=e.match(/^(\s*(?:-|\d+\.|\*)\s+\[)(.)(].*)$/);if(!a)return e;let r=((i=t.taskStatuses.completed)==null?void 0:i.split("|")[0])||"x";return`${a[1]}${r}${a[3]}`}static resetIndentation(e,t){let a=e.split(`
`),r=Number.MAX_SAFE_INTEGER;for(let i of a){if(i.trim().length===0)continue;let n=this.getIndentation(i,t);r=Math.min(r,n)}return r===Number.MAX_SAFE_INTEGER||r===0?e:a.map(i=>i.trim().length===0?i:i.substring(r)).join(`
`)}static findParentTaskIndex(e,t,a){for(let r=a.findIndex(i=>i.index===e)-1;r>=0;r--)if(a[r].indent<t)return a[r].index;return-1}static adjustIndentation(e,t,a){let r=e.split(`
`),i=this.getIndentation(r[0],a);return t-i===0?e:r.map((o,l)=>{let d=this.getIndentation(o,a);if(l===0)return La(a).repeat(t)+o.substring(d);let u=d-i,p=Math.max(0,t+u);return La(a).repeat(p/Hs(a))+o.trimStart()}).join(`
`)}static processSelectedTasks(e,t,a,r,i,n,o=!0){let l=[...t].sort((h,k)=>k-h),d=new Set,u=new Map;for(let h of l){let k=this.processSingleSelectedTask(e,h,a,r,i,n,o);u.set(h,k.content.split(`
`)),k.linesToRemove.forEach(g=>d.add(g))}let p=[...t].sort((h,k)=>h-k),m=[];for(let h=0;h<p.length;h++){let k=p[h];if(p.some(y=>{if(y===k)return!1;let v=e.getValue().split(`
`),T=this.getIndentation(v[y],n),x=this.getIndentation(v[k],n);return k>y&&x>T&&!p.some(C=>C>y&&C<k&&this.getIndentation(v[C],n)<=T)}))continue;m.length>0&&m.push("");let g=u.get(k);g&&m.push(...g)}let f=Array.from(d);return{content:m.filter(h=>h.trim()!=="").join(`
`),linesToRemove:f}}static processSingleSelectedTask(e,t,a,r,i,n,o=!0){let d=e.getValue().split(`
`),u=[],p=[],m=d[t],f=this.getIndentation(m,n),h=m.match(/\[(.)]/),k=h?h[1]:"",g;if(a==="allIncompleted"||a==="directIncompletedChildren"?g=this.addMarkerToIncompletedTask(m,r,i,n,!0):(g=this.addMarkerToTask(m,r,i,n,!0),g=this.completeTaskIfNeeded(g,r)),u.push(g),a==="all"){for(let y=t+1;y<d.length;y++){let w=d[y];if(this.getIndentation(w,n)<=f)break;u.push(this.completeTaskIfNeeded(w,r)),p.push(y)}p.push(t)}else{let y=[];for(let w=t+1;w<d.length;w++){let v=d[w],T=this.getIndentation(v,n);if(T<=f)break;let x=v.match(/\[(.)]/);if(x){let C=x[1],S=this.isCompletedTaskMark(C,r),E=this.isIncompletedTaskMark(C,r);y.push({line:v,index:w,indent:T,isCompleted:S,isIncompleted:E})}else y.push({line:v,index:w,indent:T,isCompleted:!1,isIncompleted:!1})}if(a==="allCompleted"){let w=new Set,v=new Set,T=new Set;y.forEach(C=>{if(C.isCompleted){w.add(C.index),v.add(C.index);let S=C,E=this.findParentTaskIndex(S.index,S.indent,y);for(;E!==-1;){v.add(E);let P=y.find(I=>I.index===E);if(!P)break;P.isCompleted||T.add(E),E=this.findParentTaskIndex(P.index,P.indent,y)}}}),y.forEach(C=>{let S=this.findParentTaskIndex(C.index,C.indent,y);S!==-1&&w.has(S)&&v.add(C.index)});let x=[...v].sort((C,S)=>C-S);u.length=0,u.push(g);for(let C of x){let S=y.find(E=>E.index===C);if(!!S){if(T.has(C)){let E=this.addMarkerToTask(S.line,r,i,n,!1);E=this.completeTaskIfNeeded(E,r),u.push(E)}else u.push(this.completeTaskIfNeeded(S.line,r));T.has(C)||p.push(C)}}this.isCompletedTaskMark(k,r)&&p.push(t)}else if(a==="directChildren"){let w=new Set,v=Number.MAX_SAFE_INTEGER;for(let x of y)x.indent>f&&x.indent<v&&(v=x.indent);for(let x of y)x.indent===v&&x.isCompleted&&w.add(x.index);u.length=0,u.push(g);let T=[...w].sort((x,C)=>x-C);for(let x of T){let C=y.find(P=>P.index===x);if(!C)continue;u.push(this.completeTaskIfNeeded(C.line,r)),p.push(x);let S=y.findIndex(P=>P.index===x)+1,E=C.indent;for(;S<y.length;){let P=y[S];if(P.indent<=E)break;u.push(this.completeTaskIfNeeded(P.line,r)),p.push(P.index),S++}}this.isCompletedTaskMark(k,r)&&p.push(t)}else if(a==="allIncompleted"){let w=new Set,v=new Set,T=new Set;y.forEach(C=>{if(C.isIncompleted){w.add(C.index),v.add(C.index);let S=C,E=this.findParentTaskIndex(S.index,S.indent,y);for(;E!==-1;){v.add(E);let P=y.find(I=>I.index===E);if(!P)break;P.isIncompleted||T.add(E),E=this.findParentTaskIndex(P.index,P.indent,y)}}}),y.forEach(C=>{let S=this.findParentTaskIndex(C.index,C.indent,y);S!==-1&&w.has(S)&&v.add(C.index)});let x=[...v].sort((C,S)=>C-S);u.length=0,u.push(g);for(let C of x){let S=y.find(E=>E.index===C);if(!!S){if(T.has(C)){let E=this.addMarkerToIncompletedTask(S.line,r,i,n,!1);u.push(E)}else u.push(S.line);T.has(C)||p.push(C)}}this.isIncompletedTaskMark(k,r)&&p.push(t)}else if(a==="directIncompletedChildren"){let w=new Set,v=Number.MAX_SAFE_INTEGER;for(let x of y)x.indent>f&&x.indent<v&&(v=x.indent);for(let x of y)x.indent===v&&x.isIncompleted&&w.add(x.index);u.length=0,u.push(g);let T=[...w].sort((x,C)=>x-C);for(let x of T){let C=y.find(P=>P.index===x);if(!C)continue;u.push(C.line),p.push(x);let S=y.findIndex(P=>P.index===x)+1,E=C.indent;for(;S<y.length;){let P=y[S];if(P.indent<=E)break;u.push(P.line),p.push(P.index),S++}}this.isIncompletedTaskMark(k,r)&&p.push(t)}}return{content:u.join(`
`),linesToRemove:p}}static removeTasksFromFile(e,t){if(!t||t.length===0)return;let r=e.getValue().split(`
`),i=[...t].sort((n,o)=>o-n);e.transaction({changes:i.map(n=>{let o={line:n,ch:0},l=n+1<r.length?{line:n+1,ch:0}:{line:n,ch:r[n].length};return{from:o,to:l,text:""}})})}},ik=class extends wa.FuzzySuggestModal{constructor(e,t,a,r,i,n){super(e);this.plugin=t,this.editor=a,this.currentFile=r,this.taskLines=i,this.moveMode=n,this.setPlaceholder("Select a file or type to create a new one")}getItems(){let t=this.app.vault.getMarkdownFiles().filter(a=>a.path!==this.currentFile.path);return t.sort((a,r)=>a.path.localeCompare(r.path)),t}getItemText(e){return typeof e=="string"?`Create new file: ${e}`:e.path}renderSuggestion(e,t){let a=e.item;typeof a=="string"?t.createEl("div",{text:`${c("Create new file:")} ${a}`}):t.createEl("div",{text:a.path})}onChooseItem(e,t){typeof e=="string"?this.createNewFileWithTasks(e):new uB(this.app,this.plugin,this.editor,this.currentFile,e,this.taskLines,this.moveMode).open()}getSuggestions(e){let t=super.getSuggestions(e);return e&&!t.some(a=>typeof a.item=="string"&&a.item===e)&&this.isValidFileName(e)&&t.push({item:e,match:{score:1,matches:[]}}),t.slice(0,20)}isValidFileName(e){return e.length>0&&!e.includes("/")&&!e.includes("\\")}async createNewFileWithTasks(e){try{e.endsWith(".md")||(e+=".md");let{content:t,linesToRemove:a}=Ms.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.currentFile,this.app),r=Ms.resetIndentation(t,this.app),i=this.currentFile.parent,n=i?`${i.path}/${e}`:e,o=await this.app.vault.create(n,r);Ms.removeTasksFromFile(this.editor,a),this.app.workspace.getLeaf(!0).openFile(o),new wa.Notice(`${c("Completed tasks moved to")} ${e}`)}catch(t){new wa.Notice(`${c("Failed to create file:")} ${t}`),console.error(t)}}},uB=class extends wa.SuggestModal{constructor(e,t,a,r,i,n,o){super(e);this.plugin=t,this.editor=a,this.sourceFile=r,this.targetFile=i,this.taskLines=n,this.metadataCache=e.metadataCache,this.moveMode=o,this.setPlaceholder("Select a block to insert after")}async getSuggestions(e){let a=(await this.app.vault.read(this.targetFile)).split(`
`),r=this.metadataCache.getFileCache(this.targetFile),i=[];if(i.push({id:"beginning",text:c("Beginning of file"),level:0}),i.push({id:"end",text:c("End of file"),level:0}),r&&r.headings)for(let n of r.headings){let o=a[n.position.start.line];i.push({id:`heading-${n.position.start.line}`,text:o,level:n.level})}if(r&&r.listItems)for(let n of r.listItems){let o=a[n.position.start.line];i.push({id:`list-${n.position.start.line}`,text:o,level:Ms.getIndentation(o,this.app)})}return e&&(i=i.filter(n=>n.text.toLowerCase().includes(e.toLowerCase()))),i.slice(0,20)}renderSuggestion(e,t){let a=" ".repeat(e.level);e.id==="beginning"||e.id==="end"?t.createEl("div",{text:e.text}):t.createEl("div",{text:`${a}${e.text}`})}onChooseSuggestion(e,t){this.moveCompletedTasksToTargetFile(e)}async moveCompletedTasksToTargetFile(e){try{let{content:t,linesToRemove:a}=Ms.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.sourceFile,this.app),i=(await this.app.vault.read(this.targetFile)).split(`
`),n,o=0;if(e.id==="beginning")n=0;else if(e.id==="end")n=i.length;else{let u=e.id.match(/-(\d+)$/);if(!u)throw new Error("Invalid block ID");let p=parseInt(u[1]);n=p+1,o=Ms.getIndentation(i[p],this.app)}let l=Ms.adjustIndentation(t,o,this.app),d=[...i.slice(0,n),l,...i.slice(n)].join(`
`);await this.app.vault.modify(this.targetFile,d),Ms.removeTasksFromFile(this.editor,a),new wa.Notice(`${c("Completed tasks moved to")} ${this.targetFile.path}`)}catch(t){new wa.Notice(`${c("Failed to move tasks:")} ${t}`),console.error(t)}}};function nk(s,e,t,a,r){let i=t.file;if(s){if(!i||i.extension!=="md")return!1;if(e.getSelection().length===0){let u=e.getCursor();return e.getLine(u.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new wa.Notice(c("No active file found")),!1;let n=e.listSelections(),o=new Set;n.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new ik(a.app,a,e,i,l,r).open(),!0}function NC(s,e,t,a,r){let i=t.file;if(s){if(!i||i.extension!=="md")return!1;if(e.getSelection().length===0){let u=e.getCursor();return e.getLine(u.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new wa.Notice(c("No active file found")),!1;let n=e.listSelections(),o=new Set;n.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new ik(a.app,a,e,i,l,r).open(),!0}async function e9(s,e,t,a,r){let i=t.settings.completedTaskMover,n=r==="allCompleted"||r==="directChildren"||r==="all",o=n?i.enableAutoMove:i.enableIncompletedAutoMove,l=n?i.defaultTargetFile:i.incompletedDefaultTargetFile,d=n?i.defaultInsertionMode:i.incompletedDefaultInsertionMode,u=n?i.defaultHeadingName:i.incompletedDefaultHeadingName;if(!o||!l)return!1;try{let{content:p,linesToRemove:m}=Ms.processSelectedTasks(s,a,r,t.settings,e,t.app),f=t.app.vault.getFileByPath(l);if(f||(f=await t.app.vault.create(l,"")),!(f instanceof wa.TFile))throw new Error(`Target path ${l} is not a file`);let k=(await t.app.vault.read(f)).split(`
`),g,y=0;switch(d){case"beginning":g=0;break;case"end":g=k.length;break;case"after-heading":let x=new RegExp(`^#+\\s+${u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),C=k.findIndex(S=>x.test(S));for(C===-1&&(k.length>0&&k[k.length-1].trim()!==""&&k.push(""),k.push(`## ${u}`),k.push(""),C=k.length-2),g=C+1;g<k.length&&k[g].trim()==="";)g++;break;default:g=k.length}let w=Ms.adjustIndentation(p,y,t.app),v=[...k.slice(0,g),w,...k.slice(g)].join(`
`);await t.app.vault.modify(f,v),Ms.removeTasksFromFile(s,m);let T=n?"completed":"incomplete";return new wa.Notice(`${c("Auto-moved")} ${T} ${c("tasks to")} ${l}`),!0}catch(p){return new wa.Notice(`${c("Failed to auto-move tasks:")} ${p}`),console.error(p),!1}}function Xc(s,e,t,a,r){let i=t.file;if(s){let d=r==="allCompleted"||r==="directChildren"||r==="all",u=d?a.settings.completedTaskMover.enableAutoMove:a.settings.completedTaskMover.enableIncompletedAutoMove,p=d?a.settings.completedTaskMover.defaultTargetFile:a.settings.completedTaskMover.incompletedDefaultTargetFile;if(!u||!p||!i||i.extension!=="md")return!1;if(e.getSelection().length===0){let f=e.getCursor();return e.getLine(f.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new wa.Notice(c("No active file found")),!1;let n=e.listSelections(),o=new Set;n.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return e9(e,i,a,l,r).then(d=>{d||new ik(a.app,a,e,i,l,r).open()}),!0}Bu();var ts=A(require("@codemirror/view")),fk=A(require("obsidian")),OB=A(require("@codemirror/state")),hk=A(require("@codemirror/language"));var Ni=A(require("obsidian"));Q();var Jc=class extends Ni.Component{constructor(e,t,a,r,i="\u{1F4C5}"){super();this.hostEl=e,this.app=t,this.plugin=a,this.state={selectedDate:r||null,dateMark:i},this.currentViewDate=r?(0,Ni.moment)(r):(0,Ni.moment)()}onload(){this.render()}onunload(){this.hostEl.empty()}setOnDateChange(e){this.onDateChange=e}getSelectedDate(){return this.state.selectedDate}setSelectedDate(e){this.state.selectedDate=e,this.updateSelectedDateDisplay(),this.onDateChange&&e&&this.onDateChange(e)}render(){this.hostEl.empty(),this.hostEl.addClass("date-picker-root-container");let e=this.hostEl.createDiv({cls:"date-picker-main-panel"}),t=e.createDiv({cls:"date-picker-left-panel"}),a=e.createDiv({cls:"date-picker-right-panel"});this.renderQuickOptions(t),this.renderCalendar(a)}renderQuickOptions(e){let t=e.createDiv({cls:"quick-options-container"});[{amount:0,unit:"days",label:c("Today")},{amount:1,unit:"days",label:c("Tomorrow")},{amount:2,unit:"days",label:c("In 2 days")},{amount:3,unit:"days",label:c("In 3 days")},{amount:5,unit:"days",label:c("In 5 days")},{amount:1,unit:"weeks",label:c("In 1 week")},{amount:10,unit:"days",label:c("In 10 days")},{amount:2,unit:"weeks",label:c("In 2 weeks")},{amount:1,unit:"months",label:c("In 1 month")},{amount:2,unit:"months",label:c("In 2 months")},{amount:3,unit:"months",label:c("In 3 months")},{amount:6,unit:"months",label:c("In 6 months")},{amount:1,unit:"years",label:c("In 1 year")}].forEach(i=>{let n=t.createDiv({cls:"quick-option-item"});n.createSpan({text:i.label,cls:"quick-option-label"});let l=(0,Ni.moment)().add(i.amount,i.unit).format("YYYY-MM-DD");n.createSpan({text:l,cls:"quick-option-date"}),this.registerDomEvent(n,"click",d=>{d.preventDefault(),d.stopPropagation(),this.setSelectedDate(l)}),this.state.selectedDate===l&&n.addClass("selected")});let r=e.createDiv({cls:"quick-option-item clear-option"});r.createSpan({text:c("Clear Date"),cls:"quick-option-label"}),this.registerDomEvent(r,"click",i=>{i.preventDefault(),i.stopPropagation(),this.setSelectedDate(null)})}renderCalendar(e){let t=e.createDiv({cls:"calendar-container"});this.renderCalendarHeader(t,this.currentViewDate),this.renderCalendarGrid(t,this.currentViewDate)}renderCalendarHeader(e,t){let a=e.createDiv({cls:"calendar-header"}),r=a.createDiv({cls:"calendar-nav-btn"});(0,Ni.setIcon)(r,"chevron-left"),this.registerDomEvent(r,"click",o=>{o.preventDefault(),o.stopPropagation(),this.navigateMonth(-1)});let i=a.createDiv({cls:"calendar-month-year",text:t.format("MMMM YYYY")}),n=a.createDiv({cls:"calendar-nav-btn"});(0,Ni.setIcon)(n,"chevron-right"),this.registerDomEvent(n,"click",o=>{o.preventDefault(),o.stopPropagation(),this.navigateMonth(1)})}renderCalendarGrid(e,t){let a=e.createDiv({cls:"calendar-grid"});["Su","Mo","Tu","We","Th","Fr","Sa"].forEach(u=>{a.createDiv({cls:"calendar-day-header",text:u})});let i=t.clone().startOf("month"),n=t.clone().endOf("month"),o=i.clone().startOf("week"),l=n.clone().endOf("week"),d=o.clone();for(;d.isSameOrBefore(l);){let u=a.createDiv({cls:"calendar-day",text:d.format("D")}),p=d.format("YYYY-MM-DD");u.setAttribute("data-date",p),d.isSame(i,"month")||u.addClass("other-month"),d.isSame((0,Ni.moment)(),"day")&&u.addClass("today"),this.state.selectedDate===p&&u.addClass("selected"),this.registerDomEvent(u,"click",m=>{m.preventDefault(),m.stopPropagation(),this.setSelectedDate(p)}),d.add(1,"day")}}navigateMonth(e){""+e,this.currentViewDate.add(e,"month"),this.render()}updateSelectedDateDisplay(){this.hostEl.querySelectorAll(".selected").forEach(e=>{e.removeClass("selected")}),this.state.selectedDate&&(this.hostEl.querySelectorAll(".quick-option-item").forEach(e=>{let t=e.querySelector(".quick-option-date");t&&t.textContent===this.state.selectedDate&&e.addClass("selected")}),this.hostEl.querySelectorAll(".calendar-day").forEach(e=>{let t=e.getAttribute("data-date");t&&this.state.selectedDate===t&&e.addClass("selected")}))}};var pB=A(require("obsidian"));var ok=class extends pB.Modal{constructor(e,t,a,r="\u{1F4C5}"){super(e);this.onDateSelected=null;this.plugin=t,this.initialDate=a,this.dateMark=r}onOpen(){let{contentEl:e}=this;e.empty(),this.datePickerComponent=new Jc(this.contentEl,this.app,this.plugin,this.initialDate,this.dateMark),this.datePickerComponent.onload(),this.datePickerComponent.setOnDateChange(t=>{this.onDateSelected&&this.onDateSelected(t),this.close()})}onClose(){let{contentEl:e}=this;this.datePickerComponent&&this.datePickerComponent.onunload(),e.empty()}};var jB=A(require("obsidian"));var _t="top",va="bottom",ua="right",Jt="left",lk="auto",go=[_t,va,ua,Jt],kn="start",cl="end",mB="clippingParents",ck="viewport",Zc="popper",fB="reference",LC=go.reduce(function(s,e){return s.concat([e+"-"+kn,e+"-"+cl])},[]),dk=[].concat(go,[lk]).reduce(function(s,e){return s.concat([e,e+"-"+kn,e+"-"+cl])},[]),t9="beforeRead",a9="read",r9="afterRead",s9="beforeMain",i9="main",n9="afterMain",o9="beforeWrite",l9="write",c9="afterWrite",hB=[t9,a9,r9,s9,i9,n9,o9,l9,c9];function Fa(s){return s?(s.nodeName||"").toLowerCase():null}function It(s){if(s==null)return window;if(s.toString()!=="[object Window]"){var e=s.ownerDocument;return e&&e.defaultView||window}return s}function As(s){var e=It(s).Element;return s instanceof e||s instanceof Element}function ba(s){var e=It(s).HTMLElement;return s instanceof e||s instanceof HTMLElement}function ed(s){if(typeof ShadowRoot=="undefined")return!1;var e=It(s).ShadowRoot;return s instanceof e||s instanceof ShadowRoot}function d9(s){var e=s.state;Object.keys(e.elements).forEach(function(t){var a=e.styles[t]||{},r=e.attributes[t]||{},i=e.elements[t];!ba(i)||!Fa(i)||(Object.assign(i.style,a),Object.keys(r).forEach(function(n){var o=r[n];o===!1?i.removeAttribute(n):i.setAttribute(n,o===!0?"":o)}))})}function u9(s){var e=s.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(a){var r=e.elements[a],i=e.attributes[a]||{},n=Object.keys(e.styles.hasOwnProperty(a)?e.styles[a]:t[a]),o=n.reduce(function(l,d){return l[d]="",l},{});!ba(r)||!Fa(r)||(Object.assign(r.style,o),Object.keys(i).forEach(function(l){r.removeAttribute(l)}))})}}var gB={name:"applyStyles",enabled:!0,phase:"write",fn:d9,effect:u9,requires:["computeStyles"]};function ja(s){return s.split("-")[0]}var ri=Math.max,dl=Math.min,yn=Math.round;function td(){var s=navigator.userAgentData;return s!=null&&s.brands&&Array.isArray(s.brands)?s.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function Wu(){return!/^((?!chrome|android).)*safari/i.test(td())}function Is(s,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var a=s.getBoundingClientRect(),r=1,i=1;e&&ba(s)&&(r=s.offsetWidth>0&&yn(a.width)/s.offsetWidth||1,i=s.offsetHeight>0&&yn(a.height)/s.offsetHeight||1);var n=As(s)?It(s):window,o=n.visualViewport,l=!Wu()&&t,d=(a.left+(l&&o?o.offsetLeft:0))/r,u=(a.top+(l&&o?o.offsetTop:0))/i,p=a.width/r,m=a.height/i;return{width:p,height:m,top:u,right:d+p,bottom:u+m,left:d,x:d,y:u}}function ul(s){var e=Is(s),t=s.offsetWidth,a=s.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-a)<=1&&(a=e.height),{x:s.offsetLeft,y:s.offsetTop,width:t,height:a}}function _u(s,e){var t=e.getRootNode&&e.getRootNode();if(s.contains(e))return!0;if(t&&ed(t)){var a=e;do{if(a&&s.isSameNode(a))return!0;a=a.parentNode||a.host}while(a)}return!1}function kr(s){return It(s).getComputedStyle(s)}function HC(s){return["table","td","th"].indexOf(Fa(s))>=0}function Va(s){return((As(s)?s.ownerDocument:s.document)||window.document).documentElement}function wn(s){return Fa(s)==="html"?s:s.assignedSlot||s.parentNode||(ed(s)?s.host:null)||Va(s)}function kB(s){return!ba(s)||kr(s).position==="fixed"?null:s.offsetParent}function p9(s){var e=/firefox/i.test(td()),t=/Trident/i.test(td());if(t&&ba(s)){var a=kr(s);if(a.position==="fixed")return null}var r=wn(s);for(ed(r)&&(r=r.host);ba(r)&&["html","body"].indexOf(Fa(r))<0;){var i=kr(r);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||e&&i.willChange==="filter"||e&&i.filter&&i.filter!=="none")return r;r=r.parentNode}return null}function si(s){for(var e=It(s),t=kB(s);t&&HC(t)&&kr(t).position==="static";)t=kB(t);return t&&(Fa(t)==="html"||Fa(t)==="body"&&kr(t).position==="static")?e:t||p9(s)||e}function pl(s){return["top","bottom"].indexOf(s)>=0?"x":"y"}function ml(s,e,t){return ri(s,dl(e,t))}function yB(s,e,t){var a=ml(s,e,t);return a>t?t:a}function Vu(){return{top:0,right:0,bottom:0,left:0}}function Uu(s){return Object.assign({},Vu(),s)}function $u(s,e){return e.reduce(function(t,a){return t[a]=s,t},{})}var m9=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Uu(typeof e!="number"?e:$u(e,go))};function f9(s){var e,t=s.state,a=s.name,r=s.options,i=t.elements.arrow,n=t.modifiersData.popperOffsets,o=ja(t.placement),l=pl(o),d=[Jt,ua].indexOf(o)>=0,u=d?"height":"width";if(!(!i||!n)){var p=m9(r.padding,t),m=ul(i),f=l==="y"?_t:Jt,h=l==="y"?va:ua,k=t.rects.reference[u]+t.rects.reference[l]-n[l]-t.rects.popper[u],g=n[l]-t.rects.reference[l],y=si(i),w=y?l==="y"?y.clientHeight||0:y.clientWidth||0:0,v=k/2-g/2,T=p[f],x=w-m[u]-p[h],C=w/2-m[u]/2+v,S=ml(T,C,x),E=l;t.modifiersData[a]=(e={},e[E]=S,e.centerOffset=S-C,e)}}function h9(s){var e=s.state,t=s.options,a=t.element,r=a===void 0?"[data-popper-arrow]":a;r!=null&&(typeof r=="string"&&(r=e.elements.popper.querySelector(r),!r)||!_u(e.elements.popper,r)||(e.elements.arrow=r))}var wB={name:"arrow",enabled:!0,phase:"main",fn:f9,effect:h9,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Rs(s){return s.split("-")[1]}var g9={top:"auto",right:"auto",bottom:"auto",left:"auto"};function k9(s,e){var t=s.x,a=s.y,r=e.devicePixelRatio||1;return{x:yn(t*r)/r||0,y:yn(a*r)/r||0}}function vB(s){var e,t=s.popper,a=s.popperRect,r=s.placement,i=s.variation,n=s.offsets,o=s.position,l=s.gpuAcceleration,d=s.adaptive,u=s.roundOffsets,p=s.isFixed,m=n.x,f=m===void 0?0:m,h=n.y,k=h===void 0?0:h,g=typeof u=="function"?u({x:f,y:k}):{x:f,y:k};f=g.x,k=g.y;var y=n.hasOwnProperty("x"),w=n.hasOwnProperty("y"),v=Jt,T=_t,x=window;if(d){var C=si(t),S="clientHeight",E="clientWidth";if(C===It(t)&&(C=Va(t),kr(C).position!=="static"&&o==="absolute"&&(S="scrollHeight",E="scrollWidth")),C=C,r===_t||(r===Jt||r===ua)&&i===cl){T=va;var P=p&&C===x&&x.visualViewport?x.visualViewport.height:C[S];k-=P-a.height,k*=l?1:-1}if(r===Jt||(r===_t||r===va)&&i===cl){v=ua;var I=p&&C===x&&x.visualViewport?x.visualViewport.width:C[E];f-=I-a.width,f*=l?1:-1}}var L=Object.assign({position:o},d&&g9),W=u===!0?k9({x:f,y:k},It(t)):{x:f,y:k};if(f=W.x,k=W.y,l){var O;return Object.assign({},L,(O={},O[T]=w?"0":"",O[v]=y?"0":"",O.transform=(x.devicePixelRatio||1)<=1?"translate("+f+"px, "+k+"px)":"translate3d("+f+"px, "+k+"px, 0)",O))}return Object.assign({},L,(e={},e[T]=w?k+"px":"",e[v]=y?f+"px":"",e.transform="",e))}function y9(s){var e=s.state,t=s.options,a=t.gpuAcceleration,r=a===void 0?!0:a,i=t.adaptive,n=i===void 0?!0:i,o=t.roundOffsets,l=o===void 0?!0:o,d={placement:ja(e.placement),variation:Rs(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:r,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,vB(Object.assign({},d,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:n,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,vB(Object.assign({},d,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var bB={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:y9,data:{}};var uk={passive:!0};function w9(s){var e=s.state,t=s.instance,a=s.options,r=a.scroll,i=r===void 0?!0:r,n=a.resize,o=n===void 0?!0:n,l=It(e.elements.popper),d=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&d.forEach(function(u){u.addEventListener("scroll",t.update,uk)}),o&&l.addEventListener("resize",t.update,uk),function(){i&&d.forEach(function(u){u.removeEventListener("scroll",t.update,uk)}),o&&l.removeEventListener("resize",t.update,uk)}}var TB={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:w9,data:{}};var v9={left:"right",right:"left",bottom:"top",top:"bottom"};function ad(s){return s.replace(/left|right|bottom|top/g,function(e){return v9[e]})}var b9={start:"end",end:"start"};function pk(s){return s.replace(/start|end/g,function(e){return b9[e]})}function fl(s){var e=It(s),t=e.pageXOffset,a=e.pageYOffset;return{scrollLeft:t,scrollTop:a}}function hl(s){return Is(Va(s)).left+fl(s).scrollLeft}function BC(s,e){var t=It(s),a=Va(s),r=t.visualViewport,i=a.clientWidth,n=a.clientHeight,o=0,l=0;if(r){i=r.width,n=r.height;var d=Wu();(d||!d&&e==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:i,height:n,x:o+hl(s),y:l}}function WC(s){var e,t=Va(s),a=fl(s),r=(e=s.ownerDocument)==null?void 0:e.body,i=ri(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=ri(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-a.scrollLeft+hl(s),l=-a.scrollTop;return kr(r||t).direction==="rtl"&&(o+=ri(t.clientWidth,r?r.clientWidth:0)-i),{width:i,height:n,x:o,y:l}}function gl(s){var e=kr(s),t=e.overflow,a=e.overflowX,r=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+a)}function mk(s){return["html","body","#document"].indexOf(Fa(s))>=0?s.ownerDocument.body:ba(s)&&gl(s)?s:mk(wn(s))}function ko(s,e){var t;e===void 0&&(e=[]);var a=mk(s),r=a===((t=s.ownerDocument)==null?void 0:t.body),i=It(a),n=r?[i].concat(i.visualViewport||[],gl(a)?a:[]):a,o=e.concat(n);return r?o:o.concat(ko(wn(n)))}function rd(s){return Object.assign({},s,{left:s.x,top:s.y,right:s.x+s.width,bottom:s.y+s.height})}function T9(s,e){var t=Is(s,!1,e==="fixed");return t.top=t.top+s.clientTop,t.left=t.left+s.clientLeft,t.bottom=t.top+s.clientHeight,t.right=t.left+s.clientWidth,t.width=s.clientWidth,t.height=s.clientHeight,t.x=t.left,t.y=t.top,t}function CB(s,e,t){return e===ck?rd(BC(s,t)):As(e)?T9(e,t):rd(WC(Va(s)))}function C9(s){var e=ko(wn(s)),t=["absolute","fixed"].indexOf(kr(s).position)>=0,a=t&&ba(s)?si(s):s;return As(a)?e.filter(function(r){return As(r)&&_u(r,a)&&Fa(r)!=="body"}):[]}function _C(s,e,t,a){var r=e==="clippingParents"?C9(s):[].concat(e),i=[].concat(r,[t]),n=i[0],o=i.reduce(function(l,d){var u=CB(s,d,a);return l.top=ri(u.top,l.top),l.right=dl(u.right,l.right),l.bottom=dl(u.bottom,l.bottom),l.left=ri(u.left,l.left),l},CB(s,n,a));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Yu(s){var e=s.reference,t=s.element,a=s.placement,r=a?ja(a):null,i=a?Rs(a):null,n=e.x+e.width/2-t.width/2,o=e.y+e.height/2-t.height/2,l;switch(r){case _t:l={x:n,y:e.y-t.height};break;case va:l={x:n,y:e.y+e.height};break;case ua:l={x:e.x+e.width,y:o};break;case Jt:l={x:e.x-t.width,y:o};break;default:l={x:e.x,y:e.y}}var d=r?pl(r):null;if(d!=null){var u=d==="y"?"height":"width";switch(i){case kn:l[d]=l[d]-(e[u]/2-t[u]/2);break;case cl:l[d]=l[d]+(e[u]/2-t[u]/2);break;default:}}return l}function ii(s,e){e===void 0&&(e={});var t=e,a=t.placement,r=a===void 0?s.placement:a,i=t.strategy,n=i===void 0?s.strategy:i,o=t.boundary,l=o===void 0?mB:o,d=t.rootBoundary,u=d===void 0?ck:d,p=t.elementContext,m=p===void 0?Zc:p,f=t.altBoundary,h=f===void 0?!1:f,k=t.padding,g=k===void 0?0:k,y=Uu(typeof g!="number"?g:$u(g,go)),w=m===Zc?fB:Zc,v=s.rects.popper,T=s.elements[h?w:m],x=_C(As(T)?T:T.contextElement||Va(s.elements.popper),l,u,n),C=Is(s.elements.reference),S=Yu({reference:C,element:v,strategy:"absolute",placement:r}),E=rd(Object.assign({},v,S)),P=m===Zc?E:C,I={top:x.top-P.top+y.top,bottom:P.bottom-x.bottom+y.bottom,left:x.left-P.left+y.left,right:P.right-x.right+y.right},L=s.modifiersData.offset;if(m===Zc&&L){var W=L[r];Object.keys(I).forEach(function(O){var H=[ua,va].indexOf(O)>=0?1:-1,$=[_t,va].indexOf(O)>=0?"y":"x";I[O]+=W[$]*H})}return I}function VC(s,e){e===void 0&&(e={});var t=e,a=t.placement,r=t.boundary,i=t.rootBoundary,n=t.padding,o=t.flipVariations,l=t.allowedAutoPlacements,d=l===void 0?dk:l,u=Rs(a),p=u?o?LC:LC.filter(function(h){return Rs(h)===u}):go,m=p.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=p);var f=m.reduce(function(h,k){return h[k]=ii(s,{placement:k,boundary:r,rootBoundary:i,padding:n})[ja(k)],h},{});return Object.keys(f).sort(function(h,k){return f[h]-f[k]})}function x9(s){if(ja(s)===lk)return[];var e=ad(s);return[pk(s),e,pk(e)]}function S9(s){var e=s.state,t=s.options,a=s.name;if(!e.modifiersData[a]._skip){for(var r=t.mainAxis,i=r===void 0?!0:r,n=t.altAxis,o=n===void 0?!0:n,l=t.fallbackPlacements,d=t.padding,u=t.boundary,p=t.rootBoundary,m=t.altBoundary,f=t.flipVariations,h=f===void 0?!0:f,k=t.allowedAutoPlacements,g=e.options.placement,y=ja(g),w=y===g,v=l||(w||!h?[ad(g)]:x9(g)),T=[g].concat(v).reduce(function($e,Le){return $e.concat(ja(Le)===lk?VC(e,{placement:Le,boundary:u,rootBoundary:p,padding:d,flipVariations:h,allowedAutoPlacements:k}):Le)},[]),x=e.rects.reference,C=e.rects.popper,S=new Map,E=!0,P=T[0],I=0;I<T.length;I++){var L=T[I],W=ja(L),O=Rs(L)===kn,H=[_t,va].indexOf(W)>=0,$=H?"width":"height",B=ii(e,{placement:L,boundary:u,rootBoundary:p,altBoundary:m,padding:d}),q=H?O?ua:Jt:O?va:_t;x[$]>C[$]&&(q=ad(q));var U=ad(q),z=[];if(i&&z.push(B[W]<=0),o&&z.push(B[q]<=0,B[U]<=0),z.every(function($e){return $e})){P=L,E=!1;break}S.set(L,z)}if(E)for(var te=h?3:1,fe=function(Le){var lt=T.find(function(ct){var _e=S.get(ct);if(_e)return _e.slice(0,Le).every(function(le){return le})});if(lt)return P=lt,"break"},ue=te;ue>0;ue--){var De=fe(ue);if(De==="break")break}e.placement!==P&&(e.modifiersData[a]._skip=!0,e.placement=P,e.reset=!0)}}var xB={name:"flip",enabled:!0,phase:"main",fn:S9,requiresIfExists:["offset"],data:{_skip:!1}};function SB(s,e,t){return t===void 0&&(t={x:0,y:0}),{top:s.top-e.height-t.y,right:s.right-e.width+t.x,bottom:s.bottom-e.height+t.y,left:s.left-e.width-t.x}}function EB(s){return[_t,ua,va,Jt].some(function(e){return s[e]>=0})}function E9(s){var e=s.state,t=s.name,a=e.rects.reference,r=e.rects.popper,i=e.modifiersData.preventOverflow,n=ii(e,{elementContext:"reference"}),o=ii(e,{altBoundary:!0}),l=SB(n,a),d=SB(o,r,i),u=EB(l),p=EB(d);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:u,hasPopperEscaped:p},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":p})}var DB={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:E9};function D9(s,e,t){var a=ja(s),r=[Jt,_t].indexOf(a)>=0?-1:1,i=typeof t=="function"?t(Object.assign({},e,{placement:s})):t,n=i[0],o=i[1];return n=n||0,o=(o||0)*r,[Jt,ua].indexOf(a)>=0?{x:o,y:n}:{x:n,y:o}}function P9(s){var e=s.state,t=s.options,a=s.name,r=t.offset,i=r===void 0?[0,0]:r,n=dk.reduce(function(u,p){return u[p]=D9(p,e.rects,i),u},{}),o=n[e.placement],l=o.x,d=o.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=d),e.modifiersData[a]=n}var PB={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:P9};function M9(s){var e=s.state,t=s.name;e.modifiersData[t]=Yu({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var MB={name:"popperOffsets",enabled:!0,phase:"read",fn:M9,data:{}};function UC(s){return s==="x"?"y":"x"}function A9(s){var e=s.state,t=s.options,a=s.name,r=t.mainAxis,i=r===void 0?!0:r,n=t.altAxis,o=n===void 0?!1:n,l=t.boundary,d=t.rootBoundary,u=t.altBoundary,p=t.padding,m=t.tether,f=m===void 0?!0:m,h=t.tetherOffset,k=h===void 0?0:h,g=ii(e,{boundary:l,rootBoundary:d,padding:p,altBoundary:u}),y=ja(e.placement),w=Rs(e.placement),v=!w,T=pl(y),x=UC(T),C=e.modifiersData.popperOffsets,S=e.rects.reference,E=e.rects.popper,P=typeof k=="function"?k(Object.assign({},e.rects,{placement:e.placement})):k,I=typeof P=="number"?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),L=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,W={x:0,y:0};if(!!C){if(i){var O,H=T==="y"?_t:Jt,$=T==="y"?va:ua,B=T==="y"?"height":"width",q=C[T],U=q+g[H],z=q-g[$],te=f?-E[B]/2:0,fe=w===kn?S[B]:E[B],ue=w===kn?-E[B]:-S[B],De=e.elements.arrow,$e=f&&De?ul(De):{width:0,height:0},Le=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Vu(),lt=Le[H],ct=Le[$],_e=ml(0,S[B],$e[B]),le=v?S[B]/2-te-_e-lt-I.mainAxis:fe-_e-lt-I.mainAxis,ke=v?-S[B]/2+te+_e+ct+I.mainAxis:ue+_e+ct+I.mainAxis,Ae=e.elements.arrow&&si(e.elements.arrow),at=Ae?T==="y"?Ae.clientTop||0:Ae.clientLeft||0:0,Te=(O=L==null?void 0:L[T])!=null?O:0,Pe=q+le-Te-at,Ze=q+ke-Te,Ie=ml(f?dl(U,Pe):U,q,f?ri(z,Ze):z);C[T]=Ie,W[T]=Ie-q}if(o){var fa,zt=T==="x"?_t:Jt,ft=T==="x"?va:ua,St=C[x],lr=x==="y"?"height":"width",wr=St+g[zt],ns=St-g[ft],aa=[_t,Jt].indexOf(y)!==-1,os=(fa=L==null?void 0:L[x])!=null?fa:0,za=aa?wr:St-S[lr]-E[lr]-os+I.altAxis,ls=aa?St+S[lr]+E[lr]-os-I.altAxis:ns,Bn=f&&aa?yB(za,St,ls):ml(f?za:wr,St,f?ls:ns);C[x]=Bn,W[x]=Bn-St}e.modifiersData[a]=W}}var AB={name:"preventOverflow",enabled:!0,phase:"main",fn:A9,requiresIfExists:["offset"]};function $C(s){return{scrollLeft:s.scrollLeft,scrollTop:s.scrollTop}}function YC(s){return s===It(s)||!ba(s)?fl(s):$C(s)}function I9(s){var e=s.getBoundingClientRect(),t=yn(e.width)/s.offsetWidth||1,a=yn(e.height)/s.offsetHeight||1;return t!==1||a!==1}function zC(s,e,t){t===void 0&&(t=!1);var a=ba(e),r=ba(e)&&I9(e),i=Va(e),n=Is(s,r,t),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(a||!a&&!t)&&((Fa(e)!=="body"||gl(i))&&(o=YC(e)),ba(e)?(l=Is(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):i&&(l.x=hl(i))),{x:n.left+o.scrollLeft-l.x,y:n.top+o.scrollTop-l.y,width:n.width,height:n.height}}function R9(s){var e=new Map,t=new Set,a=[];s.forEach(function(i){e.set(i.name,i)});function r(i){t.add(i.name);var n=[].concat(i.requires||[],i.requiresIfExists||[]);n.forEach(function(o){if(!t.has(o)){var l=e.get(o);l&&r(l)}}),a.push(i)}return s.forEach(function(i){t.has(i.name)||r(i)}),a}function qC(s){var e=R9(s);return hB.reduce(function(t,a){return t.concat(e.filter(function(r){return r.phase===a}))},[])}function GC(s){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(s())})})),e}}function KC(s){var e=s.reduce(function(t,a){var r=t[a.name];return t[a.name]=r?Object.assign({},r,a,{options:Object.assign({},r.options,a.options),data:Object.assign({},r.data,a.data)}):a,t},{});return Object.keys(e).map(function(t){return e[t]})}var IB={placement:"bottom",modifiers:[],strategy:"absolute"};function RB(){for(var s=arguments.length,e=new Array(s),t=0;t<s;t++)e[t]=arguments[t];return!e.some(function(a){return!(a&&typeof a.getBoundingClientRect=="function")})}function FB(s){s===void 0&&(s={});var e=s,t=e.defaultModifiers,a=t===void 0?[]:t,r=e.defaultOptions,i=r===void 0?IB:r;return function(o,l,d){d===void 0&&(d=i);var u={placement:"bottom",orderedModifiers:[],options:Object.assign({},IB,i),modifiersData:{},elements:{reference:o,popper:l},attributes:{},styles:{}},p=[],m=!1,f={state:u,setOptions:function(y){var w=typeof y=="function"?y(u.options):y;k(),u.options=Object.assign({},i,u.options,w),u.scrollParents={reference:As(o)?ko(o):o.contextElement?ko(o.contextElement):[],popper:ko(l)};var v=qC(KC([].concat(a,u.options.modifiers)));return u.orderedModifiers=v.filter(function(T){return T.enabled}),h(),f.update()},forceUpdate:function(){if(!m){var y=u.elements,w=y.reference,v=y.popper;if(!!RB(w,v)){u.rects={reference:zC(w,si(v),u.options.strategy==="fixed"),popper:ul(v)},u.reset=!1,u.placement=u.options.placement,u.orderedModifiers.forEach(function(I){return u.modifiersData[I.name]=Object.assign({},I.data)});for(var T=0;T<u.orderedModifiers.length;T++){if(u.reset===!0){u.reset=!1,T=-1;continue}var x=u.orderedModifiers[T],C=x.fn,S=x.options,E=S===void 0?{}:S,P=x.name;typeof C=="function"&&(u=C({state:u,options:E,name:P,instance:f})||u)}}}},update:GC(function(){return new Promise(function(g){f.forceUpdate(),g(u)})}),destroy:function(){k(),m=!0}};if(!RB(o,l))return f;f.setOptions(d).then(function(g){!m&&d.onFirstUpdate&&d.onFirstUpdate(g)});function h(){u.orderedModifiers.forEach(function(g){var y=g.name,w=g.options,v=w===void 0?{}:w,T=g.effect;if(typeof T=="function"){var x=T({state:u,name:y,instance:f,options:v}),C=function(){};p.push(x||C)}})}function k(){p.forEach(function(g){return g()}),p=[]}return f}}var F9=[TB,MB,bB,gB,PB,xB,AB,wB,DB],kl=FB({defaultModifiers:F9});var yo=class extends jB.Component{constructor(e,t,a,r="\u{1F4C5}"){super();this.popoverRef=null;this.popperInstance=null;this.onDateSelected=null;this.clickOutside=e=>{this.popoverRef&&!this.popoverRef.contains(e.target)&&this.close()};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=t,this.initialDate=a,this.dateMark=r,this.win=e.workspace.containerEl.win||window,this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"date-picker-popover-content"});this.registerDomEvent(t,"click",r=>{r.stopPropagation()}),this.datePickerComponent=new Jc(t,this.app,this.plugin,this.initialDate,this.dateMark),this.datePickerComponent.onload(),this.datePickerComponent.setOnDateChange(r=>{this.onDateSelected&&this.onDateSelected(r),this.close()}),this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"date-picker-popover tg-menu bm-menu"}),this.popoverRef.appendChild(t),document.body.appendChild(this.popoverRef);let a={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=kl(a,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.datePickerComponent&&this.datePickerComponent.onunload()}};var NB=OB.Annotation.define(),LB=class extends ts.WidgetType{constructor(e,t,a,r,i,n,o){super();this.app=e;this.plugin=t;this.view=a;this.from=r;this.to=i;this.currentDate=n;this.dateMark=o}eq(e){return this.from===e.from&&this.to===e.to&&this.currentDate===e.currentDate}toDOM(){try{let e=createEl("span",{cls:"date-picker-widget",attr:{"aria-label":"Task Date"}}),t=createSpan({cls:"task-date-text",text:this.currentDate});return t.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),this.showDateMenu(a)}),e.appendChild(t),e}catch(e){return console.error("Error creating date picker widget DOM:",e),createEl("span",{cls:"date-picker-widget-error",text:this.currentDate})}}showDateMenu(e){try{let t=this.currentDate.match(/\d{4}-\d{2}-\d{2}/),a=t?t[0]:null;if(fk.Platform.isDesktop){let r=new yo(this.app,this.plugin,a||void 0,this.dateMark);r.onDateSelected=i=>{i?this.setDate(i):this.setDate("")},r.showAtPosition({x:e.clientX,y:e.clientY})}else{let r=new ok(this.app,this.plugin,a||void 0,this.dateMark);r.onDateSelected=i=>{i?this.setDate(i):this.setDate("")},r.open()}}catch(t){console.error("Error showing date menu:",t)}}setDate(e){try{if(!this.view||this.view.state.doc.length<this.to){console.warn("Invalid view state, skipping date update");return}let t=this.plugin.settings.preferMetadataFormat==="dataview",a="";e&&(t?a=`${this.dateMark}${e}]`:a=`${this.dateMark} ${e}`);let r=this.view.state.update({changes:{from:this.from,to:this.to,insert:a},annotations:[NB.of(!0)]});this.view.dispatch(r)}catch(t){console.error("Error setting date:",t)}}};function HB(s,e){if(!e.settings.enableDatePicker)return[];class t{constructor(n){this.decorations=ts.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.dateMatch=new ts.MatchDecorator({regexp:this.createDateRegex(e.settings.preferMetadataFormat),decorate:(n,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m,f;m=d[0],f=d[1],n(o,l,ts.Decoration.replace({widget:new LB(s,e,u,o,l,m,f)}))}catch(p){console.warn("Error decorating date:",p)}}});this.view=n,this.plugin=e,this.updateDecorations(n)}createDateRegex(n){return n==="dataview"?new RegExp("(\\[[^\\]]+::\\s*)(\\d{4}-\\d{2}-\\d{2})\\]","g"):new RegExp("([\\p{Emoji}\\p{Emoji_Modifier}\\p{Emoji_Component}\\p{Emoji_Modifier_Base}\\p{Emoji_Presentation}])\\s*(\\d{4}-\\d{2}-\\d{2})","gu")}update(n){if(!this.isDestroyed)try{if(n.docChanged||n.viewportChanged||n.selectionSet||n.transactions.some(o=>o.annotation(NB))){let o=Date.now();o-this.lastUpdate>this.updateThreshold?(this.lastUpdate=o,this.updateDecorations(n.view,n)):setTimeout(()=>{this.view&&!this.isDestroyed&&this.updateDecorations(this.view)},this.updateThreshold)}}catch(o){console.error("Error in date picker update:",o)}}destroy(){this.isDestroyed=!0,this.decorations=ts.Decoration.none}updateDecorations(n,o){if(!this.isDestroyed){if(!this.isLivePreview(n.state)){this.decorations=ts.Decoration.none;return}try{o&&!o.docChanged&&this.decorations.size>0?this.decorations=this.dateMatch.updateDeco(o,this.decorations):this.decorations=this.dateMatch.createDeco(n)}catch(l){console.warn("Error updating date decorations, clearing decorations",l),this.decorations=ts.Decoration.none}}}isLivePreview(n){try{return n.field(fk.editorLivePreviewField)}catch(o){return console.warn("Error checking live preview state:",o),!1}}shouldRender(n,o,l){try{if(o<0||l>n.state.doc.length||o>=l)return!1;let u=(0,hk.syntaxTree)(n.state).resolveInner(o+1).type.prop(hk.tokenClassNodeProp);if(u){let f=u.split(" ");if(f.includes("hmd-codeblock")||f.includes("hmd-frontmatter"))return!1}return!n.state.selection.ranges.some(f=>!(f.to<=o||f.from>=l))&&this.isLivePreview(n.state)}catch(d){return console.warn("Error checking if date should render",d),!1}}}let a={decorations:i=>{try{return i.isDestroyed?ts.Decoration.none:i.decorations.update({filter:(n,o,l)=>{var d;try{if(((d=l.spec)==null?void 0:d.widget).error||n<0||o>i.view.state.doc.length||n>=o)return!1;let p=i.view.state.selection;for(let m of p.ranges)if(!(m.to<=n||m.from>=o))return!1;return!0}catch(u){return console.warn("Error filtering date decoration:",u),!1}}})}catch(n){return console.warn("Error filtering date decorations",n),i.decorations}}};return ts.ViewPlugin.fromClass(t,a)}var Rt=A(require("obsidian")),wo=A(require("@codemirror/state")),WB=A(require("@codemirror/view"));Xl();Zl();Q();hs();var Ta=A(require("obsidian")),BB=A(require("@codemirror/state"));Q();var QC=class extends Ta.EditorSuggest{constructor(e,t){super(e);this.isQuickCaptureMode=!1;this.taskMetadata=null;this.updateButtonState=null;this.dateButton=null;this.priorityButton=null;this.tagsButton=null;this.targetFileUpdater=null;this.plugin=t}setQuickCaptureContext(e,t,a,r,i){this.isQuickCaptureMode=e,this.taskMetadata=t,this.updateButtonState=a,r&&(this.dateButton=r.dateButton,this.priorityButton=r.priorityButton,this.tagsButton=r.tagsButton),this.targetFileUpdater=i||null}onTrigger(e,t,a){var o;if(!this.isQuickCaptureMode)return null;let r=(o=t.cm)==null?void 0:o.dom;if(!r||!r.closest(".quick-capture-panel"))return null;let i=t.getLine(e.line),n=["~","!","#","*","@"];if(e.ch>0){let l=i.charAt(e.ch-1);if(n.includes(l))return{start:{line:e.line,ch:e.ch-1},end:e,query:l}}return null}getSuggestions(e){switch(e.query){case"~":return this.getDateSuggestions();case"!":return this.getPrioritySuggestions();case"#":return this.getTagSuggestions();case"*":case"@":return this.getLocationSuggestions();default:return[]}}getDateSuggestions(){return[{id:"date-today",label:c("Today"),icon:"calendar",description:(0,Ta.moment)().format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-tomorrow",label:c("Tomorrow"),icon:"calendar",description:(0,Ta.moment)().add(1,"day").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"day").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"day").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-week",label:c("Next week"),icon:"calendar",description:(0,Ta.moment)().add(1,"week").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"week").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"week").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-month",label:c("Next month"),icon:"calendar",description:(0,Ta.moment)().add(1,"month").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ta.moment)().add(1,"month").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ta.moment)().add(1,"month").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}}]}getPrioritySuggestions(){return[{id:"priority-highest",label:c("Highest"),icon:"arrow-up",description:c("\u{1F53A} Highest priority"),replacement:"\u{1F53A}",trigger:"!",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.priority=5),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-high",label:c("High"),icon:"arrow-up",description:c("\u23EB High priority"),replacement:"\u23EB",trigger:"!",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.priority=4),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-medium",label:c("Medium"),icon:"minus",description:c("\u{1F53C} Medium priority"),replacement:"\u{1F53C}",trigger:"!",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.priority=3),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-low",label:c("Low"),icon:"arrow-down",description:c("\u{1F53D} Low priority"),replacement:"\u{1F53D}",trigger:"!",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.priority=2),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}},{id:"priority-lowest",label:c("Lowest"),icon:"arrow-down",description:c("\u23EC Lowest priority"),replacement:"\u23EC",trigger:"!",action:(e,t,a)=>{this.taskMetadata&&(this.taskMetadata.priority=1),this.updateButtonState&&this.priorityButton&&this.updateButtonState(this.priorityButton,!0)}}]}getTagSuggestions(){return["important","urgent","todo","review","idea","question","work","personal"].map(t=>({id:`tag-${t}`,label:`#${t}`,icon:"tag",description:c(`Add tag: ${t}`),replacement:`#${t}`,trigger:"#",action:(a,r,i)=>{this.taskMetadata&&(this.taskMetadata.tags||(this.taskMetadata.tags=[]),this.taskMetadata.tags.includes(t)||this.taskMetadata.tags.push(t)),this.updateButtonState&&this.tagsButton&&this.updateButtonState(this.tagsButton,!0)}}))}getLocationSuggestions(){let e=[],t=this.plugin.settings.quickCapture,a=t.dailyNoteSettings||{},r=(0,Ta.moment)().format(a.format||"YYYY-MM-DD"),i=r+".md";return a.folder&&a.folder.trim()!==""&&(i=`${a.folder.replace(/\/$/,"")}/${r}.md`),e.push({id:"location-fixed",label:c("Fixed File"),icon:"file",description:t.targetFile||"Quick Capture.md",replacement:"",trigger:"*",action:(n,o,l)=>{let d=this.plugin.settings.quickCapture.targetFile||"Quick Capture.md";this.targetFileUpdater&&this.targetFileUpdater(d)}}),e.push({id:"location-daily",label:c("Daily Note"),icon:"calendar-days",description:i,replacement:"",trigger:"*",action:(n,o,l)=>{let d=this.plugin.settings.quickCapture.dailyNoteSettings||{},u=(0,Ta.moment)().format(d.format||"YYYY-MM-DD"),p=u+".md";d.folder&&d.folder.trim()!==""&&(p=`${d.folder.replace(/\/$/,"")}/${u}.md`),this.targetFileUpdater&&this.targetFileUpdater(p)}}),e.push({id:"location-inbox",label:c("Inbox"),icon:"inbox",description:c("Save to Inbox.md"),replacement:"",trigger:"*",action:(n,o,l)=>{this.targetFileUpdater&&this.targetFileUpdater("Inbox.md")}}),e}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let a=t.createDiv("menu-item-icon");(0,Ta.setIcon)(a,e.icon);let r=t.createDiv("menu-item-title");if(r.textContent=e.label,e.description){let i=t.createDiv("menu-item-description");i.textContent=e.description}}selectSuggestion(e,t){var n,o,l;let a=(n=this.context)==null?void 0:n.editor,r=(o=this.context)==null?void 0:o.end;if(!a||!r)return;let i=a.cm;if(i){if((l=i.state)==null?void 0:l.doc){let d=i.state.doc.line(r.line+1).from+r.ch-1,u=i.state.doc.line(r.line+1).from+r.ch;i.dispatch({changes:{from:d,to:u,insert:e.replacement},annotations:[BB.Transaction.userEvent.of("input")]})}}else{let d={line:r.line,ch:r.ch-1},u=r;a.replaceRange(e.replacement,d,u)}e.action&&e.action(a,r,this.taskMetadata),this.close()}};function j9(s){return s.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function O9(s){let e=s.split("/");return e.map((a,r)=>r===e.length-1?j9(a):a.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var vn=wo.StateEffect.define(),XC=wo.StateField.define({create:()=>!1,update(s,e){var t;for(let a of e.effects)a.is(vn)&&((t=e.state.field(Rt.editorInfoField))==null?void 0:t.file)&&(s=a.value);return s},provide:s=>WB.showPanel.from(s,e=>e?N9:null)}),_B=(s,e)=>{s.dispatch({effects:vn.of(!1)}),setTimeout(()=>{let t=e.workspace.activeLeaf;t&&t.view instanceof Rt.MarkdownView&&t.view.editor&&!t.view.editor.hasFocus()&&t.view.editor.focus()},10)},gk=async(s,e,t,a,r,i)=>{if(!t)return;let n=t.value.trim();if(!n){new Rt.Notice(c("Nothing to capture"));return}if(i){let o=[];if(i.dueDate&&o.push(`\u{1F4C5} ${(0,Rt.moment)(i.dueDate).format("YYYY-MM-DD")}`),i.priority){let l=["\u23EC","\u{1F53D}","\u{1F53C}","\u23EB","\u{1F53A}"];o.push(l[i.priority-1])}i.tags&&i.tags.length>0&&o.push(...i.tags.map(l=>`#${l}`)),o.length>0&&(n=`${n} ${o.join(" ")}`)}if(a.autoAddTaskPrefix!==!1){let o=a.taskPrefix||"- [ ]";["- [ ]","- [x]","- [X]","- [/]","- [-]","- [>]","- ","* ","+ "].some(u=>n.trimStart().startsWith(u))||(n=n.split(`
`).map(p=>p.trim()?`${o} ${p.trim()}`:p).join(`
`))}try{let o={...a,targetFile:r};await wi(e,n,o),t.set("",!1),s.dispatch({effects:vn.of(!1)});let l=r;if(a.targetType==="daily-note"&&a.dailyNoteSettings){let d=(0,Rt.moment)().format(a.dailyNoteSettings.format),u=a.dailyNoteSettings.folder?`${a.dailyNoteSettings.folder}/${d}.md`:`${d}.md`;l=O9(u)}new Rt.Notice(`${c("Captured successfully to")} ${l}`)}catch(o){new Rt.Notice(`${c("Failed to save:")} ${o}`)}},VB=wo.Facet.define({combine:s=>{var e,t,a,r,i,n,o,l,d,u,p,m,f,h;return{targetFile:((e=s.find(k=>k.targetFile))==null?void 0:e.targetFile)||"Quick capture.md",placeholder:((t=s.find(k=>k.placeholder))==null?void 0:t.placeholder)||c("Capture thoughts, tasks, or ideas..."),appendToFile:(r=(a=s.find(k=>k.appendToFile!==void 0))==null?void 0:a.appendToFile)!=null?r:"append",targetType:(n=(i=s.find(k=>k.targetType))==null?void 0:i.targetType)!=null?n:"fixed",targetHeading:(l=(o=s.find(k=>k.targetHeading))==null?void 0:o.targetHeading)!=null?l:"",dailyNoteSettings:(u=(d=s.find(k=>k.dailyNoteSettings))==null?void 0:d.dailyNoteSettings)!=null?u:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(m=(p=s.find(k=>k.autoAddTaskPrefix!==void 0))==null?void 0:p.autoAddTaskPrefix)!=null?m:!0,taskPrefix:(h=(f=s.find(k=>k.taskPrefix))==null?void 0:f.taskPrefix)!=null?h:"- [ ]"}}});function JC(s,e,t){s.showAtMouseEvent(new MouseEvent("click",{clientX:e,clientY:t}))}function N9(s){let e=createDiv({cls:"quick-capture-panel"}),t=s.state.facet(UB),a=s.state.facet(VB),r;if(a.targetType==="daily-note"&&a.dailyNoteSettings){let w=(0,Rt.moment)().format(a.dailyNoteSettings.format||"YYYY-MM-DD"),v=w+".md";a.dailyNoteSettings.folder&&a.dailyNoteSettings.folder.trim()!==""&&(v=`${a.dailyNoteSettings.folder.replace(/\/$/,"")}/${w}.md`),r=v}else r=a.targetFile||"Quick Capture.md";let i=e.createEl("div",{cls:"quick-capture-header-container"});i.createEl("span",{cls:"quick-capture-title",text:c("Capture to")});let n=i.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:"true",spellcheck:"false"},text:r});n.addEventListener("input",()=>{r=n.textContent||""}),n.addEventListener("blur",()=>{var v;let w=(v=n.textContent)==null?void 0:v.trim();w?(r=w,r.endsWith(".md")||(r+=".md",n.textContent=r)):(r=a.targetFile||"Quick Capture.md",n.textContent=r)});let o=i.createEl("div",{cls:"quick-capture-actions"}),l={},d=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set date")}});(0,Rt.setIcon)(d,"calendar");let u=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set priority")}});(0,Rt.setIcon)(u,"zap");let p=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Add tags")}});(0,Rt.setIcon)(p,"tag");let m=(w,v)=>{v?w.addClass("active"):w.removeClass("active")},f=e.createEl("div",{cls:"quick-capture-editor"}),h=null;setTimeout(()=>{var v;h=yi(t,f,{placeholder:a.placeholder,onEnter:(T,x,C)=>x?(gk(s,t,h,a,r,l),!0):!1,onEscape:T=>{_B(s,t)},onSubmit:T=>{gk(s,t,h,a,r)}}),(v=h==null?void 0:h.editor)==null||v.focus(),n.addEventListener("keydown",T=>{var x;T.key==="Enter"&&(T.preventDefault(),n.blur(),(x=h==null?void 0:h.editor)==null||x.focus())});let w=s.state.facet(ZC);w.quickCaptureSuggest&&(h==null?void 0:h.editor)&&w.quickCaptureSuggest.setQuickCaptureContext(!0,l,m,{dateButton:d,priorityButton:u,tagsButton:p},T=>{r=T,n&&(n.textContent=T)}),h.scope.register(["Alt"],"c",T=>(T.preventDefault(),h?h.value.trim()===""?(_B(s,t),!0):(gk(s,t,h,a,r),!0):!1)),a.targetType==="fixed"&&h.scope.register(["Alt"],"x",T=>(T.preventDefault(),n.focus(),!0)),h.scope.register(["Alt"],"d",T=>(T.preventDefault(),d.click(),!0)),h.scope.register(["Alt"],"p",T=>(T.preventDefault(),u.click(),!0)),h.scope.register(["Alt"],"t",T=>(T.preventDefault(),p.click(),!0))},10);let k=e.createEl("div",{cls:"quick-capture-buttons"});return k.createEl("button",{cls:"quick-capture-submit mod-cta",text:c("Capture")}).addEventListener("click",()=>{gk(s,t,h,a,r)}),k.createEl("button",{cls:"quick-capture-cancel mod-destructive",text:c("Cancel")}).addEventListener("click",()=>{s.dispatch({effects:vn.of(!1)})}),a.targetType==="fixed"&&new ec(t,n,a,w=>{var v;n.textContent=w.path,r=w.path,(v=h==null?void 0:h.editor)==null||v.focus()}),d.addEventListener("click",()=>{let w=[{label:c("Today"),date:(0,Rt.moment)().toDate()},{label:c("Tomorrow"),date:(0,Rt.moment)().add(1,"day").toDate()},{label:c("Next week"),date:(0,Rt.moment)().add(1,"week").toDate()},{label:c("Next month"),date:(0,Rt.moment)().add(1,"month").toDate()}],v=new Rt.Menu;w.forEach(x=>{v.addItem(C=>{C.setTitle(x.label),C.setIcon("calendar"),C.onClick(()=>{var S;l.dueDate=x.date,m(d,!0),(S=h==null?void 0:h.editor)==null||S.focus()})})}),v.addSeparator(),v.addItem(x=>{x.setTitle(c("Clear date")),x.setIcon("x"),x.onClick(()=>{var C;delete l.dueDate,m(d,!1),(C=h==null?void 0:h.editor)==null||C.focus()})});let T=d.getBoundingClientRect();JC(v,T.left,T.bottom+5)}),u.addEventListener("click",()=>{let w=[{level:5,label:c("Highest"),icon:"\u{1F53A}"},{level:4,label:c("High"),icon:"\u23EB"},{level:3,label:c("Medium"),icon:"\u{1F53C}"},{level:2,label:c("Low"),icon:"\u{1F53D}"},{level:1,label:c("Lowest"),icon:"\u23EC"}],v=new Rt.Menu;w.forEach(x=>{v.addItem(C=>{C.setTitle(`${x.icon} ${x.label}`),C.onClick(()=>{var S;l.priority=x.level,m(u,!0),(S=h==null?void 0:h.editor)==null||S.focus()})})}),v.addSeparator(),v.addItem(x=>{x.setTitle(c("Clear priority")),x.setIcon("x"),x.onClick(()=>{var C;delete l.priority,m(u,!1),(C=h==null?void 0:h.editor)==null||C.focus()})});let T=u.getBoundingClientRect();JC(v,T.left,T.bottom+5)}),p.addEventListener("click",()=>{let w=new Rt.Menu;["important","urgent","todo","review","idea","question"].forEach(x=>{var S;let C=(S=l.tags)==null?void 0:S.includes(x);w.addItem(E=>{E.setTitle(C?`\u2713 #${x}`:`#${x}`),E.setIcon("tag"),E.onClick(()=>{var P;l.tags||(l.tags=[]),C?(l.tags=l.tags.filter(I=>I!==x),l.tags.length===0&&(delete l.tags,m(p,!1))):(l.tags.push(x),m(p,!0)),(P=h==null?void 0:h.editor)==null||P.focus()})})}),w.addSeparator(),w.addItem(x=>{x.setTitle(c("Clear all tags")),x.setIcon("x"),x.onClick(()=>{var C;delete l.tags,m(p,!1),(C=h==null?void 0:h.editor)==null||C.focus()})});let T=p.getBoundingClientRect();JC(w,T.left,T.bottom+5)}),{dom:e,top:!1,update:w=>{},destroy:()=>{let w=s.state.facet(ZC);w.quickCaptureSuggest&&w.quickCaptureSuggest.setQuickCaptureContext(!1),h==null||h.destroy(),h=null}}}var UB=wo.Facet.define({combine:s=>s[0]}),ZC=wo.Facet.define({combine:s=>s[0]});function ex(s,e){var t,a,r,i,n,o,l,d,u,p,m,f,h,k;return e.quickCaptureSuggest||(e.quickCaptureSuggest=new QC(s,e),e.registerEditorSuggest(e.quickCaptureSuggest)),[XC,VB.of({targetFile:((t=e.settings.quickCapture)==null?void 0:t.targetFile)||"Quick Capture.md",placeholder:((a=e.settings.quickCapture)==null?void 0:a.placeholder)||c("Capture thoughts, tasks, or ideas..."),appendToFile:(i=(r=e.settings.quickCapture)==null?void 0:r.appendToFile)!=null?i:"append",targetType:(o=(n=e.settings.quickCapture)==null?void 0:n.targetType)!=null?o:"fixed",targetHeading:(d=(l=e.settings.quickCapture)==null?void 0:l.targetHeading)!=null?d:"",dailyNoteSettings:(p=(u=e.settings.quickCapture)==null?void 0:u.dailyNoteSettings)!=null?p:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(f=(m=e.settings.quickCapture)==null?void 0:m.autoAddTaskPrefix)!=null?f:!0,taskPrefix:(k=(h=e.settings.quickCapture)==null?void 0:h.taskPrefix)!=null?k:"- [ ]"}),UB.of(s),ZC.of(e)]}cn();var Vt=A(require("obsidian"));Xl();Zl();Q();Sg();Wo();Cr();var tx=class extends Vt.Modal{constructor(e,t){super(e);this.markdownEditor=null;this.capturedContent="";this.taskMetadata={};this.dateButton=null;this.priorityButton=null;this.locationButton=null;this.tagButton=null;this.universalSuggest=null;this.plugin=t,this.minimalSuggest=t.minimalQuickCaptureSuggest,this.suggestManager=new io(e,t);let a=this.plugin.settings.quickCapture.minimalModeSettings;this.taskMetadata.location=this.plugin.settings.quickCapture.targetType||"fixed",this.taskMetadata.targetFile=this.getTargetFile()}onOpen(){let{contentEl:e}=this;this.modalEl.addClass("quick-capture-modal"),this.modalEl.addClass("minimal"),this.modalEl.__minimalQuickCaptureModal=this,this.suggestManager.startManaging(),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!0),this.createMinimalInterface(e),setTimeout(()=>{var t,a;((a=(t=this.markdownEditor)==null?void 0:t.editor)==null?void 0:a.editor)&&(this.universalSuggest=this.suggestManager.enableForMinimalModal(this.markdownEditor.editor.editor),this.universalSuggest.enable())},100)}onClose(){this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.suggestManager.stopManaging(),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!1),this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),delete this.modalEl.__minimalQuickCaptureModal,this.contentEl.empty()}createMinimalInterface(e){this.titleEl.setText(c("Minimal Quick Capture"));let t=e.createDiv({cls:"quick-capture-minimal-editor-container"});this.setupMarkdownEditor(t);let a=e.createDiv({cls:"quick-capture-minimal-buttons"});this.createQuickActionButtons(a),this.createMainButtons(a)}setupMarkdownEditor(e){setTimeout(()=>{var t,a;this.markdownEditor=yi(this.app,e,{placeholder:c("Enter your task..."),singleLine:!0,onEnter:(r,i,n)=>i?(this.handleSubmit(),!0):(this.handleSubmit(),!0),onEscape:r=>{this.close()},onChange:r=>{var i;this.capturedContent=((i=this.markdownEditor)==null?void 0:i.value)||"",this.parseContentAndUpdateButtons()}}),(a=(t=this.markdownEditor)==null?void 0:t.editor)==null||a.focus()},50)}createQuickActionButtons(e){let t=this.plugin.settings.quickCapture.minimalModeSettings||{},a=e.createDiv({cls:"quick-actions-left"});this.dateButton=a.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set date")}}),(0,Vt.setIcon)(this.dateButton,"calendar"),this.dateButton.addEventListener("click",()=>this.showDatePicker()),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.priorityButton=a.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set priority")}}),(0,Vt.setIcon)(this.priorityButton,"zap"),this.priorityButton.addEventListener("click",()=>this.showPriorityMenu()),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.locationButton=a.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set location")}}),(0,Vt.setIcon)(this.locationButton,"folder"),this.locationButton.addEventListener("click",()=>this.showLocationMenu()),this.updateButtonState(this.locationButton,this.taskMetadata.location!==(this.plugin.settings.quickCapture.targetType||"fixed")),this.tagButton=a.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Add tags")}}),(0,Vt.setIcon)(this.tagButton,"tag"),this.tagButton.addEventListener("click",()=>{}),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0))}createMainButtons(e){e.createDiv({cls:"quick-actions-right"}).createEl("button",{text:c("Save"),cls:"mod-cta quick-action-save"}).addEventListener("click",()=>this.handleSubmit())}updateButtonState(e,t){t?e.addClass("active"):e.removeClass("active")}showMenuAtCoords(e,t,a){e.showAtMouseEvent(new MouseEvent("click",{clientX:t,clientY:a}))}showDatePickerAtCursor(e,t){this.showDatePicker(t,e)}showDatePicker(e,t){let a=[{label:c("Tomorrow"),date:(0,Vt.moment)().add(1,"day").toDate()},{label:c("Day after tomorrow"),date:(0,Vt.moment)().add(2,"day").toDate()},{label:c("Next week"),date:(0,Vt.moment)().add(1,"week").toDate()},{label:c("Next month"),date:(0,Vt.moment)().add(1,"month").toDate()}],r=new Vt.Menu;if(a.forEach(i=>{r.addItem(n=>{n.setTitle(i.label),n.setIcon("calendar"),n.onClick(()=>{this.taskMetadata.dueDate=i.date,this.updateButtonState(this.dateButton,!0),e&&this.markdownEditor&&this.replaceAtCursor(e,this.formatDate(i.date))})})}),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Choose date...")),i.setIcon("calendar-days"),i.onClick(()=>{})}),t)this.showMenuAtCoords(r,t.left,t.top);else if(this.dateButton){let i=this.dateButton.getBoundingClientRect();this.showMenuAtCoords(r,i.left,i.bottom+5)}}showPriorityMenuAtCursor(e,t){this.showPriorityMenu(t,e)}showPriorityMenu(e,t){let a=[{level:5,label:c("Highest"),icon:"\u{1F53A}"},{level:4,label:c("High"),icon:"\u23EB"},{level:3,label:c("Medium"),icon:"\u{1F53C}"},{level:2,label:c("Low"),icon:"\u{1F53D}"},{level:1,label:c("Lowest"),icon:"\u23EC"}],r=new Vt.Menu;if(a.forEach(i=>{r.addItem(n=>{n.setTitle(`${i.icon} ${i.label}`),n.onClick(()=>{this.taskMetadata.priority=i.level,this.updateButtonState(this.priorityButton,!0),e&&this.markdownEditor&&this.replaceAtCursor(e,i.icon)})})}),t)this.showMenuAtCoords(r,t.left,t.top);else if(this.priorityButton){let i=this.priorityButton.getBoundingClientRect();this.showMenuAtCoords(r,i.left,i.bottom+5)}}showLocationMenuAtCursor(e,t){this.showLocationMenu(t,e)}showLocationMenu(e,t){let a=new Vt.Menu;if(a.addItem(r=>{r.setTitle(c("Fixed location")),r.setIcon("file"),r.onClick(()=>{this.taskMetadata.location="fixed",this.taskMetadata.targetFile=this.plugin.settings.quickCapture.targetFile,this.updateButtonState(this.locationButton,this.taskMetadata.location!==(this.plugin.settings.quickCapture.targetType||"fixed")),e&&this.markdownEditor&&this.replaceAtCursor(e,c("Fixed location"))})}),a.addItem(r=>{r.setTitle(c("Daily note")),r.setIcon("calendar"),r.onClick(()=>{var i;this.taskMetadata.location="daily-note",this.taskMetadata.targetFile=this.getDailyNoteFile(),this.updateButtonState(this.locationButton,this.taskMetadata.location!==(((i=this.plugin.settings.quickCapture)==null?void 0:i.targetType)||"fixed")),e&&this.markdownEditor&&this.replaceAtCursor(e,c("Daily note"))})}),t)this.showMenuAtCoords(a,t.left,t.top);else if(this.locationButton){let r=this.locationButton.getBoundingClientRect();this.showMenuAtCoords(a,r.left,r.bottom+5)}}showTagSelectorAtCursor(e,t){}replaceAtCursor(e,t){if(!this.markdownEditor)return;let a=this.markdownEditor.editor.cm;a&&a.replaceRange&&a.replaceRange(t,{line:e.line,ch:e.ch-1},e)}getTargetFile(){let e=this.plugin.settings.quickCapture;return this.taskMetadata.location==="daily-note"?this.getDailyNoteFile():e.targetFile}getDailyNoteFile(){let e=this.plugin.settings.quickCapture.dailyNoteSettings,t=(0,Vt.moment)().format(e.format);return e.folder?`${e.folder}/${t}.md`:`${t}.md`}formatDate(e){return(0,Vt.moment)(e).format("YYYY-MM-DD")}processMinimalContent(e){return e.trim()?e.split(`
`).map(r=>{let i=r.trim();return i&&!i.startsWith("- [")?`- [ ] ${Ka(i)}`:r}).join(`
`):""}cleanTemporaryMarks(e){let t=e;return t=t.replace(/\s*!\s*/g," "),t=t.replace(/\s*~\s*/g," "),t=t.replace(/\s*[🔺⏫🔼🔽⏬️]\s*/g," "),t=t.replace(/\s*[📅🛫⏳✅➕❌]\s*/g," "),t=t.replace(/\s*[📁🏠🏢🏪🏫🏬🏭🏯🏰]\s*/g," "),t=t.replace(/\s*[🆔⛔🏁🔁]\s*/g," "),t=t.replace(/\s*@\w*\s*/g," "),t=t.replace(/\s*target:\s*/gi," "),t=t.replace(/\s+/g," ").trim(),t}addMetadataToContent(e){let t=[];if(this.taskMetadata.dueDate&&t.push(`\u{1F4C5} ${this.formatDate(this.taskMetadata.dueDate)}`),this.taskMetadata.priority){let a=["\u23EC","\u{1F53D}","\u{1F53C}","\u23EB","\u{1F53A}"];t.push(a[this.taskMetadata.priority-1])}return this.taskMetadata.tags&&this.taskMetadata.tags.length>0&&t.push(...this.taskMetadata.tags.map(a=>`#${a}`)),t.length>0?`${e} ${t.join(" ")}`:e}async handleSubmit(){let e=this.capturedContent.trim();if(!e){new Vt.Notice(c("Nothing to capture"));return}try{let t=this.processMinimalContent(e);t=this.addMetadataToContent(t);let a={...this.plugin.settings.quickCapture,targetFile:this.taskMetadata.targetFile||this.getTargetFile(),targetType:this.taskMetadata.location||"fixed"};await wi(this.app,t,a),new Vt.Notice(c("Captured successfully")),this.close()}catch(t){new Vt.Notice(`${c("Failed to save:")} ${t}`)}}parseContentAndUpdateButtons(){try{let e=this.capturedContent.trim();if(!e){this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile));return}let t=new cv({}),[a,r,i]=t.extractMetadataAndTags(e);if(r.dueDate&&(this.taskMetadata.dueDate=new Date(r.dueDate)),r.priority){let n={highest:5,high:4,medium:3,low:2,lowest:1};this.taskMetadata.priority=n[r.priority]||3}i&&i.length>0&&(this.taskMetadata.tags||(this.taskMetadata.tags=[]),i.forEach(n=>{this.taskMetadata.tags.includes(n)||this.taskMetadata.tags.push(n)})),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile||r.project||r.location))}catch(e){console.error("Error parsing content:",e),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0)),this.updateButtonState(this.locationButton,!!(this.taskMetadata.location||this.taskMetadata.targetFile))}}};var kk=A(require("obsidian")),ax=A(require("@codemirror/state"));Q();Tg();var rx=class extends kk.EditorSuggest{constructor(e,t){super(e);this.isMinimalMode=!1;this.plugin=t}setMinimalMode(e){this.isMinimalMode=e}onTrigger(e,t,a){var l,d;if(!this.isMinimalMode)return null;let r=(l=t.cm)==null?void 0:l.dom;if(!r||!r.closest(".quick-capture-modal.minimal"))return null;let i=t.getLine(e.line),n=((d=this.plugin.settings.quickCapture.minimalModeSettings)==null?void 0:d.suggestTrigger)||"/",o=["/",n,"~","!","*","#"];if(e.ch>0){let u=i.charAt(e.ch-1);if(o.includes(u))return{start:{line:e.line,ch:e.ch-1},end:e,query:u}}return null}getSuggestions(e){let t=e.query;return t==="/"?[{id:"date",label:c("Date"),icon:"calendar",description:c("Add date (triggers ~)"),replacement:"~",trigger:"/"},{id:"priority",label:c("Priority"),icon:"zap",description:c("Set priority (triggers !)"),replacement:"!",trigger:"/"},{id:"target",label:c("Target Location"),icon:"folder",description:c("Set target location (triggers *)"),replacement:"*",trigger:"/"},{id:"tag",label:c("Tag"),icon:"tag",description:c("Add tags (triggers #)"),replacement:"#",trigger:"/"}]:vu(t==="@"?"*":t,this.plugin)}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let a=t.createDiv("menu-item-icon");(0,kk.setIcon)(a,e.icon);let r=t.createDiv("menu-item-title");r.textContent=e.label}selectSuggestion(e,t){var u,p,m,f,h;let a=(u=this.context)==null?void 0:u.editor,r=(p=this.context)==null?void 0:p.end;if(!a||!r)return;let i=((m=this.context)==null?void 0:m.query)||"";if(["!","~","#","*"].includes(i)&&!["date","priority","target","tag"].includes(e.id)){let k=a.cm;if(k){let g=k.state.doc.line(r.line+1).from+r.ch-1,y=k.state.doc.line(r.line+1).from+r.ch;k.dispatch({changes:{from:g,to:y,insert:""},annotations:[ax.Transaction.userEvent.of("input")]})}else{let g={line:r.line,ch:r.ch-1},y=r;a.replaceRange("",g,y),a.setCursor(g)}}else{let k=a.cm;if(k)if((f=k.state)==null?void 0:f.doc){let g=k.state.doc.line(r.line+1).from+r.ch-1,y=k.state.doc.line(r.line+1).from+r.ch;k.dispatch({changes:{from:g,to:y,insert:e.replacement},annotations:[ax.Transaction.userEvent.of("input")]})}else{let g={line:r.line,ch:r.ch-1},y=r;a.replaceRange(e.replacement,g,y);let w={line:r.line,ch:r.ch-1+e.replacement.length};a.setCursor(w)}else{let g={line:r.line,ch:r.ch-1},y=r;a.replaceRange(e.replacement,g,y);let w={line:r.line,ch:r.ch-1+e.replacement.length};a.setCursor(w)}}let o=(h=a.cm)==null?void 0:h.dom,l=o==null?void 0:o.closest(".quick-capture-modal.minimal"),d=l==null?void 0:l.__minimalQuickCaptureModal;if(e.action){let k={line:r.line,ch:r.ch-1+e.replacement.length};e.action(a,k)}d&&typeof d.parseContentAndUpdateButtons=="function"&&setTimeout(()=>{d.parseContentAndUpdateButtons()},50),this.close()}};Sg();var $V=A(require("obsidian")),Ht=A(require("obsidian"));Q();var ni=A(require("obsidian"));var sd=A(require("obsidian"));function vo(s){let e=new Date(s);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}var sx=class extends sd.Component{constructor(e,t,a){super();this.app=e;this.vault=t;this.metadataCache=a;this.lastIndexTime=new Map;this.indexQueue=[];this.isProcessingQueue=!1;this.taskCache=this.initEmptyCache(),this.setupEventListeners()}setParseFileCallback(e){this.parseFileCallback=e}setFileFilterManager(e){this.fileFilterManager=e}initEmptyCache(){return{tasks:new Map,files:new Map,tags:new Map,projects:new Map,contexts:new Map,dueDate:new Map,startDate:new Map,scheduledDate:new Map,completed:new Map,priority:new Map,cancelledDate:new Map,onCompletion:new Map,dependsOn:new Map,taskId:new Map,fileMtimes:new Map,fileProcessedTimes:new Map}}setupEventListeners(){this.registerEvent(this.vault.on("modify",e=>{e instanceof sd.TFile&&ai(e,this.fileFilterManager)&&this.queueFileForIndexing(e)})),this.registerEvent(this.vault.on("delete",e=>{e instanceof sd.TFile&&ai(e,this.fileFilterManager)&&this.removeFileFromIndex(e)})),this.registerEvent(this.vault.on("create",e=>{e instanceof sd.TFile&&ai(e,this.fileFilterManager)&&this.queueFileForIndexing(e)}))}queueFileForIndexing(e){this.indexQueue.some(t=>t.path===e.path)||this.indexQueue.push(e),this.isProcessingQueue||this.processIndexQueue()}async processIndexQueue(){if(this.indexQueue.length===0){this.isProcessingQueue=!1;return}this.isProcessingQueue=!0;let e=this.indexQueue.shift();if(e&&this.parseFileCallback)try{let t=await this.parseFileCallback(e);this.updateIndexWithTasks(e.path,t)}catch(t){console.error(`Error processing file ${e.path} in queue:`,t)}setTimeout(()=>this.processIndexQueue(),50)}async initialize(){this.taskCache=this.initEmptyCache()}getCache(){return this.ensureCacheStructure(this.taskCache),this.taskCache}async indexAllFiles(){console.warn("TaskIndexer.indexAllFiles is deprecated. Use external parsing components instead."),await this.initialize()}async indexFile(e){if(this.parseFileCallback)try{let t=await this.parseFileCallback(e);this.updateIndexWithTasks(e.path,t)}catch(t){console.error(`Error indexing file ${e.path}:`,t)}else console.warn("No parse callback set for indexFile. Use setParseFileCallback() or updateIndexWithTasks() instead.")}updateIndexWithTasks(e,t,a){this.removeFileFromIndex(e);let r=new Set;for(let i of t)this.taskCache.tasks.set(i.id,i),r.add(i.id),this.updateIndexMaps(i);this.taskCache.files.set(e,r),this.lastIndexTime.set(e,Date.now()),a!==void 0&&this.updateFileMtime(e,a)}async updateIndex(e){await this.indexFile(e)}removeFileFromIndex(e){let t=typeof e=="string"?e:e.path,a=this.taskCache.files.get(t);if(!!a){for(let r of a){let i=this.taskCache.tasks.get(r);i&&this.removeTaskFromIndexes(i),this.taskCache.tasks.delete(r)}this.taskCache.files.delete(t),this.lastIndexTime.delete(t)}}updateIndexMaps(e){let t=this.taskCache.completed.get(e.completed)||new Set;t.add(e.id),this.taskCache.completed.set(e.completed,t);for(let a of e.metadata.tags){let r=this.taskCache.tags.get(a)||new Set;r.add(e.id),this.taskCache.tags.set(a,r)}if(e.metadata.project){let a=this.taskCache.projects.get(e.metadata.project)||new Set;a.add(e.id),this.taskCache.projects.set(e.metadata.project,a)}if(e.metadata.context){let a=this.taskCache.contexts.get(e.metadata.context)||new Set;a.add(e.id),this.taskCache.contexts.set(e.metadata.context,a)}if(e.metadata.dueDate){let a=vo(e.metadata.dueDate),r=this.taskCache.dueDate.get(a)||new Set;r.add(e.id),this.taskCache.dueDate.set(a,r)}if(e.metadata.startDate){let a=vo(e.metadata.startDate),r=this.taskCache.startDate.get(a)||new Set;r.add(e.id),this.taskCache.startDate.set(a,r)}if(e.metadata.scheduledDate){let a=vo(e.metadata.scheduledDate),r=this.taskCache.scheduledDate.get(a)||new Set;r.add(e.id),this.taskCache.scheduledDate.set(a,r)}if(e.metadata.priority!==void 0){let a=this.taskCache.priority.get(e.metadata.priority)||new Set;a.add(e.id),this.taskCache.priority.set(e.metadata.priority,a)}if(e.metadata.cancelledDate){let a=vo(e.metadata.cancelledDate),r=this.taskCache.cancelledDate.get(a)||new Set;r.add(e.id),this.taskCache.cancelledDate.set(a,r)}if(e.metadata.onCompletion){let a=this.taskCache.onCompletion.get(e.metadata.onCompletion)||new Set;a.add(e.id),this.taskCache.onCompletion.set(e.metadata.onCompletion,a)}if(e.metadata.dependsOn&&e.metadata.dependsOn.length>0)for(let a of e.metadata.dependsOn){let r=this.taskCache.dependsOn.get(a)||new Set;r.add(e.id),this.taskCache.dependsOn.set(a,r)}if(e.metadata.id){let a=this.taskCache.taskId.get(e.metadata.id)||new Set;a.add(e.id),this.taskCache.taskId.set(e.metadata.id,a)}}removeTaskFromIndexes(e){let t=this.taskCache.completed.get(e.completed);t&&(t.delete(e.id),t.size===0&&this.taskCache.completed.delete(e.completed));for(let a of e.metadata.tags){let r=this.taskCache.tags.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.tags.delete(a))}if(e.metadata.project){let a=this.taskCache.projects.get(e.metadata.project);a&&(a.delete(e.id),a.size===0&&this.taskCache.projects.delete(e.metadata.project))}if(e.metadata.context){let a=this.taskCache.contexts.get(e.metadata.context);a&&(a.delete(e.id),a.size===0&&this.taskCache.contexts.delete(e.metadata.context))}if(e.metadata.dueDate){let a=vo(e.metadata.dueDate),r=this.taskCache.dueDate.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.dueDate.delete(a))}if(e.metadata.startDate){let a=vo(e.metadata.startDate),r=this.taskCache.startDate.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.startDate.delete(a))}if(e.metadata.scheduledDate){let a=vo(e.metadata.scheduledDate),r=this.taskCache.scheduledDate.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.scheduledDate.delete(a))}if(e.metadata.priority!==void 0){let a=this.taskCache.priority.get(e.metadata.priority);a&&(a.delete(e.id),a.size===0&&this.taskCache.priority.delete(e.metadata.priority))}if(e.metadata.cancelledDate){let a=vo(e.metadata.cancelledDate),r=this.taskCache.cancelledDate.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.cancelledDate.delete(a))}if(e.metadata.onCompletion){let a=this.taskCache.onCompletion.get(e.metadata.onCompletion);a&&(a.delete(e.id),a.size===0&&this.taskCache.onCompletion.delete(e.metadata.onCompletion))}if(e.metadata.dependsOn&&e.metadata.dependsOn.length>0)for(let a of e.metadata.dependsOn){let r=this.taskCache.dependsOn.get(a);r&&(r.delete(e.id),r.size===0&&this.taskCache.dependsOn.delete(a))}if(e.metadata.id){let a=this.taskCache.taskId.get(e.metadata.id);a&&(a.delete(e.id),a.size===0&&this.taskCache.taskId.delete(e.metadata.id))}}queryTasks(e,t=[]){if(e.length===0&&this.taskCache.tasks.size<1e3){let i=Array.from(this.taskCache.tasks.values());return this.applySorting(i,t)}let a=null;for(let i of e){let n=this.applyFilter(i);a===null?a=n:i.conjunction==="OR"?n.forEach(o=>a.add(o)):a=new Set([...a].filter(o=>n.has(o)))}a===null&&(a=new Set(this.taskCache.tasks.keys()));let r=Array.from(a).map(i=>this.taskCache.tasks.get(i)).filter(i=>i!==void 0);return this.applySorting(r,t)}applyFilter(e){switch(e.type){case"tag":return this.filterByTag(e);case"project":return this.filterByProject(e);case"context":return this.filterByContext(e);case"status":return this.filterByStatus(e);case"priority":return this.filterByPriority(e);case"dueDate":return this.filterByDueDate(e);case"startDate":return this.filterByStartDate(e);case"scheduledDate":return this.filterByScheduledDate(e);default:return console.warn(`Unsupported filter type: ${e.type}`),new Set}}filterByTag(e){if(e.operator==="contains")return this.taskCache.tags.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),a=this.taskCache.tags.get(e.value)||new Set;return new Set([...t].filter(r=>!a.has(r)))}return new Set}filterByProject(e){if(e.operator==="=")return this.taskCache.projects.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),a=this.taskCache.projects.get(e.value)||new Set;return new Set([...t].filter(r=>!a.has(r)))}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),a=new Set;for(let r of this.taskCache.projects.values())for(let i of r)a.add(i);return new Set([...t].filter(r=>!a.has(r)))}return new Set}filterByContext(e){if(e.operator==="=")return this.taskCache.contexts.get(e.value)||new Set;if(e.operator==="!="){let t=new Set(this.taskCache.tasks.keys()),a=this.taskCache.contexts.get(e.value)||new Set;return new Set([...t].filter(r=>!a.has(r)))}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),a=new Set;for(let r of this.taskCache.contexts.values())for(let i of r)a.add(i);return new Set([...t].filter(r=>!a.has(r)))}return new Set}filterByStatus(e){return e.operator==="="?this.taskCache.completed.get(e.value)||new Set:new Set}filterByPriority(e){if(e.operator==="=")return this.taskCache.priority.get(e.value)||new Set;if(e.operator===">"){let t=new Set;for(let[a,r]of this.taskCache.priority.entries())if(a>e.value)for(let i of r)t.add(i);return t}else if(e.operator==="<"){let t=new Set;for(let[a,r]of this.taskCache.priority.entries())if(a<e.value)for(let i of r)t.add(i);return t}return new Set}filterByDueDate(e){if(e.operator==="=")return this.taskCache.dueDate.get(e.value)||new Set;if(e.operator==="before"||e.operator==="after"){let t;typeof e.value=="string"?t=new Date(e.value):t=new Date(e.value);let a=new Set;for(let[r,i]of this.taskCache.dueDate.entries()){let n=new Date(r);if(e.operator==="before"&&n<t||e.operator==="after"&&n>t)for(let o of i)a.add(o)}return a}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),a=new Set;for(let r of this.taskCache.dueDate.values())for(let i of r)a.add(i);return new Set([...t].filter(r=>!a.has(r)))}return new Set}filterByStartDate(e){if(e.operator==="=")return this.taskCache.startDate.get(e.value)||new Set;if(e.operator==="before"||e.operator==="after"){let t;typeof e.value=="string"?t=new Date(e.value):t=new Date(e.value);let a=new Set;for(let[r,i]of this.taskCache.startDate.entries()){let n=new Date(r);if(e.operator==="before"&&n<t||e.operator==="after"&&n>t)for(let o of i)a.add(o)}return a}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),a=new Set;for(let r of this.taskCache.startDate.values())for(let i of r)a.add(i);return new Set([...t].filter(r=>!a.has(r)))}return new Set}filterByScheduledDate(e){if(e.operator==="=")return this.taskCache.scheduledDate.get(e.value)||new Set;if(e.operator==="before"||e.operator==="after"){let t;typeof e.value=="string"?t=new Date(e.value):t=new Date(e.value);let a=new Set;for(let[r,i]of this.taskCache.scheduledDate.entries()){let n=new Date(r);if(e.operator==="before"&&n<t||e.operator==="after"&&n>t)for(let o of i)a.add(o)}return a}else if(e.operator==="empty"){let t=new Set(this.taskCache.tasks.keys()),a=new Set;for(let r of this.taskCache.scheduledDate.values())for(let i of r)a.add(i);return new Set([...t].filter(r=>!a.has(r)))}return new Set}applySorting(e,t){return t.length===0?[...e].sort((a,r)=>{let i=a.metadata.priority||0,n=r.metadata.priority||0;if(i!==n)return n-i;let o=a.metadata.dueDate||Number.MAX_SAFE_INTEGER,l=r.metadata.dueDate||Number.MAX_SAFE_INTEGER;return o-l}):[...e].sort((a,r)=>{for(let{field:i,direction:n}of t){let o,l;if(i in a?(o=a[i],l=r[i]):(o=a.metadata[i],l=r.metadata[i]),!(o===void 0&&l===void 0)){{if(o===void 0)return n==="asc"?1:-1;if(l===void 0)return n==="asc"?-1:1}if(o!==l){let d=n==="asc"?1:-1;return typeof o=="string"&&typeof l=="string"?o.localeCompare(l)*d:typeof o=="number"&&typeof l=="number"?(o-l)*d:o instanceof Date&&l instanceof Date?(o.getTime()-l.getTime())*d:String(o).localeCompare(String(l))*d}}}return 0})}getTaskById(e){return this.taskCache.tasks.get(e)}async createTask(e){throw new Error("Task creation should be handled by external components")}async updateTask(e){throw new Error("Task updates should be handled by external components")}async deleteTask(e){throw new Error("Task deletion should be handled by external components")}resetCache(){this.taskCache=this.initEmptyCache()}isFileChanged(e,t){let a=this.taskCache.fileMtimes.get(e);return a===void 0||a<t}getFileLastMtime(e){return this.taskCache.fileMtimes.get(e)}updateFileMtime(e,t){this.taskCache.fileMtimes||(this.taskCache.fileMtimes=new Map),this.taskCache.fileProcessedTimes||(this.taskCache.fileProcessedTimes=new Map),this.taskCache.fileMtimes.set(e,t),this.taskCache.fileProcessedTimes.set(e,Date.now())}hasValidCache(e,t){let a=this.taskCache.files.has(e),r=!this.isFileChanged(e,t);return a&&r}cleanupFileCache(e){this.taskCache.fileMtimes.delete(e),this.taskCache.fileProcessedTimes.delete(e),this.removeFileFromIndex(e)}validateCacheConsistency(){for(let e of this.taskCache.fileMtimes.keys())this.taskCache.files.has(e)||(this.taskCache.fileMtimes.delete(e),this.taskCache.fileProcessedTimes.delete(e));for(let e of this.taskCache.files.keys())!this.taskCache.fileMtimes.has(e)}ensureCacheStructure(e){e.fileMtimes||(e.fileMtimes=new Map),e.fileProcessedTimes||(e.fileProcessedTimes=new Map)}setCache(e){this.ensureCacheStructure(e),this.taskCache=e;for(let t of this.taskCache.files.keys())this.lastIndexTime.set(t,Date.now())}};var KB=A(require("obsidian"));var ix=class{constructor(e,t){this.config=e,this.projectDetectionMethods=t}parseFileForTasks(e,t,a){let r=[],i=[];try{if(this.config.enableFileMetadataParsing&&(a==null?void 0:a.frontmatter)){let n=this.parseMetadataTasks(e,a.frontmatter,t,a);r.push(...n.tasks),i.push(...n.errors)}if(this.config.enableTagBasedTaskParsing&&(a==null?void 0:a.tags)){let n=this.parseTagTasks(e,a.tags,a.frontmatter,t,a);r.push(...n.tasks),i.push(...n.errors)}}catch(n){i.push(`Error parsing file ${e}: ${n.message}`)}return{tasks:r,errors:i}}parseMetadataTasks(e,t,a,r){let i=[],n=[];for(let o of this.config.metadataFieldsToParseAsTasks)if(t[o]!==void 0)try{let l=this.createTaskFromMetadata(e,o,t[o],t,a,r);l&&i.push(l)}catch(l){n.push(`Error creating task from metadata field ${o} in ${e}: ${l.message}`)}return{tasks:i,errors:n}}parseTagTasks(e,t,a,r,i){let n=[],o=[],l=t.map(d=>d.tag);for(let d of this.config.tagsToParseAsTasks){let u=d.startsWith("#")?d:`#${d}`;if(l.some(p=>p===u))try{let p=this.createTaskFromTag(e,u,a,r,i);p&&n.push(p)}catch(p){o.push(`Error creating task from tag ${u} in ${e}: ${p.message}`)}}return{tasks:n,errors:o}}createTaskFromMetadata(e,t,a,r,i,n){let o=this.getTaskContent(r,e),l=`${e}-metadata-${t}`,d=this.determineTaskStatus(t,a),u=d.toLowerCase()==="x",p=this.extractTaskMetadata(e,r,t,a,n);return{id:l,content:o,filePath:e,line:0,completed:u,status:d,originalMarkdown:`- [${d}] ${o}`,metadata:{...p,tags:this.extractTags(r),children:[],heading:[],source:"file-metadata",sourceField:t,sourceValue:a}}}createTaskFromTag(e,t,a,r,i){let n=this.getTaskContent(a,e),o=`${e}-tag-${t.replace("#","")}`,l=this.config.defaultTaskStatus,d=l.toLowerCase()==="x",u=this.extractTaskMetadata(e,a||{},"tag",t,i);return{id:o,content:n,filePath:e,line:0,completed:d,status:l,originalMarkdown:`- [${l}] ${n}`,metadata:{...u,tags:this.extractTags(a),children:[],heading:[],source:"file-tag",sourceTag:t}}}getTaskContent(e,t){return e&&e[this.config.taskContentFromMetadata]?String(e[this.config.taskContentFromMetadata]):(t.split("/").pop()||t).replace(/\.[^/.]+$/,"")}determineTaskStatus(e,t){if(e.toLowerCase().includes("complete")||e.toLowerCase().includes("done"))return t?"x":" ";if(e.toLowerCase().includes("todo")||e.toLowerCase().includes("task")){if(typeof t=="boolean")return t?"x":" ";if(typeof t=="string"&&t.length===1)return t}return e.toLowerCase().includes("due")?" ":this.config.defaultTaskStatus}extractTaskMetadata(e,t,a,r,i){let n={};t.dueDate&&(n.dueDate=this.parseDate(t.dueDate)),t.startDate&&(n.startDate=this.parseDate(t.startDate)),t.scheduledDate&&(n.scheduledDate=this.parseDate(t.scheduledDate)),t.priority&&(n.priority=this.parsePriority(t.priority));let o=this.detectProjectFromFile(e,t,i);return o?n.project=o:t.project&&(n.project=String(t.project)),t.context&&(n.context=String(t.context)),t.area&&(n.area=String(t.area)),a.toLowerCase().includes("due")&&r&&(n.dueDate=this.parseDate(r)),n}detectProjectFromFile(e,t,a){if(!(!this.projectDetectionMethods||this.projectDetectionMethods.length===0)){for(let r of this.projectDetectionMethods)if(!!r.enabled)switch(r.type){case"metadata":if(t[r.propertyKey])return String(t[r.propertyKey]);break;case"tag":if(a==null?void 0:a.tags){let i=r.propertyKey.startsWith("#")?r.propertyKey:`#${r.propertyKey}`;if(a.tags.some(o=>o.tag===i))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\.md$/i,"")}break;case"link":if(a==null?void 0:a.links)for(let i of a.links){let n=i.link;if(r.linkFilter){if(n.includes(r.linkFilter))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\.md$/i,"")}else if(r.propertyKey){if(t[r.propertyKey]&&String(t[r.propertyKey]).includes(`[[${n}]]`))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\.md$/i,"")}else return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\.md$/i,"")}break}}}extractTags(e){if(!e)return[];let t=[];return e.tags&&(Array.isArray(e.tags)?t.push(...e.tags.map(a=>String(a))):t.push(String(e.tags))),e.tag&&(Array.isArray(e.tag)?t.push(...e.tag.map(a=>String(a))):t.push(String(e.tag))),t}parseDate(e){if(!!e){if(typeof e=="number")return e;if(typeof e=="string"){let t=Date.parse(e);return isNaN(t)?void 0:t}if(e instanceof Date)return e.getTime()}}parsePriority(e){if(typeof e=="number")return Math.max(1,Math.min(3,Math.round(e)));if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return Math.max(1,Math.min(3,t));let a=e.toLowerCase();if(a.includes("high")||a.includes("urgent"))return 3;if(a.includes("medium")||a.includes("normal"))return 2;if(a.includes("low"))return 1}}};function zu(s){let e=new Blob([s],{type:"text/javascript"}),t=URL.createObjectURL(e),a=new Worker(t,{name:"Task Genius Indexer"});return URL.revokeObjectURL(t),a}function nx(){return zu('var Ut=Object.defineProperty,Qt=Object.defineProperties;var Bt=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var Kt=Object.prototype.hasOwnProperty,Jt=Object.prototype.propertyIsEnumerable;var Pe=(n,e,t)=>e in n?Ut(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,C=(n,e)=>{for(var t in e||(e={}))Kt.call(e,t)&&Pe(n,t,e[t]);if(yt)for(var t of yt(e))Jt.call(e,t)&&Pe(n,t,e[t]);return n},I=(n,e)=>Qt(n,Bt(e));var d=(n,e,t)=>(Pe(n,typeof e!="symbol"?e+"":e,t),t);var Zt={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},xt=(n,e,t)=>{let r,a=Zt[n];return typeof a=="string"?r=a:e===1?r=a.one:r=a.other.replace("{{count}}",e.toString()),(t==null?void 0:t.addSuffix)?t.comparison&&t.comparison>0?"in "+r:r+" ago":r};function le(n){return(e={})=>{let t=e.width?String(e.width):n.defaultWidth;return n.formats[t]||n.formats[n.defaultWidth]}}var er={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},tr={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},rr={full:"{{date}} \'at\' {{time}}",long:"{{date}} \'at\' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},bt={date:le({formats:er,defaultWidth:"full"}),time:le({formats:tr,defaultWidth:"full"}),dateTime:le({formats:rr,defaultWidth:"full"})};var ar={lastWeek:"\'last\' eeee \'at\' p",yesterday:"\'yesterday at\' p",today:"\'today at\' p",tomorrow:"\'tomorrow at\' p",nextWeek:"eeee \'at\' p",other:"P"},Dt=(n,e,t,r)=>ar[n];function q(n){return(e,t)=>{let r=(t==null?void 0:t.context)?String(t.context):"standalone",a;if(r==="formatting"&&n.formattingValues){let o=n.defaultFormattingWidth||n.defaultWidth,i=(t==null?void 0:t.width)?String(t.width):o;a=n.formattingValues[i]||n.formattingValues[o]}else{let o=n.defaultWidth,i=(t==null?void 0:t.width)?String(t.width):n.defaultWidth;a=n.values[i]||n.values[o]}let s=n.argumentCallback?n.argumentCallback(e):e;return a[s]}}var nr={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},sr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ir={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},or={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},cr={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ur={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},dr=(n,e)=>{let t=Number(n),r=t%100;if(r>20||r<10)switch(r%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},wt={ordinalNumber:dr,era:q({values:nr,defaultWidth:"wide"}),quarter:q({values:sr,defaultWidth:"wide",argumentCallback:n=>n-1}),month:q({values:ir,defaultWidth:"wide"}),day:q({values:or,defaultWidth:"wide"}),dayPeriod:q({values:cr,defaultWidth:"wide",formattingValues:ur,defaultFormattingWidth:"wide"})};function G(n){return(e,t={})=>{let r=t.width,a=r&&n.matchPatterns[r]||n.matchPatterns[n.defaultMatchWidth],s=e.match(a);if(!s)return null;let o=s[0],i=r&&n.parsePatterns[r]||n.parsePatterns[n.defaultParseWidth],c=Array.isArray(i)?mr(i,p=>p.test(o)):lr(i,p=>p.test(o)),u;u=n.valueCallback?n.valueCallback(c):c,u=t.valueCallback?t.valueCallback(u):u;let l=e.slice(o.length);return{value:u,rest:l}}}function lr(n,e){for(let t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&e(n[t]))return t}function mr(n,e){for(let t=0;t<n.length;t++)if(e(n[t]))return t}function Pt(n){return(e,t={})=>{let r=e.match(n.matchPattern);if(!r)return null;let a=r[0],s=e.match(n.parsePattern);if(!s)return null;let o=n.valueCallback?n.valueCallback(s[0]):s[0];o=t.valueCallback?t.valueCallback(o):o;let i=e.slice(a.length);return{value:o,rest:i}}}var fr=/^(\\d+)(th|st|nd|rd)?/i,pr=/\\d+/i,gr={narrow:/^(b|a)/i,abbreviated:/^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},hr={any:[/^b/i,/^(a|c)/i]},yr={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},xr={any:[/1/i,/2/i,/3/i,/4/i]},br={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Dr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},wr={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Pr={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},kr={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Tr={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},kt={ordinalNumber:Pt({matchPattern:fr,parsePattern:pr,valueCallback:n=>parseInt(n,10)}),era:G({matchPatterns:gr,defaultMatchWidth:"wide",parsePatterns:hr,defaultParseWidth:"any"}),quarter:G({matchPatterns:yr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any",valueCallback:n=>n+1}),month:G({matchPatterns:br,defaultMatchWidth:"wide",parsePatterns:Dr,defaultParseWidth:"any"}),day:G({matchPatterns:wr,defaultMatchWidth:"wide",parsePatterns:Pr,defaultParseWidth:"any"}),dayPeriod:G({matchPatterns:kr,defaultMatchWidth:"any",parsePatterns:Tr,defaultParseWidth:"any"})};var K={code:"en-US",formatDistance:xt,formatLong:bt,formatRelative:Dt,localize:wt,match:kt,options:{weekStartsOn:0,firstWeekContainsDate:1}};var Tt=(n,e)=>{switch(n){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},Mt=(n,e)=>{switch(n){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},Mr=(n,e)=>{let t=n.match(/(P+)(p+)?/)||[],r=t[1],a=t[2];if(!a)return Tt(n,e);let s;switch(r){case"P":s=e.dateTime({width:"short"});break;case"PP":s=e.dateTime({width:"medium"});break;case"PPP":s=e.dateTime({width:"long"});break;case"PPPP":default:s=e.dateTime({width:"full"});break}return s.replace("{{date}}",Tt(r,e)).replace("{{time}}",Mt(a,e))},ke={p:Mt,P:Mr};var jr=/^D+$/,Cr=/^Y+$/,vr=["D","DD","YY","YYYY"];function jt(n){return jr.test(n)}function Ct(n){return Cr.test(n)}function Te(n,e,t){let r=Or(n,e,t);if(console.warn(r),vr.includes(n))throw new RangeError(r)}function Or(n,e,t){let r=n[0]==="Y"?"years":"days of the month";return`Use \\`${n.toLowerCase()}\\` instead of \\`${n}\\` (in \\`${e}\\`) for formatting ${r} to the input \\`${t}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Er=365.2425,Fr=Math.pow(10,8)*24*60*60*1e3,_a=-Fr,me=6048e5;var J=6e4,Z=36e5,vt=1e3;var Ir=3600;var Ot=Ir*24,Sa=Ot*7,Nr=Ot*Er,Rr=Nr/12,Aa=Rr*3,Me=Symbol.for("constructDateFrom");function P(n,e){return typeof n=="function"?n(e):n&&typeof n=="object"&&Me in n?n[Me](e):n instanceof Date?new n.constructor(e):new Date(e)}var Wr={};function A(){return Wr}function Et(){return Object.assign({},A())}function b(n,e){return P(e||n,n)}function Ft(n,e){let t=_r(e)?new e(0):P(e,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),t}function _r(n){var e;return typeof n=="function"&&((e=n.prototype)==null?void 0:e.constructor)===n}var Sr=10,je=class{constructor(){d(this,"subPriority",0)}validate(e,t){return!0}},Ce=class extends je{constructor(e,t,r,a,s){super();this.value=e,this.validateValue=t,this.setValue=r,this.priority=a,s&&(this.subPriority=s)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,r){return this.setValue(e,t,this.value,r)}},ve=class extends je{constructor(e,t){super();d(this,"priority",Sr);d(this,"subPriority",-1);this.context=e||(r=>P(t,r))}set(e,t){return t.timestampIsSet?e:P(e,Ft(e,this.context))}};var h=class{run(e,t,r,a){let s=this.parse(e,t,r,a);return s?{setter:new Ce(s.value,this.validate,this.set,this.priority,this.subPriority),rest:s.rest}:null}validate(e,t,r){return!0}};var Oe=class extends h{constructor(){super(...arguments);d(this,"priority",140);d(this,"incompatibleTokens",["R","u","t","T"])}parse(e,t,r){switch(t){case"G":case"GG":case"GGG":return r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"});case"GGGGG":return r.era(e,{width:"narrow"});case"GGGG":default:return r.era(e,{width:"wide"})||r.era(e,{width:"abbreviated"})||r.era(e,{width:"narrow"})}}set(e,t,r){return t.era=r,e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}};var w={month:/^(1[0-2]|0?\\d)/,date:/^(3[0-1]|[0-2]?\\d)/,dayOfYear:/^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,week:/^(5[0-3]|[0-4]?\\d)/,hour23h:/^(2[0-3]|[0-1]?\\d)/,hour24h:/^(2[0-4]|[0-1]?\\d)/,hour11h:/^(1[0-1]|0?\\d)/,hour12h:/^(1[0-2]|0?\\d)/,minute:/^[0-5]?\\d/,second:/^[0-5]?\\d/,singleDigit:/^\\d/,twoDigits:/^\\d{1,2}/,threeDigits:/^\\d{1,3}/,fourDigits:/^\\d{1,4}/,anyDigitsSigned:/^-?\\d+/,singleDigitSigned:/^-?\\d/,twoDigitsSigned:/^-?\\d{1,2}/,threeDigitsSigned:/^-?\\d{1,3}/,fourDigitsSigned:/^-?\\d{1,4}/},N={basicOptionalMinutes:/^([+-])(\\d{2})(\\d{2})?|Z/,basic:/^([+-])(\\d{2})(\\d{2})|Z/,basicOptionalSeconds:/^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,extended:/^([+-])(\\d{2}):(\\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/};function M(n,e){return n&&{value:e(n.value),rest:n.rest}}function D(n,e){let t=e.match(n);return t?{value:parseInt(t[0],10),rest:e.slice(t[0].length)}:null}function R(n,e){let t=e.match(n);if(!t)return null;if(t[0]==="Z")return{value:0,rest:e.slice(1)};let r=t[1]==="+"?1:-1,a=t[2]?parseInt(t[2],10):0,s=t[3]?parseInt(t[3],10):0,o=t[5]?parseInt(t[5],10):0;return{value:r*(a*Z+s*J+o*vt),rest:e.slice(t[0].length)}}function fe(n){return D(w.anyDigitsSigned,n)}function x(n,e){switch(n){case 1:return D(w.singleDigit,e);case 2:return D(w.twoDigits,e);case 3:return D(w.threeDigits,e);case 4:return D(w.fourDigits,e);default:return D(new RegExp("^\\\\d{1,"+n+"}"),e)}}function V(n,e){switch(n){case 1:return D(w.singleDigitSigned,e);case 2:return D(w.twoDigitsSigned,e);case 3:return D(w.threeDigitsSigned,e);case 4:return D(w.fourDigitsSigned,e);default:return D(new RegExp("^-?\\\\d{1,"+n+"}"),e)}}function U(n){switch(n){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function pe(n,e){let t=e>0,r=t?e:1-e,a;if(r<=50)a=n||100;else{let s=r+50,o=Math.trunc(s/100)*100,i=n>=s%100;a=n+o-(i?100:0)}return t?a:1-a}function ge(n){return n%400==0||n%4==0&&n%100!=0}var Ee=class extends h{constructor(){super(...arguments);d(this,"priority",130);d(this,"incompatibleTokens",["Y","R","u","w","I","i","e","c","t","T"])}parse(e,t,r){let a=s=>({year:s,isTwoDigitYear:t==="yy"});switch(t){case"y":return M(x(4,e),a);case"yo":return M(r.ordinalNumber(e,{unit:"year"}),a);default:return M(x(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r){let a=e.getFullYear();if(r.isTwoDigitYear){let o=pe(r.year,a);return e.setFullYear(o,0,1),e.setHours(0,0,0,0),e}let s=!("era"in t)||t.era===1?r.year:1-r.year;return e.setFullYear(s,0,1),e.setHours(0,0,0,0),e}};function F(n,e){var i,c,u,l,p,m,g,f;let t=A(),r=(f=(g=(l=(u=e==null?void 0:e.weekStartsOn)!=null?u:(c=(i=e==null?void 0:e.locale)==null?void 0:i.options)==null?void 0:c.weekStartsOn)!=null?l:t.weekStartsOn)!=null?g:(m=(p=t.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?f:0,a=b(n,e==null?void 0:e.in),s=a.getDay(),o=(s<r?7:0)+s-r;return a.setDate(a.getDate()-o),a.setHours(0,0,0,0),a}function he(n,e){var l,p,m,g,f,y,T,v;let t=b(n,e==null?void 0:e.in),r=t.getFullYear(),a=A(),s=(v=(T=(g=(m=e==null?void 0:e.firstWeekContainsDate)!=null?m:(p=(l=e==null?void 0:e.locale)==null?void 0:l.options)==null?void 0:p.firstWeekContainsDate)!=null?g:a.firstWeekContainsDate)!=null?T:(y=(f=a.locale)==null?void 0:f.options)==null?void 0:y.firstWeekContainsDate)!=null?v:1,o=P((e==null?void 0:e.in)||n,0);o.setFullYear(r+1,0,s),o.setHours(0,0,0,0);let i=F(o,e),c=P((e==null?void 0:e.in)||n,0);c.setFullYear(r,0,s),c.setHours(0,0,0,0);let u=F(c,e);return+t>=+i?r+1:+t>=+u?r:r-1}var Fe=class extends h{constructor(){super(...arguments);d(this,"priority",130);d(this,"incompatibleTokens",["y","R","u","Q","q","M","L","I","d","D","i","t","T"])}parse(e,t,r){let a=s=>({year:s,isTwoDigitYear:t==="YY"});switch(t){case"Y":return M(x(4,e),a);case"Yo":return M(r.ordinalNumber(e,{unit:"year"}),a);default:return M(x(t.length,e),a)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r,a){let s=he(e,a);if(r.isTwoDigitYear){let i=pe(r.year,s);return e.setFullYear(i,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),F(e,a)}let o=!("era"in t)||t.era===1?r.year:1-r.year;return e.setFullYear(o,0,a.firstWeekContainsDate),e.setHours(0,0,0,0),F(e,a)}};function _(n,e){return F(n,I(C({},e),{weekStartsOn:1}))}var Ie=class extends h{constructor(){super(...arguments);d(this,"priority",130);d(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return t==="R"?V(4,e):V(t.length,e)}set(e,t,r){let a=P(e,0);return a.setFullYear(r,0,4),a.setHours(0,0,0,0),_(a)}};var Ne=class extends h{constructor(){super(...arguments);d(this,"priority",130);d(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return t==="u"?V(4,e):V(t.length,e)}set(e,t,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}};var Re=class extends h{constructor(){super(...arguments);d(this,"priority",120);d(this,"incompatibleTokens",["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"Q":case"QQ":return x(t.length,e);case"Qo":return r.ordinalNumber(e,{unit:"quarter"});case"QQQ":return r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return r.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(e,{width:"wide",context:"formatting"})||r.quarter(e,{width:"abbreviated",context:"formatting"})||r.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}};var We=class extends h{constructor(){super(...arguments);d(this,"priority",120);d(this,"incompatibleTokens",["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"q":case"qq":return x(t.length,e);case"qo":return r.ordinalNumber(e,{unit:"quarter"});case"qqq":return r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return r.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(e,{width:"wide",context:"standalone"})||r.quarter(e,{width:"abbreviated",context:"standalone"})||r.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,r){return e.setMonth((r-1)*3,1),e.setHours(0,0,0,0),e}};var _e=class extends h{constructor(){super(...arguments);d(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);d(this,"priority",110)}parse(e,t,r){let a=s=>s-1;switch(t){case"M":return M(D(w.month,e),a);case"MM":return M(x(2,e),a);case"Mo":return M(r.ordinalNumber(e,{unit:"month"}),a);case"MMM":return r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return r.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(e,{width:"wide",context:"formatting"})||r.month(e,{width:"abbreviated",context:"formatting"})||r.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}};var Se=class extends h{constructor(){super(...arguments);d(this,"priority",110);d(this,"incompatibleTokens",["Y","R","q","Q","M","w","I","D","i","e","c","t","T"])}parse(e,t,r){let a=s=>s-1;switch(t){case"L":return M(D(w.month,e),a);case"LL":return M(x(2,e),a);case"Lo":return M(r.ordinalNumber(e,{unit:"month"}),a);case"LLL":return r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return r.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(e,{width:"wide",context:"standalone"})||r.month(e,{width:"abbreviated",context:"standalone"})||r.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.setMonth(r,1),e.setHours(0,0,0,0),e}};function It(n,e){var i,c,u,l,p,m,g,f;let t=A(),r=(f=(g=(l=(u=e==null?void 0:e.firstWeekContainsDate)!=null?u:(c=(i=e==null?void 0:e.locale)==null?void 0:i.options)==null?void 0:c.firstWeekContainsDate)!=null?l:t.firstWeekContainsDate)!=null?g:(m=(p=t.locale)==null?void 0:p.options)==null?void 0:m.firstWeekContainsDate)!=null?f:1,a=he(n,e),s=P((e==null?void 0:e.in)||n,0);return s.setFullYear(a,0,r),s.setHours(0,0,0,0),F(s,e)}function Nt(n,e){let t=b(n,e==null?void 0:e.in),r=+F(t,e)-+It(t,e);return Math.round(r/me)+1}function Rt(n,e,t){let r=b(n,t==null?void 0:t.in),a=Nt(r,t)-e;return r.setDate(r.getDate()-a*7),b(r,t==null?void 0:t.in)}var Ae=class extends h{constructor(){super(...arguments);d(this,"priority",100);d(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,r){switch(t){case"w":return D(w.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return x(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r,a){return F(Rt(e,r,a),a)}};function Wt(n,e){let t=b(n,e==null?void 0:e.in),r=t.getFullYear(),a=P(t,0);a.setFullYear(r+1,0,4),a.setHours(0,0,0,0);let s=_(a),o=P(t,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let i=_(o);return t.getTime()>=s.getTime()?r+1:t.getTime()>=i.getTime()?r:r-1}function _t(n,e){let t=Wt(n,e),r=P((e==null?void 0:e.in)||n,0);return r.setFullYear(t,0,4),r.setHours(0,0,0,0),_(r)}function St(n,e){let t=b(n,e==null?void 0:e.in),r=+_(t)-+_t(t);return Math.round(r/me)+1}function At(n,e,t){let r=b(n,t==null?void 0:t.in),a=St(r,t)-e;return r.setDate(r.getDate()-a*7),r}var Le=class extends h{constructor(){super(...arguments);d(this,"priority",100);d(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"])}parse(e,t,r){switch(t){case"I":return D(w.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return x(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r){return _(At(e,r))}};var Ar=[31,28,31,30,31,30,31,31,30,31,30,31],Lr=[31,29,31,30,31,30,31,31,30,31,30,31],Ye=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"subPriority",1);d(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"d":return D(w.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return x(t.length,e)}}validate(e,t){let r=e.getFullYear(),a=ge(r),s=e.getMonth();return a?t>=1&&t<=Lr[s]:t>=1&&t<=Ar[s]}set(e,t,r){return e.setDate(r),e.setHours(0,0,0,0),e}};var He=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"subpriority",1);d(this,"incompatibleTokens",["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"])}parse(e,t,r){switch(t){case"D":case"DD":return D(w.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return x(t.length,e)}}validate(e,t){let r=e.getFullYear();return ge(r)?t>=1&&t<=366:t>=1&&t<=365}set(e,t,r){return e.setMonth(0,r),e.setHours(0,0,0,0),e}};function ye(n,e,t){let r=b(n,t==null?void 0:t.in);return isNaN(e)?P((t==null?void 0:t.in)||n,NaN):(e&&r.setDate(r.getDate()+e),r)}function Q(n,e,t){var p,m,g,f,y,T,v,H;let r=A(),a=(H=(v=(f=(g=t==null?void 0:t.weekStartsOn)!=null?g:(m=(p=t==null?void 0:t.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?f:r.weekStartsOn)!=null?v:(T=(y=r.locale)==null?void 0:y.options)==null?void 0:T.weekStartsOn)!=null?H:0,s=b(n,t==null?void 0:t.in),o=s.getDay(),c=(e%7+7)%7,u=7-a,l=e<0||e>6?e-(o+u)%7:(c+u)%7-(o+u)%7;return ye(s,l,t)}var $e=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"incompatibleTokens",["D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"E":case"EE":case"EEE":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return r.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,a){return e=Q(e,r,a),e.setHours(0,0,0,0),e}};var ze=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"])}parse(e,t,r,a){let s=o=>{let i=Math.floor((o-1)/7)*7;return(o+a.weekStartsOn+6)%7+i};switch(t){case"e":case"ee":return M(x(t.length,e),s);case"eo":return M(r.ordinalNumber(e,{unit:"day"}),s);case"eee":return r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeeee":return r.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,a){return e=Q(e,r,a),e.setHours(0,0,0,0),e}};var Xe=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"])}parse(e,t,r,a){let s=o=>{let i=Math.floor((o-1)/7)*7;return(o+a.weekStartsOn+6)%7+i};switch(t){case"c":case"cc":return M(x(t.length,e),s);case"co":return M(r.ordinalNumber(e,{unit:"day"}),s);case"ccc":return r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"ccccc":return r.day(e,{width:"narrow",context:"standalone"});case"cccccc":return r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return r.day(e,{width:"wide",context:"standalone"})||r.day(e,{width:"abbreviated",context:"standalone"})||r.day(e,{width:"short",context:"standalone"})||r.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,r,a){return e=Q(e,r,a),e.setHours(0,0,0,0),e}};function Lt(n,e){let t=b(n,e==null?void 0:e.in).getDay();return t===0?7:t}function Yt(n,e,t){let r=b(n,t==null?void 0:t.in),a=Lt(r,t),s=e-a;return ye(r,s,t)}var qe=class extends h{constructor(){super(...arguments);d(this,"priority",90);d(this,"incompatibleTokens",["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"])}parse(e,t,r){let a=s=>s===0?7:s;switch(t){case"i":case"ii":return x(t.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return M(r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiii":return M(r.day(e,{width:"narrow",context:"formatting"}),a);case"iiiiii":return M(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a);case"iiii":default:return M(r.day(e,{width:"wide",context:"formatting"})||r.day(e,{width:"abbreviated",context:"formatting"})||r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),a)}}validate(e,t){return t>=1&&t<=7}set(e,t,r){return e=Yt(e,r),e.setHours(0,0,0,0),e}};var Ge=class extends h{constructor(){super(...arguments);d(this,"priority",80);d(this,"incompatibleTokens",["b","B","H","k","t","T"])}parse(e,t,r){switch(t){case"a":case"aa":case"aaa":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(U(r),0,0,0),e}};var Ve=class extends h{constructor(){super(...arguments);d(this,"priority",80);d(this,"incompatibleTokens",["a","B","H","k","t","T"])}parse(e,t,r){switch(t){case"b":case"bb":case"bbb":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(U(r),0,0,0),e}};var Ue=class extends h{constructor(){super(...arguments);d(this,"priority",80);d(this,"incompatibleTokens",["a","b","t","T"])}parse(e,t,r){switch(t){case"B":case"BB":case"BBB":return r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return r.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(e,{width:"wide",context:"formatting"})||r.dayPeriod(e,{width:"abbreviated",context:"formatting"})||r.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,r){return e.setHours(U(r),0,0,0),e}};var Qe=class extends h{constructor(){super(...arguments);d(this,"priority",70);d(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,r){switch(t){case"h":return D(w.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return x(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,r){let a=e.getHours()>=12;return a&&r<12?e.setHours(r+12,0,0,0):!a&&r===12?e.setHours(0,0,0,0):e.setHours(r,0,0,0),e}};var Be=class extends h{constructor(){super(...arguments);d(this,"priority",70);d(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,r){switch(t){case"H":return D(w.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return x(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,r){return e.setHours(r,0,0,0),e}};var Ke=class extends h{constructor(){super(...arguments);d(this,"priority",70);d(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,r){switch(t){case"K":return D(w.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return x(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,r){return e.getHours()>=12&&r<12?e.setHours(r+12,0,0,0):e.setHours(r,0,0,0),e}};var Je=class extends h{constructor(){super(...arguments);d(this,"priority",70);d(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,r){switch(t){case"k":return D(w.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return x(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,r){let a=r<=24?r%24:r;return e.setHours(a,0,0,0),e}};var Ze=class extends h{constructor(){super(...arguments);d(this,"priority",60);d(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"m":return D(w.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return x(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setMinutes(r,0,0),e}};var et=class extends h{constructor(){super(...arguments);d(this,"priority",50);d(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"s":return D(w.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return x(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setSeconds(r,0),e}};var tt=class extends h{constructor(){super(...arguments);d(this,"priority",30);d(this,"incompatibleTokens",["t","T"])}parse(e,t){let r=a=>Math.trunc(a*Math.pow(10,-t.length+3));return M(x(t.length,e),r)}set(e,t,r){return e.setMilliseconds(r),e}};function xe(n){let e=b(n),t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),+n-+t}var rt=class extends h{constructor(){super(...arguments);d(this,"priority",10);d(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return R(N.basicOptionalMinutes,e);case"XX":return R(N.basic,e);case"XXXX":return R(N.basicOptionalSeconds,e);case"XXXXX":return R(N.extendedOptionalSeconds,e);case"XXX":default:return R(N.extended,e)}}set(e,t,r){return t.timestampIsSet?e:P(e,e.getTime()-xe(e)-r)}};var at=class extends h{constructor(){super(...arguments);d(this,"priority",10);d(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return R(N.basicOptionalMinutes,e);case"xx":return R(N.basic,e);case"xxxx":return R(N.basicOptionalSeconds,e);case"xxxxx":return R(N.extendedOptionalSeconds,e);case"xxx":default:return R(N.extended,e)}}set(e,t,r){return t.timestampIsSet?e:P(e,e.getTime()-xe(e)-r)}};var nt=class extends h{constructor(){super(...arguments);d(this,"priority",40);d(this,"incompatibleTokens","*")}parse(e){return fe(e)}set(e,t,r){return[P(e,r*1e3),{timestampIsSet:!0}]}};var st=class extends h{constructor(){super(...arguments);d(this,"priority",20);d(this,"incompatibleTokens","*")}parse(e){return fe(e)}set(e,t,r){return[P(e,r),{timestampIsSet:!0}]}};var Ht={G:new Oe,y:new Ee,Y:new Fe,R:new Ie,u:new Ne,Q:new Re,q:new We,M:new _e,L:new Se,w:new Ae,I:new Le,d:new Ye,D:new He,E:new $e,e:new ze,c:new Xe,i:new qe,a:new Ge,b:new Ve,B:new Ue,h:new Qe,H:new Be,K:new Ke,k:new Je,m:new Ze,s:new et,S:new tt,X:new rt,x:new at,t:new nt,T:new st};var Yr=/[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,Hr=/P+p+|P+|p+|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,$r=/^\'([^]*?)\'?$/,zr=/\'\'/g,Xr=/\\S/,qr=/[a-zA-Z]/;function be(n,e,t,r){var T,v,H,$,te,re,ae,ne,z,se,O,X,ie,oe,ce,ue,S,de;let a=()=>P((r==null?void 0:r.in)||t,NaN),s=Et(),o=(v=(T=r==null?void 0:r.locale)!=null?T:s.locale)!=null?v:K,i=(se=(z=(re=(te=r==null?void 0:r.firstWeekContainsDate)!=null?te:($=(H=r==null?void 0:r.locale)==null?void 0:H.options)==null?void 0:$.firstWeekContainsDate)!=null?re:s.firstWeekContainsDate)!=null?z:(ne=(ae=s.locale)==null?void 0:ae.options)==null?void 0:ne.firstWeekContainsDate)!=null?se:1,c=(de=(S=(oe=(ie=r==null?void 0:r.weekStartsOn)!=null?ie:(X=(O=r==null?void 0:r.locale)==null?void 0:O.options)==null?void 0:X.weekStartsOn)!=null?oe:s.weekStartsOn)!=null?S:(ue=(ce=s.locale)==null?void 0:ce.options)==null?void 0:ue.weekStartsOn)!=null?de:0;if(!e)return n?a():b(t,r==null?void 0:r.in);let u={firstWeekContainsDate:i,weekStartsOn:c,locale:o},l=[new ve(r==null?void 0:r.in,t)],p=e.match(Hr).map(k=>{let j=k[0];return j in ke?ke[j](k,o.formatLong):k}).join("").match(Yr),m=[];for(let k of p){!(r==null?void 0:r.useAdditionalWeekYearTokens)&&Ct(k)&&Te(k,e,n),!(r==null?void 0:r.useAdditionalDayOfYearTokens)&&jt(k)&&Te(k,e,n);let j=k[0],L=Ht[j];if(L){let{incompatibleTokens:pt}=L;if(Array.isArray(pt)){let gt=m.find(ht=>pt.includes(ht.token)||ht.token===j);if(gt)throw new RangeError(`The format string mustn\'t contain \\`${gt.fullToken}\\` and \\`${k}\\` at the same time`)}else if(L.incompatibleTokens==="*"&&m.length>0)throw new RangeError(`The format string mustn\'t contain \\`${k}\\` and any other token at the same time`);m.push({token:j,fullToken:k});let we=L.run(n,k,o.match,u);if(!we)return a();l.push(we.setter),n=we.rest}else{if(j.match(qr))throw new RangeError("Format string contains an unescaped latin alphabet character `"+j+"`");if(k==="\'\'"?k="\'":j==="\'"&&(k=Gr(k)),n.indexOf(k)===0)n=n.slice(k.length);else return a()}}if(n.length>0&&Xr.test(n))return a();let g=l.map(k=>k.priority).sort((k,j)=>j-k).filter((k,j,L)=>L.indexOf(k)===j).map(k=>l.filter(j=>j.priority===k).sort((j,L)=>L.subPriority-j.subPriority)).map(k=>k[0]),f=b(t,r==null?void 0:r.in);if(isNaN(+f))return a();let y={};for(let k of g){if(!k.validate(f,u))return a();let j=k.set(f,y,u);Array.isArray(j)?(f=j[0],Object.assign(y,j[1])):f=j}return f}function Gr(n){return n.match($r)[1].replace(zr,"\'")}var E;(function(a){a.DataviewOnly="dataview-only",a.EmojiOnly="emoji-only",a.Both="both",a.None="none"})(E||(E={}));function it(n,e){let t=b(n,e==null?void 0:e.in);return t.setHours(0,0,0,0),t}function $t(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function ot(n){return!(!$t(n)&&typeof n!="number"||isNaN(+b(n)))}function zt(n,e){var u;let t=()=>P(e==null?void 0:e.in,NaN),r=(u=e==null?void 0:e.additionalDigits)!=null?u:2,a=Br(n),s;if(a.date){let l=Kr(a.date,r);s=Jr(l.restDateString,l.year)}if(!s||isNaN(+s))return t();let o=+s,i=0,c;if(a.time&&(i=Zr(a.time),isNaN(i)))return t();if(a.timezone){if(c=ea(a.timezone),isNaN(c))return t()}else{let l=new Date(o+i),p=b(0,e==null?void 0:e.in);return p.setFullYear(l.getUTCFullYear(),l.getUTCMonth(),l.getUTCDate()),p.setHours(l.getUTCHours(),l.getUTCMinutes(),l.getUTCSeconds(),l.getUTCMilliseconds()),p}return b(o+i+c,e==null?void 0:e.in)}var De={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},Vr=/^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/,Ur=/^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/,Qr=/^([+-])(\\d{2})(?::?(\\d{2}))?$/;function Br(n){let e={},t=n.split(De.dateTimeDelimiter),r;if(t.length>2)return e;if(/:/.test(t[0])?r=t[0]:(e.date=t[0],r=t[1],De.timeZoneDelimiter.test(e.date)&&(e.date=n.split(De.timeZoneDelimiter)[0],r=n.substr(e.date.length,n.length))),r){let a=De.timezone.exec(r);a?(e.time=r.replace(a[1],""),e.timezone=a[1]):e.time=r}return e}function Kr(n,e){let t=new RegExp("^(?:(\\\\d{4}|[+-]\\\\d{"+(4+e)+"})|(\\\\d{2}|[+-]\\\\d{"+(2+e)+"})$)"),r=n.match(t);if(!r)return{year:NaN,restDateString:""};let a=r[1]?parseInt(r[1]):null,s=r[2]?parseInt(r[2]):null;return{year:s===null?a:s*100,restDateString:n.slice((r[1]||r[2]).length)}}function Jr(n,e){if(e===null)return new Date(NaN);let t=n.match(Vr);if(!t)return new Date(NaN);let r=!!t[4],a=ee(t[1]),s=ee(t[2])-1,o=ee(t[3]),i=ee(t[4]),c=ee(t[5])-1;if(r)return sa(e,i,c)?ta(e,i,c):new Date(NaN);{let u=new Date(0);return!aa(e,s,o)||!na(e,a)?new Date(NaN):(u.setUTCFullYear(e,s,Math.max(a,o)),u)}}function ee(n){return n?parseInt(n):1}function Zr(n){let e=n.match(Ur);if(!e)return NaN;let t=ct(e[1]),r=ct(e[2]),a=ct(e[3]);return ia(t,r,a)?t*Z+r*J+a*1e3:NaN}function ct(n){return n&&parseFloat(n.replace(",","."))||0}function ea(n){if(n==="Z")return 0;let e=n.match(Qr);if(!e)return 0;let t=e[1]==="+"?-1:1,r=parseInt(e[2]),a=e[3]&&parseInt(e[3])||0;return oa(r,a)?t*(r*Z+a*J):NaN}function ta(n,e,t){let r=new Date(0);r.setUTCFullYear(n,0,4);let a=r.getUTCDay()||7,s=(e-1)*7+t+1-a;return r.setUTCDate(r.getUTCDate()+s),r}var ra=[31,null,31,30,31,30,31,31,30,31,30,31];function Xt(n){return n%400==0||n%4==0&&n%100!=0}function aa(n,e,t){return e>=0&&e<=11&&t>=1&&t<=(ra[e]||(Xt(n)?29:28))}function na(n,e){return e>=1&&e<=(Xt(n)?366:365)}function sa(n,e,t){return e>=1&&e<=53&&t>=0&&t<=6}function ia(n,e,t){return n===24?e===0&&t===0:t>=0&&t<60&&e>=0&&e<60&&n>=0&&n<25}function oa(n,e){return e>=0&&e<=59}function qt(n,e){if(!n||(n=n.trim(),n.includes("{{")||n.includes("}}")))return;let t=["yyyy-MM-dd","yyyy/MM/dd","dd-MM-yyyy","dd/MM/yyyy","MM-dd-yyyy","MM/dd/yyyy","yyyy.MM.dd","dd.MM.yyyy","yyyy\\u5E74M\\u6708d\\u65E5","MMM d, yyyy","MMM dd, yyyy","d MMM yyyy","dd MMM yyyy","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],r=e?[...e,...t]:t;for(let a of r)try{let s=be(n,a,new Date,{locale:K});if(ot(s))return it(s).getTime()}catch(s){continue}try{let a=zt(n);if(ot(a))return it(a).getTime()}catch(a){}console.warn(`Worker: Could not parse date: ${n}`)}var ut=/^(([\\s>]*)?(-|\\d+\\.|\\*|\\+)\\s\\[(.)\\])\\s*(.*)$/m;var dt=class{constructor(e){this.protectedRanges=[];this.content=e,this.protectedRanges=[]}detectAllProtectedRanges(){return this.protectedRanges=[],this.detectObsidianLinks(),this.detectMarkdownLinks(),this.detectInlineCode(),this.detectDirectUrls(),this.detectColorCodes(),this.mergeAndSortRanges()}isPositionProtected(e){return this.protectedRanges.some(t=>e>=t.start&&e<t.end)}findNextUnprotectedHash(e=0){let t=e;for(;t<this.content.length;){let r=this.content.indexOf("#",t);if(r===-1)return-1;if(!this.isPositionProtected(r))return r;t=r+1}return-1}detectObsidianLinks(){let e=/\\[\\[([^\\]]+)\\]\\]/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"obsidian-link",content:t[0]})}detectMarkdownLinks(){let e=/\\[([^\\]]*)\\]\\(([^)]+)\\)/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"markdown-link",content:t[0]})}detectDirectUrls(){let e=/(?:https?|ftp|mailto|file):\\/\\/[^\\s<>"{}|\\\\^`\\[\\]]+/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"url",content:t[0]})}detectColorCodes(){let e=/#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})(?![0-9A-Fa-f])/g,t;for(;(t=e.exec(this.content))!==null;)this.isLikelyColorCode(t.index,t[0])&&this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"color-code",content:t[0]})}detectInlineCode(){let e=/(`+)([^`]|[^`].*?[^`])\\1(?!`)/g,t;for(;(t=e.exec(this.content))!==null;)this.protectedRanges.push({start:t.index,end:t.index+t[0].length,type:"inline-code",content:t[0]})}isLikelyColorCode(e,t){let r=e>0?this.content[e-1]:" ",a=e+t.length,s=a<this.content.length?this.content[a]:" ",o=/\\s|^|[^a-zA-Z0-9]/.test(r),i=/\\s|$|[^a-zA-Z0-9]/.test(s);return o&&i}mergeAndSortRanges(){if(this.protectedRanges.length===0)return[];this.protectedRanges.sort((r,a)=>r.start-a.start);let e=[],t=this.protectedRanges[0];for(let r=1;r<this.protectedRanges.length;r++){let a=this.protectedRanges[r];t.end>a.start?t={start:t.start,end:Math.max(t.end,a.end),type:t.type,content:this.content.substring(t.start,Math.max(t.end,a.end))}:(e.push(t),t=a)}return e.push(t),this.protectedRanges=e,e}getDebugInfo(){return this.detectAllProtectedRanges().map(t=>`${t.type}: [${t.start}-${t.end}] "${t.content}"`).join(`\n`)}};var W=class{constructor(e){this.tasks=[];this.indentStack=[];this.config=e,this.customDateFormats=e.customDateFormats}extractMetadataAndTags(e){return this.extractMetadataAndTagsInternal(e)}static createWithStatusMapping(e,t){let r=I(C({},e),{statusMapping:t});return new W(r)}parse(e,t="",r,a,s){this.reset(),this.fileMetadata=r,a&&(this.projectConfigCache=a);let o=e.split(/\\r?\\n/),i=0,c=0,u=!1;for(;i<o.length;){if(c++,c>this.config.maxParseIterations){console.warn("Warning: Maximum parse iterations reached, stopping to prevent infinite loop");break}let l=o[i];if(l.trim().startsWith("```")||l.trim().startsWith("~~~")){u=!u,i++;continue}if(u){i++;continue}if(this.config.parseHeadings){let m=this.extractHeading(l);if(m){let[g,f]=m;this.currentHeading=f,this.currentHeadingLevel=g,i++;continue}}let p=this.extractTaskLine(l);if(p){let[m,,g,f]=p,y=`${t}-L${i}`,[T,v]=this.findParentAndLevel(m),[H,$]=this.parseTaskContent(g),te=$.toLowerCase()==="x",re=this.getStatusFromMapping($),[ae,ne,z]=this.extractMetadataAndTagsInternal(H),se=T!==void 0,O=this.inheritFileMetadata(ne,se),X=z;if(O.tags)try{let S=JSON.parse(O.tags);Array.isArray(S)&&(X=this.mergeTags(z,S))}catch(S){X=this.mergeTags(z,[O.tags])}let ie=s||this.determineTgProject(t),[oe,ce]=this.config.parseComments&&i+1<o.length?this.extractMultilineComment(o,i+1,m):[void 0,0];i+=ce;let ue={id:y,content:ae,status:re,rawStatus:$,completed:te,indentLevel:v,parentId:T,childrenIds:[],metadata:O,tags:X,comment:oe,lineNumber:i+1,actualIndent:m,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:f,filePath:t,originalMarkdown:l,tgProject:ie,line:i,children:[],priority:this.extractLegacyPriority(O),startDate:this.extractLegacyDate(O,"startDate"),dueDate:this.extractLegacyDate(O,"dueDate"),scheduledDate:this.extractLegacyDate(O,"scheduledDate"),completedDate:this.extractLegacyDate(O,"completedDate"),createdDate:this.extractLegacyDate(O,"createdDate"),recurrence:O.recurrence,project:O.project,context:O.context};if(T&&this.tasks.length>0){let S=this.tasks.find(de=>de.id===T);S&&(S.childrenIds.push(y),S.children.push(y))}this.updateIndentStack(y,v,m),this.tasks.push(ue)}i++}return[...this.tasks]}parseLegacy(e,t="",r,a,s){return this.parse(e,t,r,a,s).map(i=>this.convertToLegacyTask(i))}parseTask(e,t="",r=0){let a=this.parse(e,t);return this.convertToLegacyTask(I(C({},a[0]),{line:r,id:`${t}-L${r}`}))}reset(){this.tasks=[],this.indentStack=[],this.currentHeading=void 0,this.currentHeadingLevel=void 0}extractTaskLine(e){let t=e.trim(),r=e.length-t.length;if(this.isTaskLine(t)){let a=this.extractListMarker(t);return[r,r,t,a]}return null}extractListMarker(e){for(let a of["-","*","+"])if(e.startsWith(a))return a;let t=e.split(""),r=0;for(;r<t.length&&/\\d/.test(t[r]);)r++;return r>0&&r<t.length&&(t[r]==="."||t[r]===")")?t.slice(0,r+1).join(""):e.charAt(0)||" "}isTaskLine(e){return ut.test(e)}parseTaskContent(e){let t=e.match(ut);if(t&&t[4]!==void 0&&t[5]!==void 0){let r=t[4];return[t[5].trim(),r]}return[e," "]}extractMetadataAndTagsInternal(e){let t={},r=[],a="",s=e,o=0;for(;o<this.config.maxMetadataIterations;){o++;let i=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode===E.DataviewOnly||this.config.metadataParseMode===E.Both)){let c=this.extractDataviewMetadata(s);if(c){let[u,l,p]=c;t[u]=l,s=p,i=!0;continue}}if(!i&&this.config.parseMetadata&&(this.config.metadataParseMode===E.EmojiOnly||this.config.metadataParseMode===E.Both)){let c=this.extractEmojiMetadata(s);if(c){let[u,l,p,m]=c,[g,f,y]=this.extractTagsOnly(p);for(let T of y)r.push(T);for(let[T,v]of Object.entries(f))t[T]=v;t[u]=l,a+=g,s=m,i=!0;continue}}if(!i&&this.config.parseTags){let c=this.extractContext(s);if(c){let[u,l,p]=c;t.context=u,a+=l,s=p,i=!0;continue}}if(!i&&this.config.parseTags){let c=this.extractTag(s);if(c){let[u,l,p]=c,m=u.startsWith("#")?u.substring(1):u,g=m.indexOf("/");if(g!==-1){let f=m.substring(0,g),y=m.substring(g+1),T=this.config.specialTagPrefixes[f];T&&this.config.metadataParseMode!==E.None?t[T]=y:r.push(u)}else r.push(u);a+=l,s=p,i=!0;continue}}if(!i){a+=s;break}}return[a.trim(),t,r]}extractDataviewMetadata(e){let t=e.indexOf("[");if(t===-1)return null;let r=e.indexOf("]",t);if(r===-1)return null;let a=e.substring(t+1,r);if(!a.includes("::"))return null;let s=a.split("::",2);if(s.length!==2)return null;let o=s[0].trim(),i=s[1].trim(),u={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion"}[o.toLowerCase()];if(u&&(o=u),o&&i){let l=e.substring(0,t),p=e.substring(r+1);return[o,i,l+p]}return null}extractEmojiMetadata(e){let t=null;for(let[g,f]of Object.entries(this.config.emojiMapping)){let y=e.indexOf(g);y!==-1&&(!t||y<t.pos)&&(t={pos:y,emoji:g,key:f})}if(!t)return null;let r=e.substring(0,t.pos),a=e.substring(t.pos+t.emoji.length),s=a.match(/^\\s*/),o=s?s[0].length:0,i=a.substring(o),c=i.length;for(let g=0;g<i.length;g++){let f=i[g];if(Object.keys(this.config.emojiMapping).some(T=>i.substring(g).startsWith(T))||f==="["){c=g;break}let y=this.findFileExtensionEnd(i,g);if(y>g){c=y;break}if(/\\s/.test(f)&&g+1<i.length&&(i[g+1]==="#"||i[g+1]==="@")){c=g;break}if(f==="#"||f==="@"){c=g;break}}let u=i.substring(0,c).trim(),l;if(t.key==="dependsOn"&&u?l=u.split(",").map(g=>g.trim()).filter(g=>g.length>0).join(","):l=u||this.getDefaultEmojiValue(t.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(t.key)&&typeof l=="string"){let g=l.match(/\\d{4}-\\d{2}-\\d{2}/);g&&(l=g[0])}let p=t.pos+t.emoji.length+o+c,m=e.substring(p);return[t.key,l,r,m]}findFileExtensionEnd(e,t){let r=[".md",".canvas",".txt",".pdf"];for(let a of r)if(e.substring(t).startsWith(a)){let s=t+a.length;if(s<e.length&&e[s]==="#")for(;s<e.length&&e[s]!==" ";)s++;if(s>=e.length||e[s]===" ")return s}return t}getDefaultEmojiValue(e){return{"\\u{1F53A}":"highest","\\u23EB":"high","\\u{1F53C}":"medium","\\u{1F53D}":"low","\\u23EC\\uFE0F":"lowest","\\u23EC":"lowest"}[e]||"true"}extractTag(e){let t=new dt(e);t.detectAllProtectedRanges();let r=t.findNextUnprotectedHash(0);if(r===-1)return null;if(!this.isValidTagStart(e,r)){let i=t.findNextUnprotectedHash(r+1);if(i===-1)return null;let c=e.substring(i),u=this.extractTag(c);if(u){let[l,p,m]=u;return[l,e.substring(0,i)+p,m]}return null}let s=e.substring(r+1),o=0;for(let i=0;i<s.length;i++){let c=s[i],u=c.charCodeAt(0);if(u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||c==="/"||c==="-"||c==="_"||u>127&&c!=="\\uFF0C"&&c!=="\\u3002"&&c!=="\\uFF1B"&&c!=="\\uFF1A"&&c!=="\\uFF01"&&c!=="\\uFF1F"&&c!=="\\u300C"&&c!=="\\u300D"&&c!=="\\u300E"&&c!=="\\u300F"&&c!=="\\uFF08"&&c!=="\\uFF09"&&c!=="\\u3010"&&c!=="\\u3011"&&c!==\'"\'&&c!==\'"\'&&c!=="\'"&&c!=="\'"&&c!==" ")o=i+1;else break}if(o>0){let i="#"+s.substring(0,o),c=e.substring(0,r),u=e.substring(r+1+o);return[i,c,u]}return null}isValidTagStart(e,t){if(t===0)return!0;let r=e[t-1],a=/[\\s\\(\\[\\{<,;:!?\\-\\+\\*\\/\\\\\\|=]/,s=/[a-zA-Z0-9#@$%^&*]/;return a.test(r)?!0:s.test(r)?!1:!r.match(/[a-zA-Z0-9#@$%^&*]/)}extractContext(e){let t=e.indexOf("@");if(t===-1||!(t===0||e[t-1].match(/\\s/)||!e[t-1].match(/[a-zA-Z0-9#@$%^&*]/)))return null;let a=e.substring(t+1),s=0;for(let o=0;o<a.length;o++){let i=a[o],c=i.charCodeAt(0);if(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||i==="-"||i==="_"||c>127&&i!=="\\uFF0C"&&i!=="\\u3002"&&i!=="\\uFF1B"&&i!=="\\uFF1A"&&i!=="\\uFF01"&&i!=="\\uFF1F"&&i!=="\\u300C"&&i!=="\\u300D"&&i!=="\\u300E"&&i!=="\\u300F"&&i!=="\\uFF08"&&i!=="\\uFF09"&&i!=="\\u3010"&&i!=="\\u3011"&&i!==\'"\'&&i!==\'"\'&&i!=="\'"&&i!=="\'"&&i!==" ")s=o+1;else break}if(s>0){let o=a.substring(0,s),i=e.substring(0,t),c=e.substring(t+1+s);return[o,i,c]}return null}extractTagsOnly(e){let t={},r=[],a="",s=e;for(;;){let o=!1;if(this.config.parseMetadata&&(this.config.metadataParseMode===E.DataviewOnly||this.config.metadataParseMode===E.Both)){let i=this.extractDataviewMetadata(s);if(i){let[c,u,l]=i;t[c]=u,s=l,o=!0;continue}}if(!o&&this.config.parseTags){let i=this.extractContext(s);if(i){let[c,u,l]=i,[p,m,g]=this.extractTagsOnly(u);for(let f of g)r.push(f);for(let[f,y]of Object.entries(m))t[f]=y;t.context=c,a+=p,s=l,o=!0;continue}}if(!o&&this.config.parseTags){let i=this.extractTag(s);if(i){let[c,u,l]=i,p=c.startsWith("#")?c.substring(1):c,m=p.indexOf("/");if(m!==-1){let g=p.substring(0,m),f=p.substring(m+1),y=this.config.specialTagPrefixes[g];y&&this.config.metadataParseMode!==E.None?t[y]=f:r.push(c)}else r.push(c);a+=u,s=l,o=!0;continue}}if(!o){a+=s;break}}return[a.trim(),t,r]}findParentAndLevel(e){if(this.indentStack.length===0||e===0)return[void 0,0];for(let t=this.indentStack.length-1;t>=0;t--){let{taskId:r,indentLevel:a,actualSpaces:s}=this.indentStack[t];if(s<e)return[r,a+1]}return[void 0,0]}updateIndentStack(e,t,r){let a=0;for(;this.indentStack.length>0;){if(a++,a>this.config.maxStackOperations){console.warn("Warning: Maximum stack operations reached, clearing stack"),this.indentStack=[];break}if(this.indentStack[this.indentStack.length-1].actualSpaces>=r)this.indentStack.pop();else break}this.indentStack.length>=this.config.maxStackSize&&this.indentStack.splice(0,this.indentStack.length-this.config.maxStackSize+1),this.indentStack.push({taskId:e,indentLevel:t,actualSpaces:r})}getStatusFromMapping(e){for(let[t,r]of Object.entries(this.config.statusMapping))if(r===e)return t}extractHeading(e){let t=e.trim();if(!t.startsWith("#"))return null;let r=0;for(let a of t)if(a==="#")r++;else{if(a.match(/\\s/))break;return null}if(r>0&&r<=6){let a=t.substring(r).trim();if(a)return[r,a]}return null}extractMultilineComment(e,t,r){let a=[],s=t,o=0;for(;s<e.length;){let i=e[s],c=i.trimStart();if(i.length-c.length>r&&!this.isTaskLine(c))a.push(c),o++;else break;s++}return a.length===0?[void 0,0]:[a.join(`\n`),o]}extractLegacyPriority(e){if(!e.priority)return;let t={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1},r=parseInt(e.priority,10);return isNaN(r)?t[e.priority.toLowerCase()]:r}extractLegacyDate(e,t){let r=e[t];if(!r)return;let a=`${r}_${(this.customDateFormats||[]).join(",")}`,s=W.dateCache.get(a);if(s!==void 0)return s;let o=qt(r,this.customDateFormats);if(W.dateCache.size>=W.MAX_CACHE_SIZE){let i=W.dateCache.keys().next().value;i&&W.dateCache.delete(i)}return W.dateCache.set(a,o),o}convertToLegacyTask(e){let t=r=>{try{let a=JSON.parse(r);return Array.isArray(a)?a:[]}catch(a){return[r]}};return{id:e.id,content:e.content,filePath:e.filePath,line:e.line,completed:e.completed,status:e.rawStatus,originalMarkdown:e.originalMarkdown,children:e.children||[],metadata:{tags:e.tags||(e.metadata.tags?t(e.metadata.tags):[]),priority:e.priority||e.metadata.priority,startDate:e.startDate||e.metadata.startDate,dueDate:e.dueDate||e.metadata.dueDate,scheduledDate:e.scheduledDate||e.metadata.scheduledDate,completedDate:e.completedDate||e.metadata.completedDate,createdDate:e.createdDate||e.metadata.createdDate,cancelledDate:e.metadata.cancelledDate,recurrence:e.recurrence||e.metadata.recurrence,project:e.project||e.metadata.project,context:e.context||e.metadata.context,area:e.metadata.area,id:e.metadata.id,dependsOn:e.metadata.dependsOn?e.metadata.dependsOn.split(",").map(r=>r.trim()).filter(r=>r.length>0):void 0,onCompletion:e.metadata.onCompletion,children:e.children,heading:Array.isArray(e.heading)?e.heading:e.heading?[e.heading]:[],parent:e.parentId,tgProject:e.tgProject}}}loadProjectConfig(e){!this.config.projectConfig||(this.projectConfigCache={})}determineTgProject(e){var r,a,s;if(!((r=this.config.projectConfig)==null?void 0:r.enableEnhancedProject))return;let t=this.config.projectConfig;if(t.pathMappings&&t.pathMappings.length>0){for(let o of t.pathMappings)if(!!o.enabled&&e.includes(o.pathPattern))return{type:"path",name:o.projectName,source:o.pathPattern,readonly:!0}}if(((a=t.metadataConfig)==null?void 0:a.enabled)&&this.fileMetadata){let o=t.metadataConfig.metadataKey||"project",i=this.fileMetadata[o];if(i&&typeof i=="string")return{type:"metadata",name:i,source:o,readonly:!0}}if(((s=t.configFile)==null?void 0:s.enabled)&&this.projectConfigCache){let o=this.projectConfigCache.project;if(o&&typeof o=="string")return{type:"config",name:o,source:t.configFile.fileName,readonly:!0}}}static clearDateCache(){W.dateCache.clear()}static getDateCacheStats(){return{size:W.dateCache.size,maxSize:W.MAX_CACHE_SIZE}}parseTagsForMetadata(e){let t={};for(let r of e){let a=r.startsWith("#")?r.substring(1):r,s=a.indexOf("/");if(s!==-1){let o=a.substring(0,s),i=a.substring(s+1),c=this.config.specialTagPrefixes[o];c&&this.config.metadataParseMode!==E.None&&(t[c]=i)}}return t}normalizeTag(e){if(typeof e!="string")return e;let t=e.trim();return!t||t.startsWith("#")?t:`#${t}`}mergeTags(e,t){let r=e.map(o=>this.normalizeTag(o)),a=t.map(o=>this.normalizeTag(o)),s=[...r];for(let o of a)s.includes(o)||s.push(o);return s}inheritFileMetadata(e,t=!1){var o,i,c;let r=u=>{if(u==null||typeof u=="number")return String(u);let l=String(u),p={highest:5,high:4,medium:3,low:2,lowest:1,urgent:5,critical:5,important:4,normal:3,moderate:3,minor:2,trivial:1},m=parseInt(l,10);if(!isNaN(m))return String(m);let g=p[l.toLowerCase()];return g!==void 0?String(g):l},a=C({},e);if(a.priority!==void 0&&(a.priority=r(a.priority)),!((o=this.config.fileMetadataInheritance)==null?void 0:o.enabled)||!((i=this.config.fileMetadataInheritance)==null?void 0:i.inheritFromFrontmatter)||t&&!((c=this.config.fileMetadataInheritance)==null?void 0:c.inheritFromFrontmatterForSubtasks))return a;let s=new Set(["id","content","status","rawStatus","completed","line","lineNumber","originalMarkdown","filePath","heading","headingLevel","parent","parentId","children","childrenIds","indentLevel","actualIndent","listMarker","tgProject","comment","metadata"]);if(this.fileMetadata)for(let[u,l]of Object.entries(this.fileMetadata))if(u==="tags"&&Array.isArray(l)){let p=this.parseTagsForMetadata(l);for(let[m,g]of Object.entries(p))!s.has(m)&&(a[m]===void 0||a[m]===null||a[m]==="")&&g!==void 0&&g!==null&&(m==="priority"?a[m]=r(g):a[m]=String(g));if(!s.has("tags")&&(a.tags===void 0||a.tags===null||a.tags==="")){let m=l.map(g=>this.normalizeTag(g));a.tags=JSON.stringify(m)}}else!s.has(u)&&(a[u]===void 0||a[u]===null||a[u]==="")&&l!==void 0&&l!==null&&(u==="priority"?a[u]=r(l):a[u]=String(l));if(this.projectConfigCache)for(let[u,l]of Object.entries(this.projectConfigCache))!s.has(u)&&(a[u]===void 0||a[u]===null||a[u]==="")&&!(this.fileMetadata&&this.fileMetadata[u]!==void 0)&&l!==void 0&&l!==null&&(u==="priority"?a[u]=r(l):a[u]=String(l));return a}},Y=W;Y.dateCache=new Map,Y.MAX_CACHE_SIZE=1e4;var lt=(n,e)=>{var o,i,c,u,l,p,m,g,f,y,T,v;let t=((i=(o=e==null?void 0:e.settings)==null?void 0:o.projectTagPrefix)==null?void 0:i[n])||"project",r=((u=(c=e==null?void 0:e.settings)==null?void 0:c.contextTagPrefix)==null?void 0:u[n])||(n==="dataview"?"context":"@"),a=((p=(l=e==null?void 0:e.settings)==null?void 0:l.areaTagPrefix)==null?void 0:p[n])||"area";return{parseTags:!0,parseMetadata:!0,parseHeadings:!0,parseComments:!1,metadataParseMode:n==="dataview"?E.DataviewOnly:E.Both,statusMapping:{todo:" ",done:"x",cancelled:"-",forwarded:">",scheduled:"<",important:"!",question:"?",incomplete:"/",paused:"p",pro:"P",con:"C",quote:"Q",note:"N",bookmark:"b",information:"i",savings:"S",idea:"I",location:"l",phone:"k",win:"w",key:"K"},emojiMapping:{"\\u{1F4C5}":"dueDate","\\u{1F6EB}":"startDate","\\u23F3":"scheduledDate","\\u2705":"completedDate","\\u274C":"cancelledDate","\\u2795":"createdDate","\\u{1F501}":"recurrence","\\u{1F3C1}":"onCompletion","\\u26D4":"dependsOn","\\u{1F194}":"id","\\u{1F53A}":"priority","\\u23EB":"priority","\\u{1F53C}":"priority","\\u{1F53D}":"priority","\\u23EC":"priority"},specialTagPrefixes:{[t]:"project",[a]:"area",[r]:"context"},maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:((g=(m=e==null?void 0:e.settings)==null?void 0:m.projectConfig)==null?void 0:g.enableEnhancedProject)?(f=e==null?void 0:e.settings)==null?void 0:f.projectConfig:void 0,fileMetadataInheritance:(y=e==null?void 0:e.settings)==null?void 0:y.fileMetadataInheritance,customDateFormats:((T=e==null?void 0:e.settings)==null?void 0:T.enableCustomDateFormats)?(v=e==null?void 0:e.settings)==null?void 0:v.customDateFormats:void 0}};var mt=class{constructor(e,t){this.config=e,this.projectDetectionMethods=t}parseFileForTasks(e,t,r){let a=[],s=[];try{if(this.config.enableFileMetadataParsing&&(r==null?void 0:r.frontmatter)){let o=this.parseMetadataTasks(e,r.frontmatter,t,r);a.push(...o.tasks),s.push(...o.errors)}if(this.config.enableTagBasedTaskParsing&&(r==null?void 0:r.tags)){let o=this.parseTagTasks(e,r.tags,r.frontmatter,t,r);a.push(...o.tasks),s.push(...o.errors)}}catch(o){s.push(`Error parsing file ${e}: ${o.message}`)}return{tasks:a,errors:s}}parseMetadataTasks(e,t,r,a){let s=[],o=[];for(let i of this.config.metadataFieldsToParseAsTasks)if(t[i]!==void 0)try{let c=this.createTaskFromMetadata(e,i,t[i],t,r,a);c&&s.push(c)}catch(c){o.push(`Error creating task from metadata field ${i} in ${e}: ${c.message}`)}return{tasks:s,errors:o}}parseTagTasks(e,t,r,a,s){let o=[],i=[],c=t.map(u=>u.tag);for(let u of this.config.tagsToParseAsTasks){let l=u.startsWith("#")?u:`#${u}`;if(c.some(p=>p===l))try{let p=this.createTaskFromTag(e,l,r,a,s);p&&o.push(p)}catch(p){i.push(`Error creating task from tag ${l} in ${e}: ${p.message}`)}}return{tasks:o,errors:i}}createTaskFromMetadata(e,t,r,a,s,o){let i=this.getTaskContent(a,e),c=`${e}-metadata-${t}`,u=this.determineTaskStatus(t,r),l=u.toLowerCase()==="x",p=this.extractTaskMetadata(e,a,t,r,o);return console.log("metadata",p),{id:c,content:i,filePath:e,line:0,completed:l,status:u,originalMarkdown:`- [${u}] ${i}`,metadata:I(C({},p),{tags:this.extractTags(a),children:[],heading:[],source:"file-metadata",sourceField:t,sourceValue:r})}}createTaskFromTag(e,t,r,a,s){let o=this.getTaskContent(r,e),i=`${e}-tag-${t.replace("#","")}`,c=this.config.defaultTaskStatus,u=c.toLowerCase()==="x",l=this.extractTaskMetadata(e,r||{},"tag",t,s);return{id:i,content:o,filePath:e,line:0,completed:u,status:c,originalMarkdown:`- [${c}] ${o}`,metadata:I(C({},l),{tags:this.extractTags(r),children:[],heading:[],source:"file-tag",sourceTag:t})}}getTaskContent(e,t){return e&&e[this.config.taskContentFromMetadata]?String(e[this.config.taskContentFromMetadata]):(t.split("/").pop()||t).replace(/\\.[^/.]+$/,"")}determineTaskStatus(e,t){if(e.toLowerCase().includes("complete")||e.toLowerCase().includes("done"))return t?"x":" ";if(e.toLowerCase().includes("todo")||e.toLowerCase().includes("task")){if(typeof t=="boolean")return t?"x":" ";if(typeof t=="string"&&t.length===1)return t}return e.toLowerCase().includes("due")?" ":this.config.defaultTaskStatus}extractTaskMetadata(e,t,r,a,s){let o={};t.dueDate&&(o.dueDate=this.parseDate(t.dueDate)),t.startDate&&(o.startDate=this.parseDate(t.startDate)),t.scheduledDate&&(o.scheduledDate=this.parseDate(t.scheduledDate)),t.priority&&(o.priority=this.parsePriority(t.priority));let i=this.detectProjectFromFile(e,t,s);return i?o.project=i:t.project&&(o.project=String(t.project)),t.context&&(o.context=String(t.context)),t.area&&(o.area=String(t.area)),r.toLowerCase().includes("due")&&a&&(o.dueDate=this.parseDate(a)),o}detectProjectFromFile(e,t,r){if(!(!this.projectDetectionMethods||this.projectDetectionMethods.length===0)){for(let a of this.projectDetectionMethods)if(!!a.enabled)switch(a.type){case"metadata":if(t[a.propertyKey])return String(t[a.propertyKey]);break;case"tag":if(r==null?void 0:r.tags){let s=a.propertyKey.startsWith("#")?a.propertyKey:`#${a.propertyKey}`;if(r.tags.some(i=>i.tag===s))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\\.md$/i,"")}break;case"link":if(r==null?void 0:r.links)for(let s of r.links){let o=s.link;if(a.linkFilter){if(o.includes(a.linkFilter))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\\.md$/i,"")}else if(a.propertyKey){if(t[a.propertyKey]&&String(t[a.propertyKey]).includes(`[[${o}]]`))return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\\.md$/i,"")}else return t.title?String(t.title):t.name?String(t.name):(e.split("/").pop()||e).replace(/\\.md$/i,"")}break}}}extractTags(e){if(!e)return[];let t=[];return e.tags&&(Array.isArray(e.tags)?t.push(...e.tags.map(r=>String(r))):t.push(String(e.tags))),e.tag&&(Array.isArray(e.tag)?t.push(...e.tag.map(r=>String(r))):t.push(String(e.tag))),t}parseDate(e){if(!!e){if(typeof e=="number")return e;if(typeof e=="string"){let t=Date.parse(e);return isNaN(t)?void 0:t}if(e instanceof Date)return e.getTime()}}parsePriority(e){if(typeof e=="number")return Math.max(1,Math.min(3,Math.round(e)));if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return Math.max(1,Math.min(3,t));let r=e.toLowerCase();if(r.includes("high")||r.includes("urgent"))return 3;if(r.includes("medium")||r.includes("normal"))return 2;if(r.includes("low"))return 1}}};var ca={includeNodeIds:!1,includePositions:!1,nodeSeparator:`\n\n`,preserveLineBreaks:!0},ft=class{constructor(e,t={}){this.markdownParser=new Y(e),this.options=C(C({},ca),t)}parseCanvasFile(e,t){let r=null,a=null;try{return r=JSON.parse(e),r?(a=this.extractCanvasContent(r,t),a?this.parseTasksFromCanvasContent(a):[]):[]}catch(s){return console.error(`Error parsing canvas file ${t}:`,s),[]}finally{r=null,a=null}}extractCanvasContent(e,t){let r=e.nodes.filter(o=>o.type==="text"),a=[];for(let o of r){let i=o.text;this.options.includeNodeIds&&(i=`<!-- Node ID: ${o.id} -->\n${i}`),this.options.includePositions&&(i=`<!-- Position: x=${o.x}, y=${o.y} -->\n${i}`),this.options.preserveLineBreaks||(i=i.replace(/\\n/g," ")),a.push(i)}let s=a.join(this.options.nodeSeparator||`\n\n`);return{canvasData:e,textContent:s,textNodes:r,filePath:t}}parseTasksFromCanvasContent(e){let{textContent:t,filePath:r,textNodes:a}=e;return this.markdownParser.parseLegacy(t,r).map(o=>this.enhanceTaskWithCanvasMetadata(o,e))}enhanceTaskWithCanvasMetadata(e,t){let r=this.findSourceNode(e,t);if(r){let a=I(C({},e.metadata),{canvasNodeId:r.id,canvasPosition:{x:r.x,y:r.y,width:r.width,height:r.height},canvasColor:r.color,sourceType:"canvas"});e.metadata=a}else e.metadata.sourceType="canvas";return e}findSourceNode(e,t){let{textNodes:r}=t;for(let a of r)if(a.text.includes(e.originalMarkdown))return a;return null}updateParserConfig(e){this.markdownParser=new Y(e)}updateOptions(e){this.options=C(C({},this.options),e)}getOptions(){return C({},this.options)}static isValidCanvasContent(e){try{let t=JSON.parse(e);return typeof t=="object"&&t!==null&&Array.isArray(t.nodes)&&Array.isArray(t.edges)}catch(t){return!1}}extractTextOnly(e){try{return JSON.parse(e).nodes.filter(a=>a.type==="text").map(a=>a.text).join(this.options.nodeSeparator||`\n\n`)}catch(t){return console.error("Error extracting text from canvas:",t),""}}};var B;(function(t){t.MARKDOWN="md",t.CANVAS="canvas"})(B||(B={}));function ua(n,e,t,r){var a;try{let s={settings:t},o=lt(t.preferMetadataFormat,s);t.projectConfig&&t.projectConfig.enableEnhancedProject&&(o.projectConfig=t.projectConfig);let i=new Y(o),c=r,u,l;if(t.enhancedProjectData&&((a=t.projectConfig)==null?void 0:a.enableEnhancedProject)){let m=t.enhancedProjectData.fileMetadataMap[n];m&&(c=m);let g=n.substring(0,n.lastIndexOf("/"));u=t.enhancedProjectData.projectConfigMap[g];let f=t.enhancedProjectData.fileProjectMap[n];if(f){let y,T;switch(["metadata","path","config","default"].includes(f.source)?y=f.source:f.source&&f.source.includes("/")?y="path":f.source&&f.source.includes(".")?y="config":y="metadata",y){case"path":T="path-mapping";break;case"metadata":T="frontmatter";break;case"config":T="config-file";break;case"default":T="default-naming";break}l={type:y,name:f.project,source:T,readonly:f.readonly}}}return i.parseLegacy(e,n,c,u,l).filter(m=>!(t.ignoreHeading&&m.metadata.heading&&(Array.isArray(m.metadata.heading)?m.metadata.heading:[m.metadata.heading]).some(f=>f.includes(t.ignoreHeading))||t.focusHeading&&m.metadata.heading&&!(Array.isArray(m.metadata.heading)?m.metadata.heading:[m.metadata.heading]).some(f=>f.includes(t.focusHeading))))}catch(s){return console.warn("Configurable parser failed, falling back to legacy parser:",s),da(n,e,t.preferMetadataFormat,t.ignoreHeading,t.focusHeading)}}function da(n,e,t,r,a){let s=e.split(`\n`),o=[];for(let i=0;i<s.length;i++){let c=s[i],u=c.match(/^(\\s*[-*+]|\\d+\\.)\\s*\\[(.)\\]\\s*(.*)$/);if(u){let[,,l,p]=u,m=l.toLowerCase()==="x";o.push({id:`${n}-L${i}`,content:p.trim(),filePath:n,line:i,completed:m,status:l,originalMarkdown:c,metadata:{tags:[],children:[],heading:[]}})}}return o}function Gt(n,e){if(!e.useDailyNotePathAsDate)return;let t=n.replace(/\\.[^/.]+$/,"");e.dailyNotePath&&t.startsWith(e.dailyNotePath)&&(t=t.substring(e.dailyNotePath.length),t.startsWith("/")&&(t=t.substring(1)));let r=be(t,e.dailyNoteFormat,new Date);if(isNaN(r.getTime())&&t.includes("/"))return Gt(t.substring(t.indexOf("/")+1),I(C({},e),{dailyNotePath:""}));if(!isNaN(r.getTime()))return r.getTime()}function Vt(n,e,t,r,a,s){var i,c,u,l;let o=performance.now();try{let p;((i=s==null?void 0:s.fileCache)==null?void 0:i.frontmatter)&&(p=s.fileCache.frontmatter);let m=[];if(t===B.CANVAS){let f={settings:a};m=new ft(lt(a.preferMetadataFormat,f)).parseCanvasFile(e,n)}else t===B.MARKDOWN?m=ua(n,e,a,p):(console.warn(`Worker: Unsupported file type: ${t} for file: ${n}`),m=[]);if(t===B.MARKDOWN&&a.fileParsingConfig&&(a.fileParsingConfig.enableFileMetadataParsing||a.fileParsingConfig.enableTagBasedTaskParsing||((c=a.fileMetadataInheritance)==null?void 0:c.enabled)))try{let y=new mt(a.fileParsingConfig,(l=(u=a.projectConfig)==null?void 0:u.metadataConfig)==null?void 0:l.detectionMethods).parseFileForTasks(n,e,s==null?void 0:s.fileCache);m.push(...y.tasks),y.errors.length>0&&console.warn(`Worker: File metadata parsing errors for ${n}:`,y.errors)}catch(f){console.error(`Worker: Error in file metadata parsing for ${n}:`,f)}let g=m.filter(f=>f.completed).length;try{if((n.startsWith(a.dailyNotePath)||("/"+n).startsWith(a.dailyNotePath))&&a.dailyNotePath&&a.useDailyNotePathAsDate)for(let f of m){let y=Gt(n,{useDailyNotePathAsDate:a.useDailyNotePathAsDate,dailyNoteFormat:a.dailyNoteFormat.replace(/Y/g,"y").replace(/D/g,"d"),dailyNotePath:a.dailyNotePath});y&&(a.useAsDateType==="due"&&!f.metadata.dueDate?f.metadata.dueDate=y:a.useAsDateType==="start"&&!f.metadata.startDate?f.metadata.startDate=y:a.useAsDateType==="scheduled"&&!f.metadata.scheduledDate&&(f.metadata.scheduledDate=y),f.metadata.useAsDateType=a.useAsDateType)}}catch(f){console.error(`Worker: Error processing file ${n}:`,f)}return{type:"parseResult",filePath:n,tasks:m,stats:{totalTasks:m.length,completedTasks:g,processingTimeMs:Math.round(performance.now()-o)}}}catch(p){throw console.error(`Worker: Error processing file ${n}:`,p),p}}function la(n,e){let t=performance.now(),r=[],a=0,s=0;for(let o of n)try{let i=Vt(o.path,o.content,o.extension,o.stats,e,o.metadata);a+=i.stats.totalTasks,r.push({filePath:i.filePath,taskCount:i.stats.totalTasks})}catch(i){console.error(`Worker: Error in batch processing for file ${o.path}:`,i),s++}return{type:"batchResult",results:r,stats:{totalFiles:n.length,totalTasks:a,processingTimeMs:Math.round(performance.now()-t)}}}self.onmessage=async n=>{try{let e=n.data,t=e.settings||{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",projectConfig:void 0,fileParsingConfig:void 0};if(e.type==="parseTasks")try{let r=Vt(e.filePath,e.content,e.fileExtension,e.stats,t,e.metadata);self.postMessage(r)}catch(r){self.postMessage({type:"error",error:r instanceof Error?r.message:String(r),filePath:e.filePath})}else if(e.type==="batchIndex"){let r=la(e.files,t);self.postMessage(r)}else console.error("Worker: Unknown or invalid command message:",e),self.postMessage({type:"error",error:`Unknown command type: ${e.type}`})}catch(e){console.error("Worker: General error in onmessage handler:",e),self.postMessage({type:"error",error:e instanceof Error?e.message:String(e)})}};\n')}function $B(){let s,e,a=new Promise((r,i)=>{s=r,e=i});return a.resolve=s,a.reject=e,a}var yk=A(GB()),H9={maxWorkers:1,cpuUtilization:.75,debug:!1,settings:{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:void 0,fileMetadataInheritance:void 0}},wk;(function(a){a[a.HIGH=0]="HIGH",a[a.NORMAL=1]="NORMAL",a[a.LOW=2]="LOW"})(wk||(wk={}));var ox=class extends KB.Component{constructor(e,t,a={}){super();this.workers=new Map;this.queues=[new yk.Queue,new yk.Queue,new yk.Queue];this.outstanding=new Map;this.active=!0;this.nextWorkerId=0;this.processedFiles=0;this.totalFilesToProcess=0;this.isProcessingBatch=!1;this.maxRetries=2;this.initialized=!1;this.stats={filesSkipped:0,filesProcessed:0,cacheHitRatio:0};this.options={...H9,...a},this.vault=e,this.metadataCache=t,this.initializeWorkers()}setFileParsingConfig(e,t){e.enableFileMetadataParsing||e.enableTagBasedTaskParsing?this.fileMetadataParser=new ix(e,t):this.fileMetadataParser=void 0,this.options.settings?this.options.settings.fileParsingConfig=e:this.options.settings={preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:e,fileMetadataInheritance:void 0}}initializeWorkers(){if(this.initialized){this.log("Workers already initialized, skipping initialization");return}this.workers.size>0&&(this.log("Cleaning up existing workers before re-initialization"),this.cleanupWorkers());let e=Math.min(this.options.maxWorkers,navigator.hardwareConcurrency||2);for(let t=0;t<e;t++)try{let a=this.newWorker();this.workers.set(a.id,a),this.log(`Initialized worker #${a.id}`)}catch(a){console.error("Failed to initialize worker:",a)}this.initialized=!0,this.log(`Initialized ${this.workers.size} workers (requested ${e})`),this.workers.size===0&&console.warn("No workers could be initialized, falling back to main thread processing")}newWorker(){let e={id:this.nextWorkerId++,worker:new nx,availableAt:Date.now()};return e.worker.onmessage=t=>{this.finish(e,t.data).catch(a=>{if(console.error("Error in finish handler:",a),e.active){let[r,i]=e.active;i.reject(a),e.active=void 0,this.outstanding.delete(r.path),this.schedule()}})},e.worker.onerror=t=>{if(console.error("Worker error:",t),e.active){let[a,r,i,n]=e.active;i<this.maxRetries?(this.log(`Retrying task for ${a.path} (attempt ${i+1})`),this.queueTaskWithPriority(a,r,n,i+1)):r.reject("Worker error after max retries"),e.active=void 0,this.schedule()}},e}setTaskIndexer(e){this.taskIndexer=e}updateCacheHitRatio(){let e=this.stats.filesSkipped+this.stats.filesProcessed;this.stats.cacheHitRatio=e>0?this.stats.filesSkipped/e:0}getStats(){return{...this.stats}}shouldProcessFile(e){var t,a;return!this.taskIndexer||!((a=(t=this.options.settings)==null?void 0:t.fileParsingConfig)==null?void 0:a.enableMtimeOptimization)?!0:!this.taskIndexer.hasValidCache(e.path,e.stat.mtime)}getCachedTasksForFile(e){if(!this.taskIndexer)return null;let t=this.taskIndexer.getCache().files.get(e);if(!t)return null;let a=[],r=this.taskIndexer.getCache().tasks;for(let i of t){let n=r.get(i);n&&a.push(n)}return a.length>0?a:null}processFile(e,t=1){let a=this.outstanding.get(e.path);if(a)return a;if(!this.shouldProcessFile(e)){let i=this.getCachedTasksForFile(e.path);if(i)return this.stats.filesSkipped++,this.updateCacheHitRatio(),this.log(`Using cached tasks for ${e.path} (${i.length} tasks)`),Promise.resolve(i)}let r=$B();return this.outstanding.set(e.path,r),this.queueTaskWithPriority(e,r,t),r}queueTaskWithPriority(e,t,a,r=0){this.queues[a].enqueue({file:e,promise:t,priority:a}),r===0&&this.schedule()}async processBatch(e,t=0){if(e.length===0)return new Map;let a=[],r=new Map,i=0;for(let n of e){if(!this.shouldProcessFile(n)){let o=this.getCachedTasksForFile(n.path);if(o){r.set(n.path,o),i++;continue}}a.push(n)}if(this.log(`Batch processing: ${i} files from cache, ${a.length} files to process (cache hit ratio: ${i>0?(i/e.length*100).toFixed(1):0}%)`),a.length===0)return r;this.isProcessingBatch=!0,this.processedFiles=0,this.totalFilesToProcess=a.length,this.log(`Processing batch of ${a.length} files (${i} cached)`);try{let n=10,o=Math.min(this.options.maxWorkers*2,5),l=0,d=[],u=async()=>{if(d.length!==0&&l<o){l++;let p=d.shift();if(p)try{await p()}catch(m){console.error("Error processing batch task:",m)}finally{l--,await u()}}};for(let p=0;p<a.length;p+=n){let m=a.slice(p,p+n);d.push(async()=>{let f=m.map(async g=>{try{let y=await this.processFile(g,t);return r.set(g.path,y),{file:g,tasks:y}}catch(y){return console.error(`Error processing file ${g.path}:`,y),{file:g,tasks:[]}}}),h=await Promise.all(f);this.processedFiles+=h.length;let k=Math.round(this.processedFiles/this.totalFilesToProcess*100);(k%10==0||this.processedFiles===this.totalFilesToProcess)&&this.log(`Batch progress: ${k}% (${this.processedFiles}/${this.totalFilesToProcess})`)}),u()}for(;l>0||d.length>0;)await new Promise(p=>setTimeout(p,50))}catch(n){console.error("Error during batch processing:",n)}finally{this.isProcessingBatch=!1,this.log(`Completed batch processing of ${e.length} files (${i} from cache, ${a.length} processed)`)}return r}serializeCachedMetadata(e){if(!!e)try{let t={},a=["frontmatter","tags","headings","sections","listItems","links","embeds","blocks"];for(let r of a)e[r]!==void 0&&(t[r]=JSON.parse(JSON.stringify(e[r])));return t}catch(t){return console.warn("Failed to serialize CachedMetadata, using fallback:",t),{frontmatter:e.frontmatter?JSON.parse(JSON.stringify(e.frontmatter)):void 0}}}async getTaskMetadata(e){let t=await this.vault.cachedRead(e),a=this.metadataCache.getFileCache(e);return{listItems:a==null?void 0:a.listItems,content:t,stats:{ctime:e.stat.ctime,mtime:e.stat.mtime,size:e.stat.size}}}schedule(){if(!this.active)return;let e;for(let n=0;n<this.queues.length;n++)if(!this.queues[n].isEmpty()){e=this.queues[n].dequeue();break}if(!e)return;let t=this.availableWorker();if(!t){this.queues[e.priority].enqueue(e);return}let{file:a,promise:r,priority:i}=e;t.active=[a,r,0,i];try{this.getTaskMetadata(a).then(n=>{let o={type:"parseTasks",filePath:a.path,content:n.content,fileExtension:a.extension,stats:n.stats,metadata:{listItems:n.listItems||[],fileCache:this.serializeCachedMetadata(this.metadataCache.getFileCache(a))},settings:this.options.settings||{preferMetadataFormat:"tasks",useDailyNotePathAsDate:!1,dailyNoteFormat:"yyyy-MM-dd",useAsDateType:"due",dailyNotePath:"",ignoreHeading:"",focusHeading:"",fileParsingConfig:void 0,fileMetadataInheritance:void 0}};t.worker.postMessage(o)}).catch(n=>{console.error(`Error reading file ${a.path}:`,n),r.reject(n),t.active=void 0,this.outstanding.delete(a.path),this.schedule()})}catch(n){console.error(`Error processing file ${a.path}:`,n),r.reject(n),t.active=void 0,this.outstanding.delete(a.path),this.schedule()}}async finish(e,t){if(!e.active)return;let[a,r,i,n]=e.active;if(t.type==="error"){let o=t;i<this.maxRetries?(this.log(`Retrying task for ${a.path} due to error: ${o.error}`),this.queueTaskWithPriority(a,r,n,i+1)):(r.reject(new Error(o.error)),this.outstanding.delete(a.path))}else if(t.type==="parseResult"){let l=[...t.tasks];if(this.fileMetadataParser)try{let d=this.metadataCache.getFileCache(a),u=await this.vault.cachedRead(a),p=this.fileMetadataParser.parseFileForTasks(a.path,u,d||void 0);l.push(...p.tasks),p.errors.length>0&&console.warn(`File metadata parsing errors for ${a.path}:`,p.errors)}catch(d){console.error(`Error in file metadata parsing for ${a.path}:`,d)}r.resolve(l),this.outstanding.delete(a.path),this.stats.filesProcessed++,this.updateCacheHitRatio()}else t.type==="batchResult"?(r.reject(new Error("Batch results should be handled by processBatch")),this.outstanding.delete(a.path)):(r.reject(new Error(`Unexpected result type: ${t.type}`)),this.outstanding.delete(a.path));if(this.workers.size>this.options.maxWorkers)this.workers.delete(e.id),this.terminate(e);else{let o=Date.now(),l=e.active?o-e.availableAt:0,d=Math.max(.1,this.options.cpuUtilization)-1,u=Math.max(0,l*d);e.active=void 0,u<=0?(e.availableAt=o,this.schedule()):(e.availableAt=o+u,setTimeout(()=>this.schedule(),u))}}availableWorker(){let e=Date.now();for(let t of this.workers.values())if(!t.active&&t.availableAt<=e)return t;if(this.workers.size<this.options.maxWorkers){let t=this.newWorker();return this.workers.set(t.id,t),t}}terminate(e){e.worker.terminate(),e.active&&(e.active[1].reject("Terminated"),e.active=void 0),this.log(`Terminated worker #${e.id}`)}cleanupWorkers(){for(let e of this.workers.values())this.terminate(e);this.workers.clear();for(let e of this.queues)for(;!e.isEmpty();){let t=e.dequeue();t&&(t.promise.reject("Workers being reinitialized"),this.outstanding.delete(t.file.path))}this.log("Cleaned up existing workers")}unthrottle(){let e=Date.now();for(let t of this.workers.values())t.availableAt=e;this.schedule()}onunload(){this.active=!1;for(let e of this.workers.values())this.terminate(e),this.workers.delete(e.id);for(let e of this.queues)for(;!e.isEmpty();){let t=e.dequeue();t&&(t.promise.reject("Terminated"),this.outstanding.delete(t.file.path))}this.initialized=!1,this.log("Worker pool shut down")}getPendingTaskCount(){return this.queues.reduce((e,t)=>e+t.size(),0)}getBatchProgress(){return{current:this.processedFiles,total:this.totalFilesToProcess,percentage:this.totalFilesToProcess>0?Math.round(this.processedFiles/this.totalFilesToProcess*100):0}}setEnhancedProjectData(e){this.options.settings&&(this.options.settings.enhancedProjectData=e)}isProcessingBatchTask(){return this.isProcessingBatch}log(e){this.options.debug&&""+e}};var bo=A(XB()),Gu=class{constructor(e,t){this.appId=e;this.cachePrefix="taskgenius/cache/";this.initialized=!1;this.currentVersion="unknown";this.currentVersion=t||"unknown",this.persister=bo.default.createInstance({name:this.cachePrefix+this.appId,driver:[bo.default.INDEXEDDB],description:"TaskGenius metadata cache for files and tasks"}),this.initialize()}async initialize(){try{await this.persister.setItem(`${this.appId}:__test__`,!0),await this.persister.removeItem(`${this.appId}:__test__`),this.initialized=!0}catch(e){console.error("Failed to initialize IndexedDB cache, falling back to localStorage:",e),this.persister=bo.default.createInstance({name:this.cachePrefix+this.appId,driver:[bo.default.LOCALSTORAGE],description:"TaskGenius metadata fallback cache"}),this.initialized=!0}}async recreate(){try{await bo.default.dropInstance({name:this.cachePrefix+this.appId})}catch(e){console.error("Error dropping storage instance:",e)}this.persister=bo.default.createInstance({name:this.cachePrefix+this.appId,driver:[bo.default.INDEXEDDB],description:"TaskGenius metadata cache for files and tasks"}),this.initialized=!1,await this.initialize()}async loadFile(e){this.initialized||await this.initialize();try{let t=this.fileKey(e);return await this.persister.getItem(t)}catch(t){return console.error(`Error loading cache for ${e}:`,t),null}}async storeFile(e,t){this.initialized||await this.initialize();try{let a=this.fileKey(e);await this.persister.setItem(a,{version:this.currentVersion,time:Date.now(),data:t})}catch(a){console.error(`Error storing cache for ${e}:`,a)}}async synchronize(e){this.initialized||await this.initialize();try{let t=new Set(e),a=await this.allFiles(),r=new Set;for(let i of a)t.has(i)||(r.add(i),await this.persister.removeItem(this.fileKey(i)));return r}catch(t){return console.error("Error synchronizing cache:",t),new Set}}async allKeys(){this.initialized||await this.initialize();try{return(await this.persister.keys()).filter(t=>t.startsWith(`${this.appId}:`))}catch(e){return console.error("Error getting cache keys:",e),[]}}async allFiles(){let e=`${this.appId}:file:`;try{return(await this.allKeys()).filter(a=>a.startsWith(e)).map(a=>a.substring(e.length))}catch(t){return console.error("Error getting cached files:",t),[]}}fileKey(e){return`${this.appId}:file:${e}`}async hasFile(e){this.initialized||await this.initialize();try{return await this.persister.getItem(this.fileKey(e))!==null}catch(t){return!1}}async removeFile(e){this.initialized||await this.initialize();try{await this.persister.removeItem(this.fileKey(e))}catch(t){console.error(`Error removing cache for ${e}:`,t)}}async getStats(){try{let e=await this.allFiles();return{totalFiles:e.length,cacheSize:e.length}}catch(e){return console.error("Error getting cache stats:",e),{totalFiles:0,cacheSize:0}}}async clear(){this.initialized||await this.initialize();try{let e=await this.allKeys();for(let t of e)await this.persister.removeItem(t)}catch(e){console.error("Error clearing cache:",e),await this.recreate()}}async storeConsolidatedCache(e,t){this.initialized||await this.initialize();try{let a=`${this.appId}:consolidated:${e}`;await this.persister.setItem(a,{version:this.currentVersion,time:Date.now(),data:t})}catch(a){console.error(`Error storing consolidated cache for ${e}:`,a)}}async loadConsolidatedCache(e){this.initialized||await this.initialize();try{let t=`${this.appId}:consolidated:${e}`;return await this.persister.getItem(t)}catch(t){return console.error(`Error loading consolidated cache for ${e}:`,t),null}}async getAll(){this.initialized||await this.initialize();try{let e=await this.allFiles(),t={};for(let a of e)t[a]=await this.loadFile(a);return t}catch(e){return console.error("Error getting all cached files:",e),{}}}setVersion(e){this.currentVersion=e}getVersion(){return this.currentVersion}isVersionCompatible(e,t=!1){return e.version?t?e.version===this.currentVersion:e.version===this.currentVersion:!1}async clearIncompatibleCache(){this.initialized||await this.initialize();let e=0;try{let t=await this.allKeys();for(let a of t)try{let r=await this.persister.getItem(a);r&&!this.isVersionCompatible(r)&&(await this.persister.removeItem(a),e++)}catch(r){await this.persister.removeItem(a),e++}}catch(t){console.error("Error clearing incompatible cache:",t)}return e}};var Ku=["MO","TU","WE","TH","FR","SA","SU"],pa=function(){function s(e,t){if(t===0)throw new Error("Can't create weekday with n == 0");this.weekday=e,this.n=t}return s.fromStr=function(e){return new s(Ku.indexOf(e))},s.prototype.nth=function(e){return this.n===e?this:new s(this.weekday,e)},s.prototype.equals=function(e){return this.weekday===e.weekday&&this.n===e.n},s.prototype.toString=function(){var e=Ku[this.weekday];return this.n&&(e=(this.n>0?"+":"")+String(this.n)+e),e},s.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},s}();var Ct=function(s){return s!=null},as=function(s){return typeof s=="number"},cx=function(s){return typeof s=="string"&&Ku.includes(s)},Ua=Array.isArray,Fs=function(s,e){e===void 0&&(e=s),arguments.length===1&&(e=s,s=0);for(var t=[],a=s;a<e;a++)t.push(a);return t};var Ke=function(s,e){var t=0,a=[];if(Ua(s))for(;t<e;t++)a[t]=[].concat(s);else for(;t<e;t++)a[t]=s;return a},JB=function(s){return Ua(s)?s:[s]};function yl(s,e,t){t===void 0&&(t=" ");var a=String(s);return e=e>>0,a.length>e?String(a):(e=e-a.length,e>t.length&&(t+=Ke(t,e/t.length)),t.slice(0,e)+String(a))}var ZB=function(s,e,t){var a=s.split(e);return t?a.slice(0,t).concat([a.slice(t).join(e)]):a},rr=function(s,e){var t=s%e;return t*e<0?t+e:t},vk=function(s,e){return{div:Math.floor(s/e),mod:rr(s,e)}},rs=function(s){return!Ct(s)||s.length===0},Zt=function(s){return!rs(s)},Je=function(s,e){return Zt(s)&&s.indexOf(e)!==-1};var Li=function(s,e,t,a,r,i){return a===void 0&&(a=0),r===void 0&&(r=0),i===void 0&&(i=0),new Date(Date.UTC(s,e-1,t,a,r,i))},B9=[31,28,31,30,31,30,31,31,30,31,30,31],eW=1e3*60*60*24,bk=9999,tW=Li(1970,1,1),W9=[6,0,1,2,3,4,5];var id=function(s){return s%4==0&&s%100!=0||s%400==0},dx=function(s){return s instanceof Date},wl=function(s){return dx(s)&&!isNaN(s.getTime())};var _9=function(s,e){var t=s.getTime(),a=e.getTime(),r=t-a;return Math.round(r/eW)},Qu=function(s){return _9(s,tW)},Tk=function(s){return new Date(tW.getTime()+s*eW)},V9=function(s){var e=s.getUTCMonth();return e===1&&id(s.getUTCFullYear())?29:B9[e]},bn=function(s){return W9[s.getUTCDay()]},ux=function(s,e){var t=Li(s,e+1,1);return[bn(t),V9(t)]},Ck=function(s,e){return e=e||s,new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))},xk=function(s){var e=new Date(s.getTime());return e},px=function(s){for(var e=[],t=0;t<s.length;t++)e.push(xk(s[t]));return e},Tn=function(s){s.sort(function(e,t){return e.getTime()-t.getTime()})},nd=function(s,e){e===void 0&&(e=!0);var t=new Date(s);return[yl(t.getUTCFullYear().toString(),4,"0"),yl(t.getUTCMonth()+1,2,"0"),yl(t.getUTCDate(),2,"0"),"T",yl(t.getUTCHours(),2,"0"),yl(t.getUTCMinutes(),2,"0"),yl(t.getUTCSeconds(),2,"0"),e?"Z":""].join("")},Xu=function(s){var e=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/,t=e.exec(s);if(!t)throw new Error("Invalid UNTIL value: ".concat(s));return new Date(Date.UTC(parseInt(t[1],10),parseInt(t[2],10)-1,parseInt(t[3],10),parseInt(t[5],10)||0,parseInt(t[6],10)||0,parseInt(t[7],10)||0))},aW=function(s,e){var t=s.toLocaleString("sv-SE",{timeZone:e});return t.replace(" ","T")+"Z"},rW=function(s,e){var t=Intl.DateTimeFormat().resolvedOptions().timeZone,a=new Date(aW(s,t)),r=new Date(aW(s,e!=null?e:"UTC")),i=r.getTime()-a.getTime();return new Date(s.getTime()-i)};var U9=function(){function s(e,t){this.minDate=null,this.maxDate=null,this._result=[],this.total=0,this.method=e,this.args=t,e==="between"?(this.maxDate=t.inc?t.before:new Date(t.before.getTime()-1),this.minDate=t.inc?t.after:new Date(t.after.getTime()+1)):e==="before"?this.maxDate=t.inc?t.dt:new Date(t.dt.getTime()-1):e==="after"&&(this.minDate=t.inc?t.dt:new Date(t.dt.getTime()+1))}return s.prototype.accept=function(e){++this.total;var t=this.minDate&&e<this.minDate,a=this.maxDate&&e>this.maxDate;if(this.method==="between"){if(t)return!0;if(a)return!1}else if(this.method==="before"){if(a)return!1}else if(this.method==="after")return t?!0:(this.add(e),!1);return this.add(e)},s.prototype.add=function(e){return this._result.push(e),!0},s.prototype.getValue=function(){var e=this._result;switch(this.method){case"all":case"between":return e;case"before":case"after":default:return e.length?e[e.length-1]:null}},s.prototype.clone=function(){return new s(this.method,this.args)},s}(),Cn=U9;var EW=A(SW()),{__extends:ld,__assign:yr,__rest:H_e,__decorate:B_e,__param:W_e,__metadata:__e,__awaiter:V_e,__generator:U_e,__exportStar:$_e,__createBinding:Y_e,__values:z_e,__read:q_e,__spread:G_e,__spreadArrays:K_e,__spreadArray:ne,__await:Q_e,__asyncGenerator:X_e,__asyncDelegator:J_e,__asyncValues:Z_e,__makeTemplateObject:eVe,__importStar:tVe,__importDefault:aVe,__classPrivateFieldGet:rVe,__classPrivateFieldSet:sVe,__classPrivateFieldIn:iVe}=EW.default;var $9=function(s){ld(e,s);function e(t,a,r){var i=s.call(this,t,a)||this;return i.iterator=r,i}return e.prototype.add=function(t){return this.iterator(t,this._result.length)?(this._result.push(t),!0):!1},e}(Cn),fx=$9;var Y9={dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],tokens:{SKIP:/^[ \r\n\t]+|^\.$/,number:/^[1-9][0-9]*/,numberAsText:/^(one|two|three)/i,every:/^every/i,"day(s)":/^days?/i,"weekday(s)":/^weekdays?/i,"week(s)":/^weeks?/i,"hour(s)":/^hours?/i,"minute(s)":/^minutes?/i,"month(s)":/^months?/i,"year(s)":/^years?/i,on:/^(on|in)/i,at:/^(at)/i,the:/^the/i,first:/^first/i,second:/^second/i,third:/^third/i,nth:/^([1-9][0-9]*)(\.|th|nd|rd|st)/i,last:/^last/i,for:/^for/i,"time(s)":/^times?/i,until:/^(un)?til/i,monday:/^mo(n(day)?)?/i,tuesday:/^tu(e(s(day)?)?)?/i,wednesday:/^we(d(n(esday)?)?)?/i,thursday:/^th(u(r(sday)?)?)?/i,friday:/^fr(i(day)?)?/i,saturday:/^sa(t(urday)?)?/i,sunday:/^su(n(day)?)?/i,january:/^jan(uary)?/i,february:/^feb(ruary)?/i,march:/^mar(ch)?/i,april:/^apr(il)?/i,may:/^may/i,june:/^june?/i,july:/^july?/i,august:/^aug(ust)?/i,september:/^sep(t(ember)?)?/i,october:/^oct(ober)?/i,november:/^nov(ember)?/i,december:/^dec(ember)?/i,comma:/^(,\s*|(and|or)\s*)+/i}},vl=Y9;var DW=function(s,e){return s.indexOf(e)!==-1},z9=function(s){return s.toString()},q9=function(s,e,t){return"".concat(e," ").concat(t,", ").concat(s)},G9=function(){function s(e,t,a,r){if(t===void 0&&(t=z9),a===void 0&&(a=vl),r===void 0&&(r=q9),this.text=[],this.language=a||vl,this.gettext=t,this.dateFormatter=r,this.rrule=e,this.options=e.options,this.origOptions=e.origOptions,this.origOptions.bymonthday){var i=[].concat(this.options.bymonthday),n=[].concat(this.options.bynmonthday);i.sort(function(u,p){return u-p}),n.sort(function(u,p){return p-u}),this.bymonthday=i.concat(n),this.bymonthday.length||(this.bymonthday=null)}if(Ct(this.origOptions.byweekday)){var o=Ua(this.origOptions.byweekday)?this.origOptions.byweekday:[this.origOptions.byweekday],l=String(o);this.byweekday={allWeeks:o.filter(function(u){return!u.n}),someWeeks:o.filter(function(u){return Boolean(u.n)}),isWeekdays:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")===-1&&l.indexOf("SU")===-1,isEveryDay:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")!==-1&&l.indexOf("SU")!==-1};var d=function(u,p){return u.weekday-p.weekday};this.byweekday.allWeeks.sort(d),this.byweekday.someWeeks.sort(d),this.byweekday.allWeeks.length||(this.byweekday.allWeeks=null),this.byweekday.someWeeks.length||(this.byweekday.someWeeks=null)}else this.byweekday=null}return s.isFullyConvertible=function(e){var t=!0;if(!(e.options.freq in s.IMPLEMENTED)||e.origOptions.until&&e.origOptions.count)return!1;for(var a in e.origOptions){if(DW(["dtstart","tzid","wkst","freq"],a))return!0;if(!DW(s.IMPLEMENTED[e.options.freq],a))return!1}return t},s.prototype.isFullyConvertible=function(){return s.isFullyConvertible(this.rrule)},s.prototype.toString=function(){var e=this.gettext;if(!(this.options.freq in s.IMPLEMENTED))return e("RRule error: Unable to fully convert this rrule to text");if(this.text=[e("every")],this[ve.FREQUENCIES[this.options.freq]](),this.options.until){this.add(e("until"));var t=this.options.until;this.add(this.dateFormatter(t.getUTCFullYear(),this.language.monthNames[t.getUTCMonth()],t.getUTCDate()))}else this.options.count&&this.add(e("for")).add(this.options.count.toString()).add(this.plural(this.options.count)?e("times"):e("time"));return this.isFullyConvertible()||this.add(e("(~ approximate)")),this.text.join("")},s.prototype.HOURLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("hours"):e("hour"))},s.prototype.MINUTELY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("minutes"):e("minute"))},s.prototype.DAILY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.byweekday&&this.byweekday.isWeekdays?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(this.plural(this.options.interval)?e("days"):e("day")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday?this._byweekday():this.origOptions.byhour&&this._byhour()},s.prototype.WEEKLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()).add(this.plural(this.options.interval)?e("weeks"):e("week")),this.byweekday&&this.byweekday.isWeekdays?this.options.interval===1?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(e("on")).add(e("weekdays")):this.byweekday&&this.byweekday.isEveryDay?this.add(this.plural(this.options.interval)?e("days"):e("day")):(this.options.interval===1&&this.add(e("week")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.origOptions.byhour&&this._byhour())},s.prototype.MONTHLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()).add(e("months")),this.plural(this.options.interval)&&this.add(e("in"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("months"):e("month"))),this.bymonthday?this._bymonthday():this.byweekday&&this.byweekday.isWeekdays?this.add(e("on")).add(e("weekdays")):this.byweekday&&this._byweekday()},s.prototype.YEARLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()),this.add(e("years"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("years"):e("year"))),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.options.byyearday&&this.add(e("on the")).add(this.list(this.options.byyearday,this.nth,e("and"))).add(e("day")),this.options.byweekno&&this.add(e("in")).add(this.plural(this.options.byweekno.length)?e("weeks"):e("week")).add(this.list(this.options.byweekno,void 0,e("and")))},s.prototype._bymonthday=function(){var e=this.gettext;this.byweekday&&this.byweekday.allWeeks?this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext,e("or"))).add(e("the")).add(this.list(this.bymonthday,this.nth,e("or"))):this.add(e("on the")).add(this.list(this.bymonthday,this.nth,e("and")))},s.prototype._byweekday=function(){var e=this.gettext;this.byweekday.allWeeks&&!this.byweekday.isWeekdays&&this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext)),this.byweekday.someWeeks&&(this.byweekday.allWeeks&&this.add(e("and")),this.add(e("on the")).add(this.list(this.byweekday.someWeeks,this.weekdaytext,e("and"))))},s.prototype._byhour=function(){var e=this.gettext;this.add(e("at")).add(this.list(this.origOptions.byhour,void 0,e("and")))},s.prototype._bymonth=function(){this.add(this.list(this.options.bymonth,this.monthtext,this.gettext("and")))},s.prototype.nth=function(e){e=parseInt(e.toString(),10);var t,a=this.gettext;if(e===-1)return a("last");var r=Math.abs(e);switch(r){case 1:case 21:case 31:t=r+a("st");break;case 2:case 22:t=r+a("nd");break;case 3:case 23:t=r+a("rd");break;default:t=r+a("th")}return e<0?t+" "+a("last"):t},s.prototype.monthtext=function(e){return this.language.monthNames[e-1]},s.prototype.weekdaytext=function(e){var t=as(e)?(e+1)%7:e.getJsWeekday();return(e.n?this.nth(e.n)+" ":"")+this.language.dayNames[t]},s.prototype.plural=function(e){return e%100!=1},s.prototype.add=function(e){return this.text.push(" "),this.text.push(e),this},s.prototype.list=function(e,t,a,r){var i=this;r===void 0&&(r=","),Ua(e)||(e=[e]);var n=function(l,d,u){for(var p="",m=0;m<l.length;m++)m!==0&&(m===l.length-1?p+=" "+u+" ":p+=d+" "),p+=l[m];return p};t=t||function(l){return l.toString()};var o=function(l){return t&&t.call(i,l)};return a?n(e.map(o),r,a):e.map(o).join(r+" ")},s}(),Hi=G9;var K9=function(){function s(e){this.done=!0,this.rules=e}return s.prototype.start=function(e){return this.text=e,this.done=!1,this.nextSymbol()},s.prototype.isDone=function(){return this.done&&this.symbol===null},s.prototype.nextSymbol=function(){var e,t;this.symbol=null,this.value=null;do{if(this.done)return!1;var a=void 0;e=null;for(var r in this.rules){a=this.rules[r];var i=a.exec(this.text);i&&(e===null||i[0].length>e[0].length)&&(e=i,t=r)}if(e!=null&&(this.text=this.text.substr(e[0].length),this.text===""&&(this.done=!0)),e==null){this.done=!0,this.symbol=null,this.value=null;return}}while(t==="SKIP");return this.symbol=t,this.value=e,!0},s.prototype.accept=function(e){if(this.symbol===e){if(this.value){var t=this.value;return this.nextSymbol(),t}return this.nextSymbol(),!0}return!1},s.prototype.acceptNumber=function(){return this.accept("number")},s.prototype.expect=function(e){if(this.accept(e))return!0;throw new Error("expected "+e+" but found "+this.symbol)},s}();function Ju(s,e){e===void 0&&(e=vl);var t={},a=new K9(e.tokens);if(!a.start(s))return null;return r(),t;function r(){a.expect("every");var m=a.acceptNumber();if(m&&(t.interval=parseInt(m[0],10)),a.isDone())throw new Error("Unexpected end");switch(a.symbol){case"day(s)":t.freq=ve.DAILY,a.nextSymbol()&&(n(),p());break;case"weekday(s)":t.freq=ve.WEEKLY,t.byweekday=[ve.MO,ve.TU,ve.WE,ve.TH,ve.FR],a.nextSymbol(),n(),p();break;case"week(s)":t.freq=ve.WEEKLY,a.nextSymbol()&&(i(),n(),p());break;case"hour(s)":t.freq=ve.HOURLY,a.nextSymbol()&&(i(),p());break;case"minute(s)":t.freq=ve.MINUTELY,a.nextSymbol()&&(i(),p());break;case"month(s)":t.freq=ve.MONTHLY,a.nextSymbol()&&(i(),p());break;case"year(s)":t.freq=ve.YEARLY,a.nextSymbol()&&(i(),p());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":t.freq=ve.WEEKLY;var f=a.symbol.substr(0,2).toUpperCase();if(t.byweekday=[ve[f]],!a.nextSymbol())return;for(;a.accept("comma");){if(a.isDone())throw new Error("Unexpected end");var h=l();if(!h)throw new Error("Unexpected symbol "+a.symbol+", expected weekday");t.byweekday.push(ve[h]),a.nextSymbol()}n(),u(),p();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(t.freq=ve.YEARLY,t.bymonth=[o()],!a.nextSymbol())return;for(;a.accept("comma");){if(a.isDone())throw new Error("Unexpected end");var k=o();if(!k)throw new Error("Unexpected symbol "+a.symbol+", expected month");t.bymonth.push(k),a.nextSymbol()}i(),p();break;default:throw new Error("Unknown symbol")}}function i(){var m=a.accept("on"),f=a.accept("the");if(!!(m||f))do{var h=d(),k=l(),g=o();if(h)k?(a.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(ve[k].nth(h))):(t.bymonthday||(t.bymonthday=[]),t.bymonthday.push(h),a.accept("day(s)"));else if(k)a.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(ve[k]);else if(a.symbol==="weekday(s)")a.nextSymbol(),t.byweekday||(t.byweekday=[ve.MO,ve.TU,ve.WE,ve.TH,ve.FR]);else if(a.symbol==="week(s)"){a.nextSymbol();var y=a.acceptNumber();if(!y)throw new Error("Unexpected symbol "+a.symbol+", expected week number");for(t.byweekno=[parseInt(y[0],10)];a.accept("comma");){if(y=a.acceptNumber(),!y)throw new Error("Unexpected symbol "+a.symbol+"; expected monthday");t.byweekno.push(parseInt(y[0],10))}}else if(g)a.nextSymbol(),t.bymonth||(t.bymonth=[]),t.bymonth.push(g);else return}while(a.accept("comma")||a.accept("the")||a.accept("on"))}function n(){var m=a.accept("at");if(!!m)do{var f=a.acceptNumber();if(!f)throw new Error("Unexpected symbol "+a.symbol+", expected hour");for(t.byhour=[parseInt(f[0],10)];a.accept("comma");){if(f=a.acceptNumber(),!f)throw new Error("Unexpected symbol "+a.symbol+"; expected hour");t.byhour.push(parseInt(f[0],10))}}while(a.accept("comma")||a.accept("at"))}function o(){switch(a.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function l(){switch(a.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return a.symbol.substr(0,2).toUpperCase();default:return!1}}function d(){switch(a.symbol){case"last":return a.nextSymbol(),-1;case"first":return a.nextSymbol(),1;case"second":return a.nextSymbol(),a.accept("last")?-2:2;case"third":return a.nextSymbol(),a.accept("last")?-3:3;case"nth":var m=parseInt(a.value[1],10);if(m<-366||m>366)throw new Error("Nth out of range: "+m);return a.nextSymbol(),a.accept("last")?-m:m;default:return!1}}function u(){a.accept("on"),a.accept("the");var m=d();if(!!m)for(t.bymonthday=[m],a.nextSymbol();a.accept("comma");){if(m=d(),!m)throw new Error("Unexpected symbol "+a.symbol+"; expected monthday");t.bymonthday.push(m),a.nextSymbol()}}function p(){if(a.symbol==="until"){var m=Date.parse(a.text);if(!m)throw new Error("Cannot parse until date:"+a.text);t.until=new Date(m)}else a.accept("for")&&(t.count=parseInt(a.value[0],10),a.expect("number"))}}var Be;(function(s){s[s.YEARLY=0]="YEARLY",s[s.MONTHLY=1]="MONTHLY",s[s.WEEKLY=2]="WEEKLY",s[s.DAILY=3]="DAILY",s[s.HOURLY=4]="HOURLY",s[s.MINUTELY=5]="MINUTELY",s[s.SECONDLY=6]="SECONDLY"})(Be||(Be={}));function Zu(s){return s<Be.HOURLY}var PW=function(s,e){return e===void 0&&(e=vl),new ve(Ju(s,e)||void 0)},cd=["count","until","interval","byweekday","bymonthday","bymonth"];Hi.IMPLEMENTED=[];Hi.IMPLEMENTED[Be.HOURLY]=cd;Hi.IMPLEMENTED[Be.MINUTELY]=cd;Hi.IMPLEMENTED[Be.DAILY]=["byhour"].concat(cd);Hi.IMPLEMENTED[Be.WEEKLY]=cd;Hi.IMPLEMENTED[Be.MONTHLY]=cd;Hi.IMPLEMENTED[Be.YEARLY]=["byweekno","byyearday"].concat(cd);var MW=function(s,e,t,a){return new Hi(s,e,t,a).toString()},AW=Hi.isFullyConvertible;var dd=function(){function s(e,t,a,r){this.hour=e,this.minute=t,this.second=a,this.millisecond=r||0}return s.prototype.getHours=function(){return this.hour},s.prototype.getMinutes=function(){return this.minute},s.prototype.getSeconds=function(){return this.second},s.prototype.getMilliseconds=function(){return this.millisecond},s.prototype.getTime=function(){return(this.hour*60*60+this.minute*60+this.second)*1e3+this.millisecond},s}();var IW=function(s){ld(e,s);function e(t,a,r,i,n,o,l){var d=s.call(this,i,n,o,l)||this;return d.year=t,d.month=a,d.day=r,d}return e.fromDate=function(t){return new this(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.valueOf()%1e3)},e.prototype.getWeekday=function(){return bn(new Date(this.getTime()))},e.prototype.getTime=function(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond)).getTime()},e.prototype.getDay=function(){return this.day},e.prototype.getMonth=function(){return this.month},e.prototype.getYear=function(){return this.year},e.prototype.addYears=function(t){this.year+=t},e.prototype.addMonths=function(t){if(this.month+=t,this.month>12){var a=Math.floor(this.month/12),r=rr(this.month,12);this.month=r,this.year+=a,this.month===0&&(this.month=12,--this.year)}},e.prototype.addWeekly=function(t,a){a>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-a))+t*7:this.day+=-(this.getWeekday()-a)+t*7,this.fixDay()},e.prototype.addDaily=function(t){this.day+=t,this.fixDay()},e.prototype.addHours=function(t,a,r){for(a&&(this.hour+=Math.floor((23-this.hour)/t)*t);;){this.hour+=t;var i=vk(this.hour,24),n=i.div,o=i.mod;if(n&&(this.hour=o,this.addDaily(n)),rs(r)||Je(r,this.hour))break}},e.prototype.addMinutes=function(t,a,r,i){for(a&&(this.minute+=Math.floor((1439-(this.hour*60+this.minute))/t)*t);;){this.minute+=t;var n=vk(this.minute,60),o=n.div,l=n.mod;if(o&&(this.minute=l,this.addHours(o,!1,r)),(rs(r)||Je(r,this.hour))&&(rs(i)||Je(i,this.minute)))break}},e.prototype.addSeconds=function(t,a,r,i,n){for(a&&(this.second+=Math.floor((86399-(this.hour*3600+this.minute*60+this.second))/t)*t);;){this.second+=t;var o=vk(this.second,60),l=o.div,d=o.mod;if(l&&(this.second=d,this.addMinutes(l,!1,r,i)),(rs(r)||Je(r,this.hour))&&(rs(i)||Je(i,this.minute))&&(rs(n)||Je(n,this.second)))break}},e.prototype.fixDay=function(){if(!(this.day<=28)){var t=ux(this.year,this.month-1)[1];if(!(this.day<=t))for(;this.day>t;){if(this.day-=t,++this.month,this.month===13&&(this.month=1,++this.year,this.year>bk))return;t=ux(this.year,this.month-1)[1]}}},e.prototype.add=function(t,a){var r=t.freq,i=t.interval,n=t.wkst,o=t.byhour,l=t.byminute,d=t.bysecond;switch(r){case Be.YEARLY:return this.addYears(i);case Be.MONTHLY:return this.addMonths(i);case Be.WEEKLY:return this.addWeekly(i,n);case Be.DAILY:return this.addDaily(i);case Be.HOURLY:return this.addHours(i,a,o);case Be.MINUTELY:return this.addMinutes(i,a,o,l);case Be.SECONDLY:return this.addSeconds(i,a,o,l,d)}},e}(dd);function hx(s){for(var e=[],t=Object.keys(s),a=0,r=t;a<r.length;a++){var i=r[a];Je(jW,i)||e.push(i),dx(s[i])&&!wl(s[i])&&e.push(i)}if(e.length)throw new Error("Invalid options: "+e.join(", "));return yr({},s)}function RW(s){var e=yr(yr({},ep),hx(s));if(Ct(e.byeaster)&&(e.freq=ve.YEARLY),!(Ct(e.freq)&&ve.FREQUENCIES[e.freq]))throw new Error("Invalid frequency: ".concat(e.freq," ").concat(s.freq));if(e.dtstart||(e.dtstart=new Date(new Date().setMilliseconds(0))),Ct(e.wkst)?as(e.wkst)||(e.wkst=e.wkst.weekday):e.wkst=ve.MO.weekday,Ct(e.bysetpos)){as(e.bysetpos)&&(e.bysetpos=[e.bysetpos]);for(var t=0;t<e.bysetpos.length;t++){var a=e.bysetpos[t];if(a===0||!(a>=-366&&a<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}}if(!(Boolean(e.byweekno)||Zt(e.byweekno)||Zt(e.byyearday)||Boolean(e.bymonthday)||Zt(e.bymonthday)||Ct(e.byweekday)||Ct(e.byeaster)))switch(e.freq){case ve.YEARLY:e.bymonth||(e.bymonth=e.dtstart.getUTCMonth()+1),e.bymonthday=e.dtstart.getUTCDate();break;case ve.MONTHLY:e.bymonthday=e.dtstart.getUTCDate();break;case ve.WEEKLY:e.byweekday=[bn(e.dtstart)];break}if(Ct(e.bymonth)&&!Ua(e.bymonth)&&(e.bymonth=[e.bymonth]),Ct(e.byyearday)&&!Ua(e.byyearday)&&as(e.byyearday)&&(e.byyearday=[e.byyearday]),!Ct(e.bymonthday))e.bymonthday=[],e.bynmonthday=[];else if(Ua(e.bymonthday)){for(var r=[],i=[],t=0;t<e.bymonthday.length;t++){var a=e.bymonthday[t];a>0?r.push(a):a<0&&i.push(a)}e.bymonthday=r,e.bynmonthday=i}else e.bymonthday<0?(e.bynmonthday=[e.bymonthday],e.bymonthday=[]):(e.bynmonthday=[],e.bymonthday=[e.bymonthday]);if(Ct(e.byweekno)&&!Ua(e.byweekno)&&(e.byweekno=[e.byweekno]),!Ct(e.byweekday))e.bynweekday=null;else if(as(e.byweekday))e.byweekday=[e.byweekday],e.bynweekday=null;else if(cx(e.byweekday))e.byweekday=[pa.fromStr(e.byweekday).weekday],e.bynweekday=null;else if(e.byweekday instanceof pa)!e.byweekday.n||e.freq>ve.MONTHLY?(e.byweekday=[e.byweekday.weekday],e.bynweekday=null):(e.bynweekday=[[e.byweekday.weekday,e.byweekday.n]],e.byweekday=null);else{for(var n=[],o=[],t=0;t<e.byweekday.length;t++){var l=e.byweekday[t];if(as(l)){n.push(l);continue}else if(cx(l)){n.push(pa.fromStr(l).weekday);continue}!l.n||e.freq>ve.MONTHLY?n.push(l.weekday):o.push([l.weekday,l.n])}e.byweekday=Zt(n)?n:null,e.bynweekday=Zt(o)?o:null}return Ct(e.byhour)?as(e.byhour)&&(e.byhour=[e.byhour]):e.byhour=e.freq<ve.HOURLY?[e.dtstart.getUTCHours()]:null,Ct(e.byminute)?as(e.byminute)&&(e.byminute=[e.byminute]):e.byminute=e.freq<ve.MINUTELY?[e.dtstart.getUTCMinutes()]:null,Ct(e.bysecond)?as(e.bysecond)&&(e.bysecond=[e.bysecond]):e.bysecond=e.freq<ve.SECONDLY?[e.dtstart.getUTCSeconds()]:null,{parsedOptions:e}}function FW(s){var e=s.dtstart.getTime()%1e3;if(!Zu(s.freq))return[];var t=[];return s.byhour.forEach(function(a){s.byminute.forEach(function(r){s.bysecond.forEach(function(i){t.push(new dd(a,r,i,e))})})}),t}function tp(s){var e=s.split(`
`).map(Q9).filter(function(t){return t!==null});return yr(yr({},e[0]),e[1])}function ap(s){var e={},t=/DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(s);if(!t)return e;var a=t[1],r=t[2];return a&&(e.tzid=a),e.dtstart=Xu(r),e}function Q9(s){if(s=s.replace(/^\s+|\s+$/,""),!s.length)return null;var e=/^([A-Z]+?)[:;]/.exec(s.toUpperCase());if(!e)return OW(s);var t=e[1];switch(t.toUpperCase()){case"RRULE":case"EXRULE":return OW(s);case"DTSTART":return ap(s);default:throw new Error("Unsupported RFC prop ".concat(t," in ").concat(s))}}function OW(s){var e=s.replace(/^RRULE:/i,""),t=ap(e),a=s.replace(/^(?:RRULE|EXRULE):/i,"").split(";");return a.forEach(function(r){var i=r.split("="),n=i[0],o=i[1];switch(n.toUpperCase()){case"FREQ":t.freq=Be[o.toUpperCase()];break;case"WKST":t.wkst=js[o.toUpperCase()];break;case"COUNT":case"INTERVAL":case"BYSETPOS":case"BYMONTH":case"BYMONTHDAY":case"BYYEARDAY":case"BYWEEKNO":case"BYHOUR":case"BYMINUTE":case"BYSECOND":var l=X9(o),d=n.toLowerCase();t[d]=l;break;case"BYWEEKDAY":case"BYDAY":t.byweekday=J9(o);break;case"DTSTART":case"TZID":var u=ap(s);t.tzid=u.tzid,t.dtstart=u.dtstart;break;case"UNTIL":t.until=Xu(o);break;case"BYEASTER":t.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+n+"'")}}),t}function X9(s){if(s.indexOf(",")!==-1){var e=s.split(",");return e.map(NW)}return NW(s)}function NW(s){return/^[+-]?\d+$/.test(s)?Number(s):s}function J9(s){var e=s.split(",");return e.map(function(t){if(t.length===2)return js[t];var a=t.match(/^([+-]?\d{1,2})([A-Z]{2})$/);if(!a||a.length<3)throw new SyntaxError("Invalid weekday string: ".concat(t));var r=Number(a[1]),i=a[2],n=js[i].weekday;return new pa(n,r)})}var bl=function(){function s(e,t){if(isNaN(e.getTime()))throw new RangeError("Invalid date passed to DateWithZone");this.date=e,this.tzid=t}return Object.defineProperty(s.prototype,"isUTC",{get:function(){return!this.tzid||this.tzid.toUpperCase()==="UTC"},enumerable:!1,configurable:!0}),s.prototype.toString=function(){var e=nd(this.date.getTime(),this.isUTC);return this.isUTC?":".concat(e):";TZID=".concat(this.tzid,":").concat(e)},s.prototype.getTime=function(){return this.date.getTime()},s.prototype.rezonedDate=function(){return this.isUTC?this.date:rW(this.date,this.tzid)},s}();function rp(s){for(var e=[],t="",a=Object.keys(s),r=Object.keys(ep),i=0;i<a.length;i++)if(a[i]!=="tzid"&&!!Je(r,a[i])){var n=a[i].toUpperCase(),o=s[a[i]],l="";if(!(!Ct(o)||Ua(o)&&!o.length)){switch(n){case"FREQ":l=ve.FREQUENCIES[s.freq];break;case"WKST":as(o)?l=new pa(o).toString():l=o.toString();break;case"BYWEEKDAY":n="BYDAY",l=JB(o).map(function(f){return f instanceof pa?f:Ua(f)?new pa(f[0],f[1]):new pa(f)}).toString();break;case"DTSTART":t=Z9(o,s.tzid);break;case"UNTIL":l=nd(o,!s.tzid);break;default:if(Ua(o)){for(var d=[],u=0;u<o.length;u++)d[u]=String(o[u]);l=d.toString()}else l=String(o)}l&&e.push([n,l])}}var p=e.map(function(f){var h=f[0],k=f[1];return"".concat(h,"=").concat(k.toString())}).join(";"),m="";return p!==""&&(m="RRULE:".concat(p)),[t,m].filter(function(f){return!!f}).join(`
`)}function Z9(s,e){return s?"DTSTART"+new bl(new Date(s),e).toString():""}function eK(s,e){return Array.isArray(s)?!Array.isArray(e)||s.length!==e.length?!1:s.every(function(t,a){return t.getTime()===e[a].getTime()}):s instanceof Date?e instanceof Date&&s.getTime()===e.getTime():s===e}var LW=function(){function s(){this.all=!1,this.before=[],this.after=[],this.between=[]}return s.prototype._cacheAdd=function(e,t,a){t&&(t=t instanceof Date?xk(t):px(t)),e==="all"?this.all=t:(a._value=t,this[e].push(a))},s.prototype._cacheGet=function(e,t){var a=!1,r=t?Object.keys(t):[],i=function(u){for(var p=0;p<r.length;p++){var m=r[p];if(!eK(t[m],u[m]))return!0}return!1},n=this[e];if(e==="all")a=this.all;else if(Ua(n))for(var o=0;o<n.length;o++){var l=n[o];if(!(r.length&&i(l))){a=l._value;break}}if(!a&&this.all){for(var d=new Cn(e,t),o=0;o<this.all.length&&d.accept(this.all[o]);o++);a=d.getValue(),this._cacheAdd(e,a,t)}return Ua(a)?px(a):a instanceof Date?xk(a):a},s}();var HW=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],Ke(1,31),!0),Ke(2,28),!0),Ke(3,31),!0),Ke(4,30),!0),Ke(5,31),!0),Ke(6,30),!0),Ke(7,31),!0),Ke(8,31),!0),Ke(9,30),!0),Ke(10,31),!0),Ke(11,30),!0),Ke(12,31),!0),Ke(1,7),!0),BW=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],Ke(1,31),!0),Ke(2,29),!0),Ke(3,31),!0),Ke(4,30),!0),Ke(5,31),!0),Ke(6,30),!0),Ke(7,31),!0),Ke(8,31),!0),Ke(9,30),!0),Ke(10,31),!0),Ke(11,30),!0),Ke(12,31),!0),Ke(1,7),!0),tK=Fs(1,29),aK=Fs(1,30),To=Fs(1,31),sr=Fs(1,32),WW=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],sr,!0),aK,!0),sr,!0),To,!0),sr,!0),To,!0),sr,!0),sr,!0),To,!0),sr,!0),To,!0),sr,!0),sr.slice(0,7),!0),_W=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],sr,!0),tK,!0),sr,!0),To,!0),sr,!0),To,!0),sr,!0),sr,!0),To,!0),sr,!0),To,!0),sr,!0),sr.slice(0,7),!0),rK=Fs(-28,0),sK=Fs(-29,0),Co=Fs(-30,0),ir=Fs(-31,0),VW=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],ir,!0),sK,!0),ir,!0),Co,!0),ir,!0),Co,!0),ir,!0),ir,!0),Co,!0),ir,!0),Co,!0),ir,!0),ir.slice(0,7),!0),UW=ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne(ne([],ir,!0),rK,!0),ir,!0),Co,!0),ir,!0),Co,!0),ir,!0),ir,!0),Co,!0),ir,!0),Co,!0),ir,!0),ir.slice(0,7),!0),$W=[0,31,60,91,121,152,182,213,244,274,305,335,366],YW=[0,31,59,90,120,151,181,212,243,273,304,334,365],gx=function(){for(var s=[],e=0;e<55;e++)s=s.concat(Fs(7));return s}();function zW(s,e){var t=Li(s,1,1),a=id(s)?366:365,r=id(s+1)?366:365,i=Qu(t),n=bn(t),o=yr(yr({yearlen:a,nextyearlen:r,yearordinal:i,yearweekday:n},iK(s)),{wnomask:null});if(rs(e.byweekno))return o;o.wnomask=Ke(0,a+7);var l,d,u=l=rr(7-n+e.wkst,7);u>=4?(u=0,d=o.yearlen+rr(n-e.wkst,7)):d=a-u;for(var p=Math.floor(d/7),m=rr(d,7),f=Math.floor(p+m/4),h=0;h<e.byweekno.length;h++){var k=e.byweekno[h];if(k<0&&(k+=f+1),k>0&&k<=f){var g=void 0;k>1?(g=u+(k-1)*7,u!==l&&(g-=7-l)):g=u;for(var y=0;y<7&&(o.wnomask[g]=1,g++,o.wdaymask[g]!==e.wkst);y++);}}if(Je(e.byweekno,1)){var g=u+f*7;if(u!==l&&(g-=7-l),g<a)for(var h=0;h<7&&(o.wnomask[g]=1,g+=1,o.wdaymask[g]!==e.wkst);h++);}if(u){var w=void 0;if(Je(e.byweekno,-1))w=-1;else{var v=bn(Li(s-1,1,1)),T=rr(7-v.valueOf()+e.wkst,7),x=id(s-1)?366:365,C=void 0;T>=4?(T=0,C=x+rr(v-e.wkst,7)):C=a-u,w=Math.floor(52+rr(C,7)/4)}if(Je(e.byweekno,w))for(var g=0;g<u;g++)o.wnomask[g]=1}return o}function iK(s){var e=id(s)?366:365,t=Li(s,1,1),a=bn(t);return e===365?{mmask:HW,mdaymask:_W,nmdaymask:UW,wdaymask:gx.slice(a),mrange:YW}:{mmask:BW,mdaymask:WW,nmdaymask:VW,wdaymask:gx.slice(a),mrange:$W}}function qW(s,e,t,a,r,i){var n={lastyear:s,lastmonth:e,nwdaymask:[]},o=[];if(i.freq===ve.YEARLY)if(rs(i.bymonth))o=[[0,t]];else for(var l=0;l<i.bymonth.length;l++)e=i.bymonth[l],o.push(a.slice(e-1,e+1));else i.freq===ve.MONTHLY&&(o=[a.slice(e-1,e+1)]);if(rs(o))return n;n.nwdaymask=Ke(0,t);for(var l=0;l<o.length;l++)for(var d=o[l],u=d[0],p=d[1]-1,m=0;m<i.bynweekday.length;m++){var f=void 0,h=i.bynweekday[m],k=h[0],g=h[1];g<0?(f=p+(g+1)*7,f-=rr(r[f]-k,7)):(f=u+(g-1)*7,f+=rr(7-r[f]+k,7)),u<=f&&f<=p&&(n.nwdaymask[f]=1)}return n}function GW(s,e){e===void 0&&(e=0);var t=s%19,a=Math.floor(s/100),r=s%100,i=Math.floor(a/4),n=a%4,o=Math.floor((a+8)/25),l=Math.floor((a-o+1)/3),d=Math.floor(19*t+a-i-l+15)%30,u=Math.floor(r/4),p=r%4,m=Math.floor(32+2*n+2*u-d-p)%7,f=Math.floor((t+11*d+22*m)/451),h=Math.floor((d+m-7*f+114)/31),k=(d+m-7*f+114)%31+1,g=Date.UTC(s,h-1,k+e),y=Date.UTC(s,0,1);return[Math.ceil((g-y)/(1e3*60*60*24))]}var nK=function(){function s(e){this.options=e}return s.prototype.rebuild=function(e,t){var a=this.options;if(e!==this.lastyear&&(this.yearinfo=zW(e,a)),Zt(a.bynweekday)&&(t!==this.lastmonth||e!==this.lastyear)){var r=this.yearinfo,i=r.yearlen,n=r.mrange,o=r.wdaymask;this.monthinfo=qW(e,t,i,n,o,a)}Ct(a.byeaster)&&(this.eastermask=GW(e,a.byeaster))},Object.defineProperty(s.prototype,"lastyear",{get:function(){return this.monthinfo?this.monthinfo.lastyear:null},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"lastmonth",{get:function(){return this.monthinfo?this.monthinfo.lastmonth:null},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"yearlen",{get:function(){return this.yearinfo.yearlen},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"yearordinal",{get:function(){return this.yearinfo.yearordinal},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"mrange",{get:function(){return this.yearinfo.mrange},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"wdaymask",{get:function(){return this.yearinfo.wdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"mmask",{get:function(){return this.yearinfo.mmask},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"wnomask",{get:function(){return this.yearinfo.wnomask},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"nwdaymask",{get:function(){return this.monthinfo?this.monthinfo.nwdaymask:[]},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"nextyearlen",{get:function(){return this.yearinfo.nextyearlen},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"mdaymask",{get:function(){return this.yearinfo.mdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"nmdaymask",{get:function(){return this.yearinfo.nmdaymask},enumerable:!1,configurable:!0}),s.prototype.ydayset=function(){return[Fs(this.yearlen),0,this.yearlen]},s.prototype.mdayset=function(e,t){for(var a=this.mrange[t-1],r=this.mrange[t],i=Ke(null,this.yearlen),n=a;n<r;n++)i[n]=n;return[i,a,r]},s.prototype.wdayset=function(e,t,a){for(var r=Ke(null,this.yearlen+7),i=Qu(Li(e,t,a))-this.yearordinal,n=i,o=0;o<7&&(r[i]=i,++i,this.wdaymask[i]!==this.options.wkst);o++);return[r,n,i]},s.prototype.ddayset=function(e,t,a){var r=Ke(null,this.yearlen),i=Qu(Li(e,t,a))-this.yearordinal;return r[i]=i,[r,i,i+1]},s.prototype.htimeset=function(e,t,a,r){var i=this,n=[];return this.options.byminute.forEach(function(o){n=n.concat(i.mtimeset(e,o,a,r))}),Tn(n),n},s.prototype.mtimeset=function(e,t,a,r){var i=this.options.bysecond.map(function(n){return new dd(e,t,n,r)});return Tn(i),i},s.prototype.stimeset=function(e,t,a,r){return[new dd(e,t,a,r)]},s.prototype.getdayset=function(e){switch(e){case Be.YEARLY:return this.ydayset.bind(this);case Be.MONTHLY:return this.mdayset.bind(this);case Be.WEEKLY:return this.wdayset.bind(this);case Be.DAILY:return this.ddayset.bind(this);default:return this.ddayset.bind(this)}},s.prototype.gettimeset=function(e){switch(e){case Be.HOURLY:return this.htimeset.bind(this);case Be.MINUTELY:return this.mtimeset.bind(this);case Be.SECONDLY:return this.stimeset.bind(this)}},s}(),KW=nK;function QW(s,e,t,a,r,i){for(var n=[],o=0;o<s.length;o++){var l=void 0,d=void 0,u=s[o];u<0?(l=Math.floor(u/e.length),d=rr(u,e.length)):(l=Math.floor((u-1)/e.length),d=rr(u-1,e.length));for(var p=[],m=t;m<a;m++){var f=i[m];!Ct(f)||p.push(f)}var h=void 0;l<0?h=p.slice(l)[0]:h=p[l];var k=e[d],g=Tk(r.yearordinal+h),y=Ck(g,k);Je(n,y)||n.push(y)}return Tn(n),n}function Pk(s,e){var t=e.dtstart,a=e.freq,r=e.interval,i=e.until,n=e.bysetpos,o=e.count;if(o===0||r===0)return xn(s);var l=IW.fromDate(t),d=new KW(e);d.rebuild(l.year,l.month);for(var u=cK(d,l,e);;){var p=d.getdayset(a)(l.year,l.month,l.day),m=p[0],f=p[1],h=p[2],k=lK(m,f,h,d,e);if(Zt(n))for(var g=QW(n,u,f,h,d,m),y=0;y<g.length;y++){var w=g[y];if(i&&w>i)return xn(s);if(w>=t){var v=XW(w,e);if(!s.accept(v)||o&&(--o,!o))return xn(s)}}else for(var y=f;y<h;y++){var T=m[y];if(!!Ct(T))for(var x=Tk(d.yearordinal+T),C=0;C<u.length;C++){var S=u[C],w=Ck(x,S);if(i&&w>i)return xn(s);if(w>=t){var v=XW(w,e);if(!s.accept(v)||o&&(--o,!o))return xn(s)}}}if(e.interval===0||(l.add(e,k),l.year>bk))return xn(s);Zu(a)||(u=d.gettimeset(a)(l.hour,l.minute,l.second,0)),d.rebuild(l.year,l.month)}}function oK(s,e,t){var a=t.bymonth,r=t.byweekno,i=t.byweekday,n=t.byeaster,o=t.bymonthday,l=t.bynmonthday,d=t.byyearday;return Zt(a)&&!Je(a,s.mmask[e])||Zt(r)&&!s.wnomask[e]||Zt(i)&&!Je(i,s.wdaymask[e])||Zt(s.nwdaymask)&&!s.nwdaymask[e]||n!==null&&!Je(s.eastermask,e)||(Zt(o)||Zt(l))&&!Je(o,s.mdaymask[e])&&!Je(l,s.nmdaymask[e])||Zt(d)&&(e<s.yearlen&&!Je(d,e+1)&&!Je(d,-s.yearlen+e)||e>=s.yearlen&&!Je(d,e+1-s.yearlen)&&!Je(d,-s.nextyearlen+e-s.yearlen))}function XW(s,e){return new bl(s,e.tzid).rezonedDate()}function xn(s){return s.getValue()}function lK(s,e,t,a,r){for(var i=!1,n=e;n<t;n++){var o=s[n];i=oK(a,o,r),i&&(s[o]=null)}return i}function cK(s,e,t){var a=t.freq,r=t.byhour,i=t.byminute,n=t.bysecond;return Zu(a)?FW(t):a>=ve.HOURLY&&Zt(r)&&!Je(r,e.hour)||a>=ve.MINUTELY&&Zt(i)&&!Je(i,e.minute)||a>=ve.SECONDLY&&Zt(n)&&!Je(n,e.second)?[]:s.gettimeset(a)(e.hour,e.minute,e.second,e.millisecond)}var js={MO:new pa(0),TU:new pa(1),WE:new pa(2),TH:new pa(3),FR:new pa(4),SA:new pa(5),SU:new pa(6)},ep={freq:Be.YEARLY,dtstart:null,interval:1,wkst:js.MO,count:null,until:null,tzid:null,bysetpos:null,bymonth:null,bymonthday:null,bynmonthday:null,byyearday:null,byweekno:null,byweekday:null,bynweekday:null,byhour:null,byminute:null,bysecond:null,byeaster:null},jW=Object.keys(ep),ve=function(){function s(e,t){e===void 0&&(e={}),t===void 0&&(t=!1),this._cache=t?null:new LW,this.origOptions=hx(e);var a=RW(e).parsedOptions;this.options=a}return s.parseText=function(e,t){return Ju(e,t)},s.fromText=function(e,t){return PW(e,t)},s.fromString=function(e){return new s(s.parseString(e)||void 0)},s.prototype._iter=function(e){return Pk(e,this.options)},s.prototype._cacheGet=function(e,t){return this._cache?this._cache._cacheGet(e,t):!1},s.prototype._cacheAdd=function(e,t,a){if(!!this._cache)return this._cache._cacheAdd(e,t,a)},s.prototype.all=function(e){if(e)return this._iter(new fx("all",{},e));var t=this._cacheGet("all");return t===!1&&(t=this._iter(new Cn("all",{})),this._cacheAdd("all",t)),t},s.prototype.between=function(e,t,a,r){if(a===void 0&&(a=!1),!wl(e)||!wl(t))throw new Error("Invalid date passed in to RRule.between");var i={before:t,after:e,inc:a};if(r)return this._iter(new fx("between",i,r));var n=this._cacheGet("between",i);return n===!1&&(n=this._iter(new Cn("between",i)),this._cacheAdd("between",n,i)),n},s.prototype.before=function(e,t){if(t===void 0&&(t=!1),!wl(e))throw new Error("Invalid date passed in to RRule.before");var a={dt:e,inc:t},r=this._cacheGet("before",a);return r===!1&&(r=this._iter(new Cn("before",a)),this._cacheAdd("before",r,a)),r},s.prototype.after=function(e,t){if(t===void 0&&(t=!1),!wl(e))throw new Error("Invalid date passed in to RRule.after");var a={dt:e,inc:t},r=this._cacheGet("after",a);return r===!1&&(r=this._iter(new Cn("after",a)),this._cacheAdd("after",r,a)),r},s.prototype.count=function(){return this.all().length},s.prototype.toString=function(){return rp(this.origOptions)},s.prototype.toText=function(e,t,a){return MW(this,e,t,a)},s.prototype.isFullyConvertibleToText=function(){return AW(this)},s.prototype.clone=function(){return new s(this.origOptions)},s.FREQUENCIES=["YEARLY","MONTHLY","WEEKLY","DAILY","HOURLY","MINUTELY","SECONDLY"],s.YEARLY=Be.YEARLY,s.MONTHLY=Be.MONTHLY,s.WEEKLY=Be.WEEKLY,s.DAILY=Be.DAILY,s.HOURLY=Be.HOURLY,s.MINUTELY=Be.MINUTELY,s.SECONDLY=Be.SECONDLY,s.MO=js.MO,s.TU=js.TU,s.WE=js.WE,s.TH=js.TH,s.FR=js.FR,s.SA=js.SA,s.SU=js.SU,s.parseString=tp,s.optionsToString=rp,s}();function JW(s,e,t,a,r,i){var n={},o=s.accept;function l(m,f){t.forEach(function(h){h.between(m,f,!0).forEach(function(k){n[Number(k)]=!0})})}r.forEach(function(m){var f=new bl(m,i).rezonedDate();n[Number(f)]=!0}),s.accept=function(m){var f=Number(m);return isNaN(f)?o.call(this,m):!n[f]&&(l(new Date(f-1),new Date(f+1)),!n[f])?(n[f]=!0,o.call(this,m)):!0},s.method==="between"&&(l(s.args.after,s.args.before),s.accept=function(m){var f=Number(m);return n[f]?!0:(n[f]=!0,o.call(this,m))});for(var d=0;d<a.length;d++){var u=new bl(a[d],i).rezonedDate();if(!s.accept(new Date(u.getTime())))break}e.forEach(function(m){Pk(s,m.options)});var p=s._result;switch(Tn(p),s.method){case"all":case"between":return p;case"before":return p.length&&p[p.length-1]||null;case"after":default:return p.length&&p[0]||null}}var ZW={dtstart:null,cache:!1,unfold:!1,forceset:!1,compatible:!1,tzid:null};function dK(s,e){var t=[],a=[],r=[],i=[],n=ap(s),o=n.dtstart,l=n.tzid,d=hK(s,e.unfold);return d.forEach(function(u){var p;if(!!u){var m=fK(u),f=m.name,h=m.parms,k=m.value;switch(f.toUpperCase()){case"RRULE":if(h.length)throw new Error("unsupported RRULE parm: ".concat(h.join(",")));t.push(tp(u));break;case"RDATE":var g=(p=/RDATE(?:;TZID=([^:=]+))?/i.exec(u))!==null&&p!==void 0?p:[],y=g[1];y&&!l&&(l=y),a=a.concat(e_(k,h));break;case"EXRULE":if(h.length)throw new Error("unsupported EXRULE parm: ".concat(h.join(",")));r.push(tp(k));break;case"EXDATE":i=i.concat(e_(k,h));break;case"DTSTART":break;default:throw new Error("unsupported property: "+f)}}}),{dtstart:o,tzid:l,rrulevals:t,rdatevals:a,exrulevals:r,exdatevals:i}}function uK(s,e){var t=dK(s,e),a=t.rrulevals,r=t.rdatevals,i=t.exrulevals,n=t.exdatevals,o=t.dtstart,l=t.tzid,d=e.cache===!1;if(e.compatible&&(e.forceset=!0,e.unfold=!0),e.forceset||a.length>1||r.length||i.length||n.length){var u=new yx(d);return u.dtstart(o),u.tzid(l||void 0),a.forEach(function(m){u.rrule(new ve(kx(m,o,l),d))}),r.forEach(function(m){u.rdate(m)}),i.forEach(function(m){u.exrule(new ve(kx(m,o,l),d))}),n.forEach(function(m){u.exdate(m)}),e.compatible&&e.dtstart&&u.rdate(o),u}var p=a[0]||{};return new ve(kx(p,p.dtstart||e.dtstart||o,p.tzid||e.tzid||l),d)}function ud(s,e){return e===void 0&&(e={}),uK(s,pK(e))}function kx(s,e,t){return yr(yr({},s),{dtstart:e,tzid:t})}function pK(s){var e=[],t=Object.keys(s),a=Object.keys(ZW);if(t.forEach(function(r){Je(a,r)||e.push(r)}),e.length)throw new Error("Invalid options: "+e.join(", "));return yr(yr({},ZW),s)}function mK(s){if(s.indexOf(":")===-1)return{name:"RRULE",value:s};var e=ZB(s,":",1),t=e[0],a=e[1];return{name:t,value:a}}function fK(s){var e=mK(s),t=e.name,a=e.value,r=t.split(";");if(!r)throw new Error("empty property name");return{name:r[0].toUpperCase(),parms:r.slice(1),value:a}}function hK(s,e){if(e===void 0&&(e=!1),s=s&&s.trim(),!s)throw new Error("Invalid empty string");if(!e)return s.split(/\s/);for(var t=s.split(`
`),a=0;a<t.length;){var r=t[a]=t[a].replace(/\s+$/g,"");r?a>0&&r[0]===" "?(t[a-1]+=r.slice(1),t.splice(a,1)):a+=1:t.splice(a,1)}return t}function gK(s){s.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function e_(s,e){return gK(e),s.split(",").map(function(t){return Xu(t)})}function t_(s){var e=this;return function(t){if(t!==void 0&&(e["_".concat(s)]=t),e["_".concat(s)]!==void 0)return e["_".concat(s)];for(var a=0;a<e._rrule.length;a++){var r=e._rrule[a].origOptions[s];if(r)return r}}}var yx=function(s){ld(e,s);function e(t){t===void 0&&(t=!1);var a=s.call(this,{},t)||this;return a.dtstart=t_.apply(a,["dtstart"]),a.tzid=t_.apply(a,["tzid"]),a._rrule=[],a._rdate=[],a._exrule=[],a._exdate=[],a}return e.prototype._iter=function(t){return JW(t,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},e.prototype.rrule=function(t){a_(t,this._rrule)},e.prototype.exrule=function(t){a_(t,this._exrule)},e.prototype.rdate=function(t){r_(t,this._rdate)},e.prototype.exdate=function(t){r_(t,this._exdate)},e.prototype.rrules=function(){return this._rrule.map(function(t){return ud(t.toString())})},e.prototype.exrules=function(){return this._exrule.map(function(t){return ud(t.toString())})},e.prototype.rdates=function(){return this._rdate.map(function(t){return new Date(t.getTime())})},e.prototype.exdates=function(){return this._exdate.map(function(t){return new Date(t.getTime())})},e.prototype.valueOf=function(){var t=[];return!this._rrule.length&&this._dtstart&&(t=t.concat(rp({dtstart:this._dtstart}))),this._rrule.forEach(function(a){t=t.concat(a.toString().split(`
`))}),this._exrule.forEach(function(a){t=t.concat(a.toString().split(`
`).map(function(r){return r.replace(/^RRULE:/,"EXRULE:")}).filter(function(r){return!/^DTSTART/.test(r)}))}),this._rdate.length&&t.push(s_("RDATE",this._rdate,this.tzid())),this._exdate.length&&t.push(s_("EXDATE",this._exdate,this.tzid())),t},e.prototype.toString=function(){return this.valueOf().join(`
`)},e.prototype.clone=function(){var t=new e(!!this._cache);return this._rrule.forEach(function(a){return t.rrule(a.clone())}),this._exrule.forEach(function(a){return t.exrule(a.clone())}),this._rdate.forEach(function(a){return t.rdate(new Date(a.getTime()))}),this._exdate.forEach(function(a){return t.exdate(new Date(a.getTime()))}),t},e}(ve);function a_(s,e){if(!(s instanceof ve))throw new TypeError(String(s)+" is not RRule instance");Je(e.map(String),String(s))||e.push(s)}function r_(s,e){if(!(s instanceof Date))throw new TypeError(String(s)+" is not Date instance");Je(e.map(Number),Number(s))||(e.push(s),Tn(e))}function s_(s,e,t){var a=!t||t.toUpperCase()==="UTC",r=a?"".concat(s,":"):"".concat(s,";TZID=").concat(t,":"),i=e.map(function(n){return nd(n.valueOf(),a)}).join(",");return"".concat(r).concat(i)}Wo();Pm();xa();Wo();var i_=A(require("obsidian")),Mk=class{constructor(e){this.configCache=new Map;this.lastModifiedCache=new Map;this.fileMetadataCache=new Map;this.fileMetadataTimestampCache=new Map;this.enhancedMetadataCache=new Map;this.enhancedMetadataTimestampCache=new Map;var t,a,r;this.vault=e.vault,this.metadataCache=e.metadataCache,this.configFileName=e.configFileName,this.searchRecursively=e.searchRecursively,this.metadataKey=e.metadataKey,this.pathMappings=e.pathMappings,this.metadataMappings=e.metadataMappings||[],this.defaultProjectNaming=e.defaultProjectNaming||{strategy:"filename",stripExtension:!0,enabled:!1},this.enhancedProjectEnabled=(t=e.enhancedProjectEnabled)!=null?t:!0,this.metadataConfigEnabled=(a=e.metadataConfigEnabled)!=null?a:!1,this.configFileEnabled=(r=e.configFileEnabled)!=null?r:!1,this.detectionMethods=e.detectionMethods||[]}isEnhancedProjectEnabled(){return this.enhancedProjectEnabled}setEnhancedProjectEnabled(e){this.enhancedProjectEnabled=e,e||this.clearCache()}async getProjectConfig(e){if(!this.enhancedProjectEnabled)return null;try{let t=await this.findProjectConfigFile(e);if(!t)return null;let a=t.path,r=t.stat.mtime;if(this.configCache.has(a)&&this.lastModifiedCache.get(a)===r)return this.configCache.get(a)||null;let i=await this.vault.read(t),n=this.metadataCache.getFileCache(t),o={};(n==null?void 0:n.frontmatter)&&(o={...n.frontmatter});let l=this.parseConfigContent(i);return o={...o,...l},this.configCache.set(a,o),this.lastModifiedCache.set(a,r),o}catch(t){return console.warn(`Failed to read project config for ${e}:`,t),null}}getFileMetadata(e){if(!this.enhancedProjectEnabled)return null;try{let t=this.vault.getFileByPath(e);if(!t||!("stat"in t))return null;let a=t.stat.mtime;if(this.fileMetadataTimestampCache.get(e)===a&&this.fileMetadataCache.has(e))return this.fileMetadataCache.get(e)||null;let i=this.metadataCache.getFileCache(t),n=(i==null?void 0:i.frontmatter)||{};return this.fileMetadataCache.set(e,n),this.fileMetadataTimestampCache.set(e,a),n}catch(t){return console.warn(`Failed to get file metadata for ${e}:`,t),null}}normalizeProjectPath(e){if(!e)return"";let t=e.replace(/\\/g,"/");return t=t.replace(/\/+/g,"/"),t=t.replace(/^\/|\/$/g,""),t}async determineTgProject(e){if(!!this.enhancedProjectEnabled){for(let t of this.pathMappings)if(!!t.enabled&&this.matchesPathPattern(e,t.pathPattern)){let a=this.normalizeProjectPath(t.projectName);return{type:"path",name:a,source:t.pathPattern,readonly:!0}}if(this.detectionMethods&&this.detectionMethods.length>0){let t=this.vault.getFileByPath(e);if(t&&t instanceof i_.TFile){let a=this.metadataCache.getFileCache(t),r=this.getFileMetadata(e);for(let i of this.detectionMethods)if(!!i.enabled)switch(i.type){case"metadata":if(r&&r[i.propertyKey])return{type:"metadata",name:String(r[i.propertyKey]),source:i.propertyKey,readonly:!0};break;case"tag":if(a==null?void 0:a.tags){let n=i.propertyKey.startsWith("#")?i.propertyKey:`#${i.propertyKey}`;if(a.tags.some(l=>l.tag===n)){if(r==null?void 0:r.title)return{type:"metadata",name:String(r.title),source:"title (via tag)",readonly:!0};if(r==null?void 0:r.name)return{type:"metadata",name:String(r.name),source:"name (via tag)",readonly:!0};let d=(e.split("/").pop()||e).replace(/\.md$/i,"");return{type:"metadata",name:d,source:`tag:${n}`,readonly:!0}}}break;case"link":if(a==null?void 0:a.links)for(let n of a.links){let o=n.link;if(i.linkFilter){if(o.includes(i.linkFilter)){if(r==null?void 0:r.title)return{type:"metadata",name:String(r.title),source:"title (via link)",readonly:!0};if(r==null?void 0:r.name)return{type:"metadata",name:String(r.name),source:"name (via link)",readonly:!0};let d=(e.split("/").pop()||e).replace(/\.md$/i,"");return{type:"metadata",name:d,source:`link:${o}`,readonly:!0}}}else if(i.propertyKey&&r&&r[i.propertyKey]&&String(r[i.propertyKey]).includes(`[[${o}]]`)){if(r==null?void 0:r.title)return{type:"metadata",name:String(r.title),source:"title (via link)",readonly:!0};if(r==null?void 0:r.name)return{type:"metadata",name:String(r.name),source:"name (via link)",readonly:!0};let u=(e.split("/").pop()||e).replace(/\.md$/i,"");return{type:"metadata",name:u,source:`link:${o}`,readonly:!0}}}break}}}if(this.metadataConfigEnabled){let t=this.getFileMetadata(e);if(t&&t[this.metadataKey]){let a=t[this.metadataKey];if(typeof a=="string"&&a.trim())return{type:"metadata",name:a.trim(),source:this.metadataKey,readonly:!0}}}if(this.configFileEnabled){let t=await this.getProjectConfig(e);if(t&&t.project){let a=t.project;if(typeof a=="string"&&a.trim())return{type:"config",name:a.trim(),source:this.configFileName,readonly:!0}}}if(this.defaultProjectNaming.enabled){let t=this.generateDefaultProjectName(e);if(t){let a=this.normalizeProjectPath(t);return{type:"default",name:a,source:this.defaultProjectNaming.strategy,readonly:!0}}}}}async getEnhancedMetadata(e){if(!this.enhancedProjectEnabled)return{};try{let t=this.vault.getFileByPath(e);if(!t||!("stat"in t))return{};let a=t.stat.mtime,r=await this.findProjectConfigFile(e),i=r?r.stat.mtime:0,n=`${a}_${i}`;if(this.enhancedMetadataTimestampCache.get(e)===n&&this.enhancedMetadataCache.has(e))return this.enhancedMetadataCache.get(e)||{};let l=this.getFileMetadata(e)||{},u={...await this.getProjectConfig(e)||{},...l};return u=this.applyMetadataMappings(u),this.enhancedMetadataCache.set(e,u),this.enhancedMetadataTimestampCache.set(e,n),u}catch(t){return console.warn(`Failed to get enhanced metadata for ${e}:`,t),{}}}clearCache(e){if(e){let t=this.findProjectConfigFileSync(e);t&&(this.configCache.delete(t.path),this.lastModifiedCache.delete(t.path)),this.fileMetadataCache.delete(e),this.fileMetadataTimestampCache.delete(e),this.enhancedMetadataCache.delete(e),this.enhancedMetadataTimestampCache.delete(e)}else this.configCache.clear(),this.lastModifiedCache.clear(),this.fileMetadataCache.clear(),this.fileMetadataTimestampCache.clear(),this.enhancedMetadataCache.clear(),this.enhancedMetadataTimestampCache.clear()}async findProjectConfigFile(e){if(!this.enhancedProjectEnabled)return null;let t=this.vault.getFileByPath(e);if(!t)return null;let a=t.parent;for(;a;){let r=a.children.find(i=>i&&i.name===this.configFileName&&"stat"in i);if(r)return r;if(!this.searchRecursively)break;a=a.parent}return null}findProjectConfigFileSync(e){if(!this.enhancedProjectEnabled)return null;let t=this.vault.getFileByPath(e);if(!t)return null;let a=t.parent;for(;a;){let r=a.children.find(i=>i&&i.name===this.configFileName&&"stat"in i);if(r)return r;if(!this.searchRecursively)break;a=a.parent}return null}parseConfigContent(e){let t={},a=e.split(`
`);for(let r of a){let i=r.trim();if(!i||i.startsWith("#")||i.startsWith("//"))continue;let n=i.indexOf(":");if(n>0){let o=i.substring(0,n).trim(),l=i.substring(n+1).trim();if(o&&l){let d=l.replace(/^["']|["']$/g,"");t[o]=d}}}return t}matchesPathPattern(e,t){let a=e.replace(/\\/g,"/"),r=t.replace(/\\/g,"/");if(t.includes("*")){let i=t.replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${i}$`,"i").test(a)}return a.includes(r)}applyMetadataMappings(e){let t={...e};for(let a of this.metadataMappings){if(!a.enabled)continue;let r=e[a.sourceKey];r!==void 0&&(t[a.targetKey]=this.convertMetadataValue(a.targetKey,r))}return t}convertMetadataValue(e,t){let a=["due","dueDate","deadline","start","startDate","started","scheduled","scheduledDate","scheduled_for","completed","completedDate","finished","created","createdDate","created_at"],r=["priority","urgency","importance"],i=a.some(o=>e.toLowerCase().includes(o.toLowerCase())),n=r.some(o=>e.toLowerCase().includes(o.toLowerCase()));if(i&&typeof t=="string"){if(/^\d{4}-\d{2}-\d{2}/.test(t)){let{parseLocalDate:o}=($s(),ij),l=o(t);return l!==void 0?l:t}}else if(n&&typeof t=="string"){let o={highest:5,urgent:5,critical:5,high:4,important:4,medium:3,normal:3,moderate:3,low:2,minor:2,lowest:1,trivial:1},l=parseInt(t,10);if(!isNaN(l))return l;let d=o[t.toLowerCase()];if(d!==void 0)return d}return t}applyMappingsToMetadata(e){return this.applyMetadataMappings(e)}generateDefaultProjectName(e){if(!this.enhancedProjectEnabled||!this.defaultProjectNaming.enabled)return null;switch(this.defaultProjectNaming.strategy){case"filename":{let t=e.split("/").pop()||"";return this.defaultProjectNaming.stripExtension?t.replace(/\.[^/.]+$/,""):t}case"foldername":{let a=e.replace(/\\/g,"/").split("/");if(a.length>1){let r=a.findIndex(i=>i.toLowerCase()==="projects"||i.toLowerCase()==="project");return r>=0&&r<a.length-2?a.slice(r+1,a.length-1).join("/"):a[a.length-2]||""}return""}case"metadata":{let t=this.defaultProjectNaming.metadataKey;if(!t)return null;let a=this.getFileMetadata(e);if(a&&a[t]){let r=a[t];return typeof r=="string"?r.trim():String(r)}return null}default:return null}}updateOptions(e){e.configFileName!==void 0&&(this.configFileName=e.configFileName),e.searchRecursively!==void 0&&(this.searchRecursively=e.searchRecursively),e.metadataKey!==void 0&&(this.metadataKey=e.metadataKey),e.pathMappings!==void 0&&(this.pathMappings=e.pathMappings),e.metadataMappings!==void 0&&(this.metadataMappings=e.metadataMappings),e.defaultProjectNaming!==void 0&&(this.defaultProjectNaming=e.defaultProjectNaming),e.enhancedProjectEnabled!==void 0&&this.setEnhancedProjectEnabled(e.enhancedProjectEnabled),e.metadataConfigEnabled!==void 0&&(this.metadataConfigEnabled=e.metadataConfigEnabled),e.configFileEnabled!==void 0&&(this.configFileEnabled=e.configFileEnabled),this.clearCache()}getWorkerConfig(){return{pathMappings:this.pathMappings,metadataMappings:this.metadataMappings,defaultProjectNaming:this.defaultProjectNaming,metadataKey:this.metadataKey}}async getProjectConfigData(e){return await this.getProjectConfig(e)}getCacheStats(){let e=Array.from(this.configCache.values()).map(i=>JSON.stringify(i).length).reduce((i,n)=>i+n,0),t=Array.from(this.fileMetadataCache.values()).map(i=>JSON.stringify(i).length).reduce((i,n)=>i+n,0),a=Array.from(this.enhancedMetadataCache.values()).map(i=>JSON.stringify(i).length).reduce((i,n)=>i+n,0),r=e+t+a;return{configCache:{size:this.configCache.size,keys:Array.from(this.configCache.keys())},fileMetadataCache:{size:this.fileMetadataCache.size},enhancedMetadataCache:{size:this.enhancedMetadataCache.size},totalMemoryUsage:{estimatedBytes:r}}}async clearStaleEntries(){let e=0;for(let[t,a]of this.fileMetadataTimestampCache.entries()){let r=this.vault.getFileByPath(t);(!r||!("stat"in r)||r.stat.mtime!==a)&&(this.fileMetadataCache.delete(t),this.fileMetadataTimestampCache.delete(t),this.enhancedMetadataCache.delete(t),this.enhancedMetadataTimestampCache.delete(t),e++)}return e}};var wx=class{constructor(e,t,a){this.fileCache=new Map;this.directoryCache=new Map;this.pendingUpdates=new Set;this.BATCH_DELAY=100;this.stats={totalFiles:0,cachedFiles:0,directoryCacheHits:0,configCacheHits:0,lastUpdateTime:0};this.vault=e,this.metadataCache=t,this.projectConfigManager=a}async getProjectData(e){if(!this.projectConfigManager.isEnhancedProjectEnabled())return null;let t=this.fileCache.get(e);return t&&this.isCacheValid(e,t)?t:await this.computeAndCacheProjectData(e)}async getBatchProjectData(e){let t=new Map;if(!this.projectConfigManager.isEnhancedProjectEnabled())return t;let a=[],r=[];for(let i of e){let n=this.fileCache.get(i);n&&this.isCacheValid(i,n)?(t.set(i,n),r.push(i)):a.push(i)}if(this.stats.configCacheHits+=r.length,a.length>0){let i=this.groupByDirectory(a);for(let[n,o]of i){let l=await this.getOrCreateDirectoryCache(n);for(let d of o){let u=await this.computeProjectDataWithDirectoryCache(d,l);u&&t.set(d,u)}}}return this.stats.totalFiles=e.length,this.stats.cachedFiles=r.length,this.stats.lastUpdateTime=Date.now(),t}async computeProjectDataWithDirectoryCache(e,t){var a;try{let r=await this.projectConfigManager.determineTgProject(e),i={},n=this.projectConfigManager.getFileMetadata(e)||{},l={...t.configData||{},...n};i=this.projectConfigManager.applyMappingsToMetadata(l);let d={tgProject:r,enhancedMetadata:i,timestamp:Date.now(),configSource:(a=t.configFile)==null?void 0:a.path};return this.fileCache.set(e,d),t.paths.add(e),d}catch(r){return console.warn(`Failed to compute project data for ${e}:`,r),null}}async getOrCreateDirectoryCache(e){let t=this.directoryCache.get(e);if(t)if(t.configFile){if(t.configFile.stat.mtime===t.configTimestamp)return this.stats.directoryCacheHits++,t}else return t;t={configTimestamp:0,paths:new Set};let a=await this.findConfigFileInDirectory(e);if(a){t.configFile=a,t.configTimestamp=a.stat.mtime;try{let r=await this.vault.read(a),i=this.metadataCache.getFileCache(a),n={};(i==null?void 0:i.frontmatter)&&(n={...i.frontmatter});let o=this.parseConfigContent(r);n={...n,...o},t.configData=n}catch(r){console.warn(`Failed to read config file ${a.path}:`,r)}}return this.directoryCache.set(e,t),t}async findConfigFileInDirectory(e){let t=this.vault.getFileByPath(e);if(!t||!("children"in t))return null;let a="task-genius.config.md";return t.children.find(i=>i&&i.name===a&&"stat"in i)||null}groupByDirectory(e){let t=new Map;for(let a of e){let r=this.getDirectoryPath(a),i=t.get(r)||[];i.push(a),t.set(r,i)}return t}getDirectoryPath(e){let t=e.lastIndexOf("/");return t>0?e.substring(0,t):""}isCacheValid(e,t){let a=this.vault.getAbstractFileByPath(e);if(!a||!("stat"in a)||a.stat.mtime>t.timestamp)return!1;if(t.configSource){let i=this.vault.getAbstractFileByPath(t.configSource);if(i&&"stat"in i){let n=i.stat.mtime,o=this.getDirectoryPath(e),l=this.directoryCache.get(o);if(l&&n>l.configTimestamp)return!1}}return!0}async computeAndCacheProjectData(e){let t=this.getDirectoryPath(e),a=await this.getOrCreateDirectoryCache(t);return await this.computeProjectDataWithDirectoryCache(e,a)}parseConfigContent(e){let t={},a=e.split(`
`);for(let r of a){let i=r.trim();if(!i||i.startsWith("#")||i.startsWith("//"))continue;let n=i.indexOf(":");if(n>0){let o=i.substring(0,n).trim(),l=i.substring(n+1).trim();if(o&&l){let d=l.replace(/^["']|["']$/g,"");t[o]=d}}}return t}clearCache(e){if(e){this.fileCache.delete(e);let t=this.getDirectoryPath(e),a=this.directoryCache.get(t);a&&a.paths.delete(e)}else this.fileCache.clear(),this.directoryCache.clear()}clearDirectoryCache(e){let t=this.directoryCache.get(e);if(t){for(let a of t.paths)this.fileCache.delete(a);this.directoryCache.delete(e)}}getStats(){return{...this.stats}}scheduleBatchUpdate(e){for(let t of e)this.pendingUpdates.add(t);this.batchUpdateTimer&&clearTimeout(this.batchUpdateTimer),this.batchUpdateTimer=setTimeout(()=>{this.processBatchUpdates()},this.BATCH_DELAY)}async processBatchUpdates(){if(this.pendingUpdates.size===0)return;let e=Array.from(this.pendingUpdates);this.pendingUpdates.clear();for(let t of e)this.clearCache(t);await this.getBatchProjectData(e)}onEnhancedProjectSettingChange(e){e||this.clearCache()}async onFileModified(e){if(this.clearCache(e),e.endsWith(".config.md")||e.includes("task-genius")){let t=this.getDirectoryPath(e);this.clearDirectoryCache(t)}this.scheduleBatchUpdate([e])}onFileDeleted(e){if(this.clearCache(e),e.endsWith(".config.md")||e.includes("task-genius")){let t=this.getDirectoryPath(e);this.clearDirectoryCache(t)}}async onFileCreated(e){if(e.endsWith(".config.md")||e.includes("task-genius")){let t=this.getDirectoryPath(e);this.clearDirectoryCache(t)}await this.getProjectData(e)}async onFileRenamed(e,t){this.clearCache(e);let a=this.getDirectoryPath(e),r=this.getDirectoryPath(t);(e.endsWith(".config.md")||e.includes("task-genius"))&&this.clearDirectoryCache(a),(t.endsWith(".config.md")||t.includes("task-genius"))&&this.clearDirectoryCache(r),await this.getProjectData(t)}async refreshStaleEntries(){let e=[];for(let[t,a]of this.fileCache.entries())this.isCacheValid(t,a)||e.push(t);e.length>0&&(""+e.length,await this.getBatchProjectData(e))}async preloadRecentFiles(e){let t=e.filter(a=>!this.fileCache.has(a));t.length>0&&(""+t.length,await this.getBatchProjectData(t))}async setProjectData(e,t){this.fileCache.set(e,t);let a=this.getDirectoryPath(e),r=this.directoryCache.get(a);r&&r.paths.add(e)}};function vx(){return zu('var l=Object.defineProperty;var g=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;var f=(a,e,t)=>e in a?l(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,c=(a,e)=>{for(var t in e||(e={}))m.call(e,t)&&f(a,t,e[t]);if(g)for(var t of g(e))y.call(e,t)&&f(a,t,e[t]);return a};var n=null;function p(a){if(!n)throw new Error("Worker not configured");let{filePath:e,fileMetadata:t,configData:r}=a,s=h(e,t,r),i=D(c(c({},r),t));return{filePath:e,tgProject:s,enhancedMetadata:i,timestamp:Date.now()}}function P(a){if(!n)throw new Error("Worker not configured");let e=[];for(let t of a)try{let r=p({type:"computeProjectData",requestId:"",filePath:t.filePath,fileMetadata:t.fileMetadata,configData:t.configData});e.push(r)}catch(r){console.warn(`Failed to process project data for ${t.filePath}:`,r),e.push({filePath:t.filePath,tgProject:void 0,enhancedMetadata:{},timestamp:Date.now(),error:r instanceof Error?r.message:String(r)})}return e}function h(a,e,t){if(!!n){for(let r of n.pathMappings)if(!!r.enabled&&j(a,r.pathPattern))return{type:"path",name:r.projectName,source:r.pathPattern,readonly:!0};if(e&&e[n.metadataKey]){let r=e[n.metadataKey];if(typeof r=="string"&&r.trim())return{type:"metadata",name:r.trim(),source:n.metadataKey,readonly:!0}}if(t&&t.project){let r=t.project;if(typeof r=="string"&&r.trim())return{type:"config",name:r.trim(),source:"project-config",readonly:!0}}if(n.defaultProjectNaming.enabled){let r=M(a,e);if(r)return{type:"default",name:r,source:n.defaultProjectNaming.strategy,readonly:!0}}}}function j(a,e){let t=a.replace(/\\\\/g,"/"),r=e.replace(/\\\\/g,"/");if(e.includes("*")){let s=e.replace(/\\*/g,".*").replace(/\\?/g,".");return new RegExp(`^${s}$`,"i").test(t)}return t.includes(r)}function M(a,e){if(!n||!n.defaultProjectNaming.enabled)return null;switch(n.defaultProjectNaming.strategy){case"filename":{let t=a.split("/").pop()||"";return n.defaultProjectNaming.stripExtension?t.replace(/\\.[^/.]+$/,""):t}case"foldername":{let t=a.split("/");return t.length>1&&t[t.length-2]||""}case"metadata":{let t=n.defaultProjectNaming.metadataKey;if(!t)return null;if(e&&e[t]){let r=e[t];return typeof r=="string"?r.trim():String(r)}return null}default:return null}}function D(a){if(!n)return a;let e=c({},a);for(let t of n.metadataMappings){if(!t.enabled)continue;let r=a[t.sourceKey];r!==void 0&&(e[t.targetKey]=w(t.targetKey,r))}return e}function w(a,e){let t=["due","dueDate","deadline","start","startDate","started","scheduled","scheduledDate","scheduled_for","completed","completedDate","finished","created","createdDate","created_at"],r=["priority","urgency","importance"],s=t.some(o=>a.toLowerCase().includes(o.toLowerCase())),i=r.some(o=>a.toLowerCase().includes(o.toLowerCase()));if(s&&typeof e=="string"){if(/^\\d{4}-\\d{2}-\\d{2}/.test(e))try{return new Date(e).getTime()}catch(o){return e}}else if(i&&typeof e=="string"){let o={highest:5,urgent:5,critical:5,high:4,important:4,medium:3,normal:3,moderate:3,low:2,minor:2,lowest:1,trivial:1},d=parseInt(e,10);if(!isNaN(d))return d;let u=o[e.toLowerCase()];if(u!==void 0)return u}return e}self.onmessage=async a=>{try{let e=a.data;switch(e.type){case"updateConfig":n=e.config,self.postMessage({type:"configUpdated",requestId:e.requestId,success:!0});break;case"computeProjectData":let r=p(e);self.postMessage({type:"projectDataResult",requestId:e.requestId,success:!0,data:r});break;case"computeBatchProjectData":let i=P(e.files);self.postMessage({type:"batchProjectDataResult",requestId:e.requestId,success:!0,data:i});break;default:throw new Error(`Unknown message type: ${e.type}`)}}catch(e){self.postMessage({type:"error",requestId:a.data.requestId,success:!1,error:e instanceof Error?e.message:String(e)})}};\n')}var bx=class{constructor(e){this.workers=[];this.requestId=0;this.pendingRequests=new Map;this.currentWorkerIndex=0;this.initialized=!1;var t;this.vault=e.vault,this.metadataCache=e.metadataCache,this.projectConfigManager=e.projectConfigManager,this.maxWorkers=e.maxWorkers||Math.min(2,Math.max(1,Math.floor(navigator.hardwareConcurrency/4))),this.enableWorkers=(t=e.enableWorkers)!=null?t:!0,this.cache=new wx(this.vault,this.metadataCache,this.projectConfigManager),this.initializeWorkers()}initializeWorkers(){if(!this.initialized&&!!this.enableWorkers){this.workers.length>0&&this.cleanupWorkers();try{""+this.maxWorkers;for(let e=0;e<this.maxWorkers;e++){let t=new vx;t.onmessage=a=>{this.handleWorkerMessage(a.data)},t.onerror=a=>{console.error(`Worker ${e} error:`,a)},this.workers.push(t)}this.updateWorkerConfig(),this.initialized=!0,""+this.workers.length}catch(e){console.warn("ProjectDataWorkerManager: Failed to initialize workers, falling back to synchronous processing",e),this.enableWorkers=!1,this.workers=[]}}}updateWorkerConfig(){if(!this.enableWorkers||this.workers.length===0)return;let e=this.projectConfigManager.getWorkerConfig(),t={type:"updateConfig",requestId:this.generateRequestId(),config:e};for(let a of this.workers)try{a.postMessage(t)}catch(r){console.warn("Failed to update worker config:",r)}}async getProjectData(e){let t=await this.cache.getProjectData(e);return t||(this.enableWorkers&&this.workers.length>0?await this.computeProjectDataWithWorker(e):await this.computeProjectDataSync(e))}async getBatchProjectData(e){if(!this.projectConfigManager.isEnhancedProjectEnabled())return new Map;let t=await this.cache.getBatchProjectData(e),a=e.filter(r=>!t.has(r));if(a.length>0){let r;this.enableWorkers&&this.workers.length>0?r=await this.computeBatchProjectDataWithWorkers(a):r=await this.computeBatchProjectDataSync(a);for(let[i,n]of r)t.set(i,n)}return t}async computeProjectDataWithWorker(e){try{let t=await this.projectConfigManager.getFileMetadata(e),a=await this.projectConfigManager.getProjectConfigData(e),r=this.getNextWorker(),i=this.generateRequestId(),n={type:"computeProjectData",requestId:i,filePath:e,fileMetadata:t||{},configData:a||{}},o=await this.sendWorkerMessage(r,n);if(o.success&&o.data){let l={tgProject:o.data.tgProject,enhancedMetadata:o.data.enhancedMetadata,timestamp:o.data.timestamp};return await this.cache.setProjectData(e,l),l}else throw new Error(o.error||"Worker computation failed")}catch(t){return console.warn(`Failed to compute project data with worker for ${e}:`,t),await this.computeProjectDataSync(e)}}async computeBatchProjectDataWithWorkers(e){let t=new Map;if(e.length===0)return t;""+e.length+this.workers.length;try{let a=await Promise.all(e.map(async o=>{let l=await this.projectConfigManager.getFileMetadata(o),d=await this.projectConfigManager.getProjectConfigData(o);return{filePath:o,fileMetadata:l||{},configData:d||{}}})),r=Math.ceil(a.length/this.workers.length),i=[];for(let o=0;o<this.workers.length;o++){let l=o*r,d=Math.min(l+r,a.length),u=a.slice(l,d);u.length>0&&i.push(this.sendBatchRequestToWorker(o,u))}let n=await Promise.all(i);for(let o of n)for(let l of o)if(l.error)console.warn(`Worker failed to process ${l.filePath}:`,l.error);else{let d={tgProject:l.tgProject,enhancedMetadata:l.enhancedMetadata,timestamp:l.timestamp};t.set(l.filePath,d),await this.cache.setProjectData(l.filePath,d)}""+t.size+e.length}catch(a){return console.warn("Failed to compute batch project data with workers:",a),await this.computeBatchProjectDataSync(e)}return t}async sendBatchRequestToWorker(e,t){let a=this.workers[e],r=this.generateRequestId(),i={type:"computeBatchProjectData",requestId:r,files:t},n=await this.sendWorkerMessage(a,i);if(n.success&&n.data)return n.data;throw new Error(n.error||"Batch worker computation failed")}async sendWorkerMessage(e,t){return new Promise((a,r)=>{let i=setTimeout(()=>{this.pendingRequests.delete(t.requestId),r(new Error("Worker request timeout"))},3e4);this.pendingRequests.set(t.requestId,{resolve:n=>{clearTimeout(i),a(n)},reject:n=>{clearTimeout(i),r(n)}});try{e.postMessage(t)}catch(n){clearTimeout(i),this.pendingRequests.delete(t.requestId),r(n)}})}getNextWorker(){if(this.workers.length===0)throw new Error("No workers available");let e=this.workers[this.currentWorkerIndex];return this.currentWorkerIndex=(this.currentWorkerIndex+1)%this.workers.length,e}async computeBatchProjectDataSync(e){let t=new Map;""+e.length;let a=e.map(async i=>{try{let n=await this.computeProjectDataSync(i);return{filePath:i,data:n}}catch(n){return console.warn(`Failed to compute project data for ${i}:`,n),{filePath:i,data:null}}}),r=await Promise.all(a);for(let{filePath:i,data:n}of r)n&&t.set(i,n);return t}async computeProjectDataSync(e){try{let t=await this.projectConfigManager.determineTgProject(e),a=await this.projectConfigManager.getEnhancedMetadata(e),r={tgProject:t,enhancedMetadata:a,timestamp:Date.now()};return await this.cache.setProjectData(e,r),r}catch(t){return console.warn(`Failed to compute project data for ${e}:`,t),null}}handleWorkerMessage(e){let t=this.pendingRequests.get(e.requestId);!t||(this.pendingRequests.delete(e.requestId),e.success?t.resolve(e):t.reject(new Error(e.error||"Unknown worker error")))}generateRequestId(){return`req_${++this.requestId}_${Date.now()}`}clearCache(e){this.cache.clearCache(e),this.projectConfigManager.clearCache(e)}getCacheStats(){return this.cache.getStats()}onSettingsChange(){this.updateWorkerConfig(),this.cache.clearCache()}onEnhancedProjectSettingChange(e){this.cache.onEnhancedProjectSettingChange(e),e&&this.enableWorkers&&this.workers.length===0&&this.initializeWorkers()}setWorkersEnabled(e){this.enableWorkers!==e&&(this.enableWorkers=e,e?this.initializeWorkers():this.destroy())}isWorkersEnabled(){return this.enableWorkers&&this.workers.length>0}async preloadProjectData(e){e.length!==0&&await this.getBatchProjectData(e)}async onFileModified(e){await this.cache.onFileModified(e)}onFileDeleted(e){this.cache.onFileDeleted(e)}async onFileCreated(e){await this.cache.onFileCreated(e)}async onFileRenamed(e,t){await this.cache.onFileRenamed(e,t)}async refreshStaleEntries(){await this.cache.refreshStaleEntries()}async preloadRecentFiles(e){await this.cache.preloadRecentFiles(e)}getMemoryStats(){var e,t;return{fileCacheSize:((e=this.cache.fileCache)==null?void 0:e.size)||0,directoryCacheSize:((t=this.cache.directoryCache)==null?void 0:t.size)||0,pendingRequests:this.pendingRequests.size,activeWorkers:this.workers.length,workersEnabled:this.enableWorkers}}cleanupWorkers(){for(let e of this.workers)try{e.terminate()}catch(t){console.warn("Error terminating worker:",t)}this.workers=[];for(let{reject:e}of this.pendingRequests.values())e(new Error("Workers being reinitialized"));this.pendingRequests.clear()}destroy(){this.cleanupWorkers(),this.initialized=!1}};var Tx=class{constructor(e){var t,a,r;this.vault=e.vault,this.metadataCache=e.metadataCache,this.parser=new Ha(e.parserConfig),((t=e.parserConfig.projectConfig)==null?void 0:t.enableEnhancedProject)&&e.projectConfigOptions&&(this.projectConfigManager=new Mk({vault:e.vault,metadataCache:e.metadataCache,...e.projectConfigOptions,enhancedProjectEnabled:e.parserConfig.projectConfig.enableEnhancedProject,metadataConfigEnabled:(a=e.projectConfigOptions.metadataConfigEnabled)!=null?a:!1,configFileEnabled:(r=e.projectConfigOptions.configFileEnabled)!=null?r:!1}),this.projectDataWorkerManager=new bx({vault:e.vault,metadataCache:e.metadataCache,projectConfigManager:this.projectConfigManager}))}async parseTasksFromContent(e,t){let a,r,i;if(this.projectConfigManager)try{a=await this.projectConfigManager.getEnhancedMetadata(t),r=await this.projectConfigManager.getProjectConfig(t)||void 0,i=await this.projectConfigManager.determineTgProject(t)}catch(n){console.warn(`Failed to get enhanced metadata for ${t}:`,n),a=this.projectConfigManager.getFileMetadata(t)||void 0}return this.parser.parse(e,t,a,r,i)}async parseTasksFromContentLegacy(e,t){let a,r,i;if(this.projectConfigManager)try{a=await this.projectConfigManager.getEnhancedMetadata(t),r=await this.projectConfigManager.getProjectConfig(t)||void 0,i=await this.projectConfigManager.determineTgProject(t)}catch(n){console.warn(`Failed to get enhanced metadata for ${t}:`,n),a=this.projectConfigManager.getFileMetadata(t)||void 0}return this.parser.parseLegacy(e,t,a,r,i)}async parseTasksFromContentBasic(e,t){return this.parser.parseLegacy(e,t,void 0,void 0,void 0)}async parseTaskLine(e,t,a){let r=await this.parseTasksFromContentLegacy(e,t);if(r.length>0){let i=r[0];return i.line=a,i}return null}async getEnhancedMetadata(e){if(!this.projectConfigManager)return{};try{return await this.projectConfigManager.getEnhancedMetadata(e)}catch(t){return console.warn(`Failed to get enhanced metadata for ${e}:`,t),{}}}async getTgProject(e){if(!!this.projectConfigManager)try{return await this.projectConfigManager.determineTgProject(e)}catch(t){console.warn(`Failed to determine tgProject for ${e}:`,t);return}}clearProjectConfigCache(e){this.projectConfigManager&&this.projectConfigManager.clearCache(e)}updateParserConfig(e){this.parser=new Ha(e)}updateProjectConfigOptions(e){this.projectConfigManager&&this.projectConfigManager.updateOptions(e)}setEnhancedProjectEnabled(e,t){var a,r,i,n;e&&t?this.projectConfigManager?this.projectConfigManager.updateOptions({...t,enhancedProjectEnabled:e,metadataConfigEnabled:(i=t.metadataConfigEnabled)!=null?i:!1,configFileEnabled:(n=t.configFileEnabled)!=null?n:!1}):this.projectConfigManager=new Mk({vault:this.vault,metadataCache:this.metadataCache,...t,enhancedProjectEnabled:e,metadataConfigEnabled:(a=t.metadataConfigEnabled)!=null?a:!1,configFileEnabled:(r=t.configFileEnabled)!=null?r:!1}):e||(this.projectConfigManager?this.projectConfigManager.setEnhancedProjectEnabled(!1):this.projectConfigManager=void 0)}isEnhancedProjectEnabled(){return!!this.projectConfigManager&&this.projectConfigManager.isEnhancedProjectEnabled()}async computeEnhancedProjectData(e){var o,l;if(!this.projectConfigManager||!this.projectConfigManager.isEnhancedProjectEnabled())return{fileProjectMap:{},fileMetadataMap:{},projectConfigMap:{}};let t={},a={},r={};if(this.projectDataWorkerManager)try{""+e.length;let d=Date.now(),u=await this.projectDataWorkerManager.getBatchProjectData(e);for(let[f,h]of u)h.tgProject&&(t[f]={project:h.tgProject.name,source:h.tgProject.source||h.tgProject.type,readonly:(o=h.tgProject.readonly)!=null?o:!0}),Object.keys(h.enhancedMetadata).length>0&&(a[f]=h.enhancedMetadata);let p=new Set;for(let f of e){let h=f.substring(0,f.lastIndexOf("/"));h&&p.add(h)}for(let f of p)try{let h=e.find(k=>k.substring(0,k.lastIndexOf("/"))===f);if(h){let k=await this.projectConfigManager.getProjectConfig(h);if(k&&Object.keys(k).length>0){let g=this.projectConfigManager.applyMappingsToMetadata(k);r[f]=g}}}catch(h){console.warn(`Failed to get project config for directory ${f}:`,h)}let m=Date.now()-d;return""+m,{fileProjectMap:t,fileMetadataMap:a,projectConfigMap:r}}catch(d){console.warn("Failed to use optimized project data computation, falling back to synchronous method:",d)}""+e.length;let i=Date.now();for(let d of e)try{let u=await this.projectConfigManager.determineTgProject(d);u&&(t[d]={project:u.name,source:u.source||u.type,readonly:(l=u.readonly)!=null?l:!0});let p=await this.projectConfigManager.getEnhancedMetadata(d);Object.keys(p).length>0&&(a[d]=p);let m=await this.projectConfigManager.getProjectConfig(d);if(m&&Object.keys(m).length>0){let f=this.projectConfigManager.applyMappingsToMetadata(m),h=d.substring(0,d.lastIndexOf("/"));r[h]=f}}catch(u){console.warn(`Failed to compute enhanced project data for ${d}:`,u)}let n=Date.now()-i;return""+n,{fileProjectMap:t,fileMetadataMap:a,projectConfigMap:r}}async getEnhancedDataForFile(e){if(!this.projectConfigManager||!this.projectConfigManager.isEnhancedProjectEnabled())return{};try{let[t,a,r]=await Promise.all([this.projectConfigManager.determineTgProject(e),this.projectConfigManager.getEnhancedMetadata(e),this.projectConfigManager.getProjectConfig(e)]);return{tgProject:t,fileMetadata:Object.keys(a).length>0?a:void 0,projectConfigData:r&&Object.keys(r).length>0?r:void 0}}catch(t){return console.warn(`Failed to get enhanced data for ${e}:`,t),{}}}onSettingsChange(){this.projectDataWorkerManager&&this.projectDataWorkerManager.onSettingsChange()}onEnhancedProjectSettingChange(e){this.projectConfigManager&&this.projectConfigManager.setEnhancedProjectEnabled(e),this.projectDataWorkerManager&&this.projectDataWorkerManager.onEnhancedProjectSettingChange(e)}clearProjectDataCache(e){this.projectDataWorkerManager&&this.projectDataWorkerManager.clearCache(e),this.projectConfigManager&&this.projectConfigManager.clearCache(e)}clearAllCaches(){this.clearProjectConfigCache(),this.clearProjectDataCache(),this.projectConfigManager&&this.projectConfigManager.clearCache(),this.projectDataWorkerManager&&this.projectDataWorkerManager.clearCache()}getProjectDataCacheStats(){var a,r;let e=(a=this.projectDataWorkerManager)==null?void 0:a.getCacheStats(),t=(r=this.projectConfigManager)==null?void 0:r.getCacheStats();return{workerManager:e,configManager:t,combined:{totalFiles:((e==null?void 0:e.fileCacheSize)||0)+((t==null?void 0:t.fileMetadataCache.size)||0),totalMemory:(t==null?void 0:t.totalMemoryUsage.estimatedBytes)||0}}}getDetailedCacheStats(){var i,n;let e=(i=this.projectConfigManager)==null?void 0:i.getCacheStats(),t=(n=this.projectDataWorkerManager)==null?void 0:n.getCacheStats(),a=((e==null?void 0:e.fileMetadataCache.size)||0)+((e==null?void 0:e.enhancedMetadataCache.size)||0)+((t==null?void 0:t.fileCacheSize)||0),r=[];return(e==null?void 0:e.fileMetadataCache.size)&&r.push("fileMetadata"),(e==null?void 0:e.enhancedMetadataCache.size)&&r.push("enhancedMetadata"),(e==null?void 0:e.configCache.size)&&r.push("projectConfig"),(t==null?void 0:t.fileCacheSize)&&r.push("projectData"),{projectConfigManager:e,projectDataWorkerManager:t,summary:{totalCachedFiles:a,estimatedMemoryUsage:(e==null?void 0:e.totalMemoryUsage.estimatedBytes)||0,cacheTypes:r}}}destroy(){this.projectDataWorkerManager&&this.projectDataWorkerManager.destroy()}};var Ak=class{constructor(){this.children=new Map;this.isEndOfPath=!1;this.isFolder=!1}},n_=class{constructor(){this.root=new Ak}insert(e,t=!0){let a=this.normalizePath(e).split("/").filter(i=>i.length>0),r=this.root;for(let i of a)r.children.has(i)||r.children.set(i,new Ak),r=r.children.get(i);r.isEndOfPath=!0,r.isFolder=t}contains(e){let t=this.normalizePath(e).split("/").filter(r=>r.length>0),a=this.root;for(let r=0;r<t.length;r++){let i=t[r];if(a.children.has(i)){if(a=a.children.get(i),a.isEndOfPath&&a.isFolder)return!0}else return!1}return a.isEndOfPath}clear(){this.root=new Ak}normalizePath(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}},Cx=class{constructor(e){this.folderTrie=new n_;this.fileSet=new Set;this.patternRegexes=[];this.cache=new Map;this.config=e,this.rebuildIndexes()}updateConfig(e){this.config=e,this.rebuildIndexes(),this.clearCache()}shouldIncludeFile(e){if(!this.config.enabled)return!0;let t=e.path;if(this.cache.has(t))return this.cache.get(t);let a=this.evaluateFile(t);return this.cache.set(t,a),a}shouldIncludeFolder(e){if(!this.config.enabled)return!0;let t=e.path;if(this.cache.has(t))return this.cache.get(t);let a=this.evaluateFolder(t);return this.cache.set(t,a),a}shouldIncludePath(e){if(!this.config.enabled)return!0;if(this.cache.has(e))return this.cache.get(e);let t=this.evaluatePath(e);return this.cache.set(e,t),t}getStats(){return{cacheSize:this.cache.size,rulesCount:this.config.rules.filter(e=>e.enabled).length,enabled:this.config.enabled}}clearCache(){this.cache.clear()}evaluateFile(e){let t=this.pathMatches(e);return this.config.mode===gi.WHITELIST?t:!t}evaluateFolder(e){let t=this.pathMatches(e);return this.config.mode===gi.WHITELIST?t:!t}evaluatePath(e){let t=this.pathMatches(e);return this.config.mode===gi.WHITELIST?t:!t}pathMatches(e){let t=this.normalizePath(e);if(this.fileSet.has(t)||this.folderTrie.contains(t))return!0;for(let a of this.patternRegexes)if(a.test(t))return!0;return!1}rebuildIndexes(){this.folderTrie.clear(),this.fileSet.clear(),this.patternRegexes=[];for(let e of this.config.rules)if(!!e.enabled)switch(e.type){case"file":this.fileSet.add(this.normalizePath(e.path));break;case"folder":this.folderTrie.insert(e.path,!0);break;case"pattern":try{let t=this.globToRegex(e.path);this.patternRegexes.push(new RegExp(t,"i"))}catch(t){console.warn(`Invalid pattern rule: ${e.path}`,t)}break}}globToRegex(e){return e.replace(/\./g,"\\.").replace(/\*/g,".*").replace(/\?/g,".").replace(/\[([^\]]+)\]/g,"[$1]")}normalizePath(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}};Wo();var kK={includeNodeIds:!1,includePositions:!1,nodeSeparator:`
`,preserveLineBreaks:!0},xx=class{constructor(e,t={}){this.markdownParser=new Ha(e),this.options={...kK,...t}}parseCanvasFile(e,t){let a=null,r=null;try{return a=JSON.parse(e),a?(r=this.extractCanvasContent(a,t),r?this.parseTasksFromCanvasContent(r):[]):[]}catch(i){return console.error(`Error parsing canvas file ${t}:`,i),[]}finally{a=null,r=null}}extractCanvasContent(e,t){let a=e.nodes.filter(n=>n.type==="text"),r=[];for(let n of a){let o=n.text;this.options.includeNodeIds&&(o=`<!-- Node ID: ${n.id} -->
${o}`),this.options.includePositions&&(o=`<!-- Position: x=${n.x}, y=${n.y} -->
${o}`),this.options.preserveLineBreaks||(o=o.replace(/\n/g," ")),r.push(o)}let i=r.join(this.options.nodeSeparator||`
`);return{canvasData:e,textContent:i,textNodes:a,filePath:t}}parseTasksFromCanvasContent(e){let{textContent:t,filePath:a,textNodes:r}=e;return this.markdownParser.parseLegacy(t,a).map(n=>this.enhanceTaskWithCanvasMetadata(n,e))}enhanceTaskWithCanvasMetadata(e,t){let a=this.findSourceNode(e,t);if(a){let r={...e.metadata,canvasNodeId:a.id,canvasPosition:{x:a.x,y:a.y,width:a.width,height:a.height},canvasColor:a.color,sourceType:"canvas"};e.metadata=r}else e.metadata.sourceType="canvas";return e}findSourceNode(e,t){let{textNodes:a}=t;for(let r of a)if(r.text.includes(e.originalMarkdown))return r;return null}updateParserConfig(e){this.markdownParser=new Ha(e)}updateOptions(e){this.options={...this.options,...e}}getOptions(){return{...this.options}}static isValidCanvasContent(e){try{let t=JSON.parse(e);return typeof t=="object"&&t!==null&&Array.isArray(t.nodes)&&Array.isArray(t.edges)}catch(t){return!1}}extractTextOnly(e){try{return JSON.parse(e).nodes.filter(r=>r.type==="text").map(r=>r.text).join(this.options.nodeSeparator||`
`)}catch(t){return console.error("Error extracting text from canvas:",t),""}}};var pd=class{constructor(e,t){this.vault=e;this.plugin=t}async updateCanvasTask(e,t){var a;try{let r=this.vault.getFileByPath(e.filePath);if(!r)return{success:!1,error:`Canvas file not found: ${e.filePath}`};let i=await this.vault.read(r),n;try{n=JSON.parse(i)}catch(p){return{success:!1,error:`Failed to parse Canvas JSON: ${p.message}`}}let o=e.metadata.canvasNodeId;if(!o)return{success:!1,error:"Task does not have a Canvas node ID"};let l=n.nodes.find(p=>p.type==="text"&&p.id===o);if(!l)return{success:!1,error:`Canvas text node not found: ${o}`};let d=this.updateTaskInTextNode(l,e,t);if(!d.success)return d;t.completed&&!e.completed&&((a=this.plugin.app)==null?void 0:a.workspace)&&this.plugin.app.workspace.trigger("task-genius:task-completed",t);let u=JSON.stringify(n,null,2);return await this.vault.modify(r,u),{success:!0,updatedContent:u}}catch(r){return{success:!1,error:`Error updating Canvas task: ${r.message}`}}}updateTaskInTextNode(e,t,a){try{let r=e.text.split(`
`),i=!1,n=[...r];for(let o=0;o<r.length;o++){let l=r[o];if(this.isTaskLine(l)&&this.lineMatchesTask(l,t)){let d=this.updateCompleteTaskLine(l,t,a);n[o]=d,i=!0;break}}return i?(e.text=n.join(`
`),{success:!0}):{success:!1,error:`Task not found in Canvas text node: ${t.originalMarkdown}`}}catch(r){return{success:!1,error:`Error updating task in text node: ${r.message}`}}}isTaskLine(e){return/^\s*[-*+]\s*\[[^\]]*\]\s*/.test(e)}lineMatchesTask(e,t){if(t.originalMarkdown){let i=e.trim(),n=t.originalMarkdown.trim();if(i===n)return!0;let o=i.replace(/^[-*+]\s*\[[^\]]*\]\s*/,"- [ ] "),l=n.replace(/^[-*+]\s*\[[^\]]*\]\s*/,"- [ ] ");if(o===l)return!0}let a=this.extractCoreTaskContent(e),r=this.extractCoreTaskContent(t.content);return a===r}extractCoreTaskContent(e){let t=e;return t=t.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,""),t=t.replace(/📅\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/🛫\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/⏳\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\s+(🔼|🔽|⏫|⏬|🔺)/g,""),t=t.replace(/🏁\s*[^\s]+/g,""),t=t.replace(/🏁\s*\{[^}]*\}/g,""),t=t.replace(/🔁\s*[^\s]+/g,""),t=t.replace(/🆔\s*[^\s]+/g,""),t=t.replace(/⛔\s*[^\s]+/g,""),t=t.replace(/\[[^:]+::\s*[^\]]+\]/g,""),t=t.replace(/#[^\s#]+/g,""),t=t.replace(/@[^\s@]+/g,""),t=t.replace(/\s+/g," ").trim(),t}updateTaskStatusInLine(e,t){return e.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${t}$2`)}updateCompleteTaskLine(e,t,a){let r=this.plugin.settings.preferMetadataFormat==="dataview",i=e.match(/^(\s*)/),n=i?i[0]:"",o=e;if(a.status)o=o.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${a.status}$2`);else if(t.completed!==a.completed){let p=a.completed?"x":" ";o=o.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${p}$2`)}let l=o.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);o=(l?l[1]:"")+a.content,o=this.removeExistingMetadata(o),o=o.replace(/\s+/g," ").trim();let u=this.buildMetadataArray(a,t,r);return u.length>0&&(o=o.trim(),o=`${o} ${u.join(" ")}`),n&&!o.startsWith(n)&&(o=`${n}${o.trimStart()}`),o}buildMetadataArray(e,t,a){let r=[],i=m=>{if(!m)return;let f=new Date(m);return`${f.getFullYear()}-${String(f.getMonth()+1).padStart(2,"0")}-${String(f.getDate()).padStart(2,"0")}`},n=i(e.metadata.dueDate),o=i(e.metadata.startDate),l=i(e.metadata.scheduledDate),d=i(e.metadata.completedDate),u=m=>{var f;return((f=m.metadata.tgProject)==null?void 0:f.readonly)===!0};if(e.metadata.tags&&e.metadata.tags.length>0){let m=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",f=e.metadata.tags.filter(k=>!(typeof k!="string"||k.startsWith(`#${m}/`)||k.startsWith("@")&&e.metadata.context&&k===`@${e.metadata.context}`)),h=[...new Set(f)].map(k=>k.startsWith("#")?k:`#${k}`).filter(k=>k.length>1);h.length>0&&r.push(...h)}if(e.metadata.project&&!u(t))if(a){let f=`[${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}:: ${e.metadata.project}]`;r.includes(f)||r.push(f)}else{let f=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${e.metadata.project}`;r.includes(f)||r.push(f)}if(e.metadata.context)if(a){let f=`[${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context"}:: ${e.metadata.context}]`;r.includes(f)||r.push(f)}else{let m=`@${e.metadata.context}`;r.includes(m)||r.push(m)}if(e.metadata.priority)if(a){let m;switch(e.metadata.priority){case 5:m="highest";break;case 4:m="high";break;case 3:m="medium";break;case 2:m="low";break;case 1:m="lowest";break;default:m=e.metadata.priority}r.push(`[priority:: ${m}]`)}else{let m="";switch(e.metadata.priority){case 5:m="\u{1F53A}";break;case 4:m="\u23EB";break;case 3:m="\u{1F53C}";break;case 2:m="\u{1F53D}";break;case 1:m="\u23EC";break}m&&r.push(m)}return e.metadata.dependsOn&&r.push(a?`[dependsOn:: ${e.metadata.dependsOn}]`:`\u26D4 ${e.metadata.dependsOn}`),e.metadata.id&&r.push(a?`[id:: ${e.metadata.id}]`:`\u{1F194} ${e.metadata.id}`),e.metadata.onCompletion&&r.push(a?`[onCompletion:: ${e.metadata.onCompletion}]`:`\u{1F3C1} ${e.metadata.onCompletion}`),e.metadata.recurrence&&r.push(a?`[repeat:: ${e.metadata.recurrence}]`:`\u{1F501} ${e.metadata.recurrence}`),o&&(e.metadata.useAsDateType==="start"&&i(t.metadata.startDate)===o||r.push(a?`[start:: ${o}]`:`\u{1F6EB} ${o}`)),l&&(e.metadata.useAsDateType==="scheduled"&&i(t.metadata.scheduledDate)===l||r.push(a?`[scheduled:: ${l}]`:`\u23F3 ${l}`)),n&&(e.metadata.useAsDateType==="due"&&i(t.metadata.dueDate)===n||r.push(a?`[due:: ${n}]`:`\u{1F4C5} ${n}`)),d&&e.completed&&r.push(a?`[completion:: ${d}]`:`\u2705 ${d}`),r}removeExistingMetadata(e){let t=e;t=t.replace(/📅\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/🛫\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/⏳\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\[(?:due|🗓️)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\[(?:completion|✅)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\[(?:created|)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\[(?:start|🛫)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\[(?:scheduled|⏳)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\s+(🔼|🔽|⏫|⏬|🔺|\[#[A-C]\])/g,""),t=t.replace(/\[priority::\s*\w+\]/gi,""),t=t.replace(/🔁\s*[^\s]+/g,""),t=t.replace(/\[(?:repeat|recurrence)::\s*[^\]]+\]/gi,"");let a=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",r=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";return t=t.replace(new RegExp(`\\[${a}::\\s*[^\\]]+\\]`,"gi"),""),t=t.replace(new RegExp(`\\[${r}::\\s*[^\\]]+\\]`,"gi"),""),t=t.replace(/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,""),t=t.replace(/@[^\s@]+/g,""),t}async deleteCanvasTask(e){try{let t=this.vault.getFileByPath(e.filePath);if(!t)return{success:!1,error:`Canvas file not found: ${e.filePath}`};let a=await this.vault.read(t),r;try{r=JSON.parse(a)}catch(d){return{success:!1,error:`Failed to parse Canvas JSON: ${d.message}`}}let i=e.metadata.canvasNodeId;if(!i)return{success:!1,error:"Task does not have a Canvas node ID"};let n=r.nodes.find(d=>d.type==="text"&&d.id===i);if(!n)return{success:!1,error:`Canvas text node not found: ${i}`};let o=this.deleteTaskFromTextNode(n,e);if(!o.success)return o;let l=JSON.stringify(r,null,2);return await this.vault.modify(t,l),{success:!0,updatedContent:l}}catch(t){return{success:!1,error:`Error deleting Canvas task: ${t.message}`}}}async moveCanvasTask(e,t,a,r){try{let i=e.originalMarkdown||this.formatTaskLine(e),n=await this.deleteCanvasTask(e);return n.success?await this.addTaskToCanvasNode(t,i,a,r):n}catch(i){return{success:!1,error:`Error moving Canvas task: ${i.message}`}}}async duplicateCanvasTask(e,t,a,r,i=!0){try{let n=e.originalMarkdown||this.formatTaskLine(e);n=n.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2"),i||(n=this.removeCompletionMetadata(n)),n+=` (duplicated ${new Date().toISOString().split("T")[0]})`;let l=t||e.filePath;return await this.addTaskToCanvasNode(l,n,a,r)}catch(n){return{success:!1,error:`Error duplicating Canvas task: ${n.message}`}}}async addTaskToCanvasNode(e,t,a,r){try{let i=this.vault.getFileByPath(e);if(!i)return{success:!1,error:`Canvas file not found: ${e}`};let n=await this.vault.read(i),o;try{o=JSON.parse(n)}catch(p){return{success:!1,error:`Failed to parse Canvas JSON: ${p.message}`}}let l;if(a){let p=o.nodes.find(m=>m.type==="text"&&m.id===a);if(!p)return{success:!1,error:`Target Canvas text node not found: ${a}`};l=p}else l=this.createNewTextNode(o),o.nodes.push(l);let d=this.addTaskToTextNode(l,t,r);if(!d.success)return d;let u=JSON.stringify(o,null,2);return await this.vault.modify(i,u),{success:!0,updatedContent:u}}catch(i){return{success:!1,error:`Error adding task to Canvas node: ${i.message}`}}}deleteTaskFromTextNode(e,t){try{let a=e.text.split(`
`),r=!1,i=[...a];for(let n=0;n<a.length;n++){let o=a[n];if(this.isTaskLine(o)&&this.lineMatchesTask(o,t)){i.splice(n,1),r=!0;break}}return r?(e.text=i.join(`
`),{success:!0}):{success:!1,error:`Task not found in Canvas text node: ${t.originalMarkdown}`}}catch(a){return{success:!1,error:`Error deleting task from text node: ${a.message}`}}}addTaskToTextNode(e,t,a){try{let r=e.text.split(`
`);if(a){let i=this.findSectionIndex(r,a);i>=0?r.splice(i+1,0,t):r.push(t)}else e.text.trim()?r.push(t):r[0]=t;return e.text=r.join(`
`),{success:!0}}catch(r){return{success:!1,error:`Error adding task to text node: ${r.message}`}}}createNewTextNode(e){let t=`task-node-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,a=e.nodes,r=0,i=0;return a.length>0&&(r=Math.max(...a.map(o=>o.x+o.width))+50),{type:"text",id:t,x:r,y:i,width:250,height:60,text:""}}findSectionIndex(e,t){for(let a=0;a<e.length;a++){let r=e[a].trim();if(r.startsWith("#")&&r.toLowerCase().includes(t.toLowerCase()))return a}return-1}formatTaskLine(e){return`- [${e.completed?"x":" "}] ${e.content}`}removeCompletionMetadata(e){let t=e;return t=t.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\[completion::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,""),t=t.replace(/\[scheduled::\s*\d{4}-\d{2}-\d{2}\]/gi,""),t=t.replace(/\s+/g," ").trim(),t}static isCanvasTask(e){return e.metadata.sourceType==="canvas"}};var o_=A(require("obsidian")),Sx=class{constructor(e,t){this.app=e,this.vault=e.vault,this.config=t}async updateFileMetadataTask(e,t){try{if(!this.isFileMetadataTask(e))return{success:!1,error:"Task is not a file metadata task"};let a=this.vault.getFileByPath(e.filePath);return a instanceof o_.TFile?e.metadata.source==="file-metadata"?await this.updateMetadataFieldTask(a,e,t):e.metadata.source==="file-tag"?await this.updateTagTask(a,e,t):{success:!1,error:"Unknown file metadata task type"}:{success:!1,error:`File not found: ${e.filePath}`}}catch(a){return{success:!1,error:`Error updating file metadata task: ${a.message}`}}}isFileMetadataTask(e){return e.metadata.source==="file-metadata"||e.metadata.source==="file-tag"}async updateMetadataFieldTask(e,t,a){try{let r=t.metadata.sourceField;if(!r)return{success:!1,error:"No source field found for metadata task"};let i=await this.vault.read(e),n={};if(a.content!==t.content&&await this.updateFileName(e,a.content),(a.status!==t.status||a.completed!==t.completed)&&(n[r]=this.convertStatusToMetadataValue(r,a.status,a.completed)),this.hasMetadataChanges(t,a)){let o=this.extractMetadataUpdates(t,a);Object.assign(n,o)}return Object.keys(n).length>0&&await this.updateFrontmatter(e,n),{success:!0}}catch(r){return{success:!1,error:`Error updating metadata field task: ${r.message}`}}}async updateTagTask(e,t,a){try{a.content!==t.content&&await this.updateFileName(e,a.content);let r={};if(this.hasMetadataChanges(t,a)){let i=this.extractMetadataUpdates(t,a);Object.assign(r,i)}return a.completed!==t.completed&&(r.completed=a.completed),Object.keys(r).length>0&&await this.updateFrontmatter(e,r),{success:!0}}catch(r){return{success:!1,error:`Error updating tag task: ${r.message}`}}}async updateFileName(e,t){try{let a=e.path,r=a.lastIndexOf("/"),i=r>0?a.substring(0,r):"",n=a.substring(a.lastIndexOf(".")),o=t;o.endsWith(n)&&(o=o.substring(0,o.length-n.length));let l=o.replace(/[<>:"/\\|?*]/g,"_"),d=i?`${i}/${l}${n}`:`${l}${n}`;d!==a&&await this.vault.rename(e,d)}catch(a){throw console.error("Error updating file name:",a),a}}async updateFrontmatter(e,t){try{await this.app.fileManager.processFrontMatter(e,a=>{Object.assign(a,t)})}catch(a){throw console.error("Error updating frontmatter:",a),a}}convertStatusToMetadataValue(e,t,a){return e.toLowerCase().includes("complete")||e.toLowerCase().includes("done")||e.toLowerCase().includes("todo")||e.toLowerCase().includes("task")?a:t}hasMetadataChanges(e,t){return["dueDate","startDate","scheduledDate","priority","project","context","area"].some(r=>{let i=e.metadata[r],n=t.metadata[r];return i!==n})}extractMetadataUpdates(e,t){let a={};return["dueDate","startDate","scheduledDate","priority","project","context","area"].forEach(i=>{let n=e.metadata[i],o=t.metadata[i];n!==o&&(i.includes("Date")&&typeof o=="number"?a[i]=new Date(o).toISOString().split("T")[0]:a[i]=o)}),a}};var l_=A(require("obsidian")),sp=class{constructor(){this.notice=null;this.startTime=0;this.processedFiles=0;this.totalFiles=0;this.tasksFound=0}startRebuild(e,t){this.startTime=Date.now(),this.processedFiles=0,this.totalFiles=e,this.tasksFound=0;let a=t?` (${t})`:"";this.notice=new l_.Notice(`Task Genius: Starting rebuild${a}...`,0)}updateStep(e,t){if(!this.notice)return;let a=`Task Genius: ${e}`;if(this.totalFiles>0){let r=Math.round(this.processedFiles/this.totalFiles*100);a+=` (${this.processedFiles}/${this.totalFiles} - ${r}%)`}this.tasksFound>0&&(a+=` - ${this.tasksFound} tasks found`),t&&(a+=` - ${t.split("/").pop()||t}`),this.notice.setMessage(a)}incrementProcessedFiles(e=0){if(this.processedFiles++,this.tasksFound+=e,!this.notice)return;let t=this.totalFiles>0?Math.round(this.processedFiles/this.totalFiles*100):0,a=`Task Genius: Processing files (${this.processedFiles}/${this.totalFiles} - ${t}%) - ${this.tasksFound} tasks found`;this.notice.setMessage(a)}completeRebuild(e){if(!this.notice)return;let t=Date.now()-this.startTime,a=t>1e3?`${Math.round(t/1e3)}s`:`${t}ms`,i=`Task Genius: Rebuild complete! Found ${e!=null?e:this.tasksFound} tasks in ${a}`;this.notice.setMessage(i),setTimeout(()=>{this.notice&&(this.notice.hide(),this.notice=null)},3e3)}failRebuild(e){if(!this.notice)return;let t=`Task Genius: Rebuild failed - ${e}`;this.notice.setMessage(t),setTimeout(()=>{this.notice&&(this.notice.hide(),this.notice=null)},5e3)}cleanup(){this.notice&&(this.notice.hide(),this.notice=null)}};var c_=A(require("obsidian"));Zi();var ss=class{async execute(e,t){return this.validateConfig(t)?this.isCanvasTask(e.task)?this.executeForCanvas(e,t):this.executeForMarkdown(e,t):this.createErrorResult("Invalid configuration")}createSuccessResult(e){return{success:!0,message:e}}createErrorResult(e){return{success:!1,error:e}}isCanvasTask(e){return pd.isCanvasTask(e)}getCanvasTaskUpdater(e){return e.plugin.taskManager.getCanvasTaskUpdater()}};Zi();var Ex=class extends ss{async executeForCanvas(e,t){let{task:a}=e;try{let i=await this.getCanvasTaskUpdater(e).deleteCanvasTask(a);return i.success?this.createSuccessResult(`Task deleted from Canvas file ${a.filePath}`):this.createErrorResult(i.error||"Failed to delete Canvas task")}catch(r){return this.createErrorResult(`Error deleting Canvas task: ${r.message}`)}}async executeForMarkdown(e,t){let{task:a,app:r}=e;try{let i=r.vault.getFileByPath(a.filePath);if(!i)return this.createErrorResult(`File not found: ${a.filePath}`);let o=(await r.vault.read(i)).split(`
`),l=-1;if(a.originalMarkdown&&(l=o.findIndex(d=>{var u;return d.trim()===((u=a.originalMarkdown)==null?void 0:u.trim())})),l===-1&&a.line!==void 0&&a.line<o.length&&(l=a.line),l===-1&&a.lineNumber!==void 0&&a.lineNumber<o.length&&(l=a.lineNumber),l!==-1){o.splice(l,1),this.cleanupConsecutiveEmptyLines(o);let d=o.join(`
`);return await r.vault.modify(i,d),this.createSuccessResult("Task deleted successfully")}else return this.createErrorResult("Task not found in file")}catch(i){return this.createErrorResult(`Failed to delete task: ${i.message}`)}}validateConfig(e){return e.type===ie.DELETE}getDescription(e){return"Delete the completed task from the file"}cleanupConsecutiveEmptyLines(e){for(let t=e.length-1;t>=1;t--)e[t].trim()===""&&e[t-1].trim()===""&&e.splice(t,1)}};Zi();var Dx=class extends ss{executeForCanvas(e,t){return this.execute(e,t)}executeForMarkdown(e,t){return this.execute(e,t)}async execute(e,t){return this.validateConfig(t)?this.createSuccessResult("Task kept in place"):this.createErrorResult("Invalid keep configuration")}validateConfig(e){return e.type===ie.KEEP}getDescription(e){return"Keep the completed task in place (no action)"}};Zi();var Px=class extends ss{executeForCanvas(e,t){return this.execute(e,t)}executeForMarkdown(e,t){return this.execute(e,t)}async execute(e,t){return this.validateConfig(t)?this.executeCommon(e,t):this.createErrorResult("Invalid complete configuration")}async executeCommon(e,t){let a=t,{plugin:r}=e;try{let i=[],n=[],o=r.taskManager;if(!o)return this.createErrorResult("Task manager not available");for(let u of a.taskIds)try{let p=o.getTaskById(u);if(!p){n.push(`Task not found: ${u}`);continue}if(p.completed)continue;let m={...p,completed:!0,status:"x",metadata:{...p.metadata,completedDate:Date.now()}};await o.updateTask(m),i.push(u)}catch(p){n.push(`${u}: ${p.message}`)}let l="";return i.length>0&&(l+=`Completed tasks: ${i.join(", ")}`),n.length>0&&(l&&(l+="; "),l+=`Failed: ${n.join(", ")}`),i.length>0?this.createSuccessResult(l):this.createErrorResult(l||"No tasks were completed")}catch(i){return this.createErrorResult(`Failed to complete related tasks: ${i.message}`)}}validateConfig(e){if(e.type!==ie.COMPLETE)return!1;let t=e;return Array.isArray(t.taskIds)&&t.taskIds.length>0}getDescription(e){var r;let a=((r=e.taskIds)==null?void 0:r.length)||0;return`Complete ${a} related task${a!==1?"s":""}`}};Zi();var Mx=class extends ss{async executeForCanvas(e,t){let a=t,{task:r,app:i}=e;try{let n=this.getCanvasTaskUpdater(e);if(a.targetFile.endsWith(".canvas")){let o={...r,originalMarkdown:this.removeOnCompletionMetadata(r.originalMarkdown||`- [${r.completed?"x":" "}] ${r.content}`),metadata:{...r.metadata,onCompletion:void 0}},l=await n.moveCanvasTask(o,a.targetFile,void 0,a.targetSection);if(l.success){let d=a.targetSection?` (section: ${a.targetSection})`:"";return this.createSuccessResult(`Task moved to Canvas file ${a.targetFile}${d} successfully`)}else return this.createErrorResult(l.error||"Failed to move Canvas task")}else return this.moveCanvasToMarkdown(e,a)}catch(n){return this.createErrorResult(`Error moving Canvas task: ${n.message}`)}}async executeForMarkdown(e,t){let a=t,{task:r,app:i}=e;try{let n=i.vault.getFileByPath(r.filePath);if(!n)return this.createErrorResult(`Source file not found: ${r.filePath}`);let o=i.vault.getFileByPath(a.targetFile);if(!o)try{o=await i.vault.create(a.targetFile,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${a.targetFile}`)}let l=await i.vault.read(n),d=await i.vault.read(o),u=l.split(`
`),p=d.split(`
`);if(r.line===void 0||r.line>=u.length)return this.createErrorResult("Task line not found in source file");let m=u[r.line];if(m=this.removeOnCompletionMetadata(m),u.splice(r.line,1),a.targetSection){let h=p.findIndex(k=>k.trim().startsWith("#")&&k.includes(a.targetSection));if(h!==-1){let k=p.length;for(let g=h+1;g<p.length;g++)if(p[g].trim().startsWith("#")){k=g;break}p.splice(k,0,m)}else p.push("",`## ${a.targetSection}`,m)}else p.push(m);await i.vault.modify(n,u.join(`
`)),await i.vault.modify(o,p.join(`
`));let f=a.targetSection?` (section: ${a.targetSection})`:"";return this.createSuccessResult(`Task moved to ${a.targetFile}${f} successfully`)}catch(n){return this.createErrorResult(`Failed to move task: ${n.message}`)}}async moveCanvasToMarkdown(e,t){let{task:a,app:r}=e;try{let i=a.originalMarkdown||`- [${a.completed?"x":" "}] ${a.content}`;i=this.removeOnCompletionMetadata(i);let n=r.vault.getFileByPath(t.targetFile);if(!n)try{n=await r.vault.create(t.targetFile,"")}catch(f){return this.createErrorResult(`Failed to create target file: ${t.targetFile}`)}let l=(await r.vault.read(n)).split(`
`),d=l.length;if(t.targetSection){for(let f=0;f<l.length;f++)if(l[f].trim().toLowerCase().includes(t.targetSection.toLowerCase())){d=f+1;break}}l.splice(d,0,i),await r.vault.modify(n,l.join(`
`));let p=await this.getCanvasTaskUpdater(e).deleteCanvasTask(a);if(!p.success){let f=t.targetSection?` (section: ${t.targetSection})`:"";return this.createErrorResult(`Task moved successfully to ${t.targetFile}${f}, but failed to remove from Canvas: ${p.error}`)}let m=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task moved from Canvas to ${t.targetFile}${m} successfully`)}catch(i){return this.createErrorResult(`Failed to move Canvas task to Markdown: ${i.message}`)}}removeOnCompletionMetadata(e){let t=e;t=t.replace(/🏁\s+[^\s{]+/g,"");let a;for(;(a=t.match(/🏁\s*\{/))!==null;){let r=a.index,i=t.indexOf("{",r),n=0,o=i;for(let l=i;l<t.length;l++)if(t[l]==="{"&&n++,t[l]==="}"&&n--,n===0){o=l;break}n===0?t=t.substring(0,r)+t.substring(o+1):t=t.substring(0,r)+t.substring(r+a[0].length)}return t=t.replace(/\[onCompletion::\s*[^\]]*\]/gi,""),t=t.replace(/\s+/g," ").trim(),t}validateConfig(e){if(e.type!==ie.MOVE)return!1;let t=e;return typeof t.targetFile=="string"&&t.targetFile.trim().length>0}getDescription(e){let t=e,a=t.targetSection?` (section: ${t.targetSection})`:"";return`Move task to ${t.targetFile}${a}`}};Zi();var Ax=class extends ss{constructor(){super(...arguments);this.DEFAULT_ARCHIVE_FILE="Archive/Completed Tasks.md";this.DEFAULT_ARCHIVE_SECTION="Completed Tasks"}async executeForCanvas(e,t){let a=t,{task:r,app:i}=e;try{let n=r.originalMarkdown||`- [${r.completed?"x":" "}] ${r.content}`;n=this.removeOnCompletionMetadata(n),n=this.ensureTaskIsCompleted(n);let o=a.archiveFile||this.DEFAULT_ARCHIVE_FILE,l=a.archiveSection||this.DEFAULT_ARCHIVE_SECTION,d=await this.addTaskToArchiveFile(i,n,o,l,e);if(!d.success)return this.createErrorResult(d.error||"Failed to archive Canvas task");let p=await this.getCanvasTaskUpdater(e).deleteCanvasTask(r);return p.success?this.createSuccessResult(`Task archived from Canvas to ${o}`):this.createErrorResult(`Task archived successfully to ${o}, but failed to remove from Canvas: ${p.error}`)}catch(n){return this.createErrorResult(`Error archiving Canvas task: ${n.message}`)}}async executeForMarkdown(e,t){var o;let a=t,{task:r,app:i,plugin:n}=e;try{let l=a.archiveFile||((o=n.settings.onCompletion)==null?void 0:o.defaultArchiveFile)||this.DEFAULT_ARCHIVE_FILE,d=a.archiveSection||this.DEFAULT_ARCHIVE_SECTION,u=i.vault.getFileByPath(r.filePath);if(!u)return this.createErrorResult(`Source file not found: ${r.filePath}`);let p=i.vault.getFileByPath(l);if(!p)try{let C=l.substring(0,l.lastIndexOf("/"));C&&!i.vault.getAbstractFileByPath(C)&&await i.vault.createFolder(C),p=await i.vault.create(l,`# Archive
## ${d}
`)}catch(C){return this.createErrorResult(`Failed to create archive file: ${l}`)}let m=await i.vault.read(u),f=await i.vault.read(p),h=m.split(`
`),k=f.split(`
`);if(r.line===void 0||r.line>=h.length)return this.createErrorResult("Task line not found in source file");let g=h[r.line];g=this.removeOnCompletionMetadata(g),g=this.ensureTaskIsCompleted(g);let y=new Date().toISOString().split("T")[0],w=`(from ${r.filePath})`,v=this.getCompletionMarker(e,y),T=`${g} ${v} ${w}`;h.splice(r.line,1);let x=k.findIndex(C=>C.trim().startsWith("#")&&C.includes(d));if(x!==-1){let C=k.length;for(let S=x+1;S<k.length;S++)if(k[S].trim().startsWith("#")){C=S;break}k.splice(C,0,T)}else k.push("",`## ${d}`,T);return await i.vault.modify(u,h.join(`
`)),await i.vault.modify(p,k.join(`
`)),this.createSuccessResult(`Task archived to ${l} (section: ${d})`)}catch(l){return this.createErrorResult(`Failed to archive task: ${l.message}`)}}async addTaskToArchiveFile(e,t,a,r,i){try{let n=e.vault.getFileByPath(a);if(!n)try{let f=a.substring(0,a.lastIndexOf("/"));f&&!e.vault.getAbstractFileByPath(f)&&await e.vault.createFolder(f),n=await e.vault.create(a,`# Archive
## ${r}
`)}catch(f){return{success:!1,error:`Failed to create archive file: ${a}`}}let l=(await e.vault.read(n)).split(`
`),d=new Date().toISOString().split("T")[0],u=this.getCompletionMarker(i,d),p=`${t} ${u}`,m=l.findIndex(f=>f.trim().startsWith("#")&&f.includes(r));if(m!==-1){let f=l.length;for(let h=m+1;h<l.length;h++)if(l[h].trim().startsWith("#")){f=h;break}l.splice(f,0,p)}else l.push("",`## ${r}`,p);return await e.vault.modify(n,l.join(`
`)),{success:!0}}catch(n){return{success:!1,error:`Failed to add task to archive: ${n.message}`}}}validateConfig(e){return e.type===ie.ARCHIVE}getDescription(e){let t=e,a=t.archiveFile||this.DEFAULT_ARCHIVE_FILE,r=t.archiveSection||this.DEFAULT_ARCHIVE_SECTION;return`Archive task to ${a} (section: ${r})`}removeOnCompletionMetadata(e){let t=e;t=t.replace(/🏁\s+[^\s{]+/g,"");let a;for(;(a=t.match(/🏁\s*\{/))!==null;){let r=a.index,i=t.indexOf("{",r),n=0,o=i;for(let l=i;l<t.length;l++)if(t[l]==="{"&&n++,t[l]==="}"&&n--,n===0){o=l;break}n===0?t=t.substring(0,r)+t.substring(o+1):t=t.substring(0,r)+t.substring(r+a[0].length)}return t=t.replace(/\[onCompletion::\s*[^\]]*\]/gi,""),t=t.replace(/\s+/g," ").trim(),t}ensureTaskIsCompleted(e){return e.replace(/^(\s*[-*+]\s*)\[[^\]]*\](\s*)/,"$1[x]$2")}getCompletionMarker(e,t){return e.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${t}]`:`\u2705 ${t}`}};var Ix=A(require("obsidian"));Zi();var Rx=class extends ss{async executeForCanvas(e,t){let a=t,{task:r,app:i}=e;try{let n=this.getCanvasTaskUpdater(e),o=a.targetFile||r.filePath;if(o.endsWith(".canvas")){let l=await n.duplicateCanvasTask(r,o,void 0,a.targetSection,a.preserveMetadata);if(l.success){let d=o!==r.filePath?`to ${a.targetFile}`:"in same file",u=a.targetSection?` (section: ${a.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${d}${u}`)}else return this.createErrorResult(l.error||"Failed to duplicate Canvas task")}else return this.duplicateCanvasToMarkdown(e,a)}catch(n){return this.createErrorResult(`Error duplicating Canvas task: ${n.message}`)}}async executeForMarkdown(e,t){let a=t,{task:r,app:i}=e;try{let n=i.vault.getFileByPath(r.filePath);if(!(n instanceof Ix.TFile))return this.createErrorResult(`Source file not found: ${r.filePath}`);let o;if(a.targetFile){if(o=i.vault.getFileByPath(a.targetFile),!(o instanceof Ix.TFile))try{o=await i.vault.create(a.targetFile,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${a.targetFile}`)}}else o=n;let d=(await i.vault.read(n)).split(`
`);if(r.line===void 0||r.line>=d.length)return this.createErrorResult("Task line not found in source file");let u=d[r.line],p=this.createDuplicateTaskLine(u,a);if(o.path!==n.path){let k=(await i.vault.read(o)).split(`
`);if(a.targetSection){let g=k.findIndex(y=>y.trim().startsWith("#")&&y.includes(a.targetSection));g!==-1?k.splice(g+1,0,p):k.push("",`## ${a.targetSection}`,p)}else k.push(p);await i.vault.modify(o,k.join(`
`))}else d.splice(r.line+1,0,p),await i.vault.modify(n,d.join(`
`));let m=o.path!==n.path?`to ${a.targetFile}`:"in same file",f=a.targetSection?` (section: ${a.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${m}${f}`)}catch(n){return this.createErrorResult(`Failed to duplicate task: ${n.message}`)}}async duplicateCanvasToMarkdown(e,t){let{task:a,app:r}=e;try{let i=a.originalMarkdown||`- [${a.completed?"x":" "}] ${a.content}`;i=i.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2"),t.preserveMetadata||(i=i.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,"").trim()),i+=` (duplicated ${new Date().toISOString().split("T")[0]})`;let o=t.targetFile||a.filePath,l=r.vault.getFileByPath(o);if(!l)try{l=await r.vault.create(o,"")}catch(h){return this.createErrorResult(`Failed to create target file: ${o}`)}let u=(await r.vault.read(l)).split(`
`),p=u.length;if(t.targetSection){for(let h=0;h<u.length;h++)if(u[h].trim().toLowerCase().includes(t.targetSection.toLowerCase())){p=h+1;break}}u.splice(p,0,i),await r.vault.modify(l,u.join(`
`));let m=o!==a.filePath?`to ${t.targetFile}`:"in same file",f=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task duplicated from Canvas ${m}${f}`)}catch(i){return this.createErrorResult(`Failed to duplicate Canvas task to Markdown: ${i.message}`)}}createDuplicateTaskLine(e,t){let a=e.replace(/^(\s*[-*+]\s*\[)[xX\-](\])/,"$1 $2");return t.preserveMetadata||(a=a.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}/g,"").trim()),a+=` (duplicated ${new Date().toISOString().split("T")[0]})`,a}validateConfig(e){return e.type===ie.DUPLICATE}getDescription(e){let t=e;if(t.targetFile){let a=t.targetSection?` (section: ${t.targetSection})`:"";return`Duplicate task to ${t.targetFile}${a}`}else return"Duplicate task in same file"}};var Fx=class extends c_.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.executors=new Map,this.initializeExecutors()}onload(){this.plugin.registerEvent(this.app.workspace.on("task-genius:task-completed",this.handleTaskCompleted.bind(this)))}initializeExecutors(){this.executors.set(ie.DELETE,new Ex),this.executors.set(ie.KEEP,new Dx),this.executors.set(ie.COMPLETE,new Px),this.executors.set(ie.MOVE,new Mx),this.executors.set(ie.ARCHIVE,new Ax),this.executors.set(ie.DUPLICATE,new Rx)}async handleTaskCompleted(e){if(!!e.metadata.hasOwnProperty("onCompletion"))try{let t=this.parseOnCompletion(e.metadata.onCompletion||"");if(!t.isValid||!t.config){console.warn("Invalid onCompletion configuration:",t.error);return}await this.executeOnCompletion(e,t.config)}catch(t){console.error("Error executing onCompletion action:",t)}}parseOnCompletion(e){if(!e||typeof e!="string")return{config:null,rawValue:e||"",isValid:!1,error:"Empty or invalid onCompletion value"};let t=e.trim();try{if(t.startsWith("{")){let r=JSON.parse(e);return{config:r,rawValue:e,isValid:this.validateConfig(r),error:this.validateConfig(r)?void 0:"Invalid configuration structure"}}let a=this.parseSimpleFormat(t);return{config:a,rawValue:e,isValid:a!==null,error:a===null?"Unrecognized onCompletion format":void 0}}catch(a){return{config:null,rawValue:e,isValid:!1,error:`Parse error: ${a.message}`}}}parseSimpleFormat(e){let t=e.toLowerCase();switch(t){case"delete":return{type:ie.DELETE};case"keep":return{type:ie.KEEP};case"archive":return{type:ie.ARCHIVE};default:if(t.startsWith("complete:")){let r=e.substring(9).split(",").map(i=>i.trim()).filter(i=>i);return{type:ie.COMPLETE,taskIds:r.length>0?r:[]}}if(t.startsWith("move:")){let a=e.substring(5).trim();return{type:ie.MOVE,targetFile:a||""}}if(t.startsWith("archive:")){let a=e.substring(8).trim();return{type:ie.ARCHIVE,archiveFile:a}}if(t.startsWith("duplicate:")){let a=e.substring(10).trim();return{type:ie.DUPLICATE,targetFile:a}}return null}}validateConfig(e){if(!e||!e.type)return!1;switch(e.type){case ie.DELETE:case ie.KEEP:return!0;case ie.COMPLETE:return Array.isArray(e.taskIds);case ie.MOVE:return typeof e.targetFile=="string";case ie.ARCHIVE:case ie.DUPLICATE:return!0;default:return!1}}async executeOnCompletion(e,t){let a=this.executors.get(t.type);if(!a)return{success:!1,error:`No executor found for action type: ${t.type}`};let r={task:e,plugin:this.plugin,app:this.app};try{return await a.execute(r,t)}catch(i){return{success:!1,error:`Execution failed: ${i.message}`}}}onunload(){this.executors.clear()}};var yK={useWorkers:!0,maxWorkers:2,debug:!1},jx=class extends ni.Component{constructor(e,t,a,r,i={}){super();this.app=e;this.vault=t;this.metadataCache=a;this.plugin=r;this.initialized=!1;this.isInitializing=!1;this.updateEventPending=!1;this.initializationPending=!1;var n;if(this.options={...yK,...i},this.indexer=new sx(this.app,this.vault,this.metadataCache),this.persister=new Gu(this.app.appId,(n=this.plugin.manifest)==null?void 0:n.version),this.taskParser=new Ha(hi(this.plugin.settings.preferMetadataFormat,this.plugin)),this.canvasParser=new xx(hi(this.plugin.settings.preferMetadataFormat,this.plugin)),this.canvasTaskUpdater=new pd(this.vault,this.plugin),this.initializeTaskParsingService(),this.initializeFileFilterManager(),this.initializeOnCompletionManager(),this.indexer.setParseFileCallback(async o=>{let l=await this.vault.cachedRead(o);return this.parseFileWithAppropriateParser(o.path,l)}),this.updateFileParsingConfiguration(),this.preloadTasksFromCache(),this.options.useWorkers)try{this.workerManager=new ox(this.vault,this.metadataCache,{maxWorkers:this.options.maxWorkers,debug:this.options.debug,settings:this.plugin.settings}),this.workerManager.setTaskIndexer(this.indexer),this.log("Worker manager initialized")}catch(o){console.error("Failed to initialize worker manager:",o),this.log("Falling back to single-threaded indexing")}this.registerEventHandlers(),this.addChild(this.indexer),this.workerManager&&this.addChild(this.workerManager),this.onCompletionManager&&this.addChild(this.onCompletionManager)}initializeFileFilterManager(){var e;((e=this.plugin.settings.fileFilter)==null?void 0:e.enabled)?(this.fileFilterManager=new Cx(this.plugin.settings.fileFilter),this.indexer.setFileFilterManager(this.fileFilterManager),this.log("File filter manager initialized")):(this.fileFilterManager=void 0,this.indexer.setFileFilterManager(void 0))}initializeOnCompletionManager(){this.onCompletionManager=new Fx(this.app,this.plugin),this.log("OnCompletion manager initialized"),this.addChild(this.onCompletionManager)}getOnCompletionManager(){return this.onCompletionManager}initializeTaskParsingService(){var e;if(this.plugin.settings,this.taskParsingService&&(this.log("Cleaning up existing TaskParsingService instance"),this.taskParsingService.destroy(),this.taskParsingService=void 0),(e=this.plugin.settings.projectConfig)==null?void 0:e.enableEnhancedProject){let t={vault:this.vault,metadataCache:this.metadataCache,parserConfig:hi(this.plugin.settings.preferMetadataFormat,this.plugin),projectConfigOptions:{configFileName:this.plugin.settings.projectConfig.configFile.fileName,searchRecursively:this.plugin.settings.projectConfig.configFile.searchRecursively,metadataKey:this.plugin.settings.projectConfig.metadataConfig.metadataKey,pathMappings:this.plugin.settings.projectConfig.pathMappings,metadataMappings:this.plugin.settings.projectConfig.metadataMappings||[],defaultProjectNaming:this.plugin.settings.projectConfig.defaultProjectNaming||{strategy:"filename",stripExtension:!0,enabled:!1},metadataConfigEnabled:this.plugin.settings.projectConfig.metadataConfig.enabled,configFileEnabled:this.plugin.settings.projectConfig.configFile.enabled,detectionMethods:this.plugin.settings.projectConfig.metadataConfig.detectionMethods||[]}};this.taskParsingService=new Tx(t),this.log("Enhanced task parsing service initialized with project support")}else this.taskParsingService=void 0}updateFileFilterConfiguration(){this.initializeFileFilterManager(),this.log("File filter configuration updated")}getFileFilterManager(){return this.fileFilterManager}updateParsingConfiguration(){oj(),this.taskParser=new Ha(hi(this.plugin.settings.preferMetadataFormat,this.plugin)),this.canvasParser.updateParserConfig(hi(this.plugin.settings.preferMetadataFormat,this.plugin)),this.initializeTaskParsingService(),this.taskParsingService&&this.taskParsingService.clearProjectConfigCache(),this.workerManager,this.updateFileParsingConfiguration(),this.log("Parsing configuration updated")}updateFileParsingConfiguration(){var e,t;this.workerManager&&this.workerManager.setFileParsingConfig(this.plugin.settings.fileParsingConfig,(t=(e=this.plugin.settings.projectConfig)==null?void 0:e.metadataConfig)==null?void 0:t.detectionMethods),this.plugin.settings.fileParsingConfig.enableFileMetadataParsing||this.plugin.settings.fileParsingConfig.enableTagBasedTaskParsing?this.fileMetadataUpdater=new Sx(this.app,this.plugin.settings.fileParsingConfig):this.fileMetadataUpdater=void 0,this.log("File parsing configuration updated")}parseFileWithAppropriateParser(e,t){try{let a=oB({path:e,extension:e.split(".").pop()||""}),r=[];if(a===ji.CANVAS)r=this.canvasParser.parseCanvasFile(t,e);else if(a===ji.MARKDOWN)r=this.taskParser.parseLegacy(t,e);else return[];return this.applyHeadingFilters(r)}catch(a){return console.error(`Error parsing file ${e} with appropriate parser:`,a),[]}}parseFileWithConfigurableParser(e,t){try{let a=this.taskParser.parseLegacy(t,e);return this.applyHeadingFilters(a)}catch(a){return console.error(`Error parsing file ${e} with configurable parser:`,a),[]}}async parseFileWithEnhancedParser(e,t){try{if(this.taskParsingService){let a=await this.taskParsingService.parseTasksFromContentLegacy(t,e);return this.log(`Parsed ${a.length} tasks using enhanced parsing service for ${e}`),this.applyHeadingFilters(a)}else return this.parseFileWithAppropriateParser(e,t)}catch(a){return console.error(`Error parsing file ${e} with enhanced parser:`,a),this.parseFileWithAppropriateParser(e,t)}}applyHeadingFilters(e){return e.filter(t=>!(this.plugin.settings.ignoreHeading&&t.metadata.heading&&(Array.isArray(t.metadata.heading)?t.metadata.heading:[t.metadata.heading]).some(r=>r.includes(this.plugin.settings.ignoreHeading))||this.plugin.settings.focusHeading&&t.metadata.heading&&!(Array.isArray(t.metadata.heading)?t.metadata.heading:[t.metadata.heading]).some(r=>r.includes(this.plugin.settings.focusHeading))))}registerEventHandlers(){this.registerEvent(this.metadataCache.on("changed",(e,t,a)=>{this.isInitializing||(this.log("File metadata changed, updating index"),e instanceof ni.TFile&&e.extension==="md"&&ai(e,this.fileFilterManager)&&this.indexFile(e))})),this.registerEvent(this.vault.on("modify",e=>{this.isInitializing||(this.log(`File modified: ${e.path}`),e instanceof ni.TFile&&ai(e,this.fileFilterManager)&&e.extension==="canvas"&&(this.log(`Canvas file modified: ${e.path}, re-indexing`),this.indexFile(e)))})),this.registerEvent(this.metadataCache.on("deleted",e=>{this.isInitializing||e instanceof ni.TFile&&ai(e,this.fileFilterManager)&&this.removeFileFromIndex(e)})),this.registerEvent(this.vault.on("rename",(e,t)=>{this.isInitializing||e instanceof ni.TFile&&ai(e,this.fileFilterManager)&&(this.removeFileFromIndexByOldPath(t),this.indexFile(e))})),this.app.workspace.onLayoutReady(()=>{this.registerEvent(this.vault.on("create",e=>{this.isInitializing||e instanceof ni.TFile&&ai(e,this.fileFilterManager)&&this.indexFile(e)}))})}async preloadTasksFromCache(){try{let e=await this.persister.loadConsolidatedCache("taskCache");if(e)if(this.persister.isVersionCompatible(e)){this.log(`Loading consolidated task cache from version ${e.version}`),this.indexer.setCache(e.data),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()),this.plugin.preloadedTasks=Array.from(this.indexer.getCache().tasks.values()),this.plugin.triggerViewUpdate(),this.log(`Preloaded ${this.indexer.getCache().tasks.size} tasks from consolidated cache`);return}else this.log(`Consolidated cache version ${e.version} is incompatible with current version ${this.persister.getVersion()}, clearing cache`),await this.persister.clearIncompatibleCache();this.log("No consolidated cache found, falling back to file-by-file loading");let t=await this.persister.getAll();if(t&&Object.keys(t).length>0){let a=0,r=0;for(let[i,n]of Object.entries(t))n&&n.data&&(this.persister.isVersionCompatible(n)?(this.indexer.updateIndexWithTasks(i,n.data),this.log(`Preloaded ${n.data.length} tasks from cache for ${i}`),a++):(await this.persister.removeFile(i),r++,this.log(`Removed incompatible cache for ${i} (version ${n.version})`)));this.log(`Preloading complete: ${a} compatible files, ${r} incompatible files removed`),await this.storeConsolidatedCache(),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()),this.log(`Preloaded ${this.indexer.getCache().tasks.size} tasks from file caches`)}else this.log("No cached tasks found for preloading")}catch(e){console.error("Error preloading tasks from cache:",e)}}async storeConsolidatedCache(){try{let e=this.indexer.getCache();await this.persister.storeConsolidatedCache("taskCache",e),this.log(`Stored consolidated cache with ${e.tasks.size} tasks`)}catch(e){console.error("Error storing consolidated task cache:",e)}}async initialize(){var e;if(!this.initialized){if(this.isInitializing){this.log("Initialization already in progress, skipping"),this.updateEventPending=!0;return}this.isInitializing=!0,this.updateEventPending=!0,this.log("Initializing task manager");try{let t=this.vault.getFiles(),a=t.filter(o=>ai(o,this.fileFilterManager));this.log(`Found ${a.length} supported files to index (${t.length} total files)`);try{let o=a.map(d=>d.path),l=await this.persister.synchronize(o);l.size>0&&this.log(`Dropped ${l.size} out-of-date file task caches`)}catch(o){console.error("Error synchronizing task cache:",o)}let r=new Set;for(let o of this.indexer.getCache().tasks.keys()){let l=this.indexer.getCache().tasks.get(o);l&&r.add(l.filePath)}this.log(`${r.size} files already loaded from cache`);let i=a.filter(o=>!r.has(o.path));if(this.log(`${i.length} files still need processing`),this.workerManager&&i.length>0)try{let o;if(this.taskParsingService&&this.taskParsingService.isEnhancedProjectEnabled()){this.log("Pre-computing enhanced project data for worker processing...");let p=i.map(m=>m.path);o=await this.taskParsingService.computeEnhancedProjectData(p),this.log(`Pre-computed project data for ${Object.keys(o.fileProjectMap).length} files with projects`),this.log(`Pre-computed project data: ${JSON.stringify(o)}`),this.workerManager&&this.workerManager.setEnhancedProjectData(o)}let l=200,d=0,u=0;for(let p=0;p<i.length;p+=l){let m=i.slice(p,p+l);this.log(`Processing batch ${Math.floor(p/l)+1}/${Math.ceil(i.length/l)} (${m.length} files)`),this.progressManager&&this.progressManager.updateStep("Processing files",(e=m[0])==null?void 0:e.path);for(let f of m)try{let h=await this.persister.loadFile(f.path);if(h&&h.time>=f.stat.mtime&&this.persister.isVersionCompatible(h))this.indexer.updateIndexWithTasks(f.path,h.data,f.stat.mtime),this.log(`Loaded ${h.data.length} tasks from cache for ${f.path}`),u++,this.progressManager&&this.progressManager.incrementProcessedFiles(h.data.length);else{h&&!this.persister.isVersionCompatible(h)&&(this.log(`Cache for ${f.path} is version incompatible (${h.version}), rebuilding`),await this.persister.removeFile(f.path));let k=await this.processFileWithoutEvents(f,o);d++,this.progressManager&&this.progressManager.incrementProcessedFiles(k.length)}}catch(h){console.error(`Error processing file ${f.path}:`,h),await this.indexer.indexFile(f),d++,this.progressManager&&this.progressManager.incrementProcessedFiles(0)}await new Promise(f=>setTimeout(f,0))}this.log(`Completed worker-based indexing (${d} imported, ${u} from cache, ${r.size} preloaded)`)}catch(o){console.error("Error using workers for initial indexing:",o),this.log("Falling back to single-threaded indexing"),await this.fallbackToMainThreadIndexing(i)}else i.length>0&&await this.fallbackToMainThreadIndexing(i);this.initialized=!0;let n=this.indexer.getCache().tasks.size;this.log(`Task manager initialized with ${n} tasks`),this.progressManager=void 0,await this.storeConsolidatedCache(),this.updateEventPending&&(this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()),this.updateEventPending=!1)}catch(t){console.error("Task manager initialization failed:",t),this.updateEventPending=!1}finally{this.isInitializing=!1}}}async processFileWithoutEvents(e,t){if(!this.workerManager){await this.indexer.indexFile(e);let a=this.getTasksForFile(e.path);return a.length>0&&await this.persister.storeFile(e.path,a),a}try{let a=await this.workerManager.processFile(e);return this.indexer.updateIndexWithTasks(e.path,a,e.stat.mtime),a.length>0?(await this.persister.storeFile(e.path,a),this.log(`Processed and cached ${a.length} tasks in ${e.path}`)):await this.persister.removeFile(e.path),a}catch(a){console.error(`Worker error processing ${e.path}:`,a),await this.indexer.indexFile(e);let r=this.getTasksForFile(e.path);return r.length>0&&await this.persister.storeFile(e.path,r),r}}async processFileWithWorker(e){if(!this.workerManager){await this.indexer.indexFile(e);let t=this.getTasksForFile(e.path);t.length>0&&await this.persister.storeFile(e.path,t);return}try{let t=await this.workerManager.processFile(e);e.path,this.indexer.updateIndexWithTasks(e.path,t,e.stat.mtime),t.length>0?(await this.persister.storeFile(e.path,t),this.log(`Processed and cached ${t.length} tasks in ${e.path}`)):await this.persister.removeFile(e.path),this.isInitializing||(await this.storeConsolidatedCache(),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()))}catch(t){console.error(`Worker error processing ${e.path}:`,t),await this.indexer.indexFile(e);let a=this.getTasksForFile(e.path);a.length>0&&await this.persister.storeFile(e.path,a),this.isInitializing||(await this.storeConsolidatedCache(),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()))}}async fallbackToMainThreadIndexing(e){var n;this.log(`Indexing ${e.length} files using main thread...`);let t=10,a=0,r=0;for(let o=0;o<e.length;o+=t){let l=e.slice(o,o+t);this.progressManager&&this.progressManager.updateStep("Processing files (main thread)",(n=l[0])==null?void 0:n.path);for(let d of l)try{let u=await this.persister.loadFile(d.path);if(u&&u.time>=d.stat.mtime&&this.persister.isVersionCompatible(u))this.indexer.updateIndexWithTasks(d.path,u.data,d.stat.mtime),this.log(`Loaded ${u.data.length} tasks from cache for ${d.path}`),r++,this.progressManager&&this.progressManager.incrementProcessedFiles(u.data.length);else{u&&!this.persister.isVersionCompatible(u)&&(this.log(`Cache for ${d.path} is version incompatible (${u.version}), rebuilding`),await this.persister.removeFile(d.path));let p=await this.vault.cachedRead(d),m=this.parseFileWithAppropriateParser(d.path,p);this.indexer.updateIndexWithTasks(d.path,m,d.stat.mtime),m.length>0?(await this.persister.storeFile(d.path,m),this.log(`Processed and cached ${m.length} tasks in ${d.path}`)):await this.persister.hasFile(d.path)&&await this.persister.removeFile(d.path),a++,this.progressManager&&this.progressManager.incrementProcessedFiles(m.length)}}catch(u){console.error(`Error processing file ${d.path}:`,u);try{let p=await this.vault.cachedRead(d),m=this.parseFileWithAppropriateParser(d.path,p);this.indexer.updateIndexWithTasks(d.path,m,d.stat.mtime),m.length>0&&await this.persister.storeFile(d.path,m),this.progressManager&&this.progressManager.incrementProcessedFiles(m.length)}catch(p){console.error(`Fallback parsing also failed for ${d.path}:`,p),this.progressManager&&this.progressManager.incrementProcessedFiles(0)}a++}((o+t)%100==0||o+t>=e.length)&&this.log(`Indexed ${Math.min(o+t,e.length)}/${e.length} files (${Math.round(Math.min(o+t,e.length)/e.length*100)}%)`),await new Promise(d=>setTimeout(d,0))}let i=this.indexer.getCache().tasks.size-(a+r);this.log(`Completed main-thread indexing (${a} imported, ${r} from cache, approximately ${i} tasks from preload)`),this.isInitializing||(await this.storeConsolidatedCache(),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()))}async indexFile(e){if(!this.initialized){if(this.isInitializing){this.log(`Skipping indexFile for ${e.path} - initialization in progress`);return}if(this.log(`Need to initialize before indexing file: ${e.path}`),await this.initialize(),!this.initialized){console.warn(`Cannot index ${e.path} - initialization failed`);return}}if(this.log(`Indexing file: ${e.path}`),this.workerManager)this.isInitializing?await this.processFileWithoutEvents(e):await this.processFileWithWorker(e);else{let t=await this.vault.cachedRead(e),a=this.parseFileWithAppropriateParser(e.path,t);this.indexer.updateIndexWithTasks(e.path,a,e.stat.mtime),a.length>0?(await this.persister.storeFile(e.path,a),this.log(`Processed ${a.length} tasks in ${e.path} using main thread`)):await this.persister.hasFile(e.path)&&await this.persister.removeFile(e.path),this.isInitializing||this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache())}}syncWorkerResults(e,t){this.indexer.updateIndexWithTasks(e,t),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache())}formatDateForIndex(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}removeFileFromIndexByOldPath(e){this.indexer.cleanupFileCache(e);try{this.persister.removeFile(e),this.log(`Removed ${e} from cache`),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache())}catch(t){console.error(`Error removing ${e} from cache:`,t)}}removeFileFromIndex(e){this.indexer.cleanupFileCache(e.path);try{this.persister.removeFile(e.path),this.log(`Removed ${e.path} from cache`),this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache())}catch(t){console.error(`Error removing ${e.path} from cache:`,t)}}setProgressManager(e){this.progressManager=e}queryTasks(e=[],t=[]){return this.initialized?this.indexer.queryTasks(e,t):(!this.initializationPending&&!this.isInitializing&&(console.warn("Task manager not initialized, initializing now"),this.initializationPending=!0,setTimeout(()=>{!this.initialized&&!this.isInitializing?this.initialize().catch(a=>{console.error("Error during delayed initialization:",a)}).finally(()=>{this.initializationPending=!1}):this.initializationPending=!1},0)),[])}getAllTasks(){let e=this.queryTasks();try{let t=this.plugin.getIcsManager();if(t){let a=t.getAllEventsWithHolidayDetection(),r=t.convertEventsWithHolidayToTasks(a);return[...e,...r]}}catch(t){console.error("Error getting all tasks:",t);try{let a=this.plugin.getIcsManager();if(a){let r=a.getAllEvents(),i=a.convertEventsToTasks(r);return[...e,...i]}}catch(a){console.error("Error in fallback task retrieval:",a)}}return e}async getAllTasksWithSync(){let e=this.queryTasks(),t=this.plugin.getIcsManager();if(t)try{let r=(await t.getAllEventsWithSync()).map(n=>{var l;let o=t.getConfig().sources.find(d=>d.id===n.source.id);return((l=o==null?void 0:o.holidayConfig)==null?void 0:l.enabled)?{...n,isHoliday:no.isHoliday(n,o.holidayConfig),showInForecast:!0}:{...n,isHoliday:!1,showInForecast:!0}}),i=t.convertEventsWithHolidayToTasks(r);return[...e,...i]}catch(a){console.error("Error getting tasks with holiday detection:",a);let r=await t.getAllEventsWithSync(),i=t.convertEventsToTasks(r);return[...e,...i]}return e}getAllTasksFast(){let e=this.queryTasks(),t=this.plugin.getIcsManager();if(t)try{let r=t.getAllEventsNonBlocking(!0).map(n=>{var l;let o=t.getConfig().sources.find(d=>d.id===n.source.id);return((l=o==null?void 0:o.holidayConfig)==null?void 0:l.enabled)?{...n,isHoliday:no.isHoliday(n,o.holidayConfig),showInForecast:!0}:{...n,isHoliday:!1,showInForecast:!0}}),i=t.convertEventsWithHolidayToTasks(r);return[...e,...i]}catch(a){console.error("Error getting tasks with holiday detection (fast):",a);try{let r=t.getAllEventsNonBlocking(!1),i=t.convertEventsToTasks(r);return[...e,...i]}catch(r){console.error("Error in fallback fast task retrieval:",r)}}return e}getAvailableContextOrProjects(){let e=this.getAllTasks(),t=new Set,a=new Set;for(let r of e){r.metadata.context&&t.add(r.metadata.context);let i=bt(r);i&&a.add(i)}return{contexts:Array.from(t),projects:Array.from(a)}}getTaskById(e){return this.indexer.getTaskById(e)}getTasksForFile(e){let t=this.indexer.getCache(),a=t.files.get(e);return a?Array.from(a).map(r=>t.tasks.get(r)).filter(r=>r!==void 0):[]}getTasksByFilter(e){return this.queryTasks([e])}getIncompleteTasks(){return this.queryTasks([{type:"status",operator:"=",value:!1}])}getCompletedTasks(){return this.queryTasks([{type:"status",operator:"=",value:!0}])}getTasksDueToday(){let e=new Date,t=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`;return this.queryTasks([{type:"dueDate",operator:"=",value:t}])}getOverdueTasks(){let e=new Date,t=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`;return this.queryTasks([{type:"dueDate",operator:"before",value:t},{type:"status",operator:"=",value:!1}])}async updateTask(e){let t=this.indexer.getTaskById(e.id);if(!t)throw new Error(`Task with ID ${e.id} not found`);if(pd.isCanvasTask(t))try{let i=await this.canvasTaskUpdater.updateCanvasTask(t,e);if(i.success){this.log(`Updated Canvas task ${e.id} in Canvas file`);let n=this.vault.getFileByPath(e.filePath);if(n instanceof ni.TFile)try{await this.indexFile(n),this.log(`Successfully re-indexed Canvas file ${e.filePath} after task update`)}catch(o){console.error(`Failed to re-index Canvas file ${e.filePath} after task update:`,o)}return}else throw new Error(i.error||"Failed to update Canvas task")}catch(i){throw console.error(`Error updating Canvas task ${e.id}:`,i),i}if(this.fileMetadataUpdater&&this.fileMetadataUpdater.isFileMetadataTask(t))try{let i=await this.fileMetadataUpdater.updateFileMetadataTask(t,e);if(i.success){this.log(`Updated file metadata task ${e.id}`);let n=this.vault.getFileByPath(e.filePath);if(n instanceof ni.TFile)try{await this.indexFile(n),this.log(`Successfully re-indexed file ${e.filePath} after metadata task update`)}catch(o){console.error(`Failed to re-index file ${e.filePath} after metadata task update:`,o)}return}else throw new Error(i.error||"Failed to update file metadata task")}catch(i){throw console.error(`Error updating file metadata task ${e.id}:`,i),i}let a=!t.completed&&e.completed&&e.metadata.recurrence,r=this.plugin.settings.preferMetadataFormat==="dataview";try{let i=this.vault.getFileByPath(e.filePath);if(!(i instanceof ni.TFile)||!i)throw new Error(`File not found: ${e.filePath}`);let o=(await this.vault.read(i)).split(`
`),l=o[e.line];if(!l)throw new Error(`Task line ${e.line} not found in file ${e.filePath}`);let d=l.match(/^(\s*)/),u=d?d[0]:"",p=l;if(e.status)p=p.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${e.status}$2`);else if(t.completed!==e.completed){let E=e.completed?"x":" ";p=p.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${E}$2`)}let m=E=>{if(!E)return;let P=new Date(E);return`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`},f=p.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);p=(f?f[1]:"")+e.content,p=p.replace(/📅\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/🛫\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/⏳\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/✅\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/❌\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/\s*\d{4}-\d{2}-\d{2}/g,""),p=p.replace(/\[(?:due|🗓️)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\[(?:completion|✅)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\[(?:created|)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\[(?:start|🛫)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\[(?:scheduled|⏳)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\[(?:cancelled|❌)::\s*\d{4}-\d{2}-\d{2}\]/gi,""),p=p.replace(/\s+(🔼|🔽|⏫|⏬|🔺|\[#[A-C]\])/g,""),p=p.replace(/\[priority::\s*\w+\]/gi,""),p=p.replace(/🔁\s*[^\s]+/g,""),p=p.replace(/\[(?:repeat|recurrence)::\s*[^\]]+\]/gi,""),p=p.replace(/🏁\s*[^\s]+/g,""),p=p.replace(/⛔\s*[^\s]+/g,""),p=p.replace(/🆔\s*[^\s]+/g,""),p=p.replace(/\[(?:onCompletion|🏁)::\s*[^\]]+\]/gi,""),p=p.replace(/\[(?:dependsOn|⛔)::\s*[^\]]+\]/gi,""),p=p.replace(/\[(?:id|🆔)::\s*[^\]]+\]/gi,"");let k=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",g=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";p=p.replace(new RegExp(`\\[${k}::\\s*[^\\]]+\\]`,"gi"),""),p=p.replace(new RegExp(`\\[${g}::\\s*[^\\]]+\\]`,"gi"),""),p=p.replace(/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g,""),p=p.replace(/@[^\s@]+/g,""),p=p.replace(/\s+/g," ").trim();let y=[],w=m(e.metadata.dueDate),v=m(e.metadata.startDate),T=m(e.metadata.scheduledDate),x=m(e.metadata.completedDate),C=m(e.metadata.cancelledDate);if(e.metadata.tags&&e.metadata.tags.length>0){let E=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",P=e.metadata.tags.filter(L=>!(typeof L!="string"||L.startsWith(`#${E}/`)||L.startsWith("@")&&e.metadata.context&&L===`@${e.metadata.context}`)),I=[...new Set(P)].map(L=>L.startsWith("#")?L:`#${L}`).filter(L=>L.length>1);!r&&I.length>0?y.push(...I):r&&I.length>0&&y.push(...I)}if(e.metadata.project&&!ur(t))if(r){let P=`[${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}:: ${e.metadata.project}]`;y.includes(P)||y.push(P)}else{let P=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${e.metadata.project}`;y.includes(P)||y.push(P)}if(e.metadata.context)if(r){let P=`[${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context"}:: ${e.metadata.context}]`;y.includes(P)||y.push(P)}else{let E=`@${e.metadata.context}`;y.includes(E)||y.push(E)}if(e.metadata.priority)if(r){let E;switch(e.metadata.priority){case 5:E="highest";break;case 4:E="high";break;case 3:E="medium";break;case 2:E="low";break;case 1:E="lowest";break;default:E=e.metadata.priority}y.push(`[priority:: ${E}]`)}else{let E="";switch(e.metadata.priority){case 5:E="\u{1F53A}";break;case 4:E="\u23EB";break;case 3:E="\u{1F53C}";break;case 2:E="\u{1F53D}";break;case 1:E="\u23EC";break}E&&y.push(E)}if(e.metadata.recurrence&&y.push(r?`[repeat:: ${e.metadata.recurrence}]`:`\u{1F501} ${e.metadata.recurrence}`),v&&(e.metadata.useAsDateType==="start"&&m(t.metadata.startDate)===v||y.push(r?`[start:: ${v}]`:`\u{1F6EB} ${v}`)),T&&(e.metadata.useAsDateType==="scheduled"&&m(t.metadata.scheduledDate)===T||y.push(r?`[scheduled:: ${T}]`:`\u23F3 ${T}`)),w&&(e.metadata.useAsDateType==="due"&&m(t.metadata.dueDate)===w||y.push(r?`[due:: ${w}]`:`\u{1F4C5} ${w}`)),x&&e.completed&&y.push(r?`[completion:: ${x}]`:`\u2705 ${x}`),C&&y.push(r?`[cancelled:: ${C}]`:`\u274C ${C}`),e.metadata.onCompletion&&y.push(r?`[onCompletion:: ${e.metadata.onCompletion}]`:`\u{1F3C1} ${e.metadata.onCompletion}`),e.metadata.dependsOn&&e.metadata.dependsOn.length>0){let E=e.metadata.dependsOn.join(",");y.push(r?`[dependsOn:: ${E}]`:`\u26D4 ${E}`)}if(e.metadata.id&&y.push(r?`[id:: ${e.metadata.id}]`:`\u{1F194} ${e.metadata.id}`),y.length>0&&(p=p.trim(),p=`${p} ${y.join(" ")}`),u&&!p.startsWith(u)&&(p=`${u}${p.trimStart()}`),e.completed&&!t.completed&&e&&this.app.workspace.trigger("task-genius:task-completed",e),p!==l){if(o[e.line]=p,a)try{let E=this.createRecurringTask(e,u);o.splice(e.line+1,0,E),this.log(`Created new recurring task after line ${e.line}`)}catch(E){console.error("Error creating recurring task:",E)}await this.vault.modify(i,o.join(`
`)),this.log(`Updated task ${e.id} in file ${e.filePath}`),this.log(e.originalMarkdown);try{await this.indexFile(i),this.log(`Successfully re-indexed file ${e.filePath} after task update`)}catch(E){console.error(`Failed to re-index file ${e.filePath} after task update:`,E)}}else this.log(`Task ${e.id} content did not change. No file modification needed.`)}catch(i){throw console.error("Error updating task:",i),i}}createRecurringTask(e,t){let a=this.calculateNextDueDate(e),r={...e};r.completed=!1,r.metadata.completedDate=void 0,e.metadata.dueDate?r.metadata.dueDate=a:e.metadata.scheduledDate?(r.metadata.scheduledDate=a,r.metadata.dueDate=void 0):r.metadata.dueDate=a;let i=r.metadata.dueDate?this.formatDateForDisplay(r.metadata.dueDate):void 0,n=r.metadata.scheduledDate?this.formatDateForDisplay(r.metadata.scheduledDate):void 0,o=e.metadata.startDate?this.formatDateForDisplay(e.metadata.startDate):void 0,l="- ";if(e.originalMarkdown){let h=e.originalMarkdown.match(/^(\s*)([*\-+]|\d+\.)\s+\[/);if(h&&h[2]&&(l=h[2]+" ",/^\d+\.$/.test(h[2]))){let k=h[2].replace(/\.$/,"");l=parseInt(k)+1+". "}}let d=this.plugin.settings.preferMetadataFormat==="dataview",u=e.content;if(e.metadata.tags&&e.metadata.tags.length>0){let h=[...new Set(e.metadata.tags)];for(let k of h){let g=new RegExp(`(^|\\s)${k.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=\\s|$)`,"g");u=u.replace(g," ").trim()}}if(e.metadata.project){let k=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${e.metadata.project}`,g=new RegExp(`(^|\\s)${k.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=\\s|$)`,"g");u=u.replace(g," ").trim()}if(e.metadata.context){let h=`@${e.metadata.context}`,k=new RegExp(`(^|\\s)${h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=\\s|$)`,"g");u=u.replace(k," ").trim()}u=u.replace(/\s+/g," ").trim();let p=`${t}${l}[ ] ${u}`,m=[];if(e.metadata.tags&&e.metadata.tags.length>0){let h=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",k=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@",g=e.metadata.tags.filter(y=>!(typeof y!="string"||y.startsWith(`#${h}/`)||y.startsWith(k)&&e.metadata.context&&y===`${k}${e.metadata.context}`));if(g.length>0){let y=[...new Set(g)].map(w=>w.startsWith("#")?w:`#${w}`);m.push(...y)}}if(e.metadata.project&&!ur(e))if(d){let h=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";m.push(`[${h}:: ${e.metadata.project}]`)}else{let k=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${e.metadata.project}`;m.includes(k)||m.push(k)}if(e.metadata.context)if(d){let h=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context";m.push(`[${h}:: ${e.metadata.context}]`)}else{let k=`${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@"}${e.metadata.context}`;m.includes(k)||m.push(k)}if(e.metadata.priority)if(d){let h;switch(e.metadata.priority){case 5:h="highest";break;case 4:h="high";break;case 3:h="medium";break;case 2:h="low";break;case 1:h="lowest";break;default:h=e.metadata.priority}m.push(`[priority:: ${h}]`)}else{let h="";switch(e.metadata.priority){case 5:h="\u{1F53A}";break;case 4:h="\u23EB";break;case 3:h="\u{1F53C}";break;case 2:h="\u{1F53D}";break;case 1:h="\u23EC";break}h&&m.push(h)}return e.metadata.recurrence&&m.push(d?`[repeat:: ${e.metadata.recurrence}]`:`\u{1F501} ${e.metadata.recurrence}`),o&&m.push(d?`[start:: ${o}]`:`\u{1F6EB} ${o}`),n&&m.push(d?`[scheduled:: ${n}]`:`\u23F3 ${n}`),i&&m.push(d?`[due:: ${i}]`:`\u{1F4C5} ${i}`),m.length>0&&(p=`${p} ${m.join(" ")}`),p}calculateNextDueDate(e){if(!e.metadata.recurrence)return;let t,a=this.plugin.settings.recurrenceDateBase||"due";a==="current"?t=new Date:a==="scheduled"&&e.metadata.scheduledDate?t=new Date(e.metadata.scheduledDate):a==="due"&&e.metadata.dueDate?t=new Date(e.metadata.dueDate):t=new Date,t.setHours(0,0,0,0);try{try{let l=ud(e.metadata.recurrence,{dtstart:t}),d=new Date(t.getTime()+1e3),u=l.after(d);if(u)return u.setHours(0,0,0,0),this.log(`Calculated next date using rrule for '${e.metadata.recurrence}': ${u.toISOString()}`),u.getTime();this.log(`[TaskManager] rrule couldn't find next occurrence for rule: ${e.metadata.recurrence}. Falling back.`)}catch(l){l instanceof Error?this.log(`[TaskManager] Failed to parse recurrence '${e.metadata.recurrence}' with rrule. Falling back to simple logic. Error: ${l.message}`):this.log(`[TaskManager] Failed to parse recurrence '${e.metadata.recurrence}' with rrule. Falling back to simple logic. Unknown error.`)}this.log(`[TaskManager] Using fallback logic for recurrence: ${e.metadata.recurrence}`);let r=e.metadata.recurrence.trim().toLowerCase(),i=new Date(t),n=/every\s+month\s+on\s+the\s+(\d+)(st|nd|rd|th)/i,o=r.match(n);if(o){let l=parseInt(o[1]);if(!isNaN(l)&&l>=1&&l<=31){let d=new Date(t.getTime());d.setMonth(d.getMonth()+1),d.setDate(l),t.getDate()<l&&d.setMonth(t.getMonth()),d.getDate()!==l&&d.setDate(0),i=d}else this.log(`[TaskManager] Invalid day of month: ${l}`),i.setDate(t.getDate()+1)}else if(r.startsWith("every")){let l=r.split(" ");if(l.length>=2){let d=1,u=l[1];switch(l.length>=3&&!isNaN(parseInt(l[1]))&&(d=parseInt(l[1]),u=l[2]),u.endsWith("s")&&(u=u.substring(0,u.length-1)),u){case"day":let p=new Date(t.getTime());p.setDate(p.getDate()+d),i=p;break;case"week":i.setDate(t.getDate()+d*7);break;case"month":let m=new Date(t.getTime());m.setMonth(m.getMonth()+d),i=m;break;case"year":i.setFullYear(t.getFullYear()+d);break;default:this.log(`[TaskManager] Unknown unit in recurrence '${r}'. Defaulting to days.`);let f=new Date(t.getTime());f.setDate(f.getDate()+d),i=f}}else{this.log(`[TaskManager] Malformed 'every' rule '${r}'. Defaulting to next day.`);let d=new Date(t.getTime());d.setDate(d.getDate()+1),i=d}}else if(r.includes("monday")||r.includes("tuesday")||r.includes("wednesday")||r.includes("thursday")||r.includes("friday")||r.includes("saturday")||r.includes("sunday")){let l={sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6},d=-1;for(let[u,p]of Object.entries(l))if(r.includes(u)){d=p;break}if(d>=0)for(i.setDate(t.getDate()+1);i.getDay()!==d;)i.setDate(i.getDate()+1);else this.log(`[TaskManager] Malformed weekday rule '${r}'. Defaulting to next day.`),i.setDate(t.getDate()+1)}else this.log(`[TaskManager] Unknown recurrence format '${r}'. Defaulting to next day.`),i.setDate(t.getDate()+1);return i.setHours(0,0,0,0),this.log(`Calculated next date using simple logic for '${e.metadata.recurrence}': ${i.toISOString()}`),i.getTime()}catch(r){console.error("Error calculating next date:",r);let i=new Date(t);return i.setDate(i.getDate()+1),i.setHours(0,0,0,0),e.metadata.recurrence?this.log(`Error calculating next date for '${e.metadata.recurrence}'. Defaulting to ${i.toISOString()}`):this.log(`Error calculating next date for task without recurrence. Defaulting to ${i.toISOString()}`),i.getTime()}}formatDateForDisplay(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}async forceReindex(e){let{clearProjectCaches:t=!0,preserveValidCaches:a=!1,logCacheStats:r=!1}=e||{};if(this.log(`Force reindexing all tasks (clearProjectCaches: ${t}, preserveValidCaches: ${a})`),r&&this.taskParsingService)try{let l=this.taskParsingService.getDetailedCacheStats();this.log("Cache statistics before clearing: "+JSON.stringify(l.summary,null,2))}catch(l){console.warn("Failed to get cache statistics:",l)}if(this.initialized=!1,this.indexer.resetCache(),t&&this.taskParsingService)try{if(a){if(this.taskParsingService.projectConfigManager){let l=await this.taskParsingService.projectConfigManager.clearStaleEntries();this.log(`Smart cache clearing: removed ${l} stale entries`)}}else this.taskParsingService.clearAllCaches(),this.log("Cleared all project-related caches (config, data, metadata)")}catch(l){console.error("Error clearing project caches:",l)}else t||this.log("Skipping project cache clearing as requested");try{await this.persister.clear();try{await this.persister.persister.removeItem("consolidated:taskCache"),this.log("Cleared consolidated task cache")}catch(l){console.error("Error clearing consolidated cache:",l)}this.log("Cleared all cached task data")}catch(l){console.error("Error clearing cache:",l)}let i=this.app.vault.getFiles().filter(l=>l.extension==="md"||l.extension==="canvas"),n=new sp;n.startRebuild(i.length,"Force reindex requested"),this.setProgressManager(n),await this.initialize();let o=this.getAllTasks().length;if(n.completeRebuild(o),r&&this.taskParsingService)try{let l=this.taskParsingService.getDetailedCacheStats();this.log("Cache statistics after rebuilding: "+JSON.stringify(l.summary,null,2))}catch(l){console.warn("Failed to get final cache statistics:",l)}this.app.workspace.trigger("task-genius:task-cache-updated",this.indexer.getCache()),this.log("Force reindex complete")}log(e){this.options.debug&&""+e}onunload(){this.workerManager&&this.workerManager.onunload(),this.taskParsingService&&(this.taskParsingService.destroy(),this.taskParsingService=void 0),super.onunload()}getCanvasTaskUpdater(){return this.canvasTaskUpdater}};var ea=A(require("obsidian"));var On=A(require("obsidian"));Q();var Ui=A(require("obsidian"));var kd=A(require("obsidian"));var md=A(require("obsidian"));Cr();Lr();$s();Q();var f_=A(require("obsidian"));var xo=A(require("obsidian"));hs();Cr();Xl();xa();Q();function nr(s){if(s==null)return"";let e=String(s).trim(),t=parseInt(e,10);return!isNaN(t)&&t>=1&&t<=5?String(t):e.replace(/\s+/g,"-").replace(/[^\w-]/g,"").replace(/--+/g,"-").replace(/^-|-$/g,"")}var Ox=class extends xo.Component{constructor(e,t,a,r){super();this.app=e;this.plugin=t;this.isEditing=!1;this.originalTask=null;this.isSaving=!1;this.contentInput=null;this.embeddedEditor=null;this.activeInput=null;this.activeSuggest=null;this.debouncedSave=null;this.boundHandlers={stopPropagation:e=>e.stopPropagation(),handleKeydown:e=>this.handleKeydown(e),handleBlur:e=>this.handleBlur(e),handleInput:e=>this.handleInput(e)};this.task=a,this.options=r}onload(){this.containerEl=createDiv({cls:"inline-editor"})}initializeEditingState(){this.isEditing&&(console.warn("Editor already in editing state, forcing cleanup"),this.cleanupEditors()),this.isEditing=!1,this.isSaving=!1,this.debouncedSave=(0,xo.debounce)(async()=>{await this.saveTask()},800),this.originalTask={...this.task,metadata:{...this.task.metadata}}}showContentEditor(e){this.initializeEditingState(),this.isEditing=!0,e.empty();let t=Ka(this.task.content);if(!t&&this.task.originalMarkdown){let a=this.task.originalMarkdown.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"");t=Ka(a).trim()}!t&&this.task.content&&(t=Ka(this.task.content).trim()),this.options.useEmbeddedEditor?this.createEmbeddedEditor(e,t||""):this.createTextareaEditor(e,t||"")}createEmbeddedEditor(e,t){let a=e.createDiv({cls:"inline-embedded-editor-container"});this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);try{this.embeddedEditor=yi(this.app,a,{value:t,placeholder:"Enter task content...",cls:"inline-embedded-editor",onEnter:(r,i,n)=>(this.finishContentEdit(e).catch(console.error),!0),onEscape:r=>{this.cancelContentEdit(e)},onBlur:()=>{this.finishContentEdit(e).catch(console.error)},onChange:()=>{var r;this.task.content=((r=this.embeddedEditor)==null?void 0:r.value)||""}}),this.focusEditor()}catch(r){console.error("Failed to create embedded editor, falling back to textarea:",r),a.remove(),this.createTextareaEditor(e,t)}}createTextareaEditor(e,t){this.contentInput=e.createEl("textarea",{cls:"inline-content-editor"}),this.registerDomEvent(this.contentInput,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(this.contentInput,"mousedown",this.boundHandlers.stopPropagation),this.contentInput.value=t,this.autoResizeTextarea(this.contentInput),this.contentInput.focus(),this.contentInput.select(),this.registerDomEvent(this.contentInput,"input",this.boundHandlers.handleInput),this.registerDomEvent(this.contentInput,"blur",this.boundHandlers.handleBlur),this.registerDomEvent(this.contentInput,"keydown",this.boundHandlers.handleKeydown)}showMetadataEditor(e,t,a){this.initializeEditingState(),this.isEditing=!0,e.empty();let r=e.createDiv({cls:"inline-metadata-editor"});switch(this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation),t){case"project":this.createProjectEditor(r,a);break;case"tags":this.createTagsEditor(r,a);break;case"context":this.createContextEditor(r,a);break;case"dueDate":case"startDate":case"scheduledDate":case"cancelledDate":case"completedDate":this.createDateEditor(r,t,a);break;case"priority":this.createPriorityEditor(r,a);break;case"recurrence":this.createRecurrenceEditor(r,a);break;case"onCompletion":this.createOnCompletionEditor(r,a);break;case"dependsOn":this.createDependsOnEditor(r,a);break;case"id":this.createIdEditor(r,a);break}}showAddMetadataButton(e){let t=e.createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,xo.setIcon)(t,"plus"),this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.showMetadataMenu(t)})}createProjectEditor(e,t){let a=bt(this.task),r=ur(this.task),i=e.createEl("input",{type:"text",cls:"inline-project-input",value:a||"",placeholder:"Enter project name"});if(this.task.metadata.tgProject&&(!this.task.metadata.project||!this.task.metadata.project.trim())){let o=this.task.metadata.tgProject,l=e.createDiv({cls:"project-source-indicator inline-indicator"}),d="",u="";switch(o.type){case"path":d=c("Auto from path"),u="\u{1F4C1}";break;case"metadata":d=c("Auto from metadata"),u="\u{1F4C4}";break;case"config":d=c("Auto from config"),u="\u2699\uFE0F";break;default:d=c("Auto-assigned"),u="\u{1F517}"}l.createEl("span",{cls:"indicator-icon",text:u}),l.createEl("span",{cls:"indicator-text",text:d}),r?(l.addClass("readonly-indicator"),i.disabled=!0,i.title=c("This project is automatically assigned and cannot be changed")):(l.addClass("override-indicator"),i.title=c("You can override the auto-assigned project"))}this.activeInput=i,this.registerDomEvent(i,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(i,"mousedown",this.boundHandlers.stopPropagation);let n=o=>{r||(this.task.metadata.project=o||void 0)};this.setupInputEvents(i,n,"project"),r||(this.activeSuggest=new Or(this.app,i,this.plugin)),i.focus(),i.select()}createTagsEditor(e,t){let a=e.createEl("input",{type:"text",cls:"inline-tags-input",value:t||"",placeholder:"Enter tags (comma separated)"});this.activeInput=a,this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=i=>{this.task.metadata.tags=i?i.split(",").map(n=>n.trim()).filter(n=>n):[]};this.setupInputEvents(a,r,"tags"),this.activeSuggest=new zs(this.app,a,this.plugin),a.focus(),a.select()}createContextEditor(e,t){let a=e.createEl("input",{type:"text",cls:"inline-context-input",value:t||"",placeholder:"Enter context"});this.activeInput=a,this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=i=>{this.task.metadata.context=i||void 0};this.setupInputEvents(a,r,"context"),this.activeSuggest=new Nr(this.app,a,this.plugin),a.focus(),a.select()}createDateEditor(e,t,a){let r=e.createEl("input",{type:"date",cls:"inline-date-input",value:a||""});this.activeInput=r,this.registerDomEvent(r,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(r,"mousedown",this.boundHandlers.stopPropagation);let i=n=>{if(n){let[o,l,d]=n.split("-").map(Number);this.task.metadata[t]=new Date(o,l-1,d).getTime()}else this.task.metadata[t]=void 0};this.setupInputEvents(r,i,t),r.focus()}createPriorityEditor(e,t){let a=e.createEl("select",{cls:"inline-priority-select"});this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation),[{value:"",text:"None"},{value:"1",text:"\u23EC\uFE0F Lowest"},{value:"2",text:"\u{1F53D} Low"},{value:"3",text:"\u{1F53C} Medium"},{value:"4",text:"\u23EB High"},{value:"5",text:"\u{1F53A} Highest"}].forEach(n=>{let o=a.createEl("option",{value:n.value,text:n.text})}),a.value=t||"",this.activeInput=a;let i=n=>{this.task.metadata.priority=n?parseInt(n):void 0};this.setupInputEvents(a,i,"priority"),a.focus()}createRecurrenceEditor(e,t){let a=e.createEl("input",{type:"text",cls:"inline-recurrence-input",value:t||"",placeholder:"e.g. every day, every 2 weeks"});this.activeInput=a,this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=i=>{this.task.metadata.recurrence=i||void 0};this.setupInputEvents(a,r,"recurrence"),a.focus(),a.select()}createOnCompletionEditor(e,t){let a=e.createDiv({cls:"inline-oncompletion-button-container"});this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=a.createEl("button",{cls:"inline-oncompletion-config-button",text:t||this.task.metadata.onCompletion||c("Configure...")});this.registerDomEvent(r,"click",i=>{i.preventDefault(),i.stopPropagation(),this.openOnCompletionModal(e,t)}),this.registerDomEvent(a,"keydown",i=>{var n;if(i.key==="Escape"){let o=(n=a.closest(".inline-metadata-editor"))==null?void 0:n.parentElement;o&&this.cancelMetadataEdit(o)}else i.key==="Enter"&&!i.shiftKey&&(i.preventDefault(),this.openOnCompletionModal(e,t))}),r.focus()}async openOnCompletionModal(e,t){let{OnCompletionModal:a}=await Promise.resolve().then(()=>(m_(),p_));new a(this.app,this.plugin,{initialValue:t||this.task.metadata.onCompletion||"",onSave:i=>{var l,d;this.task.metadata.onCompletion=i||void 0;let n=e.querySelector(".inline-oncompletion-config-button");n&&(n.textContent=i||c("Configure...")),(l=this.debouncedSave)==null||l.call(this);let o=(d=e.closest(".inline-metadata-editor"))==null?void 0:d.parentElement;o&&this.finishMetadataEdit(o,"onCompletion").catch(console.error)},onCancel:()=>{var n;let i=(n=e.closest(".inline-metadata-editor"))==null?void 0:n.parentElement;i&&this.cancelMetadataEdit(i)}}).open()}createDependsOnEditor(e,t){let a=e.createEl("input",{type:"text",cls:"inline-dependson-input",value:t||(this.task.metadata.dependsOn?this.task.metadata.dependsOn.join(", "):""),placeholder:"Task IDs separated by commas"});this.activeInput=a,this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=i=>{i.trim()?this.task.metadata.dependsOn=i.split(",").map(n=>n.trim()).filter(n=>n.length>0):this.task.metadata.dependsOn=void 0};this.setupInputEvents(a,r,"dependsOn"),a.focus(),a.select()}createIdEditor(e,t){let a=e.createEl("input",{type:"text",cls:"inline-id-input",value:t||this.task.metadata.id||"",placeholder:"Unique task identifier"});this.activeInput=a,this.registerDomEvent(a,"click",this.boundHandlers.stopPropagation),this.registerDomEvent(a,"mousedown",this.boundHandlers.stopPropagation);let r=i=>{this.task.metadata.id=i||void 0};this.setupInputEvents(a,r,"id"),a.focus(),a.select()}setupInputEvents(e,t,a){e._fieldType=a,e._updateCallback=t,this.registerDomEvent(e,"input",this.boundHandlers.handleInput),this.registerDomEvent(e,"blur",this.boundHandlers.handleBlur),this.registerDomEvent(e,"keydown",this.boundHandlers.handleKeydown)}handleInput(e){var a;let t=e.target;if(t===this.contentInput)this.autoResizeTextarea(t),this.task.content=t.value;else if(t===this.activeInput){let r=t._updateCallback;r&&(r(t.value),(a=this.debouncedSave)==null||a.call(this))}}handleBlur(e){var r,i;let t=e.target,a=e.relatedTarget;if(!(a&&((r=this.containerEl)==null?void 0:r.contains(a)))){if(t===this.contentInput&&this.isEditing){let n=t.closest(".task-item-content");n&&this.finishContentEdit(n).catch(console.error);return}if(t===this.activeInput&&this.isEditing){let n=t._fieldType,o=(i=t.closest(".inline-metadata-editor"))==null?void 0:i.parentElement;o&&n&&this.finishMetadataEdit(o,n).catch(console.error)}}}handleKeydown(e){var t,a;if(e.key==="Escape"){let r=e.target;if(r===this.contentInput){let i=r.closest(".task-item-content");i&&this.cancelContentEdit(i)}else if(r===this.activeInput){let i=(t=r.closest(".inline-metadata-editor"))==null?void 0:t.parentElement;i&&this.cancelMetadataEdit(i)}}else if(e.key==="Enter"&&!e.shiftKey){let r=e.target;if(r===this.activeInput){e.preventDefault();let i=r._fieldType,n=(a=r.closest(".inline-metadata-editor"))==null?void 0:a.parentElement;n&&i&&this.finishMetadataEdit(n,i).catch(console.error)}}}autoResizeTextarea(e){e.style.height="auto",e.style.height=e.scrollHeight+"px"}focusEditor(){requestAnimationFrame(()=>{var e;((e=this.embeddedEditor)==null?void 0:e.activeCM)&&(this.embeddedEditor.activeCM.focus(),this.embeddedEditor.activeCM.dispatch({selection:{anchor:0,head:this.embeddedEditor.value.length}}))})}showMetadataMenu(e){let t=new xo.Menu,r=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(i=>{switch(i.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});r.length===0?t.addItem(i=>{i.setTitle("All metadata fields are already set").setDisabled(!0)}):r.forEach(i=>{t.addItem(n=>{n.setTitle(i.label).setIcon(i.icon).onClick(()=>{this.showMetadataEditor(e.parentElement,i.key)})})}),t.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}async saveTask(){if(!this.isEditing||!this.originalTask||this.isSaving)return!1;if(!this.hasTaskChanges(this.originalTask,this.task))return!0;this.isSaving=!0;try{return await this.options.onTaskUpdate(this.originalTask,this.task),this.originalTask={...this.task,metadata:{...this.task.metadata}},!0}catch(t){return console.error("Failed to save task:",t),this.task={...this.originalTask,metadata:{...this.originalTask.metadata}},!1}finally{this.isSaving=!1}}hasTaskChanges(e,t){if(e.content!==t.content)return!0;let a=["project","tags","context","priority","dueDate","startDate","scheduledDate","cancelledDate","completedDate","recurrence"];for(let r of a){let i=e.metadata[r],n=t.metadata[r];if(r==="tags"){let o=Array.isArray(i)?i:[],l=Array.isArray(n)?n:[];if(o.length!==l.length)return!0;for(let d=0;d<o.length;d++)if(o[d]!==l[d])return!0}else if(i!==n)return!0}return!1}async finishContentEdit(e){if(this.isSaving)for(;this.isSaving;)await new Promise(a=>setTimeout(a,50));this.embeddedEditor?this.task.content=this.embeddedEditor.value:this.contentInput&&(this.task.content=this.contentInput.value);let t=await this.saveTask();if(!t){console.error("Failed to save task, not finishing edit");return}this.isEditing=!1,this.cleanupEditors(),this.options.onContentEditFinished?this.options.onContentEditFinished(e,this.task):e.textContent=this.task.content,this.releaseFromManager()}cancelContentEdit(e){this.isEditing=!1,this.originalTask&&(this.task.content=this.originalTask.content),this.cleanupEditors(),this.options.onContentEditFinished?this.options.onContentEditFinished(e,this.task):e.textContent=this.task.content,this.releaseFromManager()}async finishMetadataEdit(e,t){if(this.isSaving)for(;this.isSaving;)await new Promise(r=>setTimeout(r,50));if(!await this.saveTask()){console.error("Failed to save task metadata, not finishing edit");return}this.cleanupEditors(),this.isEditing=!1,this.originalTask=null,e.empty(),this.restoreMetadataDisplay(e,t),this.options.onMetadataEditFinished&&this.options.onMetadataEditFinished(e,this.task,t),this.releaseFromManager()}cancelMetadataEdit(e){let t=this.activeInput?this.activeInput._fieldType:null;this.originalTask&&(this.task={...this.originalTask,metadata:{...this.originalTask.metadata}}),this.cleanupEditors(),this.isEditing=!1,this.originalTask=null,t&&(e.empty(),this.restoreMetadataDisplay(e,t)),this.options.onMetadataEditFinished&&t&&this.options.onMetadataEditFinished(e,this.task,t),this.releaseFromManager()}restoreMetadataDisplay(e,t){switch(t){case"project":this.task.metadata.project&&(e.textContent=this.task.metadata.project.split("/").pop()||this.task.metadata.project,e.className="task-project");break;case"tags":this.task.metadata.tags&&this.task.metadata.tags.length>0&&(e.className="task-tags-container",this.task.metadata.tags.filter(r=>!r.startsWith("#project")).forEach(r=>{let i=e.createEl("span",{cls:"task-tag",text:r.startsWith("#")?r:`#${r}`})}));break;case"context":this.task.metadata.context&&(e.textContent=this.task.metadata.context,e.className="task-context");break;case"dueDate":case"startDate":case"scheduledDate":case"cancelledDate":case"completedDate":let a=this.task.metadata[t];if(a){let r=new Date(a);e.textContent=r.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}),e.className=`task-date task-${t}`}break;case"recurrence":this.task.metadata.recurrence&&(e.textContent=this.task.metadata.recurrence,e.className="task-date task-recurrence");break;case"priority":if(this.task.metadata.priority){e.textContent="!".repeat(this.task.metadata.priority);let r=nr(this.task.metadata.priority);e.className=r?`task-priority priority-${r}`:"task-priority"}break;case"onCompletion":this.task.metadata.onCompletion&&(e.textContent=this.task.metadata.onCompletion,e.className="task-oncompletion");break;case"dependsOn":this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&(e.textContent=this.task.metadata.dependsOn.join(", "),e.className="task-dependson");break;case"id":this.task.metadata.id&&(e.textContent=this.task.metadata.id,e.className="task-id");break}}cleanupEditors(){this.embeddedEditor&&(this.embeddedEditor.destroy(),this.embeddedEditor=null),this.activeSuggest&&(typeof this.activeSuggest.close=="function"&&this.activeSuggest.close(),this.activeSuggest=null),this.activeInput=null,this.contentInput=null,this.debouncedSave=null}isCurrentlyEditing(){return this.isEditing}getUpdatedTask(){return this.task}updateTask(e,t){this.task=e,this.options=t,this.originalTask=null,this.isEditing=!1,this.cleanupEditors()}reset(){this.isEditing=!1,this.originalTask=null,this.isSaving=!1,this.cleanupEditors(),this.task={}}onunload(){this.cleanupEditors(),this.containerEl&&this.containerEl.remove()}releaseFromManager(){this.isEditing=!1,this.originalTask=null,this.isSaving=!1}};var ip=class extends f_.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.editorPool=[];this.activeEditors=new Map;this.maxPoolSize=3;this.lastCleanupTime=0;this.cleanupInterval=3e4;this.stats={editorsCreated:0,editorsReused:0,editorsDestroyed:0}}getEditor(e,t){let a=this.activeEditors.get(e.id);if(a)return this.shouldUpdateEditor(a,t)&&a.updateTask(e,t),a;this.performPeriodicCleanup();let r=this.editorPool.pop();return r?(r.updateTask(e,t),this.stats.editorsReused++):(r=this.createNewEditor(e,t),this.stats.editorsCreated++),this.activeEditors.set(e.id,r),r}releaseEditor(e){let t=this.activeEditors.get(e);if(!!t){if(this.activeEditors.delete(e),t.isCurrentlyEditing()){this.destroyEditor(t);return}t.reset(),this.editorPool.length<this.maxPoolSize?this.editorPool.push(t):this.destroyEditor(t)}}forceReleaseEditor(e){let t=this.activeEditors.get(e);!t||(this.activeEditors.delete(e),this.destroyEditor(t))}hasActiveEditor(e){return this.activeEditors.has(e)}getActiveEditor(e){return this.activeEditors.get(e)}releaseAllEditors(){let e=Array.from(this.activeEditors.keys());for(let t of e)this.releaseEditor(t)}forceReleaseAllEditors(){let e=Array.from(this.activeEditors.keys());for(let t of e)this.forceReleaseEditor(t);for(let t of this.editorPool)this.destroyEditor(t);this.editorPool=[]}getStats(){return{...this.stats,activeEditors:this.activeEditors.size,pooledEditors:this.editorPool.length,totalMemoryUsage:this.activeEditors.size+this.editorPool.length}}resetStats(){this.stats={editorsCreated:0,editorsReused:0,editorsDestroyed:0}}createNewEditor(e,t){let a=new Ox(this.app,this.plugin,e,t);return this.addChild(a),a}destroyEditor(e){this.removeChild(e),e.unload(),this.stats.editorsDestroyed++}shouldUpdateEditor(e,t){return!e.isCurrentlyEditing()}performPeriodicCleanup(){let e=Date.now();if(e-this.lastCleanupTime<this.cleanupInterval)return;this.lastCleanupTime=e;let t=[];for(let[a,r]of this.activeEditors)r.isCurrentlyEditing()&&console.warn(`Editor for task ${a} appears to be stuck in editing state`);if(this.editorPool.length>this.maxPoolSize){let a=this.editorPool.splice(this.maxPoolSize);for(let r of a)this.destroyEditor(r)}}onload(){this.lastCleanupTime=Date.now()}onunload(){this.forceReleaseAllEditors()}};var Bi=class extends md.Component{constructor(e,t,a,r){super();this.task=e;this.viewMode=t;this.app=a;this.plugin=r;this.element=createEl("div",{cls:"task-item",attr:{"data-task-id":this.task.id}}),this.settings=this.plugin.settings,Bi.editorManager||(Bi.editorManager=new ip(this.app,this.plugin))}getInlineEditor(){let e={onTaskUpdate:async(t,a)=>{if(this.onTaskUpdate){t.content,a.content;try{await this.onTaskUpdate(t,a)}catch(r){throw console.error("Error in listItem onTaskUpdate:",r),r}}else console.warn("No onTaskUpdate callback available")},onContentEditFinished:(t,a)=>{var r;this.task=a,this.renderMarkdown(),this.updateTaskDisplay(),(r=Bi.editorManager)==null||r.releaseEditor(this.task.id)},onMetadataEditFinished:(t,a,r)=>{var i;this.task=a,this.updateTaskDisplay(),(i=Bi.editorManager)==null||i.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return Bi.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=Bi.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))||!1}onload(){this.registerDomEvent(this.element,"contextmenu",e=>{this.task,this.onTaskContextMenu&&this.onTaskContextMenu(e,this.task)}),this.renderTaskItem()}renderTaskItem(){this.element.empty(),this.task.completed&&this.element.classList.add("task-completed");let e=createEl("div",{cls:"task-checkbox"},t=>{let a=Ot(this.task.status,this.task,t);this.registerDomEvent(a,"click",r=>{r.stopPropagation(),this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(a.checked=!0,a.dataset.task="x")})});if(this.element.appendChild(e),this.containerEl=this.element.createDiv({cls:"task-item-container"}),this.contentMetadataContainer=this.containerEl.createDiv({cls:"task-content-metadata-container"}),this.contentEl=this.contentMetadataContainer.createDiv({cls:"task-item-content"}),this.registerContentClickHandler(),this.renderMarkdown(),this.metadataEl=this.contentMetadataContainer.createDiv({cls:"task-item-metadata"}),this.renderMetadata(),this.task.metadata.priority){this.task.metadata.priority;let t;if(typeof this.task.metadata.priority=="string")switch(this.task.metadata.priority.toLowerCase()){case"low":t=1;break;case"medium":t=2;break;case"high":t=3;break;default:t=parseInt(this.task.metadata.priority)||1;break}else t=this.task.metadata.priority;let a=nr(t),r=["task-priority"];a&&r.push(`priority-${a}`);let i=createDiv({cls:r}),n="\u2022";n="!".repeat(t),i.textContent=n,this.element.appendChild(i)}this.registerDomEvent(this.element,"click",()=>{this.onTaskSelected&&this.onTaskSelected(this.task)})}renderMetadata(){this.metadataEl.empty(),this.task.metadata.cancelledDate&&this.renderDateMetadata("cancelled",this.task.metadata.cancelledDate),this.task.completed?(this.task.metadata.completedDate&&this.renderDateMetadata("completed",this.task.metadata.completedDate),this.task.metadata.createdDate&&this.renderDateMetadata("created",this.task.metadata.createdDate)):(this.task.metadata.dueDate&&this.renderDateMetadata("due",this.task.metadata.dueDate),this.task.metadata.scheduledDate&&this.renderDateMetadata("scheduled",this.task.metadata.scheduledDate),this.task.metadata.startDate&&this.renderDateMetadata("start",this.task.metadata.startDate),this.task.metadata.recurrence&&this.renderRecurrenceMetadata()),(this.task.metadata.project||this.task.metadata.tgProject)&&this.viewMode!=="projects"&&this.renderProjectMetadata(),this.task.metadata.tags&&this.task.metadata.tags.length>0&&this.renderTagsMetadata(),this.task.metadata.onCompletion&&this.renderOnCompletionMetadata(),this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&this.renderDependsOnMetadata(),this.task.metadata.id&&this.renderIdMetadata(),this.renderAddMetadataButton()}renderDateMetadata(e,t){let a=this.metadataEl.createEl("div",{cls:["task-date",`task-${e}-date`]}),r=new Date(t),i="",n="";if(e==="due"){let o=new Date;o.setHours(0,0,0,0);let l=new Date(o);l.setDate(l.getDate()+1),r.getTime()<o.getTime()?(i=c("Overdue")+(this.settings.useRelativeTimeForDate?" | "+Us(r):""),n="task-overdue"):r.getTime()===o.getTime()?(i=this.settings.useRelativeTimeForDate&&Us(r)||"Today",n="task-due-today"):r.getTime()===l.getTime()?(i=this.settings.useRelativeTimeForDate&&Us(r)||"Tomorrow",n="task-due-tomorrow"):i=r.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}else i=this.settings.useRelativeTimeForDate?Us(r):r.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});n&&a.classList.add(n),a.textContent=i,a.setAttribute("aria-label",r.toLocaleDateString()),this.plugin.settings.enableInlineEditor&&this.registerDomEvent(a,"click",o=>{if(o.stopPropagation(),!this.isCurrentlyEditing()){let l=this.formatDateForInput(r),d=e==="due"?"dueDate":e==="scheduled"?"scheduledDate":e==="start"?"startDate":e==="cancelled"?"cancelledDate":e==="completed"?"completedDate":null;d&&this.getInlineEditor().showMetadataEditor(a,d,l)}})}renderProjectMetadata(){let e,t=!1;if(this.task.metadata.project?e=this.task.metadata.project:this.task.metadata.tgProject&&(e=this.task.metadata.tgProject.name,t=this.task.metadata.tgProject.readonly||!1),!e)return;let a=this.metadataEl.createEl("div",{cls:"task-project"});!this.task.metadata.project&&this.task.metadata.tgProject&&(a.addClass("task-project-tg"),a.title=`Project from ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`),a.textContent=e.split("/").pop()||e,this.plugin.settings.enableInlineEditor&&!t&&this.registerDomEvent(a,"click",r=>{r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(a,"project",this.task.metadata.project||"")})}renderTagsMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-tags-container"});this.task.metadata.tags.filter(t=>!t.startsWith("#project")).forEach(t=>{let a=e.createEl("span",{cls:"task-tag",text:t.startsWith("#")?t:`#${t}`});this.plugin.settings.enableInlineEditor&&this.registerDomEvent(a,"click",r=>{var i;if(r.stopPropagation(),!this.isCurrentlyEditing()){let n=((i=this.task.metadata.tags)==null?void 0:i.join(", "))||"";this.getInlineEditor().showMetadataEditor(e,"tags",n)}})})}renderRecurrenceMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-date task-recurrence"});e.textContent=this.task.metadata.recurrence||"",this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"recurrence",this.task.metadata.recurrence||"")})}renderOnCompletionMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-oncompletion"});e.textContent=`\u{1F3C1} ${this.task.metadata.onCompletion}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"onCompletion",this.task.metadata.onCompletion||"")})}renderDependsOnMetadata(){var t;let e=this.metadataEl.createEl("div",{cls:"task-dependson"});e.textContent=`\u26D4 ${(t=this.task.metadata.dependsOn)==null?void 0:t.join(", ")}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",a=>{var r;a.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"dependsOn",((r=this.task.metadata.dependsOn)==null?void 0:r.join(", "))||"")})}renderIdMetadata(){let e=this.metadataEl.createEl("div",{cls:"task-id"});e.textContent=`\u{1F194} ${this.task.metadata.id}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(e,"click",t=>{t.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(e,"id",this.task.metadata.id||"")})}renderAddMetadataButton(){if(!this.plugin.settings.enableInlineEditor)return;let t=this.metadataEl.createDiv({cls:"add-metadata-container"}).createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,md.setIcon)(t,"plus"),this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.showMetadataMenu(t)})}showMetadataMenu(e){let t=this.getInlineEditor(),a=new md.Menu,i=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(n=>{switch(n.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});i.length===0?a.addItem(n=>{n.setTitle("All metadata fields are already set").setDisabled(!0)}):i.forEach(n=>{a.addItem(o=>{o.setTitle(n.label).setIcon(n.icon).onClick(()=>{let l=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(l,n.key)})})}),a.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}formatDateForInput(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${r}`}renderMarkdown(){this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.contentEl.empty(),this.markdownRenderer=new Qt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown||"\u200B"),this.registerContentClickHandler(),requestAnimationFrame(()=>{this.updateLayoutMode()})}updateLayoutMode(){if(!this.contentEl||!this.contentMetadataContainer)return;if(!this.plugin.settings.enableDynamicMetadataPositioning){this.contentMetadataContainer.toggleClass("multi-line-content",!0),this.contentMetadataContainer.toggleClass("single-line-content",!1);return}let e=window.getComputedStyle(this.contentEl),t=parseFloat(e.lineHeight)||parseFloat(e.fontSize)*1.4,r=this.contentEl.scrollHeight>t*1.2;this.contentMetadataContainer.toggleClass("multi-line-content",r),this.contentMetadataContainer.toggleClass("single-line-content",!r)}registerContentClickHandler(){!this.plugin.settings.enableInlineEditor||this.registerDomEvent(this.contentEl,"click",e=>{e.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showContentEditor(this.contentEl)})}updateTaskDisplay(){this.renderTaskItem()}getTask(){return this.task}updateTask(e){let t=this.task;this.task=e,t.completed!==e.completed&&(e.completed?this.element.classList.add("task-completed"):this.element.classList.remove("task-completed")),(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&(this.contentEl.empty(),this.renderMarkdown()),JSON.stringify(t.metadata)!==JSON.stringify(e.metadata)&&this.renderMetadata()}setSelected(e){e?this.element.classList.add("selected"):this.element.classList.remove("selected")}onunload(){var e;((e=Bi.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))&&Bi.editorManager.releaseEditor(this.task.id),this.element.detach()}},fd=Bi;fd.editorManager=null;function h_(s){let e=new Map;s.forEach(a=>{e.set(a.id,{...a})});let t=[];return s.forEach(a=>{let r=e.get(a.id);if(a.metadata.parent&&e.has(a.metadata.parent)){let i=e.get(a.metadata.parent);i.metadata.children.includes(a.id)||i.metadata.children.push(a.id)}else t.push(r)}),t}var Sn=A(require("obsidian"));Cr();Lr();$s();Q();var oi=class extends Sn.Component{constructor(e,t,a,r=0,i=[],n,o){super();this.app=a;this.childTasks=i;this.plugin=o;this.isSelected=!1;this.isExpanded=!0;this.indentLevel=0;this.childComponents=[];this.task=e,this.viewMode=t,this.indentLevel=r,this.taskMap=n,oi.editorManager||(oi.editorManager=new ip(this.app,this.plugin))}getInlineEditor(){let e={onTaskUpdate:async(t,a)=>{if(this.onTaskUpdate)try{await this.onTaskUpdate(t,a)}catch(r){throw console.error("Error in treeItem onTaskUpdate:",r),r}else console.warn("No onTaskUpdate callback available")},onContentEditFinished:(t,a)=>{var r;this.task=a,this.renderMarkdown(),this.updateTaskDisplay(),(r=oi.editorManager)==null||r.releaseEditor(this.task.id)},onMetadataEditFinished:(t,a,r)=>{var i;this.task=a,this.updateTaskDisplay(),(i=oi.editorManager)==null||i.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return oi.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=oi.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))||!1}onload(){this.element=createDiv({cls:["task-item","tree-task-item"],attr:{"data-task-id":this.task.id}}),this.registerDomEvent(this.element,"contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.onTaskContextMenu&&this.onTaskContextMenu(e,this.task)}),this.parentContainer=this.element.createDiv({cls:"task-parent-container"}),this.renderTaskContent(),this.childrenContainer=this.element.createDiv({cls:"task-children-container"}),this.renderChildTasks(),this.registerDomEvent(this.parentContainer,"click",e=>{(e.target===this.parentContainer||this.parentContainer.contains(e.target))&&(e.target.classList.contains("task-checkbox")?(e.stopPropagation(),this.toggleTaskCompletion()):e.target.classList.contains("task-expand-toggle")?e.stopPropagation():this.selectTask())})}renderTaskContent(){if(this.parentContainer.empty(),this.parentContainer.classList.toggle("completed",this.task.completed),this.parentContainer.classList.toggle("selected",this.isSelected),this.indentLevel>0){let r=this.parentContainer.createDiv({cls:"task-indent"});r.style.width=`${this.indentLevel*30}px`}this.task.metadata.children&&this.task.metadata.children.length>0&&(this.toggleEl=this.parentContainer.createDiv({cls:"task-expand-toggle"}),(0,Sn.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.registerDomEvent(this.toggleEl,"click",r=>{r.stopPropagation(),this.toggleExpand()}));let e=this.parentContainer.createDiv({cls:"task-checkbox"},r=>{let i=Ot(this.task.status,this.task,r);this.registerDomEvent(i,"click",n=>{n.stopPropagation(),this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(i.checked=!0,i.dataset.task="x")})}),t=this.parentContainer.createDiv({cls:"task-item-container"});this.contentMetadataContainer=t.createDiv({cls:"task-content-metadata-container"}),this.contentEl=this.contentMetadataContainer.createDiv({cls:"task-item-content"}),this.registerContentClickHandler(),this.renderMarkdown();let a=this.contentMetadataContainer.createDiv({cls:"task-metadata"});if(this.renderMetadata(a),this.task.metadata.priority){let r=nr(this.task.metadata.priority),i=["task-priority"];r&&i.push(`priority-${r}`);let n=createDiv({cls:i}),o="\u2022";o="!".repeat(this.task.metadata.priority),n.textContent=o,this.parentContainer.appendChild(n)}}renderMetadata(e){e.empty(),this.task.metadata.cancelledDate&&this.renderDateMetadata(e,"cancelled",this.task.metadata.cancelledDate),this.task.completed?(this.task.metadata.completedDate&&this.renderDateMetadata(e,"completed",this.task.metadata.completedDate),this.task.metadata.createdDate&&this.renderDateMetadata(e,"created",this.task.metadata.createdDate)):(this.task.metadata.dueDate&&this.renderDateMetadata(e,"due",this.task.metadata.dueDate),this.task.metadata.scheduledDate&&this.renderDateMetadata(e,"scheduled",this.task.metadata.scheduledDate),this.task.metadata.startDate&&this.renderDateMetadata(e,"start",this.task.metadata.startDate),this.task.metadata.recurrence&&this.renderRecurrenceMetadata(e)),(this.task.metadata.project||this.task.metadata.tgProject)&&this.viewMode!=="projects"&&this.renderProjectMetadata(e),this.task.metadata.tags&&this.task.metadata.tags.length>0&&this.renderTagsMetadata(e),this.task.metadata.onCompletion&&this.renderOnCompletionMetadata(e),this.task.metadata.dependsOn&&this.task.metadata.dependsOn.length>0&&this.renderDependsOnMetadata(e),this.task.metadata.id&&this.renderIdMetadata(e),this.renderAddMetadataButton(e)}renderDateMetadata(e,t,a){var l,d,u,p;let r=e.createEl("div",{cls:["task-date",`task-${t}-date`]}),i=new Date(a),n="",o="";if(t==="due"){let m=new Date;m.setHours(0,0,0,0);let f=new Date(m);f.setDate(f.getDate()+1),i.getTime()<m.getTime()?(n=c("Overdue")+(((l=this.plugin.settings)==null?void 0:l.useRelativeTimeForDate)?" | "+Us(i):""),o="task-overdue"):i.getTime()===m.getTime()?(n=((d=this.plugin.settings)==null?void 0:d.useRelativeTimeForDate)&&Us(i)||"Today",o="task-due-today"):i.getTime()===f.getTime()?(n=((u=this.plugin.settings)==null?void 0:u.useRelativeTimeForDate)&&Us(i)||"Tomorrow",o="task-due-tomorrow"):n=i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}else n=((p=this.plugin.settings)==null?void 0:p.useRelativeTimeForDate)?Us(i):i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});o&&r.classList.add(o),r.textContent=n,r.setAttribute("aria-label",i.toLocaleDateString()),this.plugin.settings.enableInlineEditor&&this.registerDomEvent(r,"click",m=>{if(m.stopPropagation(),!this.isCurrentlyEditing()){let f=this.getInlineEditor(),h=this.formatDateForInput(i),k=t==="due"?"dueDate":t==="scheduled"?"scheduledDate":t==="start"?"startDate":t==="cancelled"?"cancelledDate":t==="completed"?"completedDate":null;k&&f.showMetadataEditor(r,k,h)}})}renderProjectMetadata(e){let t,a=!1;if(this.task.metadata.project?t=this.task.metadata.project:this.task.metadata.tgProject&&(t=this.task.metadata.tgProject.name,a=this.task.metadata.tgProject.readonly||!1),!t)return;let r=e.createEl("div",{cls:"task-project"});!this.task.metadata.project&&this.task.metadata.tgProject&&(r.addClass("task-project-tg"),r.title=`Project from ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`),r.textContent=t.split("/").pop()||t,this.plugin.settings.enableInlineEditor&&!a&&this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(r,"project",this.task.metadata.project||"")})}renderTagsMetadata(e){let t=e.createEl("div",{cls:"task-tags-container"}),a=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project";this.task.metadata.tags.filter(r=>!r.startsWith(`#${a}`)).forEach(r=>{let i=t.createEl("span",{cls:"task-tag",text:r.startsWith("#")?r:`#${r}`});this.plugin.settings.enableInlineEditor&&this.registerDomEvent(i,"click",n=>{var o;if(n.stopPropagation(),!this.isCurrentlyEditing()){let l=this.getInlineEditor(),d=((o=this.task.metadata.tags)==null?void 0:o.join(", "))||"";l.showMetadataEditor(t,"tags",d)}})})}renderRecurrenceMetadata(e){let t=e.createEl("div",{cls:"task-date task-recurrence"});t.textContent=this.task.metadata.recurrence||"",this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"recurrence",this.task.metadata.recurrence||"")})}renderOnCompletionMetadata(e){let t=e.createEl("div",{cls:"task-oncompletion"});t.textContent=`\u{1F3C1} ${this.task.metadata.onCompletion}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"onCompletion",this.task.metadata.onCompletion||"")})}renderDependsOnMetadata(e){var a;let t=e.createEl("div",{cls:"task-dependson"});t.textContent=`\u26D4 ${(a=this.task.metadata.dependsOn)==null?void 0:a.join(", ")}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",r=>{var i;r.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"dependsOn",((i=this.task.metadata.dependsOn)==null?void 0:i.join(", "))||"")})}renderIdMetadata(e){let t=e.createEl("div",{cls:"task-id"});t.textContent=`\u{1F194} ${this.task.metadata.id}`,this.plugin.settings.enableInlineEditor&&this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showMetadataEditor(t,"id",this.task.metadata.id||"")})}renderAddMetadataButton(e){if(!this.plugin.settings.enableInlineEditor)return;let a=e.createDiv({cls:"add-metadata-container"}).createEl("button",{cls:"add-metadata-btn",attr:{"aria-label":"Add metadata"}});(0,Sn.setIcon)(a,"plus"),this.registerDomEvent(a,"click",r=>{r.stopPropagation(),this.showMetadataMenu(a)})}showMetadataMenu(e){let t=this.getInlineEditor(),a=new Sn.Menu,i=[{key:"project",label:"Project",icon:"folder"},{key:"tags",label:"Tags",icon:"tag"},{key:"context",label:"Context",icon:"at-sign"},{key:"dueDate",label:"Due Date",icon:"calendar"},{key:"startDate",label:"Start Date",icon:"play"},{key:"scheduledDate",label:"Scheduled Date",icon:"clock"},{key:"cancelledDate",label:"Cancelled Date",icon:"x"},{key:"completedDate",label:"Completed Date",icon:"check"},{key:"priority",label:"Priority",icon:"alert-triangle"},{key:"recurrence",label:"Recurrence",icon:"repeat"},{key:"onCompletion",label:"On Completion",icon:"flag"},{key:"dependsOn",label:"Depends On",icon:"link"},{key:"id",label:"Task ID",icon:"hash"}].filter(n=>{switch(n.key){case"project":return!this.task.metadata.project;case"tags":return!this.task.metadata.tags||this.task.metadata.tags.length===0;case"context":return!this.task.metadata.context;case"dueDate":return!this.task.metadata.dueDate;case"startDate":return!this.task.metadata.startDate;case"scheduledDate":return!this.task.metadata.scheduledDate;case"cancelledDate":return!this.task.metadata.cancelledDate;case"completedDate":return!this.task.metadata.completedDate;case"priority":return!this.task.metadata.priority;case"recurrence":return!this.task.metadata.recurrence;case"onCompletion":return!this.task.metadata.onCompletion;case"dependsOn":return!this.task.metadata.dependsOn||this.task.metadata.dependsOn.length===0;case"id":return!this.task.metadata.id;default:return!0}});i.length===0?a.addItem(n=>{n.setTitle("All metadata fields are already set").setDisabled(!0)}):i.forEach(n=>{a.addItem(o=>{o.setTitle(n.label).setIcon(n.icon).onClick(()=>{let l=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(l,n.key)})})}),a.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}formatDateForInput(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${r}`}renderMarkdown(){this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.contentEl.empty(),this.markdownRenderer=new Qt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown),this.registerContentClickHandler(),requestAnimationFrame(()=>{this.updateLayoutMode()})}updateLayoutMode(){if(!this.contentEl||!this.contentMetadataContainer)return;if(!this.plugin.settings.enableDynamicMetadataPositioning){this.contentMetadataContainer.toggleClass("multi-line-content",!0),this.contentMetadataContainer.toggleClass("single-line-content",!1);return}let e=window.getComputedStyle(this.contentEl),t=parseFloat(e.lineHeight)||parseFloat(e.fontSize)*1.4,r=this.contentEl.scrollHeight>t*1.2;this.contentMetadataContainer.toggleClass("multi-line-content",r),this.contentMetadataContainer.toggleClass("single-line-content",!r)}registerContentClickHandler(){!this.plugin.settings.enableInlineEditor||this.registerDomEvent(this.contentEl,"click",e=>{e.stopPropagation(),this.isCurrentlyEditing()||this.getInlineEditor().showContentEditor(this.contentEl)})}updateTaskDisplay(){this.renderTaskContent()}renderChildTasks(){this.childComponents.forEach(i=>{i.unload()}),this.childComponents=[],this.childrenContainer.empty(),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide();let e=yt(this.plugin,this.viewMode),t=this.plugin.settings.taskStatuses.abandoned.split("|"),a=this.plugin.settings.taskStatuses.completed.split("|"),r=this.childTasks;e.hideCompletedAndAbandonedTasks&&(r=this.childTasks.filter(i=>!i.completed&&!t.includes(i.status.toLowerCase())&&!a.includes(i.status.toLowerCase()))),r.forEach(i=>{let n=[];this.taskMap.forEach(l=>{l.metadata.parent===i.id&&n.push(l)});let o=new oi(i,this.viewMode,this.app,this.indentLevel+1,n,this.taskMap,this.plugin);o.onTaskSelected=l=>{this.onTaskSelected&&this.onTaskSelected(l)},o.onTaskCompleted=l=>{this.onTaskCompleted&&this.onTaskCompleted(l)},o.onToggleExpand=(l,d)=>{this.onToggleExpand&&this.onToggleExpand(l,d)},o.onTaskContextMenu=(l,d)=>{this.onTaskContextMenu&&this.onTaskContextMenu(l,d)},this.addChild(o),o.load(),this.childrenContainer.appendChild(o.element),this.childComponents.push(o)})}updateChildTasks(e){this.childTasks=e,this.renderChildTasks()}selectTask(){this.onTaskSelected&&this.onTaskSelected(this.task)}toggleTaskCompletion(){let e={...this.task,completed:!this.task.completed};this.task.completed?e.metadata={...this.task.metadata,completedDate:void 0}:e.metadata={...this.task.metadata,completedDate:Date.now()},this.onTaskCompleted&&this.onTaskCompleted(e)}toggleExpand(){this.isExpanded=!this.isExpanded,this.toggleEl instanceof HTMLElement&&(0,Sn.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide(),this.onToggleExpand&&this.onToggleExpand(this.task.id,this.isExpanded)}setSelected(e){this.isSelected=e,this.element.classList.toggle("selected",e)}updateTask(e){let t=this.task;if(this.task=e,this.renderTaskContent(),t.completed!==e.completed&&(e.completed?this.element.classList.add("task-completed"):this.element.classList.remove("task-completed")),(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&(this.contentEl.empty(),this.renderMarkdown()),JSON.stringify(t.metadata)!==JSON.stringify(e.metadata)){let a=this.parentContainer.querySelector(".task-metadata");a&&this.renderMetadata(a)}}updateTaskRecursively(e){for(let t of this.childComponents){if(t.getTask().id===e.id)return t.updateTask(e),!0;if(t.updateTaskRecursively(e))return!0}return!1}getTask(){return this.task}updateSelectionVisuals(e){var a;let t=this.task.id===e;if(this.isSelected!==t){this.isSelected=t;let r=this.element||((a=this.parentContainer)==null?void 0:a.closest(".tree-task-item"));r?(r.classList.toggle("is-selected",this.isSelected),this.parentContainer&&this.parentContainer.classList.toggle("selected",this.isSelected)):console.warn("Could not find element to toggle selection class for task:",this.task.id)}this.childComponents.forEach(r=>r.updateSelectionVisuals(e))}setExpanded(e){this.isExpanded!==e&&(this.isExpanded=e,this.toggleEl instanceof HTMLElement&&(0,Sn.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide())}onunload(){var e;((e=oi.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))&&oi.editorManager.releaseEditor(this.task.id),this.childComponents.forEach(t=>{t.unload()}),this.element&&this.element.parentNode&&this.element.remove()}},hd=oi;hd.editorManager=null;Q();function wK(s){return s.settings.defaultViewMode==="tree"}function vK(s,e){let t=s.loadLocalStorage(`task-genius:view-mode:${e}`);return t==null?null:t==="tree"}function Wi(s,e,t){let a=t?"tree":"list";s.saveLocalStorage(`task-genius:view-mode:${e}`,a)}function _i(s,e,t){let a=vK(s,t);return a!==null?a:wK(e)}var Ar=A(require("obsidian"));xa();function Nx(s){if(!s)return null;let e=s.toLowerCase().trim(),t=(0,Ar.moment)();if(e!=="today")if(e==="tomorrow")t=(0,Ar.moment)().add(1,"day");else if(e==="yesterday")t=(0,Ar.moment)().subtract(1,"day");else if(e==="next week")t=(0,Ar.moment)().add(1,"week").startOf("week");else if(e==="last week")t=(0,Ar.moment)().subtract(1,"week").startOf("week");else if(e==="next month")t=(0,Ar.moment)().add(1,"month").startOf("month");else if(e==="last month")t=(0,Ar.moment)().subtract(1,"month").startOf("month");else{let a=(0,Ar.moment)(e,"YYYY-MM-DD",!0);if(a.isValid())t=a;else return console.warn(`Could not parse date filter string: ${s}`),null}return t.startOf("day")}function g_(s,e,t){let a=yt(s,t),r=s.settings.taskStatuses.abandoned.split("|"),i=s.settings.taskStatuses.completed.split("|");return a.hideCompletedAndAbandonedTasks?!e.completed&&!r.includes(e.status.toLowerCase())&&!i.includes(e.status.toLowerCase()):!0}function k_(s,e,t){return yt(s,t).filterBlanks?e.content.trim()!=="":!0}function Lx(s,e){if(!e.filterGroups||e.filterGroups.length===0)return!0;let t=e.filterGroups.map(a=>bK(s,a));return e.rootCondition==="all"?t.every(a=>a):e.rootCondition==="any"?t.some(a=>a):e.rootCondition==="none"?!t.some(a=>a):!0}function bK(s,e){if(!e.filters||e.filters.length===0)return!0;let t=e.filters.map(a=>TK(s,a));return e.groupCondition==="all"?t.every(a=>a):e.groupCondition==="any"?t.some(a=>a):e.groupCondition==="none"?!t.some(a=>a):!0}function TK(s,e){let{property:t,condition:a,value:r}=e;if(!a)return!0;switch(t){case"content":return CK(s.content,a,r);case"status":return xK(s.status,a,r);case"priority":return SK(s.metadata.priority,a,r);case"dueDate":return Hx(s.metadata.dueDate,a,r);case"startDate":return Hx(s.metadata.startDate,a,r);case"scheduledDate":return Hx(s.metadata.scheduledDate,a,r);case"tags":return EK(s.metadata.tags,a,r);case"filePath":return DK(s.filePath,a,r);case"completed":return PK(s.completed,a);default:return!0}}function CK(s,e,t){switch(s||(s=""),t||(t=""),e){case"contains":return s.toLowerCase().includes(t.toLowerCase());case"doesNotContain":return!s.toLowerCase().includes(t.toLowerCase());case"is":return s.toLowerCase()===t.toLowerCase();case"isNot":return s.toLowerCase()!==t.toLowerCase();case"startsWith":return s.toLowerCase().startsWith(t.toLowerCase());case"endsWith":return s.toLowerCase().endsWith(t.toLowerCase());case"isEmpty":return s.trim()==="";case"isNotEmpty":return s.trim()!=="";default:return!0}}function xK(s,e,t){switch(s||(s=""),t||(t=""),e){case"contains":return s.toLowerCase().includes(t.toLowerCase());case"doesNotContain":return!s.toLowerCase().includes(t.toLowerCase());case"is":return s.toLowerCase()===t.toLowerCase();case"isNot":return s.toLowerCase()!==t.toLowerCase();case"isEmpty":return s.trim()==="";case"isNotEmpty":return s.trim()!=="";default:return!0}}function SK(s,e,t){let a=typeof s=="number"?s:0;switch(e){case"isEmpty":return s===void 0;case"isNotEmpty":return s!==void 0}if(!t)return!0;let r;try{r=parseInt(t),isNaN(r)&&(r=0)}catch(i){r=0}switch(e){case"is":return a===r;case"isNot":return a!==r;default:return!0}}function Hx(s,e,t){switch(e){case"isEmpty":return s===void 0;case"isNotEmpty":return s!==void 0}if(s===void 0||!t)return!["is","isNot",">","<",">=","<="].includes(e);let a=(0,Ar.moment)(s).startOf("day"),r=(0,Ar.moment)(t,"YYYY-MM-DD").startOf("day");if(!a.isValid()||!r.isValid())return!1;switch(e){case"is":return a.isSame(r,"day");case"isNot":return!a.isSame(r,"day");case">":return a.isAfter(r,"day");case"<":return a.isBefore(r,"day");case">=":return a.isSameOrAfter(r,"day");case"<=":return a.isSameOrBefore(r,"day");default:return!0}}function EK(s,e,t){s||(s=[]),t||(t="");let a=t.toLowerCase();switch(e){case"contains":return s.some(r=>r.toLowerCase().includes(a));case"doesNotContain":return!s.some(r=>r.toLowerCase().includes(a));case"isEmpty":return s.length===0;case"isNotEmpty":return s.length>0;default:return!0}}function DK(s,e,t){switch(s||(s=""),t||(t=""),e){case"contains":return s.toLowerCase().includes(t.toLowerCase());case"doesNotContain":return!s.toLowerCase().includes(t.toLowerCase());case"is":return s.toLowerCase()===t.toLowerCase();case"isNot":return s.toLowerCase()!==t.toLowerCase();case"startsWith":return s.toLowerCase().startsWith(t.toLowerCase());case"endsWith":return s.toLowerCase().endsWith(t.toLowerCase());case"isEmpty":return s.trim()==="";case"isNotEmpty":return s.trim()!=="";default:return!0}}function PK(s,e){switch(e){case"isTrue":return s===!0;case"isFalse":return s===!1;default:return!0}}function Ut(s,e,t,a={}){var d,u,p;let r=[...s],i=yt(t,e),n=i.filterRules||{},o=t.settings.globalFilterRules||{};if(e==="calendar"||typeof e=="string"&&e.startsWith("calendar")||(r=r.filter(m=>{var g,y,w;if(!(((g=m.source)==null?void 0:g.type)==="ics"))return!0;let h=m;return!(((w=(y=h==null?void 0:h.icsEvent)==null?void 0:y.source)==null?void 0:w.showType)==="badge")})),i.hideCompletedAndAbandonedTasks&&(r=r.filter(m=>!m.completed)),i.filterBlanks&&(r=r.filter(m=>m.content.trim()!=="")),o.advancedFilter&&((d=o.advancedFilter.filterGroups)==null?void 0:d.length)>0&&(o.advancedFilter,r=r.filter(m=>Lx(m,o.advancedFilter))),n.advancedFilter&&((u=n.advancedFilter.filterGroups)==null?void 0:u.length)>0&&(n.advancedFilter,r=r.filter(m=>Lx(m,n.advancedFilter))),a.advancedFilter&&((p=a.advancedFilter.filterGroups)==null?void 0:p.length)>0){if(a.advancedFilter,r=r.filter(m=>Lx(m,a.advancedFilter)),r=r.filter(m=>g_(t,m,e)),r=r.filter(m=>k_(t,m,e)),a.textQuery){let m=a.textQuery.toLowerCase();r=r.filter(f=>{var h,k,g;return f.content.toLowerCase().includes(m)||((h=f.metadata.project)==null?void 0:h.toLowerCase().includes(m))||((k=f.metadata.context)==null?void 0:k.toLowerCase().includes(m))||((g=f.metadata.tags)==null?void 0:g.some(y=>y.toLowerCase().includes(m)))})}return r}if(n.textContains){let m=n.textContains.toLowerCase();r=r.filter(f=>f.content.toLowerCase().includes(m))}if(n.tagsInclude&&n.tagsInclude.length>0&&(r=r.filter(m=>{var f;return(f=n.tagsInclude)==null?void 0:f.some(h=>m.metadata.tags.some(k=>typeof k=="string"&&k===h))})),n.tagsExclude&&n.tagsExclude.length>0&&(r=r.filter(m=>{if(!m.metadata.tags||m.metadata.tags.length===0)return!0;let f=m.metadata.tags.map(h=>h.toLowerCase());return!n.tagsExclude.some(h=>{let k=h.toLowerCase();return f.includes(k)||f.includes("#"+k)})})),n.project&&(r=r.filter(m=>{var f,h;return((f=m.metadata.project)==null?void 0:f.trim())===((h=n.project)==null?void 0:h.trim())})),n.priority!==void 0&&(r=r.filter(m=>{var f,h,k;return n.priority==="none"?m.metadata.priority===void 0:((f=n.priority)==null?void 0:f.includes(","))?n.priority.split(",").includes(String((h=m.metadata.priority)!=null?h:0)):m.metadata.priority===parseInt((k=n.priority)!=null?k:"0")})),n.statusInclude&&n.statusInclude.length>0&&(r=r.filter(m=>n.statusInclude.includes(m.status))),n.statusExclude&&n.statusExclude.length>0&&(r=r.filter(m=>!n.statusExclude.includes(m.status))),n.pathIncludes){let m=n.pathIncludes.split(",").filter(f=>f.trim()!=="").map(f=>f.trim().toLowerCase());r=r.filter(f=>m.some(h=>f.filePath.toLowerCase().includes(h)))}if(n.pathExcludes){let m=n.pathExcludes.split(",").filter(f=>f.trim()!=="").map(f=>f.trim().toLowerCase());r=r.filter(f=>!m.some(h=>f.filePath.toLowerCase().includes(h)))}if(n.dueDate){let m=Nx(n.dueDate);m&&(r=r.filter(f=>f.metadata.dueDate?(0,Ar.moment)(f.metadata.dueDate).isSame(m,"day"):!1))}if(n.startDate){let m=Nx(n.startDate);m&&(r=r.filter(f=>f.metadata.startDate?(0,Ar.moment)(f.metadata.startDate).isSame(m,"day"):!1))}if(n.scheduledDate){let m=Nx(n.scheduledDate);m&&(r=r.filter(f=>f.metadata.scheduledDate?(0,Ar.moment)(f.metadata.scheduledDate).isSame(m,"day"):!1))}if(Object.keys(n).length===0)switch(e){case"inbox":r=r.filter(m=>!lj(m));break;case"flagged":r=r.filter(m=>{var f,h;return((f=m.metadata.priority)!=null?f:0)>=3||((h=m.metadata.tags)==null?void 0:h.includes("flagged"))});break}if(r=r.filter(m=>g_(t,m,e)),r=r.filter(m=>k_(t,m,e)),a.textQuery){let m=a.textQuery.toLowerCase();r=r.filter(f=>{var h,k,g;return f.content.toLowerCase().includes(m)||((h=f.metadata.project)==null?void 0:h.toLowerCase().includes(m))||((k=f.metadata.context)==null?void 0:k.toLowerCase().includes(m))||((g=f.metadata.tags)==null?void 0:g.some(y=>y.toLowerCase().includes(m)))})}return n.hasDueDate&&(n.hasDueDate==="any"||(n.hasDueDate==="hasDate"?r=r.filter(m=>m.metadata.dueDate):n.hasDueDate==="noDate"&&(r=r.filter(m=>!m.metadata.dueDate)))),n.hasStartDate&&(n.hasStartDate==="any"||(n.hasStartDate==="hasDate"?r=r.filter(m=>m.metadata.startDate):n.hasStartDate==="noDate"&&(r=r.filter(m=>!m.metadata.startDate)))),n.hasScheduledDate&&(n.hasScheduledDate==="any"||(n.hasScheduledDate==="hasDate"?r=r.filter(m=>m.metadata.scheduledDate):n.hasScheduledDate==="noDate"&&(r=r.filter(m=>!m.metadata.scheduledDate)))),n.hasCompletedDate&&(n.hasCompletedDate==="any"||(n.hasCompletedDate==="hasDate"?r=r.filter(m=>m.metadata.completedDate):n.hasCompletedDate==="noDate"&&(r=r.filter(m=>!m.metadata.completedDate)))),n.hasRecurrence&&(n.hasRecurrence==="any"||(n.hasRecurrence==="hasProperty"?r=r.filter(m=>m.metadata.recurrence):n.hasRecurrence==="noProperty"&&(r=r.filter(m=>!m.metadata.recurrence)))),n.hasCreatedDate&&(n.hasCreatedDate==="any"||(n.hasCreatedDate==="hasDate"?r=r.filter(m=>m.metadata.createdDate):n.hasCreatedDate==="noDate"&&(r=r.filter(m=>!m.metadata.createdDate)))),r}var So=A(require("obsidian"));xa();Q();var gd;(function(l){l.Overdue="overdue",l.DueSoon="due_soon",l.InProgress="/",l.Incomplete=" ",l.Forwarded=">",l.Question="?",l.Completed="x",l.Cancelled="-"})(gd||(gd={}));function MK(s){let e=s.match(/^(\s*)/);return e?e[1].length:0}function AK(s,e=0,t,a,r){let i=s.split(`
`),n=[],o={},l=[];return i.forEach((d,u)=>{let p=e+u,m=Gn(t,d,p+1,a,r);if(m){let f=MK(d),h=m.status,k=new Date;k.setHours(0,0,0,0);let g=k.getTime();!m.completed&&m.status!==gd.Cancelled&&m.metadata.dueDate&&m.metadata.dueDate<g?h=gd.Overdue:h=(Object.values(gd).includes(m.status),m.status);let y={id:m.id,originalMarkdown:m.originalMarkdown,status:m.status,completed:m.completed,content:m.content,priority:m.metadata.priority,dueDate:m.metadata.dueDate,startDate:m.metadata.startDate,scheduledDate:m.metadata.scheduledDate,tags:m.metadata.tags||[],lineNumber:p,indentation:f,children:[],calculatedStatus:h,metadata:m.metadata};for(o[p]=y;l.length>0&&f<=l[l.length-1].indentation;)l.pop();if(l.length>0){let w=l[l.length-1];w.children.push(y),y.parent=w}else n.push(y);l.push(y)}}),n}function y_(s){var p,m,f,h;let e={},t=1;e[gd.Overdue]=t++;let a=s.taskStatusCycle||[],r=s.taskStatusMarks||{},i=s.excludeMarksFromCycle||[],n=(((p=s.taskStatuses)==null?void 0:p.completed)||"x|X").split("|"),o=(((m=s.taskStatuses)==null?void 0:m.abandoned)||"-").split("|"),l=[],d=[],u=[];for(let k of a){let g=r[k];g&&!i.includes(k)&&(n.includes(g)?d.push(g):o.includes(g)?u.push(g):(g in e||(e[g]=t++),l.push(g)))}d.forEach(k=>{k in e||(e[k]=98)}),u.forEach(k=>{k in e||(e[k]=99)});for(let k in s.taskStatuses)(s.taskStatuses[k]||"").split("|").forEach(y=>{y&&!(y in e)&&(n.includes(y)?e[y]=98:o.includes(y)?e[y]=99:e[y]=t++)});return" "in e||(e[" "]=(f=e[" "])!=null?f:10),"x"in e||(e.x=(h=e.x)!=null?h:98),e}function w_(s,e,t,a){let r=(l,d)=>{if(l==null)return;let u=l[d];return u!=null?u:l.metadata?l.metadata[d]:void 0},i=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}),n={status:(l,d,u)=>{var k,g;let p=l.calculatedStatus||l.status||"",m=d.calculatedStatus||d.status||"",f=(k=a[p])!=null?k:1e3,h=(g=a[m])!=null?g:1e3;if(typeof f=="number"&&typeof h=="number"){let y=f-h;return u==="asc"?y:-y}else return console.warn(`Non-numeric status order values detected: ${f}, ${h}`),0},completed:(l,d,u)=>{let p=!!l.completed,m=!!d.completed;if(p===m)return 0;let f=p?1:-1;return u==="asc"?f:-f},priority:(l,d,u)=>{let p=r(l,"priority"),m=r(d,"priority"),f=p!=null&&p>0,h=m!=null&&m>0;if(!f&&!h)return 0;if(f)if(h){let k=p-m;return u==="asc"?k:-k}else return-1;else return 1},dueDate:(l,d,u)=>o("dueDate",l,d,u),startDate:(l,d,u)=>o("startDate",l,d,u),scheduledDate:(l,d,u)=>o("scheduledDate",l,d,u),createdDate:(l,d,u)=>o("createdDate",l,d,u),completedDate:(l,d,u)=>o("completedDate",l,d,u),content:(l,d,u)=>{var h,k;let p=((h=l.content)==null?void 0:h.trim())||null,m=((k=d.content)==null?void 0:k.trim())||null;if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let f=i.compare(p,m);return u==="asc"?f:-f},tags:(l,d,u)=>{let p=r(l,"tags"),m=r(d,"tags"),f=Array.isArray(p)&&p.length>0?p.join(", "):null,h=Array.isArray(m)&&m.length>0?m.join(", "):null;if(!f&&!h)return 0;if(!f)return 1;if(!h)return-1;let k=i.compare(f,h);return u==="asc"?k:-k},project:(l,d,u)=>{var h,k;let p=((h=r(l,"project"))==null?void 0:h.trim())||null,m=((k=r(d,"project"))==null?void 0:k.trim())||null;if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let f=i.compare(p,m);return u==="asc"?f:-f},context:(l,d,u)=>{var h,k;let p=((h=r(l,"context"))==null?void 0:h.trim())||null,m=((k=r(d,"context"))==null?void 0:k.trim())||null;if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let f=i.compare(p,m);return u==="asc"?f:-f},recurrence:(l,d,u)=>{var h,k;let p=((h=r(l,"recurrence"))==null?void 0:h.trim())||null,m=((k=r(d,"recurrence"))==null?void 0:k.trim())||null;if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let f=i.compare(p,m);return u==="asc"?f:-f},filePath:(l,d,u)=>{var h,k;let p=((h=l.filePath)==null?void 0:h.trim())||null,m=((k=d.filePath)==null?void 0:k.trim())||null;if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let f=i.compare(p,m);return u==="asc"?f:-f},lineNumber:(l,d,u)=>(l.line||0)-(d.line||0)};function o(l,d,u,p){let m=r(d,l),f=r(u,l),h=m!=null,k=f!=null,g=0;if(!h&&!k)g=0;else if(!h)g=1;else if(!k)g=-1;else{let y=m,w=f,v=Date.now(),T=y<v,x=w<v;T&&x?g=y-w:T&&!x?g=-1:!T&&x?g=1:g=y-w}return p==="asc"?g:-g}for(let l of t)if(l.field in n){let u=n[l.field](s,e,l.order);if(u!==0)return u}return s.line!==void 0&&e.line!==void 0?s.line-e.line:s.lineNumber!==void 0&&e.lineNumber!==void 0?s.lineNumber-e.lineNumber:0}function IK(s){if(s.length===0)return[];let e=[...s].sort((i,n)=>i.lineNumber-n.lineNumber),t=[],a=[e[0]];function r(i){if(!i.children||i.children.length===0)return i.lineNumber;let n=i.lineNumber;for(let o of i.children){let l=r(o);n=Math.max(n,l)}return n}for(let i=1;i<e.length;i++){let n=e[i-1],o=e[i],l=r(n);o.lineNumber<=l+1?a.push(o):(t.push([...a]),a=[o])}return a.length>0&&t.push(a),t}function Oa(s,e,t){let a=y_(t),r=s.map(i=>i.calculatedStatus?i:{...i,calculatedStatus:i.status||""});return r.sort((i,n)=>w_(i,n,e,a)),r}function v_(s,e,t){let a=y_(t);s.sort((r,i)=>w_(r,i,e,a));for(let r of s)r.children&&r.children.length>0&&(r.children=v_(r.children,e,t));return s}function Bx(s,e,t=!1){let a=e.app,r=a.workspace.getActiveFile();if(!r)return new So.Notice("Sort Tasks: No active file found."),null;let i=r.path,n=a.metadataCache.getFileCache(r);if(!n)return new So.Notice("Sort Tasks: Metadata cache not available."),null;let o=s.state.doc,l=e.settings,d=l.preferMetadataFormat,u=l.sortCriteria||me.sortCriteria;if(!l.sortTasks||!u||u.length===0)return new So.Notice(c("Task sorting is disabled or no sort criteria are defined in settings.")),null;let p=0,m=o.lines-1,f="full document";if(t)f="full document (forced)";else{let I=s.state.selection.main.head,L=o.lineAt(I).number-1,W=n.headings||[],O=null,H=o.lines;for(let $=W.length-1;$>=0;$--)if(W[$].position.start.line<=L){O=W[$],p=O.position.start.line;for(let B=$+1;B<W.length;B++)if(W[B].level<=O.level){H=W[B].position.start.line;break}f=`heading section "${O.heading}"`;break}O?m=H-1:(p=0,m=o.lines-1,f="full document (cursor not in heading)"),m<p&&(m=p)}let h=o.line(p+1).from,k=o.line(m+1).to;if(h>k)return new So.Notice(`Sort Tasks: Invalid range calculated for ${f}.`),null;let g=o.sliceString(h,k),y=AK(g,p,i,d,e);if(y.length===0){let I=`Sort Tasks: No tasks found in the ${f} (Lines ${p+1}-${m+1}) to sort.`;return new So.Notice(I),null}let w=IK(y);for(let I=0;I<w.length;I++)w[I]=v_(w[I],u,l);y.length=0;for(let I of w)for(let L of I)y.push(L);let v=g.split(`
`),T=[...v],x=new Set,C=new Set;for(let I of y){let L=I.lineNumber-p;L>=0&&L<v.length&&C.add(L)}for(let I of w){let O=function($){W.push($.originalMarkdown);let B=$.lineNumber-p;if(B>=0&&B<v.length&&x.add(B),$.children&&$.children.length>0)for(let q of $.children)O(q)},L=Number.MAX_SAFE_INTEGER;for(let $ of I){let B=$.lineNumber-p;B>=0&&B<v.length&&B<L&&(L=B)}if(L===Number.MAX_SAFE_INTEGER)continue;let W=[];for(let $ of I)$.parent||O($);let H=L;for(let $ of W)T[H++]=$}let S=[];for(let I=0;I<T.length;I++)(!C.has(I)||x.has(I))&&S.push(T[I]);let E=S.join(`
`);if(g===E){let I=`Sort Tasks: Tasks are already sorted in the ${f} (Lines ${p+1}-${m+1}).`;return new So.Notice(I),null}let P=`Sort Tasks: Sorted tasks in the ${f} (Lines ${p+1}-${m+1}).`;return new So.Notice(P),E}var li=class extends kd.Component{constructor(e,t,a,r={}){super();this.parentEl=e;this.app=t;this.plugin=a;this.params=r;this.allTasks=[];this.notFilteredTasks=[];this.filteredTasks=[];this.selectedTask=null;this.taskComponents=[];this.treeComponents=[];this.taskPageSize=50;this.nextTaskIndex=0;this.nextRootTaskIndex=0;this.rootTasks=[];this.currentViewId="inbox";this.selectedProjectForView=null;this.focusFilter=null;this.isTreeView=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:"task-content"}),this.createContentHeader(),this.taskListEl=this.containerEl.createDiv({cls:"task-list"}),this.initializeViewMode(),this.initializeVirtualList()}createContentHeader(){this.headerEl=this.containerEl.createDiv({cls:"content-header"}),this.titleEl=this.headerEl.createDiv({cls:"content-title",text:c("Inbox")}),this.countEl=this.headerEl.createDiv({cls:"task-count",text:c("0 tasks")});let e=this.headerEl.createDiv({cls:"content-filter"});this.filterInput=e.createEl("input",{cls:"filter-input",attr:{type:"text",placeholder:c("Filter tasks...")}});let t=this.headerEl.createDiv({cls:"view-toggle-btn"});(0,kd.setIcon)(t,"list"),t.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(t,"click",()=>{this.toggleViewMode()}),this.registerDomEvent(this.filterInput,"input",()=>{this.filterTasks(this.filterInput.value)})}initializeVirtualList(){this.taskListObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&t.target.classList.contains("task-load-marker")&&this.loadMoreTasks()})},{root:this.taskListEl,threshold:.1})}initializeViewMode(){var t;this.isTreeView=_i(this.app,this.plugin,this.currentViewId);let e=(t=this.headerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,kd.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.headerEl.querySelector(".view-toggle-btn");e&&(0,kd.setIcon)(e,this.isTreeView?"git-branch":"list"),Wi(this.app,this.currentViewId,this.isTreeView),this.refreshTaskList()}setTasks(e,t){this.allTasks=e,this.notFilteredTasks=t,this.applyFilters(),this.refreshTaskList()}setViewMode(e,t){this.currentViewId=e,this.selectedProjectForView=t===void 0?null:t;let a=yt(this.plugin,e),r=c(a.name);this.titleEl.setText(r),this.initializeViewMode(),this.applyFilters(),this.refreshTaskList()}applyFilters(){var t,a;this.filteredTasks=Ut(this.allTasks,this.currentViewId,this.plugin,{textQuery:(t=this.filterInput)==null?void 0:t.value});let e=(a=this.plugin.settings.viewConfiguration.find(r=>r.id===this.currentViewId))==null?void 0:a.sortCriteria;e&&e.length>0?this.filteredTasks=Oa(this.filteredTasks,e,this.plugin.settings):this.filteredTasks.sort((r,i)=>{var m,f,h,k;let n=r.completed,o=i.completed;if(n!==o)return n?1:-1;let l=(m=r.metadata.priority)!=null?m:0,d=(f=i.metadata.priority)!=null?f:0;if(l!==d)return d-l;let u=(h=r.metadata.dueDate)!=null?h:1/0,p=(k=i.metadata.dueDate)!=null?k:1/0;return u!==p?u-p:r.content.localeCompare(i.content)}),this.countEl.setText(`${this.filteredTasks.length} ${c("tasks")}`)}filterTasks(e){this.applyFilters(),this.refreshTaskList()}cleanupComponents(){this.taskComponents.forEach(e=>this.removeChild(e)),this.taskComponents=[],this.treeComponents.forEach(e=>this.removeChild(e)),this.treeComponents=[],this.taskListObserver.disconnect(),this.taskListEl.empty()}refreshTaskList(){if(this.cleanupComponents(),this.nextTaskIndex=0,this.nextRootTaskIndex=0,this.rootTasks=[],this.filteredTasks.length===0){this.addEmptyState(c("No tasks found."));return}if(this.isTreeView){let e=new Map;this.notFilteredTasks.forEach(t=>e.set(t.id,t)),this.rootTasks=h_(this.filteredTasks),this.loadRootTaskBatch(e)}else this.loadTaskBatch();this.checkAndAddLoadMarker()}loadTaskBatch(){let e=document.createDocumentFragment(),t=this.taskPageSize,a=this.nextTaskIndex,r=Math.min(a+t,this.filteredTasks.length);for(let i=a;i<r;i++){let n=this.filteredTasks[i],o=new fd(n,this.currentViewId,this.app,this.plugin);o.onTaskSelected=this.selectTask.bind(this),o.onTaskCompleted=l=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(l)},o.onTaskUpdate=async(l,d)=>{this.params.onTaskUpdate&&(l.content,d.content,await this.params.onTaskUpdate(l,d))},o.onTaskContextMenu=(l,d)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(l,d)},this.addChild(o),o.load(),e.appendChild(o.element),this.taskComponents.push(o)}return this.taskListEl.appendChild(e),this.nextTaskIndex=r,r}loadRootTaskBatch(e){let t=document.createDocumentFragment(),a=this.taskPageSize,r=this.nextRootTaskIndex,i=Math.min(r+a,this.rootTasks.length);this.notFilteredTasks.forEach(n=>{e.has(n.id)||e.set(n.id,n)});for(let n=r;n<i;n++){let o=this.rootTasks[n],l=this.notFilteredTasks.filter(u=>u.metadata.parent===o.id),d=new hd(o,this.currentViewId,this.app,0,l,e,this.plugin);d.onTaskSelected=this.selectTask.bind(this),d.onTaskCompleted=u=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(u)},d.onTaskUpdate=async(u,p)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(u,p)},d.onTaskContextMenu=(u,p)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(u,p)},this.addChild(d),d.load(),t.appendChild(d.element),this.treeComponents.push(d)}return this.taskListEl.appendChild(t),this.nextRootTaskIndex=i,i}checkAndAddLoadMarker(){this.removeLoadMarker(),(this.isTreeView?this.nextRootTaskIndex<this.rootTasks.length:this.nextTaskIndex<this.filteredTasks.length)&&this.addLoadMarker()}addLoadMarker(){let e=this.taskListEl.createDiv({cls:"task-load-marker",attr:{"data-task-id":"load-marker"}});e.setText(c("Loading more...")),this.taskListObserver.observe(e)}removeLoadMarker(){let e=this.taskListEl.querySelector(".task-load-marker");e&&(this.taskListObserver.unobserve(e),e.remove())}loadMoreTasks(){if(this.removeLoadMarker(),this.isTreeView){if(this.nextRootTaskIndex<this.rootTasks.length){let e=new Map;this.filteredTasks.forEach(t=>e.set(t.id,t)),this.loadRootTaskBatch(e)}}else this.nextTaskIndex<this.filteredTasks.length&&this.loadTaskBatch();this.checkAndAddLoadMarker()}addEmptyState(e){this.cleanupComponents(),this.taskListEl.createDiv({cls:"task-empty-state"}).setText(e)}selectTask(e){var t;((t=this.selectedTask)==null?void 0:t.id)===(e==null?void 0:e.id)&&e!==null,this.selectedTask,this.selectedTask=e,this.params.onTaskSelected&&this.params.onTaskSelected(e)}updateTask(e){let t=this.allTasks.findIndex(n=>n.id===e.id);t!==-1&&(this.allTasks[t]={...e});let a=this.notFilteredTasks.findIndex(n=>n.id===e.id);a!==-1&&(this.notFilteredTasks[a]={...e}),this.selectedTask&&this.selectedTask.id===e.id&&(this.selectedTask={...e});let r=this.filteredTasks.length;if(this.applyFilters(),this.filteredTasks.some(n=>n.id===e.id)){let n=this.filteredTasks.find(o=>o.id===e.id);if(!n)return;if(this.isTreeView){let o=!1;for(let l of this.treeComponents)if(l.getTask().id===e.id){l.updateTask(n),o=!0;break}else if(l.updateTaskRecursively(n)){o=!0;break}}else{let o=this.taskComponents.find(l=>l.getTask().id===e.id);o==null||o.updateTask(n)}}else{this.refreshTaskList();return}this.filteredTasks.length!==r&&this.countEl.setText(`${this.filteredTasks.length} ${c("tasks")}`)}getSelectedTask(){return this.selectedTask}onunload(){this.cleanupComponents(),this.containerEl.empty(),this.containerEl.remove()}};var $a=A(require("obsidian"));var np=A(require("obsidian"));Q();var Wx=class extends np.Component{constructor(e,t={}){super();this.parentEl=e;this.config=t;this.currentDate=new Date;this.selectedDate=new Date;this.calendarDays=[];this.tasks=[];this.options={showWeekends:!0,firstDayOfWeek:0,showTaskCounts:!0};this.displayedMonth=this.currentDate.getMonth(),this.displayedYear=this.currentDate.getFullYear(),this.options={...this.options,...this.config}}onload(){this.containerEl=this.parentEl.createDiv({cls:"mini-calendar-container"}),this.options.showWeekends||this.containerEl.addClass("hide-weekends"),this.createCalendarHeader(),this.calendarGridEl=this.containerEl.createDiv({cls:"calendar-grid"}),this.generateCalendar()}createCalendarHeader(){this.headerEl=this.containerEl.createDiv({cls:"calendar-header"});let e=this.headerEl.createDiv({cls:"calendar-title"});this.monthLabel=e.createSpan({cls:"calendar-month"}),this.yearLabel=e.createSpan({cls:"calendar-year"});let t=this.headerEl.createDiv({cls:"calendar-nav"}),a=t.createDiv({cls:"calendar-nav-btn"});(0,np.setIcon)(a,"chevron-left");let r=t.createDiv({cls:"calendar-nav-btn"});(0,np.setIcon)(r,"chevron-right");let i=t.createDiv({cls:"calendar-today-btn"});i.setText(c("Today")),this.registerDomEvent(a,"click",()=>{this.navigateMonth(-1)}),this.registerDomEvent(r,"click",()=>{this.navigateMonth(1)}),this.registerDomEvent(i,"click",()=>{this.goToToday()})}generateCalendar(){this.calendarGridEl.empty(),this.calendarDays=[];let e=["January","February","March","April","May","June","July","August","September","October","November","December"];this.monthLabel.setText(e[this.displayedMonth]),this.yearLabel.setText(this.displayedYear.toString());let a=[...["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]];if(this.options.firstDayOfWeek>0)for(let T=0;T<this.options.firstDayOfWeek;T++)a.push(a.shift());(this.options.showWeekends?a:a.filter(T=>T!=="Sat"&&T!=="Sun")).forEach(T=>{let x=this.calendarGridEl.createDiv({cls:"calendar-day-header",text:T});(T==="Sat"||T==="Sun")&&!this.options.showWeekends&&x.addClass("calendar-weekend")});let n=new Date(this.displayedYear,this.displayedMonth,1).getDay()-this.options.firstDayOfWeek;n<0&&(n+=7);let o=new Date(this.displayedYear,this.displayedMonth+1,0).getDate(),l=n,d=this.displayedMonth===0?11:this.displayedMonth-1,u=this.displayedMonth===0?this.displayedYear-1:this.displayedYear,p=new Date(u,d+1,0).getDate(),m=new Date;m.setHours(0,0,0,0);let f=this.selectedDate.getDate(),h=this.selectedDate.getMonth(),k=this.selectedDate.getFullYear();for(let T=0;T<l;T++){let x=p-l+T+1,C=new Date(u,d,x),S=x===f&&d===h&&u===k;this.addCalendarDay(C,!1,S,!1,!1)}for(let T=1;T<=o;T++){let x=new Date(this.displayedYear,this.displayedMonth,T),C=x.getTime()===m.getTime(),S=T===f&&this.displayedMonth===h&&this.displayedYear===k,E=x<m,P=x>m;this.addCalendarDay(x,C,S,E,P,!0)}let g=l+o,y=42-g,w=this.displayedMonth===11?0:this.displayedMonth+1,v=this.displayedMonth===11?this.displayedYear+1:this.displayedYear;for(let T=1;T<=y;T++){let x=new Date(v,w,T),C=T===f&&w===h&&v===k;this.addCalendarDay(x,!1,C,!1,!0)}}addCalendarDay(e,t,a,r,i,n=!1){let o=e.getDay()===0||e.getDay()===6;if(!this.options.showWeekends&&o)return;let l=this.getTasksForDate(e),d={date:e,tasks:l,isToday:t,isSelected:a,isPastDue:r,isFuture:i,isThisMonth:n};this.calendarDays.push(d);let u=this.calendarGridEl.createDiv({cls:"calendar-day"});n||u.addClass("other-month"),t&&u.addClass("today"),a&&u.addClass("selected"),r&&u.addClass("past-due");let p=u.createDiv({cls:"calendar-day-number",text:e.getDate().toString()});if(this.options.showTaskCounts&&l.length>0){let m=u.createDiv({cls:"calendar-day-count",text:l.length.toString()});l.some(h=>h.metadata.priority&&h.metadata.priority>=2)&&m.addClass("has-priority")}this.registerDomEvent(u,"click",()=>{this.selectDate(e)})}selectDate(e){if(this.selectedDate=e,e.getMonth()!==this.displayedMonth||e.getFullYear()!==this.displayedYear?(this.displayedMonth=e.getMonth(),this.displayedYear=e.getFullYear(),this.generateCalendar()):this.calendarGridEl.querySelectorAll(".calendar-day").forEach((a,r)=>{if(r<this.calendarDays.length){let i=this.calendarDays[r];i.date.getDate()===e.getDate()&&i.date.getMonth()===e.getMonth()&&i.date.getFullYear()===e.getFullYear()?(a.addClass("selected"),i.isSelected=!0):(a.removeClass("selected"),i.isSelected=!1)}}),this.onDateSelected){let t=this.getTasksForDate(e);this.onDateSelected(e,t)}}navigateMonth(e){this.displayedMonth+=e,this.displayedMonth>11?(this.displayedMonth=0,this.displayedYear++):this.displayedMonth<0&&(this.displayedMonth=11,this.displayedYear--),this.generateCalendar(),this.onMonthChanged&&this.onMonthChanged(this.displayedMonth,this.displayedYear)}goToToday(){let e=new Date;this.displayedMonth=e.getMonth(),this.displayedYear=e.getFullYear(),this.selectDate(e)}getTasksForDate(e){let t=new Date(e);t.setHours(0,0,0,0);let a=new Date(e);a.setHours(23,59,59,999);let r=t.getTime(),i=a.getTime();return this.tasks.filter(n=>{if(n.metadata.dueDate){let o=new Date(n.metadata.dueDate);return o.setHours(0,0,0,0),o.getTime()===r}return!1})}setTasks(e){this.tasks=e,this.generateCalendar()}setOptions(e){this.options={...this.options,...e},this.generateCalendar()}setCurrentDate(e){this.currentDate=new Date(e),this.currentDate.setHours(0,0,0,0),this.generateCalendar()}onunload(){this.containerEl.empty(),this.containerEl.remove()}};Q();var b_=A(require("obsidian"));Q();var Os=class extends b_.Component{constructor(e,t,a,r,i){super();this.parent=e;this.containerEl=t;this.plugin=a;this.app=r;this.context=i;this.taskComponents=[];this.treeComponents=[];this.allTasksMap=new Map;e.addChild(this)}renderTasks(e,t,a,r=c("No tasks found."),i=!1){if(i||(this.cleanupComponents(),this.containerEl.empty()),e.length===0&&!i){this.renderEmptyState(r);return}if(a?this.allTasksMap=a:t&&(console.warn("TaskListRendererComponent: allTasksMap not provided for tree view. Tree may be incomplete."),this.allTasksMap=new Map(e.map(n=>[n.id,n]))),t){if(!this.allTasksMap||this.allTasksMap.size===0){console.error("TaskListRendererComponent: Cannot render tree view without allTasksMap."),this.renderEmptyState("Error: Task data unavailable for tree view.");return}this.renderTreeView(e,this.allTasksMap)}else this.renderListView(e)}renderListView(e){let t=document.createDocumentFragment();e.forEach(a=>{let r=new fd(a,this.context,this.app,this.plugin);r.onTaskSelected=i=>{this.onTaskSelected&&this.onTaskSelected(i)},r.onTaskCompleted=i=>{this.onTaskCompleted&&this.onTaskCompleted(i)},r.onTaskUpdate=async(i,n)=>{this.onTaskUpdate,i.content,n.content,this.onTaskUpdate&&(i.content,n.content,await this.onTaskUpdate(i,n))},r.onTaskContextMenu=(i,n)=>{this.onTaskContextMenu&&this.onTaskContextMenu(i,n)},this.parent.addChild(r),r.load(),t.appendChild(r.element),this.taskComponents.push(r)}),this.containerEl.appendChild(t)}renderTreeView(e,t){let a=document.createDocumentFragment(),r=new Set(e.map(l=>l.id)),i=(l,d,u)=>{d.has(l.id)&&u.add(l.id),l.metadata.children&&l.metadata.children.forEach(p=>{let m=t.get(p);m&&i(m,d,u)})},n=[],o=new Set;for(let l of e)if(!o.has(l.id)&&(!l.metadata.parent||!r.has(l.metadata.parent))){let d=l;if(l.metadata.parent){let u=l;for(;u.metadata.parent&&!r.has(u.metadata.parent);){let p=t.get(u.metadata.parent);if(!p){console.warn(`Parent task ${u.metadata.parent} not found in allTasksMap.`);break}d=p,u=p}}n.some(u=>u.id===d.id)||n.push(d),i(d,r,o)}n.sort((l,d)=>l.line-d.line),n.forEach(l=>{let d=[];l.metadata.children&&l.metadata.children.forEach(p=>{let m=t.get(p);m?d.push(m):console.warn(`Child task ${p} (parent: ${l.id}) not found in allTasksMap.`)}),d.sort((p,m)=>p.line-m.line);let u=new hd(l,this.context,this.app,0,d,t,this.plugin);u.onTaskSelected=p=>{this.onTaskSelected&&this.onTaskSelected(p)},u.onTaskCompleted=p=>{this.onTaskCompleted&&this.onTaskCompleted(p)},u.onTaskUpdate=async(p,m)=>{this.onTaskUpdate&&await this.onTaskUpdate(p,m)},u.onTaskContextMenu=(p,m)=>{this.onTaskContextMenu&&this.onTaskContextMenu(p,m)},this.parent.addChild(u),u.load(),a.appendChild(u.element),this.treeComponents.push(u)}),this.containerEl.appendChild(a)}renderEmptyState(e){this.containerEl.empty(),this.containerEl.createDiv({cls:`${this.context}-empty-state`}).setText(e)}updateTask(e){this.allTasksMap.has(e.id)&&this.allTasksMap.set(e.id,e);let t=this.taskComponents.find(a=>a.getTask().id===e.id);if(t){t.updateTask(e);return}for(let a of this.treeComponents)if(a.getTask().id===e.id){a.updateTask(e);return}else if(a.updateTaskRecursively(e))return}cleanupComponents(){this.taskComponents.forEach(e=>{this.parent.removeChild(e)}),this.taskComponents=[],this.treeComponents.forEach(e=>{this.parent.removeChild(e)}),this.treeComponents=[]}onunload(){this.cleanupComponents()}};var En=class extends $a.Component{constructor(e,t,a,r={}){super();this.parentEl=e;this.app=t;this.plugin=a;this.params=r;this.taskComponents=[];this.allTasks=[];this.pastTasks=[];this.todayTasks=[];this.futureTasks=[];this.dateSections=[];this.focusFilter=null;this.isTreeView=!1;this.treeComponents=[];this.allTasksMap=new Map;this.currentDate=new Date,this.currentDate.setHours(0,0,0,0),this.selectedDate=new Date(this.currentDate)}onload(){this.containerEl=this.parentEl.createDiv({cls:"forecast-container"});let e=this.containerEl.createDiv({cls:"forecast-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode(),this.windowFocusHandler=()=>{let t=new Date;t.setHours(0,0,0,0);let a=new Date(this.currentDate);a.setHours(0,0,0,0),this.currentDate=t,this.calendarComponent.setCurrentDate(this.currentDate);let r=new Date(this.selectedDate).setHours(0,0,0,0),i=a.getTime(),n=t.getTime();r===i&&r<n&&(this.selectedDate=new Date(t),this.calendarComponent.selectDate(this.selectedDate)),i!==n&&(this.categorizeTasks(),this.updateTaskStats(),this.updateDueSoonSection(),this.refreshDateSectionsUI())},this.registerDomEvent(window,"focus",this.windowFocusHandler)}createForecastHeader(){this.forecastHeaderEl=this.taskContainerEl.createDiv({cls:"forecast-header"}),$a.Platform.isPhone&&this.forecastHeaderEl.createEl("div",{cls:"forecast-sidebar-toggle"},i=>{new $a.ExtraButtonComponent(i).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})});let e=this.forecastHeaderEl.createDiv({cls:"forecast-title-container"});this.titleEl=e.createDiv({cls:"forecast-title",text:c("Forecast")}),e.createDiv({cls:"forecast-count"}).setText(c("0 tasks, 0 projects"));let r=this.forecastHeaderEl.createDiv({cls:"forecast-actions"}).createDiv({cls:"view-toggle-btn"});(0,$a.setIcon)(r,"list"),r.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(r,"click",()=>{this.toggleViewMode()})}initializeViewMode(){var t;this.isTreeView=_i(this.app,this.plugin,"forecast");let e=(t=this.forecastHeaderEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,$a.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.forecastHeaderEl.querySelector(".view-toggle-btn");e&&(0,$a.setIcon)(e,this.isTreeView?"git-branch":"list"),Wi(this.app,"forecast",this.isTreeView),this.refreshDateSectionsUI()}createFocusBar(){this.focusBarEl=this.taskContainerEl.createDiv({cls:"forecast-focus-bar"});let e=this.focusBarEl.createEl("input",{cls:"focus-input",attr:{type:"text",placeholder:c("Focusing on Work")}}),t=this.focusBarEl.createEl("button",{cls:"unfocus-button",text:c("Unfocus")});this.registerDomEvent(t,"click",()=>{e.value=""})}createLeftColumn(e){var r,i,n;if(this.leftColumnEl=e.createDiv({cls:"forecast-left-column"}),$a.Platform.isPhone){let o=this.leftColumnEl.createDiv({cls:"forecast-sidebar-close"});new $a.ExtraButtonComponent(o).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.createStatsBar(this.leftColumnEl),this.calendarContainerEl=this.leftColumnEl.createDiv({cls:"forecast-calendar-section"});let t=(r=this.plugin.settings.viewConfiguration.find(o=>o.id==="forecast"))==null?void 0:r.specificConfig,a={firstDayOfWeek:(i=t==null?void 0:t.firstDayOfWeek)!=null?i:0,showWeekends:!((n=t==null?void 0:t.hideWeekends)!=null?n:!1),showTaskCounts:!0};this.calendarComponent=new Wx(this.calendarContainerEl,a),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.createDueSoonSection(this.leftColumnEl),this.calendarComponent.onDateSelected=(o,l)=>{let d=new Date(o);d.setHours(0,0,0,0),this.selectedDate=d,this.updateDueSoonSection(),this.refreshDateSectionsUI(),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}}createStatsBar(e){this.statsContainerEl=e.createDiv({cls:"forecast-stats"});let t=(a,r,i,n)=>{let o=this.statsContainerEl.createDiv({cls:`stat-item tg-${a}`}),l=o.createDiv({cls:"stat-count",text:i.toString()}),d=o.createDiv({cls:"stat-label",text:r});return this.registerDomEvent(o,"click",()=>{this.focusTaskList(n),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}),o};t("past-due",c("Past Due"),0,"past-due"),t("today",c("Today"),0,"today"),t("future",c("Future"),0,"future")}createDueSoonSection(e){this.dueSoonContainerEl=e.createDiv({cls:"forecast-due-soon-section"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"forecast-right-column"}),this.createForecastHeader(),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"forecast-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.updateHeaderCount(),this.categorizeTasks(),this.calendarComponent.setTasks(this.allTasks),this.updateTaskStats(),this.updateDueSoonSection(),this.calculateDateSections(),this.renderDateSectionsUI()}updateHeaderCount(){let e=new Set;this.allTasks.forEach(i=>{i.metadata.project&&e.add(i.metadata.project)});let t=this.allTasks.length,a=e.size,r=this.forecastHeaderEl.querySelector(".forecast-count");r&&(r.textContent=`${t} ${c("tasks")}, ${a} ${c("project")}${a!==1?"s":""}`)}categorizeTasks(){var i;let e=new Date(this.currentDate);e.setHours(0,0,0,0);let t=e.getTime(),a=(i=this.plugin.settings.viewConfiguration.find(n=>n.id==="forecast"))==null?void 0:i.sortCriteria,r=this.allTasks.filter(n=>this.getRelevantDate(n)!==void 0);this.pastTasks=r.filter(n=>this.getRelevantDate(n)<t),this.todayTasks=r.filter(n=>this.getRelevantDate(n)===t),this.futureTasks=r.filter(n=>this.getRelevantDate(n)>t),a&&a.length>0?(this.pastTasks=Oa(this.pastTasks,a,this.plugin.settings),this.todayTasks=Oa(this.todayTasks,a,this.plugin.settings),this.futureTasks=Oa(this.futureTasks,a,this.plugin.settings)):(this.pastTasks=this.sortTasksByPriorityAndRelevantDate(this.pastTasks),this.todayTasks=this.sortTasksByPriorityAndRelevantDate(this.todayTasks),this.futureTasks=this.sortTasksByPriorityAndRelevantDate(this.futureTasks))}sortTasksByPriorityAndRelevantDate(e){return e.sort((t,a)=>{let r=t.metadata.priority||0,i=a.metadata.priority||0;if(r!==i)return i-r;let n=this.getRelevantDate(t),o=this.getRelevantDate(a);return n===void 0&&o===void 0?0:n===void 0?1:o===void 0?-1:n-o})}updateTaskStats(){this.statsContainerEl.querySelectorAll(".stat-item").forEach(t=>{let a=t.querySelector(".stat-count");a&&(t.hasClass("tg-past-due")?a.textContent=this.pastTasks.length.toString():t.hasClass("tg-today")?a.textContent=this.todayTasks.length.toString():t.hasClass("tg-future")&&(a.textContent=this.futureTasks.length.toString()))})}updateDueSoonSection(){this.dueSoonContainerEl.empty();let e=new Date(this.selectedDate);e.setHours(0,0,0,0);let t=[];for(let r=0;r<15;r++){let i=new Date(e);if(i.setDate(i.getDate()+r),i.getTime()===e.getTime())continue;let n=this.getTasksForRelevantDate(i);n.length>0&&t.push({date:i,tasks:n})}this.dueSoonContainerEl.createDiv({cls:"due-soon-header"}).setText(c("Coming Up")),t.forEach(r=>{let i=this.dueSoonContainerEl.createDiv({cls:"due-soon-item"}),n=this.formatDateForDueSoon(r.date),o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][r.date.getDay()];i.createDiv({cls:"due-soon-date"}).setText(`${o}, ${n}`);let d=i.createDiv({cls:"due-soon-count"}),u=r.tasks.length;d.setText(`${u} ${u===1?c("Task"):c("Tasks")}`),this.registerDomEvent(i,"click",()=>{this.calendarComponent.selectDate(r.date),$a.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)})}),t.length===0&&this.dueSoonContainerEl.createDiv({cls:"due-soon-empty"}).setText(c("No upcoming tasks"))}formatDateForDueSoon(e){return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e.getMonth()]} ${e.getDate()}`}calculateDateSections(){this.dateSections=[],this.todayTasks.length>0&&this.dateSections.push({title:this.formatSectionTitleForDate(this.currentDate),date:new Date(this.currentDate),tasks:this.todayTasks,isExpanded:!0});let e=new Map;this.futureTasks.forEach(r=>{let i=this.getRelevantDate(r);if(i){let n=new Date(i),o=`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,"0")}-${String(n.getDate()).padStart(2,"0")}`;e.has(o)||e.set(o,[]),e.get(o).some(l=>l.id===r.id)||e.get(o).push(r)}}),Array.from(e.keys()).sort().forEach(r=>{let[i,n,o]=r.split("-").map(Number),l=new Date(i,n-1,o),d=e.get(r);new Date(this.currentDate).setHours(0,0,0,0);let p=this.formatSectionTitleForDate(l);this.dateSections.push({title:p,date:l,tasks:d,isExpanded:this.shouldExpandFutureSection(l,this.currentDate)})}),this.pastTasks.length>0&&this.dateSections.unshift({title:c("Past Due"),date:new Date(0),tasks:this.pastTasks,isExpanded:!0});let a=this.plugin.settings.viewConfiguration.find(r=>r.id==="forecast");if((a==null?void 0:a.sortCriteria)&&a.sortCriteria.length>0){let r=a.sortCriteria.find(n=>n.field==="dueDate"),i=a.sortCriteria.find(n=>n.field==="scheduledDate");r&&r.order==="desc"?this.dateSections.reverse():i&&i.order==="desc"&&this.dateSections.reverse()}}renderDateSectionsUI(){if(this.cleanupRenderers(),this.allTasksMap=new Map(this.allTasks.map(e=>[e.id,e])),this.dateSections.length===0){this.taskListContainerEl.createDiv({cls:"forecast-empty-state"}).setText(c("No tasks scheduled"));return}this.dateSections.forEach(e=>{let t=this.taskListContainerEl.createDiv({cls:"task-date-section"}),a=new Date;a.setHours(0,0,0,0);let r=new Date(e.date);r.setHours(0,0,0,0),(r.getTime()<a.getTime()||e.title==="Past Due")&&t.addClass("overdue");let i=t.createDiv({cls:"date-section-header"}),n=i.createDiv({cls:"section-toggle"});(0,$a.setIcon)(n,e.isExpanded?"chevron-down":"chevron-right"),i.createDiv({cls:"section-title"}).setText(e.title),i.createDiv({cls:"section-count"}).setText(`${e.tasks.length}`);let d=t.createDiv({cls:"section-tasks"});e.isExpanded||d.hide(),this.registerDomEvent(i,"click",()=>{e.isExpanded=!e.isExpanded,(0,$a.setIcon)(n,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?d.show():d.hide()}),e.renderer=new Os(this,d,this.plugin,this.app,"forecast"),this.params.onTaskSelected&&(e.renderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(e.renderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskContextMenu&&(e.renderer.onTaskContextMenu=this.params.onTaskContextMenu),e.renderer.onTaskUpdate=async(u,p)=>{this.params.onTaskUpdate?await this.params.onTaskUpdate(u,p):this.updateTask(p)},e.renderer.renderTasks(e.tasks,this.isTreeView,this.allTasksMap,c("No tasks for this section."))})}formatDate(e){return`${["January","February","March","April","May","June","July","August","September","October","November","December"][e.getMonth()]} ${e.getDate()}, ${e.getFullYear()}`}focusTaskList(e){if(this.statsContainerEl.querySelectorAll(".stat-item").forEach(a=>a.classList.remove("active")),this.focusFilter===e)this.focusFilter=null;else{this.focusFilter=e;let a=this.statsContainerEl.querySelector(`.stat-item.tg-${e}`);a&&a.classList.add("active")}if(this.focusFilter==="past-due")this.dateSections=this.pastTasks.length>0?[{title:c("Past Due"),date:new Date(0),tasks:this.pastTasks,isExpanded:!0}]:[];else if(this.focusFilter==="today")this.dateSections=this.todayTasks.length>0?[{title:this.formatSectionTitleForDate(this.currentDate),date:new Date(this.currentDate),tasks:this.todayTasks,isExpanded:!0}]:[];else if(this.focusFilter==="future"){this.calculateDateSections();let a=new Date(this.currentDate).setHours(0,0,0,0);this.dateSections=this.dateSections.filter(r=>r.date.getTime()>a)}else this.calculateDateSections();this.renderDateSectionsUI()}refreshDateSectionsUI(){this.focusFilter||(this.cleanupRenderers(),this.calculateFilteredDateSections(),this.renderDateSectionsUI())}calculateFilteredDateSections(){var m;this.dateSections=[];let e=new Date(this.selectedDate).setHours(0,0,0,0),t=this.allTasks.filter(f=>this.getRelevantDate(f)!==void 0),a=t.filter(f=>this.getRelevantDate(f)<e),r=t.filter(f=>this.getRelevantDate(f)===e),i=t.filter(f=>this.getRelevantDate(f)>e),n=(m=this.plugin.settings.viewConfiguration.find(f=>f.id==="forecast"))==null?void 0:m.sortCriteria,o,l,d;n&&n.length>0?(o=Oa(a,n,this.plugin.settings),l=Oa(r,n,this.plugin.settings),d=Oa(i,n,this.plugin.settings)):(o=this.sortTasksByPriorityAndRelevantDate(a),l=this.sortTasksByPriorityAndRelevantDate(r),d=this.sortTasksByPriorityAndRelevantDate(i)),l.length>0&&this.dateSections.push({title:this.formatSectionTitleForDate(this.selectedDate),date:new Date(this.selectedDate),tasks:l,isExpanded:!0}),o.length>0&&this.dateSections.unshift({title:c("Past Due"),date:new Date(0),tasks:o,isExpanded:!0});let u=new Map;if(d.forEach(f=>{let h=this.getRelevantDate(f),k=new Date(h),g=`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.getDate()).padStart(2,"0")}`;u.has(g)||u.set(g,[]),u.get(g).some(y=>y.id===f.id)||u.get(g).push(f)}),Array.from(u.keys()).sort().forEach(f=>{let[h,k,g]=f.split("-").map(Number),y=new Date(h,k-1,g),w=u.get(f),v=this.formatSectionTitleForDate(y);this.dateSections.push({title:v,date:y,tasks:w,isExpanded:this.shouldExpandFutureSection(y,this.selectedDate)})}),n&&n.length>0){let f=n.find(k=>k.field==="dueDate"),h=n.find(k=>k.field==="scheduledDate");f&&f.order==="desc"?this.dateSections.reverse():h&&h.order==="desc"&&this.dateSections.reverse()}}formatSectionTitleForDate(e){let t=new Date(e).setHours(0,0,0,0),a=new Date(this.currentDate).setHours(0,0,0,0),r="",i=Math.round((t-a)/(1e3*3600*24));i===0?r=c("Today")+", ":i===1&&(r=c("Tomorrow")+", ");let n=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],o=this.formatDate(e);return i===0?c("Today")+" \u2014 "+o:`${r}${n}, ${o}`}shouldExpandFutureSection(e,t){let a=new Date(t).setHours(0,0,0,0),r=new Date(e).setHours(0,0,0,0),i=Math.round((r-a)/(1e3*3600*24));return i>0&&i<=7}getTasksForRelevantDate(e){if(!e)return[];let t=new Date(e).setHours(0,0,0,0);return this.allTasks.filter(a=>this.getRelevantDate(a)===t)}updateTask(e){let t=this.allTasks.findIndex(a=>a.id===e.id);t!==-1?this.allTasks[t]=e:this.allTasks.push(e),this.allTasksMap.set(e.id,e),this.categorizeTasks(),this.updateHeaderCount(),this.updateTaskStats(),this.updateDueSoonSection(),this.calendarComponent.setTasks(this.allTasks),this.focusFilter?this.focusTaskList(this.focusFilter):this.refreshDateSectionsUI()}cleanupRenderers(){this.dateSections.forEach(e=>{e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0)}),this.taskListContainerEl.empty()}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}getRelevantDate(e){let t=e.metadata.scheduledDate||e.metadata.dueDate;if(!t)return;let a=new Date(t);return a.setHours(0,0,0,0),a.getTime()}};var Ya=A(require("obsidian"));Q();var Dn=class extends Ya.Component{constructor(e,t,a,r={}){super();this.parentEl=e;this.app=t;this.plugin=a;this.params=r;this.taskComponents=[];this.treeComponents=[];this.mainTaskRenderer=null;this.allTasks=[];this.filteredTasks=[];this.tagSections=[];this.selectedTags={tags:[],tasks:[],isMultiSelect:!1};this.allTagsMap=new Map;this.isTreeView=!1;this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:"tags-container"});let e=this.containerEl.createDiv({cls:"tags-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode()}createTagsHeader(){this.tagsHeaderEl=this.containerEl.createDiv({cls:"tags-header"});let e=this.tagsHeaderEl.createDiv({cls:"tags-title-container"});this.titleEl=e.createDiv({cls:"tags-title",text:c("Tags")}),this.countEl=e.createDiv({cls:"tags-count"}),this.countEl.setText("0 tags")}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:"tags-left-column"});let t=this.leftColumnEl.createDiv({cls:"tags-sidebar-header"}),a=t.createDiv({cls:"tags-sidebar-title",text:c("Tags")}),r=t.createDiv({cls:"tags-multi-select-btn"});if((0,Ya.setIcon)(r,"list-plus"),r.setAttribute("aria-label",c("Toggle multi-select")),this.registerDomEvent(r,"click",()=>{this.toggleMultiSelect()}),Ya.Platform.isPhone){let i=t.createDiv({cls:"tags-sidebar-close"});new Ya.ExtraButtonComponent(i).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.tagsListEl=this.leftColumnEl.createDiv({cls:"tags-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"tags-right-column"});let t=this.taskContainerEl.createDiv({cls:"tags-task-header"});Ya.Platform.isPhone&&t.createEl("div",{cls:"tags-sidebar-toggle"},n=>{new Ya.ExtraButtonComponent(n).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),t.createDiv({cls:"tags-task-title"}).setText(c("Tasks")),t.createDiv({cls:"tags-task-count"}).setText("0 tasks");let i=t.createDiv({cls:"view-toggle-btn"});(0,Ya.setIcon)(i,"list"),i.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"tags-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.buildTagsIndex(),this.renderTagsList(),this.selectedTags.tags.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(c("Select a tag to see related tasks")))}buildTagsIndex(){var e;this.allTagsMap.clear(),this.allTasks.forEach(t=>{t.metadata.tags&&t.metadata.tags.length>0&&t.metadata.tags.forEach(a=>{var r;typeof a=="string"&&(this.allTagsMap.has(a)||this.allTagsMap.set(a,new Set),(r=this.allTagsMap.get(a))==null||r.add(t.id))})}),(e=this.countEl)==null||e.setText(`${this.allTagsMap.size} tags`)}renderTagsList(){this.tagsListEl.empty();let e=Array.from(this.allTagsMap.keys()).sort(),t={};e.forEach(a=>{let r=a.split("/"),i=t;r.forEach((n,o)=>{i[n]||(i[n]={_tasks:new Set,_path:r.slice(0,o+1).join("/")});let l=this.allTagsMap.get(a);l&&l.forEach(d=>i[n]._tasks.add(d)),i=i[n]})}),this.renderTagHierarchy(t,this.tagsListEl,0)}renderTagHierarchy(e,t,a){Object.keys(e).filter(i=>!i.startsWith("_")).sort().forEach(i=>{let n=e[i],o=n._path,l=n._tasks.size,d=t.createDiv({cls:"tag-list-item",attr:{"data-tag":o,"aria-label":o}});if(a>0){let h=d.createDiv({cls:"tag-indent"});h.style.width=`${a*20}px`}let u=d.createDiv({cls:"tag-icon"});if((0,Ya.setIcon)(u,"hash"),d.createDiv({cls:"tag-name"}).setText(i.replace("#","")),d.createDiv({cls:"tag-count"}).setText(l.toString()),d.dataset.tag=o,this.selectedTags.tags.includes(o)&&d.classList.add("selected"),this.registerDomEvent(d,"click",h=>{this.handleTagSelection(o,h.ctrlKey||h.metaKey)}),Object.keys(n).filter(h=>!h.startsWith("_")).length>0){let h=t.createDiv({cls:"tag-children"});this.renderTagHierarchy(n,h,a+1)}})}handleTagSelection(e,t){if(this.selectedTags.isMultiSelect||t){let r=this.selectedTags.tags.indexOf(e);if(r===-1?this.selectedTags.tags.push(e):this.selectedTags.tags.splice(r,1),this.selectedTags.tags.length===0&&!this.selectedTags.isMultiSelect){this.cleanupRenderers(),this.renderEmptyTaskList(c("Select a tag to see related tasks"));return}}else this.selectedTags.tags=[e];this.tagsListEl.querySelectorAll(".tag-list-item").forEach(r=>{let i=r.getAttribute("data-tag");i&&this.selectedTags.tags.includes(i)?r.classList.add("selected"):r.classList.remove("selected")}),this.updateSelectedTasks(),Ya.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}toggleMultiSelect(){this.selectedTags.isMultiSelect=!this.selectedTags.isMultiSelect,this.selectedTags.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedTags.tags.length===0&&(this.cleanupRenderers(),this.renderEmptyTaskList(c("Select a tag to see related tasks"))))}initializeViewMode(){var t;this.isTreeView=_i(this.app,this.plugin,"tags");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Ya.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,Ya.setIcon)(e,this.isTreeView?"git-branch":"list"),Wi(this.app,"tags",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedTags.tags.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(c("Select a tag to see related tasks"));return}this.selectedTags.tags;let e=this.selectedTags.tags.map(t=>{let a=new Set,r=this.allTagsMap.get(t);return r&&r.forEach(i=>a.add(i)),this.allTagsMap.forEach((i,n)=>{n!==t&&n.startsWith(t+"/")&&i.forEach(o=>a.add(o))}),a});if(this.allTagsMap,e.length===0)this.filteredTasks=[];else{let t=new Set;e.forEach(r=>{r.forEach(i=>t.add(i))}),this.filteredTasks=this.allTasks.filter(r=>t.has(r.id));let a=this.plugin.settings.viewConfiguration.find(r=>r.id==="tags");(a==null?void 0:a.sortCriteria)&&a.sortCriteria.length>0?this.filteredTasks=Oa(this.filteredTasks,a.sortCriteria,this.plugin.settings):this.filteredTasks.sort((r,i)=>{if(r.completed!==i.completed)return r.completed?1:-1;let n=r.metadata.priority||0,o=i.metadata.priority||0;if(n!==o)return o-n;let l=r.metadata.dueDate||Number.MAX_SAFE_INTEGER,d=i.metadata.dueDate||Number.MAX_SAFE_INTEGER;return l-d})}!this.isTreeView&&this.selectedTags.tags.length>1?this.createTagSections():(this.tagSections=[],this.renderTaskList())}createTagSections(){this.cleanupRenderers(),this.tagSections=[];let e=new Map;this.selectedTags.tags.forEach(t=>{let a=this.filteredTasks.filter(r=>r.metadata.tags?r.metadata.tags.some(i=>typeof i=="string"&&(i===t||i.startsWith(t+"/"))):!1);a.length>0&&e.set(t,a)}),e.forEach((t,a)=>{this.tagSections.push({tag:a,tasks:t,isExpanded:!0})}),this.tagSections.sort((t,a)=>t.tag.localeCompare(a.tag)),this.renderTaskList()}updateTaskListHeader(){let e=this.taskContainerEl.querySelector(".tags-task-title");e&&(this.selectedTags.tags.length===1?e.textContent=`#${this.selectedTags.tags[0].replace("#","")}`:this.selectedTags.tags.length>1?e.textContent=`${this.selectedTags.tags.length} ${c("tags selected")}`:e.textContent=c("Tasks"));let t=this.taskContainerEl.querySelector(".tags-task-count");t&&(t.textContent=`${this.filteredTasks.length} ${c("tasks")}`)}cleanupRenderers(){this.mainTaskRenderer&&(this.removeChild(this.mainTaskRenderer),this.mainTaskRenderer=null),this.tagSections.forEach(e=>{e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0)}),this.taskListContainerEl.empty()}renderTaskList(){if(this.cleanupRenderers(),this.updateTaskListHeader(),this.filteredTasks.length===0&&this.selectedTags.tags.length>0){this.renderEmptyTaskList(c("No tasks with the selected tags"));return}if(this.filteredTasks.length===0&&this.selectedTags.tags.length===0){this.renderEmptyTaskList(c("Select a tag to see related tasks"));return}!this.isTreeView&&this.tagSections.length>0&&this.selectedTags.tags.length>1?this.renderTagSections():(this.mainTaskRenderer=new Os(this,this.taskListContainerEl,this.plugin,this.app,"tags"),this.params.onTaskSelected&&(this.mainTaskRenderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(this.mainTaskRenderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskUpdate&&(this.mainTaskRenderer.onTaskUpdate=this.params.onTaskUpdate),this.params.onTaskContextMenu&&(this.mainTaskRenderer.onTaskContextMenu=this.params.onTaskContextMenu),this.mainTaskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,c("No tasks found.")))}renderTagSections(){this.tagSections.forEach(e=>{let t=this.taskListContainerEl.createDiv({cls:"task-tag-section"}),a=t.createDiv({cls:"tag-section-header"}),r=a.createDiv({cls:"section-toggle"});(0,Ya.setIcon)(r,e.isExpanded?"chevron-down":"chevron-right"),a.createDiv({cls:"section-title"}).setText(`#${e.tag.replace("#","")}`),a.createDiv({cls:"section-count"}).setText(`${e.tasks.length}`);let o=t.createDiv({cls:"section-tasks"});e.isExpanded||o.hide(),e.renderer=new Os(this,o,this.plugin,this.app,"tags"),this.params.onTaskSelected&&(e.renderer.onTaskSelected=this.params.onTaskSelected),this.params.onTaskCompleted&&(e.renderer.onTaskCompleted=this.params.onTaskCompleted),this.params.onTaskUpdate&&(e.renderer.onTaskUpdate=this.params.onTaskUpdate),this.params.onTaskContextMenu&&(e.renderer.onTaskContextMenu=this.params.onTaskContextMenu),e.renderer.renderTasks(e.tasks,this.isTreeView,this.allTasksMap,c("No tasks found for this tag.")),this.registerDomEvent(a,"click",()=>{e.isExpanded=!e.isExpanded,(0,Ya.setIcon)(r,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?o.show():o.hide()})})}renderEmptyTaskList(e){this.cleanupRenderers(),this.taskListContainerEl.empty(),this.taskListContainerEl.createDiv({cls:"tags-empty-state"}).setText(e)}updateTask(e){let t=!1,a=this.allTasks.findIndex(r=>r.id===e.id);if(a!==-1){let r=this.allTasks[a];(!r.metadata.tags||!e.metadata.tags||r.metadata.tags.join(",")!==e.metadata.tags.join(","))&&(t=!0),this.allTasks[a]=e}else this.allTasks.push(e),t=!0;if(t)this.buildTagsIndex(),this.renderTagsList(),this.updateSelectedTasks();else{let r=this.filteredTasks.findIndex(i=>i.id===e.id);r!==-1?(this.filteredTasks[r]=e,this.mainTaskRenderer?this.mainTaskRenderer.updateTask(e):this.tagSections.forEach(i=>{var n,o;((n=e.metadata.tags)==null?void 0:n.some(l=>typeof l=="string"&&(l===i.tag||l.startsWith(i.tag+"/"))))&&i.tasks.some(l=>l.id===e.id)&&((o=i.renderer)==null||o.updateTask(e))})):this.updateSelectedTasks()}}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};var or=A(require("obsidian"));Q();xa();var D_=A(require("obsidian"));var T_=A(require("obsidian"));var yd=A(require("obsidian")),op=class extends yd.Component{constructor(e,t,a,r={}){super();this.childRenderers=[];this.containerEl=e,this.node=t,this.events=r,this.config={renderContent:a.renderContent,iconResolver:a.iconResolver||(()=>"folder"),classPrefix:a.classPrefix||"tree",showToggle:a.showToggle!==!1,enableSelection:a.enableSelection!==!1}}onload(){this.render()}render(){let e=this.config.classPrefix;this.nodeEl=this.containerEl.createDiv({cls:`${e}-item`,attr:{"data-node-id":this.node.id,"data-level":this.node.level.toString(),role:"treeitem"}}),this.nodeEl.style.setProperty("--tree-level",this.node.level.toString()),this.node.children.length>0&&this.nodeEl.setAttribute("aria-expanded",this.node.isExpanded.toString()),this.node.isSelected&&this.nodeEl.addClass("is-selected");let t=this.nodeEl.createDiv({cls:`${e}-item-content`});if(this.config.showToggle&&this.node.children.length>0?(this.toggleEl=t.createDiv({cls:`${e}-item-toggle`}),(0,yd.setIcon)(this.toggleEl,this.node.isExpanded?"chevron-down":"chevron-right"),this.registerDomEvent(this.toggleEl,"click",a=>{a.stopPropagation(),this.toggleExpanded()})):this.config.showToggle&&t.createDiv({cls:`${e}-item-toggle-spacer`}),this.config.iconResolver){this.iconEl=t.createDiv({cls:`${e}-item-icon`});let a=this.config.iconResolver(this.node);(0,yd.setIcon)(this.iconEl,a)}this.contentEl=t.createDiv({cls:`${e}-item-content-wrapper`}),this.config.renderContent(this.node,this.contentEl),this.config.enableSelection&&this.registerDomEvent(t,"click",a=>{let r=a.ctrlKey||a.metaKey;this.selectNode(r)}),this.registerDomEvent(t,"contextmenu",a=>{this.events.onContextMenu&&this.events.onContextMenu(this.node,a)}),this.node.children.length>0&&(this.childrenContainerEl=this.nodeEl.createDiv({cls:`${e}-item-children`}),this.node.isExpanded?this.renderChildren():this.childrenContainerEl.hide())}renderChildren(){if(!!this.childrenContainerEl){this.clearChildren();for(let e of this.node.children){let t=new op(this.childrenContainerEl,e,this.config,this.events);this.addChild(t),this.childRenderers.push(t)}}}clearChildren(){for(let e of this.childRenderers)this.removeChild(e);this.childRenderers=[],this.childrenContainerEl&&this.childrenContainerEl.empty()}toggleExpanded(){this.setExpanded(!this.node.isExpanded)}setExpanded(e){this.node.isExpanded!==e&&(this.node.isExpanded=e,this.toggleEl&&(0,yd.setIcon)(this.toggleEl,e?"chevron-down":"chevron-right"),this.childrenContainerEl&&(e?(this.renderChildren(),this.childrenContainerEl.show()):(this.childrenContainerEl.hide(),this.clearChildren())),this.events.onToggle&&this.events.onToggle(this.node,e))}selectNode(e){this.events.onSelect&&this.events.onSelect(this.node,e)}setSelected(e){var t,a;this.node.isSelected=e,e?(t=this.nodeEl)==null||t.addClass("is-selected"):(a=this.nodeEl)==null||a.removeClass("is-selected")}updateNode(e){this.node=e,this.contentEl&&(this.contentEl.empty(),this.config.renderContent(this.node,this.contentEl)),this.setSelected(e.isSelected||!1),this.node.children.length>0&&this.node.isExpanded&&this.renderChildren()}getNode(){return this.node}findChildRenderer(e){for(let t of this.childRenderers){if(t.getNode().id===e)return t;let a=t.findChildRenderer(e);if(a)return a}}onunload(){var e;this.clearChildren(),(e=this.nodeEl)==null||e.remove()}};var _x=class extends T_.Component{constructor(e,t){super();this.parentEl=e;this.config=t;this.tree=null;this.selectedNodes=new Set;this.expandedNodes=new Set;this.nodeRenderers=new Map;this.isMultiSelectMode=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:`${this.config.classPrefix||"tree"}-container`}),this.treeContainerEl=this.containerEl.createDiv({cls:`${this.config.classPrefix||"tree"}`}),this.config.indentSize&&this.containerEl.style.setProperty("--tree-indent-size",`${this.config.indentSize}px`),this.config.stateKey&&this.restoreTreeState()}setTree(e){this.tree=e,this.config.autoExpandLevel!==void 0&&this.expandedNodes.size===0?this.autoExpandToLevel(e,this.config.autoExpandLevel):this.expandedNodes.size>0&&this.restoreExpandedState(e),this.renderTree()}getTree(){return this.tree}renderTree(){if(this.clearRenderers(),this.treeContainerEl.empty(),!this.tree)return;let e=this.tree.fullPath===""?this.tree.children:[this.tree];for(let t of e)this.renderNode(t,this.treeContainerEl);this.updateSelectionVisuals()}renderNode(e,t){let a=t.createDiv(),r=new op(a,e,{renderContent:this.config.renderContent,iconResolver:this.config.iconResolver,classPrefix:this.config.classPrefix||"tree",showToggle:this.config.showToggle!==!1,enableSelection:this.config.enableSelection!==!1},{onToggle:(i,n)=>{this.handleNodeToggle(i,n)},onSelect:(i,n)=>{this.handleNodeSelection(i,n||this.isMultiSelectMode)}});if(this.nodeRenderers.set(e.fullPath,r),this.selectedNodes.has(e.fullPath)&&r.setSelected(!0),this.addChild(r),e.isExpanded&&e.children.length>0){let i=a.createDiv({cls:`${this.config.classPrefix||"tree"}-children`});for(let n of e.children)this.renderNode(n,i)}}handleNodeSelection(e,t){!this.config.enableSelection||(t?this.selectedNodes.has(e.fullPath)?this.selectedNodes.delete(e.fullPath):this.selectedNodes.add(e.fullPath):(this.selectedNodes.clear(),this.selectedNodes.add(e.fullPath)),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set(this.selectedNodes)),this.config.stateKey&&this.persistTreeState())}handleNodeToggle(e,t){e.isExpanded=t,t?this.expandedNodes.add(e.fullPath):this.expandedNodes.delete(e.fullPath),this.renderTree(),this.config.onNodeToggled&&this.config.onNodeToggled(e,t),this.config.stateKey&&this.persistTreeState()}updateSelectionVisuals(){for(let[e,t]of this.nodeRenderers)t.setSelected(this.selectedNodes.has(e))}clearRenderers(){for(let e of this.nodeRenderers.values())this.removeChild(e);this.nodeRenderers.clear()}autoExpandToLevel(e,t,a=0){if(a<t){e.isExpanded=!0,this.expandedNodes.add(e.fullPath);for(let r of e.children)this.autoExpandToLevel(r,t,a+1)}}restoreExpandedState(e){e.isExpanded=this.expandedNodes.has(e.fullPath)||e.fullPath==="";for(let t of e.children)this.restoreExpandedState(t)}setMultiSelectMode(e){this.isMultiSelectMode=e,!e&&this.selectedNodes.size===0&&this.updateSelectionVisuals(),this.config.onMultiSelectToggled&&this.config.onMultiSelectToggled(e)}getMultiSelectMode(){return this.isMultiSelectMode}getSelectedPaths(){return new Set(this.selectedNodes)}setSelectedPaths(e){this.selectedNodes=new Set(e),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set(this.selectedNodes))}clearSelection(){this.selectedNodes.clear(),this.updateSelectionVisuals(),this.config.onNodeSelected&&this.config.onNodeSelected(new Set)}expandAll(){if(!this.tree)return;let e=t=>{t.isExpanded=!0,this.expandedNodes.add(t.fullPath),t.children.forEach(e)};e(this.tree),this.renderTree(),this.config.stateKey&&this.persistTreeState()}collapseAll(){if(!this.tree)return;let e=t=>{t.isExpanded=!1,t.children.forEach(e)};e(this.tree),this.expandedNodes.clear(),this.renderTree(),this.config.stateKey&&this.persistTreeState()}findNodeByPath(e){if(!this.tree)return;let t=a=>{if(a.fullPath===e)return a;for(let r of a.children){let i=t(r);if(i)return i}};return t(this.tree)}persistTreeState(){if(!this.config.stateKey)return;let e={expandedNodes:Array.from(this.expandedNodes),selectedNodes:Array.from(this.selectedNodes)};localStorage.setItem(this.config.stateKey,JSON.stringify(e))}restoreTreeState(){if(!!this.config.stateKey)try{let e=localStorage.getItem(this.config.stateKey);if(e){let t=JSON.parse(e);this.expandedNodes=new Set(t.expandedNodes||[]),this.selectedNodes=new Set(t.selectedNodes||[])}}catch(e){console.error("Failed to restore tree state:",e)}}onunload(){this.clearRenderers(),this.containerEl&&(this.containerEl.empty(),this.containerEl.remove())}};xa();function RK(s,e="/"){if(!s||!s.trim())return[];let t=s.trim().replace(new RegExp(`${Vx(e)}+`,"g"),e).replace(new RegExp(`^${Vx(e)}|${Vx(e)}$`,"g"),"");return t?t.split(e):[]}function Vx(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ux(s,e="/"){let t={id:"root",name:"Projects",fullPath:"",data:{directTaskIds:new Set,allTaskIds:new Set,directTaskCount:0,totalTaskCount:0},children:[],level:0,isExpanded:!0};for(let[a,r]of s.entries()){let i=RK(a,e);if(i.length===0)continue;let n=t,o="";for(let l=0;l<i.length;l++){let d=i[l],u=l===i.length-1;o=o?`${o}${e}${d}`:d;let p=n.children.find(m=>m.name===d);p?u&&(p.data.directTaskIds=r,p.data.directTaskCount=r.size):(p={id:o,name:d,fullPath:o,data:{directTaskIds:u?r:new Set,allTaskIds:new Set(r),directTaskCount:u?r.size:0,totalTaskCount:r.size},children:[],parent:n,level:n.level+1,isExpanded:!1},n.children.push(p)),n=p}}return C_(t),x_(t),t}function C_(s){let e=new Set(s.data.directTaskIds);for(let t of s.children)C_(t).forEach(r=>e.add(r));return s.data.allTaskIds=e,s.data.totalTaskCount=e.size,e}function x_(s){s.children.sort((e,t)=>e.name.localeCompare(t.name));for(let e of s.children)x_(e)}function S_(s,e="/"){var a;let t=new Map;for(let r of s){let i=bt(r);!i||(t.has(i)||t.set(i,new Set),(a=t.get(i))==null||a.add(r.id))}return Ux(t,e)}function E_(s,e){if(e===""||e===s.fullPath)return s;let t=[s];for(;t.length>0;){let a=t.shift();if(a.fullPath===e)return a;t.push(...a.children)}}var $x=class extends D_.Component{constructor(e,t,a){super();this.parentEl=e;this.app=t;this.plugin=a;this.projectTree=null;this.allTasks=[]}onload(){this.treeComponent=new _x(this.parentEl,{classPrefix:"project-tree",indentSize:24,showToggle:!0,enableSelection:!0,enableMultiSelect:!0,stateKey:"task-genius-project-tree-state",autoExpandLevel:1,renderContent:(e,t)=>{let a=t.createSpan({cls:"project-tree-item-name",text:e.name}),r=t.createSpan({cls:"project-tree-item-counts"});e.data.directTaskCount>0&&r.createSpan({cls:"project-tree-item-count-direct",text:e.data.directTaskCount.toString()}),e.children.length>0&&e.data.totalTaskCount>e.data.directTaskCount&&r.createSpan({cls:"project-tree-item-count-total",text:e.data.totalTaskCount.toString()})},iconResolver:e=>e.children.length>0?e.isExpanded?"folder-open":"folder":"file",onNodeSelected:e=>{let t=this.getTasksForSelection(e);this.onNodeSelected&&this.onNodeSelected(e,t)},onMultiSelectToggled:e=>{this.onMultiSelectToggled&&this.onMultiSelectToggled(e)}}),this.addChild(this.treeComponent),this.treeComponent.load()}buildTree(e){this.allTasks=e;let t=this.plugin.settings.projectPathSeparator||"/";this.projectTree=S_(e,t),this.projectTree&&this.treeComponent.setTree(this.projectTree)}setTree(e,t){this.projectTree=e,this.allTasks=t,this.treeComponent.setTree(e)}getTasksForSelection(e){if(!this.projectTree||e.size===0)return[];let t=new Set;for(let a of e){let r=E_(this.projectTree,a);r&&r.data.allTaskIds.forEach(i=>t.add(i))}return this.allTasks.filter(a=>t.has(a.id))}setMultiSelectMode(e){this.treeComponent.setMultiSelectMode(e)}getSelectedPaths(){return this.treeComponent.getSelectedPaths()}setSelectedPaths(e){this.treeComponent.setSelectedPaths(e)}clearSelection(){this.treeComponent.clearSelection()}expandAll(){this.treeComponent.expandAll()}collapseAll(){this.treeComponent.collapseAll()}onunload(){}};xa();function P_(s,e,t="/"){return e.length===0?[]:s.filter(a=>{let r=FK(a);return r?e.some(i=>jK(r,i,!0,t)):!1})}function FK(s){return bt(s)}function jK(s,e,t=!0,a="/"){let r=M_(s,a),i=M_(e,a);return r===i?!0:t?r.startsWith(i+a):!1}function M_(s,e){if(!s)return"";let t=s.replace(/[/\\]/g,e),a=new RegExp(`${Yx(e)}+`,"g");return t=t.replace(a,e),t=t.replace(new RegExp(`^${Yx(e)}|${Yx(e)}$`,"g"),""),t}function Yx(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var Pn=class extends or.Component{constructor(e,t,a,r={}){super();this.parentEl=e;this.app=t;this.plugin=a;this.params=r;this.allTasks=[];this.filteredTasks=[];this.selectedProjects={projects:[],tasks:[],isMultiSelect:!1};this.allProjectsMap=new Map;this.isTreeView=!1;this.allTasksMap=new Map;this.isProjectTreeView=!1}onload(){this.containerEl=this.parentEl.createDiv({cls:"projects-container"});let e=this.containerEl.createDiv({cls:"projects-content"});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode();let t=localStorage.getItem("task-genius-project-tree-view");this.isProjectTreeView=t==="true",this.taskRenderer=new Os(this,this.taskListContainerEl,this.plugin,this.app,"projects"),this.taskRenderer.onTaskSelected=a=>{this.params.onTaskSelected&&this.params.onTaskSelected(a)},this.taskRenderer.onTaskCompleted=a=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(a)},this.taskRenderer.onTaskUpdate=async(a,r)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(a,r)},this.taskRenderer.onTaskContextMenu=(a,r)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(a,r)}}createProjectsHeader(){this.projectsHeaderEl=this.containerEl.createDiv({cls:"projects-header"});let e=this.projectsHeaderEl.createDiv({cls:"projects-title-container"});this.titleEl=e.createDiv({cls:"projects-title",text:c("Projects")}),this.countEl=e.createDiv({cls:"projects-count"}),this.countEl.setText(`0 ${c("projects")}`)}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:"projects-left-column"});let t=this.leftColumnEl.createDiv({cls:"projects-sidebar-header"}),a=t.createDiv({cls:"projects-sidebar-title",text:c("Projects")}),r=t.createDiv({cls:"projects-sidebar-header-btn-group"}),i=r.createDiv({cls:"projects-tree-toggle-btn"});(0,or.setIcon)(i,this.isProjectTreeView?"git-branch":"list"),i.setAttribute("aria-label",c("Toggle tree/list view")),this.registerDomEvent(i,"click",()=>{this.toggleProjectTreeView()});let n=r.createDiv({cls:"projects-multi-select-btn"});if((0,or.setIcon)(n,"list-plus"),n.setAttribute("aria-label",c("Toggle multi-select")),or.Platform.isPhone){let o=t.createDiv({cls:"projects-sidebar-close"});new or.ExtraButtonComponent(o).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.registerDomEvent(n,"click",()=>{this.toggleMultiSelect()}),this.projectsListEl=this.leftColumnEl.createDiv({cls:"projects-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"projects-right-column"});let t=this.taskContainerEl.createDiv({cls:"projects-task-header"});or.Platform.isPhone&&t.createEl("div",{cls:"projects-sidebar-toggle"},n=>{new or.ExtraButtonComponent(n).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),t.createDiv({cls:"projects-task-title"}).setText(c("Tasks")),t.createDiv({cls:"projects-task-count"}).setText(`0 ${c("tasks")}`);let i=t.createDiv({cls:"view-toggle-btn"});(0,or.setIcon)(i,"list"),i.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"projects-task-list"})}setTasks(e){this.allTasks=e,this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0?this.updateSelectedTasks():(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`))}buildProjectsIndex(){var e;if(this.allProjectsMap.clear(),this.allTasks.forEach(t=>{var r;let a=bt(t);a&&(this.allProjectsMap.has(a)||this.allProjectsMap.set(a,new Set),(r=this.allProjectsMap.get(a))==null||r.add(t.id))}),this.isProjectTreeView){let t=this.plugin.settings.projectPathSeparator||"/";this.projectTree=Ux(this.allProjectsMap,t)}(e=this.countEl)==null||e.setText(`${this.allProjectsMap.size} projects`)}renderProjectsList(){if(this.projectsListEl.empty(),this.isProjectTreeView&&this.projectTree)this.projectTreeComponent&&this.projectTreeComponent.unload(),this.projectTreeComponent=new $x(this.projectsListEl,this.app,this.plugin),this.projectTreeComponent.onNodeSelected=(e,t)=>{this.selectedProjects.projects=Array.from(e),this.updateSelectedTasks()},this.projectTreeComponent.onMultiSelectToggled=e=>{this.selectedProjects.isMultiSelect=e,!e&&this.selectedProjects.projects.length===0&&(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`))},this.projectTreeComponent.load(),this.projectTree&&this.projectTreeComponent.setTree(this.projectTree,this.allTasks);else{this.projectTreeComponent&&(this.projectTreeComponent.unload(),this.projectTreeComponent=void 0);let e=Array.from(this.allProjectsMap.keys()).sort();e.forEach(t=>{var l;let a=((l=this.allProjectsMap.get(t))==null?void 0:l.size)||0,r=this.projectsListEl.createDiv({cls:"project-list-item"}),i=r.createDiv({cls:"project-icon"});(0,or.setIcon)(i,"folder"),r.createDiv({cls:"project-name"}).setText(t),r.createDiv({cls:"project-count"}).setText(a.toString()),r.dataset.project=t,this.selectedProjects.projects.includes(t)&&r.classList.add("selected"),this.registerDomEvent(r,"click",d=>{this.handleProjectSelection(t,d.ctrlKey||d.metaKey)})}),e.length===0&&this.projectsListEl.createDiv({cls:"projects-empty-state"}).setText(c("No projects found"))}}handleProjectSelection(e,t){if(this.selectedProjects.isMultiSelect||t){let r=this.selectedProjects.projects.indexOf(e);if(r===-1?this.selectedProjects.projects.push(e):this.selectedProjects.projects.splice(r,1),this.selectedProjects.projects.length===0&&!this.selectedProjects.isMultiSelect){this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`);return}}else this.selectedProjects.projects=[e];this.projectsListEl.querySelectorAll(".project-list-item").forEach(r=>{let i=r.getAttribute("data-project");i&&this.selectedProjects.projects.includes(i)?r.classList.add("selected"):r.classList.remove("selected")}),this.updateSelectedTasks()}toggleMultiSelect(){this.selectedProjects.isMultiSelect=!this.selectedProjects.isMultiSelect,this.selectedProjects.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedProjects.projects.length===0&&(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`))),this.projectTreeComponent&&this.projectTreeComponent.setMultiSelectMode(this.selectedProjects.isMultiSelect)}initializeViewMode(){var t;this.isTreeView=_i(this.app,this.plugin,"projects");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,or.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,or.setIcon)(e,this.isTreeView?"git-branch":"list"),Wi(this.app,"projects",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedProjects.projects.length===0){this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`);return}if(this.isProjectTreeView)this.filteredTasks=P_(this.allTasks,this.selectedProjects.projects,this.plugin.settings.projectPathSeparator||"/");else{let t=new Set;this.selectedProjects.projects.forEach(a=>{let r=this.allProjectsMap.get(a);r&&r.forEach(i=>t.add(i))}),this.filteredTasks=this.allTasks.filter(a=>t.has(a.id))}let e=this.plugin.settings.viewConfiguration.find(t=>t.id==="projects");(e==null?void 0:e.sortCriteria)&&e.sortCriteria.length>0?this.filteredTasks=Oa(this.filteredTasks,e.sortCriteria,this.plugin.settings):this.filteredTasks.sort((t,a)=>{if(t.completed!==a.completed)return t.completed?1:-1;let r=t.metadata.priority||0,i=a.metadata.priority||0;if(r!==i)return i-r;let n=t.metadata.dueDate||Number.MAX_SAFE_INTEGER,o=a.metadata.dueDate||Number.MAX_SAFE_INTEGER;return n-o}),this.renderTaskList()}updateTaskListHeader(e,t){let a=this.taskContainerEl.querySelector(".projects-task-title");a&&(a.textContent=e);let r=this.taskContainerEl.querySelector(".projects-task-count");r&&(r.textContent=t)}renderTaskList(){let e=c("Tasks");this.selectedProjects.projects.length===1?e=this.selectedProjects.projects[0]:this.selectedProjects.projects.length>1&&(e=`${this.selectedProjects.projects.length} ${c("projects selected")}`);let t=`${this.filteredTasks.length} ${c("tasks")}`;this.updateTaskListHeader(e,t),this.taskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,c("No tasks in the selected projects"))}updateTask(e){let t=this.allTasks.findIndex(r=>r.id===e.id),a=!1;if(t!==-1?(this.allTasks[t].metadata.project!==e.metadata.project&&(a=!0),this.allTasks[t]=e):(this.allTasks.push(e),a=!0),a)this.buildProjectsIndex(),this.renderProjectsList(),this.updateSelectedTasks();else{let r=this.filteredTasks.findIndex(i=>i.id===e.id);r!==-1?(this.filteredTasks[r]=e,this.taskRenderer.updateTask(e)):this.updateSelectedTasks()}}toggleProjectTreeView(){this.isProjectTreeView=!this.isProjectTreeView;let e=this.leftColumnEl.querySelector(".projects-tree-toggle-btn");e&&(0,or.setIcon)(e,this.isProjectTreeView?"git-branch":"list"),localStorage.setItem("task-genius-project-tree-view",this.isProjectTreeView.toString()),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0&&this.updateSelectedTasks()}onunload(){this.projectTreeComponent&&this.projectTreeComponent.unload(),this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};var $t=A(require("obsidian"));Q();var A_={daily:1,weekly:7,"every 2 weeks":14,monthly:30,quarterly:90,"every 6 months":180,yearly:365},I_=class extends $t.Modal{constructor(e,t,a,r,i){super(e);this.frequency="";this.frequencyOptions=["daily","weekly","every 2 weeks","monthly","quarterly","every 6 months","yearly"];this.projectName=a,this.existingSetting=r,this.plugin=t,this.onSave=i,r&&r.frequency?this.frequency=r.frequency:this.frequency="weekly"}async onOpen(){var f;let{contentEl:e}=this;e.createEl("h2",{text:c("Configure Review for")+` "${this.projectName}"`,cls:"review-modal-title"});let t=e.createDiv({cls:"review-modal-form"}),a=t.createDiv({cls:"review-modal-field"});a.createEl("label",{text:c("Review Frequency"),cls:"review-modal-label",attr:{for:"review-frequency"}}),a.createEl("div",{text:c("How often should this project be reviewed"),cls:"review-modal-description"});let r=a.createEl("select",{cls:"review-modal-select",attr:{id:"review-frequency"}});this.frequencyOptions.forEach(h=>{let k=r.createEl("option",{text:h,value:h});h===this.frequency&&(k.selected=!0)});let i=r.createEl("option",{text:c("Custom..."),value:"custom"}),n=a.createDiv({cls:"review-modal-custom-frequency"});n.style.display="none";let o=n.createEl("input",{cls:"review-modal-input",attr:{type:"text",placeholder:c("e.g., every 3 months")}});r.addEventListener("change",h=>{let k=h.target.value;k==="custom"?(n.style.display="block",o.focus(),this.frequency=""):(n.style.display="none",this.frequency=k)}),o.addEventListener("input",h=>{this.frequency=h.target.value}),this.frequency&&!this.frequencyOptions.includes(this.frequency)&&(i.selected=!0,n.style.display="block",o.value=this.frequency);let l=t.createDiv({cls:"review-modal-field"});l.createEl("label",{text:c("Last Reviewed"),cls:"review-modal-label"});let d=((f=this.existingSetting)==null?void 0:f.lastReviewed)?new Date(this.existingSetting.lastReviewed).toLocaleString():"Never";l.createEl("div",{text:d,cls:"review-modal-last-reviewed"});let u=e.createDiv({cls:"review-modal-buttons"});u.createEl("button",{text:c("Cancel"),cls:"review-modal-button review-modal-button-cancel"}).addEventListener("click",()=>{this.close()}),u.createEl("button",{text:c("Save"),cls:"review-modal-button review-modal-button-save"}).addEventListener("click",()=>{this.saveSettings()})}validateFrequency(){return!this.frequency||this.frequency.trim()===""?(new $t.Notice(c("Please specify a review frequency")),!1):!0}async saveSettings(){var t,a;if(!this.validateFrequency())return;let e={frequency:this.frequency,lastReviewed:((t=this.existingSetting)==null?void 0:t.lastReviewed)||void 0,reviewedTaskIds:((a=this.existingSetting)==null?void 0:a.reviewedTaskIds)||[]};this.plugin.settings.reviewSettings[this.projectName]=e,await this.plugin.saveSettings(),this.onSave(e),new $t.Notice(c("Review schedule updated for")+` ${this.projectName}`),this.close()}async onClose(){let{contentEl:e}=this;e.empty()}},Tl=class extends $t.Component{constructor(e,t,a,r={}){super();this.parentEl=e;this.app=t;this.plugin=a;this.params=r;this.allTasks=[];this.reviewableProjects=new Map;this.selectedProject={project:null,tasks:[],setting:null};this.showAllTasks=!1;this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:"review-container"});let e=this.containerEl.createDiv({cls:"review-content"});this.createLeftColumn(e),this.createRightColumn(e),this.taskRenderer=new Os(this,this.taskListContainerEl,this.plugin,this.app,"review"),this.taskRenderer.onTaskSelected=t=>{this.params.onTaskSelected&&this.params.onTaskSelected(t)},this.taskRenderer.onTaskCompleted=t=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(t)},this.taskRenderer.onTaskUpdate=async(t,a)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(t,a)},this.taskRenderer.onTaskContextMenu=(t,a)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(t,a)},this.loadReviewSettings()}createLeftColumn(e){if(this.leftColumnEl=e.createDiv({cls:"review-left-column"}),$t.Platform.isPhone){let r=this.leftColumnEl.createDiv({cls:"review-sidebar-close"});new $t.ExtraButtonComponent(r).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}let a=this.leftColumnEl.createDiv({cls:"review-sidebar-header"}).createDiv({cls:"review-sidebar-title",text:c("Review Projects")});this.projectsListEl=this.leftColumnEl.createDiv({cls:"review-sidebar-list"})}createRightColumn(e){this.taskContainerEl=e.createDiv({cls:"review-right-column"}),this.taskHeaderEl=this.taskContainerEl.createDiv({cls:"review-task-header"}),$t.Platform.isPhone&&this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},t=>{new $t.ExtraButtonComponent(t).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"review-task-list"})}loadReviewSettings(){this.reviewableProjects.clear();let e=this.plugin.settings.reviewSettings,t=new Set;this.allTasks.forEach(a=>{a.metadata.project&&t.add(a.metadata.project)});for(let a of t)if(e[a])this.reviewableProjects.set(a,e[a]);else{let r={frequency:"",lastReviewed:void 0,reviewedTaskIds:[]};this.reviewableProjects.set(a,r)}this.reviewableProjects,this.renderProjectsList(),this.selectedProject.project&&!this.allTasks.some(a=>a.metadata.project===this.selectedProject.project)?this.clearSelection():this.selectedProject.project?this.selectProject(this.selectedProject.project):this.renderEmptyTaskList(c("Select a project to review its tasks."))}clearSelection(){this.selectedProject={project:null,tasks:[],setting:null},this.projectsListEl.querySelectorAll(".review-project-item").forEach(t=>t.classList.remove("selected")),this.renderEmptyTaskList(c("Select a project to review its tasks."))}setTasks(e){this.allTasks=e,this.loadReviewSettings()}renderProjectsList(){this.projectsListEl.empty();let e=Array.from(this.reviewableProjects.keys()).sort(),t=e.filter(i=>{let n=this.reviewableProjects.get(i);return n&&n.frequency}),a=e.filter(i=>{let n=this.reviewableProjects.get(i);return!n||!n.frequency}),r=i=>{let n=this.reviewableProjects.get(i);if(!n)return;let o=this.projectsListEl.createDiv({cls:"review-project-item"});o.dataset.project=i,n.frequency&&o.addClass("has-review-settings"),this.isReviewDue(n)&&o.addClass("is-review-due");let l=o.createDiv({cls:"review-project-icon"});(0,$t.setIcon)(l,n.frequency?"folder-check":"folder"),o.createDiv({cls:"review-project-name"}).setText(i),this.selectedProject.project===i&&o.addClass("selected"),this.registerDomEvent(o,"click",()=>{this.selectProject(i)})};t.length>0&&(this.projectsListEl.createDiv({cls:"review-projects-group-header"}).setText(c("Configured for Review")),t.forEach(r)),a.length>0&&(this.projectsListEl.createDiv({cls:"review-projects-group-header"}).setText(c("Not Configured")),a.forEach(r)),e.length===0&&this.projectsListEl.createDiv({cls:"review-empty-state"}).setText(c("No projects available."))}selectProject(e){if(!e||!this.reviewableProjects.has(e)){this.selectedProject={project:null,tasks:[],setting:null},this.renderEmptyTaskList(c("Select a project to review.")),this.projectsListEl.querySelectorAll(".review-project-item").forEach(i=>i.classList.remove("selected"));return}let t=this.reviewableProjects.get(e);if(!t)return;this.selectedProject.project=e,this.selectedProject.setting=t,this.projectsListEl.querySelectorAll(".review-project-item").forEach(r=>{r.getAttribute("data-project")===e?r.classList.add("selected"):r.classList.remove("selected")}),$t.Platform.isPhone&&this.toggleLeftColumnVisibility(!1),this.updateSelectedProjectTasks()}updateSelectedProjectTasks(){if(!this.selectedProject.project){this.renderEmptyTaskList(c("Select a project to review its tasks."));return}let e=this.allTasks.filter(n=>n.metadata.project===this.selectedProject.project),t=this.selectedProject.setting,a=[],r=this.taskHeaderEl.querySelector(".review-header-content"),i=r==null?void 0:r.querySelector(".review-filter-info");if(i&&i.remove(),t&&t.lastReviewed&&!this.showAllTasks){let n=t.lastReviewed,o=new Set(t.reviewedTaskIds||[]);if(a=e.filter(l=>l.metadata.createdDate&&l.metadata.createdDate>n?!0:o.has(l.id)&&l.completed?!1:!!(o.has(l.id)&&!l.completed||!o.has(l.id))),a.length<e.length&&r){let l=r.createDiv({cls:"review-filter-info"}),d=e.length-a.length,u=l.createSpan({text:c(`Showing new and in-progress tasks only. ${d} completed tasks from previous reviews are hidden.`)}),p=l.createSpan({cls:"review-filter-toggle",text:c("Show all tasks")});this.registerDomEvent(p,"click",()=>{this.toggleShowAllTasks()})}}else if(a=e,this.showAllTasks&&r&&(t==null?void 0:t.lastReviewed)){let n=r.createDiv({cls:"review-filter-info"}),o=n.createSpan({text:c("Showing all tasks, including completed tasks from previous reviews.")}),l=n.createSpan({cls:"review-filter-toggle",text:c("Show only new and in-progress tasks")});this.registerDomEvent(l,"click",()=>{this.toggleShowAllTasks()})}this.selectedProject.tasks=a,this.selectedProject.tasks.sort((n,o)=>{if(n.completed!==o.completed)return n.completed?1:-1;let l=n.metadata.dueDate?new Date(n.metadata.dueDate).getTime():Number.MAX_SAFE_INTEGER,d=o.metadata.dueDate?new Date(o.metadata.dueDate).getTime():Number.MAX_SAFE_INTEGER;if(l!==d)return l-d;let u=n.metadata.priority||0;return(o.metadata.priority||0)-u}),this.renderTaskList(),this.updateFilterInfoInHeader(e.length,a.length)}updateFilterInfoInHeader(e,t){let a=this.taskHeaderEl.querySelector(".review-header-content");if(!a)return;let r=a.querySelector(".review-filter-info");r&&r.remove();let i=this.selectedProject.setting;if(i==null?void 0:i.lastReviewed){let n=e-t;if(!this.showAllTasks&&n>0){let o=a.createDiv({cls:"review-filter-info"});o.createSpan({text:c(`Showing new and in-progress tasks only. ${n} completed tasks from previous reviews are hidden.`)});let l=o.createSpan({cls:"review-filter-toggle",text:c("Show all tasks")});this.registerDomEvent(l,"click",()=>{this.toggleShowAllTasks()})}else if(this.showAllTasks&&e>0){let o=a.createDiv({cls:"review-filter-info"});o.createSpan({text:c("Showing all tasks, including completed tasks from previous reviews.")});let l=o.createSpan({cls:"review-filter-toggle",text:c("Show only new and in-progress tasks")});this.registerDomEvent(l,"click",()=>{this.toggleShowAllTasks()})}}}toggleShowAllTasks(){this.showAllTasks=!this.showAllTasks,this.updateSelectedProjectTasks()}renderTaskList(){if(this.taskHeaderEl.empty(),$t.Platform.isPhone&&this.renderMobileToggle(),!this.selectedProject.project||!this.selectedProject.setting){this.renderEmptyTaskList(c("Select a project to review its tasks."));return}this.renderReviewHeader(this.selectedProject.project,this.selectedProject.setting),this.allTasksMap=new Map(this.allTasks.map(e=>[e.id,e])),this.taskRenderer.renderTasks(this.selectedProject.tasks,!1,this.allTasksMap,c("No tasks found for this project."))}renderReviewHeader(e,t){this.taskHeaderEl.empty(),$t.Platform.isPhone&&this.renderMobileToggle();let a=this.taskHeaderEl.createDiv({cls:"review-header-content"});a.createEl("h3",{cls:["review-title","content-title"],text:e});let r=a.createDiv({cls:"review-info"});if(t.frequency){let i=`${c("Review every")} ${t.frequency}`;r.createSpan({cls:"review-frequency",text:i},d=>{this.registerDomEvent(d,"click",()=>{this.openConfigureModal(e,t)})}),r.createSpan({cls:"review-separator",text:"\u2022"});let n=t.lastReviewed?new Date(t.lastReviewed).toLocaleDateString():c("never");r.createSpan({cls:"review-last-date",text:`${c("Last reviewed")}: ${n}`});let l=a.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-complete-btn",text:c("Mark as Reviewed")});this.registerDomEvent(l,"click",()=>{this.markProjectAsReviewed(e)})}else{r.createSpan({cls:"review-no-settings",text:c("No review schedule configured for this project")});let n=a.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-configure-btn",text:c("Configure Review Schedule")});this.registerDomEvent(n,"click",()=>{this.openConfigureModal(e,t)})}}openConfigureModal(e,t){new I_(this.app,this.plugin,e,t,r=>{this.selectedProject.project===e&&(this.selectedProject.setting=r,this.renderReviewHeader(e,r)),this.loadReviewSettings()}).open()}async markProjectAsReviewed(e){""+e;let t=Date.now(),a=this.plugin.settings.reviewSettings,i=this.allTasks.filter(n=>n.metadata.project===e).map(n=>n.id);if(a[e])a[e].lastReviewed=t,a[e].reviewedTaskIds=i,await this.plugin.saveSettings(),this.selectedProject.setting=a[e],new $t.Notice(c(`${e} marked as reviewed with ${i.length} tasks`)),this.renderReviewHeader(e,a[e]),this.updateSelectedProjectTasks();else{let n={frequency:"weekly",lastReviewed:t,reviewedTaskIds:i};a[e]=n,await this.plugin.saveSettings(),this.selectedProject.setting=n,this.reviewableProjects.set(e,n),new $t.Notice(c(`${e} marked as reviewed with ${i.length} tasks`)),this.renderReviewHeader(e,n),this.renderProjectsList(),this.updateSelectedProjectTasks()}}renderMobileToggle(){this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},e=>{new $t.ExtraButtonComponent(e).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})})}renderEmptyTaskList(e){if(this.taskHeaderEl.empty(),$t.Platform.isPhone&&this.renderMobileToggle(),!this.selectedProject.project){let t=this.taskHeaderEl.createDiv({cls:"review-header-content"});t.createEl("h3",{cls:["review-title","content-title"],text:c("Project Review")}),t.createDiv({cls:"review-info",text:c("Select a project from the left sidebar to review its tasks.")})}this.allTasksMap=new Map(this.allTasks.map(t=>[t.id,t])),this.taskRenderer.renderTasks([],!1,this.allTasksMap,e)}updateTask(e){e.id,e.metadata.project;let t=!1,a=this.allTasks.findIndex(r=>r.id===e.id);if(a!==-1){if(this.allTasks[a].metadata.project!==e.metadata.project){this.loadReviewSettings();return}this.allTasks[a]=e}else if(this.allTasks.push(e),e.metadata.project===this.selectedProject.project)t=!0;else if(e.metadata.project&&!this.reviewableProjects.has(e.metadata.project)){this.loadReviewSettings();return}if(this.selectedProject.project===e.metadata.project){let r=this.selectedProject.tasks.findIndex(n=>n.id===e.id),i=this.checkTaskVisibility(e);r!==-1?i?(this.selectedProject.tasks[r]=e,this.taskRenderer.updateTask(e)):t=!0:i&&(t=!0)}t&&this.updateSelectedProjectTasks()}checkTaskVisibility(e){var r;if(this.showAllTasks||!((r=this.selectedProject.setting)==null?void 0:r.lastReviewed))return!0;let t=this.selectedProject.setting.lastReviewed,a=new Set(this.selectedProject.setting.reviewedTaskIds||[]);return e.metadata.createdDate&&e.metadata.createdDate>t?!0:a.has(e.id)&&e.completed?!1:!!(a.has(e.id)&&!e.completed||!a.has(e.id))}refreshReviewSettings(){this.loadReviewSettings()}onunload(){var e;(e=this.containerEl)==null||e.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}isReviewDue(e){if(!e.frequency)return!1;if(!e.lastReviewed)return!0;let t=new Date(e.lastReviewed),a=new Date;a.setHours(0,0,0,0);let r=0;if(A_[e.frequency])r=A_[e.frequency];else{let n=e.frequency.match(/every (\d+) days/i);if(n&&n[1])r=parseInt(n[1],10);else return console.warn(`Unknown frequency format: ${e.frequency}`),!1}let i=new Date(t);return i.setDate(t.getDate()+r),i.setHours(0,0,0,0),a>=i}};Lr();cn();Q();var Na=A(require("obsidian"));Q();var Cl=A(require("obsidian"));var Mn=A(require("obsidian"));function R_(s){if(s.completed)return"grey"}Cr();Lr();var F_=class extends Mn.Component{constructor(e){super();this.params=e;this.debounceHover=(0,Mn.debounce)((e,t)=>{var a,r;(r=(a=this.params)==null?void 0:a.onEventHover)==null||r.call(a,e,t)},400);this.event=e.event,this.viewType=e.viewType,this.layout=e.layout,this.positioningHints=e.positioningHints,this.app=e.app,this.eventEl=createEl("div",{cls:["calendar-event",`calendar-event-${this.viewType}`]}),this.event.metadata.project&&(this.eventEl.dataset.projectId=this.event.metadata.project),this.event.metadata.priority&&(this.eventEl.dataset.priority=this.event.metadata.priority.toString()),this.event.status&&(this.eventEl.dataset.taskStatus=this.event.status),this.event.filePath&&(this.eventEl.dataset.filePath=this.event.filePath),this.eventEl.dataset.eventId=this.event.id}onload(){super.onload(),this.applyStyles(),this.setTooltip(),this.renderByViewType(),this.registerEventListeners()}applyStyles(){let e=R_(this.event);e?(this.eventEl.style.backgroundColor=e,e==="grey"&&this.eventEl.addClass("is-completed")):this.event.completed&&this.eventEl.addClass("is-completed")}setTooltip(){this.eventEl.setAttr("title",`${Ka(this.event.title)||"(No title)"}
Status: ${this.event.status}${this.event.metadata.dueDate?`
Due: ${(0,Mn.moment)(this.event.metadata.dueDate).format("YYYY-MM-DD")}`:""}${this.event.metadata.startDate?`
Start: ${(0,Mn.moment)(this.event.metadata.startDate).format("YYYY-MM-DD")}`:""}`)}renderByViewType(){this.viewType==="month"||this.viewType==="week-allday"||this.viewType==="day-allday"?this.renderAllDayEvent():this.viewType==="day-timed"||this.viewType==="week-timed"?this.renderTimedEvent():this.viewType==="agenda"&&this.renderAgendaEvent()}renderAllDayEvent(){var a;this.eventEl.addClass("calendar-event-allday");let e=Ot(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",r=>{var i;r.stopPropagation(),((i=this.params)==null?void 0:i.onEventComplete)&&this.params.onEventComplete(r,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createDiv({cls:"calendar-event-title-container"});this.markdownRenderer=new Qt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title),((a=this.positioningHints)==null?void 0:a.isMultiDay)&&(this.eventEl.addClass("is-multi-day"),this.positioningHints.isStart&&this.eventEl.addClass("is-start"),this.positioningHints.isEnd&&this.eventEl.addClass("is-end"))}renderTimedEvent(){if(this.eventEl.toggleClass(["calendar-event-timed","calendar-event"],!0),this.viewType==="week-timed"&&this.eventEl.addClass("calendar-event-timed-week"),this.layout?this.viewType==="week-timed"?(this.eventEl.style.position="absolute",this.eventEl.style.top=`${this.layout.top}px`,this.eventEl.style.left=`${this.layout.left}%`,this.eventEl.style.width=`${this.layout.width}%`,this.eventEl.style.height=`${this.layout.height}px`,this.eventEl.style.zIndex=String(this.layout.zIndex)):(this.eventEl.style.position="relative",this.eventEl.style.width="100%"):this.viewType==="week-timed"&&(console.warn("Timed event render called without layout info for event:",this.event.id),this.eventEl.style.position="relative"),this.event.start&&this.viewType==="week-timed"){let a=(0,Mn.moment)(this.event.start).format("h:mma");this.eventEl.createDiv({cls:"calendar-event-time",text:a})}let e=Ot(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",a=>{var r;a.stopPropagation(),((r=this.params)==null?void 0:r.onEventComplete)&&this.params.onEventComplete(a,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createDiv({cls:"calendar-event-title"});this.markdownRenderer=new Qt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title)}renderAgendaEvent(){if(this.event.start&&!this.event.allDay){let a=(0,Mn.moment)(this.event.start).format("HH:mm"),r=this.eventEl.createSpan({cls:"calendar-event-time agenda-time",text:a});this.eventEl.appendChild(r)}let e=Ot(this.event.status,this.event,this.eventEl);this.registerDomEvent(e,"click",a=>{var r;a.stopPropagation(),((r=this.params)==null?void 0:r.onEventComplete)&&this.params.onEventComplete(a,this.event),this.event.status===" "&&(e.checked=!0,e.dataset.task="x")});let t=this.eventEl.createSpan({cls:"calendar-event-title agenda-title"});this.eventEl.appendChild(t),this.markdownRenderer=new Qt(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.title)}registerEventListeners(){this.registerDomEvent(this.eventEl,"click",e=>{var t,a;e.stopPropagation(),(a=(t=this.params)==null?void 0:t.onEventClick)==null||a.call(t,e,this.event)}),this.registerDomEvent(this.eventEl,"mouseover",e=>{this.debounceHover(e,this.event)})}};function Eo(s){let e=new F_(s);return e.registerDomEvent(e.eventEl,"contextmenu",t=>{var a;(a=s.onEventContextMenu)==null||a.call(s,t,s.event)}),{eventEl:e.eventEl,component:e}}var j_=A(require("obsidian")),ci=class extends j_.Component{constructor(e,t,a,r,i={}){super();this.containerEl=a,this.events=r,this.options=i}handleEventClick(e,t){this.options.onEventClick&&this.options.onEventClick(e,t)}onload(){super.onload(),this.render()}onunload(){this.containerEl.empty(),super.onunload()}};function lp(s){let e=s.split("-"),t=parseInt(e[0],10),a=parseInt(e[1],10)-1,r=parseInt(e[2],10);return new Date(t,a,r)}var zx=class extends ci{constructor(e,t,a,r,i,n,o){super(t,e,a,n,o);this.currentViewId=r;this.sortableInstances=[];this.debounceHover=(0,Cl.debounce)(e=>{var a;let t=e.target;if(t.closest(".calendar-day-cell")){let r=(a=t.closest(".calendar-day-cell"))==null?void 0:a.getAttribute("data-date");if(this.options.onDayHover&&r){let i=lp(r);this.options.onDayHover(e,i.getTime())}}},200);this.app=e,this.plugin=t,this.currentDate=i}render(){var g,y;let e=(g=this.plugin.settings.viewConfiguration.find(w=>w.id===this.currentViewId))==null?void 0:g.specificConfig,t=e==null?void 0:e.firstDayOfWeek,a=(y=e==null?void 0:e.hideWeekends)!=null?y:!1,r=t===void 0?0:t,i=this.currentDate.clone().startOf("month"),n=this.currentDate.clone().endOf("month"),o=i.clone().weekday(r-7),l=n.clone().weekday(r+6);if(a){let w=0,v=o.clone();for(;v.isSameOrBefore(l,"day");)v.day()===0||v.day()===6||w++,v.add(1,"day");for(;w<30;)l.add(1,"day"),l.day()===0||l.day()===6||w++}else if(l.diff(o,"days")+1<42){let w=42-(l.diff(o,"days")+1);l.add(w,"days")}this.containerEl.empty(),this.containerEl.addClass("view-month"),a?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let d=this.containerEl.createDiv("calendar-weekday-header"),u=Cl.moment.weekdaysShort(!0),p=[...u.slice(r),...u.slice(0,r)];(a?p.filter((w,v)=>{let T=(r+v)%7;return T!==0&&T!==6}):p).forEach(w=>{let v=d.createDiv("calendar-weekday");v.textContent=w});let f=this.containerEl.createDiv("calendar-month-grid"),h={},k=o.clone();for(;k.isSameOrBefore(l,"day");){let w=k.day()===0||k.day()===6;if(a&&w){k.add(1,"day");continue}let v=f.createEl("div",{cls:"calendar-day-cell",attr:{"data-date":k.format("YYYY-MM-DD")}}),T=k.format("YYYY-MM-DD");h[T]=v;let C=v.createDiv("calendar-day-header").createDiv("calendar-day-number");C.textContent=k.format("D"),k.isSame(this.currentDate,"month")||v.addClass("is-other-month"),k.isSame((0,Cl.moment)(),"day")&&v.addClass("is-today"),!a&&w&&v.addClass("is-weekend"),v.createDiv("calendar-events-container"),k.add(1,"day")}this.events.forEach(w=>{let v=(0,Cl.moment)(w.start).startOf("day"),T=l.clone().endOf("day"),x=o.clone().startOf("day");if(!(v.isAfter(T)||w.end&&(0,Cl.moment)(w.end).startOf("day").isBefore(x))&&v.isSameOrAfter(x)&&v.isSameOrBefore(T)){let C=v.format("YYYY-MM-DD"),S=h[C];if(S){let E=S.querySelector(".calendar-events-container");if(E){let{eventEl:P,component:I}=Eo({event:w,viewType:"month",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(I),E.appendChild(P)}}}}),Object.keys(h).forEach(w=>{var C,S;let v=h[w],T=lp(w),x=((S=(C=this.options).getBadgeEventsForDate)==null?void 0:S.call(C,T))||[];if(x.length>0){let P=v.querySelector(".calendar-day-header").createDiv("calendar-badges-container");P&&x.forEach(I=>{let L=P.createEl("div",{cls:"calendar-badge"});I.color&&(L.style.backgroundColor=I.color),L.textContent=I.content})}}),""+o.format("YYYY-MM-DD")+l.format("YYYY-MM-DD")+r,this.registerDomEvent(f,"click",w=>{var T,x;let v=w.target;if(v.closest(".calendar-day-number")){let C=(T=v.closest(".calendar-day-cell"))==null?void 0:T.getAttribute("data-date");if(this.options.onDayClick&&C){let S=lp(C);this.options.onDayClick(w,S.getTime(),{behavior:"open-task-view"})}return}if(v.closest(".calendar-day-cell")){let C=(x=v.closest(".calendar-day-cell"))==null?void 0:x.getAttribute("data-date");if(this.options.onDayClick&&C){let S=lp(C);this.options.onDayClick(w,S.getTime(),{behavior:"open-quick-capture"})}}}),this.registerDomEvent(f,"mouseover",w=>{this.debounceHover(w)}),this.initializeDragAndDrop(h)}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}initializeDragAndDrop(e){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[],Object.entries(e).forEach(([t,a])=>{let r=a.querySelector(".calendar-events-container");if(r){let i=Js.create(r,{group:"calendar-events",animation:150,ghostClass:"calendar-event-ghost",dragClass:"calendar-event-dragging",onEnd:n=>{this.handleDragEnd(n,t)}});this.sortableInstances.push(i)}})}async handleDragEnd(e,t){let r=e.item.dataset.eventId,n=e.to.closest(".calendar-day-cell");if(!r||!n){console.warn("Could not determine event ID or target date for drag operation");return}let o=n.getAttribute("data-date");if(!o||o===t)return;let l=this.events.find(d=>d.id===r);if(!l){console.warn(`Calendar event with ID ${r} not found`);return}try{await this.updateTaskDate(l,o),""+r+t+o}catch(d){console.error("Failed to update task date:",d),this.render()}}async updateTaskDate(e,t){let a=lp(t).getTime(),r=this.plugin.taskManager;if(!r)throw new Error("Task manager not available");let i={...e};e.metadata.dueDate?i.metadata.dueDate=a:e.metadata.scheduledDate?i.metadata.scheduledDate=a:e.metadata.startDate?i.metadata.startDate=a:i.metadata.dueDate=a,await r.updateTask(i)}onunload(){this.sortableInstances.forEach(e=>e.destroy()),this.sortableInstances=[],super.onunload()}};var Ir=A(require("obsidian"));var qx=class extends ci{constructor(e,t,a,r,i,n,o){super(t,e,a,n,o);this.currentViewId=r;this.sortableInstances=[];this.debounceHover=(0,Ir.debounce)(e=>{var a;let t=e.target;if(t.closest(".calendar-day-column")){let r=(a=t.closest(".calendar-day-column"))==null?void 0:a.getAttribute("data-date");this.options.onDayHover&&this.options.onDayHover(e,(0,Ir.moment)(r).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=i}render(){var v,T;let e=yt(this.plugin,this.currentViewId),t=e.specificConfig.firstDayOfWeek,a=(T=(v=e.specificConfig)==null?void 0:v.hideWeekends)!=null?T:!1,r=t===void 0?0:t,i=this.currentDate.clone().weekday(r),n=i.clone().add(6,"days");this.containerEl.empty(),this.containerEl.addClass("view-week"),a?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let o=this.containerEl.createDiv("calendar-week-header"),l={},d=i.clone(),u=Ir.moment.weekdaysShort(!0),p=[...u.slice(r),...u.slice(0,r)],m=a?p.filter((x,C)=>{let S=(r+C)%7;return S!==0&&S!==6}):p,f=0;for(;d.isSameOrBefore(n,"day");){let x=d.day()===0||d.day()===6;if(a&&x){d.add(1,"day");continue}let C=d.format("YYYY-MM-DD"),S=o.createDiv("calendar-header-cell");l[C]=S;let E=S.createDiv("calendar-weekday");E.textContent=m[f];let P=S.createDiv("calendar-day-number");P.textContent=d.format("D"),d.isSame((0,Ir.moment)(),"day")&&S.addClass("is-today"),d.add(1,"day"),f++}let k=this.containerEl.createDiv("calendar-week-grid-section").createDiv("calendar-week-grid"),g={};for(d=i.clone();d.isSameOrBefore(n,"day");){let x=d.day()===0||d.day()===6;if(a&&x){d.add(1,"day");continue}let C=d.format("YYYY-MM-DD"),S=k.createEl("div",{cls:"calendar-day-column",attr:{"data-date":C}});g[C]=S.createDiv("calendar-day-events-container"),d.isSame((0,Ir.moment)(),"day")&&S.addClass("is-today"),x&&S.addClass("is-weekend"),d.add(1,"day")}[...this.events.filter(x=>{let C=(0,Ir.moment)(x.start),S=x.end?(0,Ir.moment)(x.end):C;return C.isBefore(n.clone().endOf("day").add(1,"millisecond"))&&S.isSameOrAfter(i.clone().startOf("day"))})].sort((x,C)=>(0,Ir.moment)(x.start).valueOf()-(0,Ir.moment)(C.start).valueOf()).forEach(x=>{if(!x.start)return;let C=(0,Ir.moment)(x.start).startOf("day"),S=i.clone().startOf("day"),E=n.clone().endOf("day");if(C.isSameOrAfter(S)&&C.isSameOrBefore(E)){let P=C.format("YYYY-MM-DD"),I=g[P];if(I){let{eventEl:L,component:W}=Eo({event:x,viewType:"week-allday",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(W),I.appendChild(L)}}}),""+i.format("YYYY-MM-DD")+n.format("YYYY-MM-DD")+r,this.registerDomEvent(k,"click",x=>{var S;let C=x.target;if(C.closest(".calendar-day-column")){let E=(S=C.closest(".calendar-day-column"))==null?void 0:S.getAttribute("data-date");this.options.onDayClick&&this.options.onDayClick(x,(0,Ir.moment)(E).valueOf(),{behavior:"open-quick-capture"})}}),this.registerDomEvent(k,"mouseover",x=>{this.debounceHover(x)}),this.initializeDragAndDrop(g)}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}initializeDragAndDrop(e){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[],Object.entries(e).forEach(([t,a])=>{if(a){let r=Js.create(a,{group:"calendar-events",animation:150,ghostClass:"calendar-event-ghost",dragClass:"calendar-event-dragging",onEnd:i=>{this.handleDragEnd(i,t)}});this.sortableInstances.push(r)}})}async handleDragEnd(e,t){let r=e.item.dataset.eventId,n=e.to.closest(".calendar-day-column");if(!r||!n){console.warn("Could not determine event ID or target date for drag operation");return}let o=n.getAttribute("data-date");if(!o||o===t)return;let l=this.events.find(d=>d.id===r);if(!l){console.warn(`Calendar event with ID ${r} not found`);return}try{await this.updateTaskDate(l,o),""+r+t+o}catch(d){console.error("Failed to update task date:",d),this.render()}}async updateTaskDate(e,t){let a=(0,Ir.moment)(t).valueOf(),r=this.plugin.taskManager;if(!r)throw new Error("Task manager not available");let i={...e};e.metadata.dueDate?i.metadata.dueDate=a:e.metadata.scheduledDate?i.metadata.scheduledDate=a:e.metadata.startDate?i.metadata.startDate=a:i.metadata.dueDate=a,await r.updateTask(i)}onunload(){this.sortableInstances.forEach(e=>e.destroy()),this.sortableInstances=[],super.onunload()}};var Gx=A(require("obsidian"));var Kx=class extends ci{constructor(e,t,a,r,i,n={}){super(t,e,a,i,n);this.app=e,this.plugin=t,this.currentDate=r}render(){this.containerEl.empty(),this.containerEl.addClass("view-day");let e=this.currentDate.clone().startOf("day"),t=this.currentDate.clone().endOf("day"),a=this.events.filter(n=>{let o=(0,Gx.moment)(n.start),l=n.end?(0,Gx.moment)(n.end):o.clone().endOf("day");return o.isBefore(t)&&l.isAfter(e)}).sort((n,o)=>n.id<o.id?-1:n.id>o.id?1:0),i=this.containerEl.createDiv("calendar-timeline-section").createDiv("calendar-timeline-events-container");a.length===0?(i.addClass("is-empty"),i.setText("(No events for this day)")):a.forEach(n=>{let{eventEl:o,component:l}=Eo({event:n,viewType:"day-timed",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(l),i.appendChild(o),this.options.onEventClick&&this.registerDomEvent(o,"click",d=>{this.options.onEventClick(d,n)}),this.options.onEventHover&&this.registerDomEvent(o,"mouseenter",d=>{this.options.onEventHover(d,n)})})}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}};var Do=A(require("obsidian"));var Qx=class extends ci{constructor(e,t,a,r,i,n={}){super(t,e,a,i,n);this.app=e,this.plugin=t,this.currentDate=r}render(){this.containerEl.empty(),this.containerEl.addClass("view-agenda");let e=this.currentDate.clone().startOf("day"),t=this.currentDate.clone().add(6,"days").endOf("day"),a=this.events.filter(n=>(0,Do.moment)(n.start).isBetween(e,t,void 0,"[]")).sort((n,o)=>(0,Do.moment)(n.start).valueOf()-(0,Do.moment)(o.start).valueOf()),r={};if(a.forEach(n=>{let o=(0,Do.moment)(n.start).format("YYYY-MM-DD");r[o]||(r[o]=[]),r[o].push(n)}),Object.keys(r).length===0){this.containerEl.setText(`No upcoming events from ${e.format("MMM D")} to ${t.format("MMM D, YYYY")}.`);return}let i=e.clone();for(;i.isSameOrBefore(t,"day");){let n=i.format("YYYY-MM-DD");if(r[n]&&r[n].length>0){let o=this.containerEl.createDiv("agenda-day-section"),d=o.createDiv("agenda-day-date-column").createDiv("agenda-day-header");d.textContent=i.format("dddd, MMMM D"),i.isSame((0,Do.moment)(),"day")&&d.addClass("is-today");let p=o.createDiv("agenda-day-events-column").createDiv("agenda-events-list");r[n].sort((m,f)=>{let h=m.start?(0,Do.moment)(m.start).valueOf():0,k=f.start?(0,Do.moment)(f.start).valueOf():0;return h-k}).forEach(m=>{let f=p.createDiv("agenda-event-item"),{eventEl:h,component:k}=Eo({event:m,viewType:"agenda",app:this.app,onEventClick:this.options.onEventClick,onEventHover:this.options.onEventHover,onEventContextMenu:this.options.onEventContextMenu,onEventComplete:this.options.onEventComplete});this.addChild(k),f.appendChild(h)})}i.add(1,"day")}""+e.format("YYYY-MM-DD")+t.format("YYYY-MM-DD")}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}};var is=A(require("obsidian"));var Xx=class extends ci{constructor(e,t,a,r,i,n){super(t,e,a,i,n);this.debounceHover=(0,is.debounce)(e=>{var a;let t=e.target;if(t.closest(".mini-day-cell")){let r=(a=t.closest(".mini-day-cell"))==null?void 0:a.getAttribute("data-date");this.options.onDayHover&&this.options.onDayHover(e,(0,is.moment)(r).valueOf())}},200);this.app=e,this.plugin=t,this.currentDate=r}render(){var h,k;let e=this.currentDate.year();this.containerEl.empty(),this.containerEl.addClass("view-year"),""+e+this.events.length;let t=this.containerEl.createDiv("calendar-year-grid"),a=(0,is.moment)({year:e,month:0,day:1}),r=(0,is.moment)({year:e,month:11,day:31}),i=performance.now(),n=this.events.filter(g=>{let y=(0,is.moment)(g.start),w=g.end?(0,is.moment)(g.end):y;return y.isSameOrBefore(r.endOf("day"))&&w.isSameOrAfter(a.startOf("day"))}),o=performance.now();""+n.length+e+(o-i);let l=yt(this.plugin,"calendar"),d=l.specificConfig.firstDayOfWeek,u=(k=(h=l.specificConfig)==null?void 0:h.hideWeekends)!=null?k:!1;u?this.containerEl.addClass("hide-weekends"):this.containerEl.removeClass("hide-weekends");let p=d===void 0?0:d,m=performance.now();for(let g=0;g<12;g++){let y=performance.now(),w=t.createDiv("calendar-mini-month"),v=(0,is.moment)({year:e,month:g,day:1}),T=w.createDiv("mini-month-header");T.textContent=v.format("MMMM"),this.registerDomEvent(T,"click",S=>{this.options.onMonthClick&&this.options.onMonthClick(S,v.valueOf())}),this.registerDomEvent(T,"mouseenter",S=>{this.options.onMonthHover&&this.options.onMonthHover(S,v.valueOf())}),T.style.cursor="pointer";let x=w.createDiv("mini-month-body"),C=this.calculateDaysWithEvents(v,n);this.renderMiniMonthGrid(x,v,C,p,u)}let f=performance.now();""+e+(f-m)+p}calculateDaysWithEvents(e,t){let a=new Set,r=e.clone().startOf("month"),i=e.clone().endOf("month");return t.forEach(n=>{[n.start,n.metadata.scheduledDate,n.metadata.dueDate].forEach(l=>{if(l){let d=(0,is.moment)(l);d.isBetween(r,i,"day","[]")&&a.add(d.date())}})}),a}renderMiniMonthGrid(e,t,a,r,i){e.empty(),e.addClass("mini-month-grid");let n=e.createDiv("mini-weekday-header"),o=is.moment.weekdaysMin(!0),l=[...o.slice(r),...o.slice(0,r)];(i?l.filter((k,g)=>{let y=(r+g)%7;return y!==0&&y!==6}):l).forEach(k=>{n.createDiv("mini-weekday").textContent=k});let u=t.clone().startOf("month"),p=t.clone().endOf("month"),m,f;if(i){m=u.clone();let k=(u.weekday()-r+7)%7;for(m.subtract(k,"days");m.day()===0||m.day()===6;)m.add(1,"day");f=p.clone();let g=(r+4-p.weekday()+7)%7;for(f.add(g,"days");f.day()===0||f.day()===6;)f.subtract(1,"day")}else{let k=(u.weekday()-r+7)%7;m=u.clone().subtract(k,"days");let g=(r+6-p.weekday()+7)%7;f=p.clone().add(g,"days")}let h=m.clone();for(;h.isSameOrBefore(f,"day");){let k=h.day()===0||h.day()===6;if(i&&k){h.add(1,"day");continue}let g=e.createEl("div",{cls:"mini-day-cell",attr:{"data-date":h.format("YYYY-MM-DD")}}),y=h.date();h.isSame(t,"month")||g.addClass("is-other-month"),g.textContent=String(y),h.isSame((0,is.moment)(),"day")&&g.addClass("is-today"),h.isSame(t,"month")&&a.has(y)&&g.addClass("has-events"),h.isSame(t,"month")?g.style.cursor="pointer":g.style.cursor="default",h.add(1,"day")}this.registerDomEvent(e,"click",k=>{var y;let g=k.target;if(g.closest(".mini-day-cell")){let w=(y=g.closest(".mini-day-cell"))==null?void 0:y.getAttribute("data-date");this.options.onDayClick&&this.options.onDayClick(k,(0,is.moment)(w).valueOf(),{behavior:"open-task-view"})}}),this.registerDomEvent(e,"mouseover",k=>{this.debounceHover(k)})}updateEvents(e){this.events=e,this.render()}updateCurrentDate(e){this.currentDate=e,this.render()}};cn();var An=class extends Na.Component{constructor(e,t,a,r=[],i={},n="calendar"){super();this.params=i;this.viewId=n;this.tasks=[];this.events=[];this.currentViewMode="month";this.currentDate=(0,Na.moment)();this.activeViewComponent=null;this.badgeEventsCache=new Map;this.badgeEventsCacheVersion=0;this.onEventClick=(e,t)=>{var a,r,i;this.params,(a=this.params)==null||a.onTaskSelected,(i=(r=this.params)==null?void 0:r.onTaskSelected)==null||i.call(r,t)};this.onEventHover=(e,t)=>{};this.onViewChange=e=>{};this.onDayClick=(e,t,a)=>{this.currentViewMode==="year"?(this.setView("day"),this.currentDate=(0,Na.moment)(t),this.render()):a.behavior==="open-quick-capture"?new ka(this.app,this.plugin,{dueDate:(0,Na.moment)(t).toDate()},!0).open():a.behavior==="open-task-view"&&(this.setView("day"),this.currentDate=(0,Na.moment)(t),this.render())};this.onDayHover=(e,t)=>{};this.onMonthClick=(e,t)=>{this.setView("month"),this.currentDate=(0,Na.moment)(t),this.render()};this.onMonthHover=(e,t)=>{};this.onEventContextMenu=(e,t)=>{var a,r;(r=(a=this.params)==null?void 0:a.onEventContextMenu)==null||r.call(a,e,t)};this.onEventComplete=(e,t)=>{var a,r;(r=(a=this.params)==null?void 0:a.onTaskCompleted)==null||r.call(a,t)};this.app=e,this.plugin=t,this.containerEl=a.createDiv("full-calendar-container"),this.tasks=r,this.headerEl=this.containerEl.createDiv("calendar-header"),this.viewContainerEl=this.containerEl.createDiv("calendar-view-container");let o=this.app.loadLocalStorage("task-genius:calendar-view");o&&(this.currentViewMode=o),this.params}onload(){super.onload(),this.processTasks(),this.render()}onunload(){super.onunload(),this.activeViewComponent&&(this.removeChild(this.activeViewComponent),this.activeViewComponent=null),this.containerEl.empty()}updateTasks(e){this.tasks=e,this.invalidateBadgeEventsCache(),this.processTasks(),this.activeViewComponent?this.activeViewComponent.updateEvents(this.events):this.renderCurrentView()}setView(e){this.currentViewMode!==e&&(this.currentViewMode=e,this.render(),this.app.saveLocalStorage("task-genius:calendar-view",this.currentViewMode))}navigate(e){let t=this.getViewUnit();e==="prev"?this.currentDate.subtract(1,t):this.currentDate.add(1,t),this.render()}goToToday(){this.currentDate=(0,Na.moment)(),this.render()}render(){this.renderHeader(),this.renderCurrentView()}setTasks(e){this.tasks=e,this.invalidateBadgeEventsCache(),this.processTasks(),this.render()}renderHeader(){this.headerEl.empty();let e=this.headerEl.createDiv("calendar-nav"),t=new Na.ButtonComponent(e.createDiv());t.buttonEl.toggleClass(["calendar-nav-button","prev-button"],!0),t.setIcon("chevron-left"),t.onClick(()=>this.navigate("prev"));let a=new Na.ButtonComponent(e.createDiv());a.buttonEl.toggleClass(["calendar-nav-button","today-button"],!0),a.setButtonText(c("Today")),a.onClick(()=>this.goToToday());let r=new Na.ButtonComponent(e.createDiv());r.buttonEl.toggleClass(["calendar-nav-button","next-button"],!0),r.setIcon("chevron-right"),r.onClick(()=>this.navigate("next"));let i=this.headerEl.createSpan("calendar-current-date");i.textContent=this.getCurrentDateDisplay();let n=this.headerEl.createDiv("calendar-view-switcher");["year","month","week","day","agenda"].forEach(l=>{let d=n.createEl("button",{text:{year:c("Year"),month:c("Month"),week:c("Week"),day:c("Day"),agenda:c("Agenda")}[l]});l===this.currentViewMode&&d.addClass("is-active"),d.onclick=()=>this.setView(l)}),n.createEl("div",{cls:"calendar-view-switcher-selector"},l=>{new Na.DropdownComponent(l).addOption("year",c("Year")).addOption("month",c("Month")).addOption("week",c("Week")).addOption("day",c("Day")).addOption("agenda",c("Agenda")).onChange(d=>this.setView(d)).setValue(this.currentViewMode)})}renderCurrentView(){var t;let e=null;switch(this.currentViewMode,this.params,(t=this.params)==null||t.onTaskSelected,this.currentViewMode){case"month":e=new zx(this.app,this.plugin,this.viewContainerEl,this.viewId,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete,getBadgeEventsForDate:this.getBadgeEventsForDate.bind(this)});break;case"week":e=new qx(this.app,this.plugin,this.viewContainerEl,this.viewId,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete,getBadgeEventsForDate:this.getBadgeEventsForDate.bind(this)});break;case"day":e=new Kx(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete});break;case"agenda":e=new Qx(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete});break;case"year":e=new Xx(this.app,this.plugin,this.viewContainerEl,this.currentDate,this.events,{onEventClick:this.onEventClick,onEventHover:this.onEventHover,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onMonthClick:this.onMonthClick,onMonthHover:this.onMonthHover});break;default:this.viewContainerEl.empty(),this.viewContainerEl.setText(`View mode "${this.currentViewMode}" not implemented yet.`),e=null}this.activeViewComponent!==e?(this.activeViewComponent&&this.removeChild(this.activeViewComponent),e?(this.activeViewComponent=e,this.addChild(this.activeViewComponent),this.precomputeBadgeEventsForCurrentView(),this.activeViewComponent.updateEvents(this.events)):this.activeViewComponent=null):this.activeViewComponent&&(this.precomputeBadgeEventsForCurrentView(),this.activeViewComponent.updateEvents(this.events)),this.viewContainerEl.removeClass("view-year","view-month","view-week","view-day","view-agenda"),this.activeViewComponent&&this.viewContainerEl.addClass(`view-${this.currentViewMode}`),this.currentViewMode,this.activeViewComponent&&this.activeViewComponent.constructor.name}async processTasks(){this.events=[],this.invalidateBadgeEventsCache();let e="dueDate";this.tasks.forEach(t=>{var l,d,u,p,m,f;let a=((l=t.source)==null?void 0:l.type)==="ics",r=a?t:null,i=((u=(d=r==null?void 0:r.icsEvent)==null?void 0:d.source)==null?void 0:u.showType)==="badge";if(a&&i)return;let n=null,o=!0;if(a&&(r==null?void 0:r.icsEvent)?(n=r.icsEvent.dtstart.getTime(),o=r.icsEvent.allDay):t.metadata[e]?n=t.metadata[e]:t.metadata.scheduledDate?n=t.metadata.scheduledDate:t.metadata.startDate&&(n=t.metadata.startDate),n){let h=(0,Na.moment)(n),k=o?h.startOf("day").toDate():h.toDate(),g,y=k;if(a&&((p=r==null?void 0:r.icsEvent)==null?void 0:p.dtend))g=r.icsEvent.dtend;else if(t.metadata.startDate&&t.metadata.dueDate&&t.metadata.startDate!==t.metadata.dueDate){let v=(0,Na.moment)(t.metadata.startDate).startOf("day"),T=(0,Na.moment)(t.metadata.dueDate).startOf("day");v.isBefore(T)&&(g=T.add(1,"day").toDate(),y=v.toDate())}let w;a&&((f=(m=r==null?void 0:r.icsEvent)==null?void 0:m.source)==null?void 0:f.color)?w=r.icsEvent.source.color:w=t.completed?"grey":void 0,this.events.push({...t,title:t.content,start:y,end:g,allDay:o,color:w})}}),this.events.sort((t,a)=>t.start.getTime()-a.start.getTime()),""+this.events.length+this.tasks.length}invalidateBadgeEventsCache(){this.badgeEventsCache.clear(),this.badgeEventsCacheVersion++}precomputeBadgeEventsForRange(e,t){let a=o=>{let l=o.getFullYear(),d=String(o.getMonth()+1).padStart(2,"0"),u=String(o.getDate()).padStart(2,"0");return`${l}-${d}-${u}`},r=a(e),i=a(t),n=new Date(e);for(;n<=t;){let o=a(n);this.badgeEventsCache.set(o,[]),n.setDate(n.getDate()+1)}this.tasks.forEach(o=>{var p,m,f;let l=((p=o.source)==null?void 0:p.type)==="ics",d=l?o:null,u=((f=(m=d==null?void 0:d.icsEvent)==null?void 0:m.source)==null?void 0:f.showType)==="badge";if(l&&u&&(d==null?void 0:d.icsEvent)){let h=new Date(d.icsEvent.dtstart),k=new Date(h.getFullYear(),h.getMonth(),h.getDate()),g=a(k);if(this.badgeEventsCache.has(g)){let y={...o,title:o.content,start:d.icsEvent.dtstart,end:d.icsEvent.dtend,allDay:d.icsEvent.allDay,color:d.icsEvent.source.color},w=this.badgeEventsCache.get(g)||[];w.push(y),this.badgeEventsCache.set(g,w)}}}),""+r+i+this.badgeEventsCache.size}getBadgeEventsForDate(e){let t=e.getFullYear(),a=e.getMonth(),r=e.getDate(),i=new Date(t,a,r),n=`${t}-${String(a+1).padStart(2,"0")}-${String(r).padStart(2,"0")}`;if(this.badgeEventsCache.has(n))return this.badgeEventsCache.get(n)||[];let o=[];return this.tasks.forEach(l=>{var m,f,h;let d=((m=l.source)==null?void 0:m.type)==="ics",u=d?l:null,p=((h=(f=u==null?void 0:u.icsEvent)==null?void 0:f.source)==null?void 0:h.showType)==="badge";if(d&&p&&(u==null?void 0:u.icsEvent)){let k=new Date(u.icsEvent.dtstart),g=k.getFullYear(),y=k.getMonth(),w=k.getDate();if(g===t&&y===a&&w===r){let v={...l,title:l.content,start:u.icsEvent.dtstart,end:u.icsEvent.dtend,allDay:u.icsEvent.allDay,color:u.icsEvent.source.color};o.push(v)}}}),this.badgeEventsCache.set(n,o),o}precomputeBadgeEventsForCurrentView(){var a,r;if(!this.activeViewComponent)return;let e,t;switch(this.currentViewMode){case"month":let i=this.currentDate.clone().startOf("month"),n=this.currentDate.clone().endOf("month"),o=(a=this.plugin.settings.viewConfiguration.find(k=>k.id===this.viewId))==null?void 0:a.specificConfig,l=(r=o==null?void 0:o.firstDayOfWeek)!=null?r:0,d=i.clone().weekday(l-7),u=n.clone().weekday(l+6);if(u.diff(d,"days")+1<42){let k=42-(u.diff(d,"days")+1);u.add(k,"days")}e=d.toDate(),t=u.toDate();break;case"week":let p=this.currentDate.clone().startOf("week"),m=this.currentDate.clone().endOf("week");e=p.toDate(),t=m.toDate();break;case"day":e=this.currentDate.clone().startOf("day").toDate(),t=this.currentDate.clone().endOf("day").toDate();break;case"year":let f=this.currentDate.clone().startOf("year"),h=this.currentDate.clone().endOf("year");e=f.toDate(),t=h.toDate();break;default:e=this.currentDate.clone().startOf("day").toDate(),t=this.currentDate.clone().add(30,"days").toDate()}this.precomputeBadgeEventsForRange(e,t)}mapIcsPriorityToTaskPriority(e){if(e!==void 0){if(e>=1&&e<=4)return 1;if(e===5)return 3;if(e>=6&&e<=9)return 5}}getViewUnit(){switch(this.currentViewMode){case"year":return"year";case"month":return"month";case"week":return"week";case"day":return"day";case"agenda":return"week";default:return"month"}}getCurrentDateDisplay(){switch(this.currentViewMode){case"year":return this.currentDate.format("YYYY");case"month":return this.currentDate.format("MMMM/YYYY");case"week":let e=this.currentDate.clone().startOf("week"),t=this.currentDate.clone().endOf("week");return e.month()!==t.month()?e.year()!==t.year()?`${e.format("MMM D, YYYY")} - ${t.format("MMM D, YYYY")}`:`${e.format("MMM D")} - ${t.format("MMM D, YYYY")}`:`${e.format("MMM D")} - ${t.format("D, YYYY")}`;case"day":return this.currentDate.format("dddd, MMMM D, YYYY");case"agenda":let a=this.currentDate.clone().add(6,"days");return`${this.currentDate.format("MMM D")} - ${a.format("MMM D, YYYY")}`;default:return this.currentDate.format("MMMM YYYY")}}get currentViewComponent(){return this.activeViewComponent}};var Po=A(require("obsidian"));var Rk=A(require("obsidian"));var O_=A(require("obsidian"));Cr();Lr();xa();var Ik=class extends O_.Component{constructor(e,t,a,r,i={}){super();this.app=e;this.containerEl=a;this.params=i;this.plugin=t,this.task=r}onload(){this.element=this.containerEl.createDiv({cls:"tg-kanban-card",attr:{"data-task-id":this.task.id}}),this.task.completed&&this.element.classList.add("task-completed");let e=this.task.metadata||{};if(e.priority){let t=nr(e.priority);t&&this.element.classList.add(`priority-${t}`)}this.element.createDiv({cls:"tg-kanban-card-container"},t=>{var r,i;let a=Ot(this.task.status,this.task,t);this.registerDomEvent(a,"click",n=>{var o;n.stopPropagation(),((o=this.params)==null?void 0:o.onTaskCompleted)&&this.params.onTaskCompleted(this.task),this.task.status===" "&&(a.checked=!0,a.dataset.task="x")}),((i=(r=this.plugin.settings.viewConfiguration.find(n=>n.id==="kanban"))==null?void 0:r.specificConfig)==null?void 0:i.showCheckbox)?a.show():a.hide(),this.contentEl=t.createDiv("tg-kanban-card-content")}),this.renderMarkdown(),this.metadataEl=this.element.createDiv({cls:"tg-kanban-card-metadata"}),this.renderMetadata(),this.registerDomEvent(this.element,"contextmenu",t=>{var a,r;(r=(a=this.params).onTaskContextMenu)==null||r.call(a,t,this.task)})}onunload(){var e;(e=this.element)==null||e.remove()}renderMarkdown(){this.contentEl.empty(),this.markdownRenderer&&this.removeChild(this.markdownRenderer),this.markdownRenderer=new Qt(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.content||this.task.originalMarkdown)}renderMetadata(){this.metadataEl.empty();let e=this.task.metadata||{};this.task.completed?e.completedDate&&this.renderCompletionDate():e.dueDate&&this.renderDueDate(),bt(this.task)&&this.renderProject(),e.tags&&e.tags.length>0&&this.renderTags(),e.priority&&this.renderPriority()}renderDueDate(){let e=this.metadataEl.createEl("div",{cls:["task-date","task-due-date"]}),t=this.task.metadata||{},a=new Date(t.dueDate||""),r=new Date;r.setHours(0,0,0,0);let i=new Date(r);i.setDate(i.getDate()+1);let n="";a.getTime()<r.getTime()?(n="Overdue",e.classList.add("task-overdue")):a.getTime()===r.getTime()?(n="Today",e.classList.add("task-due-today")):a.getTime()===i.getTime()?n="Tomorrow":n=a.toLocaleDateString(void 0,{month:"short",day:"numeric"}),e.textContent=`${n}`,e.setAttribute("aria-label",`Due: ${a.toLocaleDateString()}`)}renderCompletionDate(){let e=this.metadataEl.createEl("div",{cls:["task-date","task-done-date"]}),t=this.task.metadata||{},a=new Date(t.completedDate||"");e.textContent=`Done: ${a.toLocaleDateString(void 0,{month:"short",day:"numeric"})}`,e.setAttribute("aria-label",`Completed: ${a.toLocaleDateString()}`)}renderProject(){let e=bt(this.task);if(!e)return;let t=this.metadataEl.createEl("div",{cls:["task-project","clickable-metadata"]}),a=this.task.metadata||{};!a.project&&a.tgProject&&(t.addClass("task-project-tg"),t.title=`Project from ${a.tgProject.type}: ${a.tgProject.source||""}`),t.textContent=e,t.setAttribute("aria-label",`Project: ${e}`),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.params.onFilterApply&&e&&this.params.onFilterApply("project",e)})}renderTags(){let e=this.metadataEl.createEl("div",{cls:"task-tags-container"});((this.task.metadata||{}).tags||[]).forEach(a=>{if(typeof a!="string")return;let r=e.createEl("span",{cls:["task-tag","clickable-metadata"],text:a.startsWith("#")?a:`#${a}`}),i=a.replace("#","");r.setAttribute("data-tag-name",i),this.applyTagColor(r,i),this.registerDomEvent(r,"click",n=>{n.stopPropagation(),this.params.onFilterApply&&this.params.onFilterApply("tag",a)})})}renderPriority(){let e=this.task.metadata||{},t=nr(e.priority),a=["task-priority","clickable-metadata"];t&&a.push(`priority-${t}`);let r=this.metadataEl.createDiv({cls:a});r.textContent=`${"!".repeat(e.priority||0)}`,r.setAttribute("aria-label",`Priority ${e.priority}`),this.registerDomEvent(r,"click",i=>{if(i.stopPropagation(),this.params.onFilterApply&&e.priority){let n=this.getPriorityIcon(e.priority);this.params.onFilterApply("priority",n)}})}getPriorityIcon(e){return{5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"}[e]||e.toString()}applyTagColor(e,t){let a=this.app.plugins.plugins["colored-tags"];if(a&&a.settings){let n=a.settings.tags;if(n&&n[t]){let o=n[t];e.style.setProperty("--tag-color",o),e.classList.add("colored-tag")}}let i=getComputedStyle(document.body).getPropertyValue(`--tag-color-${t}`);i&&(e.style.setProperty("--tag-color",i),e.classList.add("colored-tag"))}getTask(){return this.task}updateTask(e){var i,n;let t=this.task;this.task=e;let a=t.metadata||{},r=e.metadata||{};if(t.completed!==e.completed&&this.element.classList.toggle("task-completed",e.completed),a.priority!==r.priority){if(a.priority){let o=nr(a.priority);o&&this.element.classList.remove(`priority-${o}`)}if(r.priority){let o=nr(r.priority);o&&this.element.classList.add(`priority-${o}`)}}(t.originalMarkdown!==e.originalMarkdown||t.content!==e.content)&&this.renderMarkdown(),(a.dueDate!==r.dueDate||a.completedDate!==r.completedDate||((i=a.tags)==null?void 0:i.join(","))!==((n=r.tags)==null?void 0:n.join(","))||a.priority!==r.priority||a.project!==r.project)&&this.renderMetadata()}};cn();Q();var OK=20,Fk=class extends Rk.Component{constructor(e,t,a,r,i,n){super();this.app=e;this.plugin=t;this.containerEl=a;this.statusName=r;this.tasks=i;this.params=n;this.cards=[];this.renderedTaskCount=0;this.isLoadingMore=!1;this.observer=null;this.sentinelEl=null}onload(){var n;this.element=this.containerEl.createDiv({cls:"tg-kanban-column",attr:{"data-status-name":this.statusName}}),this.tasks.length===0&&this.element.classList.add("tg-kanban-column-empty"),this.headerEl=this.element.createEl("div",{cls:"tg-kanban-column-header"});let e=this.headerEl.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"}),t=this.plugin.settings.taskStatusMarks[this.statusName]||" ";e.dataset.task=t;let a=(((n=this.plugin.settings.taskStatuses)==null?void 0:n.completed)||"x|X").split("|");e.checked=a.includes(t),this.registerDomEvent(e,"click",o=>{o.stopPropagation(),o.preventDefault()}),this.titleEl=this.headerEl.createEl("span",{cls:"tg-kanban-column-title",text:this.statusName}),this.countEl=this.headerEl.createEl("span",{cls:"tg-kanban-column-count",text:`(${this.tasks.length})`}),this.contentEl=this.element.createDiv({cls:"tg-kanban-column-content"}),this.sentinelEl=this.contentEl.createDiv({cls:"tg-kanban-sentinel"});let i=this.element.createDiv({cls:"tg-kanban-add-card-container"}).createEl("button",{cls:"tg-kanban-add-card-button"},o=>{o.createEl("span",{},l=>{(0,Rk.setIcon)(l,"plus")}),o.createEl("span",{text:c("Add Card")})});this.registerDomEvent(i,"click",()=>{let o=this.plugin.settings.taskStatusMarks[this.statusName]||this.statusName||" ";new ka(this.app,this.plugin,{status:o},!0).open()}),this.setupIntersectionObserver(),this.loadMoreCards()}onunload(){var e,t,a;(e=this.observer)==null||e.disconnect(),(t=this.sentinelEl)==null||t.remove(),this.cards.forEach(r=>r.unload()),this.cards=[],(a=this.element)==null||a.remove()}loadMoreCards(){var r;if(this.isLoadingMore||this.renderedTaskCount>=this.tasks.length)return;this.isLoadingMore=!0;let e=this.renderedTaskCount,t=Math.min(e+OK,this.tasks.length),a=!1;for(let i=e;i<t;i++){let n=this.tasks[i],o=new Ik(this.app,this.plugin,this.contentEl,n,this.params);this.addChild(o),this.cards.push(o),o.load(),o.element&&this.sentinelEl&&this.contentEl.insertBefore(o.element,this.sentinelEl),this.renderedTaskCount++,a=!0}this.isLoadingMore=!1,this.renderedTaskCount>=this.tasks.length&&this.sentinelEl&&((r=this.observer)==null||r.unobserve(this.sentinelEl),this.sentinelEl.hide())}addCard(e){let t=new Ik(this.app,this.plugin,this.contentEl,e,this.params);this.addChild(t),this.cards.push(t),t.load()}removeCard(e){let t=this.cards.findIndex(a=>a.getTask().id===e);if(t>-1){let a=this.cards[t];this.removeChild(a),a.unload(),this.cards.splice(t,1)}}updateTasks(e){this.tasks=e,this.countEl.textContent=`(${this.tasks.length})`,this.tasks.length===0?this.element.classList.add("tg-kanban-column-empty"):this.element.classList.remove("tg-kanban-column-empty"),this.cards.forEach(t=>{this.removeChild(t),t.unload()}),this.cards=[],this.renderedTaskCount=0,this.loadMoreCards()}getContentElement(){return this.contentEl}getTaskCount(){return this.tasks.length}isEmpty(){return this.tasks.length===0}setVisible(e){e?(this.element.style.display="",this.element.classList.remove("tg-kanban-column-hidden")):(this.element.style.display="none",this.element.classList.add("tg-kanban-column-hidden"))}setupIntersectionObserver(){if(!this.sentinelEl)return;let e={root:this.contentEl,rootMargin:"0px",threshold:.1};this.observer=new IntersectionObserver(t=>{t.forEach(a=>{a.isIntersecting&&!this.isLoadingMore&&this.loadMoreCards()})},e),this.observer.observe(this.sentinelEl)}};Q();var Ok=A(require("obsidian"));var xl=A(require("obsidian"));Q();var Jx=class extends xl.Component{constructor(e,t){super();this.plugin=t;this.currentCategory=null;this.options=e.options,this.anchorElement=e.anchorElement,this.onSelect=e.onSelect,this.onClose=e.onClose}onload(){this.element=this.createDropdownElement(),this.searchInput=this.element.querySelector(".filter-dropdown-search"),this.listContainer=this.element.querySelector(".filter-dropdown-list"),this.renderCategoryList(),this.setupEventListeners(),document.body.appendChild(this.element),setTimeout(()=>{this.element.classList.add("filter-dropdown-visible"),this.positionDropdown()},10),setTimeout(()=>{this.searchInput.focus()},50)}onunload(){this.element.classList.remove("filter-dropdown-visible"),setTimeout(()=>{this.element.remove()},150)}createDropdownElement(){let e=createEl("div",{cls:"filter-dropdown"});return e.createEl("div",{cls:"filter-dropdown-header"}).createEl("input",{type:"text",cls:"filter-dropdown-search",attr:{placeholder:"Filter..."}}),e.createEl("div",{cls:"filter-dropdown-list"}),e}positionDropdown(){let e=this.anchorElement.getBoundingClientRect(),{innerHeight:t,innerWidth:a}=window;this.element.style.visibility="hidden",this.element.style.display="flex";let r=this.element.offsetHeight,i=this.element.offsetWidth;this.element.style.display="",this.element.style.visibility="";let n=e.bottom+8,o=e.left;n+r>t-16&&(n=e.top-r-8),n<16&&(n=16),o+i>a-16&&(o=a-i-16),o<16&&(o=16),this.element.style.top=`${n}px`,this.element.style.left=`${o}px`}renderCategoryList(){this.listContainer.empty(),this.searchInput.placeholder="Filter categories...",this.searchInput.value="",this.options.forEach(e=>{let t=this.createListItem(e.label,()=>this.showCategoryValues(e),!0,!1,!1,e.id);this.listContainer.appendChild(t)}),this.positionDropdown()}showCategoryValues(e){this.currentCategory=e,this.searchInput.value="",this.searchInput.placeholder=`Filter ${e.label.toLowerCase()}...`,this.listContainer.empty();let t=this.createListItem(c("Back to categories"),()=>{this.currentCategory=null,this.renderCategoryList()},!1,!0);this.listContainer.appendChild(t),this.listContainer.createEl("div",{cls:"filter-dropdown-separator"}),this.renderFilterValues(e.options),this.positionDropdown(),this.searchInput.focus()}renderFilterValues(e,t=""){this.listContainer.querySelectorAll(".filter-dropdown-value-item, .filter-dropdown-empty").forEach(i=>i.remove());let r=t?e.filter(i=>i.toLowerCase().includes(t.toLowerCase())):e;r.length===0?this.listContainer.createEl("div",{cls:"filter-dropdown-empty",text:c("No matching options found")}):r.forEach(i=>{let n=this.createListItem(i,()=>{this.currentCategory&&this.onSelect(this.currentCategory.id,i)},!1,!1,!0);this.listContainer.appendChild(n)}),this.positionDropdown()}createListItem(e,t,a=!1,r=!1,i=!1,n=""){let o=createEl("div",{cls:"filter-dropdown-item"});if(r&&o.classList.add("filter-dropdown-back"),i&&o.classList.add("filter-dropdown-value-item"),o.setAttr("tabindex",0),r){let l=o.createEl("span",{cls:"filter-dropdown-item-arrow back"});(0,xl.setIcon)(l,"chevron-left")}if(o.createEl("span",{cls:"filter-dropdown-item-label",text:e}),a){let l=o.createEl("span",{cls:"filter-dropdown-item-arrow"});(0,xl.setIcon)(l,"chevron-right")}return this.registerDomEvent(o,"click",t),this.registerDomEvent(o,"keydown",l=>{l.key==="Enter"&&(l.preventDefault(),t())}),o}setupEventListeners(){let e=(0,xl.debounce)(()=>{let t=this.searchInput.value.trim();this.currentCategory?this.renderFilterValues(this.currentCategory.options,t):this.filterCategoryList(t)},150,!1);this.registerDomEvent(this.searchInput,"input",e),this.registerDomEvent(document,"click",t=>{t.composedPath().includes(this.element)||this.onClose()}),this.registerDomEvent(this.element,"keydown",t=>{if(t.key==="Escape")t.stopPropagation(),this.onClose();else if(t.key==="ArrowDown"||t.key==="ArrowUp")t.preventDefault(),t.key==="ArrowDown"&&document.activeElement===this.searchInput?this.focusFirstItem():this.navigateItems(t.key==="ArrowDown");else if(t.key==="Enter"&&document.activeElement===this.searchInput)this.selectFirstVisibleItem();else if(t.key==="Backspace"&&this.searchInput.value===""&&this.currentCategory){let a=this.listContainer.querySelector(".filter-dropdown-back");a==null||a.click()}})}filterCategoryList(e){this.listContainer.empty();let t=e.toLowerCase(),a=this.options.filter(r=>r.label.toLowerCase().includes(t)||r.options.some(i=>i.toLowerCase().includes(t)));a.length===0?this.listContainer.createEl("div",{cls:"filter-dropdown-empty",text:c("No matching filters found")}):a.forEach(r=>{let i=r.options.filter(o=>o.toLowerCase().includes(t)),n=this.listContainer.createEl("div",{cls:"filter-dropdown-item-container"});if(i.length>0&&e)n.createEl("div",{cls:"filter-dropdown-category-header",text:r.label}),i.forEach(o=>{let l=n.createEl("div",{cls:"filter-dropdown-value-preview",text:o,attr:{tabindex:0,"data-category":r.id,"data-value":o}});this.registerDomEvent(l,"click",d=>{d.stopPropagation(),this.onSelect(r.id,o)}),this.registerDomEvent(l,"keydown",d=>{d.key==="Enter"&&(d.preventDefault(),this.onSelect(r.id,o))})});else{let o=this.createListItem(r.label,()=>this.showCategoryValues(r),!0);n.appendChild(o)}}),this.positionDropdown()}getVisibleFocusableItems(){return Array.from(this.listContainer.querySelectorAll(".filter-dropdown-item, .filter-dropdown-value-preview")).filter(e=>e.offsetParent!==null&&window.getComputedStyle(e).visibility!=="hidden"&&window.getComputedStyle(e).display!=="none")}focusFirstItem(){var t;(t=this.getVisibleFocusableItems()[0])==null||t.focus()}selectFirstVisibleItem(){var t;(t=this.getVisibleFocusableItems()[0])==null||t.click()}navigateItems(e){var n;let t=this.getVisibleFocusableItems();if(t.length===0)return;let a=document.activeElement,r=-1;a&&t.includes(a)?r=t.findIndex(o=>o===a):a===this.searchInput&&(r=e?-1:t.length);let i;e?i=r>=t.length-1?0:r+1:i=r<=0?t.length-1:r-1,i>=0&&i<t.length&&((n=t[i])==null||n.focus())}};var jk=A(require("obsidian")),Zx=class extends jk.Component{constructor(e){super();this.filter=e.filter,this.onRemove=e.onRemove}onload(){this.element=this.createPillElement()}createPillElement(){let e=document.createElement("div");return e.className="filter-pill",e.setAttribute("data-filter-id",this.filter.id),e.createSpan({cls:"filter-pill-category",text:`${this.filter.categoryLabel}:`}),e.createSpan({cls:"filter-pill-value",text:this.filter.value}),e.createEl("span",{cls:"filter-pill-remove",attr:{"aria-label":"Remove filter"}}).createSpan({cls:"filter-pill-remove-icon"},a=>{new jk.ExtraButtonComponent(a).setIcon("x").onClick(()=>{this.removePill()})}),e}removePill(){this.element.classList.add("filter-pill-removing"),setTimeout(()=>{this.onRemove(this.filter.id)},150)}};Q();Yd();function cp(s){let e=new Set,t=new Set,a=new Set,r=new Set,i=new Set,n=new Set;s.forEach(g=>{g.status&&e.add(g.status),g.metadata.tags.forEach(y=>{typeof y=="string"&&t.add(y)}),g.metadata.project&&a.add(g.metadata.project),g.metadata.context&&r.add(g.metadata.context),g.metadata.priority!==void 0&&i.add(g.metadata.priority),g.filePath&&n.add(g.filePath)});let o=Array.from(e).sort(),l=Array.from(t).sort(),d=Array.from(a).sort(),u=Array.from(r).sort(),p={},m={5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"};for(let g in Hl){let y=Hl[g];(g===m[y]||!p[y])&&(p[y]=g)}for(let g in m)p[g]||(p[g]=m[g]);let f=Array.from(i).sort((g,y)=>y-g).map(g=>p[g]||g.toString()).filter(g=>!!g),h=Array.from(n).sort();return[{id:"status",label:c("Status"),options:o},{id:"tag",label:c("Tag"),options:l},{id:"project",label:c("Project"),options:d},{id:"context",label:c("Context"),options:u},{id:"priority",label:c("Priority"),options:f},{id:"completed",label:c("Completed"),options:["Yes","No"]},{id:"filePath",label:c("File Path"),options:h}]}var dp=class extends Ok.Component{constructor(e,t){super();this.params=e;this.plugin=t;this.activeFilters=[];this.filterPills=new Map;this.dropdown=null;this.container=e.container,this.options=e.options||[],this.onChange=e.onChange||(()=>{})}onload(){this.render(),this.setupEventListeners(),this.loadInitialFilters()}onunload(){this.container.empty(),this.filterPills.clear(),this.activeFilters=[]}render(){this.container.empty();let e=this.container.createDiv({cls:"filter-component"});this.filtersContainer=e.createDiv({cls:"filter-pills-container"}),this.controlsContainer=e.createDiv({cls:"filter-controls"}),this.addFilterButton=this.controlsContainer.createEl("button",{cls:"filter-add-button"},t=>{let a=t.createEl("span",{cls:"filter-add-icon"});(0,Ok.setIcon)(a,"plus");let r=t.createEl("span",{text:c("Add filter")})}),this.clearAllButton=this.controlsContainer.createEl("button",{cls:"filter-clear-all-button mod-destructive",text:c("Clear all")}),this.clearAllButton.hide(),this.updateClearAllButton();for(let t of this.params.components||[])this.addChild(t)}setupEventListeners(){this.registerDomEvent(this.addFilterButton,"click",e=>{e.stopPropagation(),this.showFilterDropdown()}),this.registerDomEvent(this.clearAllButton,"click",()=>{this.clearAllFilters()})}showFilterDropdown(){this.hideFilterDropdown();let e=this.options.filter(t=>t.options.length>0&&!this.activeFilters.some(a=>a.category===t.id));e.length!==0&&(this.dropdown=new Jx({options:e,anchorElement:this.addFilterButton,onSelect:(t,a)=>{this.addFilter(t,a),this.hideFilterDropdown()},onClose:()=>{this.hideFilterDropdown()}},this.plugin),this.addChild(this.dropdown))}hideFilterDropdown(){this.dropdown&&(this.removeChild(this.dropdown),this.dropdown=null)}addFilter(e,t){let a=this.options.find(o=>o.id===e);if(!a)return;let r=`filter-${e}-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,i={id:r,category:e,categoryLabel:a.label,value:t};this.activeFilters.push(i);let n=new Zx({filter:i,onRemove:o=>{this.removeFilter(o)}});this.filterPills.set(r,n),this.addChild(n),this.filtersContainer.appendChild(n.element),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}removeFilter(e){let t=this.activeFilters.findIndex(r=>r.id===e);if(t===-1)return;this.activeFilters.splice(t,1);let a=this.filterPills.get(e);a&&(a.element.remove(),this.removeChild(a),this.filterPills.delete(e)),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}clearAllFilters(){this.filterPills.forEach(e=>{e.element.remove(),this.removeChild(e)}),this.filterPills.clear(),this.activeFilters=[],this.filtersContainer.empty(),this.updateClearAllButton(),this.onChange(this.getActiveFilters())}updateClearAllButton(){this.clearAllButton&&(this.activeFilters.length>0?this.clearAllButton.show():this.clearAllButton.hide())}loadInitialFilters(){let e=[...this.activeFilters];this.clearAllFilters(),e.forEach(t=>{if(this.options.some(r=>r.id===t.category)){let r=this.options.find(i=>i.id===t.category);(r==null?void 0:r.options.includes(t.value))?this.addFilter(t.category,t.value):console.warn(`Initial filter value "${t.value}" no longer exists for category "${t.category}". Skipping.`)}else console.warn(`Initial filter category "${t.category}" no longer exists. Skipping filter for value "${t.value}".`)})}updateFilterOptions(e){this.options=cp(e)}getActiveFilters(){return JSON.parse(JSON.stringify(this.activeFilters))}setFilters(e){this.clearAllFilters(),e.forEach(t=>{let a=this.options.find(r=>r.id===t.category);a&&a.options.includes(t.value)?this.addFilter(t.category,t.value):console.warn(a?`Filter value "${t.value}" not found in options for category "${t.category}".`:`Filter category "${t.category}" not found in options.`)}),this._loaded&&(this.updateClearAllButton(),this.onChange(this.getActiveFilters()))}};xa();var In=class extends Po.Component{constructor(e,t,a,r=[],i={},n="kanban"){super();this.columns=[];this.sortableInstances=[];this.columnSortableInstance=null;this.tasks=[];this.allTasks=[];this.currentViewId="kanban";this.columnOrder=[];this.filterComponent=null;this.activeFilters=[];this.sortOption={field:"priority",order:"desc",label:"Priority (High to Low)"};this.hideEmptyColumns=!1;this.handleFilterApply=(e,t)=>{let a=Array.isArray(t)?t[0]:t.toString();e==="priority"&&/^\d+$/.test(a)&&(a=this.convertPriorityToIcon(parseInt(a)));let r={id:`${e}-${a}`,category:e,categoryLabel:this.getCategoryLabel(e),value:a},i=this.activeFilters.findIndex(n=>n.category===e&&n.value===a);i===-1?this.activeFilters.push(r):this.activeFilters.splice(i,1),this.filterComponent&&this.filterComponent.setFilters(this.activeFilters.map(n=>({category:n.category,value:n.value}))),this.applyFiltersAndRender()};this.app=e,this.plugin=t,this.currentViewId=n,this.containerEl=a.createDiv("tg-kanban-component-container"),this.tasks=r,this.params=i}onload(){super.onload(),this.containerEl.empty(),this.containerEl.addClass("tg-kanban-view"),this.loadKanbanConfig(),this.filterContainerEl=this.containerEl.createDiv({cls:"tg-kanban-filters"}),this.renderFilterControls(this.filterContainerEl),this.renderControls(this.filterContainerEl),this.columnContainerEl=this.containerEl.createDiv({cls:"tg-kanban-column-container"}),this.renderColumns()}onunload(){super.onunload(),this.columns.forEach(e=>e.unload()),this.sortableInstances.forEach(e=>e.destroy()),this.columnSortableInstance&&(this.columnSortableInstance.destroy(),this.columnSortableInstance=null),this.columns=[],this.containerEl.empty()}renderControls(e){let r=e.createDiv({cls:"tg-kanban-controls-container"}).createDiv({cls:"tg-kanban-sort-container"}).createEl("button",{cls:"tg-kanban-sort-button clickable-icon"},i=>{(0,Po.setIcon)(i,"arrow-up-down")});this.registerDomEvent(r,"click",i=>{let n=new Po.Menu;[{field:"priority",order:"desc",label:c("Priority (High to Low)")},{field:"priority",order:"asc",label:c("Priority (Low to High)")},{field:"dueDate",order:"asc",label:c("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:c("Due Date (Latest First)")},{field:"scheduledDate",order:"asc",label:c("Scheduled Date (Earliest First)")},{field:"scheduledDate",order:"desc",label:c("Scheduled Date (Latest First)")},{field:"startDate",order:"asc",label:c("Start Date (Earliest First)")},{field:"startDate",order:"desc",label:c("Start Date (Latest First)")}].forEach(l=>{n.addItem(d=>{d.setTitle(l.label).setChecked(l.field===this.sortOption.field&&l.order===this.sortOption.order).onClick(()=>{this.sortOption=l,this.renderColumns()})})}),n.showAtMouseEvent(i)})}renderFilterControls(e){let t=cp(this.allTasks);this.filterComponent=new dp({container:e,options:t,onChange:a=>{!this.columnContainerEl||(this.activeFilters=a,this.applyFiltersAndRender())}},this.plugin),this.addChild(this.filterComponent)}setTasks(e){e.length,this.allTasks=[...e],this.filterComponent,this.filterComponent?this.filterComponent.updateFilterOptions(this.allTasks):console.warn("Filter component not initialized when setting tasks."),this.applyFiltersAndRender()}applyFiltersAndRender(){if(this.activeFilters,this.activeFilters.length===0)this.tasks=[...this.allTasks];else{let e={"\u{1F53A}":5,"\u23EB":4,"\u{1F53C}":3,"\u{1F53D}":2,"\u23EC\uFE0F":1,"\u23EC":1,highest:5,high:4,medium:3,low:2,lowest:1,"1":1,"2":2,"3":3,"4":4,"5":5};this.tasks=this.allTasks.filter(t=>this.activeFilters.every(a=>{switch(a.category){case"status":return t.status===a.value;case"tag":return this.matchesTagFilter(t,a.value);case"project":return t.metadata.project===a.value;case"context":return t.metadata.context===a.value;case"priority":let r=e[a.value]||parseInt(a.value);return t.metadata.priority===r;case"completed":return a.value==="Yes"&&t.completed||a.value==="No"&&!t.completed;case"filePath":return t.filePath===a.value;default:return console.warn(`Unknown filter category in Kanban: ${a.category}`),!0}}))}this.tasks.length,this.renderColumns()}matchesTagFilter(e,t){return!e.metadata.tags||e.metadata.tags.length===0?!1:e.metadata.tags.some(a=>{if(typeof a!="string")return!1;if(a===t)return!0;let r=t.startsWith("#")?t:`#${t}`;return(a.startsWith("#")?a:`#${a}`).startsWith(r+"/")})}convertPriorityToIcon(e){return{5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"}[e]||e.toString()}getCategoryLabel(e){switch(e){case"tag":return c("Tag");case"project":return c("Project");case"priority":return c("Priority");case"status":return c("Status");case"context":return c("Context");default:return e}}renderColumns(){var a,r;(a=this.columnContainerEl)==null||a.empty(),this.columns.forEach(i=>this.removeChild(i)),this.columns=[];let e=(r=this.plugin.settings.viewConfiguration.find(i=>i.id===this.currentViewId))==null?void 0:r.specificConfig,t=(e==null?void 0:e.groupBy)||"status";t==="status"?this.renderStatusColumns():this.renderCustomColumns(t,e==null?void 0:e.customColumns),this.updateColumnVisibility(),this.initializeSortableInstances(),this.initializeColumnSortable()}renderStatusColumns(){let e=this.plugin.settings.taskStatusCycle,t=e.length>0?e:["Todo","In Progress","Done"],a=[],r=[],i=[];t.forEach(d=>{let u=this.plugin.settings.taskStatusMarks[d]||" ";this.plugin.settings.excludeMarksFromCycle&&this.plugin.settings.excludeMarksFromCycle.includes(d)||(u===" "?a.push(d):u==="x"?r.push(d):i.push(d))}),t=[...a,...i,...r];let n=t.map(d=>({title:d}));this.applyColumnOrder(n).map(d=>d.title).forEach(d=>{let u=this.getTasksForStatus(d),p=new Fk(this.app,this.plugin,this.columnContainerEl,d,u,{...this.params,onTaskStatusUpdate:(m,f)=>this.handleStatusUpdate(m,f),onFilterApply:this.handleFilterApply});this.addChild(p),this.columns.push(p)})}renderCustomColumns(e,t){let a=[];t&&t.length>0?a=t.sort((i,n)=>i.order-n.order).map(i=>({title:i.title,value:i.value,id:i.id})):a=this.generateDefaultColumns(e),this.applyColumnOrder(a).forEach(i=>{let n=this.getTasksForProperty(e,i.value),o=new Fk(this.app,this.plugin,this.columnContainerEl,i.title,n,{...this.params,onTaskStatusUpdate:(l,d)=>this.handlePropertyUpdate(l,e,i.value,d),onFilterApply:this.handleFilterApply});this.addChild(o),this.columns.push(o)})}generateDefaultColumns(e){switch(e){case"priority":return[{title:"\u{1F53A} Highest",value:5,id:"priority-5"},{title:"\u23EB High",value:4,id:"priority-4"},{title:"\u{1F53C} Medium",value:3,id:"priority-3"},{title:"\u{1F53D} Low",value:2,id:"priority-2"},{title:"\u23EC Lowest",value:1,id:"priority-1"},{title:"No Priority",value:null,id:"priority-none"}];case"tags":let t=new Set;this.tasks.forEach(d=>{let u=d.metadata||{};u.tags&&u.tags.forEach(p=>{typeof p=="string"&&t.add(p)})});let a=Array.from(t).map(d=>({title:`${d}`,value:d,id:`tag-${d}`}));return a.unshift({title:"No Tags",value:"",id:"tag-none"}),a;case"project":let r=new Set;this.tasks.forEach(d=>{let u=bt(d);u&&r.add(u)});let i=Array.from(r).map(d=>({title:d,value:d,id:`project-${d}`}));return i.push({title:"No Project",value:"",id:"project-none"}),i;case"context":let n=new Set;this.tasks.forEach(d=>{let u=d.metadata||{};u.context&&n.add(u.context)});let o=Array.from(n).map(d=>({title:`@${d}`,value:d,id:`context-${d}`}));return o.push({title:"No Context",value:"",id:"context-none"}),o;case"dueDate":case"scheduledDate":case"startDate":return[{title:"Overdue",value:"overdue",id:`${e}-overdue`},{title:"Today",value:"today",id:`${e}-today`},{title:"Tomorrow",value:"tomorrow",id:`${e}-tomorrow`},{title:"This Week",value:"thisWeek",id:`${e}-thisWeek`},{title:"Next Week",value:"nextWeek",id:`${e}-nextWeek`},{title:"Later",value:"later",id:`${e}-later`},{title:"No Date",value:null,id:`${e}-none`}];case"filePath":let l=new Set;return this.tasks.forEach(d=>{d.filePath&&l.add(d.filePath)}),Array.from(l).map(d=>({title:d.split("/").pop()||d,value:d,id:`path-${d.replace(/[^a-zA-Z0-9]/g,"-")}`}));default:return[{title:"All Tasks",value:null,id:"all"}]}}updateColumnVisibility(){this.columns.forEach(e=>{this.hideEmptyColumns&&e.isEmpty()?e.setVisible(!1):e.setVisible(!0)})}getTasksForStatus(e){let t=this.plugin.settings.taskStatusMarks[e]||" ",a=this.tasks.filter(r=>(r.status||" ")===t);return a.sort((r,i)=>this.compareTasks(r,i,this.sortOption)),a}compareTasks(e,t,a){var d,u,p,m,f,h,k,g,y,w;let{field:r,order:i}=a,n=0,o=e.metadata||{},l=t.metadata||{};switch(r){case"priority":let v=(d=o.priority)!=null?d:0,T=(u=l.priority)!=null?u:0;n=v-T;break;case"dueDate":let x=(p=o.dueDate)!=null?p:Number.MAX_SAFE_INTEGER,C=(m=l.dueDate)!=null?m:Number.MAX_SAFE_INTEGER;n=x-C;break;case"scheduledDate":let S=(f=o.scheduledDate)!=null?f:Number.MAX_SAFE_INTEGER,E=(h=l.scheduledDate)!=null?h:Number.MAX_SAFE_INTEGER;n=S-E;break;case"startDate":let P=(k=o.startDate)!=null?k:Number.MAX_SAFE_INTEGER,I=(g=l.startDate)!=null?g:Number.MAX_SAFE_INTEGER;n=P-I;break;case"createdDate":let L=(y=o.createdDate)!=null?y:Number.MAX_SAFE_INTEGER,W=(w=l.createdDate)!=null?w:Number.MAX_SAFE_INTEGER;n=L-W;break}return i==="desc"?-n:n}initializeSortableInstances(){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[];let e=!Po.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0;this.columns.forEach(t=>{let a=t.getContentElement(),r=Js.create(a,{group:"kanban-group",animation:150,ghostClass:"tg-kanban-card-ghost",dragClass:"tg-kanban-card-dragging",delay:e?150:0,touchStartThreshold:e?5:3,forceFallback:!1,fallbackOnBody:!0,scroll:!0,scrollSensitivity:e?50:30,scrollSpeed:e?15:10,bubbleScroll:!0,onEnd:i=>{this.handleSortEnd(i)}});this.sortableInstances.push(r)})}async handleSortEnd(e){var i,n,o;e.oldIndex,e.newIndex;let t=e.item.dataset.taskId,a=e.to,r=e.from;if(t&&a){let l=a.closest(".tg-kanban-column"),d=l?(i=l.querySelector(".tg-kanban-column-title"))==null?void 0:i.textContent:null,u=r.closest(".tg-kanban-column"),p=u?(n=u.querySelector(".tg-kanban-column-title"))==null?void 0:n.textContent:null;if(d&&p){let m=(o=this.plugin.settings.viewConfiguration.find(h=>h.id===this.currentViewId))==null?void 0:o.specificConfig,f=(m==null?void 0:m.groupBy)||"status";if(f==="status"){let h=this.plugin.settings.taskStatusMarks[d];h!==void 0?(""+t+d+h,await this.handleStatusUpdate(t,h)):console.warn(`Could not find status mark for status name: ${d}`)}else{let h=this.getColumnValueFromTitle(d,f,m==null?void 0:m.customColumns),k=this.getColumnValueFromTitle(p,f,m==null?void 0:m.customColumns);""+f+t+k+h,await this.handlePropertyUpdate(t,f,k,h)}}}}loadKanbanConfig(){var t;let e=(t=this.plugin.settings.viewConfiguration.find(a=>a.id===this.currentViewId))==null?void 0:t.specificConfig;e&&(this.hideEmptyColumns=e.hideEmptyColumns||!1,this.sortOption={field:e.defaultSortField||"priority",order:e.defaultSortOrder||"desc",label:this.getSortOptionLabel(e.defaultSortField||"priority",e.defaultSortOrder||"desc")}),this.loadColumnOrder()}getSortOptionLabel(e,t){let a={priority:c("Priority"),dueDate:c("Due Date"),scheduledDate:c("Scheduled Date"),startDate:c("Start Date"),createdDate:c("Created Date")},r=t==="asc"?c("Ascending"):c("Descending");return`${a[e]} (${r})`}getColumnContainer(){return this.columnContainerEl}async handleStatusUpdate(e,t){if(this.params.onTaskStatusUpdate)try{await this.params.onTaskStatusUpdate(e,t)}catch(a){console.error("Failed to update task status:",a)}}async handlePropertyUpdate(e,t,a,r){if(t==="status"){await this.handleStatusUpdate(e,r);return}let i=this.allTasks.find(o=>o.id===e);if(!i){console.warn(`Task with ID ${e} not found for property update`);return}i.metadata=i.metadata||{};let n={...i};switch(t){case"priority":n.metadata.priority=r===null||r===""?void 0:Number(r);break;case"tags":if(r===null||r==="")n.metadata.tags=[];else{let l=n.metadata.tags||[];if(a&&a!==""&&a!==r){let p=[a,`#${a}`,a.startsWith("#")?a.substring(1):a];l=l.filter(m=>!p.includes(m))}let d=[r,`#${r}`,r.startsWith("#")?r.substring(1):r];if(!l.some(p=>d.includes(p))){let p=l.length>0&&l[0].startsWith("#")?r.startsWith("#")?r:`#${r}`:r.startsWith("#")?r.substring(1):r;l.push(p)}n.metadata.tags=l}break;case"project":ur(i)||(n.metadata.project=r===null||r===""?void 0:r);break;case"context":n.metadata.context=r===null||r===""?void 0:r;break;case"dueDate":case"scheduledDate":case"startDate":let o=this.convertDateCategoryToTimestamp(r);t==="dueDate"?n.metadata.dueDate=o:t==="scheduledDate"?n.metadata.scheduledDate=o:t==="startDate"&&(n.metadata.startDate=o);break;default:console.warn(`Unsupported property type for update: ${t}`);return}try{""+e+t,await this.plugin.taskManager.updateTask(n)}catch(o){console.error(`Failed to update task ${e} property ${t}:`,o)}}getTasksForProperty(e,t){let a=this.tasks.filter(r=>{let i=r.metadata||{};switch(e){case"priority":return t===null||t===""?!i.priority:i.priority===t;case"tags":return t===null||t===""?!i.tags||i.tags.length===0:i.tags&&i.tags.some(n=>typeof n=="string"&&n===t);case"project":return t===null||t===""?!bt(r):bt(r)===t;case"context":return t===null||t===""?!i.context:i.context===t;case"dueDate":case"scheduledDate":case"startDate":return this.matchesDateCategory(r,e,t);case"filePath":return r.filePath===t;default:return!0}});return a.sort((r,i)=>this.compareTasks(r,i,this.sortOption)),a}matchesDateCategory(e,t,a){let r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate()),n=new Date(i.getTime()+24*60*60*1e3),o=new Date(i.getTime()+7*24*60*60*1e3),l=new Date(i.getTime()+14*24*60*60*1e3),d=e.metadata||{},u;switch(t){case"dueDate":u=d.dueDate;break;case"scheduledDate":u=d.scheduledDate;break;case"startDate":u=d.startDate;break}if(!u)return a==="none"||a===null||a==="";let p=new Date(u);switch(a){case"overdue":return p<i;case"today":return p>=i&&p<n;case"tomorrow":return p>=n&&p<new Date(n.getTime()+24*60*60*1e3);case"thisWeek":return p>=n&&p<o;case"nextWeek":return p>=o&&p<l;case"later":return p>=l;case"none":case null:case"":return!1;default:return!1}}getColumnValueFromTitle(e,t,a){if(a&&a.length>0){let r=a.find(i=>i.title===e);return r?r.value:null}switch(t){case"priority":if(e.includes("Highest"))return 5;if(e.includes("High"))return 4;if(e.includes("Medium"))return 3;if(e.includes("Low"))return 2;if(e.includes("Lowest"))return 1;if(e.includes("No Priority"))return null;break;case"tags":return e==="No Tags"?"":e.startsWith("#")?e.trim().substring(1):e;case"project":return e==="No Project"?"":e;case"context":return e==="No Context"?"":e.startsWith("@")?e.substring(1):e;case"dueDate":case"scheduledDate":case"startDate":if(e==="Overdue")return"overdue";if(e==="Today")return"today";if(e==="Tomorrow")return"tomorrow";if(e==="This Week")return"thisWeek";if(e==="Next Week")return"nextWeek";if(e==="Later")return"later";if(e==="No Date")return null;break;case"filePath":return e}return e}convertDateCategoryToTimestamp(e){if(e===null||e===""||e==="none")return;let t=new Date,a=new Date(t.getFullYear(),t.getMonth(),t.getDate());switch(e){case"overdue":return;case"today":return a.getTime();case"tomorrow":return new Date(a.getTime()+24*60*60*1e3).getTime();case"thisWeek":let r=7-a.getDay();return new Date(a.getTime()+r*24*60*60*1e3).getTime();case"nextWeek":let i=14-a.getDay();return new Date(a.getTime()+i*24*60*60*1e3).getTime();case"later":let n=new Date(a);return n.setMonth(n.getMonth()+1),n.getTime();default:return}}getTaskOriginalColumnValue(e,t){var r;let a=e.metadata||{};switch(t){case"tags":let i=(r=this.plugin.settings.viewConfiguration.find(n=>n.id===this.currentViewId))==null?void 0:r.specificConfig;if((i==null?void 0:i.customColumns)&&i.customColumns.length>0){for(let n of i.customColumns)if(n.value===""||n.value===null){if(!a.tags||a.tags.length===0)return""}else if(a.tags&&a.tags.some(o=>typeof o=="string"&&o===n.value))return n.value}else return!a.tags||a.tags.length===0?"":a.tags.find(o=>typeof o=="string")||"";return"";case"project":return bt(e)||"";case"context":return a.context||"";case"priority":return a.priority||null;case"dueDate":return this.getDateCategory(a.dueDate);case"scheduledDate":return this.getDateCategory(a.scheduledDate);case"startDate":return this.getDateCategory(a.startDate);case"filePath":return e.filePath;default:return null}}getDateCategory(e){if(!e)return"none";let t=new Date,a=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r=new Date(a.getTime()+24*60*60*1e3),i=new Date(a.getTime()+7*24*60*60*1e3),n=new Date(a.getTime()+14*24*60*60*1e3),o=new Date(e);return o<a?"overdue":o>=a&&o<r?"today":o>=r&&o<new Date(r.getTime()+24*60*60*1e3)?"tomorrow":o>=r&&o<i?"thisWeek":o>=i&&o<n?"nextWeek":"later"}getColumnOrderKey(){var a;let e=(a=this.plugin.settings.viewConfiguration.find(r=>r.id===this.currentViewId))==null?void 0:a.specificConfig,t=(e==null?void 0:e.groupBy)||"status";return`kanban-column-order-${this.currentViewId}-${t}`}loadColumnOrder(){try{let e=this.getColumnOrderKey(),t=this.app.loadLocalStorage(e);t?this.columnOrder=JSON.parse(t):this.columnOrder=[]}catch(e){console.warn("Failed to load column order from localStorage:",e),this.columnOrder=[]}}saveColumnOrder(e){try{let t=this.getColumnOrderKey();this.app.saveLocalStorage(t,JSON.stringify(e)),this.columnOrder=[...e]}catch(t){console.warn("Failed to save column order to localStorage:",t)}}applyColumnOrder(e){try{if(this.columnOrder.length===0)return e;if(!Array.isArray(e))return console.warn("Invalid columns array provided to applyColumnOrder"),[];let t=[],a=[...e];return this.columnOrder.forEach(r=>{if(r){let i=a.findIndex(n=>n.id&&n.id===r||n.title===r);i!==-1&&t.push(a.splice(i,1)[0])}}),t.push(...a),t}catch(t){return console.error("Error applying column order:",t),e}}initializeColumnSortable(){this.columnSortableInstance&&(this.columnSortableInstance.destroy(),this.columnSortableInstance=null),this.columnSortableInstance=Js.create(this.columnContainerEl,{group:"kanban-columns",animation:150,ghostClass:"tg-kanban-column-ghost",dragClass:"tg-kanban-column-dragging",handle:".tg-kanban-column-header",direction:"horizontal",swapThreshold:.65,filter:".tg-kanban-column-content, .tg-kanban-card, .tg-kanban-add-card-button",preventOnFilter:!1,onEnd:e=>{this.handleColumnSortEnd(e)}})}handleColumnSortEnd(e){e.oldIndex,e.newIndex;try{if(e.oldIndex===e.newIndex)return;let t=[],a=this.columnContainerEl.querySelectorAll(".tg-kanban-column");if(a.length===0){console.warn("No column elements found during column sort end");return}if(a.forEach(r=>{var n;let i=(n=r.querySelector(".tg-kanban-column-title"))==null?void 0:n.textContent;if(i){let l=r.getAttribute("data-status-name")||i;t.push(l)}}),t.length===0){console.warn("No valid column order found during sort end");return}this.saveColumnOrder(t)}catch(t){console.error("Error handling column sort end:",t)}}};var mp=A(require("obsidian"));var up=class{dateToX(e,t,a){if(!t)return 0;let r=new Date(Math.max(e.getTime(),t.getTime()));return this.daysBetween(t,r)*a}xToDate(e,t,a){if(!t||a<=0)return null;let r=e/a;return this.addDays(t,r)}daysBetween(e,t){let a=this.startOfDay(e).getTime(),r=this.startOfDay(t).getTime();return Math.floor((r-a)/(1e3*60*60*24))}addDays(e,t){let a=new Date(e);return a.setDate(a.getDate()+t),a}startOfDay(e){let t=new Date(e);return t.setHours(0,0,0,0),t}startOfWeek(e){let t=new Date(e),a=t.getDay(),r=t.getDate()-a+(a===0?-6:1);return t.setDate(r),this.startOfDay(t)}endOfWeek(e){let t=this.startOfWeek(e),a=this.addDays(t,6);return a.setHours(23,59,59,999),a}getWeekNumber(e){e=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),e.setUTCDate(e.getUTCDate()+4-(e.getUTCDay()||7));let t=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-t.getTime())/864e5+1)/7)}};var N_=A(require("obsidian")),eS=class extends N_.Component{constructor(e,t){super();this.svgEl=null;this.params=null;this.app=e,this.headerContainerEl=t}onload(){}onunload(){this.svgEl&&(this.svgEl.remove(),this.svgEl=null),this.headerContainerEl.empty()}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("TimelineHeaderComponent: Cannot render, params not set.");return}let{startDate:e,endDate:t,totalWidth:a,timescale:r,scrollLeft:i,headerHeight:n,dateHelper:o,shouldDrawMajorTick:l,shouldDrawMinorTick:d,formatMajorTick:u,formatMinorTick:p,formatDayTick:m}=this.params;this.headerContainerEl.empty(),this.svgEl=this.headerContainerEl.createSvg("svg",{cls:"gantt-header-svg"}),this.svgEl.setAttribute("width","100%"),this.svgEl.setAttribute("height",`${n}`);let f=this.svgEl.createSvg("g",{cls:"gantt-header-content"});f.setAttribute("transform",`translate(${-i}, 0)`),f.createSvg("rect",{attr:{x:0,y:0,width:a,height:n,class:"gantt-header-bg"}});let h=30,k=o.addDays(this.params.visibleStartDate,-h),g=o.addDays(this.params.visibleEndDate,h);k=new Date(Math.max(k.getTime(),e.getTime())),g=new Date(Math.min(g.getTime(),t.getTime()));let y=o.startOfDay(k),w={},v={},T={};for(;y<=g;){let C=o.dateToX(y,e,this.params.dayWidth),S=o.addDays(y,1),P=o.dateToX(S,e,this.params.dayWidth)-C;if(l(y)){f.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:n,class:"gantt-header-tick-major"}});let I=u(y);if(I&&P>10){let L=`${y.getFullYear()}-${y.getMonth()}`;w[L]||(w[L]={x:C+5,label:I})}}if(d(y)){f.createSvg("line",{attr:{x1:C,y1:n*.5,x2:C,y2:n,class:"gantt-header-tick-minor"}});let I=p(y);if(I&&P>2){if(r==="Day"||r==="Week"){let L=`${y.getFullYear()}-W${o.getWeekNumber(y)}`;v[L]||(v[L]={x:C+5,label:I})}else if(r==="Month"){let L=y.getDate().toString(),W=`${y.getFullYear()}-${y.getMonth()}-${y.getDate()}`;T[W]||(T[W]={x:C+P/2,label:L})}}}if(r==="Day"){f.createSvg("line",{attr:{x1:C,y1:n*.7,x2:C,y2:n,class:"gantt-header-tick-day"}});let I=m(y);if(I&&P>2){let L=`${y.getFullYear()}-${y.getMonth()}-${y.getDate()}`;T[L]||(T[L]={x:C+P/2,label:I})}}if(y>g)break;y=S}Object.values(w).forEach(C=>{f.createSvg("text",{attr:{x:C.x,y:n*.35,class:"gantt-header-label-major"}}).textContent=C.label}),Object.values(v).forEach(C=>{f.createSvg("text",{attr:{x:C.x,y:n*.65,class:"gantt-header-label-minor"}}).textContent=C.label}),Object.values(T).forEach(C=>{f.createSvg("text",{attr:{x:C.x,y:n*.85,class:"gantt-header-label-day","text-anchor":"middle"}}).textContent=C.label});let x=o.startOfDay(new Date);if(x>=e&&x<=t){let C=o.dateToX(x,e,this.params.dayWidth);f.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:n,class:"gantt-header-today-marker"}})}}};var L_=A(require("obsidian"));var tS=class extends L_.Component{constructor(e,t){super();this.params=null;this.dateHelper=new up;this.app=e,this.svgGroupEl=t}onload(){}onunload(){this.svgGroupEl.empty()}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("GridBackgroundComponent: Cannot render, params not set.");return}this.svgGroupEl.empty();let{startDate:e,endDate:t,visibleStartDate:a,visibleEndDate:r,totalWidth:i,totalHeight:n,visibleTasks:o,timescale:l,rowHeight:d,dateHelper:u,shouldDrawMajorTick:p,shouldDrawMinorTick:m}=this.params,f=30,h=u.addDays(a,-f),k=u.addDays(r,f);h=new Date(Math.max(h.getTime(),e.getTime())),k=new Date(Math.min(k.getTime(),t.getTime()));let g=u.startOfDay(h);for(;g<=k;){let w=u.dateToX(g,e,this.params.dayWidth);if(p(g)?this.svgGroupEl.createSvg("line",{attr:{x1:w,y1:0,x2:w,y2:n,class:"gantt-grid-line-major"}}):(m(g)||l==="Day")&&this.svgGroupEl.createSvg("line",{attr:{x1:w,y1:0,x2:w,y2:n,class:"gantt-grid-line-minor"}}),g>k)break;g=u.addDays(g,1)}for(let w=d;w<=n;w+=d)this.svgGroupEl.createSvg("line",{attr:{x1:0,y1:w,x2:i,y2:w,class:"gantt-grid-line-horizontal"}});let y=u.startOfDay(new Date);if(y>=e&&y<=t){let w=u.dateToX(y,e,this.params.dayWidth);this.svgGroupEl.createSvg("line",{attr:{x1:w,y1:0,x2:w,y2:n,class:"gantt-grid-today-marker"}})}}};var H_=A(require("obsidian"));Cr();var NK=24,LK=.6,HK=10,pp=5,aS=class extends H_.Component{constructor(e,t){super();this.params=null;this.app=e,this.taskGroupEl=t}onload(){}onunload(){this.taskGroupEl.empty()}updateParams(e){this.params=e,this.render()}render(){if(!this.params){console.warn("TaskRendererComponent: Cannot render, params not set.");return}JSON.stringify(this.params.preparedTasks.map(a=>({id:a.task.id,sx:a.startX,w:a.width})),null,2),this.taskGroupEl.empty();let{preparedTasks:e,parentComponent:t}=this.params;e.forEach(a=>this.renderSingleTask(a,t))}renderSingleTask(e,t){if(!this.params)return;let{app:a,handleTaskClick:r,handleTaskContextMenu:i,showTaskLabels:n,useMarkdownRenderer:o,rowHeight:l=NK,taskBarHeightRatio:d=LK,milestoneSize:u=HK}=this.params,p=e.task,m=this.taskGroupEl.createSvg("g",{cls:"gantt-task-item"});m.setAttribute("data-task-id",p.id),m.addEventListener("click",()=>r(p)),m.addEventListener("contextmenu",g=>i(g,p));let f=l*d,h=e.y-f/2,k=null;if(e.isMilestone){let g=e.startX,y=e.y,w=u/2;if(k=m.createSvg("circle",{attr:{cx:g,cy:y,r:w,class:"gantt-task-milestone"}}),p.status&&p.status.trim()&&k.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let v=nr(p.metadata.priority);v&&k.classList.add(`priority-${v}`)}if(n&&p.content)if(o){let v=m.createSvg("foreignObject",{attr:{x:g+w+pp,y:y-8,width:300,height:16,class:"gantt-milestone-label-container"}}),T=document.createElementNS("http://www.w3.org/1999/xhtml","div");T.style.pointerEvents="none",v.appendChild(T);let x=new Qt(this.app,T,p.filePath);this.addChild(x),x.render(p.content)}else{let v=m.createSvg("text",{attr:{x:g+w+pp,y,class:"gantt-milestone-label","dominant-baseline":"middle"}});v.textContent=p.content,v.style.pointerEvents="none"}m.setAttribute("title",`${p.content}
Due: ${p.metadata.dueDate?new Date(p.metadata.dueDate).toLocaleDateString():"N/A"}`)}else if(e.width!==void 0&&e.width>0){if(k=m.createSvg("rect",{attr:{x:e.startX,y:h,width:e.width,height:f,rx:3,ry:3,class:"gantt-task-bar"}}),p.status&&p.status.trim()&&k.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let g=nr(p.metadata.priority);g&&k.classList.add(`priority-${g}`)}if(m.setAttribute("title",`${p.content}
Start: ${p.metadata.startDate?new Date(p.metadata.startDate).toLocaleDateString():"N/A"}
Due: ${p.metadata.dueDate?new Date(p.metadata.dueDate).toLocaleDateString():"N/A"}`),n&&p.content){let g=30;if(e.width>=g){let y=m.createSvg("foreignObject",{attr:{x:e.startX+pp,y:e.y-f/2-2,width:e.width-pp*2,height:f+4,class:"gantt-task-label-fo"}});y.style.pointerEvents="none";let w=y.createDiv({cls:"gantt-task-label-markdown"});if(o){let v=p.filePath||"";w.empty(),this.addChild(new Qt(this.app,w,v,!0)).update(p.content)}else w.textContent=p.content,w.style.lineHeight=`${f}px`,w.style.whiteSpace="nowrap",w.style.overflow="hidden",w.style.textOverflow="ellipsis"}else{let y=m.createSvg("text",{attr:{x:e.startX+e.width+pp,y:e.y,class:"gantt-task-label-external","dominant-baseline":"middle","text-anchor":"start"}});y.textContent=p.content,y.style.pointerEvents="none"}}}}};var B_=A(require("obsidian"));Q();var rS=class extends B_.Component{constructor(e,t){super();this.containerEl=e,this.scrollToDateCallback=t}onload(){let e=this.containerEl.createEl("button",{text:c("Today"),cls:"gantt-filter-today-button"});this.registerDomEvent(e,"click",()=>{this.scrollToDateCallback(new Date)})}};Yd();var wd=24,W_=40,BK=50,WK=10,_K=200,VK=4,Rn=class extends mp.Component{constructor(e,t,a,r="gantt"){super();this.plugin=e;this.params=a;this.viewId=r;this.svgEl=null;this.tasks=[];this.allTasks=[];this.preparedTasks=[];this.timescale="Day";this.dayWidth=BK;this.startDate=null;this.endDate=null;this.totalWidth=0;this.totalHeight=0;this.zoomLevel=1;this.visibleStartDate=null;this.visibleEndDate=null;this.isScrolling=!1;this.isZooming=!1;this.gridGroupEl=null;this.taskGroupEl=null;this.filterComponent=null;this.timelineHeaderComponent=null;this.gridBackgroundComponent=null;this.taskRendererComponent=null;this.dateHelper=new up;this.config={showDependencies:!1,taskColorBy:"status",useVirtualization:!1,debounceRenderMs:50,showTaskLabels:!0,useMarkdownRenderer:!0};this.handleScroll=e=>{if(this.isZooming||!this.startDate)return;let r=e.target.scrollLeft/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,r),this.debouncedHeaderUpdate(),this.debouncedRender()};this.handleWheel=e=>{if(!e.ctrlKey||!this.startDate||!this.endDate)return;e.preventDefault(),this.isZooming=!0;let t=e.deltaY>0?.8:1.25,a=Math.max(WK,Math.min(_K,this.dayWidth*t));if(a===this.dayWidth){this.isZooming=!1;return}let r=this.scrollContainerEl.getBoundingClientRect(),i=e.clientX-r.left,n=this.scrollContainerEl.scrollLeft,o=this.dateHelper.xToDate(n+i,this.startDate,this.dayWidth);this.dayWidth=a;let l=0;o&&(l=this.dateHelper.dateToX(o,this.startDate,this.dayWidth)-i),this.prepareTasksForRender();let d=this.scrollContainerEl.clientWidth;l=Math.max(0,Math.min(l,this.totalWidth-d)),this.debouncedRender(),requestAnimationFrame(()=>{if(!this.scrollContainerEl)return;this.scrollContainerEl.scrollLeft=l;let u=l/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,u),this.updateHeaderComponent(),this.isZooming=!1})};this.app=e.app,this.containerEl=t.createDiv({cls:"gantt-chart-container"}),this.filterContainerEl=this.containerEl.createDiv("gantt-filter-area"),this.headerContainerEl=this.containerEl.createDiv("gantt-header-container"),this.scrollContainerEl=this.containerEl.createDiv("gantt-scroll-container"),this.contentWrapperEl=this.scrollContainerEl.createDiv("gantt-content-wrapper"),this.leftIndicatorEl=this.containerEl.createDiv("gantt-indicator-container gantt-indicator-container-left"),this.rightIndicatorEl=this.containerEl.createDiv("gantt-indicator-container gantt-indicator-container-right"),this.debouncedRender=(0,mp.debounce)(this.renderInternal,this.config.debounceRenderMs),this.debouncedHeaderUpdate=(0,mp.debounce)(this.updateHeaderComponent,16)}onload(){this.createBaseSVG(),this.filterComponent=this.addChild(new dp({container:this.filterContainerEl,options:cp(this.tasks),onChange:e=>{this.applyFiltersAndRender(e)},components:[new rS(this.filterContainerEl,e=>this.scrollToDate(e))]},this.plugin)),this.headerContainerEl&&(this.timelineHeaderComponent=this.addChild(new eS(this.app,this.headerContainerEl))),this.gridGroupEl&&(this.gridBackgroundComponent=this.addChild(new tS(this.app,this.gridGroupEl))),this.taskGroupEl&&(this.taskRendererComponent=this.addChild(new aS(this.app,this.taskGroupEl))),this.registerDomEvent(this.scrollContainerEl,"scroll",this.handleScroll),this.registerDomEvent(this.containerEl,"wheel",this.handleWheel,{passive:!1})}onunload(){this.debouncedRender.cancel(),this.debouncedHeaderUpdate.cancel(),this.svgEl&&this.svgEl.detach(),this.filterContainerEl.detach(),this.headerContainerEl.detach(),this.scrollContainerEl.detach(),this.leftIndicatorEl.detach(),this.rightIndicatorEl.detach(),this.containerEl.removeClass("gantt-chart-container"),this.tasks=[],this.allTasks=[],this.containerEl.removeClass("gantt-chart-container"),this.tasks=[],this.preparedTasks=[]}setTasks(e){var a;if(this.preparedTasks=[],this.tasks=this.sortTasks(e),this.allTasks=[...this.tasks],this.prepareTasksForRender(),this.filterComponent){let r=this.preparedTasks.map(i=>i.task);this.filterComponent.updateFilterOptions(r)}let t=((a=this.filterComponent)==null?void 0:a.getActiveFilters())||[];this.applyFiltersAndRender(t),requestAnimationFrame(()=>{this.scrollContainerEl&&this.scrollToDate(new Date)})}setTimescale(e){this.timescale=e,this.calculateTimescaleParams(),this.prepareTasksForRender(),this.debouncedRender()}createBaseSVG(){this.svgEl&&this.svgEl.remove(),this.svgEl=this.contentWrapperEl.createSvg("svg",{cls:"gantt-svg"}),this.svgEl.setAttribute("width","100%"),this.svgEl.setAttribute("height","100%"),this.svgEl.style.display="block",this.svgEl.createSvg("defs"),this.gridGroupEl=this.svgEl.createSvg("g",{cls:"gantt-grid"}),this.taskGroupEl=this.svgEl.createSvg("g",{cls:"gantt-tasks"})}calculateDateRange(e=!1){if(!e&&this.startDate&&this.endDate)return{startDate:this.startDate,endDate:this.endDate};if(this.tasks.length===0){let i=new Date;return this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(i,-7)),this.endDate=this.dateHelper.addDays(i,30),this.visibleStartDate||(this.visibleStartDate=new Date(this.startDate)),this.visibleEndDate=this.calculateVisibleEndDate(),{startDate:this.startDate,endDate:this.endDate}}let t=1/0,a=-1/0;this.tasks.forEach(i=>{let n=i.metadata.startDate||i.metadata.scheduledDate||i.metadata.createdDate,o=i.metadata.dueDate||i.metadata.completedDate;if(n){let l=new Date(n).getTime();isNaN(l)||(t=Math.min(t,l))}else if(i.metadata.createdDate){let l=new Date(i.metadata.createdDate).getTime();isNaN(l)||(t=Math.min(t,l))}if(o){let l=new Date(o).getTime();if(!isNaN(l)){let d=!i.metadata.startDate&&i.metadata.dueDate;a=Math.max(a,d?l:this.dateHelper.addDays(new Date(l),1).getTime())}}if(n&&!o){let l=new Date(n).getTime();isNaN(l)||(a=Math.max(a,this.dateHelper.addDays(new Date(l),1).getTime()))}});let r=3650;if(t===1/0||a===-1/0){let i=new Date;this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(i,-r)),this.endDate=this.dateHelper.addDays(i,r)}else this.startDate=this.dateHelper.startOfDay(this.dateHelper.addDays(new Date(t),-r)),this.endDate=this.dateHelper.startOfDay(this.dateHelper.addDays(new Date(a),r));return this.endDate<=this.startDate&&(this.endDate=this.dateHelper.addDays(this.startDate,r*2)),(e||!this.visibleStartDate)&&(this.visibleStartDate=new Date(this.startDate)),this.visibleEndDate=this.calculateVisibleEndDate(),{startDate:this.startDate,endDate:this.endDate}}calculateVisibleEndDate(){if(!this.visibleStartDate||!this.scrollContainerEl)return this.endDate||new Date;let e=this.scrollContainerEl.clientWidth,t=Math.max(1,this.dayWidth),a=Math.ceil(e/t);return this.dateHelper.addDays(this.visibleStartDate,a)}calculateTimescaleParams(){!this.startDate||!this.endDate||(this.dayWidth<15?this.timescale="Year":this.dayWidth<35?this.timescale="Month":this.dayWidth<70?this.timescale="Week":this.timescale="Day")}prepareTasksForRender(){if(!this.startDate||!this.endDate){console.error("Cannot prepare tasks: date range not set.");return}this.calculateTimescaleParams();let e=this.tasks.map((r,i)=>{let n=i*wd+wd/2,o,l,d=!1,u=r.metadata.startDate||r.metadata.scheduledDate,p=r.metadata.dueDate;if(u){let f=new Date(u);isNaN(f.getTime())||(o=this.dateHelper.dateToX(f,this.startDate,this.dayWidth))}if(p){let f=new Date(p);isNaN(f.getTime())||(l=this.dateHelper.dateToX(this.dateHelper.addDays(f,1),this.startDate,this.dayWidth))}else r.metadata.completedDate&&u;if(p&&!u||u&&p&&this.dateHelper.daysBetween(new Date(u),new Date(p))===0){let f=p?new Date(p):u?new Date(u):null;f?(o=this.dateHelper.dateToX(f,this.startDate,this.dayWidth),l=o,d=!0):(o=void 0,l=void 0)}else!u&&!p?(o=void 0,l=void 0):u&&!p&&o!==void 0&&(l=this.dateHelper.dateToX(this.dateHelper.addDays(new Date(u),1),this.startDate,this.dayWidth),d=!1);let m=o!==void 0&&l!==void 0&&!d?Math.max(1,l-o):void 0;return{task:r,y:n,startX:o,endX:l,width:m,isMilestone:d,level:0}});this.preparedTasks=e.filter(r=>r.startX!==void 0),this.preparedTasks;let t=5;this.totalHeight=Math.max(this.preparedTasks.length*wd,t*wd);let a=this.dateHelper.daysBetween(this.startDate,this.endDate);this.totalWidth=a*this.dayWidth}sortTasks(e){return e.sort((t,a)=>{var u,p;let r=t.metadata.startDate||t.metadata.scheduledDate,i=a.metadata.startDate||a.metadata.scheduledDate,n=t.metadata.dueDate,o=a.metadata.dueDate;if(r&&i){let m=new Date(r).getTime(),f=new Date(i).getTime();if(m!==f)return m-f}else{if(r)return-1;if(i)return 1}if(n&&o){let m=new Date(n).getTime(),f=new Date(o).getTime();if(m!==f)return m-f}else{if(n)return-1;if(o)return 1}let l=((u=t.content)==null?void 0:u.trim())||null,d=((p=a.content)==null?void 0:p.trim())||null;return!l&&!d?0:l?d?l.localeCompare(d):-1:1})}renderInternal(){var u;if(!this.svgEl||!this.startDate||!this.endDate||!this.scrollContainerEl||!this.gridBackgroundComponent||!this.taskRendererComponent||!this.timelineHeaderComponent||!this.leftIndicatorEl||!this.rightIndicatorEl){console.warn("Cannot render: Core elements, child components, or indicator containers not initialized.");return}if(!this.containerEl.isShown()){console.warn("Cannot render: Container not visible.");return}this.prepareTasksForRender(),this.svgEl.setAttribute("width",`${this.totalWidth}`),this.svgEl.setAttribute("height",`${this.totalHeight}`),this.contentWrapperEl.style.width=`${this.totalWidth}px`,this.contentWrapperEl.style.height=`${this.totalHeight}px`;let e=this.filterContainerEl.offsetHeight;this.scrollContainerEl.style.height=`calc(100% - ${W_}px - ${e}px)`,this.updateHeaderComponent();let t=this.scrollContainerEl.scrollLeft,a=this.scrollContainerEl.scrollTop,r=this.scrollContainerEl.clientWidth,i=t,n=t+r;this.leftIndicatorEl.empty(),this.rightIndicatorEl.empty();let o=[],l=300,d=VK/2;for(let p of this.preparedTasks){let m=p.startX,f=p.isMilestone?p.startX:p.startX+((u=p.width)!=null?u:0);f>i-l&&m<n+l&&o.push(p);let k=5,g=p.y-a-d;f<i-k?this.leftIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${g+45}px;`,title:p.task.content,"data-task-id":p.task.id}}):m>n+k&&this.rightIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${g+45}px;`,title:p.task.content,"data-task-id":p.task.id}})}this.registerDomEvent(this.leftIndicatorEl,"click",p=>{let f=p.target.getAttribute("data-task-id");if(f){let h=this.tasks.find(k=>k.id===f);h&&this.scrollToDate(new Date(h.metadata.dueDate||h.metadata.startDate||h.metadata.scheduledDate))}}),this.registerDomEvent(this.rightIndicatorEl,"click",p=>{let f=p.target.getAttribute("data-task-id");if(f){let h=this.tasks.find(k=>k.id===f);h&&this.scrollToDate(new Date(h.metadata.startDate||h.metadata.dueDate||h.metadata.scheduledDate))}}),this.gridBackgroundComponent.updateParams({startDate:this.startDate,endDate:this.endDate,visibleStartDate:this.visibleStartDate,visibleEndDate:this.visibleEndDate,totalWidth:this.totalWidth,totalHeight:this.totalHeight,visibleTasks:o,timescale:this.timescale,dayWidth:this.dayWidth,rowHeight:wd,dateHelper:this.dateHelper,shouldDrawMajorTick:this.shouldDrawMajorTick.bind(this),shouldDrawMinorTick:this.shouldDrawMinorTick.bind(this)}),this.taskRendererComponent.updateParams({app:this.app,taskGroupEl:this.taskGroupEl,preparedTasks:o,rowHeight:wd,showTaskLabels:this.config.showTaskLabels,useMarkdownRenderer:this.config.useMarkdownRenderer,handleTaskClick:this.handleTaskClick.bind(this),handleTaskContextMenu:this.handleTaskContextMenu.bind(this),parentComponent:this})}updateHeaderComponent(){!this.timelineHeaderComponent||!this.visibleStartDate||!this.startDate||!this.endDate||(this.visibleEndDate=this.calculateVisibleEndDate(),this.timelineHeaderComponent.updateParams({startDate:this.startDate,endDate:this.endDate,visibleStartDate:this.visibleStartDate,visibleEndDate:this.visibleEndDate,totalWidth:this.totalWidth,timescale:this.timescale,dayWidth:this.dayWidth,scrollLeft:this.scrollContainerEl.scrollLeft,headerHeight:W_,dateHelper:this.dateHelper,shouldDrawMajorTick:this.shouldDrawMajorTick.bind(this),shouldDrawMinorTick:this.shouldDrawMinorTick.bind(this),formatMajorTick:this.formatMajorTick.bind(this),formatMinorTick:this.formatMinorTick.bind(this),formatDayTick:this.formatDayTick.bind(this)}))}shouldDrawMajorTick(e){switch(this.timescale){case"Year":return e.getMonth()===0&&e.getDate()===1;case"Month":return e.getDate()===1;case"Week":return e.getDate()===1;case"Day":return e.getDay()===1;default:return!1}}shouldDrawMinorTick(e){switch(this.timescale){case"Year":return e.getDate()===1;case"Month":return e.getDay()===1;case"Week":return!0;case"Day":return!1;default:return!1}}formatMajorTick(e){let t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];switch(this.timescale){case"Year":return e.getFullYear().toString();case"Month":return`${t[e.getMonth()]} ${e.getFullYear()}`;case"Week":return e.getDate()===1?`${t[e.getMonth()]} ${e.getFullYear()}`:"";case"Day":return`W${this.dateHelper.getWeekNumber(e)}`;default:return""}}formatMinorTick(e){switch(this.timescale){case"Year":return this.formatMajorTick(e).substring(0,3);case"Month":return`W${this.dateHelper.getWeekNumber(e)}`;case"Week":return e.getDate().toString();case"Day":return"";default:return""}}formatDayTick(e){let t=["S","M","T","W","T","F","S"];return this.timescale==="Day"?t[e.getDay()]:""}handleTaskClick(e){var t,a;(a=(t=this.params).onTaskSelected)==null||a.call(t,e)}handleTaskContextMenu(e,t){var a,r;(r=(a=this.params).onTaskContextMenu)==null||r.call(a,e,t)}scrollToDate(e){if(!this.startDate||!this.scrollContainerEl)return;let t=this.dateHelper.dateToX(e,this.startDate,this.dayWidth),a=this.scrollContainerEl.clientWidth,r=t-a/2;r=Math.max(0,Math.min(r,this.totalWidth-a));let i=r/Math.max(1,this.dayWidth);this.visibleStartDate=this.dateHelper.addDays(this.startDate,i),this.visibleEndDate=this.calculateVisibleEndDate(),this.scrollContainerEl.scrollTo({left:r,behavior:"auto"}),this.updateHeaderComponent(),this.debouncedRender()}refresh(){if(this.calculateDateRange(!0),this.prepareTasksForRender(),this.filterComponent){let e=this.preparedTasks.map(t=>t.task);this.filterComponent.updateFilterOptions(e)}this.debouncedRender()}applyFiltersAndRender(e){if(e.length===0?this.tasks=[...this.allTasks]:this.tasks=this.allTasks.filter(t=>e.every(a=>{switch(a.category){case"status":return t.status===a.value;case"tag":return t.metadata.tags.some(i=>typeof i=="string"&&i===a.value);case"project":return t.metadata.project===a.value;case"context":return t.metadata.context===a.value;case"priority":let r=Hl[a.value];return t.metadata.priority===r;case"completed":return a.value==="Yes"&&t.completed||a.value==="No"&&!t.completed;case"filePath":return t.filePath===a.value;default:return console.warn(`Unknown filter category: ${a.category}`),!0}})),this.tasks.length,this.calculateDateRange(!0),this.prepareTasksForRender(),this.filterComponent){let t=this.preparedTasks.map(a=>a.task);this.filterComponent.updateFilterOptions(t)}this.debouncedRender()}};var __=A(require("obsidian"));var Rr=A(require("obsidian"));Q();var sS=class extends Rr.Component{constructor(e,t,a,r){super();this.parentEl=e;this.app=t;this.plugin=a;this.config=r;this.taskRenderer=null;this.allTasks=[];this.filteredTasks=[];this.selectedItems={items:[],tasks:[],isMultiSelect:!1};this.isTreeView=!1;this.onTaskContextMenu=()=>{};this.allTasksMap=new Map}onload(){this.containerEl=this.parentEl.createDiv({cls:`${this.config.classNamePrefix}-container`});let e=this.containerEl.createDiv({cls:`${this.config.classNamePrefix}-content`});this.createLeftColumn(e),this.createRightColumn(e),this.initializeViewMode(),this.initializeTaskRenderer()}createLeftColumn(e){this.leftColumnEl=e.createDiv({cls:`${this.config.classNamePrefix}-left-column`}),this.leftHeaderEl=this.leftColumnEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-header`});let t=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-title`,text:c(this.config.leftColumnTitle)}),a=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-multi-select-btn`});if((0,Rr.setIcon)(a,"list-plus"),a.setAttribute("aria-label",c("Toggle multi-select")),this.registerDomEvent(a,"click",()=>{this.toggleMultiSelect()}),Rr.Platform.isPhone){let r=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-close`});new Rr.ExtraButtonComponent(r).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.itemsListEl=this.leftColumnEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-list`})}createRightColumn(e){this.rightColumnEl=e.createDiv({cls:`${this.config.classNamePrefix}-right-column`}),this.rightHeaderEl=this.rightColumnEl.createDiv({cls:`${this.config.classNamePrefix}-task-header`}),Rr.Platform.isPhone&&this.rightHeaderEl.createEl("div",{cls:`${this.config.classNamePrefix}-sidebar-toggle`},i=>{new Rr.ExtraButtonComponent(i).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-title`}).setText(c(this.config.rightColumnDefaultTitle)),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-count`}).setText(`0 ${c("tasks")}`);let r=this.rightHeaderEl.createDiv({cls:"view-toggle-btn"});(0,Rr.setIcon)(r,"list"),r.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(r,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.rightColumnEl.createDiv({cls:`${this.config.classNamePrefix}-task-list`})}initializeTaskRenderer(){this.taskRenderer=new Os(this,this.taskListContainerEl,this.plugin,this.app,this.config.rendererContext),this.taskRenderer.onTaskSelected=e=>{this.onTaskSelected&&this.onTaskSelected(e)},this.taskRenderer.onTaskCompleted=e=>{this.onTaskCompleted&&this.onTaskCompleted(e)},this.taskRenderer.onTaskUpdate=async(e,t)=>{this.onTaskUpdate&&await this.onTaskUpdate(e,t)},this.taskRenderer.onTaskContextMenu=(e,t)=>{this.onTaskContextMenu&&this.onTaskContextMenu(e,t)}}setTasks(e){this.allTasks=e,this.buildItemsIndex(),this.renderItemsList(),this.selectedItems.items.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(c(this.config.emptyStateText)))}handleItemSelection(e,t){if(this.selectedItems.isMultiSelect||t){let a=this.selectedItems.items.indexOf(e);if(a===-1?this.selectedItems.items.push(e):this.selectedItems.items.splice(a,1),this.selectedItems.items.length===0&&!this.selectedItems.isMultiSelect){this.cleanupRenderers(),this.renderEmptyTaskList(c(this.config.emptyStateText));return}}else this.selectedItems.items=[e];this.updateSelectedTasks(),Rr.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}toggleMultiSelect(){this.selectedItems.isMultiSelect=!this.selectedItems.isMultiSelect,this.selectedItems.isMultiSelect?this.containerEl.classList.add("multi-select-mode"):(this.containerEl.classList.remove("multi-select-mode"),this.selectedItems.items.length===0&&(this.cleanupRenderers(),this.renderEmptyTaskList(c(this.config.emptyStateText))))}initializeViewMode(){var a;let e=this.config.classNamePrefix.replace("-","");this.isTreeView=_i(this.app,this.plugin,e);let t=(a=this.rightColumnEl)==null?void 0:a.querySelector(".view-toggle-btn");t&&(0,Rr.setIcon)(t,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.rightColumnEl.querySelector(".view-toggle-btn");e&&(0,Rr.setIcon)(e,this.isTreeView?"git-branch":"list");let t=this.config.classNamePrefix.replace("-","");Wi(this.app,t,this.isTreeView),this.renderTaskList()}updateTaskListHeader(e,t){let a=this.rightColumnEl.querySelector(`.${this.config.classNamePrefix}-task-title`);a&&(a.textContent=e);let r=this.rightColumnEl.querySelector(`.${this.config.classNamePrefix}-task-count`);r&&(r.textContent=t)}cleanupRenderers(){this.taskRenderer&&this.taskListContainerEl.empty()}renderTaskList(){let e=c(this.config.rightColumnDefaultTitle);this.selectedItems.items.length===1?e=String(this.selectedItems.items[0]):this.selectedItems.items.length>1&&(e=`${this.selectedItems.items.length} ${c(this.config.multiSelectText)}`);let t=`${this.filteredTasks.length} ${c("tasks")}`;this.updateTaskListHeader(e,t),this.filteredTasks,this.isTreeView,this.allTasksMap=new Map(this.allTasks.map(a=>[a.id,a])),this.taskRenderer&&this.taskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,c("No tasks in the selected items"))}renderEmptyTaskList(e){this.cleanupRenderers(),this.taskListContainerEl.empty(),this.taskListContainerEl.createDiv({cls:`${this.config.classNamePrefix}-empty-state`}).setText(e)}onunload(){this.containerEl.empty(),this.containerEl.remove()}toggleLeftColumnVisibility(e){e===void 0&&(e=!this.leftColumnEl.hasClass("is-visible")),e?(this.leftColumnEl.addClass("is-visible"),this.leftColumnEl.show()):(this.leftColumnEl.removeClass("is-visible"),setTimeout(()=>{this.leftColumnEl.hasClass("is-visible")||this.leftColumnEl.hide()},300))}};Q();xa();var Fn=class extends sS{constructor(e,t,a,r,i){let n={classNamePrefix:"task-property",leftColumnTitle:r.leftColumnTitle,rightColumnDefaultTitle:r.rightColumnDefaultTitle,multiSelectText:r.multiSelectText,emptyStateText:r.emptyStateText,rendererContext:"task-property-view",itemIcon:UK(r.taskPropertyKey)};super(e,t,a,n);this.viewConfig=r;this.viewId=i;this.propertyValueMap=new Map;this.sortedPropertyValues=[];this.propertyKey=r.taskPropertyKey}buildItemsIndex(){var e,t;this.propertyValueMap.clear();for(let a of this.allTasks){let r=this.getPropertyValues(a);if(!r||r.length===0){let i=c("None");this.propertyValueMap.has(i)||this.propertyValueMap.set(i,[]),(e=this.propertyValueMap.get(i))==null||e.push(a);continue}for(let i of r){let n=String(i);this.propertyValueMap.has(n)||this.propertyValueMap.set(n,[]),(t=this.propertyValueMap.get(n))==null||t.push(a)}}this.sortedPropertyValues=Array.from(this.propertyValueMap.keys()).sort((a,r)=>this.getSortValue(a).localeCompare(this.getSortValue(r)))}getSortValue(e){return this.propertyKey==="priority"?e===c("None")?"999":e.padStart(3,"0"):["dueDate","startDate","scheduledDate"].includes(this.propertyKey)&&e===c("None")?"9999-12-31":e}getPropertyValues(e){switch(this.propertyKey){case"tags":return e.metadata.tags||[];case"project":let t=bt(e);return t?[t]:[];case"priority":return e.metadata.priority!==void 0?[e.metadata.priority.toString()]:[];case"context":return e.metadata.context?[e.metadata.context]:[];case"status":return[e.status||""];case"dueDate":return e.metadata.dueDate?[this.formatDate(e.metadata.dueDate)]:[];case"startDate":return e.metadata.startDate?[this.formatDate(e.metadata.startDate)]:[];case"scheduledDate":return e.metadata.scheduledDate?[this.formatDate(e.metadata.scheduledDate)]:[];case"cancelledDate":return e.metadata.cancelledDate?[this.formatDate(e.metadata.cancelledDate)]:[];case"filePath":let a=e.filePath.split("/");return[a[a.length-1].replace(/\.[^/.]+$/,"")];default:return[]}}formatDate(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}renderItemsList(){if(this.itemsListEl.empty(),this.sortedPropertyValues.length===0){this.itemsListEl.createDiv({cls:"task-property-empty-state"}).setText(c("No items found"));return}for(let e of this.sortedPropertyValues){let t=this.propertyValueMap.get(e)||[],a=this.itemsListEl.createDiv({cls:"task-property-list-item"});this.selectedItems.items.includes(e)&&a.addClass("selected");let r=a.createSpan({cls:"task-property-icon"});(0,__.setIcon)(r,this.config.itemIcon);let i=a.createSpan({cls:"task-property-name",text:this.formatDisplayValue(e)}),n=a.createSpan({cls:"task-property-count",text:String(t.length)});this.registerDomEvent(a,"click",o=>{let l=o.ctrlKey||o.metaKey;this.handleItemSelection(e,l),this.renderItemsList()})}}formatDisplayValue(e){if(this.propertyKey==="priority")switch(e){case"1":return c("High Priority");case"2":return c("Medium Priority");case"3":return c("Low Priority");default:return e}if(["dueDate","startDate","scheduledDate","cancelledDate"].includes(this.propertyKey)){let t=this.formatDate(Date.now());if(e===t)return c("Today")}return e}updateSelectedTasks(){if(this.filteredTasks=[],this.selectedItems.items.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(c(this.config.emptyStateText));return}for(let e of this.selectedItems.items){let t=this.propertyValueMap.get(e)||[];for(let a of t)this.filteredTasks.some(r=>r.id===a.id)||this.filteredTasks.push(a)}this.selectedItems.tasks=this.filteredTasks,this.renderTaskList()}updateTask(e){var n,o;let t=[];for(let[l,d]of this.propertyValueMap)d.some(u=>u.id===e.id)&&t.push(l);for(let l of t){let d=this.propertyValueMap.get(l)||[];this.propertyValueMap.set(l,d.filter(u=>u.id!==e.id)),((n=this.propertyValueMap.get(l))==null?void 0:n.length)===0&&(this.propertyValueMap.delete(l),this.sortedPropertyValues=this.sortedPropertyValues.filter(u=>u!==l))}let a=this.getPropertyValues(e);for(let l of a){let d=String(l);this.propertyValueMap.has(d)||(this.propertyValueMap.set(d,[]),this.sortedPropertyValues.push(d),this.sortedPropertyValues.sort((u,p)=>this.getSortValue(u).localeCompare(this.getSortValue(p)))),(o=this.propertyValueMap.get(d))==null||o.push(e)}let r=this.filteredTasks.findIndex(l=>l.id===e.id);r>=0&&(this.filteredTasks[r]=e);let i=this.allTasks.findIndex(l=>l.id===e.id);i>=0&&(this.allTasks[i]=e),this.renderItemsList(),this.filteredTasks.length>0&&this.renderTaskList()}getViewId(){return this.viewId||""}};function UK(s){switch(s){case"tags":return"tag";case"project":return"folder";case"priority":return"alert-triangle";case"context":return"at-sign";case"status":return"check-square";case"dueDate":return"calendar";case"startDate":return"play";case"scheduledDate":return"calendar-clock";case"filePath":return"file";default:return"list"}}var Bk=A(require("obsidian"));var z_=A(require("obsidian"));var Y_=A(require("obsidian"));Q();var Yt=A(require("obsidian"));Q();hs();Cr();xa();var iS=class extends Yt.Component{constructor(e,t,a,r,i,n,o){super();this.tableEl=e;this.headerEl=t;this.bodyEl=a;this.columns=r;this.config=i;this.app=n;this.plugin=o;this.resizeObserver=null;this.isResizing=!1;this.resizeStartX=0;this.resizeColumn="";this.resizeStartWidth=0;this.rowPool=[];this.activeRows=new Map;this.eventCleanupMap=new Map;this.autoCompleteCache=null;this.activeSuggests=new Map;this.CACHE_DURATION=3e4}onload(){this.renderHeader(),this.setupResizeHandlers()}onunload(){this.eventCleanupMap.forEach(e=>{e.forEach(t=>t())}),this.eventCleanupMap.clear(),this.activeSuggests.forEach(e=>{e.close()}),this.activeSuggests.clear(),this.rowPool=[],this.activeRows.clear(),this.resizeObserver&&this.resizeObserver.disconnect()}getAutoCompleteData(){var t;let e=Date.now();if(!this.autoCompleteCache||e-this.autoCompleteCache.lastUpdate>this.CACHE_DURATION){let a=Object.keys(this.plugin.app.metadataCache.getTags()||{}).map(n=>n.substring(1)),{projects:r,contexts:i}=((t=this.plugin.taskManager)==null?void 0:t.getAvailableContextOrProjects())||{projects:[],contexts:[]};this.autoCompleteCache={tags:a,projects:r,contexts:i,lastUpdate:e}}return this.autoCompleteCache}setupAutoComplete(e,t){if(this.activeSuggests.has(e))return;let a=this.getAutoCompleteData(),r;switch(t){case"tags":r=new zs(this.app,e,this.plugin),r.availableChoices=a.tags;break;case"project":r=new Or(this.app,e,this.plugin),r.availableChoices=a.projects;break;case"context":r=new Nr(this.app,e,this.plugin),r.availableChoices=a.contexts;break}this.activeSuggests.set(e,r);let i=()=>{let o=this.activeSuggests.get(e);o&&(o.close(),this.activeSuggests.delete(e))},n=new MutationObserver(o=>{o.forEach(l=>{l.removedNodes.forEach(d=>{(d===e||d instanceof Element&&d.contains(e))&&(i(),n.disconnect())})})});n.observe(document.body,{childList:!0,subtree:!0})}renderHeader(){this.headerEl.empty();let e=this.headerEl.createEl("tr","task-table-header-row");this.columns.forEach(t=>{let a=e.createEl("th","task-table-header-cell");a.dataset.columnId=t.id,a.style.width=`${t.width}px`,a.style.minWidth=`${Math.min(t.width,50)}px`;let r=a.createDiv("task-table-header-content"),i=r.createSpan("task-table-header-title");if(i.textContent=t.title,t.sortable){a.addClass("sortable");let n=r.createSpan("task-table-sort-icon");(0,Yt.setIcon)(n,"chevrons-up-down")}if(t.resizable&&this.config.resizableColumns){let n=a.createDiv("task-table-resize-handle");this.registerDomEvent(n,"mousedown",o=>{this.startResize(o,t.id,t.width)})}t.align&&(a.style.textAlign=t.align)})}renderTable(e,t,a=0,r){if(this.clearEmptyState(),e.length===0){this.clearAllRows(),this.renderEmptyState();return}this.updateVirtualScrollSpacer(a);let i=new Set(e.map(p=>p.id)),n=Array.from(this.bodyEl.querySelectorAll("tr[data-row-id]")),o=[];if(this.activeRows.forEach((p,m)=>{i.has(m)||o.push(m)}),o.length>0){let p=document.createDocumentFragment();o.forEach(m=>{let f=this.activeRows.get(m);f&&f.parentNode&&(this.activeRows.delete(m),p.appendChild(f),this.returnRowToPool(f))})}let d=this.bodyEl.querySelector(".virtual-scroll-spacer-top")?1:0,u=[];if(e.forEach((p,m)=>{let f=this.activeRows.get(p.id),h=d+m;f?(this.updateRow(f,p,t.has(p.id)),Array.from(this.bodyEl.children).indexOf(f)!==h&&u.push({element:f,index:h})):(f=this.getRowFromPool(),this.activeRows.set(p.id,f),this.updateRow(f,p,t.has(p.id)),u.push({element:f,index:h}))}),u.length>0){u.sort((m,f)=>m.index-f.index);let p=Array.from(this.bodyEl.children);u.forEach(({element:m,index:f})=>{let h=p[f];h&&h!==m?this.bodyEl.insertBefore(m,h):h||this.bodyEl.appendChild(m)})}}shouldUpdateRow(e,t,a){if(e.dataset.rowId!==t.id||e.hasClass("selected")!==a||parseInt(e.dataset.level||"0")!==t.level||e.dataset.expanded==="true"!==t.expanded||e.dataset.hasChildren==="true"!==t.hasChildren||e.querySelectorAll("td").length!==t.cells.length)return!0;let u=e.querySelectorAll("td");for(let p=0;p<Math.min(t.cells.length,3);p++){let m=t.cells[p],f=u[p];if(!f)return!0;if(m.editable&&(m.columnId==="content"||m.columnId==="project"||m.columnId==="context")){let h=f.querySelector("input"),k=h?h.value:f.textContent||"",g=m.displayValue||"";if(k.trim()!==g.trim())return!0}else if(m.columnId==="tags"){let h=Array.isArray(m.value)?m.value:[],k=f.textContent||"",g=h.join(", ");if(k.trim()!==g.trim())return!0}}return!1}getRowFromPool(){let e=this.rowPool.pop();return e||(e=document.createElement("tr"),e.addClass("task-table-row")),e}returnRowToPool(e){this.cleanupRowEvents(e),e.empty(),e.className="task-table-row",["data-row-id","data-level","data-expanded","data-has-children"].forEach(a=>e.removeAttribute(a)),this.rowPool.length<50?this.rowPool.push(e):e.remove()}updateRow(e,t,a){this.cleanupRowEvents(e),e.empty();let r=e.dataset;r.rowId=t.id,r.level=t.level.toString(),r.expanded=t.expanded.toString(),r.hasChildren=t.hasChildren.toString();let i=["task-table-row",...t.level>0?[`task-table-row-level-${t.level}`,"task-table-subtask"]:[],...t.hasChildren?["task-table-parent"]:[],...a?["selected"]:[],...t.className?[t.className]:[]];e.className=i.join(" ");let n=t.level>0,o=n?"0.9":"",l=document.createDocumentFragment();t.cells.forEach((d,u)=>{let p=this.columns[u];if(!p)return;let m=document.createElement("td");m.className="task-table-cell",m.dataset.columnId=d.columnId,m.dataset.rowId=t.id,m.style.cssText=`width:${p.width}px;min-width:${Math.min(p.width,50)}px;${p.align?`text-align:${p.align};`:""}`,n&&(m.classList.add("task-table-subtask-cell"),o&&(m.style.opacity=o)),p.id==="rowNumber"?this.renderTreeStructure(m,t,d,p):this.renderCellContent(m,d,p,t),d.className&&m.classList.add(d.className),l.appendChild(m)}),e.appendChild(l)}updateVirtualScrollSpacer(e){if(this.clearVirtualSpacers(),e<=0)return;let t=document.createElement("tr");t.className="virtual-scroll-spacer-top";let a=document.createElement("td");a.colSpan=this.columns.length,a.style.cssText=`
height: ${e*40}px;
padding: 0;
margin: 0;
border: none;
background: transparent;
border-collapse: collapse;
line-height: 0;
`,t.appendChild(a),this.bodyEl.insertBefore(t,this.bodyEl.firstChild)}clearVirtualSpacers(){this.bodyEl.querySelectorAll(".virtual-scroll-spacer-top, .virtual-scroll-spacer-bottom").forEach(t=>t.remove())}clearAllRows(){Array.from(this.activeRows.values()).forEach(t=>{this.returnRowToPool(t)}),this.activeRows.clear(),this.bodyEl.empty()}cleanupRowEvents(e){let t=this.eventCleanupMap.get(e);t&&(t.forEach(r=>r()),this.eventCleanupMap.delete(e)),e.querySelectorAll("input, button, [data-cleanup]").forEach(r=>{let i=this.eventCleanupMap.get(r);i&&(i.forEach(n=>n()),this.eventCleanupMap.delete(r))})}registerDomEvent(e,t,a,r){e instanceof Window?super.registerDomEvent(e,t,a,r):e instanceof Document?super.registerDomEvent(e,t,a,r):(super.registerDomEvent(e,t,a,r),this.eventCleanupMap.has(e)||this.eventCleanupMap.set(e,[]),this.eventCleanupMap.get(e).push(()=>{e.removeEventListener(t,a,r)}))}renderTreeStructure(e,t,a,r){let i=e.createDiv("task-table-tree-container");if(t.level>0){if(t.hasChildren){let o=i.createSpan("task-table-expand-btn");o.addClass("clickable-icon"),(0,Yt.setIcon)(o,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(o,"click",l=>{l.stopPropagation(),this.toggleRowExpansion(t.id)}),o.title=t.expanded?c("Collapse"):c("Expand")}}else if(t.hasChildren){let o=i.createSpan("task-table-expand-btn");o.addClass("clickable-icon"),o.addClass("task-table-top-level-expand"),(0,Yt.setIcon)(o,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(o,"click",l=>{l.stopPropagation(),this.toggleRowExpansion(t.id)}),o.title=t.expanded?c("Collapse subtasks"):c("Expand subtasks")}let n=i.createDiv("task-table-content-wrapper");this.renderCellContent(n,a,r,t)}renderCellContent(e,t,a,r){switch(e.empty(),a.type){case"status":this.renderStatusCell(e,t);break;case"priority":this.renderPriorityCell(e,t);break;case"date":this.renderDateCell(e,t);break;case"tags":this.renderTagsCell(e,t);break;case"number":this.renderNumberCell(e,t);break;default:this.renderTextCell(e,t,r)}}renderStatusCell(e,t){let a=e.createDiv("task-table-status");a.addClass("clickable-status");let r=a.createSpan("task-table-status-icon");switch(t.value){case"x":case"X":(0,Yt.setIcon)(r,"check-circle"),a.addClass("completed");break;case"/":case">":(0,Yt.setIcon)(r,"clock"),a.addClass("in-progress");break;case"-":(0,Yt.setIcon)(r,"x-circle"),a.addClass("abandoned");break;case"?":(0,Yt.setIcon)(r,"help-circle"),a.addClass("planned");break;default:(0,Yt.setIcon)(r,"circle"),a.addClass("not-started")}let n=a.createSpan("task-table-status-text");n.textContent=t.displayValue,this.registerDomEvent(a,"click",o=>{o.stopPropagation(),this.openStatusMenu(e,t)}),a.title=c("Click to change status")}openStatusMenu(e,t){let a=e.dataset.rowId;if(!a)return;let r=new Yt.Menu,i=this.plugin.settings.taskStatusMarks,n=new Map;for(let l of Object.keys(i)){let d=i[l];Array.from(n.values()).includes(d)||n.set(l,d)}for(let[l,d]of n)r.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{let m=p.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});m.dataset.task=d,d!==" "&&(m.checked=!0)}),u.titleEl.createEl("span",{cls:"status-option",text:l}),u.onClick(()=>{if(this.onCellChange){let p=d.toLowerCase()==="x";this.onCellChange(a,t.columnId,d)}})});let o=e.getBoundingClientRect();r.showAtPosition({x:o.left,y:o.bottom+5})}renderPriorityCell(e,t){let a=e.createDiv("task-table-priority");a.addClass("clickable-priority");let r=t.value;if(r){let i=a.createSpan("task-table-priority-icon"),n=a.createSpan("task-table-priority-text");r===5?((0,Yt.setIcon)(i,"triangle"),i.addClass("highest"),n.textContent=c("Highest")):r===4?((0,Yt.setIcon)(i,"alert-triangle"),i.addClass("high"),n.textContent=c("High")):r===3?((0,Yt.setIcon)(i,"minus"),i.addClass("medium"),n.textContent=c("Medium")):r===2?((0,Yt.setIcon)(i,"chevron-down"),i.addClass("low"),n.textContent=c("Low")):r===1&&((0,Yt.setIcon)(i,"chevrons-down"),i.addClass("lowest"),n.textContent=c("Lowest"))}else{let i=a.createSpan("task-table-priority-empty");i.textContent="\xA0",i.addClass("empty-priority")}this.registerDomEvent(a,"click",i=>{i.stopPropagation(),this.openPriorityMenu(e,t)}),a.title=c("Click to set priority")}openPriorityMenu(e,t){let a=e.dataset.rowId;if(!a)return;let r=new Yt.Menu;r.addItem(n=>{n.setTitle(c("No priority")).setIcon("circle").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,null)})}),r.addItem(n=>{n.setTitle(c("Lowest")).setIcon("chevrons-down").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,1)})}),r.addItem(n=>{n.setTitle(c("Low")).setIcon("chevron-down").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,2)})}),r.addItem(n=>{n.setTitle(c("Medium")).setIcon("minus").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,3)})}),r.addItem(n=>{n.setTitle(c("High")).setIcon("alert-triangle").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,4)})}),r.addItem(n=>{n.setTitle(c("Highest")).setIcon("triangle").onClick(()=>{this.onCellChange&&this.onCellChange(a,t.columnId,5)})});let i=e.getBoundingClientRect();r.showAtPosition({x:i.left,y:i.bottom+5})}renderDateCell(e,t){let a=e.createDiv("task-table-date");if(a.addClass("clickable-date"),t.value){let r=new Date(t.value);r.setHours(0,0,0,0);let i=new Date;i.setHours(0,0,0,0);let n=Math.floor((r.getTime()-i.getTime())/(1e3*60*60*24)),o=a.createSpan("task-table-date-text");o.textContent=t.displayValue;let l=a.createSpan("task-table-date-relative");n===0?(l.textContent=c("Today"),l.addClass("today")):n===1?(l.textContent=c("Tomorrow"),l.addClass("tomorrow")):n===-1?(l.textContent=c("Yesterday"),l.addClass("yesterday")):n<0?(l.textContent=c("Overdue"),l.addClass("overdue")):n<=7&&(l.textContent=`${n}d`,l.addClass("upcoming"))}else{let r=a.createSpan("task-table-date-empty");r.textContent="\xA0",r.addClass("empty-date")}this.app&&this.plugin&&(this.registerDomEvent(a,"click",r=>{r.stopPropagation(),this.openDatePicker(e,t)}),a.title=c("Click to edit date"))}openDatePicker(e,t){if(!this.app||!this.plugin)return;let a=e.dataset.rowId,r=t.columnId;if(!a)return;let i;if(t.value){let l=new Date(t.value),d=l.getFullYear(),u=String(l.getMonth()+1).padStart(2,"0"),p=String(l.getDate()).padStart(2,"0");i=`${d}-${u}-${p}`}let n=new yo(this.app,this.plugin,i);n.onDateSelected=l=>{this.onDateChange&&this.onDateChange(a,r,l)};let o=e.getBoundingClientRect();n.showAtPosition({x:o.left,y:o.bottom+5})}renderTagsCell(e,t){let a=e.createDiv("task-table-tags"),r=t.value;if(t.editable){let i=a.createEl("input","task-table-tags-input");i.type="text";let n=(r==null?void 0:r.join(", "))||"";i.value=n,i.style.cssText="border:none;background:transparent;width:100%;padding:0;font:inherit;";let o=[...r||[]],l=!1,d=()=>{!l&&this.app&&(l=!0,this.setupAutoComplete(i,"tags"))};this.registerDomEvent(i,"blur",()=>{let u=i.value.trim(),p=u?u.split(",").map(m=>m.trim()).filter(m=>m.length>0):[];this.arraysEqual(o,p)||this.saveCellValue(e,t,p)}),this.registerDomEvent(i,"keydown",u=>{u.key==="Enter"&&(i.blur(),u.preventDefault()),u.stopPropagation()}),this.registerDomEvent(i,"focus",d),this.registerDomEvent(i,"input",d),this.registerDomEvent(i,"click",u=>{u.stopPropagation(),requestAnimationFrame(()=>i.focus())})}else r&&r.length>0?(a.textContent=r.join(", "),a.addClass("task-table-tags-display")):(a.textContent="\xA0",a.addClass("empty-tags"))}renderNumberCell(e,t){e.addClass("task-table-number"),e.textContent=t.displayValue}renderTextCell(e,t,a){var d,u,p,m;e.addClass("task-table-text");let r=t.columnId==="content",i=t.columnId==="project",n,o,l=!1;if(i&&((u=(d=a==null?void 0:a.task)==null?void 0:d.metadata)==null?void 0:u.tgProject)?(o=bt(a.task)||"",n=o,l=ur(a.task)):r?(n=Ka(t.value||t.displayValue),o=n):(n=t.displayValue,o=t.value||""),t.editable&&!l){let f=e.createEl("input","task-table-text-input");f.type="text",f.value=n,f.style.cssText="border:none;background:transparent;width:100%;padding:0;font:inherit;";let h=r?n:o,k=!1,g=()=>{!k&&this.app&&(k=!0,t.columnId==="project"?this.setupAutoComplete(f,"project"):t.columnId==="context"&&this.setupAutoComplete(f,"context"))};this.registerDomEvent(f,"blur",()=>{let y=f.value.trim();h!==y&&this.saveCellValue(e,t,y)}),this.registerDomEvent(f,"keydown",y=>{y.key==="Enter"&&(f.blur(),y.preventDefault()),y.stopPropagation()}),(t.columnId==="project"||t.columnId==="context")&&(this.registerDomEvent(f,"focus",g),this.registerDomEvent(f,"input",g)),this.registerDomEvent(f,"click",y=>{y.stopPropagation(),requestAnimationFrame(()=>f.focus())})}else e.textContent=n,t.columnId==="filePath"&&(this.registerDomEvent(e,"click",f=>{f.stopPropagation();let h=this.plugin.app.vault.getFileByPath(t.value);h&&this.plugin.app.workspace.getLeaf(!0).openFile(h)}),e.title=c("Click to open file"));if(i&&((m=(p=a==null?void 0:a.task)==null?void 0:p.metadata)==null?void 0:m.tgProject)&&(!a.task.metadata.project||!a.task.metadata.project.trim())){let f=a.task.metadata.tgProject,h=e.createDiv({cls:"project-source-indicator table-indicator"}),k="",g="";switch(f.type){case"path":k="\u{1F4C1}",g=c("Auto-assigned from path")+`: ${f.source}`;break;case"metadata":k="\u{1F4C4}",g=c("Auto-assigned from file metadata")+`: ${f.source}`;break;case"config":k="\u2699\uFE0F",g=c("Auto-assigned from config file")+`: ${f.source}`;break;default:k="\u{1F517}",g=c("Auto-assigned")+`: ${f.source}`}h.innerHTML=`<span class="indicator-icon">${k}</span>`,h.title=g,l?(h.addClass("readonly-indicator"),e.addClass("readonly-cell")):h.addClass("override-indicator")}n.length>50&&(e.title=n)}renderEmptyState(){let t=this.bodyEl.createEl("tr","task-table-empty-row").createEl("td","task-table-empty-cell");t.colSpan=this.columns.length,t.textContent=c("No tasks found")}updateSelection(e){this.bodyEl.querySelectorAll("tr[data-row-id]").forEach(a=>{let r=a.dataset.rowId;r&&a.toggleClass("selected",e.has(r))})}updateSortIndicators(e,t){this.headerEl.querySelectorAll(".task-table-sort-icon").forEach(i=>{i.empty(),(0,Yt.setIcon)(i,"chevrons-up-down"),i.removeClass("asc","desc")});let r=this.headerEl.querySelector(`th[data-column-id="${e}"]`);if(r){let i=r.querySelector(".task-table-sort-icon");i&&(i.empty(),(0,Yt.setIcon)(i,t==="asc"?"chevron-up":"chevron-down"),i.addClass(t))}}setupResizeHandlers(){this.registerDomEvent(document,"mousemove",this.handleMouseMove.bind(this)),this.registerDomEvent(document,"mouseup",this.handleMouseUp.bind(this))}handleMouseMove(e){if(!this.isResizing)return;let t=e.clientX-this.resizeStartX,a=Math.max(50,this.resizeStartWidth+t);this.updateColumnWidth(this.resizeColumn,a)}startResize(e,t,a){e.preventDefault(),e.stopPropagation(),this.isResizing=!0,this.resizeColumn=t,this.resizeStartX=e.clientX,this.resizeStartWidth=a,document.body.style.cursor="col-resize",this.tableEl.addClass("resizing")}handleMouseUp(){!this.isResizing||(this.isResizing=!1,this.resizeColumn="",document.body.style.cursor="",this.tableEl.removeClass("resizing"))}updateColumnWidth(e,t){let a=this.headerEl.querySelector(`th[data-column-id="${e}"]`);a&&(a.style.width=`${t}px`,a.style.minWidth=`${Math.min(t,50)}px`),this.bodyEl.querySelectorAll(`td[data-column-id="${e}"]`).forEach(n=>{let o=n;o.style.width=`${t}px`,o.style.minWidth=`${Math.min(t,50)}px`});let i=this.columns.find(n=>n.id===e);i&&(i.width=t)}toggleRowExpansion(e){if(this.onRowExpand)this.onRowExpand(e);else{let t=new CustomEvent("rowToggle",{detail:{rowId:e}});this.tableEl.dispatchEvent(t)}}updateColumns(e){this.columns=e,this.renderHeader()}forceClearCache(){this.activeRows.clear(),this.rowPool=[],this.eventCleanupMap.clear(),this.activeSuggests.forEach(e=>{e.close()}),this.activeSuggests.clear(),this.bodyEl.empty()}async getAllValues(e){var r;if(!this.plugin)return[];let t=((r=this.plugin.taskManager)==null?void 0:r.getAllTasks())||[],a=new Set;return t.forEach(i=>{var n;switch(e){case"tags":(n=i.metadata.tags)==null||n.forEach(o=>{if(o&&o.trim()){let l=o.startsWith("#")?o.substring(1):o;a.add(l)}});break;case"project":i.metadata.project&&i.metadata.project.trim()&&a.add(i.metadata.project);break;case"context":i.metadata.context&&i.metadata.context.trim()&&a.add(i.metadata.context);break}}),Array.from(a).sort()}arraysEqual(e,t){if(e.length!==t.length)return!1;let a=[...e].sort(),r=[...t].sort();return a.every((i,n)=>i===r[n])}saveCellValue(e,t,a){let r=e.dataset.rowId;r&&this.onCellChange&&this.onCellChange(r,t.columnId,a)}clearEmptyState(){let e=this.bodyEl.querySelector(".task-table-empty-row");e&&e.remove()}ensureTreeStateConsistency(e,t){let a=e.querySelector(".task-table-expand-btn");if(a&&t.hasChildren){let r=t.expanded?"chevron-down":"chevron-right";a.empty(),(0,Yt.setIcon)(a,r),a.title=t.expanded?t.level>0?c("Collapse"):c("Collapse subtasks"):t.level>0?c("Expand"):c("Expand subtasks")}}};var V_=A(require("obsidian"));Q();hs();var nS=class extends V_.Component{constructor(e,t,a,r){super();this.app=e;this.plugin=t;this.config=a;this.callbacks=r;this.currentEditCell=null;this.currentInput=null;this.currentRowId="";this.currentColumnId="";this.originalValue=null}onload(){this.setupGlobalEventListeners()}onunload(){this.cancelEdit()}startEdit(e,t,a){this.cancelEdit(),this.currentEditCell=a,this.currentRowId=e,this.currentColumnId=t,this.originalValue=this.extractCellValue(a,t);let r=this.createInputElement(t,this.originalValue);!r||(this.currentInput=r,a.empty(),a.appendChild(r),a.addClass("editing"),r.focus(),r instanceof HTMLInputElement&&r.select(),this.setupInputEventListeners(r))}saveEdit(){if(!this.currentInput||!this.currentEditCell)return;let e=this.getInputValue(this.currentInput,this.currentColumnId);if(!this.validateValue(e,this.currentColumnId)){this.showValidationError();return}this.callbacks.onCellEdit(this.currentRowId,this.currentColumnId,e),this.finishEdit(),this.callbacks.onEditComplete()}cancelEdit(){!this.currentEditCell||(this.restoreCellContent(),this.finishEdit(),this.callbacks.onEditCancel())}createInputElement(e,t){switch(e){case"status":return this.createStatusSelect(t);case"priority":return this.createPrioritySelect(t);case"dueDate":case"startDate":case"scheduledDate":return this.createDateInput(t);case"tags":return this.createTagsInput(t);case"content":return this.createTextInput(t,!0);case"project":return this.createProjectInput(t);case"context":return this.createContextInput(t);default:return this.createTextInput(t,!1)}}createStatusSelect(e){let t=document.createElement("select");return t.className="task-table-status-select",[{value:" ",label:c("Not Started")},{value:"/",label:c("In Progress")},{value:"x",label:c("Completed")},{value:"-",label:c("Abandoned")},{value:"?",label:c("Planned")}].forEach(r=>{let i=document.createElement("option");i.value=r.value,i.textContent=r.label,i.selected=r.value===e,t.appendChild(i)}),t}createPrioritySelect(e){let t=document.createElement("select");return t.className="task-table-priority-select",[{value:"",label:c("No Priority")},{value:"1",label:c("High Priority")},{value:"2",label:c("Medium Priority")},{value:"3",label:c("Low Priority")}].forEach(r=>{let i=document.createElement("option");i.value=r.value,i.textContent=r.label,i.selected=r.value===String(e||""),t.appendChild(i)}),t}createDateInput(e){let t=createEl("input",{type:"text",cls:"task-table-date-input",placeholder:c("Click to select date"),attr:{readOnly:!0}});if(e){let a=new Date(e);t.value=a.toLocaleDateString()}return this.registerDomEvent(t,"click",a=>{a.stopPropagation(),this.openDatePicker(t,e)}),t}openDatePicker(e,t){let a=t?new Date(t).toISOString().split("T")[0]:void 0,r=new yo(this.app,this.plugin,a);r.onDateSelected=n=>{if(n){let o=new Date(n);e.value=o.toLocaleDateString(),e.dataset.timestamp=o.getTime().toString()}else e.value="",delete e.dataset.timestamp;r.close()};let i=e.getBoundingClientRect();r.showAtPosition({x:i.left,y:i.bottom+5})}createTagsInput(e){let t=document.createElement("input");return t.type="text",t.className="task-table-tags-input",t.placeholder=c("Enter tags separated by commas"),e&&Array.isArray(e)&&(t.value=e.join(", ")),new zs(this.app,t,this.plugin),t}createTextInput(e,t=!1){let a=document.createElement("input");return a.type="text",a.className="task-table-text-input",a.value=e||"",t&&(a.className+=" multiline"),a}createProjectInput(e){let t=this.createTextInput(e,!1);return t.className+=" task-table-project-input",t.placeholder=c("Enter project name"),new Or(this.app,t,this.plugin),t}createContextInput(e){let t=this.createTextInput(e,!1);return t.className+=" task-table-context-input",t.placeholder=c("Enter context"),new Nr(this.app,t,this.plugin),t}getInputValue(e,t){switch(t){case"status":return e.value;case"priority":return e.value?parseInt(e.value):void 0;case"dueDate":case"startDate":case"scheduledDate":return e instanceof HTMLInputElement&&e.dataset.timestamp?parseInt(e.dataset.timestamp):e.value?new Date(e.value).getTime():void 0;case"tags":return e.value?e.value.split(",").map(a=>a.trim()).filter(a=>a):[];default:return e.value}}extractCellValue(e,t){let a=e.textContent||"";switch(t){case"status":return{[c("Not Started")]:" ",[c("Completed")]:"x",[c("In Progress")]:"/",[c("Abandoned")]:"-",[c("Planned")]:"?"}[a]||" ";case"priority":return{[c("High")]:1,[c("Medium")]:2,[c("Low")]:3}[a]||void 0;case"tags":let n=e.querySelectorAll(".task-table-tag-chip");return Array.from(n).map(o=>o.textContent||"");default:return a}}validateValue(e,t){switch(t){case"priority":return e===void 0||typeof e=="number"&&e>=1&&e<=3;case"dueDate":case"startDate":case"scheduledDate":return e===void 0||typeof e=="number"&&!isNaN(e);case"content":return typeof e=="string"&&e.trim().length>0;default:return!0}}showValidationError(){!this.currentInput||(this.currentInput.addClass("error"),this.currentInput.title=c("Invalid value"),setTimeout(()=>{this.currentInput&&(this.currentInput.removeClass("error"),this.currentInput.title="")},3e3))}setupInputEventListeners(e){this.registerDomEvent(e,"keydown",t=>{t.key==="Enter"?(t.preventDefault(),this.saveEdit()):t.key==="Escape"&&(t.preventDefault(),this.cancelEdit())}),this.registerDomEvent(e,"blur",()=>{setTimeout(()=>{this.currentInput===e&&this.saveEdit()},100)}),this.registerDomEvent(e,"click",t=>{t.stopPropagation()})}setupGlobalEventListeners(){this.registerDomEvent(document,"click",e=>{this.currentEditCell&&!this.currentEditCell.contains(e.target)&&this.saveEdit()})}restoreCellContent(){!this.currentEditCell||(this.currentEditCell.textContent=String(this.originalValue||""),this.currentEditCell.removeClass("editing"))}finishEdit(){this.currentEditCell&&this.currentEditCell.removeClass("editing"),this.currentEditCell=null,this.currentInput=null,this.currentRowId="",this.currentColumnId="",this.originalValue=null}};var U_=A(require("obsidian"));Q();var Nk=class extends U_.Component{constructor(e,t){super();this.expandedNodes=new Set;this.treeNodes=new Map;this.columns=[];this.currentSortField="";this.currentSortOrder="asc";this.columns=e,this.pluginSettings=t}onload(){}onunload(){this.cleanup()}updateColumns(e){this.columns=e}buildTreeRows(e,t,a){t!==void 0&&(this.currentSortField=t),a!==void 0&&(this.currentSortOrder=a);let r=this.buildTreeStructure(e),i=[];return this.flattenTreeNodes(r,i,0),i}buildTreeStructure(e){this.treeNodes.clear();let t=new Map,a=[];return e.forEach(r=>{t.set(r.id,r)}),e.forEach(r=>{let i={task:r,children:[],level:0,expanded:this.expandedNodes.has(r.id)};this.treeNodes.set(r.id,i)}),e.forEach(r=>{let i=this.treeNodes.get(r.id);if(!!i)if(r.metadata.parent&&this.treeNodes.has(r.metadata.parent)){let n=this.treeNodes.get(r.metadata.parent);n&&(n.children.push(i),i.parent=n)}else a.push(i)}),this.calculateLevels(a,0),this.sortTreeNodes(a),a}calculateLevels(e,t){e.forEach(a=>{a.level=t,a.children.length>0&&this.calculateLevels(a.children,t+1)})}sortTreeNodes(e){if(e.length===0)return;let t=e.map(i=>i.task),a;if(!this.currentSortField||!this.pluginSettings){let i=[{field:"priority",order:"desc"},{field:"createdDate",order:"desc"}];a=this.pluginSettings?Oa(t,i,this.pluginSettings):this.fallbackSort(t)}else{let i=[{field:this.currentSortField,order:this.currentSortOrder}];a=Oa(t,i,this.pluginSettings)}let r=new Map;e.forEach(i=>{r.set(i.task.id,i)}),e.length=0,a.forEach(i=>{let n=r.get(i.id);n&&e.push(n)}),e.forEach(i=>{i.children.length>0&&this.sortTreeNodes(i.children)})}fallbackSort(e){return[...e].sort((t,a)=>{var l,d,u,p,m,f;let r=((l=a.metadata.priority)!=null?l:0)-((d=t.metadata.priority)!=null?d:0);if(r!==0)return r;let i=((u=a.metadata.createdDate)!=null?u:0)-((p=t.metadata.createdDate)!=null?p:0);if(i!==0)return i;let n=((m=t.content)==null?void 0:m.trim())||"",o=((f=a.content)==null?void 0:f.trim())||"";return n.localeCompare(o)})}flattenTreeNodes(e,t,a){e.forEach(r=>{let i={id:r.task.id,task:r.task,level:r.level,expanded:r.expanded,hasChildren:r.children.length>0,cells:this.createCellsForNode(r,t.length+1)};t.push(i),r.expanded&&r.children.length>0&&this.flattenTreeNodes(r.children,t,a+1)})}createCellsForNode(e,t){let a=e.task;return this.columns.map(r=>{var o,l,d;let i,n;switch(r.id){case"rowNumber":i=t,n=t.toString();break;case"status":i=a.status,n=this.formatStatus(a.status);break;case"content":i=a.content,n=a.content;break;case"priority":let u=a.metadata||{};i=u.priority,n=this.formatPriority(u.priority);break;case"dueDate":let p=a.metadata||{};i=p.dueDate,n=this.formatDate(p.dueDate);break;case"startDate":let m=a.metadata||{};i=m.startDate,n=this.formatDate(m.startDate);break;case"scheduledDate":let f=a.metadata||{};i=f.scheduledDate,n=this.formatDate(f.scheduledDate);break;case"createdDate":i=a.metadata.createdDate,n=this.formatDate(a.metadata.createdDate);break;case"completedDate":i=a.metadata.completedDate,n=this.formatDate(a.metadata.completedDate);break;case"tags":i=a.metadata.tags,n=((o=a.metadata.tags)==null?void 0:o.join(", "))||"";break;case"project":i=a.metadata.project,n=a.metadata.project||"";break;case"context":i=a.metadata.context,n=a.metadata.context||"";break;case"recurrence":i=a.metadata.recurrence,n=a.metadata.recurrence||"";break;case"estimatedTime":i=a.metadata.estimatedTime,n=((l=a.metadata.estimatedTime)==null?void 0:l.toString())||"";break;case"actualTime":i=a.metadata.actualTime,n=((d=a.metadata.actualTime)==null?void 0:d.toString())||"";break;case"filePath":i=a.filePath,n=this.formatFilePath(a.filePath);break;default:i="",n=""}return{columnId:r.id,value:i,displayValue:n,editable:r.id!=="rowNumber"&&r.id!=="filePath"}})}toggleNodeExpansion(e){let t=this.treeNodes.get(e);return!t||t.children.length===0?!1:(t.expanded=!t.expanded,t.expanded?this.expandedNodes.add(e):this.expandedNodes.delete(e),!0)}expandAll(){this.treeNodes.forEach((e,t)=>{e.children.length>0&&(e.expanded=!0,this.expandedNodes.add(t))})}collapseAll(){this.treeNodes.forEach((e,t)=>{e.expanded=!1,this.expandedNodes.delete(t)})}isNodeExpanded(e){return this.expandedNodes.has(e)}getDescendantIds(e){let t=this.treeNodes.get(e);if(!t)return[];let a=[];return this.collectDescendantIds(t,a),a}collectDescendantIds(e,t){e.children.forEach(a=>{t.push(a.task.id),this.collectDescendantIds(a,t)})}getParentId(e){var a;let t=this.treeNodes.get(e);return((a=t==null?void 0:t.parent)==null?void 0:a.task.id)||null}getSiblingIds(e){let t=this.treeNodes.get(e);return t?(t.parent?t.parent.children:[]).filter(r=>r.task.id!==e).map(r=>r.task.id):[]}canMoveTask(e,t){return!(e===t||t&&this.getDescendantIds(e).includes(t))}moveTask(e,t){if(!this.canMoveTask(e,t))return!1;let a=this.treeNodes.get(e);if(!a)return!1;if(a.parent){let r=a.parent.children.indexOf(a);r>-1&&a.parent.children.splice(r,1)}if(t){let r=this.treeNodes.get(t);r&&(r.children.push(a),a.parent=r)}else a.parent=void 0;return a.task.metadata.parent=t||void 0,!0}formatStatus(e){return{" ":c("Not Started"),x:c("Completed"),X:c("Completed"),"/":c("In Progress"),">":c("In Progress"),"-":c("Abandoned"),"?":c("Planned")}[e]||e}formatPriority(e){return e?{5:c("Highest"),4:c("High"),3:c("Medium"),2:c("Low"),1:c("Lowest")}[e]||e.toString():""}formatDate(e){return e?new Date(e).toLocaleDateString():""}formatFilePath(e){let t=e.split("/");return t[t.length-1].replace(/\.md$/,"")}cleanup(){this.expandedNodes.clear(),this.treeNodes.clear()}};var $_=A(require("obsidian")),oS=class extends $_.Component{constructor(e,t,a){super();this.containerEl=e;this.pageSize=t;this.callbacks=a;this.rowHeight=40;this.bufferSize=10;this.isLoading=!1;this.totalRows=0;this.loadedRows=0;this.lastScrollTop=0;this.scrollDirection="down";this.scrollRAF=null;this.pendingScrollUpdate=!1;this.lastLoadTriggerTime=0;this.loadCooldown=500;this.isAtBottom=!1;this.isAtTop=!0;this.heightStabilizer=null;this.stableHeight=0;this.heightUpdateThrottle=0;this.scrollContainer=e,this.viewport={startIndex:0,endIndex:0,visibleRows:[],totalHeight:0,scrollTop:0}}onload(){this.setupScrollContainer(),this.setupEventListeners(),this.calculateViewport(),this.initializeHeightStabilizer()}onunload(){this.cleanup()}setupScrollContainer(){let e=this.scrollContainer;e.style.overflowY!=="auto"&&e.style.overflowY!=="scroll"&&(e.style.overflowY="auto"),e.style.position="relative"}setupEventListeners(){this.registerDomEvent(this.scrollContainer,"scroll",this.onScroll.bind(this)),this.registerDomEvent(window,"resize",this.handleResize.bind(this))}initializeHeightStabilizer(){this.heightStabilizer=document.createElement("div"),this.heightStabilizer.style.cssText=`
position: absolute;
top: 0;
left: 0;
width: 1px;
height: ${this.totalRows*this.rowHeight}px;
pointer-events: none;
visibility: hidden;
z-index: -1;
`,this.scrollContainer.appendChild(this.heightStabilizer),this.stableHeight=this.totalRows*this.rowHeight}updateContent(e){this.totalRows=e,this.isAtBottom=!1,this.isAtTop=!0;let t=this.totalRows*this.rowHeight;Math.abs(t-this.stableHeight)>this.rowHeight&&this.updateStableHeight(t),this.calculateViewport(),this.updateVirtualHeight()}updateStableHeight(e){let t=performance.now();t-this.heightUpdateThrottle<100||(this.heightUpdateThrottle=t,this.stableHeight=e,this.heightStabilizer&&(this.heightStabilizer.style.height=`${e}px`))}onScroll(){this.pendingScrollUpdate||(this.pendingScrollUpdate=!0,this.scrollRAF&&cancelAnimationFrame(this.scrollRAF),this.scrollRAF=requestAnimationFrame(()=>{this.handleScroll(),this.pendingScrollUpdate=!1,this.scrollRAF=null}))}handleScroll(){let e=this.scrollContainer.scrollTop,t=this.scrollContainer.scrollHeight,a=this.scrollContainer.clientHeight,r=Math.abs(e-this.lastScrollTop);this.scrollDirection=e>this.lastScrollTop?"down":"up",this.lastScrollTop=e,this.viewport.scrollTop=e,(this.calculateViewport()||r>0)&&this.callbacks.onScroll(e),this.isAtTop=e<=1,this.isAtBottom=e+a>=t-10;let n=performance.now(),o=(e+a)/t;!this.isLoading&&!this.isAtBottom&&this.scrollDirection==="down"&&this.loadedRows<this.totalRows&&o>.85&&n-this.lastLoadTriggerTime>this.loadCooldown&&(this.lastLoadTriggerTime=n,this.loadMoreData())}calculateViewport(){let e=this.viewport.scrollTop,t=this.scrollContainer.clientHeight,a;e<=this.rowHeight?a=0:a=Math.max(0,Math.floor(e/this.rowHeight)-this.bufferSize);let r=Math.ceil(t/this.rowHeight),i=Math.min(this.totalRows-1,a+r+this.bufferSize*2),n=1,o=Math.abs(this.viewport.startIndex-a),l=Math.abs(this.viewport.endIndex-i),d=o>=n||l>=n;return d&&(this.viewport.startIndex=a,this.viewport.endIndex=i,this.viewport.totalHeight=this.stableHeight),d}updateVirtualHeight(){this.viewport.totalHeight=this.stableHeight}getExpectedTotalHeight(){return this.totalRows*this.rowHeight}needsHeightAdjustment(){let e=this.getExpectedTotalHeight(),t=this.scrollContainer.scrollHeight;return Math.abs(t-e)>this.rowHeight}loadMoreData(){if(!(this.isLoading||this.isAtBottom)){if(this.loadedRows>=this.totalRows){this.isLoading=!1;return}this.isLoading=!0,queueMicrotask(()=>{this.callbacks.onLoadMore&&this.callbacks.onLoadMore(),this.loadNextBatch()})}}loadNextBatch(){let e=Math.min(this.pageSize,this.totalRows-this.loadedRows);if(e<=0){this.isLoading=!1,this.isAtBottom=!0;return}setTimeout(()=>{this.loadedRows+=e,this.isLoading=!1,this.loadedRows>=this.totalRows&&(this.isAtBottom=!0),this.calculateViewport()},100)}getViewport(){return{...this.viewport}}scrollToRow(e,t="smooth"){let a=e*this.rowHeight;this.scrollContainer.scrollTo({top:a,behavior:t})}scrollToTop(e="smooth"){this.scrollToRow(0,e)}scrollToBottom(e="smooth"){this.scrollToRow(this.totalRows-1,e)}setRowHeight(e){this.rowHeight=e,this.calculateViewport(),this.updateVirtualHeight()}setBufferSize(e){this.bufferSize=e,this.calculateViewport()}isRowVisible(e){return e>=this.viewport.startIndex&&e<=this.viewport.endIndex}getVisibleRowIndices(){let e=[];for(let t=this.viewport.startIndex;t<=this.viewport.endIndex;t++)e.push(t);return e}handleResize(){this.calculateViewport()}reset(){this.totalRows=0,this.loadedRows=0,this.isLoading=!1,this.lastScrollTop=0,this.isAtBottom=!1,this.isAtTop=!0,this.lastLoadTriggerTime=0,this.stableHeight=0,this.viewport={startIndex:0,endIndex:0,visibleRows:[],totalHeight:0,scrollTop:0},this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.heightStabilizer&&(this.heightStabilizer.style.height="0px"),this.scrollToTop("auto"),this.calculateViewport()}getScrollStats(){let e=this.viewport.scrollTop,t=this.scrollContainer.scrollHeight,a=this.scrollContainer.clientHeight,r=t>0?(e+a)/t:0;return{scrollTop:e,scrollHeight:t,clientHeight:a,scrollPercentage:r,direction:this.scrollDirection,visibleRowCount:this.viewport.endIndex-this.viewport.startIndex+1,totalRows:this.totalRows,loadedRows:this.loadedRows,isLoading:this.isLoading}}setEnabled(e){e?this.registerDomEvent(this.scrollContainer,"scroll",this.onScroll.bind(this)):this.scrollContainer.removeEventListener("scroll",this.onScroll.bind(this))}cleanup(){this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.heightStabilizer&&this.heightStabilizer.parentNode&&(this.heightStabilizer.parentNode.removeChild(this.heightStabilizer),this.heightStabilizer=null),this.scrollContainer.removeEventListener("scroll",this.onScroll.bind(this)),window.removeEventListener("resize",this.handleResize.bind(this))}};var Sl=A(require("obsidian"));Q();var lS=class extends Sl.Component{constructor(e,t={}){super();this.containerEl=e;this.taskCount=0;this.isTreeMode=!1;this.availableColumns=[];this.callbacks=t}onload(){this.render()}onunload(){this.headerEl&&this.headerEl.remove()}updateTaskCount(e){this.taskCount=e,this.updateTaskCountDisplay()}updateTreeMode(e){this.isTreeMode=e,this.updateTreeModeDisplay()}updateColumns(e){this.availableColumns=e,this.updateColumnToggles()}render(){this.headerEl=this.containerEl.createDiv("task-table-header-bar");let e=this.headerEl.createDiv("table-header-left");this.createTaskCountDisplay(e);let t=this.headerEl.createDiv("table-header-right");this.createControls(t)}createTaskCountDisplay(e){let t=e.createDiv("task-count-container"),a=t.createSpan("task-count-icon");(0,Sl.setIcon)(a,"list-checks");let r=t.createSpan("task-count-text");r.textContent=this.getTaskCountText(),r.dataset.countElement="true"}getTaskCountText(){return this.taskCount===0?c("No tasks"):this.taskCount===1?c("1 task"):`${this.taskCount} ${c("tasks")}`}updateTaskCountDisplay(){let e=this.headerEl.querySelector("[data-count-element]");e&&(e.textContent=this.getTaskCountText())}createControls(e){let t=e.createDiv("table-controls-container");this.treeModeBtn=t.createEl("button","table-control-btn tree-mode-btn");let a=this.treeModeBtn.createSpan("tree-mode-icon");this.updateTreeModeButton(),this.registerDomEvent(this.treeModeBtn,"click",()=>{this.toggleTreeMode()});let r=t.createDiv("column-dropdown");this.columnBtn=r.createEl("button","table-control-btn column-btn");let i=this.columnBtn.createSpan("column-icon");(0,Sl.setIcon)(i,"eye");let n=this.columnBtn.createSpan("column-text");n.textContent=c("Columns");let o=this.columnBtn.createSpan("dropdown-arrow");(0,Sl.setIcon)(o,"chevron-down"),this.columnBtn.title=c("Toggle column visibility");let l=r.createDiv("column-dropdown-menu");l.style.display="none",this.registerDomEvent(this.columnBtn,"click",d=>{d.stopPropagation();let u=l.style.display!=="none";l.style.display=u?"none":"block"}),this.registerDomEvent(document,"click",()=>{l.style.display="none"}),this.updateColumnDropdown(l)}updateTreeModeButton(){if(!this.treeModeBtn)return;let e=this.treeModeBtn.querySelector(".tree-mode-icon");e&&(e.empty(),(0,Sl.setIcon)(e,this.isTreeMode?"git-branch":"list"),this.treeModeBtn.title=this.isTreeMode?c("Switch to List Mode"):c("Switch to Tree Mode"),this.treeModeBtn.toggleClass("active",this.isTreeMode))}updateTreeModeDisplay(){this.updateTreeModeButton()}toggleTreeMode(){this.isTreeMode=!this.isTreeMode,this.updateTreeModeDisplay(),this.callbacks.onTreeModeToggle&&this.callbacks.onTreeModeToggle(this.isTreeMode)}updateColumnToggles(){let e=this.headerEl.querySelector(".column-dropdown-menu");e&&this.createColumnToggles(e)}createColumnToggles(e){e.empty(),this.availableColumns.forEach(t=>{let a=e.createDiv("column-toggle-item"),r=a.createEl("input","column-toggle-checkbox");r.type="checkbox",r.checked=t.visible,r.id=`column-toggle-${t.id}`;let i=a.createEl("label","column-toggle-label");i.htmlFor=r.id,i.textContent=t.title,this.registerDomEvent(r,"change",()=>{this.callbacks.onColumnToggle&&this.callbacks.onColumnToggle(t.id,r.checked)})})}updateColumnDropdown(e){this.createColumnToggles(e)}};xa();var cS=class extends Y_.Component{constructor(e,t,a,r,i={}){super();this.app=e;this.plugin=t;this.parentEl=a;this.config=r;this.callbacks=i;this.allTasks=[];this.filteredTasks=[];this.displayedRows=[];this.columns=[];this.selectedRows=new Set;this.editingCell=null;this.isTreeView=!1;this.currentSortField="";this.currentSortOrder="asc";this.isLoading=!1;this.scrollRAF=null;this.lastScrollTime=0;this.scrollVelocity=0;this.lastViewport=null;this.renderThrottleRAF=null;this.lastRenderTime=0;this.handleScroll=()=>{this.scrollRAF&&cancelAnimationFrame(this.scrollRAF),this.scrollRAF=requestAnimationFrame(()=>{if(this.virtualScroll&&this.displayedRows.length>this.config.pageSize){let e=performance.now(),t=e-this.lastScrollTime,a=this.tableWrapper.scrollTop,r=this.virtualScroll.getViewport().scrollTop;this.scrollVelocity=(a-r)/Math.max(t,1),this.lastScrollTime=e,this.virtualScroll.handleScroll();let i=this.virtualScroll.getViewport();(!this.lastViewport||this.lastViewport.startIndex!==i.startIndex||this.lastViewport.endIndex!==i.endIndex)&&this.performRender(i,e)}this.scrollRAF=null})};this.setupCallbacks(),this.initializeConfig()}setupCallbacks(){this.onTaskCompleted=this.callbacks.onTaskCompleted,this.onTaskContextMenu=this.callbacks.onTaskContextMenu,this.onTaskUpdated=this.callbacks.onTaskUpdated}initializeConfig(){this.isTreeView=this.config.enableTreeView,this.currentSortField=this.config.defaultSortField,this.currentSortOrder=this.config.defaultSortOrder,this.initializeColumns()}initializeColumns(){let e=[{id:"rowNumber",title:"#",width:60,sortable:!1,resizable:!1,type:"number",visible:this.config.showRowNumbers},{id:"status",title:c("Status"),width:this.config.columnWidths.status||80,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"status",visible:this.config.visibleColumns.includes("status")},{id:"content",title:c("Content"),width:this.config.columnWidths.content||300,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("content")},{id:"priority",title:c("Priority"),width:this.config.columnWidths.priority||100,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"priority",visible:this.config.visibleColumns.includes("priority")},{id:"dueDate",title:c("Due Date"),width:this.config.columnWidths.dueDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("dueDate")},{id:"startDate",title:c("Start Date"),width:this.config.columnWidths.startDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("startDate")},{id:"scheduledDate",title:c("Scheduled Date"),width:this.config.columnWidths.scheduledDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("scheduledDate")},{id:"createdDate",title:c("Created Date"),width:this.config.columnWidths.createdDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("createdDate")},{id:"completedDate",title:c("Completed Date"),width:this.config.columnWidths.completedDate||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"date",visible:this.config.visibleColumns.includes("completedDate")},{id:"tags",title:c("Tags"),width:this.config.columnWidths.tags||150,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"tags",visible:this.config.visibleColumns.includes("tags")},{id:"project",title:c("Project"),width:this.config.columnWidths.project||150,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("project")},{id:"context",title:c("Context"),width:this.config.columnWidths.context||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("context")},{id:"recurrence",title:c("Recurrence"),width:this.config.columnWidths.recurrence||120,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("recurrence")},{id:"filePath",title:c("File"),width:this.config.columnWidths.filePath||200,sortable:this.config.sortableColumns,resizable:this.config.resizableColumns,type:"text",visible:this.config.visibleColumns.includes("filePath")}];this.columns=e.filter(t=>t.visible)}onload(){this.createTableStructure(),this.initializeChildComponents(),this.setupEventListeners(),this.updateTableHeaderInfo()}onunload(){this.cleanup()}createTableStructure(){this.containerEl=this.parentEl.createDiv("task-table-container"),this.tableHeader=new lS(this.containerEl,{onTreeModeToggle:e=>{this.isTreeView=e,this.config.enableTreeView=e,this.refreshDisplay()},onRefresh:()=>{this.refreshData()},onColumnToggle:(e,t)=>{this.toggleColumnVisibility(e,t)}}),this.addChild(this.tableHeader),this.tableWrapper=this.containerEl.createDiv("task-table-wrapper"),this.tableEl=this.tableWrapper.createEl("table","task-table"),this.headerEl=this.tableEl.createEl("thead","task-table-header"),this.bodyEl=this.tableEl.createEl("tbody","task-table-body"),this.loadingEl=this.tableWrapper.createDiv("task-table-loading"),this.loadingEl.textContent=c("Loading..."),this.loadingEl.style.display="none"}initializeChildComponents(){this.renderer=new iS(this.tableEl,this.headerEl,this.bodyEl,this.columns,this.config,this.app,this.plugin),this.addChild(this.renderer),this.renderer.onDateChange=(e,t,a)=>{this.handleDateChange(e,t,a)},this.renderer.onRowExpand=e=>{this.handleRowExpansion(e)},this.renderer.onCellChange=(e,t,a)=>{this.handleCellChange(e,t,a)},this.config.enableInlineEditing&&(this.editor=new nS(this.app,this.plugin,this.config,{onCellEdit:this.handleCellEdit.bind(this),onEditComplete:this.handleEditComplete.bind(this),onEditCancel:this.handleEditCancel.bind(this)}),this.addChild(this.editor)),this.config.enableTreeView&&(this.treeManager=new Nk(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.config.enableLazyLoading&&(this.virtualScroll=new oS(this.tableWrapper,this.config.pageSize,{onLoadMore:this.loadMoreRows.bind(this),onScroll:this.handleScroll.bind(this)}),this.addChild(this.virtualScroll))}setupEventListeners(){this.registerDomEvent(this.tableEl,"click",this.handleTableClick.bind(this)),this.registerDomEvent(this.tableEl,"dblclick",this.handleTableDoubleClick.bind(this)),this.registerDomEvent(this.tableEl,"contextmenu",this.handleTableContextMenu.bind(this)),this.registerDomEvent(this.containerEl,"keydown",this.handleKeyDown.bind(this)),this.registerDomEvent(this.headerEl,"click",this.handleHeaderClick.bind(this))}updateTasks(e){this.allTasks=e,this.applyFiltersAndSort(),this.refreshDisplay(),this.updateTableHeaderInfo()}forceRefresh(){this.renderer&&this.renderer.forceClearCache(),this.virtualScroll&&this.virtualScroll.reset(),this.selectedRows.clear(),this.applyFiltersAndSort(),this.refreshDisplay(),this.updateSortIndicators()}applyFiltersAndSort(){if(this.filteredTasks=[...this.allTasks],this.currentSortField){let e=[{field:this.currentSortField,order:this.currentSortOrder}];this.filteredTasks=Oa(this.filteredTasks,e,this.plugin.settings),this.filteredTasks,this.filteredTasks}}refreshDisplay(){if(this.isTreeView&&!this.treeManager&&(this.treeManager=new Nk(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.isTreeView&&this.treeManager?this.displayedRows=this.treeManager.buildTreeRows(this.filteredTasks,this.currentSortField,this.currentSortOrder):this.displayedRows=this.buildFlatRows(this.filteredTasks),this.selectedRows.clear(),this.virtualScroll&&this.displayedRows.length>this.config.pageSize){this.virtualScroll.updateContent(this.displayedRows.length);let e=this.virtualScroll.getViewport(),t=this.displayedRows.slice(e.startIndex,e.endIndex+1);this.renderer.renderTable(t,this.selectedRows,e.startIndex,this.displayedRows.length)}else this.renderer.renderTable(this.displayedRows,this.selectedRows)}buildFlatRows(e){return e.map((t,a)=>({id:t.id,task:t,level:0,expanded:!1,hasChildren:!1,cells:this.buildCellsForTask(t,a+1)}))}buildCellsForTask(e,t){return this.columns.map(a=>{var n;let r,i;switch(a.id){case"rowNumber":r=t,i=t.toString();break;case"status":r=e.status,i=this.formatStatus(e.status);break;case"content":r=e.content,i=e.content;break;case"priority":let o=e.metadata||{};r=o.priority,i=this.formatPriority(o.priority);break;case"dueDate":let l=e.metadata||{};r=l.dueDate,i=this.formatDate(l.dueDate);break;case"startDate":let d=e.metadata||{};r=d.startDate,i=this.formatDate(d.startDate);break;case"scheduledDate":let u=e.metadata||{};r=u.scheduledDate,i=this.formatDate(u.scheduledDate);break;case"createdDate":r=e.metadata.createdDate,i=this.formatDate(e.metadata.createdDate);break;case"completedDate":r=e.metadata.completedDate,i=this.formatDate(e.metadata.completedDate);break;case"tags":r=e.metadata.tags,i=((n=e.metadata.tags)==null?void 0:n.join(", "))||"";break;case"project":r=e.metadata.project,i=e.metadata.project||"";break;case"context":r=e.metadata.context,i=e.metadata.context||"";break;case"recurrence":r=e.metadata.recurrence,i=e.metadata.recurrence||"";break;case"filePath":r=e.filePath,i=this.formatFilePath(e.filePath);break;default:r="",i=""}return{columnId:a.id,value:r,displayValue:i,editable:a.id!=="rowNumber"&&this.config.enableInlineEditing}})}formatStatus(e){return{" ":c("Not Started"),x:c("Completed"),X:c("Completed"),"/":c("In Progress"),">":c("In Progress"),"-":c("Abandoned"),"?":c("Planned")}[e]||e}formatPriority(e){return e?{5:c("Highest"),4:c("High"),3:c("Medium"),2:c("Low"),1:c("Lowest")}[e]||e.toString():""}formatDate(e){return e?new Date(e).toLocaleDateString():""}formatFilePath(e){let t=e.split("/");return t[t.length-1].replace(/\.md$/,"")}handleTableClick(e){let a=e.target.closest("tr");if(!a)return;let r=a.dataset.rowId;!r||!this.allTasks.find(n=>n.id===r)||this.config.enableRowSelection&&(e.ctrlKey||e.metaKey?this.config.enableMultiSelect&&(this.selectedRows.has(r)?this.selectedRows.delete(r):this.selectedRows.add(r)):(this.selectedRows.clear(),this.selectedRows.add(r)),this.updateRowSelection())}handleTableDoubleClick(e){let a=e.target.closest("td");if(!a)return;let r=a.closest("tr");if(!r)return;let i=r.dataset.rowId,n=a.dataset.columnId;i&&n&&this.config.enableInlineEditing&&this.startCellEdit(i,n,a)}handleTableContextMenu(e){e.preventDefault();let a=e.target.closest("tr");if(!a)return;let r=a.dataset.rowId;if(!r)return;let i=this.allTasks.find(n=>n.id===r);!i||this.onTaskContextMenu&&this.onTaskContextMenu(e,i)}handleHeaderClick(e){let t=e.target;if(t.classList.contains("task-table-resize-handle"))return;let a=t.closest("th");if(!a||this.tableEl.classList.contains("resizing"))return;let r=a.dataset.columnId;if(!r)return;let i=this.columns.find(n=>n.id===r);!i||!i.sortable||(this.currentSortField===r?this.currentSortOrder==="asc"?this.currentSortOrder="desc":this.currentSortOrder==="desc"&&(this.currentSortField="",this.currentSortOrder="asc"):(this.currentSortField=r,this.currentSortOrder="asc"),this.virtualScroll&&this.virtualScroll.reset(),this.applyFiltersAndSort(),this.refreshDisplay(),this.updateSortIndicators(),""+this.currentSortField+this.currentSortOrder,""+this.filteredTasks.length,""+this.displayedRows.length,setTimeout(()=>{let n=this.bodyEl.querySelectorAll("tr[data-row-id]").length,o=this.displayedRows.length;n!==o&&o>0&&(console.warn(`Table row count mismatch detected. Expected: ${o}, Actual: ${n}. Forcing refresh.`),this.forceRefresh())},100))}handleKeyDown(e){e.key==="Escape"&&this.editingCell&&this.cancelCellEdit()}performRender(e,t){this.renderThrottleRAF&&(cancelAnimationFrame(this.renderThrottleRAF),this.renderThrottleRAF=null);let a=0;Math.abs(this.scrollVelocity)>1&&(a=Math.min(8,Math.floor(Math.abs(this.scrollVelocity)/1.5)));let r=Math.max(0,e.startIndex-a);this.tableWrapper.scrollTop<=40&&(r=0);let n=Math.min(this.displayedRows.length-1,e.endIndex+a),o=this.displayedRows.slice(r,n+1);this.renderer.renderTable(o,this.selectedRows,r,this.displayedRows.length),this.lastViewport={startIndex:r,endIndex:n},this.lastRenderTime=t}startCellEdit(e,t,a){this.editingCell&&this.cancelCellEdit(),this.editingCell={rowId:e,columnId:t},this.editor.startEdit(e,t,a)}handleCellEdit(e,t,a){let r=this.allTasks.find(n=>n.id===e);if(!r)return;let i={...r};this.updateTaskProperty(i,t,a),this.onTaskUpdated&&this.onTaskUpdated(i)}handleEditComplete(){this.editingCell=null,this.refreshDisplay()}handleEditCancel(){this.editingCell=null}cancelCellEdit(){this.editingCell&&(this.editor.cancelEdit(),this.editingCell=null)}updateTaskProperty(e,t,a){switch(t){case"status":e.status=a,e.completed=a==="x"||a==="X";break;case"content":e.content=a;break;case"priority":e.metadata.priority=a?parseInt(String(a)):void 0;break;case"dueDate":e.metadata.dueDate=a?new Date(a).getTime():void 0;break;case"startDate":e.metadata.startDate=a?new Date(a).getTime():void 0;break;case"scheduledDate":e.metadata.scheduledDate=a?new Date(a).getTime():void 0;break;case"createdDate":e.metadata.createdDate=a?new Date(a).getTime():void 0;break;case"completedDate":e.metadata.completedDate=a?new Date(a).getTime():void 0;break;case"tags":Array.isArray(a)?e.metadata.tags=a:typeof a=="string"?e.metadata.tags=a?a.split(",").map(r=>r.trim()).filter(r=>r.length>0):[]:e.metadata.tags=[];break;case"project":ur(e)||(e.metadata.project=a||void 0);break;case"context":e.metadata.context=a||void 0;break;case"recurrence":e.metadata.recurrence=a||void 0;break}}updateRowSelection(){this.renderer.updateSelection(this.selectedRows)}updateSortIndicators(){this.currentSortField?this.renderer.updateSortIndicators(this.currentSortField,this.currentSortOrder):this.renderer.updateSortIndicators("","asc")}loadMoreRows(){this.virtualScroll&&this.virtualScroll.loadNextBatch()}cleanup(){this.scrollRAF&&(cancelAnimationFrame(this.scrollRAF),this.scrollRAF=null),this.renderThrottleRAF&&(cancelAnimationFrame(this.renderThrottleRAF),this.renderThrottleRAF=null),this.lastViewport=null,this.selectedRows.clear(),this.displayedRows=[],this.filteredTasks=[],this.allTasks=[]}toggleTreeView(){this.isTreeView=!this.isTreeView,this.refreshDisplay()}getSelectedTasks(){return this.allTasks.filter(e=>this.selectedRows.has(e.id))}clearSelection(){this.selectedRows.clear(),this.updateRowSelection()}exportData(){return this.displayedRows.map(e=>{let t={};return e.cells.forEach(a=>{t[a.columnId]=a.value}),t})}refreshData(){this.applyFiltersAndSort(),this.refreshDisplay()}toggleColumnVisibility(e,t){if(t&&!this.config.visibleColumns.includes(e))this.config.visibleColumns.push(e);else if(!t){let a=this.config.visibleColumns.indexOf(e);a>-1&&this.config.visibleColumns.splice(a,1)}this.saveColumnConfiguration(),this.initializeColumns(),this.renderer&&this.renderer.updateColumns(this.columns),this.treeManager&&this.treeManager.updateColumns(this.columns),this.refreshDisplay(),this.updateTableHeaderInfo()}saveColumnConfiguration(){if(this.plugin&&this.plugin.settings){let e=this.plugin.settings.viewConfiguration.find(t=>t.id==="table");if(e&&e.specificConfig){let t=e.specificConfig;t.viewType==="table"&&(t.visibleColumns=[...this.config.visibleColumns],this.plugin.saveSettings())}}}updateTableHeaderInfo(){if(this.tableHeader){this.tableHeader.updateTaskCount(this.filteredTasks.length),this.tableHeader.updateTreeMode(this.isTreeView);let e=this.getAllAvailableColumns();this.tableHeader.updateColumns(e)}}getAllAvailableColumns(){return[{id:"status",title:c("Status"),visible:this.config.visibleColumns.includes("status")},{id:"content",title:c("Content"),visible:this.config.visibleColumns.includes("content")},{id:"priority",title:c("Priority"),visible:this.config.visibleColumns.includes("priority")},{id:"dueDate",title:c("Due Date"),visible:this.config.visibleColumns.includes("dueDate")},{id:"startDate",title:c("Start Date"),visible:this.config.visibleColumns.includes("startDate")},{id:"scheduledDate",title:c("Scheduled Date"),visible:this.config.visibleColumns.includes("scheduledDate")},{id:"createdDate",title:c("Created Date"),visible:this.config.visibleColumns.includes("createdDate")},{id:"completedDate",title:c("Completed Date"),visible:this.config.visibleColumns.includes("completedDate")},{id:"tags",title:c("Tags"),visible:this.config.visibleColumns.includes("tags")},{id:"project",title:c("Project"),visible:this.config.visibleColumns.includes("project")},{id:"context",title:c("Context"),visible:this.config.visibleColumns.includes("context")},{id:"recurrence",title:c("Recurrence"),visible:this.config.visibleColumns.includes("recurrence")},{id:"filePath",title:c("File"),visible:this.config.visibleColumns.includes("filePath")}]}handleDateChange(e,t,a){let r=this.allTasks.find(o=>o.id===e);if(!r)return;let i={...r};if(!!["dueDate","startDate","scheduledDate","createdDate","completedDate"].includes(t)){if(a){let o=new Date(a).getTime();i.metadata[t]=o}else delete i.metadata[t];this.onTaskUpdated&&this.onTaskUpdated(i),this.refreshDisplay()}}handleEditStart(e,t){this.editingCell={rowId:e,columnId:t}}handleRowExpansion(e){this.isTreeView&&this.treeManager&&this.treeManager.toggleNodeExpansion(e)&&this.refreshDisplay()}handleCellChange(e,t,a){let r=this.allTasks.findIndex(l=>l.id===e);if(r===-1)return;let i=this.allTasks[r];this.updateTaskProperty(i,t,a);let n={...i};this.onTaskUpdated&&this.onTaskUpdated(n);let o=this.filteredTasks.findIndex(l=>l.id===e);o!==-1&&(this.filteredTasks[o]=i),this.refreshDisplay()}};var dS=class extends z_.Component{constructor(e,t,a,r,i){super();this.app=e;this.plugin=t;this.parentEl=a;this.config=r;this.callbacks=i;this.containerEl=this.parentEl.createDiv("table-view-adapter"),this.tableView=new cS(this.app,this.plugin,this.containerEl,this.config,{onTaskSelected:this.callbacks.onTaskSelected,onTaskCompleted:this.callbacks.onTaskCompleted,onTaskContextMenu:this.callbacks.onTaskContextMenu,onTaskUpdated:this.callbacks.onTaskUpdated})}onload(){this.addChild(this.tableView),this.tableView.load()}onunload(){this.tableView.unload(),this.removeChild(this.tableView)}updateTasks(e){this.tableView.updateTasks(e)}setTasks(e,t){this.updateTasks(e)}toggleTreeView(){this.tableView.toggleTreeView()}getSelectedTasks(){return this.tableView.getSelectedTasks()}clearSelection(){this.tableView.clearSelection()}exportData(){return this.tableView.exportData()}};var vd=A(require("obsidian"));var Hk=A(require("obsidian"));var Mo=A(require("obsidian"));Lr();Cr();Q();var Lk=class extends Mo.Component{constructor(e,t,a,r,i={}){super();this.app=e,this.plugin=t,this.containerEl=a,this.task=r,this.params=i,this.markdownRenderer=new Qt(this.app,this.containerEl,this.task.filePath,!0),this.addChild(this.markdownRenderer)}onload(){super.onload(),this.render()}render(){this.containerEl.empty(),this.containerEl.addClass("tg-quadrant-card"),this.containerEl.setAttribute("data-task-id",this.task.id);let e=this.getPriorityClass();e&&this.containerEl.addClass(e),this.createHeader(),this.createContent(),this.createMetadata(),this.addEventListeners()}createHeader(){let e=this.containerEl.createDiv("tg-quadrant-card-header");this.checkboxEl=e.createDiv("tg-quadrant-card-checkbox");let t=Ot(this.task.status,this.task,this.checkboxEl);this.registerDomEvent(t,"change",()=>{let i=t.checked?"x":" ";this.params.onTaskStatusUpdate&&this.params.onTaskStatusUpdate(this.task.id,i)});let r=e.createDiv("tg-quadrant-card-actions").createEl("button",{cls:"tg-quadrant-card-more-btn",attr:{"aria-label":c("More actions")}});(0,Mo.setIcon)(r,"more-horizontal"),this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.showContextMenu(i)})}createContent(){this.contentEl=this.containerEl.createDiv("tg-quadrant-card-content");let e=this.contentEl.createDiv("tg-quadrant-card-title"),t=new Qt(this.app,e,this.task.filePath,!0);this.addChild(t),t.render(this.task.content,!0);let a=this.extractTags();if(a.length>0){let r=this.contentEl.createDiv("tg-quadrant-card-tags");a.forEach(i=>{let n=r.createSpan("tg-quadrant-card-tag");n.textContent=i,i==="#urgent"?n.addClass("tg-quadrant-tag--urgent"):i==="#important"&&n.addClass("tg-quadrant-tag--important")})}}createMetadata(){this.metadataEl=this.containerEl.createDiv("tg-quadrant-card-metadata");let e=this.getTaskDueDate();if(e){let t=this.metadataEl.createDiv("tg-quadrant-card-due-date"),a=t.createSpan("tg-quadrant-card-due-date-text");a.textContent=this.formatDueDate(e),this.isDueSoon(e)?t.addClass("tg-quadrant-card-due-date--urgent"):this.isOverdue(e)&&t.addClass("tg-quadrant-card-due-date--overdue")}this.metadataEl.createDiv("tg-quadrant-card-file-info",t=>{if(this.task.metadata.priority){let i;if(typeof this.task.metadata.priority=="string")switch(this.task.metadata.priority.toLowerCase()){case"lowest":i=1;break;case"low":i=2;break;case"medium":i=3;break;case"high":i=4;break;case"highest":i=5;break;default:i=parseInt(this.task.metadata.priority)||1;break}else i=this.task.metadata.priority;let n=nr(i),o=["tg-quadrant-card-priority"];n&&o.push(`priority-${n}`);let l=t.createDiv({cls:o}),d="!".repeat(i);l.textContent=d}let a=t.createSpan("tg-quadrant-card-file-name");a.textContent=this.getFileName();let r=t.createSpan("tg-quadrant-card-line");r.textContent=`L${this.task.line}`})}addEventListeners(){this.registerDomEvent(this.containerEl,"click",e=>{e.target===this.checkboxEl||this.checkboxEl.contains(e.target)||this.params.onTaskSelected&&this.params.onTaskSelected(this.task)}),this.registerDomEvent(this.containerEl,"contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.params.onTaskContextMenu?this.params.onTaskContextMenu(e,this.task):this.showContextMenu(e)}),this.registerDomEvent(this.containerEl,"dblclick",e=>{e.stopPropagation(),this.openTaskInFile()})}showContextMenu(e){var i,n;let t=new Mo.Menu;t.addItem(o=>{o.setTitle(c("Open in file")).setIcon("external-link").onClick(()=>{this.openTaskInFile()})}),t.addItem(o=>{o.setTitle(c("Copy task")).setIcon("copy").onClick(()=>{navigator.clipboard.writeText(this.task.originalMarkdown)})}),t.addSeparator();let a=this.task.content.includes("#urgent")||((i=this.task.metadata.tags)==null?void 0:i.includes("#urgent")),r=this.task.content.includes("#important")||((n=this.task.metadata.tags)==null?void 0:n.includes("#important"));a?t.addItem(o=>{o.setTitle(c("Remove urgent tag")).setIcon("zap-off").onClick(()=>{this.removeTagFromTask("#urgent")})}):t.addItem(o=>{o.setTitle(c("Mark as urgent")).setIcon("zap").onClick(()=>{this.addTagToTask("#urgent")})}),r?t.addItem(o=>{o.setTitle(c("Remove important tag")).setIcon("star-off").onClick(()=>{this.removeTagFromTask("#important")})}):t.addItem(o=>{o.setTitle(c("Mark as important")).setIcon("star").onClick(()=>{this.addTagToTask("#important")})}),t.showAtMouseEvent(e)}async openTaskInFile(){let e=this.app.vault.getFileByPath(this.task.filePath);if(e){let t=this.app.workspace.getLeaf(!1);await t.openFile(e);let a=t.view;if(a&&a instanceof Mo.MarkdownView&&a.editor){let r=this.task.line-1;a.editor.setCursor(r,0),a.editor.scrollIntoView({from:{line:r,ch:0},to:{line:r,ch:0}},!0)}}}async addTagToTask(e){try{let t={...this.task};t.metadata.tags||(t.metadata.tags=[]),t.metadata.tags.includes(e)||(t.metadata.tags=[...t.metadata.tags,e]),this.task=t,this.render(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(t)}catch(t){console.error(`Failed to add tag ${e} to task ${this.task.id}:`,t)}}async removeTagFromTask(e){try{let t={...this.task};t.metadata.tags=t.metadata.tags.filter(a=>a!==e),this.task=t,this.render(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(t)}catch(t){console.error(`Failed to remove tag ${e} from task ${this.task.id}:`,t)}}extractTags(){return this.task.content.match(/#[\w-]+/g)||[]}getPriorityClass(){return this.task.content.includes("\u{1F53A}")?"tg-quadrant-card--priority-highest":this.task.content.includes("\u23EB")?"tg-quadrant-card--priority-high":this.task.content.includes("\u{1F53C}")?"tg-quadrant-card--priority-medium":this.task.content.includes("\u{1F53D}")?"tg-quadrant-card--priority-low":this.task.content.includes("\u23EC")?"tg-quadrant-card--priority-lowest":""}getTaskDueDate(){let e=this.task.content.match(/📅\s*(\d{4}-\d{2}-\d{2})/);return e?new Date(e[1]):null}formatDueDate(e){let t=new Date,a=e.getTime()-t.getTime(),r=Math.ceil(a/(1e3*60*60*24));if(r<0){let i=Math.abs(r);return c("Overdue by")+" "+i+" "+c("days")}else return r===0?c("Due today"):r===1?c("Due tomorrow"):r<=7?c("Due in")+" "+r+" "+c("days"):e.toLocaleDateString()}isDueSoon(e){let t=new Date,r=(e.getTime()-t.getTime())/(1e3*60*60*24);return r>=0&&r<=3}isOverdue(e){let t=new Date;return e.getTime()<t.getTime()}getFileName(){let e=this.task.filePath.split("/");return e[e.length-1].replace(/\.md$/,"")}getTask(){return this.task}updateTask(e){this.task=e,this.render()}};Q();var uS=class extends Hk.Component{constructor(e,t,a,r,i={}){super();this.tasks=[];this.cardComponents=[];this.isContentLoaded=!1;this.intersectionObserver=null;this.scrollObserver=null;this.loadingEl=null;this.loadMoreEl=null;this.currentPage=0;this.pageSize=20;this.isLoadingMore=!1;this.hasMoreTasks=!0;this.renderedTasks=[];this.handleScroll=()=>{if(!this.scrollContainerEl||!this.hasMoreTasks||this.isLoadingMore)return;let e=this.scrollContainerEl,t=e.scrollTop,a=e.scrollHeight,r=e.clientHeight;t+r>=a-100&&this.loadMoreTasks()};this.app=e,this.plugin=t,this.containerEl=a,this.quadrant=r,this.params=i}onload(){super.onload(),this.render(),setTimeout(()=>{this.setupLazyLoading(),this.setupScrollLoading(),this.setupManualScrollListener(),this.checkInitialVisibility()},50),setTimeout(()=>{!this.isContentLoaded&&this.tasks.length>0&&(""+this.quadrant.id,this.loadContent())},500),setTimeout(()=>{!this.isContentLoaded&&this.tasks.length>0&&this.tasks.length<=this.pageSize&&(""+this.quadrant.id,this.loadContent())},1e3)}onunload(){this.cleanup(),this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=null),this.scrollObserver&&(this.scrollObserver.disconnect(),this.scrollObserver=null),this.scrollContainerEl&&this.scrollContainerEl.removeEventListener("scroll",this.handleScroll),super.onunload()}cleanup(){this.cardComponents.forEach(e=>{e.onunload()}),this.cardComponents=[]}render(){this.containerEl.empty(),this.containerEl.addClass("tg-quadrant-column"),this.containerEl.addClass(this.quadrant.className),this.createHeader(),this.createScrollableContent()}createHeader(){this.headerEl=this.containerEl.createDiv("tg-quadrant-header");let e=this.headerEl.createDiv("tg-quadrant-title-container"),t=e.createSpan("tg-quadrant-priority");t.textContent=this.quadrant.priorityEmoji,this.titleEl=e.createDiv("tg-quadrant-title"),this.titleEl.textContent=this.quadrant.title,this.countEl=this.headerEl.createDiv("tg-quadrant-count"),this.updateCount()}createScrollableContent(){this.scrollContainerEl=this.containerEl.createDiv("tg-quadrant-scroll-container"),this.scrollContainerEl.addEventListener("scroll",this.handleScroll,{passive:!0}),this.contentEl=this.scrollContainerEl.createDiv("tg-quadrant-column-content"),this.contentEl.setAttribute("data-quadrant-id",this.quadrant.id),this.createLoadMoreIndicator()}createLoadMoreIndicator(){this.loadMoreEl=this.scrollContainerEl.createDiv("tg-quadrant-load-more"),this.loadMoreEl.style.display="none";let e=this.loadMoreEl.createDiv("tg-quadrant-load-more-spinner");e.innerHTML=`
<svg class="tg-quadrant-spinner" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" fill="none" stroke-dasharray="31.416" stroke-dashoffset="31.416">
<animate attributeName="stroke-dasharray" dur="2s" values="0 31.416;15.708 15.708;0 31.416" repeatCount="indefinite"/>
<animate attributeName="stroke-dashoffset" dur="2s" values="0;-15.708;-31.416" repeatCount="indefinite"/>
</circle>
</svg>
`;let t=this.loadMoreEl.createDiv("tg-quadrant-load-more-message");t.textContent=c("Loading more tasks...")}checkInitialVisibility(){!this.isContentLoaded&&this.isElementVisible()&&(""+this.quadrant.id,this.loadContent())}isElementVisible(){if(!this.containerEl)return!1;let e=this.containerEl.getBoundingClientRect(),t=window.innerHeight,a=window.innerWidth,r=e.top<t&&e.bottom>0&&e.left<a&&e.right>0,i=e.width>50&&e.height>50;return r&&i}setupLazyLoading(){if(this.tasks.length<=this.pageSize){""+this.tasks.length+this.quadrant.id,this.loadContent();return}if(this.isElementVisible()){""+this.quadrant.id,this.loadContent();return}this.intersectionObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&!this.isContentLoaded&&(""+this.quadrant.id,this.loadContent())})},{root:null,rootMargin:"100px",threshold:.01}),this.intersectionObserver.observe(this.contentEl),this.containerEl&&this.intersectionObserver.observe(this.containerEl)}setupScrollLoading(){this.scrollObserver=new IntersectionObserver(e=>{e.forEach(t=>{t.isIntersecting&&this.hasMoreTasks&&!this.isLoadingMore&&this.isContentLoaded&&this.loadMoreTasks()})},{root:this.scrollContainerEl,rootMargin:"50px",threshold:.1}),this.observeLoadMoreElement()}observeLoadMoreElement(){this.loadMoreEl&&this.scrollObserver&&this.scrollObserver.observe(this.loadMoreEl)}async loadContent(){this.isContentLoaded||(this.isContentLoaded=!0,this.loadingEl&&(this.loadingEl.remove(),this.loadingEl=null),this.currentPage=0,this.renderedTasks=[],await this.loadMoreTasks(),this.observeLoadMoreElement())}async loadMoreTasks(){if(!(this.isLoadingMore||!(this.hasMoreTasks||this.renderedTasks.length===0&&this.tasks.length>0))){this.isLoadingMore=!0,this.showLoadMoreIndicator();try{let t=this.currentPage*this.pageSize,a=t+this.pageSize,r=this.tasks.slice(t,a);if(r.length===0){this.hasMoreTasks=!1,this.hideLoadMoreIndicator();return}this.renderedTasks.push(...r),await this.renderTaskBatch(r),this.currentPage++,a>=this.tasks.length?(this.hasMoreTasks=!1,this.hideLoadMoreIndicator()):this.showLoadMoreIndicator()}catch(t){console.error("Error loading more tasks:",t)}finally{this.isLoadingMore=!1}}}showLoadMoreIndicator(){this.loadMoreEl&&this.hasMoreTasks&&(this.loadMoreEl.style.display="flex")}hideLoadMoreIndicator(){this.loadMoreEl&&(this.loadMoreEl.style.display="none")}showLoadingIndicator(){if(this.loadingEl)return;this.loadingEl=this.contentEl.createDiv("tg-quadrant-loading");let e=this.loadingEl.createDiv("tg-quadrant-loading-spinner");e.innerHTML=`
<svg class="tg-quadrant-spinner" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" fill="none" stroke-dasharray="31.416" stroke-dashoffset="31.416">
<animate attributeName="stroke-dasharray" dur="2s" values="0 31.416;15.708 15.708;0 31.416" repeatCount="indefinite"/>
<animate attributeName="stroke-dashoffset" dur="2s" values="0;-15.708;-31.416" repeatCount="indefinite"/>
</circle>
</svg>
`;let t=this.loadingEl.createDiv("tg-quadrant-loading-message");t.textContent=c("Loading tasks...")}setTasks(e){if(""+this.quadrant.id+e.length,this.areTasksEqual(this.tasks,e)){""+this.quadrant.id;return}this.tasks=e,this.updateCount(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=e.length>this.pageSize,e.length>0?this.isContentLoaded?this.renderTasks():e.length<=this.pageSize?(""+e.length+this.quadrant.id,setTimeout(()=>{this.loadContent()},50)):setTimeout(()=>{this.isContentLoaded||(""+this.quadrant.id,this.loadContent())},100):this.isContentLoaded&&this.showEmptyState()}areTasksEqual(e,t){if(e.length!==t.length)return!1;if(e.length===0&&t.length===0)return!0;for(let a=0;a<e.length;a++)if(e[a].id!==t[a].id)return!1;for(let a=0;a<e.length;a++)if(!this.areTasksContentEqual(e[a],t[a]))return!1;return!0}areTasksContentEqual(e,t){if(e.content!==t.content||e.status!==t.status||e.completed!==t.completed)return!1;if(e.metadata&&t.metadata){if(e.metadata.priority!==t.metadata.priority||e.metadata.dueDate!==t.metadata.dueDate||e.metadata.scheduledDate!==t.metadata.scheduledDate||e.metadata.startDate!==t.metadata.startDate)return!1;let a=e.metadata.tags||[],r=t.metadata.tags||[];if(a.length!==r.length||!a.every(i=>r.includes(i)))return!1}else if(e.metadata!==t.metadata)return!1;return!0}forceSetTasks(e){""+this.quadrant.id+e.length,this.tasks=e,this.updateCount(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=e.length>this.pageSize,this.isContentLoaded?this.renderTasks():this.loadContent()}updateTask(e){let t=this.tasks.findIndex(r=>r.id===e.id);if(t===-1){console.warn(`Task ${e.id} not found in quadrant ${this.quadrant.id}`);return}if(this.areTasksContentEqual(this.tasks[t],e)){""+e.id;return}this.tasks[t]=e,this.updateCount();let a=this.renderedTasks.findIndex(r=>r.id===e.id);if(a!==-1){this.renderedTasks[a]=e;let r=this.cardComponents.find(i=>i.containerEl.getAttribute("data-task-id")===e.id);r&&r.updateTask(e)}""+e.id+this.quadrant.id}addTask(e){if(this.tasks.some(t=>t.id===e.id)){console.warn(`Task ${e.id} already exists in quadrant ${this.quadrant.id}`);return}this.tasks.push(e),this.updateCount(),this.isContentLoaded&&this.renderedTasks.length<this.tasks.length&&(this.renderedTasks.push(e),this.renderSingleTask(e)),""+e.id+this.quadrant.id}removeTask(e){let t=this.tasks.findIndex(i=>i.id===e);if(t===-1){console.warn(`Task ${e} not found in quadrant ${this.quadrant.id}`);return}this.tasks.splice(t,1),this.updateCount();let a=this.renderedTasks.findIndex(i=>i.id===e);a!==-1&&this.renderedTasks.splice(a,1);let r=this.cardComponents.findIndex(i=>i.containerEl.getAttribute("data-task-id")===e);if(r!==-1){let i=this.cardComponents[r];i.onunload(),i.containerEl.remove(),this.cardComponents.splice(r,1)}this.tasks.length===0&&this.isContentLoaded&&this.showEmptyState(),""+e+this.quadrant.id}async renderSingleTask(e){let t=document.createElement("div");t.className="tg-quadrant-card",t.setAttribute("data-task-id",e.id);let a=new Lk(this.app,this.plugin,t,e,{onTaskStatusUpdate:this.params.onTaskStatusUpdate,onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:async r=>{var i,n;(n=(i=this.params).onTaskUpdated)==null||n.call(i,r)}});this.addChild(a),this.cardComponents.push(a),this.contentEl.appendChild(t)}updateCount(){this.countEl&&(this.countEl.textContent=`${this.tasks.length} ${this.tasks.length===1?c("task"):c("tasks")}`)}async renderTasks(){!this.contentEl||(this.cleanup(),this.contentEl.empty(),this.currentPage=0,this.renderedTasks=[],this.hasMoreTasks=this.tasks.length>this.pageSize,await this.loadMoreTasks(),this.tasks.length===0&&this.showEmptyState())}async renderTaskBatch(e){if(!e.length)return;let t=document.createDocumentFragment(),a=5;for(let r=0;r<e.length;r+=a)e.slice(r,r+a).forEach(n=>{let o=document.createElement("div");o.className="tg-quadrant-card",o.setAttribute("data-task-id",n.id);let l=new Lk(this.app,this.plugin,o,n,{onTaskStatusUpdate:this.params.onTaskStatusUpdate,onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:async d=>{this.params.onTaskStatusUpdate&&await this.params.onTaskStatusUpdate(d.id,d.status)}});this.addChild(l),this.cardComponents.push(l),t.appendChild(o)}),r+a<e.length&&await new Promise(n=>setTimeout(n,5));this.contentEl.appendChild(t),setTimeout(()=>{this.checkScrollPosition()},100)}checkScrollPosition(){if(!this.scrollContainerEl||!this.loadMoreEl)return;let e=this.scrollContainerEl,t=this.loadMoreEl,a=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.top<a.bottom&&r.bottom>a.top&&r.left<a.right&&r.right>a.left,n=e.scrollTop,o=e.scrollHeight,l=e.clientHeight,d=n+l>=o-100;(i||d)&&this.hasMoreTasks&&!this.isLoadingMore&&this.loadMoreTasks()}showEmptyState(){let e=this.contentEl.createDiv("tg-quadrant-empty-state"),t=e.createDiv("tg-quadrant-empty-icon");(0,Hk.setIcon)(t,"inbox");let a=e.createDiv("tg-quadrant-empty-message");a.textContent=this.getEmptyStateMessage()}getEmptyStateMessage(){switch(this.quadrant.id){case"urgent-important":return c("No crisis tasks - great job!");case"not-urgent-important":return c("No planning tasks - consider adding some goals");case"urgent-not-important":return c("No interruptions - focus time!");case"not-urgent-not-important":return c("No time wasters - excellent focus!");default:return c("No tasks in this quadrant")}}setVisibility(e){e?(this.containerEl.style.display="",this.containerEl.removeClass("tg-quadrant-column--hidden")):(this.containerEl.style.display="none",this.containerEl.addClass("tg-quadrant-column--hidden"))}addDropIndicator(){this.contentEl.addClass("tg-quadrant-column-content--drop-active"),this.containerEl.addClass("tg-quadrant-column--drag-target")}removeDropIndicator(){this.contentEl.removeClass("tg-quadrant-column-content--drop-active"),this.containerEl.removeClass("tg-quadrant-column--drag-target"),this.containerEl.removeClass("tg-quadrant-column--highlighted"),setTimeout(()=>{this.contentEl.removeClass("tg-quadrant-column-content--drop-active"),this.containerEl.removeClass("tg-quadrant-column--drag-target"),this.containerEl.removeClass("tg-quadrant-column--highlighted"),this.containerEl.style.removeProperty("border"),this.containerEl.style.removeProperty("background"),this.contentEl.style.removeProperty("border"),this.contentEl.style.removeProperty("background")},10)}forceLoadContent(){""+this.quadrant.id,this.isContentLoaded||this.loadContent()}async loadAllTasks(){if(!this.hasMoreTasks)return;this.hasMoreTasks=!1,this.hideLoadMoreIndicator();let e=this.tasks.slice(this.renderedTasks.length);if(e.length===0)return;let t=10;for(let a=0;a<e.length;a+=t){let r=e.slice(a,a+t);await this.renderTaskBatch(r),this.renderedTasks.push(...r),a+t<e.length&&await new Promise(i=>setTimeout(i,10))}}getQuadrantId(){return this.quadrant.id}getQuadrant(){return this.quadrant}getTasks(){return this.tasks}getRenderedTasks(){return this.renderedTasks}getTaskCount(){return this.tasks.length}isEmpty(){return this.tasks.length===0}isLoaded(){return this.isContentLoaded}hasMoreToLoad(){return this.hasMoreTasks}getQuadrantColor(){switch(this.quadrant.id){case"urgent-important":return"var(--text-error)";case"not-urgent-important":return"var(--color-accent)";case"urgent-not-important":return"var(--text-warning)";case"not-urgent-not-important":return"var(--text-muted)";default:return"var(--color-accent)"}}getQuadrantRecommendation(){switch(this.quadrant.id){case"urgent-important":return c("Handle immediately. These are critical tasks that need your attention now.");case"not-urgent-important":return c("Schedule and plan. These tasks are key to your long-term success.");case"urgent-not-important":return c("Delegate if possible. These tasks are urgent but don't require your specific skills.");case"not-urgent-not-important":return c("Eliminate or minimize. These tasks may be time wasters.");default:return c("Review and categorize these tasks appropriately.")}}setupManualScrollListener(){this.handleScroll=this.handleScroll.bind(this)}prepareDragOperation(){this.hasMoreTasks&&this.renderedTasks.length<this.pageSize*2&&this.loadMoreTasks()}};Q();var fp=[{id:"urgent-important",title:c("Urgent & Important"),description:c("Do First - Crisis & emergencies"),priorityEmoji:"\u{1F53A}",urgentTag:"#urgent",importantTag:"#important",className:"quadrant-urgent-important"},{id:"not-urgent-important",title:c("Not Urgent & Important"),description:c("Schedule - Planning & development"),priorityEmoji:"\u23EB",importantTag:"#important",className:"quadrant-not-urgent-important"},{id:"urgent-not-important",title:c("Urgent & Not Important"),description:c("Delegate - Interruptions & distractions"),priorityEmoji:"\u{1F53C}",urgentTag:"#urgent",className:"quadrant-urgent-not-important"},{id:"not-urgent-not-important",title:c("Not Urgent & Not Important"),description:c("Eliminate - Time wasters"),priorityEmoji:"\u{1F53D}",className:"quadrant-not-urgent-not-important"}],pS=class extends vd.Component{constructor(e,t,a,r=[],i={},n="quadrant"){super();this.columns=[];this.sortableInstances=[];this.tasks=[];this.allTasks=[];this.currentViewId="quadrant";this.filterComponent=null;this.activeFilters=[];this.sortOption={field:"priority",order:"desc",label:"Priority (High to Low)"};this.hideEmptyColumns=!1;this.app=e,this.plugin=t,this.currentViewId=n,this.containerEl=a.createDiv("tg-quadrant-component-container"),this.tasks=r,this.params=i}get quadrantConfig(){let e=this.plugin.settings.viewConfiguration.find(a=>a.id===this.currentViewId);if(e&&e.specificConfig&&e.specificConfig.viewType==="quadrant")return e.specificConfig;let t=this.plugin.settings.viewConfiguration.find(a=>a.id==="quadrant");return(t==null?void 0:t.specificConfig)||{urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3}}onload(){super.onload(),this.render()}onunload(){this.cleanup(),super.onunload()}cleanup(){this.sortableInstances.forEach(e=>{e.destroy()}),this.sortableInstances=[],this.columns.forEach(e=>{e.onunload()}),this.columns=[],this.filterComponent&&(this.filterComponent.onunload(),this.filterComponent=null)}render(){this.containerEl.empty(),this.createHeader(),this.createFilterSection(),this.createQuadrantGrid(),this.refresh()}createHeader(){let e=this.containerEl.createDiv("tg-quadrant-header"),t=e.createDiv("tg-quadrant-title");t.textContent=c("Matrix");let r=e.createDiv("tg-quadrant-controls").createDiv("tg-quadrant-sort"),i=[{field:"priority",order:"desc",label:c("Priority (High to Low)")},{field:"priority",order:"asc",label:c("Priority (Low to High)")},{field:"dueDate",order:"asc",label:c("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:c("Due Date (Latest First)")},{field:"createdDate",order:"desc",label:c("Created Date (Newest First)")},{field:"createdDate",order:"asc",label:c("Created Date (Oldest First)")}],n=new vd.DropdownComponent(r);i.forEach(l=>{let d=`${l.field}-${l.order}`;n.addOption(d,l.label)});let o=`${this.sortOption.field}-${this.sortOption.order}`;n.setValue(o),n.onChange(l=>{let[d,u]=l.split("-"),p=i.find(m=>m.field===d&&m.order===u)||this.sortOption;(p.field!==this.sortOption.field||p.order!==this.sortOption.order)&&(""+this.sortOption.field+this.sortOption.order+p.field+p.order,this.sortOption=p,this.forceRefreshAll())})}createFilterSection(){this.filterContainerEl=this.containerEl.createDiv("tg-quadrant-filter-container")}createQuadrantGrid(){this.columnContainerEl=this.containerEl.createDiv("tg-quadrant-grid"),fp.forEach(e=>{let t=this.columnContainerEl.createDiv(`tg-quadrant-column ${e.className}`),a=new uS(this.app,this.plugin,t,e,{onTaskStatusUpdate:async(r,i)=>{this.params.onTaskStatusUpdate&&await this.params.onTaskStatusUpdate(r,i),setTimeout(()=>{this.refreshSelectively()},100)},onTaskSelected:this.params.onTaskSelected,onTaskCompleted:this.params.onTaskCompleted,onTaskContextMenu:this.params.onTaskContextMenu,onTaskUpdated:this.params.onTaskUpdated});this.addChild(a),this.columns.push(a),this.setupDragAndDrop(t,e)})}setupDragAndDrop(e,t){let a=e.querySelector(".tg-quadrant-column-content");if(!a)return;let r=!vd.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0,i=new Js(a,{group:"quadrant-tasks",animation:150,ghostClass:"tg-quadrant-card--ghost",dragClass:"tg-quadrant-card--dragging",delay:r?150:0,touchStartThreshold:r?5:3,forceFallback:!1,fallbackOnBody:!0,scroll:!0,scrollSensitivity:r?50:30,scrollSpeed:r?15:10,bubbleScroll:!0,onEnd:n=>{this.handleSortEnd(n,t)}});this.sortableInstances.push(i)}handleTaskReorder(e,t){let r=e.item.getAttribute("data-task-id");!r||e.oldIndex===e.newIndex||!this.tasks.find(n=>n.id===r)||""+r+e.oldIndex+e.newIndex+t.id}async handleSortEnd(e,t){e.oldIndex,e.newIndex;let a=e.item.dataset.taskId,r=e.to,i=e.from;if(a&&r&&i){let n=r.getAttribute("data-quadrant-id"),o=fp.find(u=>u.id===n),l=i.getAttribute("data-quadrant-id"),d=fp.find(u=>u.id===l);o&&d&&(n!==l?(""+a+l+n,await this.updateTaskQuadrant(a,o,d)):e.oldIndex!==e.newIndex&&(""+a+n,this.handleTaskReorder(e,o)))}}async updateTaskQuadrant(e,t,a){let r=this.tasks.find(i=>i.id===e);if(!!r)try{let i={...r};i.metadata||(i.metadata={tags:[],children:[]});let n=[...i.metadata.tags||[]],o=[];if(a)a.urgentTag&&o.push(a.urgentTag),a.importantTag&&o.push(a.importantTag);else{let u=this.quadrantConfig.urgentTag||"#urgent",p=this.quadrantConfig.importantTag||"#important";o.push(u),o.push(p)}let l=n.filter(u=>!o.includes(u));if(t.urgentTag&&(l.includes(t.urgentTag)||l.push(t.urgentTag)),t.importantTag&&(l.includes(t.importantTag)||l.push(t.importantTag)),i.metadata.tags=l,this.quadrantConfig.usePriorityForClassification)switch(t.id){case"urgent-important":i.metadata.priority=5;break;case"not-urgent-important":i.metadata.priority=4;break;case"urgent-not-important":i.metadata.priority=3;break;case"not-urgent-not-important":i.metadata.priority=2;break}i.metadata.customFields||(i.metadata.customFields={}),i.metadata.customFields.quadrant=t.id,i.metadata.customFields.lastQuadrantUpdate=Date.now(),this.params.onTaskUpdated&&await this.params.onTaskUpdated(i);let d=this.tasks.findIndex(u=>u.id===e);d!==-1&&(this.tasks[d]=i),this.showUpdateFeedback(r,t),setTimeout(()=>{this.refresh()},500)}catch(i){console.error("Failed to update task quadrant:",i),this.showErrorFeedback(r,i)}}showUpdateFeedback(e,t){let a=document.createElement("div");a.className="tg-quadrant-update-feedback",a.innerHTML=`
<div class="tg-quadrant-feedback-content">
<span class="tg-quadrant-feedback-icon">${t.priorityEmoji}</span>
<span class="tg-quadrant-feedback-text">
${c("Task moved to")} ${t.title}
</span>
</div>
`,this.containerEl.appendChild(a),setTimeout(()=>{a.addClass("tg-quadrant-feedback--show")},10),setTimeout(()=>{a.addClass("tg-quadrant-feedback--hide"),setTimeout(()=>{a.remove()},300)},2e3)}showErrorFeedback(e,t){console.error("Task update error:",t);let a=document.createElement("div");a.className="tg-quadrant-update-feedback tg-quadrant-feedback--error",a.innerHTML=`
<div class="tg-quadrant-feedback-content">
<span class="tg-quadrant-feedback-icon">\u26A0\uFE0F</span>
<span class="tg-quadrant-feedback-text">
${c("Failed to update task")}
</span>
</div>
`,this.containerEl.appendChild(a),setTimeout(()=>{a.addClass("tg-quadrant-feedback--show")},10),setTimeout(()=>{a.addClass("tg-quadrant-feedback--hide"),setTimeout(()=>{a.remove()},300)},3e3)}categorizeTasksByQuadrant(e){let t=new Map;return fp.forEach(a=>{t.set(a.id,[])}),e.forEach(a=>{let r=this.determineTaskQuadrant(a),i=t.get(r)||[];i.push(a),t.set(r,i)}),t}determineTaskQuadrant(e){var r,i;let t=!1,a=!1;if(this.quadrantConfig.usePriorityForClassification){let n=((r=e.metadata)==null?void 0:r.priority)||0,o=this.quadrantConfig.urgentPriorityThreshold||4,l=this.quadrantConfig.importantPriorityThreshold||3;t=n>=o,a=n>=l}else{let n=e.content.toLowerCase(),o=((i=e.metadata)==null?void 0:i.tags)||[],l=(this.quadrantConfig.urgentTag||"#urgent").toLowerCase(),d=n.includes(l)||o.includes(l),u=this.isTaskUrgent(e);t=d||u;let p=(this.quadrantConfig.importantTag||"#important").toLowerCase(),m=n.includes(p)||o.includes(p),f=this.isTaskImportant(e);a=m||f}return t&&a?"urgent-important":!t&&a?"not-urgent-important":t&&!a?"urgent-not-important":"not-urgent-not-important"}isTaskUrgent(e){var n,o;let t=/[🔺⏫]/.test(e.content),a=((n=e.metadata)==null?void 0:n.priority)&&e.metadata.priority>=4,r=(this.quadrantConfig.urgentThresholdDays||3)*24*60*60*1e3,i=((o=e.metadata)==null?void 0:o.dueDate)&&e.metadata.dueDate<=Date.now()+r;return t||a||!!i}isTaskImportant(e){var i;let t=/[🔺⏫🔼]/.test(e.content),a=((i=e.metadata)==null?void 0:i.priority)&&e.metadata.priority>=3,r=/\b(goal|project|milestone|strategic)\b/i.test(e.content);return t||a||r}setTasks(e){this.allTasks=[...e],this.applyFilters()}applyFilters(){let e=[...this.allTasks];this.tasks=e,this.refreshSelectively()}refresh(){this.refreshSelectively()}refreshSelectively(){if(!this.columns.length)return;let e=this.categorizeTasksByQuadrant(this.tasks);this.columns.forEach(t=>{let a=t.getQuadrantId(),r=e.get(a)||[],i=t.getTasks();if(this.hasTasksChanged(i,r)){""+a;let n=this.sortTasks(r);t.setTasks(n),this.hideEmptyColumns&&t.isEmpty()?t.setVisibility(!1):t.setVisibility(!0),!t.isEmpty()&&!t.isLoaded()&&setTimeout(()=>{t.forceLoadContent()},50)}else""+a})}hasTasksChanged(e,t){if(e.length!==t.length)return!0;if(e.length===0&&t.length===0)return!1;let a=new Set(e.map(o=>o.id)),r=new Set(t.map(o=>o.id));if(a.size!==r.size)return!0;for(let o of a)if(!r.has(o))return!0;for(let o=0;o<e.length;o++)if(e[o].id!==t[o].id)return!0;let i=new Map(e.map(o=>[o.id,o])),n=new Map(t.map(o=>[o.id,o]));for(let[o,l]of n){let d=i.get(o);if(!d||this.hasTaskContentChanged(d,l))return!0}return!1}hasTaskContentChanged(e,t){if(e.content!==t.content||e.status!==t.status)return!0;if(e.metadata&&t.metadata){if(e.metadata.priority!==t.metadata.priority||e.metadata.dueDate!==t.metadata.dueDate||e.metadata.scheduledDate!==t.metadata.scheduledDate||e.metadata.startDate!==t.metadata.startDate)return!0;let a=e.metadata.tags||[],r=t.metadata.tags||[];if(a.length!==r.length||!a.every(i=>r.includes(i)))return!0}else if(e.metadata!==t.metadata)return!0;return!1}forceRefreshAll(){if(!this.columns.length)return;let e=this.categorizeTasksByQuadrant(this.tasks);this.columns.forEach(t=>{let a=t.getQuadrantId(),r=e.get(a)||[],i=this.sortTasks(r);t.setTasks(i),this.hideEmptyColumns&&t.isEmpty()?t.setVisibility(!1):t.setVisibility(!0)}),setTimeout(()=>{this.forceLoadAllColumns()},200)}forceLoadAllColumns(){this.columns.forEach(e=>{e.isEmpty()||e.forceLoadContent()})}updateQuadrant(e,t){let a=this.columns.find(n=>n.getQuadrantId()===e);if(!a){console.warn(`Quadrant column not found: ${e}`);return}let r;t?r=t:r=this.categorizeTasksByQuadrant(this.tasks).get(e)||[];let i=this.sortTasks(r);a.setTasks(i),this.hideEmptyColumns&&a.isEmpty()?a.setVisibility(!1):a.setVisibility(!0),""+e+i.length}updateQuadrants(e){e.forEach(({quadrantId:t,tasks:a})=>{this.updateQuadrant(t,a)})}sortTasks(e){let t=[...e];return""+e.length+this.sortOption.field+this.sortOption.order,t.sort((a,r)=>{var o,l,d,u,p,m,f,h;let i,n;switch(this.sortOption.field){case"priority":i=this.getTaskPriorityValue(a),n=this.getTaskPriorityValue(r);break;case"dueDate":i=((o=a.metadata)==null?void 0:o.dueDate)||0,n=((l=r.metadata)==null?void 0:l.dueDate)||0;break;case"scheduledDate":i=((d=a.metadata)==null?void 0:d.scheduledDate)||0,n=((u=r.metadata)==null?void 0:u.scheduledDate)||0;break;case"startDate":i=((p=a.metadata)==null?void 0:p.startDate)||0,n=((m=r.metadata)==null?void 0:m.startDate)||0;break;case"createdDate":i=((f=a.metadata)==null?void 0:f.createdDate)||0,n=((h=r.metadata)==null?void 0:h.createdDate)||0;break;default:return 0}return this.sortOption.order==="asc"?i>n?1:i<n?-1:0:i<n?1:i>n?-1:0}),t.length>0&&t.slice(0,3).map(a=>{var r,i;return{id:a.id,content:a.content.substring(0,50),priority:this.getTaskPriorityValue(a),dueDate:(r=a.metadata)==null?void 0:r.dueDate,scheduledDate:(i=a.metadata)==null?void 0:i.scheduledDate}}),t}getTaskPriorityValue(e){var t;return((t=e.metadata)==null?void 0:t.priority)&&typeof e.metadata.priority=="number"?e.metadata.priority:e.content.includes("\u{1F53A}")?5:e.content.includes("\u23EB")?4:e.content.includes("\u{1F53C}")?3:e.content.includes("\u{1F53D}")?2:e.content.includes("\u23EC")?1:0}getQuadrantStats(){let e=this.categorizeTasksByQuadrant(this.tasks),t={};return fp.forEach(a=>{var r;t[a.id]=((r=e.get(a.id))==null?void 0:r.length)||0}),t}};var q_=class{static createComponent(e,t,a,r,i,n){var l,d;let o=yt(r,t);switch(e){case"kanban":return new In(a,r,i,[],{onTaskStatusUpdate:n.onTaskStatusUpdate,onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onTaskContextMenu:n.onTaskContextMenu},t);case"calendar":return new An(a,r,i,[],{onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onEventContextMenu:n.onEventContextMenu},t);case"gantt":return new Rn(r,i,{onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onTaskContextMenu:n.onTaskContextMenu},t);case"twocolumn":return((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"?new Fn(i,a,r,o.specificConfig,t):null;case"forecast":return new En(i,a,r,{onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onTaskContextMenu:n.onTaskContextMenu,onTaskUpdate:n.onTaskUpdate});case"table":return((d=o.specificConfig)==null?void 0:d.viewType)==="table"?new dS(a,r,i,o.specificConfig,{onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onTaskContextMenu:n.onTaskContextMenu,onTaskUpdated:async u=>{r.taskManager&&await r.taskManager.updateTask(u)}}):null;case"quadrant":return new pS(a,r,i,[],{onTaskStatusUpdate:n.onTaskStatusUpdate,onTaskSelected:n.onTaskSelected,onTaskCompleted:n.onTaskCompleted,onTaskContextMenu:n.onTaskContextMenu,onTaskUpdated:async u=>{r.taskManager&&await r.taskManager.updateTask(u)}},t);default:return null}}},El=class extends Bk.Component{constructor(e,t,a,r,i){super();this.components=new Map;this.parentComponent=e,this.app=t,this.plugin=a,this.parentEl=r,this.handlers=i}getOrCreateComponent(e){var n;if(this.components.has(e))return this.components.get(e);let a=(n=yt(this.plugin,e).specificConfig)==null?void 0:n.viewType,r=null;if(a?r=a:["calendar","kanban","gantt","forecast","table","quadrant"].includes(e)&&(r=e),!r)return null;let i=q_.createComponent(r,e,this.app,this.plugin,this.parentEl,this.handlers);return i&&(i instanceof Bk.Component&&this.parentComponent.addChild(i),i.load&&i.load(),i.containerEl.hide(),this.components.set(e,i)),i}hideAllComponents(){this.components.forEach(e=>{e.containerEl.hide()})}showComponent(e){let t=this.getOrCreateComponent(e);return t&&t.containerEl.show(),t}isSpecialView(e){var r;let a=(r=yt(this.plugin,e).specificConfig)==null?void 0:r.viewType;return["calendar","kanban","gantt","forecast","table"].includes(e),!!(a||["calendar","kanban","gantt","forecast","table"].includes(e))}cleanup(){this.components.forEach(e=>{e instanceof Bk.Component&&this.parentComponent.removeChild(e),e.unload&&e.unload()}),this.components.clear()}getAllComponents(){return this.components.entries()}onunload(){this.cleanup()}};var di=A(require("obsidian"));var G_=A(require("obsidian"));$s();function $K(s,e){let t=[],a=new Date(s),r=new Date(e);for(;a<=r;)t.push(`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`),a.setDate(a.getDate()+1);return t}var Vi=class extends G_.Component{constructor(e,t,a){super();this.habit=e;this.container=t;this.plugin=a;this.heatmapDateRange=30}render(){this.container.empty()}getHabitData(){var t;return((t=this.plugin.habitManager)==null?void 0:t.habits)||[]}renderProgressBar(e,t,a){let r=e.createDiv({cls:"habit-progress-container"}),i=r.createDiv({cls:"habit-progress-bar"}),n=r.createDiv({cls:"habit-progress-text"});t=Math.max(0,t),a=Math.max(1,a);let o=a>0?Math.min(100,Math.max(0,t/a*100)):0;i.style.width=`${o}%`,n.setText(`${t}/${a}`),r.setAttribute("aria-label",`Progress: ${t} out of ${a}`),t===a?r.toggleClass("filled",!0):r.toggleClass("filled",!1)}renderHeatmap(e,t,a,r,i){let n={sm:18,md:18,lg:30},l=e.createDiv({cls:`tg-heatmap-root heatmap-${a}`}).createDiv({cls:"heatmap-container-simple"}),d=new Date,u=new Date(d.getTime()-(n[a]-1)*24*60*60*1e3);$K(Dm(u),Dm(d)).reverse().forEach(m=>{let f=t[m],h=r(f),k=i?i(f):null,g=l.createDiv({cls:"heatmap-cell heatmap-cell-square"});g.dataset.date=m;let y=`${m}: `;f==null?y+="Missed":typeof f=="object"?g.hasAttribute("aria-label")||(y+="Recorded"):typeof f=="number"&&a==="sm"?y+=`${f} times`:typeof f=="number"&&k?y+=`${k instanceof HTMLElement?k.textContent:k}`:h?y+="Completed":y+="Missed",g.hasAttribute("aria-label")||g.setAttribute("aria-label",y),k?(g.addClass("has-custom-content"),typeof k=="string"?(g.addClass("has-text-content"),g.setText(k)):k instanceof HTMLElement&&g.appendChild(k)):h?g.addClass("filled"):g.addClass("default")})}toggleHabitCompletion(e,t){var d,u;""+e;let a=this.getHabitData(),r=a.findIndex(p=>p.id===e);if(r===-1){console.error("Habit not found:",e);return}let i=JSON.parse(JSON.stringify(a[r])),n=Vs(),o;i.completions=i.completions||{};let l=i.completions[n];switch(i.type){case"daily":i.completionText?o=l===1?0:1:o=l?0:1;break;case"count":o=(typeof l=="number"?l:0)+1;break;case"scheduled":if(!t||!t.id){console.error("Missing event data for scheduled habit toggle");return}o={...typeof l=="object"&&l!==null?l:{},[t.id]:(d=t.details)!=null?d:""};break;case"mapping":if(t==null||typeof t!="number"){console.error("Invalid value for mapping habit toggle");return}if(!i.mapping[t]){console.error(`Invalid mapping value: ${t}`);return}o=t;break;default:console.error("Unhandled habit type in toggleCompletion");return}i.completions[n]=o,(u=this.plugin.habitManager)==null||u.updateHabitInObsidian(i,n)}};var hp=A(require("obsidian"));Q();$s();var Wk=class extends Vi{constructor(e,t,a){super(e,t,a);this.habit=e;this.container=t;this.plugin=a}onload(){super.onload(),this.render()}render(){super.render();let e=this.container.createDiv({cls:"habit-card daily-habit-card"}),t=e.createDiv({cls:"card-header"}),a=t.createDiv({cls:"card-title"}),r=a.createSpan({cls:"habit-icon"});(0,hp.setIcon)(r,this.habit.icon||"dice");let i=this.habit.completionText?`${this.habit.name} (${this.habit.completionText})`:this.habit.name;a.createSpan({text:i,cls:"habit-name"}).onClickEvent(()=>{new hp.Notice(`Chart for ${this.habit.name} (Not Implemented)`)});let o=t.createDiv({cls:"habit-checkbox-container"}).createEl("input",{type:"checkbox",cls:"habit-checkbox"}),l=Vs(),d=!1,u=this.habit.completions[l];this.habit.completionText?d=u===1:d=!!u,o.checked=d,this.registerDomEvent(o,"click",m=>{m.preventDefault(),this.toggleHabitCompletion(this.habit.id),d||new hp.Notice(`${c("Completed")} ${this.habit.name}! \u{1F389}`)});let p=e.createDiv({cls:"card-content-wrapper"});this.renderHeatmap(p,this.habit.completions,"lg",m=>this.habit.completionText?m===1:m>0)}};var gp=A(require("obsidian"));Q();$s();var _k=class extends Vi{constructor(e,t,a){super(e,t,a);this.habit=e;this.container=t;this.plugin=a}onload(){super.onload(),this.render()}render(){var d;super.render();let t=this.container.createDiv({cls:"habit-card count-habit-card"}).createDiv({cls:"card-content-wrapper"}),a=new gp.ButtonComponent(t).setClass("habit-icon-button").setIcon(this.habit.icon||"plus-circle").onClick(()=>{this.toggleHabitCompletion(this.habit.id),this.habit.max&&i+1===this.habit.max?new gp.Notice(`${c("Goal reached")} ${this.habit.name}! \u2705`):this.habit.max&&i+1>this.habit.max&&new gp.Notice(`${c("Exceeded goal")} ${this.habit.name}! \u{1F4AA}`)}),r=Vs(),i=(d=this.habit.completions[r])!=null?d:0,n=t.createDiv({cls:"habit-info"},u=>{u.createEl("div",{cls:"habit-card-name",text:this.habit.name}),u.createEl("span",{cls:"habit-active-day",text:this.habit.completions[r]?`${c("Active")} ${c("today")}`:`${c("Inactive")} ${c("today")}`})}),o=t.createDiv({cls:"habit-progress-area"}),l=o.createDiv({cls:"habit-heatmap-small"});this.habit.max&&this.habit.max>0&&(this.renderHeatmap(l,this.habit.completions,"md",u=>{var p;return u>=((p=this.habit.max)!=null?p:0)}),this.renderProgressBar(o,i,this.habit.max))}};var bd=A(require("obsidian"));Q();$s();function YK(s,e){if(e<=0)return"";let t=s/e*100,a=8,r=2*Math.PI*a,i=r-t/100*r;return`
<svg viewBox="0 0 20 20" width="100%" height="100%">
<circle cx="10" cy="10" r="${a}" fill="transparent" stroke="var(--background-modifier-border)" stroke-width="3"></circle>
<circle cx="10" cy="10" r="${a}" fill="transparent"
stroke="var(--interactive-accent)"
stroke-width="3"
stroke-dasharray="${r}"
stroke-dashoffset="${i}"
transform="rotate(-90 10 10)">
</circle>
${s>0?`<text x="10" y="10" text-anchor="middle" dy=".3em" font-size="8px" fill="var(--text-muted)">${s}</text>`:""}
</svg>
`}var Vk=class extends Vi{constructor(e,t,a){super(e,t,a);this.habit=e;this.container=t;this.plugin=a}onload(){super.onload(),this.render()}render(){super.render();let e=this.container.createDiv({cls:"habit-card scheduled-habit-card"}),a=e.createDiv({cls:"card-header"}).createDiv({cls:"card-title"}),r=a.createSpan({cls:"habit-icon"});(0,bd.setIcon)(r,this.habit.icon||"calendar-clock"),a.createSpan({text:this.habit.name,cls:"habit-name"}).onClickEvent(()=>{new bd.Notice(`Chart for ${this.habit.name} (Not Implemented)`)});let i=e.createDiv({cls:"card-content-wrapper"}),n=i.createDiv({cls:"habit-heatmap-medium"});this.renderHeatmap(n,this.habit.completions,"md",h=>h&&typeof h=="object"&&Object.keys(h).length>0,h=>{if(!h||typeof h!="object"||Object.keys(h).length===0)return null;let k=Object.keys(h).length,g=Array.isArray(this.habit.events)?this.habit.events.length:0,y=createDiv({cls:"pie-dot-container"});y.innerHTML=YK(k,g);let w=Object.entries(h).map(([v,T])=>T?`${v}: ${T}`:v).join(`
`);return y.setAttribute("aria-label",w||"No events completed"),y});let o=i.createDiv({cls:"habit-controls"}),l=Vs(),d=typeof this.habit.completions[l]=="object"&&this.habit.completions[l]!==null?this.habit.completions[l]:{},u=Object.keys(d).length,p=Array.isArray(this.habit.events)?this.habit.events.length:0,m=p>0&&u>=p,f=new bd.DropdownComponent(o).addOption("",m?c("All Done!"):c("Select event...")).setValue("").onChange(h=>{h&&new mS(this.plugin.app,h,k=>{this.toggleHabitCompletion(this.habit.id,{id:h,details:k})}).open(),f.setValue("")}).setDisabled(m||p===0);Array.isArray(this.habit.events)&&this.habit.events.forEach(h=>{(h==null?void 0:h.name)&&!d[h.name]&&f.addOption(h.name,h.name)}),f.selectEl.toggleClass("habit-event-dropdown",!0),this.renderProgressBar(o,u,p)}};var jn=A(require("obsidian"));$s();var Uk=class extends Vi{constructor(e,t,a){super(e,t,a);this.habit=e;this.container=t;this.plugin=a}onload(){super.onload(),this.render()}render(){var g,y;super.render();let e=this.container.createDiv({cls:"habit-card mapping-habit-card"}),a=e.createDiv({cls:"card-header"}).createDiv({cls:"card-title"}),r=a.createSpan({cls:"habit-icon"});(0,jn.setIcon)(r,this.habit.icon||"smile-plus"),a.createSpan({text:this.habit.name,cls:"habit-name"});let i=e.createDiv({cls:"card-content-wrapper"}),n=i.createDiv({cls:"habit-heatmap-medium"});this.renderHeatmap(n,this.habit.completions,"md",w=>typeof w=="number"&&w>0,w=>{var x;if(typeof w!="number"||w<=0)return null;let v=((x=this.habit.mapping)==null?void 0:x[w])||"?",T=createSpan({text:v});return this.habit.mapping&&this.habit.mapping[w]?(T.setAttribute("aria-label",`${this.habit.mapping[w]}`),T.addClass("has-tooltip")):T.setAttribute("aria-label",`Value: ${w}`),T});let o=i.createDiv({cls:"habit-controls"}),l=Vs(),d=Object.keys(this.habit.mapping||{}).map(Number).includes(3)?3:Object.keys(this.habit.mapping||{}).map(Number).sort((w,v)=>w-v)[0]||1,u=(g=this.habit.completions[l])!=null?g:d,p=new jn.ButtonComponent(o).setButtonText(((y=this.habit.mapping)==null?void 0:y[u])||"?").setClass("habit-mapping-button").onClick(()=>{var w;if(u>0&&((w=this.habit.mapping)==null?void 0:w[u])){this.toggleHabitCompletion(this.habit.id,u);let v=this.habit.mapping&&this.habit.mapping[u]?`Recorded ${this.habit.name} as ${this.habit.mapping[u]}`:`Recorded ${this.habit.name} as ${this.habit.mapping[u]}`;new jn.Notice(v)}else new jn.Notice("Please select a valid value using the slider first.")}),m=new jn.SliderComponent(o),f=Object.keys(this.habit.mapping||{}).map(Number).sort((w,v)=>w-v),h=f[0]||1,k=f[f.length-1]||5;m.setLimits(h,k,1).setValue(u).setDynamicTooltip().onChange(w=>{var v,T;u=w,(v=this.habit.mapping)==null||v[u],p.buttonEl.setText(((T=this.habit.mapping)==null?void 0:T[u])||"?")})}};Q();var Dl=class extends di.Component{constructor(e,t){super();this.redraw=()=>{let e=this.containerEl.scrollTop;this.containerEl.empty();let t=this.getHabitData();!t||t.length===0?this.renderEmptyState():this.renderHabitList(t),this.containerEl.scrollTop=e};this.plugin=e,this.containerEl=t.createDiv("tg-habit-component-container")}async onload(){this.plugin&&this.registerEvent(this.plugin.app.workspace.on("task-genius:habit-index-updated",()=>{this.redraw()})),this.redraw()}onunload(){this.containerEl.empty()}getHabitData(){var t;return((t=this.plugin.habitManager)==null?void 0:t.habits)||[]}renderEmptyState(){let e=this.containerEl.createDiv({cls:"habit-empty-state"});e.createEl("h2",{text:c("No Habits Yet")}),e.createEl("p",{text:c("Click the open habit button to create a new habit.")}),e.createEl("br"),new di.ButtonComponent(e).setButtonText("Open Habit").onClick(()=>{this.plugin.app.setting.open(),this.plugin.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("habit")})}renderHabitList(e){let t=this.containerEl.createDiv({cls:"habit-list-container"});e.forEach(a=>{let r=t.createDiv({cls:"habit-card-wrapper"});this.renderHabitCard(r,a)})}renderHabitCard(e,t){switch(t.completions=t.completions||{},t.type){case"daily":let a=new Wk(t,e,this.plugin);this.addChild(a);break;case"count":let r=new _k(t,e,this.plugin);this.addChild(r);break;case"scheduled":let i=new Vk(t,e,this.plugin);this.addChild(i);break;case"mapping":let n=new Uk(t,e,this.plugin);this.addChild(n);break;default:let o=t;console.warn(`Unsupported habit type: ${o==null?void 0:o.type}`),e.createDiv({text:`Unsupported habit: ${(o==null?void 0:o.name)||"Unknown"}`})}}},mS=class extends di.Modal{constructor(e,t,a){super(e);this.details="";this.eventName=t,this.onSubmit=a}onOpen(){let{contentEl:e}=this;e.addClass("habit-event-modal"),e.createEl("h2",{text:`Record Details for ${this.eventName}`}),new di.Setting(e).setName("Details").addText(t=>t.setPlaceholder(`Enter details for ${this.eventName}...`).onChange(a=>{this.details=a})),new di.Setting(e).addButton(t=>t.setButtonText("Cancel").setWarning().onClick(()=>{this.close()})).addButton(t=>t.setButtonText("Submit").setCta().onClick(()=>{if(this.close(),!this.details){new di.Notice(c("Please enter details"));return}this.onSubmit(this.details)}))}onClose(){let{contentEl:e}=this;e.empty()}};var X_=A(require("obsidian"));var K_=A(require("obsidian"));var Td=class extends K_.Modal{constructor(e,t,a){super(e);this.leafId=t;this.filterCloseCallback=null;this.plugin=a}onOpen(){let{contentEl:e}=this;e.empty(),this.taskFilterComponent=new Ai(this.contentEl,this.app,this.leafId,this.plugin)}onClose(){let{contentEl:e}=this,t;if(this.taskFilterComponent)try{t=this.taskFilterComponent.getFilterState(),this.taskFilterComponent.onunload()}catch(a){console.error("Failed to get filter state before modal close",a)}if(e.empty(),this.filterCloseCallback)try{this.filterCloseCallback(t)}catch(a){console.error("Error in filter close callback",a)}}};var Q_=A(require("obsidian"));var Cd=class extends Q_.Component{constructor(e,t,a){super();this.leafId=t;this.popoverRef=null;this.popperInstance=null;this.onClose=null;this.clickOutside=e=>{this.popoverRef&&!this.popoverRef.contains(e.target)&&(e.target,this.popoverRef,this.popoverRef.contains(e.target),this.close())};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=a,this.win=e.workspace.containerEl.win||window,this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"task-popover-content"});this.registerDomEvent(t,"click",r=>{r.stopPropagation()}),this.taskFilterComponent=new Ai(t,this.app,this.leafId,this.plugin),this.taskFilterComponent.onload(),this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"filter-menu tg-menu bm-menu"}),this.popoverRef.appendChild(t),document.body.appendChild(this.popoverRef);let a={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=kl(a,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null);let e;if(this.taskFilterComponent)try{e=this.taskFilterComponent.getFilterState()}catch(t){console.error("Failed to get filter state before close",t)}if(this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.taskFilterComponent&&this.taskFilterComponent.onunload(),this.onClose)try{this.onClose(e)}catch(t){console.error("Error in onClose callback",t)}}};var kp="task-genius-specific-view",fS=class extends Ui.ItemView{constructor(e,t){super(e);this.plugin=t;this.twoColumnViewComponents=new Map;this.isDetailsVisible=!1;this.currentViewId="inbox";this.currentSelectedTaskId=null;this.currentSelectedTaskDOM=null;this.lastToggleTimestamp=0;this.currentFilterState=null;this.liveFilterState=null;this.tasks=[];this.debouncedApplyFilter=(0,Ui.debounce)(()=>{this.applyCurrentFilter()},100);this.handleKanbanTaskStatusUpdate=async(e,t)=>{""+e+t;let a=this.tasks.find(r=>r.id===e);if(a){let r=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),i=r?Date.now():void 0;if(a.status!==t||a.completed!==r)try{let n={...a,status:t,completed:r};n.metadata&&(n.metadata.completedDate=i),await this.updateTask(a,n),""+e}catch(n){console.error(`TaskSpecificView failed to update task status from Kanban callback for task ${e}:`,n)}else""+e+t}else console.warn(`TaskSpecificView could not find task with ID ${e} for Kanban status update.`)};var a;this.tasks=this.plugin.preloadedTasks||[],this.scope=new Ui.Scope(this.app.scope),(a=this.scope)==null||a.register(null,"escape",r=>{r.preventDefault(),r.stopPropagation()})}getState(){return{...super.getState(),viewId:this.currentViewId,project:this.currentProject,filterState:this.liveFilterState}}async setState(e,t){if(await super.setState(e,t),e&&typeof e=="object"){let a=e;this.currentViewId=(a==null?void 0:a.viewId)||"inbox",this.currentProject=a==null?void 0:a.project,this.liveFilterState=(a==null?void 0:a.filterState)||null,this.currentFilterState=(a==null?void 0:a.filterState)||null,this.rootContainerEl?this.currentViewId&&this.switchView(this.currentViewId,this.currentProject):this.app.workspace.onLayoutReady(()=>{this.currentViewId&&this.switchView(this.currentViewId,this.currentProject)})}}getViewType(){return kp}getDisplayText(){return yt(this.plugin,this.currentViewId).name}getIcon(){return yt(this.plugin,this.currentViewId).icon}async onOpen(){var a,r,i;this.contentEl.toggleClass("task-genius-view",!0),this.contentEl.toggleClass("task-genius-specific-view",!0),this.rootContainerEl=this.contentEl.createDiv({cls:"task-genius-container no-sidebar"}),this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",async()=>{var o;let n=((o=this.detailsComponent)==null?void 0:o.isCurrentlyEditing())||!1;await this.loadTasks(!1,n)})),this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(n,o)=>{o===this.leaf.id&&(this.liveFilterState=n,this.currentFilterState=n,this.debouncedApplyFilter())})),this.initializeComponents();let t=this.leaf.getViewState().state;this.currentViewId=(t==null?void 0:t.viewId)||"inbox",this.currentProject=t==null?void 0:t.project,this.currentFilterState=(t==null?void 0:t.filterState)||null,this.switchView(this.currentViewId,this.currentProject),await this.loadTasksFast(!0),this.loadTasksWithSyncInBackground(),this.toggleDetailsVisibility(!1),this.createActionButtons(),(a=this.leaf.tabHeaderStatusContainerEl)==null||a.empty(),(r=this.leaf.tabHeaderEl)==null||r.toggleClass("task-genius-tab-header",!0),this.tabActionButton=(i=this.leaf.tabHeaderStatusContainerEl)==null?void 0:i.createEl("span",{cls:"task-genius-action-btn"},n=>{new Ui.ExtraButtonComponent(n).setIcon("check-square").setTooltip(c("Capture")).onClick(()=>{new ka(this.plugin.app,this.plugin,{},!0).open()})}),this.tabActionButton&&this.register(()=>{this.tabActionButton.detach()})}initializeComponents(){this.contentComponent=new li(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new En(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Dn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Pn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new Tl(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new An(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new In(this.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Rn(this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitsComponent=new Dl(this.plugin,this.rootContainerEl),this.addChild(this.habitsComponent),this.habitsComponent.containerEl.hide(),this.detailsComponent=new en(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new El(this,this.app,this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.viewComponentManager),this.setupComponentEvents()}createActionButtons(){this.detailsToggleBtn=this.addAction("panel-right-dashed",c("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible),this.addAction("notebook-pen",c("Capture"),()=>{new ka(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",c("Filter"),e=>{if(X_.Platform.isDesktop){let t=new Cd(this.plugin.app,this.leaf.id,this.plugin);t.onClose=a=>{},this.app.workspace.onLayoutReady(()=>{setTimeout(()=>{if(this.liveFilterState&&t.taskFilterComponent){let a=this.liveFilterState;t.taskFilterComponent.loadFilterState(a)}},100)}),t.showAtPosition({x:e.clientX,y:e.clientY})}else{let t=new Td(this.plugin.app,this.leaf.id,this.plugin);t.filterCloseCallback=a=>{},t.open(),this.liveFilterState&&t.taskFilterComponent&&setTimeout(()=>{let a=this.liveFilterState;t.taskFilterComponent.loadFilterState(a)},100)}})}onPaneMenu(e){return this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&(e.addItem(t=>{t.setTitle(c("Reset Filter")),t.setIcon("reset"),t.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(t=>{t.setTitle(c("Settings")),t.setIcon("gear"),t.onClick(()=>{this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("view-settings")})}),e}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.rootContainerEl.toggleClass("details-visible",e),this.rootContainerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?c("Hide Details"):c("Show Details"))),e||(this.currentSelectedTaskId=null)}setupComponentEvents(){this.detailsComponent.onTaskToggleComplete=e=>this.toggleTaskCompletion(e),this.detailsComponent.onTaskEdit=e=>this.editTask(e),this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.updateTask(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)}}switchView(e,t){var n,o;this.currentViewId=e,this.currentProject=t,this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(l=>{l.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitsComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let a=null,r=e,i=yt(this.plugin,e);if(((n=i.specificConfig)==null?void 0:n.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let l=i.specificConfig,d=new Fn(this.rootContainerEl,this.app,this.plugin,l,e);this.addChild(d),d.onTaskSelected=u=>{this.handleTaskSelection(u)},d.onTaskCompleted=u=>{this.toggleTaskCompletion(u)},d.onTaskContextMenu=(u,p)=>{this.handleTaskContextMenu(u,p)},this.twoColumnViewComponents.set(e,d)}a=this.twoColumnViewComponents.get(e)}else{let l=(o=i.specificConfig)==null?void 0:o.viewType;if(this.viewComponentManager.isSpecialView(e))a=this.viewComponentManager.showComponent(e);else if(l==="forecast"||e==="forecast")a=this.forecastComponent;else switch(e){case"habit":a=this.habitsComponent;break;case"tags":a=this.tagsComponent;break;case"projects":a=this.projectsComponent;break;case"review":a=this.reviewComponent;break;case"inbox":case"flagged":default:a=this.contentComponent,r=e;break}}if(a){if(""+e,a.constructor.name,a.containerEl.show(),typeof a.setTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),a.setTasks(Ut(this.tasks,e,this.plugin,l),this.tasks)}if(typeof a.updateTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),a.updateTasks(Ut(this.tasks,e,this.plugin,l))}typeof a.setViewMode=="function"&&(""+e+r+t,a.setViewMode(r,t)),this.twoColumnViewComponents.forEach(l=>{if(l&&typeof l.setTasks=="function"&&l.getViewId()===e){let d={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(d.advancedFilter=this.currentFilterState),l.setTasks(Ut(this.tasks,l.getViewId(),this.plugin,d))}}),e==="review"&&typeof a.refreshReviewSettings=="function"&&a.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);this.updateHeaderDisplay(),this.handleTaskSelection(null)}getActiveComponent(){var a,r;if(!this.currentViewId)return null;let e=yt(this.plugin,this.currentViewId);if(((a=e.specificConfig)==null?void 0:a.viewType)==="twocolumn")return this.twoColumnViewComponents.get(this.currentViewId);if(this.viewComponentManager.isSpecialView(this.currentViewId))return null;if(((r=e.specificConfig)==null?void 0:r.viewType)==="forecast"||this.currentViewId==="forecast")return this.forecastComponent;switch(this.currentViewId){case"habit":return this.habitsComponent;case"tags":return this.tagsComponent;case"projects":return this.projectsComponent;case"review":return this.reviewComponent;case"inbox":case"flagged":default:return this.contentComponent}}updateHeaderDisplay(){let e=yt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let a=new Ui.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(r=>{r.setIcon("square-pen"),r.setTitle(c("Switch status"));let i=r.setSubmenu(),n=this.plugin.settings.taskStatusMarks,o=new Map;for(let l of Object.keys(n)){let d=n[l];Array.from(o.values()).includes(d)||o.set(l,d)}for(let[l,d]of o)i.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{Ot(d,t,p)}),u.titleEl.createEl("span",{cls:"status-option",text:l}),u.onClick(()=>{!t.completed&&d.toLowerCase()==="x"?t.metadata.completedDate=Date.now():t.metadata.completedDate=void 0,this.updateTask(t,{...t,status:d,completed:d.toLowerCase()==="x"})})})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.editTask(t)})}),a.showAtMouseEvent(e)}handleTaskSelection(e){if(e){let t=Date.now(),a=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}a>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}async loadTasks(e=!1,t=!1){let a=this.plugin.taskManager;if(!a)return;let r;e?r=await a.getAllTasksWithSync():r=a.getAllTasks(),""+r.length;let i=this.tasks.length!==r.length;this.tasks=r,!t&&i&&(this.currentViewId&&this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons())}async loadTasksFast(e=!1){let t=this.plugin.taskManager;if(!t)return;let a=t.getAllTasksFast();""+a.length;let r=this.tasks.length!==a.length;this.tasks=a,!e&&r&&(this.currentViewId&&this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons())}loadTasksWithSyncInBackground(){let e=this.plugin.taskManager;!e||e.getAllTasksWithSync().then(t=>{t.length!==this.tasks.length&&(this.tasks=t,""+this.tasks.length,this.currentViewId&&this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons())}).catch(t=>{console.warn("Background task sync failed:",t)})}applyCurrentFilter(){this.liveFilterState,this.currentFilterState,this.loadTasks()}async triggerViewUpdate(){this.currentViewId?(this.switchView(this.currentViewId,this.currentProject),this.updateActionButtons()):console.warn("TaskSpecificView: Cannot trigger update, currentViewId is not set.")}updateActionButtons(){let e=this.leaf.view.containerEl.querySelector(".view-action.task-filter-reset");e&&e.remove(),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&this.addAction("reset",c("Reset Filter"),()=>{this.resetCurrentFilter()}).addClass("task-filter-reset")}async toggleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata&&(t.metadata.completedDate=Date.now());let r=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==r&&(t.status=r)}else{t.metadata&&(t.metadata.completedDate=void 0);let r=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=r)}let a=this.plugin.taskManager;!a||await a.updateTask(t)}async handleTaskUpdate(e,t){let a=this.plugin.taskManager;if(!!a){e.content,t.content,e.id,t.id;try{await a.updateTask(t)}catch(r){console.error("Failed to update task:",r)}}}async updateTask(e,t){let a=this.plugin.taskManager;if(!a)throw console.error("Task manager not available for updateTask"),new Error("Task manager not available");try{await a.updateTask(t),""+t.id;let r=this.tasks.findIndex(i=>i.id===e.id);if(r!==-1?this.tasks[r]=t:console.warn("Updated task not found in local list, might reload fully later."),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),this.currentViewId&&!this.detailsComponent.isCurrentlyEditing())this.switchView(this.currentViewId,this.currentProject);else if(this.currentViewId){let i=this.getActiveComponent();i&&typeof i.setTasks=="function"&&i.setTasks(this.tasks,this.tasks)}return t}catch(r){throw console.error(`Failed to update task ${e.id}:`,r),r}}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;let r=this.app.workspace.getLeavesOfType("markdown").find(i=>i.view.file===t)||this.app.workspace.getLeaf("tab");await r.openFile(t,{active:!0,eState:{line:e.line}}),this.app.workspace.setActiveLeaf(r,{focus:!0})}async onClose(){this.twoColumnViewComponents.forEach(e=>{this.removeChild(e)}),this.twoColumnViewComponents.clear(),this.unload(),this.rootContainerEl&&(this.rootContainerEl.empty(),this.rootContainerEl.detach())}onSettingsUpdate(){this.triggerViewUpdate(),this.updateHeaderDisplay()}resetCurrentFilter(){this.liveFilterState=null,this.currentFilterState=null,this.app.saveLocalStorage(`task-genius-view-filter-${this.leaf.id}`,null),this.applyCurrentFilter(),this.updateActionButtons()}};var yp=class extends On.Component{constructor(e,t){super();this.currentViewId="inbox";this.isCollapsed=!1;this.onViewModeChanged=()=>{};this.onProjectSelected=()=>{};this.containerEl=e.createDiv({cls:"task-sidebar"}),this.plugin=t,this.app=t.app}onload(){this.navEl=this.containerEl.createDiv({cls:"sidebar-nav"}),this.renderSidebarItems()}renderSidebarItems(){if(this.navEl.empty(),!this.plugin.settings.viewConfiguration){console.warn("SidebarComponent: viewConfiguration not initialized in settings.");return}let e=["habit","calendar","gantt","kanban"],t=[],a=[];this.plugin.settings.viewConfiguration.forEach(r=>{r.visible&&!e.includes(r.id)&&(r.type==="default"?t.push(r):a.push(r))}),t.forEach(r=>{this.createNavItem(r.id,c(r.name),r.icon)}),a.forEach(r=>{this.createNavItem(r.id,c(r.name),r.icon)}),(t.length>0||a.length>0)&&this.createNavSpacer(),this.plugin.settings.viewConfiguration.forEach(r=>{r.visible&&e.includes(r.id)&&this.createNavItem(r.id,c(r.name),r.icon)}),this.updateActiveItem()}createNavSpacer(){this.navEl.createDiv({cls:"sidebar-nav-spacer"})}createNavItem(e,t,a){let r=this.navEl.createDiv({cls:"sidebar-nav-item",attr:{"data-view-id":e}}),i=r.createSpan({cls:"nav-item-icon"});return(0,On.setIcon)(i,a),r.createSpan({cls:"nav-item-label",text:t}),this.registerDomEvent(r,"click",()=>{this.setViewMode(e),this.onViewModeChanged&&this.onViewModeChanged(e)}),this.registerDomEvent(r,"contextmenu",n=>{var l;let o=new On.Menu;o.addItem(d=>{d.setTitle(c("Open in new tab")).onClick(()=>{this.app.workspace.getLeaf().setViewState({type:kp,state:{viewId:e}})})}).addItem(d=>{d.setTitle(c("Open settings")).onClick(async()=>{let u=this.plugin.settings.viewConfiguration.find(m=>m.id===e);if(!u)return;let p=(u==null?void 0:u.filterRules)||{};new mo(this.app,this.plugin,u,p,(m,f)=>{let h=this.plugin.settings.viewConfiguration.findIndex(k=>k.id===m.id);h!==-1&&(this.plugin.settings.viewConfiguration[h]={...m,filterRules:f},this.plugin.saveSettings(),this.updateActiveItem())}).open()})}).addItem(d=>{d.setTitle(c("Copy view")).onClick(()=>{let u=this.plugin.settings.viewConfiguration.find(p=>p.id===e);!u||new mo(this.app,this.plugin,null,null,(p,m)=>{this.plugin.settings.viewConfiguration.some(f=>f.id===p.id)?new On.Notice(c("Error: View ID already exists.")):(this.plugin.settings.viewConfiguration.push({...p,filterRules:m}),this.plugin.saveSettings(),this.renderSidebarItems(),new On.Notice(c("View copied successfully: ")+p.name))},u).open()})}).addItem(d=>{d.setTitle(c("Hide in sidebar")).onClick(()=>{let u=this.plugin.settings.viewConfiguration.find(p=>p.id===e);!u||(u.visible=!1,this.plugin.saveSettings(),this.renderSidebarItems())})}),((l=this.plugin.settings.viewConfiguration.find(d=>d.id===e))==null?void 0:l.type)==="custom"&&o.addItem(d=>{d.setTitle(c("Delete")).setWarning(!0).onClick(()=>{this.plugin.settings.viewConfiguration=this.plugin.settings.viewConfiguration.filter(u=>u.id!==e),this.plugin.saveSettings(),this.renderSidebarItems()})}),o.showAtMouseEvent(n)}),r}setViewMode(e){this.currentViewId=e,this.updateActiveItem()}updateActiveItem(){this.navEl.querySelectorAll(".sidebar-nav-item").forEach(t=>{t.getAttribute("data-view-id")===this.currentViewId?t.addClass("is-active"):t.removeClass("is-active")})}setCollapsed(e){this.isCollapsed=e,this.containerEl.toggleClass("collapsed",e)}onunload(){this.containerEl.empty()}};Lr();cn();Q();var Pl="task-genius-view",xd=class extends ea.ItemView{constructor(e,t){super(e);this.plugin=t;this.twoColumnViewComponents=new Map;this.isSidebarCollapsed=!1;this.isDetailsVisible=!1;this.currentViewId="inbox";this.currentSelectedTaskId=null;this.currentSelectedTaskDOM=null;this.lastToggleTimestamp=0;this.tasks=[];this.currentFilterState=null;this.liveFilterState=null;this.debouncedApplyFilter=(0,ea.debounce)(()=>{this.applyCurrentFilter()},100);this.handleKanbanTaskStatusUpdate=async(e,t)=>{""+e+t;let a=this.tasks.find(r=>r.id===e);if(a){let r=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),i=r?Date.now():void 0;if(a.status!==t||a.completed!==r)try{await this.updateTask(a,{...a,status:t,completed:r,metadata:{...a.metadata,completedDate:i}}),""+e}catch(n){console.error(`TaskView failed to update task status from Kanban callback for task ${e}:`,n)}else""+e+t}else console.warn(`TaskView could not find task with ID ${e} for Kanban status update.`)};var a;this.tasks=this.plugin.preloadedTasks||[],this.tasks,this.scope=new ea.Scope(this.app.scope),(a=this.scope)==null||a.register(null,"escape",r=>{r.preventDefault(),r.stopPropagation()})}getViewType(){return Pl}getDisplayText(){return yt(this.plugin,this.currentViewId).name}getIcon(){return yt(this.plugin,this.currentViewId).icon}async onOpen(){var r;this.contentEl.toggleClass("task-genius-view",!0),this.rootContainerEl=this.contentEl.createDiv({cls:"task-genius-container"}),this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",async()=>{var n;let i=((n=this.detailsComponent)==null?void 0:n.isCurrentlyEditing())||!1;await this.loadTasks(!1,i)})),this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(i,n)=>{n&&!n.startsWith("view-config-")&&n!=="global-filter"?(this.liveFilterState=i,this.currentFilterState=i):n||(this.liveFilterState=i,this.currentFilterState=i),this.debouncedApplyFilter()}));let e=this.app.loadLocalStorage("task-genius-view-filter");e&&typeof e.rootCondition=="string"&&Array.isArray(e.filterGroups)?(this.liveFilterState=e,this.currentFilterState=e):(this.liveFilterState=null,this.currentFilterState=null),this.currentFilterState,this.initializeComponents();let t=this.app.loadLocalStorage("task-genius:view-mode"),a=this.plugin.settings.viewConfiguration.find(i=>i.id===t&&i.visible)?t:((r=this.plugin.settings.viewConfiguration.find(i=>i.visible))==null?void 0:r.id)||"inbox";this.currentViewId=a,this.sidebarComponent.setViewMode(this.currentViewId),await this.loadTasksFast(!0),this.switchView(this.currentViewId),this.loadTasksWithSyncInBackground(),this.currentFilterState,this.currentFilterState&&this.applyCurrentFilter(),this.toggleDetailsVisibility(!1),this.createActionButtons(),this.leaf.tabHeaderStatusContainerEl.empty(),this.leaf.tabHeaderEl.toggleClass("task-genius-tab-header",!0),this.tabActionButton=this.leaf.tabHeaderStatusContainerEl.createEl("span",{cls:"task-genius-action-btn"},i=>{new ea.ExtraButtonComponent(i).setIcon("notebook-pen").setTooltip(c("Capture")).onClick(()=>{new ka(this.plugin.app,this.plugin,{},!0).open()})}),this.register(()=>{this.tabActionButton.detach()}),this.checkAndCollapseSidebar(),this.plugin.settings.viewConfiguration.forEach(i=>{this.plugin.addCommand({id:`switch-view-${i.id}`,name:i.name,checkCallback:n=>{if(n)return!0;let o=this.plugin.app.workspace.getLeavesOfType(Pl);return o.length>0?(this.plugin.app.workspace.revealLeaf(o[0]),o[0].view.switchView(i.id)):this.plugin.activateTaskView().then(()=>{let l=this.plugin.app.workspace.getActiveViewOfType(xd);l&&l.switchView(i.id)}),!0}})}),this.updateActionButtons()}onResize(){this.checkAndCollapseSidebar()}checkAndCollapseSidebar(){this.leaf.width===0||this.leaf.height===0||this.leaf.width<768&&(this.isSidebarCollapsed=!0,this.sidebarComponent.setCollapsed(!0))}initializeComponents(){this.sidebarComponent=new yp(this.rootContainerEl,this.plugin),this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.createSidebarToggle(),this.contentComponent=new li(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{e.content,t.content,await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new En(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{e.content,t.content,await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Dn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Pn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new Tl(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onTaskUpdate:async(e,t)=>{await this.handleTaskUpdate(e,t)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new An(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new In(this.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Rn(this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitComponent=new Dl(this.plugin,this.rootContainerEl),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new en(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new El(this,this.app,this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this),onTaskUpdate:this.handleTaskUpdate.bind(this)}),this.addChild(this.viewComponentManager),this.setupComponentEvents()}createSidebarToggle(){var t;let e=(t=this.headerEl.find(".view-header-nav-buttons"))==null?void 0:t.createDiv({cls:"panel-toggle-container"});if(!e){console.error("Could not find .view-header-nav-buttons to add sidebar toggle.");return}this.sidebarToggleBtn=e.createDiv({cls:"panel-toggle-btn"}),new ea.ButtonComponent(this.sidebarToggleBtn).setIcon("panel-left-dashed").setTooltip(c("Toggle Sidebar")).setClass("clickable-icon").onClick(()=>{this.toggleSidebar()})}createActionButtons(){this.detailsToggleBtn=this.addAction("panel-right-dashed",c("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible),this.addAction("notebook-pen",c("Capture"),()=>{new ka(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",c("Filter"),e=>{if(ea.Platform.isDesktop){let t=new Cd(this.plugin.app,void 0,this.plugin);t.onClose=a=>{},this.app.workspace.onLayoutReady(()=>{setTimeout(()=>{if(this.liveFilterState&&t.taskFilterComponent){let a=this.liveFilterState;t.taskFilterComponent.loadFilterState(a)}},100)}),t.showAtPosition({x:e.clientX,y:e.clientY})}else{let t=new Td(this.plugin.app,this.leaf.id,this.plugin);t.filterCloseCallback=a=>{},t.open(),this.liveFilterState&&t.taskFilterComponent&&setTimeout(()=>{let a=this.liveFilterState;t.taskFilterComponent.loadFilterState(a)},100)}}),this.updateActionButtons()}applyCurrentFilter(){this.liveFilterState,this.currentFilterState,this.triggerViewUpdate()}onPaneMenu(e){let t=this.plugin.settings.filterConfig.savedConfigs;return t&&t.length>0&&(e.addItem(a=>{a.setTitle(c("Saved Filters")),a.setIcon("filter");let r=a.setSubmenu();t.forEach(i=>{r.addItem(n=>{n.setTitle(i.name),n.setIcon("search"),i.description&&n.setSection(i.description),n.onClick(()=>{this.applySavedFilter(i)})})}),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Manage Saved Filters")),i.setIcon("settings"),i.onClick(()=>{new po(this.app,this.plugin,"load",void 0,void 0,o=>{this.applySavedFilter(o)}).open()})})}),e.addSeparator()),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&(e.addItem(a=>{a.setTitle(c("Reset Filter")),a.setIcon("reset"),a.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(a=>{a.setTitle(c("Settings")),a.setIcon("gear"),a.onClick(()=>{this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("view-settings")})}).addSeparator().addItem(a=>{a.setTitle(c("Reindex")),a.setIcon("rotate-ccw"),a.onClick(async()=>{new Ss(this.plugin,{title:c("Reindex"),message:c("Are you sure you want to force reindex all tasks?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async r=>{if(!!r)try{await this.plugin.taskManager.forceReindex()}catch(i){console.error("Failed to force reindex tasks:",i),new ea.Notice(c("Failed to force reindex tasks"))}}}).open()})}),e}toggleSidebar(){this.isSidebarCollapsed=!this.isSidebarCollapsed,this.rootContainerEl.toggleClass("sidebar-collapsed",this.isSidebarCollapsed),this.sidebarComponent.setCollapsed(this.isSidebarCollapsed)}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.rootContainerEl.toggleClass("details-visible",e),this.rootContainerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?c("Hide Details"):c("Show Details"))),e||(this.currentSelectedTaskId=null)}setupComponentEvents(){this.detailsComponent.onTaskToggleComplete=e=>this.toggleTaskCompletion(e),this.detailsComponent.onTaskEdit=e=>this.editTask(e),this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.updateTask(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)},this.sidebarComponent.onProjectSelected=e=>{this.switchView("projects",e)},this.sidebarComponent.onViewModeChanged=e=>{this.switchView(e)}}switchView(e,t){var n,o;this.currentViewId=e,this.sidebarComponent.setViewMode(e),this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(l=>{l.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let a=null,r=e,i=yt(this.plugin,e);if(((n=i.specificConfig)==null?void 0:n.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let l=i.specificConfig,d=new Fn(this.rootContainerEl,this.app,this.plugin,l,e);this.addChild(d),d.onTaskSelected=u=>{this.handleTaskSelection(u)},d.onTaskCompleted=u=>{this.toggleTaskCompletion(u)},d.onTaskContextMenu=(u,p)=>{this.handleTaskContextMenu(u,p)},this.twoColumnViewComponents.set(e,d)}a=this.twoColumnViewComponents.get(e)}else{let l=(o=i.specificConfig)==null?void 0:o.viewType;if(this.viewComponentManager.isSpecialView(e))a=this.viewComponentManager.showComponent(e);else if(l==="forecast"||e==="forecast")a=this.forecastComponent;else switch(e){case"habit":a=this.habitComponent;break;case"tags":a=this.tagsComponent;break;case"projects":a=this.projectsComponent;break;case"review":a=this.reviewComponent;break;case"inbox":case"flagged":default:a=this.contentComponent,r=e;break}}if(a){if(""+e,a.constructor.name,a.containerEl.show(),typeof a.setTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),this.tasks,a.setTasks(Ut(this.tasks,e,this.plugin,l),this.tasks)}if(typeof a.updateTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),a.updateTasks(Ut(this.tasks,e,this.plugin,l))}typeof a.setViewMode=="function"&&(""+e+r+t,a.setViewMode(r,t)),this.twoColumnViewComponents.forEach(l=>{if(l&&typeof l.setTasks=="function"&&l.getViewId()===e){let d={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(d.advancedFilter=this.currentFilterState),l.setTasks(Ut(this.tasks,l.getViewId(),this.plugin,d))}}),e==="review"&&typeof a.refreshReviewSettings=="function"&&a.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);if(this.app.saveLocalStorage("task-genius:view-mode",e),this.updateHeaderDisplay(),this.currentSelectedTaskId){let l=this.tasks.find(d=>d.id===this.currentSelectedTaskId);l?this.detailsComponent.showTaskDetails(l):this.handleTaskSelection(null)}this.leaf.tabHeaderInnerIconEl&&((0,ea.setIcon)(this.leaf.tabHeaderInnerIconEl,this.getIcon()),this.leaf.tabHeaderInnerTitleEl.setText(this.getDisplayText()),this.titleEl.setText(this.getDisplayText()))}updateHeaderDisplay(){let e=yt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let a=new ea.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(r=>{r.setIcon("square-pen"),r.setTitle(c("Switch status"));let i=r.setSubmenu(),n=this.plugin.settings.taskStatusMarks,o=new Map;for(let l of Object.keys(n)){let d=n[l];Array.from(o.values()).includes(d)||o.set(l,d)}for(let[l,d]of o)i.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{Ot(d,t,p)}),u.titleEl.createEl("span",{cls:"status-option",text:l}),u.onClick(async()=>{let p={...t,status:d,completed:d.toLowerCase()==="x"};!t.completed&&d.toLowerCase()==="x"?p.metadata.completedDate=Date.now():t.completed&&d.toLowerCase()!=="x"&&(p.metadata.completedDate=void 0),await this.updateTask(t,p)})})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("pencil"),r.onClick(()=>{this.editTask(t)})}),a.showAtMouseEvent(e)}handleTaskSelection(e){if(e){let t=Date.now(),a=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}a>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}async loadTasks(e=!1,t=!1){let a=this.plugin.taskManager;!a||(e?this.tasks=await a.getAllTasksWithSync():this.tasks=a.getAllTasks(),""+this.tasks.length,t||await this.triggerViewUpdate())}async loadTasksFast(e=!1){let t=this.plugin.taskManager;!t||(this.tasks=t.getAllTasksFast(),""+this.tasks.length,e||await this.triggerViewUpdate())}loadTasksWithSyncInBackground(){let e=this.plugin.taskManager;!e||e.getAllTasksWithSync().then(t=>{t.length!==this.tasks.length&&(this.tasks=t,""+this.tasks.length,this.triggerViewUpdate())}).catch(t=>{console.warn("Background task sync failed:",t)})}async triggerViewUpdate(){this.switchView(this.currentViewId),this.updateActionButtons()}updateActionButtons(){let e=this.leaf.view.containerEl.querySelector(".view-action.task-filter-reset");e&&e.remove(),this.liveFilterState&&this.liveFilterState.filterGroups&&this.liveFilterState.filterGroups.length>0&&this.addAction("reset",c("Reset Filter"),()=>{this.resetCurrentFilter()}).addClass("task-filter-reset")}async toggleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata.completedDate=Date.now();let a=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==a&&(t.status=a)}else{t.metadata.completedDate=void 0;let a=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=a)}await this.updateTask(e,t)}async handleTaskUpdate(e,t){let a=this.plugin.taskManager;if(!!a){e.content,t.content,e.id,t.id;try{await a.updateTask(t)}catch(r){throw console.error("Failed to update task:",r),r}}}async updateTask(e,t){let a=this.plugin.taskManager;if(!a)throw console.error("Task manager not available for updateTask"),new Error("Task manager not available");try{await a.updateTask(t),""+t.id;let r=this.tasks.findIndex(n=>n.id===e.id);r!==-1?this.tasks[r]=t:console.warn("Updated task not found in local list, might reload.");let i=e.status!==t.status||e.completed!==t.completed;return!this.detailsComponent.isCurrentlyEditing()||i?this.switchView(this.currentViewId):this.currentViewId==="inbox"||this.currentViewId==="projects"?this.contentComponent.setTasks(this.tasks,this.tasks):this.currentViewId==="forecast"?this.forecastComponent.setTasks(this.tasks):this.currentViewId==="tags"&&this.tagsComponent.setTasks(this.tasks),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),t}catch(r){throw console.error(`Failed to update task ${e.id}:`,r),r}}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!(t instanceof ea.TFile))return;await this.app.workspace.getLeaf(!1).openFile(t,{eState:{line:e.line}})}async onClose(){this.twoColumnViewComponents.forEach(e=>{this.removeChild(e)}),this.twoColumnViewComponents.clear(),this.unload(),this.rootContainerEl.empty(),this.rootContainerEl.detach()}onSettingsUpdate(){typeof this.sidebarComponent.renderSidebarItems=="function"?this.sidebarComponent.renderSidebarItems():console.warn("TaskView: SidebarComponent does not have renderSidebarItems method."),this.switchView(this.currentViewId),this.updateHeaderDisplay()}resetCurrentFilter(){this.liveFilterState=null,this.currentFilterState=null,this.app.saveLocalStorage("task-genius-view-filter",null),this.applyCurrentFilter(),this.updateActionButtons()}applySavedFilter(e){e.name,this.liveFilterState=JSON.parse(JSON.stringify(e.filterState)),this.currentFilterState=JSON.parse(JSON.stringify(e.filterState)),this.liveFilterState,this.app.saveLocalStorage("task-genius-view-filter",this.liveFilterState),this.applyCurrentFilter(),this.updateActionButtons(),new ea.Notice(c("Filter applied: ")+e.name)}};AT();var mt=A(require("obsidian"));Q();cn();Xl();Zl();Lr();Cr();var Sd="tg-timeline-sidebar-view",$k={due:4,scheduled:3,start:2,completed:1},Yk=class extends mt.ItemView{constructor(e,t){super(e);this.markdownEditor=null;this.currentDate=(0,mt.moment)();this.events=[];this.isAutoScrolling=!1;this.isInputCollapsed=!1;this.tempEditorContent="";this.isAnimating=!1;this.collapsedHeaderEl=null;this.quickInputHeaderEl=null;this.debouncedRender=(0,mt.debounce)(async()=>{await this.loadEvents(),this.renderTimeline()},300);this.debouncedScroll=(0,mt.debounce)(this.handleScroll.bind(this),100);this.plugin=t}getViewType(){return Sd}getDisplayText(){return c("Timeline")}getIcon(){return"calendar-clock"}async onOpen(){this.containerEl=this.contentEl,this.containerEl.empty(),this.containerEl.addClass("timeline-sidebar-container"),this.isInputCollapsed=this.plugin.settings.timelineSidebar.quickInputCollapsed,this.createHeader(),this.createTimelineArea(),this.createQuickInputArea(),await this.loadEvents(),this.renderTimeline(),setTimeout(()=>{this.scrollToToday()},100),this.registerEvent(this.plugin.app.vault.on("modify",()=>{this.debouncedRender()})),this.registerEvent(this.plugin.app.workspace.on("task-genius:task-cache-updated",()=>{this.debouncedRender()}))}onClose(){return this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),Promise.resolve()}createHeader(){let e=this.containerEl.createDiv("timeline-header");e.createDiv("timeline-title").setText(c("Timeline"));let a=e.createDiv("timeline-controls"),r=a.createDiv("timeline-btn timeline-today-btn");(0,mt.setIcon)(r,"calendar"),r.setAttribute("aria-label",c("Go to today")),this.registerDomEvent(r,"click",()=>{this.scrollToToday()});let i=a.createDiv("timeline-btn timeline-refresh-btn");(0,mt.setIcon)(i,"refresh-cw"),i.setAttribute("aria-label",c("Refresh")),this.registerDomEvent(i,"click",()=>{this.loadEvents(),this.renderTimeline()});let n=a.createDiv("timeline-btn timeline-focus-btn");(0,mt.setIcon)(n,"focus"),n.setAttribute("aria-label",c("Focus on today")),this.registerDomEvent(n,"click",()=>{this.toggleFocusMode()})}createTimelineArea(){this.timelineContainerEl=this.containerEl.createDiv("timeline-content"),this.registerDomEvent(this.timelineContainerEl,"scroll",()=>{this.debouncedScroll()})}createQuickInputArea(){var d,u;this.quickInputContainerEl=this.containerEl.createDiv("timeline-quick-input"),this.collapsedHeaderEl=this.quickInputContainerEl.createDiv("quick-input-header-collapsed"),this.createCollapsedHeader(),this.quickInputHeaderEl=this.quickInputContainerEl.createDiv("quick-input-header");let e=this.quickInputHeaderEl.createDiv("quick-input-header-left"),t=e.createDiv("quick-input-collapse-btn");(0,mt.setIcon)(t,"chevron-down"),t.setAttribute("aria-label",c("Collapse quick input")),this.registerDomEvent(t,"click",()=>{this.toggleInputCollapse()}),e.createDiv("quick-input-title").setText(c("Quick Capture"));let r=this.quickInputHeaderEl.createDiv("quick-input-target-info");this.updateTargetInfo(r);let i=this.quickInputContainerEl.createDiv("quick-input-editor");setTimeout(()=>{var p,m;this.markdownEditor=yi(this.app,i,{placeholder:c("What do you want to do today?"),onEnter:(f,h,k)=>h?(this.handleQuickCapture(),!0):!1,onEscape:()=>{this.markdownEditor&&this.markdownEditor.set("",!1)},onChange:()=>{}}),this.isInputCollapsed||(m=(p=this.markdownEditor)==null?void 0:p.editor)==null||m.focus()},50);let n=this.quickInputContainerEl.createDiv("quick-input-actions"),o=n.createEl("button",{cls:"quick-capture-btn mod-cta",text:c("Capture")});this.registerDomEvent(o,"click",()=>{this.handleQuickCapture()});let l=n.createEl("button",{cls:"quick-modal-btn",text:c("More options")});this.registerDomEvent(l,"click",()=>{new ka(this.app,this.plugin,{},!0).open()}),this.isInputCollapsed?(this.quickInputContainerEl.addClass("is-collapsed"),(d=this.collapsedHeaderEl)==null||d.show()):(u=this.collapsedHeaderEl)==null||u.hide()}loadEvents(){let e=this.plugin.taskManager.getAllTasks();this.events=[];let t=this.plugin.settings.timelineSidebar.showCompletedTasks,a=this.plugin.settings.taskStatuses.abandoned.split("|");(t?e:e.filter(n=>!n.completed&&!a.includes(n.status))).filter(n=>{var u,p,m;let o=((u=n.source)==null?void 0:u.type)==="ics",l=o?n:null,d=((m=(p=l==null?void 0:l.icsEvent)==null?void 0:p.source)==null?void 0:m.showType)==="badge";return!(o&&d)}).forEach(n=>{this.extractDatesFromTask(n).forEach(({date:l,type:d})=>{let u={id:`${n.id}-${d}`,content:n.content,time:l,type:"task",status:n.status,task:n,isToday:(0,mt.moment)(l).isSame((0,mt.moment)(),"day")};this.events.push(u)})}),this.events.sort((n,o)=>o.time.getTime()-n.time.getTime())}deduplicateDatesByPriority(e){if(e.length<=1)return e;let t=new Map;e.forEach(r=>{let i=(0,mt.moment)(r.date).format("YYYY-MM-DD");t.has(i)||t.set(i,[]),t.get(i).push(r)});let a=[];return t.forEach(r=>{if(r.length===1)a.push(r[0]);else{let i=r.reduce((n,o)=>{let l=$k[o.type]||0,d=$k[n.type]||0;return l>d?o:n});a.push(i)}}),a}extractDatesFromTask(e){if(e.completed){if(e.metadata.dueDate)return[{date:new Date(e.metadata.dueDate),type:"due"}];if(e.metadata.completedDate)return[{date:new Date(e.metadata.completedDate),type:"completed"}]}let t=[];if(e.metadata.dueDate&&t.push({date:new Date(e.metadata.dueDate),type:"due"}),e.metadata.scheduledDate&&t.push({date:new Date(e.metadata.scheduledDate),type:"scheduled"}),e.metadata.startDate&&t.push({date:new Date(e.metadata.startDate),type:"start"}),t.length>0)return[t.reduce((i,n)=>{let o=$k[n.type]||0,l=$k[i.type]||0;return o>l?n:i})];let a=[];return e.metadata.completedDate&&a.push({date:new Date(e.metadata.completedDate),type:"completed"}),this.deduplicateDatesByPriority(a)}renderTimeline(){if(this.timelineContainerEl.empty(),this.events.length===0){this.timelineContainerEl.createDiv("timeline-empty").setText(c("No events to display"));return}let e=this.groupEventsByDate();for(let[t,a]of e)this.renderDateGroup(t,a)}groupEventsByDate(){let e=new Map;return this.events.forEach(t=>{let a=(0,mt.moment)(t.time).format("YYYY-MM-DD");e.has(a)||e.set(a,[]),e.get(a).push(t)}),e}renderDateGroup(e,t){let a=this.timelineContainerEl.createDiv("timeline-date-group"),r=(0,mt.moment)(e),i=r.isSame((0,mt.moment)(),"day"),n=r.isSame((0,mt.moment)().subtract(1,"day"),"day"),o=r.isSame((0,mt.moment)().add(1,"day"),"day");i&&a.addClass("is-today");let l=a.createDiv("timeline-date-header"),d=r.format("MMM DD, YYYY");i?d=c("Today"):n?d=c("Yesterday"):o&&(d=c("Tomorrow")),l.setText(d);let u=l.createSpan("timeline-date-relative");!i&&!n&&!o&&u.setText(r.fromNow());let p=a.createDiv("timeline-events-list");t.forEach(m=>{this.renderEvent(p,m)})}renderEvent(e,t){var d;let a=e.createDiv("timeline-event");a.setAttribute("data-event-id",t.id),((d=t.task)==null?void 0:d.completed)&&a.addClass("is-completed"),a.createDiv("timeline-event-time").setText((0,mt.moment)(t.time).format("HH:mm"));let i=a.createDiv("timeline-event-content");t.task&&i.createDiv("timeline-event-checkbox").createEl("span",{cls:"status-option-checkbox"},p=>{var f;let m=Ot(((f=t.task)==null?void 0:f.status)||" ",t.task,p);this.registerDomEvent(m,"change",async h=>{h.stopPropagation(),h.preventDefault(),t.task&&await this.toggleTaskCompletion(t.task,t)})});let o=i.createDiv("timeline-event-text").createDiv("timeline-event-content-text");if(t.task){let u=new Qt(this.app,o,t.task.filePath,!0);this.addChild(u);let p=this.app.vault.getFileByPath(t.task.filePath);p instanceof mt.TFile&&u.setFile(p),u.render(t.content,!0).catch(m=>{console.error("Failed to render markdown in timeline:",m),o.setText(t.content)})}else o.setText(t.content);let l=a.createDiv("timeline-event-actions");if(t.task){let u=l.createDiv("timeline-event-action");(0,mt.setIcon)(u,"external-link"),u.setAttribute("aria-label",c("Go to task")),this.registerDomEvent(u,"click",()=>{this.goToTask(t.task)})}this.registerDomEvent(a,"click",u=>{let p=u.target;p.closest(".timeline-event-checkbox")||p.closest(".timeline-event-actions")||p.closest('input[type="checkbox"]')||t.task&&this.goToTask(t.task)})}async goToTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;if(e.metadata.sourceType==="canvas"){let i=this.app.workspace.getLeaf("tab");await i.openFile(t),this.app.workspace.setActiveLeaf(i,{focus:!0});return}let r=this.app.workspace.getLeavesOfType("markdown").find(i=>i.view.file===t)||this.app.workspace.getLeaf("tab");await r.openFile(t,{active:!0,eState:{line:e.line}}),this.app.workspace.setActiveLeaf(r,{focus:!0})}async handleQuickCapture(){var t;if(!this.markdownEditor)return;let e=this.markdownEditor.value.trim();if(!!e)try{let a=this.plugin.settings.quickCapture;await wi(this.app,e,a),this.markdownEditor.set("",!1),await this.loadEvents(),this.renderTimeline(),this.plugin.settings.timelineSidebar.quickInputCollapseOnCapture?this.toggleInputCollapse():(t=this.markdownEditor.editor)==null||t.focus()}catch(a){console.error("Failed to capture:",a)}}scrollToToday(){let e=this.timelineContainerEl.querySelector(".timeline-date-group.is-today");e&&(this.isAutoScrolling=!0,e.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{this.isAutoScrolling=!1},1e3))}toggleFocusMode(){this.timelineContainerEl.toggleClass("focus-mode",!this.timelineContainerEl.hasClass("focus-mode"))}handleScroll(){if(this.isAutoScrolling)return;let{scrollTop:e,scrollHeight:t,clientHeight:a}=this.timelineContainerEl;e+a>=t-100&&this.loadMoreEvents()}async loadMoreEvents(){}async toggleTaskCompletion(e,t){let a={...e,completed:!e.completed};if(a.completed){a.metadata.completedDate=Date.now();let i=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];a.status!==i&&(a.status=i)}else{a.metadata.completedDate=void 0;let i=this.plugin.settings.taskStatuses.notStarted||" ";a.status.toLowerCase()==="x"&&(a.status=i)}let r=this.plugin.taskManager;if(!!r)try{if(await r.updateTask(a),t){t.task=a,t.status=a.status;let i=this.timelineContainerEl.querySelector(`[data-event-id="${t.id}"]`);i&&(a.completed?i.addClass("is-completed"):i.removeClass("is-completed"))}await this.loadEvents(),this.renderTimeline()}catch(i){console.error("Failed to toggle task completion:",i),t&&(t.task=e,t.status=e.status)}}updateTargetInfo(e){e.empty();let t=this.plugin.settings.quickCapture,a="";if(t.targetType==="daily-note"){let i=`${(0,mt.moment)().format(t.dailyNoteSettings.format)}.md`,n=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${i}`:i;a=`${c("to")} ${n}`}else a=`${c("to")} ${t.targetFile||"Quick Capture.md"}`;t.targetHeading&&(a+=` \u2192 ${t.targetHeading}`),e.setText(a),e.setAttribute("title",a)}async triggerViewUpdate(){await this.loadEvents(),this.renderTimeline()}async refreshTimeline(){await this.loadEvents(),this.renderTimeline()}createCollapsedHeader(){if(!this.collapsedHeaderEl)return;let e=this.collapsedHeaderEl.createDiv("collapsed-expand-btn");if((0,mt.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",c("Expand quick input")),this.registerDomEvent(e,"click",()=>{this.toggleInputCollapse()}),this.collapsedHeaderEl.createDiv("collapsed-title").setText(c("Quick Capture")),this.plugin.settings.timelineSidebar.quickInputShowQuickActions){let a=this.collapsedHeaderEl.createDiv("collapsed-quick-actions"),r=a.createDiv("collapsed-quick-capture");(0,mt.setIcon)(r,"plus"),r.setAttribute("aria-label",c("Quick capture")),this.registerDomEvent(r,"click",()=>{this.isInputCollapsed&&(this.toggleInputCollapse(),setTimeout(()=>{var n,o;(o=(n=this.markdownEditor)==null?void 0:n.editor)==null||o.focus()},350))});let i=a.createDiv("collapsed-more-options");(0,mt.setIcon)(i,"more-horizontal"),i.setAttribute("aria-label",c("More options")),this.registerDomEvent(i,"click",()=>{new ka(this.app,this.plugin,{},!0).open()})}}toggleInputCollapse(){this.isAnimating||(this.isAnimating=!0,this.isInputCollapsed=!this.isInputCollapsed,this.plugin.settings.timelineSidebar.quickInputCollapsed=this.isInputCollapsed,this.plugin.saveSettings(),this.isInputCollapsed?this.handleCollapseEditor():this.handleExpandEditor(),setTimeout(()=>{this.isAnimating=!1},this.plugin.settings.timelineSidebar.quickInputAnimationDuration))}handleCollapseEditor(){var t;this.markdownEditor&&(this.tempEditorContent=this.markdownEditor.value),this.quickInputContainerEl.addClass("is-collapsing"),this.quickInputContainerEl.addClass("is-collapsed"),setTimeout(()=>{var a;(a=this.collapsedHeaderEl)==null||a.show(),this.quickInputContainerEl.removeClass("is-collapsing")},50);let e=(t=this.quickInputHeaderEl)==null?void 0:t.querySelector(".quick-input-collapse-btn");e&&((0,mt.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",c("Expand quick input")))}handleExpandEditor(){var t,a;(t=this.collapsedHeaderEl)==null||t.hide(),this.quickInputContainerEl.addClass("is-expanding"),this.quickInputContainerEl.removeClass("is-collapsed"),this.markdownEditor&&this.tempEditorContent&&(this.markdownEditor.set(this.tempEditorContent,!1),this.tempEditorContent=""),setTimeout(()=>{var r,i;this.quickInputContainerEl.removeClass("is-expanding"),(i=(r=this.markdownEditor)==null?void 0:r.editor)==null||i.focus()},50);let e=(a=this.quickInputHeaderEl)==null?void 0:a.querySelector(".quick-input-collapse-btn");e&&((0,mt.setIcon)(e,"chevron-down"),e.setAttribute("aria-label",c("Collapse quick input")))}};function J_(){return`<svg width="90" height="90" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="path-1-inside-1_103_18" fill="white">
<path d="M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0Z"/>
</mask>
<path d="M10 0V2C14.4183 2 18 5.58172 18 10H20H22C22 3.37258 16.6274 -2 10 -2V0ZM20 10H18C18 14.4183 14.4183 18 10 18V20V22C16.6274 22 22 16.6274 22 10H20ZM10 20V18C5.58172 18 2 14.4183 2 10H0H-2C-2 16.6274 3.37258 22 10 22V20ZM0 10H2C2 5.58172 5.58172 2 10 2V0V-2C3.37258 -2 -2 3.37258 -2 10H0Z" fill="currentColor" mask="url(#path-1-inside-1_103_18)"/>
<path d="M5 12.2803C5.24589 13.3879 6.48927 15.1059 8.0303 15.7084C8.0303 15.7084 8.66246 12.8308 10.1136 11.125C12.7722 8 15.7386 8 15.7386 8" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`}function Ao(s){switch(s){case"notStarted":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#A1A1A1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="4 4"/>
</svg>
`;case"inProgress":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#BD8E37" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 6H17C17.5523 6 18 6.44772 18 7V17C18 17.5523 17.5523 18 17 18H12V6Z" fill="#BD8E37"/>
</svg>
`;case"planned":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z" stroke="#A1A1A1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
`;case"completed":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 2C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5C2 3.34315 3.34315 2 5 2H19ZM15.707 9.29297C15.3409 8.92685 14.7619 8.90426 14.3691 9.22461L14.293 9.29297L11 12.5859L9.70703 11.293L9.63086 11.2246C9.23809 10.9043 8.65908 10.9269 8.29297 11.293C7.92685 11.6591 7.90426 12.2381 8.22461 12.6309L8.29297 12.707L10.293 14.707L10.3691 14.7754C10.7619 15.0957 11.3409 15.0731 11.707 14.707L15.707 10.707L15.7754 10.6309C16.0957 10.2381 16.0731 9.65908 15.707 9.29297Z" fill="#8E68F5"/>
</svg>
`;case"abandoned":return`<svg width="100" height="100" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 2C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5C2 3.34315 3.34315 2 5 2H19ZM15.707 8.29297C15.3165 7.90244 14.6835 7.90244 14.293 8.29297L12 10.5859L9.70703 8.29297L9.63086 8.22461C9.23809 7.90426 8.65908 7.92685 8.29297 8.29297C7.92685 8.65908 7.90426 9.23809 8.22461 9.63086L8.29297 9.70703L10.5859 12L8.29297 14.293C7.90244 14.6835 7.90244 15.3165 8.29297 15.707C8.68349 16.0976 9.31651 16.0976 9.70703 15.707L12 13.4141L14.293 15.707L14.3691 15.7754C14.7619 16.0957 15.3409 16.0731 15.707 15.707C16.0731 15.3409 16.0957 14.7619 15.7754 14.3691L15.707 14.293L13.4141 12L15.707 9.70703C16.0976 9.31651 16.0976 8.68349 15.707 8.29297Z" fill="#A1A1A1"/>
</svg>`}}var Ed=A(require("obsidian"));var zk=A(require("obsidian"));Q();var hS=class extends zk.Modal{constructor(e,t,a){super(e);this.reward=t,this.onChoose=a}onOpen(){let{contentEl:e}=this;if(e.empty(),this.modalEl.toggleClass("reward-modal",!0),e.addClass("reward-modal-content"),this.setTitle("\u{1F389} "+c("You've Earned a Reward!")+" \u{1F389}"),e.createEl("p",{text:c("Your reward:")+" "+this.reward.name,cls:"reward-name"}),this.reward.imageUrl){let t=e.createDiv({cls:"reward-image-container"});if(this.reward.imageUrl.startsWith("http"))t.createEl("img",{attr:{src:this.reward.imageUrl},cls:"reward-image"});else{let a=this.app.vault.getFileByPath(this.reward.imageUrl);a?t.createEl("img",{attr:{src:this.app.vault.getResourcePath(a)},cls:"reward-image"}):t.createEl("p",{text:`(${c("Image not found:")} ${this.reward.imageUrl})`,cls:"reward-image-error"})}}e.createEl("div",{cls:"reward-spacer"}),new zk.Setting(e).addButton(t=>t.setButtonText(c("Claim Reward")).setCta().onClick(()=>{this.onChoose(!0),this.close()})).addButton(t=>t.setButtonText(c("Skip")).onClick(()=>{this.onChoose(!1),this.close()}))}onClose(){let{contentEl:e}=this;e.empty()}};var gS=class extends Ed.Component{constructor(e){super();this.plugin=e,this.app=e.app,this.settings=e.settings.rewards,this.registerEvent(this.app.workspace.on("task-genius:task-completed",t=>{this.triggerReward(t)}))}async triggerReward(e){var r;if(!this.settings.enableRewards||!((r=this.settings.rewardItems)==null?void 0:r.length))return;let t=this.getEligibleRewards(e);if(!t.length)return;let a=this.drawReward(t);!a||this.showRewardModal(a)}getEligibleRewards(e){return this.settings.rewardItems.filter(t=>{if(t.inventory!==-1&&t.inventory<=0)return!1;if(t.condition&&t.condition.trim())try{if(!this.evaluateCondition(t.condition,e))return!1}catch(a){return console.error(`RewardManager: Error evaluating condition "${t.condition}" for reward "${t.name}":`,a),!1}return!0})}evaluateCondition(e,t){if(!e||!e.trim())return!0;let a=Qr(e);return un(a,t)}drawReward(e){var n;let t=new Map(this.settings.occurrenceLevels.map(o=>[o.name,o.chance])),a=0,r=[];for(let o of e){let l=(n=t.get(o.occurrence))!=null?n:0;l>0&&(r.push({reward:o,weight:l}),a+=l)}if(a<=0)return console.warn("RewardManager: No rewards could be drawn as total weight is zero. Check occurrence levels and chances."),null;let i=Math.random()*a;for(let{reward:o,weight:l}of r){if(i<l)return o;i-=l}return r.length>0?r[r.length-1].reward:null}showRewardModal(e){if(this.settings.showRewardType==="notice"){new Ed.Notice(`\u{1F389} ${e.name}!`,0),this.acceptReward(e);return}new hS(this.app,e,t=>{t?(this.acceptReward(e),new Ed.Notice(`\u{1F389} ${e.name}!`)):new Ed.Notice(`Skipped reward: ${e.name}`)}).open()}async acceptReward(e){if(e.inventory===-1)return;let t=this.settings.rewardItems.findIndex(a=>a.id===e.id);if(t!==-1){let a=this.plugin.settings.rewards.rewardItems[t].inventory;a>0?(this.plugin.settings.rewards.rewardItems[t].inventory--,await this.plugin.saveSettings(),""+e.name+this.plugin.settings.rewards.rewardItems[t].inventory):a!==-1&&console.warn(`RewardManager: Attempted to accept reward ${e.name} with inventory ${a}`)}else console.error(`RewardManager: Could not find accepted reward with id ${e.id} in settings to update inventory.`)}updateSettings(){this.settings=this.plugin.settings.rewards}};var qk=A(require("obsidian")),Ca=A(wS()),vS=class extends qk.Component{constructor(e){super();this.habits=[];this.plugin=e}async onload(){await this.initializeHabits(),this.registerEvent(this.plugin.app.metadataCache.on("changed",(e,t,a)=>{this.isDailyNote(e)&&this.updateHabitCompletions(e,a)}))}async initializeHabits(){let e=await this.getDailyNotes(),t=await this.processHabits(e);this.habits=t,this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits)}convertBaseHabitsToHabitProps(e){return e.map(t=>{switch(t.type){case"daily":{let a=t;return{id:a.id,name:a.name,description:a.description,icon:a.icon,property:a.property,type:a.type,completionText:a.completionText,completions:{}}}case"count":{let a=t;return{id:a.id,name:a.name,description:a.description,icon:a.icon,property:a.property,type:a.type,min:a.min,max:a.max,notice:a.notice,countUnit:a.countUnit,completions:{}}}case"scheduled":{let a=t;return{id:a.id,name:a.name,description:a.description,icon:a.icon,type:a.type,events:a.events,propertiesMap:a.propertiesMap,completions:{}}}case"mapping":{let a=t;return{id:a.id,name:a.name,description:a.description,icon:a.icon,property:a.property,type:a.type,mapping:a.mapping,completions:{}}}}})}async getDailyNotes(){let e=(0,Ca.getAllDailyNotes)();return Object.values(e)}isDailyNote(e){try{return(0,Ca.getDateFromFile)(e,"day")!==null}catch(t){return!1}}async processHabits(e){let t=this.plugin.settings.habit.habits,a=this.convertBaseHabitsToHabitProps(t);for(let r of e){if(!this.isDailyNote(r))continue;let i=this.plugin.app.metadataCache.getFileCache(r),n=i==null?void 0:i.frontmatter;if(n){let o=(0,Ca.getDateFromFile)(r,"day");if(!o)continue;let l=o.format("YYYY-MM-DD");for(let d of a)switch(d.completions||(d.completions={}),d.type){case"scheduled":let u=d,p=d.propertiesMap||{};u.completions[l]||(u.completions[l]={});for(let[k,g]of Object.entries(p))if(g&&n[g]!==void 0&&n[g]!==""){let y=n[g];y&&y!==""&&(u.completions[l][k]=y)}break;case"daily":let m=d;if(d.property&&n[d.property]!==void 0&&n[d.property]!==""){let k=n[d.property];m.completionText?k===m.completionText?m.completions[l]=1:m.completions[l]=k:m.completions[l]=k?1:0;break}break;case"count":let f=d;if(f.property&&n[f.property]!==void 0&&n[f.property]!==""){let k=n[f.property],g=Number(k);isNaN(g)||(f.completions[l]=g)}break;case"mapping":let h=d;if(h.property&&n[h.property]!==void 0&&n[h.property]!==""){let k=n[h.property],g=Number(k);!isNaN(g)&&h.mapping[g]&&(h.completions[l]=g)}break}}}return a}updateHabitCompletions(e,t){if(!(t==null?void 0:t.frontmatter))return;let a=(0,Ca.getDateFromFile)(e,"day");if(!a)return;let r=a.format("YYYY-MM-DD"),i=!1,n=this.habits.map(o=>{var d,u,p,m,f,h,k,g,y,w,v;let l=JSON.parse(JSON.stringify(o));switch(l.completions||(l.completions={}),l.type){case"scheduled":let T=l,x=l.propertiesMap||{};T.completions[r]||(T.completions[r]={});let C=!1;for(let[O,H]of Object.entries(x))if(H&&((d=t.frontmatter)==null?void 0:d[H])!==void 0&&((u=t.frontmatter)==null?void 0:u[H])!==""){let $=(p=t.frontmatter[H])!=null?p:"";$!==""&&T.completions[r][O]!==$?(T.completions[r][O]=$,C=!0):$===""&&((m=T.completions[r])==null?void 0:m[O])!==void 0&&(delete T.completions[r][O],C=!0)}else((f=T.completions[r])==null?void 0:f[O])!==void 0&&(delete T.completions[r][O],C=!0);C&&(i=!0);break;case"daily":let S=l,E=!1;if(S.property&&((h=t.frontmatter)==null?void 0:h[S.property])!==void 0&&((k=t.frontmatter)==null?void 0:k[S.property])!==""){E=!0;let O=t.frontmatter[S.property];if(S.completionText){let H=O===S.completionText?1:O;S.completions[r]!==H&&(S.completions[r]=H,i=!0)}else{let H=O?1:0;S.completions[r]!==H&&(S.completions[r]=H,i=!0)}break}!E&&S.completions[r]!==void 0&&(delete S.completions[r],i=!0);break;case"count":let P=l,I=!1;if(P.property&&((g=t.frontmatter)==null?void 0:g[P.property])!==void 0&&((y=t.frontmatter)==null?void 0:y[P.property])!==""){I=!0;let O=t.frontmatter[P.property],H=Number(O);!isNaN(H)&&P.completions[r]!==H&&(P.completions[r]=H,i=!0);break}!I&&P.completions[r]!==void 0&&(delete P.completions[r],i=!0);break;case"mapping":let L=l,W=!1;if(L.property&&((w=t.frontmatter)==null?void 0:w[L.property])!==void 0&&((v=t.frontmatter)==null?void 0:v[L.property])!==""){W=!0;let O=t.frontmatter[L.property],H=Number(O);!isNaN(H)&&L.mapping[H]&&L.completions[r]!==H&&(L.completions[r]=H,i=!0);break}!W&&L.completions[r]!==void 0&&(delete L.completions[r],i=!0);break}return l});i&&(this.habits=n,this.plugin.app.workspace.trigger("task-genius:habit-index-updated",this.habits))}async updateHabitInObsidian(e,t){let a=this.plugin.app,r=(0,qk.moment)(t,"YYYY-MM-DD").set("hour",12);if(!r.isValid()){console.error(`Invalid date format provided: ${t}. Expected YYYY-MM-DD.`);return}let i=null;try{if((0,Ca.getAllDailyNotes)(),i=(0,Ca.getDailyNote)(r,(0,Ca.getAllDailyNotes)()),!i){if(!(0,Ca.appHasDailyNotesPluginLoaded)()){console.error("Daily notes plugin is not loaded. Please enable the Daily Notes plugin in Obsidian.");return}if(!(0,Ca.getDailyNoteSettings)().folder){console.error("Daily notes folder is not set. Please configure the Daily Notes plugin in Obsidian.");return}try{i=await(0,Ca.createDailyNote)(r)}catch(o){console.error("Trying to use obsidian default create daily note function",o),this.plugin.app.commands.executeCommandById("daily-notes"),(0,Ca.getAllDailyNotes)(),i=(0,Ca.getDailyNote)(r,(0,Ca.getAllDailyNotes)())}}}catch(n){console.error("Error getting or creating daily note:",n);return}if(i)try{await a.fileManager.processFrontMatter(i,n=>{let o=e.completions[t];switch(e.type){case"scheduled":let l=e.propertiesMap||{};for(let[m,f]of Object.entries(l))f&&(typeof o=="object"&&(o==null?void 0:o[m])!==void 0&&(o==null?void 0:o[m])!==""?n[f]=o[m]:delete n[f]);break;case"daily":let d=e;if(d.property){let m=d.property;o!==void 0?d.completionText&&o===1?n[m]=d.completionText:n[m]=o:delete n[m]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"count":let u=e;if(u.property){let m=u.property;o!==void 0?n[m]=o:delete n[m]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"mapping":let p=e;if(p.property){let m=p.property;o!==void 0&&typeof o=="number"&&p.mapping[o]?n[m]=o:delete n[m]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break}})}catch(n){console.error(`Error processing frontmatter for ${i.path}:`,n)}else console.warn(`Daily note could not be found or created for date: ${t}`)}};var kV=A(require("obsidian"));var bS=class extends kV.Component{constructor(e){super();this.styleElement=null;this.STYLE_ID="task-genius-icons-styles";this.BODY_CLASS="task-genius-checkbox";this.plugin=e}async onload(){this.plugin.settings.enableTaskGeniusIcons&&this.enable()}onunload(){this.disable()}enable(){try{this.addBodyClass(),this.injectStyles()}catch(e){console.error("Task Genius: Failed to enable icons:",e)}}disable(){try{this.removeBodyClass(),this.removeStyles()}catch(e){console.error("Task Genius: Failed to disable icons:",e)}}update(){this.plugin.settings.enableTaskGeniusIcons?this.enable():this.disable()}addBodyClass(){document.body.classList.add(this.BODY_CLASS)}removeBodyClass(){document.body.classList.remove(this.BODY_CLASS)}injectStyles(){this.removeStyles();let e=this.generateCSS();this.styleElement=document.createElement("style"),this.styleElement.id=this.STYLE_ID,this.styleElement.textContent=e,document.head.appendChild(this.styleElement)}removeStyles(){this.styleElement&&(this.styleElement.remove(),this.styleElement=null);let e=document.getElementById(this.STYLE_ID);e&&e.remove()}generateCSS(){let e=this.plugin.settings,t=this.parseTaskStatuses(e),a="";for(let r of t){let i=Ao(r.status),n=this.extractFillColor(i),o=this.encodeSvgForCSS(i),l=r.status==="completed";for(let d of r.chars)a+=this.generateCSSRuleForChar(d,o,n,l)}return a}parseTaskStatuses(e){let t=[],a={notStarted:"notStarted",inProgress:"inProgress",completed:"completed",abandoned:"abandoned",planned:"planned"};for(let[r,i]of Object.entries(e.taskStatuses)){let n=a[r];if(n){let o=i.split("|");t.push({status:n,chars:o})}}return t}extractFillColor(e){try{let t=e.match(/<path[^>]*fill="([^"]+)"/);if(t&&t[1]&&t[1]!=="none"&&t[1]!=="currentColor")return t[1];let a=e.match(/<path[^>]*stroke="([^"]+)"/);if(a&&a[1]&&a[1]!=="none"&&a[1]!=="currentColor")return a[1];let r=e.match(/fill="([^"]+)"/);return r&&r[1]&&r[1]!=="none"&&r[1]!=="currentColor"?r[1]:"var(--text-accent)"}catch(t){return console.error("Task Genius: Failed to extract fill color:",t),"var(--text-accent)"}}encodeSvgForCSS(e){try{return`data:image/svg+xml,${e.replace(/\s+/g," ").trim().replace(/"/g,"'").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/#/g,"%23").replace(/ /g,"%20")}`}catch(t){return console.error("Task Genius: Failed to encode SVG:",t),""}}generateCSSRuleForChar(e,t,a,r=!0){let i=this.escapeCSSSelector(e);return!r||e===" "?`
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox] {
border: none;
}
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox] {
--checkbox-color: ${a};
--checkbox-color-hover: ${a};
background-color: unset;
border: none;
}
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox]:after,
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox]:after,
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox]:after {
content: "";
top: -1px;
inset-inline-start: -1px;
position: absolute;
width: var(--checkbox-size);
height: var(--checkbox-size);
display: block;
-webkit-mask-position: 52% 52%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-image: url("${t}");
-webkit-mask-size: 100%;
background-color: ${a};
}
`:`
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox],
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox] {
border: none;
}
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox]:checked,
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox]:checked,
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox]:checked {
--checkbox-color: ${a};
--checkbox-color-hover: ${a};
background-color: unset;
border: none;
}
.${this.BODY_CLASS} [data-task="${i}"] > input[type=checkbox]:checked:after,
.${this.BODY_CLASS} [data-task="${i}"] > p > input[type=checkbox]:checked:after,
.${this.BODY_CLASS} [data-task="${i}"][type=checkbox]:checked:after {
-webkit-mask-image: url("${t}");
-webkit-mask-size: 100%;
background-color: ${a};
}
`}escapeCSSSelector(e){return e===" "?" ":e.replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g,"\\$&")}};var Gk=A(require("obsidian")),yV=A(require("@codemirror/state"));xa();var mQ=(0,Gk.debounce)((s,e)=>{s.workspace.trigger("task-genius:task-completed",e)},200);function wV(s,e){return yV.EditorState.transactionFilter.of(t=>(hQ(t,s,e),t))}function fQ(s){let e=[],t=0;if(s.changes.iterChanges((i,n,o,l,d)=>{if(t++,i<n){let u=s.startState.doc.sliceString(i,n);e.push({type:"delete",content:u,fromA:i,toA:n,fromB:o,toB:l})}d.length>0&&e.push({type:"insert",content:d.toString(),fromA:i,toA:n,fromB:o,toB:l})}),t<=1)return!1;let a=e.filter(i=>i.type==="delete"),r=e.filter(i=>i.type==="insert");if(a.length===0||r.length===0)return!1;for(let i of a)for(let n of r){if(i.content.trim().length<10||n.content.trim().length<10)continue;let o=i.content.split(`
`).filter(d=>d.trim()),l=n.content.split(`
`).filter(d=>d.trim());if(o.length===l.length&&o.length>0){let d=!0;for(let u=0;u<o.length;u++){let p=o[u].trim(),m=l[u].trim();if(p!==m){d=!1;break}}if(d)return!0}}return!1}function hQ(s,e,t){if(!s.docChanged)return;if(s.changes,s.isUserEvent("set")&&s.changes.length>1||s.isUserEvent("input.paste"))return s;if(fQ(s))return;let a=/^[\s|\t]*([-*+]|\d+\.)\s+\[[xX]\]/,r=/^[\s|\t]*([-*+]|\d+\.)\s+\[.\]/;s.changes.iterChanges((i,n,o,l,d)=>{var m;if(d.length===0)return;let u=s.newDoc.lineAt(o).number,p=s.newDoc.lineAt(l).number;for(let f=u;f<=p;f++){if(f>s.newDoc.lines)continue;let h=s.newDoc.line(f),k=h.text;if(a.test(k)){let g="",y=!1,w=!1;if(s.changes.iterChanges((v,T,x,C,S)=>{if(v<T&&!w)try{let P=s.startState.doc.sliceString(v,T).split(`
`);for(let I of P)if(I.match(r)){let W=k.replace(r,"").trim(),O=I.replace(r,"").trim();if(W===O){g=I,y=!0,w=!0;break}}}catch(E){}}),!w)try{let v=s.changes.mapPos(h.from,-1);v!==null&&(g=s.startState.doc.lineAt(v).text,y=r.test(g),w=!0)}catch(v){}if(w&&y&&!a.test(g)){let v=s.startState.field(Gk.editorInfoField),T=((m=v==null?void 0:v.file)==null?void 0:m.path)||"unknown file",x=Gn(T,k,h.number,t.settings.preferMetadataFormat,t);x&&mQ(e,x);break}}}})}var ta=A(require("@codemirror/state")),vV=A(require("@codemirror/view")),bV=A(require("@codemirror/view")),TS=A(require("@codemirror/view")),TV=A(require("@codemirror/view")),pi=class extends ta.RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};pi.prototype.elementClass="";pi.prototype.toDOM=void 0;pi.prototype.mapMode=ta.MapMode.TrackBefore;pi.prototype.startSide=pi.prototype.endSide=-1;pi.prototype.point=!0;var Kk=ta.Facet.define(),gQ=ta.Facet.define(),kQ={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>ta.RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},Ep=ta.Facet.define();function CV(s){return[yQ(),Ep.of({...kQ,...s})]}var CS=ta.Facet.define({combine:s=>s.some(e=>e)});function yQ(s){let e=[wQ];return s&&s.fixed===!1&&e.push(CS.of(!0)),e}var wQ=bV.ViewPlugin.fromClass(class{constructor(s){this.view=s;var e;this.prevViewport=s.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters task-gutter",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=s.state.facet(Ep).map(t=>new SS(s,t));for(let t of this.gutters)this.dom.appendChild(t.dom);this.fixed=!s.state.facet(CS),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),(e=s.contentDOM.parentElement)==null||e.appendChild(this.dom)}update(s){if(this.updateGutters(s)){let e=this.prevViewport,t=s.view.viewport,a=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(a<(t.to-t.from)*.8)}s.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px"),this.view.state.facet(CS)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=s.view.viewport}syncGutters(s){var i,n;let e=this.dom.nextSibling;s&&this.dom.remove();let t=ta.RangeSet.iter(this.view.state.facet(Kk),this.view.viewport.from),a=[],r=this.gutters.map(o=>new SV(o,this.view.viewport,-this.view.documentPadding.top));for(let o of this.view.viewportLineBlocks)if(a.length&&(a=[]),Array.isArray(o.type)){let l=!0;for(let d of o.type)if(d.type==TS.BlockType.Text&&l){xS(t,a,d.from);for(let u of r)u.line(this.view,d,a);l=!1}else if(d.widget)for(let u of r)u.widget(this.view,d)}else if(o.type==TS.BlockType.Text){xS(t,a,o.from);for(let l of r)l.line(this.view,o,a)}else if(o.widget)for(let l of r)l.widget(this.view,o);for(let o of r)o.finish();s&&(e?(i=this.view.contentDOM.parentElement)==null||i.insertBefore(this.dom,e):(n=this.view.contentDOM.parentElement)==null||n.appendChild(this.dom))}updateGutters(s){let e=s.startState.facet(Ep),t=s.state.facet(Ep),a=s.docChanged||s.heightChanged||s.viewportChanged||!ta.RangeSet.eq(s.startState.facet(Kk),s.state.facet(Kk),s.view.viewport.from,s.view.viewport.to);if(e==t)for(let r of this.gutters)r.update(s)&&(a=!0);else{a=!0;let r=[];for(let i of t){let n=e.indexOf(i);n<0?r.push(new SS(this.view,i)):(this.gutters[n].update(s),r.push(this.gutters[n]))}for(let i of this.gutters)i.dom.remove(),r.indexOf(i)<0&&i.destroy();for(let i of r)this.dom.appendChild(i.dom);this.gutters=r}return a}destroy(){for(let s of this.gutters)s.destroy();this.dom.remove()}},{provide:s=>vV.EditorView.scrollMargins.of(e=>{let t=e.plugin(s);return!t||t.gutters.length==0||!t.fixed?null:e.textDirection==TV.Direction.LTR?{left:t.dom.offsetWidth*e.scaleX}:{right:t.dom.offsetWidth*e.scaleX}})});function xV(s){return Array.isArray(s)?s:[s]}function xS(s,e,t){for(;s.value&&s.from<=t;)s.from==t&&e.push(s.value),s.next()}var SV=class{constructor(e,t,a){this.gutter=e;this.height=a;this.i=0;this.cursor=ta.RangeSet.iter(e.markers,t.from)}addElement(e,t,a){let{gutter:r}=this,i=(t.top-this.height)/e.scaleY,n=t.height/e.scaleY;if(this.i==r.elements.length){let o=new ES(e,n,i,a);r.elements.push(o),r.dom.appendChild(o.dom)}else r.elements[this.i].update(e,n,i,a);this.height=t.bottom,this.i++}line(e,t,a){let r=[];xS(this.cursor,r,t.from),a.length&&(r=r.concat(a));let i=this.gutter.config.lineMarker(e,t,r);i&&r.unshift(i);let n=this.gutter;r.length==0&&!n.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){let a=this.gutter.config.widgetMarker(e,t.widget,t),r=a?[a]:null;for(let i of e.state.facet(gQ)){let n=i(e,t.widget,t);n&&(r||(r=[])).push(n)}r&&this.addElement(e,t,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},SS=class{constructor(e,t){this.view=e;this.config=t;this.elements=[];this.spacer=null;this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let a in t.domEventHandlers)this.dom.addEventListener(a,r=>{let i=r.target,n;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let l=i.getBoundingClientRect();n=(l.top+l.bottom)/2}else n=r.clientY;let o=e.lineBlockAtHeight(n-e.documentTop);t.domEventHandlers[a](e,o,r)&&r.preventDefault()});this.markers=xV(t.markers(e)),t.initialSpacer&&(this.spacer=new ES(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=xV(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let r=this.config.updateSpacer(this.spacer.markers[0],e);r!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[r])}let a=e.view.viewport;return!ta.RangeSet.eq(this.markers,t,a.from,a.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},ES=class{constructor(e,t,a,r){this.height=-1;this.above=0;this.markers=[];this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,a,r)}update(e,t,a,r){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=a&&(this.dom.style.marginTop=(this.above=a)?a+"px":""),vQ(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,t){let a="cm-gutterElement",r=this.dom.firstChild;for(let i=0,n=0;;){let o=n,l=i<t.length?t[i++]:null,d=!1;if(l){let u=l.elementClass;u&&(a+=" "+u);for(let p=n;p<this.markers.length;p++)if(this.markers[p].compare(l)){o=p,d=!0;break}}else o=this.markers.length;for(;n<o;){let u=this.markers[n++];if(u.toDOM){u.destroy(r);let p=r.nextSibling;r.remove(),r=p}}if(!l)break;l.toDOM&&(d?r=r.nextSibling:this.dom.insertBefore(l.toDOM(e),r)),d&&n++}this.dom.className=a,this.markers=t}destroy(){this.setMarkers(null,[])}};function vQ(s,e){if(s.length!=e.length)return!1;for(let t=0;t<s.length;t++)if(!s[t].compare(e[t]))return!1;return!0}var bQ=ta.Facet.define(),TQ=ta.Facet.define(),Dp=ta.Facet.define({combine(s){return(0,ta.combineConfig)(s,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){let a=Object.assign({},e);for(let r in t){let i=a[r],n=t[r];a[r]=i?(o,l,d)=>i(o,l,d)||n(o,l,d):n}return a}})}}),Qk=class extends pi{constructor(e){super();this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function DS(s,e){return s.state.facet(Dp).formatNumber(e,s.state)}var GKe=Ep.compute([Dp],s=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(bQ)},lineMarker(e,t,a){return a.some(r=>r.toDOM)?null:new Qk(DS(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,a)=>{for(let r of e.state.facet(TQ)){let i=r(e,t,a);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Dp)!=e.state.facet(Dp),initialSpacer(e){return new Qk(DS(e,EV(e.state.doc.lines)))},updateSpacer(e,t){let a=DS(t.view,EV(t.view.state.doc.lines));return a==e.number?e:new Qk(a)},domEventHandlers:s.facet(Dp).domEventHandlers}));function EV(s){let e=9;for(;e<s;)e=e*10+9;return e}var CQ=new class extends pi{constructor(){super(...arguments);this.elementClass="cm-activeLineGutter"}},KKe=Kk.compute(["selection"],s=>{let e=[],t=-1;for(let a of s.selection.ranges){let r=s.doc.lineAt(a.head).from;r>t&&(t=r,e.push(CQ.range(r)))}return ta.RangeSet.of(e)});var Zk=A(require("obsidian"));var Xk=A(require("obsidian"));var Ns=A(require("obsidian"));Q();hs();Om();sv();xa();jm();var Pp=class extends Ns.Component{constructor(e,t,a,r=!1){super();this.activeTab="overview";this.container=e,this.app=t,this.plugin=a,this.isCompactMode=r}showTask(e){this.task=e,this.container.empty(),this.container.addClass("task-metadata-editor"),this.isCompactMode?this.createTabbedView():this.createFullView()}createTabbedView(){this.createStatusEditor();let e=this.container.createDiv({cls:"tabs-main-container"}),t=e.createEl("nav",{cls:"tabs-navigation"}),a=e.createDiv({cls:"tabs-content"}),r=[{id:"overview",label:c("Overview"),populateFn:this.populateOverviewTabContent.bind(this)},{id:"dates",label:c("Dates"),populateFn:this.populateDatesTabContent.bind(this)},{id:"details",label:c("Details"),populateFn:this.populateDetailsTabContent.bind(this)}],i={},n={};r.forEach(o=>{let l=t.createEl("button",{text:o.label,cls:"tab-button"});l.dataset.tab=o.id,i[o.id]=l;let d=a.createDiv({cls:"tab-pane"});d.id=`tab-pane-${o.id}`,n[o.id]=d,o.populateFn(d),this.registerDomEvent(l,"click",()=>{this.activeTab=o.id,this.updateActiveTab(i,n)})}),this.updateActiveTab(i,n)}updateActiveTab(e,t){for(let a in e)a===this.activeTab?(e[a].addClass("active"),t[a].addClass("active")):(e[a].removeClass("active"),t[a].removeClass("active"))}populateOverviewTabContent(e){this.createPriorityEditor(e),this.createDateEditor(e,c("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate))}populateDatesTabContent(e){this.createDateEditor(e,c("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(e,c("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(e,c("Cancelled Date"),"cancelledDate",this.getDateString(this.task.metadata.cancelledDate)),this.createRecurrenceEditor(e)}populateDetailsTabContent(e){this.createProjectEditor(e),this.createTagsEditor(e),this.createContextEditor(e),this.createOnCompletionEditor(e),this.createDependsOnEditor(e),this.createIdEditor(e)}createFullView(){this.createStatusEditor();let e=this.container.createDiv({cls:"metadata-full-container"});this.createProjectEditor(e),this.createTagsEditor(e),this.createContextEditor(e),this.createPriorityEditor(e);let t=e.createDiv({cls:"dates-container"});this.createDateEditor(t,c("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate)),this.createDateEditor(t,c("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(t,c("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(t,c("Cancelled Date"),"cancelledDate",this.getDateString(this.task.metadata.cancelledDate)),this.createRecurrenceEditor(e),this.createOnCompletionEditor(e),this.createDependsOnEditor(e),this.createIdEditor(e)}getDateString(e){return e===void 0?"":typeof e=="number"?eu(new Date(e),"yyyy-MM-dd"):e}createStatusEditor(){let e=this.container.createDiv({cls:"task-status-editor"});new Yo(this.plugin,e,this.task,{type:"quick-capture",onTaskUpdate:async(a,r)=>{this.notifyMetadataChange("status",r.status)},onTaskStatusSelected:a=>{this.notifyMetadataChange("status",a)}}).onload()}createPriorityEditor(e){let t=e.createDiv({cls:"field-container priority-container"});t.createDiv({cls:"field-label"}).setText(c("Priority"));let r=new Ns.DropdownComponent(t).addOption("",c("None")).addOption("1","\u23EC\uFE0F "+c("Lowest")).addOption("2","\u{1F53D} "+c("Low")).addOption("3","\u{1F53C} "+c("Medium")).addOption("4","\u23EB "+c("High")).addOption("5","\u{1F53A} "+c("Highest")).onChange(n=>{this.notifyMetadataChange("priority",parseInt(n))});r.selectEl.addClass("priority-select");let i=this.getPriorityString(this.task.metadata.priority);r.setValue(i||"")}getPriorityString(e){return e===void 0?"":String(e)}createDateEditor(e,t,a,r){let i=e.createDiv({cls:`field-container date-container ${a}-container`});i.createDiv({cls:"field-label"}).setText(t);let o=i.createEl("input",{cls:`date-input ${a}-input`,type:"date"});if(r)try{let l=new Date(r),d=l.getUTCFullYear(),u=String(l.getUTCMonth()+1).padStart(2,"0"),p=String(l.getUTCDate()).padStart(2,"0");o.value=`${d}-${u}-${p}`}catch(l){console.error(`Cannot parse date: ${r}`,l)}this.registerDomEvent(o,"change",()=>{let l=o.value;if(l){let[d,u,p]=l.split("-").map(Number),m=new Date(Date.UTC(d,u-1,p,12,0,0)).getTime();this.notifyMetadataChange(a,m)}else this.notifyMetadataChange(a,void 0)})}createProjectEditor(e){let t=e.createDiv({cls:"field-container project-container"});t.createDiv({cls:"field-label"}).setText(c("Project"));let r=bt(this.task),i=ur(this.task),n=new Ns.TextComponent(t).setPlaceholder(c("Project name")).setValue(r||"").setDisabled(i).onChange(o=>{i||this.notifyMetadataChange("project",o)});if(i&&this.task.metadata.tgProject&&(!this.task.metadata.project||!this.task.metadata.project.trim())){t.addClass("project-readonly");let o=t.createDiv({cls:"project-source-indicator",text:`From ${this.task.metadata.tgProject.type}: ${this.task.metadata.tgProject.source||""}`})}this.registerDomEvent(n.inputEl,"blur",()=>{i||this.notifyMetadataChange("project",n.inputEl.value)}),i||new Or(this.app,n.inputEl,this.plugin)}createTagsEditor(e){let t=e.createDiv({cls:"field-container tags-container"});t.createDiv({cls:"field-label"}).setText(c("Tags"));let r=new Ns.TextComponent(t).setPlaceholder(c("e.g. #tag1, #tag2")).setValue(Array.isArray(this.task.metadata.tags)?this.task.metadata.tags.join(", "):"");this.registerDomEvent(r.inputEl,"blur",()=>{let i=r.inputEl.value.split(",").map(n=>n.trim()).filter(n=>n);this.notifyMetadataChange("tags",i)}),new zs(this.app,r.inputEl,this.plugin)}createContextEditor(e){let t=e.createDiv({cls:"field-container context-container"});t.createDiv({cls:"field-label"}).setText(c("Context"));let r=new Ns.TextComponent(t).setPlaceholder(c("e.g. @home, @work")).setValue(Array.isArray(this.task.metadata.context)?this.task.metadata.context.join(", "):"");this.registerDomEvent(r.inputEl,"blur",()=>{let i=r.inputEl.value.split(",").map(n=>n.trim()).filter(n=>n);this.notifyMetadataChange("context",i)}),new Nr(this.app,r.inputEl,this.plugin)}createRecurrenceEditor(e){let t=e.createDiv({cls:"field-container recurrence-container"});t.createDiv({cls:"field-label"}).setText(c("Recurrence Rule"));let r=new Ns.TextComponent(t).setPlaceholder(c("e.g. every day, every week")).setValue(this.task.metadata.recurrence||"").onChange(i=>{this.notifyMetadataChange("recurrence",i)});this.registerDomEvent(r.inputEl,"blur",()=>{this.notifyMetadataChange("recurrence",r.inputEl.value)})}createOnCompletionEditor(e){let t=e.createDiv({cls:"field-container oncompletion-container"});t.createDiv({cls:"field-label"}).setText(c("On Completion"));try{let r=new $o(t,this.plugin,{initialValue:this.task.metadata.onCompletion||"",onChange:i=>{this.notifyMetadataChange("onCompletion",i)},onValidationChange:(i,n)=>{let o=t.querySelector(".oncompletion-validation-message");if(o&&o.remove(),n){let l=t.createDiv({cls:"oncompletion-validation-message error",text:n})}else if(i&&this.task.metadata.onCompletion){let l=t.createDiv({cls:"oncompletion-validation-message success",text:c("Configuration is valid")})}}});this.addChild(r)}catch(r){console.warn("Failed to load OnCompletionConfigurator, using fallback:",r);let i=new Ns.TextComponent(t).setPlaceholder(c("Action to execute on completion")).setValue(this.task.metadata.onCompletion||"").onChange(n=>{this.notifyMetadataChange("onCompletion",n)});this.registerDomEvent(i.inputEl,"blur",()=>{this.notifyMetadataChange("onCompletion",i.inputEl.value)})}}createDependsOnEditor(e){let t=e.createDiv({cls:"field-container dependson-container"});t.createDiv({cls:"field-label"}).setText(c("Depends On"));let r=new Ns.TextComponent(t).setPlaceholder(c("Task IDs separated by commas")).setValue(Array.isArray(this.task.metadata.dependsOn)?this.task.metadata.dependsOn.join(", "):"");this.registerDomEvent(r.inputEl,"blur",()=>{let n=r.inputEl.value.split(",").map(o=>o.trim()).filter(o=>o.length>0);this.notifyMetadataChange("dependsOn",n)})}createIdEditor(e){let t=e.createDiv({cls:"field-container id-container"});t.createDiv({cls:"field-label"}).setText(c("Task ID"));let r=new Ns.TextComponent(t).setPlaceholder(c("Unique task identifier")).setValue(this.task.metadata.id||"").onChange(i=>{this.notifyMetadataChange("id",i)});this.registerDomEvent(r.inputEl,"blur",()=>{this.notifyMetadataChange("id",r.inputEl.value)})}notifyMetadataChange(e,t){this.onMetadataChange&&this.onMetadataChange({field:e,value:t,task:this.task})}};Q();var PS=class extends Xk.Modal{constructor(e,t,a,r){super(e);this.task=a,this.plugin=t,this.onTaskUpdated=r||(async()=>{}),this.modalEl.addClass("task-details-modal"),this.titleEl.setText(c("Edit Task"))}onOpen(){let{contentEl:e}=this;e.empty(),this.metadataEditor=new Pp(e,this.app,this.plugin,!1),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),new Xk.ButtonComponent(this.contentEl).setIcon("check").setTooltip(c("Save")).onClick(async()=>{await this.onTaskUpdated(this.task),this.close()}),this.metadataEditor.onMetadataChange=async t=>{let r=["status","completed","content"].includes(t.field),i={...this.task,line:this.task.line-1,id:`${this.task.filePath}-L${this.task.line-1}`};if(r?i[t.field]=t.value:i.metadata={...this.task.metadata,[t.field]:t.value},t.field==="status"&&(t.value==="x"||t.value==="X")){i.completed=!0,i.metadata={...i.metadata,completedDate:Date.now()};let{cancelledDate:n,...o}=i.metadata;i.metadata=o}else if(t.field==="status"&&t.value==="-"){i.completed=!1;let{completedDate:n,...o}=i.metadata;i.metadata={...o,cancelledDate:Date.now()}}else if(t.field==="status"){i.completed=!1;let{completedDate:n,cancelledDate:o,...l}=i.metadata;i.metadata=l}this.task=i}}onClose(){let{contentEl:e}=this;this.metadataEditor&&this.metadataEditor.onunload(),e.empty()}updateTaskField(e,t){e in this.task&&(this.task[e]=t)}};var Jk=A(require("obsidian"));Q();var MS=class extends Jk.Component{constructor(e,t,a){super();this.popoverRef=null;this.popperInstance=null;this.debounceUpdateTask=(0,Jk.debounce)(async e=>{await this.plugin.taskManager.updateTask(e)},200);this.clickOutside=e=>{this.popoverRef&&!this.popoverRef.contains(e.target)&&this.close()};this.scrollHandler=e=>{if(this.popoverRef){if(e.target instanceof Node&&this.popoverRef.contains(e.target)){let t=e.target;if(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth)return}this.close()}};this.app=e,this.plugin=t,this.task=a,this.win=e.workspace.containerEl.win||window;let r=e.workspace.containerEl.closest(".cm-scroller");r instanceof HTMLElement?this.scrollParent=r:this.scrollParent=this.win}showAtPosition(e){this.popoverRef&&this.close();let t=createDiv({cls:"task-popover-content"});this.metadataEditor=new Pp(t,this.app,this.plugin,!0),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),this.metadataEditor.onMetadataChange=async i=>{let o=["status","completed","content"].includes(i.field),l={...this.task};if(o?l[i.field]=i.value:l.metadata={...this.task.metadata,[i.field]:i.value},i.field==="status"&&(i.value==="x"||i.value==="X")){l.completed=!0,l.metadata={...l.metadata,completedDate:Date.now()};let{cancelledDate:d,...u}=l.metadata;l.metadata=u}else if(i.field==="status"&&i.value==="-"){l.completed=!1;let{completedDate:d,...u}=l.metadata;l.metadata={...u,cancelledDate:Date.now()}}else if(i.field==="status"){l.completed=!1;let{completedDate:d,cancelledDate:u,...p}=l.metadata;l.metadata=p}this.task=l,this.debounceUpdateTask(l)},this.popoverRef=this.app.workspace.containerEl.createDiv({cls:"task-details-popover tg-menu bm-menu"}),this.popoverRef.appendChild(t);let a=this.popoverRef.createDiv({cls:"tg-popover-titlebar",text:c("Task Details")});this.popoverRef.insertBefore(a,this.popoverRef.firstChild),document.body.appendChild(this.popoverRef);let r={getBoundingClientRect:()=>({width:0,height:0,top:e.y,right:e.x,bottom:e.y,left:e.x,x:e.x,y:e.y,toJSON:function(){return this}})};this.popoverRef&&(this.popperInstance=kl(r,this.popoverRef,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"preventOverflow",options:{padding:10}},{name:"flip",options:{fallbackPlacements:["top-start","right-start","left-start"],padding:10}}]})),this.win.setTimeout(()=>{this.win.addEventListener("click",this.clickOutside),this.scrollParent.addEventListener("scroll",this.scrollHandler,!0)},10)}close(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popoverRef&&(this.popoverRef.remove(),this.popoverRef=null),this.win.removeEventListener("click",this.clickOutside),this.scrollParent.removeEventListener("scroll",this.scrollHandler,!0),this.metadataEditor&&this.metadataEditor.onunload()}};Wo();var Md=A(require("@codemirror/language"));Pm();var DV=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[(.)\])\s+(.*)$/m,PV=class extends pi{constructor(e,t,a,r,i){super();this.text=e,this.lineNum=t,this.view=a,this.app=r,this.plugin=i}toDOM(){let e=createEl("div"),t=new Zk.ExtraButtonComponent(e).setIcon("calendar-check").onClick(()=>{let a=this.view.state.doc.line(this.lineNum).text,r=this.app.workspace.getActiveFile();if(!r||!DV.test(a))return!1;let i=this.view.state.doc.line(this.lineNum),o=(0,Md.syntaxTree)(this.view.state).resolveInner(i.from+1).type.prop(Md.tokenClassNodeProp);if(o){let u=o.split(" ");if(u.includes("hmd-codeblock")||u.includes("hmd-frontmatter"))return!1}let l=this.view.state.doc.line(this.lineNum).number,d=SQ(this.plugin,r.path,a,l-1);return d?(xQ(this.view,this.app,this.plugin,d,t.extraSettingsEl),!0):!1});return t.extraSettingsEl.toggleClass("task-gutter-marker",!0),t.extraSettingsEl}},xQ=(s,e,t,a,r)=>{let i=async n=>{t.taskManager&&await t.taskManager.updateTask(n)};if(Zk.Platform.isDesktop){let n=new MS(e,t,a),o=r.getBoundingClientRect();n.showAtPosition({x:o.left,y:o.bottom+10})}else new PS(e,t,a,i).open()},AS=null,SQ=(s,e,t,a)=>{var r,i;try{if(s.taskManager&&((r=s.settings.projectConfig)==null?void 0:r.enableEnhancedProject)){let o=`${e}-L${a}`,l=s.taskManager.indexer.getTaskById(o);if(l)return l}AS||(AS=new Ha(hi(s.settings.preferMetadataFormat,s)));let n=AS.parseTask(t,e,a);return n&&s.taskManager&&((i=s.settings.projectConfig)==null?void 0:i.enableEnhancedProject)&&(n.id=`${e}-L${a}`),n}catch(n){return console.error("Error parsing task:",n),null}};function MV(s,e){return[CV({class:"task-gutter",lineMarker(t,a){let r=t.state.doc.lineAt(a.from).text,i=t.state.doc.lineAt(a.from).number;if(!DV.test(r))return null;let o=(0,Md.syntaxTree)(t.state).resolveInner(a.from+1).type.prop(Md.tokenClassNodeProp);if(o){let l=o.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return null}return new PV(r,i,t,s,e)}})]}var AV=A(require("@codemirror/state"));function IV(s,e){return AV.EditorState.transactionFilter.of(t=>EQ(t,s,e))}function EQ(s,e,t){var u;if(!s.docChanged||!((u=t.settings.autoDateManager)==null?void 0:u.enabled))return s;let a=s.annotation(gt);if(typeof a=="string"&&a.includes("autoDateManager")||s.isUserEvent("input.paste")||s.isUserEvent("set")||DQ(s))return s;let r=PQ(s);if(!r)return s;let{doc:i,lineNumber:n,oldStatus:o,newStatus:l}=r,d=MQ(o,l,t,i.line(n).text);return d.length===0?s:IQ(s,i,n,d,t)}function DQ(s){let e=[];s.changes.iterChanges((r,i,n,o,l)=>{if(r<i){let d=s.startState.doc.sliceString(r,i);e.push({type:"delete",content:d,fromA:r,toA:i,fromB:n,toB:o})}l.length>0&&e.push({type:"insert",content:l.toString(),fromA:r,toA:i,fromB:n,toB:o})});let t=e.filter(r=>r.type==="delete"),a=e.filter(r=>r.type==="insert");if(t.length===0||a.length===0)return!1;for(let r of t)for(let i of a){let n=r.content.split(`
`).filter(l=>l.trim()),o=i.content.split(`
`).filter(l=>l.trim());if(n.length===o.length&&n.length>0){let l=!0;for(let d=0;d<n.length;d++){let u=n[d].trim(),p=o[d].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function PQ(s){let e=null;return s.changes.iterChanges((t,a,r,i,n)=>{if(n.length===0)return;let o=r,l=s.newDoc.lineAt(o),d=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i,p=d.match(u);if(p){let m=p[2],f=" ",h=!1;if(s.changes.iterChanges((k,g,y,w,v)=>{if(k<g&&!h)try{let x=s.startState.doc.sliceString(k,g).split(`
`);for(let C of x){let S=C.match(u);if(S){let E=d.replace(u,"").trim(),P=C.replace(u,"").trim();if(E===P){f=S[2],h=!0;break}}}}catch(T){}}),!h)try{let k=d.indexOf("[")+1,g=d.indexOf("]");if(r<=l.from+g&&i>=l.from+k){let y=t;if(y>=0&&y<s.startState.doc.length){let v=s.startState.doc.lineAt(y).text.match(u);v&&(f=v[2],h=!0)}}}catch(k){}h&&f!==m&&(e={doc:s.newDoc,lineNumber:l.number,oldStatus:f,newStatus:m})}}),e}function MQ(s,e,t,a){let r=[],i=t.settings.autoDateManager;if(!i)return r;let n=RV(s,t),o=RV(e,t);return n===o||(i.manageCompletedDate&&n==="completed"&&r.push({type:"remove",dateType:"completed"}),i.manageCancelledDate&&n==="abandoned"&&r.push({type:"remove",dateType:"cancelled"}),i.manageCompletedDate&&o==="completed"&&r.push({type:"add",dateType:"completed",format:i.completedDateFormat||"YYYY-MM-DD"}),i.manageStartDate&&o==="inProgress"&&(AQ(a,"start",t)||r.push({type:"add",dateType:"start",format:i.startDateFormat||"YYYY-MM-DD"})),i.manageCancelledDate&&o==="abandoned"&&r.push({type:"add",dateType:"cancelled",format:i.cancelledDateFormat||"YYYY-MM-DD"})),r}function AQ(s,e,t){if(t.settings.preferMetadataFormat==="dataview"){let r=e==="start"?"start":e;return new RegExp(`\\[${r}::\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?\\]`).test(s)}else{let r=ey(e,t);return new RegExp(`${ty(r)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`).test(s)}}function RV(s,e){let t=e.settings.taskStatuses;return t.completed.split("|").includes(s)?"completed":t.inProgress.split("|").includes(s)?"inProgress":t.abandoned.split("|").includes(s)?"abandoned":t.planned.split("|").includes(s)?"planned":t.notStarted.split("|").includes(s)?"notStarted":"unknown"}function IQ(s,e,t,a,r){let i=s.newDoc.line(t),n=i.text,o=[];""+n;for(let l of a)if(l.type==="add"){let d=RQ(l.format),u=ey(l.dateType,r),p=r.settings.preferMetadataFormat==="dataview",m;p?m=` ${u}${d}]`:m=` ${u} ${d}`;let f;l.dateType==="completed"?f=jQ(n,r):f=FQ(n,r,l.dateType);let h=i.from+f;""+l.dateType,""+f,""+i.from,""+h,""+m,""+n.substring(f),o.push({from:h,to:h,insert:m}),n=n.slice(0,f)+m+n.slice(f)}else if(l.type==="remove"){let d=r.settings.preferMetadataFormat==="dataview",u;if(d){let f=l.dateType==="completed"?"completion":l.dateType==="cancelled"?"cancelled":"unknown";u=new RegExp(`\\s*\\[${f}::\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?\\]`,"g")}else{let f=ey(l.dateType,r);u=new RegExp(`\\s*${ty(f)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`,"g")}let p,m=[];for(u.lastIndex=0;(p=u.exec(n))!==null;)m.push({start:p.index,end:p.index+p[0].length,text:p[0]});for(let f=m.length-1;f>=0;f--){let h=m[f],k=i.from+h.start,g=i.from+h.end;o.push({from:k,to:g,insert:""}),n=n.slice(0,h.start)+n.slice(h.end)}}return o.length>0?{changes:[s.changes,...o],selection:s.selection,annotations:[gt.of("autoDateManager.dateUpdate")]}:s}function RQ(s){let e=new Date;return s.replace("YYYY",e.getFullYear().toString()).replace("MM",(e.getMonth()+1).toString().padStart(2,"0")).replace("DD",e.getDate().toString().padStart(2,"0")).replace("HH",e.getHours().toString().padStart(2,"0")).replace("mm",e.getMinutes().toString().padStart(2,"0")).replace("ss",e.getSeconds().toString().padStart(2,"0"))}function ey(s,e){let t=e.settings.autoDateManager,a=e.settings.preferMetadataFormat==="dataview";if(!t)return"\u{1F4C5}";switch(s){case"completed":return a?"[completion::":t.completedDateMarker||"\u2705";case"start":return a?"[start::":t.startDateMarker||"\u{1F680}";case"cancelled":return a?"[cancelled::":t.cancelledDateMarker||"\u274C";default:return"\u{1F4C5}"}}function FQ(s,e,t){let a=FV(s),r=s.match(/^[\s|\t]*([-*+]|\d+\.)\s\[.\]\s*/);if(!r)return a?a.index:s.length;let i=r[0].length;if(t==="cancelled"){let n=e.settings.preferMetadataFormat==="dataview",o=!1;if(n){let l=s.match(/\[start::[^\]]*\]/);l&&l.index!==void 0&&(i=l.index+l[0].length,o=!0)}else{let l=ey("start",e),d=ty(l),u=new RegExp(`${d}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`),p=s.match(u);if(!p){let m=["\u{1F680}","\u{1F6EB}","\u25B6\uFE0F","\u23F0","\u{1F3C1}"];for(let f of m){let h=new RegExp(`${ty(f)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`);if(p=s.match(h),p){""+f;break}}}p&&p.index!==void 0&&(i=p.index+p[0].length,o=!0,""+p.index+p[0].length+i)}if(""+o+i,!o){let l=i,d=[/#[\w-]+/g,/\[[a-zA-Z]+::[^\]]*\]/g,/[📅🚀✅❌🛫▶️⏰🏁]\s*\d{4}-\d{2}-\d{2}(?:\s+\d{2}:\d{2}(?::\d{2})?)?/g];for(let u of d){let p;for(;(p=u.exec(s))!==null;)if(p.index>=i){let m=p.index+p[0].length;m>l&&(l=m)}}i=l}i>0&&s[i-1]!==" "}else if(t==="completed")i=s.length,a&&(i=a.index,i>0&&s[i-1]===" "&&i--);else{let n=i,o=!1,l=s.slice(i).split("");for(let d=0;d<l.length;d++){let u=l[d];if(u==="["&&!o){if(s.slice(i+d).match(/^\[[a-zA-Z]+::/))break;o=!0,n=i+d+1}else if(u==="]"&&o)o=!1,n=i+d+1;else if(o)n=i+d+1;else{if(u==="#"||u==="\u{1F4C5}"||u==="\u{1F680}"||u==="\u2705"||u==="\u274C"||u==="\u{1F6EB}"||u==="\u25B6\uFE0F"||u==="\u23F0"||u==="\u{1F3C1}")break;n=i+d+1}}for(i=n;i>0&&s[i-1]===" ";)i--}return a&&i>a.index&&(i=a.index,i>0&&s[i-1]===" "&&i--),""+t+i,i}function jQ(s,e){let t=FV(s);if(t){let a=t.index;return a>0&&s[a-1]===" "&&a--,a}return s.length}function ty(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function FV(s){let e=/\s*(\^[a-zA-Z0-9-]+)$/,t=s.match(e);return t&&t.index!==void 0?{blockId:t[1],index:t.index,length:t[0].length,fullMatch:t[0]}:null}var jV=A(require("@codemirror/view"));Cr();function OV(){return jV.EditorView.updateListener.of(s=>{if(!s.docChanged)return;let e=s.transactions[0];!e||!OQ(e)||e.changes.iterChanges((t,a,r,i,n)=>{if(t>=a)return;let o=e.startState.doc.sliceString(t,a),l=n.toString();if(NQ(o)){let d=s.state.doc.lineAt(r),u=d.text;if(LQ(u)){let p=HQ(u);p!==u&&s.view.dispatch({changes:{from:d.from,to:d.to,insert:p}})}}})})}function OQ(s){if(!s.isUserEvent("input.delete")&&!s.isUserEvent("input.deleteBackward"))return!1;let e=!1;return s.changes.iterChanges((t,a)=>{t<a&&(e=!0)}),e}function NQ(s){return!!(/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\]|!)/.test(s)||/(?:📅|🛫|⏳|✅||❌)/.test(s)||/(?:🆔|⛔|🏁|🔁|@|#)/.test(s))}function LQ(s){return/^\s*[-*+]\s*\[[^\]]*\]/.test(s)}function HQ(s){let e=s.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(!e)return s;let t=e[1],a=s.substring(t.length),r=Ka(a);return r.trim()?t+r:t.trim()}var _V=A(require("obsidian"));var Io=A(require("obsidian"));var Ad={contentProperty:"title",statusProperty:"status",completedProperty:"completed",createdDateProperty:"created",startDateProperty:"start",scheduledDateProperty:"scheduled",dueDateProperty:"due",completedDateProperty:"completion",recurrenceProperty:"repeat",tagsProperty:"tags",projectProperty:"project",contextProperty:"context",priorityProperty:"priority",estimatedTimeProperty:"estimatedTime",actualTimeProperty:"actualTime"},IS=class{constructor(e){this.app=e}entryToFileTask(e,t=Ad){let a=e.properties||{},r=`file-task-${e.file.path}`;Math.random()<.1&&(""+e.file.name,Object.keys(a));let i=this.getPropertyValue(e,t.contentProperty);if(!i){let x=e.file.name,C=x.lastIndexOf(".");i=C>0?x.substring(0,C):x}let n=this.getPropertyValue(e,t.statusProperty)||" ",o=this.getBooleanPropertyValue(e,t.completedProperty)||!1,l=this.getDatePropertyValue(e,t.createdDateProperty),d=this.getDatePropertyValue(e,t.startDateProperty),u=this.getDatePropertyValue(e,t.scheduledDateProperty),p=this.getDatePropertyValue(e,t.dueDateProperty),m=this.getDatePropertyValue(e,t.completedDateProperty),f=this.getPropertyValue(e,t.recurrenceProperty),h=this.getArrayPropertyValue(e,t.tagsProperty)||[],k=this.getPropertyValue(e,t.projectProperty),g=this.getPropertyValue(e,t.contextProperty),y=this.getNumberPropertyValue(e,t.priorityProperty),w=this.getNumberPropertyValue(e,t.estimatedTimeProperty),v=this.getNumberPropertyValue(e,t.actualTimeProperty);return{id:r,content:i,filePath:e.file.path,completed:o,status:n,metadata:{tags:h||[],children:[],...l&&{createdDate:l},...d&&{startDate:d},...u&&{scheduledDate:u},...p&&{dueDate:p},...m&&{completedDate:m},...f&&{recurrence:f},...k&&{project:k},...g&&{context:g},...y&&{priority:y},...w&&{estimatedTime:w},...v&&{actualTime:v}},sourceEntry:e,isFileTask:!0}}fileTaskToPropertyUpdates(e,t=Ad){let a={};return a[t.statusProperty]=e.status,a[t.completedProperty]=e.completed,e.metadata.createdDate!==void 0&&t.createdDateProperty&&(a[t.createdDateProperty]=this.formatDateForProperty(e.metadata.createdDate)),e.metadata.startDate!==void 0&&t.startDateProperty&&(a[t.startDateProperty]=this.formatDateForProperty(e.metadata.startDate)),e.metadata.scheduledDate!==void 0&&t.scheduledDateProperty&&(a[t.scheduledDateProperty]=this.formatDateForProperty(e.metadata.scheduledDate)),e.metadata.dueDate!==void 0&&t.dueDateProperty&&(a[t.dueDateProperty]=this.formatDateForProperty(e.metadata.dueDate)),e.metadata.completedDate!==void 0&&t.completedDateProperty&&(a[t.completedDateProperty]=this.formatDateForProperty(e.metadata.completedDate)),e.metadata.recurrence!==void 0&&t.recurrenceProperty&&(a[t.recurrenceProperty]=e.metadata.recurrence),e.metadata.tags.length>0&&t.tagsProperty&&(a[t.tagsProperty]=e.metadata.tags),e.metadata.project!==void 0&&t.projectProperty&&(a[t.projectProperty]=e.metadata.project),e.metadata.context!==void 0&&t.contextProperty&&(a[t.contextProperty]=e.metadata.context),e.metadata.priority!==void 0&&t.priorityProperty&&(a[t.priorityProperty]=e.metadata.priority),e.metadata.estimatedTime!==void 0&&t.estimatedTimeProperty&&(a[t.estimatedTimeProperty]=e.metadata.estimatedTime),e.metadata.actualTime!==void 0&&t.actualTimeProperty&&(a[t.actualTimeProperty]=e.metadata.actualTime),a}async updateFileTask(e,t){let a={...e,...t};t.content&&t.content!==e.content&&await this.updateFileName(e,t.content);let r=this.fileTaskToPropertyUpdates(a);""+e.content;for(let[i,n]of Object.entries(r))try{e.sourceEntry.updateProperty(i,n)}catch(o){console.error(`Failed to update property ${i}:`,o)}}async updateFileName(e,t){try{let a=this.app.vault.getFileByPath(e.filePath);if(a){let r=e.filePath,i=r.lastIndexOf("/"),n=i>0?r.substring(0,i):"",o=r.substring(r.lastIndexOf(".")),l=t;l.endsWith(o)&&(l=l.substring(0,l.length-o.length));let d=n?`${n}/${l}${o}`:`${l}${o}`;d!==r&&(await this.app.fileManager.renameFile(a,d),e.filePath=d,""+r+d)}}catch(a){console.error("[FileTaskManager] Failed to rename file:",a)}}getFileTasksFromEntries(e,t=Ad){let a=e.filter(r=>r.file.extension==="md");return""+e.length+a.length,a.map(r=>this.entryToFileTask(r,t))}filterFileTasks(e,t){return e.filter(a=>!0)}getPropertyValue(e,t){if(!!t)try{let a=e.getValue({type:"property",name:t});return a==null?void 0:String(a)}catch(a){return}}getBooleanPropertyValue(e,t){if(!!t)try{let a=e.getValue({type:"property",name:t});if(typeof a=="boolean")return a;if(typeof a=="string"){let r=a.toLowerCase();return r==="true"||r==="yes"||r==="1"}return Boolean(a)}catch(a){return}}getNumberPropertyValue(e,t){if(!!t)try{let a=e.getValue({type:"property",name:t}),r=Number(a);return isNaN(r)?void 0:r}catch(a){return}}getDatePropertyValue(e,t){if(!!t)try{let a=e.getValue({type:"property",name:t});if(a==null)return;if(typeof a=="number")return a;if(typeof a=="string"){let r=a.trim();if(!r)return;if(/^\d{4}-\d{2}-\d{2}$/.test(r)){let[n,o,l]=r.split("-").map(Number),d=new Date(n,o-1,l);return isNaN(d.getTime())?void 0:d.getTime()}let i=new Date(r);return isNaN(i.getTime())?void 0:i.getTime()}return a instanceof Date?isNaN(a.getTime())?void 0:a.getTime():void 0}catch(a){return}}getArrayPropertyValue(e,t){if(!!t)try{let a=e.getValue({type:"property",name:t});if(a==null)return;if(Array.isArray(a))return a.map(r=>String(r)).filter(r=>r.trim().length>0);if(typeof a=="string"){let r=a.trim();return r?r.includes(",")?r.split(",").map(i=>i.trim()).filter(i=>i.length>0):r.includes(" ")?r.split(/\s+/).map(i=>i.trim()).filter(i=>i.length>0):[r]:void 0}return}catch(a){return}}formatDateForProperty(e){let t=new Date(e),a=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${a}-${r}-${i}`}validatePropertyMapping(e,t=Ad){if(e.length===0)return;let a={},r=new Set;e.forEach(i=>{let n=i.properties||{};Object.keys(n).forEach(o=>{r.add(o)}),Object.entries(t).forEach(([o,l])=>{l&&n[l]!==void 0&&(a[l]=(a[l]||0)+1)})}),Object.entries(t).forEach(([i,n])=>{n&&!a[n]&&console.warn(`[FileTaskManager] Property "${n}" (${i}) not found in any entries`)})}};Lr();Q();var RS=class extends Io.Component{constructor(e,t,a,r){super();this.type="task-genius-view";this.data=[];this.properties=[];this.isSidebarCollapsed=!1;this.propertyMapping=Ad;this.fileTasks=[];this.currentSelectedTask=null;this.twoColumnViewComponents=new Map;this.currentViewId="inbox";this.currentFilterState=null;this.isDetailsVisible=!1;this.currentSelectedTaskId=null;this.tasks=[];this.LAZY_LOADING_THRESHOLD=100;this.cachedRegularTasks=new Map;this.handleKanbanTaskStatusUpdate=async(e,t)=>{""+e+t;let a=this.tasks.find(r=>r.id===e);if(a){let r=t.toLowerCase()===(this.plugin.settings.taskStatuses.completed||"x").split("|")[0].toLowerCase(),i=r?Date.now():void 0;if(a.status!==t||a.completed!==r)try{await this.handleTaskUpdate(a,{...a,status:t,completed:r,completedDate:i}),""+e}catch(n){console.error(`FileTaskView failed to update task status from Kanban callback for task ${e}:`,n)}else""+e+t}else console.warn(`FileTaskView could not find task with ID ${e} for Kanban status update.`)};this.containerEl=e,this.app=t,this.plugin=a,this.fileTaskManager=new IS(t),r&&(this.propertyMapping=r),this.initializeComponents()}initializeComponents(){this.containerEl.empty(),this.containerEl.addClass("file-task-view-container"),this.containerEl,this.containerEl.closest("bases-embed"),this.containerEl.closest("bases-embed")&&(this.containerEl,this.toggleSidebar()),this.containerEl.toggleClass("task-genius-view",!0);let e=this.containerEl.createDiv({cls:"task-genius-container"});this.sidebarComponent=new yp(e,this.plugin),this.plugin,this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.contentComponent=new li(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new En(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskUpdate:async(t,a)=>{let r=this.fileTasks.find(i=>i.id===t.id);if(r){let i={...r,content:a.content,completed:a.completed,status:a.status,metadata:a.metadata};await this.handleTaskUpdate(r,i)}},onTaskContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.forecastComponent),this.forecastComponent.load(),this.forecastComponent.containerEl.hide(),this.tagsComponent=new Dn(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.tagsComponent),this.tagsComponent.load(),this.tagsComponent.containerEl.hide(),this.projectsComponent=new Pn(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.projectsComponent),this.projectsComponent.load(),this.projectsComponent.containerEl.hide(),this.reviewComponent=new Tl(e,this.app,this.plugin,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onTaskContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new An(this.app,this.plugin,e,this.tasks,{onTaskSelected:t=>{this.handleTaskSelection(t)},onTaskCompleted:t=>{this.handleTaskCompletion(t)},onEventContextMenu:(t,a)=>{this.handleTaskContextMenu(t,a)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new In(this.app,this.plugin,e,this.tasks,{onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.kanbanComponent),this.kanbanComponent.containerEl.hide(),this.ganttComponent=new Rn(this.plugin,e,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.ganttComponent),this.ganttComponent.containerEl.hide(),this.habitComponent=new Dl(this.plugin,e),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new en(e,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.toggleDetailsVisibility(!1),this.viewComponentManager=new El(this,this.app,this.plugin,e,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.handleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this),onTaskStatusUpdate:this.handleKanbanTaskStatusUpdate.bind(this),onEventContextMenu:this.handleTaskContextMenu.bind(this)}),this.addChild(this.viewComponentManager),this.setupEventHandlers()}setupEventHandlers(){this.detailsComponent.onTaskToggleComplete=e=>{this.handleTaskCompletion(e)},this.detailsComponent.onTaskUpdate=async(e,t)=>{let a=this.fileTasks.find(l=>l.id===e.id);if(!a)return;let{line:r,originalMarkdown:i,...n}=t,o={...n,sourceEntry:a.sourceEntry,isFileTask:!0};a&&await this.handleTaskUpdate(a,o)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)},this.sidebarComponent.onViewModeChanged=e=>{this.handleViewModeChanged(e)},this.sidebarComponent.onProjectSelected=e=>{this.handleProjectSelected(e)}}updateConfig(e){this.settings=e,this.onConfigUpdated()}onConfigUpdated(){this.updateTaskViewComponents()}updateData(e,t){this.properties=e,this.data=t,this.convertEntriesToFileTasks()&&this.onDataUpdated()}onDataUpdated(){this.updateTaskViewComponents()}display(){this.containerEl.show()}onload(){}onunload(){this.cachedRegularTasks.clear(),this.unload()}onActionsMenu(){return[{name:"Refresh Tasks",icon:"refresh-cw",callback:()=>{this.convertEntriesToFileTasks(),this.updateTaskViewComponents()}},{name:"Configure Mapping",icon:"settings",callback:()=>{this.openPropertyMappingConfig()}},{name:"Clear Cache",icon:"trash-2",callback:()=>{this.clearTaskCache()}},{name:"Cache Stats",icon:"info",callback:()=>{let e=this.getCacheStats()}}]}onEditMenu(){return[{displayName:"Task View Settings",component:e=>this.createSettingsComponent(e)}]}onResize(){this.checkAndCollapseSidebar()}checkAndCollapseSidebar(){this.containerEl.clientWidth===0||this.containerEl.clientHeight===0||this.containerEl.clientWidth<768&&(this.isSidebarCollapsed=!0,this.sidebarComponent.setCollapsed(!0))}toggleSidebar(){this.isSidebarCollapsed=!this.isSidebarCollapsed,this.containerEl.toggleClass("sidebar-collapsed",this.isSidebarCollapsed),this.sidebarComponent.setCollapsed(this.isSidebarCollapsed)}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.containerEl.toggleClass("details-visible",e),this.containerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),e||(this.currentSelectedTaskId=null)}convertEntriesToFileTasks(){if(!this.data||this.data.length===0){let i=this.fileTasks.length>0;return this.fileTasks=[],i}let e=this.data.flatMap(i=>i.entries),t=e.reduce((i,n)=>{let o=n.file.extension;return i[o]=(i[o]||0)+1,i},{});Math.random()<.2&&this.fileTaskManager.validatePropertyMapping(e,this.propertyMapping);let a=this.fileTaskManager.getFileTasksFromEntries(e,this.propertyMapping),r=this.updateFileTasksIncrementally(a);return""+e.length+a.length+r,r&&(this.tasks=this.fileTasks.map(i=>this.fileTaskToRegularTask(i))),r}updateFileTasksIncrementally(e){let t=new Map(this.fileTasks.map(i=>[i.id,i])),a=new Map(e.map(i=>[i.id,i])),r=!1;for(let i of t.keys())a.has(i)||(r=!0,this.cachedRegularTasks.delete(i));if(!r)for(let[i,n]of a){let o=t.get(i);(!o||this.hasTaskChanged(o,n))&&(r=!0,this.cachedRegularTasks.delete(i))}return r&&(this.fileTasks=e),r}hasTaskChanged(e,t){let a=["content","completed","status"];for(let i of a)if(this.compareProperty(e[i],t[i])!==0)return!0;let r=["dueDate","startDate","scheduledDate","priority","tags","project","context"];for(let i of r)if(this.compareProperty(e.metadata[i],t.metadata[i])!==0)return!0;return!1}compareProperty(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return e.length-t.length;for(let a=0;a<e.length;a++)if(e[a]!==t[a])return e[a]<t[a]?-1:1;return 0}return e===t||e==null&&t==null?0:e==null?-1:t==null?1:e<t?-1:1}updateTaskViewComponents(){let e=this.fileTasks.length>this.LAZY_LOADING_THRESHOLD;""+this.fileTasks.length+e,e?this.updateTasksLazily():this.updateTasksEagerly(),this.sidebarComponent,this.switchView(this.currentViewId)}updateTasksEagerly(){let e=this.fileTasks.map(t=>this.fileTaskToRegularTask(t));this.tasks=e,this.contentComponent&&typeof this.contentComponent.setTasks=="function"&&this.contentComponent.setTasks(e,e)}updateTasksLazily(){this.updateTaskCache();let e=this.createLazyTaskArray();this.tasks=e,this.contentComponent&&typeof this.contentComponent.setTasks=="function"&&this.contentComponent.setTasks(e,e)}updateTaskCache(){let e=new Set(this.cachedRegularTasks.keys()),t=new Set(this.fileTasks.map(a=>a.id));for(let a of e)t.has(a)||this.cachedRegularTasks.delete(a);for(let a of this.fileTasks){let r=this.cachedRegularTasks.get(a.id);(!r||this.hasTaskChangedForCache(r,a))&&this.cachedRegularTasks.set(a.id,this.fileTaskToRegularTask(a))}""+this.cachedRegularTasks.size+this.fileTasks.length}createLazyTaskArray(){let e=[],t=0;for(let a=0;a<this.fileTasks.length;a++)Object.defineProperty(e,a,{get:()=>{let r=this.fileTasks[a];if(!r)return;let i=this.cachedRegularTasks.get(r.id);return i||(i=this.fileTaskToRegularTask(r),this.cachedRegularTasks.set(r.id,i),t++,t%10==0&&""+t),i},enumerable:!0,configurable:!0});return Object.defineProperty(e,"length",{value:this.fileTasks.length,writable:!1,enumerable:!1,configurable:!1}),e.map=function(a){let r=[];for(let i=0;i<this.length;i++)r.push(a(this[i],i,this));return r},e.filter=function(a){let r=[];for(let i=0;i<this.length;i++)a(this[i],i,this)&&r.push(this[i]);return r},e.find=function(a){for(let r=0;r<this.length;r++)if(a(this[r],r,this))return this[r]},e.some=function(a){for(let r=0;r<this.length;r++)if(a(this[r],r,this))return!0;return!1},e.forEach=function(a){for(let r=0;r<this.length;r++)a(this[r],r,this)},""+this.fileTasks.length,e}hasTaskChangedForCache(e,t){return e.content!==t.content||e.completed!==t.completed||e.status!==t.status||e.dueDate!==t.metadata.dueDate||e.startDate!==t.metadata.startDate||e.scheduledDate!==t.metadata.scheduledDate||e.priority!==t.metadata.priority||JSON.stringify(e.tags)!==JSON.stringify(t.metadata.tags)||e.project!==t.metadata.project||e.context!==t.metadata.context}fileTaskToRegularTask(e){return{...e,line:0,originalMarkdown:`- [ ] ${e.content}`}}handleTaskSelection(e){if(e){let t=this.fileTasks.find(a=>a.id===e.id);t&&(this.currentSelectedTask=t,this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(this.fileTaskToRegularTask(t)),this.isDetailsVisible||this.toggleDetailsVisibility(!0))}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null,this.currentSelectedTask=null}async handleTaskCompletion(e){let t=this.fileTasks.find(a=>a.id===e.id);if(t)try{let a={completed:!t.completed,metadata:{...t.metadata,completedDate:t.completed?void 0:Date.now()}};await this.fileTaskManager.updateFileTask(t,a),this.convertEntriesToFileTasks()&&(this.detailsComponent.isCurrentlyEditing()?this.updateTasksEagerly():this.updateTaskViewComponents())}catch(a){console.error("[FileTaskView] Failed to update task completion:",a)}}async handleTaskUpdate(e,t){let a=this.fileTasks.find(r=>r.id===e.id);if(a)try{let r={content:t.content,status:t.status,completed:t.completed,metadata:{...a.metadata,dueDate:t.metadata.dueDate,startDate:t.metadata.startDate,scheduledDate:t.metadata.scheduledDate,priority:t.metadata.priority,tags:t.metadata.tags,project:t.metadata.project,context:t.metadata.context}};await this.fileTaskManager.updateFileTask(a,r),this.convertEntriesToFileTasks()&&(this.detailsComponent.isCurrentlyEditing()?this.updateTasksEagerly():this.updateTaskViewComponents())}catch(r){console.error("[FileTaskView] Failed to update task:",r)}}handleTaskContextMenu(e,t){let a=new Io.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.handleTaskCompletion(t)})}).addItem(r=>{r.setIcon("square-pen"),r.setTitle(c("Switch status"));let i=r.setSubmenu(),n=this.plugin.settings.taskStatusMarks,o=new Map;for(let l of Object.keys(n)){let d=n[l];Array.from(o.values()).includes(d)||o.set(l,d)}for(let[l,d]of o)i.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{Ot(d,t,p)}),u.titleEl.createEl("span",{cls:"status-option",text:l}),u.onClick(()=>{!t.completed&&d.toLowerCase()==="x"?t.metadata.completedDate=Date.now():t.metadata.completedDate=void 0,this.handleTaskUpdate(t,{...t,status:d,completed:d.toLowerCase()==="x"})})})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.editTask(t)})}),a.showAtMouseEvent(e)}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!t)return;await this.app.workspace.getLeaf(!0).openFile(t)}handleViewModeChanged(e){this.switchView(e)}handleProjectSelected(e){}switchView(e,t){var n,o;this.currentViewId=e,this.contentComponent.containerEl.hide(),this.forecastComponent.containerEl.hide(),this.tagsComponent.containerEl.hide(),this.projectsComponent.containerEl.hide(),this.reviewComponent.containerEl.hide(),this.twoColumnViewComponents.forEach(l=>{l.containerEl.hide()}),this.viewComponentManager.hideAllComponents(),this.habitComponent.containerEl.hide(),this.calendarComponent.containerEl.hide(),this.kanbanComponent.containerEl.hide(),this.ganttComponent.containerEl.hide();let a=null,r=e,i=yt(this.plugin,e);if(((n=i.specificConfig)==null?void 0:n.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let l=i.specificConfig,d=new Fn(this.containerEl,this.app,this.plugin,l,e);this.addChild(d),d.onTaskSelected=u=>{let p=this.fileTasks.find(m=>m.id===u.id);p&&this.handleTaskSelection(this.fileTaskToRegularTask(p))},d.onTaskCompleted=u=>{let p=this.fileTasks.find(m=>m.id===u.id);p&&this.handleTaskCompletion(this.fileTaskToRegularTask(p))},d.onTaskContextMenu=(u,p)=>{let m=this.fileTasks.find(f=>f.id===p.id);m&&this.handleTaskContextMenu(u,this.fileTaskToRegularTask(m))},this.twoColumnViewComponents.set(e,d)}a=this.twoColumnViewComponents.get(e)}else{let l=(o=i.specificConfig)==null?void 0:o.viewType;if(this.viewComponentManager.isSpecialView(e))a=this.viewComponentManager.showComponent(e);else if(l==="forecast"||e==="forecast")a=this.forecastComponent;else switch(e){case"habit":a=this.habitComponent;break;case"tags":a=this.tagsComponent;break;case"projects":a=this.projectsComponent;break;case"review":a=this.reviewComponent;break;case"inbox":case"flagged":default:a=this.contentComponent,r=e;break}}if(a){if(""+e,a.constructor.name,a.containerEl.show(),typeof a.setTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),a.setTasks(Ut(this.tasks,e,this.plugin,l),this.tasks)}if(typeof a.updateTasks=="function"){let l={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(l.advancedFilter=this.currentFilterState),a.updateTasks(Ut(this.tasks,e,this.plugin,l))}typeof a.setViewMode=="function"&&(""+e+r+t,a.setViewMode(r,t)),this.twoColumnViewComponents.forEach(l=>{if(l&&typeof l.setTasks=="function"&&l.getViewId()===e){let d={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(d.advancedFilter=this.currentFilterState),l.setTasks(Ut(this.tasks,l.getViewId(),this.plugin,d))}}),e==="review"&&typeof a.refreshReviewSettings=="function"&&a.refreshReviewSettings()}else console.warn(`No target component found for viewId: ${e}`);this.handleTaskSelection(null)}openPropertyMappingConfig(){new NV(this.app,this.propertyMapping,t=>{this.setPropertyMapping(t)}).open()}createSettingsComponent(e){return e.createEl("div",{text:"File Task View Settings"}),e}setPropertyMapping(e){this.propertyMapping=e,this.convertEntriesToFileTasks(),this.updateTaskViewComponents()}getPropertyMapping(){return this.propertyMapping}getFileTasks(){return this.fileTasks}clearTaskCache(){this.cachedRegularTasks.clear()}getCacheStats(){return{cacheSize:this.cachedRegularTasks.size,totalTasks:this.fileTasks.length,cacheHitRatio:this.fileTasks.length>0?this.cachedRegularTasks.size/this.fileTasks.length:0}}},NV=class extends Io.Modal{constructor(e,t,a){super(e);this.mapping={...t},this.onSave=a}onOpen(){let{contentEl:e}=this;e.empty(),e.createEl("h2",{text:"Configure Property Mapping"}),e.createEl("p",{text:"Map file properties to task attributes. Use dataview standard keys like 'start', 'due', 'completion', etc."}),[["contentProperty","Content Property"],["statusProperty","Status Property"],["completedProperty","Completed Property"],["startDateProperty","Start Date Property"],["dueDateProperty","Due Date Property"],["scheduledDateProperty","Scheduled Date Property"],["completedDateProperty","Completed Date Property"],["createdDateProperty","Created Date Property"],["recurrenceProperty","Recurrence Property"],["tagsProperty","Tags Property"],["projectProperty","Project Property"],["contextProperty","Context Property"],["priorityProperty","Priority Property"]].forEach(([n,o])=>{new Io.Setting(e).setName(o).setDesc(`Property name for ${o.toLowerCase()}`).addText(l=>l.setPlaceholder("Property name").setValue(this.mapping[n]||"").onChange(d=>{d.trim()?this.mapping[n]=d.trim():delete this.mapping[n]}))});let a=e.createDiv({cls:"tg-modal-button-container modal-button-container"}),r=a.createEl("button",{text:"Save",cls:"mod-cta"});r.onclick=()=>{this.onSave(this.mapping),this.close()};let i=a.createEl("button",{text:"Cancel"});i.onclick=()=>{this.close()}}onClose(){let{contentEl:e}=this;e.empty()}};var LV=A(require("obsidian"));var ay=A(require("obsidian"));Lr();var Nn=class extends ay.Component{constructor(e,t,a,r){super();this.data=[];this.properties=[];this.tasks=[];this.currentTask=null;this.isDetailsVisible=!1;this.currentSelectedTaskId=null;this.lastToggleTimestamp=0;this.containerEl=e,this.app=t,this.plugin=a,this.viewMode=r,this.containerEl.empty(),this.containerEl.toggleClass(["base-task-bases-view","task-genius-view","task-genius-container","no-sidebar"],!0),this.initializeDetailsComponent()}initializeDetailsComponent(){this.detailsComponent=new en(this.containerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.setupDetailsEvents(),this.toggleDetailsVisibility(!1)}setupDetailsEvents(){this.detailsComponent.onTaskToggleComplete=e=>{this.handleTaskCompletion(e)},this.detailsComponent.onTaskEdit=e=>{this.handleTaskEdit(e)},this.detailsComponent.onTaskUpdate=async(e,t)=>{await this.handleTaskUpdate(e,t)},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)}}handleTaskSelection(e){if(e){let t=Date.now(),a=t-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0),this.lastToggleTimestamp=t;return}a>150&&(this.toggleDetailsVisibility(!this.isDetailsVisible),this.lastToggleTimestamp=t)}else this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null}toggleDetailsVisibility(e){this.isDetailsVisible=e,this.containerEl.toggleClass("details-visible",e),this.containerEl.toggleClass("details-hidden",!e),this.detailsComponent.setVisible(e),e||(this.currentSelectedTaskId=null)}async handleTaskCompletion(e){let t={...e,completed:!e.completed};if(t.completed){t.metadata&&(t.metadata.completedDate=Date.now());let a=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==a&&(t.status=a)}else{t.metadata&&(t.metadata.completedDate=void 0);let a=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=a)}try{await this.updateBasesEntry(e,t);let a=this.tasks.findIndex(r=>r.id===e.id);a!==-1&&(this.tasks[a]=t),this.currentSelectedTaskId===t.id&&this.detailsComponent.showTaskDetails(t),this.detailsComponent.isCurrentlyEditing()?this.updateUIWithLatestTaskData():this.onDataUpdated()}catch(a){console.error(`[${this.type}] Failed to update task completion:`,a),this.showUpdateError(a)}}async handleTaskEdit(e){var i;let t=this.app.vault.getFileByPath(e.filePath);if(!t||!(t instanceof ay.TFile))return;await this.app.workspace.getLeaf(!1).openFile(t);let r=(i=this.app.workspace.activeEditor)==null?void 0:i.editor;r&&(r.setCursor({line:e.line||0,ch:0}),r.focus())}async handleTaskUpdate(e,t){try{await this.updateBasesEntry(e,t);let a=this.tasks.findIndex(r=>r.id===e.id);a!==-1&&(this.tasks[a]=t),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.currentTask=t:this.detailsComponent.showTaskDetails(t)),this.detailsComponent.isCurrentlyEditing()?this.updateUIWithLatestTaskData():this.onDataUpdated()}catch(a){console.error(`[${this.type}] Failed to update task:`,a),this.showUpdateError(a)}}async updateBasesEntry(e,t){try{let a=this.findEntryByTaskId(e.id);if(!a)throw new Error(`Original entry not found for task ID: ${e.id}`);this.debugBasesApiAvailability(a);let r=this.mapTaskMetadataToBases(e,t);""+this.type;for(let[i,n]of Object.entries(r))await this.updateBasesProperty(a,i,n);""+this.type+t.id}catch(a){throw console.error(`[${this.type}] Failed to update Bases entry:`,a),a}}async updateBasesProperty(e,t,a){try{if(""+this.type+t,typeof e.updateProperty=="function"){""+this.type+t,await e.updateProperty(t,a),""+this.type+t;return}if(typeof e.setValue=="function"){""+this.type+t,await e.setValue({type:"note",name:t},a),""+this.type+t;return}console.warn(`[${this.type}] No native update method available for property ${t}`),console.warn(`[${this.type}] Available entry methods:`,Object.keys(e).filter(r=>typeof e[r]=="function"))}catch(r){throw console.error(`[${this.type}] Failed to update property ${t}:`,r),r}}mapTaskMetadataToBases(e,t){let a={};e.content!==t.content&&(a.title=t.content,a.content=t.content);let r=e.metadata,i=t.metadata;return r.project!==i.project&&(a.project=i.project),JSON.stringify(r.tags)!==JSON.stringify(i.tags)&&(a.tags=i.tags),r.context!==i.context&&(a.context=i.context),r.priority!==i.priority&&(a.priority=i.priority),r.dueDate!==i.dueDate&&(a.dueDate=i.dueDate?new Date(i.dueDate):void 0,a.due=i.dueDate?new Date(i.dueDate):void 0),r.startDate!==i.startDate&&(a.startDate=i.startDate?new Date(i.startDate):void 0,a.start=i.startDate?new Date(i.startDate):void 0),r.scheduledDate!==i.scheduledDate&&(a.scheduledDate=i.scheduledDate?new Date(i.scheduledDate):void 0,a.scheduled=i.scheduledDate?new Date(i.scheduledDate):void 0),r.completedDate!==i.completedDate&&(a.completedDate=i.completedDate?new Date(i.completedDate):void 0,a.completed=i.completedDate?new Date(i.completedDate):void 0),r.cancelledDate!==i.cancelledDate&&(a.cancelledDate=i.cancelledDate?new Date(i.cancelledDate):void 0,a.cancelled=i.cancelledDate?new Date(i.cancelledDate):void 0),r.onCompletion!==i.onCompletion&&(a.onCompletion=i.onCompletion),JSON.stringify(r.dependsOn)!==JSON.stringify(i.dependsOn)&&(a.dependsOn=i.dependsOn),r.id!==i.id&&(a.id=i.id),r.recurrence!==i.recurrence&&(a.recurrence=i.recurrence),e.completed!==t.completed&&(a.completed=t.completed,a.done=t.completed),e.status!==t.status&&(a.status=t.status),a}findEntryByTaskId(e){for(let t of this.data)if(!!t.entries)for(let a of t.entries)try{if(this.generateTaskId(a)===e)return a}catch(r){continue}return null}showUpdateError(e){let t=this.containerEl.createDiv({cls:"bases-update-error-notification"});t.createDiv({cls:"error-icon",text:"\u26A0\uFE0F"});let a=t.createDiv({cls:"error-message"});a.createDiv({cls:"error-title",text:"Failed to update task"}),a.createDiv({cls:"error-details",text:e.message||"An unknown error occurred"}),setTimeout(()=>{t.parentNode&&t.remove()},5e3),t.addEventListener("click",()=>{t.remove()})}updateConfig(e){this.settings=e,""+this.type,this.onConfigUpdated()}updateData(e,t){""+this.type,this.properties=e,this.data=t,this.onDataUpdated()}display(){""+this.type,this.containerEl.show(),this.onDisplay()}onload(){""+this.type,this.onViewLoad()}onunload(){""+this.type,this.onViewUnload(),this.unload()}onActionsMenu(){let e=[{name:"Refresh Tasks",icon:"refresh-cw",callback:()=>{this.refreshTasks()}}],t=this.getCustomActions();return[...e,...t]}onEditMenu(){return this.getEditMenuItems()}onResize(){this.onViewResize()}convertEntriesToTasks(){if(""+this.type,""+this.type,this.data,!this.data||this.data.length===0)return""+this.type,this.tasks=[],!0;let e=[];for(let a of this.data){if(!a.entries){""+this.type;continue}""+this.type+a.entries.length;for(let r of a.entries)try{let i=this.entryToTask(r);i&&e.push(i)}catch(i){console.error(`[${this.type}] Error converting entry to task:`,i,r)}}""+this.type+e.length+this.data.length;let t=this.hasTasksChanged(this.tasks,e);return this.tasks=e,""+this.type+t,t}entryToTask(e){try{let t=e.file,a=e.frontmatter||{};if(!t)return console.warn(`[${this.type}] Entry missing file information:`,e),null;let r=this.extractTaskContent(e),i=this.extractTaskMetadata(e),n=this.extractTaskStatus(e);return{id:this.generateTaskId(e),content:r,completed:this.extractCompletionStatus(e),status:n,filePath:t.path||"",line:this.getEntryProperty(e,"line","note")||0,originalMarkdown:this.getEntryProperty(e,"originalMarkdown","note")||r,metadata:{...i,children:[]}}}catch(t){return console.error(`[${this.type}] Error converting entry to task:`,t,e),null}}hasTasksChanged(e,t){if(e.length!==t.length)return""+this.type+e.length+t.length,!0;let a=new Map(e.map(r=>[r.id,r]));for(let r of t){let i=a.get(r.id);if(!i)return""+this.type+r.id,!0;if(i.content!==r.content)return""+this.type+r.id,!0;if(i.completed!==r.completed)return""+this.type+r.id,!0;if(i.status!==r.status)return""+this.type+r.id,!0;let n=i.metadata,o=r.metadata;if(n.priority!==o.priority)return""+this.type+r.id,!0;if(n.dueDate!==o.dueDate)return""+this.type+r.id,!0;if(n.project!==o.project)return""+this.type+r.id,!0;let l=n.tags||[],d=o.tags||[];if(l.length!==d.length||!l.every((u,p)=>u===d[p]))return""+this.type+r.id,!0}return""+this.type,!1}refreshTasks(){""+this.type,this.onDataUpdated()}forceUpdateTasks(){""+this.type,this.convertEntriesToTasks(),this.onDataUpdated()}updateUIWithLatestTaskData(){""+this.type}extractTaskContent(e){let t=[()=>this.getEntryProperty(e,"title","note"),()=>this.getEntryProperty(e,"content","note"),()=>this.getEntryProperty(e,"text","note"),()=>{var a;return(a=e.file)==null?void 0:a.basename},()=>{var a;return(a=e.file)==null?void 0:a.name}];for(let a of t)try{let r=a();if(r&&typeof r=="string"&&r.trim())return r.trim()}catch(r){}return"Untitled Task"}extractTaskMetadata(e){return{tags:this.extractTags(e),project:this.extractProject(e),tgProject:this.getEntryProperty(e,"tgProject","note")||"",priority:this.extractPriority(e),dueDate:this.extractDate(e,"dueDate")||this.extractDate(e,"due"),scheduledDate:this.extractDate(e,"scheduledDate")||this.extractDate(e,"scheduled"),startDate:this.extractDate(e,"startDate")||this.extractDate(e,"start"),completedDate:this.extractDate(e,"completedDate")||this.extractDate(e,"completed"),createdDate:this.extractDate(e,"createdDate")||this.extractDate(e,"created")||this.extractFileCreatedDate(e),cancelledDate:this.extractDate(e,"cancelledDate")||this.extractDate(e,"cancelled"),context:this.getEntryProperty(e,"context","note")||"",recurrence:this.getEntryProperty(e,"recurrence","note")||void 0,onCompletion:this.getEntryProperty(e,"onCompletion","note")||void 0}}extractCompletionStatus(e){let t=[()=>this.getEntryProperty(e,"completed","note"),()=>this.getEntryProperty(e,"done","note"),()=>{var a;return(a=e.frontmatter)==null?void 0:a.completed},()=>{var a;return(a=e.frontmatter)==null?void 0:a.done}];for(let a of t)try{let r=a();if(typeof r=="boolean")return r;if(typeof r=="string")return r.toLowerCase()==="true"||r==="x"}catch(r){}return!1}extractTaskStatus(e){let t=[()=>this.getEntryProperty(e,"status","note"),()=>{var a;return(a=e.frontmatter)==null?void 0:a.status}];for(let a of t)try{let r=a();if(r&&typeof r=="string")return r}catch(r){}return this.extractCompletionStatus(e)?"x":" "}extractTags(e){let t=[()=>this.getEntryProperty(e,"tags","note"),()=>{var a;return(a=e.frontmatter)==null?void 0:a.tags}];for(let a of t)try{let r=a();if(Array.isArray(r))return r.filter(i=>typeof i=="string");if(typeof r=="string")return r.split(",").map(i=>i.trim()).filter(i=>i)}catch(r){}return[]}extractProject(e){let t=[()=>this.getEntryProperty(e,"project","note"),()=>{var a;return(a=e.frontmatter)==null?void 0:a.project},()=>this.extractProjectFromTags(e)];for(let a of t)try{let r=a();if(r&&typeof r=="string")return r.trim()}catch(r){}return""}extractProjectFromTags(e){let a=this.extractTags(e).find(r=>r.startsWith("#project/")||r.startsWith("project/")||r.startsWith("#proj/")||r.startsWith("proj/"));return a?a.replace(/^#?(project|proj)\//,""):""}extractPriority(e){let t=[()=>this.getEntryProperty(e,"priority","note"),()=>{var a;return(a=e.frontmatter)==null?void 0:a.priority}];for(let a of t)try{let r=a();if(typeof r=="number")return Math.max(0,Math.min(10,r));if(typeof r=="string"){let i=parseInt(r);if(!isNaN(i))return Math.max(0,Math.min(10,i))}}catch(r){}return 0}extractDate(e,t){let a=[()=>this.getEntryProperty(e,t,"note"),()=>{var r;return(r=e.frontmatter)==null?void 0:r[t]}];for(let r of a)try{let i=r();if(typeof i=="number")return i;if(typeof i=="string"){let n=Date.parse(i);if(!isNaN(n))return n}if(i instanceof Date)return i.getTime()}catch(i){}}extractFileCreatedDate(e){var t;try{let a=e.file;if((t=a==null?void 0:a.stat)==null?void 0:t.ctime)return a.stat.ctime}catch(a){}}generateTaskId(e){try{let t=e.file;if(t==null?void 0:t.path)return t.path}catch(t){}return`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}getEntryProperty(e,t,a="note"){try{if(typeof e.getValue=="function")return e.getValue({type:a,name:t})}catch(r){}try{if(a==="note"&&e.frontmatter)return e.frontmatter[t];if(a==="file"&&e.file)return e.file[t]}catch(r){}}createErrorContainer(e){let t=this.containerEl.createDiv({cls:"bases-view-error"});return t.createDiv({cls:"bases-view-error-icon",text:"\u26A0\uFE0F"}),t.createDiv({cls:"bases-view-error-message",text:e}),t}createLoadingContainer(){let e=this.containerEl.createDiv({cls:"bases-view-loading"});return e.createDiv({cls:"bases-view-loading-spinner"}),e.createDiv({cls:"bases-view-loading-text",text:"Loading tasks..."}),e}createEmptyContainer(e="No tasks found"){let t=this.containerEl.createDiv({cls:"bases-view-empty"});return t.createDiv({cls:"bases-view-empty-icon",text:"\u{1F4CB}"}),t.createDiv({cls:"bases-view-empty-message",text:e}),t}debugBasesApiAvailability(e){""+this.type;let t=Object.keys(e).filter(r=>typeof e[r]=="function");""+this.type;let a=["updateProperty","setValue","getValue"];for(let r of a){let i=typeof e[r]=="function";""+this.type+r+(i?"\u2713":"\u2717")}""+this.type,Object.keys(e),e.file&&(""+this.type,e.file),e.frontmatter&&(""+this.type,e.frontmatter)}};Q();var FS=class extends Nn{constructor(e,t,a){super(e,t,a,"inbox");this.type="inbox-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new li(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateInboxTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateInboxTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.contentComponent.load(),this.isLoaded=!0,this.updateInboxTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:c("Quick Capture"),icon:"plus",callback:()=>{this.openQuickCapture()}},{name:c("Filter"),icon:"filter",callback:()=>{this.openFilterOptions()}}]}getEditMenuItems(){return[{displayName:"View Settings",component:e=>this.createViewSettingsComponent(e)}]}updateInboxTasks(){if(this.isLoaded,!!this.isLoaded){this.data,this.tasks;try{let e=Ut(this.tasks,"inbox",this.plugin);""+e.length+this.tasks.length,this.contentComponent.setTasks(e,this.tasks),this.contentComponent.setViewMode("inbox"),""+e.length}catch(e){console.error("[InboxBasesView] Error updating inbox tasks:",e),this.showErrorState("Failed to update inbox tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[InboxBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let a=new LV.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.handleTaskEdit(t)})}),a.showAtMouseEvent(e)}openQuickCapture(){try{let{QuickCaptureModal:e}=(cn(),UH);new e(this.app,this.plugin,{},!0).open()}catch(e){console.error("[InboxBasesView] Error opening quick capture:",e)}}openFilterOptions(){}createViewSettingsComponent(e){let t=e.createDiv({cls:"inbox-view-settings"});t.createEl("h3",{text:"Inbox View Settings"});let a=t.createDiv({cls:"settings-options"});a.createEl("label",{text:"Show completed tasks"});let r=a.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No inbox tasks found");e.addClass("inbox-empty-state");let t=e.createDiv({cls:"inbox-empty-help"});t.createEl("p",{text:"Tasks without projects will appear here."}),t.createEl("button",{cls:"inbox-capture-btn",text:"Create Task"}).addEventListener("click",()=>{this.openQuickCapture()})}hideEmptyState(){let e=this.containerEl.querySelector(".inbox-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var HV=A(require("obsidian"));Q();var jS=class extends Nn{constructor(e,t,a){super(e,t,a,"flagged");this.type="flagged-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.contentComponent=new li(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.contentComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateFlaggedTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateFlaggedTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.contentComponent.load(),this.isLoaded=!0,this.updateFlaggedTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:c("Set Priority"),icon:"flag",callback:()=>{this.openPrioritySelector()}},{name:c("Clear Flags"),icon:"flag-off",callback:()=>{this.clearAllFlags()}},{name:c("Filter by Priority"),icon:"filter",callback:()=>{this.openPriorityFilter()}}]}getEditMenuItems(){return[{displayName:"Priority Settings",component:e=>this.createPrioritySettingsComponent(e)}]}updateFlaggedTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=Ut(this.tasks,"flagged",this.plugin);""+e.length+this.tasks.length,e.sort((t,a)=>{let r=t.metadata.priority||0;return(a.metadata.priority||0)-r}),this.contentComponent.setTasks(e,this.tasks),this.contentComponent.setViewMode("flagged"),""+e.length}catch(e){console.error("[FlaggedBasesView] Error updating flagged tasks:",e),this.showErrorState("Failed to update flagged tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[FlaggedBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let a=new HV.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.handleTaskEdit(t)})}),a.showAtMouseEvent(e)}openPrioritySelector(){}clearAllFlags(){}openPriorityFilter(){}createPrioritySettingsComponent(e){let t=e.createDiv({cls:"flagged-view-settings"});t.createEl("h3",{text:"Priority Settings"});let a=t.createDiv({cls:"settings-options"}),r=a.createDiv({cls:"setting-item"});r.createEl("label",{text:"Minimum priority for flagged view:"});let i=r.createEl("input",{type:"number",value:"3"});i.min="0",i.max="10";let n=a.createDiv({cls:"setting-item"});n.createEl("label",{text:"Show completed flagged tasks"});let o=n.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No flagged tasks found");e.addClass("flagged-empty-state");let t=e.createDiv({cls:"flagged-empty-help"});t.createEl("p",{text:"Tasks with high priority (3+) or flagged tags will appear here."});let a=t.createEl("div",{cls:"flagged-help-text"});a.createEl("p",{text:"To flag a task:"});let r=a.createEl("ul");r.createEl("li",{text:"Set priority to 3 or higher"}),r.createEl("li",{text:"Add #flagged tag to the task"})}hideEmptyState(){let e=this.containerEl.querySelector(".flagged-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var BV=A(require("obsidian"));Q();var OS=class extends Nn{constructor(e,t,a){super(e,t,a,"projects");this.type="projects-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.projectsComponent=new Pn(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.projectsComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateProjectTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateProjectTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.projectsComponent.load(),this.isLoaded=!0,this.updateProjectTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:c("New Project"),icon:"folder-plus",callback:()=>{this.createNewProject()}},{name:c("Archive Completed"),icon:"archive",callback:()=>{this.archiveCompletedProjects()}},{name:c("Project Statistics"),icon:"bar-chart",callback:()=>{this.showProjectStatistics()}}]}getEditMenuItems(){return[{displayName:"Project Settings",component:e=>this.createProjectSettingsComponent(e)}]}updateProjectTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=Ut(this.tasks,"projects",this.plugin);""+e.length+this.tasks.length,this.projectsComponent.setTasks(e),""+e.length}catch(e){console.error("[ProjectBasesView] Error updating project tasks:",e),this.showErrorState("Failed to update project tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[ProjectBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let a=new BV.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.handleTaskEdit(t)})}),a.showAtMouseEvent(e)}createNewProject(){}archiveCompletedProjects(){}showProjectStatistics(){}createProjectSettingsComponent(e){let t=e.createDiv({cls:"projects-view-settings"});t.createEl("h3",{text:"Project Settings"});let a=t.createDiv({cls:"settings-options"}),r=a.createDiv({cls:"setting-item"});r.createEl("label",{text:"Show project hierarchy"});let i=r.createEl("input",{type:"checkbox"});i.checked=!0;let n=a.createDiv({cls:"setting-item"});n.createEl("label",{text:"Group tasks by project"});let o=n.createEl("input",{type:"checkbox"});o.checked=!0;let l=a.createDiv({cls:"setting-item"});l.createEl("label",{text:"Show completed projects"});let d=l.createEl("input",{type:"checkbox"});return t}showEmptyState(){this.hideEmptyState();let e=this.createEmptyContainer("No project tasks found");e.addClass("projects-empty-state");let t=e.createDiv({cls:"projects-empty-help"});t.createEl("p",{text:"Tasks with project assignments will appear here."});let a=t.createEl("div",{cls:"projects-help-text"});a.createEl("p",{text:"To assign a task to a project:"});let r=a.createEl("ul");r.createEl("li",{text:"Add #project/projectname tag to the task"}),r.createEl("li",{text:"Use project:: property in frontmatter"}),t.createEl("button",{cls:"projects-create-btn",text:"Create Project"}).addEventListener("click",()=>{this.createNewProject()})}hideEmptyState(){let e=this.containerEl.querySelector(".projects-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var WV=A(require("obsidian"));Q();var NS=class extends Nn{constructor(e,t,a){super(e,t,a,"tags");this.type="tags-bases-view";this.isLoaded=!1;this.initializeComponents()}initializeComponents(){this.tagsComponent=new Dn(this.containerEl,this.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.handleTaskCompletionLocal(e)},onTaskContextMenu:(e,t)=>{this.handleTaskContextMenu(e,t)}}),this.addChild(this.tagsComponent)}onConfigUpdated(){this.isLoaded,this.isLoaded&&(this.convertEntriesToTasks(),this.updateTagTasks())}onDataUpdated(){this.isLoaded,this.convertEntriesToTasks(),this.updateTagTasks()}onDisplay(){this.containerEl.removeClass("is-loading"),this.tasks.length===0?this.showEmptyState():this.hideEmptyState()}onViewLoad(){this.tagsComponent.load(),this.isLoaded=!0,this.updateTagTasks()}onViewUnload(){this.isLoaded=!1}onViewResize(){}getCustomActions(){return[{name:c("Manage Tags"),icon:"tags",callback:()=>{this.openTagManager()}}]}getEditMenuItems(){return[]}updateTagTasks(){if(this.isLoaded,!!this.isLoaded){this.tasks.length;try{let e=Ut(this.tasks,"tags",this.plugin);""+e.length+this.tasks.length,this.tagsComponent.setTasks(e),""+e.length}catch(e){console.error("[TagsBasesView] Error updating tag tasks:",e),this.showErrorState("Failed to update tag tasks")}}}async handleTaskCompletionLocal(e){try{await super.handleTaskCompletion(e),setTimeout(()=>{this.refreshTasks()},100)}catch(t){console.error("[TagsBasesView] Error handling task completion:",t)}}handleTaskContextMenu(e,t){let a=new WV.Menu;a.addItem(r=>{r.setTitle(c("Complete")),r.setIcon("check-square"),r.onClick(()=>{this.handleTaskCompletionLocal(t)})}).addSeparator().addItem(r=>{r.setTitle(c("Edit")),r.setIcon("pencil"),r.onClick(()=>{this.handleTaskSelection(t)})}).addItem(r=>{r.setTitle(c("Edit in File")),r.setIcon("file-edit"),r.onClick(()=>{this.handleTaskEdit(t)})}),a.showAtMouseEvent(e)}openTagManager(){}showEmptyState(){this.hideEmptyState(),this.createEmptyContainer("No tagged tasks found").addClass("tags-empty-state")}hideEmptyState(){let e=this.containerEl.querySelector(".tags-empty-state");e&&e.remove()}showErrorState(e){this.containerEl.empty(),this.createErrorContainer(e)}};var VV=A(require("obsidian")),LS=class extends _V.Component{constructor(e,t){super();this.basesPlugin=null;this.registeredViews=new Set;this.app=e,this.plugin=t}getBasesPlugin(){var e;try{let t=(e=this.app.internalPlugins)==null?void 0:e.plugins;return t&&t.bases?(this.basesPlugin=t.bases.instance,this.basesPlugin):(console.warn("[ViewManager] Bases plugin not found"),null)}catch(t){return console.error("[ViewManager] Error getting Bases plugin:",t),null}}isNewBasesApiSupported(){try{let e=typeof this.plugin.registerBasesView=="function",t=this.plugin.versionManager,a=t?t.isNewBasesApiSupported():!1;return""+e+a,e||a}catch(e){return console.error("[ViewManager] Error checking new Bases API support:",e),!1}}async initialize(){let e=this.getBasesPlugin();if(!e)return console.error("[ViewManager] Cannot initialize without Bases plugin"),!1;try{return await this.registerAllViews(),!0}catch(t){return console.error("[ViewManager] Initialization failed:",t),!1}}async registerAllViews(){await this.registerFileTaskView(),await this.registerInboxView(),await this.registerFlaggedView(),await this.registerProjectsView(),await this.registerTagsView()}async registerFileTaskView(){let e="task-genius-view";if(this.registeredViews.has(e)){""+e;return}try{let t=a=>(""+e,new RS(a,this.app,this.plugin));await this.registerView(e,t,"Task Genius View","task-genius")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerInboxView(){let e="inbox-bases-view";if(this.registeredViews.has(e)){""+e;return}try{let t=a=>(""+e,new FS(a,this.app,this.plugin));await this.registerView(e,t,"Inbox Tasks","inbox")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerFlaggedView(){let e="flagged-bases-view";if(this.registeredViews.has(e)){""+e;return}try{let t=a=>(""+e,new jS(a,this.app,this.plugin));await this.registerView(e,t,"Flagged Tasks","flag")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerProjectsView(){let e="projects-bases-view";if(this.registeredViews.has(e)){""+e;return}try{let t=a=>(""+e,new OS(a,this.app,this.plugin));await this.registerView(e,t,"Project Tasks","folders")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerTagsView(){let e="tags-bases-view";if(this.registeredViews.has(e)){""+e;return}try{let t=a=>(""+e,new NS(a,this.app,this.plugin));await this.registerView(e,t,"Tagged Tasks","tag")}catch(t){throw console.error(`[ViewManager] Failed to register view ${e}:`,t),t}}async registerView(e,t,a,r){if(this.isNewBasesApiSupported()){if(""+e,!this.basesPlugin)throw new Error("Bases plugin not available for legacy registration");let i={name:a,icon:r,factory:t};try{this.plugin.registerBasesView(e,i)}catch(n){console.warn("[ViewManager] Config registration failed, trying factory-only registration:",n),this.basesPlugin.registerView(e,t)}this.registeredViews.add(e),""+e}else if((0,VV.requireApiVersion)("1.9.0"))if(""+e,this.plugin.registerBasesView(e,t))this.registeredViews.add(e),""+e;else throw new Error("New API registration returned false")}unregisterView(e){try{if(!this.registeredViews.has(e)){""+e;return}this.isNewBasesApiSupported()?""+e:this.basesPlugin&&(this.basesPlugin.deregisterView(e),""+e),this.registeredViews.delete(e),""+e}catch(t){console.error(`[ViewManager] Failed to unregister view ${e}:`,t)}}unregisterAllViews(){let e=Array.from(this.registeredViews);for(let t of e)this.unregisterView(t)}getRegisteredViews(){return Array.from(this.registeredViews)}isViewRegistered(e){return this.registeredViews.has(e)}getAvailableViewTypes(){if(!this.basesPlugin)return[];try{return this.basesPlugin.getViewTypes()}catch(e){return console.error("[ViewManager] Error getting view types:",e),[]}}createViewInstance(e,t){if(!this.basesPlugin)return console.error("[ViewManager] Bases plugin not available"),null;try{let a=this.basesPlugin.getViewFactory(e);return a?a(t):(console.error(`[ViewManager] No factory found for view: ${e}`),null)}catch(a){return console.error(`[ViewManager] Error creating view instance ${e}:`,a),null}}getStatus(){let e=this.isNewBasesApiSupported();return{basesPluginAvailable:!!this.basesPlugin,registeredViewsCount:this.registeredViews.size,registeredViews:this.getRegisteredViews(),availableViewTypes:this.getAvailableViewTypes(),usingNewApi:e,apiVersion:e?"1.9.3+":"legacy"}}onload(){this.initialize()}onunload(){this.unregisterAllViews(),super.onunload()}};var sy=A(require("obsidian"));var Ls=class{static parse(e,t){let a=this.createCacheKey(e,t.id),r=this.parseCache.get(a);if(r)return{events:r.events.map(n=>({...n,source:t})),errors:[...r.errors],metadata:{...r.metadata}};let i={events:[],errors:[],metadata:{}};try{let n=this.unfoldLines(e.split(/\r?\n/)),o=null,l=!1,d=0;for(let u of n){d++;let p=u.trim();if(!(!p||p.startsWith("#")))try{let[m,f]=this.parseLine(p);switch(m){case"BEGIN":f==="VCALENDAR"?l=!0:f==="VEVENT"&&l&&(o={source:t});break;case"END":if(f==="VEVENT"&&o){let h=this.finalizeEvent(o);h&&i.events.push(h),o=null}else f==="VCALENDAR"&&(l=!1);break;case"VERSION":l&&!o&&(i.metadata.version=f);break;case"PRODID":l&&!o&&(i.metadata.prodid=f);break;case"CALSCALE":break;case"X-WR-CALNAME":l&&!o&&(i.metadata.calendarName=f);break;case"X-WR-CALDESC":l&&!o&&(i.metadata.description=f);break;case"X-WR-TIMEZONE":l&&!o&&(i.metadata.timezone=f);break;default:o&&this.parseEventProperty(o,m,f,p);break}}catch(m){i.errors.push({line:d,message:`Error parsing line: ${m.message}`,context:p})}}}catch(n){i.errors.push({message:`Fatal parsing error: ${n.message}`})}return this.cacheResult(a,i),i}static createCacheKey(e,t){let a=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);a=(a<<5)-a+i,a=a&a}return`${t}-${a}`}static cacheResult(e,t){if(this.parseCache.size>=this.MAX_CACHE_SIZE){let a=Array.from(this.parseCache.entries()),r=Math.floor(this.MAX_CACHE_SIZE/2);this.parseCache.clear();for(let i=a.length-r;i<a.length;i++)this.parseCache.set(a[i][0],a[i][1])}this.parseCache.set(e,{events:t.events.map(a=>({...a})),errors:[...t.errors],metadata:{...t.metadata}})}static unfoldLines(e){let t=[],a=[],r=!1;for(let i=0;i<e.length;i++){let n=e[i],o=n.charCodeAt(0);o===32||o===9?r&&(a.push(" "),a.push(n.slice(1))):(r&&(t.push(a.join("")),a.length=0),a.push(n),r=!0)}return r&&t.push(a.join("")),t}static parseLine(e){let t=e.indexOf(":");if(t===-1)throw new Error("Invalid line format: missing colon");let a=e.indexOf(";"),r;a!==-1&&a<t?r=e.slice(0,a).toUpperCase():r=e.slice(0,t).toUpperCase();let i=e.slice(t+1);return[r,i]}static parseEventProperty(e,t,a,r){let i=this.PROPERTY_HANDLERS.get(t);i?i(e,a,r):t.charCodeAt(0)===88&&t.charCodeAt(1)===45&&(e.customProperties||(e.customProperties={}),e.customProperties[t]=a)}static parseDateTime(e,t){let a=t.indexOf("VALUE=DATE")!==-1,r=e;if(r.indexOf("TZID=")!==-1){let d=r.lastIndexOf(":");d!==-1&&(r=r.slice(d+1))}let n=r.charCodeAt(r.length-1)===90;n&&(r=r.slice(0,-1));let o=r.length,l;if(a||o===8){let d=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2);l=new Date(d,u,p)}else{let d=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2),m=this.parseIntFromString(r,9,2),f=this.parseIntFromString(r,11,2),h=o>=15?this.parseIntFromString(r,13,2):0;n?l=new Date(Date.UTC(d,u,p,m,f,h)):l=new Date(d,u,p,m,f,h)}return{date:l,allDay:a}}static parseIntFromString(e,t,a){let r=0,i=t+a;for(let n=t;n<i&&n<e.length;n++){let o=e.charCodeAt(n)-48;o>=0&&o<=9&&(r=r*10+o)}return r}static parseOrganizer(e,t){let a={};e.charCodeAt(0)===77&&e.startsWith("MAILTO:")&&(a.email=e.slice(7));let r=t.match(this.CN_REGEX);return r&&(a.name=this.unescapeText(r[1])),a}static parseAttendee(e,t){let a={};e.charCodeAt(0)===77&&e.startsWith("MAILTO:")&&(a.email=e.slice(7));let r=t.match(this.CN_REGEX);r&&(a.name=this.unescapeText(r[1]));let i=t.match(this.ROLE_REGEX);i&&(a.role=i[1]);let n=t.match(this.PARTSTAT_REGEX);return n&&(a.status=n[1]),a}static unescapeText(e){return e.indexOf("\\")===-1?e:e.replace(/\\n/g,`
`).replace(/\\,/g,",").replace(/\\;/g,";").replace(/\\\\/g,"\\")}static clearCache(){this.parseCache.clear()}static getCacheStats(){return{size:this.parseCache.size,maxSize:this.MAX_CACHE_SIZE}}static finalizeEvent(e){var a;return!e.uid||!e.summary||!e.dtstart?null:{uid:e.uid,summary:e.summary,dtstart:e.dtstart,allDay:(a=e.allDay)!=null?a:!1,source:e.source,description:e.description,dtend:e.dtend,location:e.location,categories:e.categories,status:e.status,rrule:e.rrule,exdate:e.exdate,created:e.created,lastModified:e.lastModified,priority:e.priority,transp:e.transp,organizer:e.organizer,attendees:e.attendees,customProperties:e.customProperties}}},Ln=Ls;Ln.CN_REGEX=/CN=([^;:]+)/,Ln.ROLE_REGEX=/ROLE=([^;:]+)/,Ln.PARTSTAT_REGEX=/PARTSTAT=([^;:]+)/,Ln.parseCache=new Map,Ln.MAX_CACHE_SIZE=50,Ln.PROPERTY_HANDLERS=new Map([["UID",(e,t)=>{e.uid=t}],["SUMMARY",(e,t)=>{e.summary=Ls.unescapeText(t)}],["DESCRIPTION",(e,t)=>{e.description=Ls.unescapeText(t)}],["LOCATION",(e,t)=>{e.location=Ls.unescapeText(t)}],["STATUS",(e,t)=>{e.status=t.toUpperCase()}],["PRIORITY",(e,t)=>{let a=parseInt(t,10);isNaN(a)||(e.priority=a)}],["TRANSP",(e,t)=>{e.transp=t.toUpperCase()}],["RRULE",(e,t)=>{e.rrule=t}],["DTSTART",(e,t,a)=>{let r=Ls.parseDateTime(t,a);e.dtstart=r.date,r.allDay!==void 0&&(e.allDay=r.allDay)}],["DTEND",(e,t,a)=>{e.dtend=Ls.parseDateTime(t,a).date}],["CREATED",(e,t,a)=>{e.created=Ls.parseDateTime(t,a).date}],["LAST-MODIFIED",(e,t,a)=>{e.lastModified=Ls.parseDateTime(t,a).date}],["CATEGORIES",(e,t)=>{e.categories=t.split(",").map(a=>a.trim())}],["EXDATE",(e,t,a)=>{e.exdate||(e.exdate=[]);let r=t.split(",");for(let i of r){let n=Ls.parseDateTime(i.trim(),a).date;e.exdate.push(n)}}],["ORGANIZER",(e,t,a)=>{e.organizer=Ls.parseOrganizer(t,a)}],["ATTENDEE",(e,t,a)=>{e.attendees||(e.attendees=[]),e.attendees.push(Ls.parseAttendee(t,a))}]]);var ry=class{static applyStatusMapping(e,t,a){if(!(t==null?void 0:t.enabled))return this.mapIcsStatusToTaskStatus(e.status,a);if(t.propertyRules){let i=this.applyPropertyRules(e,t.propertyRules,a);if(i)return i}let r=this.applyTimingRules(e,t.timingRules,a);return r||(t.overrideIcsStatus?this.convertTaskStatusToString(t.timingRules.futureEvents,a):this.mapIcsStatusToTaskStatus(e.status,a))}static applyPropertyRules(e,t,a){if(t.holidayMapping&&"isHoliday"in e){if(e.isHoliday)return this.convertTaskStatusToString(t.holidayMapping.holidayStatus,a);if(t.holidayMapping.nonHolidayStatus)return this.convertTaskStatusToString(t.holidayMapping.nonHolidayStatus,a)}if(t.categoryMapping&&e.categories)for(let r of e.categories){let i=t.categoryMapping[r.toLowerCase()];if(i)return this.convertTaskStatusToString(i,a)}if(t.summaryMapping)for(let r of t.summaryMapping)try{if(new RegExp(r.pattern,"i").test(e.summary))return this.convertTaskStatusToString(r.status,a)}catch(i){console.warn(`Invalid regex pattern: ${r.pattern}`,i)}return null}static applyTimingRules(e,t,a){let r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate()),n=new Date(e.dtstart),o=e.dtend?new Date(e.dtend):n,l=new Date(n.getFullYear(),n.getMonth(),n.getDate()),d=new Date(o.getFullYear(),o.getMonth(),o.getDate());return d<i?this.convertTaskStatusToString(t.pastEvents,a):l<=i&&d>=i?this.convertTaskStatusToString(t.currentEvents,a):this.convertTaskStatusToString(t.futureEvents,a)}static convertTaskStatusToString(e,t){let a=t.taskStatusMarks,i={" ":"Not Started",x:"Completed","-":"Abandoned",">":"In Progress","<":"Planned","!":"Important","?":"Planned","/":"In Progress","+":"Completed","*":"Important",'"':"Not Started",l:"Not Started",b:"Not Started",i:"Not Started",S:"Not Started",I:"Not Started",p:"Not Started",c:"Not Started",f:"Important",k:"Important",w:"Completed",u:"In Progress",d:"Abandoned"}[e];return a[i]||e}static mapIcsStatusToTaskStatus(e,t){let a=t.taskStatusMarks;switch(e==null?void 0:e.toUpperCase()){case"COMPLETED":return a.Completed||"x";case"CANCELLED":return a.Abandoned||"-";case"TENTATIVE":return a.Planned||"?";case"CONFIRMED":default:return a["Not Started"]||" "}}static getDefaultConfig(){return{enabled:!1,timingRules:{pastEvents:"x",currentEvents:"/",futureEvents:" "},propertyRules:{categoryMapping:{holiday:"-",vacation:"-",\u5047\u671F:"-",\u8282\u65E5:"-"},holidayMapping:{holidayStatus:"-",nonHolidayStatus:void 0}},overrideIcsStatus:!0}}static getAvailableStatuses(){return[{value:" ",label:"Incomplete",description:"Task is not yet completed"},{value:"x",label:"Complete",description:"Task is completed"},{value:"-",label:"Cancelled",description:"Task is cancelled or abandoned"},{value:">",label:"Forwarded",description:"Task is forwarded or rescheduled"},{value:"<",label:"Scheduled",description:"Task is scheduled"},{value:"!",label:"Important",description:"Task is marked as important"},{value:"?",label:"Question",description:"Task is tentative or questionable"},{value:"/",label:"In Progress",description:"Task is currently in progress"}]}static getStatusLabel(e){let t=this.getAvailableStatuses().find(a=>a.value===e);return t?t.label:"Unknown"}static validateConfig(e){let t=[];if(!e.timingRules)t.push("Timing rules are required");else{let a=this.getAvailableStatuses().map(r=>r.value);a.includes(e.timingRules.pastEvents)||t.push(`Invalid status for past events: ${e.timingRules.pastEvents}`),a.includes(e.timingRules.currentEvents)||t.push(`Invalid status for current events: ${e.timingRules.currentEvents}`),a.includes(e.timingRules.futureEvents)||t.push(`Invalid status for future events: ${e.timingRules.futureEvents}`)}if(e.propertyRules){let a=this.getAvailableStatuses().map(r=>r.value);if(e.propertyRules.categoryMapping)for(let[r,i]of Object.entries(e.propertyRules.categoryMapping))a.includes(i)||t.push(`Invalid status for category '${r}': ${i}`);if(e.propertyRules.summaryMapping)for(let r of e.propertyRules.summaryMapping){a.includes(r.status)||t.push(`Invalid status for pattern '${r.pattern}': ${r.status}`);try{new RegExp(r.pattern)}catch(i){t.push(`Invalid regex pattern: ${r.pattern}`)}}e.propertyRules.holidayMapping&&(a.includes(e.propertyRules.holidayMapping.holidayStatus)||t.push(`Invalid holiday status: ${e.propertyRules.holidayMapping.holidayStatus}`),e.propertyRules.holidayMapping.nonHolidayStatus&&!a.includes(e.propertyRules.holidayMapping.nonHolidayStatus)&&t.push(`Invalid non-holiday status: ${e.propertyRules.holidayMapping.nonHolidayStatus}`))}return{valid:t.length===0,errors:t}}};var HS=class extends sy.Component{constructor(e,t){super();this.cache=new Map;this.syncStatuses=new Map;this.refreshIntervals=new Map;this.lastSyncTime=0;this.SYNC_DEBOUNCE_MS=3e4;this.syncPromise=null;this.config=e,this.pluginSettings=t}async initialize(){for(let e of this.config.sources)this.syncStatuses.set(e.id,{sourceId:e.id,status:e.enabled?"idle":"disabled"});this.config.enableBackgroundRefresh&&this.startBackgroundRefresh()}updateConfig(e){this.config=e;let t=new Set(this.config.sources.map(a=>a.id));for(let[a]of this.syncStatuses)t.has(a)||(this.syncStatuses.delete(a),this.clearRefreshInterval(a));for(let a of this.config.sources)this.syncStatuses.has(a.id)||this.syncStatuses.set(a.id,{sourceId:a.id,status:a.enabled?"idle":"disabled"});this.config.enableBackgroundRefresh?this.startBackgroundRefresh():this.stopBackgroundRefresh()}setOnEventsUpdated(e){this.onEventsUpdated=e}getConfig(){return this.config}getAllEvents(){let e=[];this.cache.size,this.config.sources;for(let[t,a]of this.cache){let r=this.config.sources.find(i=>i.id===t);if(a.events.length,r==null?void 0:r.enabled){let i=this.applyFilters(a.events,r);i.length,e.push(...i)}else r==null||r.enabled}return e.length,e}getAllEventsWithHolidayDetection(){var t;let e=[];this.cache.size,this.config.sources;for(let[a,r]of this.cache){let i=this.config.sources.find(n=>n.id===a);if(i==null||i.enabled,r.events.length,i==null?void 0:i.enabled){let n=this.applyFilters(r.events,i);n.length;let o;((t=i.holidayConfig)==null?void 0:t.enabled)?o=no.processEventsWithHolidayDetection(n,i.holidayConfig):o=n.map(l=>({...l,isHoliday:!1,showInForecast:!0})),o.length,e.push(...o)}}return e.length,e}async getAllEventsWithSync(){let e=Date.now();return this.syncPromise?(await this.syncPromise,this.getAllEvents()):(e-this.lastSyncTime>this.SYNC_DEBOUNCE_MS&&(this.syncPromise=this.syncAllSources().finally(()=>{this.syncPromise=null}),await this.syncPromise,this.lastSyncTime=e),this.getAllEvents())}getAllEventsNonBlocking(e=!0){let t=this.getAllEvents();return e&&this.triggerBackgroundSyncIfNeeded(),t}triggerBackgroundSyncIfNeeded(){let e=Date.now();this.config.sources.some(a=>{if(!a.enabled)return!1;let r=this.cache.get(a.id);return r?e>r.expiresAt:!0})&&e-this.lastSyncTime>this.SYNC_DEBOUNCE_MS&&this.syncAllSources().catch(a=>{console.warn("Background ICS sync failed:",a)})}getEventsFromSource(e){let t=this.cache.get(e),a=this.config.sources.find(r=>r.id===e);return!t||!(a==null?void 0:a.enabled)?[]:this.applyFilters(t.events,a)}convertEventsToTasks(e){return e.map(t=>this.convertEventToTask(t))}convertEventsWithHolidayToTasks(e){return e.filter(t=>t.showInForecast).map(t=>this.convertEventWithHolidayToTask(t))}convertEventToTask(e){var i;let t=this.applyTextReplacements(e),a=ry.applyStatusMapping(e,e.source.statusMapping,this.pluginSettings);return{id:`ics-${e.source.id}-${e.uid}`,content:t.summary,filePath:`ics://${e.source.name}`,line:0,completed:a==="x"||a===this.pluginSettings.taskStatusMarks.Completed,status:a,originalMarkdown:`- [${a}] ${t.summary}`,metadata:{tags:e.categories||[],children:[],priority:this.mapIcsPriorityToTaskPriority(e.priority),startDate:e.dtstart.getTime(),dueDate:(i=e.dtend)==null?void 0:i.getTime(),scheduledDate:e.dtstart.getTime(),project:e.source.name,context:t.location,heading:[]},icsEvent:{...e,summary:t.summary,description:t.description,location:t.location},readonly:!0,badge:e.source.showType==="badge",source:{type:"ics",name:e.source.name,id:e.source.id}}}convertEventWithHolidayToTask(e){var n;let t=this.applyTextReplacements(e),a=t.summary;e.holidayGroup&&e.holidayGroup.displayStrategy==="summary"&&(a=e.holidayGroup.title);let r=ry.applyStatusMapping(e,e.source.statusMapping,this.pluginSettings);return{id:`ics-${e.source.id}-${e.uid}`,content:a,filePath:`ics://${e.source.name}`,line:0,completed:r==="x"||r===this.pluginSettings.taskStatusMarks.Completed,status:r,originalMarkdown:`- [${r}] ${a}`,metadata:{tags:e.categories||[],children:[],priority:this.mapIcsPriorityToTaskPriority(e.priority),startDate:e.dtstart.getTime(),dueDate:(n=e.dtend)==null?void 0:n.getTime(),scheduledDate:e.dtstart.getTime(),project:e.source.name,context:t.location,heading:[]},icsEvent:{...e,summary:t.summary,description:t.description,location:t.location},readonly:!0,badge:e.source.showType==="badge",source:{type:"ics",name:e.source.name,id:e.source.id}}}mapIcsStatusToTaskStatus(e){switch(e==null?void 0:e.toUpperCase()){case"COMPLETED":return"x";case"CANCELLED":return"-";case"TENTATIVE":return"?";case"CONFIRMED":default:return" "}}mapIcsPriorityToTaskPriority(e){if(e!==void 0){if(e>=1&&e<=4)return 1;if(e===5)return 3;if(e>=6&&e<=9)return 5}}async syncSource(e){var a;let t=this.config.sources.find(r=>r.id===e);if(!t)throw new Error(`Source not found: ${e}`);this.updateSyncStatus(e,{status:"syncing"});try{let r=await this.fetchIcsData(t);if(r.success&&r.data){let i={sourceId:e,events:r.data.events,timestamp:r.timestamp,expiresAt:r.timestamp+this.config.maxCacheAge*60*60*1e3};this.cache.set(e,i),this.updateSyncStatus(e,{status:"idle",lastSync:r.timestamp,eventCount:r.data.events.length}),(a=this.onEventsUpdated)==null||a.call(this,e,r.data.events)}else{let i=this.categorizeError(r.error);console.warn(`ICS sync failed for source ${e} (${i}):`,r.error),this.updateSyncStatus(e,{status:"error",error:`${i}: ${r.error||"Unknown error"}`})}return r}catch(r){let i=r instanceof Error?r.message:"Unknown error",n=this.categorizeError(i);return console.warn(`ICS sync exception for source ${e} (${n}):`,r),this.updateSyncStatus(e,{status:"error",error:`${n}: ${i}`}),{success:!1,error:i,timestamp:Date.now()}}}async syncAllSources(){let e=new Map,t=this.config.sources.filter(a=>a.enabled).map(async a=>{let r=await this.syncSource(a.id);return e.set(a.id,r),r});return await Promise.allSettled(t),e}getSyncStatus(e){return this.syncStatuses.get(e)}getAllSyncStatuses(){return new Map(this.syncStatuses)}clearSourceCache(e){this.cache.delete(e)}clearAllCache(){this.cache.clear()}async fetchIcsData(e){var t;try{let a=Ei.convertWebcalUrl(e.url);if(!a.success)return{success:!1,error:`URL validation failed: ${a.error}`,timestamp:Date.now()};let i={url:a.convertedUrl,method:"GET",headers:{"User-Agent":"Obsidian Task Progress Bar Plugin",...(t=e.auth)==null?void 0:t.headers}};if(e.auth)switch(e.auth.type){case"basic":if(e.auth.username&&e.auth.password){let p=btoa(`${e.auth.username}:${e.auth.password}`);i.headers.Authorization=`Basic ${p}`}break;case"bearer":e.auth.token&&(i.headers.Authorization=`Bearer ${e.auth.token}`);break}let n=this.cache.get(e.id);(n==null?void 0:n.etag)&&(i.headers["If-None-Match"]=n.etag),(n==null?void 0:n.lastModified)&&(i.headers["If-Modified-Since"]=n.lastModified);let o=this.config.networkTimeout*1e3,l=new Promise((p,m)=>{setTimeout(()=>{m(new Error(`Request timeout after ${this.config.networkTimeout} seconds`))},o)}),d=await Promise.race([(0,sy.requestUrl)(i),l]);if(d.status===304&&n)return{success:!0,data:{events:n.events,errors:[],metadata:{}},timestamp:Date.now()};if(d.status!==200)return{success:!1,error:`HTTP ${d.status}: ${d.text||"Unknown error"}`,statusCode:d.status,timestamp:Date.now()};let u=Ln.parse(d.text,e);return n&&(n.etag=d.headers.etag,n.lastModified=d.headers["last-modified"]),{success:!0,data:u,timestamp:Date.now()}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Unknown error",timestamp:Date.now()}}}applyFilters(e,t){let a=[...e];if(e.length,t.showAllDayEvents,t.showTimedEvents,t.filters,!t.showAllDayEvents){let r=a.length;a=a.filter(i=>!i.allDay),""+r+a.length}if(!t.showTimedEvents){let r=a.length;a=a.filter(i=>i.allDay),""+r+a.length}if(t.filters&&(a=a.filter(r=>{var i,n,o,l,d,u,p,m;if(t.filters.include){let f=t.filters.include,h=!0;if(((i=f.summary)==null?void 0:i.length)&&(h=h&&f.summary.some(k=>this.matchesPattern(r.summary,k))),((n=f.description)==null?void 0:n.length)&&r.description&&(h=h&&f.description.some(k=>this.matchesPattern(r.description,k))),((o=f.location)==null?void 0:o.length)&&r.location&&(h=h&&f.location.some(k=>this.matchesPattern(r.location,k))),((l=f.categories)==null?void 0:l.length)&&r.categories&&(h=h&&f.categories.some(k=>r.categories.includes(k))),!h)return!1}if(t.filters.exclude){let f=t.filters.exclude;if(((d=f.summary)==null?void 0:d.length)&&f.summary.some(h=>this.matchesPattern(r.summary,h))||((u=f.description)==null?void 0:u.length)&&r.description&&f.description.some(h=>this.matchesPattern(r.description,h))||((p=f.location)==null?void 0:p.length)&&r.location&&f.location.some(h=>this.matchesPattern(r.location,h))||((m=f.categories)==null?void 0:m.length)&&r.categories&&f.categories.some(h=>r.categories.includes(h)))return!1}return!0})),a.length>this.config.maxEventsPerSource){let r=a.length;a=a.sort((i,n)=>n.dtstart.getTime()-i.dtstart.getTime()).slice(0,this.config.maxEventsPerSource),""+r+a.length+this.config.maxEventsPerSource}return a.length,a}matchesPattern(e,t){try{return new RegExp(t,"i").test(e)}catch(a){return e.toLowerCase().includes(t.toLowerCase())}}applyTextReplacements(e){let a=e.source.textReplacements;if(!a||a.length===0)return{summary:e.summary,description:e.description,location:e.location};let r=e.summary,i=e.description,n=e.location;for(let o of a)if(!!o.enabled)try{let l=new RegExp(o.pattern,o.flags||"g");switch(o.target){case"summary":r=r.replace(l,o.replacement);break;case"description":i&&(i=i.replace(l,o.replacement));break;case"location":n&&(n=n.replace(l,o.replacement));break;case"all":r=r.replace(l,o.replacement),i&&(i=i.replace(l,o.replacement)),n&&(n=n.replace(l,o.replacement));break}}catch(l){console.warn(`Invalid regex pattern in text replacement rule "${o.name}": ${o.pattern}`,l)}return{summary:r,description:i,location:n}}updateSyncStatus(e,t){let a=this.syncStatuses.get(e)||{sourceId:e,status:"idle"};this.syncStatuses.set(e,{...a,...t})}categorizeError(e){if(!e)return"unknown";let t=e.toLowerCase();return t.includes("timeout")||t.includes("request timeout")?"timeout":t.includes("connection")||t.includes("network")||t.includes("err_connection")?"network":t.includes("404")||t.includes("not found")?"not-found":t.includes("403")||t.includes("unauthorized")||t.includes("401")?"auth":t.includes("500")||t.includes("502")||t.includes("503")?"server":t.includes("parse")||t.includes("invalid")?"parse":"unknown"}startBackgroundRefresh(){this.stopBackgroundRefresh();for(let e of this.config.sources)if(e.enabled){let t=e.refreshInterval||this.config.globalRefreshInterval,a=setInterval(()=>{this.syncSource(e.id).catch(r=>{console.error(`Background sync failed for source ${e.id}:`,r)})},t*60*1e3);this.refreshIntervals.set(e.id,a)}}stopBackgroundRefresh(){for(let[e,t]of this.refreshIntervals)clearInterval(t);this.refreshIntervals.clear()}clearRefreshInterval(e){let t=this.refreshIntervals.get(e);t&&(clearInterval(t),this.refreshIntervals.delete(e))}onunload(){this.stopBackgroundRefresh(),super.onunload()}};var UV=A(require("obsidian"));var BS=class extends UV.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.VERSION_STORAGE_KEY="plugin-version";this.persister=new Gu(this.app.appId),this.currentVersion=this.getCurrentVersionFromManifest()}getCurrentVersionFromManifest(){var e;return((e=this.plugin.manifest)==null?void 0:e.version)?this.plugin.manifest.version:(console.warn("Could not determine plugin version from manifest, using fallback"),"unknown")}async getPreviousVersion(){try{let e=await this.persister.loadFile(this.VERSION_STORAGE_KEY);return(e==null?void 0:e.data)||null}catch(e){return console.error("Error loading previous version:",e),null}}async storeCurrentVersion(){try{await this.persister.storeFile(this.VERSION_STORAGE_KEY,this.currentVersion)}catch(e){console.error("Error storing current version:",e)}}compareVersions(e,t){if(e===t||e==="unknown"||t==="unknown")return 0;let a=e.split(".").map(n=>parseInt(n,10)||0),r=t.split(".").map(n=>parseInt(n,10)||0),i=Math.max(a.length,r.length);for(;a.length<i;)a.push(0);for(;r.length<i;)r.push(0);for(let n=0;n<i;n++){if(a[n]<r[n])return-1;if(a[n]>r[n])return 1}return 0}async checkVersionChange(){try{let e=await this.getPreviousVersion(),t=e===null,a=!1,r=!1,i=!1,n;if(!t&&e)if(!this.isValidVersionString(e))console.warn(`Corrupted version data detected: ${e}, forcing rebuild`),i=!0,n=`Corrupted version data detected (${e}) - rebuilding index`;else{let l=this.compareVersions(this.currentVersion,e);a=l>0,r=l<0}return t?(i=!0,n="First installation - building initial index"):a?(i=!0,n=`Plugin upgraded from ${e} to ${this.currentVersion} - rebuilding index for compatibility`):r&&(i=!0,n=`Plugin downgraded from ${e} to ${this.currentVersion} - rebuilding index for compatibility`),{versionInfo:{current:this.currentVersion,previous:e,isFirstInstall:t,isUpgrade:a,isDowngrade:r},requiresRebuild:i,rebuildReason:n}}catch(e){return console.error("Error checking version change:",e),{versionInfo:{current:this.currentVersion,previous:null,isFirstInstall:!0,isUpgrade:!1,isDowngrade:!1},requiresRebuild:!0,rebuildReason:`Error checking version (${e.message}) - rebuilding index for safety`}}}async markVersionProcessed(){await this.storeCurrentVersion()}getCurrentVersion(){return this.currentVersion}async forceVersionMismatch(){try{await this.persister.storeFile(this.VERSION_STORAGE_KEY,"0.0.0")}catch(e){console.error("Error forcing version mismatch:",e)}}async clearVersionInfo(){try{await this.persister.removeFile(this.VERSION_STORAGE_KEY)}catch(e){console.error("Error clearing version info:",e)}}isValidVersionString(e){return!e||typeof e!="string"?!1:e==="unknown"?!0:/^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9\-\.]+))?$/.test(e)}async recoverFromCorruptedVersion(){try{await this.clearVersionInfo(),await this.storeCurrentVersion(),""+this.currentVersion}catch(e){throw console.error("Error during version recovery:",e),new Error(`Failed to recover from corrupted version: ${e.message}`)}}async handleEmergencyRebuild(e){return console.warn(`Emergency rebuild triggered: ${e}`),{versionInfo:{current:this.currentVersion,previous:null,isFirstInstall:!1,isUpgrade:!1,isDowngrade:!1},requiresRebuild:!0,rebuildReason:`Emergency rebuild: ${e}`}}async validateVersionStorage(){try{let e="test-version",t=await this.getPreviousVersion();await this.persister.storeFile(this.VERSION_STORAGE_KEY,e);let a=await this.getPreviousVersion();return t?await this.persister.storeFile(this.VERSION_STORAGE_KEY,t):await this.clearVersionInfo(),a===e}catch(e){return console.error("Version storage validation failed:",e),!1}}async getDiagnosticInfo(){let e=await this.getPreviousVersion(),t=await this.validateVersionStorage(),a=e?this.isValidVersionString(e):!0,r=!1;try{await this.persister.storeFile(`${this.VERSION_STORAGE_KEY}-test`,"test"),await this.persister.removeFile(`${this.VERSION_STORAGE_KEY}-test`),r=!0}catch(i){console.error("Write test failed:",i)}return{currentVersion:this.currentVersion,previousVersion:e,storageValid:t,versionValid:a,canWrite:r}}isObsidianVersionSupported(e){try{if(typeof window.requireApiVersion=="function")return window.requireApiVersion(e);let t=this.app.appVersion;return t?this.compareVersions(t,e)>=0:(console.warn("Cannot determine Obsidian version, assuming not supported"),!1)}catch(t){return console.error("Error checking Obsidian version support:",t),!1}}isNewBasesApiSupported(){try{let e=this.isObsidianVersionSupported("1.9.3"),t=typeof this.plugin.registerBasesView=="function";return e&&t}catch(e){return console.error("Error checking new Bases API support:",e),!1}}};Q();var Mp=class{constructor(e){this.plugin=e}hasUserMadeChanges(){let e=this.plugin.settings,t=me;return[this.hasCustomViews(e),this.isProgressBarCustomized(e,t),this.isTaskStatusCustomized(e,t),this.isQuickCaptureCustomized(e,t),this.isWorkflowCustomized(e,t),this.areAdvancedFeaturesEnabled(e,t),this.isFileParsingCustomized(e,t)].some(r=>r)}getChangesSummary(){var r;let e=[],t=this.plugin.settings,a=me;if(this.hasCustomViews(t)){let i=((r=t.viewConfiguration)==null?void 0:r.filter(n=>n.type==="custom").length)||0;e.push(c("Custom views created")+` (${i})`)}return this.isProgressBarCustomized(t,a)&&e.push(c("Progress bar settings modified")),this.isTaskStatusCustomized(t,a)&&e.push(c("Task status settings configured")),this.isQuickCaptureCustomized(t,a)&&e.push(c("Quick capture configured")),this.isWorkflowCustomized(t,a)&&e.push(c("Workflow settings enabled")),this.areAdvancedFeaturesEnabled(t,a)&&e.push(c("Advanced features enabled")),this.isFileParsingCustomized(t,a)&&e.push(c("File parsing customized")),e}hasCustomViews(e){var t,a;return(a=(t=e.viewConfiguration)==null?void 0:t.some(r=>r.type==="custom"))!=null?a:!1}isProgressBarCustomized(e,t){return e.progressBarDisplayMode!==t.progressBarDisplayMode||e.displayMode!==t.displayMode||e.showPercentage!==t.showPercentage||e.customizeProgressRanges!==t.customizeProgressRanges||e.allowCustomProgressGoal!==t.allowCustomProgressGoal||e.hideProgressBarBasedOnConditions!==t.hideProgressBarBasedOnConditions}isTaskStatusCustomized(e,t){return e.enableTaskStatusSwitcher!==t.enableTaskStatusSwitcher||e.enableCustomTaskMarks!==t.enableCustomTaskMarks||e.enableCycleCompleteStatus!==t.enableCycleCompleteStatus}isQuickCaptureCustomized(e,t){let a=e.quickCapture||t.quickCapture,r=t.quickCapture;return a.enableQuickCapture!==r.enableQuickCapture||a.enableMinimalMode!==r.enableMinimalMode}isWorkflowCustomized(e,t){let a=e.workflow||t.workflow,r=t.workflow;return a.enableWorkflow!==r.enableWorkflow||a.autoAddTimestamp!==r.autoAddTimestamp||a.calculateSpentTime!==r.calculateSpentTime}areAdvancedFeaturesEnabled(e,t){var a,r,i,n,o,l,d,u;return((a=e.rewards)==null?void 0:a.enableRewards)!==((r=t.rewards)==null?void 0:r.enableRewards)||((i=e.habit)==null?void 0:i.enableHabits)!==((n=t.habit)==null?void 0:n.enableHabits)||((o=e.timelineSidebar)==null?void 0:o.enableTimelineSidebar)!==((l=t.timelineSidebar)==null?void 0:l.enableTimelineSidebar)||((d=e.betaTest)==null?void 0:d.enableBaseView)!==((u=t.betaTest)==null?void 0:u.enableBaseView)}isFileParsingCustomized(e,t){let a=e.fileParsingConfig||t.fileParsingConfig,r=t.fileParsingConfig;return a.enableWorkerProcessing!==r.enableWorkerProcessing||a.enableFileMetadataParsing!==r.enableFileMetadataParsing||a.enableTagBasedTaskParsing!==r.enableTagBasedTaskParsing||a.enableMtimeOptimization!==r.enableMtimeOptimization}createSettingsSnapshot(){var t,a,r,i,n,o;let e={customViewCount:((t=this.plugin.settings.viewConfiguration)==null?void 0:t.filter(l=>l.type==="custom").length)||0,progressBarMode:this.plugin.settings.progressBarDisplayMode,taskStatusEnabled:this.plugin.settings.enableTaskStatusSwitcher,quickCaptureEnabled:(a=this.plugin.settings.quickCapture)==null?void 0:a.enableQuickCapture,workflowEnabled:(r=this.plugin.settings.workflow)==null?void 0:r.enableWorkflow,rewardsEnabled:(i=this.plugin.settings.rewards)==null?void 0:i.enableRewards,habitsEnabled:(n=this.plugin.settings.habit)==null?void 0:n.enableHabits,workerProcessingEnabled:(o=this.plugin.settings.fileParsingConfig)==null?void 0:o.enableWorkerProcessing,timestamp:Date.now()};return JSON.stringify(e)}hasChangedSinceSnapshot(e){try{let t=JSON.parse(e),a=JSON.parse(this.createSettingsSnapshot());return["customViewCount","progressBarMode","taskStatusEnabled","quickCaptureEnabled","workflowEnabled","rewardsEnabled","habitsEnabled","workerProcessingEnabled"].some(i=>t[i]!==a[i])}catch(t){return console.warn("Failed to compare settings snapshot:",t),!0}}};var Hn=A(require("obsidian"));Q();var Ap="task-genius-onboarding",Ft;(function(n){n[n.SETTINGS_CHECK=0]="SETTINGS_CHECK",n[n.WELCOME=1]="WELCOME",n[n.USER_LEVEL_SELECT=2]="USER_LEVEL_SELECT",n[n.CONFIG_PREVIEW=3]="CONFIG_PREVIEW",n[n.TASK_CREATION_GUIDE=4]="TASK_CREATION_GUIDE",n[n.COMPLETE=5]="COMPLETE"})(Ft||(Ft={}));var WS=class extends Hn.ItemView{constructor(e,t,a){super(e);this.plugin=t,this.configManager=new Vo(t),this.settingsDetector=new Mp(t),this.onComplete=a,this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1,userHasChanges:this.settingsDetector.hasUserMadeChanges(),changesSummary:this.settingsDetector.getChangesSummary()},this.userLevelSelector=new ru(this.configManager),this.configPreview=new su(this.configManager),this.taskCreationGuide=new bu(this.plugin),this.onboardingComplete=new Tu}getViewType(){return Ap}getDisplayText(){return c("Task Genius Setup")}getIcon(){return"zap"}async onOpen(){this.createViewStructure(),this.displayCurrentStep()}async onClose(){this.contentEl.empty()}createViewStructure(){let e=this.contentEl;e.empty(),e.addClass("onboarding-view"),this.onboardingHeaderEl=e.createDiv("onboarding-header"),this.onboardingContentEl=e.createDiv("onboarding-content"),this.footerEl=e.createDiv("onboarding-footer"),this.createFooterButtons()}createFooterButtons(){let e=this.footerEl.createDiv("onboarding-buttons");this.skipButton=new Hn.ButtonComponent(e).setButtonText(c("Skip setup")).onClick(()=>this.handleSkip()),this.backButton=new Hn.ButtonComponent(e).setButtonText(c("Back")).onClick(()=>this.handleBack()),this.nextButton=new Hn.ButtonComponent(e).setButtonText(c("Next")).setCta().onClick(()=>this.handleNext())}displayCurrentStep(){switch(this.onboardingHeaderEl.empty(),this.onboardingContentEl.empty(),this.updateButtonStates(),this.state.currentStep){case 0:this.displaySettingsCheckStep();break;case 1:this.displayWelcomeStep();break;case 2:this.displayUserLevelSelectStep();break;case 3:this.displayConfigPreviewStep();break;case 4:this.displayTaskCreationGuideStep();break;case 5:this.displayCompleteStep();break}}displaySettingsCheckStep(){this.onboardingHeaderEl.createEl("h1",{text:c("Task Genius Setup")});let e=this.onboardingContentEl;if(this.state.userHasChanges){this.onboardingHeaderEl.createEl("p",{text:c("We noticed you've already configured Task Genius"),cls:"onboarding-subtitle"});let t=e.createDiv("settings-check-section");t.createEl("h3",{text:c("Your current configuration includes:")});let a=t.createEl("ul",{cls:"changes-summary-list"});this.state.changesSummary.forEach(l=>{let d=a.createEl("li"),u=d.createSpan("change-check");(0,Hn.setIcon)(u,"check"),d.createSpan("change-text").setText(l)});let r=e.createDiv("onboarding-question");r.createEl("h3",{text:c("Would you like to run the setup wizard anyway?")});let i=r.createDiv("question-options");i.createEl("button",{text:c("Yes, show me the setup wizard"),cls:"mod-cta question-button"}).addEventListener("click",()=>{this.state.currentStep=1,this.displayCurrentStep()}),i.createEl("button",{text:c("No, I'm happy with my current setup"),cls:"question-button"}).addEventListener("click",()=>this.handleSkip())}else this.state.currentStep=1,this.displayCurrentStep()}displayWelcomeStep(){this.onboardingHeaderEl.createEl("h1",{text:c("Welcome to Task Genius")}),this.onboardingHeaderEl.createEl("p",{text:c("Transform your task management with advanced progress tracking and workflow automation"),cls:"onboarding-subtitle"});let e=this.onboardingContentEl,a=e.createDiv("welcome-section").createDiv("features-overview");[{icon:"bar-chart-3",title:c("Progress Tracking"),description:c("Visual progress bars and completion tracking for all your tasks")},{icon:"building",title:c("Project Management"),description:c("Organize tasks by projects with advanced filtering and sorting")},{icon:"zap",title:c("Workflow Automation"),description:c("Automate task status changes and improve your productivity")},{icon:"calendar",title:c("Multiple Views"),description:c("Kanban boards, calendars, Gantt charts, and more visualization options")}].forEach(n=>{let o=a.createDiv("feature-item"),l=o.createDiv("feature-icon");(0,Hn.setIcon)(l,n.icon);let d=o.createDiv("feature-content");d.createEl("h3",{text:n.title}),d.createEl("p",{text:n.description})}),e.createDiv("setup-note").createEl("p",{text:c("This quick setup will help you configure Task Genius based on your experience level and needs. You can always change these settings later."),cls:"setup-description"})}displayUserLevelSelectStep(){this.onboardingHeaderEl.createEl("h1",{text:c("Choose Your Usage Mode")}),this.onboardingHeaderEl.createEl("p",{text:c("Select the configuration that best matches your task management experience"),cls:"onboarding-subtitle"}),this.userLevelSelector.render(this.onboardingContentEl,e=>{this.state.selectedConfig=e,this.updateButtonStates()})}displayConfigPreviewStep(){if(!this.state.selectedConfig){this.state.currentStep=2,this.displayCurrentStep();return}this.onboardingHeaderEl.createEl("h1",{text:c("Configuration Preview")}),this.onboardingHeaderEl.createEl("p",{text:c("Review the settings that will be applied for your selected mode"),cls:"onboarding-subtitle"}),this.configPreview.render(this.onboardingContentEl,this.state.selectedConfig)}displayTaskCreationGuideStep(){this.onboardingHeaderEl.createEl("h1",{text:c("Create Your First Task")}),this.onboardingHeaderEl.createEl("p",{text:c("Learn how to create and format tasks in Task Genius"),cls:"onboarding-subtitle"}),this.taskCreationGuide.render(this.onboardingContentEl)}displayCompleteStep(){!this.state.selectedConfig||(this.onboardingHeaderEl.createEl("h1",{text:c("Setup Complete!")}),this.onboardingHeaderEl.createEl("p",{text:c("Task Genius is now configured and ready to use"),cls:"onboarding-subtitle"}),this.onboardingComplete.render(this.onboardingContentEl,this.state.selectedConfig))}updateButtonStates(){let e=this.state.currentStep;this.skipButton.buttonEl.style.display=e===0||e===1?"inline-block":"none",this.backButton.buttonEl.style.display=e<=1?"none":"inline-block";let t=e===5;e===0?this.nextButton.buttonEl.style.display="none":(this.nextButton.buttonEl.style.display="inline-block",this.nextButton.setButtonText(t?c("Start Using Task Genius"):c("Next"))),e===2?this.nextButton.setDisabled(!this.state.selectedConfig):this.nextButton.setDisabled(this.state.isCompleting)}async handleSkip(){await this.configManager.skipOnboarding(),this.onComplete(),this.close()}handleBack(){this.state.currentStep>0&&(this.state.currentStep--,this.state.currentStep===4&&this.state.skipTaskGuide&&this.state.currentStep--,this.displayCurrentStep())}async handleNext(){if(this.state.currentStep===5){await this.completeOnboarding();return}if(!!this.validateCurrentStep()){if(this.state.currentStep++,this.state.currentStep===3&&this.state.selectedConfig)try{await this.configManager.applyConfiguration(this.state.selectedConfig.mode)}catch(t){console.error("Failed to apply configuration:",t)}this.state.currentStep===4&&this.state.skipTaskGuide&&this.state.currentStep++,this.displayCurrentStep()}}validateCurrentStep(){switch(this.state.currentStep){case 2:return!!this.state.selectedConfig;default:return!0}}async completeOnboarding(){if(!(!this.state.selectedConfig||this.state.isCompleting)){this.state.isCompleting=!0,this.updateButtonStates();try{await this.configManager.completeOnboarding(this.state.selectedConfig.mode),this.onComplete(),this.close()}catch(e){console.error("Failed to complete onboarding:",e),this.state.isCompleting=!1,this.updateButtonStates()}}}close(){this.leaf.detach()}};var _S=class{constructor(e){this.EXPORT_VERSION="1.0.0";this.timerManager=e}exportToJSON(e=!1){let t=this.prepareExportData(e);return JSON.stringify(t,null,2)}exportToYAML(e=!1){let t=this.prepareExportData(e);return this.convertToYAML(t)}importFromJSON(e){try{let t=JSON.parse(e);return this.processImportData(t)}catch(t){return console.error("Error importing JSON data:",t),!1}}importFromYAML(e){try{let t=this.parseYAML(e);return this.processImportData(t)}catch(t){return console.error("Error importing YAML data:",t),!1}}createBackup(){let e=this.timerManager.getAllActiveTimers(),t={version:this.EXPORT_VERSION,backupDate:new Date().toISOString(),activeTimers:e.map(a=>({...a,currentDuration:this.timerManager.getCurrentDuration(a.taskId)}))};return JSON.stringify(t,null,2)}restoreFromBackup(e){try{let t=JSON.parse(e);if(!t.activeTimers||!Array.isArray(t.activeTimers))return!1;for(let a of t.activeTimers){let r=[];a.startTime&&r.push({startTime:a.startTime,endTime:a.pausedTime,duration:a.pausedTime?a.pausedTime-a.startTime-(a.totalPausedDuration||0):void 0});let i={taskId:a.taskId,filePath:a.filePath,blockId:a.blockId,segments:r,status:a.status,createdAt:a.createdAt,legacyStartTime:a.startTime,legacyPausedTime:a.pausedTime,legacyTotalPausedDuration:a.totalPausedDuration||0};localStorage.setItem(a.taskId,JSON.stringify(i))}return!0}catch(t){return console.error("Error restoring from backup:",t),!1}}getExportStats(){let e=this.timerManager.getAllActiveTimers(),t=0,a=Number.MAX_SAFE_INTEGER,r=0,i=null,n=null;for(let o of e)t+=this.timerManager.getCurrentDuration(o.taskId),o.createdAt<a&&(a=o.createdAt,i=new Date(o.createdAt).toLocaleString()),o.createdAt>r&&(r=o.createdAt,n=new Date(o.createdAt).toLocaleString());return{activeTimers:e.length,totalDuration:t,oldestTimer:i,newestTimer:n}}prepareExportData(e){let t=this.timerManager.getAllActiveTimers(),a=[];for(let r of t){if(!e&&(r.status==="running"||r.status==="paused"))continue;let i=this.timerManager.getCurrentDuration(r.taskId),n=r.segments[0],o=r.segments[r.segments.length-1];a.push({taskId:r.taskId,filePath:r.filePath,blockId:r.blockId,startTime:n?n.startTime:r.createdAt,endTime:o&&o.endTime?o.endTime:void 0,duration:i,status:r.status,createdAt:r.createdAt,totalPausedDuration:r.legacyTotalPausedDuration||0})}return{version:this.EXPORT_VERSION,exportDate:new Date().toISOString(),timers:a}}processImportData(e){if(!this.validateImportData(e))return!1;let t=0;for(let a of e.timers)try{if(a.status==="idle"||a.endTime){let r=`taskTimer_history_${a.blockId}_${a.startTime}`;localStorage.setItem(r,JSON.stringify({...a,importedAt:Date.now()})),t++}}catch(r){console.warn("Failed to import timer:",a.taskId,r)}return""+t,t>0}validateImportData(e){if(!e||typeof e!="object"||!e.version||!e.exportDate||!Array.isArray(e.timers))return!1;for(let t of e.timers)if(!t.taskId||!t.filePath||!t.blockId||typeof t.startTime!="number"||typeof t.duration!="number")return!1;return!0}convertToYAML(e,t=0){let a=" ".repeat(t),r="";if(Array.isArray(e))for(let i of e)r+=`${a}- ${this.convertToYAML(i,t+1).trim()}
`;else if(e!==null&&typeof e=="object")for(let[i,n]of Object.entries(e))Array.isArray(n)?(r+=`${a}${i}:
`,r+=this.convertToYAML(n,t+1)):n!==null&&typeof n=="object"?(r+=`${a}${i}:
`,r+=this.convertToYAML(n,t+1)):r+=`${a}${i}: ${this.yamlEscape(n)}
`;else return this.yamlEscape(e);return r}parseYAML(e){let t=e.split(`
`),a={},r=a,i=[a],n="";for(let o of t){let l=o.trim();if(!l||l.startsWith("#"))continue;let d=o.length-o.trimLeft().length,u=l.indexOf(":");if(u>0){let p=l.substring(0,u).trim(),m=l.substring(u+1).trim();m===""?(r[p]={},n=p):m==="[]"?r[p]=[]:r[p]=this.parseYAMLValue(m)}else if(l.startsWith("- ")){Array.isArray(r[n])||(r[n]=[]);let p=this.parseYAMLValue(l.substring(2));r[n].push(p)}}return a}parseYAMLValue(e){if(e=e.trim(),e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!isNaN(t)&&isFinite(t)?t:e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}yamlEscape(e){return typeof e=="string"&&(e.includes(":")||e.includes(`
`)||e.includes("#"))?`"${e.replace(/"/g,'\\"')}"`:String(e)}};var Yi=A(require("obsidian"));var iy=A(require("obsidian")),$i=A(wS());Zl();var ny=class{constructor(e,t){this.plugin=e;this.taskManager=t}async queryTasks(e){let a=[...await this.taskManager.getAllTasks()];if(e.filter){let{completed:o,project:l,context:d,priority:u,tags:p}=e.filter;o!==void 0&&(a=a.filter(m=>m.completed===o)),l&&(a=a.filter(m=>{var f;return m.metadata.project===l||((f=m.metadata.tgProject)==null?void 0:f.name)===l})),d&&(a=a.filter(m=>m.metadata.context===d)),u!==void 0&&(a=a.filter(m=>m.metadata.priority===u)),p&&p.length>0&&(a=a.filter(m=>p.some(f=>m.metadata.tags.includes(f))))}if(e.sort){let{field:o,order:l}=e.sort;a.sort((d,u)=>{let p=this.getTaskFieldValue(d,o),m=this.getTaskFieldValue(u,o);return p<m?l==="asc"?-1:1:p>m?l==="asc"?1:-1:0})}let r=a.length,i=e.offset||0,n=e.limit||a.length;return{tasks:a.slice(i,i+n),total:r}}async updateTask(e){let t=await this.taskManager.getTaskById(e.taskId);if(!t)return{success:!1};let a={...t,...e.updates,metadata:{...t.metadata,...e.updates.metadata||{}}};await this.taskManager.updateTask(a);let r=await this.taskManager.getTaskById(e.taskId);return{success:!0,task:r||t}}async deleteTask(e){let t=await this.taskManager.getTaskById(e.taskId);if(!t)return{success:!1,message:"Task not found"};let a=this.plugin.app.vault.getAbstractFileByPath(t.filePath);if(!a)return{success:!1,message:"File not found"};let i=(await this.plugin.app.vault.read(a)).split(`
`);return t.line>0&&t.line<=i.length?(i.splice(t.line-1,1),await this.plugin.app.vault.modify(a,i.join(`
`)),{success:!0}):{success:!1,message:"Invalid line number"}}async createTask(e){let t=e.filePath,a=this.plugin.app.vault;if(!t){let u=this.plugin.app.workspace.getActiveFile();if(u)t=u.path;else return{success:!1,message:"No filePath provided and no active file available"}}let i=`- ${e.completed?"[x]":"[ ]"} ${e.content}`,n=this.generateMetadata({tags:e.tags,project:e.project,context:e.context,priority:e.priority,startDate:e.startDate,dueDate:e.dueDate,completed:e.completed,completedDate:e.completedDate});n&&(i+=` ${n}`);let o=a.getAbstractFileByPath(t);if(o){let u=await a.read(o),p=e.parent?this.insertSubtask(u,e.parent,i):(u?u+`
`:"")+i;await a.modify(o,p)}else{let u=t.split("/");if(u.length>1){let p=u.slice(0,-1).join("/");try{await a.createFolder(p)}catch(m){}}o=await a.create(t,`${i}
`)}await this.taskManager.indexFile(o);let l=this.taskManager.getTasksForFile(o.path),d=l[l.length-1];return d?{success:!0,task:d}:{success:!1,message:"Task created but could not be indexed or found"}}async createTaskInDailyNote(e){var m,f,h,k;let t=this.plugin.app,a=null;try{if((0,$i.appHasDailyNotesPluginLoaded)()){let g=(0,iy.moment)().set("hour",12),y=(0,$i.getDailyNote)(g,(0,$i.getAllDailyNotes)());y?a=y:a=await(0,$i.createDailyNote)(g)}}catch(g){}if(!a){let g=this.plugin.settings.quickCapture,y=((m=g==null?void 0:g.dailyNoteSettings)==null?void 0:m.folder)||"",w=((f=g==null?void 0:g.dailyNoteSettings)==null?void 0:f.format)||"YYYY-MM-DD";if(!y)try{y=(0,$i.getDailyNoteSettings)().folder||""}catch(S){}let v=(0,iy.moment)().format(w),T=y?`${y}/${v}.md`:`${v}.md`,x=T.split("/");if(x.length>1){let S=x.slice(0,-1).join("/");try{await t.vault.createFolder(S)}catch(E){}}let C=t.vault.getAbstractFileByPath(T);C||(C=await t.vault.create(T,"")),a=C}let i=`- ${e.completed?"[x]":"[ ]"} ${e.content}`,n=this.generateMetadata({tags:e.tags,project:e.project,context:e.context,priority:e.priority,startDate:e.startDate,dueDate:e.dueDate,completed:e.completed,completedDate:e.completedDate});n&&(i+=` ${n}`);let o=a,l=await t.vault.read(o),d=l;if(e.parent)d=this.insertSubtask(l,e.parent,i);else{let g=(k=(h=this.plugin.settings.quickCapture)==null?void 0:h.targetHeading)==null?void 0:k.trim();if(g){let y=new RegExp(`^#{1,6}\\s+${g.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\$&")}\\s*$`,"m");y.test(l)?d=l.replace(y,`$&
${i}`):d=`${l}${l.endsWith(`
`)?"":`
`}
## ${g}
${i}`}else d=l?`${l}
${i}`:i}await t.vault.modify(o,d),await this.taskManager.indexFile(o);let u=this.taskManager.getTasksForFile(o.path),p=u[u.length-1];if(!p)throw new Error("Task created in daily note but not found after indexing");return p}async batchUpdateText(e){let t=[];for(let a of e.taskIds){let r=await this.taskManager.getTaskById(a);if(!r)continue;let i=r.content.replace(e.findText,e.replaceText),n=await this.updateTask({taskId:a,updates:{content:i}});n.success&&n.task&&t.push(n.task)}return t}async batchCreateSubtasks(e){let t=await this.taskManager.getTaskById(e.parentTaskId);if(!t)return[];let a=[];for(let r of e.subtasks){let i=await this.createTask({...r,parent:e.parentTaskId,filePath:t.filePath});i.success&&i.task&&a.push(i.task)}return a}async searchTasks(e){let t=await this.taskManager.getAllTasks(),a=e.query.toLowerCase(),r=e.searchIn||["content"],i=t.filter(o=>{var l,d,u;for(let p of r)switch(p){case"content":if(o.content.toLowerCase().includes(a))return!0;break;case"tags":if(o.metadata.tags.some(m=>m.toLowerCase().includes(a)))return!0;break;case"project":if(((l=o.metadata.project)==null?void 0:l.toLowerCase().includes(a))||((d=o.metadata.tgProject)==null?void 0:d.name.toLowerCase().includes(a)))return!0;break;case"context":if((u=o.metadata.context)==null?void 0:u.toLowerCase().includes(a))return!0;break}return!1}),n=e.limit||i.length;return i.slice(0,n)}async queryByDate(e){let t=await this.taskManager.getAllTasks(),a=e.from?new Date(e.from+"T00:00:00").getTime():0,r=e.to?new Date(e.to+"T23:59:59.999").getTime():Date.now()+365*24*60*60*1e3,i=t.filter(o=>{let l;switch(e.dateType){case"due":l=o.metadata.dueDate;break;case"start":l=o.metadata.startDate;break;case"scheduled":l=o.metadata.scheduledDate;break;case"completed":l=o.metadata.completedDate;break}return l?l>=a&&l<=r:!1});i.sort((o,l)=>{let d=this.getTaskDateValue(o,e.dateType),u=this.getTaskDateValue(l,e.dateType);return(d||0)-(u||0)});let n=e.limit||i.length;return i.slice(0,n)}async queryProjectTasks(e){return(await this.queryTasks({filter:{project:e}})).tasks}async queryContextTasks(e){return(await this.queryTasks({filter:{context:e}})).tasks}async queryByPriority(e,t){return(await this.queryTasks({filter:{priority:e},limit:t,sort:{field:"content",order:"asc"}})).tasks}getTaskFieldValue(e,t){if(t in e)return e[t];if(t in e.metadata)return e.metadata[t]}getTaskDateValue(e,t){switch(t){case"due":return e.metadata.dueDate;case"start":return e.metadata.startDate;case"scheduled":return e.metadata.scheduledDate;case"completed":return e.metadata.completedDate}}insertSubtask(e,t,a){let r=e.split(`
`),i=this.findTaskLineById(r,t);if(i){let o=this.getIndent(r[i.line])+" ";r.splice(i.line+1,0,o+a.trim())}return r.join(`
`)}findTaskLineById(e,t){for(let a=0;a<e.length;a++)if(e[a].includes(t))return{line:a};return null}async addProjectTaskToQuickCapture(e){let t=this.plugin.settings.quickCapture;if(!t)throw new Error("Quick Capture settings not found");let r=`- ${e.completed?"[x]":"[ ]"} ${e.content}`,i=this.generateMetadata({tags:e.tags,project:e.project,context:e.context,priority:e.priority,startDate:e.startDate,dueDate:e.dueDate,completed:e.completed,completedDate:e.completedDate});i&&(r+=` ${i}`);let n;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let l=(0,iy.moment)().format(t.dailyNoteSettings.format||"YYYY-MM-DD");n=(t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder.replace(/\/$/,"")}/`:"")+`${l}.md`}else n=kv(t.targetFile||"Quick Capture.md");await wi(this.plugin.app,r,{targetFile:t.targetFile,appendToFile:t.appendToFile,targetType:t.targetType,targetHeading:e.heading||t.targetHeading,dailyNoteSettings:t.dailyNoteSettings});let o=this.plugin.app.vault.getFileByPath(n);if(o){await this.taskManager.indexFile(o);let l=this.taskManager.getTasksForFile(o.path);return{filePath:n,task:l[l.length-1]}}return{filePath:n}}generateMetadata(e){var r,i,n,o,l;let t=[],a=this.plugin.settings.preferMetadataFormat==="dataview";if(((r=e.tags)==null?void 0:r.length)&&t.push(...e.tags.map(d=>`#${d}`)),e.project)if(a){let d=((i=this.plugin.settings.projectTagPrefix)==null?void 0:i.dataview)||"project";t.push(`[${d}:: ${e.project}]`)}else{let d=((n=this.plugin.settings.projectTagPrefix)==null?void 0:n.tasks)||"project";t.push(`#${d}/${e.project}`)}if(e.context)if(a){let d=((o=this.plugin.settings.contextTagPrefix)==null?void 0:o.dataview)||"context";t.push(`[${d}:: ${e.context}]`)}else{let d=((l=this.plugin.settings.contextTagPrefix)==null?void 0:l.tasks)||"@";t.push(`${d}${e.context}`)}if(e.priority!==void 0&&e.priority>0)if(a){let d;switch(e.priority){case 5:d="highest";break;case 4:d="high";break;case 3:d="medium";break;case 2:d="low";break;case 1:d="lowest";break;default:d=String(e.priority)}t.push(`[priority:: ${d}]`)}else{let d="";switch(e.priority){case 5:d="\u{1F53A}";break;case 4:d="\u23EB";break;case 3:d="\u{1F53C}";break;case 2:d="\u{1F53D}";break;case 1:d="\u23EC";break}d&&t.push(d)}return e.recurrence&&t.push(a?`[repeat:: ${e.recurrence}]`:`\u{1F501} ${e.recurrence}`),e.startDate&&t.push(a?`[start:: ${e.startDate}]`:`\u{1F6EB} ${e.startDate}`),e.scheduledDate&&t.push(a?`[scheduled:: ${e.scheduledDate}]`:`\u23F3 ${e.scheduledDate}`),e.dueDate&&t.push(a?`[due:: ${e.dueDate}]`:`\u{1F4C5} ${e.dueDate}`),e.completed&&e.completedDate&&t.push(a?`[completion:: ${e.completedDate}]`:`\u2705 ${e.completedDate}`),t.join(" ")}async updateTaskStatus(e){let t=this.taskManager.getTaskById(e.taskId);if(!t)return null;let a={...t};return e.status!==void 0&&(a.status=e.status),e.completed!==void 0&&(a.completed=e.completed),await this.taskManager.updateTask(a),this.taskManager.getTaskById(e.taskId)||null}async batchUpdateTaskStatus(e){let t=[],a=[];for(let r of e.taskIds||[])try{await this.updateTaskStatus({taskId:r,status:e.status,completed:e.completed})?t.push(r):a.push({id:r,error:"Task not found"})}catch(i){a.push({id:r,error:i.message||String(i)})}return{updated:t,failed:a}}async postponeTasks(e){let t=this.parseDateOrOffset(e.newDate);if(t===null)throw new Error("Invalid newDate; expected YYYY-MM-DD or +Nd/+Nw/+Nm/+Ny");let a=[],r=[];for(let i of e.taskIds||[])try{let n=this.taskManager.getTaskById(i);if(!n){r.push({id:i,error:"Task not found"});continue}let o={...n,metadata:{...n.metadata,dueDate:t}};await this.taskManager.updateTask(o),a.push(i)}catch(n){r.push({id:i,error:n.message||String(n)})}return{updated:a,failed:r}}parseDateOrOffset(e){let t=Date.parse(e);if(!isNaN(t))return t;let a=e.match(/^\+(\d+)([dwmy])$/i);if(!a)return null;let r=parseInt(a[1],10),i=a[2].toLowerCase(),n=new Date;switch(i){case"d":n.setDate(n.getDate()+r);break;case"w":n.setDate(n.getDate()+r*7);break;case"m":n.setMonth(n.getMonth()+r);break;case"y":n.setFullYear(n.getFullYear()+r);break}return n.setHours(0,0,0,0),n.getTime()}listAllTagsProjectsContexts(){var i;let e=this.taskManager.getAllTasks(),t=new Set,a=new Set,r=new Set;for(let n of e){for(let l of n.metadata.tags||[])t.add(l);n.metadata.context&&r.add(n.metadata.context);let o=((i=n.metadata.tgProject)==null?void 0:i.name)||n.metadata.project;o&&a.add(o)}return{tags:Array.from(t),projects:Array.from(a),contexts:Array.from(r)}}periodRange(e,t){let a=new Date(t);if(e==="day"){let n=new Date(a.getFullYear(),a.getMonth(),a.getDate()).toISOString().slice(0,10);return{from:n,to:n}}if(e==="month"){let n=new Date(a.getFullYear(),a.getMonth(),1),o=new Date(a.getFullYear(),a.getMonth()+1,0);return{from:n.toISOString().slice(0,10),to:o.toISOString().slice(0,10)}}let r=new Date(a.getFullYear(),0,1),i=new Date(a.getFullYear(),11,31);return{from:r.toISOString().slice(0,10),to:i.toISOString().slice(0,10)}}async listTasksForPeriod(e){let{from:t,to:a}=this.periodRange(e.period,e.date);return this.queryByDate({dateType:e.dateType||"due",from:t,to:a,limit:e.limit})}async listTasksInRange(e){return this.queryByDate({dateType:e.dateType||"due",from:e.from,to:e.to,limit:e.limit})}getIndent(e){let t=e.match(/^(\s*)/);return t?t[1]:""}};var BQ=require("http"),WQ=require("url"),VS=class{constructor(e,t){this.plugin=e;this.config=t;this.isRunning=!1;this.requestCount=0;this.sessions=new Map;this.authMiddleware=new ei(t.authToken),this.taskBridge=new ny(e,e.taskManager)}generateSessionId(){return`session-${Date.now()}-${Math.random().toString(36).substring(2,15)}`}getServerName(){var e,t;try{let a=((t=(e=this.plugin.app.vault).getName)==null?void 0:t.call(e))||"vault";return`${String(a).toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`}catch(a){return"obsidian-tasks"}}getPrompts(){return[{name:"daily_review",title:"Daily Task Review",description:"Review today's tasks and plan for tomorrow",arguments:[{name:"includeCompleted",description:"Include completed tasks in the review",required:!1}]},{name:"weekly_planning",title:"Weekly Planning",description:"Plan tasks for the upcoming week",arguments:[{name:"weekOffset",description:"Week offset from current week (0 for this week, 1 for next week)",required:!1}]},{name:"project_overview",title:"Project Overview",description:"Get an overview of all projects and their task counts",arguments:[]},{name:"overdue_tasks",title:"Overdue Tasks Summary",description:"List all overdue tasks organized by priority",arguments:[{name:"daysOverdue",description:"Minimum days overdue to include",required:!1}]},{name:"task_search",title:"Advanced Task Search",description:"Search for tasks with specific criteria",arguments:[{name:"query",description:"Search query text",required:!0},{name:"project",description:"Filter by project name",required:!1},{name:"priority",description:"Filter by priority (1-5)",required:!1}]}]}getResources(){return[]}getTools(){return[{name:"update_task_status",title:"Update Task Status",description:"Update a single task's completion or status field.",inputSchema:{type:"object",properties:{taskId:{type:"string"},status:{type:"string",description:"Optional status mark to set instead of completed"},completed:{type:"boolean",description:"Set completed true/false"}},required:["taskId"]}},{name:"batch_update_task_status",title:"Batch Update Task Status",description:"Batch update completion/status for multiple tasks.",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},status:{type:"string"},completed:{type:"boolean"}},required:["taskIds"]}},{name:"postpone_tasks",title:"Postpone Tasks",description:"Batch postpone tasks to a new due date (YYYY-MM-DD)",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},newDate:{type:"string"}},required:["taskIds","newDate"]}},{name:"list_all_metadata",title:"List Tags/Projects/Contexts",description:"List all used tags, project names, and contexts.",inputSchema:{type:"object",properties:{}}},{name:"list_tasks_for_period",title:"List Tasks For Period",description:"List tasks for a day/month/year based on dateType (default: due).",inputSchema:{type:"object",properties:{period:{type:"string",enum:["day","month","year"]},date:{type:"string",description:"Base date YYYY-MM-DD"},dateType:{type:"string",enum:["due","start","scheduled","completed"],description:"Which date field to use"},limit:{type:"number"}},required:["period","date"]}},{name:"list_tasks_in_range",title:"List Tasks In Range",description:"List tasks between from/to dates (default dateType: due).",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},dateType:{type:"string",enum:["due","start","scheduled","completed"]},limit:{type:"number"}},required:["from","to"]}},{name:"add_project_quick_capture",title:"Add Project Task to Quick Capture",description:"Add a project-tagged task to the Quick Capture target (fixed or daily note).",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},project:{type:"string",description:"Project name to tag as +project"},tags:{type:"array",items:{type:"string"}},priority:{type:"number",minimum:1,maximum:5},dueDate:{type:"string"},startDate:{type:"string"},context:{type:"string"},heading:{type:"string"}},required:["content","project"]}},{name:"create_task_in_daily_note",title:"Create Task in Daily Note",description:"Create a task in today's daily note. Creates the note if missing. Supports creating already-completed tasks for recording purposes.",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},dueDate:{type:"string",description:"Due date YYYY-MM-DD"},startDate:{type:"string",description:"Start date YYYY-MM-DD"},priority:{type:"number",minimum:1,maximum:5},tags:{type:"array",items:{type:"string"}},project:{type:"string"},context:{type:"string"},heading:{type:"string",description:"Optional heading to place task under"},parent:{type:"string",description:"Optional parent task ID to create subtask under"},completed:{type:"boolean",description:"Whether the task is already completed (for recording purposes)"},completedDate:{type:"string",description:"Completion date YYYY-MM-DD (only used when completed is true)"}},required:["content"]}},{name:"query_tasks",title:"Query Tasks",description:"Query tasks with filters and sorting options",inputSchema:{type:"object",properties:{filter:{type:"object",properties:{completed:{type:"boolean"},project:{type:"string"},context:{type:"string"},priority:{type:"number",minimum:1,maximum:5},tags:{type:"array",items:{type:"string"}}}},limit:{type:"number"},offset:{type:"number"},sort:{type:"object",properties:{field:{type:"string"},order:{type:"string",enum:["asc","desc"]}}}}}},{name:"update_task",title:"Update Task",description:"Update a task by ID with new properties",inputSchema:{type:"object",properties:{taskId:{type:"string"},updates:{type:"object"}},required:["taskId","updates"]}},{name:"delete_task",title:"Delete Task",description:"Delete a task by ID",inputSchema:{type:"object",properties:{taskId:{type:"string"}},required:["taskId"]}},{name:"create_task",title:"Create Task",description:"Create a new task with specified properties. If the target file does not exist, it will be created automatically. Supports creating already-completed tasks for recording purposes.",inputSchema:{type:"object",properties:{content:{type:"string",description:"Task content text"},filePath:{type:"string",description:"Target markdown file path (e.g., Daily/2025-08-15.md). If omitted, uses active file."},project:{type:"string",description:"Project name to append as +project"},context:{type:"string",description:"Context name to append as @context"},priority:{type:"number",minimum:1,maximum:5,description:"1-5 priority; adds ! markers"},dueDate:{type:"string",description:"Due date YYYY-MM-DD (adds \u{1F4C5} marker)"},startDate:{type:"string",description:"Start date YYYY-MM-DD (adds \u{1F6EB} marker)"},tags:{type:"array",items:{type:"string"},description:"Array of tags (without #)"},parent:{type:"string",description:"Parent task ID to create a subtask under"},completed:{type:"boolean",description:"Whether the task is already completed (for recording purposes)"},completedDate:{type:"string",description:"Completion date YYYY-MM-DD (only used when completed is true)"}},required:["content"]}},{name:"query_project_tasks",title:"Query Project Tasks",description:"Get all tasks for a specific project",inputSchema:{type:"object",properties:{project:{type:"string"}},required:["project"]}},{name:"query_context_tasks",title:"Query Context Tasks",description:"Get all tasks for a specific context",inputSchema:{type:"object",properties:{context:{type:"string"}},required:["context"]}},{name:"query_by_priority",title:"Query by Priority",description:"Get tasks with a specific priority level",inputSchema:{type:"object",properties:{priority:{type:"number",minimum:1,maximum:5},limit:{type:"number"}},required:["priority"]}},{name:"query_by_due_date",title:"Query by Due Date",description:"Get tasks within a due date range",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},limit:{type:"number"}}}},{name:"query_by_start_date",title:"Query by Start Date",description:"Get tasks within a start date range",inputSchema:{type:"object",properties:{from:{type:"string"},to:{type:"string"},limit:{type:"number"}}}},{name:"batch_update_text",title:"Batch Update Text",description:"Find and replace text in multiple tasks",inputSchema:{type:"object",properties:{taskIds:{type:"array",items:{type:"string"}},findText:{type:"string"},replaceText:{type:"string"}},required:["taskIds","findText","replaceText"]}},{name:"batch_create_subtasks",title:"Batch Create Subtasks",description:"Create multiple subtasks under a parent task",inputSchema:{type:"object",properties:{parentTaskId:{type:"string"},subtasks:{type:"array",items:{type:"object",properties:{content:{type:"string"},priority:{type:"number",minimum:1,maximum:5},dueDate:{type:"string"}},required:["content"]}}},required:["parentTaskId","subtasks"]}},{name:"search_tasks",title:"Search Tasks",description:"Search tasks by text query across multiple fields",inputSchema:{type:"object",properties:{query:{type:"string"},limit:{type:"number"},searchIn:{type:"array",items:{type:"string",enum:["content","tags","project","context"]}}},required:["query"]}}]}buildPromptMessages(e,t){let a=[];switch(e){case"daily_review":a.push({role:"user",content:{type:"text",text:`Please help me review my tasks for today. ${(t==null?void 0:t.includeCompleted)?"Include completed tasks in the review.":"Focus on pending tasks only."} Provide a summary of:
1. What tasks are due today
2. What tasks are overdue
3. High priority items that need attention
4. Suggested next actions`}});break;case"weekly_planning":let r=(t==null?void 0:t.weekOffset)||0;a.push({role:"user",content:{type:"text",text:`Help me plan my tasks for ${r===0?"this week":`week +${r}`}. Please:
1. List all tasks scheduled for the week
2. Identify any conflicts or overloaded days
3. Suggest task prioritization
4. Recommend which tasks could be rescheduled if needed`}});break;case"project_overview":a.push({role:"user",content:{type:"text",text:`Provide a comprehensive overview of all my projects including:
1. List of all active projects
2. Task count per project (pending vs completed)
3. Projects with upcoming deadlines
4. Projects that may need more attention
5. Overall project health assessment`}});break;case"overdue_tasks":let i=(t==null?void 0:t.daysOverdue)||0;a.push({role:"user",content:{type:"text",text:`Show me all overdue tasks ${i>0?`that are at least ${i} days overdue`:""}. Please:
1. Group them by priority level
2. Highlight the most critical overdue items
3. Suggest which tasks to tackle first
4. Identify any tasks that might need to be rescheduled or cancelled`}});break;case"task_search":let n=(t==null?void 0:t.query)||"",o=t==null?void 0:t.project,l=t==null?void 0:t.priority,d=`Search for tasks matching: "${n}"`;o&&(d+=` in project "${o}"`),l&&(d+=` with priority ${l}`),a.push({role:"user",content:{type:"text",text:`${d}. Please:
1. List all matching tasks with their details
2. Group them by relevance or category
3. Highlight the most important matches
4. Provide a summary of the search results`}});break;default:a.push({role:"user",content:{type:"text",text:`Execute the ${e} prompt with the provided arguments.`}})}return a}async executeTool(e,t){try{if(!this.plugin.taskManager)return{content:[{type:"text",text:"Error: TaskManager not initialized. Please enable the main view or wait for plugin initialization."}],isError:!0};this.taskBridge||(this.taskBridge=new ny(this.plugin,this.plugin.taskManager));let a;switch(e){case"query_tasks":a=await this.taskBridge.queryTasks(t);break;case"update_task":a=await this.taskBridge.updateTask(t);break;case"delete_task":a=await this.taskBridge.deleteTask(t);break;case"create_task":if(a=await this.taskBridge.createTask(t),!a)throw new Error("create_task returned empty result");break;case"create_task_in_daily_note":if(a=await this.taskBridge.createTaskInDailyNote(t),!a)throw new Error("create_task_in_daily_note returned empty result");break;case"query_project_tasks":a=await this.taskBridge.queryProjectTasks(t.project);break;case"query_context_tasks":a=await this.taskBridge.queryContextTasks(t.context);break;case"query_by_priority":a=await this.taskBridge.queryByPriority(t.priority,t.limit);break;case"query_by_due_date":a=await this.taskBridge.queryByDate({dateType:"due",from:t.from,to:t.to,limit:t.limit});break;case"query_by_start_date":a=await this.taskBridge.queryByDate({dateType:"start",from:t.from,to:t.to,limit:t.limit});break;case"batch_update_text":a=await this.taskBridge.batchUpdateText(t);break;case"batch_create_subtasks":a=await this.taskBridge.batchCreateSubtasks(t);break;case"search_tasks":a=await this.taskBridge.searchTasks(t);break;case"add_project_quick_capture":a=await this.taskBridge.addProjectTaskToQuickCapture(t);break;case"update_task_status":a=await this.taskBridge.updateTaskStatus(t);break;case"batch_update_task_status":a=await this.taskBridge.batchUpdateTaskStatus(t);break;case"postpone_tasks":a=await this.taskBridge.postponeTasks(t);break;case"list_all_metadata":a=this.taskBridge.listAllTagsProjectsContexts();break;case"list_tasks_for_period":a=await this.taskBridge.listTasksForPeriod(t);break;case"list_tasks_in_range":a=await this.taskBridge.listTasksInRange(t);break;default:throw new Error(`Tool not found: ${e}`)}return{content:[{type:"text",text:JSON.stringify(a,null,2)}]}}catch(a){if(a.message.includes("Tool not found"))throw a;return{content:[{type:"text",text:JSON.stringify({success:!1,error:a.message},null,2)}],isError:!0}}}async handleMcpRequest(e,t){let{method:a,params:r,id:i}=e;try{if(t&&this.sessions.has(t)){let n=this.sessions.get(t);n.lastAccess=new Date}switch(a){case"initialize":let n=this.generateSessionId();return this.sessions.set(n,{created:new Date,lastAccess:new Date}),{jsonrpc:"2.0",id:i,result:{protocolVersion:"2025-06-18",serverInfo:{name:"obsidian-task-genius",version:this.plugin.manifest.version},capabilities:{tools:{},resources:{},prompts:{},sampling:{}}},_sessionId:n};case"tools/list":return{jsonrpc:"2.0",id:i,result:{tools:this.getTools()}};case"prompts/list":return{jsonrpc:"2.0",id:i,result:{prompts:this.getPrompts()}};case"prompts/get":let o=r==null?void 0:r.name,d=this.getPrompts().find(m=>m.name===o);return d?{jsonrpc:"2.0",id:i,result:{...d,messages:this.buildPromptMessages(o,r==null?void 0:r.arguments)}}:{jsonrpc:"2.0",id:i,error:{code:-32602,message:`Prompt not found: ${o}`}};case"resources/list":return{jsonrpc:"2.0",id:i,result:{resources:this.getResources()}};case"resources/read":return{jsonrpc:"2.0",id:i,error:{code:-32602,message:"No resources available"}};case"tools/call":let u=r==null?void 0:r.name,p=(r==null?void 0:r.arguments)||{};try{let m=await this.executeTool(u,p);return{jsonrpc:"2.0",id:i,result:m}}catch(m){if(m.message.includes("Unknown tool")||m.message.includes("Tool not found"))return{jsonrpc:"2.0",id:i,error:{code:-32602,message:m.message}};throw m}default:return{jsonrpc:"2.0",id:i,error:{code:-32601,message:`Method not found: ${a}`}}}}catch(n){return{jsonrpc:"2.0",id:i,error:{code:-32603,message:n.message}}}}async start(){if(!this.isRunning)return this.httpServer=BQ.createServer(async(e,t)=>{if(this.config.enableCors&&(t.setHeader("Access-Control-Allow-Origin","*"),t.setHeader("Access-Control-Allow-Methods","GET, POST, DELETE, OPTIONS"),t.setHeader("Access-Control-Allow-Headers","Content-Type, Authorization, authorization, Mcp-Session-Id, mcp-session-id, Mcp-App-Id, mcp-app-id, MCP-Protocol-Version, mcp-protocol-version, Accept"),t.setHeader("Access-Control-Expose-Headers","Mcp-Session-Id")),e.method==="OPTIONS"){t.statusCode=200,t.end();return}let r=WQ.parse(e.url||"",!0).pathname||"";if(r==="/health"){t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({status:"healthy",uptime:this.startTime?Date.now()-this.startTime.getTime():0,requestCount:this.requestCount,sessions:this.sessions.size}));return}if(r==="/mcp"&&e.method==="POST"){let i=e.headers.origin;if(i&&!this.isOriginAllowed(i)){t.statusCode=403,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32603,message:"Forbidden: Origin not allowed"}}));return}let n=e.headers["mcp-protocol-version"];if(n&&n!=="2024-11-05"&&n!=="2025-06-18"){t.statusCode=400,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32602,message:`Unsupported MCP-Protocol-Version: ${n}`}}));return}if(!this.authMiddleware.validateRequest(e)){t.statusCode=401,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32603,message:"Unauthorized: Invalid or missing authentication token"}}));return}let o=this.plugin.app.appId,l=e.headers["mcp-app-id"]||"",d=this.authMiddleware.getClientAppId(e),u=l||d||"";if(!u||u!==o){t.statusCode=400,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32602,message:"Invalid client app id",data:{expectedAppId:o,received:u||null,source:l?"header":d?"authorization":"none"}}}));return}this.requestCount++;let p=e.headers["mcp-session-id"],m="";e.on("data",f=>{m+=f.toString()}),e.on("end",async()=>{let f;try{f=JSON.parse(m)}catch(h){t.statusCode=400,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32700,message:"Parse error: Invalid JSON"},id:null}));return}try{if(f.method!=="initialize"){if(!p){console.warn("Missing session ID for method:",f.method),t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:f.id,error:{code:-32603,message:"Missing session ID. Initialize connection first."}}));return}if(!this.sessions.has(p)){console.warn("Invalid session ID:",p),t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:f.id,error:{code:-32603,message:"Invalid or expired session"}}));return}}this.config.logLevel;let h=await this.handleMcpRequest(f,p);this.config.logLevel,h._sessionId&&(t.setHeader("Mcp-Session-Id",h._sessionId),delete h._sessionId),t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify(h))}catch(h){console.error("MCP request error:",h),t.statusCode=500,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null}))}});return}if(r==="/mcp"&&e.method==="GET"){let i=e.headers["mcp-session-id"];i&&!this.sessions.has(i)&&console.warn("SSE connection with invalid session ID:",i),t.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),t.write(`data: {"type":"connected"}
`);let n=setInterval(()=>{t.write(`: heartbeat
`)},3e4);e.on("close",()=>{clearInterval(n)});return}if(r==="/mcp"&&e.method==="DELETE"){let i=e.headers["mcp-session-id"];i&&this.sessions.has(i)&&this.sessions.delete(i),t.statusCode=204,t.end();return}if(r==="/"&&e.method==="GET"){t.statusCode=200,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({server:"Obsidian Task Genius MCP Server",version:"1.0.0",mcp_version:"2025-06-18",endpoints:{mcp:"/mcp",health:"/health"},description:"MCP server for Obsidian task management"}));return}t.statusCode=404,t.setHeader("Content-Type","application/json"),t.end(JSON.stringify({jsonrpc:"2.0",id:null,error:{code:-32601,message:`Path not found: ${r}`}}))}),new Promise((e,t)=>{try{this.httpServer.listen({port:this.config.port,host:this.config.host},()=>{this.isRunning=!0,this.startTime=new Date;let a=this.httpServer.address();this.actualPort=(a==null?void 0:a.port)||this.config.port,""+this.config.host+this.actualPort,setInterval(()=>{let r=Date.now();for(let[i,n]of this.sessions)r-n.lastAccess.getTime()>36e5&&this.sessions.delete(i)},6e4),e()}),this.httpServer.on("error",a=>{console.error("MCP Server error:",a),this.isRunning=!1,t(a)})}catch(a){t(a)}})}async stop(){if(!(!this.isRunning||!this.httpServer))return this.sessions.clear(),new Promise(e=>{this.httpServer.close(()=>{this.isRunning=!1,e()})})}getStatus(){return{running:this.isRunning,port:this.actualPort||this.config.port,startTime:this.startTime,requestCount:this.requestCount,sessions:this.sessions.size}}updateConfig(e){e.authToken&&this.authMiddleware.updateToken(e.authToken),Object.assign(this.config,e)}isOriginAllowed(e){return["http://localhost","http://127.0.0.1","https://localhost","https://127.0.0.1","app://obsidian.md","obsidian://"].some(a=>e===a||e.startsWith(a+":"))}};var US=class{constructor(e){this.plugin=e;this.autoRestartAttempts=0;this.maxAutoRestartAttempts=3;this.config=this.getDefaultConfig(),this.loadConfig()}isPortAvailable(e,t){let a=require("net");return new Promise(r=>{let i=a.createServer().once("error",n=>{n&&(n.code==="EADDRINUSE"||n.code==="EACCES"),r(!1)}).once("listening",()=>{i.close(()=>r(!0))}).listen(e,t)})}getDefaultConfig(){return{enabled:!1,port:7777,host:"127.0.0.1",authToken:ei.generateToken(),enableCors:!0,logLevel:"info"}}loadConfig(){let e=this.plugin.settings;e.mcpIntegration&&(this.config={...this.config,...e.mcpIntegration})}async saveConfig(){this.plugin.settings.mcpIntegration=this.config,await this.plugin.saveSettings()}async initialize(){!Yi.Platform.isDesktopApp||this.config.enabled&&await this.start()}async start(){if(this.server&&await this.stop(),!await this.isPortAvailable(this.config.port,this.config.host)){new Yi.Notice(`Port ${this.config.port} on ${this.config.host} is already in use. Please choose another port in MCP settings.`),console.warn(`MCP Server port conflict detected on ${this.config.host}:${this.config.port}`);return}try{this.server=new VS(this.plugin,this.config),await this.server.start(),this.autoRestartAttempts=0;let t=this.server.getStatus();new Yi.Notice(`MCP Server started on ${this.config.host}:${t.port}`)}catch(t){if(console.error("Failed to start MCP Server:",t),(t==null?void 0:t.code)==="EADDRINUSE"||/EADDRINUSE/.test((t==null?void 0:t.message)||"")){new Yi.Notice(`Port ${this.config.port} on ${this.config.host} is already in use. Please change the port in settings.`);return}new Yi.Notice(`Failed to start MCP Server: ${t.message}`),this.autoRestartAttempts<this.maxAutoRestartAttempts&&(this.autoRestartAttempts++,""+this.autoRestartAttempts+this.maxAutoRestartAttempts,setTimeout(()=>this.start(),5e3))}}async stop(){if(!!this.server)try{await this.server.stop(),this.server=void 0,new Yi.Notice("MCP Server stopped")}catch(e){console.error("Failed to stop MCP Server:",e),new Yi.Notice(`Failed to stop MCP Server: ${e.message}`)}}async restart(){await this.stop(),await this.start()}async toggle(){this.isRunning()?(await this.stop(),this.config.enabled=!1):(this.config.enabled=!0,await this.start()),await this.saveConfig()}isRunning(){var e;return((e=this.server)==null?void 0:e.getStatus().running)||!1}getStatus(){if(!this.server)return{running:!1};let e=this.server.getStatus();return{running:e.running,port:e.port,startTime:e.startTime,requestCount:e.requestCount}}getConfig(){return{...this.config}}async updateConfig(e){var o,l;let t=this.isRunning(),a=(o=e.port)!=null?o:this.config.port,r=(l=e.host)!=null?l:this.config.host,i=e.port!==void 0&&e.port!==this.config.port,n=e.host!==void 0&&e.host!==this.config.host;if((i||n)&&!await this.isPortAvailable(a,r))throw new Yi.Notice(`Port ${r}:${a} is already in use. Please choose another port.`),new Error("Port in use");this.config={...this.config,...e},await this.saveConfig(),this.server&&(this.server.updateConfig(e),t&&(i||n)&&await this.restart()),e.enabled!==void 0&&(e.enabled&&!t?await this.start():!e.enabled&&t&&await this.stop())}getAuthToken(){return this.config.authToken}regenerateAuthToken(){let e=ei.generateToken();return this.config.authToken=e,this.server&&this.server.updateConfig({authToken:e}),this.saveConfig(),e}async cleanup(){await this.stop()}};var YV=class extends ma.HoverPopover{constructor(e,t,a,r,i=1e3){super(a,r,i);this.hoverEl.toggleClass("task-progress-bar-popover",!0),this.plugin=e,this.data=t}onload(){ma.MarkdownRenderer.render(this.plugin.app,`
| Status | Count |
| --- | --- |
| Total | ${this.data.total} |
| Completed | ${this.data.completed} |
| In Progress | ${this.data.inProgress} |
| Abandoned | ${this.data.abandoned} |
| Not Started | ${this.data.notStarted} |
| Planned | ${this.data.planned} |
`,this.hoverEl,"",this.plugin)}},$y=(s,{progressBar:e,data:t,view:a})=>{let r=a.state.field(ma.editorInfoField);!r||new YV(s,t,r,e)},$S=class extends ma.Plugin{constructor(){super(...arguments);this.preloadedTasks=[]}async onload(){var e;if(await this.loadSettings(),(0,ma.requireApiVersion)("1.9.0")&&((e=this.settings.betaTest)==null?void 0:e.enableBaseView)){let t=new LS(this.app,this);this.addChild(t)}this.versionManager=new BS(this.app,this),this.addChild(this.versionManager),this.onboardingConfigManager=new Vo(this),this.settingsChangeDetector=new Mp(this),this.globalSuggestManager=new io(this.app,this),this.rebuildProgressManager=new sp,this.settings.enableView&&(this.loadViews(),(0,ma.addIcon)("task-genius",J_()),(0,ma.addIcon)("completed",Ao("completed")),(0,ma.addIcon)("inProgress",Ao("inProgress")),(0,ma.addIcon)("planned",Ao("planned")),(0,ma.addIcon)("abandoned",Ao("abandoned")),(0,ma.addIcon)("notStarted",Ao("notStarted")),this.taskManager=new jx(this.app,this.app.vault,this.app.metadataCache,this,{useWorkers:!0,debug:!0}),this.addChild(this.taskManager)),this.settings.rewards.enableRewards&&(this.rewardManager=new gS(this),this.addChild(this.rewardManager),this.registerEditorExtension([wV(this.app,this)])),this.registerCommands(),this.registerEditorExt(),this.settingTab=new MC(this.app,this),this.addSettingTab(this.settingTab),this.registerEvent(this.app.workspace.on("editor-menu",(t,a)=>{this.settings.enablePriorityKeyboardShortcuts&&t.addItem(r=>{r.setTitle(c("Set priority")),r.setIcon("list-ordered");let i=r.setSubmenu();Object.entries(Lu).forEach(([n,o])=>{n!=="none"&&i.addItem(l=>{l.setTitle(`${c("Set priority")}: ${o.text}`),l.setIcon("arrow-big-up-dash"),l.onClick(()=>{oy(a,o.emoji)})})}),i.addSeparator(),Object.entries(Hu).forEach(([n,o])=>{i.addItem(l=>{l.setTitle(`${c("Set priority")}: ${n}`),l.setIcon("a-arrow-up"),l.onClick(()=>{oy(a,`[#${n}]`)})})}),i.addItem(n=>{n.setTitle(c("Remove Priority")),n.setIcon("list-x"),n.setWarning(!0),n.onClick(()=>{zV(a)})})}),this.settings.workflow.enableWorkflow&&W3(t,a,this)})),this.app.workspace.onLayoutReady(()=>{this.taskGeniusIconManager=new bS(this),this.addChild(this.taskGeniusIconManager),ma.Platform.isDesktopApp&&(this.mcpServerManager=new US(this),this.mcpServerManager.initialize()),this.checkAndShowOnboarding(),this.settings.autoCompleteParent&&this.registerEditorExtension([V3(this.app,this)]),this.settings.enableCycleCompleteStatus&&this.registerEditorExtension([z3(this.app,this)]),this.registerMarkdownPostProcessor((t,a)=>{this.settings.enableTaskStatusSwitcher&&cj({plugin:this,element:t,ctx:a}),this.settings.enableProgressbarInReadingMode&&this.settings.progressBarDisplayMode!=="none"&&z0({plugin:this,element:t,ctx:a})}),this.settings.enableView&&(this.initializeTaskManagerWithVersionCheck().catch(t=>{console.error("Failed to initialize task manager with version check:",t)}),this.registerView(Pl,t=>new xd(t,this)),this.registerView(kp,t=>new fS(t,this)),this.registerView(Sd,t=>new Yk(t,this)),this.registerView(Ap,t=>new WS(t,this,()=>{t.detach()})),this.addRibbonIcon("task-genius",c("Open Task Genius view"),()=>{this.activateTaskView()}),this.addCommand({id:"open-task-genius-view",name:c("Open Task Genius view"),callback:()=>{this.activateTaskView()}}),this.addCommand({id:"open-timeline-sidebar-view",name:c("Open Timeline Sidebar"),callback:()=>{this.activateTimelineSidebarView()}}),this.addCommand({id:"open-task-genius-setup",name:c("Open Task Genius Setup"),callback:()=>{this.openOnboardingView()}})),this.settings.habit.enableHabits&&(this.habitManager=new vS(this),this.addChild(this.habitManager)),this.settings.icsIntegration.sources.length>0&&(this.icsManager=new HS(this.settings.icsIntegration,this.settings),this.addChild(this.icsManager),this.icsManager.initialize().catch(t=>{console.error("Failed to initialize ICS manager:",t)})),this.settings.timelineSidebar.enableTimelineSidebar&&this.settings.timelineSidebar.autoOpenOnStartup&&setTimeout(()=>{this.activateTimelineSidebarView().catch(t=>{console.error("Failed to auto-open timeline sidebar:",t)})},1e3)}),this.settings.taskFilter&&this.settings.taskFilter.presetTaskFilters&&(this.settings.taskFilter.presetTaskFilters=this.settings.taskFilter.presetTaskFilters.map(t=>(t.options&&(t.options=xu(t.options)),t)),await this.saveSettings()),this.addCommand({id:"quick-capture",name:c("Quick Capture"),callback:()=>{new ka(this.app,this,{},!0).open()}}),this.addCommand({id:"minimal-quick-capture",name:c("Minimal Quick Capture"),callback:()=>{new tx(this.app,this).open()}}),this.addCommand({id:"toggle-task-filter",name:c("Toggle task filter panel"),editorCallback:(t,a)=>{let r=t.cm;r&&r.dispatch({effects:tl.of(!r.state.field(Cu))})}})}registerCommands(){var e;this.settings.sortTasks&&(this.addCommand({id:"sort-tasks-by-due-date",name:c("Sort Tasks in Section"),editorCallback:(t,a)=>{let r=t.cm;if(!r)return;Bx(r,this,!1)&&new Ht.Notice(c("Tasks sorted (using settings). Change application needs refinement."))}}),this.addCommand({id:"sort-tasks-in-entire-document",name:c("Sort Tasks in Entire Document"),editorCallback:(t,a)=>{let r=t.cm;if(!r)return;let i=Bx(r,this,!0);if(i){let n=r.state.field(ma.editorInfoField);if(!n||!n.file)return;this.app.vault.process(n.file,o=>i),new Ht.Notice(c("Entire document sorted (using settings)."))}else new Ht.Notice(c("Tasks already sorted or no tasks found."))}})),this.addCommand({id:"cycle-task-status-forward",name:c("Cycle task status forward"),editorCheckCallback:(t,a,r)=>rB(t,a,r,this)}),this.addCommand({id:"cycle-task-status-backward",name:c("Cycle task status backward"),editorCheckCallback:(t,a,r)=>sB(t,a,r,this)}),this.settings.enableView&&(this.addCommand({id:"refresh-task-index",name:c("Refresh task index"),callback:async()=>{try{new Ht.Notice(c("Refreshing task index...")),await this.taskManager.initialize(),new Ht.Notice(c("Task index refreshed"))}catch(t){console.error("Failed to refresh task index:",t),new Ht.Notice(c("Failed to refresh task index"))}}}),this.addCommand({id:"force-reindex-tasks",name:c("Force reindex all tasks"),callback:async()=>{try{await this.taskManager.forceReindex()}catch(t){console.error("Failed to force reindex tasks:",t),new Ht.Notice(c("Failed to force reindex tasks"))}}})),this.settings.enablePriorityKeyboardShortcuts&&(Object.entries(Lu).forEach(([t,a])=>{t!=="none"&&this.addCommand({id:`set-priority-${t}`,name:`${c("Set priority")} ${a.text}`,editorCallback:r=>{oy(r,a.emoji)}})}),Object.entries(Hu).forEach(([t,a])=>{this.addCommand({id:`set-priority-letter-${t}`,name:`${c("Set priority")} ${t}`,editorCallback:r=>{oy(r,`[#${t}]`)}})}),this.addCommand({id:"remove-priority",name:c("Remove priority"),editorCallback:t=>{zV(t)}})),this.addCommand({id:"move-task-to-file",name:c("Move task to another file"),editorCheckCallback:(t,a,r)=>dB(t,a,r,this)}),this.settings.completedTaskMover.enableCompletedTaskMover&&(this.addCommand({id:"move-completed-subtasks-to-file",name:c("Move all completed subtasks to another file"),editorCheckCallback:(t,a,r)=>nk(t,a,r,this,"allCompleted")}),this.addCommand({id:"move-direct-completed-subtasks-to-file",name:c("Move direct completed subtasks to another file"),editorCheckCallback:(t,a,r)=>nk(t,a,r,this,"directChildren")}),this.addCommand({id:"move-all-subtasks-to-file",name:c("Move all subtasks to another file"),editorCheckCallback:(t,a,r)=>nk(t,a,r,this,"all")}),this.settings.completedTaskMover.enableAutoMove&&(this.addCommand({id:"auto-move-completed-subtasks",name:c("Auto-move completed subtasks to default file"),editorCheckCallback:(t,a,r)=>Xc(t,a,r,this,"allCompleted")}),this.addCommand({id:"auto-move-direct-completed-subtasks",name:c("Auto-move direct completed subtasks to default file"),editorCheckCallback:(t,a,r)=>Xc(t,a,r,this,"directChildren")}),this.addCommand({id:"auto-move-all-subtasks",name:c("Auto-move all subtasks to default file"),editorCheckCallback:(t,a,r)=>Xc(t,a,r,this,"all")}))),this.settings.completedTaskMover.enableIncompletedTaskMover&&(this.addCommand({id:"move-incompleted-subtasks-to-file",name:c("Move all incomplete subtasks to another file"),editorCheckCallback:(t,a,r)=>NC(t,a,r,this,"allIncompleted")}),this.addCommand({id:"move-direct-incompleted-subtasks-to-file",name:c("Move direct incomplete subtasks to another file"),editorCheckCallback:(t,a,r)=>NC(t,a,r,this,"directIncompletedChildren")}),this.settings.completedTaskMover.enableIncompletedAutoMove&&(this.addCommand({id:"auto-move-incomplete-subtasks",name:c("Auto-move incomplete subtasks to default file"),editorCheckCallback:(t,a,r)=>Xc(t,a,r,this,"allIncompleted")}),this.addCommand({id:"auto-move-direct-incomplete-subtasks",name:c("Auto-move direct incomplete subtasks to default file"),editorCheckCallback:(t,a,r)=>Xc(t,a,r,this,"directIncompletedChildren")}))),this.addCommand({id:"toggle-quick-capture",name:c("Toggle quick capture panel in editor"),editorCallback:t=>{let a=t.cm;try{let r=a.state.field(XC);a.dispatch({effects:vn.of(!r)})}catch(r){a.dispatch({effects:vn.of(!0)})}}}),this.addCommand({id:"toggle-quick-capture-globally",name:c("Toggle quick capture panel in editor (Globally)"),callback:()=>{let t=this.app.workspace.getActiveViewOfType($V.MarkdownView);if(t&&t.editor){let a=t.editor.cm;try{a.dispatch({effects:vn.of(!0)})}catch(r){this.registerEditorExtension([ex(this.app,this)]),setTimeout(()=>{try{a.dispatch({effects:vn.of(!0)})}catch(i){new Ht.Notice(c("Could not open quick capture panel in the current editor"))}},100)}}}}),this.settings.workflow.enableWorkflow&&(this.addCommand({id:"create-quick-workflow",name:c("Create quick workflow"),editorCheckCallback:(t,a,r)=>Kg(t,a,r,this)}),this.addCommand({id:"convert-task-to-workflow",name:c("Convert task to workflow template"),editorCheckCallback:(t,a,r)=>Qg(t,a,r,this)}),this.addCommand({id:"start-workflow-here",name:c("Start workflow here"),editorCheckCallback:(t,a,r)=>Xg(t,a,r,this)}),this.addCommand({id:"convert-to-workflow-root",name:c("Convert current task to workflow root"),editorCheckCallback:(t,a,r)=>Jg(t,a,r,this)}),this.addCommand({id:"duplicate-workflow",name:c("Duplicate workflow"),editorCheckCallback:(t,a,r)=>Zg(t,a,r,this)}),this.addCommand({id:"workflow-quick-actions",name:c("Workflow quick actions"),editorCheckCallback:(t,a,r)=>FC(t,a,r,this)})),((e=this.settings.taskTimer)==null?void 0:e.enabled)&&this.taskTimerExporter&&(this.addCommand({id:"export-task-timer-data",name:"Export task timer data",callback:async()=>{try{let t=this.taskTimerExporter.getExportStats();if(t.activeTimers===0){new Ht.Notice("No timer data to export");return}let a=this.taskTimerExporter.exportToJSON(!0),r=new Blob([a],{type:"application/json"}),i=URL.createObjectURL(r),n=document.createElement("a");n.href=i,n.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(i),new Ht.Notice(`Exported ${t.activeTimers} timer records`)}catch(t){console.error("Error exporting timer data:",t),new Ht.Notice("Failed to export timer data")}}}),this.addCommand({id:"import-task-timer-data",name:"Import task timer data",callback:async()=>{try{let t=document.createElement("input");t.type="file",t.accept=".json",t.onchange=async a=>{var i;let r=(i=a.target.files)==null?void 0:i[0];if(!!r)try{let n=await r.text();this.taskTimerExporter.importFromJSON(n)?new Ht.Notice("Timer data imported successfully"):new Ht.Notice("Failed to import timer data - invalid format")}catch(n){console.error("Error importing timer data:",n),new Ht.Notice("Failed to import timer data")}},t.click()}catch(t){console.error("Error setting up import:",t),new Ht.Notice("Failed to set up import")}}}),this.addCommand({id:"export-task-timer-yaml",name:"Export task timer data (YAML)",callback:async()=>{try{let t=this.taskTimerExporter.getExportStats();if(t.activeTimers===0){new Ht.Notice("No timer data to export");return}let a=this.taskTimerExporter.exportToYAML(!0),r=new Blob([a],{type:"text/yaml"}),i=URL.createObjectURL(r),n=document.createElement("a");n.href=i,n.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.yaml`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(i),new Ht.Notice(`Exported ${t.activeTimers} timer records to YAML`)}catch(t){console.error("Error exporting timer data to YAML:",t),new Ht.Notice("Failed to export timer data to YAML")}}}),this.addCommand({id:"backup-task-timer-data",name:"Create task timer backup",callback:async()=>{try{let t=this.taskTimerExporter.createBackup(),a=new Blob([t],{type:"application/json"}),r=URL.createObjectURL(a),i=document.createElement("a");i.href=r,i.download=`task-timer-backup-${new Date().toISOString().replace(/[:.]/g,"-")}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r),new Ht.Notice("Task timer backup created")}catch(t){console.error("Error creating timer backup:",t),new Ht.Notice("Failed to create timer backup")}}}),this.addCommand({id:"show-task-timer-stats",name:"Show task timer statistics",callback:()=>{try{let t=this.taskTimerExporter.getExportStats(),a=`Task Timer Statistics:
`;a+=`Active timers: ${t.activeTimers}
`,a+=`Total duration: ${Math.round(t.totalDuration/6e4)} minutes
`,t.oldestTimer&&(a+=`Oldest timer: ${t.oldestTimer}
`),t.newestTimer&&(a+=`Newest timer: ${t.newestTimer}`),new Ht.Notice(a,1e4)}catch(t){console.error("Error getting timer stats:",t),new Ht.Notice("Failed to get timer statistics")}}}))}registerEditorExt(){var e;this.registerEditorExtension([L0(this.app,this)]),((e=this.settings.taskTimer)==null?void 0:e.enabled)&&(this.taskTimerManager||(this.taskTimerManager=new Ll(this.settings.taskTimer)),this.taskTimerExporter||(this.taskTimerExporter=new _S(this.taskTimerManager)),this.registerEditorExtension([V0(this)])),this.settings.taskGutter.enableTaskGutter&&this.registerEditorExtension([MV(this.app,this)]),this.settings.enableTaskStatusSwitcher&&this.settings.enableCustomTaskMarks&&this.registerEditorExtension([B0(this.app,this)]),this.settings.enablePriorityPicker&&this.registerEditorExtension([E3(this.app,this)]),this.settings.enableDatePicker&&this.registerEditorExtension([HB(this.app,this)]),this.settings.workflow.enableWorkflow&&(this.registerEditorExtension([H3(this.app,this)]),this.registerEditorExtension([Z3(this.app,this)]),this.registerEditorExtension([aB(this.app,this)])),this.settings.quickCapture.enableQuickCapture&&this.registerEditorExtension([ex(this.app,this)]),this.settings.quickCapture.enableMinimalMode&&(this.minimalQuickCaptureSuggest=new rx(this.app,this),this.registerEditorSuggest(this.minimalQuickCaptureSuggest)),this.settings.taskFilter.enableTaskFilter&&this.registerEditorExtension([GH(this)]),this.settings.autoDateManager.enabled&&this.registerEditorExtension([IV(this.app,this)]),this.registerEditorExtension([OV()])}onunload(){this.globalSuggestManager&&this.globalSuggestManager.cleanup(),this.taskManager&&this.taskManager.onunload(),this.mcpServerManager&&this.mcpServerManager.cleanup()}async checkAndShowOnboarding(){try{let t=(await this.versionManager.checkVersionChange()).versionInfo.isFirstInstall,a=this.onboardingConfigManager.shouldShowOnboarding();(t&&a||!t&&a&&this.settingsChangeDetector.hasUserMadeChanges())&&setTimeout(()=>{this.openOnboardingView()},500)}catch(e){console.error("Failed to check onboarding status:",e)}}async openOnboardingView(){let{workspace:e}=this.app,t=e.getLeavesOfType(Ap)[0];if(t){e.revealLeaf(t);return}let a=e.getLeaf("tab");await a.setViewState({type:Ap}),e.revealLeaf(a)}async loadSettings(){let e=await this.loadData();this.settings=Object.assign({},me,e),this.migrateInheritanceSettings(e)}migrateInheritanceSettings(e){var t,a,r,i;if(((t=e==null?void 0:e.projectConfig)==null?void 0:t.metadataConfig)&&!(e==null?void 0:e.fileMetadataInheritance)){let n=e.projectConfig.metadataConfig;this.settings.fileMetadataInheritance={enabled:!0,inheritFromFrontmatter:(a=n.inheritFromFrontmatter)!=null?a:!0,inheritFromFrontmatterForSubtasks:(r=n.inheritFromFrontmatterForSubtasks)!=null?r:!1},((i=this.settings.projectConfig)==null?void 0:i.metadataConfig)&&(delete this.settings.projectConfig.metadataConfig.inheritFromFrontmatter,delete this.settings.projectConfig.metadataConfig.inheritFromFrontmatterForSubtasks),this.saveSettings()}}async saveSettings(){await this.saveData(this.settings)}async loadViews(){let e=me.viewConfiguration;this.settings.viewConfiguration||(this.settings.viewConfiguration=[]),e.forEach(t=>{this.settings.viewConfiguration.find(r=>r.id===t.id)||this.settings.viewConfiguration.push({...t})}),await this.saveSettings()}async activateTaskView(){let{workspace:e}=this.app,t=e.getLeavesOfType(Pl)[0];if(t){e.revealLeaf(t);return}let a=e.getLeaf("tab");await a.setViewState({type:Pl}),e.revealLeaf(a)}async activateTimelineSidebarView(){let{workspace:e}=this.app,t=e.getLeavesOfType(Sd)[0];if(t){e.revealLeaf(t);return}let a=e.getRightLeaf(!1);a&&(await a.setViewState({type:Sd}),e.revealLeaf(a))}async triggerViewUpdate(){let e=this.app.workspace.getLeavesOfType(Pl);if(e.length>0)for(let a of e)a.view instanceof xd&&(a.view.tasks=this.preloadedTasks,a.view.triggerViewUpdate());let t=this.app.workspace.getLeavesOfType(Sd);if(t.length>0)for(let a of t)a.view instanceof Yk&&await a.view.triggerViewUpdate()}getIcsManager(){return this.icsManager}async initializeTaskManagerWithVersionCheck(){let e=0,t=3;for(;e<t;)try{let a=await this.versionManager.getDiagnosticInfo();if(!a.canWrite)throw new Error("Cannot write to version storage - storage may be corrupted");!a.versionValid&&a.previousVersion&&(console.warn("Invalid version data detected, attempting recovery"),await this.versionManager.recoverFromCorruptedVersion());let r=await this.versionManager.checkVersionChange();if(r.requiresRebuild){""+r.rebuildReason;let i=this.app.vault.getFiles().filter(o=>o.extension==="md"||o.extension==="canvas");if(this.rebuildProgressManager.startRebuild(i.length,r.rebuildReason),this.taskManager.persister)try{await this.taskManager.persister.clear()}catch(o){console.warn("Error clearing cache, attempting to recreate storage:",o),await this.taskManager.persister.recreate()}this.taskManager.setProgressManager(this.rebuildProgressManager),await this.taskManager.initialize();let n=this.taskManager.getAllTasks().length;this.rebuildProgressManager.completeRebuild(n),await this.versionManager.markVersionProcessed()}else await this.taskManager.initialize();return}catch(a){if(e++,console.error(`Error during task manager initialization (attempt ${e}/${t}):`,a),e>=t){console.error("All initialization attempts failed, triggering emergency rebuild");try{let r=await this.versionManager.handleEmergencyRebuild(`Initialization failed after ${t} attempts: ${a.message}`),i=this.app.vault.getFiles().filter(o=>o.extension==="md"||o.extension==="canvas");this.rebuildProgressManager.startRebuild(i.length,r.rebuildReason),this.taskManager.persister&&await this.taskManager.persister.recreate(),this.taskManager.setProgressManager(this.rebuildProgressManager),await this.taskManager.initialize();let n=this.taskManager.getAllTasks().length;this.rebuildProgressManager.completeRebuild(n),await this.versionManager.markVersionProcessed();return}catch(r){throw console.error("Emergency rebuild also failed:",r),this.rebuildProgressManager.failRebuild(`Emergency rebuild failed: ${r.message}`),new Error(`Task manager initialization failed completely: ${r.message}`)}}else await new Promise(r=>setTimeout(r,1e3*e))}}};function oy(s,e){var o;let t=s.getCursor(),a=s.getLine(t.line),r=s.posToOffset({line:t.line,ch:0}),i=/^([\s|\t]*[-*+] \[.\].*?)(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])?(\s*)$/,n=a.match(i);if(n){let l=/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])/,d=a.match(l),u=s.cm;if(d)u.dispatch({changes:{from:r+(d.index||0),to:r+(d.index||0)+(((o=d[0])==null?void 0:o.length)||0),insert:e},annotations:[ti.of(!0)]});else{let p=r+n[1].length;u.dispatch({changes:{from:p,to:p,insert:` ${e}`},annotations:[ti.of(!0)]})}}}function zV(s){var n;let e=s.getCursor(),t=s.getLine(e.line),a=s.posToOffset({line:e.line,ch:0}),r=/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\])/,i=t.match(r);i&&s.cm.dispatch({changes:{from:a+(i.index||0),to:a+(i.index||0)+(((n=i[0])==null?void 0:n.length)||0),insert:""},annotations:[ti.of(!0)]})}
/*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*/
/*!
Copyright 2019 Ron Buckton
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/**
* @license MIT
* @copyright 2020 Eyas Ranjous <eyas.ranjous@gmail.com>
*
* @class
*/
/**!
* Sortable 1.15.6
* @author RubaXa <trash@rubaxa.org>
* @author owenm <owen23355@gmail.com>
* @license MIT
*/
/* nosourcemap */